From f1c315c5347aeb9b03344127ec9d8e48293e3a25 Mon Sep 17 00:00:00 2001 From: zzs Date: Thu, 9 Jan 2025 16:25:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=90=8E=E6=9B=BF=E4=BB=A3=E5=89=8D?= =?UTF-8?q?=E3=80=81=E9=80=9A=E7=94=A8=E3=80=81=E4=B8=8D=E9=80=9A=E7=94=A8?= =?UTF-8?q?=EF=BC=8C=E5=BF=85=E9=A1=BB=E5=81=9C=E7=94=A8=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E9=83=BD=E5=8C=B9=E9=85=8D=E5=88=B0=E6=89=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=8A=B6=E6=80=81=EF=BC=8C=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E6=88=96=E5=81=9C=E7=94=A8=E7=9A=84=EF=BC=8C=E5=81=9C=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E5=8C=B9=E9=85=8D=E5=88=B0=E4=B8=80=E4=B8=AA=E5=B0=B1?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=AE=8C=E6=88=90=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/MatchingPLMChangeUpdateTaskEdit.java | 71 ++++++++++++++++--- 1 file changed, 62 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index faaa736c..5d61253e 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -33,14 +33,14 @@ import java.util.*; public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { - private static Logger logger = LoggerFactory.getLogger(MatchingPLMChangeUpdateTaskEdit.class); + private static final Logger logger = LoggerFactory.getLogger(MatchingPLMChangeUpdateTaskEdit.class); @Override public void execute(RequestContext requestContext, Map map) throws KDException { DynamicObject[] plms = queryPLMChange(); DynamicObject[] boms = queryBOMChange(); - List matchList = new ArrayList<>(); + List matchList = new ArrayList<>(); for (DynamicObject bomObj : boms) { DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); @@ -55,10 +55,15 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { String exestate = bom.getString("yem_exestate"); Date invoktime = plm.getDate("yem_invoktime");//执行时间 String invokstatus = plm.getString("yem_invokstatus");//执行状态 + String exchangetype = plm.getString("yem_exchangetype");//替换标志 if (YEM.isNotEmpty(invoktime) && "B".equals(invokstatus)) { //已完成跳过 continue; } + // 没有替换关系不匹配 + if (YEM.isEmpty(exchangetype)) { + continue; + } MatchResult result = isPlmMatchBom(plmObj, bom, plm); exestate = "30".equals(exestate) ? "B" : "A"; if (result.isMatched() && result.getDisable()) { @@ -82,23 +87,51 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { } if (result.isMatched() && YEM.isNotEmpty(bom_completetime)) { + boolean exist = false; + for (MatchResult res : matchList) { + Long id = res.getInfo().getId(); + if (id == plm.getLong("id")) { + exist = true; + if (result.getEnable()) { + res.setEnable(true); + } + if (result.getDisable()) { + res.setDisable(true); + } + break; + } + } + if (!exist) { + MatchInfo info = new MatchInfo(plm.getLong("id"), bom_completetime, exestate, exchangetype); + result.setInfo(info); - MatchInfo info = new MatchInfo(plm.getLong("id"), bom_completetime, exestate); - matchList.add(info); - + matchList.add(result); + } } } } } } - for (MatchInfo info : matchList) { + // 更新执行状态、执行时间 + for (MatchResult result : matchList) { for (DynamicObject plmObj : plms) { DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); for (DynamicObject plm : plm_entry) { + MatchInfo info = result.getInfo(); if (plm.getLong("id") == info.getId()) { - plm.set("yem_invoktime", info.getComplateDate()); - plm.set("yem_invokstatus", info.getStatus()); + + // 后替代前、通用、不通用,必须停用启用都匹配到才更新完成状态 + if (YEM.isNotEmpty(info.getReplace()) && "A-B-C".contains(info.getReplace()) && result.getDisable() && result.getEnable()) { + plm.set("yem_invoktime", info.getComplateDate()); + plm.set("yem_invokstatus", info.getStatus()); + } + + // 启用或停用的,停用的匹配到一个就更新完成状态 + if (YEM.isNotEmpty(info.getReplace()) && "D-E".contains(info.getReplace()) && result.isMatched()) { + plm.set("yem_invoktime", info.getComplateDate()); + plm.set("yem_invokstatus", info.getStatus()); + } } } } @@ -180,8 +213,13 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { class MatchResult { + // 是否启用匹配到 private Boolean enable; + + // 是否停用匹配到 private Boolean disable; + + // 匹配信息 private MatchInfo info; public MatchResult() { @@ -224,19 +262,26 @@ class MatchResult { } class MatchInfo { + // PLM分录ID private Long id; + // 完成时间 private Date complateDate; + // 启用停用状态 private String status; + // 替换关系 + private String replace; + public MatchInfo() { } - public MatchInfo(Long id, Date complateDate, String status) { + public MatchInfo(Long id, Date complateDate, String status, String replace) { this.id = id; this.complateDate = complateDate; this.status = status; + this.replace = replace; } public Long getId() { @@ -262,4 +307,12 @@ class MatchInfo { public void setStatus(String status) { this.status = status; } + + public String getReplace() { + return replace; + } + + public void setReplace(String replace) { + this.replace = replace; + } } \ No newline at end of file