Răsfoiți Sursa

逻辑优化

wanwei 7 luni în urmă
părinte
comite
8c63876ca6

+ 11 - 5
src/main/java/fi/cas/formplugin/ArBadDebtLossListPlugin.java

@@ -6,10 +6,13 @@ import kd.bos.entity.datamodel.ListSelectedRowCollection;
 import kd.bos.form.control.events.ItemClickEvent;
 import kd.bos.list.BillList;
 import kd.bos.list.plugin.AbstractListPlugin;
+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.util.ArrayList;
+import java.util.Arrays;
 import java.util.EventObject;
 import java.util.List;
 
@@ -27,6 +30,8 @@ public class ArBadDebtLossListPlugin extends AbstractListPlugin {
         if ("nckd_match".equals(itemKey)) {
             List<DynamicObject> jz = new ArrayList<>();
             List<DynamicObject> ar_baddebtlossbill = new ArrayList<>();//坏账单列表
+            List<String> dubilList = new ArrayList<>();//坏账单列表
+            List<String> custList = new ArrayList<>();//坏账单列表
             List<DynamicObject> infoList = new ArrayList<>();//计算成功的坏帐单列表
             List<DynamicObject> ar_baddebtlossbill_customer = new ArrayList<>();//根据客户坏账单列表
             List<DynamicObject> ar_baddebtlossbill_five_level = new ArrayList<>();//根据五级分类坏账单列表
@@ -38,14 +43,15 @@ public class ArBadDebtLossListPlugin extends AbstractListPlugin {
                 for (Object pk : primaryKeyValues) {
                     DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "ar_baddebtlossbill");
                     ar_baddebtlossbill.add(info);
+                    dubilList.add(info.getString("nckd_textfield"));
+                    custList.add(info.getDynamicObject("asstact").getString("number"));
                 }
 
                 //查询减值准备数据(最新一批)
-                DynamicObject[] jzdynamicObjects = BusinessDataServiceHelper.load("nckd_impairment","id", null);
-                for (DynamicObject jzdynamicObject : jzdynamicObjects) {
-                    DynamicObject info = BusinessDataServiceHelper.loadSingle(jzdynamicObject.getPkValue(), jzdynamicObject.getDynamicObjectType().getName());
-                    jz.add(info);
-                }
+                QFilter filter = new QFilter("nckd_dubil_id", QCP.in, dubilList);
+                filter.or("nckd_cust_id", 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));
 
                 MatchBadDebtsTask matchBadDebtsTask = new MatchBadDebtsTask();
 

+ 9 - 6
src/main/java/fi/cas/task/MatchBadDebtsTask.java

@@ -18,7 +18,10 @@ public class MatchBadDebtsTask extends AbstractTask {
     @Override
     public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
 
+        List<DynamicObject> jz = new ArrayList<>();//减值数据
         List<DynamicObject> ar_baddebtlossbill = new ArrayList<>();//坏账单列表
+        List<String> dubilList = new ArrayList<>();//坏账单列表
+        List<String> custList = new ArrayList<>();//坏账单列表
         List<DynamicObject> infoList = new ArrayList<>();//计算成功的坏帐单列表
         List<DynamicObject> ar_baddebtlossbill_customer = new ArrayList<>();//根据客户坏账单列表
         List<DynamicObject> ar_baddebtlossbill_five_level = new ArrayList<>();//根据五级分类坏账单列表
@@ -42,15 +45,15 @@ public class MatchBadDebtsTask extends AbstractTask {
         for (int i = 0; i < dynamicObjects.length; i++) {
             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"));
         }
 
         //查询减值准备数据(最新一批)
-        List<DynamicObject> jz = new ArrayList<>();
-        DynamicObject[] jzdynamicObjects = BusinessDataServiceHelper.load("nckd_impairment","id", null);
-        for (int j = 0; j < jzdynamicObjects.length; j++) {
-            DynamicObject info = BusinessDataServiceHelper.loadSingle(jzdynamicObjects[j].getPkValue(), jzdynamicObjects[j].getDynamicObjectType().getName());
-            jz.add(info);
-        }
+        QFilter jzfilter = new QFilter("nckd_dubil_id", QCP.in, dubilList);
+        jzfilter.or("nckd_cust_id", 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));
 
         //下推坏账-根据借据号匹配
         MatchByDubilId(ar_baddebtlossbill, jz, infoList, ar_baddebtlossbill_customer);