瀏覽代碼

查询销售员接口、客户管理导入接口、下载模板接口,打码根据机台过滤接口、获取库存箱数重量接口、销售单出库明细记录接口、零售单功能接口,

xuezizhuo 1 年之前
父節點
當前提交
661f17359f
共有 47 個文件被更改,包括 743 次插入98 次删除
  1. 11 0
      zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java
  2. 33 3
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/CustomerController.java
  3. 2 2
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListController.java
  4. 11 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java
  5. 1 1
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInvoiceController.java
  6. 11 3
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductOutboundRecordController.java
  7. 45 1
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/SaleOrderController.java
  8. 2 2
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/Customer.java
  9. 76 3
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCodeList.java
  10. 3 3
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductHandsetOutboundRecord.java
  11. 6 6
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInventory.java
  12. 3 3
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductOutboundRecord.java
  13. 3 3
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductWarehousingRecord.java
  14. 0 1
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleOrder.java
  15. 13 2
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleProducts.java
  16. 25 3
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java
  17. 11 1
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductInvoiceVO.java
  18. 13 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleOrderVO.java
  19. 5 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/CustomerMapper.java
  20. 1 1
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeListMapper.java
  21. 7 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductInvoiceMapper.java
  22. 6 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductOutboundRecordMapper.java
  23. 5 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/SaleOrderMapper.java
  24. 12 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/SaleProductsMapper.java
  25. 5 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/ICustomerService.java
  26. 1 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListService.java
  27. 7 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java
  28. 2 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInvoiceService.java
  29. 7 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java
  30. 28 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/ISaleOrderService.java
  31. 5 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/CustomerServiceImpl.java
  32. 9 4
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java
  33. 28 5
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java
  34. 7 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInvoiceServiceImpl.java
  35. 16 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java
  36. 117 2
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleOrderServiceImpl.java
  37. 43 0
      zkqy-custom-business/src/main/resources/mapper/business/CustomerMapper.xml
  38. 2 1
      zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListMapper.xml
  39. 6 13
      zkqy-custom-business/src/main/resources/mapper/business/ProductInventoryMapper.xml
  40. 5 0
      zkqy-custom-business/src/main/resources/mapper/business/ProductInvoiceMapper.xml
  41. 19 2
      zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml
  42. 21 14
      zkqy-custom-business/src/main/resources/mapper/business/SaleOrderMapper.xml
  43. 80 15
      zkqy-custom-business/src/main/resources/mapper/business/SaleProductsMapper.xml
  44. 5 0
      zkqy-system/src/main/java/com/zkqy/system/mapper/SysUserMapper.java
  45. 8 0
      zkqy-system/src/main/java/com/zkqy/system/service/ISysUserService.java
  46. 5 0
      zkqy-system/src/main/java/com/zkqy/system/service/impl/SysUserServiceImpl.java
  47. 12 0
      zkqy-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 11 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java

@@ -286,4 +286,15 @@ public class SysUserController extends BaseController {
         return AjaxResult.success(userService.isExistUser(userName));
     }
 
+
+    /**
+     * 根据角色获取用户信息
+     */
+    @GetMapping("/getRoleUser/{roleKey}")
+    public AjaxResult getRoleUser(@PathVariable("roleKey") String roleKey) {
+        return AjaxResult.success(userService.selectUserListByRoleKey(roleKey,getTenantId()));
+    }
+
+
+
 }

+ 33 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/controller/CustomerController.java

@@ -2,6 +2,9 @@ package com.zkqy.business.controller;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.common.core.domain.entity.SysUser;
+import com.zkqy.common.utils.DateUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -15,6 +18,7 @@ import com.zkqy.business.domain.Customer;
 import com.zkqy.business.service.ICustomerService;
 import com.zkqy.common.utils.poi.ExcelUtil;
 import com.zkqy.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 客户Controller
@@ -57,9 +61,35 @@ public class CustomerController extends BaseController
         util.exportExcel(response, list, "客户数据");
     }
 
-    /**
-     * 获取客户详细信息
-     */
+
+
+
+
+    @Log(title = "客户管理", businessType = BusinessType.IMPORT)
+    //@PreAuthorize("@ss.hasPermi('system:user:import')")
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
+        ExcelUtil<Customer> util = new ExcelUtil<Customer>(Customer.class);
+        List<Customer> userList = util.importExcel(file.getInputStream());
+        userList.forEach(customer -> {
+            customer.setCreateBy(getUsername());
+            customer.setCreateById(getUserId());
+            customer.setCreateTime(DateUtils.getNowDate());
+        });
+        return success(customerService.batchInsertCustomer(userList));
+    }
+
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) {
+        ExcelUtil<Customer> util = new ExcelUtil<Customer>(Customer.class);
+        util.importTemplateExcel(response, "用户数据");
+    }
+
+
+        /**
+         * 获取客户详细信息
+         */
 //    @PreAuthorize("@ss.hasPermi('system:customer:query')")
     @GetMapping(value = "/{id}")
     @ApiOperation(value = "获取客户详细信息")

+ 2 - 2
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductCodeListController.java

@@ -140,8 +140,8 @@ public class ProductCodeListController extends BaseController {
      * 生产完成产品列表
      */
     @GetMapping("/finishedProductList")
-    public AjaxResult finishedProductList() {
-        return AjaxResult.success(productCodeListService.selectFinishedProduct());
+    public AjaxResult finishedProductList(ProductCodeList productCodeList) {
+        return AjaxResult.success(productCodeListService.selectFinishedProduct(productCodeList));
     }
 
     /**

+ 11 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java

@@ -145,4 +145,15 @@ public class ProductInventoryController extends BaseController {
         return productInventoryService.deleteInventorByProductCodeListVO(productCodeListVO);
     }
 
+    /**
+     * 获取货品库存箱数重量
+     */
+    @PostMapping("/getProductInventory")
+    public AjaxResult getProductInventory(@RequestBody ProductInventory productInventory){
+        return AjaxResult.success(productInventoryService.getProductInventory(productInventory));
+    }
+
+
+
+
 }

+ 1 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInvoiceController.java

@@ -111,7 +111,7 @@ public class ProductInvoiceController extends BaseController
     }
 
     /**
-     * 查询发货单货品信息
+     * 查询发货单货品信息/销售单&零售单
      */
     @GetMapping("/productInvoiceInfo")
     public AjaxResult productInvoiceInfo(@RequestParam("saleOrderNo") String saleOrderNo)

+ 11 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductOutboundRecordController.java

@@ -55,9 +55,9 @@ public class ProductOutboundRecordController extends BaseController
         return getDataTable(list);
     }
 
-    /**
-     * 导出成品出库记录列表
-     */
+//    /**
+//     * 导出成品出库记录列表
+//     */
 //    @PreAuthorize("@ss.hasPermi('system:ProductOutboundRecord:export')")
 //    @Log(title = "成品出库记录", businessType = BusinessType.EXPORT)
 //    @PostMapping("/export")
@@ -139,4 +139,12 @@ public class ProductOutboundRecordController extends BaseController
         return success(true);
     }
 
+    /**
+     * 销售单/零售单出库明细记录
+     */
+    @GetMapping("/outboundDetails")
+    public AjaxResult outboundDetails(@RequestParam String saleOrderNo){
+        return AjaxResult.success(productOutboundRecordService.outboundDetails(saleOrderNo));
+    }
+
 }

+ 45 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/controller/SaleOrderController.java

@@ -3,6 +3,7 @@ package com.zkqy.business.controller;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.zkqy.business.domain.ProductInvoice;
 import com.zkqy.business.domain.SaleProducts;
 import com.zkqy.business.domain.vo.SaleOrderVO;
 import com.zkqy.business.domain.vo.SaleProductsVo;
