|  | @@ -0,0 +1,366 @@
 | 
	
		
			
				|  |  | +package fi.er.opplugin;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.HashSet;
 | 
	
		
			
				|  |  | +import java.util.Iterator;
 | 
	
		
			
				|  |  | +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.fi.er.business.utils.CollectorsUtil;
 | 
	
		
			
				|  |  | +import kd.fi.er.business.utils.ErCommonUtils;
 | 
	
		
			
				|  |  | +import kd.fi.er.business.utils.ErEntityTypeUtils;
 | 
	
		
			
				|  |  | +import kd.fi.er.business.utils.SystemParamterUtil;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +public class ErVerifyShareRuleHelperNew {
 | 
	
		
			
				|  |  | +    public ErVerifyShareRuleHelperNew() {
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public static String getVerifyShareRuleMsg(DynamicObject bill) {
 | 
	
		
			
				|  |  | +        String msg = verifyCommonRule(bill);
 | 
	
		
			
				|  |  | +        if (StringUtils.isNotBlank(msg)) {
 | 
	
		
			
				|  |  | +            return msg;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            msg = verifyOrgRule(bill);
 | 
	
		
			
				|  |  | +            if (StringUtils.isNotBlank(msg)) {
 | 
	
		
			
				|  |  | +                return msg;
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                msg = verifyMonthRule(bill);
 | 
	
		
			
				|  |  | +                return StringUtils.isNotBlank(msg) ? msg : msg;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private static String verifyCommonRule(DynamicObject bill) {
 | 
	
		
			
				|  |  | +        String msg = "";
 | 
	
		
			
				|  |  | +        Object shareRule = bill.get("sharerule");
 | 
	
		
			
				|  |  | +        if (shareRule == null) {
 | 
	
		
			
				|  |  | +            msg = ResManager.loadKDString("请填写分摊规则。", "ErVerifyShareRuleHelper_1", "fi-er-business", new Object[0]);
 | 
	
		
			
				|  |  | +            return msg;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            DynamicObjectCollection entrys = bill.getDynamicObjectCollection("expenseentryentity_rule");
 | 
	
		
			
				|  |  | +            if (entrys != null && !entrys.isEmpty()) {
 | 
	
		
			
				|  |  | +                if ("avg".equalsIgnoreCase(bill.getString("sharemethod")) && !StringUtils.equals("expenseitemrule", String.valueOf(shareRule))) {
 | 
	
		
			
				|  |  | +                    return msg;
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    int index;
 | 
	
		
			
				|  |  | +                    Iterator var6;
 | 
	
		
			
				|  |  | +                    DynamicObject obj;
 | 
	
		
			
				|  |  | +                    BigDecimal shareRate;
 | 
	
		
			
				|  |  | +                    BigDecimal totalshareAmountComRule;
 | 
	
		
			
				|  |  | +                    if ("rate".equalsIgnoreCase(bill.getString("sharemethod")) && !StringUtils.equals("expenseitemrule", String.valueOf(shareRule))) {
 | 
	
		
			
				|  |  | +                        BigDecimal sumShareRate = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                        index = 1;
 | 
	
		
			
				|  |  | +                        var6 = entrys.iterator();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        while(true) {
 | 
	
		
			
				|  |  | +                            if (!var6.hasNext()) {
 | 
	
		
			
				|  |  | +                                totalshareAmountComRule = new BigDecimal(100);
 | 
	
		
			
				|  |  | +                                if (isAllShare(bill) && sumShareRate.compareTo(totalshareAmountComRule) != 0) {
 | 
	
		
			
				|  |  | +                                    msg = ResManager.loadKDString("分摊比例合计不等于100%,请先修改分摊比例。", "ErVerifyShareRuleHelper_20", "fi-er-business", new Object[0]);
 | 
	
		
			
				|  |  | +                                    return msg;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                if (!isAllShare(bill) && sumShareRate.compareTo(totalshareAmountComRule) > 0) {
 | 
	
		
			
				|  |  | +                                    msg = ResManager.loadKDString("分摊比例合计超过100%,请先修改分摊比例。", "ErVerifyShareRuleHelper_21", "fi-er-business", new Object[0]);
 | 
	
		
			
				|  |  | +                                    return msg;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            obj = (DynamicObject)var6.next();
 | 
	
		
			
				|  |  | +                            shareRate = obj.getBigDecimal("sharerate_comrule");
 | 
	
		
			
				|  |  | +                            if (null == shareRate || shareRate.compareTo(BigDecimal.ZERO) == 0) {
 | 
	
		
			
				|  |  | +                                msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“分摊比例”字段。", "ErVerifyShareRuleHelper_31", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                return msg;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            sumShareRate = sumShareRate.add(shareRate);
 | 
	
		
			
				|  |  | +                            ++index;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    DynamicObject entrycostcompany;
 | 
	
		
			
				|  |  | +                    DynamicObject expenEntry;
 | 
	
		
			
				|  |  | +                    DynamicObject entryExpenseItem;
 | 
	
		
			
				|  |  | +                    if ("amount".equalsIgnoreCase(bill.getString("sharemethod"))) {
 | 
	
		
			
				|  |  | +                        String entityTeye = bill.getDataEntityType().getName();
 | 
	
		
			
				|  |  | +                        BigDecimal shareAppamountComrule;
 | 
	
		
			
				|  |  | +                        DynamicObjectCollection ruleEntrys;
 | 
	
		
			
				|  |  | +                        DynamicObjectCollection expenEntrys;
 | 
	
		
			
				|  |  | +                        if (!ErEntityTypeUtils.isTripReimburseBill(entityTeye)) {
 | 
	
		
			
				|  |  | +                            ruleEntrys = bill.getDynamicObjectCollection("expenseentryentity_rule");
 | 
	
		
			
				|  |  | +                            index = 1;
 | 
	
		
			
				|  |  | +                            Iterator var23 = ruleEntrys.iterator();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            label202:
 | 
	
		
			
				|  |  | +                            while(true) {
 | 
	
		
			
				|  |  | +                                if (!var23.hasNext()) {
 | 
	
		
			
				|  |  | +                                    Map<Long, BigDecimal> ruleEntryAmountMap = (Map)ruleEntrys.stream().collect(Collectors.groupingBy((ruleEntry) -> {
 | 
	
		
			
				|  |  | +                                        return ruleEntry.getLong("sharewaitid_comrule");
 | 
	
		
			
				|  |  | +                                    }, CollectorsUtil.summingBigDecimal((ruleEntry) -> {
 | 
	
		
			
				|  |  | +                                        return ruleEntry.getBigDecimal("shareamount_comrule");
 | 
	
		
			
				|  |  | +                                    })));
 | 
	
		
			
				|  |  | +                                    Map<Long, BigDecimal> ruleEntryApproveAmountMap = (Map)ruleEntrys.stream().collect(Collectors.groupingBy((ruleEntry) -> {
 | 
	
		
			
				|  |  | +                                        return ruleEntry.getLong("sharewaitid_comrule");
 | 
	
		
			
				|  |  | +                                    }, CollectorsUtil.summingBigDecimal((ruleEntry) -> {
 | 
	
		
			
				|  |  | +                                        return ruleEntry.getBigDecimal("shareappamount_comrule");
 | 
	
		
			
				|  |  | +                                    })));
 | 
	
		
			
				|  |  | +                                    new DynamicObjectCollection();
 | 
	
		
			
				|  |  | +                                    String amountProp = "";
 | 
	
		
			
				|  |  | +                                    String approveAmountProp = "";
 | 
	
		
			
				|  |  | +                                    if (ErEntityTypeUtils.isShareBill(entityTeye)) {
 | 
	
		
			
				|  |  | +                                        expenEntrys = bill.getDynamicObjectCollection("expenseentryentity_wait");
 | 
	
		
			
				|  |  | +                                        amountProp = "expenseamount_wait";
 | 
	
		
			
				|  |  | +                                        approveAmountProp = "expeapproveamount_wait";
 | 
	
		
			
				|  |  | +                                    } else {
 | 
	
		
			
				|  |  | +                                        expenEntrys = bill.getDynamicObjectCollection("expenseentryentity");
 | 
	
		
			
				|  |  | +                                        amountProp = "expenseamount";
 | 
	
		
			
				|  |  | +                                        approveAmountProp = "expeapproveamount";
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                    int i = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                    while(true) {
 | 
	
		
			
				|  |  | +                                        if (i >= expenEntrys.size()) {
 | 
	
		
			
				|  |  | +                                            break label202;
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                        expenEntry = (DynamicObject) expenEntrys.get(i);
 | 
	
		
			
				|  |  | +                                        Long expenEntryId = ErCommonUtils.getPk(expenEntry.getPkValue());
 | 
	
		
			
				|  |  | +                                        BigDecimal amount = expenEntry.getBigDecimal(amountProp);
 | 
	
		
			
				|  |  | +                                        if (ruleEntryAmountMap.get(expenEntryId) != null && ((BigDecimal)ruleEntryAmountMap.get(expenEntryId)).compareTo(amount) != 0) {
 | 
	
		
			
				|  |  | +                                            msg = String.format(ResManager.loadKDString("第%d行费用金额不等于分摊信息分摊金额合计,请修改。", "ErVerifyShareRuleHelper_9", "fi-er-business", new Object[0]), i + 1);
 | 
	
		
			
				|  |  | +                                            return msg;
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                        BigDecimal appAmount = expenEntry.getBigDecimal(approveAmountProp);
 | 
	
		
			
				|  |  | +                                        if (ruleEntryApproveAmountMap.get(expenEntryId) != null && ((BigDecimal)ruleEntryApproveAmountMap.get(expenEntryId)).compareTo(appAmount) != 0) {
 | 
	
		
			
				|  |  | +                                            msg = String.format(ResManager.loadKDString("第%d行费用金额不等于分摊信息核定金额合计,请修改。", "ErVerifyShareRuleHelper_10", "fi-er-business", new Object[0]), i + 1);
 | 
	
		
			
				|  |  | +                                            return msg;
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                        ++i;
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                entryExpenseItem = (DynamicObject)var23.next();
 | 
	
		
			
				|  |  | +                                BigDecimal shareAmountComRule = entryExpenseItem.getBigDecimal("shareamount_comrule");
 | 
	
		
			
				|  |  | +                                shareAppamountComrule = entryExpenseItem.getBigDecimal("shareappamount_comrule");
 | 
	
		
			
				|  |  | +                                if (null == shareAmountComRule || shareAmountComRule.compareTo(BigDecimal.ZERO) == 0) {
 | 
	
		
			
				|  |  | +                                    msg = String.format(ResManager.loadKDString("第%s行分摊金额为空,请录入分摊金额。", "ErVerifyShareRuleHelper_32", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                    return msg;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                if (null == shareAppamountComrule || shareAppamountComrule.compareTo(BigDecimal.ZERO) == 0) {
 | 
	
		
			
				|  |  | +                                    msg = String.format(ResManager.loadKDString("第%s行核定金额为空,请录入核定金额。", "ErVerifyShareRuleHelper_33", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                    return msg;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                ++index;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            ruleEntrys = bill.getDynamicObjectCollection("expenseentryentity_rule");
 | 
	
		
			
				|  |  | +                            totalshareAmountComRule = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                            index = 1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            for(Iterator var24 = ruleEntrys.iterator(); var24.hasNext(); ++index) {
 | 
	
		
			
				|  |  | +                                entrycostcompany = (DynamicObject)var24.next();
 | 
	
		
			
				|  |  | +                                shareAppamountComrule = entrycostcompany.getBigDecimal("shareamount_comrule");
 | 
	
		
			
				|  |  | +                                if (null == shareAppamountComrule || shareAppamountComrule.compareTo(BigDecimal.ZERO) == 0) {
 | 
	
		
			
				|  |  | +                                    msg = String.format(ResManager.loadKDString("第%s行分摊金额为空,请录入分摊金额。", "ErVerifyShareRuleHelper_32", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                    return msg;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                totalshareAmountComRule = totalshareAmountComRule.add(shareAppamountComrule);
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            shareRate = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +                            expenEntrys = bill.getDynamicObjectCollection("tripentry");
 | 
	
		
			
				|  |  | +                            if (!expenEntrys.isEmpty()) {
 | 
	
		
			
				|  |  | +                                Iterator var32 = expenEntrys.iterator();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                label173:
 | 
	
		
			
				|  |  | +                                while(true) {
 | 
	
		
			
				|  |  | +                                    DynamicObjectCollection tripDetailEntrys;
 | 
	
		
			
				|  |  | +                                    do {
 | 
	
		
			
				|  |  | +                                        if (!var32.hasNext()) {
 | 
	
		
			
				|  |  | +                                            break label173;
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                        expenEntry = (DynamicObject)var32.next();
 | 
	
		
			
				|  |  | +                                        tripDetailEntrys = expenEntry.getDynamicObjectCollection("entryentity");
 | 
	
		
			
				|  |  | +                                    } while(tripDetailEntrys.isEmpty());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                    DynamicObject tripDetailEntry;
 | 
	
		
			
				|  |  | +                                    for(Iterator var13 = tripDetailEntrys.iterator(); var13.hasNext(); shareRate = shareRate.add(tripDetailEntry.getBigDecimal("entryappamount"))) {
 | 
	
		
			
				|  |  | +                                        tripDetailEntry = (DynamicObject)var13.next();
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            if (totalshareAmountComRule.compareTo(shareRate) != 0) {
 | 
	
		
			
				|  |  | +                                msg = ResManager.loadKDString("费用核定总金额不等于分摊信息分摊金额合计,请修改。", "ErVerifyShareRuleHelper_25", "fi-er-business", new Object[0]);
 | 
	
		
			
				|  |  | +                                return msg;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    if ("expenseitemrule".equalsIgnoreCase(shareRule.toString())) {
 | 
	
		
			
				|  |  | +                        DynamicObjectCollection ruleEntrys = bill.getDynamicObjectCollection("expenseentryentity_rule");
 | 
	
		
			
				|  |  | +                        index = 1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        for(var6 = ruleEntrys.iterator(); var6.hasNext(); ++index) {
 | 
	
		
			
				|  |  | +                            obj = (DynamicObject)var6.next();
 | 
	
		
			
				|  |  | +                            shareRate = null;
 | 
	
		
			
				|  |  | +                            if (ErEntityTypeUtils.isTripReimburseBill(bill.getDataEntityType().getName())) {
 | 
	
		
			
				|  |  | +                                entryExpenseItem = obj.getDynamicObject("entrytravelexpenseitem");
 | 
	
		
			
				|  |  | +                            } else {
 | 
	
		
			
				|  |  | +                                entryExpenseItem = obj.getDynamicObject("entryexpenseitem");
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            entrycostcompany = obj.getDynamicObject("entrycostcompany_orgrule");
 | 
	
		
			
				|  |  | +                            DynamicObject entrycostdept = obj.getDynamicObject("entrycostdept_orgrule");
 | 
	
		
			
				|  |  | +                            BigDecimal doing_shareRate = obj.getBigDecimal("sharerate_comrule");
 | 
	
		
			
				|  |  | +                            if (null == entrycostcompany) {
 | 
	
		
			
				|  |  | +                                msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“费用承担公司”。", "ErVerifyShareRuleHelper_34", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                return msg;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            if (null == entrycostdept) {
 | 
	
		
			
				|  |  | +                                msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“费用承担部门”。", "ErVerifyShareRuleHelper_35", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                return msg;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            if (null == entryExpenseItem) {
 | 
	
		
			
				|  |  | +                                msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“费用项目”。", "ErVerifyShareRuleHelper_36", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                return msg;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                            if ("rate".equalsIgnoreCase(bill.getString("sharemethod")) && (null == doing_shareRate || doing_shareRate.compareTo(BigDecimal.ZERO) == 0)) {
 | 
	
		
			
				|  |  | +                                msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“分摊比例”。", "ErVerifyShareRuleHelper_37", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                                return msg;
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        Map<Long, BigDecimal> ruleEntryRateMap = (Map)ruleEntrys.stream().collect(Collectors.groupingBy((ruleEntry) -> {
 | 
	
		
			
				|  |  | +                            return ruleEntry.getLong("sharewaitid_comrule");
 | 
	
		
			
				|  |  | +                        }, CollectorsUtil.summingBigDecimal((ruleEntry) -> {
 | 
	
		
			
				|  |  | +                            return ruleEntry.getBigDecimal("sharerate_comrule");
 | 
	
		
			
				|  |  | +                        })));
 | 
	
		
			
				|  |  | +                        new DynamicObjectCollection();
 | 
	
		
			
				|  |  | +                        shareRate = new BigDecimal(100);
 | 
	
		
			
				|  |  | +                        String entityTeye = bill.getDataEntityType().getName();
 | 
	
		
			
				|  |  | +                        DynamicObjectCollection expenEntrys;
 | 
	
		
			
				|  |  | +                        if (ErEntityTypeUtils.isShareBill(entityTeye)) {
 | 
	
		
			
				|  |  | +                            expenEntrys = bill.getDynamicObjectCollection("expenseentryentity_wait");
 | 
	
		
			
				|  |  | +                        } else {
 | 
	
		
			
				|  |  | +                            expenEntrys = bill.getDynamicObjectCollection("expenseentryentity");
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        for(int i = 0; i < expenEntrys.size(); ++i) {
 | 
	
		
			
				|  |  | +                            expenEntry = (DynamicObject)expenEntrys.get(i);
 | 
	
		
			
				|  |  | +                            Long expenEntryId = ErCommonUtils.getPk(expenEntry.getPkValue());
 | 
	
		
			
				|  |  | +                            if ("rate".equalsIgnoreCase(bill.getString("sharemethod"))) {
 | 
	
		
			
				|  |  | +                                if (ruleEntryRateMap.get(expenEntryId) != null && isAllShare(bill) && ((BigDecimal)ruleEntryRateMap.get(expenEntryId)).compareTo(shareRate) != 0) {
 | 
	
		
			
				|  |  | +                                    msg = String.format(ResManager.loadKDString("“待摊行号”%s分摊比例合计不等于100%%,请先修改分摊比例。", "ErVerifyShareRuleHelper_38", "fi-er-business", new Object[0]), i + 1);
 | 
	
		
			
				|  |  | +                                    return msg;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                                if (ruleEntryRateMap.get(expenEntryId) != null && !isAllShare(bill) && ((BigDecimal)ruleEntryRateMap.get(expenEntryId)).compareTo(shareRate) > 0) {
 | 
	
		
			
				|  |  | +                                    msg = String.format(ResManager.loadKDString("“待摊行号”%s分摊比例合计超过100%%,请先修改分摊比例。", "ErVerifyShareRuleHelper_39", "fi-er-business", new Object[0]), i + 1);
 | 
	
		
			
				|  |  | +                                    return msg;
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        return msg;
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        return msg;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                msg = ResManager.loadKDString("分摊明细为空,请填写分摊明细。", "ErVerifyShareRuleHelper_16", "fi-er-business", new Object[0]);
 | 
	
		
			
				|  |  | +                return msg;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private static boolean isAllShare(DynamicObject bill) {
 | 
	
		
			
				|  |  | +        String entityTeye = bill.getDataEntityType().getName();
 | 
	
		
			
				|  |  | +        if (!ErEntityTypeUtils.isShareBill(entityTeye)) {
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            DynamicObject company = (DynamicObject)bill.get("company");
 | 
	
		
			
				|  |  | +            if (company == null) {
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                Long companyId = (Long)company.getPkValue();
 | 
	
		
			
				|  |  | +                return SystemParamterUtil.isAllShare(companyId);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private static String verifyOrgRule(DynamicObject bill) {
 | 
	
		
			
				|  |  | +        String msg = "";
 | 
	
		
			
				|  |  | +        Object shareRule = bill.get("sharerule");
 | 
	
		
			
				|  |  | +        if (!StringUtils.equals("orgrule", String.valueOf(shareRule))) {
 | 
	
		
			
				|  |  | +            return msg;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            DynamicObjectCollection entrys = bill.getDynamicObjectCollection("expenseentryentity_rule");
 | 
	
		
			
				|  |  | +            int index = 1;
 | 
	
		
			
				|  |  | +            DynamicObject costcompany = bill.getDynamicObject("costcompany");
 | 
	
		
			
				|  |  | +            String number = costcompany.getString("number");
 | 
	
		
			
				|  |  | +            for(Iterator var5 = entrys.iterator(); var5.hasNext(); ++index) {
 | 
	
		
			
				|  |  | +                DynamicObject obj = (DynamicObject)var5.next();
 | 
	
		
			
				|  |  | +                DynamicObject entryCostCompany = obj.getDynamicObject("entrycostcompany_orgrule");
 | 
	
		
			
				|  |  | +                DynamicObject entryCostDept = obj.getDynamicObject("entrycostdept_orgrule");
 | 
	
		
			
				|  |  | +                if (null == entryCostDept && !number.equals("10119")) {
 | 
	
		
			
				|  |  | +                    msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“费用承担部门”。", "ErVerifyShareRuleHelper_35", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                    return msg;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (null == entryCostCompany) {
 | 
	
		
			
				|  |  | +                    msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“费用承担公司”。", "ErVerifyShareRuleHelper_34", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                    return msg;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return msg;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private static String verifyMonthRule(DynamicObject bill) {
 | 
	
		
			
				|  |  | +        String msg = "";
 | 
	
		
			
				|  |  | +        Object shareRule = bill.get("sharerule");
 | 
	
		
			
				|  |  | +        if (!StringUtils.equals("monthrule", String.valueOf(shareRule))) {
 | 
	
		
			
				|  |  | +            return msg;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            DynamicObjectCollection entrys = bill.getDynamicObjectCollection("expenseentryentity_rule");
 | 
	
		
			
				|  |  | +            Set<Date> allMonth = new HashSet(4);
 | 
	
		
			
				|  |  | +            int index = 1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            for(Iterator var6 = entrys.iterator(); var6.hasNext(); ++index) {
 | 
	
		
			
				|  |  | +                DynamicObject obj = (DynamicObject)var6.next();
 | 
	
		
			
				|  |  | +                Date entryMonth = obj.getDate("entrymonth_monthrule");
 | 
	
		
			
				|  |  | +                if (null == entryMonth) {
 | 
	
		
			
				|  |  | +                    msg = String.format(ResManager.loadKDString("请填写“分摊明细”第%s行“月份”字段。", "ErVerifyShareRuleHelper_40", "fi-er-business", new Object[0]), index);
 | 
	
		
			
				|  |  | +                    return msg;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                allMonth.add(entryMonth);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (allMonth.size() != entrys.size() && !"amount".equalsIgnoreCase(bill.getString("sharemethod"))) {
 | 
	
		
			
				|  |  | +                msg = ResManager.loadKDString("分摊明细月份重复,请修改。", "ErVerifyShareRuleHelper_14", "fi-er-business", new Object[0]);
 | 
	
		
			
				|  |  | +                return msg;
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                return msg;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |