From ca9e3e606507fd7d85004b5bf76bb29b57d9f23a Mon Sep 17 00:00:00 2001 From: zzs Date: Sat, 18 Jan 2025 17:26:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BF=A1=E4=BF=9D=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yem/wm/es/Util/TotalUtil.java | 20 ++- .../validator/SalesOrderSubmitValidator.java | 45 +++-- .../convert/ShippingDetialToStoraConvert.java | 2 +- .../dynamic/CreditBackFillEdit.java | 170 +++++++++++++++++- .../storagetrans/form/StorageTransEdit.java | 12 +- .../op/StorageTransUnAuditOp.java | 5 +- .../CsrCreditSubmitLineValidator.java | 23 ++- 7 files changed, 236 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/yem/wm/es/Util/TotalUtil.java b/src/main/java/com/yem/wm/es/Util/TotalUtil.java index 125a3632..37463956 100644 --- a/src/main/java/com/yem/wm/es/Util/TotalUtil.java +++ b/src/main/java/com/yem/wm/es/Util/TotalUtil.java @@ -9,6 +9,7 @@ import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.exception.KDBizException; import kd.bos.form.*; import kd.bos.form.events.MessageBoxClosedEvent; import kd.bos.orm.query.QCP; @@ -18,6 +19,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -293,7 +295,10 @@ public class TotalUtil { if (YEM.isNotEmpty(customer) && YEM.isNotEmpty(method) && YEM.isNotEmpty(company)) { String selectfields = DynamicObjectUtil.getSelectfields("yem_im_csrcreditline", false); selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_im_csrcreditline", "yem_im_info", false); - QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue()); + if (!customer.containsProperty("yem_customer")) { + customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName()); + } + QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer")); qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getPkValue())); // qFilter.and(new QFilter("org", QCP.equals, company.getPkValue())); qFilter.and(new QFilter("billstatus", QCP.equals, "C")); @@ -302,7 +307,18 @@ public class TotalUtil { qFilter.and(new QFilter("yem_swiftcode", QCP.equals, swiftCode)); } - return BusinessDataServiceHelper.loadSingle("yem_im_csrcreditline", "id," + selectfields, qFilter.toArray()); + DynamicObject[] load = BusinessDataServiceHelper.load("yem_im_csrcreditline", "id," + selectfields, qFilter.toArray()); + if (load.length == 1) { + return load[0]; + } + if (load.length > 1) { + Set set = new HashSet<>(); + for (DynamicObject d : load) { + set.add(d.getString("billno")); + } + throw new KDBizException("该客户匹配到多个符合条件的客户信保额度申请,请联系单证处理!" + set); + } + return null; } else { return null; } diff --git a/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java b/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java index 6c0f86ea..b3e7a8c5 100644 --- a/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java +++ b/src/main/java/com/yem/wm/es/salesorder/validator/SalesOrderSubmitValidator.java @@ -257,7 +257,7 @@ public class SalesOrderSubmitValidator extends AbstractValidator { if ("CC".equals(number)||"CCPJ".equals(number)){ DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productsgroup", "id,number" , new QFilter[]{new QFilter("number", QCP.equals, "CC")}); - along = loadSingle.getLong("id"); + along = loadSingle.getLong("id"); } if ("TLJ".equals(number)||"TLJPJ".equals(number)){ DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productsgroup", "id,number" @@ -796,20 +796,32 @@ public class SalesOrderSubmitValidator extends AbstractValidator { DynamicObject method = TotalUtil.getSettlementMethod(dataEntity); DynamicObject company = dataEntity.getDynamicObject("yem_company.yem_erporg"); String swiftCode = TotalUtil.getSwiftCode(dataEntity); - DynamicObject[] csrCreditLine = getCsrCreditLine(customer, method, company, swiftCode); - boolean bolean = false; - if (YEM.isNotEmpty(csrCreditLine)) { - for (DynamicObject loadSingle : csrCreditLine) { - BigDecimal balance = loadSingle.getBigDecimal("yem_balance");//yem_suminsured - String status = loadSingle.getString("yem_limitstatus"); - if ("A".equals(status)) { - bolean =true; - if (total.compareTo(balance) > 0) { - this.addWarningMessage(dataEntitie, String.format("当前合同的信保额度{%s}超出其剩余限额{%s},请检查数据!", total, balance)); - } - } + DynamicObject[] load = getCsrCreditLine(customer, method, company, swiftCode); + DynamicObject csrCreditLine = null; + if (YEM.isEmpty(load)) { + this.addErrorMessage(dataEntitie, "该客户找不到信保额度申请,不可参与信保!"); + return; + } + if (load.length == 1) { + csrCreditLine = load[0]; + } + if (load.length > 1) { + Set set = new HashSet<>(); + for (DynamicObject d : load) { + set.add(d.getString("billno")); } - if (!bolean) { + this.addErrorMessage(dataEntitie, "该客户匹配到多个符合条件的客户信保额度申请,请联系单证处理!" + set); + return; + } + + if (YEM.isNotEmpty(csrCreditLine)) { + BigDecimal balance = csrCreditLine.getBigDecimal("yem_balance");//yem_suminsured + String status = csrCreditLine.getString("yem_limitstatus"); + if ("A".equals(status)) { + if (total.compareTo(balance) > 0) { + this.addWarningMessage(dataEntitie, String.format("当前合同的信保额度{%s}超出其剩余限额{%s},请检查数据!", total, balance)); + } + } else { this.addErrorMessage(dataEntitie, "当前客户信保额度申请失效,请联系单证确认!!"); } } else { @@ -823,7 +835,10 @@ public class SalesOrderSubmitValidator extends AbstractValidator { if (YEM.isNotEmpty(customer) && YEM.isNotEmpty(method) && YEM.isNotEmpty(company)) { String selectfields = DynamicObjectUtil.getSelectfields("yem_im_csrcreditline", false); selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_im_csrcreditline", "yem_im_info", false); - QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue()); + if (!customer.containsProperty("yem_customer")) { + customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName()); + } + QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer")); qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getPkValue())); // qFilter.and(new QFilter("org", QCP.equals, company.getPkValue())); qFilter.and(new QFilter("billstatus", QCP.equals, "C")); diff --git a/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java b/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java index 9e0b2b51..e9e5cb2d 100644 --- a/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java +++ b/src/main/java/com/yem/wm/es/shippingdetails/convert/ShippingDetialToStoraConvert.java @@ -119,7 +119,7 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn // 储运认领金额 addNew.set("yem_stclaiamt_cd", amount.get("shipClaimAmt")); // 投保金额(原币) - addNew.set("yem_creditamt_cd", storageAmount); + addNew.set("yem_creditamt_cd", bigDecimal); // 信保本位币金额 addNew.set("yem_creditamtbase", storageAmount.multiply(exrate)); diff --git a/src/main/java/com/yem/wm/es/storagetrans/dynamic/CreditBackFillEdit.java b/src/main/java/com/yem/wm/es/storagetrans/dynamic/CreditBackFillEdit.java index c66dbde2..8b9861f8 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/dynamic/CreditBackFillEdit.java +++ b/src/main/java/com/yem/wm/es/storagetrans/dynamic/CreditBackFillEdit.java @@ -1,9 +1,13 @@ package com.yem.wm.es.storagetrans.dynamic; +import com.yem.rf.utils.RFUtils; import com.yem.wm.es.Util.CreditBackFillUtils; import com.yem.wm.es.Util.TotalUtil; +import com.yem.wm.es.shippingdetails.util.PaymentControlUtil; import com.yem.wm.utils.CalendarUtils; +import com.yem.wm.utils.RptUtil; import com.yem.wm.utils.YEM; +import kd.bos.algo.DataSet; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.IDataModel; @@ -13,17 +17,17 @@ import kd.bos.form.IFormView; import kd.bos.form.control.Control; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.plugin.AbstractFormPlugin; +import kd.bos.orm.ORM; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.tmc.cfm.formplugin.bd.PayMentbyInstalments; +import org.apache.commons.compress.utils.Lists; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.Date; -import java.util.EventObject; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * @author xwudd @@ -45,6 +49,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin { model.setValue("yem_storagetransno", parentModel.getValue("billno"));//储运托单号 model.setValue("yem_currency", parentModel.getValue("yem_creditcurr"));//信保币别 + model.setValue("yem_settlementcurr", parentModel.getValue("yem_currency"));//结算币别 model.setValue("yem_currencybase", parentModel.getValue("yem_currencybase"));//本位币 model.setValue("yem_actulpreamount", parentModel.getValue("yem_actualsinkamount"));//实际收汇金额汇总 model.setValue("yem_actulpreamountbase", parentModel.getValue("yem_actualsinkamountba"));//实际收汇本位币金额汇总 @@ -82,6 +87,8 @@ public class CreditBackFillEdit extends AbstractFormPlugin { model.setValue("yem_premium", dynamicObject.get("yem_insuranceamt_cd"), addNewRowIdx);//保险费 + model.setValue("yem_contractpayamt", dynamicObject.get("yem_contractpayamt"), addNewRowIdx);//合同回款金额 + DynamicObjectCollection parentSubCollection = dynamicObject.getDynamicObjectCollection("yem_crecollection"); DynamicObjectCollection subCollection = dataEntity.getDynamicObjectCollection("yem_creditentry").get(currentEntryIdx).getDynamicObjectCollection("yem_crecollection"); @@ -99,6 +106,8 @@ public class CreditBackFillEdit extends AbstractFormPlugin { subAddNew.set("yem_crenote", subObject.getString("yem_crenote"));//收款备注 subAddNew.set("yem_crecollecurrency", subObject.getDynamicObject("yem_crecollecurrency"));//收款币别 subAddNew.set("yem_crecollecamt", subObject.getBigDecimal("yem_crecollecamt"));//收款金额 + subAddNew.set("yem_crecollecamt", subObject.getBigDecimal("yem_crecollecamt"));//收款金额 + subAddNew.set("yem_contractpayamt_e", subObject.getBigDecimal("yem_contractpayamt_e"));//合同回款金额 } } } @@ -114,10 +123,33 @@ public class CreditBackFillEdit extends AbstractFormPlugin { Control control = (Control) e.getSource(); String key = control.getKey(); if ("btnok".equals(key)) { + if (!beforeOkOperationValidator()) { + return; + } + StringBuilder sb = new StringBuilder(); IFormView view = this.getView(); IDataModel model = this.getModel(); DynamicObject dataEntity = model.getDataEntity(true); + + DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_creditentry"); + for (DynamicObject d : c) { + int par = c.indexOf(d); + DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_crecollection"); + for (DynamicObject subD : subC) { + int son = subC.indexOf(subD); + BigDecimal contractpayamt_e = subD.getBigDecimal("yem_contractpayamt_e"); + if (contractpayamt_e.compareTo(BigDecimal.ZERO) <= 0) { + sb.append(String.format("请填写明细信息第 %s 行,信保收款明细第 %s 行 合同回款金额!", par + 1, son + 1)).append("\r\n"); + } + } + } + + if (sb.length() > 0) { + view.showMessage(sb.toString()); + return; + } + IFormView parentView = view.getParentView(); IDataModel parentModel = parentView.getModel(); DynamicObject parentDataEntity = parentModel.getDataEntity(true); @@ -151,14 +183,15 @@ public class CreditBackFillEdit extends AbstractFormPlugin { parentModel.setValue("yem_creditremark", subMap.get("creditRemark"), i);//信保备注 parentModel.setValue("yem_creditquotation", subMap.get("yem_creditquotation"), i); - parentModel.setValue("yem_sinosurerate_cd", subMap.get("yem_sinosurerate_cd")); - parentModel.setValue("yem_term_cd", subMap.get("yem_term_cd")); + parentModel.setValue("yem_sinosurerate_cd", subMap.get("yem_sinosurerate_cd"), i); + parentModel.setValue("yem_term_cd", subMap.get("yem_term_cd"), i); // parentModel.setValue("yem_year_e", subMap.get("year")); dynamicObject.set("yem_year_e", subMap.get("year")); - parentModel.setValue("yem_creditstatus_e", subMap.get("creditstatus")); + parentModel.setValue("yem_creditstatus_e", subMap.get("creditstatus"), i); - parentModel.setValue("yem_insuranceamt_cd", subMap.get("yem_premium"));//保险费 + parentModel.setValue("yem_insuranceamt_cd", subMap.get("yem_premium"), i);//保险费 + parentModel.setValue("yem_contractpayamt", subMap.get("yem_contractpayamt"), i);//合同回款金额 } } subEntryBackFill(); @@ -172,6 +205,107 @@ public class CreditBackFillEdit extends AbstractFormPlugin { } } + /** + * + * ②信保回填弹窗界面:业务手动维护当前收款币别对应的合同回款币别金额,点击确认时,【合同回款金额】必填; + *
+ * ③信保回填弹窗界面,确认时:判断当前合同下的【合同回款金额】汇总值  是否超出收款单认领到该合同尾款的【收款认领金额】汇总值,如果超出,不允许通过,并提示:合同号:***,合同回款总金额:***元,尾款(账期)认领总金额:***元,已超额,请认领完成后在操作信保回款。否则可以通过 + *
+ * + * @link 文档 + * + * @return Boolean + */ + private boolean beforeOkOperationValidator() { + IDataModel model = this.getModel(); + IFormView view = this.getView(); + IFormView parentView = view.getParentView(); + IDataModel parentModel = parentView.getModel(); + DynamicObject dataEntity = model.getDataEntity(true); + StringBuilder sb = new StringBuilder(); + DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_creditentry"); + // 当前订舱合同回款金额 + Map contractPayAmtMap = new HashMap<>(); + for (DynamicObject d : collection) { + int idx = collection.indexOf(d); + BigDecimal contractpayamt = d.getBigDecimal("yem_contractpayamt"); + String salecontractno = d.getString("yem_salecontractno"); + if (contractPayAmtMap.containsKey(salecontractno)) { + BigDecimal decimal = contractPayAmtMap.get(salecontractno); + decimal = decimal.add(contractpayamt); + contractPayAmtMap.put(salecontractno, decimal); + } else { + contractPayAmtMap.put(salecontractno, contractpayamt); + } + if (contractpayamt.compareTo(BigDecimal.ZERO) <= 0) { + sb.append(String.format("请填写明细信息第 %s 行,合同回款金额!!", idx + 1)).append("\n\r"); + } + } + if (sb.length() > 0) { + view.showErrorNotification(sb.toString()); + return false; + } + + QFilter qFilter = RFUtils.getBaseQFilter(); + + // 当前单涉及需要校验的合同 + Set salesorder = new HashSet<>(); + for (DynamicObject d : collection) { + salesorder.add(d.getString("yem_salecontractno")); + } + qFilter.and("yem_creditdetail.yem_salecontractno.billno", "in", salesorder); + qFilter.and("billno", "not in", parentModel.getValue("billno")); + ArrayList selectfileds = Lists.newArrayList(); + selectfileds.add("yem_creditdetail.yem_salecontractno.billno yem_salecontractno");//外销合同号 + selectfileds.add("yem_creditdetail.yem_contractpayamt yem_contractpayamt");//合同回款金额 + DataSet st = ORM.create().queryDataSet("com.yem.wm.es.storagetrans.dynamic.CreditBackFillEdit.beforeOkOperationValidator", "yem_es_storagetrans", String.join(",", selectfileds), qFilter.toArray()); + st = st.groupBy(new String[]{"yem_salecontractno"}).sum("yem_contractpayamt").finish(); + DynamicObjectCollection dataSetCollection = ORM.create().toPlainDynamicObjectCollection(st); + + // 历史(除去本单)订舱合同回款金额 + 当前订舱合同回款金额 + + for (DynamicObject setObj : dataSetCollection) { + String salecontractno = setObj.getString("yem_salecontractno"); + BigDecimal contractpayamt = setObj.getBigDecimal("yem_contractpayamt"); + if (contractPayAmtMap.containsKey(salecontractno)) { + BigDecimal decimal = contractPayAmtMap.get(salecontractno); + decimal = decimal.add(contractpayamt); + contractPayAmtMap.put(salecontractno, decimal); + } else { + contractPayAmtMap.put(salecontractno, contractpayamt); + } + } + + + StringBuilder amtSb = new StringBuilder(); + + DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_salesorder", "id, billno", new QFilter[]{new QFilter("billno", "in", salesorder)}); + for (DynamicObject object : load) { + for (Map.Entry map : contractPayAmtMap.entrySet()) { + BigDecimal amt = map.getValue(); + String billno = map.getKey(); + if (object.getString("billno").equals(billno)) { + BigDecimal contractClimeAmt = PaymentControlUtil.getContractClimeAmt(object, "F"); + if (amt.compareTo(contractClimeAmt) > 0) { + amtSb.append(String.format("合同号:%s,合同回款总金额:%s元,尾款(账期)认领总金额:%s元,已超额,请认领完成后在操作信保回款。" + , billno + , amt.setScale(4, RoundingMode.HALF_UP).toPlainString() + , contractClimeAmt.setScale(4, RoundingMode.HALF_UP).toPlainString() + )).append("\n\r"); + } + } + } + } + + if (amtSb.length() > 0) { + view.showErrorNotification(amtSb.toString()); + return false; + } + + + return true; + } + /** * 缓存分录数据 * @@ -237,6 +371,8 @@ public class CreditBackFillEdit extends AbstractFormPlugin { map.put("yem_premium", model.getValue("yem_premium", i));//保险费 + map.put("yem_contractpayamt", model.getValue("yem_contractpayamt", i));//合同回款金额 + Long pkValue = dynamicObject.getLong("yem_parententryid"); collectionMap.put(pkValue, map); } @@ -308,6 +444,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin { dynamicObject.set("yem_creditstatus_e", map.get("creditstatus")); dynamicObject.set("yem_premium", map.get("yem_premium")); + dynamicObject.set("yem_contractpayamt", map.get("yem_contractpayamt")); } } SaveServiceHelper.save(new DynamicObject[]{csrCreditLine}); @@ -366,6 +503,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin { addNew.set("yem_crenote", crecollection.getString("yem_crenote"));//收款备注 addNew.set("yem_crecollecurrency", crecollection.getDynamicObject("yem_crecollecurrency"));//收款币别 addNew.set("yem_crecollecamt", crecollection.getBigDecimal("yem_crecollecamt"));//收款金额 + addNew.set("yem_contractpayamt_e", crecollection.getBigDecimal("yem_contractpayamt_e")); } } } else { @@ -418,6 +556,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin { parentAddNer.set("yem_crenote", crecollection.getString("yem_crenote"));//收款备注 parentAddNer.set("yem_crecollecurrency", crecollection.getDynamicObject("yem_crecollecurrency"));//收款币别 parentAddNer.set("yem_crecollecamt", crecollection.getBigDecimal("yem_crecollecamt"));//收款金额 + parentAddNer.set("yem_contractpayamt_e", crecollection.getBigDecimal("yem_contractpayamt_e"));//合同回款金额 } } BigDecimal creactualamt = BigDecimal.ZERO;// 实际收汇金额 @@ -501,6 +640,21 @@ public class CreditBackFillEdit extends AbstractFormPlugin { this.getModel().setValue("yem_creactuallocamt", creactualamt.multiply(crerate), row); // this.getView().updateView(); } + + // 汇总子分录合同回款金额到分录 + if ("yem_contractpayamt_e".equals(key)) { + DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_creditentry"); + for (DynamicObject entry : collection) { + int idx = collection.indexOf(entry); + DynamicObjectCollection subEntry = entry.getDynamicObjectCollection("yem_crecollection"); + BigDecimal calc = BigDecimal.ZERO; + for (DynamicObject subObj : subEntry) { + BigDecimal contractpayamt_e = subObj.getBigDecimal("yem_contractpayamt_e"); + calc = calc.add(contractpayamt_e); + } + model.setValue("yem_contractpayamt", calc, idx); + } + } } private void carryCreditInsuranceRate(int rowIndex) { diff --git a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java index 13132da3..5292471c 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java +++ b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java @@ -729,6 +729,13 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele DynamicObject company = dataEntity.getDynamicObject("yem_company.yem_erporg"); String swiftCode = TotalUtil.getSwiftCode(dataEntity); DynamicObject csrCreditLine = TotalUtil.getCsrCreditLine(customer, method, company, swiftCode); + if (YEM.isEmpty(csrCreditLine)) { + sb.append("未找到该客户的信保额度申请,请检查额度申请是否存在,是否已审核!\r\n"); + e.setCancel(true); + view.showErrorNotification(sb.toString()); + return; + } + // 剩余限额 BigDecimal balance = csrCreditLine.getBigDecimal("yem_balance"); if (stcreditpreamt_cd.compareTo(preamt_cd) < 0) { @@ -768,11 +775,6 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele sb.append(String.format("未上传客户汇款水单附件,不能进行信保确认!\n\r")); } } - if (csrCreditLine != null && customer != null) { - } else { - sb.append(String.format("当前客户不存在信保额度申请,不允许进行信保确认\n\r")); -// view.showErrorNotification("当前客户不存在信保额度申请,不允许进行信保确认"); - } } if (sb.length() > 0) { e.setCancel(true); diff --git a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java index 714e8390..64056d83 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java +++ b/src/main/java/com/yem/wm/es/storagetrans/op/StorageTransUnAuditOp.java @@ -10,6 +10,7 @@ import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.PreparePropertysEventArgs; import kd.bos.entity.plugin.args.EndOperationTransactionArgs; +import kd.bos.exception.KDBizException; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -72,6 +73,8 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem csrCreditLine.set("yem_balance", decimal); SaveServiceHelper.save(new DynamicObject[]{csrCreditLine}); } + } else { + throw new KDBizException("该客户未找到对应的客户信保额度申请,请检查,客户信保额度申请是否审核且有效!"); } } @@ -155,7 +158,7 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem DynamicObject[] storagetrans = BusinessDataServiceHelper.load("yem_es_storagetrans", "yem_es_materialinfo.yem_productmodel,yem_es_materialinfo.yem_qty,"+ - "yem_es_materialinfo.yem_contractnumbers_m", + "yem_es_materialinfo.yem_contractnumbers_m", new QFilter[]{ new QFilter("billstatus", QCP.equals,"C"), new QFilter("yem_customer", QCP.equals,customer), diff --git a/src/main/java/com/yem/wm/im/csrCreditLine/validator/CsrCreditSubmitLineValidator.java b/src/main/java/com/yem/wm/im/csrCreditLine/validator/CsrCreditSubmitLineValidator.java index 2781d332..e2fd8138 100644 --- a/src/main/java/com/yem/wm/im/csrCreditLine/validator/CsrCreditSubmitLineValidator.java +++ b/src/main/java/com/yem/wm/im/csrCreditLine/validator/CsrCreditSubmitLineValidator.java @@ -28,23 +28,28 @@ public class CsrCreditSubmitLineValidator extends AbstractValidator { // DynamicObject org = dataEntity.getDynamicObject("org"); Date bizDate = dataEntity.getDate("yem_bizdate"); String swiftcode = dataEntity.getString("yem_swiftcode"); - Date yearBegin = getYearBegin(bizDate); - Date yearLast = getYearLast(bizDate); - QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue()); +// Date yearBegin = getYearBegin(bizDate); +// Date yearLast = getYearLast(bizDate); + + if (!customer.containsProperty("yem_customer")) { + customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName()); + } + QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer")); +// QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue()); // qFilter.and(new QFilter("org", QCP.equals, org.getPkValue())); - qFilter.and(new QFilter("yem_bizdate", QCP.large_than, yearBegin)); - qFilter.and(new QFilter("yem_bizdate", QCP.less_equals, yearLast)); +// qFilter.and(new QFilter("yem_bizdate", QCP.large_than, yearBegin)); +// qFilter.and(new QFilter("yem_bizdate", QCP.less_equals, yearLast)); qFilter.and(new QFilter("billstatus", QCP.in, new String[]{"B", "C"})); qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getLong("id"))); - if ("信用证".equals(method.getString("name"))) { + if ("信用证".contains(method.getString("name"))) { qFilter.and(new QFilter("yem_swiftcode", QCP.equals, swiftcode)); } DynamicObject[] objs = BusinessDataServiceHelper.load(dataEntity.getDynamicObjectType().getName(), "id", qFilter.toArray()); if (objs.length > 0) { - if ("信用证".equals(method.getString("name"))) { - this.addErrorMessage(dataEntitie, "同一年内,相同客户+支付方式+SWIFT CODE,已存在一个客户信保额度申请单,请检查数据!"); + if ("信用证".contains(method.getString("name"))) { + this.addErrorMessage(dataEntitie, "相同客户+支付方式+SWIFT CODE,已存在一个客户信保额度申请单,请检查数据!"); } else { - this.addErrorMessage(dataEntitie, "同一年内,相同客户+支付方式,已存在一个客户信保额度申请单,请检查数据!"); + this.addErrorMessage(dataEntitie, "相同客户+支付方式,已存在一个客户信保额度申请单,请检查数据!"); } } }