Răsfoiți Sursa

资产拆分单逻辑优化

wanwei 8 luni în urmă
părinte
comite
e805207b30

+ 59 - 16
src/main/java/fi/fa/opplugin/AssetSplitBillOpPlugin.java

@@ -2,8 +2,9 @@ package fi.fa.opplugin;
 
 import com.alibaba.druid.util.StringUtils;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
-import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
+import kd.bos.entity.plugin.args.AfterOperationArgs;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
@@ -12,26 +13,68 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
 //资产拆分单
 public class AssetSplitBillOpPlugin extends AbstractOperationServicePlugIn {
     @Override
-    public void beginOperationTransaction(BeginOperationTransactionArgs e) {
+    public void afterExecuteOperationTransaction(AfterOperationArgs e) {
         DynamicObject[] dynamicObjects = e.getDataEntities();
         for (int i = 0; i < dynamicObjects.length; i++) {
-            if (StringUtils.equals(e.getOperationKey(), "audit")) {
-                //审核通过后反写e管家实物卡片清单
-                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-                for (DynamicObject dynamicObject : info.getDynamicObjectCollection("subassetsplitentry")) {
-                    String number = dynamicObject.getString("aft_cardnumber");//资产编码
-                    DynamicObject card = dynamicObject.getDynamicObject("nckd_real_card_list");//e管家实物卡片清单字段
-                    Long id = card.getLong("id");
-                    //查询e管家实物卡片清单
-                    QFilter filter = new QFilter("id", QCP.equals,id);
-                    DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-                    for (int j = 0; j < cardObjects.length; j++) {
-                        DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[j].getPkValue(), cardObjects[j].getDynamicObjectType().getName());
-                        //更新星瀚实物编码字段
-                        cardInfo.set("nckd_card_real_code", number);
+            DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+            DynamicObject assetsplitentry = info.getDynamicObjectCollection("assetsplitentry").get(0);
+            //获取拆分后分录
+            DynamicObjectCollection subassetsplitentry = assetsplitentry.getDynamicObjectCollection("subassetsplitentry");
+            if (StringUtils.equals(e.getOperationKey(),"audit")) {
+                for (DynamicObject object : subassetsplitentry) {
+                    //拆分后分录实物卡片清单字段
+                    DynamicObject nckd_real_card_list = object.getDynamicObject("nckd_real_card_list");
+                    if (nckd_real_card_list != null) {
+                        //查询实物卡片
+                        String aft_cardnumber = object.getString("aft_cardnumber");
+                        QFilter filter = new QFilter("number", QCP.equals,aft_cardnumber);
+                        DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
+                        DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[0].getPkValue(), card[0].getDynamicObjectType().getName());
+
+                        //实物卡片表头多选基础资料赋值
+                        cardInfo.getDynamicObjectCollection("nckd_real_card").clear();
+                        cardInfo.getDynamicObjectCollection("nckd_real_card").addNew().set("fbasedataid",nckd_real_card_list);
+
+                        //实物卡片分录明细赋值
+                        DynamicObjectCollection nckd_realcard_list = cardInfo.getDynamicObjectCollection("nckd_realcard_list");
+                        nckd_realcard_list.clear();
+                        nckd_realcard_list.addNew().set("nckd_card_code21", nckd_real_card_list);
                         SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+
+                        //e管家实物卡片
+                        QFilter efilter = new QFilter("id", QCP.equals,nckd_real_card_list.getLong("id"));
+                        DynamicObject[] cardList = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {efilter});
+                        DynamicObject eCard = BusinessDataServiceHelper.loadSingle(cardList[0].getPkValue(), cardList[0].getDynamicObjectType().getName());
+                        eCard.set("nckd_card_real_code", aft_cardnumber);
+                        SaveServiceHelper.save(new DynamicObject[]{eCard});
+                    }
+                }
+            } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
+                DynamicObject realcard = assetsplitentry.getDynamicObject("realcard");
+                //查询实物卡片
+                QFilter filter = new QFilter("number", QCP.equals,realcard.getString("number"));
+                DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
+                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[0].getPkValue(), card[0].getDynamicObjectType().getName());
+                cardInfo.getDynamicObjectCollection("nckd_real_card").clear();
+                cardInfo.getDynamicObjectCollection("nckd_realcard_list").clear();
+                for (DynamicObject object : subassetsplitentry) {
+                    //拆分后分录实物卡片清单字段
+                    DynamicObject nckd_real_card_list = object.getDynamicObject("nckd_real_card_list");
+                    if (nckd_real_card_list != null) {
+
+                        cardInfo.getDynamicObjectCollection("nckd_real_card").addNew().set("fbasedataid",nckd_real_card_list);
+
+                        cardInfo.getDynamicObjectCollection("nckd_realcard_list").addNew().set("nckd_card_code21", nckd_real_card_list);
+
+                        //e管家实物卡片
+                        QFilter efilter = new QFilter("id", QCP.equals,nckd_real_card_list.getLong("id"));
+                        DynamicObject[] cardList = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {efilter});
+                        DynamicObject eCard = BusinessDataServiceHelper.loadSingle(cardList[0].getPkValue(), cardList[0].getDynamicObjectType().getName());
+                        eCard.set("nckd_card_real_code", realcard.getString("number"));
+                        SaveServiceHelper.save(new DynamicObject[]{eCard});
                     }
                 }
+                SaveServiceHelper.save(new DynamicObject[]{cardInfo});
             }
         }
     }

+ 32 - 54
src/main/java/fi/fa/opplugin/RealCardBillOpPlugin.java

@@ -9,7 +9,6 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
-
 import java.util.ArrayList;
 import java.util.List;
 //实物卡片
@@ -18,67 +17,46 @@ public class RealCardBillOpPlugin extends AbstractOperationServicePlugIn {
     public void beginOperationTransaction(BeginOperationTransactionArgs e) {
         DynamicObject[] dynamicObjects = e.getDataEntities();
         for (int i = 0; i < dynamicObjects.length; i++) {
-                if (StringUtils.equals(e.getOperationKey(),"audit")) {
-                    List<Long> ids = new ArrayList<>();
-                    //审批通过后,如果是报销单下推的单据,则回写e卡片清单
-                    DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-                    String srcbillentityname = info.getString("srcbillentityname");
-                    Long bxId = info.getLong("nckd_bz_id");
-                    String number = info.getString("number");//资产编码
-                    String name = info.getString("assetname");//资产名称
-                    DynamicObject org = info.getDynamicObject("assetunit");//资产组织
-                    String orgName = org.getString("name");
-                    if ("fa_assetsplitbill".equals(srcbillentityname)) {
-                        Long cfId = info.getLong("srcbillid");
-                        //查询资产拆分单
-                        QFilter cfFilter = new QFilter("id", QCP.equals,cfId);
-                        DynamicObject[] dispatchObjects = BusinessDataServiceHelper.load("fa_assetsplitbill","id",new QFilter[] {cfFilter});
-                        DynamicObject dispatchInfo = BusinessDataServiceHelper.loadSingle(dispatchObjects[0].getPkValue(), dispatchObjects[0].getDynamicObjectType().getName());
-                        //获取拆分后分录
-                        DynamicObjectCollection collection = dispatchInfo.getDynamicObjectCollection("assetsplitentry").get(0).getDynamicObjectCollection("subassetsplitentry");
-                        //从拆分分录第二行开始回写
-                        //获取拆分后卡片分录e管家实物卡片
-                        DynamicObject card_list = collection.get(i+1).getDynamicObject("nckd_real_card_list");
-                        if (card_list != null) {
-                            Long id = card_list.getLong("id");
-                            //查询实物卡片清单
-                            QFilter filter = new QFilter("id", QCP.equals,id);
-                            DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[0].getPkValue(), cardObjects[0].getDynamicObjectType().getName());
-                            //回写实物卡片字段到e管家实物卡片清单
+            if (StringUtils.equals(e.getOperationKey(),"audit")) {
+                List<Long> ids = new ArrayList<>();
+                //审批通过后,如果是报销单下推的单据,则回写e卡片清单
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                String srcbillentityname = info.getString("srcbillentityname");
+                Long bxId = info.getLong("nckd_bz_id");
+                String number = info.getString("number");//资产编码
+                String name = info.getString("assetname");//资产名称
+                DynamicObject org = info.getDynamicObject("assetunit");//资产组织
+                String orgName = org.getString("name");
+                if (!"fa_assetsplitbill".equals(srcbillentityname)) {
+                    DynamicObjectCollection nckd_real_card = info.getDynamicObjectCollection("nckd_real_card");
+                    if( nckd_real_card != null) {
+                        for (DynamicObject object : nckd_real_card) {
+                            DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(object.get(2), "nckd_fa_card_real_list");
                             //回写e卡片实物清单字段
                             cardInfo.set("nckd_card_real_org", orgName);
                             cardInfo.set("nckd_card_real_code", number);
                             cardInfo.set("nckd_card_real_name", name);
                             SaveServiceHelper.save(new DynamicObject[]{cardInfo});
                         }
-                    }else {
-                        DynamicObjectCollection nckd_real_card = info.getDynamicObjectCollection("nckd_real_card");
-                        if( nckd_real_card != null) {
-                            for (DynamicObject object : nckd_real_card) {
-                                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(object.get(2), "nckd_fa_card_real_list");
-                                //回写e卡片实物清单字段
-                                cardInfo.set("nckd_card_real_org", orgName);
-                                cardInfo.set("nckd_card_real_code", number);
-                                cardInfo.set("nckd_card_real_name", name);
-                                SaveServiceHelper.save(new DynamicObject[]{cardInfo});
-                            }
-                        }
                     }
-                }else if(StringUtils.equals(e.getOperationKey(),"unaudit")) {
-                //反审核,e管家实物卡片清单三个字段置为空
+                }
+            }else if(StringUtils.equals(e.getOperationKey(),"unaudit")) {
                 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-                String number = info.getString("number");//资产编码
-                //查询e管家实物清单
-                QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
-                DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
-                for (int j = 0; j < cardObjects.length; j++) {
-                    DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[j].getPkValue(), cardObjects[j].getDynamicObjectType().getName());
-                    //回写e卡片实物清单字段
-                    cardInfo.set("nckd_card_real_org", null);
-                    cardInfo.set("nckd_card_real_code", null);
-                    cardInfo.set("nckd_card_real_name", null);
-                    SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                String srcbillentityname = info.getString("srcbillentityname");
+                if (!"fa_assetsplitbill".equals(srcbillentityname)) {
+                    //反审核,e管家实物卡片清单三个字段置为空
+                    String number = info.getString("number");//资产编码
+                    //查询e管家实物清单
+                    QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
+                    DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+                    for (int j = 0; j < cardObjects.length; j++) {
+                        DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[j].getPkValue(), cardObjects[j].getDynamicObjectType().getName());
+                        //回写e卡片实物清单字段
+                        cardInfo.set("nckd_card_real_org", null);
+                        cardInfo.set("nckd_card_real_code", null);
+                        cardInfo.set("nckd_card_real_name", null);
+                        SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                    }
                 }
             }
         }