2 Commits c234cbf8e4 ... 12e81e37fb

Auteur SHA1 Message Date
  13246659623 12e81e37fb Merge remote-tracking branch 'origin/master' il y a 5 mois
  13246659623 0ee8cf5ad7 解锁费用项目 il y a 5 mois

+ 19 - 0
src/main/java/kd/fi/er/opplugin/web/TripRequestSubmitOpEx.java

@@ -0,0 +1,19 @@
+package kd.fi.er.opplugin.web;
+
+import kd.bos.entity.plugin.AddValidatorsEventArgs;
+import kd.bos.entity.validate.AbstractValidator;
+import kd.fi.er.validator.*;
+
+import java.util.List;
+
+public class TripRequestSubmitOpEx extends TripRequestSubmitOp{
+
+    @Override
+    public void onAddValidators(AddValidatorsEventArgs e) {
+        List<AbstractValidator> validators = e.getValidators();
+        validators.add(new TripReqSubmitValidatorEx());
+        validators.add(new SameCurrencySubmitValidator());
+        validators.add(new TripRequestDateValidator());
+        validators.add(new PayeraccountSubmitValidator());
+    }
+}

+ 117 - 0
src/main/java/kd/fi/er/validator/TripReqSubmitValidatorEx.java

@@ -0,0 +1,117 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package kd.fi.er.validator;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+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.entity.ExtendedDataEntity;
+import kd.bos.entity.validate.AbstractValidator;
+import kd.fi.er.business.servicehelper.LoanBalanceServiceHelper;
+import kd.fi.er.business.utils.ErCommonUtils;
+import kd.fi.er.common.ErBillStatusEnum;
+import org.apache.commons.lang3.StringUtils;
+
+public class TripReqSubmitValidatorEx extends AbstractValidator {
+    public TripReqSubmitValidatorEx() {
+    }
+
+    public void validate() {
+        ExtendedDataEntity[] dataEntities = this.getDataEntities();
+        ExtendedDataEntity[] var2 = dataEntities;
+        int var3 = dataEntities.length;
+
+        for(int var4 = 0; var4 < var3; ++var4) {
+            ExtendedDataEntity dataEntity = var2[var4];
+            DynamicObject dynamicObject = dataEntity.getDataEntity();
+            if (dynamicObject.getDynamicObject("applier") == null) {
+                this.addErrorMessage(dataEntity, ResManager.loadKDString("申请人为空,请联系管理员设置。", "TripReqSubmitValidator_20", "fi-er-opplugin", new Object[0]));
+                return;
+            }
+
+            String billStatus = dynamicObject.getString("billstatus");
+            boolean isLoan = dynamicObject.getBoolean("isloan");
+            boolean istravelers = dynamicObject.getBoolean("istravelers");
+            if (!ErBillStatusEnum.A.toString().equals(billStatus) && !ErBillStatusEnum.D.toString().equals(billStatus)) {
+                if (!isLoan) {
+                    this.addErrorMessage(dataEntity, ResManager.loadKDString("出差申请单需先暂存后才能提交。", "TripReqSubmitValidator_10", "fi-er-opplugin", new Object[0]));
+                } else {
+                    this.addErrorMessage(dataEntity, ResManager.loadKDString("暂存的出差申请单(借)才允许提交。", "TripReqSubmitValidator_11", "fi-er-opplugin", new Object[0]));
+                }
+            } else {
+                if (isLoan) {
+                    Date repaydate = dynamicObject.getDate("repaymentdate");
+                    Date bizdate = dynamicObject.getDate("bizdate");
+                    if (repaydate == null || repaydate.before(bizdate)) {
+                        this.addErrorMessage(dataEntity, ResManager.loadKDString("预计还款日期应晚于申请日期。", "TripReqSubmitValidator_12", "fi-er-opplugin", new Object[0]));
+                        return;
+                    }
+
+                    DynamicObjectCollection accountEntrys = dynamicObject.getDynamicObjectCollection("accountentry");
+                    if (accountEntrys == null || accountEntrys.isEmpty()) {
+                        this.addErrorMessage(dataEntity, ResManager.loadKDString("请填写收款信息。", "TripReqSubmitValidator_3", "fi-er-opplugin", new Object[0]));
+                        return;
+                    }
+
+                    List<Integer> indexs = new ArrayList();
+                    int index = 1;
+
+                    DynamicObject accountEntry;
+                    for(Iterator var15 = accountEntrys.iterator(); var15.hasNext(); ++index) {
+                        accountEntry = (DynamicObject)var15.next();
+                        accountEntry = accountEntry.getDynamicObject("payerbank");
+                        if (accountEntry != null && !accountEntry.getBoolean("enable")) {
+                            indexs.add(index);
+                        }
+                    }
+
+                    if (!indexs.isEmpty()) {
+                        this.addErrorMessage(dataEntity, ResManager.loadKDString("收款信息第%s行中的开户银行已被禁用。", "TripReqSubmitValidator_14", "fi-er-opplugin", new Object[]{indexs.toString().replaceAll("[^\\d|,]", "").replaceAll(",", ",")}));
+                        return;
+                    }
+
+                    BigDecimal totalReceiveAmount = BigDecimal.ZERO;
+                    Iterator var23 = accountEntrys.iterator();
+
+                    while(var23.hasNext()) {
+                        accountEntry = (DynamicObject)var23.next();
+                        BigDecimal receiveAmount = accountEntry.getBigDecimal("receiveamount");
+                        totalReceiveAmount = totalReceiveAmount.add(receiveAmount);
+                        if (accountEntry.getDynamicObject("accountcurrency") == null) {
+                            this.addErrorMessage(dataEntity, ResManager.loadKDString("请填写收款信息币种。", "TripReqSubmitValidator_13", "fi-er-opplugin", new Object[0]));
+                            return;
+                        }
+                    }
+
+                    BigDecimal encashamount = dynamicObject.getBigDecimal("encashamount");
+                    if (totalReceiveAmount.compareTo(encashamount) != 0) {
+                        this.addErrorMessage(dataEntity, ResManager.loadKDString("付现金额和收款金额合计不相等,请核对申请金额、收款金额。", "TripReqSubmitValidator_7", "fi-er-opplugin", new Object[0]));
+                        return;
+                    }
+
+                    Set<Long> itemSet = (Set)dynamicObject.getDynamicObjectCollection("tripentry").stream().map((row) -> {
+                        return ErCommonUtils.getPk(row.getDynamicObject("tripexpenseitem"));
+                    }).filter((pk) -> {
+                        return pk != null;
+                    }).collect(Collectors.toSet());
+                    String msg = LoanBalanceServiceHelper.getloanBillMsg(dynamicObject.getDynamicObject("company"), dynamicObject.getDynamicObject("applier"), itemSet);
+                    if (StringUtils.isNotBlank(msg)) {
+                        this.addFatalErrorMessage(dataEntity, msg);
+                        continue;
+                    }
+                }
+            }
+        }
+
+    }
+}