From 70b7fb9d54d12aaf10a1db95a5864e135644b957 Mon Sep 17 00:00:00 2001 From: xs Date: Thu, 15 Aug 2024 09:42:19 +0800 Subject: [PATCH] =?UTF-8?q?2.9.5=20MES:=201=E3=80=81=E9=94=80=E5=94=AE?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=89=B9=E9=87=8F=E7=BB=91=E5=AE=9A=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= =?UTF-8?q?=EF=BC=8C=E6=A0=A1=E9=AA=8C=E7=BB=91=E5=AE=9A=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E5=92=8C=E6=80=BB=E6=A6=9C=E5=AE=9A=E6=95=B0=E9=87=8F=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E6=9D=A1=E7=A0=81=E6=95=B0=E9=87=8F=202=E3=80=81?= =?UTF-8?q?=E6=9D=A1=E7=A0=81=E4=B8=AD=E5=A2=9E=E5=8A=A0=E8=A1=A5=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MesPurchaseOrderController.java | 6 +- .../controller/MesSaleOrderController.java | 2 +- .../com/hw/mes/domain/MesPurchaseOrder.java | 364 ++++++++------ .../java/com/hw/mes/domain/MesSaleOrder.java | 22 +- .../hw/mes/mapper/MesPurchaseOrderMapper.java | 9 + .../mes/service/IMesPurchaseOrderService.java | 9 +- .../impl/MesPurchaseOrderServiceImpl.java | 130 ++--- .../mapper/mes/MesPurchaseOrderMapper.xml | 57 ++- .../mapper/mes/MesSaleOrderMapper.xml | 2 + .../src/views/mes/purchaseOrder/bindOrder.vue | 2 +- .../views/mes/saleOrder/bindingPurchase.vue | 459 ++++++++++-------- hw-ui/src/views/mes/saleOrder/index.vue | 18 +- 12 files changed, 632 insertions(+), 448 deletions(-) diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java index cc03ccc1..deec4198 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java @@ -176,14 +176,14 @@ public class MesPurchaseOrderController extends BaseController /** * 保存销售订单绑定采购订单 - * @param purchaseOrderList + * @param mesSaleOrder * @return */ @RequiresPermissions("mes:purchaseOrder:bind") @Log(title = "采购订单信息", businessType = BusinessType.ALLOCATE) @PutMapping("/saveSalesBindPurchase") - public AjaxResult saveSalesBindPurchase(@RequestBody List purchaseOrderList) { - return success(mesPurchaseOrderService.saveSalesBindPurchase(purchaseOrderList)); + public AjaxResult saveSalesBindPurchase(@RequestBody MesSaleOrder mesSaleOrder) { + return success(mesPurchaseOrderService.saveSalesBindPurchase(mesSaleOrder)); } /** diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java index 74d4f0a0..4b3cc0f7 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java @@ -43,7 +43,7 @@ public class MesSaleOrderController extends BaseController public TableDataInfo list(MesSaleOrder mesSaleOrder) { startPage(); - List list = mesSaleOrderService.selectMesSaleOrderList(mesSaleOrder); + List list = mesSaleOrderService.selectMesSaleOrderJoinMaterialList(mesSaleOrder); return getDataTable(list); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java index 8bd71432..e0efc392 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java @@ -3,6 +3,7 @@ package com.hw.mes.domain; import java.math.BigDecimal; import java.util.Date; import java.util.List; +import java.util.Objects; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -19,155 +20,235 @@ import com.hw.common.core.web.domain.BaseEntity; public class MesPurchaseOrder extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键标识 */ + /** + * 主键标识 + */ private Long purchaseOrderId; - /** ERP的主键信息;对应FID */ + /** + * ERP的主键信息;对应FID + */ @Excel(name = "ERP的主键信息;对应FID") private Long erpId; - /** 对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID */ + /** + * 对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID + */ @Excel(name = "对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID") private Long fentryId; - /** 采购订单编号;对应FBillNo */ + /** + * 采购订单编号;对应FBillNo + */ @Excel(name = "采购订单编号;对应FBillNo") private String poNo; - /** 单据状态;FDocumentStatus */ + /** + * 单据状态;FDocumentStatus + */ @Excel(name = "单据状态;FDocumentStatus") private String documentStatus; - /** 物料ID,关联物料信息主键 */ + /** + * 物料ID,关联物料信息主键 + */ @Excel(name = "物料ID,关联物料信息主键") private Long materialId; - /** 物料编码;对应FMaterialId.FNumber */ + /** + * 物料编码;对应FMaterialId.FNumber + */ @Excel(name = "物料编码;对应FMaterialId.FNumber") private String materialCode; - /** 物料名称;对应FMaterialId.FName */ + /** + * 物料名称;对应FMaterialId.FName + */ @Excel(name = "物料名称;对应FMaterialId.FName") private String materialName; - /** 订单计划数量;对应FQty */ + /** + * 订单计划数量;对应FQty + */ @Excel(name = "订单计划数量;对应FQty") private BigDecimal orderAmount; - /** 完成采购数量 */ + /** + * 完成采购数量 + */ @Excel(name = "完成采购数量") private BigDecimal completeAmount; - /** 审核日期;对应FApproveDate */ + /** + * 审核日期;对应FApproveDate + */ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "审核日期;对应FApproveDate", width = 30, dateFormat = "yyyy-MM-dd") private Date approveDate; - /** ERP最后修改日期;对应FModifyDate */ + /** + * ERP最后修改日期;对应FModifyDate + */ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "ERP最后修改日期;对应FModifyDate", width = 30, dateFormat = "yyyy-MM-dd") private Date erpModifyDate; - /** 计划交货日期;对应FDeliveryDate */ + /** + * 计划交货日期;对应FDeliveryDate + */ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "计划交货日期;对应FDeliveryDate", width = 30, dateFormat = "yyyy-MM-dd") private Date planDeliveryDate; - /** 计划开始日期 */ + /** + * 计划开始日期 + */ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd") private Date beginDate; - /** 计划结束日期 */ + /** + * 计划结束日期 + */ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd") private Date endDate; - /** 订单状态(1待采购2采购中3采购完成) */ + /** + * 订单状态(1待采购2采购中3采购完成) + */ @Excel(name = "订单状态(1待采购2采购中3采购完成)") private String orderStatus; - /** 完成日期 */ + /** + * 完成日期 + */ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "完成日期", width = 30, dateFormat = "yyyy-MM-dd") private Date completeDate; - /** 是否标识:1-是;0-否 */ + /** + * 是否标识:1-是;0-否 + */ @Excel(name = "是否标识:1-是;0-否") private String isFlag; - /** 采购单位;FUnitId */ + /** + * 采购单位;FUnitId + */ @Excel(name = "采购单位;FUnitId") private Long unitId; - /** 库存单位;FStockUnitID */ + /** + * 库存单位;FStockUnitID + */ @Excel(name = "库存单位;FStockUnitID") private Long stockUnitId; - /** 计价单位;FPriceUnitID */ + /** + * 计价单位;FPriceUnitID + */ @Excel(name = "计价单位;FPriceUnitID") private Long priceUnitId; - /** 辅助属性;FAuxPropId */ + /** + * 辅助属性;FAuxPropId + */ @Excel(name = "辅助属性;FAuxPropId") private Long auxPropId; - /** 源单编号;FSrcBillNo */ + /** + * 源单编号;FSrcBillNo + */ @Excel(name = "源单编号;FSrcBillNo") private String srcBillNo; - /** 采购组织;FPurchaseOrgId */ + /** + * 采购组织;FPurchaseOrgId + */ @Excel(name = "采购组织;FPurchaseOrgId") private Long purchaseOrgId; - /** 京源项目;F_TOND_Base */ + /** + * 京源项目;F_TOND_Base + */ @Excel(name = "京源项目;F_TOND_Base") private String tondBase; - /** 供应商ID;FSupplierId */ + /** + * 供应商ID;FSupplierId + */ @Excel(name = "供应商ID;FSupplierId") private Long supplierId; - /** 采购销售订单绑定信息信息 */ + /** + * 采购销售订单绑定信息信息 + */ private List mesOrderBindList; - /**判断是否需要绑定*/ + /** + * 判断是否需要绑定 + */ private String bindFlag; - /**规格参数*/ + /** + * 规格参数 + */ private String specificationParameter; - /**物料规格*/ + /** + * 物料规格 + */ private String materialSpec; - /**销售订单主键*/ + /** + * 销售订单主键 + */ private Long saleOrderId; - /**采购销售订单绑定主键*/ + /** + * 采购销售订单绑定主键 + */ private Long orderBindId; - /** 已绑定数 */ + /** + * 已绑定数 + */ private BigDecimal boundAmount; - /** 销售订单已绑定数 */ + /** + * 销售订单已绑定数 + */ private BigDecimal saleBindAmount; - /** 安全库存数 */ + /** + * 安全库存数 + */ private BigDecimal safeAmount; - /** 条码数 */ + /** + * 条码数 + */ private BigDecimal barcodeAmount; - /** 更新绑定数量 */ + /** + * 更新绑定数量 + */ private BigDecimal updateAmount; - /** 序号 */ + /** + * 序号 + */ private Long serialNumber; - /**订单绑定的数量和条码的数量,以-分割*/ + /** + * 订单绑定的数量和条码的数量,以-分割 + */ private String orderBindBarcodeAmount; - /**安全库存绑定的数量和条码的数量,以-分割*/ + /** + * 安全库存绑定的数量和条码的数量,以-分割 + */ private String safeBindBarcodeAmount; private String batchFlag; @@ -259,248 +340,219 @@ public class MesPurchaseOrder extends BaseEntity { this.specificationParameter = specificationParameter; } - public void setPurchaseOrderId(Long purchaseOrderId) - { + public void setPurchaseOrderId(Long purchaseOrderId) { this.purchaseOrderId = purchaseOrderId; } - public Long getPurchaseOrderId() - { + public Long getPurchaseOrderId() { return purchaseOrderId; } - public void setErpId(Long erpId) - { + + public void setErpId(Long erpId) { this.erpId = erpId; } - public Long getErpId() - { + public Long getErpId() { return erpId; } - public void setFentryId(Long fentryId) - { + + public void setFentryId(Long fentryId) { this.fentryId = fentryId; } - public Long getFentryId() - { + public Long getFentryId() { return fentryId; } - public void setPoNo(String poNo) - { + + public void setPoNo(String poNo) { this.poNo = poNo; } - public String getPoNo() - { + public String getPoNo() { return poNo; } - public void setDocumentStatus(String documentStatus) - { + + public void setDocumentStatus(String documentStatus) { this.documentStatus = documentStatus; } - public String getDocumentStatus() - { + public String getDocumentStatus() { return documentStatus; } - public void setMaterialId(Long materialId) - { + + public void setMaterialId(Long materialId) { this.materialId = materialId; } - public Long getMaterialId() - { + public Long getMaterialId() { return materialId; } - public void setMaterialCode(String materialCode) - { + + public void setMaterialCode(String materialCode) { this.materialCode = materialCode; } - public String getMaterialCode() - { + public String getMaterialCode() { return materialCode; } - public void setMaterialName(String materialName) - { + + public void setMaterialName(String materialName) { this.materialName = materialName; } - public String getMaterialName() - { + public String getMaterialName() { return materialName; } - public void setOrderAmount(BigDecimal orderAmount) - { + + public void setOrderAmount(BigDecimal orderAmount) { this.orderAmount = orderAmount; } - public BigDecimal getOrderAmount() - { + public BigDecimal getOrderAmount() { return orderAmount; } - public void setCompleteAmount(BigDecimal completeAmount) - { + + public void setCompleteAmount(BigDecimal completeAmount) { this.completeAmount = completeAmount; } - public BigDecimal getCompleteAmount() - { + public BigDecimal getCompleteAmount() { return completeAmount; } - public void setApproveDate(Date approveDate) - { + + public void setApproveDate(Date approveDate) { this.approveDate = approveDate; } - public Date getApproveDate() - { + public Date getApproveDate() { return approveDate; } - public void setErpModifyDate(Date erpModifyDate) - { + + public void setErpModifyDate(Date erpModifyDate) { this.erpModifyDate = erpModifyDate; } - public Date getErpModifyDate() - { + public Date getErpModifyDate() { return erpModifyDate; } - public void setPlanDeliveryDate(Date planDeliveryDate) - { + + public void setPlanDeliveryDate(Date planDeliveryDate) { this.planDeliveryDate = planDeliveryDate; } - public Date getPlanDeliveryDate() - { + public Date getPlanDeliveryDate() { return planDeliveryDate; } - public void setBeginDate(Date beginDate) - { + + public void setBeginDate(Date beginDate) { this.beginDate = beginDate; } - public Date getBeginDate() - { + public Date getBeginDate() { return beginDate; } - public void setEndDate(Date endDate) - { + + public void setEndDate(Date endDate) { this.endDate = endDate; } - public Date getEndDate() - { + public Date getEndDate() { return endDate; } - public void setOrderStatus(String orderStatus) - { + + public void setOrderStatus(String orderStatus) { this.orderStatus = orderStatus; } - public String getOrderStatus() - { + public String getOrderStatus() { return orderStatus; } - public void setCompleteDate(Date completeDate) - { + + public void setCompleteDate(Date completeDate) { this.completeDate = completeDate; } - public Date getCompleteDate() - { + public Date getCompleteDate() { return completeDate; } - public void setIsFlag(String isFlag) - { + + public void setIsFlag(String isFlag) { this.isFlag = isFlag; } - public String getIsFlag() - { + public String getIsFlag() { return isFlag; } - public void setUnitId(Long unitId) - { + + public void setUnitId(Long unitId) { this.unitId = unitId; } - public Long getUnitId() - { + public Long getUnitId() { return unitId; } - public void setStockUnitId(Long stockUnitId) - { + + public void setStockUnitId(Long stockUnitId) { this.stockUnitId = stockUnitId; } - public Long getStockUnitId() - { + public Long getStockUnitId() { return stockUnitId; } - public void setPriceUnitId(Long priceUnitId) - { + + public void setPriceUnitId(Long priceUnitId) { this.priceUnitId = priceUnitId; } - public Long getPriceUnitId() - { + public Long getPriceUnitId() { return priceUnitId; } - public void setAuxPropId(Long auxPropId) - { + + public void setAuxPropId(Long auxPropId) { this.auxPropId = auxPropId; } - public Long getAuxPropId() - { + public Long getAuxPropId() { return auxPropId; } - public void setSrcBillNo(String srcBillNo) - { + + public void setSrcBillNo(String srcBillNo) { this.srcBillNo = srcBillNo; } - public String getSrcBillNo() - { + public String getSrcBillNo() { return srcBillNo; } - public void setPurchaseOrgId(Long purchaseOrgId) - { + + public void setPurchaseOrgId(Long purchaseOrgId) { this.purchaseOrgId = purchaseOrgId; } - public Long getPurchaseOrgId() - { + public Long getPurchaseOrgId() { return purchaseOrgId; } - public void setTondBase(String tondBase) - { + + public void setTondBase(String tondBase) { this.tondBase = tondBase; } - public String getTondBase() - { + public String getTondBase() { return tondBase; } - public void setSupplierId(Long supplierId) - { + + public void setSupplierId(Long supplierId) { this.supplierId = supplierId; } - public Long getSupplierId() - { + public Long getSupplierId() { return supplierId; } - public List getMesOrderBindList() - { + public List getMesOrderBindList() { return mesOrderBindList; } - public void setMesOrderBindList(List mesOrderBindList) - { + public void setMesOrderBindList(List mesOrderBindList) { this.mesOrderBindList = mesOrderBindList; } @@ -562,7 +614,7 @@ public class MesPurchaseOrder extends BaseEntity { @Override public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("purchaseOrderId", getPurchaseOrderId()) .append("erpId", getErpId()) .append("fentryId", getFentryId()) @@ -597,4 +649,18 @@ public class MesPurchaseOrder extends BaseEntity { .append("mesOrderBindList", getMesOrderBindList()) .toString(); } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MesPurchaseOrder that = (MesPurchaseOrder) o; + return Objects.equals(purchaseOrderId, that.purchaseOrderId) && orderAmount.compareTo(that.orderAmount) == 0 && boundAmount.compareTo(that.boundAmount) == 0 + && safeAmount.compareTo(that.safeAmount) == 0 && Objects.equals(orderBindBarcodeAmount, that.orderBindBarcodeAmount); + } + + @Override + public int hashCode() { + return Objects.hash(purchaseOrderId, orderAmount, boundAmount, safeAmount, orderBindBarcodeAmount); + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java index b9f5cc5b..d1aec517 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java @@ -2,6 +2,7 @@ package com.hw.mes.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -116,42 +117,42 @@ public class MesSaleOrder extends BaseEntity { /** * 审核日期;对应FApproveDate */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "审核日期;对应FApproveDate", width = 30, dateFormat = "yyyy-MM-dd") private Date approveDate; /** * ERP最后修改日期;对应FModifyDate */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "ERP最后修改日期;对应FModifyDate", width = 30, dateFormat = "yyyy-MM-dd") private Date erpModifyDate; /** * 计划交货日期;对应FMinPlanDeliveryDate */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "计划交货日期;对应FMinPlanDeliveryDate", width = 30, dateFormat = "yyyy-MM-dd") private Date planDeliveryDate; /** * 计划开始日期 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd") private Date beginDate; /** * 计划结束日期 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd") private Date endDate; /** * 完成日期 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @Excel(name = "完成日期", width = 30, dateFormat = "yyyy-MM-dd") private Date completeDate; @@ -170,6 +171,7 @@ public class MesSaleOrder extends BaseEntity { private Long erpMaterialId; + private List mesPurchaseOrderList; public String getMaterialModel() { return materialModel; @@ -379,6 +381,14 @@ public class MesSaleOrder extends BaseEntity { this.erpMaterialId = erpMaterialId; } + public List getMesPurchaseOrderList() { + return mesPurchaseOrderList; + } + + public void setMesPurchaseOrderList(List mesPurchaseOrderList) { + this.mesPurchaseOrderList = mesPurchaseOrderList; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java index bfa21beb..b96a344b 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.hw.mes.domain.MesOrderBind; import com.hw.mes.domain.MesPurchaseOrder; +import org.apache.ibatis.annotations.Param; /** * 采购订单信息Mapper接口 @@ -116,4 +117,12 @@ public interface MesPurchaseOrderMapper */ List selectMesPurchaseOrderJoinList(MesPurchaseOrder mesPurchaseOrder); + /** + * 查询采购订单信息,WITH绑定的数量 + * + * @param purchaseOrderId 采购订单信息主键 + * @return 采购订单信息 + */ + public MesPurchaseOrder unbindPurchaseOrderListByPurchaseAndSaleOrderId(@Param("purchaseOrderId") Long purchaseOrderId, + @Param("saleOrderId") Long saleOrderId); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java index 9d5d70ee..053f9ad4 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java @@ -1,7 +1,11 @@ package com.hw.mes.service; import java.util.List; + +import com.hw.common.core.exception.ServiceException; import com.hw.mes.domain.MesPurchaseOrder; +import com.hw.mes.domain.MesSaleOrder; +import org.springframework.transaction.annotation.Transactional; /** * 采购订单信息Service接口 @@ -100,10 +104,11 @@ public interface IMesPurchaseOrderService /** * 保存销售订单绑定采购订单 - * @param purchaseOrderList + * + * @param mesSaleOrder * @return */ - public int saveSalesBindPurchase(List purchaseOrderList); + public int saveSalesBindPurchase(MesSaleOrder mesSaleOrder); /** * 删除销售订单绑定采购订单 diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java index 66b74a9a..b43f53ad 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java @@ -287,82 +287,90 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService { /** * 保存销售订单绑定采购订单 * - * @param purchaseOrderList + * @param mesSaleOrder * @return */ @Override @Transactional(rollbackFor = ServiceException.class) - public int saveSalesBindPurchase(List purchaseOrderList) { - Long saleOrderId = purchaseOrderList.get(0).getSaleOrderId(); - if (StringUtils.isNull(saleOrderId)) { - return 0; - } - //校验数据 - checkSaveSalesBindPurchase(purchaseOrderList); - MesSaleOrder mesSaleOrder = mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(saleOrderId); - String saleorderCode = mesSaleOrder.getSaleorderCode(); - Long productId = mesSaleOrder.getMaterialId(); - String productCode = mesSaleOrder.getMaterialCode(); - String productName = mesSaleOrder.getMaterialName(); + public int saveSalesBindPurchase(MesSaleOrder mesSaleOrder) { Date currentDate = new Date(); String userName = SecurityUtils.getUsername(); - for (MesPurchaseOrder purchaseOrder : purchaseOrderList) { - Long purchaseOrderId = purchaseOrder.getPurchaseOrderId(); - MesOrderBind selectOrderBind = new MesOrderBind(); - selectOrderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); - selectOrderBind.setSaleOrderId(saleOrderId); - selectOrderBind.setPurchaseOrderId(purchaseOrderId); - List bindList = mesOrderBindMapper.selectMesOrderBindList(selectOrderBind); - if (bindList.size() == 0) { - MesOrderBind orderBind = new MesOrderBind(); - MesPurchaseOrder mesPurchaseOrder = mesPurchaseOrderMapper.selectMesPurchaseOrderByPurchaseOrderId(purchaseOrderId); - Long materialId = mesPurchaseOrder.getMaterialId(); - String materialCode = mesPurchaseOrder.getMaterialCode(); - String materialName = mesPurchaseOrder.getMaterialName(); - String poNo = mesPurchaseOrder.getPoNo(); - orderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); - orderBind.setSaleOrderId(saleOrderId); - orderBind.setSaleOrderCode(saleorderCode); - orderBind.setProductId(productId); - orderBind.setProductCode(productCode); - orderBind.setProductName(productName); - orderBind.setPurchaseOrderId(purchaseOrderId); - orderBind.setMaterialId(materialId); - orderBind.setMaterialCode(materialCode); - orderBind.setMaterialName(materialName); - orderBind.setBindAmount(purchaseOrder.getUpdateAmount()); - orderBind.setPoNo(poNo); - orderBind.setCreateTime(currentDate); - orderBind.setCreateBy(userName); - mesOrderBindMapper.insertMesOrderBind(orderBind); - } else { - MesOrderBind bind = bindList.get(0); - bind.setBindAmount(purchaseOrder.getUpdateAmount()); - bind.setUpdateBy(SecurityUtils.getUsername()); - bind.setUpdateTime(DateUtils.getNowDate()); - mesOrderBindMapper.updateMesOrderBind(bind); + List mesPurchaseOrderList = mesSaleOrder.getMesPurchaseOrderList(); + for (MesPurchaseOrder mesPurchaseOrder : mesPurchaseOrderList) { + Long purchaseOrderId = mesPurchaseOrder.getPurchaseOrderId(); + MesPurchaseOrder dbMesPurchaseOrder = mesPurchaseOrderMapper. + unbindPurchaseOrderListByPurchaseAndSaleOrderId(purchaseOrderId, mesSaleOrder.getSaleOrderId()); + if (!mesPurchaseOrder.equals(dbMesPurchaseOrder)) { + throw new ServiceException("数据有变化,请重新更新"); } + + this.checkSaveSalesBindPurchase(mesPurchaseOrder); + this.updateOrderBind(mesSaleOrder, mesPurchaseOrder, userName, currentDate); + } + return 1; } - private void checkSaveSalesBindPurchase(List purchaseOrderList) { - for (MesPurchaseOrder purchaseOrder : purchaseOrderList) { - BigDecimal boundAmount = purchaseOrder.getBoundAmount();//已绑定总数 - BigDecimal saleBindAmount = purchaseOrder.getSaleBindAmount();//销售订单已绑定数 - BigDecimal updateAmount = purchaseOrder.getUpdateAmount();//更新绑定数量 - BigDecimal orderAmount = purchaseOrder.getOrderAmount();//采购订单数量 - BigDecimal safeAmount = purchaseOrder.getSafeAmount();//安全库存数 - BigDecimal barcodeAmount = purchaseOrder.getBarcodeAmount();//条码数 - BigDecimal totalBindAmount = boundAmount.subtract(saleBindAmount).add(updateAmount); - // (已绑定总数 - 销售订单已绑定数 + 更新绑定数量) 需要小于等于 采购订单数量 - if (totalBindAmount.compareTo(orderAmount) > 0) { - throw new ServiceException("序号: " + purchaseOrder.getSerialNumber() + " 总绑定数大于订单数!"); - } + private void checkSaveSalesBindPurchase(MesPurchaseOrder purchaseOrder) { + BigDecimal orderAmount = purchaseOrder.getOrderAmount();//采购订单数量 + BigDecimal boundAmount = purchaseOrder.getBoundAmount();//已绑定总数 + BigDecimal safeAmount = purchaseOrder.getSafeAmount();//安全库存数 + + String orderBindBarcodeAmount = purchaseOrder.getOrderBindBarcodeAmount();//销售订单绑定数-销售订单条码数 + String[] orderBindBarcodeAmountArr = orderBindBarcodeAmount.split("-"); + BigDecimal orderBindAmount = new BigDecimal(orderBindBarcodeAmountArr[0]); //销售订单已绑定数 + BigDecimal orderBarcodeAmount = new BigDecimal(orderBindBarcodeAmountArr[1]);//销售订单已生成条码数量 + + BigDecimal updateAmount = purchaseOrder.getUpdateAmount();//更新绑定数量 + if (updateAmount.compareTo(orderBarcodeAmount) < 0) { + throw new ServiceException("序号: " + purchaseOrder.getSerialNumber() + "的绑定数量需不能小于销售订单条码数"); } + + // (已绑定总数 + 安全库存数 + 更新绑定数量 - 销售订单已绑定数) 需要小于等于 采购订单数量 + BigDecimal totalBindAmount = boundAmount.add(safeAmount).add(updateAmount).subtract(orderBindAmount); + if (totalBindAmount.compareTo(orderAmount) > 0) { + throw new ServiceException("序号 " + purchaseOrder.getSerialNumber() + "的总绑定数不能大于订单数"); + } + } + public void updateOrderBind(MesSaleOrder saleOrder, MesPurchaseOrder purchaseOrder, String userName, Date currentDate) { + Long purchaseOrderId = purchaseOrder.getPurchaseOrderId(); + Long saleOrderId = saleOrder.getSaleOrderId(); + MesOrderBind selectOrderBind = new MesOrderBind(); + selectOrderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); + selectOrderBind.setSaleOrderId(saleOrderId); + selectOrderBind.setPurchaseOrderId(purchaseOrderId); + List bindList = mesOrderBindMapper.selectMesOrderBindList(selectOrderBind); + if (bindList == null || bindList.isEmpty()) { + MesOrderBind orderBind = new MesOrderBind(); + orderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); + orderBind.setSaleOrderId(saleOrderId); + orderBind.setSaleOrderCode(saleOrder.getSaleorderCode()); + orderBind.setProductId(purchaseOrder.getMaterialId()); + orderBind.setProductCode(purchaseOrder.getMaterialCode()); + orderBind.setProductName(purchaseOrder.getMaterialName()); + orderBind.setPurchaseOrderId(purchaseOrderId); + orderBind.setMaterialId(saleOrder.getMaterialId()); + orderBind.setMaterialCode(saleOrder.getMaterialCode()); + orderBind.setMaterialName(saleOrder.getMaterialName()); + orderBind.setBindAmount(purchaseOrder.getUpdateAmount()); + orderBind.setPoNo(purchaseOrder.getPoNo()); + orderBind.setCreateTime(currentDate); + orderBind.setCreateBy(userName); + mesOrderBindMapper.insertMesOrderBind(orderBind); + } else { + MesOrderBind bind = bindList.get(0); + bind.setBindAmount(purchaseOrder.getUpdateAmount()); + bind.setUpdateBy(SecurityUtils.getUsername()); + bind.setUpdateTime(DateUtils.getNowDate()); + mesOrderBindMapper.updateMesOrderBind(bind); + } + } + + /** * 删除销售订单绑定采购订单 * diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml index 3cae01c5..8a66bbe2 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml @@ -254,26 +254,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mbmi.material_code, mbmi.material_name, mbmi.material_spec, + mbmi.always_flag, mpo.aux_prop_id, mpo.specification_parameter, mpo.order_amount, - (select ifnull(sum(mob.bind_amount), 0) - from mes_order_bind mob - where mob.purchase_order_id = mpo.purchase_order_id - and mob.safe_flag = '0') bound_amount, - (select ifnull(sum(mob.bind_amount), 0) - from mes_order_bind mob - where mob.purchase_order_id = mpo.purchase_order_id - and sale_order_id = #{saleOrderId} - and mob.safe_flag = '0') sale_bind_amount, + (select ifnull(sum(mob.bind_amount), 0) from mes_order_bind mob + where mob.purchase_order_id = mpo.purchase_order_id and mob.safe_flag = '0') bound_amount, + + (select concat(ifnull(sum(bind_amount),0),'-',ifnull(sum(barcode_amount),0)) from mes_order_bind mob + where mob.purchase_order_id = mpo.purchase_order_id and sale_order_id = #{saleOrderId} and mob.safe_flag = '0') order_bind_barcode_amount, + (select ifnull(sum(bind_amount), 0) from mes_order_bind mob where mob.purchase_order_id = mpo.purchase_order_id - and mob.safe_flag = '1') safe_amount, - (select ifnull(sum(mob.barcode_amount), 0) - from mes_order_bind mob - where mob.purchase_order_id = mpo.purchase_order_id - and mob.safe_flag = '1') barcode_amount + and mob.safe_flag = '1') safe_amount + from mes_purchase_order mpo left join mes_base_material_info mbmi on mbmi.erp_id = mpo.material_id @@ -282,10 +277,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and mbmi.material_name like concat('%', #{materialName}, '%') and mpo.specification_parameter like concat('%', #{specificationParameter}, '%') and mbmi.material_spec like concat('%', #{materialSpec}, '%') + and mbmi.always_flag = #{alwaysFlag} + order by mpo.erp_modify_date desc,mpo.po_no ,mpo.material_name + + + +