ソースを参照

资产拆分单添加匹配按钮

wanwei 8 ヶ月 前
コミット
231975b9df

+ 31 - 0
src/main/java/fi/er/opplugin/PublicreimburOpPlugin.java

@@ -4,12 +4,14 @@ import com.alibaba.druid.util.StringUtils;
 import fi.cas.common.SettlementStatusEnum;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.metadata.IDataEntityType;
 import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
 import kd.bos.exception.KDBizException;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.DeleteServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
 
 import java.math.BigDecimal;
@@ -82,11 +84,40 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
                             DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[i].getPkValue(), cardObjects[i].getDynamicObjectType().getName());
                             //资产报账单审核通过后,实物卡片清单标记为1
                             cardInfo.set("nckd_flag", "0");
+                            //星瀚实物卡片三个字段回写为空
+                            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});
                         }
                     }
                 }
                 SaveServiceHelper.save(new DynamicObject[]{info});
+
+                //反审核需要删除资产报账单下推的物卡片清单
+                //查询实物卡片清单
+                QFilter cardFilter = new QFilter("nckd_bz_id", QCP.equals,info.getLong("id"));
+                DynamicObject[] cardDynamicObjects = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {cardFilter});
+                if (cardDynamicObjects.length > 0) {
+                    for (int d=0;d<cardDynamicObjects.length;d++) {
+                        DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardDynamicObjects[i].getPkValue(), cardDynamicObjects[i].getDynamicObjectType().getName());
+                        String billno = cardInfo.getString("billno");
+                        //删除实物卡片
+                        IDataEntityType dataEntityType = cardInfo.getDataEntityType();
+                        Object[] pks = new Object[]{cardInfo.getLong("id")};
+                        DeleteServiceHelper.delete(dataEntityType, pks);
+                        //查询财务卡片
+                        QFilter cwFilter = new QFilter("billno", QCP.equals,cardInfo.getString("billno"));
+                        DynamicObject[] cwDynamicObjects = BusinessDataServiceHelper.load("fa_card_fin","id",new QFilter[] {cwFilter});
+                        for (int f=0;f<cwDynamicObjects.length;f++) {
+                            DynamicObject cwInfo = BusinessDataServiceHelper.loadSingle(cwDynamicObjects[i].getPkValue(), cwDynamicObjects[i].getDynamicObjectType().getName());
+                            //删除财务卡片
+                            IDataEntityType cwdataEntityType = cwInfo.getDataEntityType();
+                            Object[] ids = new Object[]{cwInfo.getLong("id")};
+                            DeleteServiceHelper.delete(cwdataEntityType, ids);
+                        }
+                    }
+                }
             } else if (StringUtils.equals(e.getOperationKey(),"save")) {
                 List<Long> cardList = new ArrayList<>();
                 List<Long> totalList = new ArrayList<>();

+ 39 - 0
src/main/java/fi/fa/formPlugin/AssetSplitBilFormPlugin.java

@@ -0,0 +1,39 @@
+package fi.fa.formPlugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.entity.LocaleString;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.list.plugin.AbstractListPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.sdk.plugin.Plugin;
+
+public class AssetSplitBilFormPlugin extends AbstractListPlugin implements Plugin {
+    private final static String KEY_Card = "selectcard";//匹配卡片清单按钮
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs e) {
+        String operateKey = e.getOperateKey();
+        if (KEY_Card.equals(e.getOperateKey())) {
+            DynamicObjectCollection collection = new DynamicObjectCollection();
+            //获取实物卡片编码
+            DynamicObjectCollection subassetsplitentry = (DynamicObjectCollection) this.getModel().getValue("subassetsplitentry");
+            String number = this.getModel().getDataEntity().getDynamicObjectCollection("assetsplitentry").get(0).getDynamicObject("realcard").getString("number");
+            //查询e管家实物卡片清单
+//            QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
+            QFilter filter = new QFilter("name", QCP.equals,"电脑");
+            filter.or("name", QCP.equals, "手机");
+            DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+            for (int i = 0; i < dynamicObjects.length; i++) {
+                DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
+                LocaleString localeString = new LocaleString();
+                localeString.setLocaleValue(info.getString("name"));
+                //给资产名称,e管家实物卡片清单赋值
+                subassetsplitentry.get(i).set("aft_assetname",localeString);
+                subassetsplitentry.get(i).set("nckd_real_card_list",info);
+            }
+            this.getView().updateView("subassetsplitentry");
+        }
+    }
+}

+ 74 - 0
src/main/java/fi/fa/opplugin/RealCardBillOpPlugin.java

@@ -0,0 +1,74 @@
+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.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;
+
+public class RealCardBillOpPlugin extends AbstractOperationServicePlugIn {
+    @Override
+    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());
+                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");
+                //查询报销单
+                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(StringUtils.equals(e.getOperationKey(),"unaudit")) {
+                //反审核,e管家实物卡片清单三个字段置为空
+                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});
+                }
+            }
+        }
+    }
+}

+ 50 - 0
src/main/java/fi/fa/opplugin/RealCardSplitF7OpPlugin.java

@@ -0,0 +1,50 @@
+package fi.fa.opplugin;
+
+import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.events.ChangeData;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.form.field.events.BeforeF7SelectEvent;
+import kd.bos.form.field.events.BeforeF7SelectListener;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+
+
+import java.util.EventObject;
+
+//资产拆分单
+public class RealCardSplitF7OpPlugin extends AbstractFormPlugin implements BeforeF7SelectListener {
+    @Override
+    public void registerListener(EventObject e) {
+        //监听单据字段
+//        super.registerListener(e);
+//        RefBillEdit bill = this.getView().getControl("split_realcard");
+//        bill.addBeforeF7SelectListener(this);
+    }
+    @Override
+    public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
+
+    }
+
+    @Override
+    public void propertyChanged(PropertyChangedArgs e) {
+        String fieldKey = e.getProperty().getName();
+        if (StringUtils.equals("split_realcard", fieldKey)) {
+            //获取变更的数据
+            ChangeData changeData = e.getChangeSet()[0];
+            DynamicObject dynamicObject = (DynamicObject) changeData.getNewValue();
+            if (dynamicObject != null) {
+                String number = dynamicObject.getString("number");
+                //查询e管家实物卡片清单
+//                QFilter filter = new QFilter("nckd_card_real_code", QCP.equals,number);
+                QFilter filter = new QFilter("name", QCP.equals,"电脑");
+                filter.or("name", QCP.equals, "手机");
+                DynamicObject[] cardDynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
+                int splitqty = cardDynamicObjects.length;
+                this.getModel().setValue("splitqty", splitqty);
+            }
+        }
+    }
+}