退货补货调整

This commit is contained in:
龚豆豆 2025-11-07 12:42:48 +08:00
parent de44f119ab
commit 5fa5f493f5
5 changed files with 35 additions and 9 deletions

View File

@ -4,6 +4,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.metadata.IDataEntityProperty;
import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.ExtendedDataEntitySet; import kd.bos.entity.ExtendedDataEntitySet;
import kd.bos.entity.botp.plugin.AbstractConvertPlugIn; import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
@ -15,6 +17,7 @@ import kd.sdk.plugin.Plugin;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.ListIterator;
import java.util.Map; import java.util.Map;
/** /**
@ -35,8 +38,10 @@ public class PurOrderPushReceiptNoticePlugin extends AbstractConvertPlugIn imple
//收货通知单 //收货通知单
DynamicObject dataEntity = extendedDataEntity.getDataEntity(); DynamicObject dataEntity = extendedDataEntity.getDataEntity();
DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("billentry"); DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("billentry");
for (DynamicObject dynamicObject : dynamicObjectCollection) { ListIterator<DynamicObject> iterator = dynamicObjectCollection.listIterator();
String mainbillentryid = dynamicObject.getString("mainbillentryid"); while (iterator.hasNext()) {
DynamicObject entry = iterator.next();
String mainbillentryid = entry.getString("mainbillentryid");
//核心单据号一致修改补货数量 //核心单据号一致修改补货数量
if (variables.containsKey(mainbillentryid)) { if (variables.containsKey(mainbillentryid)) {
String jsonString = variables.get(mainbillentryid); String jsonString = variables.get(mainbillentryid);
@ -51,8 +56,25 @@ public class PurOrderPushReceiptNoticePlugin extends AbstractConvertPlugIn imple
for (int i = 0; i < jsonList.size(); i++) { for (int i = 0; i < jsonList.size(); i++) {
HashMap<String, Object> jsonMap = jsonList.get(i); HashMap<String, Object> jsonMap = jsonList.get(i);
BigDecimal entry_qty = new BigDecimal(jsonMap.get("qty").toString()).negate();//入库数量 BigDecimal entry_qty = new BigDecimal(jsonMap.get("qty").toString()).negate();//入库数量
dynamicObject.set("qty", entry_qty);//数量 if (i == 0) {
dynamicObject.set("baseqty", entry_qty);//基本数量 entry.set("qty", entry_qty);//数量
entry.set("baseqty", entry_qty);//基本数量
DynamicObjectCollection billentry_lk = entry.getDynamicObjectCollection("billentry_lk");
billentry_lk.clear();
}else{
DataEntityPropertyCollection properties = entry.getDataEntityType().getProperties();
// 后续循环复制entry并赋值
DynamicObject newEntry = new DynamicObject(dynamicObjectCollection.getDynamicObjectType());
for (IDataEntityProperty property : properties) {
newEntry.set(property.getName(), entry.get(property.getName()));
}
entry.set("qty", entry_qty);//数量
entry.set("baseqty", entry_qty);//基本数量
DynamicObjectCollection billentry_lk = newEntry.getDynamicObjectCollection("billentry_lk");
billentry_lk.clear();
// 处理完新entry后的逻辑比如加入集合或其他操作
iterator.add(newEntry);
}
} }
} }

View File

@ -2,6 +2,7 @@ package tqq9.lc123.cloud.app.plugin.operate.pm;
import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.botp.runtime.BFRow;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.BeforeOperationArgs; import kd.bos.entity.plugin.args.BeforeOperationArgs;
import kd.bos.logging.Log; import kd.bos.logging.Log;
@ -9,9 +10,12 @@ import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP; import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter; import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.botp.BFTrackerServiceHelper;
import kd.sdk.plugin.Plugin; import kd.sdk.plugin.Plugin;
import tqq9.lc123.cloud.app.plugin.utils.AutoFixLinkUtil; import tqq9.lc123.cloud.app.plugin.utils.AutoFixLinkUtil;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -30,7 +34,8 @@ public class OtherInWareSaveOpPlugin extends AbstractOperationServicePlugIn impl
if (dataEntities1.length > 0) { if (dataEntities1.length > 0) {
DynamicObject dynamicObject = dataEntities1[0]; DynamicObject dynamicObject = dataEntities1[0];
if (dynamicObject.getBoolean("tqq9_isrebulidlink")) { Map<Long, List<BFRow>> id = BFTrackerServiceHelper.findDirtSourceBills(TQQ9_OTHERINAPPLY, new Long[]{dynamicObject.getLong("id")});
if (id==null||id.isEmpty()) {
DynamicObjectCollection billentry1 = dynamicObject.getDynamicObjectCollection("billentry"); DynamicObjectCollection billentry1 = dynamicObject.getDynamicObjectCollection("billentry");
if (billentry1.size() > 0) { if (billentry1.size() > 0) {
DynamicObject dynamicObject1 = billentry1.get(0); DynamicObject dynamicObject1 = billentry1.get(0);

View File

@ -20,7 +20,6 @@ import java.util.stream.Collectors;
public class PurInWareSaveOpPlugin extends AbstractOperationServicePlugIn implements Plugin { public class PurInWareSaveOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
private final static Log logger = LogFactory.getLog(PurInWareSaveOpPlugin.class); private final static Log logger = LogFactory.getLog(PurInWareSaveOpPlugin.class);
private static String IM_PURINBILL = "im_purinbill";//采购入库单 private static String IM_PURINBILL = "im_purinbill";//采购入库单
private static String PM_RECEIPTNOTICE = "pm_receiptnotice";//收货通知
private static String billentry = "billentry";//分录标识 private static String billentry = "billentry";//分录标识
@Override @Override

View File

@ -19,8 +19,8 @@ import java.util.stream.Collectors;
*/ */
public class SaleOutWareSaveOpPlugin extends AbstractOperationServicePlugIn implements Plugin { public class SaleOutWareSaveOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
private final static Log logger = LogFactory.getLog(PurInWareSaveOpPlugin.class); private final static Log logger = LogFactory.getLog(PurInWareSaveOpPlugin.class);
private static String IM_OTHEROUTBILL = "im_otheroutbill";//其他出库 private static String SM_DELIVERNOTICE = "sm_delivernotice";//发货通知单
private static String TQQ9_OTHEROUTAPPLY = "tqq9_otheroutapply";//其他出库申请 private static String IM_SALOUTBILL = "im_saloutbill";//销售出库单
private static String billentry = "billentry";//分录标识 private static String billentry = "billentry";//分录标识
@Override @Override
@ -41,7 +41,7 @@ public class SaleOutWareSaveOpPlugin extends AbstractOperationServicePlugIn impl
dynamicObjects.add(pm_purorderbill); dynamicObjects.add(pm_purorderbill);
dynamicObjects.stream().collect(Collectors.toList()); dynamicObjects.stream().collect(Collectors.toList());
AutoFixLinkUtil fixLinkHelp = new AutoFixLinkUtil(); AutoFixLinkUtil fixLinkHelp = new AutoFixLinkUtil();
fixLinkHelp.linkSourceRow(dynamicObject, dynamicObjects.stream().collect(Collectors.toList()), IM_OTHEROUTBILL, billentry, "srcbillentryid", fixLinkHelp.linkSourceRow(dynamicObject, dynamicObjects.stream().collect(Collectors.toList()), IM_SALOUTBILL, billentry, "srcbillentryid",
srcbillentity, billentry, "", "billentry_lk"); srcbillentity, billentry, "", "billentry_lk");
} }