Parcourir la source

Merge remote-tracking branch 'origin/master'

13246659623 il y a 7 mois
Parent
commit
9b1079dbd0

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

@@ -73,7 +73,7 @@ public class MatchBadDebtsTask extends AbstractTask {
         for (DynamicObject dynamicObject : ar_baddebtlossbill) {
             String dubil_id = dynamicObject.getString("nckd_textfield");//借据号
             BigDecimal unsettleamount = dynamicObject.getBigDecimal("baddebtamt");//未结算金额
-
+            BigDecimal nckd_amountfield1 = dynamicObject.getBigDecimal("nckd_amountfield1");//上月计提金额
             //查询借据号匹配的减值数据
             List<DynamicObject> jzInfo = jz.stream().filter(item -> StringUtils.equals(item.getString("nckd_dubil_id"), dubil_id)).collect(Collectors.toList());
             if (jzInfo.size() > 0) {
@@ -83,6 +83,7 @@ public class MatchBadDebtsTask extends AbstractTask {
                 dynamicObject.set("nckd_textfield1", String.valueOf(ecl_ratio));//计提比例
                 dynamicObject.set("nckd_amountfield", ecl_amount);//计提金额
                 dynamicObject.set("nckd_match_amt", true);//是否计算计提金额
+                dynamicObject.set("nckd_amountfield2", ecl_amount.subtract(nckd_amountfield1 != null ? nckd_amountfield1 : BigDecimal.ZERO));//扎差金额
                 infoList.add(dynamicObject);
             }else {
                 //根据客户匹配
@@ -95,7 +96,7 @@ public class MatchBadDebtsTask extends AbstractTask {
         for (DynamicObject dynamicObject : ar_baddebtlossbill_customer) {
             BigDecimal unsettleamount = dynamicObject.getBigDecimal("baddebtamt");//未结算金额
             String customer = dynamicObject.getDynamicObject("asstact").getString("number");//供应商编码
-
+            BigDecimal nckd_amountfield1 = dynamicObject.getBigDecimal("nckd_amountfield1");//上月计提金额
             //查询客户匹配的减值数据
             List<DynamicObject> jzInfo = jz.stream().filter(item -> StringUtils.equals(item.getString("nckd_cust_id"), customer)).collect(Collectors.toList());
             if (jzInfo.size() > 0) {
@@ -110,6 +111,7 @@ public class MatchBadDebtsTask extends AbstractTask {
                 dynamicObject.set("nckd_textfield1", String.valueOf(ecl_ratio));//计提比例
                 dynamicObject.set("nckd_amountfield", ecl_amount);//计提金额
                 dynamicObject.set("nckd_match_amt", true);//是否计算计提金额
+                dynamicObject.set("nckd_amountfield2", ecl_amount.subtract(nckd_amountfield1 != null ? nckd_amountfield1 : BigDecimal.ZERO));//扎差金额
                 infoList.add(dynamicObject);
             }else {
                 //根据五级分类匹配
@@ -122,6 +124,7 @@ public class MatchBadDebtsTask extends AbstractTask {
         for (DynamicObject dynamicObject : ar_baddebtlossbill_five_level) {
             BigDecimal unsettleamount = dynamicObject.getBigDecimal("baddebtamt");//未结算金额
             DynamicObject fiveLevel = dynamicObject.getDynamicObject("nckd_basedatafield");//五级分类
+            BigDecimal nckd_amountfield1 = dynamicObject.getBigDecimal("nckd_amountfield1");//上月计提金额
             if (fiveLevel != null) {
                 //更新坏账单
                 BigDecimal ecl_ratio = fiveLevel.getBigDecimal("nckd_ecl_ratio");
@@ -129,6 +132,7 @@ public class MatchBadDebtsTask extends AbstractTask {
                 dynamicObject.set("nckd_textfield1", String.valueOf(ecl_ratio));//计提比例
                 dynamicObject.set("nckd_amountfield", ecl_amount);//计提金额
                 dynamicObject.set("nckd_match_amt", true);//是否计算计提金额
+                dynamicObject.set("nckd_amountfield2", ecl_amount.subtract(nckd_amountfield1 != null ? nckd_amountfield1 : BigDecimal.ZERO));//扎差金额
                 infoList.add(dynamicObject);
             }
         }

+ 53 - 5
src/main/java/sys/sc/formplugin/TestPlugin.java

@@ -592,7 +592,7 @@ public class TestPlugin  extends AbstractListPlugin {
                 //减值表字段
                 List<String> selector = Arrays.asList(
                         "nckd_dubil_id", "nckd_cust_id", "nckd_cur_cd", "nckd_dubil_amt", "nckd_asset_bal",
-                        "nckd_stage_rslt", "nckd_ecl_ratio"
+                        "nckd_stage_rslt", "nckd_ecl_ratio","nckd_cust_name"
                 );
                 List<DynamicObject> createdataList = new ArrayList<>();
                 QFilter filter=new QFilter("nckd_isdelete",QCP.equals,false);
@@ -627,20 +627,25 @@ public class TestPlugin  extends AbstractListPlugin {
                         createdataList.add(data);
                     }
                 }
+                //读取的文件数据转化成DynamicObject
+                DynamicObject[] dynamicObjectlist=createdataList.toArray(new DynamicObject[0]);
                 //新增数据不为空则更新到数据库中
                 if (!createdataList.isEmpty()) {
                     //转换list为DynamicObject类型
-                    SaveServiceHelper.save(dynamicObjectType, createdataList.toArray(new DynamicObject[0]));
+                    SaveServiceHelper.save(dynamicObjectType,dynamicObjectlist);
                 }
-
                 //删除所有的数据,再新增
-                for (int i=0;i<existingData.length;i++) {
-                    existingData[i].set("nckd_isdelete",true);
+                for (DynamicObject existingDatum : existingData) {
+                    existingDatum.set("nckd_isdelete", true);
                 }
                 SaveServiceHelper.save(existingData);
                 QFilter qFilter=new QFilter("nckd_isdelete",QCP.equals,true);
                 DeleteServiceHelper.delete(dynamicObjectType.getName(),new QFilter[]{qFilter});
+
+                //保存客户基础资料
+                custSave(dynamicObjectlist);
                 this.getView().showMessage("数据已成功保存!");
+
             } catch (IOException ex) {
                 ex.printStackTrace();
                 this.getView().showMessage("读取文件时发生错误:" + ex.getMessage());
@@ -833,6 +838,49 @@ public class TestPlugin  extends AbstractListPlugin {
         fis.close();
         sftpClient.disconnect();
     }
+
+    //根据减值数据存储客户名客户号数据
+    public void custSave(DynamicObject[] dynamicObjectlist)
+    {
+        //客户基础资料
+        DynamicObjectType dynamicObjectType = EntityMetadataCache.getDataEntityType("nckd_customer");
+        //客户表字段
+        List<String> selector = Arrays.asList(
+                "nckd_cust_id", "nckd_cust_name"
+        );
+        List<DynamicObject> createdataList = new ArrayList<>();
+        QFilter filter=new QFilter("nckd_isdelete",QCP.equals,false);
+        //查询已经存在的客户数据
+        DynamicObject[] existingData = BusinessDataServiceHelper
+                .load(dynamicObjectType.getName(), String.join(",", selector),null);
+
+
+        List<DynamicObject> dataListAdd = new ArrayList<>();
+        //存在数据的客户号
+        Map<String, DynamicObject> existingDataMap = new HashMap<>();
+        for (DynamicObject obj : existingData) {
+            existingDataMap.put(obj.getString("nckd_cust_id"), obj);
+        }
+
+        for(DynamicObject dataList:dynamicObjectlist)
+        {
+            //获取这条数据的
+            String nckd_cust_id=dataList.getString("nckd_cust_id");
+            //客户号不存在则保存
+            if (!existingDataMap.containsKey(nckd_cust_id))
+            {
+                DynamicObject data = new DynamicObject(dynamicObjectType);
+                //客户号
+                data.set("nckd_cust_id",dataList.getString("nckd_cust_id"));
+                //客户名
+                data.set("nckd_cust_name",dataList.getString("nckd_cust_name"));
+                dataListAdd.add(data);
+            }
+        }
+        //保存
+        SaveServiceHelper.save(dynamicObjectType,dataListAdd.toArray(new DynamicObject[0]));
+
+    }
 }
 
 

+ 54 - 6
src/main/java/sys/sc/task/UpdateImpairmentDailyTask.java

@@ -24,7 +24,7 @@ import java.util.*;
 /**
  * @author cjz
  * @date 2024/9/10 11:06
- * @description:减值数据自动更新
+ * @description:减值数据自动更新,并更新客户基础资料
  */
 public class UpdateImpairmentDailyTask extends AbstractTask {
     private static final Log log = LogFactory.getLog(UpdateImpairmentDailyTask.class);
@@ -59,7 +59,7 @@ public class UpdateImpairmentDailyTask extends AbstractTask {
             //减值表字段
             List<String> selector = Arrays.asList(
                     "nckd_dubil_id", "nckd_cust_id", "nckd_cur_cd", "nckd_dubil_amt", "nckd_asset_bal",
-                    "nckd_stage_rslt", "nckd_ecl_ratio"
+                    "nckd_stage_rslt", "nckd_ecl_ratio","nckd_cust_name"
             );
             List<DynamicObject> createdataList = new ArrayList<>();
             QFilter filter=new QFilter("nckd_isdelete", QCP.equals,false);
@@ -94,19 +94,23 @@ public class UpdateImpairmentDailyTask extends AbstractTask {
                 }
             }
             sftpClient.disconnect();
+            //读取的文件数据转化成DynamicObject
+            DynamicObject[] dynamicObjectlist=createdataList.toArray(new DynamicObject[0]);
             //新增数据不为空则更新到数据库中
             if (!createdataList.isEmpty()) {
                 //转换list为DynamicObject类型
-                SaveServiceHelper.save(dynamicObjectType, createdataList.toArray(new DynamicObject[0]));
+                SaveServiceHelper.save(dynamicObjectType,dynamicObjectlist);
             }
             //删除所有的数据,再新增
-            for (int i=0;i<existingData.length;i++) {
-                existingData[i].set("nckd_isdelete",true);
+            for (DynamicObject existingDatum : existingData) {
+                existingDatum.set("nckd_isdelete", true);
             }
             SaveServiceHelper.save(existingData);
             QFilter qFilter=new QFilter("nckd_isdelete",QCP.equals,true);
             DeleteServiceHelper.delete(dynamicObjectType.getName(),new QFilter[]{qFilter});
-            log.info("-----------------------数据已成功保存---------------------");
+            log.info("-----------------------减值数据已成功保存---------------------");
+            custSave(dynamicObjectlist);
+            log.info("------------------------客户数据已成功保存----------------------");
         } catch (IOException ex) {
             ex.printStackTrace();
             log.error("----------------------------读取文件发生错误"+ex.getMessage()+"--------------------------");
@@ -147,4 +151,48 @@ public class UpdateImpairmentDailyTask extends AbstractTask {
         String realPath = nckd_url+datestr+ File.separator+nckd_filename;
         return realPath;
     }
+
+
+    //根据减值数据存储客户名客户号数据
+    public void custSave(DynamicObject[] dynamicObjectlist)
+    {
+        //客户基础资料
+        DynamicObjectType dynamicObjectType = EntityMetadataCache.getDataEntityType("nckd_customer");
+        //客户表字段
+        List<String> selector = Arrays.asList(
+                "nckd_cust_id", "nckd_cust_name"
+        );
+        List<DynamicObject> createdataList = new ArrayList<>();
+        QFilter filter=new QFilter("nckd_isdelete",QCP.equals,false);
+        //查询已经存在的客户数据
+        DynamicObject[] existingData = BusinessDataServiceHelper
+                .load(dynamicObjectType.getName(), String.join(",", selector),null);
+
+
+        List<DynamicObject> dataListAdd = new ArrayList<>();
+        //存在数据的客户号
+        Map<String, DynamicObject> existingDataMap = new HashMap<>();
+        for (DynamicObject obj : existingData) {
+            existingDataMap.put(obj.getString("nckd_cust_id"), obj);
+        }
+
+        for(DynamicObject dataList:dynamicObjectlist)
+        {
+            //获取这条数据的
+            String nckd_cust_id=dataList.getString("nckd_cust_id");
+            //客户号不存在则保存
+            if (!existingDataMap.containsKey(nckd_cust_id))
+            {
+                DynamicObject data = new DynamicObject(dynamicObjectType);
+                //客户号
+                data.set("nckd_cust_id",dataList.getString("nckd_cust_id"));
+                //客户名
+                data.set("nckd_cust_name",dataList.getString("nckd_cust_name"));
+                dataListAdd.add(data);
+            }
+        }
+        //保存
+        SaveServiceHelper.save(dynamicObjectType,dataListAdd.toArray(new DynamicObject[0]));
+
+    }
 }