Browse Source

资产拆分单回写e管家实物卡片清单

wanwei 11 months ago
parent
commit
5ea25e4c29

+ 9 - 3
src/main/java/fi/fa/formPlugin/AssetSplitBilFormPlugin.java

@@ -29,9 +29,15 @@ public class AssetSplitBilFormPlugin extends AbstractListPlugin implements Plugi
                 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
                 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
                 LocaleString localeString = new LocaleString();
                 LocaleString localeString = new LocaleString();
                 localeString.setLocaleValue(info.getString("name"));
                 localeString.setLocaleValue(info.getString("name"));
-                //给资产名称,e管家实物卡片清单赋值
-                subassetsplitentry.get(i).set("aft_assetname",localeString);
-                subassetsplitentry.get(i).set("nckd_real_card_list",info);
+                if (this.getModel().getValue("biztype").equals("B")) {
+                    //给资产名称,e管家实物卡片清单赋值
+                    subassetsplitentry.get(i+1).set("aft_assetname",localeString);
+                    subassetsplitentry.get(i+1).set("nckd_real_card_list",info);
+                } else if (this.getModel().getValue("biztype").equals("A")) {
+                    //给资产名称,e管家实物卡片清单赋值
+                    subassetsplitentry.get(i).set("aft_assetname",localeString);
+                    subassetsplitentry.get(i).set("nckd_real_card_list",info);
+                }
             }
             }
             this.getView().updateView("subassetsplitentry");
             this.getView().updateView("subassetsplitentry");
         }
         }

+ 53 - 29
src/main/java/fi/fa/opplugin/RealCardBillOpPlugin.java

@@ -19,43 +19,67 @@ public class RealCardBillOpPlugin extends AbstractOperationServicePlugIn {
         DynamicObject[] dynamicObjects = e.getDataEntities();
         DynamicObject[] dynamicObjects = e.getDataEntities();
         for (int i = 0; i < dynamicObjects.length; i++) {
         for (int i = 0; i < dynamicObjects.length; i++) {
                 if (StringUtils.equals(e.getOperationKey(),"audit")) {
                 if (StringUtils.equals(e.getOperationKey(),"audit")) {
-                List<Long> ids = new ArrayList<>();
-                //审批通过后,如果是报销单下推的单据,则回写e卡片清单
-                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
-                Long bxId = info.getLong("nckd_bz_id");
-                if (bxId != null) {
+                    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 number = info.getString("number");//资产编码
                     String name = info.getString("assetname");//资产名称
                     String name = info.getString("assetname");//资产名称
                     DynamicObject org = info.getDynamicObject("assetunit");//资产组织
                     DynamicObject org = info.getDynamicObject("assetunit");//资产组织
                     String orgName = org.getString("name");
                     String orgName = org.getString("name");
-                    //查询报销单
-                    QFilter bxFilter = new QFilter("id", QCP.equals,bxId);
-                    DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load("er_publicreimbursebill","id",new QFilter[] {bxFilter});
-                    for (int c=0;c<bxDynamicObjects.length;c++) {
-                        //报销单头数据包
-                        DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[c].getPkValue(), bxDynamicObjects[c].getDynamicObjectType().getName());
-                        //循环资产信息分录
-                        for(DynamicObject object : bxInfo.getDynamicObjectCollection("assetentry")){
-                            //获取e管家实物卡片清单基础资料
-                            DynamicObjectCollection cardList = object.getDynamicObjectCollection("nckd_real_card");
-                            for (DynamicObject card : cardList) {
-                                Long id = (Long) card.get(2);
-                                //查询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());
-                                    //回写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});
+                    //报销单下推生成的实物卡片审核后回写e管家实物卡片清单
+                    if (bxId != 0) {
+                        //查询报销单
+                        QFilter bxFilter = new QFilter("id", QCP.equals,bxId);
+                        DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load("er_publicreimbursebill","id",new QFilter[] {bxFilter});
+                        for (int c=0;c<bxDynamicObjects.length;c++) {
+                            //报销单头数据包
+                            DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[c].getPkValue(), bxDynamicObjects[c].getDynamicObjectType().getName());
+                            //循环资产信息分录
+                            for(DynamicObject object : bxInfo.getDynamicObjectCollection("assetentry")){
+                                //获取e管家实物卡片清单基础资料
+                                DynamicObjectCollection cardList = object.getDynamicObjectCollection("nckd_real_card");
+                                for (DynamicObject card : cardList) {
+                                    Long id = (Long) card.get(2);
+                                    //查询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());
+                                        //回写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 ("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");
+                        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管家实物卡片清单
+                        //回写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")) {
+                }else if(StringUtils.equals(e.getOperationKey(),"unaudit")) {
                 //反审核,e管家实物卡片清单三个字段置为空
                 //反审核,e管家实物卡片清单三个字段置为空
                 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
                 DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
                 String number = info.getString("number");//资产编码
                 String number = info.getString("number");//资产编码