瀏覽代碼

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

zhuth 7 年之前
父節點
當前提交
6370a9fa63
共有 30 個文件被更改,包括 619 次插入111 次删除
  1. 1 1
      README.md
  2. 14 1
      applications/commons/commons-api/pom.xml
  3. 6 13
      applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberService.java
  4. 19 7
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Maxnumbers.java
  5. 1 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/MaxnumbersExample.java
  6. 1 1
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/MaxnumbersdetailExample.java
  7. 7 4
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/MaxnumberController.java
  8. 3 2
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersMapper.java
  9. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersdetailMapper.java
  10. 1 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  11. 5 11
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  12. 3 9
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  13. 4 9
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/WarehouseServiceImpl.java
  14. 4 0
      applications/money/pom.xml
  15. 4 0
      applications/purchase/purchase-server/pom.xml
  16. 12 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/PurchaseApplication.java
  17. 29 12
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/ProdInOutController.java
  18. 9 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java
  19. 4 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  20. 5 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/ProdInOutService.java
  21. 1 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java
  22. 61 4
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  23. 52 25
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  24. 0 7
      base-servers/gateway-server/src/main/resources/application.yml
  25. 105 0
      frontend/saas-web/app/view/document/kind/ChildForm.js
  26. 108 0
      frontend/saas-web/app/view/document/kind/Kind.js
  27. 88 0
      frontend/saas-web/app/view/document/kind/KindController.js
  28. 57 0
      frontend/saas-web/app/view/document/kind/KindModel.js
  29. 7 0
      frontend/saas-web/resources/json/customer.json
  30. 7 0
      frontend/saas-web/resources/json/vendor.json

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
-## 项目结构:
+# 项目结构:
 
 ```
 ├─saas-platform

+ 14 - 1
applications/commons/commons-api/pom.xml

@@ -11,5 +11,18 @@
 
     <artifactId>commons-api</artifactId>
 
-
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>commons-dto</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>core</artifactId>
+        </dependency>
+    </dependencies>
 </project>

+ 6 - 13
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/MaxnumberService.java

@@ -3,26 +3,19 @@ import com.usoftchina.saas.base.Result;
 
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 
 @FeignClient("commons-server")
 public interface MaxnumberService {
     /**
-    * @Description 更新并获取最大编号
+    * @Description: 更新并获取最大编号
     * @Param: [count, code, caller]
     * @return: com.usoftchina.saas.base.Result
     * @Author: guq
-    * @Date: 2018/10/19
+    * @Date: 2018/10/19 api/commons
     */
-    @PostMapping("api/commons/number/pushMaxnubmer")
-    public Result pushMaxnubmer(Integer count, String code, String caller);
+    @PostMapping("/number/pushMaxnubmer")
+    public String pushMaxnubmer(@RequestParam("count") Integer count,@RequestParam("code") String code,
+                                @RequestParam("caller") String caller);
 
-    /**
-    * @Description 前端获取编号
-    * @Param: [caller, update]
-    * @return: com.usoftchina.saas.base.Result
-    * @Author: guq
-    * @Date: 2018/10/19
-    */
-    @PostMapping("api/commons/number/getMaxnumber")
-    public Result getMaxnumber(String caller, boolean update);
 }

+ 19 - 7
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Maxnumbers.java

@@ -7,7 +7,25 @@ public class Maxnumbers extends CommonBaseEntity{
 
     private String mn_leadcode;
 
-    private String mn_number;
+    private String mn_rule;
+
+    public String getMn_rule() {
+        return mn_rule;
+    }
+
+    public void setMn_rule(String mn_rule) {
+        this.mn_rule = mn_rule;
+    }
+
+    private Integer mn_number;
+
+    public Integer getMn_number() {
+        return mn_number;
+    }
+
+    public void setMn_number(Integer mn_number) {
+        this.mn_number = mn_number;
+    }
 
     public String getMn_caller() {
         return mn_caller;
@@ -25,11 +43,5 @@ public class Maxnumbers extends CommonBaseEntity{
         this.mn_leadcode = mn_leadcode == null ? null : mn_leadcode.trim();
     }
 
-    public String getMn_number() {
-        return mn_number;
-    }
 
-    public void setMn_number(String mn_number) {
-        this.mn_number = mn_number == null ? null : mn_number.trim();
-    }
 }

+ 1 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/MaxnumbersExample.java

@@ -385,7 +385,7 @@ public class MaxnumbersExample {
             return (Criteria) this;
         }
 
-        public Criteria andCompanyIdEqualTo(Integer value) {
+        public Criteria andCompanyIdEqualTo(Long value) {
             addCriterion("companyId =", value, "companyId");
             return (Criteria) this;
         }

+ 1 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/MaxnumbersdetailExample.java

@@ -375,7 +375,7 @@ public class MaxnumbersdetailExample {
             return (Criteria) this;
         }
 
-        public Criteria andCompanyIdEqualTo(Integer value) {
+        public Criteria andCompanyIdEqualTo(Long value) {
             addCriterion("companyId =", value, "companyId");
             return (Criteria) this;
         }

+ 7 - 4
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/MaxnumberController.java

@@ -9,6 +9,9 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * @author: guq
  * @create: 2018-10-18 17:40
@@ -22,13 +25,13 @@ public class MaxnumberController {
 
     @PostMapping("/getMaxnumber")
     public Result getMaxnumber(String caller, boolean update) {
-        String code = maxnumberService.getMaxnumner(caller, update);
+        Map<String, Object> code = new HashMap<>();
+        code.put("code",  maxnumberService.getMaxnumner(caller, update));
         return Result.success(code);
     }
 
     @PostMapping("/pushMaxnubmer")
-    public Result pushMaxnubmer(Integer count, String code, String caller) {
-        String maxnubmer = maxnumberService.pushMaxnubmer(count, code, caller);
-        return Result.success(maxnubmer);
+    public String pushMaxnubmer(Integer count, String code, String caller) {
+        return maxnumberService.pushMaxnubmer(count, code, caller);
     }
 }

+ 3 - 2
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersMapper.java

@@ -2,13 +2,14 @@ package com.usoftchina.saas.commons.mapper;
 
 
 
+import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import com.usoftchina.saas.commons.po.Maxnumbers;
 import com.usoftchina.saas.commons.po.MaxnumbersExample;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
-public interface MaxnumbersMapper {
+public interface MaxnumbersMapper extends CommonBaseMapper<Maxnumbers>{
     int countByExample(MaxnumbersExample example);
 
     int deleteByExample(MaxnumbersExample example);
@@ -19,7 +20,7 @@ public interface MaxnumbersMapper {
 
     int insertSelective(Maxnumbers record);
 
-    List<Maxnumbers> selectByExample(MaxnumbersExample example);
+    Maxnumbers selectByExample(MaxnumbersExample example);
 
     Maxnumbers selectByPrimaryKey(Integer mn_id);
 

+ 1 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/MaxnumbersdetailMapper.java

@@ -18,7 +18,7 @@ public interface MaxnumbersdetailMapper {
 
     int insertSelective(Maxnumbersdetail record);
 
-    List<Maxnumbersdetail> selectByExample(MaxnumbersdetailExample example);
+    Maxnumbersdetail selectByExample(MaxnumbersdetailExample example);
 
     Maxnumbersdetail selectByPrimaryKey(Integer md_id);
 

+ 1 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java

@@ -217,7 +217,7 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     */
     private String getRulecode(Maxnumbers maxnumbers) {
         String rulecode = maxnumbers.getMn_leadcode();
-        Integer ength = maxnumbers.getMn_number();
+        Integer length = maxnumbers.getMn_number();
         String mn_rule = maxnumbers.getMn_rule();
         String date = "YYYYMM".equals(mn_rule) ? DateUtils.format(new Date(), "yyyyMM") :
                 DateUtils.format(new Date(), "yyyyMMdd");

+ 5 - 11
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/Impl/ProductServiceImpl.java → applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java

@@ -1,10 +1,8 @@
-package com.usoftchina.saas.document.service.Impl;
+package com.usoftchina.saas.document.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
-
-
 import com.usoftchina.saas.commons.dto.ComboDTO;
 import com.usoftchina.saas.commons.dto.DocReqDTO;
 import com.usoftchina.saas.document.dto.ProductDTO;
@@ -12,7 +10,6 @@ import com.usoftchina.saas.document.entities.Product;
 import com.usoftchina.saas.document.mapper.ProductMapper;
 import com.usoftchina.saas.document.service.ProductService;
 import com.usoftchina.saas.page.PageRequest;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -20,9 +17,6 @@ import java.util.List;
 @Service
 public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Product> implements ProductService {
 
-    @Autowired
-    private ProductMapper productMapper;
-
     @Override
     public PageInfo<ProductDTO> getProductsByCondition(PageRequest page, DocReqDTO docReqDTO) {
         //设置分页
@@ -32,7 +26,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
             page.setSize(10);
         }
         PageHelper.startPage(page.getNumber(), page.getSize());
-        List<ProductDTO> productList = productMapper.getProductsByCondition(docReqDTO);
+        List<ProductDTO> productList = getMapper().getProductsByCondition(docReqDTO);
         //取分页信息
         PageInfo<ProductDTO> pageInfo = new PageInfo<ProductDTO>(productList);
         return pageInfo;
@@ -40,18 +34,18 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
 
     @Override
     public List<ComboDTO> getProdUnit() {
-        return productMapper.getProdUnit();
+        return getMapper().getProdUnit();
     }
 
     @Override
     public void updateLatestPurchasePrice(Long pu_id) {
-        productMapper.updateLatestPurchasePrice(pu_id);
+        getMapper().updateLatestPurchasePrice(pu_id);
     }
 
     @Override
     public Product getProductsByPK(Long id) {
         if (null == id) {
-            return productMapper.selectByPrimaryKey(id);
+            return getMapper().selectByPrimaryKey(id);
         }
         return null;
     }

+ 3 - 9
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/Impl/VendorServiceImpl.java → applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java

@@ -1,17 +1,15 @@
-package com.usoftchina.saas.document.service.Impl;
+package com.usoftchina.saas.document.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
-
 import com.usoftchina.saas.commons.dto.DocReqDTO;
 import com.usoftchina.saas.document.dto.VendorDTO;
 import com.usoftchina.saas.document.entities.Vendor;
 import com.usoftchina.saas.document.mapper.VendorMapper;
-
 import com.usoftchina.saas.document.service.VendorService;
 import com.usoftchina.saas.page.PageRequest;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.usoftchina.saas.utils.BeanMapper;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -23,10 +21,6 @@ import java.util.List;
 @Service
 public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendor> implements VendorService {
 
-    @Autowired
-    private VendorMapper vendorMapper;
-
-
     @Override
     public PageInfo<VendorDTO> getVendorsByCondition(PageRequest page, DocReqDTO docReqDTO) {
         //设置分页
@@ -36,7 +30,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             page.setSize(10);
         }
         PageHelper.startPage(page.getNumber(), page.getSize());
-        List<VendorDTO> vendorList = vendorMapper.getVendorsByCondition(docReqDTO);
+        List<VendorDTO> vendorList = BeanMapper.mapList(getMapper().getVendorsByCondition(docReqDTO), VendorDTO.class);
         //取分页信息
         PageInfo<VendorDTO> pageInfo = new PageInfo<VendorDTO>(vendorList);
         return pageInfo;

+ 4 - 9
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/Impl/WarehouseServiceImpl.java → applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/WarehouseServiceImpl.java

@@ -1,12 +1,10 @@
-package com.usoftchina.saas.document.service.Impl;
+package com.usoftchina.saas.document.service.impl;
 
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.entities.Warehouse;
 import com.usoftchina.saas.document.mapper.WarehouseMapper;
-
 import com.usoftchina.saas.document.service.WarehouseService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
@@ -15,12 +13,9 @@ import java.util.Map;
 @Service
 public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper, Warehouse> implements WarehouseService {
 
-    @Autowired
-    private WarehouseMapper warehouseMapper;
-
     @Override
     public void callProcedure(Map<String, Object> map){
-        warehouseMapper.callProcedure(map);
+        getMapper().callProcedure(map);
     }
 
     @Override
@@ -29,7 +24,7 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("companyId", companyId);
         map.put("period", period);
-        Short status = warehouseMapper.validPeriod(map);
+        Short status = getMapper().validPeriod(map);
         if(status != null && status == 0){
             return true;
         }else{
@@ -39,7 +34,7 @@ public class WarehouseServiceImpl extends CommonBaseServiceImpl<WarehouseMapper,
 
     @Override
     public int insertSelective(Warehouse record) {
-        int count = warehouseMapper.insertSelective(record);
+        int count = getMapper().insertSelective(record);
         return count;
     }
 

+ 4 - 0
applications/money/pom.xml

@@ -10,7 +10,11 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>money</artifactId>
+    <packaging>pom</packaging>
     <description>money server</description>
+    <modules>
+        <module>money-api</module>
+    </modules>
 
 
 </project>

+ 4 - 0
applications/purchase/purchase-server/pom.xml

@@ -76,6 +76,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>commons-dto</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>commons-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 12 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/PurchaseApplication.java

@@ -7,6 +7,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
 /**
  * @author yingp
@@ -18,8 +20,17 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableFeignClients("com.usoftchina.saas")
 //@EnableAuthClient
 @MapperScan("com.usoftchina.saas.purchase.mapper")
-public class PurchaseApplication {
+public class PurchaseApplication  extends WebMvcConfigurerAdapter {
     public static void main(String[] args) {
         SpringApplication.run(PurchaseApplication.class, args);
     }
+    @Override
+    public void addCorsMappings(CorsRegistry registry) {
+
+        registry.addMapping("/**")
+                .allowCredentials(true)
+                .allowedHeaders("*")
+                .allowedOrigins("*")
+                .allowedMethods("*");
+    }
 }

+ 29 - 12
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/ProdInOutController.java

@@ -2,6 +2,7 @@ package com.usoftchina.saas.purchase.controller;
 
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
@@ -25,29 +26,18 @@ public class ProdInOutController {
 
 
     /**
-     * 采购订单列表
+     * 出入库订单列表
      *
      * @param page
      * @param req
      * @return
      */
-/*    @GetMapping("/list")
-    public Result<PageInfo<PurchaseList>> getListData(PageRequest page, PurchaseReqDTO req) {
-        PageInfo<PurchaseList> listData = purchaseService.getListData(page, req);
-        return Result.success(listData);
-    }*/
-
     @GetMapping("/list")
     public Result<PageInfo<ProdInOutList>> getListData(PageRequest page, ProdInOutReqDTO req) {
         PageInfo<ProdInOutList> listData = prodInOutService.getListData(page,req);
         return Result.success(listData);
     }
 
-
-
-
-
-
     /**
      * 获取出入库单表单
      *
@@ -120,5 +110,32 @@ public class ProdInOutController {
         return Result.success();
     }
 
+    /**
+     * 出入库单批量审核/反审核
+     *
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchAudit")
+    public Result batchAudit(@RequestBody BatchDealBaseDTO baseDTOs) {
+        prodInOutService.batchAudit(baseDTOs);
+        return Result.success();
+    }
+
+    /**
+     * 出入库单批量删除
+     *
+     * @param baseDTOs
+     * @return
+     */
+    @PostMapping("/batchDelete")
+    public Result batchDelete(@RequestBody BatchDealBaseDTO baseDTOs) {
+        prodInOutService.batchDelete(baseDTOs);
+        return Result.success();
+    }
+
+
+
+
 
 }

+ 9 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/controller/PurchaseController.java

@@ -158,4 +158,13 @@ public class PurchaseController {
         purchaseService.openPurchase(id);
         return Result.success();
     }
+
+    @GetMapping("/turnProdin")
+    public Result turnProdin(Long id){
+        purchaseService.turnProdin(id);
+        return Result.success();
+    };
+
+
+
 }

+ 4 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java

@@ -20,4 +20,8 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
     String validateUnAudit(Long id);
 
     String validateBatchUnAudit(List<DocBaseDTO> baseDTOs);
+
+    Integer validateCodeWhenInsert(String code);
+
+    Integer validateCodeWhenUpdate(String code, Long id);
 }

+ 5 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/ProdInOutService.java

@@ -3,6 +3,7 @@ package com.usoftchina.saas.purchase.service;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseService;
+import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
@@ -52,8 +53,12 @@ public interface ProdInOutService extends CommonBaseService<ProdInOutMapper, Pro
      */
     void unAudit(Long id);
 
+    void batchAudit(BatchDealBaseDTO baseDTOs);
+
     void deleteItem(Long id);
 
+    void batchDelete(BatchDealBaseDTO baseDTOs);
+
     PageInfo<ProdInOutList> getListData(PageRequest page, ProdInOutReqDTO req);
 
     Result turnProdOut(Long id);

+ 1 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/PurchaseService.java

@@ -131,7 +131,7 @@ public interface PurchaseService extends CommonBaseService<PurchaseMapper, Purch
      * @param id
      * @return
      */
-    public Result turnProdio(Long id);
+    public Result turnProdin(Long id);
 
 
 }

+ 61 - 4
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -4,16 +4,22 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
 import com.usoftchina.saas.document.api.WarehouseApi;
 import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.dto.ProdIODetailDTO;
 import com.usoftchina.saas.purchase.dto.ProdInOutDTO;
 import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
 import com.usoftchina.saas.purchase.dto.ProdInOutReqDTO;
 import com.usoftchina.saas.purchase.mapper.*;
-import com.usoftchina.saas.purchase.po.*;
+import com.usoftchina.saas.purchase.po.ProdIODetail;
+import com.usoftchina.saas.purchase.po.ProdIODetailExample;
+import com.usoftchina.saas.purchase.po.ProdInOut;
+import com.usoftchina.saas.purchase.po.ProdInOutList;
 import com.usoftchina.saas.purchase.service.ProdInOutService;
 import com.usoftchina.saas.utils.BeanMapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -214,6 +220,16 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         singleAudit(prodInOutDTO);
     }
 
+    @Override
+    public void batchAudit(BatchDealBaseDTO baseDTOs) {
+        for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
+            Long id =  base.getId();
+            ProdInOut prodInOut = getMapper().selectByPrimaryKey(id);
+            ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
+            singleAudit(prodInOutDTO);
+        }
+    }
+
     private void singleAudit(ProdInOutDTO prodInOutDTO) {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("inoutNo",prodInOutDTO.getPi_inoutno() );
@@ -224,9 +240,12 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         warehouseApi.callProcedure(map);
         Object result =  map.get("result");
         System.out.println("result");
-        if (!StringUtils.isEmpty(result))
-            System.out.println(result);
         //记录日志
+
+
+        if (!StringUtils.isEmpty(result))
+            throw new BizException(500, "存在已审核单据,单据编号:" + result);
+
     }
 
 
@@ -238,6 +257,16 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         updateYqty(prodInOut.getId(),prodInOut.getPi_class());
     }
 
+    @Override
+    public void batchDelete(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0)
+            return;
+        for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
+            singleDelete(base.getId());
+        }
+    }
+
     private void updateYqty(Long id,String piclass) {
         //更新已转数
         prodIODetailMapper.updatePurchaseYqty(id);
@@ -254,9 +283,37 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
 
     @Override
     public Result turnProdOut(Long id) {
-        ProdInOut prodInOut = getMapper().selectByPrimaryKey(id);
+        ProdInOut sourcePi = getMapper().selectByPrimaryKey(id);
 
 
+        Integer count=0;
+        double pdInqty=0, pdYqty=0;
+
+        ProdIODetailExample prodIODetailExample = new ProdIODetailExample();
+        ProdIODetailExample.Criteria cta = prodIODetailExample.createCriteria();
+        cta.andPd_piidEqualTo(id.intValue());
+        List<ProdIODetail> sourcePids =prodIODetailMapper.selectByExample(prodIODetailExample);
+
+        //检查从表
+        for (ProdIODetail prodIODetail : sourcePids) {
+            pdInqty = prodIODetail.getPd_inqty();
+            pdYqty = prodIODetail.getPd_yqty();
+            if (pdInqty-pdYqty>0){
+                count++;
+            }
+        }
+        //判断可转数
+        if (count==0) {
+            return Result.error(ExceptionCode.TURNINNUM_NOT_EXIST);
+        }
+        //插入验退单主表
+        ProdInOut targetPi = new ProdInOut();
+        //生成单号
+//        String
+        
+        
+        
+
 
 
         return null;

+ 52 - 25
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -2,23 +2,25 @@ package com.usoftchina.saas.purchase.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+
+import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
+import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.api.ProductApi;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageRequest;
-import com.usoftchina.saas.purchase.dto.PurchaseDTO;
-import com.usoftchina.saas.purchase.dto.PurchaseDetailDTO;
-import com.usoftchina.saas.purchase.dto.PurchaseFormDTO;
-import com.usoftchina.saas.purchase.dto.PurchaseReqDTO;
+import com.usoftchina.saas.purchase.dto.*;
 import com.usoftchina.saas.purchase.mapper.*;
 import com.usoftchina.saas.purchase.po.*;
 import com.usoftchina.saas.purchase.service.PurchaseService;
 import com.usoftchina.saas.utils.BeanMapper;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -44,11 +46,11 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Autowired
     private ProductApi productApi;
     @Autowired
+    private MaxnumberService maxnumberService;
+    @Autowired
     private ProdInOutMapper prodInOutMapper;
     @Autowired
     private ProdIODetailMapper prodIODetailMapper;
-    
-    
 
     @Override
     public PageInfo<PurchaseList> getListData(PageRequest page, PurchaseReqDTO req) {
@@ -86,7 +88,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         if (null == formdata || null == formdata.getMain()){
             throw new BizException(500, "数据为空,请填写后再保存");
         }
-
+        //公司ID
+        Long companyId = BaseContextHolder.getCompanyId();
+        //人员Id
+        Long userId = BaseContextHolder.getUserId();
         //获取主表信息
         PurchaseDTO main = formdata.getMain();
         List<PurchaseDetailDTO> items = formdata.getItems();
@@ -98,12 +103,13 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         Long pu_id = main.getId();
         String pu_code = main.getPu_code();
         Purchase purchase = BeanMapper.map(main, Purchase.class);
+        purchase.setCompanyId(companyId);
+        purchase.setCreatorId(userId);
+        purchase.setCreateTime(new Date());
 
-        //编号获取 到时候确定处理
-        if (StringUtils.isEmpty(pu_code)) {
-            pu_code = "PU" + Math.random() * 1000;
-            purchase.setPu_code(pu_code);
-        }
+        //编号校验
+        pu_code = pushMaxnubmer(pu_code, pu_id);
+        purchase.setPu_code(pu_code);
         saveDTO.setCode(pu_code);
         //判断更新与保存动作
         if (!StringUtils.isEmpty(pu_id)) {
@@ -179,8 +185,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Override
     public void batchAudit(BatchDealBaseDTO baseDTOs) {
         if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
-                baseDTOs.getBaseDTOs().size() == 0)
+                baseDTOs.getBaseDTOs().size() == 0) {
             return;
+        }
+
         String validate = purchaseMapper.validateAudit(baseDTOs.getBaseDTOs());
         if (!StringUtils.isEmpty(validate)) {
             throw new BizException(500, "存在已审核单据,单据编号:" + validate);
@@ -193,8 +201,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Override
     public void batchDelete(BatchDealBaseDTO baseDTOs) {
         if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
-                baseDTOs.getBaseDTOs().size() == 0)
+                baseDTOs.getBaseDTOs().size() == 0) {
             return;
+        }
+
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
             singleDelete(base.getId());
         }
@@ -215,8 +225,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Override
     public void batchUnAudit(BatchDealBaseDTO baseDTOs) {
         if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
-                baseDTOs.getBaseDTOs().size() == 0)
+                baseDTOs.getBaseDTOs().size() == 0) {
             return;
+        }
+
         String msg = purchaseMapper.validateBatchUnAudit(baseDTOs.getBaseDTOs());
         if (null != msg) {
             throw new BizException(500, "存在未审核单据,单据编号:" + msg);
@@ -238,13 +250,16 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Override
     public void openPurchase(long id) {
         List<PurchaseDetail> purchaseDetailList = purchasedetailMapper.selectByFK(id);
-        int partTurnCount = 0,turnCount = 0;            //部分入库、全部入库
+        //部分入库、全部入库
+        int partTurnCount = 0,turnCount = 0;
         if(purchaseDetailList != null && purchaseDetailList.size() > 0){
             for(PurchaseDetail purchaseDetail : purchaseDetailList){
-                if(purchaseDetail.getPd_acceptqty() >= purchaseDetail.getPd_qty()){     //入库数大于等于采购数
+                //入库数大于等于采购数
+                if(purchaseDetail.getPd_acceptqty() >= purchaseDetail.getPd_qty()){
                     turnCount++;
-                }else if(purchaseDetail.getPd_acceptqty() > 0 && purchaseDetail.getPd_acceptqty() < purchaseDetail.getPd_qty()){    //     0 < 入库数 < 采购数
+                    //     0 < 入库数 < 采购数
                     partTurnCount++;
+                }else if(purchaseDetail.getPd_acceptqty() > 0 && purchaseDetail.getPd_acceptqty() < purchaseDetail.getPd_qty()){
                 }
             }
             //构造更新对象
@@ -265,9 +280,9 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     }
 
     @Override
-    public Result turnProdio(Long id) {
+    public Result turnProdin(Long id) {
         Purchase purchase = getMapper().selectByPrimaryKey(id);
-        
+
         Integer count=0;
         double pdQty=0, pdYqty=0;
         //检查转单状态
@@ -306,11 +321,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         prodInOut.setPi_puid(purchase.getId().intValue());
         prodInOut.setPi_pucode(purchase.getPu_code());
         //设置公司id
-        prodInOut.setCompanyId(1);
+        prodInOut.setCompanyId(purchase.getCompanyId());
 
         prodInOutMapper.insertSelective(prodInOut);
-        
-        
+
         //插入验收单从表
         long pi_id = prodInOut.getId();
 
@@ -341,8 +355,6 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
 
         }
 
-        System.out.println("pi_id:"+pi_id);
-
         //更新主表入库状态
         purchase.setPu_acceptstatus("已入库");
         purchase.setPu_acceptstatuscode("TURNIN");
@@ -358,6 +370,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         purchase.setPu_status(Status.AUDITED.getDisplay());
         purchase.setPu_statuscode(Status.AUDITED.name());
         purchase.setUpdateTime(new Date());
+        purchase.setUpdaterId(BaseContextHolder.getUserId());
         //更新存在字段
         purchaseMapper.updateByPrimaryKeySelective(purchase);
         //更新最新采购单价
@@ -371,6 +384,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         purchase.setPu_status(Status.UNAUDITED.getDisplay());
         purchase.setPu_statuscode(Status.UNAUDITED.name());
         purchase.setUpdateTime(new Date());
+        purchase.setUpdaterId(BaseContextHolder.getUserId());
         //更新存在字段
         purchaseMapper.updateByPrimaryKeySelective(purchase);
     }
@@ -393,4 +407,17 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         }
         return list;
     }
+
+    /**
+    * @Description: 检验获取并更新单号
+    * @Param: [code, id]
+    * @return: java.lang.String
+    * @Author: guq
+    * @Date: 2018/10/19
+    */
+    private String pushMaxnubmer(String code, Long id) {
+        Integer count = id != null ?  purchaseMapper.validateCodeWhenUpdate(code, id) :
+                purchaseMapper.validateCodeWhenInsert(code);
+        return maxnumberService.pushMaxnubmer(count, code, "Purchase");
+    }
 }

+ 0 - 7
base-servers/gateway-server/src/main/resources/application.yml

@@ -152,10 +152,3 @@ auth:
     - /api/auth
     # 忽略全部
     - /
-logging:
-  level:
-    org.springframework.cloud.gateway: debug
-    org.springframework.http.server.reactive: debug
-    org.springframework.web.reactive: debug
-    org.springframework.security: debug
-    reactor.ipc.netty: debug

+ 105 - 0
frontend/saas-web/app/view/document/kind/ChildForm.js

@@ -0,0 +1,105 @@
+/**
+ * Created by zhouy on 2018/10/18.
+ */
+Ext.define('KitchenSink.view.binding.ChildForm', {
+    extend: 'Ext.window.Window',
+    xtype: 'document-kind-childwin',
+    layout: 'fit',
+    modal: true,
+    width: 400,
+    height: 220,
+    listeners:{
+      show:function(w){
+          if(w.record){
+              w.down('form').loadRecord(w.record);
+          }
+
+      }
+    },
+    initComponent:function(){
+        var me=this;
+         Ext.apply(me,{
+           items:me.setFormItems()
+        });
+        me.callParent();
+    },
+
+    etc:{
+        customerkind:{
+            items:[{
+                xtype:'hidden',
+                name:'ck_id'
+            },{
+                xtype:'textfield',
+                name:'ck_kind',
+                allowBlank:false,
+                fieldLabel:'类型'
+            }],
+            keyField:'ck_id',
+            saveUrl:''
+        },
+        vendorkind:{
+            items:[{
+                xtype:'hidden',
+                name:'vk_id'
+            },{
+                xtype:'textfield',
+                name:'vk_kind',
+                allowBlank:false,
+                fieldLabel:'类型'
+            }],
+        },
+        productkind:{
+            items:[{
+                xtype:'hidden',
+                name:'pk_id'
+            },{
+                xtype:'textfield',
+                name:'pk_kind',
+                allowBlank:false,
+                fieldLabel:'类型'
+            }],
+        },
+        inoutkind:{
+
+        }
+    },
+    setFormItems:function() {
+        var me = this, kind = me.dataKind;
+        var conf = {
+            xtype: 'form',
+            bodyPadding: 10,
+            border: false,
+            modelValidation: true,
+            layout: {
+                type: 'vbox',
+                align: 'stretch'
+            },
+            defaults: {
+                xtype: 'textfield'
+            },
+            buttons: [{
+                text: '保存',
+                formBind:true,
+                handler: me.onSave,
+                scope:me
+            }, {
+                text: '取消',
+                handler: me.onCancel,
+                scope:me
+            }]
+        };
+        return Ext.apply(conf, me.etc[kind]);
+    },
+    onSave:function(){
+
+        var form=this.down('form');
+        alert('save');
+    },
+    onCancel:function(){
+        alert('cancel');
+        this.hide();
+    }
+
+
+});

+ 108 - 0
frontend/saas-web/app/view/document/kind/Kind.js

@@ -0,0 +1,108 @@
+/**
+ * Created by zhouy on 2018/10/18.
+ */
+Ext.define('saas.view.document.kind.Kind', {
+    extend: 'Ext.panel.Panel',
+    xtype: 'document-kind',
+    controller:'document-kind',
+    viewModel: {
+        type: 'document-kind'
+    },
+    tbar: [{
+        xtype: 'label',
+        text: '类型:',
+        padding: '0 0 0 5'
+    }, {
+        xtype: 'segmentedbutton',
+        reference: 'dataKind',
+        value: 'customerkind',
+        items: [{
+            text: '客户',
+            value: 'customerkind'
+        }, {
+            text: '供应商',
+            value: 'vendorkind'
+        }, {
+            text: '商品',
+            value: 'productkind'
+        }, {
+            text: '收支',
+            value: 'inoutkind'
+        }],
+        listeners: {
+            toggle: 'onKindToggle'
+        }
+    },'->',
+        {
+          xtype:'button',
+          text:'新增',
+          listeners: {
+              click: 'onAdd'
+          }
+        },{
+          xtype:'button',
+          text:'刷新',
+          listeners: {
+             click: 'onRefresh'
+          }
+    }],
+    items:[{
+        xtype:'grid',
+        reference: 'document-kind-Grid',
+        margin: '10 0 0 0',
+        flex: 1,
+        bind:{
+            selection: '{selectedCompany}'
+        },
+        listeners:{
+            render:'loadDefualt'
+        }
+    }],
+    etc:{
+        customerkind:{
+            columns: [{
+                text: '客户类型',
+                dataIndex: 'ck_kind',
+                flex: 1
+            }],
+            formItems:[{
+               xtype:'hidden',
+               name:'ck_id'
+            },{
+                xtype:'textfield',
+                name:'ck_kind',
+                allowBlank:false,
+                fieldLabel:'类型'
+            }],
+            keyField:'ck_id',
+            reqUrl:''
+        },
+        vendorkind:{
+            columns: [{
+                text: '供应商类型',
+                dataIndex: 'vk_kind',
+                flex: 1
+            }],
+            keyField:'vk_id',
+            reqUrl:''
+        },
+        productkind:{
+            columns: [{
+                text: '物料类型',
+                dataIndex: 'pk_kind',
+                flex: 1
+            }],
+            keyField:'pk_id',
+        },
+        inoutkind:{
+            columns: [{
+                text: '收支类型',
+                dataIndex: 'io_kind',
+                flex: 1
+            }],
+            keyField:'io_id'
+        }
+    }
+})
+
+

+ 88 - 0
frontend/saas-web/app/view/document/kind/KindController.js

@@ -0,0 +1,88 @@
+/**
+ * Created by zhouy on 2018/10/18.
+ */
+Ext.define('saas.view.document.kind.KindController', {
+    extend: 'Ext.app.ViewController',
+    alias: 'controller.document-kind',
+    loadDefualt:function(grid){
+        var me=this,
+            view = me.getView(),
+            vm = me.getViewModel(),
+            defaultKind=vm.getData()['dataKind'].value,
+            etc = view.etc[defaultKind];
+        grid.reconfigure(vm.getStore(defaultKind), me.insertActionColumn(etc.columns));
+    },
+    onKindToggle:function(container, button, pressed){
+       var me = this,
+            name = button.value,
+            view = me.getView(),
+            grid = me.lookup('document-kind-Grid'),
+            vm = me.getViewModel(),
+            etc = view.etc[name],
+            store=vm.getStore(name);
+       var columns=me.insertActionColumn(etc.columns);
+        grid.reconfigure(store, columns);
+        if(store) store.reload();
+        vm.set('title', button.text);
+    },
+    onAdd:function(){
+        var me=this,
+            dataKind=me.getViewModel().getData()['dataKind'].value;
+        me.createDialog(dataKind);
+    },
+    onRefresh:function(){
+
+    },
+    insertActionColumn:function(columns){
+        var me=this;
+        if(columns.length>0 && columns[0].xtype!='actioncolumn'){
+            return Ext.Array.insert(columns,0,[{
+                xtype:'actioncolumn',
+                items: [{
+                    tooltip: '编辑',
+                    iconCls: 'x-fa fa-pencil fa-fw',
+                    handler: me.onEdit,
+                    scope:this
+                },{
+                    text:'删除',
+                    iconCls:'x-fa fa-trash-o fa-fw',
+                    tooltip: '删除',
+                    handler: me.onDelete,
+                    scope:this
+                }]
+            }]);
+        }
+        return columns;
+    },
+    onEdit:function(grid,row,col){
+        var me=this,
+            view=me.getView(),
+            dataKind=me.getViewModel().getData()['dataKind'].value;
+            rec = grid.getStore().getAt(row);
+        var keyField=rec.get(view.etc[dataKind].keyField);
+        this.createDialog(dataKind,rec);
+    },
+    onDelete:function(grid,row,col){
+        var me=this,
+            view=me.getView(),
+            dataKind=me.getViewModel().getData()['dataKind'].value;
+        rec = grid.getStore().getAt(row);
+        var keyV=rec.get(view.etc[dataKind].keyField);
+        alert('删除ID:'+keyV);
+    },
+    createDialog: function(dataKind,record) {
+        var view = this.getView();var me=this;
+
+        this.isEdit = !!record;
+        this.dialog = view.add({
+            xtype: 'document-kind-childwin',
+            bind: {
+                title: record ? '修改{title}类型' : '新增{title}类型'
+            },
+            dataKind:dataKind,
+            record:record,
+            session: true
+        });
+        this.dialog.show();
+    }
+});

+ 57 - 0
frontend/saas-web/app/view/document/kind/KindModel.js

@@ -0,0 +1,57 @@
+/**
+ * Created by zhouy on 2018/10/18.
+ */
+Ext.define('saas.view.document.kind.KindModel', {
+    extend: 'Ext.app.ViewModel',
+    alias: 'viewmodel.document-kind',
+    data: {
+        title: '客户'
+    },
+    stores: {
+        customerkind: {
+            fields:[
+                {name: 'ck_id', type: 'int'},
+                {name: 'ck_kind',  type: 'string'}
+            ],
+            proxy: {
+                type: 'ajax',
+                url: 'resources/json/customer.json',
+                reader: {
+                    type: 'json'
+                }
+            },
+            pageSize: null,
+            autoLoad: true
+
+        },
+        vendorkind:{
+            fields:[
+                {name: 'vk_id', type: 'int'},
+                {name: 'vk_kind',  type: 'string'}
+            ],
+            proxy: {
+                type: 'ajax',
+                url: 'resources/json/vendor.json',
+                reader: {
+                    type: 'json'
+                }
+            },
+            pageSize: null,
+            autoLoad: false
+        },
+        productkind:{
+            fields:[
+                {name: 'pk_id', type: 'int'},
+                {name: 'pk_kind',  type: 'string'}
+            ],
+            data:[]
+        },
+        inoutkind:{
+            fields:[
+                {name: 'io_id', type: 'int'},
+                {name: 'io_kind',  type: 'string'}
+            ],
+            data:[]
+        },
+    }
+});

+ 7 - 0
frontend/saas-web/resources/json/customer.json

@@ -0,0 +1,7 @@
+[{
+  "ck_id":1,
+  "ck_kind":"kind1"
+},{
+  "ck_id":2,
+  "ck_kind":"kind2"
+}]

+ 7 - 0
frontend/saas-web/resources/json/vendor.json

@@ -0,0 +1,7 @@
+[{
+  "vk_id":1,
+  "vk_kind":"供应商类型1"
+},{
+  "vk_id":2,
+  "vk_kind":"供应商类型2"
+}]