Merge branch 'test'
This commit is contained in:
commit
52391d9725
2
.gitignore
vendored
2
.gitignore
vendored
@ -5,4 +5,4 @@
|
||||
|
||||
*.idea/
|
||||
out/
|
||||
!/src/main/java/kd/cosmic/
|
||||
src/main/java/kd/cosmic/
|
||||
|
@ -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");//新增
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,206 @@
|
||||
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;
|
||||
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.*;
|
||||
|
||||
import static com.yem.em.task.MatchingPLMChangeUpdateTaskEdit.*;
|
||||
import static com.yem.em.utils.AtlasUtils.seelctDyn;
|
||||
|
||||
/**
|
||||
* @Description: 1、如《PLM变更单》分录【替换关系】=【相互替换】【新替换旧】【互不替换】,分录【启用停用状态】=‘停用’,并且【替换件启用停用状态】=‘启用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id
|
||||
* <p>
|
||||
* 2、如《PLM变更单》分录【替换关系】=【新增】,分录【替换件启用停用状态】=‘启用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id
|
||||
* <p>
|
||||
* 3、如《PLM变更单》分录【替换关系】=【删除】,分录【启用停用状态】=‘停用’,更新当前行【执行状态】为【完成】、【完成时间】默认当前时间,并生成替换关系,记录替换关系id以及行id
|
||||
* @Date: 2024/8/29 15:38
|
||||
* @Created: by ZZSLL
|
||||
*/
|
||||
|
||||
public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(GenerateReplaceRelationshipTaskEdit.class);
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
|
||||
DynamicObject[] plms = queryPLMChange();
|
||||
|
||||
for (DynamicObject plmObj : plms) {
|
||||
DynamicObjectCollection collection = plmObj.getDynamicObjectCollection("yem_change_detail");
|
||||
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 enablestatus_before = plm.getString("yem_enablestatus_before");//停用启用状态
|
||||
String invokstatus = plm.getString("yem_invokstatus");
|
||||
String exchangetype = plm.getString("yem_exchangetype");
|
||||
|
||||
//【替换关系】=【相互替换】【新替换旧】【互不替换】 && 【启用停用状态】=‘停用’ && 【替换件启用停用状态】=‘启用’ && 执行状态 != 已完成
|
||||
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);
|
||||
}
|
||||
}
|
||||
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<Long, DynamicObject> 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<Long, DynamicObject> 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"));
|
||||
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.getDynamicObject("creator"));//创建人
|
||||
DynamicObjectCollection detail = bomchange.getDynamicObjectCollection("yem_entryentity");
|
||||
for (DynamicObject entry : entries) {
|
||||
DynamicObject addNew = detail.addNew();
|
||||
addNew.set("id", entry.getLong("id"));
|
||||
|
||||
String exchangetype = entry.getString("yem_exchangetype");
|
||||
|
||||
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_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", entry.getDate("yem_completetime"));//执行时间
|
||||
addNew.set("yem_remark", "");//备注
|
||||
addNew.set("yem_isass", entry.getBoolean("yem_isassy"));//是否总成
|
||||
addNew.set("yem_isresource", entry.getBoolean("yem_isresource"));//是否资源
|
||||
}
|
||||
return bomchange;
|
||||
}
|
||||
}
|
@ -0,0 +1,191 @@
|
||||
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;
|
||||
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 org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 1.根据《PLM变更单》中的
|
||||
* 【PLM工艺变更单号】+【总成编码】+【子项零件编码】+【子件数量】
|
||||
* 匹配《BOM》变更单
|
||||
* 【更改单号】+【总成编码】+【子项零件编码】+【数量】+【启用停用状态=‘停用’】更新 《PLM变更单》【启用停用状态】【启用停用时间】;
|
||||
* <p>
|
||||
* 2.根据《PLM变更单》中的
|
||||
* 【PLM工艺变更单号】+【替换后总成编码】+【替换后子项零件编码】+【替换子件数量】
|
||||
* 匹配《BOM》变更单
|
||||
* 【更改单号】+【总成编码】+【子项零件编码】+【数量】+【启用停用状态=‘启用’】更新 《PLM变更单》【替换件启用停用状态】【替换件启用停用时间】;
|
||||
* @Date: 2024/8/29 15:08
|
||||
* @Created: by ZZSLL
|
||||
*/
|
||||
|
||||
public class MatchingPLMChangeUpdateTaskEdit extends AbstractTask {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(MatchingPLMChangeUpdateTaskEdit.class);
|
||||
|
||||
@Override
|
||||
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
||||
DynamicObject[] plms = queryPLMChange();
|
||||
DynamicObject[] boms = queryBOMChange();
|
||||
|
||||
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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// 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
|
||||
* @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);
|
||||
}
|
||||
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 = new QFilter("status", "=", "C");
|
||||
return BusinessDataServiceHelper.load(formId, selectfields, qFilter.toArray());
|
||||
}
|
||||
}
|
@ -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;
|
||||
@ -34,8 +32,10 @@ public class AtlasUtils {
|
||||
* @param bill 表头数据包
|
||||
* @param entryentity 分录行数据包
|
||||
* @param entityName 单据标识
|
||||
* @param source 来源类型 BOM | PLM
|
||||
* @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, String source) {
|
||||
DynamicObject billObj = null;
|
||||
if (type.equals("add")) {
|
||||
billObj = BusinessDataServiceHelper.newDynamicObject(entityName);
|
||||
@ -46,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");
|
||||
@ -105,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"));
|
||||
@ -129,6 +134,7 @@ public class AtlasUtils {
|
||||
// AtlasUtils.Upassatlasdet(bill, entryentity, "Audit");
|
||||
SubRelationUtils.BomUpdateCMMPTable(bill, entryentity, "Audit");
|
||||
}
|
||||
return billObj;
|
||||
} else {
|
||||
List<IOperateInfo> allErrorOrValidateInfo = Operate.getAllErrorOrValidateInfo();
|
||||
String message = Operate.getMessage();
|
||||
@ -1084,6 +1090,4 @@ public class AtlasUtils {
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -194,7 +194,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");//业务分类
|
||||
|
@ -55,7 +55,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") + "'");
|
||||
|
@ -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)
|
||||
@ -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<String> 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<String,Object> 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<Map<String, Object>> list = RFUtils.debugDataSet(distincted);
|
||||
@ -257,6 +269,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");
|
||||
@ -374,8 +388,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");
|
||||
|
@ -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()));
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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,18 @@ 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.math.RoundingMode;
|
||||
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 +36,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<String> 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 +66,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 +155,105 @@ public class ContactBookSaveOp extends AbstractOperationServicePlugIn
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param dataEntity
|
||||
*/
|
||||
private void updatePaymentControlStatus(DynamicObject dataEntity) {
|
||||
DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_es_materialinfo");
|
||||
Map<String, String> 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<Boolean> proc = new ArrayList<>();
|
||||
List<Boolean> ship = new ArrayList<>();
|
||||
List<Boolean> last = new ArrayList<>();
|
||||
int iou = 0;
|
||||
StringBuilder debugMsg = new StringBuilder();
|
||||
for (Map.Entry<String, String> 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);
|
||||
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)});
|
||||
|
||||
DynamicObject[] shipBills = getShipBills(saleOrder, shipDetail, "A");//出运
|
||||
DynamicObject[] payBills = getPayBills(saleOrder, shipDetail, "B");//收款单
|
||||
|
||||
BigDecimal procPreRapRate = PaymentControlUtil.getProcPreRapRate(saleOrder);//生产预收汇比例
|
||||
BigDecimal shipPreRapRate = PaymentControlUtil.getShipPreRapRate(saleOrder);//发货预收汇比例
|
||||
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).setScale(2, RoundingMode.HALF_UP);
|
||||
|
||||
logger.info("下单已认领金额:{}, 下单预收金额:{}", procClaimAnt, advancePayment);
|
||||
debugMsg.append(String.format("下单已认领金额:%s, 下单预收金额:%s", procClaimAnt, advancePayment)).append("\n");
|
||||
// 下单已认领金额 >= 下单预收金额
|
||||
if (advancePayment.compareTo(BigDecimal.ZERO) > 0 && procClaimAnt.compareTo(advancePayment) >= 0) {
|
||||
isProcClaimFinish = true;
|
||||
}
|
||||
BigDecimal thisAmt = getThisAmt(shipDetail);//本次出运/发货金额
|
||||
// 本次发运已认领金额 >= 发运预收金额
|
||||
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");
|
||||
if (thisShipIOUAmt.compareTo(BigDecimal.ZERO) > 0 && shipClaimAmt.compareTo(thisShipIOUAmt) >= 0) {
|
||||
isShipClaimFinish = true;
|
||||
}
|
||||
|
||||
BigDecimal amount = shipDetail.getBigDecimal("yem_offeramount");//发运 价格条款金额
|
||||
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");
|
||||
// 尾款认领金额 >= 尾款 应收金额
|
||||
if (periodrefundamt.compareTo(BigDecimal.ZERO) > 0 && 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("==========================").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());
|
||||
}
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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){
|
||||
|
@ -0,0 +1,34 @@
|
||||
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);
|
||||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
||||
SaveServiceHelper.update(dynamicObject);
|
||||
}
|
||||
}
|
||||
}
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user