Ver código fonte

feat:综合库存增加查询老库存逻辑、订单老库存出库逻辑、新增老库存出库日志模块、共通时间范围查询逻辑优化、

韩帛霖 1 ano atrás
pai
commit
5aa17ff4f7
20 arquivos alterados com 1689 adições e 435 exclusões
  1. 118 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/OldProductOutboundRecordController.java
  2. 16 7
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java
  3. 305 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/OldProductOutboundRecord.java
  4. 49 35
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInvoice.java
  5. 50 35
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleOrder.java
  6. 17 1
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java
  7. 273 176
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductInvoiceVO.java
  8. 54 39
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleOrderVO.java
  9. 70 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/OldProductOutboundRecordMapper.java
  10. 5 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/ProductInventoryMapper.java
  11. 71 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IOldProductOutboundRecordService.java
  12. 11 2
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java
  13. 97 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/OldProductOutboundRecordServiceImpl.java
  14. 158 11
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java
  15. 207 0
      zkqy-custom-business/src/main/resources/mapper/business/OldProductOutboundRecordMapper.xml
  16. 162 101
      zkqy-custom-business/src/main/resources/mapper/business/ProductInventoryMapper.xml
  17. 6 2
      zkqy-custom-business/src/main/resources/mapper/business/SaleOrderMapper.xml
  18. 0 3
      zkqy-custom-business/src/main/resources/mapper/business/SaleProductsMapper.xml
  19. 7 7
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/CommonServiceImpl.java
  20. 13 16
      zkqy-ui/src/views/orderMange/comprehensiveInventory/index.vue

+ 118 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/OldProductOutboundRecordController.java