@@ -132,7 +133,7 @@ public class SaleOrderController extends BaseController {
     }
 
     /**
-     * 销售单列表--权限过滤
+     * 销售单/零售单列表--权限过滤
      */
     @GetMapping("/saleOrderList")
     public TableDataInfo saleOrderList(SaleOrder saleOrder){
@@ -141,6 +142,49 @@ public class SaleOrderController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 新增零售单
+     */
+    @PostMapping("/addRetailOrder")
+    public AjaxResult addRetailOrder(@RequestBody SaleOrderVO vo) {
+        return success(saleOrderService.addRetailOrder(vo));
+    }
+
+
+    /**
+     * 零售单详情
+     */
+    @GetMapping("/getRetailOrderInfo/{id}")
+    public AjaxResult getRetailOrderInfo(@PathVariable Long id) {
+        return success(saleOrderService.getRetailOrderInfo(id));
+    }
+
+    /**
+     * 修改零售单
+     */
+    @PutMapping("/editRetailOrder")
+    public AjaxResult editRetailOrder(@RequestBody SaleOrderVO vo) {
+        return toAjax(saleOrderService.editRetailOrder(vo));
+    }
+
+    /**
+     * 零售单提交
+     */
+    @PostMapping("/submitRetailOrder")
+    public AjaxResult submitRetailOrder(@RequestBody ProductInvoice productInvoice) {
+        return toAjax(saleOrderService.submitRetailOrder(productInvoice));
+    }
+
+    /**
+     * 零售单撤销
+     */
+    @PostMapping("/cancelRetailOrder")
+    public AjaxResult cancelRetailOrder(@RequestBody ProductInvoice productInvoice) {
+        return toAjax(saleOrderService.cancelRetailOrder(productInvoice));
+    }
+
+
+
 
 
 }

+ 2 - 2
zkqy-custom-business/src/main/java/com/zkqy/business/domain/Customer.java

@@ -39,11 +39,11 @@ public class Customer extends BaseEntity
     private String customMail;
 
     /** 客户类型(国内/国外/内加工) */
-    @Excel(name = "客户类型", readConverterExp = "国=内/国外/内加工")
+    @Excel(name = "客户类型")
     private String customType;
 
     /** 客户等级(一级/二级/三级) */
-    @Excel(name = "客户等级", readConverterExp = "一=级/二级/三级")
+    @Excel(name = "客户等级")
     private String customGrade;
 
     /** 地址信息 */

+ 76 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductCodeList.java

@@ -2,6 +2,7 @@ package com.zkqy.business.domain;
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.business.domain.vo.ProductCodeListVO;
 import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -55,7 +56,7 @@ public class ProductCodeList extends BaseEntity
     private Date productionDate;
 
     /** 机台 */
-    private String machineTool;
+    private Long machineTool;
 
     /** 毛重 */
     private Double grossWeight;
@@ -186,11 +187,11 @@ public class ProductCodeList extends BaseEntity
         this.productionDate = productionDate;
     }
 
-    public String getMachineTool() {
+    public Long getMachineTool() {
         return machineTool;
     }
 
-    public void setMachineTool(String machineTool) {
+    public void setMachineTool(Long machineTool) {
         this.machineTool = machineTool;
     }
 
@@ -392,4 +393,76 @@ public class ProductCodeList extends BaseEntity
                 ", totalGrossWeight=" + totalGrossWeight +
                 '}';
     }
+
+    public ProductCodeList() {
+    }
+
+
+    public ProductCodeList(ProductCodeListVO productCodeListVO) {
+        this.id = productCodeListVO.getId();
+        this.qrCode = productCodeListVO.getQrCode();
+        this.lotNum = productCodeListVO.getLotNum();
+        this.productId = productCodeListVO.getProductId();
+        this.productColour = productCodeListVO.getProductColour();
+        this.levels = productCodeListVO.getLevels();
+        this.canisterNum = productCodeListVO.getCanisterNum();
+        this.boxNum = productCodeListVO.getBoxNum();
+        this.suttle = productCodeListVO.getSuttle();
+        this.productionDate = productCodeListVO.getProductionDate();
+        this.machineTool = productCodeListVO.getMachineTool();
+        this.grossWeight = productCodeListVO.getGrossWeight();
+        this.packaging = productCodeListVO.getPackaging();
+        this.workShifts = productCodeListVO.getWorkShifts();
+        this.foreignTradeNumber = productCodeListVO.getForeignTradeNumber();
+        this.canisterWeight = productCodeListVO.getCanisterWeight();
+        this.boxWeight = productCodeListVO.getBoxWeight();
+        this.tubeColor = productCodeListVO.getTubeColor();
+        this.comPort = productCodeListVO.getComPort();
+        this.printFormat = productCodeListVO.getPrintFormat();
+        this.packagingType = productCodeListVO.getPackagingType();
+        this.storageLocation = productCodeListVO.getStorageLocation();
+        this.warehouseregionId = productCodeListVO.getWarehouseregionId();
+        this.delFlag = productCodeListVO.getDelFlag();
+        this.createById = productCodeListVO.getCreateById();
+        this.updateById = productCodeListVO.getUpdateById();
+        this.totalCanisterNum = productCodeListVO.getTotalCanisterNum();
+        this.totalBoxNum = productCodeListVO.getTotalBoxNum();
+        this.totalSuttle = productCodeListVO.getTotalSuttle();
+        this.totalGrossWeight = productCodeListVO.getTotalGrossWeight();
+    }
+
+    public ProductCodeList(Long id, String qrCode, String lotNum, Long productId, String productColour, String levels, Integer canisterNum, Integer boxNum, Double suttle, Date productionDate, Long machineTool, Double grossWeight, String packaging, String workShifts, String foreignTradeNumber, Double canisterWeight, Double boxWeight, String tubeColor, String comPort, String printFormat, String packagingType, String storageLocation, Long warehouseregionId, String delFlag, Long createById, Long updateById, Integer totalCanisterNum, Integer totalBoxNum, Double totalSuttle, Double totalGrossWeight) {
+        this.id = id;
+        this.qrCode = qrCode;
+        this.lotNum = lotNum;
+        this.productId = productId;
+        this.productColour = productColour;
+        this.levels = levels;
+        this.canisterNum = canisterNum;
+        this.boxNum = boxNum;
+        this.suttle = suttle;
+        this.productionDate = productionDate;
+        this.machineTool = machineTool;
+        this.grossWeight = grossWeight;
+        this.packaging = packaging;
+        this.workShifts = workShifts;
+        this.foreignTradeNumber = foreignTradeNumber;
+        this.canisterWeight = canisterWeight;
+        this.boxWeight = boxWeight;
+        this.tubeColor = tubeColor;
+        this.comPort = comPort;
+        this.printFormat = printFormat;
+        this.packagingType = packagingType;
+        this.storageLocation = storageLocation;
+        this.warehouseregionId = warehouseregionId;
+        this.delFlag = delFlag;
+        this.createById = createById;
+        this.updateById = updateById;
+        this.totalCanisterNum = totalCanisterNum;
+        this.totalBoxNum = totalBoxNum;
+        this.totalSuttle = totalSuttle;
+        this.totalGrossWeight = totalGrossWeight;
+    }
+
+
 }

+ 3 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductHandsetOutboundRecord.java

@@ -59,7 +59,7 @@ public class ProductHandsetOutboundRecord extends BaseEntity
 
     /** 机台 */
     @Excel(name = "机台")
-    private String machineTool;
+    private Long machineTool;
 
     /** 毛重 */
     @Excel(name = "毛重")
@@ -228,12 +228,12 @@ public class ProductHandsetOutboundRecord extends BaseEntity
     {
         return productionDate;
     }
-    public void setMachineTool(String machineTool) 
+    public void setMachineTool(Long machineTool)
     {
         this.machineTool = machineTool;
     }
 
-    public String getMachineTool() 
+    public Long getMachineTool()
     {
         return machineTool;
     }

+ 6 - 6
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInventory.java

@@ -46,7 +46,7 @@ public class ProductInventory extends BaseEntity
 
     /** 净重 */
     @Excel(name = "净重")
-    private Long suttle;
+    private Double suttle;
 
     /** 生产日期 */
     @JsonFormat(pattern = "yyyy-MM-dd")
@@ -59,7 +59,7 @@ public class ProductInventory extends BaseEntity
 
     /** 机台 */
     @Excel(name = "机台")
-    private String machineTool;
+    private Long machineTool;
 
     /** 毛重 */
     @Excel(name = "毛重")
@@ -200,12 +200,12 @@ public class ProductInventory extends BaseEntity
     {
         return boxNum;
     }
-    public void setSuttle(Long suttle) 
+    public void setSuttle(Double suttle)
     {
         this.suttle = suttle;
     }
 
-    public Long getSuttle() 
+    public Double getSuttle()
     {
         return suttle;
     }
@@ -227,12 +227,12 @@ public class ProductInventory extends BaseEntity
     {
         return warehouseId;
     }
-    public void setMachineTool(String machineTool) 
+    public void setMachineTool(Long machineTool)
     {
         this.machineTool = machineTool;
     }
 
-    public String getMachineTool() 
+    public Long getMachineTool()
     {
         return machineTool;
     }

+ 3 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductOutboundRecord.java

@@ -59,7 +59,7 @@ public class ProductOutboundRecord extends BaseEntity
 
     /** 机台 */
     @Excel(name = "机台")
-    private String machineTool;
+    private Long machineTool;
 
     /** 毛重 */
     @Excel(name = "毛重")
@@ -227,12 +227,12 @@ public class ProductOutboundRecord extends BaseEntity
     {
         return productionDate;
     }
-    public void setMachineTool(String machineTool) 
+    public void setMachineTool(Long machineTool)
     {
         this.machineTool = machineTool;
     }
 
-    public String getMachineTool() 
+    public Long getMachineTool()
     {
         return machineTool;
     }

+ 3 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductWarehousingRecord.java

@@ -59,7 +59,7 @@ public class ProductWarehousingRecord extends BaseEntity
 
     /** 机台 */
     @Excel(name = "机台")
-    private String machineTool;
+    private Long machineTool;
 
     /** 毛重 */
     @Excel(name = "毛重")
@@ -223,12 +223,12 @@ public class ProductWarehousingRecord extends BaseEntity
     {
         return productionDate;
     }
-    public void setMachineTool(String machineTool) 
+    public void setMachineTool(Long machineTool)
     {
         this.machineTool = machineTool;
     }
 
-    public String getMachineTool() 
+    public Long getMachineTool()
     {
         return machineTool;
     }

+ 0 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleOrder.java

@@ -125,7 +125,6 @@ public class SaleOrder extends BaseEntity
 
 
     /** 批号 */
-    @Excel(name = "交货日期")
     private String lotNumber;
 
     //超级查询

+ 13 - 2
zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleProducts.java

@@ -93,12 +93,15 @@ public class SaleProducts extends BaseEntity
     @Excel(name = "色号")
     private String colourNumber;
 
+    /** 任务名称 */
+    private String taskName;
+
     /** 批号 */
     @Excel(name = "批号")
     private String lotNumber;
 
-    @Excel
-    private  String  onBoardState;
+    /** 上机状态 */
+    private String onBoardState;
 
 
     public String getOnBoardState() {
@@ -299,6 +302,14 @@ public class SaleProducts extends BaseEntity
         return colourNumber;
     }
 
+    public String getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 25 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java

@@ -51,7 +51,7 @@ public class ProductCodeListVO extends BaseEntity
     private Date productionDate;
 
     /** 机台 */
-    private String machineTool;
+    private Long machineTool;
 
     /** 毛重 */
     private Double grossWeight;
@@ -146,6 +146,12 @@ public class ProductCodeListVO extends BaseEntity
     /** 产品分类 */
     private String productType;
 
+    /** 客户名称 */
+    private String customName;
+
+    /** 机台号 */
+    private String machineToolNo;
+
     public Long getId() {
         return id;
     }
@@ -226,11 +232,11 @@ public class ProductCodeListVO extends BaseEntity
         this.productionDate = productionDate;
     }
 
-    public String getMachineTool() {
+    public Long getMachineTool() {
         return machineTool;
     }
 
-    public void setMachineTool(String machineTool) {
+    public void setMachineTool(Long machineTool) {
         this.machineTool = machineTool;
     }
 
@@ -496,6 +502,22 @@ public class ProductCodeListVO extends BaseEntity
         this.productType = productType;
     }
 
+    public String getCustomName() {
+        return customName;
+    }
+
+    public void setCustomName(String customName) {
+        this.customName = customName;
+    }
+
+    public String getMachineToolNo() {
+        return machineToolNo;
+    }
+
+    public void setMachineToolNo(String machineToolNo) {
+        this.machineToolNo = machineToolNo;
+    }
+
     @Override
     public String toString() {
         return "ProductCodeListVO{" +

+ 11 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductInvoiceVO.java

@@ -31,7 +31,7 @@ public class ProductInvoiceVO extends BaseEntity
     /** 销售员 */
     private String salesman;
 
-    /** 客户编号 */
+    /** 客户编号主键 */
     private Long customerId;
 
     /** 开票员 */
@@ -105,6 +105,8 @@ public class ProductInvoiceVO extends BaseEntity
     @Excel(name = "发货日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date deliveryDate;
 
+    /** 客户编号 */
+    private String customerNo;
 
     public void setId(Long id) 
     {
@@ -353,6 +355,14 @@ public class ProductInvoiceVO extends BaseEntity
         this.deliveryDate = deliveryDate;
     }
 
+    public String getCustomerNo() {
+        return customerNo;
+    }
+
+    public void setCustomerNo(String customerNo) {
+        this.customerNo = customerNo;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 13 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleOrderVO.java

@@ -99,6 +99,9 @@ public class SaleOrderVO {
     /** 客户名称 */
     private String customName;
 
+    /** 备注 */
+    private String remark;
+
     public Long getId() {
         return id;
     }
@@ -339,6 +342,16 @@ public class SaleOrderVO {
         this.customName = customName;
     }
 
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+
+
     @Override
     public String toString() {
         return "SaleOrderVO{" +

+ 5 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/CustomerMapper.java

@@ -72,4 +72,9 @@ public interface CustomerMapper
      */
     Customer selectCustomerByCustomerNo(String customerNo);
 
+    /**
+     * 批量新增客户
+     */
+    int batchInsertCustomer(List<Customer> customerList);
+
 }

+ 1 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductCodeListMapper.java

@@ -63,7 +63,7 @@ public interface ProductCodeListMapper
     /**
      * 查询生产完成的产品
      */
-    List<ProductCodeListVO> selectFinishedProduct();
+    List<ProductCodeListVO> selectFinishedProduct(ProductCodeList productCodeList);
 
     /**
      * 查询最大码单号

+ 7 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductInvoiceMapper.java

@@ -67,4 +67,11 @@ public interface ProductInvoiceMapper
      */
     ProductInvoice selectProductInvoiceBySaleOrderNo(String saleOrderNo);
 
+    /**
+     * 根据销售单号删除产品发货单
+     *
+     * @param saleOrderNo 销售单号
+     * @return 结果
+     */
+    int deleteProductInvoiceBySaleOrderNo(String saleOrderNo);
 }

+ 6 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductOutboundRecordMapper.java

@@ -85,6 +85,12 @@ public interface ProductOutboundRecordMapper
      */
     ProductOutboundRecord statisticsBoxNumSuttle(@Param("productId") Long productId,@Param("noticeNumber") String noticeNumber,@Param("qrCode") String qrCode);
 
+    /**
+     * 根据通知单号查询出库明细
+     */
+    List<ProductCodeListVO> selectOutboundDetails(String noticeNumber);
+
+
 
     /**
      * 删除成品出库记录信息

+ 5 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/SaleOrderMapper.java

@@ -46,6 +46,11 @@ public interface SaleOrderMapper
      */
     public int updateSaleOrder(SaleOrder saleOrder);
 
+    /**
+     * 根据销售单合同号修改销售订单
+     * @param saleOrder
+     * @return
+     */
     public int updateSaleOrderBySaleNo(SaleOrder saleOrder);
     /**
      * 批量修改销售订单

+ 12 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/SaleProductsMapper.java

@@ -1,6 +1,7 @@
 package com.zkqy.business.mapper;
 
 import java.util.List;
+import java.util.Set;
 
 import com.zkqy.business.domain.ProductInvoice;
 import com.zkqy.business.domain.SaleProducts;
@@ -101,4 +102,15 @@ public interface SaleProductsMapper
      */
     List<SaleProductsVo> selectOutboundOrderInfo(String saleOrderNo);
 
+    /**
+     * 批量新增
+     */
+    int batchInsertSaleProducts(List<SaleProducts> saleProducts);
+
+    /**
+     * 根据合同号查询销售产品编号
+     */
+    Set<Long> selectSaleProductsIdsBySaleNo(String saleNo);
+
+
 }

+ 5 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/ICustomerService.java

@@ -69,4 +69,9 @@ public interface ICustomerService
      */
     boolean checkCustomerNo(Long id,String customerNo);
 
+    /**
+     * 批量新增客户
+     */
+    int batchInsertCustomer(List<Customer> customerList);
+
 }

+ 1 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductCodeListService.java

@@ -64,7 +64,7 @@ public interface IProductCodeListService
     /**
      * 查询生产完成的产品
      */
-    List<ProductCodeListVO> selectFinishedProduct();
+    List<ProductCodeListVO> selectFinishedProduct(ProductCodeList productCodeList);
 
     /**
      * 码单号生成

+ 7 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java

@@ -1,6 +1,7 @@
 package com.zkqy.business.service;
 
 import java.util.List;
+import java.util.Map;
 
 import com.zkqy.business.domain.ProductInventory;
 import com.zkqy.business.domain.ProductInvoice;
@@ -82,4 +83,10 @@ public interface IProductInventoryService {
 
 
     public AjaxResult deleteInventorByProductCodeListVO(ProductCodeListVO productCodeListVO);
+
+    /**
+     * 获取货品库存箱数重量/1:销售单;2:零售单
+     */
+    Map<String,Object> getProductInventory(ProductInventory productInventory);
+
 }

+ 2 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInvoiceService.java

@@ -3,6 +3,7 @@ package com.zkqy.business.service;
 import java.util.List;
 import java.util.Map;
 
+import com.zkqy.business.domain.ProductInventory;
 import com.zkqy.business.domain.ProductInvoice;
 import com.zkqy.business.domain.vo.ProductInvoiceVO;
 
@@ -63,7 +64,7 @@ public interface IProductInvoiceService
     public int deleteProductInvoiceById(Long id);
 
     /**
-     * 查询发货单详情
+     * 查询发货单详情/销售单
      * @param saleOrderNo 销售单编号
      * @return
      */

+ 7 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java

@@ -69,6 +69,13 @@ public interface IProductOutboundRecordService {
      */
     ProductOutboundRecord whetherStorage(String qrCode, String qrCodeId);
 
+    /**
+     * 查询销售单/零售单成品出库记录
+     * @param saleOrderNo
+     * @return
+     */
+    List<ProductCodeListVO> outboundDetails(String saleOrderNo);
+
     /**
      * 删除成品出库记录信息
      *

+ 28 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/service/ISaleOrderService.java

@@ -1,6 +1,8 @@
 package com.zkqy.business.service;
 
 import java.util.List;
+
+import com.zkqy.business.domain.ProductInvoice;
 import com.zkqy.business.domain.SaleOrder;
 import com.zkqy.business.domain.vo.SaleOrderVO;
 
@@ -73,12 +75,37 @@ public interface ISaleOrderService
     int batchApproval(SaleOrderVO vo);
 
     /**
-     * 销售单列表--权限过滤
+     * 销售单/零售单列表--权限过滤
      * @param saleOrder
      * @return
      */
     List<SaleOrderVO> saleOrderList(SaleOrder saleOrder);
 
+    /**
+     * 新增零售单
+     */
+    int addRetailOrder(SaleOrderVO vo);
+
+    /**
+     * 查询零售单详情
+     * @param id
+     * @return
+     */
+    SaleOrderVO getRetailOrderInfo(Long id);
 
+    /**
+     * 修改零售单
+     */
+    int editRetailOrder(SaleOrderVO vo);
+
+    /**
+     * 零售单提交
+     */
+    int submitRetailOrder(ProductInvoice productInvoice);
+
+    /**
+     * 零售单撤销
+     */
+    int cancelRetailOrder(ProductInvoice productInvoice);
 
 }

+ 5 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/CustomerServiceImpl.java

@@ -146,4 +146,9 @@ public class CustomerServiceImpl implements ICustomerService
             }
         }
     }
