Browse Source

feat:订单分批出库相关逻辑修改

韩帛霖 10 months ago
parent
commit
10ca440a2d
39 changed files with 1794 additions and 951 deletions
  1. 1 2
      zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java
  2. 95 13
      zkqy-admin/src/main/java/com/zkqy/web/ljj.java
  3. 1 1
      zkqy-business/src/main/java/com/zkqy/business/controller/CommonBtnController.java
  4. 1 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductHandsetOutboundRecordController.java
  5. 10 3
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java
  6. 12 7
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductOutboundRecordController.java
  7. 16 2
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/SaleOrderController.java
  8. 261 191
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductHandsetOutboundRecord.java
  9. 52 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInvoice.java
  10. 271 187
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductOutboundRecord.java
  11. 3 3
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductOutboundRecordBatch.java
  12. 235 180
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductWarehousingRecord.java
  13. 40 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java
  14. 27 2
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductInvoiceVO.java
  15. 23 10
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleProductsVo.java
  16. 23 11
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductHandsetOutboundRecordMapper.java
  17. 32 14
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductOutboundRecordMapper.java
  18. 10 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java
  19. 9 3
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java
  20. 5 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/ISaleOrderService.java
  21. 0 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java
  22. 3 1
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductHandsetOutboundRecordServiceImpl.java
  23. 185 50
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java
  24. 8 6
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java
  25. 12 4
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleAccountsReceivableDetailServiceImpl.java
  26. 50 11
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleOrderServiceImpl.java
  27. 48 4
      zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListMapper.xml
  28. 87 28
      zkqy-custom-business/src/main/resources/mapper/business/ProductHandsetOutboundRecordMapper.xml
  29. 4 1
      zkqy-custom-business/src/main/resources/mapper/business/ProductInvoiceMapper.xml
  30. 5 1
      zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordBatchMapper.xml
  31. 132 83
      zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml
  32. 48 2
      zkqy-custom-business/src/main/resources/mapper/business/ProductWarehousingRecordMapper.xml
  33. 15 15
      zkqy-custom-business/src/main/resources/mapper/business/SaleOrderMapper.xml
  34. 2 0
      zkqy-custom-business/src/main/resources/mapper/business/SaleProductsMapper.xml
  35. 3 3
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/runbpm/PreExecutionToolClass.java
  36. 4 4
      zkqy-system/src/main/resources/mapper/system/SysMenuMapper.xml
  37. 40 44
      zkqy-ui/src/views/login.vue
  38. 18 59
      zkqy-ui/src/views/orderMange/index.vue
  39. 3 3
      zkqy-ui/src/views/system/engineeringManage/index.vue

+ 1 - 2
zkqy-admin/src/main/java/com/zkqy/web/controller/common/CommonFileController.java

