Explorar o código

校验资产信息

wanwei hai 5 meses
pai
achega
68227d3e95
Modificáronse 1 ficheiros con 19 adicións e 19 borrados
  1. 19 19
      src/main/java/fi/fa/opplugin/utils/ChangeDataUtils.java

+ 19 - 19
src/main/java/fi/fa/opplugin/utils/ChangeDataUtils.java

@@ -152,20 +152,33 @@ public class ChangeDataUtils {
         if (isSame) {
             //经费系统实物卡片编码
             List<String> cardNumberList = new ArrayList<>();
+            //中间表绑定的需要更新的资产信息
+            List<String> uploadNumberList = new ArrayList<>();
             //经费系统实物卡片关联的e管家实物卡片编码
             List<String> eCardNumberList = new ArrayList<>();
             //numberList 中有而 eCardNumberList 中没有的元素
             List<String> missingInECard = new ArrayList<>();
             String e_orgId = Arrays.stream(asset).map(item -> item.split(":")[1]).collect(Collectors.toList()).get(0);
-            //查询e管家实物卡片清单
+            //根据中间表关联的资产信息查询e管家实物卡片清单
             QFilter filter = new QFilter("number", QCP.in,numberList);
             DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id,nckd_card_real_code",new QFilter[] {filter});
-            //查询e管家实物卡片关联的经费系统实物卡片
+            //中间表绑定的资产信息有未同步至经费系统的直接报错
+            if(dynamicObjects.length != numberList.size()) {
+                return "单据"+billno+"绑定的资产有未同步至星瀚的数据,生成调拨单失败";
+            }
             for (DynamicObject eCard : dynamicObjects) {
                 String cardNumber = eCard.getString("nckd_card_real_code");
-                cardNumberList.add(cardNumber);
+                String number = eCard.getString("number");
+                if (cardNumber != null) {
+                    //获取e管家实物卡片关联的经费系统实物卡片
+                    cardNumberList.add(cardNumber);
+                }else {
+                    //获取需要更新的资产信息
+                    uploadNumberList.add(number);
+                    numberList.remove(number);
+                }
             }
-            //再查经费系统实物卡片关联的e管家实物卡片
+            //再查经费系统实物卡片关联的e管家实物卡片-已经生成实物卡片的e管家实物卡片清单
             QFilter filter1 = new QFilter("nckd_card_real_code", QCP.in,cardNumberList);
             DynamicObject[] edynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter1});
             //获取e管家实物卡片编码
@@ -181,22 +194,9 @@ public class ChangeDataUtils {
                 if (!areEqual) {
                     return "单据"+billno+"绑定的资产与经费系统实物卡片绑定的资产不一致,生成调拨单失败";
                 }
-            }else {
-                // 检查 eCardNumberList 是否有 numberList 没有的元素
-                for (String eCard : eCardNumberList) {
-                    if (!numberList.contains(eCard)) {
-                        return "单据"+billno+"绑定的资产与经费系统实物卡片绑定的资产不一致,生成调拨单失败";
-                    }
-                }
-
-                for (String number : numberList) {
-                    if (!eCardNumberList.contains(number)) {
-                        missingInECard.add(number);
-                    }
-                }
             }
-            //查询未匹配到的e管家实物卡片做更新
-            QFilter filter2 = new QFilter("number", QCP.in,missingInECard);
+            //更新e管家实物卡片清单
+            QFilter filter2 = new QFilter("number", QCP.in,uploadNumberList);
             DynamicObject[] missingObject = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter2});
             Long deptId = getOrg(info.getString("nckd_dept_in"));
             Long orgId = getRelation(deptId);