科目分类通用插件优化
This commit is contained in:
parent
77eff0c809
commit
0ec46b3a82
|
@ -1,6 +1,7 @@
|
||||||
package zcgj.zcdev.zcdev.fs.plugin.form;
|
package zcgj.zcdev.zcdev.fs.plugin.form;
|
||||||
|
|
||||||
import kd.bos.bill.AbstractBillPlugIn;
|
import kd.bos.bill.AbstractBillPlugIn;
|
||||||
|
import kd.bos.context.RequestContext;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.dataentity.utils.StringUtils;
|
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.orm.query.QFilter;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
import kd.bos.servicehelper.QueryServiceHelper;
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
|
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils;
|
import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils;
|
||||||
|
|
||||||
|
@ -70,9 +72,9 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement
|
||||||
int row = beforeF7SelectEvent.getRow();
|
int row = beforeF7SelectEvent.getRow();
|
||||||
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("expenseentryentity");
|
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("expenseentryentity");
|
||||||
if (dynamicObjectCollection != null) {
|
if (dynamicObjectCollection != null) {
|
||||||
DynamicObject expenseitem = dynamicObjectCollection.get(row).getDynamicObject("expenseitem");
|
DynamicObject expenseItem = dynamicObjectCollection.get(row).getDynamicObject("expenseitem");//费用项目
|
||||||
if (expenseitem != null) {
|
if (expenseItem != null) {
|
||||||
QFilter filter = new QFilter("zcgj_entryentity.zcgj_fee", QCP.equals, expenseitem.getLong("id"));
|
QFilter filter = new QFilter("zcgj_entryentity.zcgj_fee", QCP.equals, expenseItem.getLong("id"));
|
||||||
String typeKey = "20"; //差旅报销单
|
String typeKey = "20"; //差旅报销单
|
||||||
if ("er_dailyreimbursebill".equals(billFormId)) {
|
if ("er_dailyreimbursebill".equals(billFormId)) {
|
||||||
typeKey = "30"; //费用报销单
|
typeKey = "30"; //费用报销单
|
||||||
|
@ -85,7 +87,8 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement
|
||||||
//分录过滤
|
//分录过滤
|
||||||
//使用BusinessDataServiceHelper.load查出来的数据,返回的是符合条件的整单,即使只有分录中的某一行符合条件,也会返回整张单包括其他分录行的数据
|
//使用BusinessDataServiceHelper.load查出来的数据,返回的是符合条件的整单,即使只有分录中的某一行符合条件,也会返回整张单包括其他分录行的数据
|
||||||
//使用 QueryServiceHelper.query查出来的数据只会包含符合条件的分录行,不含其他行数据
|
//使用 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<String> numbers = new ArrayList<>();
|
List<String> numbers = new ArrayList<>();
|
||||||
if (accountfeeEntries != null) {
|
if (accountfeeEntries != null) {
|
||||||
for (DynamicObject dynamicObject : accountfeeEntries) {
|
for (DynamicObject dynamicObject : accountfeeEntries) {
|
||||||
|
@ -95,18 +98,14 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QFilter qFilter = new QFilter("number", QCP.in, numbers);
|
QFilter qFilter = new QFilter("number", QCP.in, numbers);
|
||||||
ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||||
showParameter.getListFilterParameter().getQFilters().add(qFilter);
|
formShowParameter.getListFilterParameter().getQFilters().add(qFilter);
|
||||||
} else {
|
} else {
|
||||||
this.getView().showErrorNotification("请选择费用项目!");
|
this.getView().showErrorNotification("请选择费用项目!");
|
||||||
beforeF7SelectEvent.setCancel(true);
|
beforeF7SelectEvent.setCancel(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if ("expenseitem".equals(name)) {
|
} else if ("expenseitem".equals(name)) {
|
||||||
//费用项目增加过滤
|
//费用项目增加过滤
|
||||||
String typeKey = "20"; //差旅报销单
|
String typeKey = "20"; //差旅报销单
|
||||||
|
@ -145,7 +144,10 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement
|
||||||
//费用项目
|
//费用项目
|
||||||
String billFormId = ((BillView) this.getView()).getFormId();//单据标识
|
String billFormId = ((BillView) this.getView()).getFormId();//单据标识
|
||||||
DynamicObject costCompany = (DynamicObject) this.getModel().getValue("costcompany");//费用承担公司
|
DynamicObject costCompany = (DynamicObject) this.getModel().getValue("costcompany");//费用承担公司
|
||||||
|
DynamicObject costDept = (DynamicObject) this.getModel().getValue("costdept");//费用承担部门
|
||||||
long costCompanyId = costCompany.getLong("id");//费用承担公司id
|
long costCompanyId = costCompany.getLong("id");//费用承担公司id
|
||||||
|
long userid = Long.parseLong(RequestContext.get().getUserId());//当前用户id
|
||||||
|
String userMainJob = UserServiceHelper.getUserMainJob(userid);//获取用户默认主职位
|
||||||
if (!OrgCheckUtils.isKS(costCompanyId)) {
|
if (!OrgCheckUtils.isKS(costCompanyId)) {
|
||||||
//不是矿山不进入下面逻辑
|
//不是矿山不进入下面逻辑
|
||||||
return;
|
return;
|
||||||
|
@ -197,16 +199,58 @@ public class ReimbursementAccountTypePlugin extends AbstractBillPlugIn implement
|
||||||
DynamicObject entryRuleExpenseItem = entryRule.getDynamicObject("zcgj_expenseitem");//费用项目
|
DynamicObject entryRuleExpenseItem = entryRule.getDynamicObject("zcgj_expenseitem");//费用项目
|
||||||
String entryRuleRuleType = entryRule.getString("zcgj_ruletype");//分类规则
|
String entryRuleRuleType = entryRule.getString("zcgj_ruletype");//分类规则
|
||||||
if (entryRuleExpenseItem.getLong("id") == expenseItemId) {
|
if (entryRuleExpenseItem.getLong("id") == expenseItemId) {
|
||||||
if (entryRuleRuleType.equals("公司")) {
|
switch (entryRuleRuleType) {
|
||||||
|
case "公司":
|
||||||
DynamicObject entryRuleCompanyType = entryRule.getDynamicObject("zcgj_companytype");//公司默认分类(科目分类)
|
DynamicObject entryRuleCompanyType = entryRule.getDynamicObject("zcgj_companytype");//公司默认分类(科目分类)
|
||||||
|
|
||||||
this.getModel().setValue("zcgj_accounttype", entryRuleCompanyType, rowIndex);
|
this.getModel().setValue("zcgj_accounttype", entryRuleCompanyType, rowIndex);
|
||||||
return;
|
return;
|
||||||
} else if (entryRuleRuleType.equals("部门属性")) {
|
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");//业务属性
|
||||||
|
|
||||||
} else if (entryRuleRuleType.equals("人员")) {
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue