From 995be21b228436b86f5ad668daae873fc46ac14a Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Fri, 5 Sep 2025 17:16:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=80=9F=E6=AC=BE=E5=8D=95=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=A4=87=E7=94=A8=E9=87=91=E9=A2=9D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/DailyLoanBillSubValidatorOp.java | 32 ++++++++----- .../LoanSlipReserveFundReverserOp.java | 48 +++++++++++++++++-- 2 files changed, 64 insertions(+), 16 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyLoanBillSubValidatorOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyLoanBillSubValidatorOp.java index ab60cfd..d3b98a8 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyLoanBillSubValidatorOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/DailyLoanBillSubValidatorOp.java @@ -91,23 +91,33 @@ public class DailyLoanBillSubValidatorOp extends AbstractOperationServicePlugIn this.addFatalErrorMessage(dataEnt, "您在定额备用金初始化台账里,所以不能使用临时备用金!!"); return; } - QFilter filter1 = new QFilter("balanceamount", QCP.not_equals, 0); + QFilter filter1 = new QFilter("balanceamount", QCP.not_equals, 0);//借款余额 + filter.and(new QFilter("applier", QCP.equals, applier.getPkValue()));//申请人 DynamicObject er_dailyLoanBill1 = BusinessDataServiceHelper.loadSingle("er_dailyloanbill", - "id", new QFilter[]{filter1});//定额备用金初始台账 - if (er_dailyLoanBill1 != null){ + "id", new QFilter[]{filter1});//借款单 + if (er_dailyLoanBill1 != null) { this.addFatalErrorMessage(dataEnt, "您存在未还完的借款!!"); return; } } else if (impRestType.equals("2")) { //项目筹备备用金 - QFilter filter = new QFilter("zcgj_entryentity.zcgj_person", QCP.equals, applier.getPkValue());// 可借款人员 - filter.and(new QFilter("zcgj_entryentity.zcgj_isenabled", QCP.equals, true));// 启用 - filter.and(new QFilter("zcgj_entryentity.zcgj_company", QCP.equals, companyId));// 公司 - DynamicObject projectReserveFund = BusinessDataServiceHelper.loadSingle("zcgj_projectreservefund", - "id", new QFilter[]{filter});//项目筹备备用金公司 - if (projectReserveFund == null) { - this.addFatalErrorMessage(dataEnt, "您未在项目筹备备用金公司里,所以不能使用项目筹备备用金!!"); - return; + BigDecimal loanAmount = er_dailyLoanBill.getBigDecimal("loanamount");//借款金额合计 + + QFilter filter = new QFilter("zcgj_entryentity.zcgj_person", QCP.equals, applier.getPkValue());// 人员 + filter.and(new QFilter("zcgj_currentyear", QCP.equals, bizDateYear));//年度 + filter.and(new QFilter("zcgj_persons.fbasedataid", QCP.in, applier.getPkValue()));//项目筹备备用金借款人 + DynamicObject quotaImprestLedger = BusinessDataServiceHelper.loadSingle("zcgj_quotaimprestledger", new QFilter[]{filter});//定额备用金初始台账 + DynamicObjectCollection entryEntityCollection = quotaImprestLedger.getDynamicObjectCollection("zcgj_entryentity");//分录 + for (DynamicObject entryEntity : entryEntityCollection) { + DynamicObject person = entryEntity.getDynamicObject("zcgj_person");//人员 + DynamicObject zcgj_personType = entryEntity.getDynamicObject("zcgj_persontype");//人员类型 + if (person.getPkValue().equals(applier.getPkValue()) && zcgj_personType != null && zcgj_personType.getString("number").equals("项目筹备")) { + BigDecimal zcgj_remainingquota = entryEntity.getBigDecimal("zcgj_remainingquota");//剩余额度 + if (zcgj_remainingquota.compareTo(loanAmount) < 0) { + this.addFatalErrorMessage(dataEnt, "借款金额超过剩余额度!!"); + return; + } + } } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/LoanSlipReserveFundReverserOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/LoanSlipReserveFundReverserOp.java index 659c34f..131535b 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/LoanSlipReserveFundReverserOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/LoanSlipReserveFundReverserOp.java @@ -49,9 +49,12 @@ public class LoanSlipReserveFundReverserOp extends AbstractOperationServicePlugI BigDecimal loanAmount = er_dailyLoanBill.getBigDecimal("loanamount");//借款金额合计 LocalDate localDate = bizDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); String bizDateYear = String.valueOf(localDate.getYear());//申请日期年份 - QFilter filter = new QFilter("zcgj_entryentity.zcgj_person", QCP.equals, applier.getPkValue()); - filter.and(new QFilter("zcgj_currentyear", QCP.equals, bizDateYear)); + QFilter filter = new QFilter("zcgj_entryentity.zcgj_person", QCP.equals, applier.getPkValue());// 人员 + filter.and(new QFilter("zcgj_currentyear", QCP.equals, bizDateYear));//年度 DynamicObject quotaImprestLedger = BusinessDataServiceHelper.loadSingle("zcgj_quotaimprestledger", new QFilter[]{filter});//定额备用金初始台账 + if (quotaImprestLedger == null) { + return; + } DynamicObjectCollection entryEntityCollection = quotaImprestLedger.getDynamicObjectCollection("zcgj_entryentity");//分录 for (DynamicObject entryEntity : entryEntityCollection) { DynamicObject person = entryEntity.getDynamicObject("zcgj_person");//人员 @@ -67,7 +70,7 @@ public class LoanSlipReserveFundReverserOp extends AbstractOperationServicePlugI //撤销、反审核 BigDecimal zcgj_usedquota = entryEntity.getBigDecimal("zcgj_usedquota").subtract(er_dailyLoanBill.getBigDecimal("loanamount"));//已使用+借款金额 entryEntity.set("zcgj_usedquota", zcgj_usedquota);//已使用 - BigDecimal zcgj_remainingquota = entryEntity.getBigDecimal("zcgj_quota").add(entryEntity.getBigDecimal("zcgj_usedquota"));//额度-已使用 + BigDecimal zcgj_remainingquota = entryEntity.getBigDecimal("zcgj_quota").subtract(entryEntity.getBigDecimal("zcgj_usedquota"));//额度-已使用 entryEntity.set("zcgj_remainingquota", zcgj_remainingquota);//剩余额度 } break; @@ -76,9 +79,44 @@ public class LoanSlipReserveFundReverserOp extends AbstractOperationServicePlugI modifiedEntities.add(quotaImprestLedger); }/* else if (impRestType.equals("1")) { //临时备用金 - } else if (impRestType.equals("2")) { + }*/ else if (impRestType.equals("2")) { //项目筹备备用金 - }*/ + DynamicObject applier = er_dailyLoanBill.getDynamicObject("applier");//申请人 + Date bizDate = er_dailyLoanBill.getDate("bizdate");//申请日期 + BigDecimal loanAmount = er_dailyLoanBill.getBigDecimal("loanamount");//借款金额合计 + LocalDate localDate = bizDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + String bizDateYear = String.valueOf(localDate.getYear());//申请日期年份 + QFilter filter = new QFilter("zcgj_entryentity.zcgj_person", QCP.equals, applier.getPkValue());// 人员 + filter.and(new QFilter("zcgj_currentyear", QCP.equals, bizDateYear));//年度 + filter.and(new QFilter("zcgj_persons.fbasedataid", QCP.in, applier.getPkValue()));//项目筹备备用金借款人 + DynamicObject quotaImprestLedger = BusinessDataServiceHelper.loadSingle("zcgj_quotaimprestledger", new QFilter[]{filter});//定额备用金初始台账 + if (quotaImprestLedger == null) { + return; + } + DynamicObjectCollection entryEntityCollection = quotaImprestLedger.getDynamicObjectCollection("zcgj_entryentity");//分录 + for (DynamicObject entryEntity : entryEntityCollection) { + DynamicObject person = entryEntity.getDynamicObject("zcgj_person");//人员 + DynamicObject zcgj_personType = entryEntity.getDynamicObject("zcgj_persontype");//人员类型 + if (person.getPkValue().equals(applier.getPkValue()) && zcgj_personType != null && zcgj_personType.getString("number").equals("项目筹备")) { + if (operationKey.equals("submit")) { + //提交 + BigDecimal zcgj_usedquota = entryEntity.getBigDecimal("zcgj_usedquota").add(loanAmount);//已使用+借款金额 + entryEntity.set("zcgj_usedquota", zcgj_usedquota);//已使用 + BigDecimal zcgj_quota = entryEntity.getBigDecimal("zcgj_quota");//额度 + BigDecimal zcgj_remainingquota = zcgj_quota.subtract(entryEntity.getBigDecimal("zcgj_usedquota"));//额度-已使用 + entryEntity.set("zcgj_remainingquota", zcgj_remainingquota);//剩余额度 + } else if (operationKey.equals("unsubmit") || operationKey.equals("unaudit")) { + //撤销、反审核 + BigDecimal zcgj_usedquota = entryEntity.getBigDecimal("zcgj_usedquota").subtract(er_dailyLoanBill.getBigDecimal("loanamount"));//已使用+借款金额 + entryEntity.set("zcgj_usedquota", zcgj_usedquota);//已使用 + BigDecimal zcgj_remainingquota = entryEntity.getBigDecimal("zcgj_quota").subtract(entryEntity.getBigDecimal("zcgj_usedquota"));//额度-已使用 + entryEntity.set("zcgj_remainingquota", zcgj_remainingquota);//剩余额度 + } + break; + } + } + modifiedEntities.add(quotaImprestLedger); + } if (!modifiedEntities.isEmpty()) { try { SaveServiceHelper.save(modifiedEntities.toArray(new DynamicObject[0]));