From 0205f3f397e93a90c53e0e525b099e9bb2b88460 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 29 Aug 2024 11:30:12 +0800 Subject: [PATCH 01/76] =?UTF-8?q?=E8=AE=A2=E8=88=B1=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8D=95=20=E4=BD=9C=E5=BA=9F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=8C=E5=96=84=20=20=EF=BC=88=E4=BD=9C=E5=BA=9F?= =?UTF-8?q?=E6=97=B6=E5=90=8C=E6=97=B6=E5=88=A0=E9=99=A4=E3=80=90=E4=BA=91?= =?UTF-8?q?=E4=B9=8B=E5=AE=B6=E8=A1=A8=E5=8D=95=E5=AE=9E=E4=BE=8Bid?= =?UTF-8?q?=E3=80=91=E3=80=81=E3=80=90=E4=BA=91=E4=B9=8B=E5=AE=B6=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8Bid=E3=80=91=20=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/orderproreqbillcancelstatusOp.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java diff --git a/src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java b/src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java new file mode 100644 index 00000000..908b6315 --- /dev/null +++ b/src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java @@ -0,0 +1,35 @@ +package com.yem.wm.im.orderproreqbill.op; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +/** + * @author ljw + * @date 2024/8/29 10:26 + * @description orderproreqbillcancelstatusOp + */ +public class orderproreqbillcancelstatusOp extends AbstractOperationServicePlugIn { + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + DynamicObject[] dataEntities = e.getDataEntities(); + for (DynamicObject dataEntity : dataEntities) { + long aLong = dataEntity.getLong("id"); + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_orderproreqbill", "id,number,yem_cancelstatus,yem_flowinstid,yem_forminstid,yem_contremark" + , new QFilter[]{new QFilter("id", QCP.equals, aLong)}); + String yemCancelstatus = dynamicObject.getString("yem_cancelstatus"); + if (yemCancelstatus.equals("B")){ + dynamicObject.set("yem_flowinstid",null); + dynamicObject.set("yem_forminstid",null); + dynamicObject.set("yem_contremark",null); + } + SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); + SaveServiceHelper.update(dynamicObject); + } + } +} From 47f627e91cabf1fc8965ffb4a42d72da6deed9eb Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 29 Aug 2024 11:33:11 +0800 Subject: [PATCH 02/76] =?UTF-8?q?=E8=AE=A2=E8=88=B1=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8D=95=20=E4=BD=9C=E5=BA=9F=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=8C=E5=96=84=20=20=EF=BC=88=E4=BD=9C=E5=BA=9F?= =?UTF-8?q?=E6=97=B6=E5=90=8C=E6=97=B6=E5=88=A0=E9=99=A4=E3=80=90=E4=BA=91?= =?UTF-8?q?=E4=B9=8B=E5=AE=B6=E8=A1=A8=E5=8D=95=E5=AE=9E=E4=BE=8Bid?= =?UTF-8?q?=E3=80=91=E3=80=81=E3=80=90=E4=BA=91=E4=B9=8B=E5=AE=B6=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9E=E4=BE=8Bid=E3=80=91=20=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java b/src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java index 908b6315..12ec76da 100644 --- a/src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java +++ b/src/main/java/com/yem/wm/im/orderproreqbill/op/orderproreqbillcancelstatusOp.java @@ -26,7 +26,6 @@ public class orderproreqbillcancelstatusOp extends AbstractOperationServicePlugI if (yemCancelstatus.equals("B")){ dynamicObject.set("yem_flowinstid",null); dynamicObject.set("yem_forminstid",null); - dynamicObject.set("yem_contremark",null); } SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); SaveServiceHelper.update(dynamicObject); From 15ec1e9cac18411fcc9983180f3bf2a15d1cc7fb Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Thu, 29 Aug 2024 17:01:41 +0800 Subject: [PATCH 03/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 40 ++++++++ .../task/MatchingPLMChangeUpdateTaskEdit.java | 99 +++++++++++++++++++ .../java/com/yem/em/utils/AtlasUtils.java | 48 ++++++++- 3 files changed, 185 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java create mode 100644 src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java new file mode 100644 index 00000000..09872d32 --- /dev/null +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -0,0 +1,40 @@ +package com.yem.em.task; + +import com.yem.em.utils.AtlasUtils; +import kd.bos.context.RequestContext; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.exception.KDException; +import kd.bos.schedule.executor.AbstractTask; + +import java.util.Map; + +import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.queryPLMChange; + +/** + * @Description: 1、如《PLM变更单》分录【替换关系】=【相互替换】【新替换旧】【互不替换】,分录【启用停用状态】=‘停用’,并且【替换件启用停用状态】=‘启用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id + *

+ * 2、如《PLM变更单》分录【替换关系】=【新增】,分录【替换件启用停用状态】=‘启用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id + *

+ * 3、如《PLM变更单》分录【替换关系】=【删除】,分录【启用停用状态】=‘停用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id + * @Date: 2024/8/29 15:38 + * @Created: by ZZSLL + */ + +public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { + + @Override + public void execute(RequestContext requestContext, Map map) throws KDException { + DynamicObject[] plms = queryPLMChange(); + + for (DynamicObject plmObj : plms) { + DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail"); + DynamicObjectCollection enabled = new DynamicObjectCollection(); + for (DynamicObject plm : collection) { +// if (替换件启用停用状态 = "启用") {} + enabled.add(plm); + } + AtlasUtils.generateReplaceRelationPLM(plmObj, enabled); + } + } +} diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java new file mode 100644 index 00000000..39e4b8a6 --- /dev/null +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -0,0 +1,99 @@ +package com.yem.em.task; + +import com.yem.rf.utils.RFUtils; +import com.yem.wm.utils.DynamicObjectUtil; +import kd.bos.context.RequestContext; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.exception.KDException; +import kd.bos.orm.query.QFilter; +import kd.bos.schedule.executor.AbstractTask; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +import java.math.BigDecimal; +import java.util.Map; + +/** + * @Description: + * 1.根据《PLM变更单》中的 + * 【PLM工艺变更单号】+【总成编码】+【子项零件编码】+【子件数量】 + * 匹配《BOM》变更单 + * 【更改单号】+【总成编码】+【子项零件编码】+【数量】+【启用停用状态=‘停用’】更新 《PLM变更单》【启用停用状态】【启用停用时间】; + *

+ * 2.根据《PLM变更单》中的 + * 【PLM工艺变更单号】+【替换后总成编码】+【替换后子项零件编码】+【替换子件数量】 + * 匹配《BOM》变更单 + * 【更改单号】+【总成编码】+【子项零件编码】+【数量】+【启用停用状态=‘启用’】更新 《PLM变更单》【替换件启用停用状态】【替换件启用停用时间】; + * + * @Date: 2024/8/29 15:08 + * @Created: by ZZSLL + */ + +public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { + + @Override + public void execute(RequestContext requestContext, Map map) throws KDException { + DynamicObject[] plms = queryPLMChange(); + DynamicObject[] boms = queryBOMChange(); + + for (DynamicObject plmObj : plms) { + DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); + for (DynamicObject plm : plm_entry) { + String plm_billno = plm.getString("billno");//PLM工艺变更单号 + String plm_parent = plm.getString("yem_materiel_parent.number");//总成编码 + String plm_child = plm.getString("yem_materiel_child.number");//子项零件编码 + BigDecimal plm_qty = plm.getBigDecimal("yem_qty_before");//子件数量 + for (DynamicObject bomObj : boms) { + DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); + for (DynamicObject bom : bom_entry) { + String bom_billno = bom.getString("yem_changeno");//更改单号 + String bom_parent = bom.getString("yem_parentno.number");//父件编码 + String bom_child = bom.getString("yem_subno");//子项零件编码 + BigDecimal bom_qty = bom.getBigDecimal("yem_qty");//数量 + if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty)) { + String enablesta = bom.getString("yem_enablesta");//启用停用状态 + if ("A".equals(enablesta)) {//启用 + + } + if ("B".equals(enablesta)) {//停用 + + } + + } + } + } + } + } + + SaveServiceHelper.save(plms); + } + + private boolean eq(Object str1, Object str2) { + if (str1 instanceof String && str2 instanceof String) { + return str1.equals(str2); + } + if (str1 instanceof BigDecimal && str2 instanceof BigDecimal) { + return ((BigDecimal) str1).compareTo((BigDecimal) str2) == 0; + } + return false; + } + + public static DynamicObject[] queryPLMChange() { + final String formId = "yem_changecompare"; + final String entryId = "yem_change_detail"; + String selectfields = DynamicObjectUtil.getSelectfields(formId); + selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, formId, entryId); + QFilter qFilter = RFUtils.getBaseQFilter(); + return BusinessDataServiceHelper.load(formId, selectfields, qFilter.toArray()); + } + + public static DynamicObject[] queryBOMChange() { + final String formId = "yem_em_bomchange"; + final String entryId = "yem_entryentity"; + String selectfields = DynamicObjectUtil.getSelectfields(formId); + selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, formId, entryId); + QFilter qFilter = RFUtils.getBaseQFilter(); + return BusinessDataServiceHelper.load(formId, selectfields, qFilter.toArray()); + } +} diff --git a/src/main/java/com/yem/em/utils/AtlasUtils.java b/src/main/java/com/yem/em/utils/AtlasUtils.java index 24a70b48..87bba664 100644 --- a/src/main/java/com/yem/em/utils/AtlasUtils.java +++ b/src/main/java/com/yem/em/utils/AtlasUtils.java @@ -8,8 +8,6 @@ import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.operate.result.IOperateInfo; import kd.bos.entity.operate.result.OperationResult; import kd.bos.exception.KDBizException; -import kd.bos.form.control.Control; -import kd.bos.form.control.events.ISuportClick; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -1085,5 +1083,51 @@ public class AtlasUtils { return list; } + /** + * PLM变更单生成替换关系 + * @param head 单据头数据 + * @param entryCollection 分录数据(一行) + */ + public static void generateReplaceRelationPLM(DynamicObject head, DynamicObjectCollection entryCollection) { + DynamicObject replace = BusinessDataServiceHelper.newDynamicObject("yem_em_replace"); + replace.set("createorg", head.getDynamicObject("createorg")); + replace.set("enable", "1"); + replace.set("status", "C"); + replace.set("yem_sourcetype", "PLM");//来源类型 + DynamicObjectCollection collection = replace.getDynamicObjectCollection("yem_entryentity"); + for (DynamicObject entry : entryCollection) { + DynamicObject addNew = collection.addNew(); + addNew.set("yem_operator", YEM.getCurrentUserId());//操作人 + addNew.set("yem_replacedate", new Date());//操作时间 + + addNew.set("yem_replace", entry.getString("yem_exchangetype"));//替换关系 + addNew.set("yem_sourcetypeen", head.getDynamicObjectType().getName());//来源类型 + addNew.set("yem_trackingno", head.getString("billno"));//来源单号 + addNew.set("yem_trackingid", head.getLong("id"));//来源内码 + addNew.set("yem_sourceid", entry.getLong("id"));//来源分录内码 + } + + OperationResult Operate = OperationServiceHelper.executeOperate("save", + replace.getDynamicObjectType().getName(), + new DynamicObject[]{replace}, OperateOption.create()); + + if (Operate.isSuccess()) { +// //总成 +// boolean yem_isass = entryentity.getBoolean("yem_isass"); +// if (yem_isass) { +// AtlasUtils.Upassatlasdet(head, entryentity, "Audit"); +// } +// //资源 +// boolean yem_isresource = entryentity.getBoolean("yem_isresource"); +// if (yem_isresource) { +//// AtlasUtils.Upassatlasdet(bill, entryentity, "Audit"); +// SubRelationUtils.BomUpdateCMMPTable(bill, entryentity, "Audit"); +// } + } else { + List allErrorOrValidateInfo = Operate.getAllErrorOrValidateInfo(); + String message = Operate.getMessage(); + throw new KDBizException("保存《替换关系》失败,失败信息为:," + message + "," + allErrorOrValidateInfo); + } + } } From db1cce9b4dd0202ed5a26f39fdcaa7c9c55be1c1 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Thu, 29 Aug 2024 17:31:52 +0800 Subject: [PATCH 04/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 21 +++++++- .../java/com/yem/em/utils/AtlasUtils.java | 52 ++----------------- 2 files changed, 23 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index 09872d32..47616ec6 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -6,6 +6,7 @@ import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.exception.KDException; import kd.bos.schedule.executor.AbstractTask; +import kd.bos.servicehelper.BusinessDataServiceHelper; import java.util.Map; @@ -34,7 +35,25 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { // if (替换件启用停用状态 = "启用") {} enabled.add(plm); } - AtlasUtils.generateReplaceRelationPLM(plmObj, enabled); + DynamicObject bomChange = createBOMChange(plmObj, enabled); + DynamicObjectCollection entry = bomChange.getDynamicObjectCollection("yem_entryentity"); + if (!entry.isEmpty()) { + DynamicObject replace = null; + if (entry.size() == 1) { + replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add"); + } + for (DynamicObject entryObject : entry) { + int idx = entry.indexOf(entryObject); + if (idx == 0) continue; + replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update"); + } + } } } + + private DynamicObject createBOMChange(DynamicObject head, DynamicObjectCollection entry) { + DynamicObject bomchange = BusinessDataServiceHelper.newDynamicObject("yem_em_bomchange"); + + return bomchange; + } } diff --git a/src/main/java/com/yem/em/utils/AtlasUtils.java b/src/main/java/com/yem/em/utils/AtlasUtils.java index 87bba664..d5d76043 100644 --- a/src/main/java/com/yem/em/utils/AtlasUtils.java +++ b/src/main/java/com/yem/em/utils/AtlasUtils.java @@ -32,8 +32,9 @@ public class AtlasUtils { * @param bill 表头数据包 * @param entryentity 分录行数据包 * @param entityName 单据标识 + * @return */ - public static void Addreplace(DynamicObject bill, DynamicObject entryentity, DynamicObject replace, String entityName, String type) { + public static DynamicObject Addreplace(DynamicObject bill, DynamicObject entryentity, DynamicObject replace, String entityName, String type) { DynamicObject billObj = null; if (type.equals("add")) { billObj = BusinessDataServiceHelper.newDynamicObject(entityName); @@ -127,6 +128,7 @@ public class AtlasUtils { // AtlasUtils.Upassatlasdet(bill, entryentity, "Audit"); SubRelationUtils.BomUpdateCMMPTable(bill, entryentity, "Audit"); } + return billObj; } else { List allErrorOrValidateInfo = Operate.getAllErrorOrValidateInfo(); String message = Operate.getMessage(); @@ -1082,52 +1084,4 @@ public class AtlasUtils { } return list; } - - /** - * PLM变更单生成替换关系 - * @param head 单据头数据 - * @param entryCollection 分录数据(一行) - */ - public static void generateReplaceRelationPLM(DynamicObject head, DynamicObjectCollection entryCollection) { - DynamicObject replace = BusinessDataServiceHelper.newDynamicObject("yem_em_replace"); - replace.set("createorg", head.getDynamicObject("createorg")); - replace.set("enable", "1"); - replace.set("status", "C"); - replace.set("yem_sourcetype", "PLM");//来源类型 - DynamicObjectCollection collection = replace.getDynamicObjectCollection("yem_entryentity"); - for (DynamicObject entry : entryCollection) { - DynamicObject addNew = collection.addNew(); - - addNew.set("yem_operator", YEM.getCurrentUserId());//操作人 - addNew.set("yem_replacedate", new Date());//操作时间 - - addNew.set("yem_replace", entry.getString("yem_exchangetype"));//替换关系 - addNew.set("yem_sourcetypeen", head.getDynamicObjectType().getName());//来源类型 - addNew.set("yem_trackingno", head.getString("billno"));//来源单号 - addNew.set("yem_trackingid", head.getLong("id"));//来源内码 - addNew.set("yem_sourceid", entry.getLong("id"));//来源分录内码 - } - - OperationResult Operate = OperationServiceHelper.executeOperate("save", - replace.getDynamicObjectType().getName(), - new DynamicObject[]{replace}, OperateOption.create()); - - if (Operate.isSuccess()) { -// //总成 -// boolean yem_isass = entryentity.getBoolean("yem_isass"); -// if (yem_isass) { -// AtlasUtils.Upassatlasdet(head, entryentity, "Audit"); -// } -// //资源 -// boolean yem_isresource = entryentity.getBoolean("yem_isresource"); -// if (yem_isresource) { -//// AtlasUtils.Upassatlasdet(bill, entryentity, "Audit"); -// SubRelationUtils.BomUpdateCMMPTable(bill, entryentity, "Audit"); -// } - } else { - List allErrorOrValidateInfo = Operate.getAllErrorOrValidateInfo(); - String message = Operate.getMessage(); - throw new KDBizException("保存《替换关系》失败,失败信息为:," + message + "," + allErrorOrValidateInfo); - } - } } From c8cda50b5bcf626c425d91ebee2d0d899f1d6745 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Thu, 29 Aug 2024 17:48:29 +0800 Subject: [PATCH 05/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../em/bd/bomchange/op/BomChangeNewAuditEdit.java | 8 ++++---- .../em/task/GenerateReplaceRelationshipTaskEdit.java | 6 +++--- src/main/java/com/yem/em/utils/AtlasUtils.java | 12 +++++++++--- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/yem/em/bd/bomchange/op/BomChangeNewAuditEdit.java b/src/main/java/com/yem/em/bd/bomchange/op/BomChangeNewAuditEdit.java index ee288821..03f89d52 100644 --- a/src/main/java/com/yem/em/bd/bomchange/op/BomChangeNewAuditEdit.java +++ b/src/main/java/com/yem/em/bd/bomchange/op/BomChangeNewAuditEdit.java @@ -93,10 +93,10 @@ public class BomChangeNewAuditEdit extends AbstractOperationServicePlugIn { if (yem_em_replace != null) { DynamicObject replace = BusinessDataServiceHelper.loadSingle(yem_em_replace.getLong("id"), "yem_em_replace"); if (replace != null) { - AtlasUtils.Addreplace(bill, entryentity, replace, "yem_em_replace", "update"); + AtlasUtils.Addreplace(bill, entryentity, replace, "yem_em_replace", "update", "BOM"); } } else { - AtlasUtils.Addreplace(bill, entryentity, null, "yem_em_replace", "add");//新增 + AtlasUtils.Addreplace(bill, entryentity, null, "yem_em_replace", "add", "BOM");//新增 } } if (StringUtils.isNotEmpty(yem_replace)) { @@ -109,10 +109,10 @@ public class BomChangeNewAuditEdit extends AbstractOperationServicePlugIn { if (yem_em_replace != null) { DynamicObject replace = BusinessDataServiceHelper.loadSingle(yem_em_replace.getLong("id"), "yem_em_replace"); if (replace != null) { - AtlasUtils.Addreplace(bill, entryentity, replace, "yem_em_replace", "update"); + AtlasUtils.Addreplace(bill, entryentity, replace, "yem_em_replace", "update", "BOM"); } } else { - AtlasUtils.Addreplace(bill, entryentity, null, "yem_em_replace", "add");//新增 + AtlasUtils.Addreplace(bill, entryentity, null, "yem_em_replace", "add", "BOM");//新增 } } } diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index 47616ec6..d44e4f19 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -40,12 +40,12 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { if (!entry.isEmpty()) { DynamicObject replace = null; if (entry.size() == 1) { - replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add"); + replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add", "PLM"); } for (DynamicObject entryObject : entry) { int idx = entry.indexOf(entryObject); if (idx == 0) continue; - replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update"); + replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update", "PLM"); } } } @@ -53,7 +53,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { private DynamicObject createBOMChange(DynamicObject head, DynamicObjectCollection entry) { DynamicObject bomchange = BusinessDataServiceHelper.newDynamicObject("yem_em_bomchange"); - + return bomchange; } } diff --git a/src/main/java/com/yem/em/utils/AtlasUtils.java b/src/main/java/com/yem/em/utils/AtlasUtils.java index d5d76043..2a4637a5 100644 --- a/src/main/java/com/yem/em/utils/AtlasUtils.java +++ b/src/main/java/com/yem/em/utils/AtlasUtils.java @@ -32,9 +32,10 @@ public class AtlasUtils { * @param bill 表头数据包 * @param entryentity 分录行数据包 * @param entityName 单据标识 + * @param source 来源类型 BOM | PLM * @return */ - public static DynamicObject Addreplace(DynamicObject bill, DynamicObject entryentity, DynamicObject replace, String entityName, String type) { + public static DynamicObject Addreplace(DynamicObject bill, DynamicObject entryentity, DynamicObject replace, String entityName, String type, String source) { DynamicObject billObj = null; if (type.equals("add")) { billObj = BusinessDataServiceHelper.newDynamicObject(entityName); @@ -45,7 +46,7 @@ public class AtlasUtils { billObj.set("number", entryentity.getString("yem_parentno")); billObj.set("name", entryentity.getString("yem_parentname")); billObj.set("creator", YEM.getCurrentUserId()); - billObj.set("yem_sourcetype", "BOM"); + billObj.set("yem_sourcetype", source); billObj.set("yem_parno", entryentity.getString("yem_subno")); billObj.set("yem_parname", entryentity.getString("yem_subname")); boolean yem_isass = entryentity.getBoolean("yem_isass"); @@ -104,7 +105,12 @@ public class AtlasUtils { subentryentity.set("yem_technology", new Date()); subentryentity.set("yem_remark", entryentity.getString("yem_remark")); subentryentity.set("yem_operator", YEM.getCurrentUserId()); - subentryentity.set("yem_sourcetypeen", "yem_em_bomchange"); + if ("BOM".equals(source)) { + subentryentity.set("yem_sourcetypeen", "yem_em_bomchange"); + } + if ("PLM".equals(source)) { + subentryentity.set("yem_sourcetypeen", "yem_changecompare"); + } subentryentity.set("yem_trackingno", bill.getString("number")); subentryentity.set("yem_trackingid", bill.getPkValue()); subentryentity.set("yem_sourceid", entryentity.getLong("id")); From af565627e5f015b67358b506e36a869622d1e7ba Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 29 Aug 2024 18:02:25 +0800 Subject: [PATCH 06/76] =?UTF-8?q?=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C=20?= =?UTF-8?q?=E5=B0=86=E5=AD=90=E5=88=86=E5=BD=95=E7=9A=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E5=90=8D=E7=A7=B0=E6=8B=BC=E6=8E=A5=E5=88=B0?= =?UTF-8?q?=E8=AF=A5=E5=AD=97=E6=AE=B5=EF=BC=8C=E6=8B=BC=E6=8E=A5=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/salesorder/op/SalesOrderSubmitOp.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java index 119e9f2b..09f8ddb8 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java @@ -13,6 +13,7 @@ import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.entity.plugin.args.EndOperationTransactionArgs; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; @@ -20,10 +21,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import java.math.BigDecimal; -import java.util.Calendar; -import java.util.Date; -import java.util.Iterator; -import java.util.List; +import java.util.*; /** * @Description @@ -109,6 +107,29 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn { // checkNewPrice(dataEntities); } + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + DynamicObject[] eDataEntities = e.getDataEntities(); + for (DynamicObject eDataEntity : eDataEntities) { + long aLong = eDataEntity.getLong("id"); + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", "id,billno,yem_es_materialinfo" + + ",yem_es_materialinfo.yem_multiconfig,yem_es_materialinfo.yem_optional,yem_multiconfig.yem_configurtypeen" + , new QFilter[]{new QFilter("", QCP.equals, aLong)}); + DynamicObjectCollection yemEsMaterialinfo = dynamicObject.getDynamicObjectCollection("yem_es_materialinfo"); + for (DynamicObject yemEsMAterialin : yemEsMaterialinfo) { + DynamicObjectCollection yemMulticonfig = yemEsMAterialin.getDynamicObjectCollection("yem_multiconfig"); + List list = new ArrayList<>(); + for (DynamicObject yemMulticon : yemMulticonfig) { + String yemConfigurtypeen = yemMulticon.getString("yem_configurtypeen"); + list.add(yemConfigurtypeen+"\n"); + } + String mergedString = String.join(";", list); + yemEsMAterialin.set("yem_optional",mergedString); + } + } + } + /** * 更新配件客商额度申请单据 * From aa6a3e0b316aaf58522423a80f410dd414bd8851 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 29 Aug 2024 18:03:35 +0800 Subject: [PATCH 07/76] =?UTF-8?q?=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C=20?= =?UTF-8?q?=E5=B0=86=E5=AD=90=E5=88=86=E5=BD=95=E7=9A=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E5=90=8D=E7=A7=B0=E6=8B=BC=E6=8E=A5=E5=88=B0?= =?UTF-8?q?=E8=AF=A5=E5=AD=97=E6=AE=B5=EF=BC=8C=E6=8B=BC=E6=8E=A5=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java index 09f8ddb8..c70d9a9c 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java @@ -115,7 +115,7 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn { long aLong = eDataEntity.getLong("id"); DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", "id,billno,yem_es_materialinfo" + ",yem_es_materialinfo.yem_multiconfig,yem_es_materialinfo.yem_optional,yem_multiconfig.yem_configurtypeen" - , new QFilter[]{new QFilter("", QCP.equals, aLong)}); + , new QFilter[]{new QFilter("id", QCP.equals, aLong)}); DynamicObjectCollection yemEsMaterialinfo = dynamicObject.getDynamicObjectCollection("yem_es_materialinfo"); for (DynamicObject yemEsMAterialin : yemEsMaterialinfo) { DynamicObjectCollection yemMulticonfig = yemEsMAterialin.getDynamicObjectCollection("yem_multiconfig"); From 9af58dec3a126d44996767ce6b25ed2bf822642f Mon Sep 17 00:00:00 2001 From: ljw Date: Fri, 30 Aug 2024 10:18:52 +0800 Subject: [PATCH 08/76] =?UTF-8?q?=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=97=B6=E5=AD=90=E5=88=86=E5=BD=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=B1=87=E6=80=BB=E5=88=B0=E5=88=86=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java index c70d9a9c..721e40ce 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java @@ -122,10 +122,11 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn { List list = new ArrayList<>(); for (DynamicObject yemMulticon : yemMulticonfig) { String yemConfigurtypeen = yemMulticon.getString("yem_configurtypeen"); - list.add(yemConfigurtypeen+"\n"); + list.add(yemConfigurtypeen); } - String mergedString = String.join(";", list); + String mergedString = String.join(";"+"\n", list); yemEsMAterialin.set("yem_optional",mergedString); + SaveServiceHelper.update(dynamicObject); } } } From 18d40f65c6086052131f6c7a30e12c2c583eed70 Mon Sep 17 00:00:00 2001 From: ljw Date: Fri, 30 Aug 2024 10:31:20 +0800 Subject: [PATCH 09/76] =?UTF-8?q?=E5=BF=AB=E9=80=92=E6=8A=A5=E9=94=80?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E5=88=97=E8=A1=A8=E6=89=93=E5=BC=80=E8=BF=87?= =?UTF-8?q?=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yem/wm/es/storagetrans/list/StorageTransKDListFilter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/yem/wm/es/storagetrans/list/StorageTransKDListFilter.java b/src/main/java/com/yem/wm/es/storagetrans/list/StorageTransKDListFilter.java index 57ee8ba2..033c119b 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/list/StorageTransKDListFilter.java +++ b/src/main/java/com/yem/wm/es/storagetrans/list/StorageTransKDListFilter.java @@ -2,6 +2,7 @@ package com.yem.wm.es.storagetrans.list; import kd.bos.form.events.SetFilterEvent; import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; /** * @author ljw @@ -15,5 +16,6 @@ public class StorageTransKDListFilter extends AbstractListPlugin { { super.setFilter(e); e.addCustomQFilter(new QFilter("yem_transportstyle.name", QFilter.equals,"快递")); + e.addCustomQFilter(new QFilter("yem_quicknotentry.yem_isbankdocument", QCP.equals, "0")); } } From 56b8060d6a753cc8af061d84f64c1e6b22bda404 Mon Sep 17 00:00:00 2001 From: ljw Date: Sat, 31 Aug 2024 16:37:28 +0800 Subject: [PATCH 10/76] =?UTF-8?q?=E8=87=B3=E4=B8=8D=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E5=B0=8F=E4=BA=8E=E7=AD=89=E4=BA=8E=E4=BB=8E=20=E4=BB=8E?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E5=B0=8F=E4=BA=8E=E5=89=8D=E4=B8=80=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E8=87=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/TransportCostsFormPlugIn.java | 50 ++++++++++++++++--- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/yem/wm/im/transportCosts/form/TransportCostsFormPlugIn.java b/src/main/java/com/yem/wm/im/transportCosts/form/TransportCostsFormPlugIn.java index c9d0a953..b0cff803 100644 --- a/src/main/java/com/yem/wm/im/transportCosts/form/TransportCostsFormPlugIn.java +++ b/src/main/java/com/yem/wm/im/transportCosts/form/TransportCostsFormPlugIn.java @@ -6,19 +6,14 @@ import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; -import kd.bos.form.IFormView; import kd.bos.form.control.Control; import kd.bos.form.field.BasedataEdit; import kd.bos.form.field.events.BeforeF7SelectEvent; import kd.bos.form.field.events.BeforeF7SelectListener; -import kd.bos.ksql.util.StringUtil; -import kd.bos.orm.query.QCP; -import kd.bos.orm.query.QFilter; import kd.sdk.plugin.Plugin; -import java.util.ArrayList; +import java.math.BigDecimal; import java.util.EventObject; -import java.util.List; /** * @Description 装箱核算运输费用 @@ -102,7 +97,50 @@ public class TransportCostsFormPlugIn extends AbstractBillPlugIn implements Befo } } break; + case "yem_from": + yemFrom(e); + break; + case"yem_reach": + yemReach(e); + break; } } + /** + * 至不允许小于等于从 + * @param e + */ + private void yemReach(PropertyChangedArgs e) { + ChangeData changeData = e.getChangeSet()[0]; + int rowIndex = changeData.getRowIndex(); + if (rowIndex - 1 < 0) { + return; + } + int parentRowIndex = changeData.getParentRowIndex(); + BigDecimal newValue = (BigDecimal) changeData.getNewValue(); + DynamicObjectCollection yemBdLogistics = this.getModel().getEntryEntity("yem_bd_logistics"); + BigDecimal bigDecimal = yemBdLogistics.get(parentRowIndex).getDynamicObjectCollection("yem_subentryentity").get(rowIndex - 1).getBigDecimal("yem_from"); + if (bigDecimal.compareTo(newValue) >= 0) { + this.getView().showMessage("!!!!"); + } + } + + /** + * 从不能小于前一行的至 + * @param e + */ + private void yemFrom(PropertyChangedArgs e) { + ChangeData changeData = e.getChangeSet()[0]; + int rowIndex = changeData.getRowIndex(); + if (rowIndex - 1 < 0) { + return; + } + int parentRowIndex = changeData.getParentRowIndex(); + BigDecimal newValue = (BigDecimal) changeData.getNewValue(); + DynamicObjectCollection yemBdLogistics = this.getModel().getEntryEntity("yem_bd_logistics"); + BigDecimal bigDecimal = yemBdLogistics.get(parentRowIndex).getDynamicObjectCollection("yem_subentryentity").get(rowIndex - 1).getBigDecimal("yem_reach"); + if (bigDecimal.compareTo(newValue) > 0) { + this.getView().showMessage("!!!!"); + } + } } \ No newline at end of file From f9511ecb94b5ff38c8d4f7feec0b3ac6db7fd25e Mon Sep 17 00:00:00 2001 From: ljw Date: Sat, 31 Aug 2024 16:37:44 +0800 Subject: [PATCH 11/76] =?UTF-8?q?=E8=BF=90=E8=BE=93=E6=96=B9=E5=BC=8F+?= =?UTF-8?q?=E8=B4=B9=E7=94=A8=E9=A1=B9=E7=9B=AE+=E6=B8=AF=E5=8F=A3?= =?UTF-8?q?=E5=94=AF=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Op/TransportCostsSaveOp.java | 26 ++++++++ .../TransportCostsSaveValidator.java | 60 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 src/main/java/com/yem/wm/im/transportCosts/Op/TransportCostsSaveOp.java create mode 100644 src/main/java/com/yem/wm/im/transportCosts/validator/TransportCostsSaveValidator.java diff --git a/src/main/java/com/yem/wm/im/transportCosts/Op/TransportCostsSaveOp.java b/src/main/java/com/yem/wm/im/transportCosts/Op/TransportCostsSaveOp.java new file mode 100644 index 00000000..398ac64a --- /dev/null +++ b/src/main/java/com/yem/wm/im/transportCosts/Op/TransportCostsSaveOp.java @@ -0,0 +1,26 @@ +package com.yem.wm.im.transportCosts.Op; + +import com.yem.wm.im.transferorder.vaildator.TransFerOrderSubmitMustInputValidator; +import com.yem.wm.im.transportCosts.validator.TransportCostsSaveValidator; +import com.yem.wm.utils.DynamicObjectUtil; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.args.BeforeOperationArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +/** + * @author ljw + * @date 2024/8/31 15:54 + * @description TransportCostsSaveOp + */ +public class TransportCostsSaveOp extends AbstractOperationServicePlugIn { + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.addValidator(new TransportCostsSaveValidator()); + } +} diff --git a/src/main/java/com/yem/wm/im/transportCosts/validator/TransportCostsSaveValidator.java b/src/main/java/com/yem/wm/im/transportCosts/validator/TransportCostsSaveValidator.java new file mode 100644 index 00000000..ed1dfa3b --- /dev/null +++ b/src/main/java/com/yem/wm/im/transportCosts/validator/TransportCostsSaveValidator.java @@ -0,0 +1,60 @@ +package com.yem.wm.im.transportCosts.validator; + +import com.yem.wm.utils.DynamicObjectUtil; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.validate.AbstractValidator; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +/** + * @author ljw + * @date 2024/8/31 16:11 + * @description TransportCostsSaveValidator + */ +public class TransportCostsSaveValidator extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject eDataEntity = extendedDataEntity.getDataEntity(); + DynamicObjectCollection dynamicObjectCollection = eDataEntity.getDynamicObjectCollection("yem_bd_logistics"); + long aLong = eDataEntity.getLong("id"); + for (DynamicObject dynamicObject : dynamicObjectCollection) { + DynamicObject yemShippingmethod = dynamicObject.getDynamicObject("yem_shippingmethod"); + DynamicObject yemExpenseitems = dynamicObject.getDynamicObject("yem_expenseitems"); + DynamicObject yemPort = dynamicObject.getDynamicObject("yem_port"); + QFilter qFilter = new QFilter("id", QCP.not_equals, aLong); + if (yemExpenseitems!=null){ + long yem_expenseitems = yemExpenseitems.getLong("id"); + qFilter.and("yem_bd_logistics.yem_expenseitems.id", QCP.equals, yem_expenseitems); + }else { + this.addMessage(extendedDataEntity,"费用项目不允许为空"); + return; + } + if (yemPort!=null){ + long yem_port = yemPort.getLong("id"); + qFilter.and("yem_bd_logistics.yem_port.id", QCP.equals, yem_port); + }else { + this.addMessage(extendedDataEntity,"运输方式不允许为空"); + return; + } + if (yemShippingmethod!=null){ + long yem_padexpense = yemShippingmethod.getLong("id"); + qFilter.and("yem_bd_logistics.yem_shippingmethod.id", QCP.equals, yem_padexpense); + }else { + this.addMessage(extendedDataEntity,"港口不允许为空"); + return; + } + String selectfield = DynamicObjectUtil.getSelectfields("yem_bd_transportcosts", false); + String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_bd_transportcosts", "yem_bd_logistics", false); + DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle("yem_bd_transportcosts", selectfields, new QFilter[]{qFilter}); + if (dynamicObject1 != null) { + this.addMessage(extendedDataEntity,"运输方式+费用项目+港口唯一"); + } + } + } + } +} From 7ea350de04914646b1ef5473b14e004927257157 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 09:34:33 +0800 Subject: [PATCH 12/76] =?UTF-8?q?feat:=E6=9C=8D=E5=8A=A1=E7=BB=B4=E4=BF=AE?= =?UTF-8?q?=E5=8D=95=E6=97=A0=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wm/im/servicerepair/form/ServiceRepairFormPlugin.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/yem/wm/im/servicerepair/form/ServiceRepairFormPlugin.java b/src/main/java/com/yem/wm/im/servicerepair/form/ServiceRepairFormPlugin.java index 3d18c009..9224d608 100644 --- a/src/main/java/com/yem/wm/im/servicerepair/form/ServiceRepairFormPlugin.java +++ b/src/main/java/com/yem/wm/im/servicerepair/form/ServiceRepairFormPlugin.java @@ -4,6 +4,8 @@ import com.google.common.collect.Maps; import com.yem.wm.utils.FunctionalCommon; import com.yem.wm.utils.YEM; import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.IDataModel; import kd.bos.extplugin.sample.AbstractFormPlugin; import kd.bos.form.CloseCallBack; import kd.bos.form.FormShowParameter; @@ -12,6 +14,7 @@ import kd.bos.form.ShowType; import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.events.ClosedCallBackEvent; import kd.bos.form.operate.FormOperate; +import kd.bos.servicehelper.operation.SaveServiceHelper; import java.util.HashMap; @@ -42,8 +45,10 @@ public class ServiceRepairFormPlugin extends AbstractBillPlugIn { super.closedCallBack(e); IFormView view = this.getView(); String actionId = e.getActionId(); + IDataModel model = this.getModel(); + DynamicObject dataEntity = model.getDataEntity(true); if ("voidreason".equals(actionId)) { - view.invokeOperation("save"); + SaveServiceHelper.save(new DynamicObject[]{dataEntity}); view.invokeOperation("refresh"); } } From 1e074f37aed5ea58430444b953d5340143434949 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 09:33:19 +0800 Subject: [PATCH 13/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../em/task/GenerateReplaceRelationshipTaskEdit.java | 3 +++ .../yem/em/task/MatchingPLMChangeUpdateTaskEdit.java | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index d44e4f19..ea51e5c9 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -8,6 +8,7 @@ import kd.bos.exception.KDException; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; +import java.util.Date; import java.util.Map; import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.queryPLMChange; @@ -32,7 +33,9 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail"); DynamicObjectCollection enabled = new DynamicObjectCollection(); for (DynamicObject plm : collection) { + Date starttime = plm.getDate("yem_starttime"); // if (替换件启用停用状态 = "启用") {} + enabled.add(plm); } DynamicObject bomChange = createBOMChange(plmObj, enabled); diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index 39e4b8a6..9f2f588f 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -12,6 +12,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import java.math.BigDecimal; +import java.util.Date; import java.util.Map; /** @@ -54,10 +55,16 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty)) { String enablesta = bom.getString("yem_enablesta");//启用停用状态 if ("A".equals(enablesta)) {//启用 - + Date starttime = plm.getDate("yem_starttime"); + if (starttime == null) { + plm.set("yem_starttime", new Date()); + } } if ("B".equals(enablesta)) {//停用 - + Date stoptime = plm.getDate("yem_stoptime"); + if (stoptime == null) { + plm.set("yem_stoptime", new Date()); + } } } From 0f1778e7e3265b82e3e2a73f58cd4767c7400ea1 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 09:41:57 +0800 Subject: [PATCH 14/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yem/em/task/GenerateReplaceRelationshipTaskEdit.java | 8 ++++---- .../com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index ea51e5c9..48440ead 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -33,10 +33,10 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail"); DynamicObjectCollection enabled = new DynamicObjectCollection(); for (DynamicObject plm : collection) { - Date starttime = plm.getDate("yem_starttime"); -// if (替换件启用停用状态 = "启用") {} - - enabled.add(plm); + String enablesta = plm.getString("yem_enablesta"); + if ("A".equals(enablesta)) {//"替换件启用停用状态 = 启用" + enabled.add(plm); + } } DynamicObject bomChange = createBOMChange(plmObj, enabled); DynamicObjectCollection entry = bomChange.getDynamicObjectCollection("yem_entryentity"); diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index 9f2f588f..69eaf32d 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -55,14 +55,14 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty)) { String enablesta = bom.getString("yem_enablesta");//启用停用状态 if ("A".equals(enablesta)) {//启用 - Date starttime = plm.getDate("yem_starttime"); - if (starttime == null) { + String plm_enablesta = plm.getString("yem_enablesta"); + if ("A".equals(plm_enablesta)) { plm.set("yem_starttime", new Date()); } } if ("B".equals(enablesta)) {//停用 - Date stoptime = plm.getDate("yem_stoptime"); - if (stoptime == null) { + String plm_enablesta = plm.getString("yem_enablesta"); + if ("B".equals(plm_enablesta)) { plm.set("yem_stoptime", new Date()); } } From 7dd13631933342be8dea0d2b3eea611a79136d71 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 09:51:28 +0800 Subject: [PATCH 15/76] =?UTF-8?q?feat:=E8=AE=A2=E8=88=B1=E5=A7=94=E6=89=98?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E9=83=A8=E5=88=86=E5=AD=97=E6=AE=B5=E5=BF=85?= =?UTF-8?q?=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/StorageTransEdit_wl.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java index 5b12ef59..d18437b0 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java +++ b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java @@ -288,16 +288,16 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { boonle = false; i++; } - if (yemCutdate == null) { - string = string + i + ". 截单日期为空,请稍后重试!\n"; - boonle = false; - i++; - } - if (yemPortinterception == null) { - string = string + i + ". 截港日期为空,请稍后重试!\n"; - boonle = false; - i++; - } +// if (yemCutdate == null) { +// string = string + i + ". 截单日期为空,请稍后重试!\n"; +// boonle = false; +// i++; +// } +// if (yemPortinterception == null) { +// string = string + i + ". 截港日期为空,请稍后重试!\n"; +// boonle = false; +// i++; +// } if (null == yemCfscompnay) { string = string + i + ". 货代公司为空,请稍后重试!\n"; boonle = false; From 28e8697e2d65abe2a22030ec63916e22852c0ccd Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 09:56:52 +0800 Subject: [PATCH 16/76] =?UTF-8?q?feat:CMMP=E9=83=A8=E4=BB=B6=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E8=A1=A8=E5=AE=A1=E6=A0=B8=E6=A0=A1=E9=AA=8C=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yem/em/ass/cmmptable/validator/CMMPTableAuditvalidator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/em/ass/cmmptable/validator/CMMPTableAuditvalidator.java b/src/main/java/com/yem/em/ass/cmmptable/validator/CMMPTableAuditvalidator.java index 03c566bc..8b73e8ea 100644 --- a/src/main/java/com/yem/em/ass/cmmptable/validator/CMMPTableAuditvalidator.java +++ b/src/main/java/com/yem/em/ass/cmmptable/validator/CMMPTableAuditvalidator.java @@ -26,7 +26,7 @@ public class CMMPTableAuditvalidator extends AbstractValidator { this.addErrorMessage(dataEntitie, String.format("部件详情第【"+seq+"】行未匹配【系统编码】,请重试!")); } boolean yem_isassatlasdet = dynamicObject.getBoolean("yem_isassatlasdet"); - if (!yemIsnormal) { + if (!yem_isassatlasdet) { this.addErrorMessage(dataEntitie, String.format("部件详情第【"+seq+"】行未匹配【图册明细】,请重试!")); } } From f0b12b495960e2b981b3a1294d260216a96fbb98 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 10:18:32 +0800 Subject: [PATCH 17/76] =?UTF-8?q?feat:=E6=95=B4=E6=9C=BA=E5=90=88=E5=90=8C?= =?UTF-8?q?=E5=B8=A6=E5=87=BA=E9=98=B2=E6=B0=B4=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/salesorder/from/SalesOrderZJEdit.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java index a1817d30..8f38ae7f 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java @@ -943,17 +943,17 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo DynamicObjectCollection infors = overAllToolLib.getDynamicObjectCollection("yem_infor"); DynamicObjectCollection spareparts = overAllToolLib.getDynamicObjectCollection("yem_spareparts"); DynamicObjectCollection tools = overAllToolLib.getDynamicObjectCollection("yem_tools"); -// for (DynamicObject infor : infors) { -// int entryRow = model.createNewEntryRow("yem_es_salesorder_p"); -// model.setValue("yem_accessorytype", overAllToolLib.getDynamicObject("yem_productmodel"), entryRow); -// model.setValue("yem_volvotype", "A", entryRow); -// model.setValue("yem_accesmaterial", infor.getDynamicObject("yem_material_i"), entryRow); -// model.setValue("yem_acunit", infor.getDynamicObject("yem_unit_i"), entryRow); -// model.setValue("yem_bicycleqty", infor.getBigDecimal("yem_qty_i"), entryRow); -// model.setValue("yem_acremark", infor.getString("yem_remark_i"), entryRow); -// model.setValue("yem_pcstype", map.get(id), entryRow); -// model.setValue("yem_acallqty", map.get(id).multiply(infor.getBigDecimal("yem_qty_i")), entryRow); -// } + for (DynamicObject infor : infors) { + int entryRow = model.createNewEntryRow("yem_es_salesorder_p"); + model.setValue("yem_accessorytype", overAllToolLib.getDynamicObject("yem_productmodel"), entryRow); + model.setValue("yem_volvotype", "A", entryRow); + model.setValue("yem_accesmaterial", infor.getDynamicObject("yem_material_i"), entryRow); + model.setValue("yem_acunit", infor.getDynamicObject("yem_unit_i"), entryRow); + model.setValue("yem_bicycleqty", infor.getBigDecimal("yem_qty_i"), entryRow); + model.setValue("yem_acremark", infor.getString("yem_remark_i"), entryRow); + model.setValue("yem_pcstype", map.get(id), entryRow); + model.setValue("yem_acallqty", map.get(id).multiply(infor.getBigDecimal("yem_qty_i")), entryRow); + } for (DynamicObject sparepart : spareparts) { int entryRow = model.createNewEntryRow("yem_es_salesorder_p"); model.setValue("yem_accessorytype", overAllToolLib.getDynamicObject("yem_productmodel"), entryRow); From cdd324831f77606939d0c68072be65a0032fad68 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 10:18:32 +0800 Subject: [PATCH 18/76] =?UTF-8?q?feat:=E6=95=B4=E6=9C=BA=E5=90=88=E5=90=8C?= =?UTF-8?q?=E5=B8=A6=E5=87=BA=E9=98=B2=E6=B0=B4=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/salesorder/from/SalesOrderZJEdit.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java index 95ab8074..a27ef613 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java @@ -934,17 +934,17 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo DynamicObjectCollection infors = overAllToolLib.getDynamicObjectCollection("yem_infor"); DynamicObjectCollection spareparts = overAllToolLib.getDynamicObjectCollection("yem_spareparts"); DynamicObjectCollection tools = overAllToolLib.getDynamicObjectCollection("yem_tools"); -// for (DynamicObject infor : infors) { -// int entryRow = model.createNewEntryRow("yem_es_salesorder_p"); -// model.setValue("yem_accessorytype", overAllToolLib.getDynamicObject("yem_productmodel"), entryRow); -// model.setValue("yem_volvotype", "A", entryRow); -// model.setValue("yem_accesmaterial", infor.getDynamicObject("yem_material_i"), entryRow); -// model.setValue("yem_acunit", infor.getDynamicObject("yem_unit_i"), entryRow); -// model.setValue("yem_bicycleqty", infor.getBigDecimal("yem_qty_i"), entryRow); -// model.setValue("yem_acremark", infor.getString("yem_remark_i"), entryRow); -// model.setValue("yem_pcstype", map.get(id), entryRow); -// model.setValue("yem_acallqty", map.get(id).multiply(infor.getBigDecimal("yem_qty_i")), entryRow); -// } + for (DynamicObject infor : infors) { + int entryRow = model.createNewEntryRow("yem_es_salesorder_p"); + model.setValue("yem_accessorytype", overAllToolLib.getDynamicObject("yem_productmodel"), entryRow); + model.setValue("yem_volvotype", "A", entryRow); + model.setValue("yem_accesmaterial", infor.getDynamicObject("yem_material_i"), entryRow); + model.setValue("yem_acunit", infor.getDynamicObject("yem_unit_i"), entryRow); + model.setValue("yem_bicycleqty", infor.getBigDecimal("yem_qty_i"), entryRow); + model.setValue("yem_acremark", infor.getString("yem_remark_i"), entryRow); + model.setValue("yem_pcstype", map.get(id), entryRow); + model.setValue("yem_acallqty", map.get(id).multiply(infor.getBigDecimal("yem_qty_i")), entryRow); + } for (DynamicObject sparepart : spareparts) { int entryRow = model.createNewEntryRow("yem_es_salesorder_p"); model.setValue("yem_accessorytype", overAllToolLib.getDynamicObject("yem_productmodel"), entryRow); From c1701969f7a68cef991c17639658cbc989282072 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 11:14:27 +0800 Subject: [PATCH 19/76] =?UTF-8?q?fix:=E9=94=80=E5=94=AE=E6=8F=90=E6=88=90?= =?UTF-8?q?=E6=95=B4=E6=9C=BA=EF=BC=8C=E9=A6=96=E4=BB=98=E6=AC=BE=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E6=97=A5=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yem/rf/salescommission/SalesCommissionReportPlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java index bd439a57..3eabede2 100644 --- a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java @@ -53,7 +53,8 @@ public class SalesCommissionReportPlugin extends AbstractReportListDataPlugin { .on("salesorderid", "main_id_g_claimed_amt_fk") .select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(claimedAmt)) .finish(); - claimDate = claimDate.select("main_id_gathering_fk, yem_prodpaydate yem_firstpaydate, yem_endpaydate yem_lastpaydate"); + claimDate = claimDate.select("main_id_gathering_fk, yem_endpaydate yem_lastpaydate, " + + "CASE WHEN yem_prodpaydate != '' THEN yem_prodpaydate ELSE yem_shippaydate END yem_firstpaydate"); resDataSet = resDataSet.leftJoin(claimDate) .on("salesorderid", "main_id_gathering_fk") .select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(claimDate)) From 0b9bb471d217f45a45df30974362c948ae7507e6 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 11:54:12 +0800 Subject: [PATCH 20/76] =?UTF-8?q?feat:=E8=B4=A7=E4=BB=A3=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/storagetrans/dynamic/BackFillbillEdit.java | 2 ++ .../es/storagetrans/form/StorageTransEdit_wl.java | 15 +++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/yem/wm/es/storagetrans/dynamic/BackFillbillEdit.java b/src/main/java/com/yem/wm/es/storagetrans/dynamic/BackFillbillEdit.java index 9536e4ef..d59ec154 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/dynamic/BackFillbillEdit.java +++ b/src/main/java/com/yem/wm/es/storagetrans/dynamic/BackFillbillEdit.java @@ -45,6 +45,7 @@ public class BackFillbillEdit extends AbstractFormPlugin { model.setValue("yem_encasemedate", parentModel.getValue("yem_encasemedate"));//预计装箱时间 model.setValue("yem_cfscompnay", parentModel.getValue("yem_cfscompnay"));//货代公司 + model.setValue("yem_cfscompnaytxt", parentModel.getValue("yem_cfscompnaytxt"));//货代公司 model.setValue("yem_custombrokers", parentModel.getValue("yem_custombrokers"));//报关行 model.setValue("yem_bhd_combo", parentModel.getValue("yem_bhd_combo"));//运费承付 model.setValue("yem_boxtext", parentModel.getValue("yem_boxvolume1"));//箱型箱量 @@ -173,6 +174,7 @@ public class BackFillbillEdit extends AbstractFormPlugin { Map map = new HashMap(); map.put("yem_encasemedate", model.getValue("yem_encasemedate"));//预计装箱时间 map.put("yem_cfscompnay", model.getValue("yem_cfscompnay"));//货代公司 + map.put("yem_cfscompnaytxt", model.getValue("yem_cfscompnaytxt"));//货代公司 map.put("yem_custombrokers", model.getValue("yem_custombrokers"));//报关行 map.put("yem_bhd_combo", model.getValue("yem_bhd_combo"));//运费承付 map.put("yem_boxtext", model.getValue("yem_boxtext"));//箱型箱量 diff --git a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java index d18437b0..3c9d31e5 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java +++ b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit_wl.java @@ -108,7 +108,8 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { String yemVoyageno = (String) this.getModel().getValue("yem_voyageno");//航次 Date yemCutdate = (Date) this.getModel().getValue("yem_cutdate");//截单日期 Date yemPortinterception = (Date) this.getModel().getValue("yem_portinterception");//截港日期 - DynamicObject yemCfscompnay = (DynamicObject) this.getModel().getValue("yem_cfscompnay");//货代公司 +// DynamicObject yemCfscompnay = (DynamicObject) this.getModel().getValue("yem_cfscompnay");//货代公司 + String yemCfscompnay = (String) this.getModel().getValue("yem_cfscompnaytxt");//货代公司 Date yemEtddate = (Date) this.getModel().getValue("yem_etddate");//ETD(离港日期) DynamicObject yemSctcompnayname = (DynamicObject) this.getModel().getValue("yem_sctcompnayname");//船公司 String yemStation = (String) this.getModel().getValue("yem_stationtext");//场站 @@ -153,7 +154,7 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { boonle = false; i++; } - if (null == yemCfscompnay) { + if (YEM.isEmpty(yemCfscompnay)) { string = string + i + ". 货代公司为空,请稍后重试!\n"; boonle = false; i++; @@ -190,14 +191,14 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { boonle = false; i++; } - if (null == yemCfscompnay) { + if (YEM.isEmpty(yemCfscompnay)) { string = string + i + ". 货代公司为空,请稍后重试!\n"; boonle = false; i++; } } if ("YSFS-1001".equals(number) || "YSFS-1002".equals(number)) { - if (null == yemCfscompnay) { + if (YEM.isEmpty(yemCfscompnay)) { string = string + i + ". 货代公司为空,请稍后重试!\n"; boonle = false; i++; @@ -251,7 +252,7 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { boonle = false; i++; } - if (null == yemCfscompnay) { + if (YEM.isEmpty(yemCfscompnay)) { string = string + i + ". 货代公司为空,请稍后重试!\n"; boonle = false; i++; @@ -298,7 +299,7 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { // boonle = false; // i++; // } - if (null == yemCfscompnay) { + if (YEM.isEmpty(yemCfscompnay)) { string = string + i + ". 货代公司为空,请稍后重试!\n"; boonle = false; i++; @@ -349,6 +350,7 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { DynamicObject yem_customer = dataEntity.getDynamicObject("yem_customer"); model.setValue("yem_encasemedate", map.get("yem_encasemedate"));//预计装箱时间 model.setValue("yem_cfscompnay", map.get("yem_cfscompnay"));//货代公司 + model.setValue("yem_cfscompnaytxt", map.get("yem_cfscompnaytxt"));//货代公司 model.setValue("yem_custombrokers", map.get("yem_custombrokers"));//报关行 model.setValue("yem_bhd_combo", map.get("yem_bhd_combo"));//运费承付 // model.setValue("yem_boxtext", map.get("yem_boxtext"));//箱型箱量 @@ -458,6 +460,7 @@ public class StorageTransEdit_wl extends AbstractBillPlugIn { if (storagetrans != null) { storagetrans.set("yem_encasemedate", map.get("yem_encasemedate"));//预计装箱时间 storagetrans.set("yem_cfscompnay", map.get("yem_cfscompnay"));//货代公司 + storagetrans.set("yem_cfscompnaytxt", map.get("yem_cfscompnaytxt"));//货代公司 storagetrans.set("yem_custombrokers", map.get("yem_custombrokers"));//报关行 storagetrans.set("yem_bhd_combo", map.get("yem_bhd_combo"));//运费承付 storagetrans.set("yem_boxtexts", map.get("yem_boxtext"));//箱型箱量 From 777b1b149e4de6078ca0b19f0d1449fc974fe1f7 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 2 Sep 2024 15:09:25 +0800 Subject: [PATCH 21/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 33 +++++++++++++++++-- .../task/MatchingPLMChangeUpdateTaskEdit.java | 12 +++++-- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index 48440ead..0e7256fa 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -54,9 +54,38 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { } } - private DynamicObject createBOMChange(DynamicObject head, DynamicObjectCollection entry) { + private DynamicObject createBOMChange(DynamicObject head, DynamicObjectCollection entries) { DynamicObject bomchange = BusinessDataServiceHelper.newDynamicObject("yem_em_bomchange"); - + bomchange.set("id", head.getLong("id")); + bomchange.set("createorg", head.getString("org"));//创建组织-组织 + bomchange.set("yem_producttype", head.getString("yem_producttype"));//产品分类 + bomchange.set("number", head.getString("billno"));//单据编号 + bomchange.set("yem_date", head.getDate("createtime"));//业务日期-创建时间 + bomchange.set("creator", head.getLong("creator.id"));//创建人 + DynamicObjectCollection detail = bomchange.getDynamicObjectCollection("yem_change_detail"); + for (DynamicObject entry : entries) { + DynamicObject addNew = detail.addNew(); + addNew.set("id", entry.getLong("id")); + addNew.set("yem_parentno", entry.getString("yem_textfield"));//父件编码 + addNew.set("yem_parentname", entry.getString("yem_name_parent"));//父项名称 + addNew.set("yem_subno", entry.getString("yem_child_before"));//子件编码 + addNew.set("yem_subname", entry.getString("yem_name_child"));//子件名称 + addNew.set("yem_subenname", "");//子件英文名称 + addNew.set("yem_qty", entry.getBigDecimal("yem_qty_before"));//数量 + addNew.set("yem_enablesta", entry.getBigDecimal("yem_enablesta"));//启用停用状态 + addNew.set("yem_replace", entry.getString("yem_exchangetype"));//替换关系 + addNew.set("yem_enableparno", entry.getString("yem_parent_now"));//替换父件编码-父项编码 + addNew.set("yem_enableparname", entry.getString("yem_name_newparent"));//替换父件名称-父项名称 + addNew.set("yem_enablesubno", entry.getString("yem_child_now"));//替换子件编码-子项编码 + addNew.set("yem_enablesubname", entry.getString("yem_name_newchild"));//替换子件名称 + addNew.set("yem_enablesubenname", entry.getString("yem_englishname"));//替换件英文名称-子件英文名称 + addNew.set("yem_enablesubqty", entry.getBigDecimal("yem_qty_new"));//数量 + addNew.set("yem_enableddate", entry.getDate("yem_starttime"));//启用时间 + addNew.set("yem_downdate", entry.getDate("yem_stoptime"));//停用时间 + addNew.set("yem_remark", "");//备注 + addNew.set("yem_isass", entry.getBoolean("yem_isassy"));//是否总成 + addNew.set("yem_isresource", entry.getBoolean("yem_isresource"));//是否资源 + } return bomchange; } } diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index 69eaf32d..7aed7a0b 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -10,6 +10,8 @@ import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.util.Date; @@ -33,6 +35,8 @@ import java.util.Map; public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { + private static Logger logger = LoggerFactory.getLogger(MatchingPLMChangeUpdateTaskEdit.class); + @Override public void execute(RequestContext requestContext, Map map) throws KDException { DynamicObject[] plms = queryPLMChange(); @@ -40,8 +44,8 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { for (DynamicObject plmObj : plms) { DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); + String plm_billno = plmObj.getString("billno");//PLM工艺变更单号 for (DynamicObject plm : plm_entry) { - String plm_billno = plm.getString("billno");//PLM工艺变更单号 String plm_parent = plm.getString("yem_materiel_parent.number");//总成编码 String plm_child = plm.getString("yem_materiel_child.number");//子项零件编码 BigDecimal plm_qty = plm.getBigDecimal("yem_qty_before");//子件数量 @@ -53,7 +57,9 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { String bom_child = bom.getString("yem_subno");//子项零件编码 BigDecimal bom_qty = bom.getBigDecimal("yem_qty");//数量 if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty)) { + logger.info("PLM匹配到BOM,{}-{}, {}-{}, {}-{}, {}-{}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_qty); String enablesta = bom.getString("yem_enablesta");//启用停用状态 + logger.info("BOM 状态为 {}", "A".equals(enablesta) ? "启用" : "停用"); if ("A".equals(enablesta)) {//启用 String plm_enablesta = plm.getString("yem_enablesta"); if ("A".equals(plm_enablesta)) { @@ -66,7 +72,7 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { plm.set("yem_stoptime", new Date()); } } - + plm.set("yem_enablesta", enablesta); } } } @@ -100,7 +106,7 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { final String entryId = "yem_entryentity"; String selectfields = DynamicObjectUtil.getSelectfields(formId); selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, formId, entryId); - QFilter qFilter = RFUtils.getBaseQFilter(); + QFilter qFilter = new QFilter("status", "=", "C"); return BusinessDataServiceHelper.load(formId, selectfields, qFilter.toArray()); } } From 5bbcce853925da82f51032746daad6d6c7f159bd Mon Sep 17 00:00:00 2001 From: violet Date: Mon, 2 Sep 2024 19:45:57 +0800 Subject: [PATCH 22/76] =?UTF-8?q?feat:=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C?= =?UTF-8?q?=E4=BD=9C=E5=BA=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SaleOrdeExportisVoidValidator.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java b/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java index 31d437d4..5e859091 100644 --- a/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java +++ b/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java @@ -43,6 +43,8 @@ public class SaleOrdeExportisVoidValidator extends AbstractValidator { MoneyClaim(dataEntity, dataEntitie); //5、合同是否有对应的客商额度申请的额度占用并且未释放额度,如果有不能作废; Merchant(dataEntity, dataEntitie); + //6.合同下存在内审预算单,不能作废 + Getintauditbusa(dataEntity, dataEntitie); //弱校验: //1、合同是否在礼品资金池有对应的礼品来源,如果有弹框点击确定,确定后删除对于礼品资金池对于合同号的礼品来源分录及其子分录;(参考反审核的逻辑) Giftamount(dataEntity, dataEntitie); @@ -172,11 +174,12 @@ public class SaleOrdeExportisVoidValidator extends AbstractValidator { } /** - * 合同是否在礼品资金池有对应的礼品来源,如果有弹框点击确定,确定后删除对于礼品资金池对于合同号的礼品来源分录及其子分录;(参考反审核的逻辑) - * @param dataEntity 对象 + * 合同是否在礼品资金池有对应的礼品来源,如果有弹框点击确定,确定后删除对于礼品资金池对于合同号的礼品来源分录及其子分录;(参考反审核的逻辑) + * + * @param dataEntity 对象 * @param dataEntitie 数据实体 */ - public void Giftamount(DynamicObject dataEntity, ExtendedDataEntity dataEntitie){ + public void Giftamount(DynamicObject dataEntity, ExtendedDataEntity dataEntitie) { List list = new ArrayList<>(); String billno = dataEntity.getString("billno"); Object pkValue = dataEntity.getPkValue(); @@ -194,4 +197,28 @@ public class SaleOrdeExportisVoidValidator extends AbstractValidator { this.addWarningMessage(dataEntitie, "当前单据【" + billno + "】已存在礼品资金池【" + s + "】,是否作废!"); } } + + /** + * 合同存在内审预算单,禁止作废,强控 + * + * @param dataEntity 对象 + * @param dataEntitie 数据实体 + */ + public void Getintauditbusa(DynamicObject dataEntity, ExtendedDataEntity dataEntitie) { + List list = new ArrayList<>(); + String billno = dataEntity.getString("billno"); + Object pkValue = dataEntity.getPkValue(); + QFilter qFilter = new QFilter("billno", QCP.equals, billno); + DynamicObjectCollection yem_shippingdetails = QueryServiceHelper.query("yem_im_intauditbusa", "id,billno", new QFilter[]{qFilter}, null); + if (yem_shippingdetails.size() > 0) { + for (DynamicObject shippingdetails : yem_shippingdetails) { + String shippbillno = shippingdetails.getString("billno"); + list.add(shippbillno); + } + } + if (list.size() > 0) { + String s = DebCredUtils.dedupAndJoin(list, ";"); + this.addErrorMessage(dataEntitie, "当前单据【" + billno + "】已存在内审预算单【" + s + "】,禁止作废!"); + } + } } From 30bff50325e8d9e25de40de66f68e85dfa89f7f4 Mon Sep 17 00:00:00 2001 From: ljw Date: Mon, 2 Sep 2024 19:46:54 +0800 Subject: [PATCH 23/76] =?UTF-8?q?=E8=AF=A2=E4=BB=B7=E5=8D=95=E4=BA=8C?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../im/inquirylist/form/InquirylistEdit.java | 22 +++++++++++- .../im/inquirylist/op/InquirylistAudit.java | 34 ++++++++++++++++--- 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java b/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java index 8e39cdfe..7a423642 100644 --- a/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java +++ b/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java @@ -201,12 +201,14 @@ public class InquirylistEdit extends AbstractBillPlugIn implements BeforeF7Selec super.propertyChanged(e); IDataModel model = this.getModel(); String name = e.getProperty().getName(); + int rowIndex = e.getChangeSet()[0].getRowIndex(); switch (name) { case "yem_productmodel": model.deleteEntryData("yem_multiconfig"); + price(rowIndex); break; case "yem_material": - int rowIndex = e.getChangeSet()[0].getRowIndex(); + DynamicObjectCollection entryEntity = model.getEntryEntity("yem_im_detailedinfor"); DynamicObject dynamicObject = entryEntity.get(rowIndex); long materialId = dynamicObject.getLong("yem_material.id"); @@ -225,6 +227,24 @@ public class InquirylistEdit extends AbstractBillPlugIn implements BeforeF7Selec model.setValue("yem_classification", null, rowIndex); } break; + case"yem_qingdaounitprice": + price(rowIndex); + } + } + + private void price(int rowIndex) { + DynamicObject yemImDetailedinfor = this.getModel().getEntryEntity("yem_im_detailedinfor").get(rowIndex); + DynamicObject yemProductmodel = yemImDetailedinfor.getDynamicObject("yem_productmodel"); + BigDecimal yemQingdaounitprice = yemImDetailedinfor.getBigDecimal("yem_qingdaounitprice"); + if (yemQingdaounitprice.compareTo(BigDecimal.ZERO)==0){ + return; + } + if (yemProductmodel!=null){ + DynamicObject yemProducts = yemProductmodel.getDynamicObject("yem_products"); + if (yemProducts!=null){ + BigDecimal yemCostdifference = yemProducts.getBigDecimal("yem_costdifference"); + this.getModel().setValue("yem_unitprice",yemQingdaounitprice.subtract(yemCostdifference), rowIndex); + } } } diff --git a/src/main/java/com/yem/wm/im/inquirylist/op/InquirylistAudit.java b/src/main/java/com/yem/wm/im/inquirylist/op/InquirylistAudit.java index 1650b192..a988e941 100644 --- a/src/main/java/com/yem/wm/im/inquirylist/op/InquirylistAudit.java +++ b/src/main/java/com/yem/wm/im/inquirylist/op/InquirylistAudit.java @@ -1,5 +1,6 @@ package com.yem.wm.im.inquirylist.op; +import com.yem.wm.utils.DynamicObjectUtil; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; @@ -56,11 +57,36 @@ public class InquirylistAudit extends AbstractOperationServicePlugIn { replace(dataEntitie,yemMulticonfigColl); retrofitting(dataEntitie,yemMulticonfigColl); } - + DynamicObjectCollection yemImDetailedinfor = dataEntitie.getDynamicObjectCollection("yem_im_detailedinfor"); + for (DynamicObject dynamicObject : yemImDetailedinfor) { + DynamicObject yemProductmodel = dynamicObject.getDynamicObject("yem_productmodel"); + BigDecimal yemQingdaounitprice = dynamicObject.getBigDecimal("yem_qingdaounitprice"); + if (yemProductmodel!=null){ + DynamicObject yemProducts = yemProductmodel.getDynamicObject("yem_products"); + if (yemProducts!=null){ + long aLong = yemProducts.getLong("id"); + String selectfield = DynamicObjectUtil.getSelectfields("yem_pricelibrary", false); + String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_pricelibrary", "yem_basicmodel", false); + DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_pricelibrary", selectfields + , new QFilter[]{new QFilter("yem_bd_products.id", QCP.equals, aLong)}); + if (loadSingle!=null){ + DynamicObjectCollection yemBasicmodel = loadSingle.getDynamicObjectCollection("yem_basicmodel"); + for (DynamicObject Basic : yemBasicmodel) { + DynamicObject yemModel = Basic.getDynamicObject("yem_model"); + if (yemModel!=null){ + long yemModelLong = yemModel.getLong("id"); + long yemProductmodelLong = yemProductmodel.getLong("id"); + if (yemModelLong==yemProductmodelLong){ + Basic.set("yem_pricefob",yemQingdaounitprice); + } + } + } + } + SaveServiceHelper.update(loadSingle); + } + } + } } - - - } public Boolean billtype(DynamicObject dataEntitie){ From e4bbc145d81f3fcb3b381cf754ab21888127e1d0 Mon Sep 17 00:00:00 2001 From: violet Date: Mon, 2 Sep 2024 20:18:28 +0800 Subject: [PATCH 24/76] =?UTF-8?q?feat:=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E7=A4=BC=E5=93=81=E8=B5=A0=E9=80=81=3D?= =?UTF-8?q?=E6=98=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/wm/es/salesorder/op/SalesOrderAuditOp.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAuditOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAuditOp.java index f18c88f1..e3710246 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAuditOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderAuditOp.java @@ -60,7 +60,11 @@ public class SalesOrderAuditOp extends AbstractOperationServicePlugIn { for(DynamicObject dataEntitie : dataEntities){ dataEntitie = BusinessDataServiceHelper.loadSingle(dataEntitie.getPkValue(),dataEntitie.getDynamicObjectType().getName()); frameworkContract(dataEntitie); - giftAmount(dataEntitie); + //是否礼品赠送 = 是 + String yem_isgiftgive = dataEntitie.getString("yem_isgiftgive"); + if(yem_isgiftgive.equals("A")){ + giftAmount(dataEntitie); + } giftSpecialAmount(dataEntitie); } @@ -157,8 +161,8 @@ public class SalesOrderAuditOp extends AbstractOperationServicePlugIn { DynamicObjectCollection giveamounts = dataEntitie.getDynamicObjectCollection("yem_es_salesorder_l"); DynamicObject giftamountss = BusinessDataServiceHelper.loadSingle("yem_im_giftamount", new QFilter[]{new QFilter("yem_groupcusfields", QCP.equals,customer), - new QFilter("org", QCP.equals,org), - new QFilter("yem_bd_products", QCP.equals,products)}); + new QFilter("org", QCP.equals,org), + new QFilter("yem_bd_products", QCP.equals,products)}); if (giveamounts!=null){ From 7181e6194cd41a9722e003f7e4e79930587c5040 Mon Sep 17 00:00:00 2001 From: violet Date: Mon, 2 Sep 2024 20:21:51 +0800 Subject: [PATCH 25/76] =?UTF-8?q?feat:=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C?= =?UTF-8?q?=E4=BD=9C=E5=BA=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/salesorder/validator/SaleOrdeExportisVoidValidator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java b/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java index 5e859091..0bb875b2 100644 --- a/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java +++ b/src/main/java/com/yem/wm/es/salesorder/validator/SaleOrdeExportisVoidValidator.java @@ -208,7 +208,7 @@ public class SaleOrdeExportisVoidValidator extends AbstractValidator { List list = new ArrayList<>(); String billno = dataEntity.getString("billno"); Object pkValue = dataEntity.getPkValue(); - QFilter qFilter = new QFilter("billno", QCP.equals, billno); + QFilter qFilter = new QFilter("yem_billnopact", QCP.equals, billno); DynamicObjectCollection yem_shippingdetails = QueryServiceHelper.query("yem_im_intauditbusa", "id,billno", new QFilter[]{qFilter}, null); if (yem_shippingdetails.size() > 0) { for (DynamicObject shippingdetails : yem_shippingdetails) { From b9d0be7678fca5ba01efb5b76e6f91a3f401c952 Mon Sep 17 00:00:00 2001 From: ljw Date: Tue, 3 Sep 2024 10:30:05 +0800 Subject: [PATCH 26/76] =?UTF-8?q?=E8=AE=A2=E8=88=B1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=AE=A1=E6=A0=B8=E5=90=8E=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E5=8F=98=E4=B8=BA=E6=98=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java index 3e14a0da..80f5fe56 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java +++ b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java @@ -134,6 +134,7 @@ public class StorageTransAuditOp extends AbstractOperationServicePlugIn { } } + dataEntitie.set("yem_whether",true); } } From 821ef4e4485bc422cb99cbb9f4e83f42f4f5c4ff Mon Sep 17 00:00:00 2001 From: ljw Date: Tue, 3 Sep 2024 10:31:21 +0800 Subject: [PATCH 27/76] =?UTF-8?q?=E8=AE=A2=E8=88=B1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=AE=A1=E6=A0=B8=E5=90=8E=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E5=8F=98=E4=B8=BA=E6=98=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java index 87b80924..ca95d52c 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java +++ b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java @@ -177,6 +177,7 @@ public class StorageTransAuditOp extends AbstractOperationServicePlugIn { } } + dataEntitie.set("yem_whether",true); } } From 630b9212d2ce0a17ab945cdcf1420815be305d95 Mon Sep 17 00:00:00 2001 From: ljw Date: Tue, 3 Sep 2024 10:36:01 +0800 Subject: [PATCH 28/76] =?UTF-8?q?=E8=AE=A2=E8=88=B1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=8F=8D=E5=AE=A1=E6=A0=B8=E5=90=8E=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E4=BB=98=E6=AC=BE=E5=8F=98=E4=B8=BA=E5=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java index b1db4a45..543f1047 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java +++ b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java @@ -39,6 +39,7 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem backFillCsrCreditLine(dataEntitie); giftAmount(dataEntitie); giftSpecialAmount(dataEntitie); + dataEntitie.set("yem_whether",false); } } From c3d07166df252f84b7ef1222a3b6d1b9f84c05c1 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 3 Sep 2024 11:22:40 +0800 Subject: [PATCH 29/76] =?UTF-8?q?feat:=E6=94=B6=E6=AC=BE=E5=8D=95=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=8F=96=E5=80=BC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/wm/fm/gathering/from/GatheringEcit.java | 2 +- .../com/yem/wm/fm/gathering/op/GatheringAuditOp.java | 11 +++++++++++ .../gathering/validator/GatheringAuditValidator.java | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java b/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java index 68947896..49e6607e 100644 --- a/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java +++ b/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java @@ -700,7 +700,7 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL String[] noCheck = new String[]{"save", "delete", "refresh", "close", "modify", "new", "newentrya1", "copyentryrowa", "insertentrya", "deleteentrya1", "batchfillentrya", "newentryb", "insertentryb", "copyentryrowb", "deleteentryb", "batchfillentryb"}; if (dataChanged && !Arrays.asList(noCheck).contains(operateKey) && ("yem_gathering".equals(pageId) || "yem_gathering_cw".equals(pageId))) { - throw new KDBizException("检测到单据内容更新,请保存后再进行操作!"); +// throw new KDBizException("检测到单据内容更新,请保存后再进行操作!"); } if ("claim".equals(operateKey) || "changeclaim".equals(operateKey)) { diff --git a/src/main/java/com/yem/wm/fm/gathering/op/GatheringAuditOp.java b/src/main/java/com/yem/wm/fm/gathering/op/GatheringAuditOp.java index aec46e4a..a50757e5 100644 --- a/src/main/java/com/yem/wm/fm/gathering/op/GatheringAuditOp.java +++ b/src/main/java/com/yem/wm/fm/gathering/op/GatheringAuditOp.java @@ -6,6 +6,7 @@ import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.entity.plugin.args.EndOperationTransactionArgs; import kd.bos.entity.validate.AbstractValidator; @@ -15,6 +16,8 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import org.omg.DynamicAny.DynAnyFactoryOperations; +import java.util.List; + /** * @Description: TODO @@ -23,6 +26,14 @@ import org.omg.DynamicAny.DynAnyFactoryOperations; */ public class GatheringAuditOp extends AbstractOperationServicePlugIn { + + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + List fieldKeys = e.getFieldKeys(); + fieldKeys.addAll(this.billEntityType.getAllFields().keySet()); + } + @Override public void onAddValidators(AddValidatorsEventArgs e) { super.onAddValidators(e); diff --git a/src/main/java/com/yem/wm/fm/gathering/validator/GatheringAuditValidator.java b/src/main/java/com/yem/wm/fm/gathering/validator/GatheringAuditValidator.java index 92e52b9c..e8575f23 100644 --- a/src/main/java/com/yem/wm/fm/gathering/validator/GatheringAuditValidator.java +++ b/src/main/java/com/yem/wm/fm/gathering/validator/GatheringAuditValidator.java @@ -31,7 +31,7 @@ public class GatheringAuditValidator extends AbstractValidator { DynamicObject bill = temp.getDataEntity(); // BigDecimal claimamt = Bi gDecimal.ZERO; // BigDecimal salcontractamt = BigDecimal.ZERO; - bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(), bill.getDynamicObjectType().getName()); +// bill = BusinessDataServiceHelper.loadSingle(bill.getPkValue(), bill.getDynamicObjectType().getName()); DynamicObject billtype = bill.getDynamicObject("yem_billtype"); if (YEM.isNotEmpty(billtype)) { From 5c02fd60c5ac41f34c580c1d0267fcdd4cadf5e0 Mon Sep 17 00:00:00 2001 From: ljw Date: Tue, 3 Sep 2024 10:31:21 +0800 Subject: [PATCH 30/76] =?UTF-8?q?=E8=AE=A2=E8=88=B1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=AE=A1=E6=A0=B8=E5=90=8E=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E5=8F=98=E4=B8=BA=E6=98=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java index 3e14a0da..80f5fe56 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java +++ b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransAuditOp.java @@ -134,6 +134,7 @@ public class StorageTransAuditOp extends AbstractOperationServicePlugIn { } } + dataEntitie.set("yem_whether",true); } } From f70e051b7c9f77ef80bcdbd2de3bf9c6455df1e3 Mon Sep 17 00:00:00 2001 From: ljw Date: Tue, 3 Sep 2024 10:36:01 +0800 Subject: [PATCH 31/76] =?UTF-8?q?=E8=AE=A2=E8=88=B1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=8F=8D=E5=AE=A1=E6=A0=B8=E5=90=8E=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E4=BB=98=E6=AC=BE=E5=8F=98=E4=B8=BA=E5=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java index b1db4a45..543f1047 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java +++ b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java @@ -39,6 +39,7 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem backFillCsrCreditLine(dataEntitie); giftAmount(dataEntitie); giftSpecialAmount(dataEntitie); + dataEntitie.set("yem_whether",false); } } From ab5ebbda1cc89fd9de1582d99a491056bac2c6b7 Mon Sep 17 00:00:00 2001 From: violet Date: Tue, 3 Sep 2024 20:17:14 +0800 Subject: [PATCH 32/76] =?UTF-8?q?fix:=E6=8A=A5=E8=A1=A8=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E6=9C=BA=E5=9E=8B=E8=BF=87=E6=BB=A4=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/rf/salescommission/SalesCommissionReportPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java index 3eabede2..f12673df 100644 --- a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java @@ -69,7 +69,7 @@ public class SalesCommissionReportPlugin extends AbstractReportListDataPlugin { FilterInfo filter = param.getFilter(); String salesorderno = filter.getString("yem_salesorderno");//合同号 - long producttype = filter.getLong("yem_bd_producttype.id");//产品分类 + long producttype = filter.getLong("yem_bd_producttype");//产品分类 long customer = filter.getLong("yem_bd_customer");//客户 long products = filter.getLong("yem_bd_products");//机型 long resourceno = filter.getLong("yem_resourceno");//资源号 From 714b6f8ce702096808898dbd9b49c70170d291a5 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Wed, 4 Sep 2024 18:53:23 +0800 Subject: [PATCH 33/76] =?UTF-8?q?Revert=20"wip:=E5=87=BA=E5=8F=A3=E6=8A=A5?= =?UTF-8?q?=E5=85=B3=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 3f669694c994aea96695058999703a070e9d3da5. --- .../ExportDeclarationDetailsReportPlugin.java | 65 +++---------------- .../SalesCommissionReportPlugin.java | 2 +- 2 files changed, 9 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java index f1a4ec8c..d7bffac0 100644 --- a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java @@ -14,12 +14,14 @@ import kd.bos.entity.report.FilterInfo; import kd.bos.entity.report.ReportQueryParam; import kd.bos.orm.ORM; import kd.bos.orm.query.QFilter; -import kd.bos.servicehelper.BusinessDataServiceHelper; import org.apache.commons.compress.utils.Lists; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import static com.yem.rf.utils.RFUtils.getBaseQFilter; @@ -37,28 +39,12 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData @Override public DataSet query(ReportQueryParam param, Object o) throws Throwable { - FilterInfo filter = param.getFilter(); - Date fshipdate_start = filter.getDate("yem_fshipdate_start");//发货日期 - Date fshipdate_end = filter.getDate("yem_fshipdate_end");//发货日期 - - Date fexportdate_start = filter.getDate("yem_fexportdate_start");//出口日期 - Date fexportdate_end = filter.getDate("yem_fexportdate_end");//出口日期 - - String fcontactno = filter.getString("yem_fcontactno");//合同号 - - Long fcustomer = filter.getLong("yem_fcustomer");//客户 - - String fladingno = filter.getString("yem_fladingno");//提单号 - - DataSet declaredocx = queryDeclareDocx(param); DataSet declaredocx_relation = queryDeclareDocx_Relation(param); DataSet exportinvoice = queryExportInvoice(param); - DataSet salesorder_info = querySalesOrder_Info(param); - DataSet dataSet; dataSet = declaredocx.leftJoin(declaredocx_relation) @@ -71,11 +57,6 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData .select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(exportinvoice)) .finish(); - dataSet = dataSet.leftJoin(salesorder_info) - .on("main_id", "detail_id_info_fk") - .select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(salesorder_info)) - .finish(); - dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //原币离岸价 "yem_amount - tmp_reightamtend - tmp_premiumamtcy yem_basefobamt"); @@ -87,17 +68,13 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData "yem_cnyfobamt - yem_cnyinvoiced yem_fobsubinvoiced"); dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //美元离岸价 - "CASE WHEN yem_usdrate > 0 THEN yem_cnyfobamt / yem_usdrate ELSE 0.0 END yem_usdfobamt"); + "yem_cnyfobamt / yem_usdrate yem_usdfobamt"); dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //出口创汇 "yem_usdfobamt + usd_sea_amt + usd_pmamt_amt yem_earning"); dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //应退税额 "yem_cnyfobamt * yem_degrate / 100 yem_refundabletax"); - - StringBuilder sb = new StringBuilder(); - - return dataSet; } @@ -152,9 +129,9 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + // 2、海运费(美元)=海运费(本位币)/美元汇率; - "CASE WHEN yem_usdrate > 0 THEN yem_reightamtbase / yem_usdrate ELSE 0.0 END usd_sea_amt, " + + "yem_reightamtbase / yem_usdrate usd_sea_amt, " + // 3、运保费(美元)=运保费(本位币)/美元汇率; - "CASE WHEN yem_usdrate > 0 THEN yem_premiumamtbase / yem_usdrate ELSE 0.0 END usd_pmamt_amt, " + + "yem_premiumamtbase / yem_usdrate usd_pmamt_amt, " + // 美元汇率(百) "yem_usdrate * 100 yem_usdratehund"); @@ -182,19 +159,6 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData dataSet = dataSet.addField("0.0", "yem_usdpremiumamt");//美元保险费 dataSet = dataSet.addField("0.0", "tmp_reightamtend");//海运费(结算币别) dataSet = dataSet.addField("0.0", "tmp_premiumamtcy");//保费(结算币别) - dataSet = dataSet.addField("0", "yem_cnycurrency");//人民币币别 - dataSet = dataSet.addField("0", "yem_usdcurrency");//美元币别 - DynamicObject cny = BusinessDataServiceHelper.loadSingle("bd_currency", "id", new QFilter[]{new QFilter("number", "=", "CNY")}); - long cnyId = 0L; - if (YEM.isNotEmpty(cny)) { - cnyId = cny.getLong("id"); - } - - DynamicObject usd = BusinessDataServiceHelper.loadSingle("bd_currency", "id", new QFilter[]{new QFilter("number", "=", "USD")}); - long usdId = 0L; - if (YEM.isNotEmpty(usd)) { - usdId = usd.getLong("id"); - } dataSet = RptUtil.zeroNullNums(dataSet); DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy()); Map> map = new LinkedHashMap<>(); @@ -286,8 +250,6 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData d.set("tmp_premiumamtcy", tmp_premiumamtcy);//保费(结算币别) } - d.set("yem_cnycurrency", cnyId); - d.set("yem_usdcurrency", usdId); dc.add(d); } } @@ -347,9 +309,8 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData DataSet infoDataSet2 = dataSet.copy().groupBy(new String[]{"rl_merged_seq"}) .agg(new GroupTopOneFunction(), "yem_declarationele", "yem_declarationele") .agg(new GroupTopOneFunction(), "rl_detail_id", "rl_detail_id") - .agg(new GroupTopOneFunction(), "main_id", "main_id") .finish() - .select("rl_merged_seq rl_merged_seq_2, yem_declarationele, rl_detail_id, main_id"); + .select("rl_merged_seq rl_merged_seq_2, yem_declarationele, rl_detail_id"); dataSet = infoDataSet1.leftJoin(infoDataSet2) .on("rl_merged_seq_1", "rl_merged_seq_2") @@ -442,16 +403,6 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData return dataSet; } - private DataSet querySalesOrder_Info(ReportQueryParam param) { - QFilter qFilter = getBaseQFilter(); - - ArrayList selectfields = Lists.newArrayList(); - selectfields.add("yem_es_materialinfo.id detail_id_info_fk"); - selectfields.add("yem_operator yem_salesman"); - - return ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); - } - public QFilter getCommonDeclareDocxFilter(ReportQueryParam param) { FilterInfo filter = param.getFilter(); String fdeclaredocxno = filter.getString("yem_fdeclaredocxno"); diff --git a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java index c28f9763..f12673df 100644 --- a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java @@ -91,7 +91,7 @@ public class SalesCommissionReportPlugin extends AbstractReportListDataPlugin { if (resourceno > 0) { where.append(" AND yem_resourcescode = ").append(resourceno); } - if (YEM.isNotEmpty(start)) { + if (YEM.isNotEmpty(start)) { where.append(" AND TO_DATE(yem_ladingdatetext,'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(start))); } if (YEM.isNotEmpty(end)) { From 3899b142bdd94060c5550225a6e9eb1a1e1f5e34 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Wed, 4 Sep 2024 18:53:48 +0800 Subject: [PATCH 34/76] =?UTF-8?q?Reapply=20"wip:=E5=87=BA=E5=8F=A3?= =?UTF-8?q?=E6=8A=A5=E5=85=B3=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 714b6f8ce702096808898dbd9b49c70170d291a5. --- .../ExportDeclarationDetailsReportPlugin.java | 65 ++++++++++++++++--- .../SalesCommissionReportPlugin.java | 2 +- 2 files changed, 58 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java index d7bffac0..f1a4ec8c 100644 --- a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java @@ -14,14 +14,12 @@ import kd.bos.entity.report.FilterInfo; import kd.bos.entity.report.ReportQueryParam; import kd.bos.orm.ORM; import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; import org.apache.commons.compress.utils.Lists; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.yem.rf.utils.RFUtils.getBaseQFilter; @@ -39,12 +37,28 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData @Override public DataSet query(ReportQueryParam param, Object o) throws Throwable { + FilterInfo filter = param.getFilter(); + Date fshipdate_start = filter.getDate("yem_fshipdate_start");//发货日期 + Date fshipdate_end = filter.getDate("yem_fshipdate_end");//发货日期 + + Date fexportdate_start = filter.getDate("yem_fexportdate_start");//出口日期 + Date fexportdate_end = filter.getDate("yem_fexportdate_end");//出口日期 + + String fcontactno = filter.getString("yem_fcontactno");//合同号 + + Long fcustomer = filter.getLong("yem_fcustomer");//客户 + + String fladingno = filter.getString("yem_fladingno");//提单号 + + DataSet declaredocx = queryDeclareDocx(param); DataSet declaredocx_relation = queryDeclareDocx_Relation(param); DataSet exportinvoice = queryExportInvoice(param); + DataSet salesorder_info = querySalesOrder_Info(param); + DataSet dataSet; dataSet = declaredocx.leftJoin(declaredocx_relation) @@ -57,6 +71,11 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData .select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(exportinvoice)) .finish(); + dataSet = dataSet.leftJoin(salesorder_info) + .on("main_id", "detail_id_info_fk") + .select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(salesorder_info)) + .finish(); + dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //原币离岸价 "yem_amount - tmp_reightamtend - tmp_premiumamtcy yem_basefobamt"); @@ -68,13 +87,17 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData "yem_cnyfobamt - yem_cnyinvoiced yem_fobsubinvoiced"); dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //美元离岸价 - "yem_cnyfobamt / yem_usdrate yem_usdfobamt"); + "CASE WHEN yem_usdrate > 0 THEN yem_cnyfobamt / yem_usdrate ELSE 0.0 END yem_usdfobamt"); dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //出口创汇 "yem_usdfobamt + usd_sea_amt + usd_pmamt_amt yem_earning"); dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + //应退税额 "yem_cnyfobamt * yem_degrate / 100 yem_refundabletax"); + + StringBuilder sb = new StringBuilder(); + + return dataSet; } @@ -129,9 +152,9 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + // 2、海运费(美元)=海运费(本位币)/美元汇率; - "yem_reightamtbase / yem_usdrate usd_sea_amt, " + + "CASE WHEN yem_usdrate > 0 THEN yem_reightamtbase / yem_usdrate ELSE 0.0 END usd_sea_amt, " + // 3、运保费(美元)=运保费(本位币)/美元汇率; - "yem_premiumamtbase / yem_usdrate usd_pmamt_amt, " + + "CASE WHEN yem_usdrate > 0 THEN yem_premiumamtbase / yem_usdrate ELSE 0.0 END usd_pmamt_amt, " + // 美元汇率(百) "yem_usdrate * 100 yem_usdratehund"); @@ -159,6 +182,19 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData dataSet = dataSet.addField("0.0", "yem_usdpremiumamt");//美元保险费 dataSet = dataSet.addField("0.0", "tmp_reightamtend");//海运费(结算币别) dataSet = dataSet.addField("0.0", "tmp_premiumamtcy");//保费(结算币别) + dataSet = dataSet.addField("0", "yem_cnycurrency");//人民币币别 + dataSet = dataSet.addField("0", "yem_usdcurrency");//美元币别 + DynamicObject cny = BusinessDataServiceHelper.loadSingle("bd_currency", "id", new QFilter[]{new QFilter("number", "=", "CNY")}); + long cnyId = 0L; + if (YEM.isNotEmpty(cny)) { + cnyId = cny.getLong("id"); + } + + DynamicObject usd = BusinessDataServiceHelper.loadSingle("bd_currency", "id", new QFilter[]{new QFilter("number", "=", "USD")}); + long usdId = 0L; + if (YEM.isNotEmpty(usd)) { + usdId = usd.getLong("id"); + } dataSet = RptUtil.zeroNullNums(dataSet); DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy()); Map> map = new LinkedHashMap<>(); @@ -250,6 +286,8 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData d.set("tmp_premiumamtcy", tmp_premiumamtcy);//保费(结算币别) } + d.set("yem_cnycurrency", cnyId); + d.set("yem_usdcurrency", usdId); dc.add(d); } } @@ -309,8 +347,9 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData DataSet infoDataSet2 = dataSet.copy().groupBy(new String[]{"rl_merged_seq"}) .agg(new GroupTopOneFunction(), "yem_declarationele", "yem_declarationele") .agg(new GroupTopOneFunction(), "rl_detail_id", "rl_detail_id") + .agg(new GroupTopOneFunction(), "main_id", "main_id") .finish() - .select("rl_merged_seq rl_merged_seq_2, yem_declarationele, rl_detail_id"); + .select("rl_merged_seq rl_merged_seq_2, yem_declarationele, rl_detail_id, main_id"); dataSet = infoDataSet1.leftJoin(infoDataSet2) .on("rl_merged_seq_1", "rl_merged_seq_2") @@ -403,6 +442,16 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData return dataSet; } + private DataSet querySalesOrder_Info(ReportQueryParam param) { + QFilter qFilter = getBaseQFilter(); + + ArrayList selectfields = Lists.newArrayList(); + selectfields.add("yem_es_materialinfo.id detail_id_info_fk"); + selectfields.add("yem_operator yem_salesman"); + + return ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); + } + public QFilter getCommonDeclareDocxFilter(ReportQueryParam param) { FilterInfo filter = param.getFilter(); String fdeclaredocxno = filter.getString("yem_fdeclaredocxno"); diff --git a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java index f12673df..c28f9763 100644 --- a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java @@ -91,7 +91,7 @@ public class SalesCommissionReportPlugin extends AbstractReportListDataPlugin { if (resourceno > 0) { where.append(" AND yem_resourcescode = ").append(resourceno); } - if (YEM.isNotEmpty(start)) { + if (YEM.isNotEmpty(start)) { where.append(" AND TO_DATE(yem_ladingdatetext,'yyyy-MM-dd') >= ").append(String.format("TO_DATE('%s','yyyy-MM-dd')", formatDate(start))); } if (YEM.isNotEmpty(end)) { From dc342bcdaf72a3af5784d5f1fc5f2df2208f5772 Mon Sep 17 00:00:00 2001 From: ljw Date: Wed, 4 Sep 2024 18:54:44 +0800 Subject: [PATCH 35/76] =?UTF-8?q?=E5=8D=95=E4=B8=80=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=8A=A5=E5=85=B3=E5=8D=95=E7=BB=99=E5=87=BA=E5=8F=A3=E6=8A=A5?= =?UTF-8?q?=E5=85=B3=E8=B5=8B=E5=80=BC=E6=97=B6=E5=90=8C=E6=97=B6=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E7=BE=8E=E5=85=83=E6=B1=87=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java b/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java index 80c3d4e1..3ce961cc 100644 --- a/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java +++ b/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java @@ -1,5 +1,6 @@ package com.yem.tws.task; +import com.yem.ensign.common.CommonUtils; import com.yem.wm.task.YunZhiJaGetOpenidTask; import com.yem.wm.utils.DynamicObjectUtil; import com.yem.wm.utils.YEM; @@ -169,6 +170,11 @@ public class CusdecToDeclaredocxTask extends AbstractTask { declaredocx.set("yem_customsnumber", yemEntryid); declaredocx.set("yem_exportdate", yemFiedatets); declaredocx.set("yem_customsdocumentid", id); + BigDecimal exchangeRate = YEM.getExchangeRate(declaredocx.getDynamicObject("yem_exratetable") + , declaredocx.getDynamicObject("yem_currencybase") + , declaredocx.getDynamicObject("yem_usdcurrency") + , yemFiedatets); + declaredocx.set("exchangeRate",exchangeRate); if ("结关".equals(yemCusdecstatusname) && !YEM.isEmpty(yemFiedatets)) { extracted(Long.valueOf(declaredocx.getPkValue().toString())); } From e7c5b43607101ff327e4ee591c83d561e30f5045 Mon Sep 17 00:00:00 2001 From: ljw Date: Wed, 4 Sep 2024 18:54:44 +0800 Subject: [PATCH 36/76] =?UTF-8?q?=E5=8D=95=E4=B8=80=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=8A=A5=E5=85=B3=E5=8D=95=E7=BB=99=E5=87=BA=E5=8F=A3=E6=8A=A5?= =?UTF-8?q?=E5=85=B3=E8=B5=8B=E5=80=BC=E6=97=B6=E5=90=8C=E6=97=B6=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E7=BE=8E=E5=85=83=E6=B1=87=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java b/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java index 80c3d4e1..3ce961cc 100644 --- a/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java +++ b/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java @@ -1,5 +1,6 @@ package com.yem.tws.task; +import com.yem.ensign.common.CommonUtils; import com.yem.wm.task.YunZhiJaGetOpenidTask; import com.yem.wm.utils.DynamicObjectUtil; import com.yem.wm.utils.YEM; @@ -169,6 +170,11 @@ public class CusdecToDeclaredocxTask extends AbstractTask { declaredocx.set("yem_customsnumber", yemEntryid); declaredocx.set("yem_exportdate", yemFiedatets); declaredocx.set("yem_customsdocumentid", id); + BigDecimal exchangeRate = YEM.getExchangeRate(declaredocx.getDynamicObject("yem_exratetable") + , declaredocx.getDynamicObject("yem_currencybase") + , declaredocx.getDynamicObject("yem_usdcurrency") + , yemFiedatets); + declaredocx.set("exchangeRate",exchangeRate); if ("结关".equals(yemCusdecstatusname) && !YEM.isEmpty(yemFiedatets)) { extracted(Long.valueOf(declaredocx.getPkValue().toString())); } From 0b5ee978515aadf47d0c82534a6b50bb3cd86dad Mon Sep 17 00:00:00 2001 From: ljw Date: Wed, 4 Sep 2024 20:31:51 +0800 Subject: [PATCH 37/76] =?UTF-8?q?=E8=AF=A2=E4=BB=B7=E5=8D=95=E4=BA=8C?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../im/inquirylist/form/InquirylistEdit.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java b/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java index 8e39cdfe..446f32f5 100644 --- a/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java +++ b/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java @@ -201,12 +201,14 @@ public class InquirylistEdit extends AbstractBillPlugIn implements BeforeF7Selec super.propertyChanged(e); IDataModel model = this.getModel(); String name = e.getProperty().getName(); + int rowIndex = e.getChangeSet()[0].getRowIndex(); switch (name) { case "yem_productmodel": model.deleteEntryData("yem_multiconfig"); + price(rowIndex); break; case "yem_material": - int rowIndex = e.getChangeSet()[0].getRowIndex(); + DynamicObjectCollection entryEntity = model.getEntryEntity("yem_im_detailedinfor"); DynamicObject dynamicObject = entryEntity.get(rowIndex); long materialId = dynamicObject.getLong("yem_material.id"); @@ -225,6 +227,26 @@ public class InquirylistEdit extends AbstractBillPlugIn implements BeforeF7Selec model.setValue("yem_classification", null, rowIndex); } break; + case"yem_qingdaounitprice": + price(rowIndex); + } + } + + private void price(int rowIndex) { + DynamicObject yemImDetailedinfor = this.getModel().getEntryEntity("yem_im_detailedinfor").get(rowIndex); + DynamicObject yemProductmodel = yemImDetailedinfor.getDynamicObject("yem_productmodel"); + BigDecimal yemQingdaounitprice = yemImDetailedinfor.getBigDecimal("yem_qingdaounitprice"); + if (yemQingdaounitprice.compareTo(BigDecimal.ZERO)==0){ + return; + } + if (yemProductmodel!=null){ + DynamicObject yemProducts = yemProductmodel.getDynamicObject("yem_products"); + if (yemProducts!=null){ + DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productstree", "id,number,yem_costdifference" + , new QFilter[]{new QFilter("id", QCP.equals, yemProducts.getLong("id"))}); + BigDecimal yemCostdifference = loadSingle.getBigDecimal("yem_costdifference"); + this.getModel().setValue("yem_unitprice",yemQingdaounitprice.subtract(yemCostdifference), rowIndex); + } } } From 12a633c0d498b801f26a8cce83dd505455b15559 Mon Sep 17 00:00:00 2001 From: ljw Date: Wed, 4 Sep 2024 20:31:51 +0800 Subject: [PATCH 38/76] =?UTF-8?q?=E8=AF=A2=E4=BB=B7=E5=8D=95=E4=BA=8C?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java --- .../java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java b/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java index 7a423642..446f32f5 100644 --- a/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java +++ b/src/main/java/com/yem/wm/im/inquirylist/form/InquirylistEdit.java @@ -242,7 +242,9 @@ public class InquirylistEdit extends AbstractBillPlugIn implements BeforeF7Selec if (yemProductmodel!=null){ DynamicObject yemProducts = yemProductmodel.getDynamicObject("yem_products"); if (yemProducts!=null){ - BigDecimal yemCostdifference = yemProducts.getBigDecimal("yem_costdifference"); + DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productstree", "id,number,yem_costdifference" + , new QFilter[]{new QFilter("id", QCP.equals, yemProducts.getLong("id"))}); + BigDecimal yemCostdifference = loadSingle.getBigDecimal("yem_costdifference"); this.getModel().setValue("yem_unitprice",yemQingdaounitprice.subtract(yemCostdifference), rowIndex); } } From 8d9af3df5e6c5e5c62a38469717e6852a9fb0490 Mon Sep 17 00:00:00 2001 From: ljw Date: Wed, 4 Sep 2024 20:31:51 +0800 Subject: [PATCH 39/76] =?UTF-8?q?change:=E9=94=80=E5=94=AE=E6=8F=90?= =?UTF-8?q?=E6=88=90=E6=95=B4=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/rf/salescommission/SalesCommissionReportPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java index c96ca59f..90908ed5 100644 --- a/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SalesCommissionReportPlugin.java @@ -191,7 +191,7 @@ public class SalesCommissionReportPlugin extends AbstractReportListDataPlugin { selectfields.add("yem_reccondition yem_reccondition");//收款条件 selectfields.add("yem_es_materialinfo.yem_safobprice yem_safobamount");//销售FOB单价 整机合计价格 selectfields.add("yem_es_materialinfo.yem_singlepartgiftmat yem_singlepartgiftmat");//单台配件赠送金额 赠送配件金额 - selectfields.add("yem_es_materialinfo.yem_fobamount yem_companystandamt");//公司标准价 + selectfields.add("yem_es_materialinfo.yem_fobprice yem_companystandamt");//公司标准价 selectfields.add("CASE WHEN yem_issinosurecon = '1' THEN 'A' ELSE 'B' END yem_iscredit");//是否信保合同 selectfields.add("yem_billtype.number salesorder_billtype");//单据类型 selectfields.add("yem_es_materialinfo.yem_commissiontype salesorder_commissiontype");//业务分类 From abaa19acdce63ab2a4273efaf3cd3dc40571a1b6 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 19:43:27 +0800 Subject: [PATCH 40/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SparepartsNotShippedPlugin.java | 269 ++++++++++++++++++ .../rf/salescommission/SparepartsPlugin.java | 20 +- 2 files changed, 285 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java new file mode 100644 index 00000000..062aae03 --- /dev/null +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -0,0 +1,269 @@ +package com.yem.rf.salescommission; + +import com.yem.wm.utils.RptUtil; +import com.yem.wm.utils.YEM; +import kd.bos.algo.DataSet; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.report.AbstractReportListDataPlugin; +import kd.bos.entity.report.FilterInfo; +import kd.bos.entity.report.ReportQueryParam; +import kd.bos.orm.ORM; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; + +import java.util.*; + +import static com.yem.rf.utils.RFUtils.getBaseQFilter; +import static kd.fi.er.report.query.TripOrderRpt.algoKey; + +/** + * @author ljw + * @date 2024/9/5 16:06 + * @description SparepartsNotShippedPlugin + */ +public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { + @Override + public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { + DataSet resDataSet; + DataSet yemEsSalesorder = yemEsSalesorder(); + DataSet yemEsStoragetrans = yemEsStoragetrans(); + DataSet yemImEncasement = yemImEncasement(); + DataSet yemGathering = yemGathering(); + DataSet yemShippingdetails = yemShippingdetails(); + resDataSet = yemEsSalesorder.leftJoin(yemEsStoragetrans).on("queryDeliverNoticeid", "yem_corebillid").select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemEsStoragetrans)).finish(); + resDataSet = resDataSet.leftJoin(yemImEncasement).on("queryDeliverNoticeid", "encasementcorebillid").select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(yemImEncasement)).finish(); + resDataSet = resDataSet.leftJoin(yemGathering).on("queryDeliverNoticeid", "yem_titleid").select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(yemGathering)).finish(); + resDataSet = resDataSet.leftJoin(yemShippingdetails).on("queryDeliverNoticeid", "yemShippingdetailsyem_sourcebillid").select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(yemShippingdetails)).finish(); + resDataSet = resDataSet.distinct(); + resDataSet = RptUtil.zeroNullNums(resDataSet); + DataSet selected = resDataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(resDataSet)) + + ",(yem_offeramounts-yem_theamountpaid) yem_theamountowed" + + ",CASE WHEN (yem_contractamount = yem_salcontractclaamt) THEN paymenttime ELSE null END yem_bizdate"); + FilterInfo filter = reportQueryParam.getFilter(); + String yemContract = filter.getString("yem_billnos"); + DynamicObject yemClient = filter.getDynamicObject("yem_clientname"); + DynamicObjectCollection yem_bd_producttype = filter.getDynamicObjectCollection("yem_bd_producttype"); + StringBuilder sb = new StringBuilder(); + DataSet result = selected.where("yem_billno != ''"); + sb.append("yem_billno != ''"); + if (YEM.isNotEmpty(yemContract)) { + sb.append(" AND delivernoticebillno like '").append("%").append(yemContract).append("%").append("'"); + } + if (YEM.isNotEmpty(yemClient)) { + sb.append(" AND yem_client = ").append("'" + yemClient.getString("name") + "'"); + } + if (YEM.isNotEmpty(yem_bd_producttype)){ + List names = new ArrayList<>(); + for (DynamicObject dynamicObject : yem_bd_producttype) { + String name = dynamicObject.getString("name"); + names.add(name); + } + Map map = new HashMap<>(); + map.put("var",names); + result = result.filter("yem_bd_products in var",map); + + } + DataSet where = result.where(sb.toString()); + return where; + } + + /** + * 发运明细单 + * + * @return + */ + private DataSet yemShippingdetails() { + + QFilter qFilter = getBaseQFilter(); + List selectfields = new ArrayList<>(); + selectfields.add("yem_iswithaccessories yem_boardaccessor"); + selectfields.add("yem_transportstyle.name yem_shippingmethod"); + selectfields.add("yem_sourcebillid yemShippingdetailsyem_sourcebillid"); + DataSet yemShippingdetails = ORM.create().queryDataSet(algoKey, "yem_shippingdetails", String.join(",", selectfields), qFilter.toArray()); + yemShippingdetails = yemShippingdetails.select(String.join(",", RptUtil.getDataSetFiledAlias(yemShippingdetails)) + + ",CASE WHEN yem_boardaccessor = 'A' THEN '是' ELSE '否' END yem_boardaccessory"); + yemShippingdetails = yemShippingdetails + .groupBy(new String[]{"yemShippingdetailsyem_sourcebillid"}) + .groupConcat("yem_boardaccessory", "yem_boardaccessory", ";") + .groupConcat("yem_shippingmethod", "yem_shippingmethod", ";") + .finish(); + return yemShippingdetails; + } + + /** + * 收款单金额对比 + * + * @return + */ + private DataSet yemGathering() { + QFilter qFilter = getBaseQFilter(new String[]{"B", "C"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id yem_titleid");//收款单的合同号id + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_salcontractclaamt yem_salcontractclaamt");//收款单的合同金额 + DataSet yemShippingdetails = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfields), qFilter.toArray()); + yemShippingdetails = yemShippingdetails.groupBy(new String[]{"yem_titleid"}) + .sum("yem_salcontractclaamt") + .finish(); + yemShippingdetails = getYemShippingdetails(qFilter, yemShippingdetails); + return yemShippingdetails; + } + + /** + * 收款单认领时间 + * + * @param qFilter + * @param yemShippingdetails + * @return + */ + private static DataSet getYemShippingdetails(QFilter qFilter, DataSet yemShippingdetails) { + List selectfield = new ArrayList<>(); + selectfield.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id yem_salcontractnoid");//收款单的合同号id + selectfield.add("TO_CHAR(yem_bizdate, 'yyyy-MM-dd') paymenttime");// + DataSet yemShippingdetail = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfield), qFilter.toArray()); + yemShippingdetails = yemShippingdetails.leftJoin(yemShippingdetail) + .on("yem_titleid", "yem_salcontractnoid") + .select(RptUtil.getDataSetFiledAlias(yemShippingdetails), RptUtil.getDataSetFiledAlias(yemShippingdetail)) + .finish(); + DataSet claimedAmt = queryGathering_ClaimedAmt(); + yemShippingdetails = yemShippingdetails.leftJoin(claimedAmt).on("yem_salcontractnoid","salesorderid") + .select(RptUtil.getDataSetFiledAlias(yemShippingdetails), RptUtil.getDataSetFiledAlias(claimedAmt)).finish(); + return yemShippingdetails; + } + + /** + * 查询合同各个款项性质的已认领金额合计 + * + * @return + */ + private static DataSet queryGathering_ClaimedAmt() { + QFilter qFilter = getBaseQFilter(new String[]{"B", "C"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id salesorderid"); + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_claimamt yem_theamountpaid");//收款认领金额 + DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfields), qFilter.toArray()); + dataSet = dataSet + .groupBy(new String[]{"salesorderid"}) + .sum("yem_theamountpaid") + .finish(); + return dataSet; + } + + /** + * 装箱单 + * + * @return + */ + private DataSet yemImEncasement() { + QFilter qFilter = getBaseQFilter(); + List selectfields = new ArrayList<>(); + selectfields.add("yem_corebillid encasementcorebillid"); + selectfields.add("yem_completionstatuspj yem_completionstatuspj"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_im_encasement", String.join(",", selectfields), qFilter.toArray()); + return yemEsSalesorder; + } + + /** + * 订舱通知单 + * + * @return + */ + private DataSet yemEsStoragetrans() { + QFilter qFilter = getBaseQFilter(); + List selectfields = new ArrayList<>(); + selectfields.add("yem_corebillid yem_corebillid"); + selectfields.add("yem_origcurrepremium yem_origcurrepremium"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_storagetrans", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.groupBy(new String[]{"yem_corebillid"}).sum("yem_origcurrepremium").finish(); + return yemEsSalesorder; + } + + /** + * 外销合同 + * + * @return + */ + private DataSet yemEsSalesorder() { + QFilter qFilter = getBaseQFilter(); + qFilter.and("yem_es_materialinfo.yem_businesssort", QCP.equals, "P"); + List selectfields = new ArrayList<>(); + selectfields.add("id queryDeliverNoticeid"); + selectfields.add("yem_operator yem_salesman"); + selectfields.add("yem_billtype.name yem_billtype"); + selectfields.add("billno yem_billno"); + selectfields.add("yem_customer yem_customer"); + selectfields.add("yem_priceitem yem_priceitem"); + selectfields.add("yem_offeramount yem_offeramount"); + selectfields.add("yem_offeramount yem_offeramounts"); + selectfields.add("yem_interestamt yem_interestamt"); + selectfields.add("yem_creditamt yem_creditamt"); + selectfields.add("yem_fundpoolamt yem_fundpoolamt"); + selectfields.add("yem_premiumamt yem_premiumamt"); + selectfields.add("yem_customer.name yem_client"); + selectfields.add("yem_seafreight yem_seafreight"); + selectfields.add("yem_landcarrycost yem_landcarrycost"); + selectfields.add("yem_airliftcost yem_airliftcost"); + selectfields.add("yem_expresscost yem_expresscost"); + selectfields.add("yem_offeramount yem_contractamount"); + selectfields.add("yem_shipports yem_shipports"); + selectfields.add("yem_destports yem_destports"); + selectfields.add("yem_clientcountry yem_clientcountry"); + selectfields.add("TO_CHAR(yem_acshipdate, 'yyyy-MM-dd') yem_acshipdate"); + selectfields.add("yem_reccondition yem_reccondition"); + selectfields.add("yem_currency.name yem_currency"); + selectfields.add("yem_companyname yem_companyname"); + selectfields.add("yem_bd_products.name yem_bd_products"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.select(String.join(",", RptUtil.getDataSetFiledAlias(yemEsSalesorder)) + + ",yem_seafreight+yem_landcarrycost+yem_airliftcost+yem_expresscost yem_freight"); + DataSet rightDataSet = yemEsSalesorders(); + yemEsSalesorder = yemEsSalesorder.leftJoin(rightDataSet).on("queryDeliverNoticeid", "Noticeid") + .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(rightDataSet)).finish(); + DataSet yemPlaceexamine = yemPlaceexamine(); + yemEsSalesorder = yemEsSalesorder.leftJoin(yemPlaceexamine).on("queryDeliverNoticeid","yem_sourcebillid") + .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemPlaceexamine)).finish(); + DataSet yemEsDelivernotice = yemEsDelivernotice(); + yemEsSalesorder = yemEsSalesorder.leftJoin(yemEsDelivernotice).on("queryDeliverNoticeid","delivernoticecorebillid") + .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemEsDelivernotice)).finish(); + yemEsSalesorder = yemEsSalesorder.where("billstatus = 'B' OR billstatus = 'C'"); + yemEsSalesorder = yemEsSalesorder.where("delivernoticebillstatus != 'C'"); + return yemEsSalesorder; + } + + private DataSet yemEsDelivernotice() { + QFilter qFilter = getBaseQFilter(new String[]{"A","B"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_corebillid delivernoticecorebillid"); + selectfields.add("billstatus delivernoticebillstatus"); + selectfields.add("billno delivernoticebillno"); + selectfields.add("TO_CHAR(auditdate, 'yyyy-MM-dd') yem_shipdate"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_delivernotice", String.join(",", selectfields), qFilter.toArray()); + return yemEsSalesorder; + } + + private DataSet yemPlaceexamine() { + QFilter qFilter = getBaseQFilter(new String[]{"B","C"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_sourcebillid yem_sourcebillid"); + selectfields.add("billstatus billstatus"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_placeexamine", String.join(",", selectfields), qFilter.toArray()); + return yemEsSalesorder; + } + + /** + * 外销合同 + * + * @return + */ + private DataSet yemEsSalesorders() { + QFilter qFilter = getBaseQFilter(); + qFilter.and("yem_es_materialinfo.yem_businesssort", QCP.equals, "P"); + List selectfields = new ArrayList<>(); + selectfields.add("id Noticeid"); + selectfields.add("yem_es_materialinfo.yem_qty yem_qty"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.groupBy(new String[]{"Noticeid"}).sum("yem_qty").finish(); + return yemEsSalesorder; + } + +} diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java index 37e50ab7..8b1a082b 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java @@ -92,7 +92,8 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin { DynamicObject yemClient = filter.getDynamicObject("yem_clientname"); Date yem_shipdatesend = filter.getDate("yem_shipdatesend"); Date yem_shipdatesdis = filter.getDate("yem_shipdatesdis"); - + DynamicObjectCollection yem_bd_producttype = filter.getDynamicObjectCollection("yem_bd_producttype"); + DataSet result = selected.where("yem_billno != ''"); StringBuilder sb = new StringBuilder(); sb.append("yem_billno != ''"); @@ -111,8 +112,19 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin { if (YEM.isNotEmpty(yem_shipdatesdis)) { sb.append(" AND yem_shipdate <= '").append("%").append(yem_shipdatesdis).append("%").append("'"); } + if (YEM.isNotEmpty(yem_bd_producttype)){ + List names = new ArrayList<>(); + for (DynamicObject dynamicObject : yem_bd_producttype) { + String name = dynamicObject.getString("name"); + names.add(name); +// sb.append(" AND yem_bd_products = ").append("'" +name + "'"); + } + Map map = new HashMap<>(); + map.put("var",names); + result = result.filter("yem_bd_products in var",map); - DataSet where = selected.where(sb.toString()); + } + DataSet where = result.where(sb.toString()); DataSet distincted = where.distinct(); List> list = RFUtils.debugDataSet(distincted); @@ -255,6 +267,8 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin { selectfields.add("yem_expresscost yem_expresscost"); selectfields.add("yem_customer.name yem_client"); selectfields.add("yem_offeramount yem_contractamount"); + selectfields.add("yem_companyname yem_contractsellerfirm"); + selectfields.add("yem_bd_products.name yem_fittingtype"); selectfields.add("yem_shipports.fbasedataid.name yem_portofdeparture"); selectfields.add("yem_destports.fbasedataid.name yem_portdestination"); selectfields.add("yem_clientcountry.name yem_countryofdestinatio"); @@ -372,8 +386,6 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin { selectfields.add("yem_priceclause.name yem_deliverymethod"); selectfields.add("yem_totalallamount yem_theamountdue");//价税合计 selectfields.add("yem_currency.name yem_fullpaymenttime"); - selectfields.add("yem_companyname yem_contractsellerfirm"); - selectfields.add("yem_bd_products.name yem_fittingtype"); selectfields.add("yem_sourcebillid yemEsDelivernoticeyem_sourcebillid"); selectfields.add("yem_corebillid yem_corebillids"); selectfields.add("'' yem_day"); From 87c2587c0d86a436925ae5fad2148c93ade5616d Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 21:27:23 +0800 Subject: [PATCH 41/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/rf/salescommission/SparepartsNotShippedPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java index 062aae03..ab26b952 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -65,7 +65,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { } DataSet where = result.where(sb.toString()); - return where; + return where.distinct(); } /** From 883c25593edc661c85f5bfab070121d2b0604926 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 21:27:23 +0800 Subject: [PATCH 42/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/rf/salescommission/SparepartsNotShippedPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java index 062aae03..ab26b952 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -65,7 +65,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { } DataSet where = result.where(sb.toString()); - return where; + return where.distinct(); } /** From dcd89945fa6a9679092a78912ab350c2fb5bd567 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 21:54:57 +0800 Subject: [PATCH 43/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/rf/salescommission/SparepartsNotShippedPlugin.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java index ab26b952..ca8718ea 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -40,6 +40,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { DataSet selected = resDataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(resDataSet)) + ",(yem_offeramounts-yem_theamountpaid) yem_theamountowed" + ",CASE WHEN (yem_contractamount = yem_salcontractclaamt) THEN paymenttime ELSE null END yem_bizdate"); + selected = selected.removeFields("paymenttime"); FilterInfo filter = reportQueryParam.getFilter(); String yemContract = filter.getString("yem_billnos"); DynamicObject yemClient = filter.getDynamicObject("yem_clientname"); @@ -214,6 +215,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { selectfields.add("yem_companyname yem_companyname"); selectfields.add("yem_bd_products.name yem_bd_products"); DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.distinct(); yemEsSalesorder = yemEsSalesorder.select(String.join(",", RptUtil.getDataSetFiledAlias(yemEsSalesorder)) + ",yem_seafreight+yem_landcarrycost+yem_airliftcost+yem_expresscost yem_freight"); DataSet rightDataSet = yemEsSalesorders(); @@ -227,6 +229,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemEsDelivernotice)).finish(); yemEsSalesorder = yemEsSalesorder.where("billstatus = 'B' OR billstatus = 'C'"); yemEsSalesorder = yemEsSalesorder.where("delivernoticebillstatus != 'C'"); + yemEsSalesorder = yemEsSalesorder.distinct(); return yemEsSalesorder; } From b157236768c28e21e1ab6d974973f04383669b8d Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 22:17:50 +0800 Subject: [PATCH 44/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rf/salescommission/SparepartsNotShippedPlugin.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java index ca8718ea..7d69ee7e 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -120,11 +120,13 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { private static DataSet getYemShippingdetails(QFilter qFilter, DataSet yemShippingdetails) { List selectfield = new ArrayList<>(); selectfield.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id yem_salcontractnoid");//收款单的合同号id - selectfield.add("TO_CHAR(yem_bizdate, 'yyyy-MM-dd') paymenttime");// + selectfield.add("yem_bizdate paymenttimes");// DataSet yemShippingdetail = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfield), qFilter.toArray()); - yemShippingdetails = yemShippingdetails.leftJoin(yemShippingdetail) - .on("yem_titleid", "yem_salcontractnoid") - .select(RptUtil.getDataSetFiledAlias(yemShippingdetails), RptUtil.getDataSetFiledAlias(yemShippingdetail)) + yemShippingdetail = yemShippingdetail.groupBy(new String[]{"yem_salcontractnoid"}).max("paymenttimes").finish(); + yemShippingdetail = yemShippingdetail.addField("TO_CHAR(paymenttimes, 'yyyy-MM-dd') paymenttime","paymenttime"); + yemShippingdetails = yemShippingdetail.leftJoin(yemShippingdetails) + .on("yem_salcontractnoid", "yem_titleid") + .select(RptUtil.getDataSetFiledAlias(yemShippingdetail), RptUtil.getDataSetFiledAlias(yemShippingdetails)) .finish(); DataSet claimedAmt = queryGathering_ClaimedAmt(); yemShippingdetails = yemShippingdetails.leftJoin(claimedAmt).on("yem_salcontractnoid","salesorderid") From 36e7cc6dc2bfa5a1cf803a086bcd1ddcfe95eb4c Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 21:54:57 +0800 Subject: [PATCH 45/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/rf/salescommission/SparepartsNotShippedPlugin.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java index ab26b952..ca8718ea 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -40,6 +40,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { DataSet selected = resDataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(resDataSet)) + ",(yem_offeramounts-yem_theamountpaid) yem_theamountowed" + ",CASE WHEN (yem_contractamount = yem_salcontractclaamt) THEN paymenttime ELSE null END yem_bizdate"); + selected = selected.removeFields("paymenttime"); FilterInfo filter = reportQueryParam.getFilter(); String yemContract = filter.getString("yem_billnos"); DynamicObject yemClient = filter.getDynamicObject("yem_clientname"); @@ -214,6 +215,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { selectfields.add("yem_companyname yem_companyname"); selectfields.add("yem_bd_products.name yem_bd_products"); DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.distinct(); yemEsSalesorder = yemEsSalesorder.select(String.join(",", RptUtil.getDataSetFiledAlias(yemEsSalesorder)) + ",yem_seafreight+yem_landcarrycost+yem_airliftcost+yem_expresscost yem_freight"); DataSet rightDataSet = yemEsSalesorders(); @@ -227,6 +229,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemEsDelivernotice)).finish(); yemEsSalesorder = yemEsSalesorder.where("billstatus = 'B' OR billstatus = 'C'"); yemEsSalesorder = yemEsSalesorder.where("delivernoticebillstatus != 'C'"); + yemEsSalesorder = yemEsSalesorder.distinct(); return yemEsSalesorder; } From 3ec42e3ae918ab9c4bd4907c7d133c9256fae532 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 22:17:50 +0800 Subject: [PATCH 46/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rf/salescommission/SparepartsNotShippedPlugin.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java index ca8718ea..7d69ee7e 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -120,11 +120,13 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { private static DataSet getYemShippingdetails(QFilter qFilter, DataSet yemShippingdetails) { List selectfield = new ArrayList<>(); selectfield.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id yem_salcontractnoid");//收款单的合同号id - selectfield.add("TO_CHAR(yem_bizdate, 'yyyy-MM-dd') paymenttime");// + selectfield.add("yem_bizdate paymenttimes");// DataSet yemShippingdetail = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfield), qFilter.toArray()); - yemShippingdetails = yemShippingdetails.leftJoin(yemShippingdetail) - .on("yem_titleid", "yem_salcontractnoid") - .select(RptUtil.getDataSetFiledAlias(yemShippingdetails), RptUtil.getDataSetFiledAlias(yemShippingdetail)) + yemShippingdetail = yemShippingdetail.groupBy(new String[]{"yem_salcontractnoid"}).max("paymenttimes").finish(); + yemShippingdetail = yemShippingdetail.addField("TO_CHAR(paymenttimes, 'yyyy-MM-dd') paymenttime","paymenttime"); + yemShippingdetails = yemShippingdetail.leftJoin(yemShippingdetails) + .on("yem_salcontractnoid", "yem_titleid") + .select(RptUtil.getDataSetFiledAlias(yemShippingdetail), RptUtil.getDataSetFiledAlias(yemShippingdetails)) .finish(); DataSet claimedAmt = queryGathering_ClaimedAmt(); yemShippingdetails = yemShippingdetails.leftJoin(claimedAmt).on("yem_salcontractnoid","salesorderid") From 03e2317d6f9a67a9e9abaf7773d52587b86b92e1 Mon Sep 17 00:00:00 2001 From: ljw Date: Fri, 6 Sep 2024 10:45:02 +0800 Subject: [PATCH 47/76] =?UTF-8?q?=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../materialPriceingPlugin.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/main/java/com/yem/wm/im/materialpriceing/materialPriceingPlugin.java diff --git a/src/main/java/com/yem/wm/im/materialpriceing/materialPriceingPlugin.java b/src/main/java/com/yem/wm/im/materialpriceing/materialPriceingPlugin.java new file mode 100644 index 00000000..1b6619c6 --- /dev/null +++ b/src/main/java/com/yem/wm/im/materialpriceing/materialPriceingPlugin.java @@ -0,0 +1,74 @@ +package com.yem.wm.im.materialpriceing; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.datamodel.IDataModel; +import kd.bos.entity.datamodel.events.ChangeData; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; + +import java.math.BigDecimal; + +/** + * @author ljw + * @date 2024/9/6 10:05 + * @description materialPriceingPlugin + */ +public class materialPriceingPlugin extends AbstractBillPlugIn { + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + super.propertyChanged(e); + String name = e.getProperty().getName(); + ChangeData[] changeSet = e.getChangeSet(); + switch (name) { + case "yem_from": + yemFrom(e); + break; + case "yem_reach": + yemReach(e); + break; + } + } + + /** + * 至不允许小于等于从 + * + * @param e + */ + private void yemReach(PropertyChangedArgs e) { + ChangeData changeData = e.getChangeSet()[0]; + int rowIndex = changeData.getRowIndex(); + int parentRowIndex = changeData.getParentRowIndex(); + BigDecimal newValue = (BigDecimal) changeData.getNewValue(); + DynamicObjectCollection yemBdLogistics = this.getModel().getEntryEntity("yem_entryentity"); + BigDecimal bigDecimal = yemBdLogistics.get(parentRowIndex).getDynamicObjectCollection("yem_subentryentity").get(rowIndex).getBigDecimal("yem_from"); + if (bigDecimal.compareTo(newValue) >= 0) { + + this.getModel().setValue("yem_reach",0,rowIndex,parentRowIndex); + + this.getView().showMessage("至不允许小于等于从!!!"); + } + } + + /** + * 从不能小于前一行的至 + * + * @param e + */ + private void yemFrom(PropertyChangedArgs e) { + ChangeData changeData = e.getChangeSet()[0]; + int rowIndex = changeData.getRowIndex(); + if (rowIndex - 1 < 0) { + return; + } + int parentRowIndex = changeData.getParentRowIndex(); + BigDecimal newValue = (BigDecimal) changeData.getNewValue(); + DynamicObjectCollection yemBdLogistics = this.getModel().getEntryEntity("yem_entryentity"); + BigDecimal bigDecimal = yemBdLogistics.get(parentRowIndex).getDynamicObjectCollection("yem_subentryentity").get(rowIndex - 1).getBigDecimal("yem_reach"); + if (bigDecimal.compareTo(newValue) > 0) { + + this.getModel().setValue("yem_from",0,rowIndex,parentRowIndex); + this.getView().showMessage("从不能小于前一行的至!!!"); + } + } +} From 177a6d76b014688d09632f5ddd918df50cf98b4b Mon Sep 17 00:00:00 2001 From: ljw Date: Fri, 6 Sep 2024 11:40:36 +0800 Subject: [PATCH 48/76] =?UTF-8?q?=E5=8F=91=E8=BF=90=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=EF=BC=88=E6=8F=90=E6=88=90=EF=BC=89=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/rf/salescommission/ShipmentsChedulePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/ShipmentsChedulePlugin.java b/src/main/java/com/yem/rf/salescommission/ShipmentsChedulePlugin.java index 2ce5c164..09dde9cd 100644 --- a/src/main/java/com/yem/rf/salescommission/ShipmentsChedulePlugin.java +++ b/src/main/java/com/yem/rf/salescommission/ShipmentsChedulePlugin.java @@ -95,7 +95,7 @@ public class ShipmentsChedulePlugin extends AbstractReportListDataPlugin { StringBuilder sb = new StringBuilder(); - sb.append("yem_customsdeclaration1 = 'A'"); + sb.append("yem_customsdeclaration1 = 'B'"); if (YEM.isNotEmpty(yemContract)) { sb.append(" AND yem_contractnumber like '").append("%").append(yemContract).append("%").append("'"); } From 5a31c48ff23955d123bc1bdc27cee9438b4b9ea9 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 22:17:50 +0800 Subject: [PATCH 49/76] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8=EF=BC=88=E6=9C=AA=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/kd/cosmic/Application.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/kd/cosmic/Application.java b/src/main/java/kd/cosmic/Application.java index 8160dbf2..a7467d8b 100644 --- a/src/main/java/kd/cosmic/Application.java +++ b/src/main/java/kd/cosmic/Application.java @@ -24,7 +24,6 @@ public class Application { cosmic.setServerIP("10.64.112.152"); cosmic.setFileServerPathIPAndPort("",""); cosmic.setConfigUrl("10.64.112.152:2181","zookeeper","Cosmic@5092"); - cosmic.set("login.type","STANDALONE"); // 134 // cosmic.setClusterNumber("yxzg-prod"); From dea7868d6b259b3fc749efaf1f4e7aa0255ea20f Mon Sep 17 00:00:00 2001 From: ljw Date: Fri, 6 Sep 2024 17:37:23 +0800 Subject: [PATCH 50/76] =?UTF-8?q?=E5=8F=91=E8=BF=90=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=EF=BC=88=E6=9C=AA=E5=8F=91=E8=B4=A7=EF=BC=89=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/rf/salescommission/SparepartsNotShippedPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java index 7d69ee7e..5f103478 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -49,7 +49,7 @@ public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { DataSet result = selected.where("yem_billno != ''"); sb.append("yem_billno != ''"); if (YEM.isNotEmpty(yemContract)) { - sb.append(" AND delivernoticebillno like '").append("%").append(yemContract).append("%").append("'"); + sb.append(" AND yem_billno like '").append("%").append(yemContract).append("%").append("'"); } if (YEM.isNotEmpty(yemClient)) { sb.append(" AND yem_client = ").append("'" + yemClient.getString("name") + "'"); From ddb6ffd8b713efec552db80fe1ac1b278e8528f4 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Fri, 6 Sep 2024 19:01:56 +0800 Subject: [PATCH 51/76] =?UTF-8?q?feat:=E5=8F=91=E8=B4=A7=E8=81=94=E7=B3=BB?= =?UTF-8?q?=E4=B9=A6=E6=AC=BE=E9=A1=B9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/contactbook/op/ContactBookSaveOp.java | 143 ++++++++++++++++-- .../dynamic/GatheringClaimFormPlugin.java | 2 +- 2 files changed, 130 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java index 0d2ac10c..789f4ad4 100644 --- a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java +++ b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java @@ -1,7 +1,10 @@ package com.yem.wm.es.contactbook.op; import com.yem.wm.es.contactbook.validator.ContactBookSaveValidator; +import com.yem.wm.es.shippingdetails.util.PaymentControlUtil; +import com.yem.wm.utils.YEM; import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.plugin.PreparePropertysEventArgs; @@ -12,11 +15,17 @@ import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.AttachmentServiceHelper; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; +import static com.yem.wm.es.contractamtlist.util.FunUtil.*; +import static com.yem.wm.es.shippingdetails.util.PaymentControlUtil.calcIOUAmount; +import static com.yem.wm.fm.gathering.dynamic.GatheringClaimFormPlugin.getPercentagePeriod; + /** * @Classname ContactBookSaveOp * @Description TODO @@ -26,16 +35,15 @@ import java.util.stream.Collectors; public class ContactBookSaveOp extends AbstractOperationServicePlugIn { + + private static final Logger logger = LoggerFactory.getLogger(ContactBookSaveOp.class); + @Override public void onPreparePropertys(PreparePropertysEventArgs e) { super.onPreparePropertys(e); List keys = e.getFieldKeys(); - keys.add("yem_attachmentpanelap2"); - keys.add("yem_attachmentpanelap3"); - keys.add("yem_attachmentpanelap"); - keys.add("billno"); - keys.add("id"); + keys.addAll(this.billEntityType.getAllFields().keySet()); } @Override @@ -57,17 +65,19 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn String operationKey = e.getOperationKey(); if ("save".equals(operationKey)) { for (DynamicObject dataEntity : dataEntities) { - String billno = dataEntity.getString("billno"); +// String billno = dataEntity.getString("billno"); - QFilter qFilter = new QFilter("billno", QCP.equals, billno); - DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_storagetrans", "id, billno", qFilter.toArray()); +// QFilter qFilter = new QFilter("billno", QCP.equals, billno); +// DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_storagetrans", "id, billno", qFilter.toArray()); - for (DynamicObject dynamicObject : load) { +// for (DynamicObject dynamicObject : load) { - AttachmentServiceHelper.remove("yem_es_storagetrans", dynamicObject.getLong("id")); +// AttachmentServiceHelper.remove("yem_es_storagetrans", dynamicObject.getLong("id")); +// +// uploadAttachmentPanel(dataEntity, dynamicObject); +// } - uploadAttachmentPanel(dataEntity, dynamicObject); - } + updatePaymentControlStatus(dataEntity); } // 反写关联发货联系数量 @@ -144,4 +154,109 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn } } } + + /** + * + * @param dataEntity + */ + private void updatePaymentControlStatus(DynamicObject dataEntity) { + DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_es_materialinfo"); + Map map = new HashMap<>(); + + for (DynamicObject d : c) { + String shipmentnumbers_m = d.getString("yem_shipmentnumbers_m"); + String contractnumbers_m = d.getString("yem_contractnumbers_m"); + if (YEM.isNotEmpty(shipmentnumbers_m) && YEM.isNotEmpty(contractnumbers_m)) { + map.put(contractnumbers_m, shipmentnumbers_m); + } + } + + List proc = new ArrayList<>(); + List ship = new ArrayList<>(); + List last = new ArrayList<>(); + int iou = 0; + StringBuilder debugMsg = new StringBuilder(); + for (Map.Entry entry : map.entrySet()) { + + boolean isProcClaimFinish = false;//下单预收金额是否认领完成 + boolean isShipClaimFinish = false;//本次发运 发运预收认领是否完成 + boolean isFinalClaimFinish = false;//尾款是否认领完成 + + String salesorder_no = entry.getKey(); + String ship_no = entry.getValue(); + + logger.info("发货联系书保存: salesorder_no:{} , ship_no:{}", salesorder_no, ship_no); + debugMsg.append(String.format("发货联系书保存: salesorder_no:%s , ship_no:%s", salesorder_no, ship_no)).append("\n"); + DynamicObject saleOrder = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", new QFilter[]{new QFilter("billno", "=", salesorder_no)}); + DynamicObject shipDetail = BusinessDataServiceHelper.loadSingle("yem_shippingdetails", new QFilter[]{new QFilter("billno", "=", ship_no)}); + + DynamicObject[] shipBills = getShipBills(saleOrder, shipDetail, "A");//出运 + DynamicObject[] payBills = getPayBills(saleOrder, shipDetail, "B");//收款单 + + BigDecimal procPreRapRate = PaymentControlUtil.getProcPreRapRate(saleOrder);//生产预收汇比例 + BigDecimal shipPreRapRate = PaymentControlUtil.getShipPreRapRate(saleOrder);//发货预收汇比例 + + logger.info("下单预收比例:{},发货预收比例:{}", procPreRapRate, shipPreRapRate); + debugMsg.append(String.format("下单预收比例:%s,发货预收比例::%s", procPreRapRate, shipPreRapRate)).append("\n"); + + BigDecimal procClaimAnt = PaymentControlUtil.getPreCollection(saleOrder, payBills, "D");//下单已认领金额 + BigDecimal offeramount = saleOrder.getBigDecimal("yem_offeramount");//合同价格条款金额 + BigDecimal advancePayment = PaymentControlUtil.getAdvancePayment(offeramount, procPreRapRate); + + logger.info("下单已认领金额:{}, 下单预收金额:{}", procClaimAnt, advancePayment); + debugMsg.append(String.format("下单已认领金额:%s, 下单预收金额:%s", procClaimAnt, advancePayment)).append("\n"); + // 下单已认领金额 >= 下单预收金额 + if (procClaimAnt.compareTo(advancePayment) >= 0) { + isProcClaimFinish = true; + } + + // 本次发运已认领金额 >= 发运预收金额 + BigDecimal thisShipIOUAmt = PaymentControlUtil.getThisRealityAmt(saleOrder, shipBills, payBills, shipDetail);//本次发运欠款金额,本次发运应认领金额 + thisShipIOUAmt = thisShipIOUAmt.abs(); + BigDecimal shipClaimAmt = PaymentControlUtil.getAmountClaimed(new DynamicObject[]{shipDetail}, "E");//本次发运已认领金额 + logger.info("本次发运已认领金额:{},发运预收金额:{}", shipClaimAmt, thisShipIOUAmt); + debugMsg.append(String.format("本次发运已认领金额:%s, 发运预收金额:%s", shipClaimAmt, thisShipIOUAmt)).append("\n"); + if (shipClaimAmt.compareTo(thisShipIOUAmt) >= 0) { + isShipClaimFinish = true; + } + + BigDecimal lastRate = getPercentagePeriod(shipPreRapRate, procPreRapRate);//尾款比例 + logger.info("尾款比例:{}", lastRate); + debugMsg.append(String.format("尾款比例:%s", lastRate)).append("\n"); + BigDecimal amount = shipDetail.getBigDecimal("yem_offeramount");//发运 价格条款金额 + BigDecimal periodrefundamt = lastRate.multiply(amount);//尾款 应收金额 + BigDecimal shipClaimAmt_periodrefund = PaymentControlUtil.getAmountClaimed(new DynamicObject[]{shipDetail}, "F");//本次发运已认领金额_尾款 + logger.info("尾款认领金额:{}, 尾款 应收金额:{}", shipClaimAmt_periodrefund, periodrefundamt); + debugMsg.append(String.format("尾款认领金额:%s, 尾款 应收金额:%s", shipClaimAmt_periodrefund, periodrefundamt)).append("\n"); + // 尾款认领金额 >= 尾款 应收金额 + if (shipClaimAmt_periodrefund.compareTo(periodrefundamt) >= 0) { + isFinalClaimFinish = true; + } + + proc.add(isProcClaimFinish); + ship.add(isShipClaimFinish); + last.add(isFinalClaimFinish); + + DynamicObject[] tradeapps = BusinessDataServiceHelper.load("yem_im_tradeapp", "id, billno", new QFilter[]{new QFilter("yem_im_tradeapp_em.yem_shippingnumber", QCP.equals, shipDetail.getString("billno")), new QFilter("billstatus", QCP.equals, "C")}); + iou = iou + tradeapps.length; + logger.info("欠条个数:{}", tradeapps.length); + logger.info("欠条个数(累计):{}", iou); + debugMsg.append(String.format("欠条个数:%s", tradeapps.length)).append("\n"); + debugMsg.append(String.format("欠条个数(累计):%s", iou)).append("\n"); + debugMsg.append("=============split=============").append("\n"); + } + if (!proc.contains(false) && !ship.contains(false) && !last.contains(false)) { + //全款完成 + dataEntity.set("yem_paystatus", "A"); + } else if (!proc.contains(false) && !ship.contains(false)) { + //预收完成 + dataEntity.set("yem_paystatus", "B"); + } else if (iou > 0) { + //欠条到位 + dataEntity.set("yem_paystatus", "C"); + } else { + dataEntity.set("yem_paystatus", null); + } + dataEntity.set("yem_debugmsg", debugMsg.toString()); + } } diff --git a/src/main/java/com/yem/wm/fm/gathering/dynamic/GatheringClaimFormPlugin.java b/src/main/java/com/yem/wm/fm/gathering/dynamic/GatheringClaimFormPlugin.java index 72056e26..ab105bda 100644 --- a/src/main/java/com/yem/wm/fm/gathering/dynamic/GatheringClaimFormPlugin.java +++ b/src/main/java/com/yem/wm/fm/gathering/dynamic/GatheringClaimFormPlugin.java @@ -924,7 +924,7 @@ public class GatheringClaimFormPlugin extends AbstractFormPlugin implements RowC * * @return */ - private BigDecimal getPercentagePeriod(BigDecimal shipPreRapRate, BigDecimal procPreRapRate) { + public static BigDecimal getPercentagePeriod(BigDecimal shipPreRapRate, BigDecimal procPreRapRate) { return BigDecimal.ONE.subtract(procPreRapRate.multiply(BigDecimal.valueOf(0.01))).subtract(shipPreRapRate.multiply(BigDecimal.valueOf(0.01))); } From a26db3adf68d6c6bc5ac51876cdbb4489e5ebd75 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 21:27:23 +0800 Subject: [PATCH 52/76] =?UTF-8?q?feat:=E5=8F=91=E8=B4=A7=E8=81=94=E7=B3=BB?= =?UTF-8?q?=E4=B9=A6=E6=AC=BE=E9=A1=B9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/contactbook/op/ContactBookSaveOp.java | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java index 789f4ad4..e2c04ea3 100644 --- a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java +++ b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java @@ -185,8 +185,8 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn String salesorder_no = entry.getKey(); String ship_no = entry.getValue(); - logger.info("发货联系书保存: salesorder_no:{} , ship_no:{}", salesorder_no, ship_no); - debugMsg.append(String.format("发货联系书保存: salesorder_no:%s , ship_no:%s", salesorder_no, ship_no)).append("\n"); + logger.info("发货联系书保存: 合同号:{} , 发运明细号:{}", salesorder_no, ship_no); + debugMsg.append(String.format("发货联系书保存: 合同号:%s , 发运明细号:%s", salesorder_no, ship_no)).append("\n"); DynamicObject saleOrder = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", new QFilter[]{new QFilter("billno", "=", salesorder_no)}); DynamicObject shipDetail = BusinessDataServiceHelper.loadSingle("yem_shippingdetails", new QFilter[]{new QFilter("billno", "=", ship_no)}); @@ -195,10 +195,10 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn BigDecimal procPreRapRate = PaymentControlUtil.getProcPreRapRate(saleOrder);//生产预收汇比例 BigDecimal shipPreRapRate = PaymentControlUtil.getShipPreRapRate(saleOrder);//发货预收汇比例 - - logger.info("下单预收比例:{},发货预收比例:{}", procPreRapRate, shipPreRapRate); - debugMsg.append(String.format("下单预收比例:%s,发货预收比例::%s", procPreRapRate, shipPreRapRate)).append("\n"); - + BigDecimal lastRate = getPercentagePeriod(shipPreRapRate, procPreRapRate);//尾款比例 + logger.info("尾款比例:{}", lastRate); + logger.info("下单预收比例:{},发货预收比例:{},尾款比例:{}", procPreRapRate, shipPreRapRate, lastRate); + debugMsg.append(String.format("下单预收比例:%s,发货预收比例::%s,尾款比例:%s", procPreRapRate, shipPreRapRate, lastRate)).append("\n"); BigDecimal procClaimAnt = PaymentControlUtil.getPreCollection(saleOrder, payBills, "D");//下单已认领金额 BigDecimal offeramount = saleOrder.getBigDecimal("yem_offeramount");//合同价格条款金额 BigDecimal advancePayment = PaymentControlUtil.getAdvancePayment(offeramount, procPreRapRate); @@ -214,20 +214,17 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn BigDecimal thisShipIOUAmt = PaymentControlUtil.getThisRealityAmt(saleOrder, shipBills, payBills, shipDetail);//本次发运欠款金额,本次发运应认领金额 thisShipIOUAmt = thisShipIOUAmt.abs(); BigDecimal shipClaimAmt = PaymentControlUtil.getAmountClaimed(new DynamicObject[]{shipDetail}, "E");//本次发运已认领金额 - logger.info("本次发运已认领金额:{},发运预收金额:{}", shipClaimAmt, thisShipIOUAmt); - debugMsg.append(String.format("本次发运已认领金额:%s, 发运预收金额:%s", shipClaimAmt, thisShipIOUAmt)).append("\n"); + logger.info("发运已认领金额:{},发运预收金额:{}", shipClaimAmt, thisShipIOUAmt); + debugMsg.append(String.format("发运已认领金额:%s, 发运预收金额:%s", shipClaimAmt, thisShipIOUAmt)).append("\n"); if (shipClaimAmt.compareTo(thisShipIOUAmt) >= 0) { isShipClaimFinish = true; } - BigDecimal lastRate = getPercentagePeriod(shipPreRapRate, procPreRapRate);//尾款比例 - logger.info("尾款比例:{}", lastRate); - debugMsg.append(String.format("尾款比例:%s", lastRate)).append("\n"); BigDecimal amount = shipDetail.getBigDecimal("yem_offeramount");//发运 价格条款金额 BigDecimal periodrefundamt = lastRate.multiply(amount);//尾款 应收金额 BigDecimal shipClaimAmt_periodrefund = PaymentControlUtil.getAmountClaimed(new DynamicObject[]{shipDetail}, "F");//本次发运已认领金额_尾款 - logger.info("尾款认领金额:{}, 尾款 应收金额:{}", shipClaimAmt_periodrefund, periodrefundamt); - debugMsg.append(String.format("尾款认领金额:%s, 尾款 应收金额:%s", shipClaimAmt_periodrefund, periodrefundamt)).append("\n"); + logger.info("尾款已认领金额:{}, 尾款应收金额:{}", shipClaimAmt_periodrefund, periodrefundamt); + debugMsg.append(String.format("尾款已认领金额:%s, 尾款应收金额:%s", shipClaimAmt_periodrefund, periodrefundamt)).append("\n"); // 尾款认领金额 >= 尾款 应收金额 if (shipClaimAmt_periodrefund.compareTo(periodrefundamt) >= 0) { isFinalClaimFinish = true; @@ -243,7 +240,7 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn logger.info("欠条个数(累计):{}", iou); debugMsg.append(String.format("欠条个数:%s", tradeapps.length)).append("\n"); debugMsg.append(String.format("欠条个数(累计):%s", iou)).append("\n"); - debugMsg.append("=============split=============").append("\n"); + debugMsg.append("==========================").append("\n"); } if (!proc.contains(false) && !ship.contains(false) && !last.contains(false)) { //全款完成 From 1e25a581d26413c5ad015d0b9645ee8d5feee58f Mon Sep 17 00:00:00 2001 From: violet Date: Fri, 6 Sep 2024 19:25:18 +0800 Subject: [PATCH 53/76] =?UTF-8?q?feat:=E5=8F=91=E8=B4=A7=E8=81=94=E7=B3=BB?= =?UTF-8?q?=E4=B9=A6=E6=AC=BE=E9=A1=B9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/wm/es/contactbook/op/ContactBookSaveOp.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java index e2c04ea3..e6617bfa 100644 --- a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java +++ b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java @@ -206,7 +206,7 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn logger.info("下单已认领金额:{}, 下单预收金额:{}", procClaimAnt, advancePayment); debugMsg.append(String.format("下单已认领金额:%s, 下单预收金额:%s", procClaimAnt, advancePayment)).append("\n"); // 下单已认领金额 >= 下单预收金额 - if (procClaimAnt.compareTo(advancePayment) >= 0) { + if (advancePayment.compareTo(BigDecimal.ZERO) > 0 && procClaimAnt.compareTo(advancePayment) >= 0) { isProcClaimFinish = true; } @@ -216,7 +216,7 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn BigDecimal shipClaimAmt = PaymentControlUtil.getAmountClaimed(new DynamicObject[]{shipDetail}, "E");//本次发运已认领金额 logger.info("发运已认领金额:{},发运预收金额:{}", shipClaimAmt, thisShipIOUAmt); debugMsg.append(String.format("发运已认领金额:%s, 发运预收金额:%s", shipClaimAmt, thisShipIOUAmt)).append("\n"); - if (shipClaimAmt.compareTo(thisShipIOUAmt) >= 0) { + if (thisShipIOUAmt.compareTo(BigDecimal.ZERO) > 0 && shipClaimAmt.compareTo(thisShipIOUAmt) >= 0) { isShipClaimFinish = true; } @@ -226,7 +226,7 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn logger.info("尾款已认领金额:{}, 尾款应收金额:{}", shipClaimAmt_periodrefund, periodrefundamt); debugMsg.append(String.format("尾款已认领金额:%s, 尾款应收金额:%s", shipClaimAmt_periodrefund, periodrefundamt)).append("\n"); // 尾款认领金额 >= 尾款 应收金额 - if (shipClaimAmt_periodrefund.compareTo(periodrefundamt) >= 0) { + if (periodrefundamt.compareTo(BigDecimal.ZERO) > 0 && shipClaimAmt_periodrefund.compareTo(periodrefundamt) >= 0) { isFinalClaimFinish = true; } From cea38280d901b8a370ce2843624a945ee17acc8d Mon Sep 17 00:00:00 2001 From: violet Date: Fri, 6 Sep 2024 20:51:16 +0800 Subject: [PATCH 54/76] =?UTF-8?q?feat:=E5=8F=91=E8=B4=A7=E8=81=94=E7=B3=BB?= =?UTF-8?q?=E4=B9=A6=E6=AC=BE=E9=A1=B9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yem/wm/es/contactbook/op/ContactBookSaveOp.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java index e6617bfa..c931a784 100644 --- a/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java +++ b/src/main/java/com/yem/wm/es/contactbook/op/ContactBookSaveOp.java @@ -19,6 +19,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -201,7 +202,7 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn debugMsg.append(String.format("下单预收比例:%s,发货预收比例::%s,尾款比例:%s", procPreRapRate, shipPreRapRate, lastRate)).append("\n"); BigDecimal procClaimAnt = PaymentControlUtil.getPreCollection(saleOrder, payBills, "D");//下单已认领金额 BigDecimal offeramount = saleOrder.getBigDecimal("yem_offeramount");//合同价格条款金额 - BigDecimal advancePayment = PaymentControlUtil.getAdvancePayment(offeramount, procPreRapRate); + BigDecimal advancePayment = PaymentControlUtil.getAdvancePayment(offeramount, procPreRapRate).setScale(2, RoundingMode.HALF_UP); logger.info("下单已认领金额:{}, 下单预收金额:{}", procClaimAnt, advancePayment); debugMsg.append(String.format("下单已认领金额:%s, 下单预收金额:%s", procClaimAnt, advancePayment)).append("\n"); @@ -209,10 +210,9 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn if (advancePayment.compareTo(BigDecimal.ZERO) > 0 && procClaimAnt.compareTo(advancePayment) >= 0) { isProcClaimFinish = true; } - + BigDecimal thisAmt = getThisAmt(shipDetail);//本次出运/发货金额 // 本次发运已认领金额 >= 发运预收金额 - BigDecimal thisShipIOUAmt = PaymentControlUtil.getThisRealityAmt(saleOrder, shipBills, payBills, shipDetail);//本次发运欠款金额,本次发运应认领金额 - thisShipIOUAmt = thisShipIOUAmt.abs(); + BigDecimal thisShipIOUAmt = PaymentControlUtil.getAdvancePayment(thisAmt, shipPreRapRate).setScale(2, RoundingMode.HALF_UP);//本次发运欠款金额,本次发运应认领金额 BigDecimal shipClaimAmt = PaymentControlUtil.getAmountClaimed(new DynamicObject[]{shipDetail}, "E");//本次发运已认领金额 logger.info("发运已认领金额:{},发运预收金额:{}", shipClaimAmt, thisShipIOUAmt); debugMsg.append(String.format("发运已认领金额:%s, 发运预收金额:%s", shipClaimAmt, thisShipIOUAmt)).append("\n"); @@ -221,7 +221,7 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn } BigDecimal amount = shipDetail.getBigDecimal("yem_offeramount");//发运 价格条款金额 - BigDecimal periodrefundamt = lastRate.multiply(amount);//尾款 应收金额 + BigDecimal periodrefundamt = lastRate.multiply(amount).setScale(2, RoundingMode.HALF_UP);//尾款 应收金额 BigDecimal shipClaimAmt_periodrefund = PaymentControlUtil.getAmountClaimed(new DynamicObject[]{shipDetail}, "F");//本次发运已认领金额_尾款 logger.info("尾款已认领金额:{}, 尾款应收金额:{}", shipClaimAmt_periodrefund, periodrefundamt); debugMsg.append(String.format("尾款已认领金额:%s, 尾款应收金额:%s", shipClaimAmt_periodrefund, periodrefundamt)).append("\n"); From 26d48a62e22eb7d00f4508cbdedd19192524b46b Mon Sep 17 00:00:00 2001 From: ljw Date: Sat, 7 Sep 2024 10:40:01 +0800 Subject: [PATCH 55/76] =?UTF-8?q?=E5=87=BA=E5=8F=A3=E6=8A=A5=E5=85=B3?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E5=BC=80=E7=A5=A8=E9=87=91=E9=A2=9D=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salescommission/ExportDeclarationDetailsReportPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java index fa5069af..2daa4015 100644 --- a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java @@ -524,7 +524,7 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData selectfields.add("billno exportinvoice_billno"); selectfields.add("yem_exportinvoice_c.yem_customsdeclaration yem_unit"); selectfields.add("yem_exportinvoice_c.yem_sourcebillentryid ddd_id_ei_entry_fk"); - selectfields.add("yem_exportinvoice_c.yem_cusamount yem_cnyinvoiced");//金额-人民币开票额 + selectfields.add("yem_exportinvoice_c.yem_localinvoicedamo yem_cnyinvoiced");//金额-人民币开票额 selectfields.add("yem_exrate yem_baserate");//原币汇率 selectfields.add("yem_invoicenumber yem_invoiceno");//发票号码 DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_exportinvoice", String.join(",", selectfields), qFilter.toArray()); From 671b33287ddea46d89b6acfa249e3e3f4d1e5b61 Mon Sep 17 00:00:00 2001 From: ljw Date: Sat, 7 Sep 2024 11:20:47 +0800 Subject: [PATCH 56/76] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8=EF=BC=88=E5=B7=B2=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/rf/salescommission/SparepartsPlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java index 8b1a082b..84244417 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java @@ -45,9 +45,9 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin { DataSet yemShippingdetails = yemShippingdetails(); DataSet yemEsDelivernotices = yemEsDelivernotices(); //销售出库关联外销合同 - resDataSet = queryDeliverNotice.leftJoin(yemEsDelivernotices) - .on("queryDeliverNoticeid", "yem_corebillids") - .select(RptUtil.getDataSetFiledAlias(queryDeliverNotice), RptUtil.getDataSetFiledAlias(yemEsDelivernotices)) + resDataSet = yemEsDelivernotices.leftJoin(queryDeliverNotice) + .on("yem_corebillids", "queryDeliverNoticeid") + .select(RptUtil.getDataSetFiledAlias(yemEsDelivernotices), RptUtil.getDataSetFiledAlias(queryDeliverNotice)) .finish(); //外销合同关联发运明细 resDataSet = resDataSet.leftJoin(yemShippingdetails) From 1c85620d5b25c5d3af505ac94cc5c71b0bb793cb Mon Sep 17 00:00:00 2001 From: ljw Date: Sat, 7 Sep 2024 10:40:01 +0800 Subject: [PATCH 57/76] =?UTF-8?q?=E5=87=BA=E5=8F=A3=E6=8A=A5=E5=85=B3?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E5=BC=80=E7=A5=A8=E9=87=91=E9=A2=9D=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salescommission/ExportDeclarationDetailsReportPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java index fa5069af..2daa4015 100644 --- a/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/ExportDeclarationDetailsReportPlugin.java @@ -524,7 +524,7 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData selectfields.add("billno exportinvoice_billno"); selectfields.add("yem_exportinvoice_c.yem_customsdeclaration yem_unit"); selectfields.add("yem_exportinvoice_c.yem_sourcebillentryid ddd_id_ei_entry_fk"); - selectfields.add("yem_exportinvoice_c.yem_cusamount yem_cnyinvoiced");//金额-人民币开票额 + selectfields.add("yem_exportinvoice_c.yem_localinvoicedamo yem_cnyinvoiced");//金额-人民币开票额 selectfields.add("yem_exrate yem_baserate");//原币汇率 selectfields.add("yem_invoicenumber yem_invoiceno");//发票号码 DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_exportinvoice", String.join(",", selectfields), qFilter.toArray()); From 9be8a84a574ab99a7fe1a990266c17c50fb93d78 Mon Sep 17 00:00:00 2001 From: ljw Date: Sat, 7 Sep 2024 11:20:47 +0800 Subject: [PATCH 58/76] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8=EF=BC=88=E5=B7=B2=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/rf/salescommission/SparepartsPlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java index 8b1a082b..84244417 100644 --- a/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java +++ b/src/main/java/com/yem/rf/salescommission/SparepartsPlugin.java @@ -45,9 +45,9 @@ public class SparepartsPlugin extends AbstractReportListDataPlugin { DataSet yemShippingdetails = yemShippingdetails(); DataSet yemEsDelivernotices = yemEsDelivernotices(); //销售出库关联外销合同 - resDataSet = queryDeliverNotice.leftJoin(yemEsDelivernotices) - .on("queryDeliverNoticeid", "yem_corebillids") - .select(RptUtil.getDataSetFiledAlias(queryDeliverNotice), RptUtil.getDataSetFiledAlias(yemEsDelivernotices)) + resDataSet = yemEsDelivernotices.leftJoin(queryDeliverNotice) + .on("yem_corebillids", "queryDeliverNoticeid") + .select(RptUtil.getDataSetFiledAlias(yemEsDelivernotices), RptUtil.getDataSetFiledAlias(queryDeliverNotice)) .finish(); //外销合同关联发运明细 resDataSet = resDataSet.leftJoin(yemShippingdetails) From d442546b87ad1520837f2aea33e53dcee0de465c Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 9 Sep 2024 10:27:18 +0800 Subject: [PATCH 59/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index 7aed7a0b..5ead36f8 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -53,6 +53,8 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); for (DynamicObject bom : bom_entry) { String bom_billno = bom.getString("yem_changeno");//更改单号 + + String bom_parent = bom.getString("yem_parentno.number");//父件编码 String bom_child = bom.getString("yem_subno");//子项零件编码 BigDecimal bom_qty = bom.getBigDecimal("yem_qty");//数量 From 9f60bc0f0c3a3e1aa5546cb5eeed833591fa55c1 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 9 Sep 2024 11:45:33 +0800 Subject: [PATCH 60/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/MatchingPLMChangeUpdateTaskEdit.java | 63 +++++++++++-------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index 5ead36f8..f659ee31 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -18,8 +18,7 @@ import java.util.Date; import java.util.Map; /** - * @Description: - * 1.根据《PLM变更单》中的 + * @Description: 1.根据《PLM变更单》中的 * 【PLM工艺变更单号】+【总成编码】+【子项零件编码】+【子件数量】 * 匹配《BOM》变更单 * 【更改单号】+【总成编码】+【子项零件编码】+【数量】+【启用停用状态=‘停用’】更新 《PLM变更单》【启用停用状态】【启用停用时间】; @@ -28,7 +27,6 @@ import java.util.Map; * 【PLM工艺变更单号】+【替换后总成编码】+【替换后子项零件编码】+【替换子件数量】 * 匹配《BOM》变更单 * 【更改单号】+【总成编码】+【子项零件编码】+【数量】+【启用停用状态=‘启用’】更新 《PLM变更单》【替换件启用停用状态】【替换件启用停用时间】; - * * @Date: 2024/8/29 15:08 * @Created: by ZZSLL */ @@ -44,37 +42,50 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { for (DynamicObject plmObj : plms) { DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); - String plm_billno = plmObj.getString("billno");//PLM工艺变更单号 + String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号 for (DynamicObject plm : plm_entry) { - String plm_parent = plm.getString("yem_materiel_parent.number");//总成编码 - String plm_child = plm.getString("yem_materiel_child.number");//子项零件编码 + + String plm_parent = plm.getString("yem_textfield");//总成编码 + String plm_child = plm.getString("yem_child_before");//子项零件编码 BigDecimal plm_qty = plm.getBigDecimal("yem_qty_before");//子件数量 + + String invokstatus = plm.getString("yem_invokstatus"); + if ("B".equals(invokstatus)) { + logger.info("执行状态为已完成,跳过:{},父项编码:{}", plm_billno, plm_parent); + continue; + } for (DynamicObject bomObj : boms) { DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); for (DynamicObject bom : bom_entry) { String bom_billno = bom.getString("yem_changeno");//更改单号 - - - String bom_parent = bom.getString("yem_parentno.number");//父件编码 + String bom_parent = bom.getString("yem_parentno");//父件编码 String bom_child = bom.getString("yem_subno");//子项零件编码 BigDecimal bom_qty = bom.getBigDecimal("yem_qty");//数量 - if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty)) { - logger.info("PLM匹配到BOM,{}-{}, {}-{}, {}-{}, {}-{}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_qty); - String enablesta = bom.getString("yem_enablesta");//启用停用状态 - logger.info("BOM 状态为 {}", "A".equals(enablesta) ? "启用" : "停用"); - if ("A".equals(enablesta)) {//启用 - String plm_enablesta = plm.getString("yem_enablesta"); - if ("A".equals(plm_enablesta)) { - plm.set("yem_starttime", new Date()); - } - } - if ("B".equals(enablesta)) {//停用 - String plm_enablesta = plm.getString("yem_enablesta"); - if ("B".equals(plm_enablesta)) { - plm.set("yem_stoptime", new Date()); - } - } - plm.set("yem_enablesta", enablesta); + String bom_enablesta = bom.getString("yem_enablesta");//启用停用状态 + logger.info("停用_compare: {} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_child, bom_enablesta); + if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty) && "B".equals(bom_enablesta)) { + logger.info("停用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_qty); + plm.set("yem_enablesta", bom_enablesta); + plm.set("yem_stoptime", new Date()); + plm.set("yem_invokstatus", "B"); + plm.set("yem_invoktime", new Date()); + } + + String plm_after_parent_now = plm.getString("yem_parent_now");//父项编码 + String plm_after_child_now = plm.getString("yem_child_now");//子项编码 + BigDecimal plm_after_qty = plm.getBigDecimal("yem_qty_new"); + + String bom_after_parent_no = bom.getString("yem_enableparno");//替换后总成编码 + String bom_after_child_no = bom.getString("yem_enablesubno");//替换子件编码 + BigDecimal bom_after_qty = bom.getBigDecimal("yem_enablesubqty"); + logger.info("启用_compare:{} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno,plm_after_parent_now, bom_after_parent_no, plm_after_child_now, bom_after_child_no, plm_after_qty, bom_after_qty, bom_enablesta); + if (eq(plm_billno, bom_billno) && eq(plm_after_parent_now, bom_after_parent_no) && eq(plm_after_child_now, bom_after_child_no) && eq(plm_after_qty, bom_after_qty) && "A".equals(bom_enablesta)) { + logger.info("启用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno,plm_after_parent_now, bom_after_parent_no, plm_after_child_now, bom_after_child_no, plm_after_qty, bom_after_qty); + + plm.set("yem_enablesta", bom_enablesta); + plm.set("yem_starttime", new Date()); + plm.set("yem_invokstatus", "B"); + plm.set("yem_invoktime", new Date()); } } } From 5b224777e5f6f7dd14c9a40a03dd624c456bd770 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 9 Sep 2024 15:31:49 +0800 Subject: [PATCH 61/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 54 ++++++++++++++++--- .../task/MatchingPLMChangeUpdateTaskEdit.java | 43 ++++++++------- 2 files changed, 68 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index 0e7256fa..d721eaad 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -7,11 +7,14 @@ import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.exception.KDException; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.util.Date; -import java.util.Map; +import java.util.*; import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.queryPLMChange; +import static com.yem.em.utils.AtlasUtils.seelctDyn; /** * @Description: 1、如《PLM变更单》分录【替换关系】=【相互替换】【新替换旧】【互不替换】,分录【启用停用状态】=‘停用’,并且【替换件启用停用状态】=‘启用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id @@ -25,16 +28,34 @@ import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.queryPLMChange; public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { + private final static Logger logger = LoggerFactory.getLogger(GenerateReplaceRelationshipTaskEdit.class); + @Override public void execute(RequestContext requestContext, Map map) throws KDException { + DynamicObject[] plms = queryPLMChange(); for (DynamicObject plmObj : plms) { DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail"); DynamicObjectCollection enabled = new DynamicObjectCollection(); + Set successMap = new HashSet<>(); for (DynamicObject plm : collection) { String enablesta = plm.getString("yem_enablesta"); - if ("A".equals(enablesta)) {//"替换件启用停用状态 = 启用" + String invokstatus = plm.getString("yem_invokstatus"); + String parentno = plm.getString("yem_textfield"); + DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", parentno);//父项编码 + plm.set("yem_isassy", false); + plm.set("yem_isresource", false); + if (assatlasdet != null) { + plm.set("yem_isassy", true); + } + logger.info("是否总成:{},{}", parentno, assatlasdet != null); + DynamicObject basemodelib = seelctDyn("yem_bd_basemodelib", "number", parentno); + if (basemodelib != null) { + plm.set("yem_isresource", true); + } + logger.info("是否资源:{},{}", parentno, basemodelib != null); + if ("A".equals(enablesta) && !"B".equals(invokstatus) ) {//"替换件启用停用状态 = 启用" && 执行状态 != 已完成 enabled.add(plm); } } @@ -42,27 +63,45 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { DynamicObjectCollection entry = bomChange.getDynamicObjectCollection("yem_entryentity"); if (!entry.isEmpty()) { DynamicObject replace = null; + String billno = plmObj.getString("billno"); + String gybg_no = plmObj.getString("yem_gybg_no"); if (entry.size() == 1) { + logger.info("生成替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, enabled.get(0).getString("yem_textfield")); replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add", "PLM"); + successMap.add(entry.get(0).getLong("id")); } for (DynamicObject entryObject : entry) { int idx = entry.indexOf(entryObject); if (idx == 0) continue; + logger.info("更新替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, entryObject.getString("yem_textfield")); replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update", "PLM"); + successMap.add(entryObject.getLong("id")); } } + + for (Long s : successMap) { + for (DynamicObject d : collection) { + long id = d.getLong("id"); + if (s == id) { + d.set("yem_invokstatus", "B"); + d.set("yem_invoktime", new Date()); + } + } + } + + SaveServiceHelper.save(new DynamicObject[]{plmObj}); } } private DynamicObject createBOMChange(DynamicObject head, DynamicObjectCollection entries) { DynamicObject bomchange = BusinessDataServiceHelper.newDynamicObject("yem_em_bomchange"); bomchange.set("id", head.getLong("id")); - bomchange.set("createorg", head.getString("org"));//创建组织-组织 + bomchange.set("createorg", head.getDynamicObject("org"));//创建组织-组织 bomchange.set("yem_producttype", head.getString("yem_producttype"));//产品分类 bomchange.set("number", head.getString("billno"));//单据编号 bomchange.set("yem_date", head.getDate("createtime"));//业务日期-创建时间 - bomchange.set("creator", head.getLong("creator.id"));//创建人 - DynamicObjectCollection detail = bomchange.getDynamicObjectCollection("yem_change_detail"); + bomchange.set("creator", head.getDynamicObject("creator"));//创建人 + DynamicObjectCollection detail = bomchange.getDynamicObjectCollection("yem_entryentity"); for (DynamicObject entry : entries) { DynamicObject addNew = detail.addNew(); addNew.set("id", entry.getLong("id")); @@ -72,7 +111,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { addNew.set("yem_subname", entry.getString("yem_name_child"));//子件名称 addNew.set("yem_subenname", "");//子件英文名称 addNew.set("yem_qty", entry.getBigDecimal("yem_qty_before"));//数量 - addNew.set("yem_enablesta", entry.getBigDecimal("yem_enablesta"));//启用停用状态 + addNew.set("yem_enablesta", entry.getString("yem_enablesta"));//启用停用状态 addNew.set("yem_replace", entry.getString("yem_exchangetype"));//替换关系 addNew.set("yem_enableparno", entry.getString("yem_parent_now"));//替换父件编码-父项编码 addNew.set("yem_enableparname", entry.getString("yem_name_newparent"));//替换父件名称-父项名称 @@ -82,6 +121,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { addNew.set("yem_enablesubqty", entry.getBigDecimal("yem_qty_new"));//数量 addNew.set("yem_enableddate", entry.getDate("yem_starttime"));//启用时间 addNew.set("yem_downdate", entry.getDate("yem_stoptime"));//停用时间 + addNew.set("yem_completetime", new Date());//执行时间 addNew.set("yem_remark", "");//备注 addNew.set("yem_isass", entry.getBoolean("yem_isassy"));//是否总成 addNew.set("yem_isresource", entry.getBoolean("yem_isresource"));//是否资源 diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index f659ee31..16fbe202 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -2,6 +2,7 @@ package com.yem.em.task; import com.yem.rf.utils.RFUtils; import com.yem.wm.utils.DynamicObjectUtil; +import com.yem.wm.utils.YEM; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; @@ -44,16 +45,9 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号 for (DynamicObject plm : plm_entry) { - String plm_parent = plm.getString("yem_textfield");//总成编码 String plm_child = plm.getString("yem_child_before");//子项零件编码 BigDecimal plm_qty = plm.getBigDecimal("yem_qty_before");//子件数量 - - String invokstatus = plm.getString("yem_invokstatus"); - if ("B".equals(invokstatus)) { - logger.info("执行状态为已完成,跳过:{},父项编码:{}", plm_billno, plm_parent); - continue; - } for (DynamicObject bomObj : boms) { DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); for (DynamicObject bom : bom_entry) { @@ -65,27 +59,32 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { logger.info("停用_compare: {} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_child, bom_enablesta); if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty) && "B".equals(bom_enablesta)) { logger.info("停用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_qty); - plm.set("yem_enablesta", bom_enablesta); - plm.set("yem_stoptime", new Date()); - plm.set("yem_invokstatus", "B"); - plm.set("yem_invoktime", new Date()); + Date stoptime = plm.getDate("yem_stoptime"); + if (YEM.isEmpty(stoptime)) { + plm.set("yem_enablesta", bom_enablesta); + plm.set("yem_stoptime", new Date()); + } else { + logger.info("停用_已有时间,不更新,{},{}", plm_billno, plm_parent); + } } String plm_after_parent_now = plm.getString("yem_parent_now");//父项编码 String plm_after_child_now = plm.getString("yem_child_now");//子项编码 BigDecimal plm_after_qty = plm.getBigDecimal("yem_qty_new"); - String bom_after_parent_no = bom.getString("yem_enableparno");//替换后总成编码 - String bom_after_child_no = bom.getString("yem_enablesubno");//替换子件编码 - BigDecimal bom_after_qty = bom.getBigDecimal("yem_enablesubqty"); - logger.info("启用_compare:{} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno,plm_after_parent_now, bom_after_parent_no, plm_after_child_now, bom_after_child_no, plm_after_qty, bom_after_qty, bom_enablesta); - if (eq(plm_billno, bom_billno) && eq(plm_after_parent_now, bom_after_parent_no) && eq(plm_after_child_now, bom_after_child_no) && eq(plm_after_qty, bom_after_qty) && "A".equals(bom_enablesta)) { - logger.info("启用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno,plm_after_parent_now, bom_after_parent_no, plm_after_child_now, bom_after_child_no, plm_after_qty, bom_after_qty); - - plm.set("yem_enablesta", bom_enablesta); - plm.set("yem_starttime", new Date()); - plm.set("yem_invokstatus", "B"); - plm.set("yem_invoktime", new Date()); + String bom_before_parent_no = bom.getString("yem_parentno");//总成编码 + 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_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) && eq(plm_after_qty, bom_before_qty) && "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, plm_after_qty, bom_before_qty); + Date starttime = plm.getDate("yem_starttime"); + if (YEM.isEmpty(starttime)) { + plm.set("yem_enablesta", bom_enablesta); + plm.set("yem_starttime", new Date()); + } else { + logger.info("启用_已有时间,不更新,{},{}", plm_billno, plm_parent); + } } } } From c11b14cf950aa6915acf68c841252b8d7986aa8e Mon Sep 17 00:00:00 2001 From: ljw Date: Mon, 9 Sep 2024 15:48:44 +0800 Subject: [PATCH 62/76] =?UTF-8?q?=E9=94=80=E5=94=AE=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=95=88=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../validator/SalesOrderSubmitValidator.java | 101 ++++++++++++--- .../validator/DebCredNewAuditValidatorOp.java | 119 ++++++++++++++---- 2 files changed, 178 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java b/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java index 906db5c1..ed07208d 100644 --- a/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java +++ b/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java @@ -150,6 +150,7 @@ public class SalesOrderSubmitValidator extends AbstractValidator { /** * 信保合同提交时,消息提醒:【请确认,信保通中该客户的信保额度是否有效,如果点击是,继续下一步,点击否取消操作】。 + * * @param dataEntity * @param dataEntitie */ @@ -163,6 +164,7 @@ public class SalesOrderSubmitValidator extends AbstractValidator { /** * 根据信保明细检查是否信保合同 + * * @param dataEntity * @param dataEntitie */ @@ -204,6 +206,7 @@ public class SalesOrderSubmitValidator extends AbstractValidator { /** * 是否是变更合同 + * * @param dataEntity 外销合同 */ private boolean isChangeContract(DynamicObject dataEntity) { @@ -217,11 +220,16 @@ public class SalesOrderSubmitValidator extends AbstractValidator { /** * 根据贷记单使用币别+贷记单类型+借贷业务类型+集团客户,匹配对应配件资金池, * 【贷记单使用金额】不能超过其对应分录【实际来源金额-预计去向金额】 + *

+ * 2024-09-09增加 通过配置进行判断允许超额 + * * @param dataEntity * @param dataEntitie */ private void checkUsedAmount(DynamicObject dataEntity, ExtendedDataEntity dataEntitie) { - if (isChangeContract(dataEntity)) {return;} + if (isChangeContract(dataEntity)) { + return; + } // 资金使用类型 String fundusetype = dataEntity.getString("yem_fundusetype"); if (!"B".equals(fundusetype)) return; @@ -258,24 +266,81 @@ public class SalesOrderSubmitValidator extends AbstractValidator { long entryCustomer = single.getLong("yem_customer.id"); if ( entryCurr == currId && - entryDebcredtype.equals(debcred) && - entryCreditype == debcredtype && - groupcustomers == entryCustomer + entryDebcredtype.equals(debcred) && + entryCreditype == debcredtype && + groupcustomers == entryCustomer ) { - // 实际来源总金额 - BigDecimal sumtotalamount = object.getBigDecimal("yem_sumtotalamount"); - // 预计去向总金额 - BigDecimal sumtowardamt = object.getBigDecimal("yem_sumtowardamt"); - if (debcuseamt.compareTo(sumtotalamount.subtract(sumtowardamt)) > 0) { - sb.append(String.format("配件资金使用明细第 [ %s ] 行,贷记单使用金额 [ %s ] 超过其对应配件资金池 [ %s ] 分录第 [ %s ] 行,实际来源金额 [ %s ] - 预计去向金额 [ %s ] = [ %s ] !!\r\n", - index + 1, - debcuseamt.setScale(2, RoundingMode.HALF_UP), - single.getString("billno"), - subIdx + 1, - sumtotalamount.setScale(2, RoundingMode.HALF_UP), - sumtowardamt.setScale(2, RoundingMode.HALF_UP), - sumtotalamount.subtract(sumtowardamt).setScale(2, RoundingMode.HALF_UP) - )); +// // 实际来源总金额 +// BigDecimal sumtotalamount = object.getBigDecimal("yem_sumtotalamount"); +// // 预计去向总金额 +// BigDecimal sumtowardamt = object.getBigDecimal("yem_sumtowardamt"); +// if (debcuseamt.compareTo(sumtotalamount.subtract(sumtowardamt)) > 0) { +// sb.append(String.format("配件资金使用明细第 [ %s ] 行,贷记单使用金额 [ %s ] 超过其对应配件资金池 [ %s ] 分录第 [ %s ] 行,实际来源金额 [ %s ] - 预计去向金额 [ %s ] = [ %s ] !!\r\n", +// index + 1, +// debcuseamt.setScale(2, RoundingMode.HALF_UP), +// single.getString("billno"), +// subIdx + 1, +// sumtotalamount.setScale(2, RoundingMode.HALF_UP), +// sumtowardamt.setScale(2, RoundingMode.HALF_UP), +// sumtotalamount.subtract(sumtowardamt).setScale(2, RoundingMode.HALF_UP) +// )); +// } + String yem_billtype = dataEntity.getString("yem_billtype.number");//单据类型 + QFilter qFilter1 = new QFilter("yem_contracttype", QCP.equals, yem_billtype);//合同类型 + String yem_accamtusetype = dataEntity.getString("yem_accamtusetype");//配件资金使用方式 + String yem_billbusstype = dataEntity.getString("yem_billbusstype.number");//单据业务类型 + qFilter1.and(new QFilter("yem_accamtusetype", QCP.equals, yem_accamtusetype)); + qFilter1.and(new QFilter("yem_billbusstype.number", QCP.equals, yem_billbusstype)); + qFilter1.and(new QFilter("enable", QCP.equals, "1")); + String selectfield = DynamicObjectUtil.getSelectfields("yem_bd_credittypeconfig", false); + String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_bd_credittypeconfig", "yem_credittypeentry", false); + Map map = new HashMap<>(); + DynamicObjectCollection data = QueryServiceHelper.query("yem_bd_credittypeconfig", + selectfields, new QFilter[]{qFilter1}, null); + if (data.size() > 0) { + for (int i = 0; i < data.size(); i++) { + DynamicObject object1 = data.get(i); + long aLong = object1.getLong("yem_credittypeentry.yem_credittype"); + if (!map.containsKey(aLong)) { + map.put(aLong, object1.getBoolean("yem_credittypeentry.yem_isoverage")); + } + } + } + if (map.containsKey(debcredtype)) { + Boolean aBoolean = map.get(debcredtype); + if (!aBoolean) { + // 实际来源总金额 + BigDecimal sumtotalamount = object.getBigDecimal("yem_sumtotalamount"); + // 预计去向总金额 + BigDecimal sumtowardamt = object.getBigDecimal("yem_sumtowardamt"); + if (debcuseamt.compareTo(sumtotalamount.subtract(sumtowardamt)) > 0) { + sb.append(String.format("配件资金使用明细第 [ %s ] 行,贷记单使用金额 [ %s ] 超过其对应配件资金池 [ %s ] 分录第 [ %s ] 行,实际来源金额 [ %s ] - 预计去向金额 [ %s ] = [ %s ] !!\r\n", + index + 1, + debcuseamt.setScale(2, RoundingMode.HALF_UP), + single.getString("billno"), + subIdx + 1, + sumtotalamount.setScale(2, RoundingMode.HALF_UP), + sumtowardamt.setScale(2, RoundingMode.HALF_UP), + sumtotalamount.subtract(sumtowardamt).setScale(2, RoundingMode.HALF_UP) + )); + } + } else { + // 实际来源总金额 + BigDecimal sumtotalamount = object.getBigDecimal("yem_sumtotalamount"); + // 预计去向总金额 + BigDecimal sumtowardamt = object.getBigDecimal("yem_sumtowardamt"); + if (debcuseamt.compareTo(sumtotalamount.subtract(sumtowardamt)) < 0) { + sb.append(String.format("配件资金使用明细第 [ %s ] 行,贷记单使用金额 [ %s ] 超过其对应配件资金池 [ %s ] 分录第 [ %s ] 行,实际来源金额 [ %s ] - 预计去向金额 [ %s ] = [ %s ] !!\r\n", + index + 1, + debcuseamt.setScale(2, RoundingMode.HALF_UP), + single.getString("billno"), + subIdx + 1, + sumtotalamount.setScale(2, RoundingMode.HALF_UP), + sumtowardamt.setScale(2, RoundingMode.HALF_UP), + sumtotalamount.subtract(sumtowardamt).setScale(2, RoundingMode.HALF_UP) + )); + } + } } } } diff --git a/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java b/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java index 8577ad31..f9e5ad47 100644 --- a/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java +++ b/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java @@ -128,6 +128,31 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator { "未获取到满足条件的配件资金池,无法生成《转换贷记单》,请修改后重试"); } } + + DynamicObject getaccamtusetype = getaccamtusetype(dataEntity); + QFilter qFilter1 = new QFilter("yem_contracttype", QCP.equals, getaccamtusetype.getString("yem_billtype.number"));//合同类型 + qFilter1.and(new QFilter("yem_accamtusetype", QCP.equals, getaccamtusetype.getString("yem_fundusetype"))); + qFilter1.and(new QFilter("yem_billbusstype.number", QCP.equals, getaccamtusetype.getString("yem_billbusstype.number"))); + qFilter1.and(new QFilter("enable", QCP.equals, "1")); + String selectfield1 = DynamicObjectUtil.getSelectfields("yem_bd_credittypeconfig", false); + String selectfields1 = DynamicObjectUtil.getEntrySelectfields(selectfield1, "yem_bd_credittypeconfig", "yem_credittypeentry", false); + Map isoveragemap = new HashMap<>(); + DynamicObjectCollection data11 = QueryServiceHelper.query("yem_bd_credittypeconfig", + selectfields1, new QFilter[]{qFilter1}, null); + if (data11.size() > 0) { + for (int i = 0; i < data11.size(); i++) { + DynamicObject object1 = data11.get(i); + long aLong = object1.getLong("yem_credittypeentry.yem_credittype"); + if (!isoveragemap.containsKey(aLong)) { + isoveragemap.put(aLong, object1.getBoolean("yem_credittypeentry.yem_isoverage")); + } + } + } + Boolean isoverage = false; + long credittypeid = yem_credittype.getLong("id"); + if (isoveragemap.containsKey(credittypeid)) { + isoverage = true; + } //贷记单 if (yem_billtype.equals("yem_debcrednote_d")) { DynamicObjectCollection data = quespcapitalpool(dataEntity); @@ -150,20 +175,31 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator { BigDecimal yem_amount = dataEntity.getBigDecimal("yem_amount");//配件资金池增加金额 BigDecimal yem_amount_sub = dataEntity.getBigDecimal("yem_amount_sub");//配件资金池扣减金额 if (yem_currency.equals("CNY")) { - BigDecimal bigDecimal = BigDecimal.ZERO; if (map1.containsKey(currency)) { bigDecimal = map1.get(currency); } BigDecimal sumamount = yem_amount.add(bigDecimal); - if (sumamount.compareTo(yem_amount_sub) == -1) { - this.addErrorMessage(dataEntitie, "根据客户【" + customername + "】、" + - "产品类型【" + productsname + "】、借/贷类型【" + debcredtype + "】、" + - "借贷业务类型【" + yem_credittype.getString("name") + "】" + - "查询到【人民币】预计剩余金额【" + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + - "加上本次来源金额汇总【" + yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + - "小于去向汇总金额【" + yem_amount_sub.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + - ",请修改后重试"); + if (!isoverage) { + if (sumamount.compareTo(yem_amount_sub) == -1) { + this.addErrorMessage(dataEntitie, "根据客户【" + customername + "】、" + + "产品类型【" + productsname + "】、借/贷类型【" + debcredtype + "】、" + + "借贷业务类型【" + yem_credittype.getString("name") + "】" + + "查询到【人民币】预计剩余金额【" + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "加上本次来源金额汇总【" + yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "小于去向汇总金额【" + yem_amount_sub.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + ",请修改后重试"); + } + } else { + if (sumamount.compareTo(yem_amount_sub) == 1) { + this.addErrorMessage(dataEntitie, "根据客户【" + customername + "】、" + + "产品类型【" + productsname + "】、借/贷类型【" + debcredtype + "】、" + + "借贷业务类型【" + yem_credittype.getString("name") + "】" + + "查询到【人民币】预计剩余金额【" + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "加上本次来源金额汇总【" + yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "小于去向汇总金额【" + yem_amount_sub.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + ",请修改后重试"); + } } } if (yem_currency.equals("USD")) { @@ -172,14 +208,26 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator { bigDecimal = map1.get(currency); } BigDecimal sumamount = yem_amount.add(bigDecimal); - if (sumamount.compareTo(yem_amount_sub) == -1) { - this.addErrorMessage(dataEntitie, "根据客户【" + customername + "】、" + - "产品类型【" + productsname + "】、借/贷类型【" + debcredtype + "】、" + - "借贷业务类型【" + yem_credittype.getString("name") + "】" + - "查询到【美元】预计剩余金额【" + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + - "加上本次来源金额汇总【" + yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + - "小于去向汇总金额【" + yem_amount_sub.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + - ",请修改后重试"); + if (!isoverage) { + if (sumamount.compareTo(yem_amount_sub) == -1) { + this.addErrorMessage(dataEntitie, "根据客户【" + customername + "】、" + + "产品类型【" + productsname + "】、借/贷类型【" + debcredtype + "】、" + + "借贷业务类型【" + yem_credittype.getString("name") + "】" + + "查询到【美元】预计剩余金额【" + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "加上本次来源金额汇总【" + yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "小于去向汇总金额【" + yem_amount_sub.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + ",请修改后重试"); + } + } else { + if (sumamount.compareTo(yem_amount_sub) == 1) { + this.addErrorMessage(dataEntitie, "根据客户【" + customername + "】、" + + "产品类型【" + productsname + "】、借/贷类型【" + debcredtype + "】、" + + "借贷业务类型【" + yem_credittype.getString("name") + "】" + + "查询到【美元】预计剩余金额【" + bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "加上本次来源金额汇总【" + yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + "小于去向汇总金额【" + yem_amount_sub.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + ",请修改后重试"); + } } } } @@ -207,19 +255,19 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator { QFilter qFilter = new QFilter("id", QCP.in, list);// String selectfield = DynamicObjectUtil.getSelectfields("yem_debcrednote", false); String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_debcrednote", "yem_creditnotedes", false); - DynamicObjectCollection Object = QueryServiceHelper.query("yem_debcrednote", "id,"+selectfields, qFilter.toArray()); + DynamicObjectCollection Object = QueryServiceHelper.query("yem_debcrednote", "id," + selectfields, qFilter.toArray()); if (Object.size() > 0) { - for(DynamicObject dynamicObject:Object){ + for (DynamicObject dynamicObject : Object) { String billno = dynamicObject.getString("billno"); long id = dynamicObject.getLong("id"); - if(map.containsKey(id)){ + if (map.containsKey(id)) { BigDecimal yem_amount = dynamicObject.getBigDecimal("yem_amount");//配件资金池增加金额 BigDecimal yem_towardwriteamt = dynamicObject.getBigDecimal("yem_towardwriteamt");//预计核销金额 BigDecimal add = yem_towardwriteamt.add(map.get(id)); - if(yem_amount.subtract(add).compareTo(BigDecimal.ZERO) == -1){ - this.addErrorMessage(dataEntitie, "选择借记单【"+billno+"】,来源总金额为【"+yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP)+"】" + - ",已核销【"+yem_towardwriteamt.setScale(2, BigDecimal.ROUND_HALF_UP)+"】," + - "加上本次核销【"+map.get(id).setScale(2, BigDecimal.ROUND_HALF_UP)+"】,小于零,请修改后重试!l"); + if (yem_amount.subtract(add).compareTo(BigDecimal.ZERO) == -1) { + this.addErrorMessage(dataEntitie, "选择借记单【" + billno + "】,来源总金额为【" + yem_amount.setScale(2, BigDecimal.ROUND_HALF_UP) + "】" + + ",已核销【" + yem_towardwriteamt.setScale(2, BigDecimal.ROUND_HALF_UP) + "】," + + "加上本次核销【" + map.get(id).setScale(2, BigDecimal.ROUND_HALF_UP) + "】,小于零,请修改后重试!l"); } } @@ -228,6 +276,12 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator { } } + /** + * 获取配件资金池额度 + * + * @param dataEntity + * @return + */ public DynamicObjectCollection quespcapitalpool(DynamicObject dataEntity) { //组织 DynamicObject org = dataEntity.getDynamicObject("org"); @@ -265,4 +319,21 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator { DynamicObjectCollection data = QueryServiceHelper.query("yem_spcapitalpool", selectfields, new QFilter[]{qFilter}, "billno"); return data; } + + /** + * 获取合同配件资金使用方式 + * + * @param dataEntity + * @return + */ + public DynamicObject getaccamtusetype(DynamicObject dataEntity) { + DynamicObject value = null; + String yem_sourcebillno = dataEntity.getString("yem_sourcebillno"); + QFilter qFilter = new QFilter("billno", QCP.equals, yem_sourcebillno); + DynamicObject billType = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", "id,yem_fundusetype", qFilter.toArray()); + if (billType != null) { + value = BusinessDataServiceHelper.loadSingle(billType.getString("id"), "yem_es_salesorder"); + } + return value; + } } From a9e19605a41fb44670c3f7e7c8beea28ce56975a Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 9 Sep 2024 16:23:41 +0800 Subject: [PATCH 63/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D=EF=BC=8C?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index d721eaad..6dd1814f 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -42,7 +42,13 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { for (DynamicObject plm : collection) { String enablesta = plm.getString("yem_enablesta"); String invokstatus = plm.getString("yem_invokstatus"); - String parentno = plm.getString("yem_textfield"); + String exchangetype = plm.getString("yem_exchangetype"); + String parentno; + if ("D".equals(exchangetype)) {//新增 + parentno = plm.getString("yem_parent_now"); + } else { + parentno = plm.getString("yem_textfield"); + } DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", parentno);//父项编码 plm.set("yem_isassy", false); plm.set("yem_isresource", false); @@ -105,14 +111,23 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { for (DynamicObject entry : entries) { DynamicObject addNew = detail.addNew(); addNew.set("id", entry.getLong("id")); - addNew.set("yem_parentno", entry.getString("yem_textfield"));//父件编码 - addNew.set("yem_parentname", entry.getString("yem_name_parent"));//父项名称 + + String exchangetype = entry.getString("yem_exchangetype"); + + if (exchangetype.equals("D")) { + addNew.set("yem_parentno", entry.getString("yem_parent_now"));//父件编码 + addNew.set("yem_parentname", entry.getString("yem_name_newparent"));//父项名称 + } else { + addNew.set("yem_parentno", entry.getString("yem_textfield"));//父件编码 + addNew.set("yem_parentname", entry.getString("yem_name_parent"));//父项名称 + } + addNew.set("yem_subno", entry.getString("yem_child_before"));//子件编码 addNew.set("yem_subname", entry.getString("yem_name_child"));//子件名称 addNew.set("yem_subenname", "");//子件英文名称 addNew.set("yem_qty", entry.getBigDecimal("yem_qty_before"));//数量 addNew.set("yem_enablesta", entry.getString("yem_enablesta"));//启用停用状态 - addNew.set("yem_replace", entry.getString("yem_exchangetype"));//替换关系 + addNew.set("yem_replace", exchangetype);//替换关系 addNew.set("yem_enableparno", entry.getString("yem_parent_now"));//替换父件编码-父项编码 addNew.set("yem_enableparname", entry.getString("yem_name_newparent"));//替换父件名称-父项名称 addNew.set("yem_enablesubno", entry.getString("yem_child_now"));//替换子件编码-子项编码 From fc74f1b6901463221b2baa89be477dc6d00e284b Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Mon, 9 Sep 2024 17:58:30 +0800 Subject: [PATCH 64/76] =?UTF-8?q?wip:PLM=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index 16fbe202..dffb399c 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -62,7 +62,8 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { Date stoptime = plm.getDate("yem_stoptime"); if (YEM.isEmpty(stoptime)) { plm.set("yem_enablesta", bom_enablesta); - plm.set("yem_stoptime", new Date()); + Date downdate = bom.getDate("yem_downdate"); + plm.set("yem_stoptime", downdate); } else { logger.info("停用_已有时间,不更新,{},{}", plm_billno, plm_parent); } @@ -80,8 +81,9 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { logger.info("启用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", 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); Date starttime = plm.getDate("yem_starttime"); if (YEM.isEmpty(starttime)) { + Date enableddate = bom.getDate("yem_enableddate"); plm.set("yem_enablesta", bom_enablesta); - plm.set("yem_starttime", new Date()); + plm.set("yem_starttime", enableddate); } else { logger.info("启用_已有时间,不更新,{},{}", plm_billno, plm_parent); } From d553b4b1c6384560977cb1d5ad847f10d8050266 Mon Sep 17 00:00:00 2001 From: ljw Date: Mon, 9 Sep 2024 17:06:58 +0800 Subject: [PATCH 65/76] =?UTF-8?q?=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C?= =?UTF-8?q?=EF=BC=9A=E6=8F=90=E4=BA=A4=E6=95=88=E9=AA=8C=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E6=98=AF=E5=90=A6=E6=9C=89=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/salesorder/op/SalesOrderSubmitOp.java | 3 +++ .../NewSalesOrderSubmitAnnexValidator.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/main/java/com/yem/wm/es/salesorder/validator/NewSalesOrderSubmitAnnexValidator.java diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java index 721e40ce..757c1979 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SalesOrderSubmitOp.java @@ -6,6 +6,7 @@ package com.yem.wm.es.salesorder.op;/* */ import com.yem.wm.es.salesorder.utils.SalesOrderUtils; +import com.yem.wm.es.salesorder.validator.NewSalesOrderSubmitAnnexValidator; import com.yem.wm.es.salesorder.validator.NewSalesOrderSubmitValidator; import com.yem.wm.es.salesorder.validator.SalesOrderSubmitValidator; import kd.bos.dataentity.entity.DynamicObject; @@ -72,6 +73,7 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn { fieldKeys.add("yem_color"); fieldKeys.add("yem_marketraiseprice"); fieldKeys.add("yem_currency"); + fieldKeys.add("yem_attsum"); fieldKeys.add("yem_cnperson"); fieldKeys.add("yem_suminsured"); fieldKeys.add("yem_internationalrate"); @@ -85,6 +87,7 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn { super.onAddValidators(e); e.addValidator(new SalesOrderSubmitValidator()); e.addValidator(new NewSalesOrderSubmitValidator()); + e.addValidator(new NewSalesOrderSubmitAnnexValidator()); } @Override diff --git a/src/main/java/com/yem/wm/es/salesorder/validator/NewSalesOrderSubmitAnnexValidator.java b/src/main/java/com/yem/wm/es/salesorder/validator/NewSalesOrderSubmitAnnexValidator.java new file mode 100644 index 00000000..9ca5118c --- /dev/null +++ b/src/main/java/com/yem/wm/es/salesorder/validator/NewSalesOrderSubmitAnnexValidator.java @@ -0,0 +1,24 @@ +package com.yem.wm.es.salesorder.validator; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.validate.AbstractValidator; + +/** + * @author ljw + * @date 2024/9/9 16:57 + * @description NewSalesOrderSubmitAnnexValidator + */ +public class NewSalesOrderSubmitAnnexValidator extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] dataEntities = this.getDataEntities(); + for (ExtendedDataEntity dataEntitie : dataEntities) { + DynamicObject mechanical = dataEntitie.getDataEntity(); + String attachments = mechanical.getString("yem_attsum"); + if ("0".equals(attachments)){ + this.addErrorMessage(dataEntitie, "附件未上传或未保存!!!"); + } + } + } +} From e96e8dd38f7b7ae7766bd07db2ba16492f67ed5b Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 10 Sep 2024 09:21:21 +0800 Subject: [PATCH 66/76] update .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 627233e8..e15e54de 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,4 @@ *.idea/ out/ -!/src/main/java/kd/cosmic/ +src/main/java/kd/cosmic/ From d195e76bbf557523c0efb396c052de17b6a0c918 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 10 Sep 2024 09:54:15 +0800 Subject: [PATCH 67/76] =?UTF-8?q?fix:=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index 6dd1814f..a7968bcb 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -114,26 +114,31 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { String exchangetype = entry.getString("yem_exchangetype"); - if (exchangetype.equals("D")) { - addNew.set("yem_parentno", entry.getString("yem_parent_now"));//父件编码 - addNew.set("yem_parentname", entry.getString("yem_name_newparent"));//父项名称 - } else { - addNew.set("yem_parentno", entry.getString("yem_textfield"));//父件编码 - addNew.set("yem_parentname", entry.getString("yem_name_parent"));//父项名称 + if (exchangetype.equals("D")) {//新增PLM变更后对应BOM变更前 + addNew.set("yem_parentno", entry.getString("yem_parent_now"));//替换后-父件编码 + addNew.set("yem_parentname", entry.getString("yem_name_newparent"));//替换后-父项名称 + addNew.set("yem_subno", entry.getString("yem_child_now"));//替换后-子件编码 + addNew.set("yem_subname", entry.getString("yem_name_newchild"));//替换后-子件名称 + addNew.set("yem_subenname", "yem_englishname");//替换后-子件英文名称 + addNew.set("yem_qty", entry.getBigDecimal("yem_qty_new"));//替换后-数量 + } else {//否则变更前对应变更前 + addNew.set("yem_parentno", entry.getString("yem_textfield"));//替换前-父件编码 + addNew.set("yem_parentname", entry.getString("yem_name_parent"));//替换前-父项名称 + addNew.set("yem_subno", entry.getString("yem_child_before"));//替换前-子件编码 + addNew.set("yem_subname", entry.getString("yem_name_child"));//替换前-子件名称 + addNew.set("yem_subenname", "");//替换前-子件英文名称 + addNew.set("yem_qty", entry.getBigDecimal("yem_qty_before"));//替换前-数量 } - addNew.set("yem_subno", entry.getString("yem_child_before"));//子件编码 - addNew.set("yem_subname", entry.getString("yem_name_child"));//子件名称 - addNew.set("yem_subenname", "");//子件英文名称 - addNew.set("yem_qty", entry.getBigDecimal("yem_qty_before"));//数量 - addNew.set("yem_enablesta", entry.getString("yem_enablesta"));//启用停用状态 - addNew.set("yem_replace", exchangetype);//替换关系 addNew.set("yem_enableparno", entry.getString("yem_parent_now"));//替换父件编码-父项编码 addNew.set("yem_enableparname", entry.getString("yem_name_newparent"));//替换父件名称-父项名称 addNew.set("yem_enablesubno", entry.getString("yem_child_now"));//替换子件编码-子项编码 addNew.set("yem_enablesubname", entry.getString("yem_name_newchild"));//替换子件名称 addNew.set("yem_enablesubenname", entry.getString("yem_englishname"));//替换件英文名称-子件英文名称 addNew.set("yem_enablesubqty", entry.getBigDecimal("yem_qty_new"));//数量 + + addNew.set("yem_enablesta", entry.getString("yem_enablesta"));//启用停用状态 + addNew.set("yem_replace", exchangetype);//替换关系 addNew.set("yem_enableddate", entry.getDate("yem_starttime"));//启用时间 addNew.set("yem_downdate", entry.getDate("yem_stoptime"));//停用时间 addNew.set("yem_completetime", new Date());//执行时间 From 7bbd8ddc54ea083fd4534dee9c0d38303a0e7e92 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 10 Sep 2024 14:27:50 +0800 Subject: [PATCH 68/76] =?UTF-8?q?fix:=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 165 ++++++++++++------ .../task/MatchingPLMChangeUpdateTaskEdit.java | 68 +++++--- 2 files changed, 157 insertions(+), 76 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index a7968bcb..9a1b6edb 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -1,6 +1,7 @@ package com.yem.em.task; import com.yem.em.utils.AtlasUtils; +import com.yem.wm.utils.YEM; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; @@ -13,7 +14,7 @@ import org.slf4j.LoggerFactory; import java.util.*; -import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.queryPLMChange; +import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.*; import static com.yem.em.utils.AtlasUtils.seelctDyn; /** @@ -37,68 +38,122 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { for (DynamicObject plmObj : plms) { DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail"); - DynamicObjectCollection enabled = new DynamicObjectCollection(); - Set successMap = new HashSet<>(); + DynamicObjectCollection situation_replace = new DynamicObjectCollection(); + DynamicObjectCollection situation_add = new DynamicObjectCollection(); + DynamicObjectCollection situation_delete = new DynamicObjectCollection(); + for (DynamicObject plm : collection) { - String enablesta = plm.getString("yem_enablesta"); + String enablesta = plm.getString("yem_enablesta");//替换件停用启用状态 + String enablestatus_before = plm.getString("yem_enablestatus_before");//停用启用状态 String invokstatus = plm.getString("yem_invokstatus"); String exchangetype = plm.getString("yem_exchangetype"); - String parentno; - if ("D".equals(exchangetype)) {//新增 - parentno = plm.getString("yem_parent_now"); - } else { - parentno = plm.getString("yem_textfield"); - } - DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", parentno);//父项编码 - plm.set("yem_isassy", false); - plm.set("yem_isresource", false); - if (assatlasdet != null) { - plm.set("yem_isassy", true); - } - logger.info("是否总成:{},{}", parentno, assatlasdet != null); - DynamicObject basemodelib = seelctDyn("yem_bd_basemodelib", "number", parentno); - if (basemodelib != null) { - plm.set("yem_isresource", true); - } - logger.info("是否资源:{},{}", parentno, basemodelib != null); - if ("A".equals(enablesta) && !"B".equals(invokstatus) ) {//"替换件启用停用状态 = 启用" && 执行状态 != 已完成 - enabled.add(plm); - } - } - DynamicObject bomChange = createBOMChange(plmObj, enabled); - DynamicObjectCollection entry = bomChange.getDynamicObjectCollection("yem_entryentity"); - if (!entry.isEmpty()) { - DynamicObject replace = null; - String billno = plmObj.getString("billno"); - String gybg_no = plmObj.getString("yem_gybg_no"); - if (entry.size() == 1) { - logger.info("生成替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, enabled.get(0).getString("yem_textfield")); - replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add", "PLM"); - successMap.add(entry.get(0).getLong("id")); - } - for (DynamicObject entryObject : entry) { - int idx = entry.indexOf(entryObject); - if (idx == 0) continue; - logger.info("更新替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, entryObject.getString("yem_textfield")); - replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update", "PLM"); - successMap.add(entryObject.getLong("id")); - } - } - for (Long s : successMap) { - for (DynamicObject d : collection) { - long id = d.getLong("id"); - if (s == id) { - d.set("yem_invokstatus", "B"); - d.set("yem_invoktime", new Date()); - } + //【替换关系】=【相互替换】【新替换旧】【互不替换】 && 【启用停用状态】=‘停用’ && 【替换件启用停用状态】=‘启用’ && 执行状态 != 已完成 + if ("A-B-C".contains(exchangetype) && "A".equals(enablesta) && "B".equals(enablestatus_before) && !"B".equals(invokstatus)) { + situation_replace.add(plm); + } + + // 【替换关系】=【新增】 && 【替换件启用停用状态】=‘启用’ + if ("D".equals(exchangetype) && "A".equals(enablesta) && !"B".equals(invokstatus)) { + situation_add.add(plm); + } + // 【替换关系】=【删除】 && 分录【启用停用状态】=‘停用’ + if ("E".equals(exchangetype) && "B".equals(enablestatus_before) && !"B".equals(invokstatus)) { + situation_delete.add(plm); } } - - SaveServiceHelper.save(new DynamicObject[]{plmObj}); + generateReplaceRelation(plmObj, situation_replace); + generateReplaceRelation(plmObj, situation_add); + generateReplaceRelation(plmObj, situation_delete); } } + /** + * 生成替换关系,更新完成时间、状态 + * + * @param plmObj + * @param enabled + */ + private void generateReplaceRelation(DynamicObject plmObj, DynamicObjectCollection enabled) { + DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail"); + // 更新是否资源、是否总成 + for (DynamicObject plm : collection) { + + String exchangetype = plm.getString("yem_exchangetype"); + String parentno; + if ("D".equals(exchangetype)) {//新增 + parentno = plm.getString("yem_parent_now"); + } else { + parentno = plm.getString("yem_textfield"); + } + DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", parentno);//父项编码 + plm.set("yem_isassy", false); + plm.set("yem_isresource", false); + if (assatlasdet != null) { + plm.set("yem_isassy", true); + } + logger.info("是否总成:{},{}", parentno, assatlasdet != null); + DynamicObject basemodelib = seelctDyn("yem_bd_basemodelib", "number", parentno); + if (basemodelib != null) { + plm.set("yem_isresource", true); + } + logger.info("是否资源:{},{}", parentno, basemodelib != null); + } + // 替换关系生成成功之后更新完成时间、状态 + Map successMap = new HashMap<>(); + DynamicObject bomChange = createBOMChange(plmObj, enabled); + DynamicObjectCollection entry = bomChange.getDynamicObjectCollection("yem_entryentity"); + if (!entry.isEmpty()) { + DynamicObject replace = null; + String billno = plmObj.getString("billno"); + String gybg_no = plmObj.getString("yem_gybg_no"); + if (entry.size() == 1) { + logger.info("生成替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, enabled.get(0).getString("yem_textfield")); + logger.info("生成_当前替换关系:{}", entry.get(0).getString("yem_replace")); + replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add", "PLM"); + successMap.put(entry.get(0).getLong("id"), bomChange); + } + for (DynamicObject entryObject : entry) { + int idx = entry.indexOf(entryObject); + if (idx == 0) continue; + logger.info("更新替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, entryObject.getString("yem_textfield")); + logger.info("更新_替换关系:{}", entryObject.getString("yem_replace")); + replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update", "PLM"); + successMap.put(entryObject.getLong("id"), bomChange); + } + } + + for (Map.Entry mapEntry : successMap.entrySet()) { + Long bomChangeEntryId = mapEntry.getKey(); + DynamicObject bomChangeObj = mapEntry.getValue(); + DynamicObjectCollection bomChangeEntry = bomChangeObj.getDynamicObjectCollection("yem_entryentity"); + int idx = 0; + for (DynamicObject bom : bomChangeEntry) { + if (bomChangeEntryId == bom.getLong("id")) { + idx = bomChangeEntry.indexOf(bom); + } + } + DynamicObject currentEntry = bomChangeEntry.get(idx); + Date completetime = currentEntry.getDate("yem_completetime");//完成时间 + for (DynamicObject d : collection) { + long id = d.getLong("id"); + if (bomChangeEntryId == id) { + d.set("yem_invokstatus", "B"); + d.set("yem_invoktime", completetime); + } + } + } + + SaveServiceHelper.save(new DynamicObject[]{plmObj}); + } + + /** + * 根据PLM创建BOM,用于生成替换关系 + * + * @param head + * @param entries + * @return + */ private DynamicObject createBOMChange(DynamicObject head, DynamicObjectCollection entries) { DynamicObject bomchange = BusinessDataServiceHelper.newDynamicObject("yem_em_bomchange"); bomchange.set("id", head.getLong("id")); @@ -141,7 +196,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { addNew.set("yem_replace", exchangetype);//替换关系 addNew.set("yem_enableddate", entry.getDate("yem_starttime"));//启用时间 addNew.set("yem_downdate", entry.getDate("yem_stoptime"));//停用时间 - addNew.set("yem_completetime", new Date());//执行时间 + addNew.set("yem_completetime", entry.getDate("bom_completetime"));//执行时间 addNew.set("yem_remark", "");//备注 addNew.set("yem_isass", entry.getBoolean("yem_isassy"));//是否总成 addNew.set("yem_isresource", entry.getBoolean("yem_isresource"));//是否资源 diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index dffb399c..f1b972eb 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -46,44 +46,31 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号 for (DynamicObject plm : plm_entry) { String plm_parent = plm.getString("yem_textfield");//总成编码 - String plm_child = plm.getString("yem_child_before");//子项零件编码 - BigDecimal plm_qty = plm.getBigDecimal("yem_qty_before");//子件数量 for (DynamicObject bomObj : boms) { DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); for (DynamicObject bom : bom_entry) { - String bom_billno = bom.getString("yem_changeno");//更改单号 - String bom_parent = bom.getString("yem_parentno");//父件编码 - String bom_child = bom.getString("yem_subno");//子项零件编码 - BigDecimal bom_qty = bom.getBigDecimal("yem_qty");//数量 String bom_enablesta = bom.getString("yem_enablesta");//启用停用状态 - logger.info("停用_compare: {} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_child, bom_enablesta); - if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty) && "B".equals(bom_enablesta)) { - logger.info("停用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_qty); + Date bom_completetime = bom.getDate("yem_completetime"); + Boolean plmMatchBom = isPlmMatchBom(plmObj, bom, plm); + if (plmMatchBom != null && !plmMatchBom) { Date stoptime = plm.getDate("yem_stoptime"); if (YEM.isEmpty(stoptime)) { - plm.set("yem_enablesta", bom_enablesta); + plm.set("yem_enablestatus_before", bom_enablesta); Date downdate = bom.getDate("yem_downdate"); plm.set("yem_stoptime", downdate); + plm.set("yem_completetime", bom_completetime); } else { logger.info("停用_已有时间,不更新,{},{}", plm_billno, plm_parent); } } - String plm_after_parent_now = plm.getString("yem_parent_now");//父项编码 - String plm_after_child_now = plm.getString("yem_child_now");//子项编码 - BigDecimal plm_after_qty = plm.getBigDecimal("yem_qty_new"); - - String bom_before_parent_no = bom.getString("yem_parentno");//总成编码 - 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_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) && eq(plm_after_qty, bom_before_qty) && "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, plm_after_qty, bom_before_qty); + if (plmMatchBom != null && plmMatchBom) { Date starttime = plm.getDate("yem_starttime"); if (YEM.isEmpty(starttime)) { Date enableddate = bom.getDate("yem_enableddate"); plm.set("yem_enablesta", bom_enablesta); plm.set("yem_starttime", enableddate); + plm.set("yem_completetime", bom_completetime); } else { logger.info("启用_已有时间,不更新,{},{}", plm_billno, plm_parent); } @@ -96,7 +83,46 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { SaveServiceHelper.save(plms); } - private boolean eq(Object str1, Object str2) { + /** + * PLM匹配BOM, + * @param plmObj + * @param bom + * @param plm + * @return 匹配到停用返回false,启用返回true,未匹配到返回null + */ + public static Boolean 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");//父件编码 + String bom_child = bom.getString("yem_subno");//子项零件编码 + BigDecimal bom_qty = bom.getBigDecimal("yem_qty");//数量 + String bom_enablesta = bom.getString("yem_enablesta");//启用停用状态 + String plm_parent = plm.getString("yem_textfield");//总成编码 + String plm_child = plm.getString("yem_child_before");//子项零件编码 + BigDecimal plm_qty = plm.getBigDecimal("yem_qty_before");//子件数量 + String plm_after_parent_now = plm.getString("yem_parent_now");//父项编码 + String plm_after_child_now = plm.getString("yem_child_now");//子项编码 + BigDecimal plm_after_qty = plm.getBigDecimal("yem_qty_new"); + + String bom_before_parent_no = bom.getString("yem_parentno");//总成编码 + 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, plm_qty, bom_child, bom_enablesta); + if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && eq(plm_qty, bom_qty) && "B".equals(bom_enablesta)) { + logger.info("停用_PLM匹配到BOM,{} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, plm_qty, bom_qty); + return false; + } + + 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) && eq(plm_after_qty, bom_before_qty) && "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, plm_after_qty, bom_before_qty); + return true; + } + + return null; + } + + public static boolean eq(Object str1, Object str2) { if (str1 instanceof String && str2 instanceof String) { return str1.equals(str2); } From e8d228de8e5d3db9b2ccd9367358db323f71dee0 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 10 Sep 2024 14:36:51 +0800 Subject: [PATCH 69/76] =?UTF-8?q?fix:=E8=B4=B7=E8=AE=B0=E5=8D=95=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 6db339b94f12d43af9b6f3e8b8a77ae552de84d1) --- .../validator/DebCredNewAuditValidatorOp.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java b/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java index f9e5ad47..807ed6a9 100644 --- a/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java +++ b/src/main/java/com/yem/wm/im/debcrednotenew/validator/DebCredNewAuditValidatorOp.java @@ -130,16 +130,20 @@ public class DebCredNewAuditValidatorOp extends AbstractValidator { } DynamicObject getaccamtusetype = getaccamtusetype(dataEntity); - QFilter qFilter1 = new QFilter("yem_contracttype", QCP.equals, getaccamtusetype.getString("yem_billtype.number"));//合同类型 - qFilter1.and(new QFilter("yem_accamtusetype", QCP.equals, getaccamtusetype.getString("yem_fundusetype"))); - qFilter1.and(new QFilter("yem_billbusstype.number", QCP.equals, getaccamtusetype.getString("yem_billbusstype.number"))); - qFilter1.and(new QFilter("enable", QCP.equals, "1")); - String selectfield1 = DynamicObjectUtil.getSelectfields("yem_bd_credittypeconfig", false); - String selectfields1 = DynamicObjectUtil.getEntrySelectfields(selectfield1, "yem_bd_credittypeconfig", "yem_credittypeentry", false); Map isoveragemap = new HashMap<>(); - DynamicObjectCollection data11 = QueryServiceHelper.query("yem_bd_credittypeconfig", - selectfields1, new QFilter[]{qFilter1}, null); - if (data11.size() > 0) { + DynamicObjectCollection data11 = null; + if (YEM.isNotEmpty(getaccamtusetype)) { + QFilter qFilter1 = new QFilter("yem_contracttype", QCP.equals, getaccamtusetype.getString("yem_billtype.number"));//合同类型 + qFilter1.and(new QFilter("yem_accamtusetype", QCP.equals, getaccamtusetype.getString("yem_fundusetype"))); + qFilter1.and(new QFilter("yem_billbusstype.number", QCP.equals, getaccamtusetype.getString("yem_billbusstype.number"))); + qFilter1.and(new QFilter("enable", QCP.equals, "1")); + String selectfield1 = DynamicObjectUtil.getSelectfields("yem_bd_credittypeconfig", false); + String selectfields1 = DynamicObjectUtil.getEntrySelectfields(selectfield1, "yem_bd_credittypeconfig", "yem_credittypeentry", false); + data11 = QueryServiceHelper.query("yem_bd_credittypeconfig", + selectfields1, new QFilter[]{qFilter1}, null); + } + + if (YEM.isNotEmpty(data11)) { for (int i = 0; i < data11.size(); i++) { DynamicObject object1 = data11.get(i); long aLong = object1.getLong("yem_credittypeentry.yem_credittype"); From 3eb9de8d7b89c6a0296f0f2a6b1ce0efff940b96 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 10 Sep 2024 15:38:40 +0800 Subject: [PATCH 70/76] =?UTF-8?q?fix:=E7=94=9F=E6=88=90=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GenerateReplaceRelationshipTaskEdit.java | 2 +- .../task/MatchingPLMChangeUpdateTaskEdit.java | 55 ++++++++++++++++--- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index 9a1b6edb..08c18089 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -196,7 +196,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { addNew.set("yem_replace", exchangetype);//替换关系 addNew.set("yem_enableddate", entry.getDate("yem_starttime"));//启用时间 addNew.set("yem_downdate", entry.getDate("yem_stoptime"));//停用时间 - addNew.set("yem_completetime", entry.getDate("bom_completetime"));//执行时间 + addNew.set("yem_completetime", entry.getDate("yem_completetime"));//执行时间 addNew.set("yem_remark", "");//备注 addNew.set("yem_isass", entry.getBoolean("yem_isassy"));//是否总成 addNew.set("yem_isresource", entry.getBoolean("yem_isresource"));//是否资源 diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index f1b972eb..6241f19d 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -41,14 +41,14 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { DynamicObject[] plms = queryPLMChange(); DynamicObject[] boms = queryBOMChange(); - for (DynamicObject plmObj : plms) { - DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); - String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号 - for (DynamicObject plm : plm_entry) { - String plm_parent = plm.getString("yem_textfield");//总成编码 - for (DynamicObject bomObj : boms) { - DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); - for (DynamicObject bom : bom_entry) { + for (DynamicObject bomObj : boms) { + DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); + for (DynamicObject bom : bom_entry) { + for (DynamicObject plmObj : plms) { + DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); + for (DynamicObject plm : plm_entry) { + String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号 + String plm_parent = plm.getString("yem_textfield");//总成编码 String bom_enablesta = bom.getString("yem_enablesta");//启用停用状态 Date bom_completetime = bom.getDate("yem_completetime"); Boolean plmMatchBom = isPlmMatchBom(plmObj, bom, plm); @@ -79,6 +79,45 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { } } } +// +// for (DynamicObject plmObj : plms) { +// DynamicObjectCollection plm_entry = plmObj.getDynamicObjectCollection("yem_change_detail"); +// String plm_billno = plmObj.getString("yem_gybg_no");//PLM工艺变更单号 +// for (DynamicObject plm : plm_entry) { +// String plm_parent = plm.getString("yem_textfield");//总成编码 +// for (DynamicObject bomObj : boms) { +// DynamicObjectCollection bom_entry = bomObj.getDynamicObjectCollection("yem_entryentity"); +// for (DynamicObject bom : bom_entry) { +// String bom_enablesta = bom.getString("yem_enablesta");//启用停用状态 +// Date bom_completetime = bom.getDate("yem_completetime"); +// Boolean plmMatchBom = isPlmMatchBom(plmObj, bom, plm); +// if (plmMatchBom != null && !plmMatchBom) { +// Date stoptime = plm.getDate("yem_stoptime"); +// if (YEM.isEmpty(stoptime)) { +// plm.set("yem_enablestatus_before", bom_enablesta); +// Date downdate = bom.getDate("yem_downdate"); +// plm.set("yem_stoptime", downdate); +// plm.set("yem_completetime", bom_completetime); +// } else { +// logger.info("停用_已有时间,不更新,{},{}", plm_billno, plm_parent); +// } +// } +// +// if (plmMatchBom != null && plmMatchBom) { +// Date starttime = plm.getDate("yem_starttime"); +// if (YEM.isEmpty(starttime)) { +// Date enableddate = bom.getDate("yem_enableddate"); +// plm.set("yem_enablesta", bom_enablesta); +// plm.set("yem_starttime", enableddate); +// plm.set("yem_completetime", bom_completetime); +// } else { +// logger.info("启用_已有时间,不更新,{},{}", plm_billno, plm_parent); +// } +// } +// } +// } +// } +// } SaveServiceHelper.save(plms); } From ad42a15754266cc97302f4b45bc714ba75018423 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 10 Sep 2024 19:00:19 +0800 Subject: [PATCH 71/76] =?UTF-8?q?change:=E6=8A=98=E6=89=A3=E7=8E=87?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/salesorder/from/SalesOrderPJEdit.java | 3 ++ .../es/salesorder/from/SalesOrderZJEdit.java | 4 ++- .../wm/im/clientdemand/utils/ClientUtils.java | 31 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java index fba932e7..2039a4d8 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java @@ -300,6 +300,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo ClientUtils.totalSaFobAmount(model, "yem_es_materialinfo", "yem_ifgift", "yem_safobamount", "yem_amount");//销售fob金额 汇总表头 fob金额 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 + ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 break; case "yem_onecarsum"://单车总费用 ClientUtils.countFrontDisPrice(model, rowIndex);//折扣前单价 @@ -321,6 +322,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 ClientUtils.countPoolAmt(view, model, "yem_es_materialinfo");//汇总折扣金额使用金额 ClientUtils.addSaAmountTk(model, rowIndex);//销售金额(价格条款)结算币别 + ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 break; case "yem_fundusetype"://资金使用类型 model.setValue("yem_fundpoolamt", BigDecimal.ZERO); @@ -355,6 +357,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo case "yem_accamtusetype"://配件资金使用方式 ClientUtils.delValue(model, "yem_es_materialinfo"); // ClientUtils.countDisAmt(model,"yem_es_materialinfo",rowIndex);//计算折扣金额 + ClientUtils.calculateDiscountRate(model, -1);//计算折扣率 break; case "yem_fundpoolamt"://使用额度 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java index 8f38ae7f..fafdd3be 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java @@ -331,7 +331,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo // ClientUtils.countSaPricePriceClause(model, rowIndex);//计算销售单价(价格条款) ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 - + ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 break; case "yem_sastandardprice":// ClientUtils.countFobAmtSaleRMB(model, rowIndex);//销售FOB标配青岛单价(本位币) @@ -446,6 +446,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo break; case "yem_accamtusetype"://配件资金使用方式 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 + ClientUtils.calculateDiscountRate(model, -1);//计算折扣率 break; case "yem_fundpoolamt"://使用额度 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 @@ -463,6 +464,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo ClientUtils.countFrontDisAmt(model, rowIndex);//折扣前金额 ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 ClientUtils.addSaAmountTk(model, rowIndex);//销售金额(价格条款)结算币别 + ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 break; case "yem_giveproactype": summarizeModules(rowIndex); diff --git a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java index 431c1674..df77d9c0 100644 --- a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java +++ b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java @@ -1589,6 +1589,7 @@ public class ClientUtils { view.updateView("yem_disamt", i); } ClientUtils.countAfterFrontAmt(model, i);//计算折扣后销售金额 + ClientUtils.calculateDiscountRate(model, -1); } } @@ -1756,6 +1757,36 @@ public class ClientUtils { } } } + + public static void calculateDiscountRate(IDataModel model, int idx) { + String accamtusetype = (String) model.getValue("yem_accamtusetype"); + if ("A".equals(accamtusetype)) { + if (idx != -1) { + doCalculateDiscountRate(model, idx); + } else { + int rowCount = model.getEntryRowCount("yem_es_materialinfo"); + for (int i = 0; i < rowCount; i++) { + doCalculateDiscountRate(model, i); + } + } + } + } + + /** + * 计算折扣率 + * @param model + * @param idx + */ + private static void doCalculateDiscountRate(IDataModel model, int idx) { + //yem_frontrateentry = ( yem_safobamount - yem_disamt ) / yem_safobamount * 100 + //折扣率% = ( 销售FOB金额 - 折扣金额 ) / 销售FOB金额 * 100 + + BigDecimal safobamount = (BigDecimal) model.getValue("yem_safobamount", idx); + BigDecimal disamt = (BigDecimal) model.getValue("yem_disamt", idx); + + BigDecimal div = BigDecimalUtils.div(safobamount.subtract(disamt), safobamount, 12).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + model.setValue("yem_frontrateentry", div, idx); + } } From bf656fa44eebf4f540d06ce200d71fae1a491776 Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Tue, 10 Sep 2024 19:00:49 +0800 Subject: [PATCH 72/76] =?UTF-8?q?fix:=E5=BA=93=E5=8C=BA=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 618fc6c0040baeae974071d771662a98568d0c13) --- .../yem/wm/task/SynWhLocationCMMPTask.java | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/yem/wm/task/SynWhLocationCMMPTask.java b/src/main/java/com/yem/wm/task/SynWhLocationCMMPTask.java index 20e6e4db..5d5452fd 100644 --- a/src/main/java/com/yem/wm/task/SynWhLocationCMMPTask.java +++ b/src/main/java/com/yem/wm/task/SynWhLocationCMMPTask.java @@ -20,6 +20,9 @@ import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Date; @@ -31,6 +34,9 @@ import java.util.Map; */ public class SynWhLocationCMMPTask extends AbstractTask { + + private final static Logger log = LoggerFactory.getLogger(SynWhLocationCMMPTask.class); + @Override public void execute(RequestContext requestContext, Map map) throws KDException { //查询CMMP链接 @@ -54,24 +60,39 @@ public class SynWhLocationCMMPTask extends AbstractTask { //先查询是否存在 ArrayList qFilters = new ArrayList<>(); qFilters.add(new QFilter("number", QCP.equals, map1.get("position_code"))); - qFilters.add(new QFilter("group.number", QCP.equals, map1.get("position_code"))); - qFilters.add(new QFilter("group.yem_belong", QCP.equals, connObj.getString("yem_belong"))); +// qFilters.add(new QFilter("group.number", QCP.equals, map1.get("area_code"))); +// qFilters.add(new QFilter("group.yem_belong", QCP.equals, connObj.getString("yem_belong"))); qFilters.add(new QFilter("yem_belong", QCP.equals, connObj.getString("yem_belong"))); - DynamicObjectCollection whs = QueryServiceHelper.query("yem_whlocation", "id", qFilters.toArray(new QFilter[0])); - if (whs.size() > 0) { - //如果存在 - DynamicObject wh = BusinessDataServiceHelper.loadSingle(whs.get(0).getString("id"), "yem_whlocation"); - createWL(map1, wh, connObj); - OperationServiceHelper.executeOperate("save", "yem_whlocation", new DynamicObject[]{wh}, OperateOption.create()); + DynamicObject[] whs = BusinessDataServiceHelper.load("yem_whlocation", "id, number, group.number, group.yem_belong", qFilters.toArray(new QFilter[0])); + if (whs.length > 0) { + for (DynamicObject wh : whs) { + DynamicObject group = wh.getDynamicObject("group"); + group = BusinessDataServiceHelper.loadSingle(group.getPkValue(), group.getDataEntityType().getName()); + if (group != null) { + String group_number = group.getString("number"); + String group_belong = group.getString("yem_belong"); + if (group_number.equals(map1.get("area_code")) && group_belong.equals(connObj.getString("yem_belong"))) { + log.info("已存在库区数据,执行更新:{} {}", map1.get("position_code"), map1.get("position_name")); + //如果存在 + wh = BusinessDataServiceHelper.loadSingle(wh.getString("id"), "yem_whlocation"); + createWL(map1, wh, connObj); + OperationResult operate = OperationServiceHelper.executeOperate("save", "yem_whlocation", new DynamicObject[]{wh}, OperateOption.create()); + String message = operate.getMessage(); + log.info(message); + } + } + } } else { MainEntityType entityType = EntityMetadataCache.getDataEntityType("yem_whlocation"); DynamicObject wh = new DynamicObject(entityType); wh.getDataEntityType().getPrimaryKey().setValueFast(wh, ID.genLongId()); + log.info("新建库区数据:{} {}", map1.get("position_code"), map1.get("position_name")); createWL(map1, wh, connObj); if (wh.get("group") == null) { continue; } OperationResult operationResult = OperationServiceHelper.executeOperate("save", "yem_whlocation", new DynamicObject[]{wh}, OperateOption.create()); + log.info(operationResult.getMessage()); if (!operationResult.isSuccess()) { for (IOperateInfo errInfo1 : operationResult.getAllErrorOrValidateInfo()) { String detailMessage1 = errInfo1.getMessage(); From 70fefff998036be0a74d4f4c8d4dca8be089071f Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Wed, 11 Sep 2024 09:33:35 +0800 Subject: [PATCH 73/76] =?UTF-8?q?fix:=E6=8A=98=E6=89=A3=E7=8E=87=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 9b0ddf97e2c9c05290cd440042d0e98988e3b2bb) --- src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java index df77d9c0..52929f4f 100644 --- a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java +++ b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java @@ -1589,8 +1589,8 @@ public class ClientUtils { view.updateView("yem_disamt", i); } ClientUtils.countAfterFrontAmt(model, i);//计算折扣后销售金额 - ClientUtils.calculateDiscountRate(model, -1); } + ClientUtils.calculateDiscountRate(model, -1); } } From fecad339e3b59f2fd9797df414ba83e0db704f8c Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Wed, 11 Sep 2024 10:30:18 +0800 Subject: [PATCH 74/76] =?UTF-8?q?fix:=E6=8A=98=E6=89=A3=E7=8E=87=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 13c3d63ac27282b686bdf495aee7cf43c357e5ee) --- .../wm/es/salesorder/from/SalesOrderPJEdit.java | 6 +++--- .../wm/es/salesorder/from/SalesOrderZJEdit.java | 6 +++--- .../yem/wm/im/clientdemand/utils/ClientUtils.java | 15 ++++++++++----- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java index 2039a4d8..c245ee87 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java @@ -300,7 +300,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo ClientUtils.totalSaFobAmount(model, "yem_es_materialinfo", "yem_ifgift", "yem_safobamount", "yem_amount");//销售fob金额 汇总表头 fob金额 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 - ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 + ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率 break; case "yem_onecarsum"://单车总费用 ClientUtils.countFrontDisPrice(model, rowIndex);//折扣前单价 @@ -322,7 +322,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 ClientUtils.countPoolAmt(view, model, "yem_es_materialinfo");//汇总折扣金额使用金额 ClientUtils.addSaAmountTk(model, rowIndex);//销售金额(价格条款)结算币别 - ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 + ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率 break; case "yem_fundusetype"://资金使用类型 model.setValue("yem_fundpoolamt", BigDecimal.ZERO); @@ -357,7 +357,7 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo case "yem_accamtusetype"://配件资金使用方式 ClientUtils.delValue(model, "yem_es_materialinfo"); // ClientUtils.countDisAmt(model,"yem_es_materialinfo",rowIndex);//计算折扣金额 - ClientUtils.calculateDiscountRate(model, -1);//计算折扣率 + ClientUtils.calculateDiscountRate(view, model, -1);//计算折扣率 break; case "yem_fundpoolamt"://使用额度 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java index fafdd3be..a89d0067 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderZJEdit.java @@ -331,7 +331,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo // ClientUtils.countSaPricePriceClause(model, rowIndex);//计算销售单价(价格条款) ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 - ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 + ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率 break; case "yem_sastandardprice":// ClientUtils.countFobAmtSaleRMB(model, rowIndex);//销售FOB标配青岛单价(本位币) @@ -446,7 +446,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo break; case "yem_accamtusetype"://配件资金使用方式 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 - ClientUtils.calculateDiscountRate(model, -1);//计算折扣率 + ClientUtils.calculateDiscountRate(view, model, -1);//计算折扣率 break; case "yem_fundpoolamt"://使用额度 ClientUtils.countDisAmt(model, "yem_es_materialinfo", rowIndex, view);//计算折扣金额 @@ -464,7 +464,7 @@ public class SalesOrderZJEdit extends AbstractBillPlugIn implements Plugin, Befo ClientUtils.countFrontDisAmt(model, rowIndex);//折扣前金额 ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 ClientUtils.addSaAmountTk(model, rowIndex);//销售金额(价格条款)结算币别 - ClientUtils.calculateDiscountRate(model, rowIndex);//计算折扣率 + ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率 break; case "yem_giveproactype": summarizeModules(rowIndex); diff --git a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java index 52929f4f..28a3973a 100644 --- a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java +++ b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java @@ -1590,7 +1590,7 @@ public class ClientUtils { } ClientUtils.countAfterFrontAmt(model, i);//计算折扣后销售金额 } - ClientUtils.calculateDiscountRate(model, -1); + ClientUtils.calculateDiscountRate(view, model, -1); } } @@ -1758,15 +1758,15 @@ public class ClientUtils { } } - public static void calculateDiscountRate(IDataModel model, int idx) { + public static void calculateDiscountRate(IFormView view, IDataModel model, int idx) { String accamtusetype = (String) model.getValue("yem_accamtusetype"); if ("A".equals(accamtusetype)) { if (idx != -1) { - doCalculateDiscountRate(model, idx); + doCalculateDiscountRate(view, model, idx); } else { int rowCount = model.getEntryRowCount("yem_es_materialinfo"); for (int i = 0; i < rowCount; i++) { - doCalculateDiscountRate(model, i); + doCalculateDiscountRate(view, model, i); } } } @@ -1774,10 +1774,12 @@ public class ClientUtils { /** * 计算折扣率 + * + * @param view * @param model * @param idx */ - private static void doCalculateDiscountRate(IDataModel model, int idx) { + private static void doCalculateDiscountRate(IFormView view, IDataModel model, int idx) { //yem_frontrateentry = ( yem_safobamount - yem_disamt ) / yem_safobamount * 100 //折扣率% = ( 销售FOB金额 - 折扣金额 ) / 销售FOB金额 * 100 @@ -1785,7 +1787,10 @@ public class ClientUtils { BigDecimal disamt = (BigDecimal) model.getValue("yem_disamt", idx); BigDecimal div = BigDecimalUtils.div(safobamount.subtract(disamt), safobamount, 12).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); + model.beginInit(); model.setValue("yem_frontrateentry", div, idx); + model.endInit(); + view.updateView("yem_frontrateentry", idx); } } From 9817b240bf85f193820977d433d49a2b2ddcd34f Mon Sep 17 00:00:00 2001 From: "zzs01@yunemao.com" Date: Wed, 11 Sep 2024 14:39:10 +0800 Subject: [PATCH 75/76] =?UTF-8?q?fix:=E6=8A=98=E6=89=A3=E7=8E=87=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=EF=BC=88=E4=BB=B7=E6=A0=BC=E6=9D=A1=E6=AC=BE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit e039cda4b44bd3e4e643e38f240ee5f0108cf5b7) --- .../java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java | 4 ++-- .../java/com/yem/wm/im/clientdemand/utils/ClientUtils.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java index c245ee87..5bad9f13 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderPJEdit.java @@ -320,9 +320,9 @@ public class SalesOrderPJEdit extends AbstractBillPlugIn implements Plugin, Befo case "yem_disamt"://折扣金额 ClientUtils.countFrontDisAmt(model, rowIndex);//折扣前金额 ClientUtils.countAfterFrontAmt(model, rowIndex);//计算折扣后销售金额 - ClientUtils.countPoolAmt(view, model, "yem_es_materialinfo");//汇总折扣金额使用金额 - ClientUtils.addSaAmountTk(model, rowIndex);//销售金额(价格条款)结算币别 ClientUtils.calculateDiscountRate(view, model, rowIndex);//计算折扣率 + ClientUtils.addSaAmountTk(model, rowIndex);//销售金额(价格条款)结算币别 + ClientUtils.countPoolAmt(view, model, "yem_es_materialinfo");//汇总折扣金额使用金额 break; case "yem_fundusetype"://资金使用类型 model.setValue("yem_fundpoolamt", BigDecimal.ZERO); diff --git a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java index 28a3973a..972fb96f 100644 --- a/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java +++ b/src/main/java/com/yem/wm/im/clientdemand/utils/ClientUtils.java @@ -1589,6 +1589,7 @@ public class ClientUtils { view.updateView("yem_disamt", i); } ClientUtils.countAfterFrontAmt(model, i);//计算折扣后销售金额 + ClientUtils.addSaAmountTk(model, i);//销售金额(价格条款)结算币别 } ClientUtils.calculateDiscountRate(view, model, -1); } From 23ef73e3acd3f9faa5dc651afe446144b8d35cdf Mon Sep 17 00:00:00 2001 From: ljw Date: Tue, 10 Sep 2024 17:46:51 +0800 Subject: [PATCH 76/76] =?UTF-8?q?=E5=A4=96=E9=94=80=E5=90=88=E5=90=8C?= =?UTF-8?q?=EF=BC=9A=E6=96=B0=E5=A2=9E=E5=8D=95=E6=8D=AE=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yem/wm/bc/bill/from/yemBillPlugInEsBaseFrom.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yem/wm/bc/bill/from/yemBillPlugInEsBaseFrom.java b/src/main/java/com/yem/wm/bc/bill/from/yemBillPlugInEsBaseFrom.java index 62c6a9cf..ef4a5b1f 100644 --- a/src/main/java/com/yem/wm/bc/bill/from/yemBillPlugInEsBaseFrom.java +++ b/src/main/java/com/yem/wm/bc/bill/from/yemBillPlugInEsBaseFrom.java @@ -37,8 +37,12 @@ public class yemBillPlugInEsBaseFrom extends AbstractBillPlugIn implements Befor long userID = CommonUtils.getUserID(); DynamicObject operator = BusinessDataServiceHelper.loadSingle(userID,"bos_user"); this.getModel().setValue("yem_operator",operator); - DynamicObject Userdep = CommonUtils.getOrgUserDep(org.getLong("id"),userID); - this.getModel().setValue("yem_department",Userdep); + if (org!=null){ + long aLong = org.getLong("id"); + DynamicObject Userdep = CommonUtils.getOrgUserDep(aLong,userID); + this.getModel().setValue("yem_department",Userdep); + } + } @Override