From 8ef4f3a4d4a7b0d9524b1113a9e937c45d60845d Mon Sep 17 00:00:00 2001 From: bang Date: Thu, 20 Feb 2025 18:25:28 +0800 Subject: [PATCH] =?UTF-8?q?lb=EF=BC=9A=E8=87=AA=E8=90=A5=E5=87=BA=E5=8F=A3?= =?UTF-8?q?=EF=BC=88=E4=B8=80=E8=88=AC=EF=BC=89=E6=A8=A1=E6=9D=BF=EF=BC=88?= =?UTF-8?q?=E6=8A=AC=E5=A4=B4+=E5=95=86=E5=93=81+=E8=B4=A2=E5=8A=A1?= =?UTF-8?q?=EF=BC=89=20=E8=A1=A8=E5=8D=95=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yem/wm/sex/tpl/SexTemplateFormPlugin.java | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java b/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java index 0e4a4c7..04837e8 100644 --- a/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java +++ b/yem-wm/yem-wm-sex/src/main/java/yem/wm/sex/tpl/SexTemplateFormPlugin.java @@ -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 orgSubUserDeptInfo = getOrgSubUserDeptInfo(org, yemOperator); - if (orgSubUserDeptInfo.isEmpty()) model.setValue("yem_operator",null); + DynamicObject user = BusinessDataServiceHelper.loadSingleFromCache(YEM.getCurrentUserId(), "bos_user"); + Map orgSubUserDeptInfo = getOrgSubUserDeptInfo(org, user); + if (!orgSubUserDeptInfo.isEmpty()){ + model.setValue("yem_operator",user); + boolean b = orgSubUserDeptInfo.containsValue(true); + Set 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 组织下级部门ID */ - private boolean isOrgSubDept(DynamicObject org,DynamicObject dept){ - DynamicObjectCollection structure = dept.getDynamicObjectCollection("structure"); - List 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 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 getOrgSubUserDeptInfo(DynamicObject org, DynamicObject user){ // 定义Map统计部门信息 Map result = new HashMap<>(); + // 组织下级部门id集合 + List 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; }