【物料变更提交泛微】拆分为变更分录

【物料变更审核】审核后根据变更分录还原原物料
This commit is contained in:
tanfengling@x-ri.com 2025-12-11 10:40:38 +08:00
parent 9d7ca50f1f
commit a28dd146ce
3 changed files with 155 additions and 27 deletions

View File

@ -87,6 +87,7 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
//获取实体中所有变更的属性
List<IDataEntityProperty> iDataEntityProperties = dataEntity.getDataEntityState().GetDirtyProperties();
if (iDataEntityProperties.size() > 0) {
DynamicObjectCollection changeEntries = dataEntity.getDynamicObjectCollection("tqq9_changeentry");
for (IDataEntityProperty prop : iDataEntityProperties) {
String name = prop.getName();//字段标识
if ("status".equals(name) || "useorg".equals(name) || "modifytime".equals(name) || "tqq9_changereason".equals(name)) {
@ -96,6 +97,7 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (displayNameLocaleStr == null) {
continue;
}
DynamicObject changeEntry = changeEntries.addNew();
String displayName = displayNameLocaleStr.get("zh_CN");//字段名称
String propTypeName = prop.getPropertyType().getName();
DynamicProperty property = MetadataServiceHelper.getDataEntityType("bd_material").getProperty(name);
@ -130,10 +132,22 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
changeFields.append(",").append(name);
// changeContent.append("字段:" + displayName + "(" + name + "),变更前:" + oldValue.substring(1) + ",变更后:" + newValue.substring(1) + "");
changeContent.append("字段:" + displayName + ",变更前:" + oldValue.substring(1) + ",变更后:" + newValue.substring(1) + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:空,变更后:" + newValue.substring(1) + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", null);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
if (dynamicObjectColl1 != null && dynamicObjectColl1.size() > 0) {
@ -145,6 +159,12 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
oldValue = oldValue + "," + objName;
}
changeContent.append("字段:" + displayName + ",变更前:" + oldValue.substring(1) + ",变更后:空;");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", null);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
}
} else {
@ -158,16 +178,34 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (!oldValue.equals(newValue)) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:空,变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", null);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
if (dynamicObject1 != null) {
String oldValue = dynamicObject1.getString("name");
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:空;");
changeFields.append(",").append(name);
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", null);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
}
}
@ -179,15 +217,33 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (!oldValue.equals(newValue)) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:空,变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", null);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
if (oldValue != null) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:空;");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", null);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
}
@ -197,6 +253,12 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (newValue != oldValue) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else if ("java.lang.Long".equals(propTypeName)) {
long newValue = dataEntity.getLong(name);
@ -204,6 +266,12 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (newValue != oldValue) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else if ("java.math.BigDecimal".equals(propTypeName)) {
BigDecimal newValue = dataEntity.getBigDecimal(name);
@ -213,15 +281,33 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (oldValue.compareTo(newValue) != 0) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:空,变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", null);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
if (oldValue != null) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:空;");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", null);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
}
} else if ("boolean".equals(propTypeName)) {
@ -230,6 +316,12 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (newValue != oldValue) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
String newValue = dataEntity.getString(name);
@ -242,15 +334,33 @@ public class MaterialBillPlugin extends AbstractBillPlugIn {
if (!oldValue.equals(newValue)) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:空,变更后:" + newValue + "");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", null);//修改前值
changeEntry.set("tqq9_newvalue", newValue);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
} else {
if (StringUtils.isNotBlank(oldValue)) {
changeFields.append(",").append(name);
changeContent.append("字段:" + displayName + ",变更前:" + oldValue + ",变更后:空;");
changeEntry.set("tqq9_fieldname", displayName);//字段名称
changeEntry.set("tqq9_fieldnumber", name);//字段标识
changeEntry.set("tqq9_oldvalue", oldValue);//修改前值
changeEntry.set("tqq9_newvalue", null);//修改后值
changeEntry.set("tqq9_updatedate", new Date());//修改事件
}
}
}

View File

