Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
fb7b1f5ddc
|
|
@ -0,0 +1,291 @@
|
|||
package zcgj.zcdev.zcdev.fs.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.metadata.IDataEntityProperty;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.IClientViewProxy;
|
||||
import kd.bos.form.control.AttachmentPanel;
|
||||
import kd.bos.form.control.Label;
|
||||
import kd.bos.form.control.events.AttachmentOperaClickListener;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
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.mvc.form.ClientViewProxy;
|
||||
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.fi.er.business.utils.ErEntityTypeUtils;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/*
|
||||
* 通用申请表单插件
|
||||
*/
|
||||
public class CommonBillPlugin extends AbstractBillPlugIn implements AttachmentOperaClickListener, Plugin, BeforeF7SelectListener {
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
BasedataEdit zcgj_department = this.getView().getControl("zcgj_department");//部门
|
||||
zcgj_department.addBeforeF7SelectListener(this);
|
||||
BasedataEdit zcgj_org = this.getView().getControl("zcgj_org");//所属组织
|
||||
zcgj_org.addBeforeF7SelectListener(this);
|
||||
AttachmentPanel panel = getControl("attachmentpanel");//附件
|
||||
panel.addOperaClickListener(this);
|
||||
|
||||
BasedataEdit zcgj_costcompany = this.getView().getControl("zcgj_costcompany");//费用承担公司
|
||||
zcgj_costcompany.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);
|
||||
setAttFileVisble();//隐藏删除按钮
|
||||
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
|
||||
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
||||
super.afterDoOperation(afterDoOperationEventArgs);
|
||||
setAttFileVisble();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
super.propertyChanged(e);
|
||||
if (e.getProperty().getName().equals("attachmentpanel")) {
|
||||
setAttFileVisble();
|
||||
} else if (e.getProperty().getName().equals("zcgj_department")) {
|
||||
//部门
|
||||
DynamicObject costDept = (DynamicObject) this.getModel().getValue("zcgj_department");//部门
|
||||
if (costDept != null) {
|
||||
setOrg(costDept);
|
||||
}
|
||||
String propName = e.getProperty().getName();
|
||||
ChangeData[] valueSet = e.getChangeSet();
|
||||
Object propValue = valueSet[0].getNewValue();
|
||||
costDeptChange(propName, (DynamicObject) propValue);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
|
||||
ListShowParameter formShowParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||
IDataEntityProperty property = beforeF7SelectEvent.getProperty();//过滤字段信息
|
||||
String propertyName = property.getName();//过滤字段标识
|
||||
if (propertyName.equals("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");
|
||||
} else if (propertyName.equals("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(OrgTreeUtils.PARAM_INIT_ROOT_ORG_ID, id);
|
||||
formShowParameter.setCustomParam("isIncludeAllSub", "true");
|
||||
}
|
||||
}
|
||||
} else if ("zcgj_costcompany".equals(propertyName)) { //费用承担公司过滤
|
||||
DynamicObject zcgjDepartment = (DynamicObject) this.getModel().getValue("zcgj_department");
|
||||
if (zcgjDepartment != null) {
|
||||
List<Long> id = findCostCompanysByCostDept(zcgjDepartment.getLong("id"));
|
||||
if (id != null && !id.isEmpty()) {
|
||||
List<QFilter> qFilter = new ArrayList<>();
|
||||
qFilter.add(new QFilter("id", QCP.in, id));
|
||||
formShowParameter.getListFilterParameter().setQFilters(qFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setAttFileVisble() {
|
||||
String billstatus = String.valueOf(this.getModel().getValue("billstatus"));
|
||||
if (!billstatus.equals("A")) {
|
||||
AttachmentPanel attachmentPanel = this.getControl("attachmentpanel");
|
||||
List<Map<String, Object>> attachmentData = attachmentPanel.getAttachmentData();
|
||||
if (attachmentData == null && attachmentData.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
List<Map<String, Object>> attachmentDatas = attachmentPanel.getAttachmentData();
|
||||
for (Map<String, Object> attachmentMap : attachmentDatas) {
|
||||
String visiablePreview = "1";//是否显示预览按钮
|
||||
String visiableDownload = "1";//是否显示下载按钮
|
||||
String visiableRename = "1";//是否显示重命名按钮
|
||||
String visiableDelete = "0";//是否显示删除按钮
|
||||
//visible参数规则为01组成,0代表不可见,1代表可见
|
||||
attachmentMap.put("visible", visiablePreview + visiableDownload + visiableRename + visiableDelete);
|
||||
//attachmentMap.put("hiddenBtn",hiddenBtnList);
|
||||
|
||||
}
|
||||
ClientViewProxy cvp = this.getView().getService(IClientViewProxy.class);
|
||||
cvp.setFieldProperty("attachmentpanel", "v", attachmentDatas);
|
||||
}
|
||||
}
|
||||
|
||||
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);//所属组织
|
||||
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);//所属组织
|
||||
}
|
||||
|
||||
//获取费用承担公司
|
||||
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_costcompany");
|
||||
CostDeptF7ChangePram costDeptF7ChangePram = new CostDeptF7ChangePram(Boolean.TRUE, costDept, costCompany, company);
|
||||
Long costCompanyId = CoreBaseBillServiceHelper.getAccountOrgId(costDeptF7ChangePram);//获取费用承担公司
|
||||
model.setValue("zcgj_costcompany", costCompanyId);
|
||||
this.getView().updateView("zcgj_costcompany");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
@ -175,6 +175,15 @@ public class DailyreimbursHomeCheckOp extends AbstractOperationServicePlugIn {
|
|||
}
|
||||
boolean zcgj_is_home = dataEntity.getBoolean("zcgj_is_home");//是否来往家居地
|
||||
if (zcgj_is_home) {
|
||||
|
||||
QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, companyId);
|
||||
filter.and(new QFilter("zcgj_usehomegeo", QCP.equals, true));//费用报销往返家居地关联费用申请为是
|
||||
DynamicObject zcgj_authorizedcompany = QueryServiceHelper.queryOne("zcgj_companybelong",
|
||||
"id", new QFilter[]{filter});//公司归属区域
|
||||
if (zcgj_authorizedcompany == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
DynamicObjectCollection writeOffApplyCollection = dataEntity.getDynamicObjectCollection("writeoffapply");//关联申请
|
||||
if (writeOffApplyCollection.size() > 0) {
|
||||
int i = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue