|
@@ -135,6 +135,7 @@ public class ChangeDataUtils {
|
|
String dispatchType = info.getString("nckd_dispatch_type");//调拨类型
|
|
String dispatchType = info.getString("nckd_dispatch_type");//调拨类型
|
|
String nckd_card_real_code = info.getString("nckd_card_number");
|
|
String nckd_card_real_code = info.getString("nckd_card_number");
|
|
String nckd_storeplace = info.getString("nckd_storeplace");
|
|
String nckd_storeplace = info.getString("nckd_storeplace");
|
|
|
|
+ String user = info.getString("nckd_used_user");
|
|
String[] asset = nckd_card_real_code.split(",");
|
|
String[] asset = nckd_card_real_code.split(",");
|
|
if (nckd_card_real_code.isEmpty()) {
|
|
if (nckd_card_real_code.isEmpty()) {
|
|
return "单据" + billno + "未绑定资产信息,生成调拨单失败";
|
|
return "单据" + billno + "未绑定资产信息,生成调拨单失败";
|
|
@@ -151,60 +152,75 @@ public class ChangeDataUtils {
|
|
|
|
|
|
//组织相同则处理
|
|
//组织相同则处理
|
|
if (isSame) {
|
|
if (isSame) {
|
|
|
|
+ //经费系统实物卡片编码
|
|
|
|
+ List<String> cardNumberList = 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);
|
|
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);
|
|
QFilter filter = new QFilter("number", QCP.in,numberList);
|
|
- DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
|
|
|
|
- if (dynamicObjects.length == 0 || dynamicObjects.length != numberList.size()) {
|
|
|
|
|
|
+ DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id,nckd_card_real_code",new QFilter[] {filter});
|
|
|
|
+ //查询e管家实物卡片关联的经费系统实物卡片
|
|
|
|
+ for (DynamicObject eCard : dynamicObjects) {
|
|
|
|
+ String cardNumber = eCard.getString("nckd_card_real_code");
|
|
|
|
+ cardNumberList.add(cardNumber);
|
|
|
|
+ }
|
|
|
|
+ //再查经费系统实物卡片关联的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管家实物卡片编码
|
|
|
|
+ for (DynamicObject eCard : edynamicObjects) {
|
|
|
|
+ String number = eCard.getString("number");
|
|
|
|
+ eCardNumberList.add(number);
|
|
|
|
+ }
|
|
|
|
+ //对比中间表关联的e管家实物卡片和查询到的e管家实物卡片
|
|
|
|
+ if (eCardNumberList.size() > numberList.size()) {
|
|
return "单据"+billno+"绑定的资产有未同步至星瀚的数据,生成调拨单失败";
|
|
return "单据"+billno+"绑定的资产有未同步至星瀚的数据,生成调拨单失败";
|
|
|
|
+ } else if (eCardNumberList.size() == numberList.size()) {
|
|
|
|
+ boolean areEqual = areListsEqual(numberList, eCardNumberList);
|
|
|
|
+ if (!areEqual) {
|
|
|
|
+ return "单据"+billno+"绑定的资产与经费系统实物卡片绑定的资产不一致,生成调拨单失败";
|
|
|
|
+ }
|
|
}else {
|
|
}else {
|
|
- DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType().getName());
|
|
|
|
- //获取星瀚资产编码,查询关联的e管家实物卡片清单数量
|
|
|
|
- String code = cardInfo.getString("nckd_card_real_code");
|
|
|
|
- if (StringUtils.isEmpty(code)) {
|
|
|
|
- //星瀚未生成实物卡片,更新实物卡片清单数据-查询组织对照表
|
|
|
|
- Long orgId = getOrg(e_orgId);
|
|
|
|
- if (ObjectUtils.isNotEmpty(orgId) && ("0".equals(dispatchType))) {
|
|
|
|
- //更新归属机构,归属部门,使用人
|
|
|
|
- for (int a = 0; a < dynamicObjects.length ; a++) {
|
|
|
|
- DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
|
|
|
|
- Long deptId = getOrg(info.getString("nckd_dept_in"));
|
|
|
|
- ecardInfoList.set("nckd_orgfield", getRelation(deptId));
|
|
|
|
- ecardInfoList.set("nckd_dept", deptId);
|
|
|
|
- ecardInfoList.set("nckd_local", nckd_storeplace);
|
|
|
|
- ecardInfoList.set("nckd_use_name", info.getString("user"));
|
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
|
|
|
|
- }
|
|
|
|
- }else if (ObjectUtils.isNotEmpty(orgId) && "1".equals(dispatchType)) {
|
|
|
|
- //更新是否报废为是
|
|
|
|
- for (int a = 0; a < dynamicObjects.length ; a++) {
|
|
|
|
- DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
|
|
|
|
- ecardInfoList.set("nckd_dept", getOrg(info.getString("nckd_dept_in")));
|
|
|
|
- ecardInfoList.set("nckd_local", nckd_storeplace);
|
|
|
|
- ecardInfoList.set("nckd_use_name", info.getString("user"));
|
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
|
|
|
|
- }
|
|
|
|
|
|
+ // 检查 eCardNumberList 是否有 numberList 没有的元素
|
|
|
|
+ for (String eCard : eCardNumberList) {
|
|
|
|
+ if (!numberList.contains(eCard)) {
|
|
|
|
+ return "单据"+billno+"绑定的资产与经费系统实物卡片绑定的资产不一致,生成调拨单失败";
|
|
}
|
|
}
|
|
- else if (ObjectUtils.isNotEmpty(orgId) && "2".equals(dispatchType)) {
|
|
|
|
- //更新是否报废为是
|
|
|
|
- for (int a = 0; a < dynamicObjects.length ; a++) {
|
|
|
|
- DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
|
|
|
|
- ecardInfoList.set("nckd_discard",1);
|
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- return "资产信息的组织在组织对照表中未查询到数据,生成调拨单失败";
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (String number : numberList) {
|
|
|
|
+ if (!eCardNumberList.contains(number)) {
|
|
|
|
+ missingInECard.add(number);
|
|
}
|
|
}
|
|
- return "星瀚系统未生成实物卡片,已更新e管家实物卡片清单";
|
|
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //查询未匹配到的e管家实物卡片做更新
|
|
|
|
+ QFilter filter2 = new QFilter("number", QCP.in,missingInECard);
|
|
|
|
+ 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);
|
|
|
|
+ for (DynamicObject object : missingObject) {
|
|
|
|
+ DynamicObject eCardInfo = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDynamicObjectType().getName());
|
|
|
|
+ if ("0".equals(dispatchType)) {
|
|
|
|
+ //调出单更新组织部门人员存放地点
|
|
|
|
+ eCardInfo.set("nckd_orgfield", orgId);
|
|
|
|
+ eCardInfo.set("nckd_dept", deptId);
|
|
|
|
+ eCardInfo.set("nckd_local", nckd_storeplace);
|
|
|
|
+ eCardInfo.set("nckd_use_name", user);
|
|
|
|
+
|
|
|
|
+ } else if ("1".equals(dispatchType)) {
|
|
|
|
+ //变更单更新部门人员存放地点
|
|
|
|
+ eCardInfo.set("nckd_dept", deptId);
|
|
|
|
+ eCardInfo.set("nckd_local", nckd_storeplace);
|
|
|
|
+ eCardInfo.set("nckd_use_name", user);
|
|
}else {
|
|
}else {
|
|
- //查询e管家实物卡片清单
|
|
|
|
- QFilter qfilter = new QFilter("nckd_card_real_code", QCP.equals,code);
|
|
|
|
- DynamicObject[] cardObject = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {qfilter});
|
|
|
|
- //e管家推送的清单和星瀚系统保存的清单数量不一致,返回错误信息并且不能生成调拨单
|
|
|
|
- if (cardObject.length > 0 && asset.length != cardObject.length) {
|
|
|
|
- return "单据"+billno+"绑定的资产信息与星瀚实物卡片数量不一致,生成调拨单失败";
|
|
|
|
- }
|
|
|
|
|
|
+ //更新是否报废为是
|
|
|
|
+ eCardInfo.set("nckd_discard", 1);
|
|
}
|
|
}
|
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{eCardInfo});
|
|
}
|
|
}
|
|
}else {
|
|
}else {
|
|
//资产信息组织不同
|
|
//资产信息组织不同
|
|
@@ -227,4 +243,14 @@ public class ChangeDataUtils {
|
|
}
|
|
}
|
|
return codeList;
|
|
return codeList;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public static boolean areListsEqual(List<String> list1, List<String> list2) {
|
|
|
|
+ for (int i = 0; i < list1.size(); i++) {
|
|
|
|
+ if (!list1.get(i).equals(list2.get(i))) {
|
|
|
|
+ return false; // 发现元素不相同
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return true; // 所有元素相同
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|