项目年度成本优化部门所属组织和项目公司默认值过滤逻辑
This commit is contained in:
parent
39cbc7e896
commit
6eca284ab2
|
|
@ -1,21 +1,33 @@
|
|||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.bill.BillShowParameter;
|
||||
import kd.bos.bill.OperationStatus;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.ILocaleString;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.control.Label;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||
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.servicehelper.QueryServiceHelper;
|
||||
import kd.bos.servicehelper.org.OrgUnitServiceHelper;
|
||||
import kd.bos.servicehelper.org.OrgViewType;
|
||||
import kd.bos.servicehelper.user.UserServiceHelper;
|
||||
import kd.fi.er.business.bean.CostDeptF7ChangePram;
|
||||
import kd.fi.er.business.servicehelper.CoreBaseBillServiceHelper;
|
||||
import kd.fi.er.business.utils.ErCommonUtils;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 项目年度成本表单插件
|
||||
|
|
@ -26,11 +38,36 @@ public class AnnualProjectCostFromPlugin extends AbstractBillPlugIn implements B
|
|||
super.registerListener(e);
|
||||
BasedataEdit zcgj_sectypef7 = (BasedataEdit) this.getControl("zcgj_sectypef7");//二级分类
|
||||
zcgj_sectypef7.addBeforeF7SelectListener(this);
|
||||
BasedataEdit zcgj_department = this.getView().getControl("zcgj_department");//部门
|
||||
zcgj_department.addBeforeF7SelectListener(this);
|
||||
BasedataEdit zcgj_org = this.getView().getControl("zcgj_org");//所属组织
|
||||
zcgj_org.addBeforeF7SelectListener(this);
|
||||
BasedataEdit zcgj_projectorg = this.getView().getControl("zcgj_projectorg");//项目公司
|
||||
zcgj_projectorg.addBeforeF7SelectListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCreateNewData(EventObject e) {
|
||||
super.afterCreateNewData(e);
|
||||
DynamicObject costDept = (DynamicObject) this.getModel().getValue("zcgj_department");//部门
|
||||
if (costDept != null) {
|
||||
setOrg(costDept);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBindData(EventObject e) {
|
||||
super.afterBindData(e);
|
||||
BillShowParameter bsp = (BillShowParameter) this.getView().getFormShowParameter();
|
||||
if (bsp.getStatus() == OperationStatus.ADDNEW) {
|
||||
//如果是新增时
|
||||
DynamicObject creator = this.getModel().getDataEntity().getDynamicObject("creator");//创建人
|
||||
if (creator != null) {
|
||||
long mainOrgId = UserServiceHelper.getUserMainOrgId(creator.getLong("id"));
|
||||
this.getModel().setValue("zcgj_department", mainOrgId);//部门
|
||||
this.getView().updateView("zcgj_department");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -46,11 +83,17 @@ public class AnnualProjectCostFromPlugin extends AbstractBillPlugIn implements B
|
|||
if (newValue == null || !newValue.equals(oldValue)) {
|
||||
this.getModel().setValue("zcgj_sectypef7", null, rowIndex);//二级分类
|
||||
}
|
||||
} else if (e.getProperty().getName().equals("zcgj_department")) {
|
||||
//部门
|
||||
DynamicObject costDept = (DynamicObject) this.getModel().getValue("zcgj_department");//部门
|
||||
if (costDept != null) {
|
||||
setOrg(costDept);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void beforeF7Select(BeforeF7SelectEvent arg0) {
|
||||
ListShowParameter parameter = (ListShowParameter) arg0.getFormShowParameter();
|
||||
ListShowParameter formShowParameter = (ListShowParameter) arg0.getFormShowParameter();
|
||||
int row = arg0.getRow();
|
||||
String name = arg0.getProperty().getName();
|
||||
if (StringUtils.equals(name, "zcgj_sectypef7")) {
|
||||
|
|
@ -65,7 +108,170 @@ public class AnnualProjectCostFromPlugin extends AbstractBillPlugIn implements B
|
|||
arg0.setCancel(true);
|
||||
return;
|
||||
}
|
||||
parameter.getListFilterParameter().setQFilters(qFilter);
|
||||
formShowParameter.getListFilterParameter().setQFilters(qFilter);
|
||||
} else if (StringUtils.equals(name, "zcgj_org")) {
|
||||
// 所属组织
|
||||
DynamicObject costDept = (DynamicObject) this.getModel().getValue("zcgj_department");//部门
|
||||
DynamicObject zcgj_org = (DynamicObject) this.getModel().getValue("zcgj_org");//所属组织
|
||||
if (costDept != null && zcgj_org != null) {
|
||||
DynamicObject orgPattern = costDept.getDynamicObject("orgpattern");
|
||||
if (orgPattern == null) {
|
||||
return;
|
||||
}
|
||||
String orgPatternNumber = orgPattern.getString("number");
|
||||
if (orgPatternNumber.equals("Orgform06")) {
|
||||
Long id = (Long) zcgj_org.get("id");
|
||||
List<QFilter> qFilter = new ArrayList<>();
|
||||
qFilter.add(new QFilter("id", QCP.in, id));
|
||||
formShowParameter.getListFilterParameter().setQFilters(qFilter);
|
||||
formShowParameter.setCustomParam("isIncludeAllSub", "true");
|
||||
}
|
||||
}
|
||||
} else if (StringUtils.equals(name, "zcgj_projectorg")) {
|
||||
//项目公司过滤
|
||||
DynamicObject costDept = (DynamicObject) this.getModel().getValue("zcgj_department");//部门
|
||||
DynamicObject zcgj_projectorg = (DynamicObject) this.getModel().getValue("zcgj_projectorg");//项目公司
|
||||
if (costDept != null && zcgj_projectorg != null) {
|
||||
DynamicObject orgPattern = costDept.getDynamicObject("orgpattern");
|
||||
if (orgPattern == null) {
|
||||
return;
|
||||
}
|
||||
String orgPatternNumber = orgPattern.getString("number");
|
||||
if (orgPatternNumber.equals("Orgform06")) {
|
||||
Long id = (Long) zcgj_projectorg.get("id");
|
||||
List<QFilter> qFilter = new ArrayList<>();
|
||||
qFilter.add(new QFilter("id", QCP.in, id));
|
||||
formShowParameter.getListFilterParameter().setQFilters(qFilter);
|
||||
formShowParameter.setCustomParam("isIncludeAllSub", "true");
|
||||
}
|
||||
}
|
||||
} else if (StringUtils.equals(name, "zcgj_department")) {
|
||||
// 部门
|
||||
DynamicObject creator = this.getModel().getDataEntity().getDynamicObject("creator");//创建人
|
||||
if (creator == null) {
|
||||
return;
|
||||
}
|
||||
List<Long> id = UserServiceHelper.getOrgsUserJoin(creator.getLong("id"));
|
||||
List<QFilter> qFilter = new ArrayList<>();
|
||||
qFilter.add(new QFilter("id", QCP.in, id));
|
||||
formShowParameter.getListFilterParameter().setQFilters(qFilter);
|
||||
formShowParameter.setCustomParam("isIncludeAllSub", "true");
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Long> findCostCompanysByCostDept(Long deptID) {
|
||||
ArrayList<Long> deptIDs = new ArrayList();
|
||||
deptIDs.add(deptID);
|
||||
List<Long> selectIds = OrgUnitServiceHelper.getAdminOrgRelation(deptIDs, false);
|
||||
QFilter treeTypeFilter = new QFilter("view.treetype", "=", "10");
|
||||
QFilter isDefaultViewFilter = new QFilter("view.isdefault", "=", Boolean.TRUE);
|
||||
QFilter isbizunitFilter = new QFilter("isbizunit", "=", Boolean.TRUE);
|
||||
QFilter orgFilter = null;
|
||||
QFilter[] filters = null;
|
||||
DynamicObject orgInfo = null;
|
||||
Long costCompany = null;
|
||||
|
||||
List parents;
|
||||
for (String orgFunction = "01"; costCompany == null; deptID = (Long) parents.get(0)) {
|
||||
orgFilter = new QFilter("org", "=", deptID);
|
||||
filters = new QFilter[]{treeTypeFilter, isDefaultViewFilter, orgFilter, isbizunitFilter};
|
||||
orgInfo = QueryServiceHelper.queryOne("bos_org_structure", "org", filters);
|
||||
if (orgInfo != null) {
|
||||
costCompany = ErCommonUtils.getPk(orgInfo.get("org"));
|
||||
selectIds.add(costCompany);
|
||||
break;
|
||||
}
|
||||
|
||||
parents = OrgUnitServiceHelper.getSuperiorOrgs(orgFunction, deptID);
|
||||
if (parents == null || parents.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return selectIds;
|
||||
}
|
||||
|
||||
private void setOrg(DynamicObject costDept) {
|
||||
DynamicObject orgPattern = costDept.getDynamicObject("orgpattern");
|
||||
if (orgPattern == null) {
|
||||
return;
|
||||
}
|
||||
String orgPatternNumber = orgPattern.getString("number");
|
||||
if (!orgPatternNumber.equals("Orgform06")) {
|
||||
//填写的部门的形态不是部门时,直接将部门值赋值给所属组织
|
||||
this.getModel().setValue("zcgj_org", costDept);//所属组织
|
||||
this.getModel().setValue("zcgj_projectorg", costDept);//项目公司
|
||||
return;
|
||||
}
|
||||
int a = 0;
|
||||
DynamicObject cost;
|
||||
DynamicObject viewParent = null;
|
||||
while (true) {
|
||||
if (a == 0) {
|
||||
//第一次进入循环
|
||||
cost = costDept;
|
||||
} else {
|
||||
QFilter[] qFilters = new QFilter[]{
|
||||
new QFilter("number", QCP.equals, viewParent.getString("number"))
|
||||
};
|
||||
cost = BusinessDataServiceHelper.loadSingle("bos_adminorg", qFilters);
|
||||
}
|
||||
long currentOrgId = Long.parseLong(cost.getString("id"));//当前部门ID
|
||||
Map<Long, Long> orgParentMap = OrgUnitServiceHelper.getDirectSuperiorOrg(OrgViewType.Admin, Collections.singletonList(currentOrgId));//获取当前部门的上级组织
|
||||
Long parentId = orgParentMap.get(currentOrgId);//上级组织ID
|
||||
viewParent = BusinessDataServiceHelper.loadSingle("bos_adminorg",
|
||||
new QFilter[]{new QFilter("id", QCP.equals, parentId)});//行政组织-上级组织
|
||||
// DynamicObjectCollection structureCollection = cost.getDynamicObjectCollection("structure");//组织结构分录
|
||||
// DynamicObject structure = structureCollection.get(0);
|
||||
// viewParent = structure.getDynamicObject("viewparent");//上级组织
|
||||
String viewParentNumber = viewParent.getString("number");
|
||||
QFilter[] qFilters = new QFilter[]{
|
||||
new QFilter("number", QCP.equals, viewParentNumber)
|
||||
};
|
||||
DynamicObject bos_adminOrg = BusinessDataServiceHelper.loadSingle("bos_adminorg", qFilters);//行政组织
|
||||
DynamicObject orgPattern1 = bos_adminOrg.getDynamicObject("orgpattern");//形态
|
||||
String orgPatternNumber1 = orgPattern1.getString("number");
|
||||
if (!orgPatternNumber1.equals("Orgform06")) {
|
||||
//上级不为不为部门的时候,将现在查询的部门赋值给一级承担部门
|
||||
break;
|
||||
} else {
|
||||
a++;
|
||||
}
|
||||
}
|
||||
|
||||
DynamicObject bos_adminorg = BusinessDataServiceHelper.loadSingle("bos_adminorg", new QFilter[]{
|
||||
new QFilter("number", QCP.equals, viewParent.getString("number"))});
|
||||
this.getModel().setValue("zcgj_org", bos_adminorg);//所属组织
|
||||
this.getModel().setValue("zcgj_projectorg", bos_adminorg);//项目公司
|
||||
}
|
||||
|
||||
protected void costDeptChange(String propName, DynamicObject costDept) {
|
||||
if (costDept != null) {
|
||||
IDataModel model = this.getModel();
|
||||
this.refreshBaseInfoLabel(propName, costDept);
|
||||
DynamicObject company = (DynamicObject) model.getValue("zcgj_org");
|
||||
DynamicObject costCompany = (DynamicObject) model.getValue("zcgj_projectorg");
|
||||
CostDeptF7ChangePram costDeptF7ChangePram = new CostDeptF7ChangePram(Boolean.TRUE, costDept, costCompany, company);
|
||||
Long costCompanyId = CoreBaseBillServiceHelper.getAccountOrgId(costDeptF7ChangePram);//获取费用承担公司
|
||||
model.setValue("zcgj_projectorg", costCompanyId);
|
||||
this.getView().updateView("zcgj_projectorg");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected void refreshBaseInfoLabel(String propName, Object propValue) {
|
||||
String propStr = null;
|
||||
if (propValue instanceof DynamicObject) {
|
||||
ILocaleString name = ((DynamicObject) propValue).getLocaleString("name");
|
||||
propStr = name.getLocaleValue();
|
||||
} else if (propValue instanceof String) {
|
||||
propStr = (String) propValue;
|
||||
}
|
||||
|
||||
Label propControl = (Label) this.getControl(propName + "V");
|
||||
if (propControl != null) {
|
||||
propControl.setText(propStr);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue