From 4ca9d1426c70aa085168912c42f7c5e86e6b4231 Mon Sep 17 00:00:00 2001
From: zzs <hi@vio.vin>
Date: Wed, 2 Apr 2025 14:24:56 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=BF=E6=8D=A2=E5=85=B3=E7=B3=BB?=
 =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9B=B4=E6=96=B0=E6=80=BB=E6=88=90=E5=9B=BE?=
 =?UTF-8?q?=E5=86=8C=E6=98=8E=E7=BB=86=E4=B8=AD=E6=98=AF=E5=90=A6=E9=83=A8?=
 =?UTF-8?q?=E4=BB=B6=E6=98=AF=E5=90=A6=E4=B8=8A=E7=BA=A7=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../op/AssAtlasdetAuditOpEdit.java            | 46 ++---------------
 .../GenerateReplaceRelationshipTaskEdit.java  | 51 +++++++++++++++++++
 .../java/com/yem/em/utils/AtlasUtils.java     |  6 ++-
 3 files changed, 58 insertions(+), 45 deletions(-)

diff --git a/src/main/java/com/yem/em/ass/assatlasdet/op/AssAtlasdetAuditOpEdit.java b/src/main/java/com/yem/em/ass/assatlasdet/op/AssAtlasdetAuditOpEdit.java
index bd731f1f..0e7f3f58 100644
--- a/src/main/java/com/yem/em/ass/assatlasdet/op/AssAtlasdetAuditOpEdit.java
+++ b/src/main/java/com/yem/em/ass/assatlasdet/op/AssAtlasdetAuditOpEdit.java
@@ -12,6 +12,8 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
 
 import java.util.List;
 
