This commit is contained in:
		
							parent
							
								
									03b685da79
								
							
						
					
					
						commit
						73de89564e
					
				| 
						 | 
				
			
			@ -0,0 +1,715 @@
 | 
			
		|||
//
 | 
			
		||||
// Source code recreated from a .class file by IntelliJ IDEA
 | 
			
		||||
// (powered by FernFlower decompiler)
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
package zcgj.zcdev.zcdev.pr.plugin.operate;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.Iterator;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
 | 
			
		||||
import kd.bos.dataentity.resource.ResManager;
 | 
			
		||||
import kd.bos.dataentity.utils.ArrayUtils;
 | 
			
		||||
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.BeforeOperationArgs;
 | 
			
		||||
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
 | 
			
		||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
 | 
			
		||||
import kd.bos.entity.validate.ErrorLevel;
 | 
			
		||||
import kd.bos.entity.validate.ValidationErrorInfo;
 | 
			
		||||
import kd.bos.exception.KDBizException;
 | 
			
		||||
import kd.bos.orm.query.QFilter;
 | 
			
		||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
 | 
			
		||||
import kd.ec.basedata.business.model.ecma.MaterialOutBillConstant;
 | 
			
		||||
import kd.ec.basedata.business.model.ecma.PoundConstant;
 | 
			
		||||
import kd.ec.basedata.common.utils.CurrencyHelper;
 | 
			
		||||
import kd.ec.material.common.utils.MaterialInventoryUtils;
 | 
			
		||||
import kd.ec.material.opplugin.validator.InvAdjustBillExistValidator;
 | 
			
		||||
import kd.ec.material.opplugin.validator.MaterialOutBillValidator;
 | 
			
		||||
import org.apache.commons.collections4.CollectionUtils;
 | 
			
		||||
 | 
			
		||||
public class MaterialOutBillOpExt extends AbstractOperationServicePlugIn {
 | 
			
