From a2fe049233133b962ec4180f00b475a83e79b44b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Thu, 27 Mar 2025 18:03:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E6=9E=84=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InstitutionAreaController.java | 242 +-------- .../mapper/InstitutionAreaMapper.java | 71 +-- .../mapper/xml/InstitutionAreaMapper.xml | 69 --- .../service/IInstitutionAreaService.java | 102 +--- .../impl/InstitutionAreaServiceImpl.java | 490 +++--------------- 5 files changed, 81 insertions(+), 893 deletions(-) diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/controller/InstitutionAreaController.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/controller/InstitutionAreaController.java index d3f6286..31c61a6 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/controller/InstitutionAreaController.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/controller/InstitutionAreaController.java @@ -1,41 +1,14 @@ package com.nu.modules.institution.controller; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.nu.modules.institution.entity.InstitutionArea; -import com.nu.modules.institution.model.InstitutionAreaIdModel; import com.nu.modules.institution.model.InstitutionAreaTreeModel; import com.nu.modules.institution.service.IInstitutionAreaService; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecg.common.api.vo.Result; -import org.jeecg.common.config.TenantContext; -import org.jeecg.common.constant.CacheConstant; -import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.util.JwtUtil; -import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.common.util.ImportExcelUtil; -import org.jeecg.common.util.RedisUtil; -import org.jeecg.common.util.oConvertUtils; -import org.jeecg.config.mybatis.MybatisPlusSaasConfig; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.def.NormalExcelConstants; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; -import org.springframework.web.servlet.ModelAndView; - import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; import java.util.*; /** @@ -53,41 +26,17 @@ public class InstitutionAreaController { @Autowired private IInstitutionAreaService service; - /** - * 查询数据 查出所有机构,并以树结构数据格式响应给前端 - * - * @return - */ - @RequestMapping(value = "/queryTreeList", method = RequestMethod.GET) - public Result> queryTreeList(@RequestParam(name = "ids", required = false) String ids) { - Result> result = new Result<>(); - try { - if(oConvertUtils.isNotEmpty(ids)){ - List departList = service.queryTreeList(ids); - result.setResult(departList); - }else{ - List list = service.queryTreeList(); - result.setResult(list); - } - result.setSuccess(true); - } catch (Exception e) { - log.error(e.getMessage(),e); - } - return result; - } - /** * 异步查询机构list * @param parentId 父节点 异步加载时传递 - * @param ids 前端回显是传递 * @param primaryKey 主键字段(id或者orgCode) * @return */ - @RequestMapping(value = "/queryInstTreeSync", method = RequestMethod.GET) - public Result> queryInstTreeSync(@RequestParam(name = "pid", required = false) String parentId,@RequestParam(name = "ids", required = false) String ids, @RequestParam(name = "primaryKey", required = false) String primaryKey) { + @RequestMapping(value = "/queryTreeSync", method = RequestMethod.GET) + public Result> queryTreeSync(@RequestParam(name = "pid", required = false) String parentId, @RequestParam(name = "primaryKey", required = false) String primaryKey) { Result> result = new Result<>(); try { - List list = service.queryTreeListByPid(parentId,ids, primaryKey); + List list = service.queryTreeListByPid(parentId,primaryKey); result.setResult(list); result.setSuccess(true); } catch (Exception e) { @@ -98,32 +47,6 @@ public class InstitutionAreaController { return result; } - /** - * 获取某个机构的所有父级机构的ID - * - * @param instId 根据instId查 - * @param orgCode 根据orgCode查,instId和orgCode必须有一个不为空 - */ - @GetMapping("/queryAllParentId") - public Result queryParentIds( - @RequestParam(name = "instId", required = false) String instId, - @RequestParam(name = "orgCode", required = false) String orgCode) { - try { - JSONObject data; - if (oConvertUtils.isNotEmpty(instId)) { - data = service.queryAllParentIdByInstId(instId); - } else if (oConvertUtils.isNotEmpty(orgCode)) { - data = service.queryAllParentIdByOrgCode(orgCode); - } else { - return Result.error("departId 和 orgCode 不能都为空!"); - } - return Result.OK(data); - } catch (Exception e) { - log.error(e.getMessage(), e); - return Result.error(e.getMessage()); - } - } - /** * 添加新数据 添加用户新建的机构对象数据,并保存到数据库 * @@ -169,58 +92,18 @@ public class InstitutionAreaController { } /** - * 通过id删除 - * @param id + * 删除 + * @param institutionArea * @return */ - @RequestMapping(value = "/delete", method = RequestMethod.DELETE) - public Result delete(@RequestParam(name="id",required=true) String id) { - Result result = new Result(); - InstitutionArea InstitutionArea = service.getById(id); - if(InstitutionArea==null) { - result.error500("未找到对应实体"); - }else { - service.deleteInst(id); - result.success("删除成功!"); - } - return result; - } - - - /** - * 批量删除 根据前端请求的多个ID,对数据库执行删除相关机构数据的操作 - * - * @param ids - * @return - */ - @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) - public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { - Result result = new Result(); - if (ids == null || "".equals(ids.trim())) { - result.error500("参数不识别!"); - } else { - this.service.deleteBatchWithChildren(Arrays.asList(ids.split(","))); - result.success("删除成功!"); - } - return result; - } - - /** - * 查询数据 添加或编辑页面对该方法发起请求,以树结构形式加载所有机构的名称,方便用户的操作 - * - * @return - */ - @RequestMapping(value = "/queryIdTree", method = RequestMethod.GET) - public Result> queryIdTree() { - Result> result = new Result<>(); - try { - List list = service.queryInstIdTreeList(); - result.setResult(list); - result.setSuccess(true); - } catch (Exception e) { - log.error(e.getMessage(),e); - } - return result; + @PostMapping(value = "/delete") + public Result delete(@RequestBody InstitutionArea institutionArea){ + InstitutionArea entity = service.getById(institutionArea.getId()); + if(entity==null) { + return Result.error("未找到对应实体"); + }else { + return service.deleteInst(entity); + } } /** @@ -232,15 +115,9 @@ public class InstitutionAreaController { * @return */ @RequestMapping(value = "/searchBy", method = RequestMethod.GET) - public Result> searchBy(@RequestParam(name = "keyWord", required = true) String keyWord, @RequestParam(name = "myInstSearch", required = false) String myInstSearch) { + public Result> searchBy(@RequestParam(name = "keyWord", required = true) String keyWord) { Result> result = new Result>(); - //机构查询,myDeptSearch为1时为我的机构查询,登录用户为上级时查只查负责机构下数据 - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - String instIds = null; - if(oConvertUtils.isNotEmpty(user.getUserIdentity()) && user.getUserIdentity().equals( CommonConstant.USER_IDENTITY_2 )){ - instIds = user.getDepartIds(); - } - List treeList = this.service.searchByKeyWord(keyWord,myInstSearch,instIds); + List treeList = this.service.searchByKeyWord(keyWord); if (treeList == null || treeList.size() == 0) { result.setSuccess(false); result.setMessage("未查询匹配数据!"); @@ -249,94 +126,5 @@ public class InstitutionAreaController { result.setResult(treeList); return result; } - - /** - * 查询所有机构信息 - * @return - */ - @GetMapping("listAll") - public Result> listAll(@RequestParam(name = "id", required = false) String id) { - Result> result = new Result<>(); - LambdaQueryWrapper query = new LambdaQueryWrapper(); - query.orderByAsc(InstitutionArea::getOrgCode); - if(oConvertUtils.isNotEmpty(id)){ - String[] arr = id.split(","); - query.in(InstitutionArea::getId,arr); - } - List ls = this.service.list(query); - result.setSuccess(true); - result.setResult(ls); - return result; - } - - /** - * 根据机构编码获取机构信息 - * - * @param orgCode - * @return - */ - @GetMapping("/getInstName") - public Result getInstName(@RequestParam(name = "orgCode") String orgCode) { - Result result = new Result<>(); - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(InstitutionArea::getOrgCode, orgCode); - InstitutionArea InstitutionArea = service.getOne(query); - result.setSuccess(true); - result.setResult(InstitutionArea); - return result; - } - - - /** - * @功能:根据id 批量查询 - * @param instIds - * @return - */ - @RequestMapping(value = "/queryByIds", method = RequestMethod.GET) - public Result> queryByIds(@RequestParam(name = "instIds") String instIds) { - Result> result = new Result<>(); - String[] ids = instIds.split(","); - Collection idList = Arrays.asList(ids); - Collection instList = service.listByIds(idList); - result.setSuccess(true); - result.setResult(instList); - return result; - } - - /** - * 异步查询机构list - * @param parentId 父节点 异步加载时传递 - * @return - */ - @RequestMapping(value = "/queryBookInstTreeSync", method = RequestMethod.GET) - public Result> queryBookDepTreeSync(@RequestParam(name = "pid", required = false) String parentId, - @RequestParam(name = "tenantId") Integer tenantId, - @RequestParam(name = "instName",required = false) String instName) { - Result> result = new Result<>(); - try { - List list = service.queryBookInstTreeSync(parentId, tenantId, instName); - result.setResult(list); - result.setSuccess(true); - } catch (Exception e) { - log.error(e.getMessage(),e); - } - return result; - } - - /** - * 查询所有子区域信息 - * @return - */ - @GetMapping("queryChildrenByParentId") - public Result> queryChildrenByParentId(@RequestParam(name = "pid", required = false) String parentId) { - Result> result = new Result<>(); - LambdaQueryWrapper query = new LambdaQueryWrapper(); - query.orderByAsc(InstitutionArea::getInstName); - query.eq(InstitutionArea::getParentId,parentId); - List ls = this.service.list(query); - result.setSuccess(true); - result.setResult(ls); - return result; - } } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/InstitutionAreaMapper.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/InstitutionAreaMapper.java index 4a01d37..6f1a22f 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/InstitutionAreaMapper.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/InstitutionAreaMapper.java @@ -20,35 +20,6 @@ import java.util.List; */ public interface InstitutionAreaMapper extends BaseMapper { - /** - * 通过机构编码获取机构id - * @param orgCode 机构编码 - * @return String - */ - @Select("select id from nu_admin_institution_area where org_code=#{orgCode}") - public String queryInstIdByOrgCode(@Param("orgCode") String orgCode); - - /** - * 通过机构id 查询机构id,父id - * @param id 机构id - * @return - */ - @Select("select id,parent_id from nu_admin_institution_area where id=#{id}") - public InstitutionArea getParentInstId(@Param("id") String id); - - /** - * 根据机构Id查询,当前和下级所有机构IDS - * @param id - * @return - */ - List getSubInstIdsByInstId(@Param("id") String id); - - /** - * 根据机构编码获取机构下所有IDS - * @param orgCodes - * @return - */ - List getSubInstIdsByOrgCodes(@org.apache.ibatis.annotations.Param("orgCodes") String[] orgCodes); /** * 根据parent_id查询下级区域 @@ -56,6 +27,7 @@ public interface InstitutionAreaMapper extends BaseMapper { * @return List */ List queryTreeListByPid(@Param("parentId") String parentId); + /** * 根据id下级区域数量 * @param parentId @@ -63,28 +35,6 @@ public interface InstitutionAreaMapper extends BaseMapper { */ @Select("SELECT count(*) FROM nu_admin_institution_area where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}") Integer queryCountByPid(@Param("parentId")String parentId); - /** - * 根据OrgCod查询所属机构信息 - * @param orgCode - * @return - */ - InstitutionArea queryInstByOrgCode(@Param("orgCode")String orgCode); - /** - * 根据id下级区域 - * @param parentId - * @return - */ - @Select("SELECT * FROM nu_admin_institution_area where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}") - List queryInstByPid(@Param("parentId")String parentId); - - /** - * 通过父级id和租户id查询部门 - * @param parentId - * @param tenantId - * @return - */ - @InterceptorIgnore(tenantLine = "true") - List queryBookInstTreeSync(@Param("parentId") String parentId, @Param("tenantId") Integer tenantId, @Param("instName") String instName); @InterceptorIgnore(tenantLine = "true") @Select("SELECT * FROM nu_admin_institution_area where id = #{id,jdbcType=VARCHAR}") @@ -101,24 +51,5 @@ public interface InstitutionAreaMapper extends BaseMapper { */ @Update("UPDATE nu_admin_institution_area SET iz_leaf=#{leaf} WHERE id = #{id}") int setMainLeaf(@Param("id") String id, @Param("leaf") Integer leaf); - - - /** - * 根据机构名称和租户id获取机构数据 - * @param instName - * @param tenantId - * @return - */ - List getInstByName(@Param("instName")String instName, @Param("tenantId")Integer tenantId,@Param("parentId") String parentId); - - /** - * 根据机构名称和租户id获取分页机构数据 - * @param page - * @param instName - * @param tenantId - * @param parentId - * @return - */ - List getInstPageByName(@Param("page") Page page, @Param("instName") String instName, @Param("tenantId") Integer tenantId, @Param("parentId") String parentId); } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/xml/InstitutionAreaMapper.xml b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/xml/InstitutionAreaMapper.xml index c224958..712ac58 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/xml/InstitutionAreaMapper.xml +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/mapper/xml/InstitutionAreaMapper.xml @@ -2,21 +2,6 @@ - - - - - - - - - - - - - - - - - - diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/IInstitutionAreaService.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/IInstitutionAreaService.java index acc81aa..4566506 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/IInstitutionAreaService.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/IInstitutionAreaService.java @@ -1,12 +1,11 @@ package com.nu.modules.institution.service; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.nu.modules.institution.entity.InstitutionArea; -import com.nu.modules.institution.model.InstitutionAreaIdModel; import com.nu.modules.institution.model.InstitutionAreaTreeModel; +import org.jeecg.common.api.vo.Result; import java.util.List; @@ -20,26 +19,6 @@ import java.util.List; */ public interface IInstitutionAreaService extends IService{ - /** - * 查询所有机构信息,并分节点进行显示 - * @return - */ - List queryTreeList(); - - - /** - * 查询所有机构信息,并分节点进行显示 - * @param ids 多个机构id - * @return - */ - List queryTreeList(String ids); - - /** - * 查询所有机构instId信息,并分节点进行显示 - * @return - */ - public List queryInstIdTreeList(); - /** * 保存部门数据 * @param InstitutionArea @@ -55,21 +34,12 @@ public interface IInstitutionAreaService extends IService{ */ Boolean updateInstDataById(InstitutionArea InstitutionArea,String username); - /** - * 删除Inst数据 - * @param id - * @return - */ - /* boolean removeInstDataById(String id); */ - /** * 根据关键字搜索相关的部门数据 * @param keyWord - * @param myInstSearch - * @param instIds 多个部门id * @return */ - List searchByKeyWord(String keyWord,String myInstSearch,String instIds); + List searchByKeyWord(String keyWord); /** * 根据部门id删除并删除其可能存在的子级部门 @@ -78,71 +48,26 @@ public interface IInstitutionAreaService extends IService{ */ boolean delete(String id); - /** - * 根据部门id批量删除并删除其可能存在的子级部门 - * @param ids 多个部门id - * @return - */ - void deleteBatchWithChildren(List ids); - - /** - * 根据部门Id查询,当前和下级所有部门IDS - * @param instId - * @return - */ - List getSubInstIdsByInstId(String instId); - /** * 获取我的部门下级所有部门 * @param parentId 父id - * @param ids 多个部门id * @param primaryKey 主键字段(id或者orgCode) * @return */ - List queryTreeListByPid(String parentId,String ids, String primaryKey); + List queryTreeListByPid(String parentId,String primaryKey); /** - * 获取某个部门的所有父级部门的ID - * - * @param instId 根据instId查 - * @return JSONObject - */ - JSONObject queryAllParentIdByInstId(String instId); - - /** - * 获取某个部门的所有父级部门的ID - * - * @param orgCode 根据orgCode查 - * @return JSONObject - */ - JSONObject queryAllParentIdByOrgCode(String orgCode); - /** - * 获取公司信息 - * @param orgCode 部门编码 + * 根据id查询机构信息 + * @param parentId * @return */ - InstitutionArea queryInstByOrgCode(String orgCode); - /** - * 获取下级部门 - * @param pid - * @return - */ - List queryInstByPid(String pid); + IPage getMaxCodeInst(Page page, String parentId); /** * 删除部门 * @param id */ - void deleteInst(String id); - - /** - * 通讯录通过租户id查询部门数据 - * @param parentId - * @param tenantId - * @param instName - * @return - */ - List queryBookInstTreeSync(String parentId, Integer tenantId, String instName); + Result deleteInst(InstitutionArea institutionArea); /** * 根据id查询部门信息 @@ -151,18 +76,5 @@ public interface IInstitutionAreaService extends IService{ */ InstitutionArea getInstById(String parentId); - /** - * 根据id查询部门信息 - * @param parentId - * @return - */ - IPage getMaxCodeInst(Page page, String parentId); - - /** - * 更新叶子节点 - * @param id - * @param izLeaf - */ - void updateIzLeaf(String id, Integer izLeaf); } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/impl/InstitutionAreaServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/impl/InstitutionAreaServiceImpl.java index 7deb8fa..6d75016 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/impl/InstitutionAreaServiceImpl.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/institution/service/impl/InstitutionAreaServiceImpl.java @@ -1,7 +1,5 @@ package com.nu.modules.institution.service.impl; -import cn.hutool.core.collection.CollectionUtil; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -11,24 +9,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nu.modules.institution.entity.InstitutionArea; import com.nu.modules.institution.mapper.InstitutionAreaMapper; -import com.nu.modules.institution.model.InstitutionAreaIdModel; import com.nu.modules.institution.model.InstitutionAreaTreeModel; import com.nu.modules.institution.service.IInstitutionAreaService; -import com.nu.modules.institution.utils.FindsInstChildrenUtil; import com.nu.modules.institution.utils.OrgCodeRule; -import io.netty.util.internal.StringUtil; -import org.apache.commons.lang.StringUtils; -import org.jeecg.common.config.TenantContext; +import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; -import org.jeecg.common.constant.FillRuleConstant; -import org.jeecg.common.constant.SymbolConstant; -import org.jeecg.common.util.FillRuleUtil; -import org.jeecg.common.util.YouBianCodeUtil; import org.jeecg.common.util.oConvertUtils; -import org.jeecg.config.mybatis.MybatisPlusSaasConfig; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - import java.util.*; import java.util.function.Consumer; @@ -44,68 +32,43 @@ import java.util.function.Consumer; public class InstitutionAreaServiceImpl extends ServiceImpl implements IInstitutionAreaService { /** - * queryTreeList 对应 queryTreeList 查询所有的机构数据,以树结构形式响应给前端 + * 根据parentId查询机构树 + * @param parentId + * @param primaryKey 主键字段(id或者orgCode) + * @return */ @Override - public List queryTreeList() { - LambdaQueryWrapper query = new LambdaQueryWrapper(); - //------------------------------------------------------------------------------------------------ - //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 - if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ - query.eq(InstitutionArea::getTenantId, oConvertUtils.getInt(TenantContext.getTenant(), 0)); + public List queryTreeListByPid(String parentId,String primaryKey) { + Consumer> square = i -> { + if(oConvertUtils.isEmpty(parentId)){ + i.and(q->q.isNull(true,InstitutionArea::getParentId).or().eq(true,InstitutionArea::getParentId,"")); + }else{ + i.eq(true,InstitutionArea::getParentId,parentId); + } + }; + LambdaQueryWrapper lqw=new LambdaQueryWrapper<>(); + lqw.eq(true,InstitutionArea::getDelFlag,CommonConstant.DEL_FLAG_0.toString()); + lqw.func(square); + lqw.orderByAsc(InstitutionArea::getInstOrder); + List list = list(lqw); + List records = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + InstitutionArea inst = list.get(i); + InstitutionAreaTreeModel treeModel = new InstitutionAreaTreeModel(inst); + records.add(treeModel); } - //------------------------------------------------------------------------------------------------ - query.eq(InstitutionArea::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - query.orderByAsc(InstitutionArea::getInstOrder); - List list = this.list(query); - // 调用wrapTreeDataToTreeList方法生成树状数据 - List listResult = FindsInstChildrenUtil.wrapTreeDataToTreeList(list); - return listResult; + return records; } /** - * queryTreeList 根据机构id查询,前端回显调用 + * 根据id查询机构信息 + * @param parentId + * @return */ @Override - public List queryTreeList(String ids) { - List listResult=new ArrayList<>(); - LambdaQueryWrapper query = new LambdaQueryWrapper(); - query.eq(InstitutionArea::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - if(oConvertUtils.isNotEmpty(ids)){ - query.in(true,InstitutionArea::getId,ids.split(",")); - } - //------------------------------------------------------------------------------------------------ - //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 - if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ - query.eq(InstitutionArea::getTenantId, oConvertUtils.getInt(TenantContext.getTenant(), 0)); - } - //------------------------------------------------------------------------------------------------ - query.orderByAsc(InstitutionArea::getInstOrder); - List list= this.list(query); - for (InstitutionArea inst : list) { - listResult.add(new InstitutionAreaTreeModel(inst)); - } - return listResult; - + public IPage getMaxCodeInst(Page page, String parentId) { + return page.setRecords(baseMapper.getMaxCodeInst(page,parentId)); } - - @Override - public List queryInstIdTreeList() { - LambdaQueryWrapper query = new LambdaQueryWrapper(); - query.eq(InstitutionArea::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - //------------------------------------------------------------------------------------------------ - //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 - if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ - query.eq(InstitutionArea::getTenantId, oConvertUtils.getInt(TenantContext.getTenant(), 0)); - } - //------------------------------------------------------------------------------------------------ - query.orderByAsc(InstitutionArea::getInstOrder); - List list = this.list(query); - // 调用wrapTreeDataToTreeList方法生成树状数据 - List listResult = FindsInstChildrenUtil.wrapTreeDataToInstIdTreeList(list); - return listResult; - } - /** * saveInstData 对应 add 保存用户在页面添加的新的机构对象数据 */ @@ -113,24 +76,23 @@ public class InstitutionAreaServiceImpl extends ServiceImpl ids) { - //存放子级的id - List idList = new ArrayList(); - //存放父级的id - List parentIdList = new ArrayList<>(); - for(String id: ids) { - idList.add(id); - //此步骤是为了删除子级 - this.checkChildrenExists(id, idList); - //update-begin---author:wangshuai ---date:20230712 for:【QQYUN-5757】批量删除机构时未正确置为叶子节点 ------------ - InstitutionArea inst = this.getInstById(id); - if (oConvertUtils.isNotEmpty(inst.getParentId())) { - if (!parentIdList.contains(inst.getParentId())) { - parentIdList.add(inst.getParentId()); - } - } - } - this.removeByIds(idList); - //再删除前需要获取父级id,不然会一直为空 - this.setParentInstIzLeaf(parentIdList); - } - - @Override - public List getSubInstIdsByInstId(String instId) { - return this.baseMapper.getSubInstIdsByInstId(instId); - } - - /** - * 清空部门id - * - * @param parentIdList - */ - private void setParentInstIzLeaf(List parentIdList) { - if (CollectionUtil.isNotEmpty(parentIdList)) { - for (String parentId : parentIdList) { - //查询父级id没有子级的时候跟新为叶子节点 - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(InstitutionArea::getParentId, parentId); - Long count = baseMapper.selectCount(query); - //当子级都不存在时,设置当前部门为叶子节点 - if (count == 0) { - baseMapper.setMainLeaf(parentId, CommonConstant.IS_LEAF); - } - } - } } /** @@ -223,37 +133,16 @@ public class InstitutionAreaServiceImpl extends ServiceImpl */ @Override - public List searchByKeyWord(String keyWord,String myDeptSearch,String instIds) { + public List searchByKeyWord(String keyWord) { LambdaQueryWrapper query = new LambdaQueryWrapper(); List newList = new ArrayList<>(); - //myDeptSearch不为空时为我的机构搜索,只搜索所负责机构 - if(!StringUtil.isNullOrEmpty(myDeptSearch)){ - //instIds 为空普通用户或没有管理机构 - if(StringUtil.isNullOrEmpty(instIds)){ - return newList; - } - //根据机构id获取所负责机构 - String[] codeArr = this.getMyDeptParentOrgCode(instIds); - //update-begin-author:taoyan date:20220104 for:/issues/3311 当用户属于两个机构的时候,且这两个机构没有上下级关系,我的机构-机构名称查询条件模糊搜索失效! - if (codeArr != null && codeArr.length > 0) { - query.nested(i -> { - for (String s : codeArr) { - i.or().likeRight(InstitutionArea::getOrgCode, s); - } - }); - } - //update-end-author:taoyan date:20220104 for:/issues/3311 当用户属于两个机构的时候,且这两个机构没有上下级关系,我的机构-机构名称查询条件模糊搜索失效! - query.eq(InstitutionArea::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - } query.like(InstitutionArea::getInstName, keyWord); - //update-begin--Author:huangzhilin Date:20140417 for:[bugfree号]组织机构搜索回显优化-------------------- InstitutionAreaTreeModel model = new InstitutionAreaTreeModel(); List instList = this.list(query); if(instList.size() > 0) { for(InstitutionArea inst : instList) { model = new InstitutionAreaTreeModel(inst); model.setChildren(null); - //update-end--Author:huangzhilin Date:20140417 for:[bugfree号]组织机构搜索功回显优化---------------------- newList.add(model); } return newList; @@ -261,299 +150,26 @@ public class InstitutionAreaServiceImpl extends ServiceImpl idList = new ArrayList<>(); - idList.add(id); - this.checkChildrenExists(id, idList); - //清空机构树内存 - //FindsInstChildrenUtil.clearDepartIdModel(); - boolean ok = this.removeByIds(idList); - return ok; - } - - /** - * delete 方法调用 - * @param id - * @param idList - */ - private void checkChildrenExists(String id, List idList) { - LambdaQueryWrapper query = new LambdaQueryWrapper(); - query.eq(InstitutionArea::getParentId,id); - List departList = this.list(query); - if(departList != null && departList.size() > 0) { - for(InstitutionArea depart : departList) { - idList.add(depart.getId()); - this.checkChildrenExists(depart.getId(), idList); - } - } - } - - /** - * 根据用户所负责机构ids获取父级机构编码 - * @param departIds - * @return - */ - private String[] getMyDeptParentOrgCode(String departIds){ - //根据机构id查询所负责机构 - LambdaQueryWrapper query = new LambdaQueryWrapper(); - query.eq(InstitutionArea::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); - if(oConvertUtils.isNotEmpty(departIds)){ - query.in(InstitutionArea::getId, Arrays.asList(departIds.split(","))); - } - - //------------------------------------------------------------------------------------------------ - //是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】 - if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ - query.eq(InstitutionArea::getTenantId, oConvertUtils.getInt(TenantContext.getTenant(), 0)); - } - //------------------------------------------------------------------------------------------------ - query.orderByAsc(InstitutionArea::getOrgCode); - List list = this.list(query); - //查找根机构 - if(list == null || list.size()==0){ - return null; - } - String orgCode = this.getMyDeptParentNode(list); - String[] codeArr = orgCode.split(","); - return codeArr; - } - - /** - * 获取负责机构父节点 - * @param list - * @return - */ - private String getMyDeptParentNode(List list){ - Map map = new HashMap(5); - //1.先将同一公司归类 - for(InstitutionArea dept : list){ - String code = dept.getOrgCode().substring(0,3); - if(map.containsKey(code)){ - String mapCode = map.get(code)+","+dept.getOrgCode(); - map.put(code,mapCode); - }else{ - map.put(code,dept.getOrgCode()); - } - } - StringBuffer parentOrgCode = new StringBuffer(); - //2.获取同一公司的根节点 - for(String str : map.values()){ - String[] arrStr = str.split(","); - parentOrgCode.append(",").append(this.getMinLengthNode(arrStr)); - } - return parentOrgCode.substring(1); - } - - /** - * 获取同一公司中机构编码长度最小的机构 - * @param str - * @return - */ - private String getMinLengthNode(String[] str){ - int min =str[0].length(); - StringBuilder orgCodeBuilder = new StringBuilder(str[0]); - for(int i =1;i queryTreeByKeyWord(String keyWord) { -// LambdaQueryWrapper query = new LambdaQueryWrapper(); -// query.eq(InstitutionArea::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); -// query.orderByAsc(InstitutionArea::getInstOrder); -// List list = this.list(query); -// // 调用wrapTreeDataToTreeList方法生成树状数据 -// List listResult = FindsInstChildrenUtil.wrapTreeDataToTreeList(list); -// List treelist =new ArrayList<>(); -// if(StringUtils.isNotBlank(keyWord)){ -// this.getTreeByKeyWord(keyWord,listResult,treelist); -// }else{ -// return listResult; -// } -// return treelist; -// } - - /** - * 根据parentId查询机构树 - * @param parentId - * @param ids 前端回显传递 - * @param primaryKey 主键字段(id或者orgCode) - * @return - */ - @Override - public List queryTreeListByPid(String parentId,String ids, String primaryKey) { - Consumer> square = i -> { - if (oConvertUtils.isNotEmpty(ids)) { - if (CommonConstant.DEPART_KEY_ORG_CODE.equals(primaryKey)) { - i.in(InstitutionArea::getOrgCode, ids.split(SymbolConstant.COMMA)); - } else { - i.in(InstitutionArea::getId, ids.split(SymbolConstant.COMMA)); - } - } else { - if(oConvertUtils.isEmpty(parentId)){ - i.and(q->q.isNull(true,InstitutionArea::getParentId).or().eq(true,InstitutionArea::getParentId,"")); - }else{ - i.eq(true,InstitutionArea::getParentId,parentId); - } - } - }; - LambdaQueryWrapper lqw=new LambdaQueryWrapper<>(); - //------------------------------------------------------------------------------------------------ - //是否开启系统管理模块的 SASS 控制 - if(MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL){ - lqw.eq(InstitutionArea::getTenantId, oConvertUtils.getInt(TenantContext.getTenant(), 0)); - } - //------------------------------------------------------------------------------------------------ - lqw.eq(true,InstitutionArea::getDelFlag,CommonConstant.DEL_FLAG_0.toString()); - lqw.func(square); - //update-begin---author:wangshuai ---date:20220527 for:[VUEN-1143]排序不对,vue3和2应该都有问题,应该按照升序排------------ - lqw.orderByAsc(InstitutionArea::getInstOrder); - //update-end---author:wangshuai ---date:20220527 for:[VUEN-1143]排序不对,vue3和2应该都有问题,应该按照升序排-------------- - List list = list(lqw); - //update-begin---author:wangshuai ---date:20220316 for:[JTC-119]在机构管理菜单下设置机构负责人 创建用户的时候不需要处理 - - //update-end---author:wangshuai ---date:20220316 for:[JTC-119]在机构管理菜单下设置机构负责人 创建用户的时候不需要处理 - List records = new ArrayList<>(); - for (int i = 0; i < list.size(); i++) { - InstitutionArea depart = list.get(i); - InstitutionAreaTreeModel treeModel = new InstitutionAreaTreeModel(depart); - //TODO 异步树加载key拼接__+时间戳,以便于每次展开节点会刷新数据 - //treeModel.setKey(treeModel.getKey()+"__"+System.currentTimeMillis()); - records.add(treeModel); - } - return records; - } - - @Override - public JSONObject queryAllParentIdByInstId(String instId) { - JSONObject result = new JSONObject(); - for (String id : instId.split(SymbolConstant.COMMA)) { - JSONObject all = this.queryAllParentId("id", id); - result.put(id, all); - } - return result; - } - - @Override - public JSONObject queryAllParentIdByOrgCode(String orgCode) { - JSONObject result = new JSONObject(); - for (String code : orgCode.split(SymbolConstant.COMMA)) { - JSONObject all = this.queryAllParentId("org_code", code); - result.put(code, all); - } - return result; - } - - /** - * 查询某个机构的所有父ID信息 - * - * @param fieldName 字段名 - * @param value 值 - */ - private JSONObject queryAllParentId(String fieldName, String value) { - JSONObject data = new JSONObject(); - // 父ID集合,有序 - data.put("parentIds", new JSONArray()); - // 父ID的机构数据,key是id,value是数据 - data.put("parentMap", new JSONObject()); - this.queryAllParentIdRecursion(fieldName, value, data); - return data; - } - - /** - * 递归调用查询父机构接口 - */ - private void queryAllParentIdRecursion(String fieldName, String value, JSONObject data) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(fieldName, value); - InstitutionArea depart = super.getOne(queryWrapper); - if (depart != null) { - data.getJSONArray("parentIds").add(0, depart.getId()); - data.getJSONObject("parentMap").put(depart.getId(), depart); - if (oConvertUtils.isNotEmpty(depart.getParentId())) { - this.queryAllParentIdRecursion("id", depart.getParentId(), data); - } - } - } - - @Override - public InstitutionArea queryInstByOrgCode(String orgCode) { - int length = YouBianCodeUtil.ZHANWEI_LENGTH; - String compyOrgCode = orgCode.substring(0,length); - return this.baseMapper.queryInstByOrgCode(compyOrgCode); - } - /** - * 根据id查询下级机构 - * @param pid - * @return - */ - @Override - public List queryInstByPid(String pid) { - return this.baseMapper.queryInstByPid(pid); - } - /** - * 根据关键字筛选机构信息 - * @param keyWord - * @return - */ - public void getTreeByKeyWord(String keyWord,List allResult,List newResult){ - for (InstitutionAreaTreeModel model:allResult) { - if (model.getInstName().contains(keyWord)){ - newResult.add(model); - continue; - }else if(model.getChildren()!=null){ - getTreeByKeyWord(keyWord,model.getChildren(),newResult); - } - } - } - - @Override - public void deleteInst(String id) { - //删除机构设置父级的叶子结点 - this.setIzLeaf(id); - this.delete(id); - } - - @Override - public List queryBookInstTreeSync(String parentId, Integer tenantId, String instName) { - List list = baseMapper.queryBookInstTreeSync(parentId,tenantId,instName); - List records = new ArrayList<>(); - for (int i = 0; i < list.size(); i++) { - InstitutionArea depart = list.get(i); - InstitutionAreaTreeModel treeModel = new InstitutionAreaTreeModel(depart); - records.add(treeModel); - } - return records; - } - @Override public InstitutionArea getInstById(String id) { return baseMapper.getInstById(id); } @Override - public IPage getMaxCodeInst(Page page, String parentId) { - return page.setRecords(baseMapper.getMaxCodeInst(page,parentId)); - } - - @Override - public void updateIzLeaf(String id, Integer izLeaf) { - baseMapper.setMainLeaf(id,izLeaf); + public Result deleteInst(InstitutionArea institutionArea) { + //判断是否有字节点 + int childrenCount = baseMapper.queryCountByPid(institutionArea.getId()); + if(childrenCount>0){ + if(institutionArea.getOrgCategory().equals("1")){ + return Result.error("此机构存在子区域,请将子区域全部删除后再来删除此机构!"); + }else{ + return Result.error("此区域存在子区域,请将子区域全部删除后再来删除此区域!"); + } + } + //删除机构设置父级的叶子结点 + this.setIzLeaf(institutionArea.getId()); + this.delete(institutionArea.getId()); + return Result.OK("机构删除成功!"); } /** @@ -572,4 +188,14 @@ public class InstitutionAreaServiceImpl extends ServiceImpl