+import static com.yem.em.task.GenerateReplaceRelationshipTaskEdit.updateIsCompAndIsUp;
+
 /**
  * @author zhouc
  * @date 2023/11/2 18:14
@@ -38,49 +40,7 @@ public class AssAtlasdetAuditOpEdit extends AbstractOperationServicePlugIn {
         if (e.getDataEntities() != null && e.getDataEntities().length != 0) {
             DynamicObject[] bills = e.getDataEntities();
             for (DynamicObject bill : bills) {
-                String number = bill.getString("number");
-                QFilter qFilter = new QFilter("enable", QCP.equals, "1");//
-                qFilter.and(new QFilter("yem_entryentity.yem_partnumber", QCP.equals, number));//
-                DynamicObject[] yem_em_assatlasdet = BusinessDataServiceHelper.load("yem_em_assatlasdet", "id"
-                        , new QFilter[]{qFilter}, null);
-                if (yem_em_assatlasdet.length > 0) {
-                    bill.set("yem_issup", true);
-                    for (int i = 0; i < yem_em_assatlasdet.length; i++) {
-                        DynamicObject assatlasdet = yem_em_assatlasdet[i];
-                        //根据id加载所有数据
-                        DynamicObject component = BusinessDataServiceHelper.loadSingle(assatlasdet.getLong("id"), "yem_em_assatlasdet");
-                        DynamicObjectCollection yemEntryentity = component.getDynamicObjectCollection("yem_entryentity");
-                        for (int j = 0; j < yemEntryentity.size(); j++) {
-                            DynamicObject dynamicObject = yemEntryentity.get(j);
-                            String yemPartnumber = dynamicObject.getString("yem_partnumber");
-                            if (yemPartnumber.equals(number)) {
-                                dynamicObject.set("yem_iscomp", true);
-                                dynamicObject.set("yem_compid", bill.getString("id"));
-                            }
-                        }
-                        //保存
-                        SaveServiceHelper.save(new DynamicObject[]{component});
-                    }
-                }
-                DynamicObjectCollection yem_entryentity = bill.getDynamicObjectCollection("yem_entryentity");
-                for (int i = 0; i < yem_entryentity.size(); i++) {
-                    DynamicObject object = yem_entryentity.get(i);
-                    boolean yem_iscomp = object.getBoolean("yem_iscomp");
-                    if (!yem_iscomp) {
-                        String yem_partnumber = object.getString("yem_partnumber");
-                        QFilter qFilter1 = new QFilter("enable", QCP.equals, "1");//
-                        qFilter1.and(new QFilter("number", QCP.equals, yem_partnumber));//
-                        DynamicObject assatlasdet = BusinessDataServiceHelper.loadSingle("yem_em_assatlasdet", "id,yem_issup,number,name"
-                                , new QFilter[]{qFilter1});
-                        if (assatlasdet != null) {
-                            assatlasdet.set("yem_issup", true);
-                            object.set("yem_iscomp", true);
-                            object.set("yem_compid", assatlasdet.getString("id"));
-                            SaveServiceHelper.save(new DynamicObject[]{assatlasdet});
-                        }
-                    }
-                }
-                SaveServiceHelper.save(new DynamicObject[]{bill});
+                updateIsCompAndIsUp(bill);
             }
         }
     }
diff --git a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java
index 71e5126a..f715c363 100644
--- a/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java
+++ b/src/main/java/com/yem/em/task/GenerateReplaceRelationshipTaskEdit.java
@@ -9,6 +9,7 @@ import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.exception.KDException;
 import kd.bos.fileservice.FileServiceFactory;
+import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.schedule.executor.AbstractTask;
 import kd.bos.servicehelper.AttachmentServiceHelper;
@@ -377,4 +378,54 @@ public class GenerateReplaceRelationshipTaskEdit extends AbstractTask {
         }
         return null;
     }
+
+    /**
+     * 更新总成图册明细中的 是否部件 、 是否有上级
+     * @param bill 总成图册明细
+     */
+    public static void updateIsCompAndIsUp(DynamicObject bill) {
+        String number = bill.getString("number");
+        QFilter qFilter = new QFilter("enable", QCP.equals, "1");//
+        qFilter.and(new QFilter("yem_entryentity.yem_partnumber", QCP.equals, number));//
+        DynamicObject[] yem_em_assatlasdet = BusinessDataServiceHelper.load("yem_em_assatlasdet", "id"
+                , new QFilter[]{qFilter}, null);
+        if (yem_em_assatlasdet.length > 0) {
+            bill.set("yem_issup", true);
+            for (int i = 0; i < yem_em_assatlasdet.length; i++) {
+                DynamicObject assatlasdet = yem_em_assatlasdet[i];
+                //根据id加载所有数据
+                DynamicObject component = BusinessDataServiceHelper.loadSingle(assatlasdet.getLong("id"), "yem_em_assatlasdet");
+                DynamicObjectCollection yemEntryentity = component.getDynamicObjectCollection("yem_entryentity");
+                for (int j = 0; j < yemEntryentity.size(); j++) {
+                    DynamicObject dynamicObject = yemEntryentity.get(j);
+                    String yemPartnumber = dynamicObject.getString("yem_partnumber");
+                    if (yemPartnumber.equals(number)) {
+                        dynamicObject.set("yem_iscomp", true);
+                        dynamicObject.set("yem_compid", bill.getString("id"));
+                    }
+                }
+                //保存
+                SaveServiceHelper.save(new DynamicObject[]{component});
+            }
+        }
+        DynamicObjectCollection yem_entryentity = bill.getDynamicObjectCollection("yem_entryentity");
+        for (int i = 0; i < yem_entryentity.size(); i++) {
+            DynamicObject object = yem_entryentity.get(i);
+            boolean yem_iscomp = object.getBoolean("yem_iscomp");
+            if (!yem_iscomp) {
+                String yem_partnumber = object.getString("yem_partnumber");
+                QFilter qFilter1 = new QFilter("enable", QCP.equals, "1");//
+                qFilter1.and(new QFilter("number", QCP.equals, yem_partnumber));//
+                DynamicObject assatlasdet = BusinessDataServiceHelper.loadSingle("yem_em_assatlasdet", "id,yem_issup,number,name"
+                        , new QFilter[]{qFilter1});
+                if (assatlasdet != null) {
+                    assatlasdet.set("yem_issup", true);
+                    object.set("yem_iscomp", true);
+                    object.set("yem_compid", assatlasdet.getString("id"));
+                    SaveServiceHelper.save(new DynamicObject[]{assatlasdet});
+                }
+            }
+        }
+        SaveServiceHelper.save(new DynamicObject[]{bill});
+    }
 }
diff --git a/src/main/java/com/yem/em/utils/AtlasUtils.java b/src/main/java/com/yem/em/utils/AtlasUtils.java
index b283edcb..6e09ad71 100644
--- a/src/main/java/com/yem/em/utils/AtlasUtils.java
+++ b/src/main/java/com/yem/em/utils/AtlasUtils.java
@@ -18,6 +18,8 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
 import java.math.BigDecimal;
 import java.util.*;
 
+import static com.yem.em.task.GenerateReplaceRelationshipTaskEdit.updateIsCompAndIsUp;
+
 /**
  * @author zhouc
  * @date 2023/10/24 11:33
@@ -424,7 +426,7 @@ public class AtlasUtils {
                     OperationResult Operate = OperationServiceHelper.executeOperate("save", yem_em_assatlasdet.getDynamicObjectType().getName(),
                             new DynamicObject[]{yem_em_assatlasdet}, OperateOption.create());
                     if (Operate.isSuccess()) {
-
+                        updateIsCompAndIsUp(yem_em_assatlasdet);
                     }
                 }
             }
@@ -571,7 +573,7 @@ public class AtlasUtils {
                 OperationResult Operate = OperationServiceHelper.executeOperate("save", yem_em_assatlasdet.getDynamicObjectType().getName(),
                         new DynamicObject[]{yem_em_assatlasdet}, OperateOption.create());
                 if (Operate.isSuccess()) {
-
+                    updateIsCompAndIsUp(yem_em_assatlasdet);
                 }
             }
         }