@@ -246,8 +246,7 @@ public class CommonFileController {
     /**
      * 通用上传请求(多个)
      */
-//    @Log(title = "动态表格", businessType = BusinessType.IMPORT)
-    @Anonymous
+    @Log(title = "动态表格", businessType = BusinessType.IMPORT)
     @PostMapping("/uploads")
     public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception {
         try {

File diff suppressed because it is too large
+ 95 - 13
zkqy-admin/src/main/java/com/zkqy/web/ljj.java


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

@@ -373,7 +373,7 @@ public class CommonBtnController extends BaseController {
      * @param commonEntity
      * @return
      */
-    public AjaxResult initiatedBtn(CommonEntity commonEntity, DragTableBtn dragTableBtn) throws JsonProcessingException {
+    public AjaxResult initiatedBtn(CommonEntity commonEntity, DragTableBtn dragTableBtn) {
         //是否开启弹窗
         if (commonEntity.getBasicMap().get("visible").toString().equals("true")) {
 

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

@@ -108,6 +108,7 @@ public class ProductHandsetOutboundRecordController extends BaseController {
 
     /**
      * 手持机出库记录
+     * 手持机确认出库调用
      *
      * @param productCodeListVOList
      * @return

+ 10 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java

@@ -123,18 +123,25 @@ public class ProductInventoryController extends BaseController {
     @PostMapping("/productOutStorage")
     public AjaxResult productOutStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList) {
 
-        return  productInventoryService.productOutStorage(productCodeListVOList);
+        return productInventoryService.productOutStorage(productCodeListVOList);
     }
 
     /**
-     * 通知单出库接口
+     * 通知单出库接口-》手持机直接进行出库
      */
     @PostMapping("/noticeOutStorage")
     public AjaxResult noticeOutStorage(@RequestBody ProductInvoice productInvoice) {
-
         return productInventoryService.noticeOutStorage(productInvoice);
     }
 
+    /**
+     * 通知单出库接口 -》 确认出库
+     */
+    @PostMapping("/confirmNoticeOutStorage")
+    public AjaxResult confirmNoticeOutStorage(@RequestBody ProductInvoice productInvoice) {
+        return productInventoryService.confirmNoticeOutStorage(productInvoice);
+    }
+
     /**
      * 删除错误入库
      *

+ 12 - 7
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductOutboundRecordController.java

@@ -155,18 +155,23 @@ public class ProductOutboundRecordController extends BaseController {
      * 销售单/零售单出库明细记录
      */
     @GetMapping("/outboundDetails")
-    public TableDataInfo outboundDetails(String saleOrderNo, String productNo) {
+    public TableDataInfo outboundDetails(String saleOrderNo, String productNo, String batchNumber, String confirmOut) {
         List<ProductCodeListVO> productCodeListVOS = new ArrayList<>();
         ////根据销售单编号查询通知单编号
         ProductInvoice productInvoice = productInvoiceService.selectProductInvoiceBySaleOrderNo(saleOrderNo);
         if (productInvoice != null) {
             startPage();
-            productOutboundRecordService.outboundDetails(productInvoice.getNoticeNumber()).forEach(item -> {
-                if (item.getProductNo().equals(productNo)) {
-                    productCodeListVOS.add(item);
-                }
-            });
+            // 得到当前订单产品出库记录
+            productCodeListVOS = productOutboundRecordService.outboundDetails(productInvoice.getNoticeNumber(), productNo, batchNumber, confirmOut);
+
+//                    .forEach(item -> {
+//                if (item.getProductNo().equals(productNo)) {
+//                    productCodeListVOS.add(item);
+//                }
+//        });
+
         }
+
         return getDataTable(productCodeListVOS);
     }
 
@@ -180,7 +185,7 @@ public class ProductOutboundRecordController extends BaseController {
             Map<String, Object> stringObjectMap = saleOrderService.selectSaleOrderByNo(productInvoice.getSaleOrderNo());
             Map<String, Object> objectMap = (Map<String, Object>) stringObjectMap.get(saleOrderNo);
             startPage();
-            productCodeListVOS = productOutboundRecordService.outboundDetails(productInvoice.getNoticeNumber());
+            productCodeListVOS = productOutboundRecordService.outboundDetails(productInvoice.getNoticeNumber(), "", "", "");
             ExcelUtil<ProductCodeListVO> util = new ExcelUtil<ProductCodeListVO>(ProductCodeListVO.class);
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Map<Integer, String> map = new HashMap<>();

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

@@ -143,7 +143,6 @@ public class SaleOrderController extends BaseController {
     public TableDataInfo saleOrderList(SaleOrder saleOrder) {
         startPage();
         List<SaleOrderVO> list = saleOrderService.saleOrderList(saleOrder);
-        System.err.println(saleOrder);
         return getDataTable(list);
     }
 
@@ -267,13 +266,28 @@ public class SaleOrderController extends BaseController {
     }
 
     /**
-     * 打印出库单列表
+     * 得到当前订单出库所有批次
      */
     @GetMapping("/printOutsourceOrderList")
     public AjaxResult printOutsourceOrderList(@RequestParam String saleNo) {
         return AjaxResult.success(saleOrderService.printOutsourceOrderList(saleNo, ""));
     }
 
+    /**
+     * 完成前校验当前订单批次是否完全记录
+     */
+    @GetMapping("/checkOrder")
+    public boolean checkOrder(String saleNo, String batchNumber) {
+        List<SaleProductsVo> saleOrders = saleOrderService.printOutsourceOrderList(saleNo, batchNumber);
+        if (saleOrders.size() == 0) {
+            // 可以完成订单
+            return true;
+        } else {
+            // 需要把订单中的批次进行记录后完成
+            return false;
+        }
+    }
+
 
     /**
      * 记录批次-新增应收明细-》当前订单阶段性结束

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

@@ -1,6 +1,7 @@
 package com.zkqy.business.domain;
 
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -9,403 +10,472 @@ import com.zkqy.common.annotation.Excel;
 
 /**
  * 成品手持机出库记录对象 product_handset_outbound_record
- * 
+ *
  * @author zkqy
  * @date 2024-04-12
  */
-public class ProductHandsetOutboundRecord extends BaseEntity
-{
+public class ProductHandsetOutboundRecord extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 编号 */
+    /**
+     * 编号
+     */
     private Long id;
 
-    /** 码单号 */
+    /**
+     * 码单号
+     */
     @Excel(name = "码单号")
     private String qrCode;
 
-    /** 码单唯一标识 */
+    /**
+     * 码单唯一标识
+     */
     @Excel(name = "码单唯一标识")
     private String qrCodeId;
 
-    /** 批号 */
+    /**
+     * 批号
+     */
     @Excel(name = "批号")
     private String lotNum;
 
-    /** 货品编号 */
+    /**
+     * 货品编号
+     */
     @Excel(name = "货品编号")
     private Long productId;
 
-    /** 等级 */
+    /**
+     * 等级
+     */
     @Excel(name = "等级")
     private String levels;
 
-    /** 筒数 */
+    /**
+     * 筒数
+     */
     @Excel(name = "筒数")
     private Integer canisterNum;
 
-    /** 箱数 */
+    /**
+     * 箱数
+     */
     @Excel(name = "箱数")
     private Integer boxNum;
 
-    /** 净重 */
+    /**
+     * 净重
+     */
     @Excel(name = "净重")
     private Double suttle;
 
-    /** 生产日期 */
+    /**
+     * 生产日期
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date productionDate;
 
-    /** 机台 */
+    /**
+     * 机台
+     */
     @Excel(name = "机台")
     private Long machineTool;
 
-    /** 毛重 */
+    /**
+     * 毛重
+     */
     @Excel(name = "毛重")
     private Double grossWeight;
 
-    /** 包装 */
+    /**
+     * 包装
+     */
     @Excel(name = "包装")
     private String packaging;
 
-    /** 班次 */
+    /**
+     * 班次
+     */
     @Excel(name = "班次")
     private String workShifts;
 
-    /** 外贸号 */
+    /**
+     * 外贸号
+     */
     @Excel(name = "外贸号")
     private String foreignTradeNumber;
 
-    /** 筒重 */
+    /**
+     * 筒重
+     */
     @Excel(name = "筒重")
     private Double canisterWeight;
 
-    /** 箱重/车重 */
+    /**
+     * 箱重/车重
+     */
     @Excel(name = "箱重/车重")
     private Double boxWeight;
 
-    /** 管色 */
+    /**
+     * 管色
+     */
     @Excel(name = "管色")
     private String tubeColor;
 
-    /** 端口(usb端口号) */
+    /**
+     * 端口(usb端口号)
+     */
     @Excel(name = "端口", readConverterExp = "u=sb端口号")
     private String comPort;
 
-    /** 打印格式(打印二维码格式) */
+    /**
+     * 打印格式(打印二维码格式)
+     */
     @Excel(name = "打印格式", readConverterExp = "打=印二维码格式")
     private String printFormat;
 
-    /** 包装类型(暂未使用) */
+    /**
+     * 包装类型(暂未使用)
+     */
     @Excel(name = "包装类型", readConverterExp = "暂=未使用")
     private String packagingType;
 
-    /** 库位(暂未使用) */
+    /**
+     * 库位(暂未使用)
+     */
     @Excel(name = "库位", readConverterExp = "暂=未使用")
     private String storageLocation;
 
-    /** 区域编号(暂未使用) */
+    /**
+     * 区域编号(暂未使用)
+     */
     @Excel(name = "区域编号", readConverterExp = "暂=未使用")
     private Long warehouseregionId;
 
-    /** 删除标志(0:否;2:是) */
+    /**
+     * 删除标志(0:否;2:是)
+     */
     private String delFlag;
 
-    /** 创建者编号 */
+    /**
+     * 创建者编号
+     */
     private Long createById;
 
-    /** 更新者编号 */
+    /**
+     * 更新者编号
+     */
     private Long updateById;
 
-    /** 出库时间 */
+    /**
+     * 出库时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date warehousingTime;
 
-    /** 出库人 */
+    /**
+     * 出库人
+     */
     @Excel(name = "出库人")
     private String depositor;
 
-    /** 仓库编号 */
+    /**
+     * 仓库编号
+     */
     @Excel(name = "仓库编号")
     private Long warehouseId;
 
-    /** 通知单号 */
+    /**
+     * 通知单号
+     */
     @Excel(name = "通知单号")
     private String noticeNumber;
 
-    /** 产品色泽 */
+    /**
+     * 产品色泽
+     */
     private String productColour;
 
-    public void setId(Long id) 
-    {
+    /**
+     * 当前出库批次
+     */
+    private int batchNumber;
+
+    /**
+     * 当前是否历史批次出库
+     */
+    private boolean isHistoryBatch;
+
+    /**
+     * 父级ID
+     */
+    private Long parentId;
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public int getBatchNumber() {
+        return batchNumber;
+    }
+
+    public void setBatchNumber(int batchNumber) {
+        this.batchNumber = batchNumber;
+    }
+
+    public boolean isHistoryBatch() {
+        return isHistoryBatch;
+    }
+
+    public void setHistoryBatch(boolean historyBatch) {
+        isHistoryBatch = historyBatch;
+    }
+
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId() 
-    {
+    public Long getId() {
         return id;
     }
-    public void setQrCode(String qrCode) 
-    {
+
+    public void setQrCode(String qrCode) {
         this.qrCode = qrCode;
     }
 
-    public String getQrCode() 
-    {
+    public String getQrCode() {
         return qrCode;
     }
-    public void setQrCodeId(String qrCodeId) 
-    {
+
+    public void setQrCodeId(String qrCodeId) {
         this.qrCodeId = qrCodeId;
     }
 
-    public String getQrCodeId() 
-    {
+    public String getQrCodeId() {
         return qrCodeId;
     }
-    public void setLotNum(String lotNum) 
-    {
+
+    public void setLotNum(String lotNum) {
         this.lotNum = lotNum;
     }
 
-    public String getLotNum() 
-    {
+    public String getLotNum() {
         return lotNum;
     }
-    public void setProductId(Long productId) 
-    {
+
+    public void setProductId(Long productId) {
         this.productId = productId;
     }
 
-    public Long getProductId() 
-    {
+    public Long getProductId() {
         return productId;
     }
-    public void setLevels(String levels) 
-    {
+
+    public void setLevels(String levels) {
         this.levels = levels;
     }
 
-    public String getLevels() 
-    {
+    public String getLevels() {
         return levels;
     }
-    public void setCanisterNum(Integer canisterNum)
-    {
+
+    public void setCanisterNum(Integer canisterNum) {
         this.canisterNum = canisterNum;
     }
 
-    public Integer getCanisterNum()
-    {
+    public Integer getCanisterNum() {
         return canisterNum;
     }
-    public void setBoxNum(Integer boxNum)
-    {
+
+    public void setBoxNum(Integer boxNum) {
         this.boxNum = boxNum;
     }
 
-    public Integer getBoxNum()
-    {
+    public Integer getBoxNum() {
         return boxNum;
     }
-    public void setSuttle(Double suttle)
-    {
+
+    public void setSuttle(Double suttle) {
         this.suttle = suttle;
     }
 
-    public Double getSuttle()
-    {
+    public Double getSuttle() {
         return suttle;
     }
-    public void setProductionDate(Date productionDate) 
-    {
+
+    public void setProductionDate(Date productionDate) {
         this.productionDate = productionDate;
     }
 
-    public Date getProductionDate() 
-    {
+    public Date getProductionDate() {
         return productionDate;
     }
-    public void setMachineTool(Long machineTool)
-    {
+
+    public void setMachineTool(Long machineTool) {
         this.machineTool = machineTool;
     }
 
-    public Long getMachineTool()
-    {
+    public Long getMachineTool() {
         return machineTool;
     }
-    public void setGrossWeight(Double grossWeight)
-    {
+
+    public void setGrossWeight(Double grossWeight) {
         this.grossWeight = grossWeight;
     }
 
-    public Double getGrossWeight()
-    {
+    public Double getGrossWeight() {
         return grossWeight;
     }
-    public void setPackaging(String packaging) 
-    {
+
+    public void setPackaging(String packaging) {
         this.packaging = packaging;
     }
 
-    public String getPackaging() 
-    {
+    public String getPackaging() {
         return packaging;
     }
-    public void setWorkShifts(String workShifts) 
-    {
+
+    public void setWorkShifts(String workShifts) {
         this.workShifts = workShifts;
     }
 
-    public String getWorkShifts() 
-    {
+    public String getWorkShifts() {
         return workShifts;
     }
-    public void setForeignTradeNumber(String foreignTradeNumber) 
-    {
+
+    public void setForeignTradeNumber(String foreignTradeNumber) {
         this.foreignTradeNumber = foreignTradeNumber;
     }
 
-    public String getForeignTradeNumber() 
-    {
+    public String getForeignTradeNumber() {
         return foreignTradeNumber;
     }
-    public void setCanisterWeight(Double canisterWeight)
-    {
+
+    public void setCanisterWeight(Double canisterWeight) {
         this.canisterWeight = canisterWeight;
     }
 
-    public Double getCanisterWeight()
-    {
+    public Double getCanisterWeight() {
         return canisterWeight;
     }
-    public void setBoxWeight(Double boxWeight)
-    {
+
+    public void setBoxWeight(Double boxWeight) {
         this.boxWeight = boxWeight;
     }
 
-    public Double getBoxWeight()
-    {
+    public Double getBoxWeight() {
         return boxWeight;
     }
-    public void setTubeColor(String tubeColor) 
-    {
+
+    public void setTubeColor(String tubeColor) {
         this.tubeColor = tubeColor;
     }
 
-    public String getTubeColor() 
-    {
+    public String getTubeColor() {
         return tubeColor;
     }
-    public void setComPort(String comPort) 
-    {
+
+    public void setComPort(String comPort) {
         this.comPort = comPort;
     }
 
-    public String getComPort() 
-    {
+    public String getComPort() {
         return comPort;
     }
-    public void setPrintFormat(String printFormat) 
-    {
+
+    public void setPrintFormat(String printFormat) {
         this.printFormat = printFormat;
     }
 
-    public String getPrintFormat() 
-    {
+    public String getPrintFormat() {
         return printFormat;
     }
-    public void setPackagingType(String packagingType) 
-    {
+
+    public void setPackagingType(String packagingType) {
         this.packagingType = packagingType;
     }
 
-    public String getPackagingType() 
-    {
+    public String getPackagingType() {
         return packagingType;
     }
-    public void setStorageLocation(String storageLocation) 
-    {
+
+    public void setStorageLocation(String storageLocation) {
         this.storageLocation = storageLocation;
     }
 
-    public String getStorageLocation() 
-    {
+    public String getStorageLocation() {
         return storageLocation;
     }
-    public void setWarehouseregionId(Long warehouseregionId) 
-    {
+
+    public void setWarehouseregionId(Long warehouseregionId) {
         this.warehouseregionId = warehouseregionId;
     }
 
-    public Long getWarehouseregionId() 
-    {
+    public Long getWarehouseregionId() {
         return warehouseregionId;
     }
-    public void setDelFlag(String delFlag) 
-    {
+
+    public void setDelFlag(String delFlag) {
         this.delFlag = delFlag;
     }
 
-    public String getDelFlag() 
-    {
+    public String getDelFlag() {
         return delFlag;
     }
-    public void setCreateById(Long createById) 
-    {
+
+    public void setCreateById(Long createById) {
         this.createById = createById;
     }
 
-    public Long getCreateById() 
-    {
+    public Long getCreateById() {
         return createById;
     }
-    public void setUpdateById(Long updateById) 
-    {
+
+    public void setUpdateById(Long updateById) {
         this.updateById = updateById;
     }
 
-    public Long getUpdateById() 
-    {
+    public Long getUpdateById() {
         return updateById;
     }
-    public void setWarehousingTime(Date warehousingTime) 
-    {
+
+    public void setWarehousingTime(Date warehousingTime) {
         this.warehousingTime = warehousingTime;
     }
 
-    public Date getWarehousingTime() 
-    {
+    public Date getWarehousingTime() {
         return warehousingTime;
     }
-    public void setDepositor(String depositor) 
-    {
+
+    public void setDepositor(String depositor) {
         this.depositor = depositor;
     }
 
-    public String getDepositor() 
-    {
+    public String getDepositor() {
         return depositor;
     }
-    public void setWarehouseId(Long warehouseId) 
-    {
+
+    public void setWarehouseId(Long warehouseId) {
         this.warehouseId = warehouseId;
     }
 
-    public Long getWarehouseId() 
-    {
+    public Long getWarehouseId() {
         return warehouseId;
     }
-    public void setNoticeNumber(String noticeNumber) 
-    {
+
+    public void setNoticeNumber(String noticeNumber) {
         this.noticeNumber = noticeNumber;
     }
 
-    public String getNoticeNumber() 
-    {
+    public String getNoticeNumber() {
         return noticeNumber;
     }
 
@@ -419,42 +489,42 @@ public class ProductHandsetOutboundRecord extends BaseEntity
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("qrCode", getQrCode())
-            .append("qrCodeId", getQrCodeId())
-            .append("lotNum", getLotNum())
-            .append("productId", getProductId())
-            .append("levels", getLevels())
-            .append("canisterNum", getCanisterNum())
-            .append("boxNum", getBoxNum())
-            .append("suttle", getSuttle())
-            .append("productionDate", getProductionDate())
-            .append("machineTool", getMachineTool())
-            .append("grossWeight", getGrossWeight())
-            .append("packaging", getPackaging())
-            .append("workShifts", getWorkShifts())
-            .append("foreignTradeNumber", getForeignTradeNumber())
-            .append("canisterWeight", getCanisterWeight())
-            .append("boxWeight", getBoxWeight())
-            .append("tubeColor", getTubeColor())
-            .append("comPort", getComPort())
-            .append("printFormat", getPrintFormat())
-            .append("packagingType", getPackagingType())
-            .append("storageLocation", getStorageLocation())
-            .append("warehouseregionId", getWarehouseregionId())
-            .append("remark", getRemark())
-            .append("delFlag", getDelFlag())
-            .append("createBy", getCreateBy())
-            .append("createById", getCreateById())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateById", getUpdateById())
-            .append("updateTime", getUpdateTime())
-            .append("warehousingTime", getWarehousingTime())
-            .append("depositor", getDepositor())
-            .append("warehouseId", getWarehouseId())
-            .append("noticeNumber", getNoticeNumber())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("qrCode", getQrCode())
+                .append("qrCodeId", getQrCodeId())
+                .append("lotNum", getLotNum())
+                .append("productId", getProductId())
+                .append("levels", getLevels())
+                .append("canisterNum", getCanisterNum())
+                .append("boxNum", getBoxNum())
+                .append("suttle", getSuttle())
+                .append("productionDate", getProductionDate())
+                .append("machineTool", getMachineTool())
+                .append("grossWeight", getGrossWeight())
+                .append("packaging", getPackaging())
+                .append("workShifts", getWorkShifts())
+                .append("foreignTradeNumber", getForeignTradeNumber())
+                .append("canisterWeight", getCanisterWeight())
+                .append("boxWeight", getBoxWeight())
+                .append("tubeColor", getTubeColor())
+                .append("comPort", getComPort())
+                .append("printFormat", getPrintFormat())
+                .append("packagingType", getPackagingType())
+                .append("storageLocation", getStorageLocation())
+                .append("warehouseregionId", getWarehouseregionId())
+                .append("remark", getRemark())
+                .append("delFlag", getDelFlag())
+                .append("createBy", getCreateBy())
+                .append("createById", getCreateById())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateById", getUpdateById())
+                .append("updateTime", getUpdateTime())
+                .append("warehousingTime", getWarehousingTime())
+                .append("depositor", getDepositor())
+                .append("warehouseId", getWarehouseId())
+                .append("noticeNumber", getNoticeNumber())
+                .toString();
     }
 }

+ 52 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInvoice.java

@@ -190,6 +190,58 @@ public class ProductInvoice extends BaseEntity {
     // 老库存出库list
     private List<ProductInvoiceVO.SaleProductInfo> oldProductInvoiceList;
 
+    /**
+     * 当前出库批次
+     */
+    private int batchNumber;
+
+    /**
+     * 当前是否历史批次出库
+     */
+    private boolean isHistoryBatch;
+
+    /**
+     * 出库类型 all全部出库、batch根据批次进行出库
+     */
+    private String outType;
+
+    /**
+     * 是否修改订单状态
+     */
+    private boolean isOrderUpdate;
+
+    public boolean isOrderUpdate() {
+        return isOrderUpdate;
+    }
+
+    public void setOrderUpdate(boolean orderUpdate) {
+        isOrderUpdate = orderUpdate;
+    }
+
+    public String getOutType() {
+        return outType;
+    }
+
+    public void setOutType(String outType) {
+        this.outType = outType;
+    }
+
+    public int getBatchNumber() {
+        return batchNumber;
+    }
+
+    public void setBatchNumber(int batchNumber) {
+        this.batchNumber = batchNumber;
+    }
+
+    public boolean isHistoryBatch() {
+        return isHistoryBatch;
+    }
+
+    public void setHistoryBatch(boolean historyBatch) {
+        isHistoryBatch = historyBatch;
+    }
+
     public void setId(Long id) {
         this.id = id;
     }

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

@@ -1,6 +1,7 @@
 package com.zkqy.business.domain;
 
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -9,393 +10,476 @@ import com.zkqy.common.annotation.Excel;
 
 /**
  * 成品出库记录对象 product_outbound_record
- * 
+ *
  * @author zkqy
  * @date 2024-04-09
  */
-public class ProductOutboundRecord extends BaseEntity
-{
+public class ProductOutboundRecord extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 编号 */
+    /**
+     * 编号
+     */
     private Long id;
 
-    /** 码单号 */
+    /**
+     * 码单号
+     */
     @Excel(name = "码单号")
     private String qrCode;
 
-    /** 码单唯一标识 */
+    /**
+     * 码单唯一标识
+     */
     @Excel(name = "码单唯一标识")
     private String qrCodeId;
 
-    /** 批号 */
+    /**
+     * 批号
+     */
     @Excel(name = "批号")
     private String lotNum;
 
-    /** 货品编号 */
+    /**
+     * 货品编号
+     */
     @Excel(name = "货品编号")
     private Long productId;
 
-    /** 等级 */
+    /**
+     * 等级
+     */
     @Excel(name = "等级")
     private String levels;
 
-    /** 筒数 */
+    /**
+     * 筒数
+     */
     @Excel(name = "筒数")
     private Integer canisterNum;
 
-    /** 箱数 */
+    /**
+     * 箱数
+     */
     @Excel(name = "箱数")
     private Integer boxNum;
 
-    /** 净重 */
+    /**
+     * 净重
+     */
     @Excel(name = "净重")
     private Double suttle;
 
-    /** 生产日期 */
+    /**
+     * 生产日期
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date productionDate;
 
-    /** 机台 */
+    /**
+     * 机台
+     */
     @Excel(name = "机台")
     private Long machineTool;
 
-    /** 毛重 */
+    /**
+     * 毛重
+     */
     @Excel(name = "毛重")
     private Double grossWeight;
 
-    /** 包装 */
+    /**
+     * 包装
+     */
     @Excel(name = "包装")
     private String packaging;
 
-    /** 班次 */
+    /**
+     * 班次
+     */
     @Excel(name = "班次")
     private String workShifts;
 
-    /** 外贸号 */
+    /**
+     * 外贸号
+     */
     @Excel(name = "外贸号")
     private String foreignTradeNumber;
 
-    /** 筒重 */
+    /**
+     * 筒重
+     */
     @Excel(name = "筒重")
     private Double canisterWeight;
 
-    /** 箱重/车重 */
+    /**
+     * 箱重/车重
+     */
     @Excel(name = "箱重/车重")
     private Double boxWeight;
 
-    /** 管色 */
+    /**
+     * 管色
+     */
     @Excel(name = "管色")
     private String tubeColor;
 
-    /** 端口(usb端口号) */
+    /**
+     * 端口(usb端口号)
+     */
     @Excel(name = "端口", readConverterExp = "u=sb端口号")
     private String comPort;
 
-    /** 打印格式(打印二维码格式) */
+    /**
+     * 打印格式(打印二维码格式)
+     */
     @Excel(name = "打印格式", readConverterExp = "打=印二维码格式")
     private String printFormat;
 
-    /** 包装类型(暂未使用) */
+    /**
+     * 包装类型(暂未使用)
+     */
     @Excel(name = "包装类型", readConverterExp = "暂=未使用")
     private String packagingType;
 
-    /** 库位(暂未使用) */
+    /**
+     * 库位(暂未使用)
+     */
     @Excel(name = "库位", readConverterExp = "暂=未使用")
     private String storageLocation;
 
-    /** 区域编号(暂未使用) */
+    /**
+     * 区域编号(暂未使用)
+     */
     @Excel(name = "区域编号", readConverterExp = "暂=未使用")
     private Long warehouseregionId;
 
-    /** 删除标志(0:否;2:是) */
+    /**
+     * 删除标志(0:否;2:是)
+     */
     private String delFlag;
 
-    /** 创建者编号 */
+    /**
+     * 创建者编号
+     */
     private Long createById;
 
-    /** 更新者编号 */
+    /**
+     * 更新者编号
+     */
     private Long updateById;
 
-    /** 出库时间 */
+    /**
+     * 出库时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date warehousingTime;
 
-    /** 出库人 */
+    /**
+     * 出库人
+     */
     @Excel(name = "出库人")
     private String depositor;
 
-    /** 仓库编号 */
+    /**
+     * 仓库编号
+     */
     @Excel(name = "仓库编号")
     private Long warehouseId;
 
-    /** 通知单号 */
+    /**
+     * 通知单号
+     */
     private String noticeNumber;
 
-    /** 产品色泽 */
+    /**
+     * 产品色泽
+     */
     private String productColour;
+    /**
+     * 当前出库批次
+     */
+    private int batchNumber;
+
+    /**
+     * 当前是否历史批次出库
+     */
+    private boolean isHistoryBatch;
+
+    /**
+     * 是否出库(0手持机出库出现记录、1pc点击出库后)
+     */
+    private int confirmOut;
+
+    /**
+     * 出库类型 all全部出库、batch根据批次进行出库
+     */
+    private String outType;
 
-    public void setId(Long id) 
-    {
+    public String getOutType() {
+        return outType;
+    }
+
+    public void setOutType(String outType) {
+        this.outType = outType;
+    }
+
+    public int getConfirmOut() {
+        return confirmOut;
+    }
+
+    public void setConfirmOut(int confirmOut) {
+        this.confirmOut = confirmOut;
+    }
+
+    public int getBatchNumber() {
+        return batchNumber;
+    }
+
+    public void setBatchNumber(int batchNumber) {
+        this.batchNumber = batchNumber;
+    }
+
+    public boolean isHistoryBatch() {
+        return isHistoryBatch;
+    }
+
+    public void setHistoryBatch(boolean historyBatch) {
+        isHistoryBatch = historyBatch;
+    }
+
+
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId() 
-    {
+    public Long getId() {
         return id;
     }
-    public void setQrCode(String qrCode) 
-    {
+
+    public void setQrCode(String qrCode) {
         this.qrCode = qrCode;
     }
 
-    public String getQrCode() 
-    {
+    public String getQrCode() {
         return qrCode;
     }
-    public void setQrCodeId(String qrCodeId) 
-    {
+
+    public void setQrCodeId(String qrCodeId) {
         this.qrCodeId = qrCodeId;
     }
 
-    public String getQrCodeId() 
-    {
+    public String getQrCodeId() {
         return qrCodeId;
     }
-    public void setLotNum(String lotNum) 
-    {
+
+    public void setLotNum(String lotNum) {
         this.lotNum = lotNum;
     }
 
-    public String getLotNum() 
-    {
+    public String getLotNum() {
         return lotNum;
     }
-    public void setProductId(Long productId) 
-    {
+
+    public void setProductId(Long productId) {
         this.productId = productId;
     }
 
-    public Long getProductId() 
-    {
+    public Long getProductId() {
         return productId;
     }
-    public void setLevels(String levels) 
-    {
+
+    public void setLevels(String levels) {
         this.levels = levels;
     }
 
-    public String getLevels() 
-    {
+    public String getLevels() {
         return levels;
     }
-    public void setCanisterNum(Integer canisterNum) 
-    {
+
+    public void setCanisterNum(Integer canisterNum) {
         this.canisterNum = canisterNum;
     }
 
-    public Integer getCanisterNum() 
-    {
+    public Integer getCanisterNum() {
         return canisterNum;
     }
-    public void setBoxNum(Integer boxNum) 
-    {
+
+    public void setBoxNum(Integer boxNum) {
         this.boxNum = boxNum;
     }
 
-    public Integer getBoxNum() 
-    {
+    public Integer getBoxNum() {
         return boxNum;
     }
-    public void setSuttle(Double suttle) 
-    {
+
+    public void setSuttle(Double suttle) {
         this.suttle = suttle;
     }
 
-    public Double getSuttle() 
-    {
+    public Double getSuttle() {
         return suttle;
     }
-    public void setProductionDate(Date productionDate) 
-    {
+
+    public void setProductionDate(Date productionDate) {
         this.productionDate = productionDate;
     }
 
-    public Date getProductionDate() 
-    {
+    public Date getProductionDate() {
         return productionDate;
     }
-    public void setMachineTool(Long machineTool)
-    {
+
+    public void setMachineTool(Long machineTool) {
         this.machineTool = machineTool;
     }
 
-    public Long getMachineTool()
-    {
+    public Long getMachineTool() {
         return machineTool;
     }
-    public void setGrossWeight(Double grossWeight) 
-    {
+
+    public void setGrossWeight(Double grossWeight) {
         this.grossWeight = grossWeight;
     }
 
-    public Double getGrossWeight() 
-    {
+    public Double getGrossWeight() {
         return grossWeight;
     }
-    public void setPackaging(String packaging) 
-    {
+
+    public void setPackaging(String packaging) {
         this.packaging = packaging;
     }
 
-    public String getPackaging() 
-    {
+    public String getPackaging() {
         return packaging;
     }
-    public void setWorkShifts(String workShifts) 
-    {
+
+    public void setWorkShifts(String workShifts) {
         this.workShifts = workShifts;
     }
 
-    public String getWorkShifts() 
-    {
+    public String getWorkShifts() {
         return workShifts;
     }
-    public void setForeignTradeNumber(String foreignTradeNumber) 
-    {
+
+    public void setForeignTradeNumber(String foreignTradeNumber) {
         this.foreignTradeNumber = foreignTradeNumber;
     }
 
-    public String getForeignTradeNumber() 
-    {
+    public String getForeignTradeNumber() {
         return foreignTradeNumber;
     }
-    public void setCanisterWeight(Double canisterWeight) 
-    {
+
+    public void setCanisterWeight(Double canisterWeight) {
         this.canisterWeight = canisterWeight;
     }
 
-    public Double getCanisterWeight() 
-    {
+    public Double getCanisterWeight() {
         return canisterWeight;
     }
-    public void setBoxWeight(Double boxWeight) 
-    {
+
+    public void setBoxWeight(Double boxWeight) {
         this.boxWeight = boxWeight;
     }
 
-    public Double getBoxWeight() 
-    {
+    public Double getBoxWeight() {
         return boxWeight;
     }
-    public void setTubeColor(String tubeColor) 
-    {
+
+    public void setTubeColor(String tubeColor) {
         this.tubeColor = tubeColor;
     }
 
-    public String getTubeColor() 
-    {
+    public String getTubeColor() {
         return tubeColor;
     }
-    public void setComPort(String comPort) 
-    {
+
+    public void setComPort(String comPort) {
         this.comPort = comPort;
     }
 
-    public String getComPort() 
-    {
+    public String getComPort() {
         return comPort;
     }
-    public void setPrintFormat(String printFormat) 
-    {
+
+    public void setPrintFormat(String printFormat) {
         this.printFormat = printFormat;
     }
 
-    public String getPrintFormat() 
-    {
+    public String getPrintFormat() {
         return printFormat;
     }
-    public void setPackagingType(String packagingType) 
-    {
+
+    public void setPackagingType(String packagingType) {
         this.packagingType = packagingType;
     }
 
-    public String getPackagingType() 
-    {
+    public String getPackagingType() {
         return packagingType;
     }
-    public void setStorageLocation(String storageLocation) 
-    {
+
+    public void setStorageLocation(String storageLocation) {
         this.storageLocation = storageLocation;
     }
 
-    public String getStorageLocation() 
-    {
+    public String getStorageLocation() {
         return storageLocation;
     }
-    public void setWarehouseregionId(Long warehouseregionId) 
-    {
+
+    public void setWarehouseregionId(Long warehouseregionId) {
         this.warehouseregionId = warehouseregionId;
     }
 
-    public Long getWarehouseregionId() 
-    {
+    public Long getWarehouseregionId() {
         return warehouseregionId;
     }
-    public void setDelFlag(String delFlag) 
-    {
+
+    public void setDelFlag(String delFlag) {
         this.delFlag = delFlag;
     }
 
-    public String getDelFlag() 
-    {
+    public String getDelFlag() {
         return delFlag;
     }
-    public void setCreateById(Long createById) 
-    {
+
+    public void setCreateById(Long createById) {
         this.createById = createById;
     }
 
-    public Long getCreateById() 
-    {
+    public Long getCreateById() {
         return createById;
     }
-    public void setUpdateById(Long updateById) 
-    {
+
+    public void setUpdateById(Long updateById) {
         this.updateById = updateById;
     }
 
-    public Long getUpdateById() 
-    {
+    public Long getUpdateById() {
         return updateById;
     }
-    public void setWarehousingTime(Date warehousingTime) 
-    {
+
+    public void setWarehousingTime(Date warehousingTime) {
         this.warehousingTime = warehousingTime;
     }
 
-    public Date getWarehousingTime() 
-    {
+    public Date getWarehousingTime() {
         return warehousingTime;
     }
-    public void setDepositor(String depositor) 
-    {
+
+    public void setDepositor(String depositor) {
         this.depositor = depositor;
     }
 
-    public String getDepositor() 
-    {
+    public String getDepositor() {
         return depositor;
     }
-    public void setWarehouseId(Long warehouseId) 
-    {
+
+    public void setWarehouseId(Long warehouseId) {
         this.warehouseId = warehouseId;
     }
 
-    public Long getWarehouseId() 
-    {
+    public Long getWarehouseId() {
         return warehouseId;
     }
 
@@ -417,42 +501,42 @@ public class ProductOutboundRecord extends BaseEntity
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("qrCode", getQrCode())
-            .append("qrCodeId", getQrCodeId())
-            .append("lotNum", getLotNum())
-            .append("productId", getProductId())
-            .append("levels", getLevels())
-            .append("canisterNum", getCanisterNum())
-            .append("boxNum", getBoxNum())
-            .append("suttle", getSuttle())
-            .append("productionDate", getProductionDate())
-            .append("machineTool", getMachineTool())
-            .append("grossWeight", getGrossWeight())
-            .append("packaging", getPackaging())
-            .append("workShifts", getWorkShifts())
-            .append("foreignTradeNumber", getForeignTradeNumber())
-            .append("canisterWeight", getCanisterWeight())
-            .append("boxWeight", getBoxWeight())
-            .append("tubeColor", getTubeColor())
-            .append("comPort", getComPort())
-            .append("printFormat", getPrintFormat())
-            .append("packagingType", getPackagingType())
-            .append("storageLocation", getStorageLocation())
-            .append("warehouseregionId", getWarehouseregionId())
-            .append("remark", getRemark())
-            .append("delFlag", getDelFlag())
-            .append("createBy", getCreateBy())
-            .append("createById", getCreateById())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateById", getUpdateById())
-            .append("updateTime", getUpdateTime())
-            .append("warehousingTime", getWarehousingTime())
-            .append("depositor", getDepositor())
-            .append("warehouseId", getWarehouseId())
-            .append("noticeNumber", getNoticeNumber())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("qrCode", getQrCode())
+                .append("qrCodeId", getQrCodeId())
+                .append("lotNum", getLotNum())
+                .append("productId", getProductId())
+                .append("levels", getLevels())
+                .append("canisterNum", getCanisterNum())
+                .append("boxNum", getBoxNum())
+                .append("suttle", getSuttle())
+                .append("productionDate", getProductionDate())
+                .append("machineTool", getMachineTool())
+                .append("grossWeight", getGrossWeight())
+                .append("packaging", getPackaging())
+                .append("workShifts", getWorkShifts())
+                .append("foreignTradeNumber", getForeignTradeNumber())
+                .append("canisterWeight", getCanisterWeight())
+                .append("boxWeight", getBoxWeight())
+                .append("tubeColor", getTubeColor())
+                .append("comPort", getComPort())
+                .append("printFormat", getPrintFormat())
+                .append("packagingType", getPackagingType())
+                .append("storageLocation", getStorageLocation())
+                .append("warehouseregionId", getWarehouseregionId())
+                .append("remark", getRemark())
+                .append("delFlag", getDelFlag())
+                .append("createBy", getCreateBy())
+                .append("createById", getCreateById())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateById", getUpdateById())
+                .append("updateTime", getUpdateTime())
+                .append("warehousingTime", getWarehousingTime())
+                .append("depositor", getDepositor())
+                .append("warehouseId", getWarehouseId())
+                .append("noticeNumber", getNoticeNumber())
+                .toString();
     }
 }

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

@@ -62,13 +62,13 @@ public class ProductOutboundRecordBatch extends BaseEntity {
     /**
      * 出库单IDS
      */
-    private String outboundRecordIds;
+    private String[] outboundRecordIds;
 
-    public String getOutboundRecordIds() {
+    public String[] getOutboundRecordIds() {
         return outboundRecordIds;
     }
 
-    public void setOutboundRecordIds(String outboundRecordIds) {
+    public void setOutboundRecordIds(String[] outboundRecordIds) {
         this.outboundRecordIds = outboundRecordIds;
     }
 

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

@@ -1,6 +1,7 @@
 package com.zkqy.business.domain;
 
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -9,380 +10,434 @@ import com.zkqy.common.annotation.Excel;
 
 /**
  * 成品入库记录对象 product_warehousing_record
- * 
+ *
  * @author zkqy
  * @date 2024-04-09
  */
-public class ProductWarehousingRecord extends BaseEntity
-{
+public class ProductWarehousingRecord extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 编号 */
+    /**
+     * 编号
+     */
     private Long id;
 
-    /** 码单号 */
+    /**
+     * 码单号
+     */
     @Excel(name = "码单号")
     private String qrCode;
 
-    /** 码单唯一标识 */
+    /**
+     * 码单唯一标识
+     */
     @Excel(name = "码单唯一标识")
     private String qrCodeId;
 
-    /** 批号 */
+    /**
+     * 批号
+     */
     @Excel(name = "批号")
     private String lotNum;
 
-    /** 货品编号 */
+    /**
+     * 货品编号
+     */
     @Excel(name = "货品编号")
     private Long productId;
 
-    /** 等级 */
+    /**
+     * 等级
+     */
     @Excel(name = "等级")
     private String levels;
 
-    /** 筒数 */
+    /**
+     * 筒数
+     */
     @Excel(name = "筒数")
     private Integer canisterNum;
 
-    /** 箱数 */
+    /**
+     * 箱数
+     */
     @Excel(name = "箱数")
     private Integer boxNum;
 
-    /** 净重 */
+    /**
+     * 净重
+     */
     @Excel(name = "净重")
     private Double suttle;
 
-    /** 生产日期 */
+    /**
+     * 生产日期
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date productionDate;
 
-    /** 机台 */
+    /**
+     * 机台
+     */
     @Excel(name = "机台")
     private Long machineTool;
 
-    /** 毛重 */
+    /**
+     * 毛重
+     */
     @Excel(name = "毛重")
     private Double grossWeight;
 
-    /** 包装 */
+    /**
+     * 包装
+     */
     @Excel(name = "包装")
     private String packaging;
 
-    /** 班次 */
+    /**
+     * 班次
+     */
     @Excel(name = "班次")
     private String workShifts;
 
-    /** 外贸号 */
+    /**
+     * 外贸号
+     */
     @Excel(name = "外贸号")
     private String foreignTradeNumber;
 
-    /** 筒重 */
+    /**
+     * 筒重
+     */
     @Excel(name = "筒重")
     private Double canisterWeight;
 
-    /** 箱重/车重 */
+    /**
+     * 箱重/车重
+     */
     @Excel(name = "箱重/车重")
     private Double boxWeight;
 
-    /** 管色 */
+    /**
+     * 管色
+     */
     @Excel(name = "管色")
     private String tubeColor;
 
-    /** 端口(usb端口号) */
+    /**
+     * 端口(usb端口号)
+     */
     @Excel(name = "端口", readConverterExp = "u=sb端口号")
     private String comPort;
 
-    /** 打印格式(打印二维码格式) */
+    /**
+     * 打印格式(打印二维码格式)
+     */
     @Excel(name = "打印格式", readConverterExp = "打=印二维码格式")
     private String printFormat;
 
-    /** 包装类型(暂未使用) */
+    /**
+     * 包装类型(暂未使用)
+     */
     @Excel(name = "包装类型", readConverterExp = "暂=未使用")
     private String packagingType;
 
-    /** 库位(暂未使用) */
+    /**
+     * 库位(暂未使用)
+     */
     @Excel(name = "库位", readConverterExp = "暂=未使用")
     private String storageLocation;
 
-    /** 区域编号(暂未使用) */
+    /**
+     * 区域编号(暂未使用)
+     */
     @Excel(name = "区域编号", readConverterExp = "暂=未使用")
     private Long warehouseregionId;
 
-    /** 删除标志(0:否;2:是) */
+    /**
+     * 删除标志(0:否;2:是)
+     */
     private String delFlag;
 
-    /** 创建者编号 */
+    /**
+     * 创建者编号
+     */
     private Long createById;
 
-    /** 更新者编号 */
+    /**
+     * 更新者编号
+     */
     private Long updateById;
 
-    /** 入库时间 */
+    /**
+     * 入库时间
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "入库时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date warehousingTime;
 
-    /** 入库人 */
+    /**
+     * 入库人
+     */
     @Excel(name = "入库人")
     private String depositor;
 
-    /** 仓库编号 */
+    /**
+     * 仓库编号
+     */
     private Long warehouseId;
 
-    /** 产品色泽 */
+    /**
+     * 产品色泽
+     */
     private String productColour;
+    /**
+     * 产品规格
+     */
+    private String productSpecifications;
+    /**
+     * 产品名称
+     */
+    private String productName;
+
+    public String getProductSpecifications() {
+        return productSpecifications;
+    }
+
+    public void setProductSpecifications(String productSpecifications) {
+        this.productSpecifications = productSpecifications;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
 
-    public void setId(Long id) 
-    {
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId() 
-    {
+    public Long getId() {
         return id;
     }
-    public void setQrCode(String qrCode) 
-    {
+
+    public void setQrCode(String qrCode) {
         this.qrCode = qrCode;
     }
 
-    public String getQrCode() 
-    {
+    public String getQrCode() {
         return qrCode;
     }
-    public void setQrCodeId(String qrCodeId) 
-    {
+
+    public void setQrCodeId(String qrCodeId) {
         this.qrCodeId = qrCodeId;
     }
 
-    public String getQrCodeId() 
-    {
+    public String getQrCodeId() {
         return qrCodeId;
     }
-    public void setLotNum(String lotNum) 
-    {
+
+    public void setLotNum(String lotNum) {
         this.lotNum = lotNum;
     }
 
-    public String getLotNum() 
-    {
+    public String getLotNum() {
         return lotNum;
     }
-    public void setProductId(Long productId) 
-    {
+
+    public void setProductId(Long productId) {
         this.productId = productId;
     }
 
-    public Long getProductId() 
-    {
+    public Long getProductId() {
         return productId;
     }
-    public void setLevels(String levels) 
-    {
+
+    public void setLevels(String levels) {
         this.levels = levels;
     }
 
-    public String getLevels() 
-    {
+    public String getLevels() {
         return levels;
     }
-    public void setCanisterNum(Integer canisterNum)
-    {
+
+    public void setCanisterNum(Integer canisterNum) {
         this.canisterNum = canisterNum;
     }
 
-    public Integer getCanisterNum()
-    {
+    public Integer getCanisterNum() {
         return canisterNum;
     }
-    public void setBoxNum(Integer boxNum)
-    {
+
+    public void setBoxNum(Integer boxNum) {
         this.boxNum = boxNum;
     }
 
-    public Integer getBoxNum()
-    {
+    public Integer getBoxNum() {
         return boxNum;
     }
-    public void setSuttle(Double suttle)
-    {
+
+    public void setSuttle(Double suttle) {
         this.suttle = suttle;
     }
 
-    public Double getSuttle()
-    {
+    public Double getSuttle() {
         return suttle;
     }
-    public void setProductionDate(Date productionDate) 
-    {
+
+    public void setProductionDate(Date productionDate) {
         this.productionDate = productionDate;
     }
 
-    public Date getProductionDate() 
-    {
+    public Date getProductionDate() {
         return productionDate;
     }
-    public void setMachineTool(Long machineTool)
-    {
+
+    public void setMachineTool(Long machineTool) {
         this.machineTool = machineTool;
     }
 
-    public Long getMachineTool()
-    {
+    public Long getMachineTool() {
         return machineTool;
     }
-    public void setGrossWeight(Double grossWeight)
-    {
+
+    public void setGrossWeight(Double grossWeight) {
         this.grossWeight = grossWeight;
     }
 
-    public Double getGrossWeight()
-    {
+    public Double getGrossWeight() {
         return grossWeight;
     }
-    public void setPackaging(String packaging) 
-    {
+
+    public void setPackaging(String packaging) {
         this.packaging = packaging;
     }
 
-    public String getPackaging() 
-    {
+    public String getPackaging() {
         return packaging;
     }
-    public void setWorkShifts(String workShifts) 
-    {
+
+    public void setWorkShifts(String workShifts) {
         this.workShifts = workShifts;
     }
 
-    public String getWorkShifts() 
-    {
+    public String getWorkShifts() {
         return workShifts;
     }
-    public void setForeignTradeNumber(String foreignTradeNumber) 
-    {
+
+    public void setForeignTradeNumber(String foreignTradeNumber) {
         this.foreignTradeNumber = foreignTradeNumber;
     }
 
-    public String getForeignTradeNumber() 
-    {
+    public String getForeignTradeNumber() {
         return foreignTradeNumber;
     }
-    public void setCanisterWeight(Double canisterWeight)
-    {
+
+    public void setCanisterWeight(Double canisterWeight) {
         this.canisterWeight = canisterWeight;
     }
 
-    public Double getCanisterWeight()
-    {
+    public Double getCanisterWeight() {
         return canisterWeight;
     }
-    public void setBoxWeight(Double boxWeight)
-    {
+
+    public void setBoxWeight(Double boxWeight) {
         this.boxWeight = boxWeight;
     }
 
-    public Double getBoxWeight()
-    {
+    public Double getBoxWeight() {
         return boxWeight;
     }
-    public void setTubeColor(String tubeColor) 
-    {
+
+    public void setTubeColor(String tubeColor) {
         this.tubeColor = tubeColor;
     }
 
-    public String getTubeColor() 
-    {
+    public String getTubeColor() {
         return tubeColor;
     }
-    public void setComPort(String comPort) 
-    {
+
+    public void setComPort(String comPort) {
         this.comPort = comPort;
     }
 
-    public String getComPort() 
-    {
+    public String getComPort() {
         return comPort;
     }
-    public void setPrintFormat(String printFormat) 
-    {
+
+    public void setPrintFormat(String printFormat) {
         this.printFormat = printFormat;
     }
 
-    public String getPrintFormat() 
-    {
+    public String getPrintFormat() {
         return printFormat;
     }
-    public void setPackagingType(String packagingType) 
-    {
+
+    public void setPackagingType(String packagingType) {
         this.packagingType = packagingType;
     }
 
-    public String getPackagingType() 
-    {
+    public String getPackagingType() {
         return packagingType;
     }
-    public void setStorageLocation(String storageLocation) 
-    {
+
+    public void setStorageLocation(String storageLocation) {
         this.storageLocation = storageLocation;
     }
 
-    public String getStorageLocation() 
-    {
+    public String getStorageLocation() {
         return storageLocation;
     }
-    public void setWarehouseregionId(Long warehouseregionId) 
-    {
+
+    public void setWarehouseregionId(Long warehouseregionId) {
         this.warehouseregionId = warehouseregionId;
     }
 
-    public Long getWarehouseregionId() 
-    {
+    public Long getWarehouseregionId() {
         return warehouseregionId;
     }
-    public void setDelFlag(String delFlag) 
-    {
+
+    public void setDelFlag(String delFlag) {
         this.delFlag = delFlag;
     }
 
-    public String getDelFlag() 
-    {
+    public String getDelFlag() {
         return delFlag;
     }
-    public void setCreateById(Long createById) 
-    {
+
+    public void setCreateById(Long createById) {
         this.createById = createById;
     }
 
-    public Long getCreateById() 
-    {
+    public Long getCreateById() {
         return createById;
     }
-    public void setUpdateById(Long updateById) 
-    {
+
+    public void setUpdateById(Long updateById) {
         this.updateById = updateById;
     }
 
-    public Long getUpdateById() 
-    {
+    public Long getUpdateById() {
         return updateById;
     }
-    public void setWarehousingTime(Date warehousingTime) 
-    {
+
+    public void setWarehousingTime(Date warehousingTime) {
         this.warehousingTime = warehousingTime;
     }
 
-    public Date getWarehousingTime() 
-    {
+    public Date getWarehousingTime() {
         return warehousingTime;
     }
-    public void setDepositor(String depositor) 
-    {
+
+    public void setDepositor(String depositor) {
         this.depositor = depositor;
     }
 
-    public String getDepositor() 
-    {
+    public String getDepositor() {
         return depositor;
     }
 
@@ -404,40 +459,40 @@ public class ProductWarehousingRecord extends BaseEntity
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("qrCode", getQrCode())
-            .append("qrCodeId", getQrCodeId())
-            .append("lotNum", getLotNum())
-            .append("productId", getProductId())
-            .append("levels", getLevels())
-            .append("canisterNum", getCanisterNum())
-            .append("boxNum", getBoxNum())
-            .append("suttle", getSuttle())
-            .append("productionDate", getProductionDate())
-            .append("machineTool", getMachineTool())
-            .append("grossWeight", getGrossWeight())
-            .append("packaging", getPackaging())
-            .append("workShifts", getWorkShifts())
-            .append("foreignTradeNumber", getForeignTradeNumber())
-            .append("canisterWeight", getCanisterWeight())
-            .append("boxWeight", getBoxWeight())
-            .append("tubeColor", getTubeColor())
-            .append("comPort", getComPort())
-            .append("printFormat", getPrintFormat())
-            .append("packagingType", getPackagingType())
-            .append("storageLocation", getStorageLocation())
-            .append("warehouseregionId", getWarehouseregionId())
-            .append("remark", getRemark())
-            .append("delFlag", getDelFlag())
-            .append("createBy", getCreateBy())
-            .append("createById", getCreateById())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateById", getUpdateById())
-            .append("updateTime", getUpdateTime())
-            .append("warehousingTime", getWarehousingTime())
-            .append("depositor", getDepositor())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("qrCode", getQrCode())
+                .append("qrCodeId", getQrCodeId())
+                .append("lotNum", getLotNum())
+                .append("productId", getProductId())
+                .append("levels", getLevels())
+                .append("canisterNum", getCanisterNum())
+                .append("boxNum", getBoxNum())
+                .append("suttle", getSuttle())
+                .append("productionDate", getProductionDate())
+                .append("machineTool", getMachineTool())
+                .append("grossWeight", getGrossWeight())
+                .append("packaging", getPackaging())
+                .append("workShifts", getWorkShifts())
+                .append("foreignTradeNumber", getForeignTradeNumber())
+                .append("canisterWeight", getCanisterWeight())
+                .append("boxWeight", getBoxWeight())
+                .append("tubeColor", getTubeColor())
+                .append("comPort", getComPort())
+                .append("printFormat", getPrintFormat())
+                .append("packagingType", getPackagingType())
+                .append("storageLocation", getStorageLocation())
+                .append("warehouseregionId", getWarehouseregionId())
+                .append("remark", getRemark())
+                .append("delFlag", getDelFlag())
+                .append("createBy", getCreateBy())
+                .append("createById", getCreateById())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateById", getUpdateById())
+                .append("updateTime", getUpdateTime())
+                .append("warehousingTime", getWarehousingTime())
+                .append("depositor", getDepositor())
+                .toString();
     }
 }

+ 40 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java

@@ -289,6 +289,46 @@ public class ProductCodeListVO extends BaseEntity {
      */
     private int otherStates;
 
+    /**
+     * 当前出库批次
+     */
+    private int batchNumber;
+
+    /**
+     * 当前是否历史批次出库
+     */
+    private boolean isHistoryBatch;
+
+
+    /**
+     * 是否出库(0手持机出库出现记录、1pc点击出库后)
+     */
+    private int confirmOut;
+
+    public int getConfirmOut() {
+        return confirmOut;
+    }
+
+    public void setConfirmOut(int confirmOut) {
+        this.confirmOut = confirmOut;
+    }
+
+    public int getBatchNumber() {
+        return batchNumber;
+    }
+
+    public void setBatchNumber(int batchNumber) {
+        this.batchNumber = batchNumber;
+    }
+
+    public boolean isHistoryBatch() {
+        return isHistoryBatch;
+    }
+
+    public void setHistoryBatch(boolean historyBatch) {
+        isHistoryBatch = historyBatch;
+    }
+
     public String getParentCode() {
         return parentCode;
     }

+ 27 - 2
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductInvoiceVO.java

@@ -550,13 +550,38 @@ public class ProductInvoiceVO extends BaseEntity {
          * 老库存实发重量
          */
         private Double oldActualWeight;
-
-
         /**
          * 码单号
          */
         private String qrCode;
 
+        /**
+         * 当前出库批次
+         */
+        private int batchNumber;
+
+        /**
+         * 当前是否历史批次出库
+         */
+        private boolean isHistoryBatch;
+
+        public int getBatchNumber() {
+            return batchNumber;
+        }
+
+        public void setBatchNumber(int batchNumber) {
+            this.batchNumber = batchNumber;
+        }
+
+        public boolean isHistoryBatch() {
+            return isHistoryBatch;
+        }
+
+        public void setHistoryBatch(boolean historyBatch) {
+            isHistoryBatch = historyBatch;
+        }
+
+
         public String getProductCode() {
             return productCode;
         }

+ 23 - 10
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleProductsVo.java

@@ -93,18 +93,31 @@ public class SaleProductsVo extends SaleProducts {
     /**
      * 批次
      */
-    private String batchNumber;
+    private int batchNumber;
 
     /**
      * 批次状态 0正常 1 撤销登账
      */
-    private String batchState;
+    private int batchState;
 
     /**
      * 批次ID
      */
     private String batchId;
 
+//    /**
+//     * 是否出库(0手持机出库出现记录、1pc点击出库后)
+//     */
+//    private int confirmOut;
+//
+//    public int getConfirmOut() {
+//        return confirmOut;
+//    }
+//
+//    public void setConfirmOut(int confirmOut) {
+//        this.confirmOut = confirmOut;
+//    }
+
     public String getBatchId() {
         return batchId;
     }
@@ -113,20 +126,20 @@ public class SaleProductsVo extends SaleProducts {
         this.batchId = batchId;
     }
 
-    public String getBatchState() {
-        return batchState;
+    public int getBatchNumber() {
+        return batchNumber;
     }
 
-    public void setBatchState(String batchState) {
-        this.batchState = batchState;
+    public void setBatchNumber(int batchNumber) {
+        this.batchNumber = batchNumber;
     }
 
-    public String getBatchNumber() {
-        return batchNumber;
+    public int getBatchState() {
+        return batchState;
     }
 
-    public void setBatchNumber(String batchNumber) {
-        this.batchNumber = batchNumber;
+    public void setBatchState(int batchState) {
+        this.batchState = batchState;
     }
 
     @Override

+ 23 - 11
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductHandsetOutboundRecordMapper.java

@@ -1,20 +1,20 @@
 package com.zkqy.business.mapper;
 
 import java.util.List;
+
 import com.zkqy.business.domain.ProductHandsetOutboundRecord;
 import org.apache.ibatis.annotations.Param;
 
 /**
  * 成品手持机出库记录Mapper接口
- * 
+ *
  * @author zkqy
  * @date 2024-04-12
  */
-public interface ProductHandsetOutboundRecordMapper 
-{
+public interface ProductHandsetOutboundRecordMapper {
     /**
      * 查询成品手持机出库记录
-     * 
+     *
      * @param id 成品手持机出库记录主键
      * @return 成品手持机出库记录
      */
@@ -22,7 +22,7 @@ public interface ProductHandsetOutboundRecordMapper
 
     /**
      * 查询成品手持机出库记录列表
-     * 
+     *
      * @param productHandsetOutboundRecord 成品手持机出库记录
      * @return 成品手持机出库记录集合
      */
@@ -30,7 +30,7 @@ public interface ProductHandsetOutboundRecordMapper
 
     /**
      * 新增成品手持机出库记录
-     * 
+     *
      * @param productHandsetOutboundRecord 成品手持机出库记录
      * @return 结果
      */
@@ -38,7 +38,7 @@ public interface ProductHandsetOutboundRecordMapper
 
     /**
      * 修改成品手持机出库记录
-     * 
+     *
      * @param productHandsetOutboundRecord 成品手持机出库记录
      * @return 结果
      */
@@ -46,7 +46,7 @@ public interface ProductHandsetOutboundRecordMapper
 
     /**
      * 删除成品手持机出库记录
-     * 
+     *
      * @param id 成品手持机出库记录主键
      * @return 结果
      */
@@ -54,14 +54,24 @@ public interface ProductHandsetOutboundRecordMapper
 
     /**
      * 批量删除成品手持机出库记录
-     * 
+     *
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
     public int deleteProductHandsetOutboundRecordByIds(List<Long> ids);
 
+
+    /**
+     * 批量删除成品手持机出库记录
+     *
+     * @param qrCodeIds 需要删除的数据唯编号集合
+     * @return 结果
+     */
+    public int deleteProductHandsetOutboundRecordByQrCodeIds(List<String> qrCodeIds);
+
     /**
      * 查询是否已出库
+     *
      * @param qrCode
      * @param qrCodeId
      * @return
@@ -71,22 +81,24 @@ public interface ProductHandsetOutboundRecordMapper
     /**
      * 查询实发箱数、重量
      */
-    ProductHandsetOutboundRecord selectBoxNumSuttle(@Param("productId") Long productId,@Param("noticeNumber") String noticeNumber,@Param("qrCode") String qrCode);
+    ProductHandsetOutboundRecord selectBoxNumSuttle(@Param("productId") Long productId, @Param("noticeNumber") String noticeNumber, @Param("qrCode") String qrCode);
 
 
     /**
      * 查询实发箱数、重量库存
      */
-    ProductHandsetOutboundRecord selectBoxNumSuttle1(@Param("productId") Long productId,@Param("noticeNumber") String noticeNumber,@Param("productColour") String productColour);
+    ProductHandsetOutboundRecord selectBoxNumSuttle1(@Param("productId") Long productId, @Param("noticeNumber") String noticeNumber, @Param("productColour") String productColour);
 
     /**
      * 通过码单号删除手持出库库记录信息
+     *
      * @return
      */
     int deleteProductHandsetOutboundRecordByQrCode(String qrCoed);
 
     /**
      * 通过码单号修改手持机出库信息
+     *
      * @param productHandsetOutboundRecord
      */
     void updateProductHandsetOutboundRecordByRrCode(ProductHandsetOutboundRecord productHandsetOutboundRecord);

+ 32 - 14
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductOutboundRecordMapper.java

@@ -1,7 +1,6 @@
 package com.zkqy.business.mapper;
 
 import java.util.List;
-import java.util.Map;
 
 import com.zkqy.business.domain.ProductOutboundRecord;
 import com.zkqy.business.domain.vo.ProductCodeListVO;
@@ -9,15 +8,14 @@ import org.apache.ibatis.annotations.Param;
 
 /**
  * 成品出库记录Mapper接口
- * 
+ *
  * @author zkqy
  * @date 2024-04-09
  */
-public interface ProductOutboundRecordMapper 
-{
+public interface ProductOutboundRecordMapper {
     /**
      * 查询成品出库记录
-     * 
+     *
      * @param id 成品出库记录主键
      * @return 成品出库记录
      */
@@ -25,7 +23,7 @@ public interface ProductOutboundRecordMapper
 
     /**
      * 查询成品出库记录列表
-     * 
+     *
      * @param productOutboundRecord 成品出库记录
      * @return 成品出库记录集合
      */
@@ -33,7 +31,7 @@ public interface ProductOutboundRecordMapper
 
     /**
      * 新增成品出库记录
-     * 
+     *
      * @param productOutboundRecord 成品出库记录
      * @return 结果
      */
@@ -41,15 +39,32 @@ public interface ProductOutboundRecordMapper
 
     /**
      * 修改成品出库记录
-     * 
+     *
      * @param productOutboundRecord 成品出库记录
      * @return 结果
      */
     public int updateProductOutboundRecord(ProductOutboundRecord productOutboundRecord);
 
+    /**
+     * 修改成品出库记录-》确认出库
+     *
+     * @param productOutboundRecord 成品出库记录
+     * @return 结果
+     */
+    public int updateProductOutboundRecordByConfirm(ProductOutboundRecord productOutboundRecord);
+
+    /**
+     * 更新当前出库产品的批号
+     *
+     * @param batchNumber 批号
+     * @param ids         需要更新的数据条id
+     * @return
+     */
+    public int updateProductOutBatchNumberByIds(@Param("batchNumber") Long batchNumber, @Param("ids") List<Long> ids);
+
     /**
      * 删除成品出库记录
-     * 
+     *
      * @param id 成品出库记录主键
      * @return 结果
      */
@@ -57,7 +72,7 @@ public interface ProductOutboundRecordMapper
 
     /**
      * 批量删除成品出库记录
-     * 
+     *
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
@@ -65,6 +80,7 @@ public interface ProductOutboundRecordMapper
 
     /**
      * 查询出库记录日志列表
+     *
      * @param vo
      * @return
      */
@@ -72,6 +88,7 @@ public interface ProductOutboundRecordMapper
 
     /**
      * 查询是否已出库
+     *
      * @param
      * @return
      */
@@ -79,26 +96,27 @@ public interface ProductOutboundRecordMapper
 
     /**
      * 统计箱数和净重
+     *
      * @param productId
      * @param noticeNumber
      * @return
      */
-    ProductOutboundRecord statisticsBoxNumSuttle(@Param("productId") Long productId,@Param("noticeNumber") String noticeNumber,@Param("qrCode") String qrCode);
+    ProductOutboundRecord statisticsBoxNumSuttle(@Param("productId") Long productId, @Param("noticeNumber") String noticeNumber, @Param("qrCode") String qrCode);
 
 
     /**
      * 统计箱数和净重走库存
+     *
      * @param productId
      * @param noticeNumber
      * @return
      */
-    ProductOutboundRecord statisticsBoxNumSuttle1(@Param("productId") Long productId,@Param("noticeNumber") String noticeNumber,@Param("productColour") String productColour);
+    ProductOutboundRecord statisticsBoxNumSuttle1(@Param("productId") Long productId, @Param("noticeNumber") String noticeNumber, @Param("productColour") String productColour);
 
     /**
      * 根据通知单号查询出库明细
      */
-    List<ProductCodeListVO> selectOutboundDetails(String noticeNumber);
-
+    List<ProductCodeListVO> selectOutboundDetails(@Param("noticeNumber") String noticeNumber, @Param("productNo") String productNo, @Param("batchNumber") String batchNumber, @Param("confirmOut") String confirmOut);
 
     /**
      * 根据通知单号查询出库货品信息

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

@@ -74,13 +74,21 @@ public interface IProductInventoryService {
     AjaxResult productOutStorage(List<ProductCodeListVO> productCodeListVOList);
 
     /**
-     * 通知单出库
+     * 通知单出库(手持机出库时直接出库)
      *
      * @param productInvoice
      * @return
      */
     AjaxResult noticeOutStorage(ProductInvoice productInvoice);
 
+    /**
+     * 通知单出库——》确认出库
+     *
+     * @param productInvoice
+     * @return
+     */
+    AjaxResult confirmNoticeOutStorage(ProductInvoice productInvoice);
+
 
     public AjaxResult deleteInventorByProductCodeListVO(ProductCodeListVO productCodeListVO);
 
@@ -112,6 +120,7 @@ public interface IProductInventoryService {
 
     /**
      * 退库
+     *
      * @param productCodeListVO
      * @return
      */

+ 9 - 3
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductOutboundRecordService.java

@@ -70,11 +70,15 @@ public interface IProductOutboundRecordService {
     ProductOutboundRecord whetherStorage(String qrCode, String qrCodeId);
 
     /**
-     * 查询销售单/零售单成品出库记录
-     * @param saleOrderNo
+     * 查询销售单/ 零售单成品出库记录
+     *
+     * @param saleOrderNo – 销售单编号
+     * @param productNo   – 产品编号
+     * @param batchNumber - 批次号,当前批次为0
+     * @param
      * @return
      */
-    List<ProductCodeListVO> outboundDetails(String saleOrderNo);
+    List<ProductCodeListVO> outboundDetails(String saleOrderNo, String productNo, String batchNumber, String confirmOut);
 
     /**
      * 删除成品出库记录信息
@@ -86,6 +90,7 @@ public interface IProductOutboundRecordService {
 
     /**
      * 删除错误入库日志信息
+     *
      * @param id
      * @return
      */
@@ -93,6 +98,7 @@ public interface IProductOutboundRecordService {
 
     /**
      * 撤销出库明细记录
+     *
      * @param saleOrderNo
      * @return
      */

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

@@ -158,7 +158,11 @@ public interface ISaleOrderService {
     int submitOutsourceOrder(Long id);
 
     /**
-     * 打印出库单列表
+     * 得到当前订单/通知单的所有批次数据
+     *
+     * @param saleNo      订单编号
+     * @param batchNumber 批次号(未使用)
+     * @return
      */
     List<SaleProductsVo> printOutsourceOrderList(String saleNo, String batchNumber);
 

+ 0 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductCodeListServiceImpl.java

@@ -99,7 +99,6 @@ public class ProductCodeListServiceImpl implements IProductCodeListService {
         // 只要得到当前总码单中未出库的码单
         List<ProductCodeListVO> endProductCodeListVOList = new ArrayList<>();
         productCodeListVOList.forEach(item -> {
-
             //查看当前码单是否已入库
             ProductWarehousingRecord productWarehousingRecord = productWarehousingRecordService.selectProductWarehousingRecordWhetherExist(item.getQrCode(), item.getQrCodeId());
             //查看当前码单是否已出库

+ 3 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductHandsetOutboundRecordServiceImpl.java

@@ -124,13 +124,15 @@ public class ProductHandsetOutboundRecordServiceImpl implements IProductHandsetO
             productHandsetOutboundRecord.setCanisterNum(vo.getCanisterNum()); //筒数
             productHandsetOutboundRecord.setSuttle(vo.getSuttle());//净重
             productHandsetOutboundRecord.setGrossWeight(vo.getGrossWeight());//毛重
-//            productHandsetOutboundRecord.setDepositor(vo.getDepositor());//出库人
+            productHandsetOutboundRecord.setDepositor(vo.getDepositor()); // 出库人
 //            productHandsetOutboundRecord.setWarehousingTime(vo.getWarehousingTime());//出库时间
             productHandsetOutboundRecord.setNoticeNumber(vo.getNoticeNumber());//通知单号
             productHandsetOutboundRecord.setRemark(productCodeList.getRemark());
             productHandsetOutboundRecord.setCreateBy(SecurityUtils.getUsername());
             productHandsetOutboundRecord.setCreateTime(DateUtils.getNowDate());
             productHandsetOutboundRecord.setCreateById(SecurityUtils.getUserId());
+            productHandsetOutboundRecord.setBatchNumber(vo.getBatchNumber());
+            productHandsetOutboundRecord.setHistoryBatch(vo.isHistoryBatch());
             productHandsetOutboundRecordMapper.insertProductHandsetOutboundRecord(productHandsetOutboundRecord);
         }
     }

+ 185 - 50
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional;
  */
 @Service
 public class ProductInventoryServiceImpl implements IProductInventoryService {
+
     @Autowired
     private ProductInventoryMapper productInventoryMapper;
 
@@ -52,6 +53,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
     @Autowired
     private IOldProductOutboundRecordService oldProductOutboundRecordService;
 
+    @Autowired  // 出库批次
+    private ProductOutboundRecordBatchMapper productOutboundRecordBatchMapper;
+
     /**
      * 查询产品库存
      *
@@ -187,12 +191,14 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
     @Override
     @Transactional
     public AjaxResult productOutStorage(List<ProductCodeListVO> productCodeListVOList) {
+        // 成功出库货品id
+        List<Long> ids = new ArrayList<>();
+        // 返回信息
+        Map<String, Object> retMap = new HashMap<>();
 
         for (ProductCodeListVO vo : productCodeListVOList) {
-
             // 出库日志
             ProductCodeList productCodeList = productCodeListMapper.selectProductCodeListById(vo.getId());
-
             // 校验当前货品是否已出库,已出库跳过本次循环
             ProductOutboundRecord productOutboundRecord1 = productOutboundRecordMapper.selectProductOutboundRecordWhetherExist(vo.getQrCode(), vo.getQrCodeId());
             if (productOutboundRecord1 != null) {
@@ -211,7 +217,7 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
             productOutboundRecord.setCreateBy(SecurityUtils.getUsername());
             productOutboundRecord.setCreateTime(DateUtils.getNowDate());
             productOutboundRecord.setCreateById(SecurityUtils.getUserId());
-            productOutboundRecordMapper.insertProductOutboundRecord(productOutboundRecord);
+
             //出库   减 箱数、筒数、净重、毛重,
             //得到当前库存
             ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(productCodeList.getQrCode());
@@ -219,47 +225,60 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
             editProductInventory.setId(productInventory.getId());
             //筒数
             if (productInventory.getTotalCanisterNum() - vo.getCanisterNum() < 0) {
-                return AjaxResult.error("当前库存筒数不足");
+                retMap.put("msg", "当前库存筒数不足");
+                retMap.put("code", 500);
+                return AjaxResult.success(retMap);
             } else {
                 editProductInventory.setTotalCanisterNum(productInventory.getTotalCanisterNum() - vo.getCanisterNum());
             }
             //箱数
             if (productInventory.getTotalBoxNum() - 1 < 0) {
-                return AjaxResult.error("当前库存箱数不足");
+                retMap.put("msg", "当前库存箱数不足");
+                retMap.put("code", 500);
+                return AjaxResult.success(retMap);
             } else {
                 editProductInventory.setTotalBoxNum(productInventory.getTotalBoxNum() - 1);
             }
             //净重
             if (productInventory.getTotalSuttle() - vo.getSuttle() < 0) {
-                return AjaxResult.error("当前库存净重不足");
+                retMap.put("msg", "当前库存净重不足");
+                retMap.put("code", 500);
+                return AjaxResult.success(retMap);
             } else {
                 editProductInventory.setTotalSuttle(handlingWeight(productInventory.getTotalSuttle() - vo.getSuttle()));
             }
             //毛重
             if (productInventory.getTotalGrossWeight() - vo.getGrossWeight() < 0) {
-                return AjaxResult.error("当前库存毛重不足");
+                retMap.put("msg", "当前库存毛重不足");
+                retMap.put("code", 500);
+                return AjaxResult.success(retMap);
             } else {
                 editProductInventory.setTotalGrossWeight(handlingWeight(productInventory.getTotalGrossWeight() - vo.getGrossWeight()));
             }
+            ids.add(vo.getId());
+            // 等待校验通过在进行出库
+            productOutboundRecordMapper.insertProductOutboundRecord(productOutboundRecord);
+            // 减库存
             productInventoryMapper.updateProductInventory(editProductInventory);
-
         }
-        return AjaxResult.success();
+        retMap.put("code", 200);
+        retMap.put("ids", ids);
+        return AjaxResult.success(retMap);
     }
 
     @Override
     @Transactional
     public AjaxResult noticeOutStorage(ProductInvoice productInvoice) {
         //修改通知单、发货日期、发货仓库、调拨仓库、发货员、
-        ProductInvoice productInvoice1 = new ProductInvoice();
-        productInvoice1.setId(productInvoice.getId());
-        productInvoice1.setDeliveryDate(productInvoice.getDeliveryDate());
-        productInvoice1.setDeliveryWarehouse(productInvoice.getDeliveryWarehouse());
-        productInvoice1.setTransferWarehouse(productInvoice.getTransferWarehouse());
-        productInvoice1.setDeliveryClerk(productInvoice.getDeliveryClerk());
-//        productInvoice1.setStatus("2");
-        productInvoiceMapper.updateProductInvoice(productInvoice1);
 
+        //ProductInvoice productInvoice1 = new ProductInvoice();
+        //productInvoice1.setId(productInvoice.getId());
+        //productInvoice1.setDeliveryDate(productInvoice.getDeliveryDate());
+        //productInvoice1.setDeliveryWarehouse(productInvoice.getDeliveryWarehouse());
+        //productInvoice1.setTransferWarehouse(productInvoice.getTransferWarehouse());
+        //productInvoice1.setDeliveryClerk(productInvoice.getDeliveryClerk());
+        //// productInvoice1.setStatus("2");
+        //productInvoiceMapper.updateProductInvoice(productInvoice1);
 
         //根据通知单号查询手持机待出库货品
         ProductHandsetOutboundRecord productHandsetOutboundRecord = new ProductHandsetOutboundRecord();
@@ -272,70 +291,188 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
         productOutboundRecord1.setNoticeNumber(productInvoice.getNoticeNumber());
         List<ProductOutboundRecord> productOutboundRecords = productOutboundRecordMapper.selectProductOutboundRecordList(productOutboundRecord1);
 
+        // 所有需要出库的码单数据
+        List<ProductHandsetOutboundRecord> endProductHandsetOutboundRecords = new ArrayList<>();
+        // 进行记录的出库数据
+        List<ProductHandsetOutboundRecord> endList = new ArrayList<>();
 
-        // 循环插入出库记录
-        for (ProductHandsetOutboundRecord productHandsetOutboundRecord1 : productHandsetOutboundRecords) {
+        productHandsetOutboundRecords.forEach(item -> {
             //判断当前再次点击出库按钮的数据是否已出库
             boolean exists = productOutboundRecords.stream()
-                    .anyMatch(record -> record.getQrCodeId().equals(productHandsetOutboundRecord1.getQrCodeId()));
-            if (exists) {
-                continue;
+                    .anyMatch(record -> record.getQrCodeId().equals(item.getQrCodeId()));
+            if (!exists) {
+                endProductHandsetOutboundRecords.add(item);
             }
+        });
+        // 成功出库货品id
+        List<String> qrCodeIds = new ArrayList<>();
+        // 返回信息
+        Map<String, Object> retMap = new HashMap<>();
 
+        // 循环插入出库记录
+        for (ProductHandsetOutboundRecord item : endProductHandsetOutboundRecords) {
+            // 成品出库记录
             ProductOutboundRecord productOutboundRecord = new ProductOutboundRecord();
-            BeanUtils.copyProperties(productHandsetOutboundRecord1, productOutboundRecord);
-            productOutboundRecord.setWarehousingTime(productInvoice.getDeliveryDate());
-            productOutboundRecord.setDepositor(productInvoice.getDeliveryClerk());
-            productOutboundRecordMapper.insertProductOutboundRecord(productOutboundRecord);
+            BeanUtils.copyProperties(item, productOutboundRecord);
+//            productOutboundRecord.setWarehousingTime(productInvoice.getDeliveryDate());
+//            productOutboundRecord.setDepositor(productInvoice.getDeliveryClerk());
+            productOutboundRecord.setBatchNumber(item.getBatchNumber());
+            productOutboundRecord.setHistoryBatch(item.isHistoryBatch());
+            // 0 未确认出库
+            productOutboundRecord.setConfirmOut(0);
 
             //出库 减库存、箱数、筒数、净重、毛重
-            ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(productHandsetOutboundRecord1.getQrCode());
+            ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(item.getQrCode());
             ProductInventory editProductInventory = new ProductInventory();
             editProductInventory.setId(productInventory.getId());
             //筒数
-            if (productInventory.getTotalCanisterNum() - productHandsetOutboundRecord1.getCanisterNum() < 0) {
-                return AjaxResult.error("当前库存筒数不足");
+            if (productInventory.getTotalCanisterNum() - item.getCanisterNum() < 0) {
+                retMap.put("msg", "当前库存筒数不足");
+                retMap.put("code", 500);
+                break;
             } else {
-                editProductInventory.setTotalCanisterNum(productInventory.getTotalCanisterNum() - productHandsetOutboundRecord1.getCanisterNum());
+                editProductInventory.setTotalCanisterNum(productInventory.getTotalCanisterNum() - item.getCanisterNum());
             }
             //箱数
             if (productInventory.getTotalBoxNum() - 1 < 0) {
-                return AjaxResult.error("当前库存箱数不足");
+                retMap.put("msg", "当前库存箱数不足");
+                retMap.put("code", 500);
+                break;
             } else {
                 editProductInventory.setTotalBoxNum(productInventory.getTotalBoxNum() - 1);
             }
             //净重
-            if (productInventory.getTotalSuttle() - productHandsetOutboundRecord1.getSuttle() < 0) {
-                return AjaxResult.error("当前库存净重不足");
+            if (productInventory.getTotalSuttle() - item.getSuttle() < 0) {
+                retMap.put("msg", "当前库存净重不足");
+                retMap.put("code", 500);
+                break;
             } else {
-                editProductInventory.setTotalSuttle(handlingWeight(productInventory.getTotalSuttle() - productHandsetOutboundRecord1.getSuttle()));
+                editProductInventory.setTotalSuttle(handlingWeight(productInventory.getTotalSuttle() - item.getSuttle()));
             }
             //毛重
-            if (productInventory.getTotalGrossWeight() - productHandsetOutboundRecord1.getGrossWeight() < 0) {
-                return AjaxResult.error("当前库存毛重不足");
+            if (productInventory.getTotalGrossWeight() - item.getGrossWeight() < 0) {
+                retMap.put("msg", "当前库存毛重不足");
+                retMap.put("code", 500);
+                break;
             } else {
-                editProductInventory.setTotalGrossWeight(handlingWeight(productInventory.getTotalGrossWeight() - productHandsetOutboundRecord1.getGrossWeight()));
+                editProductInventory.setTotalGrossWeight(handlingWeight(productInventory.getTotalGrossWeight() - item.getGrossWeight()));
             }
+            // 新增真实出库的数据
+            endList.add(item);
+            qrCodeIds.add(item.getQrCodeId());
+            // 添加成品库存出库记录
+            productOutboundRecordMapper.insertProductOutboundRecord(productOutboundRecord);
+            // 得到当前历史批次出库数据条id
+            if (item.isHistoryBatch()) {
+                item.setParentId(productOutboundRecord.getId());
+            }
+            // 修改库存重量
             productInventoryMapper.updateProductInventory(editProductInventory);
         }
 
         //修改销售单状态为已完成
         //查询通知单详情获取
-        ProductInvoice productInvoice2 = productInvoiceMapper.selectProductInvoiceById(productInvoice.getId());
+//        ProductInvoice productInvoice2 = productInvoiceMapper.selectProductInvoiceById(productInvoice.getId());
         //判断当前订单是否为零售单
-        SaleOrder saleOrder1 = saleOrderMapper.selectSaleOrderBySaleNo(productInvoice2.getSaleOrderNo());
-        // 更新销售单状态-》
-        SaleOrder saleOrder = new SaleOrder();
-        saleOrder.setSaleNo(productInvoice2.getSaleOrderNo());
-        //已出库状态
-        saleOrder.setStatus("9");
-        saleOrderMapper.updateSaleOrderBySaleNo(saleOrder);
+//        SaleOrder saleOrder1 = saleOrderMapper.selectSaleOrderBySaleNo(productInvoice2.getSaleOrderNo());
+        // 更新销售单状态-》 在如果订单中存在撤销登账则不进行更新状态-》在重新登账时更新状态
+//        SaleOrder saleOrder = new SaleOrder();
+//        saleOrder.setSaleNo(productInvoice2.getSaleOrderNo());
+//        // 已出库状态
+//        saleOrder.setStatus("9");
+//        saleOrderMapper.updateSaleOrderBySaleNo(saleOrder);
+
+        if (endList.size() != 0) {
+            // 如果当前是根据历史批次进行出库 则直接新增批次记录数据
+            List<ProductOutboundRecordBatch> productOutboundRecordBatchList = new ArrayList<>();
+            endList.forEach(item -> {
+                // 当前码单为历史批次出库-》直接进行记录
+                if (item.isHistoryBatch()) {
+                    ProductOutboundRecordBatch productOutboundRecordBatch = new ProductOutboundRecordBatch();
+                    // 当前批次
+                    productOutboundRecordBatch.setBatchNumber(Long.valueOf(item.getBatchNumber()));
+                    // 销售单编号
+                    productOutboundRecordBatch.setSaleNo(productInvoice.getSaleOrderNo());
+                    // 出库单ID
+                    productOutboundRecordBatch.setOutboundRecordId(item.getParentId());
+                    // 通知单编号
+                    productOutboundRecordBatch.setNoticeNumber(productInvoice.getNoticeNumber());
+                    productOutboundRecordBatch.setCreateBy(SecurityUtils.getUsername());
+                    productOutboundRecordBatch.setCreateById(SecurityUtils.getUserId());
+                    productOutboundRecordBatch.setCreateTime(DateUtils.getNowDate());
+                    productOutboundRecordBatchList.add(productOutboundRecordBatch);
+                }
+            });
+            if (productOutboundRecordBatchList.size() != 0) {
+                //新增批次出库记录
+                productOutboundRecordBatchMapper.batchInsertProductOutboundRecordBatch(productOutboundRecordBatchList);
+            }
+            // 得到最终需要删除的码单唯一标识
+            List<String> deleteQrCodeIds = new ArrayList<>();
+            // 处理
+            endProductHandsetOutboundRecords.forEach(item -> {
+                if (qrCodeIds.indexOf(item.getQrCodeId()) == -1) {
+                    deleteQrCodeIds.add(item.getQrCodeId());
+                }
+            });
+            // 删除未出库产品码单
+            if (deleteQrCodeIds.size() != 0)
+                productHandsetOutboundRecordMapper.deleteProductHandsetOutboundRecordByQrCodeIds(deleteQrCodeIds);
+        } else {
+            if (endProductHandsetOutboundRecords.size() != 0) {
+                // 当前扫描的所有码单,库存不足无法进行出库操作
+                List<String> allDel = new ArrayList<>();
+                endProductHandsetOutboundRecords.forEach(item -> allDel.add(item.getQrCodeId()));
+                productHandsetOutboundRecordMapper.deleteProductHandsetOutboundRecordByQrCodeIds(allDel);
+            }
+            retMap.put("qrCodeIds", qrCodeIds);// 真实出库码单数据id
+            return AjaxResult.success(retMap);
+        }
+        //
+        if (retMap.get("code") == null) {
+            retMap.put("code", 200);
+        }
+        retMap.put("qrCodeIds", qrCodeIds);// 真实出库码单数据id
+        return AjaxResult.success(retMap);
+    }
 
+    @Override
+    @Transactional
+    public AjaxResult confirmNoticeOutStorage(ProductInvoice productInvoice) {
+        if (productInvoice.isOrderUpdate()) {
+            SaleOrder saleOrder = new SaleOrder();
+            saleOrder.setSaleNo(productInvoice.getSaleOrderNo());
+            // 已出库状态
+            saleOrder.setStatus("9");
+            saleOrderMapper.updateSaleOrderBySaleNo(saleOrder);
+        }
+        ProductInvoice productInvoice1 = new ProductInvoice();
+        productInvoice1.setId(productInvoice.getId());
+        productInvoice1.setDeliveryDate(productInvoice.getDeliveryDate());
+        productInvoice1.setDeliveryWarehouse(productInvoice.getDeliveryWarehouse());
+        productInvoice1.setTransferWarehouse(productInvoice.getTransferWarehouse());
+        productInvoice1.setDeliveryClerk(productInvoice.getDeliveryClerk());
+        // productInvoice1.setStatus("2");
+        // 修改产品发货单  -》product_invoice 补充出库信息 仓库、时间、出库人。。。
+        productInvoiceMapper.updateProductInvoice(productInvoice1);
+        /**
+         *  更新出库记录(出库时间、出库人)
+         *  条件:通知单号、批次号、ConfirmOut:0(未确认出库)sql
+         */
+        ProductOutboundRecord productOutboundRecord = new ProductOutboundRecord();
+        productOutboundRecord.setWarehousingTime(productInvoice.getDeliveryDate()); // 出库时间
+        productOutboundRecord.setDepositor(productInvoice.getDeliveryClerk());  // 出库人
+        productOutboundRecord.setConfirmOut(1);  // 确认出库
+        productOutboundRecord.setBatchNumber(productInvoice.getBatchNumber());
+        productOutboundRecord.setOutType(productInvoice.getOutType());
+        productOutboundRecord.setNoticeNumber(productInvoice.getNoticeNumber());
+        productOutboundRecordMapper.updateProductOutboundRecordByConfirm(productOutboundRecord);
         return AjaxResult.success();
     }
 
     @Override
     public AjaxResult deleteInventorByProductCodeListVO(ProductCodeListVO productCodeListVO) {
+
         //当前码单是否已出库
         ProductHandsetOutboundRecord productHandsetOutboundRecord = productHandsetOutboundRecordMapper
                 .selectWhetherExist(productCodeListVO.getQrCode(), productCodeListVO.getQrCodeId());
@@ -343,7 +480,6 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
             return AjaxResult.warn("当前货品已出库,不可删除!");
         }
 
-
         //出库   减 箱数、筒数、净重、毛重,
         //得到当前库存
         ProductInventory productInventory = productInventoryMapper.selectProductInventoryByQrCode(productCodeListVO.getQrCode());
@@ -383,7 +519,6 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
     @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()));
@@ -437,7 +572,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
     @Transactional
     @Override
     public AjaxResult returnStorage(List<ProductCodeListVO> productCodeListVOList) {
-
+        /**
+         * 如果当前产品已经登账
+         */
         for (ProductCodeListVO productCodeListVO : productCodeListVOList) {
             // 判断当前货品是否已出库,出库删除出库记录
             ProductOutboundRecord productOutboundRecord = productOutboundRecordMapper.selectProductOutboundRecordByQrCodeId(productCodeListVO.getQrCodeId());
@@ -501,11 +638,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
             product.setProductColour(item.getProductColor());
             product.setInventoryType("2");
             List<ProductInventory> productInventoryList = productInventoryMapper.oldselectProductInventoryByLotNumAndProductId(product);
-
             if (productInventoryList.size() == 0) {
                 return AjaxResult.error("库存不足!");
             }
-
             //返回变量
             String msg = "";
             boolean returnState = false;

+ 8 - 6
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductOutboundRecordServiceImpl.java

@@ -13,6 +13,7 @@ import com.zkqy.business.mapper.ProductInventoryMapper;
 import com.zkqy.business.mapper.ProductInvoiceMapper;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.SecurityUtils;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zkqy.business.mapper.ProductOutboundRecordMapper;
@@ -119,8 +120,9 @@ public class ProductOutboundRecordServiceImpl implements IProductOutboundRecordS
     }
 
     /**
-     *         //码单号-货品编号-批号-等级--产品色则
-     *         //筒数-箱数-净重-毛重-筒重-箱子重-管色
+     * //码单号-货品编号-批号-等级--产品色则
+     * //筒数-箱数-净重-毛重-筒重-箱子重-管色
+     *
      * @param id
      * @return
      */
@@ -153,7 +155,7 @@ public class ProductOutboundRecordServiceImpl implements IProductOutboundRecordS
         productInventoryMapper.updateProductInventory(editProductInventory);
 
         //手持机日志记录-逻辑删--QrCode是不唯一的
-        ProductHandsetOutboundRecord productHandsetOutboundRecord=new ProductHandsetOutboundRecord();
+        ProductHandsetOutboundRecord productHandsetOutboundRecord = new ProductHandsetOutboundRecord();
         productHandsetOutboundRecord.setQrCode(productOutboundRecord.getQrCode());
         productHandsetOutboundRecord.setQrCodeId(productOutboundRecord.getQrCodeId());
         productHandsetOutboundRecord.setProductId(productOutboundRecord.getProductId());
@@ -164,7 +166,7 @@ public class ProductOutboundRecordServiceImpl implements IProductOutboundRecordS
         productHandsetOutboundRecord.setDelFlag("2");
         productHandsetOutboundRecordMapper.updateProductHandsetOutboundRecordByRrCode(productHandsetOutboundRecord);
         //pc端日志记录-逻辑删
-        ProductOutboundRecord productOutboundRecordUpdate=new ProductOutboundRecord();
+        ProductOutboundRecord productOutboundRecordUpdate = new ProductOutboundRecord();
         productOutboundRecordUpdate.setId(id);
         productOutboundRecordUpdate.setDelFlag("2");
         productOutboundRecordMapper.updateProductOutboundRecord(productOutboundRecordUpdate);
@@ -177,7 +179,7 @@ public class ProductOutboundRecordServiceImpl implements IProductOutboundRecordS
     }
 
     @Override
-    public List<ProductCodeListVO> outboundDetails(String noticeNumber) {
-        return productOutboundRecordMapper.selectOutboundDetails(noticeNumber);
+    public List<ProductCodeListVO> outboundDetails(String noticeNumber, String productNo, String batchNumber, String confirmOut) {
+        return productOutboundRecordMapper.selectOutboundDetails(noticeNumber, productNo, batchNumber,confirmOut);
     }
 }

+ 12 - 4
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleAccountsReceivableDetailServiceImpl.java

@@ -434,17 +434,25 @@ public class SaleAccountsReceivableDetailServiceImpl implements ISaleAccountsRec
         saleOrderMapper.updateSaleOrderBySaleNo(saleOrder);
 
         // 得到当前批次的所有出库单
-        List<ProductCodeListVO> productCodeListVOList = productOutboundRecordMapper.selectOutboundDetails(saleAccountsReceivableDetail.getNoticeNumber());
+        List<ProductCodeListVO> productCodeListVOList = productOutboundRecordMapper.selectOutboundDetails(saleAccountsReceivableDetail.getNoticeNumber(), "", "", "");
 
         List<Long> outIds = new ArrayList<>();
+//        String[] ids = new String[]{};
         productCodeListVOList.forEach(item -> {
             if (item.getProductId().equals(saleAccountsReceivableDetail.getProductId())) {
                 outIds.add(item.getId());
             }
         });
-        String result = outIds.stream()
-                .map(String::valueOf)
-                .collect(Collectors.joining(","));
+
+        String[] result = new String[outIds.size()];
+        for (int i = 0; i < outIds.size(); i++) {
+            result[i] = outIds.get(i).toString();
+        }
+
+//                outIds.stream()
+//                .map(String::valueOf)
+//                .collect(Collectors.joining(","));
+
         // 修改当前批次状态
         ProductOutboundRecordBatch productOutboundRecordBatch = new ProductOutboundRecordBatch();
         productOutboundRecordBatch.setSaleNo(saleAccountsReceivableDetail.getSaleNo());

+ 50 - 11
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/SaleOrderServiceImpl.java

@@ -330,6 +330,38 @@ public class SaleOrderServiceImpl implements ISaleOrderService {
     @Override
     @Transactional
     public int updateOrder(SaleOrder saleOrder) {
+        // 完成前校验当前发货单是否存在未记录批次码单
+        // 如果当前订单没有批次/存在批次 都进行自动记录
+        // 如果当前订单不存在需要进行记录批次操作则直接进行完成
+
+        // 获取当前订单所有批次数据By订单编号
+//        List<SaleProductsVo> saleProductsVoList = this.printOutsourceOrderList(saleOrder.getSaleNo(), "");
+//
+//        List<SaleAccountsReceivableDetail> saleList = new ArrayList<>();
+//
+//        if (saleProductsVoList.size() != 0) {
+//            saleProductsVoList.forEach(item -> {
+//                // 表示当前批次并没有进行记录
+//                if (item.getBatchNumber() == 0) {
+//                    SaleAccountsReceivableDetail saleAccountsReceivableDetail = new SaleAccountsReceivableDetail();
+//                    BeanUtils.copyProperties(item, saleAccountsReceivableDetail);
+//                    saleList.add(saleAccountsReceivableDetail);
+//                }
+//            });
+//        }
+//
+//        if (true) return 1;
+//
+//        if (saleList.size() != 0) {
+//            // 记录批次
+//            this.recordBatch(saleList);
+//        }
+//
+//        List<SaleProductsVo> sales = this.printOutsourceOrderList(saleOrder.getSaleNo(), "0");
+//        if (sales.size() != 0) {
+//            ret
+//        }
+
         ProductInvoice productInvoice1 = new ProductInvoice();
         // 发货单/通知单-》完成状态
         productInvoice1.setStatus("2");
@@ -477,17 +509,20 @@ public class SaleOrderServiceImpl implements ISaleOrderService {
         //客户余额
         Double amount = customer.getAmount();
         for (SaleAccountsReceivableDetail item : saleAccountsReceivableDetailList) {
-            item.setCustomerId(customer.getId());
-            //加后余额
-            Double subtractAmount = amount + item.getAmountReceivable();
-            amount += item.getAmountReceivable();
-            item.setAmounts(handlingWeight(subtractAmount));
-            item.setBatchNumber(batchNumber);
-            item.setCreateBy(SecurityUtils.getUsername());
-            item.setCreateById(SecurityUtils.getUserId());
-            item.setCreateTime(DateUtils.getNowDate());
-            // 当前产品出库记录的唯一标识
-            item.setDataId(item.getId().toString());
+            // 如果当前批次为0,则新增一条应收帐明细
+            if (item.getBatchNumber() == null || item.getBatchNumber() == 0) {
+                item.setCustomerId(customer.getId());
+                //加后余额
+                Double subtractAmount = amount + item.getAmountReceivable();
+                amount += item.getAmountReceivable();
+                item.setAmounts(handlingWeight(subtractAmount));
+                item.setBatchNumber(batchNumber);
+                item.setCreateBy(SecurityUtils.getUsername());
+                item.setCreateById(SecurityUtils.getUserId());
+                item.setCreateTime(DateUtils.getNowDate());
+                // 当前产品出库记录的唯一标识
+                item.setDataId(batchNumber.toString());
+            }
         }
         if (saleAccountsReceivableDetailList.size() > 0) {
             // 新增应收帐明细
@@ -515,6 +550,10 @@ public class SaleOrderServiceImpl implements ISaleOrderService {
             //新增批次出库记录
             productOutboundRecordBatchMapper.batchInsertProductOutboundRecordBatch(productOutboundRecordBatchList);
         }
+        // 修改当前成品出库记录批次
+        productOutboundRecordMapper.updateProductOutBatchNumberByIds(batchNumber, list);
+
+
         //修改客户余额 审核通过修改客户余额
         // customer.setAmount(handlingWeight(amount));
         // return customerMapper.updateCustomer(customer);

+ 48 - 4
zkqy-custom-business/src/main/resources/mapper/business/ProductCodeListMapper.xml

@@ -256,10 +256,54 @@
 
     <select id="selectProductCodeListByParentCode" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO"
             resultMap="ProductCodeListResultVO">
-        <include refid="selectProductCodeListVo"/>
-        where parent_code = #{parentCode}
-        and del_flag = '0'
-        and other_states = 0
+        select product.id,
+               product.qr_code,
+               product.lot_num,
+               product.product_id,
+               product.levels,
+               product.canister_num,
+               product.box_num,
+               product.suttle,
+               product.production_date,
+               product.machine_tool,
+               product.gross_weight,
+               product.packaging,
+               product.work_shifts,
+               product.foreign_trade_number,
+               product.canister_weight,
+               product.box_weight,
+               product.tube_color,
+               product.com_port,
+               product.print_format,
+               product.packaging_type,
+               product.storage_location,
+               product.warehouseregion_id,
+               product.remark,
+               product.del_flag,
+               product.create_by,
+               product.create_by_id,
+               product.create_time,
+               product.update_by,
+               product.update_by_id,
+               product.update_time,
+               product.total_canister_num,
+               product.total_box_num,
+               product.total_suttle,
+               product.total_gross_weight,
+               product.product_colour,
+               product.withdrawing_flag,
+               product.sale_product_id,
+               product.parent_code,
+               product.other_states,
+               product.qr_code_id,
+               production.product_name,
+               production.product_specifications
+        from {DBNAME}.product_code_list AS product
+        left join {DBNAME}.production AS production
+        on product.product_id = production.id
+        where product.parent_code = #{parentCode}
+          and product.del_flag = '0'
+          and product.other_states = 0
     </select>
 
     <insert id="insertProductCodeList" parameterType="com.zkqy.business.domain.ProductCodeList" useGeneratedKeys="true"

+ 87 - 28
zkqy-custom-business/src/main/resources/mapper/business/ProductHandsetOutboundRecordMapper.xml

@@ -41,42 +41,86 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="warehouseId"    column="warehouse_id"    />
         <result property="noticeNumber"    column="notice_number"    />
         <result property="productColour" column="product_colour"/>
+        <result property="batchNumber" column="batch_number"/>
+        <result property="historyBatch" column="is_history_batch"/>
     </resultMap>
 
     <sql id="selectProductHandsetOutboundRecordVo">
-        select id, qr_code, qr_code_id, lot_num, product_id, levels, canister_num, box_num, suttle, production_date, machine_tool, gross_weight, packaging, work_shifts, foreign_trade_number, canister_weight, box_weight, tube_color, com_port, print_format, packaging_type, storage_location, warehouseregion_id, remark, del_flag, create_by, create_by_id, create_time, update_by, update_by_id, update_time, warehousing_time, depositor, warehouse_id, notice_number,product_colour from {DBNAME}.product_handset_outbound_record
+        select id
+             , qr_code
+             , qr_code_id
+             , lot_num
+             , product_id
+             , levels
+             , canister_num
+             , box_num
+             , suttle
+             , production_date
+             , machine_tool
+             , gross_weight
+             , packaging
+             , work_shifts
+             , foreign_trade_number
+             , canister_weight
+             , box_weight
+             , tube_color
+             , com_port
+             , print_format
+             , packaging_type
+             , storage_location
+             , warehouseregion_id
+             , remark
+             , del_flag
+             , create_by
+             , create_by_id
+             , create_time
+             , update_by
+             , update_by_id
+             , update_time
+             , warehousing_time
+             , depositor
+             , warehouse_id
+             , notice_number
+             , product_colour
+             , is_history_batch
+             , batch_number
+        from {DBNAME}.product_handset_outbound_record
     </sql>
 
     <select id="selectProductHandsetOutboundRecordList" parameterType="com.zkqy.business.domain.ProductHandsetOutboundRecord" resultMap="ProductHandsetOutboundRecordResult">
         <include refid="selectProductHandsetOutboundRecordVo"/>
         where del_flag = '0'
-            <if test="qrCode != null  and qrCode != ''"> and qr_code = #{qrCode}</if>
-            <if test="qrCodeId != null  and qrCodeId != ''"> and qr_code_id = #{qrCodeId}</if>
-            <if test="lotNum != null  and lotNum != ''"> and lot_num = #{lotNum}</if>
-            <if test="productId != null "> and product_id = #{productId}</if>
-            <if test="levels != null  and levels != ''"> and levels = #{levels}</if>
-            <if test="canisterNum != null "> and canister_num = #{canisterNum}</if>
-            <if test="boxNum != null "> and box_num = #{boxNum}</if>
-            <if test="suttle != null "> and suttle = #{suttle}</if>
-            <if test="productionDate != null "> and production_date = #{productionDate}</if>
-            <if test="machineTool != null  and machineTool != ''"> and machine_tool = #{machineTool}</if>
-            <if test="grossWeight != null "> and gross_weight = #{grossWeight}</if>
-            <if test="packaging != null  and packaging != ''"> and packaging = #{packaging}</if>
-            <if test="workShifts != null  and workShifts != ''"> and work_shifts = #{workShifts}</if>
-            <if test="foreignTradeNumber != null  and foreignTradeNumber != ''"> and foreign_trade_number = #{foreignTradeNumber}</if>
-            <if test="canisterWeight != null "> and canister_weight = #{canisterWeight}</if>
-            <if test="boxWeight != null "> and box_weight = #{boxWeight}</if>
-            <if test="tubeColor != null  and tubeColor != ''"> and tube_color = #{tubeColor}</if>
-            <if test="comPort != null  and comPort != ''"> and com_port = #{comPort}</if>
-            <if test="printFormat != null  and printFormat != ''"> and print_format = #{printFormat}</if>
-            <if test="packagingType != null  and packagingType != ''"> and packaging_type = #{packagingType}</if>
-            <if test="storageLocation != null  and storageLocation != ''"> and storage_location = #{storageLocation}</if>
-            <if test="warehouseregionId != null "> and warehouseregion_id = #{warehouseregionId}</if>
-            <if test="remark != null  and remark != ''"> and remark = #{remark}</if>
-            <if test="warehousingTime != null "> and warehousing_time = #{warehousingTime}</if>
-            <if test="depositor != null  and depositor != ''"> and depositor = #{depositor}</if>
-            <if test="warehouseId != null "> and warehouse_id = #{warehouseId}</if>
-            <if test="noticeNumber != null  and noticeNumber != ''"> and notice_number = #{noticeNumber}</if>
+        <if test="qrCode != null  and qrCode != ''">and qr_code = #{qrCode}</if>
+        <if test="qrCodeId != null  and qrCodeId != ''">and qr_code_id = #{qrCodeId}</if>
+        <if test="lotNum != null  and lotNum != ''">and lot_num = #{lotNum}</if>
+        <if test="productId != null ">and product_id = #{productId}</if>
+        <if test="levels != null  and levels != ''">and levels = #{levels}</if>
+        <if test="canisterNum != null ">and canister_num = #{canisterNum}</if>
+        <if test="boxNum != null ">and box_num = #{boxNum}</if>
+        <if test="suttle != null ">and suttle = #{suttle}</if>
+        <if test="productionDate != null ">and production_date = #{productionDate}</if>
+        <if test="machineTool != null  and machineTool != ''">and machine_tool = #{machineTool}</if>
+        <if test="grossWeight != null ">and gross_weight = #{grossWeight}</if>
+        <if test="packaging != null  and packaging != ''">and packaging = #{packaging}</if>
+        <if test="workShifts != null  and workShifts != ''">and work_shifts = #{workShifts}</if>
+        <if test="foreignTradeNumber != null  and foreignTradeNumber != ''">and foreign_trade_number =
+            #{foreignTradeNumber}
+        </if>
+        <if test="canisterWeight != null ">and canister_weight = #{canisterWeight}</if>
+        <if test="boxWeight != null ">and box_weight = #{boxWeight}</if>
+        <if test="tubeColor != null  and tubeColor != ''">and tube_color = #{tubeColor}</if>
+        <if test="comPort != null  and comPort != ''">and com_port = #{comPort}</if>
+        <if test="printFormat != null  and printFormat != ''">and print_format = #{printFormat}</if>
+        <if test="packagingType != null  and packagingType != ''">and packaging_type = #{packagingType}</if>
+        <if test="storageLocation != null  and storageLocation != ''">and storage_location = #{storageLocation}</if>
+        <if test="warehouseregionId != null ">and warehouseregion_id = #{warehouseregionId}</if>
+        <if test="remark != null  and remark != ''">and remark = #{remark}</if>
+        <if test="warehousingTime != null ">and warehousing_time = #{warehousingTime}</if>
+        <if test="depositor != null  and depositor != ''">and depositor = #{depositor}</if>
+        <if test="warehouseId != null ">and warehouse_id = #{warehouseId}</if>
+        <if test="noticeNumber != null  and noticeNumber != ''">and notice_number = #{noticeNumber}</if>
+        <if test="batchNumber != null">and batch_number = #{batchNumber}</if>
+        <if test="isHistoryBatch != null">and is_history_batch = #{isHistoryBatch}</if>
     </select>
     
     <select id="selectProductHandsetOutboundRecordById" parameterType="Long" resultMap="ProductHandsetOutboundRecordResult">
@@ -118,6 +162,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="warehouseId != null">warehouse_id,</if>
             <if test="noticeNumber != null">notice_number,</if>
             <if test="productColour != null">product_colour,</if>
+            <if test="batchNumber != null">batch_number,</if>
+            <if test="isHistoryBatch != null">is_history_batch,</if>
             del_flag
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -152,6 +198,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="warehouseId != null">#{warehouseId},</if>
             <if test="noticeNumber != null">#{noticeNumber},</if>
             <if test="productColour != null">#{productColour},</if>
+            <if test="batchNumber != null">#{batchNumber},</if>
+            <if test="isHistoryBatch != null">#{isHistoryBatch},</if>
             '0'
          </trim>
     </insert>
@@ -194,6 +242,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
             <if test="noticeNumber != null">notice_number = #{noticeNumber},</if>
             <if test="productColour != null">product_colour = #{productColour},</if>
+            <if test="batchNumber != null">batch_number = #{batchNumber},</if>
+            <if test="isHistoryBatch != null">is_history_batch = #{isHistoryBatch},</if>
         </trim>
         where id = #{id}
     </update>
@@ -235,6 +285,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
             <if test="noticeNumber != null">notice_number = #{noticeNumber},</if>
             <if test="productColour != null">product_colour = #{productColour},</if>
+            <if test="batchNumber != null">batch_number = #{batchNumber},</if>
+            <if test="isHistoryBatch != null">is_history_batch = #{isHistoryBatch},</if>
         </trim>
         where qr_code = #{qrCode} and qr_code_id = #{qrCodeId} and  product_id = #{productId} and  product_colour = #{productColour} and  levels = #{levels} and lot_num = #{lotNum} and notice_number = #{noticeNumber}
     </update>
@@ -249,6 +301,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <delete id="deleteProductHandsetOutboundRecordByQrCodeIds" parameterType="String">
+        delete from {DBNAME}.product_handset_outbound_record where qr_code_id in
+        <foreach item="qrCodeId" collection="list" open="(" separator="," close=")">
+            #{qrCodeId}
+        </foreach>
+    </delete>
     <delete id="deleteProductHandsetOutboundRecordByQrCode" parameterType="String">
         delete from product_handset_outbound_record where qr_code = #{qrCode}
     </delete>

+ 4 - 1
zkqy-custom-business/src/main/resources/mapper/business/ProductInvoiceMapper.xml

@@ -89,9 +89,12 @@
         WHERE
         pi.del_flag = '0'
         AND c.del_flag = '0'
-        <if test="noticeNumber != null  and noticeNumber != ''">and pi.notice_number = #{noticeNumber}</if>
+        <if test="noticeNumber != null  and noticeNumber != ''">and pi.notice_number LIKE concat('%',#{noticeNumber},
+            '%')
+        </if>
         <if test="noticeDate != null ">and pi.notice_date = #{noticeDate}</if>
         <if test="customerId != null ">and c.id = #{customerId}</if>
+        <if test="customerName != null ">and c.custom_name LIKE concat('%',#{customerName},'%')</if>
         <if test="status != null and status != ''">and pi.status = #{status}</if>
     </select>
 

+ 5 - 1
zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordBatchMapper.xml

@@ -41,7 +41,11 @@
             <if test="noticeNumber != null  and noticeNumber != ''">and notice_number = #{noticeNumber}</if>
             <if test="batchState != null  and batchState != ''">and batch_state = #{batchState}</if>
             <if test="outboundRecordId != null ">and outbound_record_id = #{outboundRecordId}</if>
-            <if test="outboundRecordIds != null ">and outbound_record_id in (#{outboundRecordIds})</if>
+            <if test="outboundRecordIds != null ">and outbound_record_id in
+                <foreach item="item" index="index" collection="outboundRecordIds" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
             <if test="batchNumber != null ">and batch_number = #{batchNumber}</if>
         </where>
     </select>

+ 132 - 83
zkqy-custom-business/src/main/resources/mapper/business/ProductOutboundRecordMapper.xml

@@ -41,6 +41,9 @@
         <result property="warehouseId" column="warehouse_id"/>
         <result property="noticeNumber" column="notice_number"/>
         <result property="productColour" column="product_colour"/>
+        <result property="batchNumber" column="batch_number"/>
+        <result property="historyBatch" column="is_history_batch"/>
+        <result property="confirmOut" column="confirm_out"/>
     </resultMap>
 
     <resultMap type="com.zkqy.business.domain.vo.ProductCodeListVO" id="ProductCodeListResultVO">
@@ -88,6 +91,9 @@
         <result property="customName" column="custom_name"/>
         <result property="productUnitPrice" column="product_unit_price"/>
         <result property="productNo" column="product_no"/>
+        <result property="batchNumber" column="batch_number"/>
+        <result property="historyBatch" column="is_history_batch"/>
+        <result property="confirmOut" column="confirm_out"/>
     </resultMap>
 
     <sql id="selectProductOutboundRecordVo">
@@ -126,7 +132,10 @@
                depositor,
                warehouse_id,
                notice_number,
-               product_colour
+               product_colour,
+               is_history_batch,
+               batch_number,
+               confirm_out
         from {DBNAME}.product_outbound_record
     </sql>
 
@@ -134,34 +143,36 @@
             resultMap="ProductOutboundRecordResult">
         <include refid="selectProductOutboundRecordVo"/>
         where del_flag = '0'
-            <if test="qrCode != null  and qrCode != ''">and qr_code = #{qrCode}</if>
-            <if test="qrCodeId != null  and qrCodeId != ''">and qr_code_id = #{qrCodeId}</if>
-            <if test="lotNum != null  and lotNum != ''">and lot_num = #{lotNum}</if>
-            <if test="productId != null ">and product_id = #{productId}</if>
-            <if test="levels != null  and levels != ''">and levels = #{levels}</if>
-            <if test="canisterNum != null ">and canister_num = #{canisterNum}</if>
-            <if test="boxNum != null ">and box_num = #{boxNum}</if>
-            <if test="suttle != null ">and suttle = #{suttle}</if>
-            <if test="productionDate != null ">and production_date = #{productionDate}</if>
-            <if test="machineTool != null  and machineTool != ''">and machine_tool = #{machineTool}</if>
-            <if test="grossWeight != null ">and gross_weight = #{grossWeight}</if>
-            <if test="packaging != null  and packaging != ''">and packaging = #{packaging}</if>
-            <if test="workShifts != null  and workShifts != ''">and work_shifts = #{workShifts}</if>
-            <if test="foreignTradeNumber != null  and foreignTradeNumber != ''">and foreign_trade_number =
-                #{foreignTradeNumber}
-            </if>
-            <if test="canisterWeight != null ">and canister_weight = #{canisterWeight}</if>
-            <if test="boxWeight != null ">and box_weight = #{boxWeight}</if>
-            <if test="tubeColor != null  and tubeColor != ''">and tube_color = #{tubeColor}</if>
-            <if test="comPort != null  and comPort != ''">and com_port = #{comPort}</if>
-            <if test="printFormat != null  and printFormat != ''">and print_format = #{printFormat}</if>
-            <if test="packagingType != null  and packagingType != ''">and packaging_type = #{packagingType}</if>
-            <if test="storageLocation != null  and storageLocation != ''">and storage_location = #{storageLocation}</if>
-            <if test="warehouseregionId != null ">and warehouseregion_id = #{warehouseregionId}</if>
-            <if test="warehousingTime != null ">and warehousing_time = #{warehousingTime}</if>
-            <if test="depositor != null  and depositor != ''">and depositor = #{depositor}</if>
-            <if test="warehouseId != null ">and warehouse_id = #{warehouseId}</if>
-            <if test="noticeNumber != null">and notice_number = #{noticeNumber}</if>
+        <if test="qrCode != null  and qrCode != ''">and qr_code = #{qrCode}</if>
+        <if test="qrCodeId != null  and qrCodeId != ''">and qr_code_id = #{qrCodeId}</if>
+        <if test="lotNum != null  and lotNum != ''">and lot_num = #{lotNum}</if>
+        <if test="productId != null ">and product_id = #{productId}</if>
+        <if test="levels != null  and levels != ''">and levels = #{levels}</if>
+        <if test="canisterNum != null ">and canister_num = #{canisterNum}</if>
+        <if test="boxNum != null ">and box_num = #{boxNum}</if>
+        <if test="suttle != null ">and suttle = #{suttle}</if>
+        <if test="productionDate != null ">and production_date = #{productionDate}</if>
+        <if test="machineTool != null  and machineTool != ''">and machine_tool = #{machineTool}</if>
+        <if test="grossWeight != null ">and gross_weight = #{grossWeight}</if>
+        <if test="packaging != null  and packaging != ''">and packaging = #{packaging}</if>
+        <if test="workShifts != null  and workShifts != ''">and work_shifts = #{workShifts}</if>
+        <if test="foreignTradeNumber != null  and foreignTradeNumber != ''">and foreign_trade_number =
+            #{foreignTradeNumber}
+        </if>
+        <if test="canisterWeight != null ">and canister_weight = #{canisterWeight}</if>
+        <if test="boxWeight != null ">and box_weight = #{boxWeight}</if>
+        <if test="tubeColor != null  and tubeColor != ''">and tube_color = #{tubeColor}</if>
+        <if test="comPort != null  and comPort != ''">and com_port = #{comPort}</if>
+        <if test="printFormat != null  and printFormat != ''">and print_format = #{printFormat}</if>
+        <if test="packagingType != null  and packagingType != ''">and packaging_type = #{packagingType}</if>
+        <if test="storageLocation != null  and storageLocation != ''">and storage_location = #{storageLocation}</if>
+        <if test="warehouseregionId != null ">and warehouseregion_id = #{warehouseregionId}</if>
+        <if test="warehousingTime != null ">and warehousing_time = #{warehousingTime}</if>
+        <if test="depositor != null  and depositor != ''">and depositor = #{depositor}</if>
+        <if test="warehouseId != null ">and warehouse_id = #{warehouseId}</if>
+        <if test="noticeNumber != null">and notice_number = #{noticeNumber}</if>
+        <!--        <if test="batchNumber != null">and batch_number = #{batchNumber}</if>-->
+        <!--        <if test="isHistoryBatch != null">and is_history_batch = #{isHistoryBatch}</if>-->
     </select>
 
     <select id="selectProductOutboundRecordById" parameterType="Long" resultMap="ProductOutboundRecordResult">
@@ -204,6 +215,9 @@
             <if test="warehouseId != null">warehouse_id,</if>
             <if test="noticeNumber != null">notice_number,</if>
             <if test="productColour != null">product_colour,</if>
+            <if test="batchNumber != null">batch_number,</if>
+            <if test="isHistoryBatch != null">is_history_batch,</if>
+            <if test="confirmOut != null">confirm_out,</if>
             del_flag
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -238,6 +252,9 @@
             <if test="warehouseId != null">#{warehouseId},</if>
             <if test="noticeNumber != null">#{noticeNumber},</if>
             <if test="productColour != null">#{productColour},</if>
+            <if test="batchNumber != null">#{batchNumber},</if>
+            <if test="isHistoryBatch != null">#{isHistoryBatch},</if>
+            <if test="confirmOut != null">#{confirmOut},</if>
             '0'
         </trim>
     </insert>
@@ -277,17 +294,42 @@
             <if test="warehouseId != null">warehouse_id = #{warehouseId},</if>
             <if test="noticeNumber != null">notice_number = #{noticeNumber},</if>
             <if test="productColour != null">product_colour = #{productColour},</if>
+            <if test="batchNumber != null">batch_number = #{batchNumber},</if>
+            <if test="isHistoryBatch != null">is_history_batch = #{isHistoryBatch},</if>
+            <if test="confirmOut != null">confirm_out = #{confirmOut},</if>
         </trim>
         where id = #{id}
     </update>
 
+    <update id="updateProductOutboundRecordByConfirm" parameterType="com.zkqy.business.domain.ProductOutboundRecord">
+        update {DBNAME}.product_outbound_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="warehousingTime != null">warehousing_time = #{warehousingTime},</if>
+            <if test="depositor != null">depositor = #{depositor},</if>
+            <if test="confirmOut != null">confirm_out = #{confirmOut},</if>
+        </trim>
+        where notice_number = #{noticeNumber} and confirm_out = 0
+        <if test="outType != null and  outType != 'all'">batch_number = #{batchNumber}</if>
+    </update>
+
+    <update id="updateProductOutBatchNumberByIds" parameterType="java.util.Map">
+        update {DBNAME}.product_outbound_record
+        set batch_number = #{batchNumber}
+        where id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+
     <delete id="deleteProductOutboundRecordById" parameterType="Long">
-        update {DBNAME}.product_outbound_record set del_flag = '2'
+        update {DBNAME}.product_outbound_record
+        set del_flag = '2'
         where id = #{id}
     </delete>
 
     <delete id="deleteProductOutboundRecordByIds" parameterType="String">
-        delete from  {DBNAME}.product_outbound_record where id in
+        delete from {DBNAME}.product_outbound_record where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
@@ -344,7 +386,7 @@
         from {DBNAME}.product_outbound_record
         where product_id = #{productId}
           and notice_number = #{noticeNumber}
-        and product_colour = #{productColour}
+          and product_colour = #{productColour}
     </select>
 
     <delete id="deleteProductOutboundRecordByUUID" parameterType="string">
@@ -353,57 +395,63 @@
         where qr_code_id = #{qrCodeId}
     </delete>
 
-    <select id="selectOutboundDetails" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO" resultMap="ProductCodeListResultVO">
-        SELECT
-            r.*,
-            p.product_no,
-            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 id="selectOutboundDetails" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO"
+            resultMap="ProductCodeListResultVO">
+        SELECT r.*,
+        p.product_no,
+        p.product_name,
+        p.product_specifications,
+        r.product_colour AS product_color,
+        c.custom_name,
+        r.confirm_out
+        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}
+        <if test="batchNumber != null  and batchNumber != ''">and r.batch_number = #{batchNumber}</if>
+        <if test="productNo != null  and productNo != ''">and p.product_no = #{productNo}</if>
+        <if test="confirmOut != null  and confirmOut != ''">and r.confirm_out = #{confirmOut}</if>
     </select>
 
-    <select id="selectOutboundProduct" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO" resultMap="ProductCodeListResultVO">
-        SELECT
-            r.*,
-            p.product_no,
-            p.product_name,
-            p.product_specifications,
-            r.product_colour AS product_color,
-            c.custom_name,
-            TRUNCATE ( SUM( r.suttle ), 2 ) AS total_suttle,
-            count(r.id) AS total_box_num,
-            sp.product_unit_price as product_unit_price
-        FROM
-            {DBNAME}.product_outbound_record r
-                LEFT JOIN {DBNAME}.production p ON r.product_id = p.id
+    <select id="selectOutboundProduct" parameterType="com.zkqy.business.domain.vo.ProductCodeListVO"
+            resultMap="ProductCodeListResultVO">
+        SELECT r.*,
+               p.product_no,
+               p.product_name,
+               p.product_specifications,
+               r.product_colour           AS product_color,
+               c.custom_name,
+               TRUNCATE(SUM(r.suttle), 2) AS total_suttle,
+               count(r.id)                AS total_box_num,
+               sp.product_unit_price      as product_unit_price
+        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
             left join {DBNAME}.sale_products sp on p.product_no = sp.product_no and pi.sale_order_no = sp.sale_order_no and sp.del_flag = '0'
         where r.del_flag = '0' and r.notice_number = #{noticeNumber}
-        group by r.product_id,r.product_colour,r.levels,r.lot_num
+        group by r.product_id, r.product_colour, r.levels, r.lot_num
     </select>
 
     <select id="selectOutboundRecordNo" resultType="long">
-        SELECT
-            por.id
-        FROM
-            {DBNAME}.product_outbound_record por
-                left join {DBNAME}.production p on p.id = por.product_id
-                LEFT JOIN {DBNAME}.product_invoice pi ON por.notice_number = pi.notice_number
+        SELECT por.id
+        FROM {DBNAME}.product_outbound_record por
+                left join {DBNAME}.production p
+        on p.id = por.product_id
+            LEFT JOIN {DBNAME}.product_invoice pi ON por.notice_number = pi.notice_number
         WHERE
             por.del_flag = '0'
+          and por.batch_number = 0 -- 只记录批次号为0的出库记录 0表示未记录批次
           AND pi.notice_number = #{noticeNumber}
           and por.id not in
-              (select outbound_record_id from {DBNAME}.product_outbound_record_batch where del_flag = '0' and notice_number = #{noticeNumber})
+            (select outbound_record_id from {DBNAME}.product_outbound_record_batch where del_flag = '0'
+          and notice_number = #{noticeNumber})
     </select>
 
     <select id="selectProductOutboundRecordByQrCodeId" resultMap="ProductOutboundRecordResult">
@@ -411,7 +459,7 @@
         where qr_code_id = #{qrCodeId} and del_flag = '0'
     </select>
 
-    <select id="selectProductOutboundRecordListByIds" resultMap="ProductOutboundRecordResult" >
+    <select id="selectProductOutboundRecordListByIds" resultMap="ProductOutboundRecordResult">
         <include refid="selectProductOutboundRecordVo"/>
         where id in
         <foreach collection="list" item="id" open="(" separator="," close=")">
@@ -419,23 +467,24 @@
         </foreach>
     </select>
 
-    <select id="selectRevocationOutboundDetails" 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
+    <select id="selectRevocationOutboundDetails" 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.id not in (select outbound_record_id from {DBNAME}.product_outbound_record_batch where del_flag = '0' and notice_number = #{noticeNumber} )
-            and r.notice_number = #{noticeNumber}
+          and r.id not in (select outbound_record_id from {DBNAME}.product_outbound_record_batch where del_flag = '0'
+          and notice_number = #{noticeNumber} )
+          and r.notice_number = #{noticeNumber}
     </select>
-<!--    <select id="selectOutboundDetailsbyNoticeNumber"></select>-->
+    <!--    <select id="selectOutboundDetailsbyNoticeNumber"></select>-->
 
 </mapper>

+ 48 - 2
zkqy-custom-business/src/main/resources/mapper/business/ProductWarehousingRecordMapper.xml

@@ -40,6 +40,10 @@
         <result property="depositor" column="depositor"/>
         <result property="warehouseId" column="warehouse_id"/>
         <result property="productColour" column="product_colour"/>
+
+        <result property="productSpecifications" column="product_specifications"/>
+        <result property="productName" column="product_name"/>
+
     </resultMap>
 
     <resultMap type="com.zkqy.business.domain.vo.ProductCodeListVO" id="ProductCodeListResultVO">
@@ -315,8 +319,50 @@
     </select>
 
     <select id="selectProductWarehousingRecordWhetherExist" resultMap="ProductWarehousingRecordResult">
-        <include refid="selectProductWarehousingRecordVo"/>
-        where del_flag = '0' and qr_code = #{qrCode} and qr_code_id = #{qrCodeId}
+
+        select record.id,
+               record.qr_code,
+               record.qr_code_id,
+               record.lot_num,
+               record.product_id,
+               record.levels,
+               record.canister_num,
+               record.box_num,
+               record.suttle,
+               record.production_date,
+               record.machine_tool,
+               record.gross_weight,
+               record.packaging,
+               record.work_shifts,
+               record.foreign_trade_number,
+               record.canister_weight,
+               record.box_weight,
+               record.tube_color,
+               record.com_port,
+               record.print_format,
+               record.packaging_type,
+               record.storage_location,
+               record.warehouseregion_id,
+               record.remark,
+               record.del_flag,
+               record.create_by,
+               record.create_by_id,
+               record.create_time,
+               record.update_by,
+               record.update_by_id,
+               record.update_time,
+               record.warehousing_time,
+               record.depositor,
+               record.warehouse_id,
+               record.product_colour,
+               p.product_name,
+               p.product_specifications
+        from {DBNAME}.product_warehousing_record AS record
+        left join {DBNAME}.production AS p
+        ON record.product_id = p.id
+        where record.del_flag = '0'
+          and record.qr_code = #{qrCode}
+          and record.qr_code_id = #{qrCodeId}
     </select>
 
     <delete id="deleteProductWarehousingRecordByUUID" parameterType="string">

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

@@ -406,20 +406,20 @@
     <select id="printOutsourceOrderList" resultType="com.zkqy.business.domain.vo.SaleProductsVo">
         select a.*,
                b.productUnitPrice -- 产品单价
-        from (select p.id                         as productId,
-                     p.product_name               as productName,
-                     p.product_specifications     as productSpecifications,
-                     por.lot_num                  as lotNumber,
-                     count(box_num)               as boxNum,
-                     TRUNCATE(sum(por.suttle), 2) as productNumber,
-                     por.product_colour           as productColour,
-                     por.notice_number            as noticeNumber,
-                     pi.sale_order_no             as saleNo,
-                     p.product_no                 as productNo,
-                     por.levels                   as productLevel,
-                     batch.batch_number           as batchNumber,
-                     batch.batch_State            as batchState,
-                     batch.id                     as batchId
+        from (select p.id                                                    as productId,
+                     p.product_name                                          as productName,
+                     p.product_specifications                                as productSpecifications,
+                     por.lot_num                                             as lotNumber,
+                     count(por.box_num)                                      as boxNum,
+                     TRUNCATE(sum(por.suttle), 2)                            as productNumber, -- 产品净重()
+                     por.product_colour                                      as productColour,
+                     por.notice_number                                       as noticeNumber,
+                     pi.sale_order_no                                        as saleNo,
+                     p.product_no                                            as productNo,
+                     por.levels                                              as productLevel,
+                     IF(batch.batch_number IS NULL, '0', batch.batch_number) as batchNumber,
+                     batch.batch_State                                       as batchState,
+                     batch.id                                                as batchId
               from `huaxian`.product_outbound_record por -- 成品出库记录表
                        left join `huaxian`.production p on p.id = por.product_id -- 产品表
                        left join `huaxian`.product_invoice pi on por.notice_number = pi.notice_number -- 产品发货单表
@@ -427,7 +427,7 @@
                                  on batch.outbound_record_id = por.id and batch.del_flag = '0' -- 成品出库记录批次表
               where por.del_flag = '0'
                 and pi.notice_number = #{noticeNumber} -- 通知单号
-              group by por.product_id, por.levels, por.lot_num, por.product_colour) as a
+              group by por.product_id, por.levels, por.lot_num, por.product_colour, por.batch_number) as a
                  left join (select sp.product_no                                      as productNo,        -- 产品编号
                                    sp.product_unit_price                              as productUnitPrice, -- 产品单价
                                    CONCAT(m.materie_encoding, m.materie_color_number) as productColour     -- 产品转码+色泽

+ 2 - 0
zkqy-custom-business/src/main/resources/mapper/business/SaleProductsMapper.xml

@@ -509,6 +509,8 @@
                      TRUNCATE(sum(r.suttle), 2) AS weight,
                      r.product_colour           AS productColor,
                      p.product_type             AS productType,
+                     r.is_history_batch         AS HistoryBatch,
+                     r.batch_number             AS batchNumber,
                      pi.sale_order_no
               FROM {DBNAME}.product_handset_outbound_record r
                         LEFT JOIN {DBNAME}.production p

+ 3 - 3
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/runbpm/PreExecutionToolClass.java

@@ -131,7 +131,6 @@ public class PreExecutionToolClass<R> {
         List<BpmUserScriptVo> bpmUserScriptVoList = new ArrayList<>();
         // 得到当前流程所有脚本数据
         List<BpmNodeScriptRelevance> bpmNodeScriptRelevanceList = new ArrayList<>();
-
         bpmProcessConfigurationList.forEach(item -> {
             BpmUserScriptVo bpmUserScriptVo = new BpmUserScriptVo();
             bpmUserScriptVo.setNodeKey(item.getNodeKey());
@@ -145,12 +144,13 @@ public class PreExecutionToolClass<R> {
             // bpmUserScriptVoList.add(bpmUserScriptVo);
             // } else if (bpmProcess.getProcessType().equals("0")) {
             //
-            // }
+            // }、
+
+            // -- 流程节点脚本关联表(一个节点可能会同时存在多个脚本-正常脚本、多个异常脚本)
             bpmUserScriptVo.setBpmNodeScriptRelevanceList(bpmNodeScriptRelevanceMapper.selectBpmNodeScriptRelevanceList(new BpmNodeScriptRelevance(item.getNodeKey())));
             bpmNodeScriptRelevanceList.addAll(bpmUserScriptVo.getBpmNodeScriptRelevanceList());
             bpmUserScriptVoList.add(bpmUserScriptVo);
         });
-
         Map<String, String> shunxu = XmlDataParserUtils.getStartNodeAndNextNode(bpmProcess.getProcessXmlContent());
         /**2️⃣2️⃣2️⃣ 新增执行流程表数据*/
         BpmExecuteProcess runBpmExecuteProcess = new BpmExecuteProcess();

+ 4 - 4
zkqy-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -77,8 +77,8 @@
 		from sys_menu m
 		left join sys_tenant_menu tm on tm.menu_id = m.menu_id
 		where tm.tenant_id = #{tenantId}
-		and m.menu_name not in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理')
-		and parent_id not in (select menu_id from  sys_menu where menu_name in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理'))
+		and m.menu_name not in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理','数据驾仓')
+		and parent_id not in (select menu_id from  sys_menu where menu_name in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理','数据驾仓'))
 		<if test="menu.menuName != null and menu.menuName != ''">
 			AND m.menu_name like concat('%', #{menu.menuName}, '%')
 		</if>
@@ -100,8 +100,8 @@
 		from sys_tenant_menu tm
 		left join sys_menu m on tm.menu_id = m.menu_id
 		where m.menu_type in ('M', 'C') and m.status = 0 and tm.tenant_id = #{tenantId}
-		and m.menu_name not in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理')
-		and parent_id not in (select menu_id from  sys_menu where menu_name in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理'))
+		and m.menu_name not in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理','数据驾仓')
+		and parent_id not in (select menu_id from  sys_menu where menu_name in ('数据引擎','流程引擎','表单引擎','移动端引擎','后台管理','数据驾仓'))
 		order by m.parent_id, m.order_num
 	</select>
 	

+ 40 - 44
zkqy-ui/src/views/login.vue

@@ -59,7 +59,7 @@
           </el-col>
           <el-col :span="4" :offset="1">
             <div class="login-code">
-              <img :src="codeUrl" @click="getCode" class="login-code-img" />
+              <img :src="codeUrl" @click="getCode" class="login-code-img"/>
             </div>
           </el-col>
         </el-row>
@@ -70,7 +70,7 @@
           <img :src="codeUrl" @click="getCode" class="login-code-img" />
         </div> -->
         <el-checkbox v-model="loginForm.rememberMe" class="aaa"
-          >在这个设备上记住我
+        >在这个设备上记住我
         </el-checkbox>
       </el-row>
 
@@ -79,7 +79,7 @@
           class="logg"
           :loading="loading"
           @click.native.prevent="handleLogin"
-          >登录
+        >登录
         </el-col>
       </el-row>
     </el-form>
@@ -87,10 +87,10 @@
 </template>
 
 <script>
-import { getCodeImg, isTenantExist, ssoLogin } from "@/api/login";
-import { changeDatasource } from "@/api/dataEngine";
+import {getCodeImg, isTenantExist, ssoLogin} from "@/api/login";
+import {changeDatasource} from "@/api/dataEngine";
 import Cookies from "js-cookie";
-import { encrypt, decrypt } from "@/utils/jsencrypt";
+import {encrypt, decrypt} from "@/utils/jsencrypt";
 
 export default {
   name: "Login",
@@ -111,12 +111,12 @@ export default {
       },
       loginRules: {
         username: [
-          { required: true, trigger: "blur", message: "请输入您的账号" },
+          {required: true, trigger: "blur", message: "请输入您的账号"},
         ],
         password: [
-          { required: true, trigger: "blur", message: "请输入您的密码" },
+          {required: true, trigger: "blur", message: "请输入您的密码"},
         ],
-        code: [{ required: true, trigger: "blur", message: "请输入验证码" }],
+        code: [{required: true, trigger: "blur", message: "请输入验证码"}],
       },
       loading: true,
       // 验证码开关
@@ -142,15 +142,16 @@ export default {
   methods: {
     // client_id=x3qwrgrO1wYdz72joZ8YyIuD&scope=basic&response_type=code&state=AB1357&redirect_uri=http://127.0.0.1:8001/login
 
+
     // 校验url
     validateTenantId() {
       let tenantCode = this.$route.query["tenantCode"];
       if (tenantCode != null) {
         // 得到tenantId 查询裤中是否存在该租户
-        isTenantExist({ tenantCode: tenantCode }).then((res) => {
+        isTenantExist({tenantCode: tenantCode}).then((res) => {
           if (res == undefined) {
             this.$message.warning("请访问正确地址!");
-            this.$router.push({ path: "/401" });
+            this.$router.push({path: "/401"});
           } else if (res.data?.tenantId) {
             // 判断当前编号是否存在库中
             this.tenantId = res.data.tenantId;
@@ -164,11 +165,11 @@ export default {
             this.getCookie();
           } else {
             // 当前访问链接中的租户编号不存在
-            this.$router.push({ path: "/401" });
+            this.$router.push({path: "/401"});
           }
         });
       } else {
-        this.$router.push({ path: "/401" });
+        this.$router.push({path: "/401"});
       }
     },
     setConfig() {
@@ -190,9 +191,9 @@ export default {
 
           console.log(
             "" +
-              `url(${
-                process.env.VUE_APP_BASE_IMG_API + loginPageBackgroundImage
-              })`
+            `url(${
+              process.env.VUE_APP_BASE_IMG_API + loginPageBackgroundImage
+            })`
           );
         }
       }
@@ -268,7 +269,7 @@ export default {
         if (valid) {
           this.loading = true;
           if (this.loginForm.rememberMe) {
-            Cookies.set("username", this.loginForm.username, { expires: 30 });
+            Cookies.set("username", this.loginForm.username, {expires: 30});
             Cookies.set("password", encrypt(this.loginForm.password), {
               expires: 30,
             });
@@ -281,34 +282,29 @@ export default {
             Cookies.remove("rememberMe");
           }
           let form = {
-            uri: "?client_id=hmc&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.110.83:8066/oauth/callback",
+            uri: "?client_id=mestools&scope=basic&response_type=code&state=AB1357&redirect_uri=http://192.168.110.124:8066/oauth/callback",
             ...this.loginForm,
             tenantID: this.tenantId,
           };
           // 调用单点登录
-          ssoLogin(form)
-            .then((response) => {
-              this.loading = false;
-              if (response.code === 200) {
-                // Message({message: response.msg, type: "success"});
-                console.log("认证成功!", response);
-                // response.msg 当前用户唯一标识 跳转其他系统使用
-                // this.$store.dispatch("setoauthUUID", response.msg);
-                window.localStorage.setItem(
-                  "setoauthUUID" + this.loginForm.username,
-                  response.msg
-                );
-                setTimeout(() => {
-                  global.window.location.href = response.data;
-                }, 1000);
-              }
-            })
-            .catch(() => {
-              this.loading = false;
-              if (this.captchaEnabled) {
-                this.getCode();
-              }
-            });
+          ssoLogin(form).then((response) => {
+            this.loading = false;
+            if (response.code === 200) {
+              // Message({message: response.msg, type: "success"});
+              console.log("认证成功!", response)
+              // response.msg 当前用户唯一标识 跳转其他系统使用
+              // this.$store.dispatch("setoauthUUID", response.msg);
+              window.localStorage.setItem("setoauthUUID" + this.loginForm.username, response.msg);
+              setTimeout(() => {
+                global.window.location.href = response.data;
+              }, 1000);
+            }
+          }).catch(() => {
+            this.loading = false;
+            if (this.captchaEnabled) {
+              this.getCode();
+            }
+          });
 
           // this.$store
           //   .dispatch("Login", form)
@@ -379,9 +375,9 @@ export default {
   opacity: 1;
   border-radius: 27px;
   background: linear-gradient(
-    135deg,
-    rgba(79, 138, 255, 1) 0%,
-    rgba(75, 94, 255, 1) 100%
+      135deg,
+      rgba(79, 138, 255, 1) 0%,
+      rgba(75, 94, 255, 1) 100%
   );
   box-shadow: 0px 4px 16px rgba(179, 192, 231, 1);
   color: #fff;

+ 18 - 59
zkqy-ui/src/views/orderMange/index.vue

@@ -845,7 +845,6 @@ import {
   getProductSpecificationsByProductName,
   printOutsourceOrder,
   productColourList,
-  checkOrder,
 } from "@/api/tablelist/commonTable";
 import { updateOrder } from "@/api/system/retailMange.js";
 import { listData } from "@/api/system/tenant/data";
@@ -3609,28 +3608,19 @@ export default {
     },
     // 记录批次回调
     async myRecordBatchHandler(row, btnData) {
-      console.log(row);
-      // return;
       this.$confirm("请确认是否记录批次?", "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-      })
-        .then(async () => {
-          let result = await printOutsourceOrder({ saleNo: row.saleNo });
-          if (result.code == 200) {
-            res.data.form.printUser = this.nickName;
-            outBoundPrint(res.data, "printDom", false);
-          } else {
-            throw new Error(result.msg);
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "已取消完成",
-          });
-        });
+      }).then(async () => {
+        let result = await printOutsourceOrder({saleNo: row.saleNo});
+        if (result.code == 200) {
+          res.data.form.printUser = this.nickName;
+          outBoundPrint(res.data, "printDom", false);
+        } else {
+          throw new Error(result.msg);
+        }
+      }).catch(() => this.$message({type: "info", message: "已取消完成",}));
     },
     // 完成回调
     async myComplateHandler(row) {
@@ -3638,46 +3628,15 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
-      })
-        .then(async () => {
-          let checkPayload = {
-            saleNo: row.saleNo,
-            batchNumber: 0,
-          };
-          let checkRes = await checkOrder(checkPayload);
-          if (!checkRes) {
-            this.$message.error("请前往'打印销售单'记录批次");
-            return;
-          }
-          let payload = {
-            id: row.id,
-            status: 6,
-            saleNo: row.saleNo,
-            completionTime: new Date(),
-          };
-          let res = await updateOrder(payload);
-          if (res.code == 200) {
-            this.$message({
-              type: "success",
-              message: "订单已完成",
-            });
-            this.getList();
-          } else {
-            this.$message({
-              type: "error",
-              message: "订单已完成失败,请稍后再试",
-            });
-            console.log(res);
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "已取消完成",
-          });
-        });
-
-      console.log(row);
+      }).then(async () => {
+        // 调用完成按钮
+        let payload = {id: row.id, status: 6, saleNo: row.saleNo, completionTime: new Date(),};
+        let res = await updateOrder(payload);
+        if (res.code == 200) {
+          this.$message({type: "success", message: "订单已完成",});
+          this.getList();
+        } else this.$message({type: "error", message: "订单已完成失败,请稍后再试",});
+      }).catch(() => this.$message({type: "info", message: "已取消完成",}));
     },
     noNeedHandler(btnData, row) {
       this.$modal

+ 3 - 3
zkqy-ui/src/views/system/engineeringManage/index.vue

@@ -529,11 +529,11 @@ export default {
       //   // window.location.header = {
       //   //   "Authorization": `Bearer ${getToken()}`
       //   // }
-      //   // window.location.href = `http://192.168.110.59:8066/system/engineering/download1`
+      //   // window.location.href = `http://192.168.110.114:8066/system/engineering/download1`
       //
       //
       //   // Fetch API 获取文件
-      //   // fetch('http://192.168.110.59:8066/system/engineering/download1', {
+      //   // fetch('http://192.168.110.114:8066/system/engineering/download1', {
       //   //   headers: {
       //   //     'Authorization': `Bearer ${getToken()}`,
       //   //   },
@@ -586,7 +586,7 @@ export default {
       //
       //   // return;
       //   // axios({
-      //   //   // url: 'http://192.168.110.59:8066/api/download/largeFile',
+      //   //   // url: 'http://192.168.110.114:8066/api/download/largeFile',
       //   //   url: 'http://localhost:8066/system/engineering/largeFile',
       //   //   method: 'GET',
       //   //   responseType: 'blob', // 设置响应类型为Blob

Some files were not shown because too many files changed in this diff