		||||
    public MaterialOutBillOpExt() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void onPreparePropertys(PreparePropertysEventArgs e) {
 | 
			
		||||
        e.getFieldKeys().add(MaterialOutBillConstant.ID_ENTITY_PK);
 | 
			
		||||
        e.getFieldKeys().add("billname");
 | 
			
		||||
        e.getFieldKeys().add("billno");
 | 
			
		||||
        e.getFieldKeys().add("transtype");
 | 
			
		||||
        e.getFieldKeys().add("project");
 | 
			
		||||
        e.getFieldKeys().add("warehouse");
 | 
			
		||||
        e.getFieldKeys().add("labour");
 | 
			
		||||
        e.getFieldKeys().add("reqpersonname");
 | 
			
		||||
        e.getFieldKeys().add("requestperson");
 | 
			
		||||
        e.getFieldKeys().add("entryentity");
 | 
			
		||||
        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");
 | 
			
		||||
        e.getFieldKeys().add("amount");
 | 
			
		||||
        e.getFieldKeys().add("ismulticurrency");
 | 
			
		||||
        e.getFieldKeys().add("exchangerate");
 | 
			
		||||
        e.getFieldKeys().add("currency");
 | 
			
		||||
        e.getFieldKeys().add("stdcurrency");
 | 
			
		||||
        e.getFieldKeys().add("exratetable");
 | 
			
		||||
        e.getFieldKeys().add("exchangedate");
 | 
			
		||||
        e.getFieldKeys().add("unitproject");
 | 
			
		||||
        e.getFieldKeys().add("contract");
 | 
			
		||||
        e.getFieldKeys().add("costtype");
 | 
			
		||||
        e.getFieldKeys().add("applybill");
 | 
			
		||||
        e.getFieldKeys().add("applyentryid");
 | 
			
		||||
        e.getFieldKeys().add("poundout");
 | 
			
		||||
        e.getFieldKeys().add("poundid");
 | 
			
		||||
        e.getFieldKeys().add("unitprojectpro");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void onAddValidators(AddValidatorsEventArgs e) {
 | 
			
		||||
        super.onAddValidators(e);
 | 
			
		||||
        e.addValidator(new MaterialOutBillValidator());
 | 
			
		||||
        e.addValidator(new InvAdjustBillExistValidator());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
 | 
			
		||||
        super.beforeExecuteOperationTransaction(e);
 | 
			
		||||
        String operationKey = e.getOperationKey();
 | 
			
		||||
        DynamicObject[] dataEntities = e.getDataEntities();
 | 
			
		||||
        switch (operationKey) {
 | 
			
		||||
            case "unaudit":
 | 
			
		||||
            default:
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void endOperationTransaction(EndOperationTransactionArgs e) {
 | 
			
		||||
        super.endOperationTransaction(e);
 | 
			
		||||
        String operationKey = e.getOperationKey();
 | 
			
		||||
        DynamicObject[] dataEntities = e.getDataEntities();
 | 
			
		||||
        int i;
 | 
			
		||||
        DynamicObject obj;
 | 
			
		||||
        String orgId;
 | 
			
		||||
        DynamicObject warehouse;
 | 
			
		||||
        String warehouseId;
 | 
			
		||||
        DynamicObject projectobj;
 | 
			
		||||
        String projectId;
 | 
			
		||||
        DynamicObjectCollection entryCol;
 | 
			
		||||
        DynamicObject transType;
 | 
			
		||||
        String type;
 | 
			
		||||
        boolean ismulticurrency;
 | 
			
		||||
        BigDecimal exchangerate;
 | 
			
		||||
        DynamicObject stdCurrency;
 | 
			
		||||
        DynamicObject orgCurrency;
 | 
			
		||||
        DynamicObject currency;
 | 
			
		||||
        DynamicObject exratetable;
 | 
			
		||||
        Date exchangedate;
 | 
			
		||||
        BigDecimal rate;
 | 
			
		||||
        switch (operationKey) {
 | 
			
		||||
            case "audit":
 | 
			
		||||
                for(i = 0; i < dataEntities.length; ++i) {
 | 
			
		||||
                    obj = dataEntities[i];
 | 
			
		||||
                    orgId = obj.getDynamicObject("org").getString("id");
 | 
			
		||||
                    warehouse = obj.getDynamicObject("warehouse");
 | 
			
		||||
                    warehouseId = warehouse.getString("id");
 | 
			
		||||
                    projectobj = warehouse.getDynamicObject("project");
 | 
			
		||||
                    projectId = projectobj == null ? "0" : projectobj.getString("id");
 | 
			
		||||
                    entryCol = obj.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                    transType = obj.getDynamicObject("transtype");
 | 
			
		||||
                    type = transType.getString("type");
 | 
			
		||||
                    ismulticurrency = obj.getBoolean("ismulticurrency");
 | 
			
		||||
                    exchangerate = BigDecimal.ONE;
 | 
			
		||||
                    if (ismulticurrency) {
 | 
			
		||||
                        stdCurrency = obj.getDynamicObject("stdcurrency");
 | 
			
		||||
                        orgCurrency = CurrencyHelper.getCurrency(Long.valueOf(orgId));
 | 
			
		||||
                        if (orgCurrency.getPkValue().equals(stdCurrency.getPkValue())) {
 | 
			
		||||
                            exchangerate = obj.getBigDecimal("exchangerate");
 | 
			
		||||
                        } else {
 | 
			
		||||
                            currency = obj.getDynamicObject("currency");
 | 
			
		||||
                            exratetable = obj.getDynamicObject("exratetable");
 | 
			
		||||
                            exchangedate = obj.getDate("exchangedate");
 | 
			
		||||
                            if (currency != null && exratetable != null && exchangedate != null) {
 | 
			
		||||
                                rate = CurrencyHelper.getExChangeRate(currency.getLong("id"), orgCurrency.getLong("id"), exratetable.getLong("id"), exchangedate);
 | 
			
		||||
                                if (rate != null) {
 | 
			
		||||
                                    exchangerate = rate;
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if ("INCREASE".equals(type)) {
 | 
			
		||||
                        MaterialInventoryUtils.matBalanceUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), true, exchangerate);
 | 
			
		||||
                    } else if ("REDUCE".equals(type)) {
 | 
			
		||||
                        MaterialInventoryUtils.matBalanceLockAndUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), false, exchangerate, false);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return;
 | 
			
		||||
            case "unaudit":
 | 
			
		||||
                for(i = 0; i < dataEntities.length; ++i) {
 | 
			
		||||
                    obj = dataEntities[i];
 | 
			
		||||
                    orgId = obj.getDynamicObject("org").getString("id");
 | 
			
		||||
                    warehouse = obj.getDynamicObject("warehouse");
 | 
			
		||||
                    warehouseId = warehouse.getString("id");
 | 
			
		||||
                    projectobj = warehouse.getDynamicObject("project");
 | 
			
		||||
                    projectId = projectobj == null ? "0" : projectobj.getString("id");
 | 
			
		||||
                    entryCol = obj.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                    transType = obj.getDynamicObject("transtype");
 | 
			
		||||
                    type = transType.getString("type");
 | 
			
		||||
                    ismulticurrency = obj.getBoolean("ismulticurrency");
 | 
			
		||||
                    exchangerate = BigDecimal.ONE;
 | 
			
		||||
                    if (ismulticurrency) {
 | 
			
		||||
                        stdCurrency = obj.getDynamicObject("stdcurrency");
 | 
			
		||||
                        orgCurrency = CurrencyHelper.getCurrency(Long.valueOf(orgId));
 | 
			
		||||
                        if (orgCurrency.getPkValue().equals(stdCurrency.getPkValue())) {
 | 
			
		||||
                            exchangerate = obj.getBigDecimal("exchangerate");
 | 
			
		||||
                        } else {
 | 
			
		||||
                            currency = obj.getDynamicObject("currency");
 | 
			
		||||
                            exratetable = obj.getDynamicObject("exratetable");
 | 
			
		||||
                            exchangedate = obj.getDate("exchangedate");
 | 
			
		||||
                            if (currency != null && exratetable != null && exchangedate != null) {
 | 
			
		||||
                                rate = CurrencyHelper.getExChangeRate(currency.getLong("id"), orgCurrency.getLong("id"), exratetable.getLong("id"), exchangedate);
 | 
			
		||||
                                if (rate != null) {
 | 
			
		||||
                                    exchangerate = rate;
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if ("INCREASE".equals(type)) {
 | 
			
		||||
                        MaterialInventoryUtils.matBalanceUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), false, exchangerate);
 | 
			
		||||
                    } else if ("REDUCE".equals(type)) {
 | 
			
		||||
                        MaterialInventoryUtils.matBalanceUpdate(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), true, exchangerate);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void beginOperationTransaction(BeginOperationTransactionArgs e) {
 | 
			
		||||
        super.beginOperationTransaction(e);
 | 
			
		||||
        String operationKey = e.getOperationKey();
 | 
			
		||||
        DynamicObject[] dataEntities = e.getDataEntities();
 | 
			
		||||
        ArrayList succObjs;
 | 
			
		||||
        int i;
 | 
			
		||||
        DynamicObject obj;
 | 
			
		||||
//        String projectId;//注释掉系统标准代码
 | 
			
		||||
        String projectId;
 | 
			
		||||
        String requestPersonName;
 | 
			
		||||
        String team;
 | 
			
		||||
        String orgId;
 | 
			
		||||
        DynamicObject warehouse;
 | 
			
		||||
        String warehouseId;
 | 
			
		||||
        DynamicObject projectobj;
 | 
			
		||||
        DynamicObjectCollection entryCol;
 | 
			
		||||
        DynamicObject transType;
 | 
			
		||||
        String type;
 | 
			
		||||
        switch (operationKey) {
 | 
			
		||||
            case "submit":
 | 
			
		||||
                this.checkApplyQtyAndRestQty(dataEntities);
 | 
			
		||||
                this.rewritePoundBills(dataEntities, false);
 | 
			
		||||
                succObjs = new ArrayList();
 | 
			
		||||
 | 
			
		||||
                for(i = 0; i < dataEntities.length; ++i) {
 | 
			
		||||
                    obj = dataEntities[i];
 | 
			
		||||
                    orgId = obj.getDynamicObject("org").getString("id");
 | 
			
		||||
                    warehouse = obj.getDynamicObject("warehouse");
 | 
			
		||||
                    warehouseId = warehouse.getString("id");
 | 
			
		||||
                    projectobj = warehouse.getDynamicObject("project");
 | 
			
		||||
                    projectId = projectobj == null ? "0" : projectobj.getString("id");
 | 
			
		||||
                    String billNumber = obj.getString("billno");
 | 
			
		||||
                    QFilter qFilter = new QFilter("billno", "=", billNumber);
 | 
			
		||||
                    qFilter.and(new QFilter("matbilltype", "=", "materialout"));
 | 
			
		||||
                    qFilter.and(new QFilter("billstatus", "in", new String[]{"B", "C"}));
 | 
			
		||||
                    DynamicObject[] materialOutBills = BusinessDataServiceHelper.load("ecma_materialoutbill", "billno,matbilltype", new QFilter[]{qFilter});
 | 
			
		||||
                    if (materialOutBills != null && materialOutBills.length > 0) {
 | 
			
		||||
                        projectId = String.format(ResManager.loadKDString("单据编码%s重复,请重新输入单据编码!", "MaterialOutBillOp_0", "ec-ecma-opplugin", new Object[0]), billNumber);
 | 
			
		||||
                        throw new KDBizException(projectId);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    DynamicObject labour = obj.getDynamicObject("labour");
 | 
			
		||||
                    DynamicObject contract = obj.getDynamicObject("contract");
 | 
			
		||||
                    String costType = obj.getString("costtype");
 | 
			
		||||
                    if (StringUtils.equals(costType, "b") && labour == null) {
 | 
			
		||||
                        throw new KDBizException(String.format(ResManager.loadKDString("%s:请填写“劳务班组”。", "MaterialOutBillOp_1", "ec-ecma-opplugin", new Object[0]), billNumber));
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    if (StringUtils.equals(costType, "b") && contract == null) {
 | 
			
		||||
                        throw new KDBizException(String.format(ResManager.loadKDString("%s:请填写“合同编号”。", "MaterialOutBillOp_2", "ec-ecma-opplugin", new Object[0]), billNumber));
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    DynamicObject requestPersonF7 = obj.getDynamicObject("requestperson");
 | 
			
		||||
                    requestPersonName = obj.getString("reqpersonname");
 | 
			
		||||
                    if (labour == null) {
 | 
			
		||||
                        if (requestPersonF7 == null) {
 | 
			
		||||
                            team = String.format(ResManager.loadKDString("%s:请填写“领料人”", "MaterialOutBillOp_3", "ec-ecma-opplugin", new Object[0]), billNumber);
 | 
			
		||||
                            throw new KDBizException(team);
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        team = labour.getString("team");
 | 
			
		||||
                        String errMsg;
 | 
			
		||||
                        if ("01".equals(team)) {
 | 
			
		||||
                            if (requestPersonF7 == null) {
 | 
			
		||||
                                errMsg = String.format(ResManager.loadKDString("%s:请填写“领料人”", "MaterialOutBillOp_3", "ec-ecma-opplugin", new Object[0]), billNumber);
 | 
			
		||||
                                throw new KDBizException(errMsg);
 | 
			
		||||
                            }
 | 
			
		||||
                        } else if ("02".equals(team) && (requestPersonName == null || "".equals(requestPersonName))) {
 | 
			
		||||
                            errMsg = String.format(ResManager.loadKDString("%s:请填写“领料人”", "MaterialOutBillOp_3", "ec-ecma-opplugin", new Object[0]), billNumber);
 | 
			
		||||
                            throw new KDBizException(errMsg);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
/*                    DynamicObjectCollection entryCol = obj.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                    DynamicObject transType = obj.getDynamicObject("transtype");
 | 
			
		||||
                    String type = transType.getString("type");*///注释掉系统标准代码
 | 
			
		||||
                    entryCol = obj.getDynamicObjectCollection("entryentity");//二开修改
 | 
			
		||||
                    transType = obj.getDynamicObject("transtype");//二开修改
 | 
			
		||||
                    type = transType.getString("type");//二开修改
 | 
			
		||||
                    if ("REDUCE".equals(type)) {
 | 
			
		||||
                        String msg1 = MaterialInventoryUtils.checkMatAsOut(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));
 | 
			
		||||
                        if (!"success".equals(msg1)) {
 | 
			
		||||
                            throw new KDBizException(msg1);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        String msg2 = MaterialInventoryUtils.matBalanceLocked(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), true);
 | 
			
		||||
                        if (!"success".equals(msg2)) {
 | 
			
		||||
                            throw new KDBizException(msg2);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    succObjs.add(obj);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
 | 
			
		||||
                break;
 | 
			
		||||
            case "unsubmit":
 | 
			
		||||
                succObjs = new ArrayList();
 | 
			
		||||
                this.rewritePoundBills(dataEntities, true);
 | 
			
		||||
 | 
			
		||||
                for(i = 0; i < dataEntities.length; ++i) {
 | 
			
		||||
                    obj = dataEntities[i];
 | 
			
		||||
                    orgId = obj.getDynamicObject("org").getString("id");
 | 
			
		||||
                    warehouse = obj.getDynamicObject("warehouse");
 | 
			
		||||
                    warehouseId = warehouse.getString("id");
 | 
			
		||||
                    projectobj = warehouse.getDynamicObject("project");
 | 
			
		||||
                    projectId = projectobj == null ? "0" : projectobj.getString("id");
 | 
			
		||||
                    entryCol = obj.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                    transType = obj.getDynamicObject("transtype");
 | 
			
		||||
                    type = transType.getString("type");
 | 
			
		||||
                    if ("REDUCE".equals(type)) {
 | 
			
		||||
                        projectId = MaterialInventoryUtils.matBalanceLocked(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]), false);
 | 
			
		||||
                        if (!"success".equals(projectId)) {
 | 
			
		||||
                            throw new KDBizException(projectId);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    succObjs.add(obj);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
 | 
			
		||||
                break;
 | 
			
		||||
            case "audit":
 | 
			
		||||
                succObjs = new ArrayList();
 | 
			
		||||
 | 
			
		||||
                for(i = 0; i < dataEntities.length; ++i) {
 | 
			
		||||
                    obj = dataEntities[i];
 | 
			
		||||
                    orgId = obj.getDynamicObject("org").getString("id");
 | 
			
		||||
                    warehouse = obj.getDynamicObject("warehouse");
 | 
			
		||||
                    warehouseId = warehouse.getString("id");
 | 
			
		||||
                    projectobj = warehouse.getDynamicObject("project");
 | 
			
		||||
                    projectId = projectobj == null ? "0" : projectobj.getString("id");
 | 
			
		||||
                    entryCol = obj.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                    transType = obj.getDynamicObject("transtype");
 | 
			
		||||
                    type = transType.getString("type");
 | 
			
		||||
                    if ("REDUCE".equals(type)) {
 | 
			
		||||
                        projectId = MaterialInventoryUtils.checkInventoryQty(orgId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));
 | 
			
		||||
                        if (!"success".equals(projectId)) {
 | 
			
		||||
                            throw new KDBizException(projectId);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    succObjs.add(obj);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                this.auditWriteBack(dataEntities);
 | 
			
		||||
                e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
 | 
			
		||||
                break;
 | 
			
		||||
            case "unaudit":
 | 
			
		||||
                succObjs = new ArrayList();
 | 
			
		||||
                this.rewritePoundBills(dataEntities, true);
 | 
			
		||||
 | 
			
		||||
                for(i = 0; i < dataEntities.length; ++i) {
 | 
			
		||||
                    obj = dataEntities[i];
 | 
			
		||||
                    Object[] objects = obj.getDynamicObjectCollection("entryentity").stream().map((entry) -> {
 | 
			
		||||
                        return entry.getPkValue();
 | 
			
		||||
                    }).toArray();
 | 
			
		||||
                    QFilter entryIdFilter = new QFilter("entryentity.materialentryid", "in", objects);
 | 
			
		||||
                    DynamicObject[] maincostEntry = BusinessDataServiceHelper.load("ecco_mainmatcost", "id,billno,entryentity,entryentity.materialentryid", new QFilter[]{entryIdFilter});
 | 
			
		||||
                    if (maincostEntry.length > 0) {
 | 
			
		||||
                        String errMsg = String.format(ResManager.loadKDString("单据名称:%1$s,单据编号:%2$s的分录已被主要材料分摊单分录引用,无法反审核!", "MaterialOutBillOp_4", "ec-ecma-opplugin", new Object[0]), obj.getString("billname"), obj.getString("billno"));
 | 
			
		||||
                        throw new KDBizException(errMsg);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    DynamicObject[] sporadicEntry = BusinessDataServiceHelper.load("ecco_sporadicmatcost", "id,billno,entryentity,entryentity.materialentryid", new QFilter[]{entryIdFilter});
 | 
			
		||||
                    if (sporadicEntry.length > 0) {
 | 
			
		||||
                        projectId = String.format(ResManager.loadKDString("单据名称:%1$s,单据编号:%2$s的分录已被零星材料分摊单分录引用,无法反审核!", "MaterialOutBillOp_5", "ec-ecma-opplugin", new Object[0]), obj.getString("billname"), obj.getString("billno"));
 | 
			
		||||
                        throw new KDBizException(projectId);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    projectId = obj.getDynamicObject("org").getString("id");
 | 
			
		||||
/*                    DynamicObject warehouse = obj.getDynamicObject("warehouse");
 | 
			
		||||
                    String warehouseId = warehouse.getString("id");
 | 
			
		||||
                    DynamicObject projectobj = warehouse.getDynamicObject("project");*///注释掉系统标准代码
 | 
			
		||||
                    warehouse = obj.getDynamicObject("warehouse");//二开修改
 | 
			
		||||
                    warehouseId = warehouse.getString("id");//二开修改
 | 
			
		||||
                    projectobj = warehouse.getDynamicObject("project");//二开修改
 | 
			
		||||
                    projectId = projectobj == null ? "0" : projectobj.getString("id");
 | 
			
		||||
/*                    DynamicObjectCollection entryCol = obj.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                    DynamicObject transType = obj.getDynamicObject("transtype");
 | 
			
		||||
                    String type = transType.getString("type");    */           //注释掉系统标准代码
 | 
			
		||||
                    entryCol = obj.getDynamicObjectCollection("entryentity");//二开修改
 | 
			
		||||
                    transType = obj.getDynamicObject("transtype");//二开修改
 | 
			
		||||
                    type = transType.getString("type");//二开修改
 | 
			
		||||
                    if ("INCREASE".equals(type)) {
 | 
			
		||||
                        requestPersonName = MaterialInventoryUtils.checkMatAsOut(projectId, projectId, warehouseId, (DynamicObject[])entryCol.toArray(new DynamicObject[entryCol.size()]));
 | 
			
		||||
                        if (!"success".equals(requestPersonName)) {
 | 
			
		||||
                            team = String.format(ResManager.loadKDString("反审核失败,反审核后%s负库存!", "MaterialOutBillOp_6", "ec-ecma-opplugin", new Object[0]), requestPersonName.substring(0, requestPersonName.length() - 3));
 | 
			
		||||
                            throw new KDBizException(team);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    succObjs.add(obj);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                this.unAuditWriteBack(dataEntities);
 | 
			
		||||
                e.setDataEntities((DynamicObject[])succObjs.toArray(new DynamicObject[succObjs.size()]));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void addErrMessage(DynamicObject obj, String errMsg, int dataIndex) {
 | 
			
		||||
        Object pkId = obj.getPkValue();
 | 
			
		||||
        int rowIndex = 0;
 | 
			
		||||
        ErrorLevel errorLevel = ErrorLevel.FatalError;
 | 
			
		||||
        ValidationErrorInfo errInfo = new ValidationErrorInfo("", pkId, dataIndex, rowIndex, "Error ", ResManager.loadKDString("库存检查", "MaterialOutBillOp_7", "ec-ecma-opplugin", new Object[0]), errMsg, errorLevel);
 | 
			
		||||
        this.operationResult.addErrorInfo(errInfo);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void checkApplyQtyAndRestQty(DynamicObject[] dataEntities) {
 | 
			
		||||
        Map<Long, List<DynamicObject>> applyBillId_outBill = new HashMap();
 | 
			
		||||
        Set<Long> applyBillIdSet = new HashSet();
 | 
			
		||||
        DynamicObject[] var4 = dataEntities;
 | 
			
		||||
        int var5 = dataEntities.length;
 | 
			
		||||
 | 
			
		||||
        for(int var6 = 0; var6 < var5; ++var6) {
 | 
			
		||||
            DynamicObject item = var4[var6];
 | 
			
		||||
            DynamicObject applyBill = item.getDynamicObject("applybill");
 | 
			
		||||
            if (applyBill != null) {
 | 
			
		||||
                Long applyBillId = (Long)applyBill.getPkValue();
 | 
			
		||||
                applyBillIdSet.add(applyBillId);
 | 
			
		||||
                List<DynamicObject> outBillList = (List)applyBillId_outBill.get(applyBillId);
 | 
			
		||||
                if (outBillList == null) {
 | 
			
		||||
                    outBillList = new ArrayList();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                ((List)outBillList).add(item);
 | 
			
		||||
                applyBillId_outBill.put(applyBillId, outBillList);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        QFilter idFilter = new QFilter("id", "in", applyBillIdSet);
 | 
			
		||||
        DynamicObject[] applyBillArr = BusinessDataServiceHelper.load("ecma_materialapplybill", "billno,billname,entryentity,entryentity.listingid,entryentity.material,entryentity.restqty", new QFilter[]{idFilter});
 | 
			
		||||
        QFilter applyFilter = new QFilter("applybill", "in", applyBillIdSet);
 | 
			
		||||
        QFilter statusFilter = new QFilter("billstatus", "=", "B");
 | 
			
		||||
        DynamicObject[] outBillArr = BusinessDataServiceHelper.load("ecma_materialoutbill", "billno,billname,applybill,entryentity,entryentity.applyentryid,entryentity.qty", new QFilter[]{applyFilter, statusFilter});
 | 
			
		||||
        DynamicObject[] var21 = outBillArr;
 | 
			
		||||
        int var23 = outBillArr.length;
 | 
			
		||||
 | 
			
		||||
        int var11;
 | 
			
		||||
        DynamicObject applyBill;
 | 
			
		||||
        for(var11 = 0; var11 < var23; ++var11) {
 | 
			
		||||
            DynamicObject item = var21[var11];
 | 
			
		||||
            applyBill = item.getDynamicObject("applybill");
 | 
			
		||||
            if (applyBill != null) {
 | 
			
		||||
                Long applyBillId = (Long)applyBill.getPkValue();
 | 
			
		||||
                applyBillIdSet.add(applyBillId);
 | 
			
		||||
                List<DynamicObject> outBillList = (List)applyBillId_outBill.get(applyBillId);
 | 
			
		||||
                outBillList.add(item);
 | 
			
		||||
                applyBillId_outBill.put(applyBillId, outBillList);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        StringBuffer tipsStringBuffer = new StringBuffer();
 | 
			
		||||
        DynamicObject[] var24 = applyBillArr;
 | 
			
		||||
        var11 = applyBillArr.length;
 | 
			
		||||
 | 
			
		||||
        for(int var26 = 0; var26 < var11; ++var26) {
 | 
			
		||||
            applyBill = var24[var26];
 | 
			
		||||
            List<DynamicObject> outBillList = (List)applyBillId_outBill.get(applyBill.getPkValue());
 | 
			
		||||
            String tip = this.compareApplyBillEntryAndSomeOutBillEntry(applyBill, outBillList);
 | 
			
		||||
            tipsStringBuffer.append(tip);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        String tips = tipsStringBuffer.toString();
 | 
			
		||||
        if (StringUtils.isNotEmpty(tips)) {
 | 
			
		||||
            throw new KDBizException(tips);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private String compareApplyBillEntryAndSomeOutBillEntry(DynamicObject applyBill, List<DynamicObject> outBillList) {
 | 
			
		||||
        Map<Long, Integer> applyEntryScaleMap = new HashMap();
 | 
			
		||||
        Iterator var4 = applyBill.getDynamicObjectCollection("entryentity").iterator();
 | 
			
		||||
 | 
			
		||||
        while(var4.hasNext()) {
 | 
			
		||||
            DynamicObject dy = (DynamicObject)var4.next();
 | 
			
		||||
            applyEntryScaleMap.put(dy.getLong("id"), dy.getDynamicObject("material").getDynamicObject("measureunit").getInt("precision"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Map<Long, DynamicObject> applyEntryId_entry = this.getApplyEntryId_entryByApplyBillEntry(applyBill);
 | 
			
		||||
        Map<Long, BigDecimal> applyBillEntryId_totalQty = this.getApplyEntryId_totalQtyMapByMergeOutBillEntry(outBillList);
 | 
			
		||||
        Map<Long, String> applyEntryId_outBillString = this.getApplyEntryId_outBillNameMap(outBillList);
 | 
			
		||||
        String applyBillString = "【" + applyBill.getString("billno") + " " + applyBill.getString("billname") + "】";
 | 
			
		||||
        StringBuffer tipsStringBuffer = new StringBuffer();
 | 
			
		||||
        Iterator var9 = applyBillEntryId_totalQty.keySet().iterator();
 | 
			
		||||
 | 
			
		||||
        while(var9.hasNext()) {
 | 
			
		||||
            Long key = (Long)var9.next();
 | 
			
		||||
            BigDecimal totalQty = (BigDecimal)applyBillEntryId_totalQty.get(key);
 | 
			
		||||
            Integer scale = (Integer)applyEntryScaleMap.get(key);
 | 
			
		||||
            DynamicObject entry = (DynamicObject)applyEntryId_entry.get(key);
 | 
			
		||||
            if (entry != null) {
 | 
			
		||||
                BigDecimal restQty = entry.getBigDecimal("restqty");
 | 
			
		||||
                String materialNameString = ((DynamicObject)applyEntryId_entry.get(key)).getDynamicObject("material").getString("name");
 | 
			
		||||
                if (totalQty.compareTo(restQty) > 0) {
 | 
			
		||||
                    String outBillString = (String)applyEntryId_outBillString.get(key);
 | 
			
		||||
                    if (restQty.compareTo(BigDecimal.ZERO) == 0) {
 | 
			
		||||
                        restQty = BigDecimal.ZERO;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    String tip = String.format(ResManager.loadKDString("领料申请单%1$s中物料 %2$s 在对应的出库单%3$s数量之和超过领料申请单剩余数量,数量之和为%4$s,领料申请单剩余数量为%5$s;\n", "MaterialOutBillOp_8", "ec-ecma-opplugin", new Object[0]), applyBillString, materialNameString, outBillString, totalQty.setScale(scale), restQty.setScale(scale));
 | 
			
		||||
                    tipsStringBuffer.append(tip);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return tipsStringBuffer.toString();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Map<Long, DynamicObject> getApplyEntryId_entryByApplyBillEntry(DynamicObject applyBill) {
 | 
			
		||||
        Map<Long, DynamicObject> applyEntryId_restQty = new HashMap();
 | 
			
		||||
        DynamicObjectCollection entries = applyBill.getDynamicObjectCollection("entryentity");
 | 
			
		||||
        Iterator var4 = entries.iterator();
 | 
			
		||||
 | 
			
		||||
        while(var4.hasNext()) {
 | 
			
		||||
            DynamicObject item = (DynamicObject)var4.next();
 | 
			
		||||
            Long id = (Long)item.getPkValue();
 | 
			
		||||
            applyEntryId_restQty.put(id, item);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return applyEntryId_restQty;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Map<Long, BigDecimal> getApplyEntryId_totalQtyMapByMergeOutBillEntry(List<DynamicObject> outBillList) {
 | 
			
		||||
        Map<Long, BigDecimal> applyBillEntryId_totalQty = new HashMap();
 | 
			
		||||
        Iterator var3 = outBillList.iterator();
 | 
			
		||||
 | 
			
		||||
        while(var3.hasNext()) {
 | 
			
		||||
            DynamicObject outBill = (DynamicObject)var3.next();
 | 
			
		||||
            DynamicObjectCollection entries = outBill.getDynamicObjectCollection("entryentity");
 | 
			
		||||
            Iterator var6 = entries.iterator();
 | 
			
		||||
 | 
			
		||||
            while(var6.hasNext()) {
 | 
			
		||||
                DynamicObject item = (DynamicObject)var6.next();
 | 
			
		||||
                Long applyBillEntryId = item.getLong("applyentryid");
 | 
			
		||||
                BigDecimal qty = item.getBigDecimal("qty");
 | 
			
		||||
                BigDecimal totalQty = (BigDecimal)applyBillEntryId_totalQty.getOrDefault(applyBillEntryId, BigDecimal.ZERO);
 | 
			
		||||
                totalQty = totalQty.add(qty);
 | 
			
		||||
                applyBillEntryId_totalQty.put(applyBillEntryId, totalQty);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return applyBillEntryId_totalQty;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Map<Long, String> getApplyEntryId_outBillNameMap(List<DynamicObject> outBillList) {
 | 
			
		||||
        Map<Long, String> applyBillEntryId_outBillName = new HashMap();
 | 
			
		||||
        Iterator var3 = outBillList.iterator();
 | 
			
		||||
 | 
			
		||||
        while(var3.hasNext()) {
 | 
			
		||||
            DynamicObject outBill = (DynamicObject)var3.next();
 | 
			
		||||
            String billNo = outBill.getString("billno");
 | 
			
		||||
            String billName = outBill.getString("billname");
 | 
			
		||||
            DynamicObjectCollection entries = outBill.getDynamicObjectCollection("entryentity");
 | 
			
		||||
            Iterator var8 = entries.iterator();
 | 
			
		||||
 | 
			
		||||
            while(var8.hasNext()) {
 | 
			
		||||
                DynamicObject item = (DynamicObject)var8.next();
 | 
			
		||||
                Long applyBillEntryId = item.getLong("applyentryid");
 | 
			
		||||
                String billString = (String)applyBillEntryId_outBillName.getOrDefault(applyBillEntryId, "") + "【" + billNo + " " + billName + "】";
 | 
			
		||||
                applyBillEntryId_outBillName.put(applyBillEntryId, billString);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return applyBillEntryId_outBillName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void auditWriteBackForApplyBill(DynamicObject applyBill, List<DynamicObject> outBillList) {
 | 
			
		||||
        Map<Long, BigDecimal> applyBillEntryId_totalQty = this.getApplyEntryId_totalQtyMapByMergeOutBillEntry(outBillList);
 | 
			
		||||
        DynamicObjectCollection entries = applyBill.getDynamicObjectCollection("entryentity");
 | 
			
		||||
        Boolean flag = true;
 | 
			
		||||
        Iterator var6 = entries.iterator();
 | 
			
		||||
 | 
			
		||||
        while(var6.hasNext()) {
 | 
			
		||||
            DynamicObject item = (DynamicObject)var6.next();
 | 
			
		||||
            BigDecimal restQty = item.getBigDecimal("restqty");
 | 
			
		||||
            BigDecimal totalQty = (BigDecimal)applyBillEntryId_totalQty.getOrDefault(item.getPkValue(), BigDecimal.ZERO);
 | 
			
		||||
            BigDecimal realOutQty = item.getBigDecimal("realoutqty");
 | 
			
		||||
            if (totalQty.compareTo(BigDecimal.ZERO) != 0) {
 | 
			
		||||
                realOutQty = realOutQty.add(totalQty);
 | 
			
		||||
                restQty = restQty.subtract(totalQty);
 | 
			
		||||
                item.set("realoutqty", realOutQty);
 | 
			
		||||
                item.set("restqty", restQty);
 | 
			
		||||
                if (restQty.compareTo(BigDecimal.ZERO) != 0) {
 | 
			
		||||
                    flag = false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (flag) {
 | 
			
		||||
            applyBill.set("materialout", 1);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void unAuditWriteBackForApplyBill(DynamicObject applyBill, List<DynamicObject> outBillList) {
 | 
			
		||||
        Map<Long, BigDecimal> applyBillEntryId_totalQty = this.getApplyEntryId_totalQtyMapByMergeOutBillEntry(outBillList);
 | 
			
		||||
        DynamicObjectCollection entries = applyBill.getDynamicObjectCollection("entryentity");
 | 
			
		||||
        Iterator var5 = entries.iterator();
 | 
			
		||||
 | 
			
		||||
        while(var5.hasNext()) {
 | 
			
		||||
            DynamicObject item = (DynamicObject)var5.next();
 | 
			
		||||
            BigDecimal restQty = item.getBigDecimal("restqty");
 | 
			
		||||
            BigDecimal totalQty = (BigDecimal)applyBillEntryId_totalQty.getOrDefault(item.getPkValue(), BigDecimal.ZERO);
 | 
			
		||||
            BigDecimal realOutQty = item.getBigDecimal("realoutqty");
 | 
			
		||||
            if (totalQty.compareTo(BigDecimal.ZERO) != 0) {
 | 
			
		||||
                realOutQty = realOutQty.subtract(totalQty);
 | 
			
		||||
                restQty = restQty.add(totalQty);
 | 
			
		||||
                item.set("realoutqty", realOutQty);
 | 
			
		||||
                item.set("restqty", restQty);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        applyBill.set("materialout", 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void auditWriteBack(DynamicObject[] dataEntities) {
 | 
			
		||||
        Map<Long, List<DynamicObject>> applyBillId_outBill = new HashMap();
 | 
			
		||||
        Set<Long> applyBillIdSet = new HashSet();
 | 
			
		||||
        DynamicObject[] var4 = dataEntities;
 | 
			
		||||
        int var5 = dataEntities.length;
 | 
			
		||||
 | 
			
		||||
        for(int var6 = 0; var6 < var5; ++var6) {
 | 
			
		||||
            DynamicObject item = var4[var6];
 | 
			
		||||
            DynamicObject applyBill = item.getDynamicObject("applybill");
 | 
			
		||||
            if (applyBill != null) {
 | 
			
		||||
                Long applyBillId = (Long)applyBill.getPkValue();
 | 
			
		||||
                applyBillIdSet.add(applyBillId);
 | 
			
		||||
                List<DynamicObject> outBillList = (List)applyBillId_outBill.get(applyBillId);
 | 
			
		||||
                if (outBillList == null) {
 | 
			
		||||
                    outBillList = new ArrayList();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                ((List)outBillList).add(item);
 | 
			
		||||
                applyBillId_outBill.put(applyBillId, outBillList);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        QFilter idFilter = new QFilter("id", "in", applyBillIdSet);
 | 
			
		||||
        DynamicObject[] applyBillArr = BusinessDataServiceHelper.load("ecma_materialapplybill", "billno,billname,materialout,entryentity,entryentity.listingid,entryentity.material,entryentity.restqty,entryentity.realoutqty", new QFilter[]{idFilter});
 | 
			
		||||
        DynamicObject[] var13 = applyBillArr;
 | 
			
		||||
        int var14 = applyBillArr.length;
 | 
			
		||||
 | 
			
		||||
        for(int var15 = 0; var15 < var14; ++var15) {
 | 
			
		||||
            DynamicObject item = var13[var15];
 | 
			
		||||
            this.auditWriteBackForApplyBill(item, (List)applyBillId_outBill.get(item.getPkValue()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        SaveServiceHelper.save(applyBillArr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void unAuditWriteBack(DynamicObject[] dataEntities) {
 | 
			
		||||
        Map<Long, List<DynamicObject>> applyBillId_outBill = new HashMap();
 | 
			
		||||
        Set<Long> applyBillIdSet = new HashSet();
 | 
			
		||||
        DynamicObject[] var4 = dataEntities;
 | 
			
		||||
        int var5 = dataEntities.length;
 | 
			
		||||
 | 
			
		||||
        for(int var6 = 0; var6 < var5; ++var6) {
 | 
			
		||||
            DynamicObject item = var4[var6];
 | 
			
		||||
            DynamicObject applyBill = item.getDynamicObject("applybill");
 | 
			
		||||
            if (applyBill != null) {
 | 
			
		||||
                Long applyBillId = (Long)applyBill.getPkValue();
 | 
			
		||||
                applyBillIdSet.add(applyBillId);
 | 
			
		||||
                List<DynamicObject> outBillList = (List)applyBillId_outBill.get(applyBillId);
 | 
			
		||||
                if (outBillList == null) {
 | 
			
		||||
                    outBillList = new ArrayList();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                ((List)outBillList).add(item);
 | 
			
		||||
                applyBillId_outBill.put(applyBillId, outBillList);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        QFilter idFilter = new QFilter("id", "in", applyBillIdSet);
 | 
			
		||||
        DynamicObject[] applyBillArr = BusinessDataServiceHelper.load("ecma_materialapplybill", "billno,billname,materialout,entryentity,entryentity.listingid,entryentity.material,entryentity.restqty,entryentity.realoutqty", new QFilter[]{idFilter});
 | 
			
		||||
        DynamicObject[] var13 = applyBillArr;
 | 
			
		||||
        int var14 = applyBillArr.length;
 | 
			
		||||
 | 
			
		||||
        for(int var15 = 0; var15 < var14; ++var15) {
 | 
			
		||||
            DynamicObject item = var13[var15];
 | 
			
		||||
            this.unAuditWriteBackForApplyBill(item, (List)applyBillId_outBill.get(item.getPkValue()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        SaveServiceHelper.save(applyBillArr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void rewritePoundBills(DynamicObject[] dataEntities, boolean revoke) {
 | 
			
		||||
        if (!ArrayUtils.isEmpty(dataEntities)) {
 | 
			
		||||
            Set<Long> poundIds = new HashSet();
 | 
			
		||||
            Arrays.stream(dataEntities).filter((dataEntity) -> {
 | 
			
		||||
                return dataEntity.getBoolean("poundout");
 | 
			
		||||
            }).forEach((dataEntity) -> {
 | 
			
		||||
                DynamicObjectCollection entryEntity = dataEntity.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                if (!CollectionUtils.isEmpty(entryEntity)) {
 | 
			
		||||
                    Set<Long> entryPoundIds = (Set)entryEntity.stream().map((dynamicObject) -> {
 | 
			
		||||
                        return dynamicObject.getLong("poundid");
 | 
			
		||||
                    }).collect(Collectors.toSet());
 | 
			
		||||
                    poundIds.addAll(entryPoundIds);
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            if (!CollectionUtils.isEmpty(poundIds)) {
 | 
			
		||||
                QFilter poundPkIdFilter = new QFilter(PoundConstant.ID_ENTITY_PK, "in", poundIds);
 | 
			
		||||
                DynamicObject[] poundEntities = BusinessDataServiceHelper.load("ecma_poundbill", "depotstatus,opt_type", new QFilter[]{poundPkIdFilter});
 | 
			
		||||
                if (!ArrayUtils.isEmpty(poundEntities)) {
 | 
			
		||||
                    Arrays.stream(poundEntities).forEach((poundEntity) -> {
 | 
			
		||||
                        poundEntity.set("depotstatus", !revoke);
 | 
			
		||||
                        poundEntity.set("opt_type", "0");
 | 
			
		||||
                    });
 | 
			
		||||
                    SaveServiceHelper.save(poundEntities);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue