diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CheckingAdjustBillOpExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CheckingAdjustBillOpExt.java new file mode 100644 index 0000000..9c685f6 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CheckingAdjustBillOpExt.java @@ -0,0 +1,138 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + +package zcgj.zcdev.zcdev.pr.plugin.form; + + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +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.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.plugin.args.BeginOperationTransactionArgs; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.ec.basedata.business.model.ecma.CheckingTaskConstant; +import kd.ec.material.common.enums.CheckingStatusEnum; +import kd.ec.material.common.utils.MaterialInventoryUtils; +import kd.ec.material.common.utils.TaskStatusUtils; +import kd.ec.material.opplugin.validator.InvAdjustBillExistValidator; + +public class CheckingAdjustBillOpExt extends AbstractOperationServicePlugIn { + public CheckingAdjustBillOpExt() { + } + + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("org"); + e.getFieldKeys().add("depot"); + e.getFieldKeys().add("checkbill"); + e.getFieldKeys().add("adjustdetailentry"); + e.getFieldKeys().add("amount"); + e.getFieldKeys().add("lot"); + e.getFieldKeys().add("material"); + e.getFieldKeys().add("measureunit"); + e.getFieldKeys().add("modelnum"); + e.getFieldKeys().add("price"); + e.getFieldKeys().add("qty"); + } + + public void onAddValidators(AddValidatorsEventArgs e) { + e.addValidator(new InvAdjustBillExistValidator()); + } + + public void beginOperationTransaction(BeginOperationTransactionArgs e) { + super.beginOperationTransaction(e); + String operationKey = e.getOperationKey(); + DynamicObject[] dataEntities = e.getDataEntities(); + if (StringUtils.equals(operationKey, "audit")) { + this.updateInventory(dataEntities, true); + this.updateTaskStatusOnAudit(dataEntities); + } else if (StringUtils.equals(operationKey, "unaudit")) { + this.updateInventory(dataEntities, false); + this.updateTaskStatusOnUnaudit(dataEntities); + } + + } + + protected void updateTaskStatusOnUnaudit(DynamicObject[] dataEntities) { + Set taskIds = new HashSet(); + DynamicObject[] var3 = dataEntities; + int var4 = dataEntities.length; + + DynamicObject task; + for (int var5 = 0; var5 < var4; ++var5) { + DynamicObject dataEntity = var3[var5]; + DynamicObject checkBill = dataEntity.getDynamicObject("checkbill"); + task = checkBill.getDynamicObject("checkingtask"); + DynamicObjectCollection entities = dataEntity.getDynamicObjectCollection("adjustdetailentry"); + if (!entities.isEmpty()) { + taskIds.add(task.getPkValue()); + } + } + + QFilter qFilter = new QFilter("checkingstatus", "=", CheckingStatusEnum.FINISHED.getValue()); + qFilter.and(new QFilter(CheckingTaskConstant.ID_ENTITY_PK, "in", taskIds)); + DynamicObject[] tasks = BusinessDataServiceHelper.load("ecma_checkingtask", "checkingstatus", new QFilter[]{qFilter}); + DynamicObject[] var12 = tasks; + int var13 = tasks.length; + + for (int var14 = 0; var14 < var13; ++var14) { + task = var12[var14]; + task.set("checkingstatus", CheckingStatusEnum.UNFINISH.getValue()); + } + + SaveServiceHelper.save(tasks); + } + + protected void updateTaskStatusOnAudit(DynamicObject[] dataEntities) { + Map> taskBillDepotMap = new HashMap(); + DynamicObject[] var3 = dataEntities; + int var4 = dataEntities.length; + + for (int var5 = 0; var5 < var4; ++var5) { + DynamicObject dataEntity = var3[var5]; + DynamicObject depot = dataEntity.getDynamicObject("depot"); + DynamicObject checkBill = dataEntity.getDynamicObject("checkbill"); + DynamicObject task = checkBill.getDynamicObject("checkingtask"); +/* List depotList = (List)taskBillDepotMap.get(task.getPkValue()); + List depotList = depotList == null ? new ArrayList() : depotList; + ((List)depotList).add(depot.getPkValue());//系统源码*/ + Object taskId = task.getPkValue(); + List depotList = taskBillDepotMap.get(taskId); + if (depotList == null) { + depotList = new ArrayList<>(); + taskBillDepotMap.put(taskId, depotList); + } + depotList.add(depot.getPkValue()); + } + + TaskStatusUtils.updateTaskStatus(taskBillDepotMap); + } + + protected void updateInventory(DynamicObject[] dataEntities, boolean isAudit) { + for (int i = 0; i < dataEntities.length; ++i) { + DynamicObject obj = dataEntities[i]; + String orgId = obj.getDynamicObject("org").getString("id"); + DynamicObject depot = obj.getDynamicObject("depot"); + String depotId = depot.getString("id"); + DynamicObject projectobj = depot.getDynamicObject("project"); + String projectId = projectobj == null ? "0" : projectobj.getString("id"); + DynamicObjectCollection entryCol = obj.getDynamicObjectCollection("adjustdetailentry"); + MaterialInventoryUtils.matBalanceUpdate(orgId, projectId, depotId, (DynamicObject[]) entryCol.toArray(new DynamicObject[entryCol.size()]), isAudit, BigDecimal.ONE); + } + + } +}