package tqq9.lc123.cloud.app.plugin.operate.im; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.PreparePropertysEventArgs; import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.sdk.plugin.Plugin; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; /** * 采购入库反写批号主档 */ public class PurInlotReceiptPlugin extends AbstractOperationServicePlugIn implements Plugin { private final static Log logger = LogFactory.getLog(PurInlotReceiptPlugin.class); @Override public void afterExecuteOperationTransaction(AfterOperationArgs e) { super.afterExecuteOperationTransaction(e); String operationKey = e.getOperationKey(); if (StringUtils.equals("audit", operationKey)) { for (DynamicObject dataEntity : e.getDataEntities()) { ArrayList billnos = new ArrayList<>(); HashMap entryMap = new HashMap<>(); String billno1 = dataEntity.getString("billno"); DynamicObject im_purinbill = BusinessDataServiceHelper.loadSingle("im_purinbill", new QFilter[]{new QFilter("billno", QCP.equals, billno1)}); DynamicObjectCollection billentry = im_purinbill.getDynamicObjectCollection("billentry"); //处理采购入库逻辑 for (DynamicObject dynamicObject : billentry) { String billno = dynamicObject.getString("mainbillnumber");//采购订单编号 Long entryid = dynamicObject.getLong("mainbillentryid");//核心单据行id DynamicObject lot = dynamicObject.getDynamicObject("lot");//批号主档 billnos.add(billno); entryMap.put(entryid, lot); } //查询采购订单 QFilter qFilter = new QFilter("billno", QCP.in, billnos); DynamicObject[] pm_purorderbills = BusinessDataServiceHelper.load("pm_purorderbill", "id,billno,billentry.id,billentry.tqq9_bd_lot", qFilter.toArray()); if (pm_purorderbills != null && pm_purorderbills.length > 0) { for (DynamicObject pm_purorderbill : pm_purorderbills) { DynamicObjectCollection billentry1 = pm_purorderbill.getDynamicObjectCollection("billentry"); for (DynamicObject dynamicObject : billentry1) { long id = dynamicObject.getLong("id"); if (entryMap.containsKey(id)) { DynamicObject lot = entryMap.get(id); DynamicObjectCollection tqq9_bd_lot = dynamicObject.getDynamicObjectCollection("tqq9_bd_lot"); DynamicObject newlot = new DynamicObject(tqq9_bd_lot.getDynamicObjectType()); newlot.set("fbasedataId", lot); if (!tqq9_bd_lot.contains(newlot)) { tqq9_bd_lot.add(newlot); } } } } SaveServiceHelper.save(pm_purorderbills); } } } else if (StringUtils.equals("unaudit", operationKey)) { for (DynamicObject dataEntity : e.getDataEntities()) { ArrayList billnos = new ArrayList<>(); String billno1 = dataEntity.getString("billno"); DynamicObject im_purinbill = BusinessDataServiceHelper.loadSingle("im_purinbill", new QFilter[]{new QFilter("billno", QCP.equals, billno1)}); DynamicObjectCollection billentry = im_purinbill.getDynamicObjectCollection("billentry"); //处理采购入库逻辑 for (DynamicObject dynamicObject : billentry) { String billno = dynamicObject.getString("mainbillnumber");//采购订单编号 billnos.add(billno); } //查询采购订单 QFilter qFilter = new QFilter("billno", QCP.in, billnos); DynamicObject[] pm_purorderbills = BusinessDataServiceHelper.load("pm_purorderbill", "id,billno,billentry.id,billentry.tqq9_bd_lot", qFilter.toArray()); //删除禁用批号 for (DynamicObject pm_purorderbill : pm_purorderbills) { DynamicObjectCollection billentry1 = pm_purorderbill.getDynamicObjectCollection("billentry"); for (DynamicObject dynamicObject : billentry1) { DynamicObjectCollection tqq9_bd_lot = dynamicObject.getDynamicObjectCollection("tqq9_bd_lot"); Iterator iterator = tqq9_bd_lot.iterator(); while (iterator.hasNext()){ DynamicObject lot = iterator.next(); DynamicObject bd_lot = lot.getDynamicObject("fbasedataId"); bd_lot = BusinessDataServiceHelper.loadSingle("bd_lot", new QFilter[]{new QFilter("id", QCP.equals, bd_lot.getLong("id"))}); String lotstatus = bd_lot.getString("lotstatus"); if (lotstatus.equals("B")) { iterator.remove(); } } // for (DynamicObject lot : tqq9_bd_lot) { // DynamicObject bd_lot = lot.getDynamicObject("fbasedataId"); // bd_lot = BusinessDataServiceHelper.loadSingle("bd_lot", new QFilter[]{new QFilter("id", QCP.equals, bd_lot.getLong("id"))}); // String lotstatus = bd_lot.getString("lotstatus"); // if (lotstatus.equals("B")) { // tqq9_bd_lot.remove(bd_lot); // } // } } } SaveServiceHelper.save(pm_purorderbills); } } } }