Forráskód Böngészése

报销入口,优化

wanghaiwu 1 hete
szülő
commit
1a1a4910c6

+ 68 - 4
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/DailyApplyBillEditPlugin.java

@@ -4,9 +4,11 @@ import kd.bos.bill.AbstractBillPlugIn;
 import kd.bos.bill.BillShowParameter;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.resource.ResManager;
 import kd.bos.entity.datamodel.events.BizDataEventArgs;
 import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 import kd.bos.entity.property.BasedataProp;
+import kd.bos.exception.KDBizException;
 import kd.bos.ext.fi.plugin.ArApConvert.util.EmptyUtils;
 import kd.bos.form.field.BasedataEdit;
 import kd.bos.form.field.events.BeforeF7SelectEvent;
@@ -43,11 +45,15 @@ public class DailyApplyBillEditPlugin extends AbstractBillPlugIn implements Befo
         String property = evt.getProperty().getName();
         String entityId = ((BasedataProp) evt.getProperty()).getBaseEntityId();
         int curRowIndex = evt.getRow();
+
+        Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
+        ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter();
+        ListFilterParameter filterParam = showParameter.getListFilterParameter();
+        List<QFilter> qFilters = filterParam.getQFilters();
+
+        DynamicObject expenseItem = (DynamicObject)this.getModel().getValue("nckd_expenseitem");
+
         if("expenseitem".equals(property) || "nckd_expenseitem".equals(property)) {
-            ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter();
-            ListFilterParameter filterParam = showParameter.getListFilterParameter();
-            List<QFilter> qFilters = filterParam.getQFilters();
-            Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
             if(customParams.get("nckd_viewTypeFilter") != null){
                 QFilter viewTypeFilter = QFilter.fromSerializedString(customParams.get("nckd_viewTypeFilter").toString());
                 qFilters.add(viewTypeFilter);
@@ -62,10 +68,49 @@ public class DailyApplyBillEditPlugin extends AbstractBillPlugIn implements Befo
 
             }
 
+        } else if("nckd_project".equals(property)){//项目
+            if(expenseItem == null){
+                throw new KDBizException(ResManager.loadKDString("请先维护费用类型!", "PublicReimburseBillFormPlugin_12", "em-formplugin", new Object[0]));
+            }
+
+            expenseItem = BusinessDataServiceHelper.loadSingle(expenseItem.getPkValue(), expenseItem.getDynamicObjectType().getName());
+            DynamicObjectCollection projectKinds = expenseItem.getDynamicObjectCollection("nckd_projectkind");
+            List<Long> idList = (List)projectKinds.stream().mapToLong((x) -> {
+                return x.getLong("fbasedataid_id");
+            }).boxed().collect(Collectors.toList());
+
+            QFilter filter = new QFilter("group.id", QCP.in, idList);
+
+            qFilters.add(filter);
+        } else if("nckd_acctitem".equals(property)){//核算项目
+            if(expenseItem == null){
+                throw new KDBizException(ResManager.loadKDString("请先维护费用类型!", "PublicReimburseBillFormPlugin_12", "em-formplugin", new Object[0]));
+            }
+
+            expenseItem = getLevelExpenseItemInfo(expenseItem);
+
+            QFilter filter = new QFilter("nckd_expenseitem.id", QCP.in, expenseItem.getLong("id"));
+
+            qFilters.add(filter);
         }
     }
 
 
+    /**
+     * 查找一级费用项目
+     * @param expenseItem
+     * @return
+     */
+    private DynamicObject getLevelExpenseItemInfo(DynamicObject expenseItem){
+        if(expenseItem.getDynamicObject("parent") != null){
+            DynamicObject parentInfo = BusinessDataServiceHelper.loadSingle(expenseItem.getDynamicObject("parent").getPkValue(), expenseItem.getDynamicObjectType().getName());
+
+            expenseItem = getLevelExpenseItemInfo(parentInfo);
+        }
+
+        return expenseItem;
+    }
+
 /*
 * 已代扣代缴设置,刘志华编写代码
 * */
@@ -139,6 +184,25 @@ public class DailyApplyBillEditPlugin extends AbstractBillPlugIn implements Befo
                         this.getModel().setValue("billpayertype", "bos_org");
                     }
                 }
