diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java index fad6157..685291a 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/ReimbursementAccountTypePlugin.java @@ -1,6 +1,7 @@ package zcgj.zcdev.zcdev.fs.plugin.form; import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.context.RequestContext; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.utils.StringUtils; @@ -17,6 +18,7 @@ import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.QueryServiceHelper; +import kd.bos.servicehelper.user.UserServiceHelper; import kd.sdk.plugin.Plugin; import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils; @@ -70,9 +72,9 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement int row = beforeF7SelectEvent.getRow(); DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("expenseentryentity"); if (dynamicObjectCollection != null) { - DynamicObject expenseitem = dynamicObjectCollection.get(row).getDynamicObject("expenseitem"); - if (expenseitem != null) { - QFilter filter = new QFilter("zcgj_entryentity.zcgj_fee", QCP.equals, expenseitem.getLong("id")); + DynamicObject expenseItem = dynamicObjectCollection.get(row).getDynamicObject("expenseitem");//费用项目 + if (expenseItem != null) { + QFilter filter = new QFilter("zcgj_entryentity.zcgj_fee", QCP.equals, expenseItem.getLong("id")); String typeKey = "20"; //差旅报销单 if ("er_dailyreimbursebill".equals(billFormId)) { typeKey = "30"; //费用报销单 @@ -85,7 +87,8 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement //分录过滤 //使用BusinessDataServiceHelper.load查出来的数据,返回的是符合条件的整单,即使只有分录中的某一行符合条件,也会返回整张单包括其他分录行的数据 //使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行,不含其他行数据 - DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee", "zcgj_entryentity.zcgj_accounttype.number", new QFilter[]{filter, biztypefilter}); + DynamicObjectCollection accountfeeEntries = QueryServiceHelper.query("zcgj_accountfee", + "zcgj_entryentity.zcgj_accounttype.number", new QFilter[]{filter, biztypefilter});//费用与科目分类单 List numbers = new ArrayList<>(); if (accountfeeEntries != null) { for (DynamicObject dynamicObject : accountfeeEntries) { @@ -95,18 +98,14 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement } } } - - QFilter qFilter = new QFilter("number", QCP.in, numbers); - ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); - showParameter.getListFilterParameter().getQFilters().add(qFilter); + ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter(); + formShowParameter.getListFilterParameter().getQFilters().add(qFilter); } else { this.getView().showErrorNotification("请选择费用项目!"); beforeF7SelectEvent.setCancel(true); } - } - } else if ("expenseitem".equals(name)) { //费用项目增加过滤 String typeKey = "20"; //差旅报销单 @@ -145,7 +144,10 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement //费用项目 String billFormId = ((BillView) this.getView()).getFormId();//单据标识 DynamicObject costCompany = (DynamicObject) this.getModel().getValue("costcompany");//费用承担公司 + DynamicObject costDept = (DynamicObject) this.getModel().getValue("costdept");//费用承担部门 long costCompanyId = costCompany.getLong("id");//费用承担公司id + long userid = Long.parseLong(RequestContext.get().getUserId());//当前用户id + String userMainJob = UserServiceHelper.getUserMainJob(userid);//获取用户默认主职位 if (!OrgCheckUtils.isKS(costCompanyId)) { //不是矿山不进入下面逻辑 return; @@ -179,8 +181,8 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement this.getModel().setValue("zcgj_accounttype", id, rowIndex);//科目属性 } else if (AccountFeeCollection != null && AccountFeeCollection.size() > 1) { - //费用与科目分类中费用项目与科目分类为一对多的关系,先查询默认科目分类,存在默认科目分类数据时,如若通过费用承担公司与公司科目分类规则中查询到对应数据,便直接赋值 - //如若没有,则通过费用承担公司在组织分类中查询对应默认分类,再通过组织分类配置表确认默认科目分类 + //费用与科目分类中费用项目与科目分类为一对多的关系,先查询默认科目分类,存在默认科目分类数据时,如若通过费用承担公司与公司科目分类规则中查询到对应数据,便直接赋值 + //如若没有,则通过费用承担公司在组织分类中查询对应默认分类,再通过组织分类配置表确认默认科目分类 QFilter filter1 = new QFilter("zcgj_entryexpense.zcgj_expenseitem", QCP.equals, expenseItemId); DynamicObjectCollection orgTypeDefaultCollection = QueryServiceHelper.query("zcgj_orgtypedefault", "zcgj_entryexpense.zcgj_yanzhou,zcgj_entryexpense.zcgj_xian,zcgj_entryexpense.zcgj_nanjing,zcgj_entryexpense.zcgj_tianjin", @@ -197,16 +199,58 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement DynamicObject entryRuleExpenseItem = entryRule.getDynamicObject("zcgj_expenseitem");//费用项目 String entryRuleRuleType = entryRule.getString("zcgj_ruletype");//分类规则 if (entryRuleExpenseItem.getLong("id") == expenseItemId) { - if (entryRuleRuleType.equals("公司")) { - DynamicObject entryRuleCompanyType = entryRule.getDynamicObject("zcgj_companytype");//公司默认分类(科目分类) - this.getModel().setValue("zcgj_accounttype", entryRuleCompanyType, rowIndex); - return; - } else if (entryRuleRuleType.equals("部门属性")) { + switch (entryRuleRuleType) { + case "公司": + DynamicObject entryRuleCompanyType = entryRule.getDynamicObject("zcgj_companytype");//公司默认分类(科目分类) - } else if (entryRuleRuleType.equals("职位")) { + this.getModel().setValue("zcgj_accounttype", entryRuleCompanyType, rowIndex); + return; + case "部门属性": + DynamicObject dutyRelation = BusinessDataServiceHelper.loadSingle("bos_org_dutyrelation", "orgduty", + new QFilter("org.id", QCP.equals, costDept.getLong("id")).toArray());//部门属性管理单 - } else if (entryRuleRuleType.equals("人员")) { + DynamicObject orgDuty = dutyRelation.getDynamicObject("orgduty");//业务属性 + long id = orgDuty.getLong("id"); + DynamicObject accountType = BusinessDataServiceHelper.loadSingle("zcgj_accounttype", "id", + new QFilter("zcgj_orgtype.fbasedataid", QCP.in, id).toArray());//科目分类单 + + this.getModel().setValue("zcgj_accounttype", accountType, rowIndex); + return; + case "职位": + DynamicObject zcgj_positiontype = entryRule.getDynamicObject("zcgj_positiontype");//职位默认分类 + + if (zcgj_positiontype != null) { + QFilter filter4 = new QFilter("zcgj_entryposition.zcgj_cusposition.name", QCP.equals, userMainJob); + DynamicObjectCollection zcgj_positionrule = QueryServiceHelper.query("zcgj_positionrule", + "zcgj_entryposition.zcgj_accounttype", new QFilter[]{filter4});//职位科目分类单 + if (zcgj_positionrule != null && zcgj_positionrule.size() == 1) { + long zcgj_accounttype = zcgj_positionrule.get(0).getLong("zcgj_entryposition.zcgj_accounttype"); + this.getModel().setValue("zcgj_accounttype", zcgj_accounttype, rowIndex);//科目属性 + return; + } else { + this.getModel().setValue("zcgj_accounttype", zcgj_positiontype, rowIndex);//科目属性 + return; + } + } + break; + case "人员": + DynamicObject zcgj_persontype = entryRule.getDynamicObject("zcgj_persontype");//人员默认分类 + + if (zcgj_persontype != null) { + QFilter filter5 = new QFilter("zcgj_entryperson.zcgj_person.id", QCP.equals, userid); + DynamicObjectCollection zcgj_positionrule = QueryServiceHelper.query("zcgj_personrule", + "zcgj_entryperson.zcgj_accounttype", new QFilter[]{filter5});//人员科目分类单 + if (zcgj_positionrule != null && zcgj_positionrule.size() == 1) { + long zcgj_accounttype = zcgj_positionrule.get(0).getLong("zcgj_entryperson.zcgj_accounttype"); + this.getModel().setValue("zcgj_accounttype", zcgj_accounttype, rowIndex);//科目属性 + return; + } else { + this.getModel().setValue("zcgj_accounttype", zcgj_persontype, rowIndex);//科目属性 + return; + } + } + break; } } }