Merge pull request 'lb:自营出口(一般)模板(抬头+商品+财务) 表单插件' (#25) from yem_handsome_lb into main

Reviewed-on: #25
This commit is contained in:
yem_handsome_lb 2025-02-27 18:12:43 +08:00
commit e897b0779b

View File

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