diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index 83fe97a9..faaa736c 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -15,10 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @Description: 1.根据《PLM变更单》中的 @@ -43,6 +40,8 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { DynamicObject[] plms = queryPLMChange(); DynamicObject[] boms = queryBOMChange(); + List matchList = new ArrayList<>(); + for (DynamicObject bomObj : boms) { DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); for (DynamicObject bom : bom_entry) { @@ -60,9 +59,9 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { //已完成跳过 continue; } - Boolean plmMatchBom = isPlmMatchBom(plmObj, bom, plm); + MatchResult result = isPlmMatchBom(plmObj, bom, plm); exestate = "30".equals(exestate) ? "B" : "A"; - if (plmMatchBom != null && !plmMatchBom) { + if (result.isMatched() && result.getDisable()) { Date downdate = bom.getDate("yem_downdate"); if (YEM.isNotEmpty(downdate)) { plm.set("yem_enablestatus_before", bom_enablesta); @@ -72,7 +71,7 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { } } - if (plmMatchBom != null && plmMatchBom) { + if (result.isMatched() && result.getEnable()) { Date enableddate = bom.getDate("yem_enableddate"); if (YEM.isNotEmpty(enableddate)) { plm.set("yem_enablesta", bom_enablesta); @@ -82,14 +81,29 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { } } - if (plmMatchBom != null && YEM.isNotEmpty(bom_completetime)) { - plm.set("yem_invoktime", bom_completetime); - plm.set("yem_invokstatus", exestate); + if (result.isMatched() && YEM.isNotEmpty(bom_completetime)) { + + MatchInfo info = new MatchInfo(plm.getLong("id"), bom_completetime, exestate); + matchList.add(info); + } } } } } + + for (MatchInfo info : matchList) { + for (DynamicObject plmObj : plms) { + DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); + for (DynamicObject plm : plm_entry) { + if (plm.getLong("id") == info.getId()) { + plm.set("yem_invoktime", info.getComplateDate()); + plm.set("yem_invokstatus", info.getStatus()); + } + } + } + } + SaveServiceHelper.save(plms); } @@ -101,7 +115,7 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { * @param plm * @return 匹配到停用返回false,启用返回true,未匹配到返回null */ - public static Boolean isPlmMatchBom(DynamicObject plmObj, DynamicObject bom, DynamicObject plm) { + public static MatchResult isPlmMatchBom(DynamicObject plmObj, DynamicObject bom, DynamicObject plm) { String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号 String bom_billno = bom.getString("yem_changeno");//更改单号 String bom_parent = bom.getString("yem_parentno");//父件编码 @@ -119,18 +133,20 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { String bom_before_child_no = bom.getString("yem_subno");//子件编码 // BigDecimal bom_before_qty = bom.getBigDecimal("yem_qty"); // logger.info("停用_compare: {} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, bom_child, bom_enablesta); + + MatchResult result = new MatchResult(); if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && "B".equals(bom_enablesta)) { logger.info("停用_PLM匹配到BOM,{} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child); - return false; + result.setDisable(true); } // logger.info("启用_compare:{} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno,plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no, plm_after_qty, bom_before_qty, bom_enablesta); if (eq(plm_billno, bom_billno) && eq(plm_after_parent_now, bom_before_parent_no) && eq(plm_after_child_now, bom_before_child_no) && "A".equals(bom_enablesta)) { logger.info("启用_PLM匹配到BOM,{} {}, {} {}, {} {}", plm_billno, bom_billno, plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no); - return true; + result.setEnable(true); } - return null; + return result; } public static boolean eq(Object str1, Object str2) { @@ -161,3 +177,89 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { return BusinessDataServiceHelper.load(formId, selectfields, qFilter.toArray()); } } + + +class MatchResult { + private Boolean enable; + private Boolean disable; + private MatchInfo info; + + public MatchResult() { + this.disable = false; + this.enable = false; + } + + public MatchResult(Boolean disable, Boolean enable) { + this.disable = disable; + this.enable = enable; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public Boolean getDisable() { + return disable; + } + + public void setDisable(Boolean disable) { + this.disable = disable; + } + + public MatchInfo getInfo() { + return info; + } + + public void setInfo(MatchInfo info) { + this.info = info; + } + + public boolean isMatched() { + return this.disable || this.enable; + } +} + +class MatchInfo { + private Long id; + + private Date complateDate; + + private String status; + + public MatchInfo() { + } + + public MatchInfo(Long id, Date complateDate, String status) { + this.id = id; + this.complateDate = complateDate; + this.status = status; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Date getComplateDate() { + return complateDate; + } + + public void setComplateDate(Date complateDate) { + this.complateDate = complateDate; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} \ No newline at end of file