Merge pull request 'lb:自营出口(一般)模板(抬头+商品+财务) 表单插件' (#25) from yem_handsome_lb into main
Reviewed-on: #25
This commit is contained in:
commit
e897b0779b
@ -15,6 +15,7 @@ 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.user.UserServiceHelper;
|
||||
import yem.base.common.utils.DynamicObjectUtil;
|
||||
import yem.base.common.utils.YEM;
|
||||
|
||||
@ -59,7 +60,7 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF
|
||||
setOrgF7Filter(evt);
|
||||
break;
|
||||
case "yem_department":// 部门
|
||||
setDeptF7Filter(evt);
|
||||
// setDeptF7Filter(evt);
|
||||
break;
|
||||
case "yem_salegroup": // 业务组
|
||||
setGroupF7Filter(evt);
|
||||
@ -115,25 +116,26 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF
|
||||
|
||||
/**
|
||||
* @Description: 单据组织人员相关字段合规
|
||||
* @function 功能: 判断 部门、业务员 是否是当前组织下,如果不是则清空
|
||||
* @function 功能: 根据当前登录人员携带部门、业务员默认值
|
||||
*
|
||||
* @purposes 用途:单据新增时、组织值改变时
|
||||
*/
|
||||
private void orgPropertyChanged(){
|
||||
IDataModel model = this.getView().getModel();
|
||||
DynamicObject org = (DynamicObject) model.getValue("org");
|
||||
if (YEM.isEmpty(org)) return;
|
||||
// 部门
|
||||
DynamicObject yemDepartment = (DynamicObject) model.getValue("yem_department");
|
||||
if (!YEM.isEmpty(yemDepartment)){
|
||||
// 判断组织是否在 部门的上级组织中
|
||||
boolean isOrgSubDept = isOrgSubDept(org, yemDepartment);
|
||||
if (!isOrgSubDept) model.setValue("yem_department",null);
|
||||
}
|
||||
// 业务员
|
||||
DynamicObject yemOperator = (DynamicObject) model.getValue("yem_operator");
|
||||
if (!YEM.isEmpty(yemOperator)){
|
||||
Map<Long, Boolean> orgSubUserDeptInfo = getOrgSubUserDeptInfo(org, yemOperator);
|
||||
if (orgSubUserDeptInfo.isEmpty()) model.setValue("yem_operator",null);
|
||||
DynamicObject user = BusinessDataServiceHelper.loadSingleFromCache(YEM.getCurrentUserId(), "bos_user");
|
||||
Map<Long, Boolean> orgSubUserDeptInfo = getOrgSubUserDeptInfo(org, user);
|
||||
if (!orgSubUserDeptInfo.isEmpty()){
|
||||
model.setValue("yem_operator",user);
|
||||
boolean b = orgSubUserDeptInfo.containsValue(true);
|
||||
Set<Long> deptIdSet = orgSubUserDeptInfo.keySet();
|
||||
for (Long deptId : deptIdSet){
|
||||
if (!b || orgSubUserDeptInfo.get(deptId)) {
|
||||
model.setValue("yem_department",deptId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -288,22 +290,20 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF
|
||||
}
|
||||
model.setValue("yem_baseqty",BigDecimal.ZERO,rowIndex);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 是否组织下级部门
|
||||
* @function 功能 :判断组织是否在 部门的上级组织分录中
|
||||
* @Description: 获取组织下级部门
|
||||
* @function 功能 :获取组织下级部门
|
||||
* @purposes 用途: 单据组织人员相关字段合规
|
||||
* @param org 组织
|
||||
* @param dept 部门
|
||||
* @return boolean 是否下级
|
||||
* @return List<Long> 组织下级部门ID
|
||||
*/
|
||||
private boolean isOrgSubDept(DynamicObject org,DynamicObject dept){
|
||||
DynamicObjectCollection structure = dept.getDynamicObjectCollection("structure");
|
||||
List<Long> parentOrgIds = new ArrayList<>();
|
||||
for (DynamicObject entry : structure){
|
||||
DynamicObject viewparent = entry.getDynamicObject("viewparent");
|
||||
if (!YEM.isEmpty(viewparent))parentOrgIds.add(viewparent.getLong("id"));
|
||||
}
|
||||
return parentOrgIds.contains(org.getLong("id"));
|
||||
private List<Long> getOrgSubDept(DynamicObject org){
|
||||
DynamicObject[] depts = BusinessDataServiceHelper.load("bos_adminorg","id",
|
||||
new QFilter[]{new QFilter("enable", QCP.equals, "1"),
|
||||
new QFilter("status", QCP.equals, "C"),
|
||||
new QFilter("structure.viewparent.id", QCP.equals, org.getLong("id")) });
|
||||
return Arrays.stream(depts).map(x -> x.getLong("id")).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -318,14 +318,15 @@ public class SexTemplateFormPlugin extends AbstractBillPlugIn implements BeforeF
|
||||
private Map<Long,Boolean> getOrgSubUserDeptInfo(DynamicObject org, DynamicObject user){
|
||||
// 定义Map统计部门信息
|
||||
Map<Long,Boolean> result = new HashMap<>();
|
||||
// 组织下级部门id集合
|
||||
List<Long> orgSubDeptIds = getOrgSubDept(org);
|
||||
// 人员部门分录
|
||||
DynamicObjectCollection entryentity = user.getDynamicObjectCollection("entryentity");
|
||||
for (DynamicObject entry : entryentity){
|
||||
DynamicObject dpt = entry.getDynamicObject("dpt");
|
||||
dpt = BusinessDataServiceHelper.loadSingle(dpt.getLong("id"),"bos_adminorg");
|
||||
boolean orgSubDept = isOrgSubDept(org, dpt);// 是否组织下部门
|
||||
long dptId = dpt.getLong("id");
|
||||
boolean ispartjob = entry.getBoolean("ispartjob");// 是否兼职
|
||||
if (orgSubDept)result.put(dpt.getLong("id"),ispartjob);
|
||||
if (orgSubDeptIds.contains(dptId))result.put(dptId,ispartjob);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user