diff --git a/src/main/java/com/yem/em/ass/assatlasdet/from/AssAtlasdetFromEdit.java b/src/main/java/com/yem/em/ass/assatlasdet/from/AssAtlasdetFromEdit.java index 16e09c62..8df39ef6 100644 --- a/src/main/java/com/yem/em/ass/assatlasdet/from/AssAtlasdetFromEdit.java +++ b/src/main/java/com/yem/em/ass/assatlasdet/from/AssAtlasdetFromEdit.java @@ -36,6 +36,8 @@ import kd.bos.servicehelper.operation.SaveServiceHelper; import java.util.*; +import static com.yem.em.utils.SubRelationUtils.Getatlasno; + /** * @author zhouc * @date 2023/11/25 15:26 @@ -236,6 +238,13 @@ public class AssAtlasdetFromEdit extends AbstractBillPlugIn implements UploadLis args.cancel = true; } } + + if ("test_getatlasno".equals(key)) { + IDataModel model = this.getModel(); + String number = (String)model.getValue("number"); + int atlasno = Getatlasno(number); + getView().showMessage(String.valueOf(atlasno)); + } } @Override diff --git a/src/main/java/com/yem/em/task/BomChangeTaskEdit.java b/src/main/java/com/yem/em/task/BomChangeTaskEdit.java index 844cdeb6..018d0a46 100644 --- a/src/main/java/com/yem/em/task/BomChangeTaskEdit.java +++ b/src/main/java/com/yem/em/task/BomChangeTaskEdit.java @@ -51,7 +51,7 @@ public class BomChangeTaskEdit extends AbstractTask { QFilter qFilter = new QFilter("number", QCP.equals, "110"); DynamicObject bos_org = BusinessDataServiceHelper.loadSingle("bos_org", "id", qFilter.toArray()); String Queryfield = AtlasUtils.Queryfield("changebill_code", "pcode", "ccode", "qty", "break_flag", "complete_time", - "disable_time", "state", "complete_time", "complete_user", "MATER_NAME", "CMATER_NAME", "COMPLETE_TIME"); + "disable_time", "state", "complete_time", "complete_user", "MATER_NAME", "CMATER_NAME", "COMPLETE_TIME", "enable_time"); Calendar calendar = Calendar.getInstance(); // 昨天 @@ -71,8 +71,8 @@ public class BomChangeTaskEdit extends AbstractTask { calendar.set(Calendar.MILLISECOND, 999); String end = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); -// start = "2024-12-04 00:00:00"; -// end = "2024-12-10 23:59:59"; +// start = "2024-12-25 00:00:00"; +// end = "2024-12-25 23:59:59"; for (String key : productmap.keySet()) { String value = productmap.get(key); diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java index 4d7b2ee4..b7ee3c1f 100644 --- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java +++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java @@ -2,6 +2,7 @@ package com.yem.em.task; import com.yem.em.utils.AtlasUtils; import com.yem.wm.utils.AttachmentUtil; +import com.yem.wm.utils.DynamicObjectUtil; import com.yem.wm.utils.YEM; import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; @@ -22,6 +23,7 @@ import java.util.*; import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.*; import static com.yem.em.utils.AtlasUtils.seelctDyn; +import static com.yem.rf.utils.RFUtils.getBaseQFilter; /** * @Description: 1、如《PLM变更单》分录【替换关系】=【相互替换】【新替换旧】【互不替换】,分录【启用停用状态】=‘停用’,并且【替换件启用停用状态】=‘启用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id @@ -120,25 +122,41 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { 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 (DynamicObject entryObject : entry) { + useExistReplace(bomChange, entryObject, successMap); } +// 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, entry.get(0).getString("yem_parentno")); +// 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); +// } else { +// for (DynamicObject entryObject : entry) { +// int idx = entry.indexOf(entryObject); +// if (idx == 0) { +// QFilter qFilter = new QFilter("status", "=", "C"); +// qFilter.and("number", "=", entryObject.getString("yem_parentno")); +// DynamicObject[] load = BusinessDataServiceHelper.load("yem_em_replace", selectfields, qFilter.toArray()); +// if (load.length == 1) { +// replace = load[0]; +// replace = AtlasUtils.Addreplace(bomChange, entry.get(0), replace, "yem_em_replace", "update", "PLM"); +// } else { +// replace = AtlasUtils.Addreplace(bomChange, entry.get(0), null, "yem_em_replace", "add", "PLM"); +// } +// continue; +// }; +// logger.info("更新替换关系:PLM单号:{}, PLM工艺变更单号:{},父项编码:{}", billno, gybg_no, entryObject.getString("yem_parentno")); +// 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); +// } +// } +// } List list = new ArrayList<>(); for (Map.Entry mapEntry : successMap.entrySet()) { Long bomChangeEntryId = mapEntry.getKey(); @@ -172,6 +190,31 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { syncImage(plmObj, list); } + /** + * 查询已存在的替换关系 + * + * @param bomChange + * @param bomChangeEntry + * @param successMap + * @return + */ + private void useExistReplace(DynamicObject bomChange, DynamicObject bomChangeEntry, Map successMap) { + QFilter qFilter = new QFilter("status", "=", "C"); + qFilter.and("number", "=", bomChangeEntry.getString("yem_parentno")); + DynamicObject[] load = BusinessDataServiceHelper.load("yem_em_replace", "id, billno", qFilter.toArray()); + if (load.length > 0) { + DynamicObject replace = load[0]; + replace = BusinessDataServiceHelper.loadSingle(replace.getPkValue(), replace.getDataEntityType().getName()); + logger.info("使用已有替换关系:{}", replace.getString("number")); + AtlasUtils.Addreplace(bomChange, bomChangeEntry, replace, "yem_em_replace", "update", "PLM"); + successMap.put(bomChangeEntry.getLong("id"), bomChange); + } else { + logger.info("创建新的替换关系:{}", bomChangeEntry.getString("yem_parentno")); + AtlasUtils.Addreplace(bomChange, bomChangeEntry, null, "yem_em_replace", "add", "PLM"); + successMap.put(bomChangeEntry.getLong("id"), bomChange); + } + } + /** * 根据PLM创建BOM,用于生成替换关系 * @@ -318,6 +361,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { * 查询匹配的 总成图册明细 * PLM:变更后父项编码 - 总成图册明细.编码 * PLM:变更后子项编码 - 替换关系:ABC 替换编码,E(删除):不匹配,D(新增)替换前编码 + * * @return */ private DynamicObject queryMatchAssemblyAtlasDetails(DynamicObject plmObj, DynamicObject d) { @@ -360,6 +404,10 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask { detailPartNo = d.getString("yem_textfield"); } + if (!"B".equals(d.get("yem_invokstatus"))) { + continue; + } + if (partno.lastIndexOf("-") != -1) { partno = partno.substring(0, partno.lastIndexOf("-")).trim(); } diff --git a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java index ca5e0578..83fe97a9 100644 --- a/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java +++ b/src/main/java/com/yem/em/task/MatchingPLMChangeUpdateTaskEdit.java @@ -15,7 +15,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Map; /** @@ -53,87 +55,47 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { Date bom_completetime = bom.getDate("yem_completetime"); String exestate = bom.getString("yem_exestate"); Date invoktime = plm.getDate("yem_invoktime");//执行时间 + String invokstatus = plm.getString("yem_invokstatus");//执行状态 + if (YEM.isNotEmpty(invoktime) && "B".equals(invokstatus)) { + //已完成跳过 + continue; + } Boolean plmMatchBom = isPlmMatchBom(plmObj, bom, plm); exestate = "30".equals(exestate) ? "B" : "A"; if (plmMatchBom != null && !plmMatchBom) { -// Date stoptime = plm.getDate("yem_stoptime"); Date downdate = bom.getDate("yem_downdate"); if (YEM.isNotEmpty(downdate)) { plm.set("yem_enablestatus_before", bom_enablesta); plm.set("yem_stoptime", downdate); -// plm.set("yem_invoktime", bom_completetime); -// plm.set("yem_invokstatus", exestate); } else { logger.info("停用_无时间,不更新,{},{}", plm_billno, plm_parent); } } if (plmMatchBom != null && plmMatchBom) { -// Date starttime = plm.getDate("yem_starttime"); Date enableddate = bom.getDate("yem_enableddate"); if (YEM.isNotEmpty(enableddate)) { plm.set("yem_enablesta", bom_enablesta); plm.set("yem_starttime", enableddate); -// plm.set("yem_invoktime", bom_completetime); -// plm.set("yem_invokstatus", exestate); - - if (YEM.isNotEmpty(bom_completetime)) { - plm.set("yem_invoktime", bom_completetime); - plm.set("yem_invokstatus", exestate); - } } else { logger.info("启用_无时间,不更新,{},{}", plm_billno, plm_parent); } } + + if (plmMatchBom != null && YEM.isNotEmpty(bom_completetime)) { + plm.set("yem_invoktime", bom_completetime); + plm.set("yem_invokstatus", exestate); + } } } } } -// -// 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); } /** * PLM匹配BOM, + * * @param plmObj * @param bom * @param plm @@ -151,20 +113,20 @@ public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask { // 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"); +// 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, bom_child, bom_enablesta); + String bom_before_child_no = bom.getString("yem_subno");//子件编码 +// BigDecimal bom_before_qty = bom.getBigDecimal("yem_qty"); +// logger.info("停用_compare: {} {}, {} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child, bom_child, bom_enablesta); if (eq(plm_billno, bom_billno) && eq(plm_parent, bom_parent) && eq(plm_child, bom_child) && "B".equals(bom_enablesta)) { logger.info("停用_PLM匹配到BOM,{} {}, {} {}, {} {}", plm_billno, bom_billno, plm_parent, bom_parent, plm_child, bom_child); return false; } - 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); +// logger.info("启用_compare:{} {}, {} {}, {} {}, {} {}, {}", plm_billno, bom_billno,plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no, plm_after_qty, bom_before_qty, bom_enablesta); + if (eq(plm_billno, bom_billno) && eq(plm_after_parent_now, bom_before_parent_no) && eq(plm_after_child_now, bom_before_child_no) && "A".equals(bom_enablesta)) { + logger.info("启用_PLM匹配到BOM,{} {}, {} {}, {} {}", plm_billno, bom_billno, plm_after_parent_now, bom_before_parent_no, plm_after_child_now, bom_before_child_no); return true; } diff --git a/src/main/java/com/yem/em/utils/AtlasUtils.java b/src/main/java/com/yem/em/utils/AtlasUtils.java index 981f3467..1e516f80 100644 --- a/src/main/java/com/yem/em/utils/AtlasUtils.java +++ b/src/main/java/com/yem/em/utils/AtlasUtils.java @@ -923,10 +923,20 @@ public class AtlasUtils { DynamicObject yem_em_bomchange = BusinessDataServiceHelper.loadSingle("yem_em_bomchange", "id", qFilter1.toArray()); if (yem_em_bomchange != null) { DynamicObject bomchange = BusinessDataServiceHelper.loadSingle(yem_em_bomchange.getLong("id"), "yem_em_bomchange"); - if (bomchange != null) { - DynamicObjectCollection yem_entryentity = bomchange.getDynamicObjectCollection("yem_entryentity"); - if (yem_entryentity.size() == 0) { - DynamicObject dynamicObject = yem_entryentity.addNew(); + DynamicObjectCollection yem_entryentity = bomchange.getDynamicObjectCollection("yem_entryentity"); + String code = map.get("pcode").toString() + "_" + map.get("ccode").toString() + "_" + map.get("break_flag").toString(); + boolean exist = false; + for (DynamicObject dynamicObject : yem_entryentity) { + String break_flag = ""; + if ("A".equals(dynamicObject.getString("yem_enablesta"))) { + break_flag = "启用"; + } + if ("B".equals(dynamicObject.getString("yem_enablesta"))) { + break_flag = "停用"; + } + String key = dynamicObject.getString("yem_parentno") + "_" + dynamicObject.getString("yem_subno") + "_" + break_flag; + if (code.equals(key)) { + exist = true; dynamicObject.set("yem_changeno", changebill_code);//更改单号 dynamicObject.set("yem_parentno", map.get("pcode"));//父件编码 dynamicObject.set("yem_parentname", map.get("mater_name"));//父件名称 @@ -956,54 +966,45 @@ public class AtlasUtils { } dynamicObject.set("yem_completetime", map.get("complete_time")); - } else { - Boolean fag = true; - String code = map.get("pcode").toString() + "_" + map.get("ccode").toString(); - for (int j = 0; j < yem_entryentity.size(); j++) { - DynamicObject dynamicObject = yem_entryentity.get(j); - String key = dynamicObject.getString("yem_parentno") + "_" + dynamicObject.getString("yem_subno"); - if (key.equals(code)) { - fag = false; - break; - } - } - if (fag) { - DynamicObject dynamicObject = yem_entryentity.addNew(); - dynamicObject.set("yem_changeno", changebill_code);//更改单号 - dynamicObject.set("yem_parentno", map.get("pcode"));//父件编码 - dynamicObject.set("yem_parentname", map.get("mater_name"));//父件名称 - dynamicObject.set("yem_subno", map.get("ccode"));//父件编码 - dynamicObject.set("yem_subname", map.get("cmater_name"));//子件名称 - dynamicObject.set("yem_qty", map.get("qty"));//数量 - if (map.get("break_flag").toString().equals("启用")) { - dynamicObject.set("yem_enablesta", "A");//启用停用状态 - } - if (map.get("break_flag").toString().equals("停用")) { - dynamicObject.set("yem_enablesta", "B");//启用停用状态 - } - dynamicObject.set("yem_enableparno", map.get("pcode"));//替换父件名称 - dynamicObject.set("yem_enableparname", map.get("mater_name"));//替换父件名称 - dynamicObject.set("yem_enableddate", map.get("enable_time"));//启用时间 - dynamicObject.set("yem_downdate", map.get("disable_time"));//停用时间 - dynamicObject.set("yem_exestate", map.get("state"));//执行状态 - DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", map.get("pcode").toString()); - if (assatlasdet != null) { - //是否总成 yem_isass - dynamicObject.set("yem_isass", true); - } - DynamicObject basemodelib = seelctDyn("yem_bd_basemodelib", "number", map.get("pcode").toString()); - if (basemodelib != null) { - //是否资源 yem_isass - dynamicObject.set("yem_isresource", true); - } - dynamicObject.set("yem_completetime", map.get("complete_time")); - } } } - OperationResult Operate = OperationServiceHelper.executeOperate("save", - bomchange.getDynamicObjectType().getName(), new DynamicObject[]{bomchange}, OperateOption.create()); - if (Operate.isSuccess()) { + if (!exist) { + DynamicObject dynamicObject = yem_entryentity.addNew(); + dynamicObject.set("yem_changeno", changebill_code);//更改单号 + dynamicObject.set("yem_parentno", map.get("pcode"));//父件编码 + dynamicObject.set("yem_parentname", map.get("mater_name"));//父件名称 + dynamicObject.set("yem_subno", map.get("ccode"));//父件编码 + dynamicObject.set("yem_subname", map.get("cmater_name"));//子件名称 + dynamicObject.set("yem_qty", map.get("qty"));//数量 + if (map.get("break_flag").toString().equals("启用")) { + dynamicObject.set("yem_enablesta", "A");//启用停用状态 + } + if (map.get("break_flag").toString().equals("停用")) { + dynamicObject.set("yem_enablesta", "B");//启用停用状态 + } + dynamicObject.set("yem_enableparno", map.get("pcode"));//替换父件名称 + dynamicObject.set("yem_enableparname", map.get("mater_name"));//替换父件名称 + dynamicObject.set("yem_enableddate", map.get("enable_time"));//启用时间 + dynamicObject.set("yem_downdate", map.get("disable_time"));//停用时间 + dynamicObject.set("yem_exestate", map.get("state"));//执行状态 + DynamicObject assatlasdet = seelctDyn("yem_em_assatlasdet", "number", map.get("pcode").toString()); + if (assatlasdet != null) { + //是否总成 yem_isass + dynamicObject.set("yem_isass", true); + } + DynamicObject basemodelib = seelctDyn("yem_bd_basemodelib", "number", map.get("pcode").toString()); + if (basemodelib != null) { + //是否资源 yem_isass + dynamicObject.set("yem_isresource", true); + } + + dynamicObject.set("yem_completetime", map.get("complete_time")); + } + OperationResult save = OperationServiceHelper.executeOperate("save", + bomchange.getDynamicObjectType().getName(), new DynamicObject[]{bomchange}, OperateOption.create()); + if (!save.isSuccess()) { + throw new KDBizException("保存失败!" + save.getMessage()); } } else { DynamicObject cmmptable = BusinessDataServiceHelper.newDynamicObject("yem_em_bomchange"); diff --git a/src/main/java/com/yem/em/utils/SubRelationUtils.java b/src/main/java/com/yem/em/utils/SubRelationUtils.java index 2188b6c6..59184d3a 100644 --- a/src/main/java/com/yem/em/utils/SubRelationUtils.java +++ b/src/main/java/com/yem/em/utils/SubRelationUtils.java @@ -13,10 +13,7 @@ import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.List; +import java.util.*; import java.util.stream.Stream; /** @@ -109,7 +106,7 @@ public class SubRelationUtils { qFilter.and(new QFilter("yem_entryentity.yem_completetime", QCP.less_equals, new Date())); String selectfield = DynamicObjectUtil.getSelectfields("yem_em_replace", false); String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_em_replace", "yem_entryentity", false); - object = QueryServiceHelper.query("yem_em_replace", selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC"); + object = QueryServiceHelper.query("yem_em_replace", "yem_entryentity.id," + selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC"); if (object.size() > 0) { object = queryAssemblyreplevel(object, replacement, isComplete, yem_completetime); } @@ -147,12 +144,22 @@ public class SubRelationUtils { String selectfield = DynamicObjectUtil.getSelectfields("yem_em_replace", false); String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_em_replace", "yem_entryentity", false); DynamicObjectCollection yem_em_replace = QueryServiceHelper.query("yem_em_replace", - selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC"); - if (yem_em_replace.size() > 0) { - for (int j = 0; j < yem_em_replace.size(); j++) { - object.add(yem_em_replace.get(j)); + "yem_entryentity.id," + selectfields, new QFilter[]{qFilter}, "yem_entryentity.yem_completetime DESC"); + if (!yem_em_replace.isEmpty()) { + int count = 0; + Set ids = new HashSet<>(); + for (DynamicObject dynamicObject : object) { + ids.add(dynamicObject.getLong("yem_entryentity.id")); + } + for (DynamicObject dynamicObject : yem_em_replace) { + if (!ids.contains(dynamicObject.getLong("yem_entryentity.id"))) { + object.add(dynamicObject); + count++; + } + } + if (count > 0) { + queryAssemblyreplevel(yem_em_replace, replacement, isComplete, yem_completetime); } - queryAssemblyreplevel(yem_em_replace, replacement, isComplete, yem_completetime); } } return object; @@ -631,7 +638,7 @@ public class SubRelationUtils { QFilter qFilter = new QFilter("number", QCP.in, repno); DynamicObjectCollection data = QueryServiceHelper.query("yem_em_assatlasdet", "id,number,name,yem_entryentity.yem_atlasno", new QFilter[]{qFilter}, - "length(yem_entryentity.yem_atlasno),yem_entryentity.yem_atlasno DESC"); + "length(yem_entryentity.yem_atlasno) DESC,yem_entryentity.yem_atlasno DESC"); if (data.size() > 0) { result = data.get(0).getInt("yem_entryentity.yem_atlasno"); } diff --git a/src/main/java/com/yem/or/api/AssepcDynamic.java b/src/main/java/com/yem/or/api/AssepcDynamic.java index f39faddb..376cccee 100644 --- a/src/main/java/com/yem/or/api/AssepcDynamic.java +++ b/src/main/java/com/yem/or/api/AssepcDynamic.java @@ -27,6 +27,7 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; +import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import javax.validation.constraints.NotBlank; @@ -117,7 +118,9 @@ public class AssepcDynamic { JSONArray jsonArray = new JSONArray(); QFilter qFilter = new QFilter("createorg.number", QCP.equals, "110"); qFilter.and("status", QCP.equals, "C"); - qFilter.and("yem_customer.number", QCP.equals, number); + if (!StringUtils.containsIgnoreCase(number, "admin")) { + qFilter.and("yem_customer.number", QCP.equals, number); + } // qFilter.and("yem_billtype.number", QCP.equals, "yem_es_salesorder_ZJ"); String selectfields = DynamicObjectUtil.getSelectfields("yem_em_devicefiles", false); DynamicObjectCollection dynamicObjects = QueryServiceHelper.query("yem_em_devicefiles", selectfields @@ -182,9 +185,11 @@ public class AssepcDynamic { //查询零件明细表 根据零件编码过滤n qFilters.add(new QFilter("yem_model.yem_products.number", QCP.equals, number)); if (YEM.isNotEmpty(custom)) { - qFilters.add(new QFilter("yem_customer.number", QCP.equals, custom)); + if ((!StringUtils.containsIgnoreCase(custom, "admin"))) { + qFilters.add(new QFilter("yem_customer.number", QCP.equals, custom)); + } } else { - return CustomApiResult.fail("501", "客户编码必传"); + return CustomApiResult.fail("501", "客户编码为空!"); } extracted(algoKey, qFilters, jsonArray); // fillMissInfo(algoKey, number, jsonArray); @@ -444,8 +449,10 @@ public class AssepcDynamic { @ApiPostMapping("/assepcdynamic/electronic_group") public CustomApiResult queryElectronicGroup(@NotNull @ApiParam("客户.编码(116021200012)") String number) { List> result = new ArrayList<>(); - QFilter qFilter = new QFilter("yem_customer.number", QCP.equals, number); - qFilter.and("status", QCP.equals, "C"); + QFilter qFilter = new QFilter("status", QCP.equals, "C"); + if (!StringUtils.containsIgnoreCase(number, "admin")) { + qFilter.and(new QFilter("yem_customer.number", QCP.equals, number)); + } String selectfields = DynamicObjectUtil.getSelectfields("yem_em_devicefiles"); DynamicObjectCollection load = ORM.create().query("yem_em_devicefiles", selectfields + ",id", qFilter.toArray()); for (DynamicObject dynamicObject : load) { @@ -664,7 +671,9 @@ public class AssepcDynamic { public CustomApiResult queryBayedResourceNo(@NotBlank @ApiParam(value = "客户编码", example = "116021200012") String customerNo) { String algoKey = this.getClass().getName(); QFilter qFilter = new QFilter("status", "=", "C"); - qFilter.and("yem_customer.number", "=", customerNo); + if (!StringUtils.containsIgnoreCase(customerNo, "admin")) { + qFilter.and("yem_customer.number", "=", customerNo); + } qFilter.and("yem_model", "is not null", null); ArrayList list = Lists.newArrayList(); list.add("yem_model"); @@ -796,7 +805,9 @@ public class AssepcDynamic { public CustomApiResult queryProductModel(@NotBlank @ApiParam(value = "客户编码", example = "116021200012") String customerNo) { String algoKey = this.getClass().getName(); QFilter qFilter = new QFilter("status", "=", "C"); - qFilter.and("yem_customer.number", "=", customerNo); + if (!StringUtils.containsIgnoreCase(customerNo, "admin")) { + qFilter.and("yem_customer.number", "=", customerNo); + } qFilter.and("group", "is not null", null); ArrayList list = Lists.newArrayList(); list.add("group.number number"); diff --git a/src/main/java/com/yem/or/utils/OrderApiUtils.java b/src/main/java/com/yem/or/utils/OrderApiUtils.java index 73d94a45..85903d6a 100644 --- a/src/main/java/com/yem/or/utils/OrderApiUtils.java +++ b/src/main/java/com/yem/or/utils/OrderApiUtils.java @@ -578,15 +578,22 @@ public class OrderApiUtils { JSONObject objects = (JSONObject) object; String salesorderno = objects.getString("salesorderno"); Long objectsId = objects.getLong("id"); - DynamicObject mechanical = BusinessDataServiceHelper.loadSingle("yem_em_devicefiles" - , "id,number,yem_ordeid,yem_issynorde" - , new QFilter[]{new QFilter("yem_salesorderno", QCP.equals, salesorderno)}); - if (mechanical != null) { - mechanical.set("yem_ordeid", objectsId); - mechanical.set("yem_issynorde", true); - SaveServiceHelper.update(mechanical); - SaveServiceHelper.save(new DynamicObject[]{mechanical}); + Set compNo = new HashSet<>(); + for (Map map : list) { + if (map.containsKey("framenumber")) { + compNo.add((String) map.get("framenumber")); + } } + DynamicObject[] mechanical = BusinessDataServiceHelper.load("yem_em_devicefiles" + , "id,number,yem_ordeid,yem_issynorde" + , new QFilter[]{new QFilter("yem_salesorderno", QCP.equals, salesorderno), + new QFilter("number", QCP.in, compNo) + }); + for (DynamicObject d : mechanical) { + d.set("yem_ordeid", objectsId); + d.set("yem_issynorde", true); + } + SaveServiceHelper.save(mechanical); } } } else { diff --git a/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java b/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java index 7ee5ee5d..c05481a2 100644 --- a/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java +++ b/src/main/java/com/yem/tws/task/CusdecToDeclaredocxTask.java @@ -1,6 +1,5 @@ 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; @@ -27,11 +26,8 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; -import kd.bos.servicehelper.QueryServiceHelper; -import kd.bos.servicehelper.botp.BFTrackerServiceHelper; import kd.bos.servicehelper.botp.ConvertServiceHelper; import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; -import kd.bos.servicehelper.operation.DeleteServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; diff --git a/src/main/java/com/yem/wm/bc/bill/op/YemBillSubmitToYZJEndTransactionOp.java b/src/main/java/com/yem/wm/bc/bill/op/YemBillSubmitToYZJEndTransactionOp.java new file mode 100644 index 00000000..40097e9c --- /dev/null +++ b/src/main/java/com/yem/wm/bc/bill/op/YemBillSubmitToYZJEndTransactionOp.java @@ -0,0 +1,58 @@ +package com.yem.wm.bc.bill.op; + +import com.yem.wm.utils.YunzhijiaUtils; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.plugin.args.EndOperationTransactionArgs; +import kd.bos.exception.KDBizException; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 合同提交云之家特殊处理,事务结束之后在进行同步操作 + * @Date: 2024/12/25 17:34 + * @Created: by ZZSLL + */ + +public class YemBillSubmitToYZJEndTransactionOp extends AbstractOperationServicePlugIn { + + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + + } + + @Override + public void endOperationTransaction(EndOperationTransactionArgs e) { + super.endOperationTransaction(e); + DynamicObject[] entities = e.getDataEntities(); + List passDataEntity = new ArrayList<>(); + OperationResult result = this.operationResult; + if (!result.isSuccess()) { + return; + } + StringBuilder errMsg = new StringBuilder(); + for (DynamicObject entity : entities) { + String billType = entity.getDataEntityType().getName(); + if (!"yem_es_salesorder".equals(billType)) { + return; + } + + YunzhijiaUtils.submit2YZJ(result, passDataEntity, entity); + + if (result.isSuccess()) { + passDataEntity.add(entity); + } else { + String message = result.getMessage(); + errMsg.append(message).append("\n "); + } + } + + if (errMsg.length() > 0) { + throw new KDBizException("提交云之家失败!错误信息:" + errMsg); + } + } +} diff --git a/src/main/java/com/yem/wm/bc/bill/op/YemBillSubmitToYZJOp.java b/src/main/java/com/yem/wm/bc/bill/op/YemBillSubmitToYZJOp.java index b03b5c04..c5054418 100644 --- a/src/main/java/com/yem/wm/bc/bill/op/YemBillSubmitToYZJOp.java +++ b/src/main/java/com/yem/wm/bc/bill/op/YemBillSubmitToYZJOp.java @@ -29,7 +29,7 @@ public class YemBillSubmitToYZJOp extends AbstractOperationServicePlugIn { @Override public void onPreparePropertys(PreparePropertysEventArgs e) { super.onPreparePropertys(e); - e.getFieldKeys().add("billno"); + e.getFieldKeys().addAll(this.billEntityType.getAllFields().keySet()); } @Override @@ -39,6 +39,12 @@ public class YemBillSubmitToYZJOp extends AbstractOperationServicePlugIn { List passDataEntitys = new ArrayList<>(); for (DynamicObject dynamicObject : dataEntities1) { String name = dynamicObject.getDynamicObjectType().getName(); + if ("yem_es_salesorder".equals(name)) { + // 合同提交云之家特殊处理。 + // 已经移动到插件 com.yem.wm.bc.bill.op.YemBillSubmitToYZJEndTransactionOp + passDataEntitys.add(dynamicObject); + continue; + } dynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObject.getPkValue(), name); if ("yem_es_specialapplica".equals(name)) { diff --git a/src/main/java/com/yem/wm/es/exportinvoice/op/ExportInvoiceSaveOP.java b/src/main/java/com/yem/wm/es/exportinvoice/op/ExportInvoiceSaveOP.java index 02defc28..75c335b9 100644 --- a/src/main/java/com/yem/wm/es/exportinvoice/op/ExportInvoiceSaveOP.java +++ b/src/main/java/com/yem/wm/es/exportinvoice/op/ExportInvoiceSaveOP.java @@ -94,8 +94,11 @@ public class ExportInvoiceSaveOP extends AbstractOperationServicePlugIn { yemDestports.append(string);//目的港 } } - dataEntitie.set("yem_remark", yemTradeway + " 成交总额:" + yemSettlement + totalAmount.stripTrailingZeros() + " 汇率:" + yemExrate.stripTrailingZeros() - + "\r\n 海运费:"+ yemseatransfeecurr + yemSeatransfee.stripTrailingZeros() + " 保险费:" + yeminsurefeecurr + yemInsurefee.stripTrailingZeros() + BigDecimal stripTrailingZeros = new BigDecimal(totalAmount.toPlainString().replaceAll("0*$", "").replaceAll("\\.$", "")); + BigDecimal stripTrailingZeros1 = new BigDecimal(yemSeatransfee.toPlainString().replaceAll("0*$", "").replaceAll("\\.$", "")); + BigDecimal stripTrailingZeros2 = new BigDecimal(yemInsurefee.toPlainString().replaceAll("0*$", "").replaceAll("\\.$", "")); + dataEntitie.set("yem_remark", yemTradeway + " 成交总额:" + yemSettlement + stripTrailingZeros + " 汇率:" + yemExrate.stripTrailingZeros() + + "\r\n 海运费:"+ yemseatransfeecurr + stripTrailingZeros1 + " 保险费:" + yeminsurefeecurr + stripTrailingZeros2 + "\r\n 提单号:"+ yemLadbillnum + "\r\n 合同号:"+ queryString + "\r\n 起运港:" + yemShipports + "\r\n 目的港:" + yemDestports); } } diff --git a/src/main/java/com/yem/wm/es/exportpresent/validator/ExportPresentSubmitsValidator.java b/src/main/java/com/yem/wm/es/exportpresent/validator/ExportPresentSubmitsValidator.java index ef1760f8..bf58ba20 100644 --- a/src/main/java/com/yem/wm/es/exportpresent/validator/ExportPresentSubmitsValidator.java +++ b/src/main/java/com/yem/wm/es/exportpresent/validator/ExportPresentSubmitsValidator.java @@ -1,6 +1,7 @@ package com.yem.wm.es.exportpresent.validator; import com.yem.wm.utils.DynamicObjectUtil; +import com.yem.wm.utils.YEM; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.ExtendedDataEntity; @@ -11,6 +12,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -21,28 +23,27 @@ import java.util.List; public class ExportPresentSubmitsValidator extends AbstractValidator { @Override - public void validate() - { + public void validate() { ExtendedDataEntity[] dataEntities = this.getDataEntities(); for (ExtendedDataEntity data : dataEntities) { DynamicObject dataEntity = data.getDataEntity(); // 款项类型 String paymenttype = dataEntity.getString("yem_paymenttype"); if ("A".equals(paymenttype)) { - arrearsVerification(dataEntity,data); + arrearsVerification(dataEntity, data); } } } - private void arrearsVerification(DynamicObject dataEntity,ExtendedDataEntity data) { + private void arrearsVerification(DynamicObject dataEntity, ExtendedDataEntity data) { DynamicObject yemCustomer = dataEntity.getDynamicObject("yem_customer"); - if (yemCustomer!=null){ + if (yemCustomer != null) { long aLong = yemCustomer.getLong("id"); String selectfield = DynamicObjectUtil.getSelectfields("yem_es_storagetrans_xbs", false); String selectfields = DynamicObjectUtil.getEntrySelectfields(selectfield, "yem_es_storagetrans_xbs", "yem_creditdetail", false); DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_storagetrans_xbs", selectfields , new QFilter[]{new QFilter("yem_customer.id", QCP.equals, aLong)}); - if (load.length>0){ + if (load.length > 0) { List list = new ArrayList<>(); for (DynamicObject dynamicObject : load) { DynamicObjectCollection yemCreditdetail = dynamicObject.getDynamicObjectCollection("yem_creditdetail"); @@ -51,17 +52,18 @@ public class ExportPresentSubmitsValidator extends AbstractValidator { BigDecimal yemCountpayback = object.getBigDecimal("yem_countpayback"); BigDecimal yemActualsinkamtCd = object.getBigDecimal("yem_actualsinkamt_cd"); BigDecimal yemPaymentamt1Cd = object.getBigDecimal("yem_paymentamt1_cd"); - if (yemCountpayback.compareTo(BigDecimal.ZERO)<0&&yemActualsinkamtCd.compareTo(yemPaymentamt1Cd)<0){ + Date paydate1 = object.getDate("yem_paydate1");//应收款日期1 + if (YEM.isNotEmpty(paydate1) && paydate1.before(new Date()) && yemActualsinkamtCd.compareTo(yemPaymentamt1Cd) < 0) { DynamicObject yemSalecontractno = object.getDynamicObject("yem_salecontractno"); - if (yemSalecontractno!=null){ - String billno = yemSalecontractno.getString("billno"); - list.add("当前寄单放单客户存在历史合同:["+billno+"],订舱通知单:["+dynamicObjectString+"],逾期未收款,请确认!!!\n"); + if (yemSalecontractno != null) { + String billno = yemSalecontractno.getString("billno"); + list.add("当前寄单放单客户存在历史合同:[" + billno + "],订舱通知单:[" + dynamicObjectString + "],逾期未收款,请确认!!!\n"); } } } } - if (list.size()>0){ + if (list.size() > 0) { this.addMessage(data, list.toString()); } } diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SaleOrderCreditFromEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SaleOrderCreditFromEdit.java index 72806e53..2a2f28d4 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SaleOrderCreditFromEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SaleOrderCreditFromEdit.java @@ -136,6 +136,8 @@ public class SaleOrderCreditFromEdit extends AbstractBillPlugIn implements Befor products = "CC"; } else if (number.contains("TLJ")) { products = "TLJ"; + }else if (number.contains("WJJ")){ + products = "WJJ"; } } @@ -318,6 +320,8 @@ public class SaleOrderCreditFromEdit extends AbstractBillPlugIn implements Befor products = "CC"; } else if (number.contains("TLJ")) { products = "TLJ"; + }else if (number.contains("WJJ")){ + products = "WJJ"; } } QFilter qFilter2 = new QFilter("billstatus", QCP.equals, "C");// diff --git a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderEdit.java b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderEdit.java index 379913e0..5dc9812a 100644 --- a/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderEdit.java +++ b/src/main/java/com/yem/wm/es/salesorder/from/SalesOrderEdit.java @@ -467,6 +467,67 @@ public class SalesOrderEdit extends AbstractBillPlugIn implements Plugin, Before // model.setValue("yem_departure", yemShipportsename, row); // } + /** + * 客户需求单、外销合同的价格条款为FCA时,贸易术语=价格条款+目的港.工厂 + * + * @param model + * @param view + */ + public static void genTradeTermsDestports(IDataModel model, IFormView view) { + DynamicObject priceitem = (DynamicObject) model.getValue("yem_priceitem"); + String priceitemString = ""; + if (priceitem != null) { + priceitemString = priceitem.getString("name"); + } + if ("FCA".equals(priceitemString)) { + StringBuilder sb = new StringBuilder(); + sb.append("FCA "); + DynamicObjectCollection destports = (DynamicObjectCollection) model.getValue("yem_shipports"); + for (DynamicObject destport : destports) { + DynamicObject port = destport.getDynamicObject("fbasedataid"); + if (port == null) continue; + port = BusinessDataServiceHelper.loadSingle(port.getPkValue(), port.getDataEntityType().getName(), "yem_namecn"); + if (!port.getString("yem_namecn").isEmpty()) { + sb.append(port.getString("yem_namecn")).append(";"); + } + } + if (sb.lastIndexOf(";") == sb.length() - 1) { + sb.deleteCharAt(sb.length() - 1); + } + model.setValue("yem_tradeterms", sb.toString()); + } + } + +// /** +// * 客户需求单、外销合同的价格条款为FCA时,贸易术语=价格条款+目的港.工厂 +// * +// * @param model +// * @param view +// */ +// public static void genTradeTermsShipports(IDataModel model, IFormView view) { +// DynamicObject priceitem = (DynamicObject) model.getValue("yem_priceitem"); +// String priceitemString = ""; +// if (priceitem != null) { +// priceitemString = priceitem.getString("name"); +// } +// if ("EXW".equals(priceitemString)) { +// StringBuilder sb = new StringBuilder(); +// sb.append("EXW "); +// DynamicObjectCollection shipports = (DynamicObjectCollection) model.getValue("yem_destports"); +// for (DynamicObject shipport : shipports) { +// DynamicObject port = shipport.getDynamicObject("fbasedataid"); +// if (port == null) continue; +// port = BusinessDataServiceHelper.loadSingle(port.getPkValue(), port.getDataEntityType().getName(), "yem_factory"); +// if (!port.getString("yem_factory").isEmpty()) { +// sb.append(port.getString("yem_factory")).append(";"); +// } +// } +// if (sb.lastIndexOf(";") == sb.length() - 1) { +// sb.deleteCharAt(sb.length() - 1); +// } +// model.setValue("yem_tradeterms", sb.toString()); +// } +// } /** * 方数携带 diff --git a/src/main/java/com/yem/wm/es/salesorder/op/SaleOrdeAddGenerateOp.java b/src/main/java/com/yem/wm/es/salesorder/op/SaleOrdeAddGenerateOp.java index 90dd57fc..abd9744b 100644 --- a/src/main/java/com/yem/wm/es/salesorder/op/SaleOrdeAddGenerateOp.java +++ b/src/main/java/com/yem/wm/es/salesorder/op/SaleOrdeAddGenerateOp.java @@ -21,9 +21,6 @@ import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.basedata.BaseDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; -import kd.fi.gl.accountref.handler.SaveBalDataHandler; -import kd.fi.gl.balcal.carriedintoleaf.SaveBalanceHandler; -import kd.hr.hies.common.enu.Operate; import java.math.BigDecimal; import java.util.Date; @@ -99,6 +96,8 @@ public class SaleOrdeAddGenerateOp extends AbstractOperationServicePlugIn { products = "CC"; } else if (number.contains("TLJ")) { products = "TLJ"; + }else if (number.contains("WJJ")){ + products = "WJJ"; } } debcrednote.set("yem_bd_products", seelctDyn("yem_bd_productsgroup", "number", products)); diff --git a/src/main/java/com/yem/wm/es/salesorder/utils/SalesOrderUtils.java b/src/main/java/com/yem/wm/es/salesorder/utils/SalesOrderUtils.java index 1148cba4..581886e9 100644 --- a/src/main/java/com/yem/wm/es/salesorder/utils/SalesOrderUtils.java +++ b/src/main/java/com/yem/wm/es/salesorder/utils/SalesOrderUtils.java @@ -416,11 +416,25 @@ public class SalesOrderUtils { materielId.add(materiel.getLong("id")); } } + String yemBdProductsid = ""; + DynamicObject yemBdProducts = dataEntitie.getDynamicObject("yem_bd_products"); + if (yemBdProducts != null) { + yemBdProductsid = yemBdProducts.getString("number"); + } + if ("CC".equals(yemBdProducts.getString("number"))) {//叉车 + yemBdProductsid = "CCPJ"; + } else if ("ZZJ".equals(yemBdProducts.getString("number"))) {//装载机 + yemBdProductsid = "ZZJPJ"; + } else if ("TLJ".equals(yemBdProducts.getString("number"))) {//拖拉机 + yemBdProductsid = "TLJPJ"; + } String selectFields = DynamicObjectUtil.getSelectfields("yem_pricelibrary", false); selectFields = DynamicObjectUtil.getEntrySelectfields(selectFields, "yem_pricelibrary", "yem_accessory", false); DynamicObject[] accPriceLibrarys = BusinessDataServiceHelper.load("yem_pricelibrary", selectFields, - new QFilter[]{new QFilter("yem_accessory.yem_material", QCP.in, materielId), - new QFilter("billstatus", QCP.equals, "C")}); + new QFilter[]{new QFilter("yem_accessory.yem_material", QCP.in, materielId) + , new QFilter("billstatus", QCP.equals, "C") + , new QFilter("yem_productclass.number", QCP.equals, yemBdProductsid) + ,new QFilter("yem_cancelstatus", QCP.equals, "0")}); for (DynamicObject accPriceLibrary : accPriceLibrarys) { Map> allMap = new HashMap<>(); Date bizDate = accPriceLibrary.getDate("yem_bizdate"); @@ -1234,7 +1248,7 @@ public class SalesOrderUtils { qty = qty.add(dynamicObject.getBigDecimal("yem_qty")); } if (singlepartgiftmat.compareTo(BigDecimal.ZERO) == 0) { - singlepartgiftmat = yemSinglepartgiftmat ; + singlepartgiftmat = yemSinglepartgiftmat; } } BigDecimal amount = qty.multiply(singlepartgiftmat); diff --git a/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java b/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java index e80aba0d..9e0b2b51 100644 --- a/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java +++ b/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java @@ -109,7 +109,8 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn BigDecimal yemRaprate = dynamicObject.getBigDecimal("yem_raprate"); addNew.set("yem_exchangereceipts", yemRaprate); //订舱投保金额(原币种) - addNew.set("yem_bookinginsured",storageAmount.multiply(yemRaprate).divide(new BigDecimal(100) ,2)); + BigDecimal bigDecimal = storageAmount.multiply(yemRaprate).divide(new BigDecimal(100), 2); + addNew.set("yem_bookinginsured", bigDecimal); // 预收金额 addNew.set("yem_preamt_cd", raprate.multiply(storageAmount).divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)); // 合同认领金额 @@ -123,11 +124,12 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn // 信保本位币金额 addNew.set("yem_creditamtbase", storageAmount.multiply(exrate)); //应收款金额1(本位币) + addNew.set("yem_paymentamt1_cd", bigDecimal); addNew.set("yem_paymentamt1_cdbase", storageAmount.multiply(exrate)); if ("USD".equals(currency)) { // 投保金额(美元) - addNew.set("yem_usacreditamt_cd", storageAmount); + addNew.set("yem_usacreditamt_cd", bigDecimal); } else { storageAmount = BigDecimal.ZERO; @@ -144,7 +146,7 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn BigDecimal sinosurerate = (BigDecimal) dynamicObject.get("yem_sinosurerate"); addNew.set("yem_sinosurerate_cd", sinosurerate); // yem_insuranceamt_cd = yem_usacreditamt_cd * yem_sinosurerate_cd / 100 - BigDecimal insuranceamt = storageAmount.multiply(sinosurerate).divide(new BigDecimal("100"), 10, RoundingMode.HALF_UP); + BigDecimal insuranceamt = bigDecimal.multiply(sinosurerate).divide(new BigDecimal("100"), 10, RoundingMode.HALF_UP); // 保险费 addNew.set("yem_insuranceamt_cd", insuranceamt); // 信用期限 @@ -152,6 +154,7 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn // 保险费本位币金额 addNew.set("yem_insuranceamtbas_cd", insuranceamt.multiply(exrate)); + addNew.set("yem_amountowed", bigDecimal); // //SWIFT CODE // addNew.set("yem_swiftcode", dynamicObject.get("yem_swiftcode")); } diff --git a/src/main/java/com/yem/wm/es/xsalesorder/from/XSalesOrderFromEdit.java b/src/main/java/com/yem/wm/es/xsalesorder/from/XSalesOrderFromEdit.java index 92d5c505..8f0a0bb3 100644 --- a/src/main/java/com/yem/wm/es/xsalesorder/from/XSalesOrderFromEdit.java +++ b/src/main/java/com/yem/wm/es/xsalesorder/from/XSalesOrderFromEdit.java @@ -56,6 +56,9 @@ public class XSalesOrderFromEdit extends AbstractBillPlugIn { if ("yem_es_materialinfo".equals(name)) { setMaterialType(rowIndex); } + if ("yem_multiconfig".equals(name)){ + this.getModel().setValue("yem_linetypes","add",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 ee109a60..6e4d728b 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 @@ -12,8 +12,6 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import org.apache.commons.lang3.ArrayUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.math.RoundingMode; @@ -48,12 +46,28 @@ public class ClientUtils { int rowInfo = 0; // boolean flag = false; for (DynamicObject temp : detailedinfor) { + String yem_linetype = ""; + if (Entityname.equals("yem_es_xsalesorder")) { - String yem_linetype = temp.getString("yem_linetype"); + yem_linetype = temp.getString("yem_linetype"); if (!yem_linetype.equals("add")) { - rowInfo++; - continue; + boolean tor = true; + DynamicObjectCollection yemMulticonfig = temp.getDynamicObjectCollection("yem_multiconfig"); + if (!yemMulticonfig.isEmpty()) { + for (DynamicObject dynamicObject : yemMulticonfig) { + String yemLinetypes = dynamicObject.getString("yem_linetypes"); + if ("add".equals(yemLinetypes)) { + tor = false; + } + } + } + if (tor) { + rowInfo++; + continue; + } } + } else { + yem_linetype = "add"; } //多功能配置分录行获取 DynamicObjectCollection multiconfig = null; @@ -106,7 +120,8 @@ public class ClientUtils { //客户需求单整机 -整机分录行 // if (("yem_im_clientdeman_zj".equals(yem_billtype) || "yem_im_inclientdeman_zj".equals(yem_billtype) || ("yem_es_salesorder_ZJ".equals(yem_billtype)) || "yem_es_salesorder_nmzj".equals(yem_billtype)) && "Z".equals(businesssort)) { if (("yem_im_clientdeman_zj".equals(yem_billtype) || "yem_im_inclientdeman_zj".equals(yem_billtype) || ("yem_es_salesorder_ZJ".equals(yem_billtype)) - || "yem_es_salesorder_nmzj".equals(yem_billtype) || "yem_es_xsalesorder_zj".equals(yem_billtype) | "yem_es_xsalesorder_nmzj".equals(yem_billtype)) && "Z".equals(businesssort)) { + || "yem_es_salesorder_nmzj".equals(yem_billtype) || "yem_es_xsalesorder_zj".equals(yem_billtype) + || "yem_es_xsalesorder_nmzj".equals(yem_billtype)) && "Z".equals(businesssort)) { list.add(new QFilter("yem_bd_products.id", QCP.equals, products)); list.add(new QFilter("billstatus", QCP.equals, "C")); list.add(new QFilter("yem_billtype.number", QCP.equals, "yem_pricelibrary_ZJ")); @@ -114,11 +129,7 @@ public class ClientUtils { // list.add(new QFilter("yem_productclass.number",QCP.equals,yemBdProductsid)); //读取价格库数据 DynamicObject yem_pricelibrary = null; - if (multiconfig != null && !multiconfig.isEmpty()) { - yem_pricelibrary = BusinessDataServiceHelper.loadSingle("yem_pricelibrary", list.toArray(new QFilter[0])); - } else { - yem_pricelibrary = BusinessDataServiceHelper.loadSingle("yem_pricelibrary", list.toArray(new QFilter[0])); - } + yem_pricelibrary = BusinessDataServiceHelper.loadSingle("yem_pricelibrary", list.toArray(new QFilter[0])); if (yem_pricelibrary != null) { //多功能配置分录行无数据 则跳过查询价格库 if (multiconfig != null && !multiconfig.isEmpty()) { @@ -149,7 +160,23 @@ public class ClientUtils { } } } - setPriceNow(multiconfig, dataMap, rowInfo, models); + if ("yem_es_xsalesorder".equals(models.getDataEntityType().getName())) { + int multiconfigIndex = 0; + if (!multiconfig.isEmpty()) { + for (DynamicObject dc : multiconfig) { + if ("add".equals(dc.getString("yem_linetypes"))) { + long configentryid = dc.getLong("yem_configentryid"); + BigDecimal configentry = dataMap.get(configentryid) == null ? BigDecimal.ZERO : dataMap.get(configentryid).setScale(2); + models.setValue("yem_marketraisepribase", configentry, multiconfigIndex, rowInfo); + multiconfigIndex++; + } else { + multiconfigIndex++; + } + } + } + } else { + setPriceNow(multiconfig, dataMap, rowInfo, models); + } } DynamicObjectCollection yem_basicmodel = yem_pricelibrary.getDynamicObjectCollection("yem_basicmodel"); if (yem_basicmodel != null && !yem_basicmodel.isEmpty()) { @@ -176,14 +203,20 @@ public class ClientUtils { } //客户需求单整机 -配件分录行 - else if (("yem_im_clientdeman_zj".equals(yem_billtype) || "yem_im_inclientdeman_zj".equals(yem_billtype) || ("yem_es_salesorder_ZJ".equals(yem_billtype)) || "yem_es_salesorder_nmzj".equals(yem_billtype) || "yem_es_xsalesorder_zj".equals(yem_billtype) || "yem_es_xsalesorder_nmzj".equals(yem_billtype)) && "P".equals(businesssort)) { + else if (("yem_im_clientdeman_zj".equals(yem_billtype) || "yem_im_inclientdeman_zj".equals(yem_billtype) + || ("yem_es_salesorder_ZJ".equals(yem_billtype)) || "yem_es_salesorder_nmzj".equals(yem_billtype) + || "yem_es_xsalesorder_zj".equals(yem_billtype) || "yem_es_xsalesorder_nmzj".equals(yem_billtype)) + && "P".equals(businesssort) && yem_linetype.equals("add")) { // else if (("yem_im_clientdeman_zj".equals(yem_billtype) || "yem_im_inclientdeman_zj".equals(yem_billtype) || ("yem_es_salesorder_ZJ".equals(yem_billtype)) || "yem_es_salesorder_nmzj".equals(yem_billtype)) && "P".equals(businesssort)) { pjFindPrice(yem_exrate, info, pjDatas, rowInfo, list, materials, models, yemBdProductsid); } //客户需求单配件 // else if (("yem_im_clientdema_pj".equals(yem_billtype) || "yem_im_inclientdema_pj".equals(yem_billtype) || "yem_es_salesorder_PJ".equals(yem_billtype) || "yem_es_salesorder_nmpj".equals(yem_billtype)) && "P".equals(businesssort)) { - else if (("yem_im_clientdema_pj".equals(yem_billtype) || "yem_im_inclientdema_pj".equals(yem_billtype) || "yem_es_salesorder_PJ".equals(yem_billtype) || "yem_es_salesorder_nmpj".equals(yem_billtype) || "yem_es_xsalesorder_pj".equals(yem_billtype) || "yem_es_xsalesorder_nmpj".equals(yem_billtype)) && "P".equals(businesssort)) { + else if (("yem_im_clientdema_pj".equals(yem_billtype) || "yem_im_inclientdema_pj".equals(yem_billtype) + || "yem_es_salesorder_PJ".equals(yem_billtype) || "yem_es_salesorder_nmpj".equals(yem_billtype) + || "yem_es_xsalesorder_pj".equals(yem_billtype) || "yem_es_xsalesorder_nmpj".equals(yem_billtype)) + && "P".equals(businesssort) && yem_linetype.equals("add")) { pjFindPrice(yem_exrate, info, pjDatas, rowInfo, list, materials, models, yemBdProductsid); } rowInfo++; @@ -338,7 +371,7 @@ public class ClientUtils { */ public static void setPriceNow(DynamicObjectCollection multiconfig, Map dataMap, int rowInfo, IDataModel models) { int multiconfigIndex = 0; - if (multiconfig != null && multiconfig.size() > 0) { + if (!multiconfig.isEmpty()) { for (DynamicObject dc : multiconfig) { long configentryid = dc.getLong("yem_configentryid"); BigDecimal configentry = dataMap.get(configentryid) == null ? BigDecimal.ZERO : dataMap.get(configentryid).setScale(2); @@ -1950,12 +1983,13 @@ public class ClientUtils { /** * 计算销售FOB单价 *

- * 销售FOB单价=商品明细对应多功能配置中 单台加价金额(结算币别)合计值 + 销售FCA标配青岛单价+FOB与FCA费用差额 + * 销售FOB单价=商品明细对应多功能配置中 单台加价金额(结算币别)合计值 + 销售FCA标配青岛单价 */ public static void calculateSalesFOBUnitPrice(IDataModel model, int idx) { // if (!isFCAPriceItem(model, idx)) { // return; // } + String string = model.getDataEntityType().getName(); DynamicObject dataEntity = model.getDataEntity(true); DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_es_materialinfo"); @@ -1977,6 +2011,15 @@ public class ClientUtils { int rowCount = model.getEntryRowCount("yem_es_materialinfo"); for (int i = 0; i < rowCount; i++) { DynamicObject d = c.get(i); + if (string.equals("yem_es_xsalesorder")) { + String yemLinetype = d.getString("yem_linetype"); + if (!"add".equals(yemLinetype)) { + continue; + } + } + if (!"Z".equals(d.getString("yem_businesssort"))) { + continue; + } DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_multiconfig"); BigDecimal sumAmt = BigDecimal.ZERO; for (DynamicObject sub : subC) { diff --git a/src/main/java/com/yem/wm/im/debcrednotenew/op/DebCredNewSubmitOp.java b/src/main/java/com/yem/wm/im/debcrednotenew/op/DebCredNewSubmitOp.java index d4db9813..9e1d1753 100644 --- a/src/main/java/com/yem/wm/im/debcrednotenew/op/DebCredNewSubmitOp.java +++ b/src/main/java/com/yem/wm/im/debcrednotenew/op/DebCredNewSubmitOp.java @@ -9,7 +9,6 @@ import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.plugin.PreparePropertysEventArgs; import kd.bos.entity.plugin.args.BeforeOperationArgs; -import kd.bos.entity.plugin.args.BeginOperationTransactionArgs; import kd.bos.entity.plugin.args.EndOperationTransactionArgs; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; @@ -19,7 +18,6 @@ import kd.bos.servicehelper.operation.SaveServiceHelper; import java.math.BigDecimal; import java.util.HashMap; -import java.util.List; import java.util.Map; /** diff --git a/src/main/java/com/yem/wm/im/priceLibrary/form/OptionalFormPlugIn.java b/src/main/java/com/yem/wm/im/priceLibrary/form/OptionalFormPlugIn.java index c7388ed2..4bf23b5f 100644 --- a/src/main/java/com/yem/wm/im/priceLibrary/form/OptionalFormPlugIn.java +++ b/src/main/java/com/yem/wm/im/priceLibrary/form/OptionalFormPlugIn.java @@ -77,6 +77,9 @@ public class OptionalFormPlugIn extends AbstractFormPlugin implements Plugin { model.setValue("yem_parameter", mechanical.getString("yem_parameter"), createRow); model.setValue("yem_remarke", mechanical.getString("yem_remarke"), createRow); model.setValue("yem_entryid", id, createRow); + if (mechanical.containsProperty("yem_model_config_c")) { + model.setValue("yem_model_config_c", mechanical.getDynamicObject("yem_model_config_c"), createRow); + } } } } @@ -114,6 +117,8 @@ public class OptionalFormPlugIn extends AbstractFormPlugin implements Plugin { model.setValue("yem_specification", optional.getString("yem_specification_o"), entryRow); model.setValue("yem_remarke", optional.getString("yem_remarke"), entryRow); model.setValue("yem_entryid", optional.getPkValue(), entryRow); + model.setValue("yem_model_config_c", optional.getDynamicObject("yem_model_config_c"), entryRow); + model.setValue("yem_ruconfigure_c",optional.getString("yem_ruconfigure_c"),entryRow); } } @@ -172,6 +177,7 @@ public class OptionalFormPlugIn extends AbstractFormPlugin implements Plugin { parentModel.setValue("yem_configurtype", "A", optionalRow); parentModel.setValue("yem_configurname", model.getValue("yem_profilenamea", selectRow), optionalRow); parentModel.setValue("yem_configurtypeen", model.getValue("yem_configure", selectRow), optionalRow); + parentModel.setValue("yem_configurtyperu", model.getValue("yem_ruconfigure_c", selectRow), optionalRow); parentModel.setValue("yem_specification_o", model.getValue("yem_specification", selectRow), optionalRow); // parentModel.setValue("yem_marketprice", marketPrice, optionalRow); // parentModel.setValue("yem_marketraiseprice", marketRaisePrice, optionalRow); @@ -179,6 +185,13 @@ public class OptionalFormPlugIn extends AbstractFormPlugin implements Plugin { parentModel.setValue("yem_arguments", model.getValue("yem_parameter", selectRow), optionalRow); parentModel.setValue("yem_remarkss", model.getValue("yem_remarke", selectRow), optionalRow); parentModel.setValue("yem_configentryid", model.getValue("yem_entryid", selectRow), optionalRow); + DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_c", selectRow); + if (YEM.isNotEmpty(modelConfigR)) { + parentModel.setValue("yem_cname_config", modelConfigR.getString("yem_standard_cname"), optionalRow); + parentModel.setValue("yem_ename_config", modelConfigR.getString("yem_standard_ename"), optionalRow); + parentModel.setValue("yem_runame_config", modelConfigR.getString("yem_standard_runame"), optionalRow); + } + } } } diff --git a/src/main/java/com/yem/wm/im/priceLibrary/form/ReplaceFormPlugIn.java b/src/main/java/com/yem/wm/im/priceLibrary/form/ReplaceFormPlugIn.java index fdfd4406..15eb18bf 100644 --- a/src/main/java/com/yem/wm/im/priceLibrary/form/ReplaceFormPlugIn.java +++ b/src/main/java/com/yem/wm/im/priceLibrary/form/ReplaceFormPlugIn.java @@ -6,6 +6,7 @@ import com.yem.wm.utils.FunctionalCommon; import com.yem.wm.utils.YEM; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.MainEntityType; import kd.bos.entity.datamodel.IDataModel; import kd.bos.form.FormShowParameter; import kd.bos.form.IFormView; @@ -107,6 +108,10 @@ public class ReplaceFormPlugIn extends AbstractFormPlugin implements Plugin { // model.setValue("yem_marketraiseprice", replaceable.getBigDecimal("yem_salesmarkup_re"), entryRow); model.setValue("yem_remarke", replaceable.getString("yem_remarkr"), entryRow); model.setValue("yem_entryid", replaceable.getPkValue(), entryRow); + model.setValue("yem_ruconfigure_c",replaceable.getString("yem_ruconfigure_r"),entryRow); + + model.setValue("yem_model_config_r", replaceable.getDynamicObject("yem_model_config_r"), entryRow); + } } @@ -164,12 +169,20 @@ public class ReplaceFormPlugIn extends AbstractFormPlugin implements Plugin { parentModel.setValue("yem_configurtype", "B", optionalRow); parentModel.setValue("yem_configurname", model.getValue("yem_profilenamea", selectRow), optionalRow); parentModel.setValue("yem_configurtypeen", model.getValue("yem_configure", selectRow), optionalRow); + parentModel.setValue("yem_configurtyperu",model.getValue("yem_ruconfigure_c",selectRow),optionalRow); parentModel.setValue("yem_specification_o", model.getValue("yem_specification", selectRow), optionalRow); // parentModel.setValue("yem_marketprice", marketPrice, optionalRow); // parentModel.setValue("yem_marketraiseprice", marketRaisePrice, optionalRow); parentModel.setValue("yem_unitsetnumber", model.getValue("yem_unitsetnumber", selectRow), optionalRow); parentModel.setValue("yem_remarkss", model.getValue("yem_remarke", selectRow), optionalRow); parentModel.setValue("yem_configentryid", model.getValue("yem_entryid", selectRow), optionalRow); + DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_r", selectRow); + DynamicObject parentDataEntity = parentModel.getDataEntity(true); + if (YEM.isNotEmpty(modelConfigR)) { + parentModel.setValue("yem_cname_config", modelConfigR.getString("yem_standard_cname"), optionalRow); + parentModel.setValue("yem_ename_config", modelConfigR.getString("yem_standard_ename"), optionalRow); + parentModel.setValue("yem_runame_config", modelConfigR.getString("yem_standard_runame"), optionalRow); + } } } diff --git a/src/main/java/com/yem/wm/im/priceLibrary/form/RetrofittingFormPlugIn.java b/src/main/java/com/yem/wm/im/priceLibrary/form/RetrofittingFormPlugIn.java index aec6d261..a7950591 100644 --- a/src/main/java/com/yem/wm/im/priceLibrary/form/RetrofittingFormPlugIn.java +++ b/src/main/java/com/yem/wm/im/priceLibrary/form/RetrofittingFormPlugIn.java @@ -105,6 +105,8 @@ public class RetrofittingFormPlugIn extends AbstractFormPlugin implements Plugin model.setValue("yem_specification",optional.getString("yem_specification_a"),entryRow); model.setValue("yem_remarke",optional.getString("yem_remarka"),entryRow); model.setValue("yem_entryid",optional.getPkValue(),entryRow); + model.setValue("yem_ruconfigure_c", optional.getString("yem_ruconfigure_a"), entryRow); + model.setValue("yem_model_config_r", optional.getDynamicObject("yem_model_config_a"), entryRow); } } @@ -161,12 +163,19 @@ public class RetrofittingFormPlugIn extends AbstractFormPlugin implements Plugin parentModel.setValue("yem_configurtype","C",optionalRow); parentModel.setValue("yem_configurname",model.getValue("yem_profilenamea",selectRow),optionalRow); parentModel.setValue("yem_configurtypeen",model.getValue("yem_configure",selectRow),optionalRow); + parentModel.setValue("yem_configurtyperu",model.getValue("yem_ruconfigure_c",selectRow),optionalRow); parentModel.setValue("yem_specification_o",model.getValue("yem_specification",selectRow),optionalRow); // parentModel.setValue("yem_marketprice",marketPrice,optionalRow); // parentModel.setValue("yem_marketraiseprice",marketRaisePrice,optionalRow); parentModel.setValue("yem_unitsetnumber", model.getValue("yem_unitsetnumber", selectRow), optionalRow); parentModel.setValue("yem_remarkss",model.getValue("yem_remarke",selectRow),optionalRow); parentModel.setValue("yem_configentryid",model.getValue("yem_entryid",selectRow),optionalRow); + DynamicObject modelConfigR = (DynamicObject) model.getValue("yem_model_config_r", selectRow); + if (YEM.isNotEmpty(modelConfigR)) { + parentModel.setValue("yem_cname_config", modelConfigR.getString("yem_standard_cname"), optionalRow); + parentModel.setValue("yem_ename_config", modelConfigR.getString("yem_standard_ename"), optionalRow); + parentModel.setValue("yem_runame_config", modelConfigR.getString("yem_standard_runame"), optionalRow); + } } } diff --git a/src/main/java/com/yem/wm/syn/eas/PayapplyService.java b/src/main/java/com/yem/wm/syn/eas/PayapplyService.java index cb29e730..4d780fb6 100644 --- a/src/main/java/com/yem/wm/syn/eas/PayapplyService.java +++ b/src/main/java/com/yem/wm/syn/eas/PayapplyService.java @@ -108,6 +108,7 @@ public class PayapplyService extends AbstractOperationServicePlugIn { SimpleDateFormat fmtTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String yemBizdate = fmtDate.format(dataEntitie.getDate("yem_bizdate")); json.put("bizDate", yemBizdate); + json.put("cosmic", dataEntitie.getString("yem_cosmic")); //申请人 creator DynamicObject creators = dataEntitie.getDynamicObject("creator"); if (creators != null) { diff --git a/src/main/java/com/yem/wm/syn/eas/YemDelivernoticeService.java b/src/main/java/com/yem/wm/syn/eas/YemDelivernoticeService.java index 8b19efef..c1b9ab3f 100644 --- a/src/main/java/com/yem/wm/syn/eas/YemDelivernoticeService.java +++ b/src/main/java/com/yem/wm/syn/eas/YemDelivernoticeService.java @@ -50,7 +50,7 @@ public class YemDelivernoticeService extends AbstractOperationServicePlugIn { dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), dataEntity.getDynamicObjectType().getName()); DynamicObject yem_billtype = dataEntity.getDynamicObject("yem_billtype"); String yemSynchronizeeas = dataEntity.getString("yem_synchronizeeas"); - if ("B".equals(yemSynchronizeeas)){ + if ("B".equals(yemSynchronizeeas)) { list.add(selectedRow); continue; } @@ -129,12 +129,20 @@ public class YemDelivernoticeService extends AbstractOperationServicePlugIn { //单据编号 json.put("number", dataEntitie.getString("billno")); //送货客户 -// if (dataEntitie.getString("yem_sale_type").equals("B")) { -// -// } - DynamicObject yemCustomer = dataEntitie.getDynamicObject("yem_customer1"); - if (yemCustomer != null) { - json.put("customer", setJson("number", yemCustomer.getString("number"))); + if (dataEntitie.getString("yem_sale_type").equals("B")) { + DynamicObject yemCustomer = dataEntitie.getDynamicObject("yem_actualcustomer"); + if (yemCustomer != null) { + json.put("customer", setJson("number", yemCustomer.getString("number"))); + json.put("receiveinfo", dataEntitie.getString("yem_customername")); + json.put("paymentcustomer", setJson("number", yemCustomer.getString("number"))); + json.put("ordercustomer", setJson("number", yemCustomer.getString("number"))); + json.put("balancecustomer", setJson("number", yemCustomer.getString("number"))); + } + } else { + DynamicObject yemCustomer = dataEntitie.getDynamicObject("yem_customer1"); + if (yemCustomer != null) { + json.put("customer", setJson("number", yemCustomer.getString("number"))); + } } //币别 DynamicObject yemCurrency = dataEntitie.getDynamicObject("yem_currency"); @@ -276,6 +284,11 @@ public class YemDelivernoticeService extends AbstractOperationServicePlugIn { if (yemWarehouse != null) { json.put("warehouse", setJson("number", yemWarehouse.getString("number"))); } + //送货客户 + if (dataEntitie.getString("yem_sale_type").equals("B")) { + json.put("terminalamount", materialentry.getString("yem_endamount")); + json.put("terminalprice", materialentry.getString("yem_endprice")); + } //库位 DynamicObject yemLocation = materialentry.getDynamicObject("yem_location"); if (yemLocation != null) { diff --git a/src/main/java/com/yem/wm/syn/eas/api/OperationalUniversal.java b/src/main/java/com/yem/wm/syn/eas/api/OperationalUniversal.java index 5d94fb44..aaa19d2b 100644 --- a/src/main/java/com/yem/wm/syn/eas/api/OperationalUniversal.java +++ b/src/main/java/com/yem/wm/syn/eas/api/OperationalUniversal.java @@ -8,6 +8,7 @@ import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.db.DB; import kd.bos.db.DBRoute; +import kd.bos.entity.operate.OperateOptionConst; import kd.bos.entity.operate.result.IOperateInfo; import kd.bos.entity.operate.result.OperationResult; import kd.bos.metadata.dao.MetaCategory; @@ -22,6 +23,7 @@ import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.fi.ar.consts.OperationConst; import org.jetbrains.annotations.NotNull; import javax.validation.Valid; @@ -52,7 +54,9 @@ public class OperationalUniversal { FormMetadata formMeta = (FormMetadata) MetadataDao.readRuntimeMeta(id, MetaCategory.Form); String name = formMeta.getName().toString(); if (operate.length() > 0) { - OperationResult audit = OperationServiceHelper.executeOperate(operateKey, dynamicObject.getDynamicObjectType().getName(), new Object[]{dynamicObject.getPkValue()}, OperateOption.create()); + OperateOption operateOption = OperateOption.create(); + operateOption.setVariableValue(OperateOptionConst.MUTEX_IGNOREMODIFY, Boolean.toString(false)); + OperationResult audit = OperationServiceHelper.executeOperate(operateKey, dynamicObject.getDynamicObjectType().getName(), new Object[]{dynamicObject.getPkValue()}, operateOption); if (!audit.isSuccess()) { List allErrorOrValidateInfo = audit.getAllErrorOrValidateInfo(); String message = audit.getMessage(); diff --git a/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java b/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java index 6d91e353..7b898431 100644 --- a/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java +++ b/src/main/java/com/yem/wm/syn/eas/api/controller/YZJAuditController.java @@ -5,6 +5,7 @@ import com.yem.ia.intebilllogon.Utils.BackfilljsonAssignUtils; import com.yem.wm.syn.eas.api.dto.IntebilllogonAuditDTO; import com.yem.wm.syn.eas.api.service.IYZJAuditService; import com.yem.wm.syn.eas.api.service.impl.YZJAuditServiceImpl; +import com.yem.wm.utils.YEM; import com.yem.wm.utils.YunzhijiaUtils; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; @@ -59,11 +60,12 @@ public class YZJAuditController { */ @ApiPostMapping("/rewriting") public CustomApiResult rewriting(@NotNull @ApiParam("参数") String data) throws IOException { + DynamicObject billObj = null; try { JSONObject json = JSONObject.parseObject(data); // JSONObject data1 = json.getJSONObject("data"); JSONObject basicInfo = json.getJSONObject("basicInfo"); - logger.info("云之家回写,入参"+data); + logger.info("云之家回写,入参" + data); logger.info(json.toJSONString()); String formCodeId = basicInfo.getString("formCodeId"); //通过表单定义ID获取模板 @@ -71,23 +73,64 @@ public class YZJAuditController { ArrayList qFilters = new ArrayList<>(); qFilters.add(new QFilter("yem_yzjid", QCP.equals, formCodeId)); qFilters.add(new QFilter("yem_isdisable", QCP.equals, false)); + logger.info("QFilter{}", qFilters); DynamicObject yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle("yem_ia_intebilllogon", qFilters.toArray(new QFilter[0])); - if (yem_ia_intebilllogon != null) { - yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle(yem_ia_intebilllogon.getLong("id"), "yem_ia_intebilllogon"); - } else { - return CustomApiResult.success("调用成功"); - } - //单据类型 - String bos_entityobjectnum = yem_ia_intebilllogon.getString("yem_formid.number"); - //获取单据 - DynamicObject billObj = BusinessDataServiceHelper.loadSingle(bos_entityobjectnum, new QFilter[]{new QFilter("yem_forminstid", QCP.equals, formInstId)}); - if (billObj != null) { - billObj = BusinessDataServiceHelper.loadSingle(billObj.get("id"), bos_entityobjectnum); - } - //通过表单实例ID获取日志对象 - DynamicObject ialog = BusinessDataServiceHelper.loadSingle("yem_ialog", new QFilter[]{new QFilter("yem_forminstid", QCP.equals, billObj.get("yem_forminstid"))}); - ialog.set("yem_writeback", data); + if (yem_ia_intebilllogon != null) { + logger.info("智能审批单据注册:{},{}", yem_ia_intebilllogon.getString("billno"), yem_ia_intebilllogon.getPkValue()); +// yem_ia_intebilllogon = BusinessDataServiceHelper.loadSingle(yem_ia_intebilllogon.getLong("id"), "yem_ia_intebilllogon"); + } else { + logger.info("未获取到智能审批单据注册"); + return CustomApiResult.success("调用成功(未获取到智能审批单据注册)"); + } + DynamicObject formType = yem_ia_intebilllogon.getDynamicObject("yem_formid"); + String bos_entityobjectnum; + if (formType != null) { + bos_entityobjectnum = formType.getString("number"); + } else { + return CustomApiResult.fail("501", "智能审批单据注册:" + yem_ia_intebilllogon.getString("billno") + ",中单据类为空!"); + } + logger.info("获取审批单据,查询条件:{},{}", bos_entityobjectnum, formInstId); + + //获取单据 + QFilter qFilter = new QFilter("yem_forminstid", QCP.equals, formInstId); + DynamicObject[] load = BusinessDataServiceHelper.load(bos_entityobjectnum, "id, billno", qFilter.toArray()); + logger.info("查询到审批单据: {} 条", load.length); + for (DynamicObject d : load) { + logger.info("审批单据:{}", d.getString("billno")); + } + if (load.length > 0) { + DynamicObject object = load[0]; + billObj = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDataEntityType().getName()); + } + } catch (Exception e) { + e.printStackTrace(); + return CustomApiResult.fail("501", e.getMessage()); + } + + DynamicObject ialog = null; + + try { + if (YEM.isNotEmpty(billObj)) { + //通过表单实例ID获取日志对象 + ialog = BusinessDataServiceHelper.loadSingle("yem_ialog", new QFilter[]{new QFilter("yem_forminstid", QCP.equals, billObj.get("yem_forminstid"))}); + } else { + return CustomApiResult.fail("501", "获取审批单据失败!"); + } + + } catch (Exception e) { + e.printStackTrace(); + return CustomApiResult.fail("501", "获取审批日志失败!" + e.getMessage()); + } + + + if (YEM.isNotEmpty(ialog)) { + ialog.set("yem_writeback", data); + } else { + return CustomApiResult.fail("501", "获取审批日志失败!"); + } + + try { //TODO 调用云之家获取审批结果接口 JSONObject reqjson = new JSONObject(); reqjson.put("flowInstId", billObj.get("yem_flowinstid")); @@ -111,31 +154,30 @@ public class YZJAuditController { dynamicObject.set("yem_synfalt", "同步失败,点击按钮查看失败详情!"); dynamicObject.set("yem_synfalt_tag", "同步失败,失败原因:" + audit); logger.info("同步失败,失败原因:" + audit); - ialog.set("yem_error","调用单据审核失败"); - ialog.set("yem_error_tag",audit); - ialog.set("yem_success",false); + ialog.set("yem_error", "调用单据审核失败"); + ialog.set("yem_error_tag", audit); + ialog.set("yem_success", false); SaveServiceHelper.update(dynamicObject); // SaveServiceHelper.save(new DynamicObject[]{ialog}); OperationServiceHelper.executeOperate("unsubmit", billObj.getDynamicObjectType().getName(), new Object[]{billObj.get("id")}, OperateOption.create()); - CustomApiResult fail = CustomApiResult.fail("501", audit); - return fail; + return CustomApiResult.fail("501", audit); } else { - ialog.set("yem_success",true); - ialog.set("yem_error"," "); - ialog.set("yem_error_tag"," "); + ialog.set("yem_success", true); + ialog.set("yem_error", " "); + ialog.set("yem_error_tag", " "); dynamicObject.set("yem_synfalt", "同步成功"); SaveServiceHelper.update(dynamicObject); // SaveServiceHelper.save(new DynamicObject[]{ialog}); } } - SaveServiceHelper.save(new DynamicObject[]{ialog}); } catch (Exception e) { - CustomApiResult fail = CustomApiResult.fail("501", e.getMessage()); - return fail; + e.printStackTrace(); + return CustomApiResult.fail("501", e.getMessage()); + } finally { + SaveServiceHelper.save(new DynamicObject[]{ialog}); } - CustomApiResult ces = CustomApiResult.success("调用成功"); - return ces; + return CustomApiResult.success("调用成功"); } /** @@ -206,6 +248,7 @@ public class YZJAuditController { CustomApiResult ces = CustomApiResult.success("调用成功"); return ces; } + /** * 云之家框架合同 合同签章回写 * diff --git a/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java b/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java index 6feefa23..e6aa9630 100644 --- a/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java +++ b/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java @@ -217,7 +217,7 @@ public class DelivernoticeSynEAS extends AbstractOperationServicePlugIn { //已领料数量 json.put("HavePickQty", 0); //备注 - json.put("Remark", entryentity.getString("yem_remark")); + json.put("Remark", entryentity.getString("yem_conbillnumber")); jsonArray.add(json); } return jsonArray; diff --git a/src/main/java/com/yem/wm/sys/formplugin/list/AbstractVersionListPlugin.java b/src/main/java/com/yem/wm/sys/formplugin/list/AbstractVersionListPlugin.java index 622fec0f..657da19c 100644 --- a/src/main/java/com/yem/wm/sys/formplugin/list/AbstractVersionListPlugin.java +++ b/src/main/java/com/yem/wm/sys/formplugin/list/AbstractVersionListPlugin.java @@ -1,6 +1,9 @@ package com.yem.wm.sys.formplugin.list; import java.util.EventObject; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -122,14 +125,27 @@ public class AbstractVersionListPlugin extends AbstractListPlugin { if (BillFormId.equals("yem_es_storagetrans")) { entityNumber = BillFormId; } - if (entityNumber.length() > 0) { - for (ListSelectedRow SelectedData : listSelectedData) { - DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(SelectedData.getPrimaryKeyValue(), entityNumber); - String billNo = SelectedData.getBillNo(); - boolean yem_changing = dynamicObject.getBoolean("yem_changing"); - if (yem_changing) { - this.getView().showErrorNotification("单据【" + billNo + "】正在变更中,禁止下推!"); - e.setCancel(true); + if (!entityNumber.isEmpty()) { + + Set ids = new HashSet<>(); + + for (ListSelectedRow datum : listSelectedData) { + Long keyValue = (Long) datum.getPrimaryKeyValue(); + ids.add(keyValue); + } + + Map loads = BusinessDataServiceHelper.loadFromCache(entityNumber, "id, billno, yem_changing", new QFilter[]{new QFilter("id", "in", ids)}); + + for (ListSelectedRow selectedRow : listSelectedData) { + Object primaryKeyValue = selectedRow.getPrimaryKeyValue(); + if (loads.containsKey(primaryKeyValue)) { + DynamicObject dynamicObject = loads.get(primaryKeyValue); + String billno = dynamicObject.getString("billno"); + boolean yem_changing = dynamicObject.getBoolean("yem_changing"); + if (yem_changing) { + this.getView().showErrorNotification("单据【" + billno + "】正在变更中,禁止下推!"); + e.setCancel(true); + } } } } diff --git a/src/main/java/com/yem/wm/task/StoraGetransToDeviceFilesTask.java b/src/main/java/com/yem/wm/task/StoraGetransToDeviceFilesTask.java index 9c46bb2e..b6d9f780 100644 --- a/src/main/java/com/yem/wm/task/StoraGetransToDeviceFilesTask.java +++ b/src/main/java/com/yem/wm/task/StoraGetransToDeviceFilesTask.java @@ -35,8 +35,7 @@ public class StoraGetransToDeviceFilesTask extends AbstractTask { long yemResourcescodeLong = yemResourcescode.getLong("id"); String yemEmDevicefiles = DynamicObjectUtil.getSelectfields("yem_em_devicefiles", false); QFilter qFilter = new QFilter("yem_framenumber", QCP.equals, yemVehicleno); - qFilter.and("yem_model.id", QCP.equals, yemResourcescodeLong) - .and("billstatus", QCP.equals, "C"); + qFilter.and("yem_model.id", QCP.equals, yemResourcescodeLong); DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("yem_em_devicefiles", yemEmDevicefiles , new QFilter[]{qFilter}); if (dynamicObjects.length > 0) {