ソースを参照

Merge remote-tracking branch 'origin/master'

xuhao 6 ヶ月 前
コミット
0a3d45b02e

+ 7 - 1
src/main/java/fi/em/formPlugin/SalaryDistributeEditPlugin.java

@@ -48,6 +48,11 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
         viewList.add(nckd_retired);
         viewList.add(nckd_pay);
         viewList.add(nckd_payretird);
+        viewList.add("nckd_a_generalemployees");
+        viewList.add("nckd_a_earlyretired");
+        viewList.add("nckd_a_retired");
+        viewList.add("nckd_a_pay");
+        viewList.add("nckd_a_payretird");
 
         if (Viewflag.isEmpty()) {
             for (String item:viewList) {
@@ -249,7 +254,8 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
     public void clearEntryData(String nckd_entry)
     {
         //分录标识
-        List<String> nckd_generalemployees =Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry","nckd_salaryentryre");
+        List<String> nckd_generalemployees =Arrays
+                .asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry","nckd_salaryentryre");
         for (String item:nckd_generalemployees) {
             //不传入参数默认全部分录清除
             if ("".equals(nckd_entry)){

+ 111 - 3
src/main/java/fi/em/formPlugin/SubAndAudFormPlugin.java

@@ -7,6 +7,7 @@ import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.list.plugin.AbstractListPlugin;
 import kd.sdk.plugin.Plugin;
+import kd.tmc.fpm.business.domain.model.report.DynamicObjectData;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -25,6 +26,12 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
     private static String nckd_salaryentryre="nckd_salaryentryre";//人力薪酬内退
     private static String nckd_allentry="nckd_allentry";//汇总分录
 
+    private static String nckd_a_generalemployees="nckd_a_generalemployees";//通用一般汇总
+    private static String nckd_a_earlyretired="nckd_a_earlyretired";//通用内退汇总
+    private static String nckd_a_retired="nckd_a_retired";//通用退休汇总
+    private static String nckd_a_pay="nckd_a_pay";//人力一般汇总
+    private static String nckd_a_payretird="nckd_a_payretird";//人力内退汇总
+
     public void afterDoOperation(AfterDoOperationEventArgs arg){
         //提交并审核
         if ("submit".equals(arg.getOperateKey())) {
@@ -46,7 +53,7 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_se_unionmey","nckd_se_tax","nckd_se_otherreduce","nckd_se_desalary","nckd_se_netsalary","nckd_se_cpy_endins"
                 ,"nckd_se_cpy_hopins","nckd_se_cpy_bhopins","nckd_se_cpy_ljins","nckd_se_cpy_birthins","nckd_se_cpy_dmgins","nckd_se_cpy_hosins"
                 ,"nckd_se_cpy_cmymey");
-        //薪酬明细(一般员工)汇总分录字段标识
+        //汇总分录对应字段标识
         List<String> nckd_allemployees=Arrays.asList("nckd_all_allbsry","nckd_all_basicsry","nckd_all_acmsry","nckd_all_reacmsry"
                 ,"nckd_all_bsnrwd","nckd_all_otreward","nckd_all_cmcsbd","nckd_all_otherpysry","nckd_all_clearrwd","nckd_all_awareward"
                 ,"nckd_all_odevreward","nckd_all_coldsbad","nckd_all_warmsbad","nckd_all_nursabd","nckd_all_oallowance","nckd_all_salarypaya"
@@ -55,6 +62,15 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_all_cpy_hopins","nckd_all_cpy_bhopins","nckd_all_cpy_ljins","nckd_all_cpy_birthins","nckd_all_cpy_dmgins","nckd_all_cpy_hosins"
                 ,"nckd_all_cpy_cmymey");
 
+        //薪酬明细(一般员工)汇总分录
+        List<String> nckd_a_employees=Arrays.asList("nckd_ase_allbasicsry","nckd_ase_basicsry","nckd_ase_acmsry"
+                ,"nckd_ase_reacmsry","nckd_ase_bsnrwd","nckd_ase_otreward","nckd_ase_cmcsbd","nckd_ase_otherpysry","nckd_ase_clearrwd"
+                ,"nckd_ase_awareward","nckd_ase_otherdevreward","nckd_ase_coldsbad","nckd_ase_warmsbad","nckd_ase_nursabd","nckd_ase_oalwance"
+                ,"nckd_ase_salarypayable","nckd_ase_per_endins","nckd_ase_per_hopins","nckd_ase_per_bhopins","nckd_ase_per_ljins","nckd_ase_per_hosins"
+                ,"nckd_ase_per_cmymey","nckd_ase_unionmey","nckd_ase_tax","nckd_ase_otherreduce","nckd_ase_desalary","nckd_ase_netsalary"
+                ,"nckd_ase_cpy_endins","nckd_ase_cpy_hopins","nckd_ase_cpy_bhopins","nckd_ase_cpy_ljins","nckd_ase_cpy_birthins","nckd_ase_cpy_dmgins"
+                ,"nckd_ase_cpy_hosins","nckd_ase_cpy_cmymey");
+
 
         //薪酬明细(内退)分录字段标识,金额字段
         List<String> nckd_earlyretired=Arrays.asList("nckd_ee_allbasicsry","nckd_ee_allowance","nckd_ee_otherallowance","nckd_ee_per_endins"
@@ -179,8 +195,15 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应部门标识
                 String dep="nckd_se_department";
                 //对应汇总分录字段标识
-                String allentrtlist="nckd_allemployees";
-                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+//                String allentrtlist="nckd_allemployees";
+//                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                String allentrtlist="nckd_a_employees";
+                allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_ase_department");
+                this.getView().setVisible(true,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为通用薪酬内退
             if ("B".equals(nckd_entrytype)) {
@@ -193,6 +216,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allearlytired";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(true,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为通用薪酬退休
             if ("C".equals(nckd_entrytype)) {
@@ -205,6 +233,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allretired";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(true,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为人力薪酬(一般员工)
             if ("D".equals(nckd_entrytype)) {
@@ -217,6 +250,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allpay";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(true,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为人力薪酬(内退)
             if ("E".equals(nckd_entrytype)) {
@@ -229,6 +267,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allpayretird";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(true,nckd_a_payretird);
             }
         }
 
@@ -294,4 +337,69 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
         }
     }
 
+    /**
+     * @dynamicObject 当前单据信息
+     * @entrylist 字段标识列表
+     * @propername 分录标识
+     * @dep 对应分录部门标识
+     * @allentrtlist 写入的汇总分录字段
+     * @nckd_dep 汇总分录部门标识
+     * @description:根据分录类型不同计算汇总分录
+     */
+    public void allDataEntry(DynamicObject dynamicObject
+            ,String entrylist,String propername,String dep,String allentrtlist,String nckd_dep)
+    {
+        //字段标识
+        List<String> nckd_generalemployees = entryList(entrylist);
+        //获取一般员工分录
+        DynamicObjectCollection staffentry=dynamicObject.getDynamicObjectCollection(propername);
+        //分录部门list
+        List<DynamicObject> depList=new ArrayList<>();
+        //初始化值为第一行部门
+        depList.add(staffentry.get(0).getDynamicObject(dep));
+        for (DynamicObject item:staffentry) {
+            //将不同的值加入到部门的list中
+            if (!depList.contains(item.getDynamicObject(dep))) {
+                depList.add(item.getDynamicObject(dep));
+            }
+        }
+
+        //几个不同部门则循环几次
+        for (DynamicObject bumen : depList) {
+            //某部门总数据
+            List<BigDecimal> sumNum = new ArrayList<>();
+            //汇总表部门list初始化
+            for (int b = 0; b < nckd_generalemployees.size(); b++) {
+                sumNum.add(new BigDecimal("0.0"));
+            }
+            //计算一个部门汇总
+            for (DynamicObject object : staffentry) {
+                //获取所在部门
+                DynamicObject department = object.getDynamicObject(dep);
+                //相同部门则累加金额数据
+                if (department.equals(bumen)) {
+                    for (int a = 0; a < nckd_generalemployees.size(); a++) {
+                        BigDecimal cell = sumNum.get(a);
+                        //字段标识
+                        String entry = nckd_generalemployees.get(a);
+                        //i行的a列数据
+                        BigDecimal num = object.getBigDecimal(entry);
+                        cell = cell.add(num);
+                        sumNum.set(a, cell);
+                    }
+                }
+            }
+            //创建新的分录行
+            int rowIndex = this.getModel().createNewEntryRow(nckd_allentry);
+            //设置部门
+            this.getModel().setValue(nckd_dep, bumen, rowIndex);
+            for (int c = 0; c < sumNum.size(); c++) {
+                this.getModel().setValue(entryList(allentrtlist).get(c), sumNum.get(c), rowIndex);
+            }
+        }
+
+    }
+
+
+
 }

+ 133 - 0
src/main/java/fi/fa/formPlugin/EcardListPlugin.java

@@ -0,0 +1,133 @@
+package fi.fa.formPlugin;
+
+import com.alibaba.druid.util.StringUtils;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.ListSelectedRowCollection;
+import kd.bos.form.CloseCallBack;
+import kd.bos.form.ShowFormHelper;
+import kd.bos.form.control.events.ItemClickEvent;
+import kd.bos.form.events.ClosedCallBackEvent;
+import kd.bos.list.BillList;
+import kd.bos.list.ListFilterParameter;
+import kd.bos.list.ListShowParameter;
+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.bos.servicehelper.operation.SaveServiceHelper;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
+public class EcardListPlugin extends AbstractListPlugin {
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        this.addItemClickListeners(new String[]{"toolbarap"});
+    }
+
+    @Override
+    public void itemClick(ItemClickEvent evt) {
+        String itemKey = evt.getItemKey();
+        if ("nckd_baritemap2".equals(itemKey)) {
+            BillList billList = (BillList) this.getControl("billlistap");
+            ListSelectedRowCollection list = billList.getSelectedRows();
+            if (list.isEmpty()) {
+                this.getView().showMessage("请至少选择一条数据");
+            }else {
+                ListShowParameter showParameter = ShowFormHelper.createShowListForm("fa_assetcategory", false, 2);
+                showParameter.setFormId("bos_templatetreelistf7");
+                showParameter.setCloseCallBack(new CloseCallBack(this, itemKey));
+                this.getView().showForm(showParameter);
+            }
+        } else if ("nckd_baritemap1".equals(itemKey)) {
+            boolean flag = true;
+            BillList billList = (BillList) this.getControl("billlistap");
+            ListSelectedRowCollection list = billList.getSelectedRows();
+            Object[] primaryKeyValues = list.getPrimaryKeyValues();
+            Set<Long> orgIds = new HashSet<>();
+            for (Object primaryKeyValue : primaryKeyValues) {
+                DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_fa_card_real_list");
+                DynamicObject nckd_orgfield = cardInfo.getDynamicObject("nckd_orgfield");
+                String nckd_card_real_code = cardInfo.getString("nckd_card_real_code");
+                if (nckd_orgfield == null) {
+                    flag = false;
+                    this.getView().showMessage("单据:" + cardInfo.getString("number") + "的归属机构为空,请重新勾选数据!");
+                    break;
+                }
+                if(!StringUtils.isEmpty(nckd_card_real_code)) {
+                    flag = false;
+                    this.getView().showMessage("单据:" + cardInfo.getString("number") + "已生成实物卡片:" + nckd_card_real_code + ",请重新勾选数据!");
+                    break;
+                }
+                orgIds.add(nckd_orgfield.getLong("id"));
+            }
+
+            if (orgIds.isEmpty()) {
+                flag = false;
+                this.getView().showMessage("请至少选择一条数据");
+            } else if (orgIds.size() > 1) {
+                flag = false;
+                this.getView().showMessage("所选择的数据归属机构不一致,请重新勾选数据!");
+            }
+            if (flag) {
+                ListShowParameter showParameter = ShowFormHelper.createShowListForm("nckd_ft_rule", false, 2);
+                showParameter.setFormId("bos_listf7");
+                ListFilterParameter listFilterParameter = showParameter.getListFilterParameter();
+                QFilter filter = new QFilter("entrycostcompany_orgrule.id", QCP.in, orgIds);
+                filter.and("fid.billstatus", QCP.in, Arrays.asList("E", "F", "G"));
+                listFilterParameter.setFilter(filter);
+                showParameter.setListFilterParameter(listFilterParameter);
+                showParameter.setCloseCallBack(new CloseCallBack(this, itemKey));
+                this.getView().showForm(showParameter);
+            }
+        }
+    }
+
+
+    @Override
+    public void closedCallBack(ClosedCallBackEvent e) {
+        super.closedCallBack(e);
+        if (null != e.getReturnData()) {
+            if (StringUtils.equals(e.getActionId(), "nckd_baritemap2")) {
+                //获取选中的资产类别
+                ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData();
+                Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue();
+
+                //更新选中的实物卡片清单资产类别
+                BillList billList = (BillList) this.getControl("billlistap");
+                ListSelectedRowCollection list = billList.getSelectedRows();
+                Object[] primaryKeyValues = list.getPrimaryKeyValues();
+                List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray());
+                QFilter filter = new QFilter("id", QCP.in, ids);
+                DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter});
+                for (DynamicObject realCard : realCards) {
+                    DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName());
+                    cardInfo.set("nckd_fa_assetcategory", primaryKeyValue);
+                    SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                }
+            } else if (StringUtils.equals(e.getActionId(), "nckd_baritemap1")) {
+                //获取选中的分摊信息
+                ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData();
+                Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue();
+                DynamicObject ftInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_ft_rule");
+                BigDecimal shareamount_comrule = ftInfo.getBigDecimal("shareamount_comrule");
+
+
+                //更新选中的实物卡片清单资产类别
+                BillList billList = (BillList) this.getControl("billlistap");
+                ListSelectedRowCollection list = billList.getSelectedRows();
+                BigDecimal nckd_ft_amount = shareamount_comrule.divide(BigDecimal.valueOf(list.size()),  RoundingMode.HALF_UP);
+                Object[] primaryKeyValues = list.getPrimaryKeyValues();
+                List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray());
+                QFilter filter = new QFilter("id", QCP.in, ids);
+                DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter});
+                for (DynamicObject realCard : realCards) {
+                    DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName());
+                    cardInfo.set("nckd_ft_amount", nckd_ft_amount);
+                    SaveServiceHelper.save(new DynamicObject[]{cardInfo});
+                }
+            }
+        }
+    }
+}