zhoux 1 год назад
Родитель
Сommit
458e616ee2

+ 7 - 0
src/main/java/com/dk/mdm/mapper/mst/OrgMapper.java

@@ -41,7 +41,14 @@ public interface OrgMapper extends BaseMapper<Org>{
      * @date   : 2023/1/10 17:20
      */
     Long countByCond(OrgQuery orgQuery);
+
+    /**
+     * @desc : 根据Id查询数据
+     * @author : 王英杰
+     * @date : 2024/2/26 10:36
+     */
     Org  selectById(@Param("id") String id);
+
     /**
      * @desc : 调用函数生成层级
      * @author : 王英杰

+ 5 - 0
src/main/java/com/dk/mdm/mapper/mst/OrgMapper.xml

@@ -14,6 +14,7 @@
                  parent.org_id
                 ,parent.org_name
                 ,parent.parent_id
+                ,parent.flg_business
                 ,parent.display_no
                 ,parent.top_id
                 ,parent.level_upper
@@ -50,6 +51,7 @@
         tparent.org_id
         ,tparent.org_name
                 ,tparent.parent_id
+                ,tparent.flg_business
                 ,tparent.display_no
                 ,tparent.top_id
                 ,tparent.level_upper
@@ -87,6 +89,7 @@
         ,T.org_name
                 ,T.parent_id
                 ,T.display_no
+                ,T.flg_business
                 ,T.top_id
                 ,T.level_upper
                 ,T.level_lower
@@ -110,6 +113,7 @@
         <result column="parent_id" property="parentId" typeHandler="UuidTypeHandler"/>
         <result column="display_no" property="displayNo"/>
         <result column="parent_name" property="parentName"/>
+        <result column="flg_business" property="flgBusiness"/>
 
         <result column="top_id" property="topId" typeHandler="UuidTypeHandler"/>
         <result column="level_upper" property="levelUpper" typeHandler="UuidListTypeHandler"/>
@@ -141,6 +145,7 @@
         <id column="org_id" property="orgId"/>
         <result column="org_name" property="orgName"/>
         <result column="parent_id" property="parentId" typeHandler="UuidTypeHandler"/>
+        <result column="flg_business" property="flgBusiness"/>
         <result column="display_no" property="displayNo"/>
         <result column="top_id" property="topId" typeHandler="UuidTypeHandler"/>
         <result column="level_upper" property="levelUpper" typeHandler="UuidListTypeHandler"/>

+ 70 - 35
src/main/java/com/dk/mdm/service/mst/OrgService.java

@@ -3,7 +3,9 @@ package com.dk.mdm.service.mst;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
 import com.dk.common.model.pojo.PageList;
+import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.mst.OrgConvert;
@@ -25,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -38,6 +41,7 @@ public class OrgService extends BaseService<Org> {
     public String getPrimaryKey() {
         return "org_id";
     }
+
     @Override
     public BaseMapper<Org> getRepository() {
         return orgMapper;
@@ -46,18 +50,17 @@ public class OrgService extends BaseService<Org> {
     @Autowired
     private OrgMapper orgMapper;
 
-
-
     @Autowired
     private OrgConvert orgConvert;
     @Autowired
     private CommonService commonService;
 
     @Autowired
-    OrgWhMapper orgWhMapper;
+    private OrgWhMapper orgWhMapper;
 
     @Autowired
-    OrgMacMapper orgMacMapper;
+    private OrgMacMapper orgMacMapper;
+
     /**
      * @desc : 条件查询
      * @author : 王英杰
@@ -65,17 +68,18 @@ public class OrgService extends BaseService<Org> {
      */
     @Pagination
     public ResponseResultVO<PageList<OrgResponse>> selectByCond(OrgQuery orgQuery) {
-        List<OrgResponse>   list = orgMapper.selectByCond(orgQuery);
+        List<OrgResponse> list = orgMapper.selectByCond(orgQuery);
         if (orgQuery.getParentId() != null) { //说明传这个id就是部门档案查三级部门以下有没有子级
             for (OrgResponse item : list) {
                 OrgQuery qry = new OrgQuery();
-                qry.setParentId( item.getOrgId());
+                qry.setParentId(item.getOrgId());
                 item.setItemDataLength(orgMapper.countByCond(qry));
             }
         }
         return super.mergeListWithCount(orgQuery, list,
                 orgMapper.countByCond(orgQuery));
     }
+
     /**
      * @desc : 条件查询
      * @author : 王英杰
@@ -88,18 +92,18 @@ public class OrgService extends BaseService<Org> {
         if (orgQuery.getParentId() != null) { //说明传这个id就是部门档案查三级部门以下有没有子级
             for (OrgResponse item : list) {
                 OrgQuery qry = new OrgQuery();
-                qry.setParentId( item.getOrgId());
+                qry.setParentId(item.getOrgId());
                 item.setItemDataLength(orgMapper.countByCond(qry));
             }
         }
 
-        return   ResponseResultUtil.success(list);
+        return ResponseResultUtil.success(list);
     }
 
     /**
-     * @desc   : 通过ID查询 带出对应的 组织资金账户 以及组织仓库
+     * @desc : 通过ID查询 带出对应的 组织资金账户 以及组织仓库
      * @author : 王英杰
-     * @date   : 2023/2/29 10:40
+     * @date : 2023/2/29 10:40
      */
     @Pagination
     public ResponseResultVO getById(String id) {
@@ -108,20 +112,26 @@ public class OrgService extends BaseService<Org> {
         orgResponse.setMacBeanList(orgMacMapper.selectByCond(new OrgMac().setOrgId(id)));
         return ResponseResultUtil.success(orgResponse);
     }
+
     /**
-     * @desc   : 微信小程序 查询选择部门数据
+     * @desc : 微信小程序 查询选择部门数据
      * @author : 宋扬
-     * @date   : 2023/2/29 10:40
+     * @date : 2023/2/29 10:40
      */
     @Pagination
-    public ResponseResultVO<List<OrgResponse>>  selectChooseOrg( OrgQuery orgQuery) {
-        if(orgQuery.getOrgId()!=null){
-            Org org =   orgMapper.selectById(orgQuery.getOrgId()); //查出上级部门的 层级代码
+    public ResponseResultVO<List<OrgResponse>> selectChooseOrg(OrgQuery orgQuery) {
+        // 查出当前部门,进行过滤
+        if (orgQuery.getOrgId() != null) {
+            Org org = orgMapper.selectById(orgQuery.getOrgId()); //查出部门的 层级代码
             orgQuery.setLevelCode(org.getLevelCode());
             orgQuery.setFilterFlag("ok");
         }
-        return ResponseResultUtil.success(orgMapper.selectChooseOrg(orgQuery));
+        String parentId = orgQuery.getParentId();
+        List<OrgResponse> orgResponseList = orgMapper.selectChooseOrg(orgQuery.setParentId(null));
+        return ResponseResultUtil.success(orgResponseList.stream().
+                filter(it -> !it.getOrgId().equals(parentId)).collect(Collectors.toList()));
     }
+
     /**
      * @desc : 新建组织机构
      * @author : 王英杰
@@ -133,6 +143,14 @@ public class OrgService extends BaseService<Org> {
     public ResponseResultVO<?> insert(OrgVO orgVO) {
         // 转化实体
         Org organization = orgConvert.convertToPo(orgVO);
+        // 如果父级部门的是业务部门标识,就不能有子级
+        if(organization.getParentId() != null ){
+            Org checkOrg = orgMapper.selectById(organization.getParentId());
+            if(checkOrg != null && checkOrg.getFlgBusiness() != null && checkOrg.getFlgBusiness()){
+                //系统预制 无法编辑
+                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORG_PARENT_IS_BUSINESS.getMessage());
+            }
+        }
         Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORG.getName(), true);
         // 获取编码和主键UuId
         organization.setOrgId(codeMap.get("outId").toString());
@@ -141,8 +159,8 @@ public class OrgService extends BaseService<Org> {
         //查询 本次要加的 部门的 父级下 最大的DisplayNo  然后加1  就是现在要加的DisplayNo
         Map<String, Object> param = new HashMap<>();
         param.put("otherCond", "parent_id = #{parentID} ::uuid");
-        param.put("parentId",organization.getParentId());
-        organization.setDisplayNo(commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORG ,param));
+        param.put("parentId", organization.getParentId());
+        organization.setDisplayNo(commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORG, param));
         if (organization.getParentId() != null) {
             Org org = orgMapper.selectById(organization.getParentId());
             //插入TOPid
@@ -158,9 +176,9 @@ public class OrgService extends BaseService<Org> {
         if (orgVO.getWarehouseList() != null && orgVO.getWarehouseList().size() > 0) {
             for (Map<String, Object> map : orgVO.getWarehouseList()) {
                 // 获取显示顺序
-                Map<String, Object> paramOrgWh=new HashMap<>();
-                paramOrgWh.put("noFlgValid",true);
-                Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH,paramOrgWh);
+                Map<String, Object> paramOrgWh = new HashMap<>();
+                paramOrgWh.put("noFlgValid", true);
+                Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH, paramOrgWh);
                 OrgWh orgWh = new OrgWh();
                 orgWh.setOrgId(organization.getOrgId()).setWhId(map.get("whId").toString()).setDisplayNo(orgWhDisplayNo)
                         .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
@@ -172,10 +190,10 @@ public class OrgService extends BaseService<Org> {
         if (orgVO.getMacList() != null && orgVO.getMacList().size() > 0) {
             for (Map<String, Object> map : orgVO.getMacList()) {
                 // 获取显示顺序
-                Map<String, Object> paramOrgMac=new HashMap<>();
-                paramOrgMac.put("noFlgValid",true);
-                Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC,paramOrgMac);
-                OrgMac orgMac=new OrgMac();
+                Map<String, Object> paramOrgMac = new HashMap<>();
+                paramOrgMac.put("noFlgValid", true);
+                Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC, paramOrgMac);
+                OrgMac orgMac = new OrgMac();
                 orgMac.setOrgId(organization.getOrgId()).setMacId(map.get("macId").toString()).setDisplayNo(orgMacDisplayNo)
                         .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
                 orgMacMapper.insert(orgMac);
@@ -200,7 +218,7 @@ public class OrgService extends BaseService<Org> {
         Org organization = orgConvert.convertToPo(orgVO);
         // 获取显示顺序
         Map<String, Object> codeMap = commonService.getUniqueNoteCode(
-                Constant.docNameConstant.ORG.getName(),orgVO.getCpId(), true);
+                Constant.docNameConstant.ORG.getName(), orgVO.getCpId(), true);
         // 获取编码和主键UuId
         organization.setDisplayNo(0);
         organization.setOrgId(codeMap.get("outId").toString());
@@ -213,9 +231,9 @@ public class OrgService extends BaseService<Org> {
     }
 
     /**
-     * @desc   : 编辑方法
+     * @desc : 编辑方法
      * @author : 宋扬
-     * @date   : 2024/3/22 17:15
+     * @date : 2024/3/22 17:15
      */
     @Transactional(
             rollbackFor = {Exception.class}
@@ -223,6 +241,23 @@ public class OrgService extends BaseService<Org> {
     public ResponseResultVO<Boolean> update(OrgVO orgVO) {
         // 转化实体
         Org org = orgConvert.convertToPo(orgVO);
+
+        // 如果是业务部门标识,那么不能有子级
+        if (org.getFlgBusiness() != null && org.getFlgBusiness()) {
+            Long childCount = orgMapper.countByCond(new OrgQuery().setParentId(org.getOrgId()));
+            if (childCount > 0) {
+                // 部门有子级不允许修改为业务部门
+                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORG_BUSINESS_HAS_CHILD.getMessage());
+            }
+        }
+        // 如果父级部门的是业务部门标识,就不能有子级
+        if(org.getParentId() != null ){
+            Org checkOrg = orgMapper.selectById(org.getParentId());
+            if(checkOrg != null && checkOrg.getFlgBusiness() != null && checkOrg.getFlgBusiness()){
+                //系统预制 无法编辑
+                return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORG_PARENT_IS_BUSINESS.getMessage());
+            }
+        }
         // 修改组织机构
         super.update(org, new UpdateWrapper<Org>().lambda().eq(Org::getOrgId,
                 UUID.fromString(org.getOrgId())));
@@ -240,9 +275,9 @@ public class OrgService extends BaseService<Org> {
         if (orgVO.getWarehouseList() != null && orgVO.getWarehouseList().size() > 0) {
             for (Map<String, Object> map : orgVO.getWarehouseList()) {
                 // 获取显示顺序
-                Map<String, Object> paramOrgWh=new HashMap<>();
-                paramOrgWh.put("noFlgValid",true);
-                Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH,paramOrgWh);
+                Map<String, Object> paramOrgWh = new HashMap<>();
+                paramOrgWh.put("noFlgValid", true);
+                Integer orgWhDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGWH, paramOrgWh);
                 OrgWh orgWh = new OrgWh();
                 orgWh.setOrgId(org.getOrgId()).setWhId(map.get("whId").toString()).setDisplayNo(orgWhDisplayNo)
                         .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
@@ -254,10 +289,10 @@ public class OrgService extends BaseService<Org> {
         if (orgVO.getMacList() != null && orgVO.getMacList().size() > 0) {
             for (Map<String, Object> map : orgVO.getMacList()) {
                 // 获取显示顺序
-                Map<String, Object> paramOrgMac=new HashMap<>();
-                paramOrgMac.put("noFlgValid",true);
-                Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC,paramOrgMac);
-                OrgMac orgMac=new OrgMac();
+                Map<String, Object> paramOrgMac = new HashMap<>();
+                paramOrgMac.put("noFlgValid", true);
+                Integer orgMacDisplayNo = commonService.getMaxDisplayNo(Constant.DisplayNoTable.ORGMAC, paramOrgMac);
+                OrgMac orgMac = new OrgMac();
                 orgMac.setOrgId(org.getOrgId()).setMacId(map.get("macId").toString()).setDisplayNo(orgMacDisplayNo)
                         .setFlgDefault(Boolean.parseBoolean(map.get("ownerFlag").toString()));
                 orgMacMapper.insert(orgMac);