+
+                //根据页面类型找到费用类型,专项费用和培训申请时候自动填充费用类型   刘志华增加
+                String viewtNumber = viewTypeCols[0].getString("number");
+                if(viewtNumber.equals("1004")||viewtNumber.equals("1009")){
+                    //根据页面类型查找费用类型
+                    QFilter numberFilter = new QFilter("number", QCP.equals, viewtNumber);
+                    DynamicObject payViewType = BusinessDataServiceHelper.loadSingle("nckd_payviewtype", numberFilter.toArray());
+                    if(payViewType != null && payViewType.getDynamicObject("nckd_expenseitem") != null){
+                        //费用项目赋值
+                        this.getModel().setValue("nckd_expenseitem", payViewType.getDynamicObject("nckd_expenseitem"));
+
+
+                        //费用明细中的费用项目
+                        DynamicObjectCollection expenseentryentity = this.getModel().getEntryEntity("expenseentryentity");
+                        if(expenseentryentity != null && expenseentryentity.size() > 0) {
+                            this.getModel().setValue("expenseitem", payViewType.getDynamicObject("nckd_expenseitem"), 0);
+                        }
+                    }
+                }
             }
         }
     }

+ 15 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/ExpenseItemFilterFormPlugin.java

@@ -1,10 +1,12 @@
 package nckd.jimin.jyyy.fi.plugin.form;
 
 import kd.bos.bill.AbstractBillPlugIn;
+import kd.bos.bill.BillShowParameter;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.datamodel.events.BizDataEventArgs;
 import kd.bos.entity.property.BasedataProp;
+import kd.bos.ext.fi.plugin.ArApConvert.util.EmptyUtils;
 import kd.bos.form.field.BasedataEdit;
 import kd.bos.form.field.events.BeforeF7SelectEvent;
 import kd.bos.form.field.events.BeforeF7SelectListener;
@@ -13,6 +15,7 @@ import kd.bos.list.ListShowParameter;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.util.StringUtils;
 
 import java.util.Arrays;
 import java.util.EventObject;
@@ -73,6 +76,18 @@ public class ExpenseItemFilterFormPlugin extends AbstractBillPlugIn implements B
         super.afterCreateNewData(e);
 
         Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
+        BillShowParameter parameter = new BillShowParameter();
+        String formId = "";
+        if(EmptyUtils.isNotEmpty(customParams.get("formId"))){
+            formId =customParams.get("formId").toString();
+            parameter.setFormId(formId);
+
+            Boolean isExists = this.getModel().getDataEntityType().getProperties().containsKey("nckd_pageid");
+            if(isExists) {
+                this.getModel().setValue("nckd_pageid", formId);
+            }
+        }
+
         if(customParams.get("viewType") != null){
             String[] typeStrings = customParams.get("viewType").toString().split(",");
 

+ 72 - 18
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/PublicReimburseBillFormPlugin.java

@@ -4,8 +4,10 @@ import kd.bos.bill.AbstractBillPlugIn;
 import kd.bos.bill.BillShowParameter;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.resource.ResManager;
 import kd.bos.entity.datamodel.events.BizDataEventArgs;
 import kd.bos.entity.property.BasedataProp;
+import kd.bos.exception.KDBizException;
 import kd.bos.ext.fi.plugin.ArApConvert.util.EmptyUtils;
 import kd.bos.form.field.BasedataEdit;
 import kd.bos.form.field.events.BeforeF7SelectEvent;
@@ -39,6 +41,12 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
 
         BasedataEdit expenseitemF7ext = (BasedataEdit) this.getControl("nckd_expenseitem");
         expenseitemF7ext.addBeforeF7SelectListener(this);
+
+        BasedataEdit projectF7ext = (BasedataEdit) this.getControl("nckd_project");
+        projectF7ext.addBeforeF7SelectListener(this);
+
+        BasedataEdit acctitemF7ext = (BasedataEdit) this.getControl("nckd_acctitem");
+        acctitemF7ext.addBeforeF7SelectListener(this);
     }
 
     @Override
@@ -47,13 +55,14 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
         String entityId = ((BasedataProp) evt.getProperty()).getBaseEntityId();
         int curRowIndex = evt.getRow();
 
