// // 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 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 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; } } } } } }