@ -2,6 +2,7 @@ package tqq9.lc123.cloud.app.plugin.operate.sys;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.operate.result.IOperateInfo;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
@ -34,28 +35,26 @@ public class MaterialAuditOp extends AbstractOperationServicePlugIn {
DynamicObject[] dataEntities = e.getDataEntities();
for (DynamicObject material : dataEntities) {
material = BusinessDataServiceHelper.loadSingle(material.getPkValue(), material.getDynamicObjectType().getName());
// DynamicObject tqq9_audit = material.getDynamicObject("tqq9_auditor");
// QFilter qf = new QFilter("id", "=", tqq9_audit.getPkValue());
// DynamicObject tqq9_auditor = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{qf});
// //将待审批人赋值给修改人审核人
// if (tqq9_auditor != null) {
// material.set("modifier", tqq9_auditor);
// material.set("approverid", tqq9_auditor);
// SaveServiceHelper.save(new DynamicObject[]{material});
// }
String tqq9_srcnumber = material.getString("tqq9_srcnumber");
//查询是否有源单编码如果有就是物料变更如果没有就是正常物料审核
if (StringUtils.isNotBlank(tqq9_srcnumber)) {
//物料变更逻辑
String tqq9_changefields = material.getString("tqq9_changefields_tag");
if (StringUtils.isNotBlank(tqq9_changefields)) {
DynamicObjectCollection changeEntries = material.getDynamicObjectCollection("tqq9_changeentry");
if (changeEntries != null && changeEntries.size() > 0) {
QFilter f = new QFilter("number", "=", tqq9_srcnumber);
boolean exists = QueryServiceHelper.exists("bd_material", new QFilter[]{f});
if (exists) {
DynamicObject srcMaterial = BusinessDataServiceHelper.loadSingle("bd_material", new QFilter[]{f});
String[] fieldArr = tqq9_changefields.split(",");
for (String changeField : fieldArr) {
srcMaterial.set(changeField, material.get(changeField));
DynamicObjectCollection srcChangeEntries = srcMaterial.getDynamicObjectCollection("tqq9_changeentry");
for (DynamicObject changeEntry : changeEntries) {
String tqq9_fieldnumber = changeEntry.getString("tqq9_fieldnumber");
srcMaterial.set(tqq9_fieldnumber, material.get(tqq9_fieldnumber));
DynamicObject srcChangeEntry = srcChangeEntries.addNew();
srcChangeEntry.set("tqq9_fieldname", changeEntry.getString("tqq9_fieldname"));//字段名称
srcChangeEntry.set("tqq9_fieldnumber", changeEntry.getString("tqq9_fieldnumber"));//字段标识
srcChangeEntry.set("tqq9_oldvalue", changeEntry.getString("tqq9_oldvalue"));//修改前值
srcChangeEntry.set("tqq9_newvalue", changeEntry.getString("tqq9_newvalue"));//修改后值
srcChangeEntry.set("tqq9_updatedate", changeEntry.getDate("tqq9_updatedate"));//修改事件
}
SaveServiceHelper.save(new DynamicObject[]{srcMaterial});
OperationResult opResult = OperationServiceHelper.executeOperate("unaudit", "bd_material", new DynamicObject[]{material}, OperateOption.create());
@ -65,7 +64,6 @@ public class MaterialAuditOp extends AbstractOperationServicePlugIn {
log.info("删除物料修改信息[" + material.getString("number") + "]的结果:" + opResult.isSuccess());
}
}
}
} else {
//物料新增审核封装商品逻辑查询对应的商品是否存在

View File

@ -5725,9 +5725,6 @@ public class FWImpl {
JSONObject m4 = new JSONObject();
m4.put("fieldName", "sqrq");
m4.put("fieldValue", sqrq);
// JSONObject m5 = new JSONObject();
// m5.put("fieldName", "ywgz");
// m5.put("fieldValue", "4");
JSONObject m6 = new JSONObject();
m6.put("fieldName", "wlmc");
m6.put("fieldValue", wlmc);
@ -5866,6 +5863,7 @@ public class FWImpl {
m38, m39, m41, m42, m43, m44, m45, m46, m47, m48, m49, m51, m52, m53));
//区分新建审核与修改审批
JSONArray detailRootArr = new JSONArray();
String requestName = "新增物料流程";
String wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_XZWL");
String requestid = bill.getString("tqq9_fwrequestid");
@ -5875,14 +5873,36 @@ public class FWImpl {
wfID = ConfigUtils.getThirdConfigByNumber("FW_WFID_WLBG");
requestid = bill.getString("tqq9_fwupdid");
JSONObject bgbzObj = new JSONObject();
bgbzObj.put("fieldName", "bgbz");
bgbzObj.put("fieldValue", bgbz);
mlist.add(bgbzObj);
JSONObject bgyyObj = new JSONObject();
bgyyObj.put("fieldName", "bgyy");
bgyyObj.put("fieldValue", bgyy);
mlist.add(bgyyObj);
JSONObject detail_change = new JSONObject();
JSONArray recordsArr_change = new JSONArray();
DynamicObjectCollection changeEntries = bill.getDynamicObjectCollection("");
for (DynamicObject changeEntry : changeEntries) {
String bgzd = changeEntry.getString("tqq9_fieldname");
String bgq = changeEntry.getString("tqq9_oldvalue");
String bgh = changeEntry.getString("tqq9_newvalue");
JSONObject c1 = new JSONObject();
c1.put("fieldName", "bgzd");
c1.put("fieldValue", bgzd);
JSONObject c2 = new JSONObject();
c2.put("fieldName", "bgq");
c2.put("fieldValue", bgq);
JSONObject c3 = new JSONObject();
c3.put("fieldName", "bgh");
c3.put("fieldValue", bgh);
List<JSONObject> clist = Arrays.asList(c1, c2, c3);
JSONArray recordsArr = new JSONArray();
recordsArr.addAll(clist);
JSONObject recordObj = new JSONObject();
recordObj.put("recordOrder", 0);
recordObj.put("workflowRequestTableFields", recordsArr);
recordsArr_change.add(recordObj);
}
detail_change.put("tableDBName", "formtable_main_113_dt1");
detail_change.put("workflowRequestTableRecords", recordsArr_change);
detailRootArr.add(detail_change);
}
@ -5890,7 +5910,7 @@ public class FWImpl {
mainArr.addAll(mlist);
FWRestfulUtils fwRestfulUtils = new FWRestfulUtils();
//如果单据上纯在泛微流程id重新提交调用泛微提交接口如果没有泛微流程id就调用新增接口
return fwRestfulUtils.doBillAction(mainArr, null, requestName, wfID, lcbh, requestid, sqr);
return fwRestfulUtils.doBillAction(mainArr, detailRootArr, requestName, wfID, lcbh, requestid, sqr);
}