-        if("expenseitem".equals(property) || "nckd_expenseitem".equals(property)) {
-            ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter();
-            ListFilterParameter filterParam = showParameter.getListFilterParameter();
-            List<QFilter> qFilters = filterParam.getQFilters();
+        Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
+        ListShowParameter showParameter = (ListShowParameter) evt.getFormShowParameter();
+        ListFilterParameter filterParam = showParameter.getListFilterParameter();
+        List<QFilter> qFilters = filterParam.getQFilters();
 
-            Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
+        DynamicObject expenseItem = (DynamicObject)this.getModel().getValue("nckd_expenseitem");
 
+        if("expenseitem".equals(property) || "nckd_expenseitem".equals(property)) {
             if(customParams.get("nckd_viewTypeFilter") != null){
                 QFilter viewTypeFilter = QFilter.fromSerializedString(customParams.get("nckd_viewTypeFilter").toString());
 
@@ -68,9 +77,48 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
 
                 qFilters.add(viewTypeFilter);
             }
+        } else if("nckd_project".equals(property)){//项目
+            if(expenseItem == null){
+                throw new KDBizException(ResManager.loadKDString("请先维护费用类型!", "PublicReimburseBillFormPlugin_12", "em-formplugin", new Object[0]));
+            }
+
+            expenseItem = BusinessDataServiceHelper.loadSingle(expenseItem.getPkValue(), expenseItem.getDynamicObjectType().getName());
+            DynamicObjectCollection projectKinds = expenseItem.getDynamicObjectCollection("nckd_projectkind");
+            List<Long> idList = (List)projectKinds.stream().mapToLong((x) -> {
+                return x.getLong("fbasedataid_id");
+            }).boxed().collect(Collectors.toList());
+
+            QFilter filter = new QFilter("group.id", QCP.in, idList);
+
+            qFilters.add(filter);
+        } else if("nckd_acctitem".equals(property)){//核算项目
+            if(expenseItem == null){
+                throw new KDBizException(ResManager.loadKDString("请先维护费用类型!", "PublicReimburseBillFormPlugin_12", "em-formplugin", new Object[0]));
+            }
+
+            expenseItem = getLevelExpenseItemInfo(expenseItem);
+
+            QFilter filter = new QFilter("nckd_expenseitem.id", QCP.in, expenseItem.getLong("id"));
+
+            qFilters.add(filter);
         }
     }
 
+    /**
+     * 查找一级费用项目
+     * @param expenseItem
+     * @return
+     */
+    private DynamicObject getLevelExpenseItemInfo(DynamicObject expenseItem){
+        if(expenseItem.getDynamicObject("parent") != null){
+            DynamicObject parentInfo = BusinessDataServiceHelper.loadSingle(expenseItem.getDynamicObject("parent").getPkValue(), expenseItem.getDynamicObjectType().getName());
+
+            expenseItem = getLevelExpenseItemInfo(parentInfo);
+        }
+
+        return expenseItem;
+    }
+
     @Override
     public void afterCreateNewData(EventObject e) {
         super.afterCreateNewData(e);
@@ -102,19 +150,6 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
                 //页面类型多选赋值
                 this.getModel().setValue("nckd_payviewtypemul", basedataIds);
 
-                //根据页面类型找到费用类型,专项费用和培训申请时候自动填充费用类型   刘志华增加
-                String viewtNumber=viewTypeCols[0].getString("number");
-                if(viewtNumber.equals("1004")||viewtNumber.equals("1005")){
-                    //根据页面类型查找费用类型
-                    QFilter expenseitemFilter = new QFilter("nckd_payviewtype", QCP.equals, viewTypeCols[0].getLong("id"));
-                    expenseitemFilter.and("isleaf",QCP.equals,true);
-                    DynamicObject[] expenseitemCols = BusinessDataServiceHelper.load("er_expenseitemedit", "id, number,name,fullname", expenseitemFilter.toArray());
-                    //费用项目赋值
-                    this.getModel().setValue("nckd_expenseitem", expenseitemCols[0]);
-                    //费用明细中的费用项目
-                    this.getModel().setValue("expenseitem", expenseitemCols[0]);
-                }
-
                 /***
                  * 当页面类型为 资金类时,往来类型为  内部公司
                  * turborao 2025/05/15
@@ -124,6 +159,25 @@ public class PublicReimburseBillFormPlugin extends AbstractBillPlugIn implements
                         this.getModel().setValue("billpayertype", "bos_org");
                     }
                 }
+
+                //根据页面类型找到费用类型,专项费用和培训申请时候自动填充费用类型   刘志华增加
+                String viewtNumber = viewTypeCols[0].getString("number");
+                if(viewtNumber.equals("1004")||viewtNumber.equals("1009")){
+                    //根据页面类型查找费用类型
+                    QFilter numberFilter = new QFilter("number", QCP.equals, viewtNumber);
+                    DynamicObject payViewType = BusinessDataServiceHelper.loadSingle("nckd_payviewtype", numberFilter.toArray());
+                    if(payViewType != null && payViewType.getDynamicObject("nckd_expenseitem") != null){
+                        //费用项目赋值
+                        this.getModel().setValue("nckd_expenseitem", payViewType.getDynamicObject("nckd_expenseitem"));
+
+
+                        //费用明细中的费用项目
+                        DynamicObjectCollection expenseentryentity = this.getModel().getEntryEntity("expenseentryentity");
+                        if(expenseentryentity != null && expenseentryentity.size() > 0) {
+                            this.getModel().setValue("expenseitem", payViewType.getDynamicObject("nckd_expenseitem"), 0);
+                        }
+                    }
+                }
             }
         }
     }