From 106a314a3889c291a2f7994eb8d71a8aca7fec1d Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 25 Aug 2025 09:10:20 +0800 Subject: [PATCH] =?UTF-8?q?4.2.0=201=E3=80=81bom=E5=9B=BE=E7=BA=B8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=20=E5=9B=BE=E7=BA=B8=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=BF=80=E5=85=89=E5=88=87=E5=89=B2=E5=9B=BE=E7=BA=B8?= =?UTF-8?q?=EF=BC=8C=E5=8F=AA=E4=B8=BA=E6=BF=80=E5=85=89=E5=88=87=E5=89=B2?= =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E4=BD=BF=E7=94=A8=EF=BC=9B=E5=AF=B9=E4=BA=8E?= =?UTF-8?q?=E5=B7=B2=E6=B4=BE=E5=B7=A5=E7=9A=84=E4=B8=8D=E8=83=BD=E9=9A=8F?= =?UTF-8?q?=E6=84=8F=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=9C=89?= =?UTF-8?q?=E7=95=99=E7=97=95=E3=80=82=20=20SOP=E6=94=B9=E4=B8=BA=E5=9B=BE?= =?UTF-8?q?=E7=BA=B8&SOP=EF=BC=8C=E7=BB=99=E6=89=80=E6=9C=89=E5=B7=A5?= =?UTF-8?q?=E5=BA=8F=E4=B8=8B=E8=BD=BD=E5=92=8C=E6=9F=A5=E7=9C=8B=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=EF=BC=9B=E5=AF=B9=E4=BA=8E=E6=9C=AA=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E7=9A=84=E5=8F=AF=E4=BB=A5=E9=9A=8F=E6=84=8F=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=9C=89=E7=95=99=E7=97=95=20=202?= =?UTF-8?q?=E3=80=81=E5=9B=9B=E6=A5=BC=E6=9D=BF=E6=9D=90=E5=85=A5=E5=BA=93?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E5=86=8D=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E5=BA=93=E4=BD=8D=E6=89=8D=E8=83=BD=E5=85=A5=E5=BA=93=EF=BC=8C?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E4=BA=BA=E5=91=98=E8=87=AA=E8=A1=8C=E9=80=89?= =?UTF-8?q?=E6=8B=A9=EF=BC=8C=E5=85=A5=E5=BA=93=E6=97=B6=E6=89=AB=E6=8F=8F?= =?UTF-8?q?=E5=BA=93=E4=BD=8D=E7=A0=81=E5=92=8C=E5=9B=BA=E5=AE=9A=E6=9D=A1?= =?UTF-8?q?=E7=A0=81=E5=86=8D=E8=BE=93=E5=85=A5=E6=95=B0=E9=87=8F=E7=AD=89?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=85=A5=E5=BA=93=E3=80=82=20=203=E3=80=81?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=A2=86=E6=96=99=E6=97=B6=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AEbom=E7=94=B3=E8=AF=B7=E7=9A=84=EF=BC=8C=E9=A2=86?= =?UTF-8?q?=E6=96=99=E6=95=B0=E9=87=8F=E9=BB=98=E8=AE=A4=E4=B8=BAbom?= =?UTF-8?q?=E7=9A=84=E6=A0=87=E5=87=86=E6=95=B0=E9=87=8F=E5=87=8F=E5=8E=BB?= =?UTF-8?q?=E5=B7=B2=E7=94=B3=E8=AF=B7=E7=9A=84=E6=95=B0=E9=87=8F=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=B8=94=E7=94=B3=E8=AF=B7=E6=95=B0=E9=87=8F=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=A4=A7=E4=BA=8E=E6=A0=87=E5=87=86=E6=95=B0=E9=87=8F?= =?UTF-8?q?=EF=BC=9B=E5=9C=A8=E9=9D=9Ebom=E4=B8=AD=E7=94=B3=E8=AF=B7bom?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E7=89=A9=E6=96=99=E5=BF=85=E9=A1=BB=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E9=A2=86=E6=96=99=E5=8E=9F=E5=9B=A0=20=204=E3=80=81?= =?UTF-8?q?=E4=BA=94=E6=A5=BC=E8=A3=85=E9=85=8D=E5=B7=A5=E5=BA=8F=E9=A2=86?= =?UTF-8?q?=E6=96=99=E4=B8=8D=E9=9C=80=E8=A6=81=E5=BC=80=E5=A7=8B=E5=B0=B1?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=BC=80=E5=A7=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hw/mes/api/domain/MesSaleOrderRelate.java | 11 + .../controller/MesMaterialBomController.java | 17 ++ .../controller/MesProductPlanController.java | 15 +- .../com/hw/mes/domain/MesBomAttachChange.java | 200 ++++++++++++++++++ .../com/hw/mes/domain/MesMaterialBom.java | 36 ++++ .../mes/mapper/MesBomAttachChangeMapper.java | 78 +++++++ .../hw/mes/mapper/MesMaterialBomMapper.java | 18 ++ .../mes/service/IMesMaterialBomService.java | 9 + .../mes/service/IMesProductPlanService.java | 8 + .../impl/MesBaseBarcodeInfoServiceImpl.java | 156 ++++++-------- .../impl/MesMaterialBomServiceImpl.java | 134 ++++++++++-- .../impl/MesProductPlanServiceImpl.java | 51 ++++- hw-modules/hw-wms/pom.xml | 6 - .../hw/wms/mapper/WmsStockTotalMapper.java | 13 +- .../impl/WmsRawInstockServiceImpl.java | 14 +- .../impl/WmsRawOutstockServiceImpl.java | 4 +- .../impl/WmsStockTotalServiceImpl.java | 36 +++- .../mapper/wms/WmsProductStockMapper.xml | 1 + .../mapper/wms/WmsStockTotalMapper.xml | 47 +++- hw-modules/pom.xml | 1 - hw-ui/src/api/mes/materialBom.js | 10 + hw-ui/src/api/mes/productplan.js | 11 +- .../views/board/common/applyRawOutstock.vue | 57 +++-- hw-ui/src/views/board/fifthFloor/index.vue | 49 ++++- .../views/board/fourthFloor/laserLight.vue | 32 +-- hw-ui/src/views/mes/barcode/index.vue | 89 ++++---- .../views/mes/materialBom/bomAttachChange.vue | 194 +++++++++++++++++ hw-ui/src/views/mes/materialBom/index.vue | 40 +++- .../views/mes/productplan/editProductPlan.vue | 108 +++++++--- .../mes/purchaseOrder/selectOrderBind.vue | 123 ++++++----- .../src/views/wms/info/rawoutstock/index.vue | 2 +- 31 files changed, 1256 insertions(+), 314 deletions(-) create mode 100644 hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesBomAttachChange.java create mode 100644 hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesBomAttachChangeMapper.java create mode 100644 hw-ui/src/views/mes/materialBom/bomAttachChange.vue diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesSaleOrderRelate.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesSaleOrderRelate.java index 7746316d..0bb02710 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesSaleOrderRelate.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesSaleOrderRelate.java @@ -91,6 +91,9 @@ public class MesSaleOrderRelate extends BaseEntity { */ private BigDecimal orderAmount; + private Long erpProductId;//erp的物料ID + + public void setSaleOrderRelateId(Long saleOrderRelateId) { this.saleOrderRelateId = saleOrderRelateId; } @@ -263,6 +266,14 @@ public class MesSaleOrderRelate extends BaseEntity { return virtualMaterialId + "-" + materialId; } + public Long getErpProductId() { + return erpProductId; + } + + public void setErpProductId(Long erpProductId) { + this.erpProductId = erpProductId; + } + @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/controller/MesMaterialBomController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesMaterialBomController.java index fad596dd..baec8b5c 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesMaterialBomController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesMaterialBomController.java @@ -3,7 +3,10 @@ package com.hw.mes.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.hw.common.core.web.page.TableDataInfo; import com.hw.common.security.utils.SecurityUtils; +import com.hw.mes.domain.MesBaseRoute; +import com.hw.mes.domain.MesBomAttachChange; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -135,4 +138,18 @@ public class MesMaterialBomController extends BaseController return success(mesMaterialBomService.getBomAttachInfo(attachType, materialBomIds)); } + + /** + * 关联查询物料BOM信息图纸和SOP变更记录列表,join mes_base_attach_info + * @param mesBomAttachChange + * @return + */ + @GetMapping("selectMesBomAttachChangeJoinList") + public TableDataInfo selectMesBomAttachChangeJoinList(MesBomAttachChange mesBomAttachChange) + { + startPage(); + List list = mesMaterialBomService.selectMesBomAttachChangeJoinList(mesBomAttachChange); + return getDataTable(list); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java index 14448cbf..81944559 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java @@ -325,7 +325,7 @@ public class MesProductPlanController extends BaseController { } /** - * 获取生产派工附件List列表 + * 获取生产派工附件List列表(激光切割图纸使用) * @param attachType * @param dispatchCode * @param processId @@ -338,6 +338,19 @@ public class MesProductPlanController extends BaseController { return success(mesProductPlanService.getAttachInfoList(dispatchCode, processId, userId, attachType)); } + + /** + * 获取生产派工附件List列表(SOP/图纸使用) + * @param materialBomId + * @return List + */ + @GetMapping(value = "/sopInfoList/{materialBomId}") + public AjaxResult getSopInfoList(@PathVariable("materialBomId") Long materialBomId) { + return success(mesProductPlanService.getSopInfoList(materialBomId)); + } + + + /** * 校验生产派工是否已绑定附件 * @param attachType diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesBomAttachChange.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesBomAttachChange.java new file mode 100644 index 00000000..696770bf --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesBomAttachChange.java @@ -0,0 +1,200 @@ +package com.hw.mes.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.hw.common.core.annotation.Excel; +import com.hw.common.core.web.domain.BaseEntity; + +/** + * 物料BOM信息图纸和SOP变更记录对象 mes_bom_attach_change + * + * @author xins + * @date 2025-08-22 + */ +public class MesBomAttachChange extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键标识 */ + private Long attachChangeId; + + /** 关联mes_material_bom */ + @Excel(name = "关联mes_material_bom") + private Long materialBomId; + + /** 类型(1激光切割图纸,2图纸&SOP) */ + @Excel(name = "类型(1激光切割图纸,2图纸&SOP)") + private String attachType; + + /** 旧图纸ID,关联mes_base_attach_info */ + @Excel(name = "旧图纸ID,关联mes_base_attach_info") + private Long oldAttachId; + + /** 新图纸ID,关联mes_base_attach_info */ + @Excel(name = "新图纸ID,关联mes_base_attach_info") + private Long newAttachId; + + /** 变更类型(1删除,2新增,3修改) */ + @Excel(name = "变更类型(1删除,2新增,3修改)") + private String changeType; + + /** 计划ID */ + @Excel(name = "计划ID") + private Long planId; + + /** 计划派工单号 */ + @Excel(name = "计划派工单号") + private String planCode; + + /** 更新用户ID */ + @Excel(name = "更新用户ID") + private Long changeUserId; + + /** 更新人 */ + @Excel(name = "更新人") + private String changeBy; + + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date changeTime; + + private String attachName; + + private String attachPath; + + public void setAttachChangeId(Long attachChangeId) + { + this.attachChangeId = attachChangeId; + } + + public Long getAttachChangeId() + { + return attachChangeId; + } + public void setMaterialBomId(Long materialBomId) + { + this.materialBomId = materialBomId; + } + + public Long getMaterialBomId() + { + return materialBomId; + } + + public String getAttachType() { + return attachType; + } + + public void setAttachType(String attachType) { + this.attachType = attachType; + } + + public void setOldAttachId(Long oldAttachId) + { + this.oldAttachId = oldAttachId; + } + + + public Long getOldAttachId() + { + return oldAttachId; + } + public void setNewAttachId(Long newAttachId) + { + this.newAttachId = newAttachId; + } + + public Long getNewAttachId() + { + return newAttachId; + } + public void setChangeType(String changeType) + { + this.changeType = changeType; + } + + public String getChangeType() + { + return changeType; + } + public void setPlanId(Long planId) + { + this.planId = planId; + } + + public Long getPlanId() + { + return planId; + } + public void setPlanCode(String planCode) + { + this.planCode = planCode; + } + + public String getPlanCode() + { + return planCode; + } + public void setChangeUserId(Long changeUserId) + { + this.changeUserId = changeUserId; + } + + public Long getChangeUserId() + { + return changeUserId; + } + public void setChangeBy(String changeBy) + { + this.changeBy = changeBy; + } + + public String getChangeBy() + { + return changeBy; + } + public void setChangeTime(Date changeTime) + { + this.changeTime = changeTime; + } + + public Date getChangeTime() + { + return changeTime; + } + + public String getAttachName() { + return attachName; + } + + public void setAttachName(String attachName) { + this.attachName = attachName; + } + + public String getAttachPath() { + return attachPath; + } + + public void setAttachPath(String attachPath) { + this.attachPath = attachPath; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("attachChangeId", getAttachChangeId()) + .append("materialBomId", getMaterialBomId()) + .append("oldAttachId", getOldAttachId()) + .append("newAttachId", getNewAttachId()) + .append("changeType", getChangeType()) + .append("planId", getPlanId()) + .append("planCode", getPlanCode()) + .append("changeUserId", getChangeUserId()) + .append("changeBy", getChangeBy()) + .append("changeTime", getChangeTime()) + .toString(); + } +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java index acaa3349..5b1b2a3f 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java @@ -88,6 +88,16 @@ public class MesMaterialBom extends TreeEntity { @Excel(name = "物料编码") private String materialCode; + /** + * 图纸变更标识(0否,1是) + */ + public String attachChangeFlag; + + /** + * SOP变更标识(0否,1是) + */ + private String sopChangeFlag; + /** * 物料名称&描述 */ @@ -277,6 +287,32 @@ public class MesMaterialBom extends TreeEntity { this.materialCode = materialCode; } + public String getAttachChangeFlag() { + return attachChangeFlag; + } + + public void setAttachChangeFlag(String attachChangeFlag) { + this.attachChangeFlag = attachChangeFlag; + } + + public String getSopChangeFlag() { + return sopChangeFlag; + } + + public void setSopChangeFlag(String sopChangeFlag) { + this.sopChangeFlag = sopChangeFlag; + } + + @Override + public String getAncestors() { + return ancestors; + } + + @Override + public void setAncestors(String ancestors) { + this.ancestors = ancestors; + } + public String getMaterialSpec() { return materialSpec; } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesBomAttachChangeMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesBomAttachChangeMapper.java new file mode 100644 index 00000000..2b92f3df --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesBomAttachChangeMapper.java @@ -0,0 +1,78 @@ +package com.hw.mes.mapper; + +import java.util.List; +import com.hw.mes.domain.MesBomAttachChange; + +/** + * 物料BOM信息图纸和SOP变更记录Mapper接口 + * + * @author xins + * @date 2025-08-22 + */ +public interface MesBomAttachChangeMapper +{ + /** + * 查询物料BOM信息图纸和SOP变更记录 + * + * @param attachChangeId 物料BOM信息图纸和SOP变更记录主键 + * @return 物料BOM信息图纸和SOP变更记录 + */ + public MesBomAttachChange selectMesBomAttachChangeByAttachChangeId(Long attachChangeId); + + /** + * 查询物料BOM信息图纸和SOP变更记录列表 + * + * @param mesBomAttachChange 物料BOM信息图纸和SOP变更记录 + * @return 物料BOM信息图纸和SOP变更记录集合 + */ + public List selectMesBomAttachChangeList(MesBomAttachChange mesBomAttachChange); + + /** + * 新增物料BOM信息图纸和SOP变更记录 + * + * @param mesBomAttachChange 物料BOM信息图纸和SOP变更记录 + * @return 结果 + */ + public int insertMesBomAttachChange(MesBomAttachChange mesBomAttachChange); + + /** + * 修改物料BOM信息图纸和SOP变更记录 + * + * @param mesBomAttachChange 物料BOM信息图纸和SOP变更记录 + * @return 结果 + */ + public int updateMesBomAttachChange(MesBomAttachChange mesBomAttachChange); + + /** + * 删除物料BOM信息图纸和SOP变更记录 + * + * @param attachChangeId 物料BOM信息图纸和SOP变更记录主键 + * @return 结果 + */ + public int deleteMesBomAttachChangeByAttachChangeId(Long attachChangeId); + + /** + * 批量删除物料BOM信息图纸和SOP变更记录 + * + * @param attachChangeIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMesBomAttachChangeByAttachChangeIds(Long[] attachChangeIds); + + /** + * 批量新增物料BOM信息图纸和SOP变更记录 + * + * @param mesBomAttachChangeList 物料BOM信息图纸和SOP变更记录列表 + * @return 结果 + */ + public int batchMesBomAttachChange(List mesBomAttachChangeList); + + + /** + * 关联查询物料BOM信息图纸和SOP变更记录列表,join mes_base_attach_info + * + * @param mesBomAttachChange 物料BOM信息图纸和SOP变更记录 + * @return 物料BOM信息图纸和SOP变更记录集合 + */ + public List selectMesBomAttachChangeJoinList(MesBomAttachChange mesBomAttachChange); +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialBomMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialBomMapper.java index 49de9a75..49b4b439 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialBomMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialBomMapper.java @@ -74,4 +74,22 @@ public interface MesMaterialBomMapper * @return 结果 */ public int batchMesMaterialBom(List mesMaterialBomList); + + + /** + * 查询物料BOM信息列表,根据物料ID + * + * @param mesMaterialBom 物料BOM信息 + * @return 物料BOM信息集合 + */ + public List selectParentMesMaterialBomList(MesMaterialBom mesMaterialBom); + + /** + * 根据bomID查询本身以及子级的bom信息,包含sopID,主要是获取sop信息 + * + * @param materialBomId 物料BOMID + * @return 物料BOM信息集合 + */ + public List selectMesMaterialBomWithChildSopList(Long materialBomId); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesMaterialBomService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesMaterialBomService.java index 577a710d..8b33020b 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesMaterialBomService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesMaterialBomService.java @@ -3,6 +3,7 @@ package com.hw.mes.service; import java.util.List; import com.hw.mes.domain.MesBaseAttachInfo; +import com.hw.mes.domain.MesBomAttachChange; import com.hw.mes.domain.MesMaterialBom; /** @@ -99,4 +100,12 @@ public interface IMesMaterialBomService * @return */ public List getBomAttachInfo(String attachType, Long[] materialBomIds); + + /** + * 关联查询物料BOM信息图纸和SOP变更记录列表,join mes_base_attach_info + * @param mesBomAttachChange + * @return + */ + public List selectMesBomAttachChangeJoinList(MesBomAttachChange mesBomAttachChange); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java index 8abe359e..c1200591 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java @@ -195,6 +195,14 @@ public interface IMesProductPlanService */ public List getAttachInfoList(String dispatchCode, Long processId, Long userId, String attachType); + /** + * 获取生产派工附件List列表(SOP/图纸) + * + * @param materialBomId + * @return List + */ + public List getSopInfoList(Long materialBomId); + /** * 校验生产派工是否已绑定附件 * @param attachType diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java index 3f45d2fc..5af0f402 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java @@ -277,7 +277,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService @Override public int generateNoPurchaseRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo) { Date currentDate = new Date(); - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); BigDecimal barcodeAmount = mesBaseBarcodeInfo.getBarcodeAmount(); List toInsertedBarcodeInfos = new ArrayList<>(); @@ -305,7 +305,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService @Override public int generateRegularRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo) { Date currentDate = new Date(); - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); MesBaseBarcodeInfo queryBaseBarcodeInfo = new MesBaseBarcodeInfo(); queryBaseBarcodeInfo.setPurchaseOrderId(mesBaseBarcodeInfo.getPurchaseOrderId()); queryBaseBarcodeInfo.setMaterialId(mesBaseBarcodeInfo.getMaterialId()); @@ -337,7 +337,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService String barcode = Seq.getId(Seq.mesCompBarcodeSeqType, Seq.mesCompBarcodeCode); Date currentDate = new Date(); - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); String planCode = mesBaseBarcodeInfo.getPlanCode(); String planDetailCode = mesBaseBarcodeInfo.getPlanDetailCode(); @@ -523,7 +523,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService } int barcodeAmount = mesBaseBarcodeInfo.getBarcodeAmount().intValue(); - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); Date currentDate = new Date(); for (int i = 0; i < barcodeAmount; i++) { @@ -603,7 +603,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService if (StringUtils.isNotEmpty(dbBaseBarcodeInfo.getPrintFlag()) && dbBaseBarcodeInfo.getPrintFlag().equals(MesConstants.MES_BARCODE_PRINT_FLAG_YES)) { throw new ServiceException("此条码已经打印,不能修改"); } - mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate()); return mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); } @@ -620,7 +620,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService MesBaseBarcodeInfo dbBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(mesBaseBarcodeInfo.getBarcodeInfo()); if (StringUtils.isEmpty(dbBaseBarcodeInfo.getPlanCode())) { mesBaseBarcodeInfo.setBarcodeId(dbBaseBarcodeInfo.getBarcodeId()); - mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate()); return mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); } else { @@ -700,7 +700,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService try { String hostIp = IpUtils.getIpAddr(); - if(hostIp.equals("192.168.2.10")){ + if (hostIp.equals("192.168.2.10")) { hostIp = "192.168.2.26"; } String printKey = "print_" + hostIp; @@ -727,9 +727,9 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService Date currentDate = new Date(); mesBaseBarcodeInfo.setUpdateTime(currentDate); - mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesBaseBarcodeInfo.setPrintTime(DateUtils.getNowDate()); - mesBaseBarcodeInfo.setPrintPerson(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesBaseBarcodeInfo.setPrintPerson(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesBaseBarcodeInfo.setPrintFlag(MesConstants.MES_BARCODE_PRINT_FLAG_YES); mesBaseBarcodeInfo.setPrintNumber(mesBaseBarcodeInfo.getPrintNumber() == null ? 1L : mesBaseBarcodeInfo.getPrintNumber() + 1); mesBaseBarcodeInfo.setAcceptedDate(currentDate); @@ -835,7 +835,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService } productBarcodeInfo.setBindBarcode(materialBarcode); - productBarcodeInfo.setBindBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + productBarcodeInfo.setBindBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); productBarcodeInfo.setBindTime(new Date()); productBarcodeInfo.setBindStatus(MesConstants.MES_BARCODE_BIND_STATUS_BINDING); productBarcodeInfo.setPlanDetailCode(planDetailCode); @@ -932,7 +932,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService boolean palletInfoCodeRepeat = false; String palletInfoCode = ""; String barcodeInfo = ""; - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); Date currentDate = DateUtils.getNowDate(); if (productBarcodesArr != null) { StringBuilder materialNameBuilder = new StringBuilder(); @@ -1258,7 +1258,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService throw new ServiceException(errorMsg); } - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); Date currentDate = new Date(); MesBaseAbandonBarcode mesBaseAbandonBarcode = new MesBaseAbandonBarcode(); mesBaseAbandonBarcode.setBarcodeId(mesBaseBarcodeInfo.getBarcodeId()); @@ -1427,7 +1427,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService return false; } mesBaseBarcodeInfo.setBarcodeId(dbMesBaseBarcodeInfo.getBarcodeId()); - mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate()); updateSize += mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); } @@ -1445,7 +1445,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService @Transactional(rollbackFor = Exception.class) public int generateMergeRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo) { Date currentDate = new Date(); - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); List mesSaleOrderRelateList = mesBaseBarcodeInfo.getMesSaleOrderRelateList(); List toUpdatedMaterialBoms = new ArrayList<>(); @@ -1454,85 +1454,43 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService int materialNameLength = 4; String splitCharacter = "|"; StringBuilder materialNameBuilder = new StringBuilder();//将多个物料的名称拼接(取前几个字符(materialNameLength)拼接,目前是前4个字符) + //MESSALEORDERRELATE:原先是跟销售订单关联(前提是先需要销售订单跟采购订单绑定),目前取消绑定,直接选择销售订单 for (MesSaleOrderRelate mesSaleOrderRelate : mesSaleOrderRelateList) { if (mesSaleOrderRelate.getOrderAmount() == null || mesSaleOrderRelate.getOrderAmount().compareTo(BigDecimal.ONE) != 0) { throw new ServiceException("请选择采购数量为1的采购订单信息"); } - Long orderBindId = mesSaleOrderRelate.getOrderBindId(); - MesOrderBind dbOrderBind = mesOrderBindMapper.selectMesOrderBindByOrderBindId(orderBindId); - if (dbOrderBind.getBindAmount().compareTo(BigDecimal.ONE) != 0) { - errorMsgBuilder.append(String.format("序号%s:订单绑定数量需要为1;", mesSaleOrderRelate.getIndex())); - } - if (dbOrderBind.getBarcodeAmount().compareTo(BigDecimal.ONE) >= 0) { - errorMsgBuilder.append(String.format("序号%s:已经生成条码,不能再次选择;", mesSaleOrderRelate.getIndex())); - } - Long relateSaleOrderId = mesSaleOrderRelate.getRelateSaleOrderId(); + Long purchaseOrderId = mesSaleOrderRelate.getPurchaseOrderId(); MesSaleOrderRelate querySaleOrderRelate = new MesSaleOrderRelate(); - querySaleOrderRelate.setRelateSaleOrderId(relateSaleOrderId); + querySaleOrderRelate.setPurchaseOrderId(purchaseOrderId); + List mesSaleOrderRelates = mesSaleOrderRelateMapper.selectMesSaleOrderRelateList(querySaleOrderRelate); if (mesSaleOrderRelates != null && !mesSaleOrderRelates.isEmpty()) { - errorMsgBuilder.append(String.format("序号%s:销售订单已经合并关联过;", mesSaleOrderRelate.getIndex())); + errorMsgBuilder.append(String.format("序号%s:采购订单已经合并关联过;", mesSaleOrderRelate.getIndex())); } - MesSaleOrder saleOrder = mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(relateSaleOrderId); - BigDecimal saleOrderAmount = saleOrder.getOrderAmount(); - BigDecimal availableAmount = mesSaleOrderRelate.getRelateSaleOrderAmount(); - if (availableAmount.compareTo(BigDecimal.ONE) != 0) { - errorMsgBuilder.append(String.format("序号%s:需要选择可用数量为1的信息;", mesSaleOrderRelate.getIndex())); - } - - if (!saleOrder.getIsRelease().equals(MesConstants.MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH)) { - errorMsgBuilder.append(String.format("序号%s:销售订单已经发布生产任务,不能合并;", mesSaleOrderRelate.getIndex())); - } - - if (saleOrderAmount.compareTo(availableAmount) != 0) { - errorMsgBuilder.append(String.format("序号%s:需要选择销售订单数量为1的信息;", mesSaleOrderRelate.getIndex())); - } - - //purchaseorder可以不用判断,主要看生成条码的数量 - - //找到销售订单物料的顶级bom信息 - Long erpMaterialId = saleOrder.getMaterialId(); + //找到物料的父级bom信息(目前只有一级bom,父级就是顶级) + Long materialId = mesSaleOrderRelate.getMaterialId(); MesMaterialBom queryMaterialBom = new MesMaterialBom(); - queryMaterialBom.setErpMaterialId(erpMaterialId); + queryMaterialBom.setMaterialId(materialId); queryMaterialBom.setActiveFlag(MesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_NORMAL); queryMaterialBom.setParentId(0L); - List mesMaterialBoms = mesMaterialBomMapper.selectMesMaterialBomList(queryMaterialBom); + List mesMaterialBoms = mesMaterialBomMapper.selectParentMesMaterialBomList(queryMaterialBom); if (mesMaterialBoms == null || mesMaterialBoms.isEmpty()) { - errorMsgBuilder.append("序号").append(mesSaleOrderRelate.getIndex()).append(":销售订单成品没有配置bom信息[成品编号:") - .append(mesSaleOrderRelate.getProductCode()).append("成品名称:").append(mesSaleOrderRelate.getProductName()) - .append("成品规格").append(mesSaleOrderRelate.getProductSpec()).append("; "); + errorMsgBuilder.append("序号").append(mesSaleOrderRelate.getIndex()).append(":物料没有配置bom信息;"); } else if (mesMaterialBoms.size() > 1) { - errorMsgBuilder.append("序号").append(mesSaleOrderRelate.getIndex()).append(":销售订单成品配置bom信息多余一条[成品编号:") - .append(mesSaleOrderRelate.getProductCode()).append("成品名称:").append(mesSaleOrderRelate.getProductName()) - .append("成品规格").append(mesSaleOrderRelate.getProductSpec()).append("; "); + errorMsgBuilder.append("序号").append(mesSaleOrderRelate.getIndex()).append(":物料配置bom信息多于一条;"); } else { //修改 MesMaterialBom mesMaterialBom = mesMaterialBoms.get(0); - - //判断所选物料是否在销售订单的成品bom中(在绑定时判断) -// MesMaterialBom queryChildBom = new MesMaterialBom(); -// queryChildBom.setAncestors(); -// queryChildBom.setMaterialId(mesSaleOrderRelate.getMaterialId()); -// List childBoms = mesMaterialBomMapper.selectMesMaterialBomList(queryChildBom); -// if(childBoms==null || childBoms.isEmpty()){ -// throw new ServiceException("选择的物料信息"); -// } - + mesSaleOrderRelate.setProductId(mesMaterialBom.getMaterialId()); + mesSaleOrderRelate.setErpProductId(mesMaterialBom.getErpMaterialId()); toUpdatedMaterialBoms.add(mesMaterialBom); } - //更新采购订单和销售订单绑定信息的条码数量 - dbOrderBind.setBarcodeAmount(dbOrderBind.getBarcodeAmount().add(availableAmount)); - dbOrderBind.setUpdateTime(currentDate); - dbOrderBind.setUpdateBy(userName); - - mesOrderBindMapper.updateMesOrderBind(dbOrderBind); - String materialName = mesSaleOrderRelate.getMaterialName(); - materialName = materialName.substring(0, materialNameLength); + materialName = materialName.length() > 4 ? materialName.substring(0, materialNameLength) : materialName; materialNameBuilder.append(splitCharacter).append(materialName); // materialCodes.add(mesPurchaseOrderVo.getMaterialCode()); } @@ -1551,6 +1509,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService //创建虚拟销售订单,保存对应的销售订单列表 MesSaleOrder virtualSaleOrder = this.insertNewVirtualSaleOrder(materialId, barcodeInfo, mesBaseBarcodeInfo.getSaleorderCode(), mesSaleOrderRelateList, userName, currentDate); + //创建虚拟bom,并合并销售订单的bom信息 this.insertVirtualMaterialBom(materialId, barcodeInfo, toUpdatedMaterialBoms, userName, currentDate); @@ -1562,9 +1521,9 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService MesBaseBarcodeInfo toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, barcodeInfo, batchCode, userName, currentDate); toInsertedBarcodeInfo.setPurchaseOrderId(-1L); toInsertedBarcodeInfo.setMaterialId(materialId); - toInsertedBarcodeInfo.setSaleOrderId(virtualSaleOrder.getSaleOrderId()); + toInsertedBarcodeInfo.setSaleOrderId(0L); toInsertedBarcodeInfo.setSaleorderCode(mesBaseBarcodeInfo.getSaleorderCode()); - toInsertedBarcodeInfo.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); + toInsertedBarcodeInfo.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_YES); toInsertedBarcodeInfo.setSingleFlag(MesConstants.MES_BARCODE_SINGLE_FLAG_MERGE); toInsertedBarcodeInfo.setAmount(new BigDecimal(mesSaleOrderRelateList.size())); // toInsertedBarcodeInfo.setBarcodeSpec(materialCodes.toString()); @@ -1609,33 +1568,45 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService public MesSaleOrder insertNewVirtualSaleOrder(Long materialId, String barcodeInfo, String saleOrderCode, List mesSaleOrderRelates, String userName, Date currentDate) { + saleOrderCode = StringUtils.isEmpty(saleOrderCode)?Seq.getNewId(Seq.mesSaleOrderSeqType, Seq.mesSaleOrderSeqCode):saleOrderCode; + + MesSaleOrder virtualMesSaleOrder = new MesSaleOrder(); + virtualMesSaleOrder.setMaterialId(materialId); + virtualMesSaleOrder.setMaterialCode(barcodeInfo); + virtualMesSaleOrder.setMaterialName(barcodeInfo); + virtualMesSaleOrder.setOrderAmount(BigDecimal.ONE); + virtualMesSaleOrder.setSaleorderCode(saleOrderCode); + virtualMesSaleOrder.setIsRelease(MesConstants.MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH); +// mesSaleOrder.setPlanDeliveryDate(); + virtualMesSaleOrder.setSaleOrderClassfication(MesConstants.MES_SALE_ORDER_CLASSFICATION_VIRTUAL); + virtualMesSaleOrder.setCreateBy(userName); + virtualMesSaleOrder.setCreateTime(currentDate); + mesSaleOrderMapper.insertMesSaleOrder(virtualMesSaleOrder); // Optional minMesSaleOrderRelate = mesSaleOrderRelates.stream() // .filter(msor -> msor.getPlanDeliveryDate() != null) // .min((obj1, obj2) -> obj1.getPlanDeliveryDate().compareTo(obj2.getPlanDeliveryDate())); + for (MesSaleOrderRelate msor : mesSaleOrderRelates) { + MesSaleOrder querySaleOrder = new MesSaleOrder(); + querySaleOrder.setMaterialId(msor.getErpProductId()); + List mesSaleOrders = mesSaleOrderMapper.selectMesSaleOrderList(querySaleOrder); + if (mesSaleOrders == null || mesSaleOrders.size() == 0) { + throw new RuntimeException("序号" + msor.getIndex() + ":没有对应的销售订单"); + } else if (mesSaleOrders.size() > 1) { + throw new RuntimeException("序号" + msor.getIndex() + ":对应的销售订单数量多于1条"); + } else { + MesSaleOrder mesSaleOrder = mesSaleOrders.get(0); + msor.setRelateSaleOrderId(mesSaleOrder.getSaleOrderId()); + } - - MesSaleOrder mesSaleOrder = new MesSaleOrder(); - mesSaleOrder.setMaterialId(materialId); - mesSaleOrder.setMaterialCode(barcodeInfo); - mesSaleOrder.setMaterialName(barcodeInfo); - mesSaleOrder.setOrderAmount(BigDecimal.ONE); - mesSaleOrder.setSaleorderCode(saleOrderCode); - mesSaleOrder.setIsRelease(MesConstants.MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH); -// mesSaleOrder.setPlanDeliveryDate(); - mesSaleOrder.setSaleOrderClassfication(MesConstants.MES_SALE_ORDER_CLASSFICATION_VIRTUAL); - mesSaleOrder.setCreateBy(userName); - mesSaleOrder.setCreateTime(currentDate); - mesSaleOrderMapper.insertMesSaleOrder(mesSaleOrder); - - mesSaleOrderRelates.forEach(msor -> { - msor.setSaleOrderId(mesSaleOrder.getSaleOrderId()); + msor.setSaleOrderId(virtualMesSaleOrder.getSaleOrderId()); msor.setBarcodeInfo(barcodeInfo); msor.setVirtualMaterialId(materialId); - }); + } + mesSaleOrderRelateMapper.batchMesSaleOrderRelate(mesSaleOrderRelates); - return mesSaleOrder; + return virtualMesSaleOrder; } @@ -1760,7 +1731,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService @Transactional(rollbackFor = Exception.class) public int updateMergeRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo) { Date currentDate = new Date(); - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); String barcodeInfo = mesBaseBarcodeInfo.getBarcodeInfo(); //修改后的合并信息 @@ -2018,11 +1989,12 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService /** * 批量新增条码信息 + * * @param mesBaseBarcodeInfoList * @return */ @Override - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) public int batchAddMesBaseBarcodeInfo(List mesBaseBarcodeInfoList) { for (MesBaseBarcodeInfo mesBaseBarcodeInfo : mesBaseBarcodeInfoList) { // 生成原材料条码 diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesMaterialBomServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesMaterialBomServiceImpl.java index d4b4e08f..60c1cc6d 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesMaterialBomServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesMaterialBomServiceImpl.java @@ -2,6 +2,7 @@ package com.hw.mes.service.impl; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -15,7 +16,10 @@ import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.MailUtils; import com.hw.common.core.utils.StringUtils; import com.hw.common.redis.service.RedisService; +import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.domain.MesBaseAttachInfo; +import com.hw.mes.domain.MesBomAttachChange; +import com.hw.mes.mapper.MesBomAttachChangeMapper; import com.hw.mes.mapper.MesProductPlanMapper; import com.hw.mes.service.IMesBaseAttachInfoService; import com.hw.system.api.RemoteUserService; @@ -39,6 +43,9 @@ public class MesMaterialBomServiceImpl implements IMesMaterialBomService { @Autowired private MesMaterialBomMapper mesMaterialBomMapper; + @Autowired + private MesBomAttachChangeMapper mesBomAttachChangeMapper; + @Autowired private RemoteUserService remoteUserService; @@ -243,6 +250,7 @@ public class MesMaterialBomServiceImpl implements IMesMaterialBomService { /** * 更新附件信息并通知用户 + * * @param mesMaterialBom * @return */ @@ -252,41 +260,130 @@ public class MesMaterialBomServiceImpl implements IMesMaterialBomService { List sysUserList = new ArrayList<>(); StringBuilder sendMsg = new StringBuilder(); sendMsg.append("BOM名称:").append(mesMaterialBom.getMaterialName()); - if (mesMaterialBom.getUserNameList().size() == 0){ + if (mesMaterialBom.getUserNameList().size() == 0) { throw new ServiceException("请选择通知用户!"); } for (String userName : mesMaterialBom.getUserNameList()) { R userInfo = remoteUserService.getUserInfo(userName, SecurityConstants.INNER); SysUser sysUser = userInfo.getData().getSysUser(); - if (StringUtils.isEmpty(sysUser.getEmail())){ - throw new ServiceException(sysUser.getNickName() + "用户未维护邮箱!"); + if (StringUtils.isEmpty(sysUser.getEmail())) { +// throw new ServiceException(sysUser.getNickName() + "用户未维护邮箱!"); } sysUserList.add(sysUser); } - if (mesMaterialBom.getAttachType().equals("1")){ - sendMsg.append(",图纸已维护成功!"); + + + MesMaterialBom dbMaterialBom = mesMaterialBomMapper.selectMesMaterialBomByMaterialBomId(mesMaterialBom.getMaterialBomId()); + + if (mesMaterialBom.getAttachType().equals("1")) { + sendMsg.append(",激光切割图纸已维护成功!"); + + String dbAttachIdStr = dbMaterialBom.getAttachId(); + String attachIdStr = mesMaterialBom.getAttachId(); + + boolean isAttachChange = insertBomAttachChange(mesMaterialBom.getMaterialBomId(), "1", attachIdStr, dbAttachIdStr); + if (isAttachChange) { + mesMaterialBom.setAttachChangeFlag("1"); + } + } else { - sendMsg.append(",SOP已维护成功!"); + sendMsg.append(",图纸&SOP已维护成功!"); + + String dbSopIdStr = dbMaterialBom.getSopId(); + String sopIdStr = mesMaterialBom.getSopId(); + + boolean isSopChange = insertBomAttachChange(mesMaterialBom.getMaterialBomId(), "2", sopIdStr, dbSopIdStr); + if (isSopChange) { + mesMaterialBom.setSopChangeFlag("1"); + } } + String emailAccountInfo = redisService.getCacheObject(CacheConstants.SYS_EAMIL_ACCOUNT_INFO); String emailAccount = ""; String emailPassword = ""; - if(StringUtils.isNotEmpty(emailAccountInfo)){ + if (StringUtils.isNotEmpty(emailAccountInfo)) { int splitIndex = emailAccountInfo.indexOf(","); - emailAccount = emailAccountInfo.substring(0,splitIndex); - emailPassword = emailAccountInfo.substring(splitIndex+1); + emailAccount = emailAccountInfo.substring(0, splitIndex); + emailPassword = emailAccountInfo.substring(splitIndex + 1); } for (SysUser sysUser : sysUserList) { String email = sysUser.getEmail(); - MailUtils.processSendEmail(emailAccount,emailPassword,email, "上传图纸通知", sendMsg.toString()); +// MailUtils.processSendEmail(emailAccount,emailPassword,email, "上传图纸通知", sendMsg.toString()); } mesMaterialBom.setUpdateTime(DateUtils.getNowDate()); return mesMaterialBomMapper.updateMesMaterialBom(mesMaterialBom); } + + private boolean insertBomAttachChange(Long materialBomId, String attachType, String attachIdStr, String dbAttachIdStr) { + List dbAttachList = new ArrayList<>(); + if (StringUtils.isNotEmpty(dbAttachIdStr)) { + String[] dbSplit = dbAttachIdStr.split(","); + dbAttachList = Arrays.stream(dbSplit) + .map(Long::valueOf) // 转换每个字符串为 Long + .collect(Collectors.toList()); + } + + List attachList = new ArrayList<>(); + if (StringUtils.isNotEmpty(attachIdStr)) { + String[] split = attachIdStr.split(","); + attachList = Arrays.stream(split) + .map(Long::valueOf) // 转换每个字符串为 Long + .collect(Collectors.toList()); + } + + List delAttachList = new ArrayList<>(); + if (!dbAttachList.isEmpty()) { + for (Long dbAttachId : dbAttachList) { + if (!attachList.contains(dbAttachId)) { + delAttachList.add(dbAttachId); + } + } + } + + List newAttachList = new ArrayList<>(); + if (!attachList.isEmpty()) { + for (Long attachId : attachList) { + if (!dbAttachList.contains(attachId)) { + newAttachList.add(attachId); + } + } + } + + List mesBomAttachChangeList = new ArrayList<>(); + for (Long delAttachId : delAttachList) { + mesBomAttachChangeList.add(getMaterialBomChange(materialBomId, attachType, delAttachId, "1")); + } + for (Long newAttachId : newAttachList) { + mesBomAttachChangeList.add(getMaterialBomChange(materialBomId, attachType, newAttachId, "2")); + } + + if (!mesBomAttachChangeList.isEmpty()) { + mesBomAttachChangeMapper.batchMesBomAttachChange(mesBomAttachChangeList); + } + + return !delAttachList.isEmpty(); + } + + public MesBomAttachChange getMaterialBomChange(Long materialBomId, String attachType, Long attachId, String changeType) { + MesBomAttachChange mesBomAttachChange = new MesBomAttachChange(); + mesBomAttachChange.setMaterialBomId(materialBomId); + mesBomAttachChange.setAttachType(attachType); + mesBomAttachChange.setChangeType(changeType); + mesBomAttachChange.setChangeUserId(SecurityUtils.getUserId()); + mesBomAttachChange.setChangeBy(SecurityUtils.getLoginUser() == null ? + SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); + mesBomAttachChange.setChangeTime(new Date()); + mesBomAttachChange.setNewAttachId(attachId); + + return mesBomAttachChange; + } + + /** * 获取物料BOM附件信息 + * * @param attachType * @param materialBomIds * @return @@ -299,8 +396,8 @@ public class MesMaterialBomServiceImpl implements IMesMaterialBomService { mesMaterialBom.setAncestors(materialBomId.toString()); List materialBomList = mesMaterialBomMapper.selectMesMaterialBomList(mesMaterialBom); for (MesMaterialBom materialBom : materialBomList) { - if (attachType.equals(MesConstants.MES_ATTACH_TYPE_DRAWING)){ - if (StringUtils.isNotEmpty(materialBom.getAttachId())){ + if (attachType.equals(MesConstants.MES_ATTACH_TYPE_DRAWING)) { + if (StringUtils.isNotEmpty(materialBom.getAttachId())) { String[] split = materialBom.getAttachId().split(","); List longList = Arrays.stream(split) .map(Long::valueOf) // 转换每个字符串为 Long @@ -308,7 +405,7 @@ public class MesMaterialBomServiceImpl implements IMesMaterialBomService { attachIdList.addAll(longList); } } else { - if (StringUtils.isNotEmpty(materialBom.getSopId())){ + if (StringUtils.isNotEmpty(materialBom.getSopId())) { String[] split = materialBom.getSopId().split(","); List longList = Arrays.stream(split) .map(Long::valueOf) // 转换每个字符串为 Long @@ -318,11 +415,20 @@ public class MesMaterialBomServiceImpl implements IMesMaterialBomService { } } } - if (attachIdList.size() > 0){ + if (attachIdList.size() > 0) { Long[] attachIds = attachIdList.toArray(new Long[0]); return mesBaseAttachInfoService.selectMesBaseAttachInfoByAttachIds(attachIds); } return null; } + /** + * 关联查询物料BOM信息图纸和SOP变更记录列表,join mes_base_attach_info + * @param mesBomAttachChange + * @return + */ + @Override + public List selectMesBomAttachChangeJoinList(MesBomAttachChange mesBomAttachChange){ + return mesBomAttachChangeMapper.selectMesBomAttachChangeJoinList(mesBomAttachChange); + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java index 85c01539..cace4c08 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java @@ -67,6 +67,9 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { @Autowired private MesProductOrderMapper mesProductOrderMapper; + @Autowired + private MesMaterialBomMapper mesMaterialBomMapper; + @Autowired private MesConfig mesConfig; @@ -334,7 +337,7 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { } } else { mesProductPlan.setPlanAmount(mesProductPlan.getDispatchAmount()); - mesProductPlan.setCreateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesProductPlan.setCreateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesProductPlan.setCreateTime(DateUtils.getNowDate()); mesProductPlan.setPlanCode(Seq.getId(Seq.planCodeSeqType, Seq.planCodeCode)); if (mesProductPlan.getSaleOrderId() == null) { @@ -592,7 +595,7 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { throw new ServiceException("此条码为非原材料条码"); } - String userName = SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname(); + String userName = SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname(); Date currentDate = new Date(); MesMaterialCheckResult mesMaterialCheckResult = mesMaterialCheckResultMapper. selectMesMaterialCheckResultByUI(planId, planDetailId, materialId); @@ -676,7 +679,7 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { MesMaterialAssignInfo mesMaterialAssignInfo = new MesMaterialAssignInfo(); mesMaterialAssignInfo.setMaterialBarcode(materialBarcode); mesMaterialAssignInfo.setStationId(stationId); - mesMaterialAssignInfo.setCreateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesMaterialAssignInfo.setCreateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesMaterialAssignInfo.setCreateTime(currentDate); mesMaterialAssignInfoMapper.insertMesMaterialAssignInfo(mesMaterialAssignInfo); @@ -754,14 +757,13 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { MesProductOrder mesProductOrder = mesProductOrderService.selectMesProductOrderByProductOrderId(mesProductPlanDeleteVo.getProductOrderId()); BigDecimal dispatchedAmount = mesProductOrder.getDispatchAmount(); mesProductOrder.setDispatchAmount(dispatchedAmount.subtract(dispatchAmount)); - mesProductOrder.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + mesProductOrder.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); mesProductOrder.setUpdateTime(new Date()); return mesProductOrderMapper.updateMesProductOrder(mesProductOrder); } - /** * 查询生产派工列表Join user,material,process,productorder * @@ -775,6 +777,7 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { /** * 获取生产派工附件List列表 + * * @param attachType * @param dispatchCode * @param processId @@ -819,8 +822,41 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { return new ArrayList<>(); } + + /** + * 获取生产派工附件List列表(SOP/图纸) + * + * @param materialBomId + * @return List + */ + @Override + public List getSopInfoList(Long materialBomId) { + List mesMaterialBomList = mesMaterialBomMapper.selectMesMaterialBomWithChildSopList(materialBomId); + if (mesMaterialBomList == null || mesMaterialBomList.isEmpty()) { + return new ArrayList<>(); + } + List allSopIds = new ArrayList<>(); + for (MesMaterialBom mesMaterialBom : mesMaterialBomList) { + if (mesMaterialBom.getSopId() != null) { + Long[] sopIds = Arrays.stream(mesMaterialBom.getSopId().split(",")) + .map(String::trim) + .map(Long::parseLong) + .toArray(Long[]::new); + // 将 sopIds 添加到大的集合中 + Collections.addAll(allSopIds, sopIds); + } + } + + // 转换为 Long[] 数组 + Long[] sopIdsArray = allSopIds.toArray(new Long[0]); + + return mesBaseAttachInfoService.selectMesBaseAttachInfoByAttachIds(sopIdsArray); + } + + /** * 校验生产派工是否已绑定附件 + * * @param attachType * @param attachId * @return @@ -836,12 +872,12 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { mesProductPlan.setAttachId(attachId); productPlanList = mesProductPlanMapper.selectMesProductPlanList(mesProductPlan); buffer.append("图纸!"); - } else if (attachType.equals(MesConstants.MES_ATTACH_TYPE_SOP)){ + } else if (attachType.equals(MesConstants.MES_ATTACH_TYPE_SOP)) { mesProductPlan.setSopId(attachId); productPlanList = mesProductPlanMapper.selectMesProductPlanList(mesProductPlan); buffer.append("SOP!"); } - if (productPlanList.size() > 0){ + if (productPlanList.size() > 0) { result = buffer.toString(); } //未绑定 @@ -850,6 +886,7 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { /** * 根据planId获取生产派工SOP附件List列表 + * * @param attachType * @param planId * @return diff --git a/hw-modules/hw-wms/pom.xml b/hw-modules/hw-wms/pom.xml index 1e900f8d..d1c3a7e1 100644 --- a/hw-modules/hw-wms/pom.xml +++ b/hw-modules/hw-wms/pom.xml @@ -81,12 +81,6 @@ com.hw hw-api-mes - - com.hw - hw-api-printer - 3.6.3 - compile - com.hw diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsStockTotalMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsStockTotalMapper.java index 0fc88e66..bdc6ea97 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsStockTotalMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsStockTotalMapper.java @@ -62,13 +62,24 @@ public interface WmsStockTotalMapper { /** - * 查询总库存列表(根据销售订单查询库存,以及根据plancode和plandetailcode申请的数量,包含安全库存) + * 查询总库存列表(查询bom中的,根据销售订单查询库存,以及根据plancode申请的数量,包含安全库存) * * @param wmsStockTotal 总库存 * @return 总库存集合 */ public List selectWmsStockTotalJoinListBySaleOrder(WmsStockTotal wmsStockTotal); + /** + * 查询总库存列表(查询所有的,包括bom中和非bom中的,根据销售订单查询库存,以及根据plancode申请的数量,包含安全库存) + * + * @param wmsStockTotal 总库存 + * @return 总库存集合 + */ + public List selectNoneBomWmsStockTotalJoinListBySaleOrder(WmsStockTotal wmsStockTotal); + + + + /** * 查询总库存列表(根据销售订单查询库存,以及已经出库的数量,包含安全库存) * diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java index b2caa0b2..fe69a75e 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java @@ -176,6 +176,7 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService { } BigDecimal instockAmount = wmsRawInstockVo.getInstockAmount(); + //判断是否批次,非批次数量只能等于1 if (baseBarcodeInfo.getBatchFlag().equals(MesConstants.IS_BATCH)) { if (instockAmount.compareTo(BigDecimal.ONE) < 0) { throw new ServiceException("入库数量需大于等于1"); @@ -184,16 +185,23 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService { if (instockAmount.compareTo(BigDecimal.ONE) > 0) { throw new ServiceException("入库数量需等于1"); } - } - if (!baseBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_RAW_REGULAR)) { + //非批次的一个条码只能入一次库 WmsRawInstock existedRawInstock = wmsRawInstockMapper.selectWmsRawInstockByBarcode(wmsRawInstockVo.getMaterialBarcode()); if (existedRawInstock != null) { throw new ServiceException("此物料已经入库,不需重复入库"); } + } - //按收料通知单收料的数量限制入库 +// if (!baseBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_RAW_REGULAR)) { +// WmsRawInstock existedRawInstock = wmsRawInstockMapper.selectWmsRawInstockByBarcode(wmsRawInstockVo.getMaterialBarcode()); +// if (existedRawInstock != null) { +// throw new ServiceException("此物料已经入库,不需重复入库"); +// } +// } + + //按收料通知单收料的数量限制入库(此收料通知单已入库数量和此次入库数量之和不能大于收料通知单入库总数量) WmsRawInstock checkRawInstock = wmsRawInstockMapper.selectPurchaseReceiveBillByBarcode(materialBarcode); if (StringUtils.isNotNull(checkRawInstock) && StringUtils.isNotNull(checkRawInstock.getReceiveBillId())){ wmsRawInstock.setReceiveBillId(checkRawInstock.getReceiveBillId()); diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java index 8ccbb662..1840343f 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java @@ -534,9 +534,9 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { @Override public int applyRawOutstock(WmsRawOutstock wmsRawOutstock) { String planCode = wmsRawOutstock.getPlanCode(); - String planDetailCode = wmsRawOutstock.getPlanDetailCode(); +// String planDetailCode = wmsRawOutstock.getPlanDetailCode(); - if (StringUtils.isEmpty(planCode) || StringUtils.isEmpty(planDetailCode)) { + if (StringUtils.isEmpty(planCode)) { throw new ServiceException("请选择派工信息再领料"); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java index 18beb71c..aa74833c 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java @@ -153,28 +153,46 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService { String materialClassfication = wmsStockTotal.getMaterialClassfication(); Long warehouseId = wmsStockTotal.getWarehouseId(); - if(StringUtils.isNotEmpty(materialClassfication) && materialClassfication.equals(MesConstants.MES_MATERIAL_CLASSFICATION_VIRTUAL)){ + //虚拟物料,需要找到虚拟物料下真正的物料以及对应bom的物料 + if (StringUtils.isNotEmpty(materialClassfication) && materialClassfication.equals(MesConstants.MES_MATERIAL_CLASSFICATION_VIRTUAL)) { //五楼原料周转区仓库ID if (warehouseId.equals(wmsConfig.getFifthCabinetWarehouseId())) { wmsStockTotal.setMaterialId(wmsStockTotal.getProductId()); wmsStockTotal.setAccessoriesFlag(null); - } else { + //找出与生产的虚拟物料相同的物料(原材料入库也是按此物料入库,入库后在wms_raw_stock有trigger拆分写入wms_raw_instock记录来同步erp使用,库存只保留合并的虚拟物料的库存信息) + List wmsStockTotalList = wmsStockTotalMapper.selectNoneBomWmsStockTotalJoinListBySaleOrder(wmsStockTotal); + if (!wmsStockTotalList.isEmpty()) { + wmsStockTotalList.forEach(e -> { + e.setStandardAmount(BigDecimal.ONE); + }); + } + return wmsStockTotalList; + } else {//辅料库 + //是否是从bom内搜索物料 if (StringUtils.isEmpty(wmsStockTotal.getAccessoriesFlag()) || wmsStockTotal.getAccessoriesFlag().equals(MesConstants.MES_MATERIAL_ACCESSORIES_FLAG_YES)) { wmsStockTotal.setAncestors("0," + wmsStockTotal.getMaterialBomId()); wmsStockTotal.setAccessoriesFlag(null); wmsStockTotal.setVirtualFlag("1"); + return wmsStockTotalMapper.selectWmsStockTotalJoinListBySaleOrder(wmsStockTotal); + } else { + return wmsStockTotalMapper.selectNoneBomWmsStockTotalJoinListBySaleOrder(wmsStockTotal); } } - }else{ + } else { + //是否是从bom内搜索物料 if (StringUtils.isEmpty(wmsStockTotal.getAccessoriesFlag()) || wmsStockTotal.getAccessoriesFlag().equals(MesConstants.MES_MATERIAL_ACCESSORIES_FLAG_YES)) { wmsStockTotal.setAncestors("0," + wmsStockTotal.getMaterialBomId()); wmsStockTotal.setAccessoriesFlag(null); + return wmsStockTotalMapper.selectWmsStockTotalJoinListBySaleOrder(wmsStockTotal); + } else { + //获取所有原材料,包括bom内和非bom内的,bom内的可以显示bom,非bom内的不显示bom标准数量 + wmsStockTotal.setAncestors("0," + wmsStockTotal.getMaterialBomId()); + return wmsStockTotalMapper.selectNoneBomWmsStockTotalJoinListBySaleOrder(wmsStockTotal); } } - return wmsStockTotalMapper.selectWmsStockTotalJoinListBySaleOrder(wmsStockTotal); } /** @@ -248,7 +266,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService { productSpecs.append("|").append(mesSaleOrderRelate.getProductSpec()); } - productCodes.replace(0,1,""); + productCodes.replace(0, 1, ""); productNames.replace(0, 1, ""); productSpecs.replace(0, 1, ""); @@ -340,7 +358,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService { wmsRawStock.setSaleOrderId(saleOrderId); wmsRawStock.setSaleorderCode(saleorderCode); wmsRawStock.setUpdateDate(new Date()); - wmsRawStock.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + wmsRawStock.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); wmsRawStockMapper.updateWmsRawStock(wmsRawStock); return mesBaseBarcodeInfo; @@ -488,7 +506,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService { wmsProductStock.setSaleOrderId(saleOrderId); wmsProductStock.setSaleorderCode(saleorderCode == null ? "" : saleorderCode); wmsProductStock.setUpdateDate(new Date()); - wmsProductStock.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + wmsProductStock.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); wmsProductStockMapper.updateWmsProductStock(wmsProductStock); } @@ -514,7 +532,6 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService { } - /** * 查询原材料库存列表4导出 * @@ -528,6 +545,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService { /** * 成品库存转销售订单(或将有销售订单的转安全库存) + * * @param wmsStockTotalTransferVo * @return */ @@ -559,7 +577,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService { wmsProductStock.setSaleOrderId(saleOrderId); wmsProductStock.setSaleorderCode(saleorderCode == null ? "" : saleorderCode); wmsProductStock.setUpdateDate(new Date()); - wmsProductStock.setUpdateBy(SecurityUtils.getLoginUser()==null ? SecurityUtils.getUsername() :SecurityUtils.getLoginUser().getNickname()); + wmsProductStock.setUpdateBy(SecurityUtils.getLoginUser() == null ? SecurityUtils.getUsername() : SecurityUtils.getLoginUser().getNickname()); wmsProductStockMapper.updateWmsProductStock(wmsProductStock); MesSaleOrderTransferVo mesSaleOrderTransferVo = new MesSaleOrderTransferVo(); diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml index 7217ce81..99bc76b5 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml @@ -96,6 +96,7 @@ and wps.create_date between #{params.beginCreateDate} and #{params.endCreateDate} + order by wps.instock_date desc + + + + + + + +