Parcourir la source

坏账计算规则修改,反写应收挂账单坏账历史数据

wanwei il y a 7 mois
Parent
commit
e6d00aee4f

+ 84 - 0
src/main/java/fi/ar/opplugin/ArBaddebtlossBillOpPlugin.java

@@ -0,0 +1,84 @@
+package fi.ar.opplugin;
+
+import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Iterator;
+
+public class ArBaddebtlossBillOpPlugin extends AbstractOperationServicePlugIn {
+    @Override
+    public void beginOperationTransaction(BeginOperationTransactionArgs e) {
+        //获取合同台账单据信息
+        DynamicObject[] dynamicObjects = e.getDataEntities();
+        for (int i = 0; i < dynamicObjects.length; i++) {
+            if (StringUtils.equals(e.getOperationKey(),"audit")) {
+                //当前单头数据包
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                String billno = info.getString("billno");
+                Date bizDate = info.getDate("bizdate");
+                Long id = info.getLong("id");
+                BigDecimal amount = info.getBigDecimal("nckd_amountfield");
+                Long sourcebillid = info.getLong("sourcebillid");
+                if (sourcebillid != 0) {
+                    //获取财务应收单
+                    QFilter filter = new QFilter("id", QCP.equals, sourcebillid);
+                    DynamicObject[] ardynamicObjects = BusinessDataServiceHelper.load("ar_finarbill","id", new QFilter[]{filter});
+                    for (DynamicObject object : ardynamicObjects) {
+                        DynamicObject arInfo = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDynamicObjectType().getName());
+                        DynamicObjectCollection debtEntry = arInfo.getDynamicObjectCollection("nckd_debt_entry1");
+                        Boolean flag = true;
+                        for (DynamicObject debt : debtEntry) {
+                            if (StringUtils.equals(debt.getString("nckd_debt_billno"), billno)) {
+                                debt.set("nckd_debt_amount", amount);
+                                flag = false;
+                            }
+                        }
+
+                        if (flag) {
+                            DynamicObject entry1 = debtEntry.addNew();
+                            entry1.set("nckd_debt_billno", billno);//付款处理单据编号
+                            entry1.set("nckd_debt_id", id);//付款处理单据id
+                            entry1.set("nckd_y_date1", bizDate);//付款金额
+                            entry1.set("nckd_debt_amount", amount);//付款日期
+                        }
+                        SaveServiceHelper.save(new DynamicObject[]{arInfo});
+                    }
+
+                }
+            } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
+                //当前单头数据包
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                String billno = info.getString("billno");
+                Date bizDate = info.getDate("bizdate");
+                Long id = info.getLong("id");
+                BigDecimal amount = info.getBigDecimal("nckd_amountfield");
+                Long sourcebillid = info.getLong("sourcebillid");
+                if (sourcebillid != 0) {
+                    //获取财务应收单
+                    QFilter filter = new QFilter("id", QCP.equals, sourcebillid);
+                    DynamicObject[] ardynamicObjects = BusinessDataServiceHelper.load("ar_finarbill","id", new QFilter[]{filter});
+                    for (DynamicObject object : ardynamicObjects) {
+                        DynamicObject arInfo = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDynamicObjectType().getName());
+                        DynamicObjectCollection debtEntry = arInfo.getDynamicObjectCollection("nckd_debt_entry1");
+                        Iterator<DynamicObject> iterator = debtEntry.iterator();
+                        while (iterator.hasNext()) {
+                            DynamicObject debt = iterator.next();
+                            if (StringUtils.equals(debt.getString("nckd_debt_billno"), billno)) {
+                                iterator.remove();
+                            }
+                        }
+                        SaveServiceHelper.save(new DynamicObject[]{arInfo});
+                    }
+                }
+            }
+        }
+    }
+}

+ 2 - 2
src/main/java/fi/cas/formplugin/ArBadDebtLossListPlugin.java

@@ -44,12 +44,12 @@ public class ArBadDebtLossListPlugin extends AbstractListPlugin {
                     DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "ar_baddebtlossbill");
                     ar_baddebtlossbill.add(info);
                     dubilList.add(info.getString("nckd_textfield"));
-                    custList.add(info.getDynamicObject("asstact").getString("number"));
+                    custList.add(info.getDynamicObject("asstact").getString("name"));
                 }
 
                 //查询减值准备数据(最新一批)
                 QFilter filter = new QFilter("nckd_dubil_id", QCP.in, dubilList);
-                filter.or("nckd_cust_id", QCP.in, custList);
+                filter.or("nckd_cust_name", QCP.in, custList);
                 DynamicObject[] jzdynamicObjects = BusinessDataServiceHelper.load("nckd_impairment","nckd_dubil_id,nckd_cust_id,nckd_ecl_ratio", new QFilter[]{filter});
                 jz =  new ArrayList<>(Arrays.asList(jzdynamicObjects));
 

+ 2 - 2
src/main/java/fi/cas/task/MatchBadDebtsTask.java

@@ -46,12 +46,12 @@ public class MatchBadDebtsTask extends AbstractTask {
             DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
             ar_baddebtlossbill.add(info);
             dubilList.add(info.getString("nckd_textfield"));
-            custList.add(info.getDynamicObject("asstact").getString("number"));
+            custList.add(info.getDynamicObject("asstact").getString("name"));
         }
 
         //查询减值准备数据(最新一批)
         QFilter jzfilter = new QFilter("nckd_dubil_id", QCP.in, dubilList);
-        jzfilter.or("nckd_cust_id", QCP.in, custList);
+        jzfilter.or("nckd_cust_name", QCP.in, custList);
         DynamicObject[] jzdynamicObjects = BusinessDataServiceHelper.load("nckd_impairment","nckd_dubil_id,nckd_cust_id,nckd_ecl_ratio", new QFilter[]{jzfilter});
         jz =  new ArrayList<>(Arrays.asList(jzdynamicObjects));