Jelajahi Sumber

国资委对接优化

dingsixi 1 Minggu lalu
induk
melakukan
2c693a1a10

+ 11 - 3
base/nckd-base-common/src/main/java/nckd/base/common/utils/GzwCommonUtils.java

@@ -146,6 +146,9 @@ public class GzwCommonUtils {
         List<File> xmlFileList = new ArrayList<>();
         //生成单据数据XML文件
         for (Map.Entry<String, Object> entry : xmlMap.entrySet()) {
+            if(ObjectUtils.isEmpty(entry.getValue())){
+                continue;
+            }
             File xmlFile = GzwCommonUtils.createXMLFile(uscc, entry.getKey(), ver, cusDateStr, (List<LinkedHashMap<String, Object>>) entry.getValue());
             xmlFileList.add(xmlFile);
         }
@@ -376,7 +379,7 @@ public class GzwCommonUtils {
      * @param obj 业务数据
      * @return 获取数据标识( 1  表示新增,2 表示修改,3  表示删除 ),默认为 1
      */
-    public static String getDataFlag(DynamicObject obj,String pushState) {
+    public static String getDataFlag(DynamicObject obj, String pushState) {
         //是否推送
         boolean isPush = obj.getBoolean("nckd_ispush");
         //元数据
@@ -389,7 +392,7 @@ public class GzwCommonUtils {
         String numberSign = properties.containsKey("number") ? "number" : "billno";
         //单据已审核 且 未推送单据  标识 = 新增。  如果已推送,说明不需要再次推送
         if ((obj.getString(statusSign).equals("C") || obj.getString(statusSign).equals("E")) && !isPush) {
-            if(pushState.equals("ZCTS")){
+            if (pushState.equals("ZCTS")) {
                 //设置已推送
                 obj.set("nckd_ispush", Boolean.TRUE);
             }
@@ -397,7 +400,7 @@ public class GzwCommonUtils {
         }
         //单据非已审核 且 已推送 标识=删除。 如果未推送,说明数据还未审核过 或者 已进行过删除,也不需要再次推送
         if (!obj.getString(statusSign).equals("C") && !obj.getString(statusSign).equals("E") && isPush) {
-            if(pushState.equals("ZCTS")){
+            if (pushState.equals("ZCTS")) {
                 //设置未推送
                 obj.set("nckd_ispush", Boolean.FALSE);
             }
@@ -526,6 +529,11 @@ public class GzwCommonUtils {
     public static File saveXmlToFile(String xmlContent, String filePath) {
         File xmlFile = new File(filePath);
 
+        File parentDir = xmlFile.getParentFile();
+        if (parentDir != null && !parentDir.exists()) {
+            parentDir.mkdirs();
+        }
+
         try (BufferedWriter writer = new BufferedWriter(
                 new OutputStreamWriter(new FileOutputStream(xmlFile), StandardCharsets.UTF_8))) {
             writer.write(xmlContent);

+ 1 - 4
base/nckd-base-common/src/main/java/nckd/base/common/utils/GzwXmlUtils.java

@@ -183,10 +183,7 @@ public class GzwXmlUtils {
         Element headElement = doc.createElement("Head");
         packageElement.appendChild(headElement);
 
-        // 检查数据是否有效
-        if (recordList.isEmpty()) {
-            throw new IllegalArgumentException("recordList不能为空");
-        }
+
 
         LinkedHashMap<String, Object> firstRecord = recordList.get(0);
 

+ 6 - 3
nckd-fi/src/main/java/nckd/fi/er/opplugin/GzwPushOpPlugin.java

@@ -1,7 +1,9 @@
 package nckd.fi.er.opplugin;
 
 import com.alibaba.fastjson.JSONObject;
+import kd.bos.dataentity.entity.CloneUtils;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.utils.OrmUtils;
 import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 import kd.bos.entity.plugin.PreparePropertysEventArgs;
 import kd.bos.entity.plugin.args.AfterOperationArgs;
@@ -50,10 +52,11 @@ public abstract class GzwPushOpPlugin extends AbstractOperationServicePlugIn {
      * @param dynamicObjects 业务单据数据
      */
     protected void pushGzw(DynamicObject[] dynamicObjects) {
-        //重新创建数组,如果报错,修改了单据的数据无法还原,所以此处用新数组进行处理
+        CloneUtils cloneUtils = new CloneUtils(false, false);
+        //复制单据,如果报错,修改了单据的数据无法还原,所以此处用新数组进行处理
         DynamicObject[] bills = new DynamicObject[dynamicObjects.length];
         for (int i = 0; i < dynamicObjects.length; i++) {
-            bills[i] = dynamicObjects[i];
+            bills[i] = (DynamicObject) cloneUtils.clone(dynamicObjects[i]);
         }
         // 获取费控系统参数
         Map<String, Object> sysCtrlParameter = ParamUtils.getSysCtrlParameter(ParamUtils.EM);
@@ -186,7 +189,7 @@ public abstract class GzwPushOpPlugin extends AbstractOperationServicePlugIn {
         }
 
         if (!successList.isEmpty()) {
-            SaveServiceHelper.save(successList.toArray(new DynamicObject[0]));
+            SaveServiceHelper.update(successList.toArray(new DynamicObject[0]));
         }
         //创建日志
         if (!logList.isEmpty()) {