Merge remote-tracking branch 'orinin/test' into test

This commit is contained in:
ljw 2024-12-25 09:21:21 +08:00
commit 613d83a579
2 changed files with 77 additions and 42 deletions

View File

@ -122,39 +122,41 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
Map<Long, DynamicObject> successMap = new HashMap<>();
DynamicObject bomChange = createBOMChange(plmObj, enabled);
DynamicObjectCollection entry = bomChange.getDynamicObjectCollection("yem_entryentity");
String selectfields = DynamicObjectUtil.getSelectfields("yem_em_replace");
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_em_replace", "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, 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", "=", bomChange.getString("number"));
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);
}
}
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<Long> list = new ArrayList<>();
for (Map.Entry<Long, DynamicObject> mapEntry : successMap.entrySet()) {
Long bomChangeEntryId = mapEntry.getKey();
@ -188,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<Long, DynamicObject> 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用于生成替换关系
*
@ -334,6 +361,7 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
* 查询匹配的 总成图册明细
* PLM变更后父项编码 - 总成图册明细.编码
* PLM变更后子项编码 - 替换关系ABC 替换编码E删除不匹配D新增替换前编码
*
* @return
*/
private DynamicObject queryMatchAssemblyAtlasDetails(DynamicObject plmObj, DynamicObject d) {

View File

@ -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,14 +144,24 @@ 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<Long> 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);
}
}
}
return object;
}