+
+    @Override
+    public int batchInsertCustomer(List<Customer> customerList) {
+        return customerMapper.batchInsertCustomer(customerList);
+    }
 }

+ 9 - 4
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java

@@ -105,7 +105,8 @@ public class ProductCodeListServiceImpl implements IProductCodeListService {
         productCodeListMapper.insertProductCodeList(productCodeList);
         // 直接入库--
         vo.getMachineTool();  // 当前机台
-        String bumen = vo.getMachineTool().split("-")[0];
+
+        String bumen = vo.getMachineToolNo().split("-")[0];
         List<SysDictData> dictDataList = dictDataMapper.selectDictDataByType("section_stash");
         dictDataList.forEach(item -> {
             if (item.getDictLabel().equals(bumen)) {
@@ -114,6 +115,8 @@ public class ProductCodeListServiceImpl implements IProductCodeListService {
         });
         List<ProductCodeListVO> productCodeListVOList = new ArrayList<>();
         productCodeListVOList.add(vo);
+
+
         iProductInventoryService.productStorage(productCodeListVOList);
         return productCodeList.getId();
     }
@@ -197,8 +200,8 @@ public class ProductCodeListServiceImpl implements IProductCodeListService {
     }
 
     @Override
-    public List<ProductCodeListVO> selectFinishedProduct() {
-        return productCodeListMapper.selectFinishedProduct();
+    public List<ProductCodeListVO> selectFinishedProduct(ProductCodeList productCodeList) {
+        return productCodeListMapper.selectFinishedProduct(productCodeList);
     }
 
 
@@ -227,7 +230,9 @@ public class ProductCodeListServiceImpl implements IProductCodeListService {
 
     @Override
     public AjaxResult deleteProductCodeListInfoByInfo(ProductCodeListVO productCodeListVO) {
-        productCodeListInfoMapper.deleteProductCodeListInfoById(productCodeListVO.getId());// 删除码单
+//        productCodeListInfoMapper.deleteProductCodeListInfoById(productCodeListVO.getId());// 删除码单
+        productCodeListMapper.deleteProductCodeListById(productCodeListVO.getId());
+
         // 删除库存
         return iProductInventoryService.deleteInventorByProductCodeListVO(productCodeListVO);
     }

+ 28 - 5
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java

@@ -1,7 +1,9 @@
 package com.zkqy.business.service.impl;
 
 import java.text.DecimalFormat;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import com.zkqy.business.domain.*;
 import com.zkqy.business.domain.vo.ProductCodeListVO;
@@ -116,7 +118,7 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
 
         for (ProductCodeListVO vo : productCodeListVOList) {
             // 日志
-            ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(vo.getId());
+            ProductCodeList productCodeList = new ProductCodeList(vo);
             //校验当前货品是否已入库,已入库跳过本次循环
             ProductWarehousingRecord productWarehousingRecord1 =
                     productWarehousingRecordMapper.selectProductWarehousingRecordWhetherExist(productCodeList.getQrCode(), vo.getQrCodeId());
@@ -132,9 +134,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
             productWarehousingRecord.setCreateBy(SecurityUtils.getUsername());
             productWarehousingRecord.setCreateTime(DateUtils.getNowDate());
             productWarehousingRecord.setCreateById(SecurityUtils.getUserId());
-            productWarehousingRecord.setDepositor(vo.getDepositor());
-            productWarehousingRecord.setWarehousingTime(vo.getWarehousingTime());
-            productWarehousingRecord.setWarehouseId(vo.getWarehouseId());
+            productWarehousingRecord.setDepositor(SecurityUtils.getLoginUser().getUser().getNickName());//入库人
+            productWarehousingRecord.setWarehousingTime(DateUtils.getNowDate());
+            productWarehousingRecord.setWarehouseId(vo.getWarehouseId());//入库仓库编号
             productWarehousingRecord.setRemark(productCodeList.getRemark());
             productWarehousingRecordMapper.insertProductWarehousingRecord(productWarehousingRecord);
 
@@ -155,6 +157,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
                 Double grossWeight = productInventory.getTotalGrossWeight() == null ? vo.getGrossWeight() : productInventory.getTotalGrossWeight() + vo.getGrossWeight();
                 String grossWeight1 = df.format(grossWeight);
                 editProductInventory.setTotalGrossWeight(Double.parseDouble(grossWeight1));//合计毛重
+                editProductInventory.setUpdateById(SecurityUtils.getUserId());
+                editProductInventory.setUpdateBy(SecurityUtils.getUsername());
+                editProductInventory.setUpdateTime(DateUtils.getNowDate());
                 productInventoryMapper.updateProductInventory(editProductInventory);
             } else {
                 ProductInventory addProductInventory = new ProductInventory();
@@ -164,7 +169,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
                 addProductInventory.setTotalBoxNum(1);//合计箱数
                 addProductInventory.setTotalSuttle(vo.getSuttle());//合计净重
                 addProductInventory.setTotalGrossWeight(vo.getGrossWeight());//合计毛重
-
+                addProductInventory.setCreateBy(SecurityUtils.getUsername());
+                addProductInventory.setCreateTime(DateUtils.getNowDate());
+                addProductInventory.setCreateById(SecurityUtils.getUserId());
                 productInventoryMapper.insertProductInventory(addProductInventory);
             }
 
@@ -333,6 +340,22 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
         return AjaxResult.success(productInventoryMapper.updateProductInventory(editProductInventory));
     }
 
+    @Override
+    public Map<String,Object> getProductInventory(ProductInventory productInventory) {
+        Map<String,Object> map = new HashMap<>();
+
+        ProductInventory productInventory1 = productInventoryMapper.selectProductInventoryByLotNumAndProductId(productInventory);
+        if(productInventory1 != null && productInventory1.getTotalSuttle() > 0){
+            productInventory1.setTotalSuttle(handlingWeight(productInventory1.getTotalSuttle()));
+            map.put("inventoryBoxNum", productInventory1.getTotalBoxNum());
+            map.put("inventoryWeight", handlingWeight(productInventory1.getTotalSuttle()));
+        }else {
+            map.put("inventoryBoxNum", 0);
+            map.put("inventoryWeight", 0);
+        }
+        return map;
+    }
+
     //保留两位小数
     public Double handlingWeight(Double weight) {
         DecimalFormat df = new DecimalFormat("0.00");

+ 7 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInvoiceServiceImpl.java

@@ -127,6 +127,9 @@ public class ProductInvoiceServiceImpl implements IProductInvoiceService
         ProductInvoice productInvoice = productInvoiceMapper.selectProductInvoiceBySaleOrderNo(saleOrderNo);
         if(productInvoice != null){
             BeanUtils.copyProperties(productInvoice, vo);
+        }else {
+            SaleOrder saleOrder = saleOrderMapper.selectSaleOrderBySaleNo(saleOrderNo);
+            vo.setCustomerNo(saleOrder.getSaleCustomNo());
         }
         //表格数据
         //根据销售单编号查询货品信息
@@ -175,8 +178,12 @@ public class ProductInvoiceServiceImpl implements IProductInvoiceService
         //查询发货通知单详情
         ProductInvoice productInvoice = productInvoiceMapper.selectProductInvoiceById(id);
         BeanUtils.copyProperties(productInvoice, vo);
+
+
         //查询发货单货品详情,循环得到货品实发箱数、重量
         List<ProductInvoiceVO.SaleProductInfo> saleProductInfoList = saleProductsMapper.selectSaleProductsInfo(productInvoice.getSaleOrderNo());
+
+
         for (ProductInvoiceVO.SaleProductInfo saleProductInfo : saleProductInfoList){
             //实发箱数、重量
             ProductHandsetOutboundRecord productHandsetOutboundRecord =
@@ -193,7 +200,6 @@ public class ProductInvoiceServiceImpl implements IProductInvoiceService
         return vo;
     }
 
-
     //保留两位小数
     public Double handlingWeight(Double weight){
         DecimalFormat df = new DecimalFormat("0.00");

+ 16 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java

@@ -1,8 +1,11 @@
 package com.zkqy.business.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import com.zkqy.business.domain.ProductInvoice;
 import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.business.mapper.ProductInvoiceMapper;
 import com.zkqy.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -21,6 +24,9 @@ public class ProductOutboundRecordServiceImpl implements IProductOutboundRecordS
     @Autowired
     private ProductOutboundRecordMapper productOutboundRecordMapper;
 
+    @Autowired
+    private ProductInvoiceMapper productInvoiceMapper;
+
     /**
      * 查询成品出库记录
      *
@@ -98,4 +104,14 @@ public class ProductOutboundRecordServiceImpl implements IProductOutboundRecordS
     public int deleteProductOutboundRecordByUUID(String qrCodeId) {
         return productOutboundRecordMapper.deleteProductOutboundRecordByUUID(qrCodeId);
     }
+
+    @Override
+    public List<ProductCodeListVO> outboundDetails(String saleOrderNo) {
+        //根据销售单编号查询通知单编号
+        ProductInvoice productInvoice = productInvoiceMapper.selectProductInvoiceBySaleOrderNo(saleOrderNo);
+        if(productInvoice == null){
+            return new ArrayList<>();
+        }
+        return productOutboundRecordMapper.selectOutboundDetails(productInvoice.getNoticeNumber());
+    }
 }

+ 117 - 2
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleOrderServiceImpl.java

@@ -1,15 +1,17 @@
 package com.zkqy.business.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
+import com.zkqy.business.domain.ProductInvoice;
 import com.zkqy.business.domain.SaleProducts;
 import com.zkqy.business.domain.vo.SaleOrderVO;
+import com.zkqy.business.mapper.ProductInvoiceMapper;
 import com.zkqy.business.mapper.SaleCraftMapper;
 import com.zkqy.business.mapper.SaleProductsMapper;
 import com.zkqy.common.core.domain.entity.SysRole;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.common.utils.bean.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zkqy.business.mapper.SaleOrderMapper;
@@ -35,6 +37,9 @@ public class SaleOrderServiceImpl implements ISaleOrderService
     @Autowired
     private SaleCraftMapper saleCraftMapper;
 
+    @Autowired
+    private ProductInvoiceMapper productInvoiceMapper;
+
     /**
      * 查询销售订单
      * 
@@ -182,4 +187,114 @@ public class SaleOrderServiceImpl implements ISaleOrderService
         }
         return saleOrderVOS;
     }
+
+    @Override
+    @Transactional
+    public int addRetailOrder(SaleOrderVO vo) {
+        //新增零售单
+        SaleOrder saleOrder = new SaleOrder();
+        BeanUtils.copyBeanProp(saleOrder,vo);
+        saleOrder.setCreateBy(SecurityUtils.getUsername());
+        saleOrder.setCreateTime(DateUtils.getNowDate());
+        saleOrderMapper.insertSaleOrder(saleOrder);
+        //新增零售单货品
+        vo.getSaleProductsList().forEach(saleProducts -> {
+            saleProducts.setSaleOrderNo(saleOrder.getSaleNo());
+            saleProducts.setCreateBy(SecurityUtils.getUsername());
+            saleProducts.setCreateTime(DateUtils.getNowDate());
+        });
+        return saleProductsMapper.batchInsertSaleProducts(vo.getSaleProductsList());
+    }
+
+    @Override
+    public SaleOrderVO getRetailOrderInfo(Long id) {
+        // 零售单
+        SaleOrderVO saleOrderVO = new SaleOrderVO();
+        SaleOrder saleOrder = saleOrderMapper.selectSaleOrderById(id);
+        BeanUtils.copyBeanProp(saleOrderVO,saleOrder);
+
+        // 零售单货品详情
+        SaleProducts saleProducts = new SaleProducts();
+        saleProducts.setSaleOrderNo(saleOrder.getSaleNo());
+        List<SaleProducts> saleProductsList = saleProductsMapper.selectSaleProductsList(saleProducts);
+        saleOrderVO.setSaleProductsList(saleProductsList);
+        return saleOrderVO;
+    }
+
+    @Override
+    @Transactional
+    public int editRetailOrder(SaleOrderVO vo) {
+        //修改零售单
+        SaleOrder saleOrder = new SaleOrder();
+        BeanUtils.copyBeanProp(saleOrder,vo);
+
+
+        //修改零售单货品详情
+        LinkedList<SaleProducts> addSaleProductsList = new LinkedList<>();
+        LinkedList<SaleProducts> updateSaleProductsList = new LinkedList<>();
+        Set<Long> ids = new HashSet<>();
+
+        vo.getSaleProductsList().forEach(saleProducts -> {
+            if(saleProducts.getId() != null){
+                ids.add(saleProducts.getId());
+                saleProducts.setUpdateById(SecurityUtils.getUserId());
+                saleProducts.setUpdateTime(DateUtils.getNowDate());
+                saleOrder.setUpdateBy(SecurityUtils.getUsername());
+                updateSaleProductsList.add(saleProducts);
+            }else {
+                saleProducts.setCreateById(SecurityUtils.getUserId());
+                saleProducts.setCreateBy(SecurityUtils.getUsername());
+                saleProducts.setCreateTime(DateUtils.getNowDate());
+                addSaleProductsList.add(saleProducts);
+            }
+        });
+
+        //查询零售单货品编号
+        Set<Long> allIds = saleProductsMapper.selectSaleProductsIdsBySaleNo(saleOrder.getSaleNo());
+        allIds.removeAll(ids);
+        // remove
+        if(allIds.size() > 0){
+            saleProductsMapper.deleteSaleProductsByIds(new ArrayList<>(allIds));
+        }
+        // add
+        if(addSaleProductsList.size() > 0){
+            saleProductsMapper.batchInsertSaleProducts(addSaleProductsList);
+        }
+        if(updateSaleProductsList.size() > 0){
+            updateSaleProductsList.forEach(saleProducts -> {
+                saleProductsMapper.updateSaleProducts(saleProducts);
+            });
+        }
+        return saleOrderMapper.updateSaleOrder(saleOrder);
+    }
+
+    @Override
+    @Transactional
+    public int submitRetailOrder(ProductInvoice productInvoice) {
+
+        //修改零售单状态
+        SaleOrder saleOrder = new SaleOrder();
+        saleOrder.setSaleNo(productInvoice.getSaleOrderNo());
+        saleOrder.setStatus(productInvoice.getStatus());
+        saleOrderMapper.updateSaleOrderBySaleNo(saleOrder);
+        //新增通知单
+        productInvoice.setStatus("1");
+        return productInvoiceMapper.insertProductInvoice(productInvoice);
+
+    }
+
+    @Override
+    @Transactional
+    public int cancelRetailOrder(ProductInvoice productInvoice) {
+
+        //删除通知单
+        productInvoiceMapper.deleteProductInvoiceBySaleOrderNo(productInvoice.getSaleOrderNo());
+
+        //修改零售单状态
+        SaleOrder saleOrder = new SaleOrder();
+        saleOrder.setSaleNo(productInvoice.getSaleOrderNo());
+        saleOrder.setStatus(productInvoice.getStatus());
+        return saleOrderMapper.updateSaleOrderBySaleNo(saleOrder);
+    }
+
 }

+ 43 - 0
zkqy-custom-business/src/main/resources/mapper/business/CustomerMapper.xml

@@ -160,4 +160,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where custom_no = #{customerNo} and del_flag = '0'
     </select>
 
+    <insert id="batchInsertCustomer" parameterType="com.zkqy.business.domain.Customer">
+        INSERT INTO {DBNAME}.customer (
+        custom_no,
+        custom_name,
+        custom_phone_number,
+        custom_landine,
+        custom_mail,
+        custom_type,
+        custom_grade,
+        custom_address,
+        custom_country_type,
+        custom_district,
+        salesman,
+        contact_person,
+        remark,
+        create_by_id,
+        create_by,
+        create_time,
+        del_flag
+        ) VALUES
+        <foreach collection="list" item="item" index="index" separator=",">
+            (
+            #{item.customNo},
+            #{item.customName},
+            #{item.customPhoneNumber},
+            #{item.customLandine},
+            #{item.customMail},
+            #{item.customType},
+            #{item.customGrade},
+            #{item.customAddress},
+            #{item.customCountryType},
+            #{item.customDistrict},
+            #{item.salesman},
+            #{item.contactPerson},
+            #{item.remark},
+            #{item.createById},
+            #{item.createBy},
+            #{item.createTime},
+            '0'
+            )
+        </foreach>
+    </insert>
+
 </mapper>

+ 2 - 1
zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListMapper.xml

@@ -232,7 +232,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteProductCodeListById" parameterType="Long">
-        delete from product_code_list where id = #{id}
+        update {DBNAME}.product_code_list set del_flag = '2' where id = #{id}
     </delete>
 
     <update id="deleteProductCodeListByIds" parameterType="String">
@@ -262,6 +262,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND sc.del_flag = '0'
             and ml.del_flag = '0'
             and sp.status = '6'
+        <if test="machineTool != null"> and sp.production_line_no = #{machineTool}</if>
     </select>
 
     <select id="selectMaxCodeList" resultType="string">

+ 6 - 13
zkqy-custom-business/src/main/resources/mapper/business/ProductInventoryMapper.xml

@@ -110,18 +110,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="storageLocation != null">storage_location,</if>
             <if test="warehouseregionId != null">warehouseregion_id,</if>
             <if test="remark != null">remark,</if>
-            <if test="delFlag != null">del_flag,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createById != null">create_by_id,</if>
             <if test="createTime != null">create_time,</if>
-            <if test="updateBy != null">update_by,</if>
-            <if test="updateById != null">update_by_id,</if>
-            <if test="updateTime != null">update_time,</if>
             <if test="totalCanisterNum != null">total_canister_num,</if>
             <if test="totalBoxNum != null">total_box_num,</if>
             <if test="totalSuttle != null">total_suttle,</if>
             <if test="totalGrossWeight != null">total_gross_weight,</if>
             <if test="productColour != null">product_colour,</if>
+            del_flag
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="qrCode != null">#{qrCode},</if>
@@ -147,18 +144,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="storageLocation != null">#{storageLocation},</if>
             <if test="warehouseregionId != null">#{warehouseregionId},</if>
             <if test="remark != null">#{remark},</if>
-            <if test="delFlag != null">#{delFlag},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createById != null">#{createById},</if>
             <if test="createTime != null">#{createTime},</if>
-            <if test="updateBy != null">#{updateBy},</if>
-            <if test="updateById != null">#{updateById},</if>
-            <if test="updateTime != null">#{updateTime},</if>
             <if test="totalCanisterNum != null">#{totalCanisterNum},</if>
             <if test="totalBoxNum != null">#{totalBoxNum},</if>
             <if test="totalSuttle != null">#{totalSuttle},</if>
             <if test="totalGrossWeight != null">#{totalGrossWeight},</if>
             <if test="productColour != null">#{productColour},</if>
+            '0'
          </trim>
     </insert>
 
@@ -188,10 +182,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="storageLocation != null">storage_location = #{storageLocation},</if>
             <if test="warehouseregionId != null">warehouseregion_id = #{warehouseregionId},</if>
             <if test="remark != null">remark = #{remark},</if>
-            <if test="delFlag != null">del_flag = #{delFlag},</if>
-            <if test="createBy != null">create_by = #{createBy},</if>
-            <if test="createById != null">create_by_id = #{createById},</if>
-            <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateById != null">update_by_id = #{updateById},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
@@ -221,7 +211,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectProductInventoryByLotNumAndProductId" resultType="com.zkqy.business.domain.ProductInventory">
-        select sum(total_box_num) as totalBoxNum,sum(total_suttle) as totalSuttle  from {DBNAME}.product_inventory where lot_num = #{lotNum} and product_id = #{productId}
+        select sum(total_box_num) as totalBoxNum,sum(total_suttle) as totalSuttle  from {DBNAME}.product_inventory
+        where del_flag = '0'
+        <if test="lotNum != null">and lot_num = #{lotNum}</if>
+        <if test="productId != null">and product_id = #{productId}</if>
     </select>
 
 </mapper>

+ 5 - 0
zkqy-custom-business/src/main/resources/mapper/business/ProductInvoiceMapper.xml

@@ -178,4 +178,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectProductInvoiceVo"/>
         where sale_order_no = #{saleOrderNo} and del_flag = '0'
     </select>
+
+    <update id="deleteProductInvoiceBySaleOrderNo" parameterType="String">
+        update {DBNAME}.product_invoice set del_flag = '2' where sale_order_no = #{saleOrderNo}
+    </update>
+
 </mapper>

+ 19 - 2
zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml

@@ -85,6 +85,7 @@
         <result property="depositor" column="depositor"/>
         <result property="warehouseId" column="warehouse_id"/>
         <result property="productColour" column="product_colour"/>
+        <result property="customName" column="custom_name"/>
     </resultMap>
 
     <sql id="selectProductOutboundRecordVo">
@@ -335,9 +336,25 @@
     </select>
 
     <delete id="deleteProductOutboundRecordByUUID" parameterType="string">
-        delete
-        from product_outbound_record
+        update {DBNAME}.product_outbound_record
+        set del_flag = '0'
         where qr_code_id = #{qrCodeId}
     </delete>
 
+    <select id="selectOutboundDetails" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO" resultMap="ProductCodeListResultVO">
+        SELECT
+            r.*,
+            p.product_name,
+            p.product_specifications,
+            r.product_colour AS product_color,
+            c.custom_name
+        FROM
+            {DBNAME}.product_outbound_record r
+                LEFT JOIN {DBNAME}.production p ON r.product_id = p.id
+                LEFT JOIN {DBNAME}.product_invoice pi ON r.notice_number = pi.notice_number
+                AND pi.del_flag = '0'
+                LEFT JOIN {DBNAME}.customer c ON pi.customer_id = c.id
+        where r.del_flag = '0' and r.notice_number = #{noticeNumber}
+    </select>
+
 </mapper>

+ 21 - 14
zkqy-custom-business/src/main/resources/mapper/business/SaleOrderMapper.xml

@@ -37,10 +37,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="processKey"    column="process_key"    />
         <result property="earnestMoney"    column="earnest_money"    />
         <result property="deliveryDate"    column="delivery_date"    />
+        <result property="lotNumber" column="lot_number"/>
+
     </resultMap>
 
     <sql id="selectSaleOrderVo">
-        select id, sale_no, sale_custom_no, sale_date, sale_estimated_time, sale_lead_time, sale_products_no, sale_amounts, sale_amount_in_words, sale_pay_type, sale_order_estimated_time, sale_order_technology_no, salesman, sale_leader, finance, production, sale_approver, status, order_type, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key, process_key, earnest_money, delivery_date from {DBNAME}.sale_order
+        select id, sale_no, sale_custom_no, sale_date, sale_estimated_time, sale_lead_time, sale_products_no, sale_amounts, sale_amount_in_words, sale_pay_type, sale_order_estimated_time, sale_order_technology_no, salesman, sale_leader, finance, production, sale_approver, status, order_type, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key, process_key, earnest_money, delivery_date, lot_number from {DBNAME}.sale_order
     </sql>
 
     <select id="selectSaleOrderList" parameterType="com.zkqy.business.domain.SaleOrder" resultMap="SaleOrderResult">
@@ -79,7 +81,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
         
     <insert id="insertSaleOrder" parameterType="com.zkqy.business.domain.SaleOrder" useGeneratedKeys="true" keyProperty="id">
-        insert into sale_order
+        insert into {DBNAME}.sale_order
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="saleNo != null">sale_no,</if>
             <if test="saleCustomNo != null">sale_custom_no,</if>
@@ -103,15 +105,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createById != null">create_by_id,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
-            <if test="updateById != null">update_by_id,</if>
-            <if test="updateBy != null">update_by,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="delFlag != null">del_flag,</if>
             <if test="taskProcessKey != null">task_process_key,</if>
             <if test="taskNodeKey != null">task_node_key,</if>
             <if test="processKey != null">process_key,</if>
             <if test="earnestMoney != null">earnest_money,</if>
             <if test="deliveryDate != null">delivery_date,</if>
+            <if test="lotNumber != null">lot_number,</if>
+            del_flag
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="saleNo != null">#{saleNo},</if>
@@ -136,15 +136,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createById != null">#{createById},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
-            <if test="updateById != null">#{updateById},</if>
-            <if test="updateBy != null">#{updateBy},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="delFlag != null">#{delFlag},</if>
             <if test="taskProcessKey != null">#{taskProcessKey},</if>
             <if test="taskNodeKey != null">#{taskNodeKey},</if>
             <if test="processKey != null">#{processKey},</if>
             <if test="earnestMoney != null">#{earnestMoney},</if>
             <if test="deliveryDate != null">#{deliveryDate},</if>
+            <if test="lotNumber != null">#{lotNumber},</if>
+            '0'
          </trim>
     </insert>
 
@@ -171,17 +169,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="orderType != null">order_type = #{orderType},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="createById != null">create_by_id = #{createById},</if>
-            <if test="createBy != null">create_by = #{createBy},</if>
-            <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateById != null">update_by_id = #{updateById},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
-            <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
             <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
             <if test="processKey != null">process_key = #{processKey},</if>
             <if test="earnestMoney != null">earnest_money = #{earnestMoney},</if>
             <if test="deliveryDate != null">delivery_date = #{deliveryDate},</if>
+            <if test="lotNumber != null">lot_number = #{lotNumber},</if>
         </trim>
         where id = #{id}
     </update>
@@ -231,6 +227,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update {DBNAME}.sale_order
         <trim prefix="SET" suffixOverrides=",">
             <if test="lotNumber != null">lot_number = #{lotNumber},</if>
+            <if test="status != null">status = #{status},</if>
         </trim>
         where sale_no = #{saleNo}
     </update>
@@ -263,7 +260,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             so.production,
             so.sale_approver,
             so.status,
-            so.order_type
+            so.order_type,
+            so.delivery_date,
+            so.remark
         FROM
             {DBNAME}.sale_order so left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no
         where so.del_flag = '0' and c.del_flag = '0'
@@ -276,6 +275,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
         <if test="createById != null "> and so.create_by_id = #{createById}</if>
         <if test="orderType != null"> and so.order_type = #{orderType}</if>
+        <choose>
+            <when test="saleOrderTechnologyNo =='retailOrder'">
+                and so.sale_order_technology_no = 'retailOrder'
+            </when>
+            <otherwise>
+                and so.sale_order_technology_no != 'retailOrder'
+            </otherwise>
+        </choose>
         order by so.id desc
     </select>
 

+ 80 - 15
zkqy-custom-business/src/main/resources/mapper/business/SaleProductsMapper.xml

@@ -30,6 +30,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="productionLineNo"    column="production_line_no"    />
         <result property="sliceType"    column="slice_type"    />
         <result property="colourNumber"    column="colour_number"    />
+        <result property="taskName" column="task_name"/>
+        <result property="lotNumber" column="lot_number"/>
+        <result property="onBoardState" column="on_board_state"/>
     </resultMap>
 
     <resultMap type="com.zkqy.business.domain.vo.SaleProductsVo" id="SaleProductsResultAndCustomInfo">
@@ -65,12 +68,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectSaleProductsVo">
-        select id, sale_product_no, sale_order_no, product_no, product_name, product_number, product_weight, product_unit_price, product_amounts, product_notes, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key, process_key, status, production_line_no, slice_type, colour_number,lot_number from {DBNAME}.sale_products
+        select id, sale_product_no, sale_order_no, product_no, product_name, product_number, product_weight, product_unit_price, product_amounts, product_notes, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key, process_key, status, production_line_no, slice_type, colour_number,task_name,lot_number, on_board_state from {DBNAME}.sale_products
     </sql>
 
     <select id="selectSaleProductsList" parameterType="com.zkqy.business.domain.SaleProducts" resultMap="SaleProductsResult">
         <include refid="selectSaleProductsVo"/>
-        <where>  
+        where del_flag = '0'
             <if test="saleProductNo != null  and saleProductNo != ''"> and sale_product_no = #{saleProductNo}</if>
             <if test="saleOrderNo != null  and saleOrderNo != ''"> and sale_order_no = #{saleOrderNo}</if>
             <if test="productNo != null  and productNo != ''"> and product_no = #{productNo}</if>
@@ -90,7 +93,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sliceType != null  and sliceType != ''"> and slice_type = #{sliceType}</if>
             <if test="colourNumber != null  and colourNumber != ''"> and colour_number = #{colourNumber}</if>
             <if test="lotNumber != null  and lotNumber != ''"> and lot_number = #{lotNumber}</if>
-        </where>
     </select>
 
     <select id="selectSaleProductsListAndCustomInfo" parameterType="com.zkqy.business.domain.SaleProducts" resultMap="SaleProductsResultAndCustomInfo">
@@ -130,7 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
         
     <insert id="insertSaleProducts" parameterType="com.zkqy.business.domain.SaleProducts" useGeneratedKeys="true" keyProperty="id">
-        insert into sale_products
+        insert into {DBNAME}.sale_products
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="saleProductNo != null">sale_product_no,</if>
             <if test="saleOrderNo != null">sale_order_no,</if>
@@ -145,10 +147,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createById != null">create_by_id,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
-            <if test="updateById != null">update_by_id,</if>
-            <if test="updateBy != null">update_by,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="delFlag != null">del_flag,</if>
             <if test="taskProcessKey != null">task_process_key,</if>
             <if test="taskNodeKey != null">task_node_key,</if>
             <if test="processKey != null">process_key,</if>
@@ -156,6 +154,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productionLineNo != null">production_line_no,</if>
             <if test="sliceType != null">slice_type,</if>
             <if test="colourNumber != null">colour_number,</if>
+            <if test="taskName != null">task_name,</if>
+            <if test="lotNumber != null">lot_number,</if>
+            <if test="onBoardState != null">on_board_state,</if>
+            del_flag
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="saleProductNo != null">#{saleProductNo},</if>
@@ -171,10 +173,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createById != null">#{createById},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
-            <if test="updateById != null">#{updateById},</if>
-            <if test="updateBy != null">#{updateBy},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="delFlag != null">#{delFlag},</if>
             <if test="taskProcessKey != null">#{taskProcessKey},</if>
             <if test="taskNodeKey != null">#{taskNodeKey},</if>
             <if test="processKey != null">#{processKey},</if>
@@ -182,6 +180,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productionLineNo != null">#{productionLineNo},</if>
             <if test="sliceType != null">#{sliceType},</if>
             <if test="colourNumber != null">#{colourNumber},</if>
+            <if test="taskName != null">#{taskName},</if>
+            <if test="lotNumber != null">#{lotNumber},</if>
+            <if test="onBoardState != null">#{onBoardState},</if>
+            '0'
          </trim>
     </insert>
 
@@ -198,9 +200,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productAmounts != null">product_amounts = #{productAmounts},</if>
             <if test="productNotes != null">product_notes = #{productNotes},</if>
             <if test="remark != null">remark = #{remark},</if>
-            <if test="createById != null">create_by_id = #{createById},</if>
-            <if test="createBy != null">create_by = #{createBy},</if>
-            <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateById != null">update_by_id = #{updateById},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
@@ -212,6 +211,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productionLineNo != null">production_line_no = #{productionLineNo},</if>
             <if test="sliceType != null">slice_type = #{sliceType},</if>
             <if test="colourNumber != null">colour_number = #{colourNumber},</if>
+            <if test="taskName != null">task_name = #{taskName},</if>
+            <if test="lotNumber != null">lot_number = #{lotNumber},</if>
+            <if test="onBoardState != null">on_board_state = #{onBoardState},</if>
         </trim>
         where id = #{id}
     </update>
@@ -242,6 +244,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productionLineNo != null">production_line_no = #{productionLineNo},</if>
             <if test="sliceType != null">slice_type = #{sliceType},</if>
             <if test="colourNumber != null">colour_number = #{colourNumber},</if>
+            <if test="taskName != null">task_name = #{taskName},</if>
+            <if test="lotNumber != null">lot_number = #{lotNumber},</if>
             <if test="onBoardState != null">on_board_state = #{onBoardState},</if>
         </trim>
         where sale_order_no = #{saleOrderNo}
@@ -321,4 +325,65 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           AND p.del_flag = '0'
           and sp.sale_order_no = #{saleOrderNo}
     </select>
+
+    <insert id="batchInsertSaleProducts" parameterType="java.util.List">
+        INSERT INTO {DBNAME}.sale_products (
+        sale_product_no,
+        sale_order_no,
+        product_no,
+        product_name,
+        product_number,
+        product_weight,
+        product_unit_price,
+        product_amounts,
+        product_notes,
+        remark,
+        create_by_id,
+        create_by,
+        create_time,
+        task_process_key,
+        task_node_key,
+        process_key,
+        status,
+        production_line_no,
+        slice_type,
+        colour_number,
+        task_name,
+        lot_number,
+        on_board_state,
+        del_flag
+        ) VALUES
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.saleProductNo},
+            #{item.saleOrderNo},
+            #{item.productNo},
+            #{item.productName},
+            #{item.productNumber},
+            #{item.productWeight},
+            #{item.productUnitPrice},
+            #{item.productAmounts},
+            #{item.productNotes},
+            #{item.remark},
+            #{item.createById},
+            #{item.createBy},
+            #{item.createTime},
+            #{item.taskProcessKey},
+            #{item.taskNodeKey},
+            #{item.processKey},
+            #{item.status},
+            #{item.productionLineNo},
+            #{item.sliceType},
+            #{item.colourNumber},
+            #{item.taskName},
+            #{item.lotNumber},
+            #{item.onBoardState},
+            '0'
+            )
+        </foreach>
+    </insert>
+
+    <select id="selectSaleProductsIdsBySaleNo" parameterType="string" resultType="java.lang.Long">
+        select id from {DBNAME}.sale_products where sale_order_no = #{saleOrderNo} and del_flag = '0'
+    </select>
 </mapper>

+ 5 - 0
zkqy-system/src/main/java/com/zkqy/system/mapper/SysUserMapper.java

@@ -170,4 +170,9 @@ public interface SysUserMapper {
      * @return
      */
     int queryCountTenantUserName(@Param("tenantID") String tenantID, @Param("userName") String userName);
+
+    /**
+     * 根据角色key查询用户信息
+     */
+    List<SysUser> selectUserListByRoleKey(@Param("roleKey") String roleKey,@Param("tenantId") Long tenantId);
 }

+ 8 - 0
zkqy-system/src/main/java/com/zkqy/system/service/ISysUserService.java

@@ -225,4 +225,12 @@ public interface ISysUserService {
      * @return
      */
     boolean isExistUser(String userName);
+
+    /**
+     * 根据角色权限字符查询用户
+     * @param roleKey
+     * @param tenantId
+     * @return
+     */
+    List<SysUser> selectUserListByRoleKey(String roleKey,Long tenantId);
 }

+ 5 - 0
zkqy-system/src/main/java/com/zkqy/system/service/impl/SysUserServiceImpl.java

@@ -526,4 +526,9 @@ public class SysUserServiceImpl implements ISysUserService {
         return false;
     }
 
+    @Override
+    public List<SysUser> selectUserListByRoleKey(String roleKey, Long tenantId) {
+        return userMapper.selectUserListByRoleKey(roleKey, tenantId);
+    }
+
 }

+ 12 - 0
zkqy-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -341,4 +341,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           and del_flag = '0'
     </select>
 
+	<select id="selectUserListByRoleKey" resultMap="SysUserInfoResult">
+		SELECT
+			su.*
+		FROM
+			sys_user_role sur
+				JOIN sys_user su ON sur.user_id = su.user_id
+				JOIN sys_role sr ON sur.role_id = sr.role_id
+		WHERE
+			sr.role_key = #{roleKey}
+		  AND sr.tenant_id = #{tenantId}
+	</select>
+
 </mapper>