@@ -0,0 +1,118 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.OldProductOutboundRecord;
+import com.zkqy.business.service.IOldProductOutboundRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 成品出库记录(老库存)Controller
+ *
+ * @author hzh
+ * @date 2024-07-11
+ */
+@RestController
+@RequestMapping("/system/oldRecord")
+@Api(value = "/system/oldRecord", description = "成品出库记录(老库存)-接口")
+public class OldProductOutboundRecordController extends BaseController {
+    @Autowired
+    private IOldProductOutboundRecordService oldProductOutboundRecordService;
+
+    /**
+     * 查询成品出库记录(老库存)列表
+     */
+//@PreAuthorize("@ss.hasPermi('system:oldRecord:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询成品出库记录(老库存)列表")
+    public TableDataInfo list(OldProductOutboundRecord oldProductOutboundRecord) {
+        startPage();
+        List<OldProductOutboundRecord> list = oldProductOutboundRecordService.selectOldProductOutboundRecordList(oldProductOutboundRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询成品出库记录(老库存)列表
+     */
+    @GetMapping("/listSaleOrderNo")
+    @ApiOperation(value = "查询成品出库记录(老库存)列表")
+    public TableDataInfo listBySaleOrderNo(OldProductOutboundRecord oldProductOutboundRecord) {
+        startPage();
+        List<OldProductOutboundRecord> list = oldProductOutboundRecordService.selectOldProductOutboundRecordListByOrderNo(oldProductOutboundRecord.getSaleOrderNo());
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出成品出库记录(老库存)列表
+     */
+//    @PreAuthorize("@ss.hasPermi('system:oldRecord:export')")
+    @Log(title = "成品出库记录(老库存)", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出成品出库记录(老库存)列表")
+    public void export(HttpServletResponse response, OldProductOutboundRecord oldProductOutboundRecord) {
+        List<OldProductOutboundRecord> list = oldProductOutboundRecordService.selectOldProductOutboundRecordList(oldProductOutboundRecord);
+        ExcelUtil<OldProductOutboundRecord> util = new ExcelUtil<OldProductOutboundRecord>(OldProductOutboundRecord.class);
+        util.exportExcel(response, list, "成品出库记录(老库存)数据");
+    }
+
+    /**
+     * 获取成品出库记录(老库存)详细信息
+     */
+//    @PreAuthorize("@ss.hasPermi('system:oldRecord:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取成品出库记录(老库存)详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(oldProductOutboundRecordService.selectOldProductOutboundRecordById(id));
+    }
+
+    /**
+     * 新增成品出库记录(老库存)
+     */
+//    @PreAuthorize("@ss.hasPermi('system:oldRecord:add')")
+    @Log(title = "成品出库记录(老库存)", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增成品出库记录(老库存)")
+    public AjaxResult add(@RequestBody OldProductOutboundRecord oldProductOutboundRecord) {
+        return toAjax(oldProductOutboundRecordService.insertOldProductOutboundRecord(oldProductOutboundRecord));
+    }
+
+    /**
+     * 修改成品出库记录(老库存)
+     */
+//    @PreAuthorize("@ss.hasPermi('system:oldRecord:edit')")
+    @Log(title = "成品出库记录(老库存)", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改成品出库记录(老库存)")
+    public AjaxResult edit(@RequestBody OldProductOutboundRecord oldProductOutboundRecord) {
+        return toAjax(oldProductOutboundRecordService.updateOldProductOutboundRecord(oldProductOutboundRecord));
+    }
+
+    /**
+     * 删除成品出库记录(老库存)
+     */
+//    @PreAuthorize("@ss.hasPermi('system:oldRecord:remove')")
+    @Log(title = "成品出库记录(老库存)", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除成品出库记录(老库存)")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(oldProductOutboundRecordService.deleteOldProductOutboundRecordByIds(ids));
+    }
+}

+ 16 - 7
zkqy-custom-business/src/main/java/com/zkqy/business/controller/ProductInventoryController.java

@@ -122,8 +122,8 @@ public class ProductInventoryController extends BaseController {
      */
     @PostMapping("/productOutStorage")
     public AjaxResult productOutStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList) {
-        productInventoryService.productOutStorage(productCodeListVOList);
-        return AjaxResult.success();
+
+        return  productInventoryService.productOutStorage(productCodeListVOList);
     }
 
     /**
@@ -131,8 +131,8 @@ public class ProductInventoryController extends BaseController {
      */
     @PostMapping("/noticeOutStorage")
     public AjaxResult noticeOutStorage(@RequestBody ProductInvoice productInvoice) {
-        productInventoryService.noticeOutStorage(productInvoice);
-        return AjaxResult.success();
+
+        return productInventoryService.noticeOutStorage(productInvoice);
     }
 
     /**
@@ -150,7 +150,7 @@ public class ProductInventoryController extends BaseController {
      * 获取货品库存箱数重量
      */
     @PostMapping("/getProductInventory")
-    public AjaxResult getProductInventory(@RequestBody ProductInventory productInventory){
+    public AjaxResult getProductInventory(@RequestBody ProductInventory productInventory) {
         return AjaxResult.success(productInventoryService.getProductInventory(productInventory));
     }
 
@@ -220,7 +220,7 @@ public class ProductInventoryController extends BaseController {
      * 统计库存各个类型下等级货品重量
      */
     @GetMapping("/statisticsSuttleByLevels")
-    public AjaxResult statisticsSuttleByLevels(@RequestParam String productType){
+    public AjaxResult statisticsSuttleByLevels(@RequestParam String productType) {
         return AjaxResult.success(productInventoryService.statisticsSuttleByLevels(productType));
     }
 
@@ -228,8 +228,17 @@ public class ProductInventoryController extends BaseController {
      * 退库
      */
     @PostMapping("/returnStorage")
-    public AjaxResult returnStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList){
+    public AjaxResult returnStorage(@RequestBody List<ProductCodeListVO> productCodeListVOList) {
         return productInventoryService.returnStorage(productCodeListVOList);
     }
 
+
+    /**
+     * 通知单出库接口(老库存)
+     */
+    @PostMapping("/oldNoticeOutStorage")
+    public AjaxResult oldNoticeOutStorage(@RequestBody ProductInvoice productInvoice) {
+        return productInventoryService.oldNoticeOutStorage(productInvoice);
+    }
+
 }

+ 305 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/OldProductOutboundRecord.java

@@ -0,0 +1,305 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 成品出库记录(老库存)对象 old_product_outbound_record
+ *
+ * @author hzh
+ * @date 2024-07-11
+ */
+public class OldProductOutboundRecord extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 订单编号
+     */
+    @Excel(name = "订单编号")
+    private String saleOrderNo;
+
+    /**
+     * 出库产品编号
+     */
+    @Excel(name = "出库产品编号")
+    private String productNo;
+
+    /**
+     * 品名
+     */
+    @Excel(name = "品名")
+    private String productName;
+
+    /**
+     * 规格
+     */
+    @Excel(name = "规格")
+    private String productSpecifications;
+
+    /**
+     * 色泽
+     */
+    @Excel(name = "色泽")
+    private String productColor;
+
+    /**
+     * 批号
+     */
+    @Excel(name = "批号")
+    private String lotNum;
+
+    /**
+     * 等级
+     */
+    @Excel(name = "等级")
+    private String levels;
+
+    /**
+     * 订单重量
+     */
+    @Excel(name = "订单重量")
+    private String orderWeight;
+
+    /**
+     * 实际出库重量(老库存)
+     */
+    @Excel(name = "实际出库重量", readConverterExp = "老=库存")
+    private String actualWeight;
+
+    /**
+     * 实际出库箱数(老库存)
+     */
+    @Excel(name = "实际出库箱数", readConverterExp = "老=库存")
+    private String actualBoxnum;
+
+    /**
+     * 创建者id
+     */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /**
+     * 更新者id
+     */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中)
+     */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /**
+     * 流程编号
+     */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /**
+     * 任务编码
+     */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /**
+     * 任务节点编码
+     */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    /**
+     * 当前产品单价
+     */
+    private String productUnitPrice;
+
+    public String getProductUnitPrice() {
+        return productUnitPrice;
+    }
+
+    public void setProductUnitPrice(String productUnitPrice) {
+        this.productUnitPrice = productUnitPrice;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setSaleOrderNo(String saleOrderNo) {
+        this.saleOrderNo = saleOrderNo;
+    }
+
+    public String getSaleOrderNo() {
+        return saleOrderNo;
+    }
+
+    public void setProductNo(String productNo) {
+        this.productNo = productNo;
+    }
+
+    public String getProductNo() {
+        return productNo;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductSpecifications(String productSpecifications) {
+        this.productSpecifications = productSpecifications;
+    }
+
+    public String getProductSpecifications() {
+        return productSpecifications;
+    }
+
+    public void setProductColor(String productColor) {
+        this.productColor = productColor;
+    }
+
+    public String getProductColor() {
+        return productColor;
+    }
+
+    public void setLotNum(String lotNum) {
+        this.lotNum = lotNum;
+    }
+
+    public String getLotNum() {
+        return lotNum;
+    }
+
+    public void setLevels(String levels) {
+        this.levels = levels;
+    }
+
+    public String getLevels() {
+        return levels;
+    }
+
+    public void setOrderWeight(String orderWeight) {
+        this.orderWeight = orderWeight;
+    }
+
+    public String getOrderWeight() {
+        return orderWeight;
+    }
+
+    public void setActualWeight(String actualWeight) {
+        this.actualWeight = actualWeight;
+    }
+
+    public String getActualWeight() {
+        return actualWeight;
+    }
+
+    public void setActualBoxnum(String actualBoxnum) {
+        this.actualBoxnum = actualBoxnum;
+    }
+
+    public String getActualBoxnum() {
+        return actualBoxnum;
+    }
+
+    public void setCreateById(Long createById) {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() {
+        return createById;
+    }
+
+    public void setUpdateById(Long updateById) {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() {
+        return updateById;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDataApprovalStatus(String dataApprovalStatus) {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() {
+        return dataApprovalStatus;
+    }
+
+    public void setProcessKey(String processKey) {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() {
+        return processKey;
+    }
+
+    public void setTaskProcessKey(String taskProcessKey) {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() {
+        return taskProcessKey;
+    }
+
+    public void setTaskNodeKey(String taskNodeKey) {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder sb = new StringBuilder("OldProductOutboundRecord{");
+        sb.append("id=").append(id);
+        sb.append(", saleOrderNo='").append(saleOrderNo).append('\'');
+        sb.append(", productNo='").append(productNo).append('\'');
+        sb.append(", productName='").append(productName).append('\'');
+        sb.append(", productSpecifications='").append(productSpecifications).append('\'');
+        sb.append(", productColor='").append(productColor).append('\'');
+        sb.append(", lotNum='").append(lotNum).append('\'');
+        sb.append(", levels='").append(levels).append('\'');
+        sb.append(", orderWeight='").append(orderWeight).append('\'');
+        sb.append(", actualWeight='").append(actualWeight).append('\'');
+        sb.append(", actualBoxnum='").append(actualBoxnum).append('\'');
+        sb.append(", createById=").append(createById);
+        sb.append(", updateById=").append(updateById);
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append(", dataApprovalStatus='").append(dataApprovalStatus).append('\'');
+        sb.append(", processKey='").append(processKey).append('\'');
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", productUnitPrice='").append(productUnitPrice).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 49 - 35
zkqy-custom-business/src/main/java/com/zkqy/business/domain/ProductInvoice.java

@@ -1,8 +1,12 @@
 package com.zkqy.business.domain;
 
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zkqy.business.domain.vo.ProductInvoiceVO;
 import com.zkqy.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -183,6 +187,9 @@ public class ProductInvoice extends BaseEntity {
      */
     private String deliveryClerk;
 
+    // 老库存出库list
+    private List<ProductInvoiceVO.SaleProductInfo> oldProductInvoiceList;
+
     public void setId(Long id) {
         this.id = id;
     }
@@ -399,40 +406,47 @@ public class ProductInvoice extends BaseEntity {
         this.deliveryClerk = deliveryClerk;
     }
 
+    public List<ProductInvoiceVO.SaleProductInfo> getOldProductInvoiceList() {
+        return oldProductInvoiceList;
+    }
+
+    public void setOldProductInvoiceList(List<ProductInvoiceVO.SaleProductInfo> oldProductInvoiceList) {
+        this.oldProductInvoiceList = oldProductInvoiceList;
+    }
+
     @Override
     public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-                .append("id", getId())
-                .append("noticeNumber", getNoticeNumber())
-                .append("noticeDate", getNoticeDate())
-                .append("salesman", getSalesman())
-                .append("customerId", getCustomerId())
-                .append("customerName", getCustomerName())
-                .append("drawer", getDrawer())
-                .append("dispatchNoteRemark", getDispatchNoteRemark())
-                .append("billingType", getBillingType())
-                .append("truckRegistration", getTruckRegistration())
-                .append("documentType", getDocumentType())
-                .append("sellingUnit", getSellingUnit())
-                .append("calculationType", getCalculationType())
-                .append("auditOpinion", getAuditOpinion())
-                .append("status", getStatus())
-                .append("saleOrderNo", getSaleOrderNo())
-                .append("spare1", getSpare1())
-                .append("spare2", getSpare2())
-                .append("spare3", getSpare3())
-                .append("spare4", getSpare4())
-                .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("deliveryWarehouse", getDeliveryWarehouse())
-                .append("transferWarehouse", getTransferWarehouse())
-                .append("deliveryDate", getDeliveryDate())
-                .toString();
-    }
-}
+        final StringBuilder sb = new StringBuilder("ProductInvoice{");
+        sb.append("orderType='").append(orderType).append('\'');
+        sb.append(", id=").append(id);
+        sb.append(", noticeNumber='").append(noticeNumber).append('\'');
+        sb.append(", noticeDate=").append(noticeDate);
+        sb.append(", salesman='").append(salesman).append('\'');
+        sb.append(", customerId=").append(customerId);
+        sb.append(", customerName='").append(customerName).append('\'');
+        sb.append(", drawer='").append(drawer).append('\'');
+        sb.append(", dispatchNoteRemark='").append(dispatchNoteRemark).append('\'');
+        sb.append(", billingType='").append(billingType).append('\'');
+        sb.append(", truckRegistration='").append(truckRegistration).append('\'');
+        sb.append(", documentType='").append(documentType).append('\'');
+        sb.append(", sellingUnit='").append(sellingUnit).append('\'');
+        sb.append(", calculationType='").append(calculationType).append('\'');
+        sb.append(", auditOpinion='").append(auditOpinion).append('\'');
+        sb.append(", status='").append(status).append('\'');
+        sb.append(", saleOrderNo='").append(saleOrderNo).append('\'');
+        sb.append(", spare1='").append(spare1).append('\'');
+        sb.append(", spare2='").append(spare2).append('\'');
+        sb.append(", spare3='").append(spare3).append('\'');
+        sb.append(", spare4='").append(spare4).append('\'');
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append(", createById=").append(createById);
+        sb.append(", updateById=").append(updateById);
+        sb.append(", deliveryWarehouse=").append(deliveryWarehouse);
+        sb.append(", transferWarehouse=").append(transferWarehouse);
+        sb.append(", deliveryDate=").append(deliveryDate);
+        sb.append(", deliveryClerk='").append(deliveryClerk).append('\'');
+        sb.append(", oldProductInvoiceList=").append(oldProductInvoiceList);
+        sb.append('}');
+        return sb.toString();
+    }
+}

+ 50 - 35
zkqy-custom-business/src/main/java/com/zkqy/business/domain/SaleOrder.java

@@ -148,6 +148,17 @@ public class SaleOrder extends BaseEntity
     //超级查询
     private String queryParam;
 
+
+    private int oldInventoryState;
+
+    public int getOldInventoryState() {
+        return oldInventoryState;
+    }
+
+    public void setOldInventoryState(int oldInventoryState) {
+        this.oldInventoryState = oldInventoryState;
+    }
+
     public String getOutsourceSalePayType() {
         return outsourceSalePayType;
     }
@@ -457,40 +468,44 @@ public class SaleOrder extends BaseEntity
 
     @Override
     public String toString() {
-        return "SaleOrder{" +
-                "id=" + id +
-                ", saleNo='" + saleNo + '\'' +
-                ", saleCustomNo='" + saleCustomNo + '\'' +
-                ", saleDate='" + saleDate + '\'' +
-                ", saleEstimatedTime=" + saleEstimatedTime +
-                ", saleLeadTime='" + saleLeadTime + '\'' +
-                ", saleProductsNo='" + saleProductsNo + '\'' +
-                ", saleAmounts=" + saleAmounts +
-                ", saleAmountInWords='" + saleAmountInWords + '\'' +
-                ", salePayType='" + salePayType + '\'' +
-                ", saleOrderEstimatedTime='" + saleOrderEstimatedTime + '\'' +
-                ", saleOrderTechnologyNo='" + saleOrderTechnologyNo + '\'' +
-                ", salesman='" + salesman + '\'' +
-                ", saleLeader='" + saleLeader + '\'' +
-                ", finance='" + finance + '\'' +
-                ", production='" + production + '\'' +
-                ", saleApprover='" + saleApprover + '\'' +
-                ", status='" + status + '\'' +
-                ", orderType='" + orderType + '\'' +
-                ", createById=" + createById +
-                ", updateById=" + updateById +
-                ", delFlag='" + delFlag + '\'' +
-                ", taskProcessKey='" + taskProcessKey + '\'' +
-                ", taskNodeKey='" + taskNodeKey + '\'' +
-                ", processKey='" + processKey + '\'' +
-                ", earnestMoney='" + earnestMoney + '\'' +
-                ", deliveryDate='" + deliveryDate + '\'' +
-                ", lotNumber='" + lotNumber + '\'' +
-                ", completionTime=" + completionTime +
-                ", processingUnit='" + processingUnit + '\'' +
-                ", contactPerson='" + contactPerson + '\'' +
-                ", address='" + address + '\'' +
-                ", queryParam='" + queryParam + '\'' +
-                '}';
+        final StringBuilder sb = new StringBuilder("SaleOrder{");
+        sb.append("id=").append(id);
+        sb.append(", saleNo='").append(saleNo).append('\'');
+        sb.append(", saleCustomNo='").append(saleCustomNo).append('\'');
+        sb.append(", saleDate='").append(saleDate).append('\'');
+        sb.append(", saleEstimatedTime=").append(saleEstimatedTime);
+        sb.append(", saleLeadTime='").append(saleLeadTime).append('\'');
+        sb.append(", saleProductsNo='").append(saleProductsNo).append('\'');
+        sb.append(", saleAmounts=").append(saleAmounts);
+        sb.append(", saleAmountInWords='").append(saleAmountInWords).append('\'');
+        sb.append(", salePayType='").append(salePayType).append('\'');
+        sb.append(", saleOrderEstimatedTime='").append(saleOrderEstimatedTime).append('\'');
+        sb.append(", saleOrderTechnologyNo='").append(saleOrderTechnologyNo).append('\'');
+        sb.append(", salesman='").append(salesman).append('\'');
+        sb.append(", saleLeader='").append(saleLeader).append('\'');
+        sb.append(", finance='").append(finance).append('\'');
+        sb.append(", production='").append(production).append('\'');
+        sb.append(", saleApprover='").append(saleApprover).append('\'');
+        sb.append(", status='").append(status).append('\'');
+        sb.append(", orderType='").append(orderType).append('\'');
+        sb.append(", createById=").append(createById);
+        sb.append(", updateById=").append(updateById);
+        sb.append(", delFlag='").append(delFlag).append('\'');
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", processKey='").append(processKey).append('\'');
+        sb.append(", earnestMoney='").append(earnestMoney).append('\'');
+        sb.append(", deliveryDate='").append(deliveryDate).append('\'');
+        sb.append(", lotNumber='").append(lotNumber).append('\'');
+        sb.append(", completionTime=").append(completionTime);
+        sb.append(", processingUnit='").append(processingUnit).append('\'');
+        sb.append(", contactPerson='").append(contactPerson).append('\'');
+        sb.append(", address='").append(address).append('\'');
+        sb.append(", materialType='").append(materialType).append('\'');
+        sb.append(", outsourceSalePayType='").append(outsourceSalePayType).append('\'');
+        sb.append(", queryParam='").append(queryParam).append('\'');
+        sb.append(", oldInventoryState=").append(oldInventoryState);
+        sb.append('}');
+        return sb.toString();
     }
 }

+ 17 - 1
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductCodeListVO.java

@@ -263,9 +263,25 @@ public class ProductCodeListVO extends BaseEntity {
 
     private String productNo;
 
-    /** 退库标识 */
+    /**
+     * 退库标识
+     */
     private String withdrawingFlag;
 
+    /**
+     * 库存类型 1新2老
+     */
+    private String inventoryType;
+
+
+    public String getInventoryType() {
+        return inventoryType;
+    }
+
+    public void setInventoryType(String inventoryType) {
+        this.inventoryType = inventoryType;
+    }
+
     public String getWithdrawingFlag() {
         return withdrawingFlag;
     }

+ 273 - 176
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/ProductInvoiceVO.java

@@ -11,106 +11,165 @@ import java.util.List;
 
 /**
  * 产品发货单对象 product_invoice
- * 
+ *
  * @author zkqy
  * @date 2024-04-11
  */
-public class ProductInvoiceVO extends BaseEntity
-{
+public class ProductInvoiceVO extends BaseEntity {
 
-    /** 编号 */
+    /**
+     * 编号
+     */
     private Long id;
 
-    /** 通知单号 */
+    /**
+     * 通知单号
+     */
     private String noticeNumber;
 
-    /** 通知日期 */
+    /**
+     * 通知日期
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date noticeDate;
 
-    /** 销售员 */
+    /**
+     * 销售员
+     */
     private String salesman;
 
-    /** 客户编号主键 */
+    /**
+     * 客户编号主键
+     */
     private Long customerId;
 
-    /** 开票员 */
+    /**
+     * 开票员
+     */
     private String drawer;
 
-    /** 发货单备注 */
+    /**
+     * 发货单备注
+     */
     private String dispatchNoteRemark;
 
-    /** 开票类型 */
+    /**
+     * 开票类型
+     */
     private String billingType;
 
-    /** 货车登记 */
+    /**
+     * 货车登记
+     */
     private String truckRegistration;
 
-    /** 单据类型 */
+    /**
+     * 单据类型
+     */
     private String documentType;
 
-    /** 售货单位 */
+    /**
+     * 售货单位
+     */
     private String sellingUnit;
 
-    /** 计算类型(未启用) */
+    /**
+     * 计算类型(未启用)
+     */
     private String calculationType;
 
-    /** 审核意见 */
+    /**
+     * 审核意见
+     */
     private String auditOpinion;
 
-    /** 状态 */
+    /**
+     * 状态
+     */
     private String status;
 
-    /** 销售单合同号 */
+    /**
+     * 销售单合同号
+     */
     private String saleOrderNo;
 
-    /** 备用列 */
+    /**
+     * 备用列
+     */
     private String spare1;
 
-    /** 备用列 */
+    /**
+     * 备用列
+     */
     private String spare2;
 
-    /** 备用列 */
+    /**
+     * 备用列
+     */
     private String spare3;
 
-    /** 备用列 */
+    /**
+     * 备用列
+     */
     private String spare4;
 
-    /** 删除标志(0:否;2:是) */
+    /**
+     * 删除标志(0:否;2:是)
+     */
     private String delFlag;
 
-    /** 创建者ID */
+    /**
+     * 创建者ID
+     */
     private Long createById;
 
-    /** 修改者ID */
+    /**
+     * 修改者ID
+     */
     private Long updateById;
 
-    /** 库存箱数 */
+    /**
+     * 库存箱数
+     */
     private Integer inventoryBoxNum;
 
-    /** 库存重量 */
+    /**
+     * 库存重量
+     */
     private Double inventoryWeight;
 
-    /** 销售单货品信息 */
+    /**
+     * 销售单货品信息
+     */
     private List<SaleProductInfo> saleProductInfoList;
 
-    /** 发货仓库 */
+    /**
+     * 发货仓库
+     */
     private Long deliveryWarehouse;
 
-    /** 调拨仓库 */
+    /**
+     * 调拨仓库
+     */
     private Long transferWarehouse;
 
-    /** 发货日期 */
+    /**
+     * 发货日期
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "发货日期", width = 30, dateFormat = "yyyy-MM-dd")
     private Date deliveryDate;
 
-    /** 客户编号 */
+    /**
+     * 客户编号
+     */
     private String customerNo;
 
     private List<ProductCodeListVO> productCodeListVOList;
 
-    /** 累计欠款 */
+    /**
+     * 累计欠款
+     */
     private Double amounts;
 
     public Double getAmounts() {
@@ -122,202 +181,179 @@ public class ProductInvoiceVO extends BaseEntity
     }
 
 
-    public void setId(Long id) 
-    {
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId() 
-    {
+    public Long getId() {
         return id;
     }
-    public void setNoticeNumber(String noticeNumber) 
-    {
+
+    public void setNoticeNumber(String noticeNumber) {
         this.noticeNumber = noticeNumber;
     }
 
-    public String getNoticeNumber() 
-    {
+    public String getNoticeNumber() {
         return noticeNumber;
     }
-    public void setNoticeDate(Date noticeDate) 
-    {
+
+    public void setNoticeDate(Date noticeDate) {
         this.noticeDate = noticeDate;
     }
 
-    public Date getNoticeDate() 
-    {
+    public Date getNoticeDate() {
         return noticeDate;
     }
-    public void setSalesman(String salesman) 
-    {
+
+    public void setSalesman(String salesman) {
         this.salesman = salesman;
     }
 
-    public String getSalesman() 
-    {
+    public String getSalesman() {
         return salesman;
     }
-    public void setCustomerId(Long customerId) 
-    {
+
+    public void setCustomerId(Long customerId) {
         this.customerId = customerId;
     }
 
-    public Long getCustomerId() 
-    {
+    public Long getCustomerId() {
         return customerId;
     }
-    public void setDrawer(String drawer) 
-    {
+
+    public void setDrawer(String drawer) {
         this.drawer = drawer;
     }
 
-    public String getDrawer() 
-    {
+    public String getDrawer() {
         return drawer;
     }
-    public void setDispatchNoteRemark(String dispatchNoteRemark) 
-    {
+
+    public void setDispatchNoteRemark(String dispatchNoteRemark) {
         this.dispatchNoteRemark = dispatchNoteRemark;
     }
 
-    public String getDispatchNoteRemark() 
-    {
+    public String getDispatchNoteRemark() {
         return dispatchNoteRemark;
     }
-    public void setBillingType(String billingType) 
-    {
+
+    public void setBillingType(String billingType) {
         this.billingType = billingType;
     }
 
-    public String getBillingType() 
-    {
+    public String getBillingType() {
         return billingType;
     }
-    public void setTruckRegistration(String truckRegistration) 
-    {
+
+    public void setTruckRegistration(String truckRegistration) {
         this.truckRegistration = truckRegistration;
     }
 
-    public String getTruckRegistration() 
-    {
+    public String getTruckRegistration() {
         return truckRegistration;
     }
-    public void setDocumentType(String documentType) 
-    {
+
+    public void setDocumentType(String documentType) {
         this.documentType = documentType;
     }
 
-    public String getDocumentType() 
-    {
+    public String getDocumentType() {
         return documentType;
     }
-    public void setSellingUnit(String sellingUnit) 
-    {
+
+    public void setSellingUnit(String sellingUnit) {
         this.sellingUnit = sellingUnit;
     }
 
-    public String getSellingUnit() 
-    {
+    public String getSellingUnit() {
         return sellingUnit;
     }
-    public void setCalculationType(String calculationType) 
-    {
+
+    public void setCalculationType(String calculationType) {
         this.calculationType = calculationType;
     }
 
-    public String getCalculationType() 
-    {
+    public String getCalculationType() {
         return calculationType;
     }
-    public void setAuditOpinion(String auditOpinion) 
-    {
+
+    public void setAuditOpinion(String auditOpinion) {
         this.auditOpinion = auditOpinion;
     }
 
-    public String getAuditOpinion() 
-    {
+    public String getAuditOpinion() {
         return auditOpinion;
     }
-    public void setStatus(String status) 
-    {
+
+    public void setStatus(String status) {
         this.status = status;
     }
 
-    public String getStatus() 
-    {
+    public String getStatus() {
         return status;
     }
-    public void setSaleOrderNo(String saleOrderNo) 
-    {
+
+    public void setSaleOrderNo(String saleOrderNo) {
         this.saleOrderNo = saleOrderNo;
     }
 
-    public String getSaleOrderNo() 
-    {
+    public String getSaleOrderNo() {
         return saleOrderNo;
     }
-    public void setSpare1(String spare1) 
-    {
+
+    public void setSpare1(String spare1) {
         this.spare1 = spare1;
     }
 
-    public String getSpare1() 
-    {
+    public String getSpare1() {
         return spare1;
     }
-    public void setSpare2(String spare2) 
-    {
+
+    public void setSpare2(String spare2) {
         this.spare2 = spare2;
     }
 
-    public String getSpare2() 
-    {
+    public String getSpare2() {
         return spare2;
     }
-    public void setSpare3(String spare3) 
-    {
+
+    public void setSpare3(String spare3) {
         this.spare3 = spare3;
     }
 
-    public String getSpare3() 
-    {
+    public String getSpare3() {
         return spare3;
     }
-    public void setSpare4(String spare4) 
-    {
+
+    public void setSpare4(String spare4) {
         this.spare4 = spare4;
     }
 
-    public String getSpare4() 
-    {
+    public String getSpare4() {
         return spare4;
     }
-    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;
     }
 
@@ -387,93 +423,138 @@ public class ProductInvoiceVO extends BaseEntity
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("noticeNumber", getNoticeNumber())
-            .append("noticeDate", getNoticeDate())
-            .append("salesman", getSalesman())
-            .append("customerId", getCustomerId())
-            .append("drawer", getDrawer())
-            .append("dispatchNoteRemark", getDispatchNoteRemark())
-            .append("billingType", getBillingType())
-            .append("truckRegistration", getTruckRegistration())
-            .append("documentType", getDocumentType())
-            .append("sellingUnit", getSellingUnit())
-            .append("calculationType", getCalculationType())
-            .append("auditOpinion", getAuditOpinion())
-            .append("status", getStatus())
-            .append("saleOrderNo", getSaleOrderNo())
-            .append("spare1", getSpare1())
-            .append("spare2", getSpare2())
-            .append("spare3", getSpare3())
-            .append("spare4", getSpare4())
-            .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("inventoryBoxNum", getInventoryBoxNum())
-            .append("inventoryWeight", getInventoryWeight())
-            .append("deliveryWarehouse", getDeliveryWarehouse())
-            .append("transferWarehouse", getTransferWarehouse())
-            .append("deliveryDate", getDeliveryDate())
-            .toString();
-    }
-
-    public static class SaleProductInfo{
-
-        /** 货品编号 */
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("noticeNumber", getNoticeNumber())
+                .append("noticeDate", getNoticeDate())
+                .append("salesman", getSalesman())
+                .append("customerId", getCustomerId())
+                .append("drawer", getDrawer())
+                .append("dispatchNoteRemark", getDispatchNoteRemark())
+                .append("billingType", getBillingType())
+                .append("truckRegistration", getTruckRegistration())
+                .append("documentType", getDocumentType())
+                .append("sellingUnit", getSellingUnit())
+                .append("calculationType", getCalculationType())
+                .append("auditOpinion", getAuditOpinion())
+                .append("status", getStatus())
+                .append("saleOrderNo", getSaleOrderNo())
+                .append("spare1", getSpare1())
+                .append("spare2", getSpare2())
+                .append("spare3", getSpare3())
+                .append("spare4", getSpare4())
+                .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("inventoryBoxNum", getInventoryBoxNum())
+                .append("inventoryWeight", getInventoryWeight())
+                .append("deliveryWarehouse", getDeliveryWarehouse())
+                .append("transferWarehouse", getTransferWarehouse())
+                .append("deliveryDate", getDeliveryDate())
+                .toString();
+    }
+
+    public static class SaleProductInfo {
+
+        /**
+         * 货品编号
+         */
         private Long productId;
 
-        /** 编码 */
+        /**
+         * 编码
+         */
         private String productCode;
 
-        /** 品名 */
+        /**
+         * 品名
+         */
         private String productName;
 
-        /** 规格 */
+        /**
+         * 规格
+         */
         private String productSpecifications;
 
-        /** 批号 */
+        /**
+         * 批号
+         */
         private String lotNum;
 
-        /** 等级 */
+        /**
+         * 等级
+         */
         private String levels;
 
-        /** 箱数 */
+        /**
+         * 箱数
+         */
         private Integer boxNum;
 
-        /** 重量 */
+        /**
+         * 重量
+         */
         private Double weight;
 
-        /** 单价 */
+        /**
+         * 单价
+         */
         private Double unitPrice;
 
-        /** 销售金额 */
+        /**
+         * 销售金额
+         */
         private Double saleAmount;
 
-        /** 色泽 */
+        /**
+         * 色泽
+         */
         private String productColor;
 
-        /** 类型 */
+        /**
+         * 类型
+         */
         private String productType;
 
-        /** 底价 */
+        /**
+         * 底价
+         */
         private Double bottomPrice;
 
-        /** 备注 */
+        /**
+         * 备注
+         */
         private String productRemark;
 
-        /** 实发箱数 */
+        /**
+         * 实发箱数
+         */
         private Integer actualBoxNum;
 
-        /** 实发重量 */
+        /**
+         * 实发重量
+         */
         private Double actualWeight;
 
-        /** 码单号 */
+        /**
+         * 老库存实发箱数
+         */
+        private Integer oldActualBoxNum;
+
+        /**
+         * 老库存实发重量
+         */
+        private Double oldActualWeight;
+
+
+        /**
+         * 码单号
+         */
         private String qrCode;
 
         public String getProductCode() {
@@ -611,6 +692,22 @@ public class ProductInvoiceVO extends BaseEntity
         public void setQrCode(String qrCode) {
             this.qrCode = qrCode;
         }
+
+        public Integer getOldActualBoxNum() {
+            return oldActualBoxNum;
+        }
+
+        public void setOldActualBoxNum(Integer oldActualBoxNum) {
+            this.oldActualBoxNum = oldActualBoxNum;
+        }
+
+        public Double getOldActualWeight() {
+            return oldActualWeight;
+        }
+
+        public void setOldActualWeight(Double oldActualWeight) {
+            this.oldActualWeight = oldActualWeight;
+        }
     }
 
 }

+ 54 - 39
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/SaleOrderVO.java

@@ -129,6 +129,16 @@ public class SaleOrderVO {
     /** 查询参数 */
     private String queryParam;
 
+    private int oldInventoryState;
+
+    public int getOldInventoryState() {
+        return oldInventoryState;
+    }
+
+    public void setOldInventoryState(int oldInventoryState) {
+        this.oldInventoryState = oldInventoryState;
+    }
+
     public String getQueryParam() {
         return queryParam;
     }
@@ -452,44 +462,49 @@ public class SaleOrderVO {
 
     @Override
     public String toString() {
-        return "SaleOrderVO{" +
-                "id=" + id +
-                ", saleNo='" + saleNo + '\'' +
-                ", saleCustomNo='" + saleCustomNo + '\'' +
-                ", saleDate='" + saleDate + '\'' +
-                ", saleEstimatedTime=" + saleEstimatedTime +
-                ", saleLeadTime='" + saleLeadTime + '\'' +
-                ", saleProductsNo='" + saleProductsNo + '\'' +
-                ", saleAmounts=" + saleAmounts +
-                ", saleAmountInWords='" + saleAmountInWords + '\'' +
-                ", salePayType='" + salePayType + '\'' +
-                ", saleOrderEstimatedTime='" + saleOrderEstimatedTime + '\'' +
-                ", saleOrderTechnologyNo='" + saleOrderTechnologyNo + '\'' +
-                ", salesman='" + salesman + '\'' +
-                ", saleLeader='" + saleLeader + '\'' +
-                ", finance='" + finance + '\'' +
-                ", production='" + production + '\'' +
-                ", saleApprover='" + saleApprover + '\'' +
-                ", status='" + status + '\'' +
-                ", orderType='" + orderType + '\'' +
-                ", createById=" + createById +
-                ", updateById=" + updateById +
-                ", taskProcessKey='" + taskProcessKey + '\'' +
-                ", taskNodeKey='" + taskNodeKey + '\'' +
-                ", processKey='" + processKey + '\'' +
-                ", earnestMoney='" + earnestMoney + '\'' +
-                ", deliveryDate='" + deliveryDate + '\'' +
-                ", lotNumber='" + lotNumber + '\'' +
-                ", completionTime=" + completionTime +
-                ", processingUnit='" + processingUnit + '\'' +
-                ", contactPerson='" + contactPerson + '\'' +
-                ", address='" + address + '\'' +
-                ", saleProductsList=" + saleProductsList +
-                ", saleCraft=" + saleCraft +
-                ", idList=" + idList +
-                ", customName='" + customName + '\'' +
-                ", remark='" + remark + '\'' +
-                ", truckRegistration='" + truckRegistration + '\'' +
-                '}';
+        final StringBuilder sb = new StringBuilder("SaleOrderVO{");
+        sb.append("id=").append(id);
+        sb.append(", saleNo='").append(saleNo).append('\'');
+        sb.append(", saleCustomNo='").append(saleCustomNo).append('\'');
+        sb.append(", saleDate='").append(saleDate).append('\'');
+        sb.append(", saleEstimatedTime=").append(saleEstimatedTime);
+        sb.append(", saleLeadTime='").append(saleLeadTime).append('\'');
+        sb.append(", saleProductsNo='").append(saleProductsNo).append('\'');
+        sb.append(", saleAmounts=").append(saleAmounts);
+        sb.append(", saleAmountInWords='").append(saleAmountInWords).append('\'');
+        sb.append(", salePayType='").append(salePayType).append('\'');
+        sb.append(", saleOrderEstimatedTime='").append(saleOrderEstimatedTime).append('\'');
+        sb.append(", saleOrderTechnologyNo='").append(saleOrderTechnologyNo).append('\'');
+        sb.append(", salesman='").append(salesman).append('\'');
+        sb.append(", saleLeader='").append(saleLeader).append('\'');
+        sb.append(", finance='").append(finance).append('\'');
+        sb.append(", production='").append(production).append('\'');
+        sb.append(", saleApprover='").append(saleApprover).append('\'');
+        sb.append(", status='").append(status).append('\'');
+        sb.append(", orderType='").append(orderType).append('\'');
+        sb.append(", createById=").append(createById);
+        sb.append(", updateById=").append(updateById);
+        sb.append(", taskProcessKey='").append(taskProcessKey).append('\'');
+        sb.append(", taskNodeKey='").append(taskNodeKey).append('\'');
+        sb.append(", processKey='").append(processKey).append('\'');
+        sb.append(", earnestMoney='").append(earnestMoney).append('\'');
+        sb.append(", deliveryDate='").append(deliveryDate).append('\'');
+        sb.append(", lotNumber='").append(lotNumber).append('\'');
+        sb.append(", completionTime=").append(completionTime);
+        sb.append(", processingUnit='").append(processingUnit).append('\'');
+        sb.append(", contactPerson='").append(contactPerson).append('\'');
+        sb.append(", address='").append(address).append('\'');
+        sb.append(", saleProductsList=").append(saleProductsList);
+        sb.append(", saleCraft=").append(saleCraft);
+        sb.append(", idList=").append(idList);
+        sb.append(", customName='").append(customName).append('\'');
+        sb.append(", remark='").append(remark).append('\'');
+        sb.append(", truckRegistration='").append(truckRegistration).append('\'');
+        sb.append(", materialType='").append(materialType).append('\'');
+        sb.append(", outsourceSalePayType='").append(outsourceSalePayType).append('\'');
+        sb.append(", queryParam='").append(queryParam).append('\'');
+        sb.append(", oldInventoryState=").append(oldInventoryState);
+        sb.append('}');
+        return sb.toString();
     }
 }

+ 70 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/OldProductOutboundRecordMapper.java

@@ -0,0 +1,70 @@
+package com.zkqy.business.mapper;
+
+import com.zkqy.business.domain.OldProductOutboundRecord;
+
+import java.util.List;
+
+
+/**
+ * 成品出库记录(老库存)Mapper接口
+ *
+ * @author hzh
+ * @date 2024-07-11
+ */
+public interface OldProductOutboundRecordMapper {
+    /**
+     * 查询成品出库记录(老库存)
+     *
+     * @param id 成品出库记录(老库存)主键
+     * @return 成品出库记录(老库存)
+     */
+    public OldProductOutboundRecord selectOldProductOutboundRecordById(Long id);
+
+    /**
+     * 查询成品出库记录(老库存)列表
+     *
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 成品出库记录(老库存)集合
+     */
+    public List<OldProductOutboundRecord> selectOldProductOutboundRecordList(OldProductOutboundRecord oldProductOutboundRecord);
+
+    /**
+     * 出库明细列表
+     *
+     * @param SaleOrderNo 销售单编号
+     * @return 成品出库记录(老库存)集合
+     */
+    public List<OldProductOutboundRecord> selectOldProductOutboundRecordListByOrderNo(String SaleOrderNo);
+
+    /**
+     * 新增成品出库记录(老库存)
+     *
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 结果
+     */
+    public int insertOldProductOutboundRecord(OldProductOutboundRecord oldProductOutboundRecord);
+
+    /**
+     * 修改成品出库记录(老库存)
+     *
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 结果
+     */
+    public int updateOldProductOutboundRecord(OldProductOutboundRecord oldProductOutboundRecord);
+
+    /**
+     * 删除成品出库记录(老库存)
+     *
+     * @param id 成品出库记录(老库存)主键
+     * @return 结果
+     */
+    public int deleteOldProductOutboundRecordById(Long id);
+
+    /**
+     * 批量删除成品出库记录(老库存)
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteOldProductOutboundRecordByIds(Long[] ids);
+}

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

@@ -74,6 +74,11 @@ public interface ProductInventoryMapper {
      */
     ProductInventory selectProductInventoryByLotNumAndProductId(ProductInventory productInventory);
 
+    /**
+     * 根据批次货品货品编号查询库存货品箱数净重(老货品)
+     */
+    List<ProductInventory> oldselectProductInventoryByLotNumAndProductId(ProductInventory productInventory);
+
     /**
      * 查询综合库存列表
      */

+ 71 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IOldProductOutboundRecordService.java

@@ -0,0 +1,71 @@
+package com.zkqy.business.service;
+
+import com.zkqy.business.domain.OldProductOutboundRecord;
+
+import java.util.List;
+
+/**
+ * 成品出库记录(老库存)Service接口
+ * 
+ * @author hzh
+ * @date 2024-07-11
+ */
+public interface IOldProductOutboundRecordService 
+{
+    /**
+     * 查询成品出库记录(老库存)
+     * 
+     * @param id 成品出库记录(老库存)主键
+     * @return 成品出库记录(老库存)
+     */
+    public OldProductOutboundRecord selectOldProductOutboundRecordById(Long id);
+
+    /**
+     * 查询成品出库记录(老库存)列表
+     * 
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 成品出库记录(老库存)集合
+     */
+    public List<OldProductOutboundRecord> selectOldProductOutboundRecordList(OldProductOutboundRecord oldProductOutboundRecord);
+
+
+    /**
+     * 出库明细列表
+     *
+     * @param SaleOrderNo 销售单编号
+     * @return 成品出库记录(老库存)集合
+     */
+    public List<OldProductOutboundRecord> selectOldProductOutboundRecordListByOrderNo(String SaleOrderNo);
+
+    /**
+     * 新增成品出库记录(老库存)
+     * 
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 结果
+     */
+    public int insertOldProductOutboundRecord(OldProductOutboundRecord oldProductOutboundRecord);
+
+    /**
+     * 修改成品出库记录(老库存)
+     * 
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 结果
+     */
+    public int updateOldProductOutboundRecord(OldProductOutboundRecord oldProductOutboundRecord);
+
+    /**
+     * 批量删除成品出库记录(老库存)
+     * 
+     * @param ids 需要删除的成品出库记录(老库存)主键集合
+     * @return 结果
+     */
+    public int deleteOldProductOutboundRecordByIds(Long[] ids);
+
+    /**
+     * 删除成品出库记录(老库存)信息
+     * 
+     * @param id 成品出库记录(老库存)主键
+     * @return 结果
+     */
+    public int deleteOldProductOutboundRecordById(Long id);
+}

+ 11 - 2
zkqy-custom-business/src/main/java/com/zkqy/business/service/IProductInventoryService.java

@@ -87,7 +87,7 @@ public interface IProductInventoryService {
     /**
      * 获取货品库存箱数重量/1:销售单;2:零售单
      */
-    Map<String,Object> getProductInventory(ProductInventory productInventory);
+    Map<String, Object> getProductInventory(ProductInventory productInventory);
 
     /**
      * 综合库存列表
@@ -104,10 +104,11 @@ public interface IProductInventoryService {
 
     /**
      * 统计库存各个类型下等级货品重量
+     *
      * @param productType 产品类型
      * @return
      */
-    Map<String,Object> statisticsSuttleByLevels(String productType);
+    Map<String, Object> statisticsSuttleByLevels(String productType);
 
     /**
      * 退库
@@ -115,4 +116,12 @@ public interface IProductInventoryService {
      * @return
      */
     AjaxResult returnStorage(List<ProductCodeListVO> productCodeListVOList);
+
+    /**
+     * 老库存出库
+     *
+     * @param productInvoice
+     * @return
+     */
+    AjaxResult oldNoticeOutStorage(ProductInvoice productInvoice);
 }

+ 97 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/OldProductOutboundRecordServiceImpl.java

@@ -0,0 +1,97 @@
+package com.zkqy.business.service.impl;
+
+import java.util.Collections;
+import java.util.List;
+
+import com.zkqy.business.domain.OldProductOutboundRecord;
+import com.zkqy.business.mapper.OldProductOutboundRecordMapper;
+import com.zkqy.business.service.IOldProductOutboundRecordService;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 成品出库记录(老库存)Service业务层处理
+ *
+ * @author hzh
+ * @date 2024-07-11
+ */
+@Service
+public class OldProductOutboundRecordServiceImpl implements IOldProductOutboundRecordService {
+    @Autowired
+    private OldProductOutboundRecordMapper oldProductOutboundRecordMapper;
+
+    /**
+     * 查询成品出库记录(老库存)
+     *
+     * @param id 成品出库记录(老库存)主键
+     * @return 成品出库记录(老库存)
+     */
+    @Override
+    public OldProductOutboundRecord selectOldProductOutboundRecordById(Long id) {
+        return oldProductOutboundRecordMapper.selectOldProductOutboundRecordById(id);
+    }
+
+    /**
+     * 查询成品出库记录(老库存)列表
+     *
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 成品出库记录(老库存)
+     */
+    @Override
+    public List<OldProductOutboundRecord> selectOldProductOutboundRecordList(OldProductOutboundRecord oldProductOutboundRecord) {
+        return oldProductOutboundRecordMapper.selectOldProductOutboundRecordList(oldProductOutboundRecord);
+    }
+
+    @Override
+    public List<OldProductOutboundRecord> selectOldProductOutboundRecordListByOrderNo(String SaleOrderNo) {
+        return oldProductOutboundRecordMapper.selectOldProductOutboundRecordListByOrderNo(SaleOrderNo);
+//                Collections.emptyList();
+    }
+
+    /**
+     * 新增成品出库记录(老库存)
+     *
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 结果
+     */
+    @Override
+    public int insertOldProductOutboundRecord(OldProductOutboundRecord oldProductOutboundRecord) {
+        oldProductOutboundRecord.setCreateTime(DateUtils.getNowDate());
+        return oldProductOutboundRecordMapper.insertOldProductOutboundRecord(oldProductOutboundRecord);
+    }
+
+    /**
+     * 修改成品出库记录(老库存)
+     *
+     * @param oldProductOutboundRecord 成品出库记录(老库存)
+     * @return 结果
+     */
+    @Override
+    public int updateOldProductOutboundRecord(OldProductOutboundRecord oldProductOutboundRecord) {
+        oldProductOutboundRecord.setUpdateTime(DateUtils.getNowDate());
+        return oldProductOutboundRecordMapper.updateOldProductOutboundRecord(oldProductOutboundRecord);
+    }
+
+    /**
+     * 批量删除成品出库记录(老库存)
+     *
+     * @param ids 需要删除的成品出库记录(老库存)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOldProductOutboundRecordByIds(Long[] ids) {
+        return oldProductOutboundRecordMapper.deleteOldProductOutboundRecordByIds(ids);
+    }
+
+    /**
+     * 删除成品出库记录(老库存)信息
+     *
+     * @param id 成品出库记录(老库存)主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOldProductOutboundRecordById(Long id) {
+        return oldProductOutboundRecordMapper.deleteOldProductOutboundRecordById(id);
+    }
+}

+ 158 - 11
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/ProductInventoryServiceImpl.java

@@ -8,7 +8,9 @@ import java.util.Map;
 
 import com.zkqy.business.domain.*;
 import com.zkqy.business.domain.vo.ProductCodeListVO;
+import com.zkqy.business.domain.vo.ProductInvoiceVO;
 import com.zkqy.business.mapper.*;
+import com.zkqy.business.service.IOldProductOutboundRecordService;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.utils.DateUtils;
 import com.zkqy.common.utils.SecurityUtils;
@@ -47,6 +49,8 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
     @Autowired
     private SaleOrderMapper saleOrderMapper;
 
+    @Autowired
+    private IOldProductOutboundRecordService oldProductOutboundRecordService;
 
     /**
      * 查询产品库存
@@ -269,7 +273,6 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
         List<ProductOutboundRecord> productOutboundRecords = productOutboundRecordMapper.selectProductOutboundRecordList(productOutboundRecord1);
 
 
-
         // 循环插入出库记录
         for (ProductHandsetOutboundRecord productHandsetOutboundRecord1 : productHandsetOutboundRecords) {
 
@@ -341,7 +344,7 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
         //当前码单是否已出库
         ProductHandsetOutboundRecord productHandsetOutboundRecord = productHandsetOutboundRecordMapper
                 .selectWhetherExist(productCodeListVO.getQrCode(), productCodeListVO.getQrCodeId());
-        if(productHandsetOutboundRecord != null){
+        if (productHandsetOutboundRecord != null) {
             return AjaxResult.warn("当前货品已出库,不可删除!");
         }
 
@@ -400,6 +403,9 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
 
     @Override
     public List<ProductCodeListVO> comprehensiveInventoryList(ProductCodeListVO productCodeListVO) {
+        if (productCodeListVO.getInventoryType() != null && productCodeListVO.getInventoryType().equals("2")) {
+            return productInventoryMapper.selectComprehensiveInventoryListTwo(productCodeListVO);
+        }
         if (productCodeListVO.getIsLotNum()) {  // 是否累加批次库存
             return productInventoryMapper.selectComprehensiveInventoryListTwo(productCodeListVO);
         } else {
@@ -420,16 +426,16 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
         List<Map<String, Object>> productDetailList = new ArrayList<>();
 
         List<Map<String, Object>> mapList = productInventoryMapper.statisticsSuttleByLevels(productType);
-        for (Map<String, Object> map : mapList){
+        for (Map<String, Object> map : mapList) {
             productNameList.add(map.get("name").toString());
-            Map<String,Object> productDetail = new HashMap<>();
-            productDetail.put("name",map.get("name"));
-            productDetail.put("data",map.get("suttle"));
+            Map<String, Object> productDetail = new HashMap<>();
+            productDetail.put("name", map.get("name"));
+            productDetail.put("data", map.get("suttle"));
             productDetailList.add(productDetail);
         }
-        Map<String,Object> result = new HashMap<>();
-        result.put("products",productNameList);
-        result.put("output",productDetailList);
+        Map<String, Object> result = new HashMap<>();
+        result.put("products", productNameList);
+        result.put("output", productDetailList);
         return result;
     }
 
@@ -437,10 +443,10 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
     @Override
     public AjaxResult returnStorage(List<ProductCodeListVO> productCodeListVOList) {
 
-        for (ProductCodeListVO productCodeListVO : productCodeListVOList){
+        for (ProductCodeListVO productCodeListVO : productCodeListVOList) {
             // 判断当前货品是否已出库,出库删除出库记录
             ProductOutboundRecord productOutboundRecord = productOutboundRecordMapper.selectProductOutboundRecordByQrCodeId(productCodeListVO.getQrCodeId());
-            if (productOutboundRecord == null){
+            if (productOutboundRecord == null) {
                 return AjaxResult.warn("当前货品未出库");
             }
             // 库存累加
@@ -464,6 +470,147 @@ public class ProductInventoryServiceImpl implements IProductInventoryService {
         return AjaxResult.success();
     }
 
+    @Override
+    public AjaxResult oldNoticeOutStorage(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());
+        productInvoiceMapper.updateProductInvoice(productInvoice1);
+
+        // 减去手动输入的老库存,当前订单出库
+        for (ProductInvoiceVO.SaleProductInfo item : productInvoice.getOldProductInvoiceList()) {
+
+            // 新增老货品出库记录
+            OldProductOutboundRecord oldProductOutboundRecord = new OldProductOutboundRecord();
+            oldProductOutboundRecord.setSaleOrderNo(productInvoice.getSaleOrderNo());
+            oldProductOutboundRecord.setProductNo(item.getProductCode());
+            oldProductOutboundRecord.setActualBoxnum(item.getOldActualBoxNum().toString());
+            oldProductOutboundRecord.setActualWeight(item.getOldActualWeight().toString());
+            oldProductOutboundRecord.setProductColor(item.getProductColor());
+            oldProductOutboundRecord.setProductName(item.getProductName());
+            oldProductOutboundRecord.setProductSpecifications(item.getProductSpecifications());
+            oldProductOutboundRecord.setLevels(item.getLevels());
+            oldProductOutboundRecord.setDelFlag("0");
+            oldProductOutboundRecordService.insertOldProductOutboundRecord(oldProductOutboundRecord);
+
+
+            // 得到当前出库货品库存(老库存)
+            ProductInventory product = new ProductInventory();
+            product.setLotNum(item.getLotNum());
+            product.setProductId(item.getProductId());
+            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;
+            int del = 0;
+
+            // 循环减当前库存
+            for (int i = 0; i < productInventoryList.size(); i++) {
+                //当前库存对象
+                ProductInventory productInventory = productInventoryList.get(i);
+                // 更新库存对象
+                ProductInventory editProductInventory = new ProductInventory();
+                editProductInventory.setId(productInventory.getId());
+                //箱数
+                if (productInventory.getTotalBoxNum() - 1 < 0) {
+                    // 判断当前循环是否到达最后
+                    if (i == productInventoryList.size() - 1) {
+                        returnState = true;
+                        msg = "当前库存箱数不足";
+                    } else {
+                        del++;
+                    }
+
+                } else {
+
+                    int totalBoxNum = productInventory.getTotalBoxNum() - item.getOldActualBoxNum();
+                    // 判断当前减去
+                    if (totalBoxNum <= 0) {
+                        Math.abs(totalBoxNum);  // 当前出库还差多少箱数
+                        item.setOldActualBoxNum(Math.abs(totalBoxNum));
+                        editProductInventory.setTotalBoxNum(0);
+                    } else {
+                        editProductInventory.setTotalBoxNum(totalBoxNum);
+                        item.setOldActualBoxNum(0);
+                    }
+                }
+
+                //净重
+                if (productInventory.getTotalSuttle() - item.getOldActualBoxNum() < 0) {
+                    // 判断当前循环是否到达最后
+                    if (i == productInventoryList.size() - 1) {
+                        returnState = true;
+                        msg = "当前库存重量不足";
+                    } else {
+                        del++;
+                    }
+                } else {
+                    Double totalSuttle = handlingWeight(productInventory.getTotalSuttle() - item.getOldActualWeight());
+                    if (totalSuttle <= 0.0) {
+//                        Math.abs(totalSuttle);
+                        item.setOldActualWeight(Math.abs(totalSuttle));
+                        editProductInventory.setTotalSuttle(0.0);
+                    } else {
+                        editProductInventory.setTotalSuttle(totalSuttle);
+                        item.setOldActualWeight(0.0);
+                    }
+                }
+
+                //                //毛重
+                //                if (productInventory.getTotalGrossWeight() - item.getOldActualWeight() < 0) {
+                //                    // 判断当前循环是否到达最后
+                //                    if (i == productInventoryList.size() - 1) {
+                //                        returnState = true;
+                //                        msg = "当前库存毛重不足";
+                //                    }
+                //                } else {
+                //                    Double totalGrossWeight = handlingWeight(productInventory.getTotalGrossWeight() - item.getOldActualWeight());
+                //                    if (totalGrossWeight <= 0.0) {
+                //                        item.setOldActualWeight(Math.abs(totalGrossWeight));
+                //                        editProductInventory.setTotalSuttle(0.0);
+                //                    } else {
+                //                        editProductInventory.setTotalGrossWeight(totalGrossWeight);
+                //                    }
+                //                }
+
+                if (del == 2) {
+                    editProductInventory.setDelFlag("2");
+                }
+                productInventoryMapper.updateProductInventory(editProductInventory);
+            }
+
+            if (returnState) {
+                return AjaxResult.error(msg);
+            }
+            // 外层
+        }
+
+        //修改销售单状态为已完成
+        //查询通知单详情获取
+        ProductInvoice productInvoice2 = productInvoiceMapper.selectProductInvoiceById(productInvoice.getId());
+        //判断当前订单是否为零售单
+        SaleOrder saleOrder1 = saleOrderMapper.selectSaleOrderBySaleNo(productInvoice2.getSaleOrderNo());
+        // 更新销售单状态-》
+        SaleOrder saleOrder = new SaleOrder();
+        saleOrder.setSaleNo(productInvoice2.getSaleOrderNo());
+        // 已完成状态
+        saleOrder.setStatus("6");
+        saleOrder.setOldInventoryState(2);  // 标识当前出库订单为老库存
+        saleOrderMapper.updateSaleOrderBySaleNo(saleOrder);
+        return AjaxResult.success();
+    }
 
     //保留两位小数
     public Double handlingWeight(Double weight) {

+ 207 - 0
zkqy-custom-business/src/main/resources/mapper/business/OldProductOutboundRecordMapper.xml

@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zkqy.business.mapper.OldProductOutboundRecordMapper">
+
+    <resultMap type="com.zkqy.business.domain.OldProductOutboundRecord" id="OldProductOutboundRecordResult">
+        <result property="id" column="id"/>
+        <result property="saleOrderNo" column="sale_order_no"/>
+        <result property="productNo" column="product_no"/>
+        <result property="productName" column="product_name"/>
+        <result property="productSpecifications" column="product_specifications"/>
+        <result property="productColor" column="product_color"/>
+        <result property="lotNum" column="lot_num"/>
+        <result property="levels" column="levels"/>
+        <result property="orderWeight" column="order_weight"/>
+        <result property="actualWeight" column="actual_weight"/>
+        <result property="actualBoxnum" column="actual_boxnum"/>
+        <result property="remark" column="remark"/>
+        <result property="createById" column="create_by_id"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateById" column="update_by_id"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="dataApprovalStatus" column="data_approval_status"/>
+        <result property="processKey" column="process_key"/>
+        <result property="taskProcessKey" column="task_process_key"/>
+        <result property="taskNodeKey" column="task_node_key"/>
+        <result property="productUnitPrice" column="product_unit_price"/>
+    </resultMap>
+
+    <sql id="selectOldProductOutboundRecordVo">
+        select id,
+               sale_order_no,
+               product_no,
+               product_name,
+               product_specifications,
+               product_color,
+               lot_num,
+               levels,
+               order_weight,
+               actual_weight,
+               actual_boxnum,
+               remark,
+               create_by_id,
+               create_by,
+               create_time,
+               update_by_id,
+               update_by,
+               update_time,
+               del_flag,
+               data_approval_status,
+               process_key,
+               task_process_key,
+               task_node_key
+        from {DBNAME}.old_product_outbound_record
+    </sql>
+
+    <select id="selectOldProductOutboundRecordList" parameterType="com.zkqy.business.domain.OldProductOutboundRecord"
+            resultMap="OldProductOutboundRecordResult">
+        <include refid="selectOldProductOutboundRecordVo"/>
+        <where>
+            <if test="saleOrderNo != null  and saleOrderNo != ''">and sale_order_no = #{saleOrderNo}</if>
+            <if test="productNo != null  and productNo != ''">and product_no = #{productNo}</if>
+            <if test="productName != null  and productName != ''">and product_name like concat('%', #{productName},
+                '%')
+            </if>
+            <if test="productSpecifications != null  and productSpecifications != ''">and product_specifications =
+                #{productSpecifications}
+            </if>
+            <if test="productColor != null  and productColor != ''">and product_color = #{productColor}</if>
+            <if test="lotNum != null  and lotNum != ''">and lot_num = #{lotNum}</if>
+            <if test="levels != null  and levels != ''">and levels = #{levels}</if>
+            <if test="orderWeight != null  and orderWeight != ''">and order_weight = #{orderWeight}</if>
+            <if test="actualWeight != null  and actualWeight != ''">and actual_weight = #{actualWeight}</if>
+            <if test="actualBoxnum != null  and actualBoxnum != ''">and actual_boxnum = #{actualBoxnum}</if>
+            <if test="createById != null ">and create_by_id = #{createById}</if>
+            <if test="updateById != null ">and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''">and data_approval_status =
+                #{dataApprovalStatus}
+            </if>
+            <if test="processKey != null  and processKey != ''">and process_key = #{processKey}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''">and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''">and task_node_key = #{taskNodeKey}</if>
+        </where>
+    </select>
+
+    <select id="selectOldProductOutboundRecordListByOrderNo" parameterType="com.zkqy.business.domain.OldProductOutboundRecord" resultMap="OldProductOutboundRecordResult">
+        select sp.product_unit_price,
+               old.sale_order_no,
+               old.product_no,
+               old.product_name,
+               old.product_specifications,
+               old.product_color,
+               old.lot_num,
+               old.levels,
+               old.order_weight,
+               old.actual_weight,
+               old.actual_boxnum
+        from {DBNAME}.old_product_outbound_record as old
+        inner join {DBNAME}.sale_products sp
+        on sp.sale_order_no = old.sale_order_no
+        where old.del_flag = '0' and old.sale_order_no = #{saleOrderNo}
+    </select>
+
+    <select id="selectOldProductOutboundRecordById" parameterType="Long" resultMap="OldProductOutboundRecordResult">
+        <include refid="selectOldProductOutboundRecordVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertOldProductOutboundRecord" parameterType="com.zkqy.business.domain.OldProductOutboundRecord"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.old_product_outbound_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="saleOrderNo != null">sale_order_no,</if>
+            <if test="productNo != null">product_no,</if>
+            <if test="productName != null">product_name,</if>
+            <if test="productSpecifications != null">product_specifications,</if>
+            <if test="productColor != null">product_color,</if>
+            <if test="lotNum != null">lot_num,</if>
+            <if test="levels != null">levels,</if>
+            <if test="orderWeight != null">order_weight,</if>
+            <if test="actualWeight != null">actual_weight,</if>
+            <if test="actualBoxnum != null">actual_boxnum,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="saleOrderNo != null">#{saleOrderNo},</if>
+            <if test="productNo != null">#{productNo},</if>
+            <if test="productName != null">#{productName},</if>
+            <if test="productSpecifications != null">#{productSpecifications},</if>
+            <if test="productColor != null">#{productColor},</if>
+            <if test="lotNum != null">#{lotNum},</if>
+            <if test="levels != null">#{levels},</if>
+            <if test="orderWeight != null">#{orderWeight},</if>
+            <if test="actualWeight != null">#{actualWeight},</if>
+            <if test="actualBoxnum != null">#{actualBoxnum},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+        </trim>
+    </insert>
+
+    <update id="updateOldProductOutboundRecord" parameterType="com.zkqy.business.domain.OldProductOutboundRecord">
+        update {DBNAME}.old_product_outbound_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="saleOrderNo != null">sale_order_no = #{saleOrderNo},</if>
+            <if test="productNo != null">product_no = #{productNo},</if>
+            <if test="productName != null">product_name = #{productName},</if>
+            <if test="productSpecifications != null">product_specifications = #{productSpecifications},</if>
+            <if test="productColor != null">product_color = #{productColor},</if>
+            <if test="lotNum != null">lot_num = #{lotNum},</if>
+            <if test="levels != null">levels = #{levels},</if>
+            <if test="orderWeight != null">order_weight = #{orderWeight},</if>
+            <if test="actualWeight != null">actual_weight = #{actualWeight},</if>
+            <if test="actualBoxnum != null">actual_boxnum = #{actualBoxnum},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteOldProductOutboundRecordById" parameterType="Long">
+        delete
+        from {DBNAME}.old_product_outbound_record
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteOldProductOutboundRecordByIds" parameterType="String">
+        delete from {DBNAME}.old_product_outbound_record where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 162 - 101
zkqy-custom-business/src/main/resources/mapper/business/ProductInventoryMapper.xml

@@ -1,91 +1,132 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zkqy.business.mapper.ProductInventoryMapper">
-    
+
     <resultMap type="com.zkqy.business.domain.ProductInventory" id="ProductInventoryResult">
-        <result property="id"    column="id"    />
-        <result property="qrCode"    column="qr_code"    />
-        <result property="lotNum"    column="lot_num"    />
-        <result property="productId"    column="product_id"    />
-        <result property="levels"    column="levels"    />
-        <result property="canisterNum"    column="canister_num"    />
-        <result property="boxNum"    column="box_num"    />
-        <result property="suttle"    column="suttle"    />
-        <result property="productionDate"    column="production_date"    />
-        <result property="warehouseId"    column="warehouse_id"    />
-        <result property="machineTool"    column="machine_tool"    />
-        <result property="grossWeight"    column="gross_weight"    />
-        <result property="packaging"    column="packaging"    />
-        <result property="workShifts"    column="work_shifts"    />
-        <result property="foreignTradeNumber"    column="foreign_trade_number"    />
-        <result property="canisterWeight"    column="canister_weight"    />
-        <result property="boxWeight"    column="box_weight"    />
-        <result property="tubeColor"    column="tube_color"    />
-        <result property="comPort"    column="com_port"    />
-        <result property="printFormat"    column="print_format"    />
-        <result property="packagingType"    column="packaging_type"    />
-        <result property="storageLocation"    column="storage_location"    />
-        <result property="warehouseregionId"    column="warehouseregion_id"    />
-        <result property="remark"    column="remark"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createById"    column="create_by_id"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateById"    column="update_by_id"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="totalCanisterNum"    column="total_canister_num"    />
-        <result property="totalBoxNum"    column="total_box_num"    />
-        <result property="totalSuttle"    column="total_suttle"    />
-        <result property="totalGrossWeight"    column="total_gross_weight"    />
+        <result property="id" column="id"/>
+        <result property="qrCode" column="qr_code"/>
+        <result property="lotNum" column="lot_num"/>
+        <result property="productId" column="product_id"/>
+        <result property="levels" column="levels"/>
+        <result property="canisterNum" column="canister_num"/>
+        <result property="boxNum" column="box_num"/>
+        <result property="suttle" column="suttle"/>
+        <result property="productionDate" column="production_date"/>
+        <result property="warehouseId" column="warehouse_id"/>
+        <result property="machineTool" column="machine_tool"/>
+        <result property="grossWeight" column="gross_weight"/>
+        <result property="packaging" column="packaging"/>
+        <result property="workShifts" column="work_shifts"/>
+        <result property="foreignTradeNumber" column="foreign_trade_number"/>
+        <result property="canisterWeight" column="canister_weight"/>
+        <result property="boxWeight" column="box_weight"/>
+        <result property="tubeColor" column="tube_color"/>
+        <result property="comPort" column="com_port"/>
+        <result property="printFormat" column="print_format"/>
+        <result property="packagingType" column="packaging_type"/>
+        <result property="storageLocation" column="storage_location"/>
+        <result property="warehouseregionId" column="warehouseregion_id"/>
+        <result property="remark" column="remark"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createById" column="create_by_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateById" column="update_by_id"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="totalCanisterNum" column="total_canister_num"/>
+        <result property="totalBoxNum" column="total_box_num"/>
+        <result property="totalSuttle" column="total_suttle"/>
+        <result property="totalGrossWeight" column="total_gross_weight"/>
         <result property="productColour" column="product_colour"/>
         <result property="inventoryType" column="inventory_type"/>
     </resultMap>
 
     <sql id="selectProductInventoryVo">
-        select id, qr_code, lot_num, product_id, levels, canister_num, box_num, suttle, production_date, warehouse_id, 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, total_canister_num, total_box_num, total_suttle, total_gross_weight,product_colour,inventory_type from {DBNAME}.product_inventory
+        select id,
+               qr_code,
+               lot_num,
+               product_id,
+               levels,
+               canister_num,
+               box_num,
+               suttle,
+               production_date,
+               warehouse_id,
+               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,
+               total_canister_num,
+               total_box_num,
+               total_suttle,
+               total_gross_weight,
+               product_colour,
+               inventory_type
+        from {DBNAME}.product_inventory
     </sql>
 
-    <select id="selectProductInventoryList" parameterType="com.zkqy.business.domain.ProductInventory" resultMap="ProductInventoryResult">
+    <select id="selectProductInventoryList" parameterType="com.zkqy.business.domain.ProductInventory"
+            resultMap="ProductInventoryResult">
         <include refid="selectProductInventoryVo"/>
-        <where>  
-            <if test="qrCode != null  and qrCode != ''"> and qr_code = #{qrCode}</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="warehouseId != null "> and warehouse_id = #{warehouseId}</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="totalCanisterNum != null "> and total_canister_num = #{totalCanisterNum}</if>
-            <if test="totalBoxNum != null "> and total_box_num = #{totalBoxNum}</if>
-            <if test="totalSuttle != null "> and total_suttle = #{totalSuttle}</if>
-            <if test="totalGrossWeight != null "> and total_gross_weight = #{totalGrossWeight}</if>
+        <where>
+            <if test="qrCode != null  and qrCode != ''">and qr_code = #{qrCode}</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="warehouseId != null ">and warehouse_id = #{warehouseId}</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="totalCanisterNum != null ">and total_canister_num = #{totalCanisterNum}</if>
+            <if test="totalBoxNum != null ">and total_box_num = #{totalBoxNum}</if>
+            <if test="totalSuttle != null ">and total_suttle = #{totalSuttle}</if>
+            <if test="totalGrossWeight != null ">and total_gross_weight = #{totalGrossWeight}</if>
         </where>
     </select>
-    
+
     <select id="selectProductInventoryById" parameterType="Long" resultMap="ProductInventoryResult">
         <include refid="selectProductInventoryVo"/>
         where id = #{id}
     </select>
-        
-    <insert id="insertProductInventory" parameterType="com.zkqy.business.domain.ProductInventory" useGeneratedKeys="true" keyProperty="id">
+
+    <insert id="insertProductInventory" parameterType="com.zkqy.business.domain.ProductInventory"
+            useGeneratedKeys="true" keyProperty="id">
         insert into {DBNAME}.product_inventory
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="qrCode != null">qr_code,</if>
@@ -121,7 +162,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productColour != null">product_colour,</if>
             <if test="inventoryType != null">inventory_type,</if>
             del_flag
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="qrCode != null">#{qrCode},</if>
             <if test="lotNum != null">#{lotNum},</if>
@@ -156,7 +197,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="productColour != null">#{productColour},</if>
             <if test="inventoryType != null">#{inventoryType},</if>
             '0'
-         </trim>
+        </trim>
     </insert>
 
     <update id="updateProductInventory" parameterType="com.zkqy.business.domain.ProductInventory">
@@ -194,16 +235,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="totalGrossWeight != null">total_gross_weight = #{totalGrossWeight},</if>
             <if test="productColour != null">product_colour = #{productColour},</if>
             <if test="inventoryType != null">inventory_type = #{inventoryType},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
         </trim>
         where id = #{id}
     </update>
 
     <delete id="deleteProductInventoryById" parameterType="Long">
-        delete from product_inventory where id = #{id}
+        delete
+        from product_inventory
+        where id = #{id}
     </delete>
 
     <delete id="deleteProductInventoryByIds" parameterType="String">
-        delete from product_inventory where id in 
+        delete from product_inventory where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
@@ -215,40 +259,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectProductInventoryByLotNumAndProductId" resultType="com.zkqy.business.domain.ProductInventory">
-        select sum(total_box_num) as totalBoxNum,sum(total_suttle) as totalSuttle  from {DBNAME}.product_inventory
+        select sum(total_box_num) as totalBoxNum,sum(total_suttle) as totalSuttle from {DBNAME}.product_inventory
         where del_flag = '0'
         <if test="lotNum != null and lotNum != '' ">and lot_num = #{lotNum}</if>
         <if test="productId != null">and product_id = #{productId}</if>
-        <if test="productColour != null and productColour != ''"> and product_colour = #{productColour}</if>
-        <if test="inventoryType != null and inventoryType != ''"> and inventory_type = #{inventoryType}</if>
+        <if test="productColour != null and productColour != ''">and product_colour = #{productColour}</if>
+        <if test="inventoryType != null and inventoryType != ''">and inventory_type = #{inventoryType}</if>
+    </select>
+
+    <select id="oldselectProductInventoryByLotNumAndProductId" resultType="com.zkqy.business.domain.ProductInventory">
+        select * from {DBNAME}.product_inventory
+        where del_flag = '0'
+        <if test="lotNum != null and lotNum != '' ">and lot_num = #{lotNum}</if>
+        <if test="productId != null">and product_id = #{productId}</if>
+        <if test="productColour != null and productColour != ''">and product_colour = #{productColour}</if>
+        <if test="inventoryType != null and inventoryType != ''">and inventory_type = #{inventoryType}</if>
     </select>
 
     <select id="selectComprehensiveInventoryList" resultType="com.zkqy.business.domain.vo.ProductCodeListVO">
         SELECT
-            pi.product_id as productId,
-            p.product_name as productName,
-            p.product_specifications as productSpecifications,
-            p.product_type productType,
-            pi.product_colour productColor,
-            TRUNCATE ( SUM( pi.total_suttle ), 2 ) AS totalSuttle,
-            SUM( pi.total_box_num ) as totalBoxNum,
-            SUM( pi.total_canister_num ) as totalCanisterNum,
-            pi.levels,
-            GROUP_CONCAT( DISTINCT pi.lot_num SEPARATOR '、' ) AS lotNum
+        pi.product_id as productId,
+        p.product_name as productName,
+        p.product_specifications as productSpecifications,
+        p.product_type productType,
+        pi.product_colour productColor,
+        TRUNCATE ( SUM( pi.total_suttle ), 2 ) AS totalSuttle,
+        SUM( pi.total_box_num ) as totalBoxNum,
+        SUM( pi.total_canister_num ) as totalCanisterNum,
+        pi.levels,
+        GROUP_CONCAT( DISTINCT pi.lot_num SEPARATOR '、' ) AS lotNum
         FROM
-            {DBNAME}.product_inventory pi
-                LEFT JOIN {DBNAME}.production p ON pi.product_id = p.id
+        {DBNAME}.product_inventory pi
+        LEFT JOIN {DBNAME}.production p ON pi.product_id = p.id
         WHERE
-            pi.del_flag = '0'
-            <if test="productColor != null and productColor != ''">and pi.product_colour like concat('%', #{productColor}, '%')</if>
-            <if test="productId != null">and pi.product_id = #{productId}</if>
-            <if test="levels != null and levels != ''">and pi.levels = #{levels}</if>
+        pi.del_flag = '0'
+        and pi.inventory_type = #{inventoryType}
+        <if test="productColor != null and productColor != ''">and pi.product_colour like concat('%', #{productColor},
+            '%')
+        </if>
+        <if test="productId != null">and pi.product_id = #{productId}</if>
+        <if test="levels != null and levels != ''">and pi.levels = #{levels}</if>
         GROUP BY
-            pi.product_id,
-            pi.product_colour,
-            pi.levels
-        <if test="lotNum != null and lotNum != ''">HAVING GROUP_CONCAT( DISTINCT pi.lot_num SEPARATOR '、' ) like concat('%', #{lotNum}, '%')</if>
-        order by pi.qr_code  desc
+        pi.product_id,
+        pi.product_colour,
+        pi.levels
+        <if test="lotNum != null and lotNum != ''">HAVING GROUP_CONCAT( DISTINCT pi.lot_num SEPARATOR '、' ) like
+            concat('%', #{lotNum}, '%')
+        </if>
+        order by pi.qr_code desc
     </select>
 
     <select id="selectComprehensiveInventoryListTwo" resultType="com.zkqy.business.domain.vo.ProductCodeListVO">
@@ -268,6 +326,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN {DBNAME}.production p ON pi.product_id = p.id
         WHERE
         pi.del_flag = '0'
+        and pi.inventory_type = #{inventoryType}
         <if test="productColor != null and productColor != ''">and pi.product_colour like concat('%', #{productColor},
             '%')
         </if>
@@ -283,6 +342,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
 
+
+
     <insert id="batchInsertProductInventory" parameterType="com.zkqy.business.domain.ProductInventory">
         INSERT INTO {DBNAME}.product_inventory (
         qr_code,
@@ -356,12 +417,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </insert>
 
-    <select id="selectProductInventoryInfo"  resultMap="ProductInventoryResult">
+    <select id="selectProductInventoryInfo" resultMap="ProductInventoryResult">
         <include refid="selectProductInventoryVo"/>
         where del_flag = '0'
         and product_id = #{productId} and lot_num = #{lotNum}
-         and product_colour = #{productColour}
-         group by product_id,lot_num,product_colour
+        and product_colour = #{productColour}
+        group by product_id,lot_num,product_colour
     </select>
 
     <select id="statisticsSuttleByLevels" resultType="map">

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

@@ -44,6 +44,7 @@
         <result property="address" column="address"/>
         <result property="materialType" column="material_type"/>
         <result property="outsourceSalePayType" column="outsource_sale_pay_type"/>
+        <result property="oldInventoryState" column="old_inventory_state"/>
     </resultMap>
 
     <sql id="selectSaleOrderVo">
@@ -85,7 +86,8 @@
                contact_person,
                address,
                material_type,
-               outsource_sale_pay_type
+               outsource_sale_pay_type,
+               old_inventory_state
         from {DBNAME}.sale_order
     </sql>
 
@@ -310,6 +312,7 @@
         <trim prefix="SET" suffixOverrides=",">
             <if test="lotNumber != null">lot_number = #{lotNumber},</if>
             <if test="status != null">status = #{status},</if>
+            <if test="oldInventoryState != null">old_inventory_state = #{oldInventoryState},</if>
         </trim>
         where sale_no = #{saleNo}
     </update>
@@ -343,7 +346,8 @@
         so.status,
         so.order_type,
         so.delivery_date,
-        so.remark
+        so.remark,
+        so.old_inventory_state
         FROM
         {DBNAME}.sale_order so left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no
         where so.del_flag = '0' and c.del_flag = '0'

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

@@ -444,18 +444,15 @@
                pt.product_name                                      AS productName,
                pt.product_specifications                            AS productSpecifications,
                sp.product_unit_price                                AS unitPrice,
-               concat(ml.materie_encoding, ml.materie_color_number) AS productColor,
                pt.product_type                                      AS productType,
                sp.remark                                            AS productRemark,
                sp.product_number                                    AS actualWeight
         FROM {DBNAME}.sale_products sp
                         LEFT JOIN {DBNAME}.production pt
         ON sp.product_no = pt.product_no
-            left join {DBNAME}.materiel ml on sp.colour_number = ml.materiel_code
         WHERE
             sp.del_flag = '0'
           AND pt.del_flag = '0'
-          and ml.del_flag = '0'
           AND sp.sale_order_no = #{saleOrderNo}
 
     </select>

+ 7 - 7
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/CommonServiceImpl.java

@@ -80,7 +80,7 @@ public class CommonServiceImpl implements ICommonService {
         mapList.stream().forEach(map1 -> {
             map1.forEach((key, value) -> {
                 fieldNames.add(toUnderScoreCase(key));
-                if (value.toString().indexOf("file:base64:") != -1) {
+                if (value != null && value.toString().indexOf("file:base64:") != -1) {
                     // 更新数据
                     value = redisCache.getCacheList(value.toString().replace("file:base64:", ""));
                 }
@@ -433,12 +433,12 @@ public class CommonServiceImpl implements ICommonService {
         //循环前端传过来的参数 跳过 sqlkey
         AtomicReference<String> replaceSql = new AtomicReference<>(tableSql.getTableCondition());
         queryMap.forEach((k, v) -> {
-            if (!k.equals("sqlkey") && !k.equals("queryCriteriaValue")&&!k.equals("timehorizon")) { //查询第一个表的数据是不会进行任何替换的
-                    int isExistIndex = tableSql.getTableCondition().indexOf(k);
-                    replaceSql.set(tableSql.getTableCondition().replace(k, v.toString()));
-                    if (isExistIndex < 0) {
-                        isExist.set(false);
-                    }
+            if (!k.equals("sqlkey") && !k.equals("queryCriteriaValue") && !k.equals("timehorizon")) { //查询第一个表的数据是不会进行任何替换的
+                int isExistIndex = tableSql.getTableCondition().indexOf(k);
+                replaceSql.set(tableSql.getTableCondition().replace(k, v.toString()));
+                if (isExistIndex < 0) {
+                    isExist.set(false);
+                }
             }
         });
         //证明条件不对应不能让他进行查询

+ 13 - 16
zkqy-ui/src/views/orderMange/comprehensiveInventory/index.vue

@@ -1,13 +1,14 @@
 <template>
   <div class="app-container">
-    <el-form
-      :model="queryParams"
-      ref="queryForm"
-      size="small"
-      :inline="true"
-      v-show="showSearch"
-      label-width="68px"
-    >
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="库存类型" prop="inventoryType">
+        <div style="display: flex;align-items: center; ">
+          <el-select v-model="queryParams.inventoryType" @keyup.enter.native.prevent @change="handleQuery">
+            <el-option key="1" label="新库存" value="1"></el-option>
+            <el-option key="2" label="老库存" value="2"></el-option>
+          </el-select>
+        </div>
+      </el-form-item>
       <!--      <el-form-item label="批号" prop="lotNum">-->
       <!--        <el-input-->
       <!--          v-model="queryParams.lotNum"-->
@@ -31,13 +32,9 @@
             @keyup.enter.native="handleQuery"
             style="  flex: 1;  margin-right: 10px; ">
           </el-input>
-          <el-select
-            v-model="queryParams.isLotNum"
-            placeholder="是否累加库存"
-            @keyup.enter.native.prevent
-            @change="handleQuery"
-            style="width:40%">
-            <el-option
+          <el-select v-model="queryParams.isLotNum" placeholder="是否累加库存" @keyup.enter.native.prevent
+                     @change="handleQuery" style="width:40%" :disabled="queryParams.inventoryType=='2'">
+          <el-option
               key="1"
               label="累加批次库存"
               value="false">
@@ -226,6 +223,7 @@ export default {
         warehousingTime: null,
         depositor: null,
         productColor: null,
+        inventoryType: "1",
       },
       // 表单参数
       form: {},
@@ -244,7 +242,6 @@ export default {
       try {
         let proRes = await getSaleOrderProductionList();
         if (proRes.code == 200) {
-          console.log(proRes.data);
           // let { production, customer } = proRes.data.resultMap;
           this.allProductionOptions = proRes.data || [];
           this.productionOptions =