TripReqSubmitValidatorEx.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. //
  2. // Source code recreated from a .class file by IntelliJ IDEA
  3. // (powered by FernFlower decompiler)
  4. //
  5. package kd.fi.er.validator;
  6. import java.math.BigDecimal;
  7. import java.util.ArrayList;
  8. import java.util.Date;
  9. import java.util.Iterator;
  10. import java.util.List;
  11. import java.util.Set;
  12. import java.util.stream.Collectors;
  13. import kd.bos.dataentity.entity.DynamicObject;
  14. import kd.bos.dataentity.entity.DynamicObjectCollection;
  15. import kd.bos.dataentity.resource.ResManager;
  16. import kd.bos.entity.ExtendedDataEntity;
  17. import kd.bos.entity.validate.AbstractValidator;
  18. import kd.fi.er.business.servicehelper.LoanBalanceServiceHelper;
  19. import kd.fi.er.business.utils.ErCommonUtils;
  20. import kd.fi.er.common.ErBillStatusEnum;
  21. import org.apache.commons.lang3.StringUtils;
  22. public class TripReqSubmitValidatorEx extends AbstractValidator {
  23. public TripReqSubmitValidatorEx() {
  24. }
  25. public void validate() {
  26. ExtendedDataEntity[] dataEntities = this.getDataEntities();
  27. ExtendedDataEntity[] var2 = dataEntities;
  28. int var3 = dataEntities.length;
  29. for(int var4 = 0; var4 < var3; ++var4) {
  30. ExtendedDataEntity dataEntity = var2[var4];
  31. DynamicObject dynamicObject = dataEntity.getDataEntity();
  32. if (dynamicObject.getDynamicObject("applier") == null) {
  33. this.addErrorMessage(dataEntity, ResManager.loadKDString("申请人为空,请联系管理员设置。", "TripReqSubmitValidator_20", "fi-er-opplugin", new Object[0]));
  34. return;
  35. }
  36. String billStatus = dynamicObject.getString("billstatus");
  37. boolean isLoan = dynamicObject.getBoolean("isloan");
  38. boolean istravelers = dynamicObject.getBoolean("istravelers");
  39. if (!ErBillStatusEnum.A.toString().equals(billStatus) && !ErBillStatusEnum.D.toString().equals(billStatus)) {
  40. if (!isLoan) {
  41. this.addErrorMessage(dataEntity, ResManager.loadKDString("出差申请单需先暂存后才能提交。", "TripReqSubmitValidator_10", "fi-er-opplugin", new Object[0]));
  42. } else {
  43. this.addErrorMessage(dataEntity, ResManager.loadKDString("暂存的出差申请单(借)才允许提交。", "TripReqSubmitValidator_11", "fi-er-opplugin", new Object[0]));
  44. }
  45. } else {
  46. if (isLoan) {
  47. Date repaydate = dynamicObject.getDate("repaymentdate");
  48. Date bizdate = dynamicObject.getDate("bizdate");
  49. if (repaydate == null || repaydate.before(bizdate)) {
  50. this.addErrorMessage(dataEntity, ResManager.loadKDString("预计还款日期应晚于申请日期。", "TripReqSubmitValidator_12", "fi-er-opplugin", new Object[0]));
  51. return;
  52. }
  53. DynamicObjectCollection accountEntrys = dynamicObject.getDynamicObjectCollection("accountentry");
  54. if (accountEntrys == null || accountEntrys.isEmpty()) {
  55. this.addErrorMessage(dataEntity, ResManager.loadKDString("请填写收款信息。", "TripReqSubmitValidator_3", "fi-er-opplugin", new Object[0]));
  56. return;
  57. }
  58. List<Integer> indexs = new ArrayList();
  59. int index = 1;
  60. DynamicObject accountEntry;
  61. for(Iterator var15 = accountEntrys.iterator(); var15.hasNext(); ++index) {
  62. accountEntry = (DynamicObject)var15.next();
  63. accountEntry = accountEntry.getDynamicObject("payerbank");
  64. if (accountEntry != null && !accountEntry.getBoolean("enable")) {
  65. indexs.add(index);
  66. }
  67. }
  68. if (!indexs.isEmpty()) {
  69. this.addErrorMessage(dataEntity, ResManager.loadKDString("收款信息第%s行中的开户银行已被禁用。", "TripReqSubmitValidator_14", "fi-er-opplugin", new Object[]{indexs.toString().replaceAll("[^\\d|,]", "").replaceAll(",", ",")}));
  70. return;
  71. }
  72. BigDecimal totalReceiveAmount = BigDecimal.ZERO;
  73. Iterator var23 = accountEntrys.iterator();
  74. while(var23.hasNext()) {
  75. accountEntry = (DynamicObject)var23.next();
  76. BigDecimal receiveAmount = accountEntry.getBigDecimal("receiveamount");
  77. totalReceiveAmount = totalReceiveAmount.add(receiveAmount);
  78. if (accountEntry.getDynamicObject("accountcurrency") == null) {
  79. this.addErrorMessage(dataEntity, ResManager.loadKDString("请填写收款信息币种。", "TripReqSubmitValidator_13", "fi-er-opplugin", new Object[0]));
  80. return;
  81. }
  82. }
  83. BigDecimal encashamount = dynamicObject.getBigDecimal("encashamount");
  84. if (totalReceiveAmount.compareTo(encashamount) != 0) {
  85. this.addErrorMessage(dataEntity, ResManager.loadKDString("付现金额和收款金额合计不相等,请核对申请金额、收款金额。", "TripReqSubmitValidator_7", "fi-er-opplugin", new Object[0]));
  86. return;
  87. }
  88. Set<Long> itemSet = (Set)dynamicObject.getDynamicObjectCollection("tripentry").stream().map((row) -> {
  89. return ErCommonUtils.getPk(row.getDynamicObject("tripexpenseitem"));
  90. }).filter((pk) -> {
  91. return pk != null;
  92. }).collect(Collectors.toSet());
  93. String msg = LoanBalanceServiceHelper.getloanBillMsg(dynamicObject.getDynamicObject("company"), dynamicObject.getDynamicObject("applier"), itemSet);
  94. if (StringUtils.isNotBlank(msg)) {
  95. this.addFatalErrorMessage(dataEntity, msg);
  96. continue;
  97. }
  98. }
  99. }
  100. }
  101. }
  102. }