diff --git a/src/com/api/browser/service/impl/JobBrowserService.java b/src/com/api/browser/service/impl/JobBrowserService.java index c192a099..f1f74e25 100644 --- a/src/com/api/browser/service/impl/JobBrowserService.java +++ b/src/com/api/browser/service/impl/JobBrowserService.java @@ -19,12 +19,14 @@ import com.engine.organization.mapper.department.DepartmentMapper; import com.engine.organization.util.OrganizationFormItemUtil; import com.engine.organization.util.db.DBType; import com.engine.organization.util.db.MapperProxyFactory; +import com.engine.organization.util.detach.DetachUtil; import com.engine.organization.util.tree.SearchTreeUtil; import org.apache.commons.lang.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import java.util.*; +import java.util.stream.Collectors; /** * @author:dxfeng @@ -134,6 +136,9 @@ public class JobBrowserService extends BrowserService { * @return */ private List getCurrentTreeNode(SearchTreeParams params) { + // 分权 + DetachUtil detachUtil = new DetachUtil(user.getUID()); + List jclRoleLevelList = Arrays.asList(detachUtil.getJclRoleLevels().split(",")).stream().map(Long::parseLong).collect(Collectors.toList()); List treeNodes = new ArrayList<>(); if (StringUtils.isBlank(params.getId())) { // 集团总部 @@ -142,18 +147,32 @@ public class JobBrowserService extends BrowserService { treeNodes.add(topGroup); } else { // 分部存在下级的ID - List compHasSubs = MapperProxyFactory.getProxy(CompMapper.class).hasSubs(); + List compHasSubs; + if (detachUtil.isDETACH()) { + compHasSubs = MapperProxyFactory.getProxy(CompMapper.class).hasDetachSubs(jclRoleLevelList); + } else { + compHasSubs = MapperProxyFactory.getProxy(CompMapper.class).hasSubs(); + } // 部门存在下级的ID List hasSubDepartment = MapperProxyFactory.getProxy(DepartmentMapper.class).hasSubs(); if ("0".equals(params.getId())) { - List compList = MapperProxyFactory.getProxy(CompMapper.class).listParent(); + List compList; + if (detachUtil.isDETACH()) { + compList = MapperProxyFactory.getProxy(CompMapper.class).getCompsByIds(jclRoleLevelList); + detachUtil.filterCompanyList(compList); + }else{ + compList = MapperProxyFactory.getProxy(CompMapper.class).listParent(); + } // 获取顶层分部 compList.stream().sorted(Comparator.comparing(CompPO::getShowOrder)).forEach(item -> buildCompNodes(treeNodes, compHasSubs, item)); } else if ("1".equals(params.getType())) { // 当前节点下的元素 CompPO compBuild = CompPO.builder().parentCompany(Long.parseLong(params.getId())).forbiddenTag(0).deleteType(0).build(); List compList = MapperProxyFactory.getProxy(CompMapper.class).listByFilter(compBuild, "show_order"); + if (detachUtil.isDETACH()) { + detachUtil.filterCompanyList(compList); + } DepartmentPO departmentBuild = DepartmentPO.builder().parentComp(Long.parseLong(params.getId())).forbiddenTag(0).deleteType(0).build(); List departmentList = MapperProxyFactory.getProxy(DepartmentMapper.class).listByFilter(departmentBuild, "show_order"); compList.forEach(item -> buildCompNodes(treeNodes, compHasSubs, item)); diff --git a/src/com/engine/organization/entity/personnelcard/vo/CardAccessVO.java b/src/com/engine/organization/entity/personnelcard/vo/CardAccessVO.java index d4784433..c2ccb863 100644 --- a/src/com/engine/organization/entity/personnelcard/vo/CardAccessVO.java +++ b/src/com/engine/organization/entity/personnelcard/vo/CardAccessVO.java @@ -1,11 +1,14 @@ package com.engine.organization.entity.personnelcard.vo; +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.organization.annotation.OrganizationTable; +import com.engine.organization.annotation.OrganizationTableColumn; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; + /** * @Author weaver_cl @@ -14,8 +17,45 @@ import java.util.Date; * @Version V1.0 **/ - +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@OrganizationTable(pageId = "8df45b09-0cda-4f57-a93a-ca9f96a4cfbf", + fields = "t.id," + + "t.type_name," + + "t.status," + + "t.all_people," + + "t.superior," + + "t.all_superior," + + "t.custom", + fromSql = "FROM jcl_org_cardaccess t ", + orderby = "id", + sortway = "asc", + primarykey = "id", + tableType = WeaTableType.CHECKBOX +) public class CardAccessVO { + @OrganizationTableColumn(column = "id", display = false) + private Long id; + + @OrganizationTableColumn(text = "栏目", width = "15%", column = "type_name") + private Integer typeName; + + @OrganizationTableColumn(text = "是否启用", width = "15%", column = "status") + private Integer status; + + @OrganizationTableColumn(text = "所有人可见", width = "15%", column = "all_people") + private Integer allPeople; + + @OrganizationTableColumn(text = "上级可见", width = "15%", column = "superior") + private Integer superior; + + @OrganizationTableColumn(text = "所有上级可见", width = "15%", column = "all_superior") + private Integer allSuperior; + + @OrganizationTableColumn(text = "查看自定义", width = "15%", column = "custom",transmethod = "com.engine.organization.transmethod.ManagerDetachTransMethod.getRoleLevel") + private String custom; } diff --git a/src/com/engine/organization/mapper/comp/CompMapper.java b/src/com/engine/organization/mapper/comp/CompMapper.java index 5642ba8e..1f636132 100644 --- a/src/com/engine/organization/mapper/comp/CompMapper.java +++ b/src/com/engine/organization/mapper/comp/CompMapper.java @@ -32,6 +32,8 @@ public interface CompMapper { List hasSubs(); + List hasDetachSubs(@Param("companyIds") Collection companyIds); + /** * 根据搜索条件查询数据 * diff --git a/src/com/engine/organization/mapper/comp/CompMapper.xml b/src/com/engine/organization/mapper/comp/CompMapper.xml index 12d4a722..ad6b65d5 100644 --- a/src/com/engine/organization/mapper/comp/CompMapper.xml +++ b/src/com/engine/organization/mapper/comp/CompMapper.xml @@ -442,6 +442,25 @@ #{uuid} + update jcl_org_comp diff --git a/src/com/engine/organization/service/CardAccessService.java b/src/com/engine/organization/service/CardAccessService.java index 43833f72..521df12f 100644 --- a/src/com/engine/organization/service/CardAccessService.java +++ b/src/com/engine/organization/service/CardAccessService.java @@ -1,5 +1,7 @@ package com.engine.organization.service; +import java.util.Map; + /** * @Author weaver_cl * @Description: @@ -7,4 +9,10 @@ package com.engine.organization.service; * @Version V1.0 **/ public interface CardAccessService { + + Map tablePage(); + + Map hasRight(); + + int save(Map params); } diff --git a/src/com/engine/organization/service/impl/CardAccessServiceImpl.java b/src/com/engine/organization/service/impl/CardAccessServiceImpl.java index 69b2adfe..99f1dee2 100644 --- a/src/com/engine/organization/service/impl/CardAccessServiceImpl.java +++ b/src/com/engine/organization/service/impl/CardAccessServiceImpl.java @@ -1,10 +1,52 @@ package com.engine.organization.service.impl; +import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.core.impl.Service; +import com.engine.organization.component.OrganizationWeaTable; +import com.engine.organization.entity.detach.vo.ManagerDetachVO; +import com.engine.organization.service.CardAccessService; +import com.engine.organization.util.HasRightUtil; + +import java.util.HashMap; +import java.util.Map; + /** * @Author weaver_cl * @Description: * @Date 2022/11/1 * @Version V1.0 **/ -public class CardAccessServiceImpl { +public class CardAccessServiceImpl extends Service implements CardAccessService { + + private static final String RIGHT_NAME = "CardAccess:All"; + + @Override + public Map tablePage() { + Map resultMap = new HashMap<>(); + OrganizationWeaTable table = new OrganizationWeaTable<>(user, ManagerDetachVO.class); + String sqlWhere = " where delete_type = 0"; + table.setSqlwhere(sqlWhere); + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + resultMap.putAll(result.getResultMap()); + + return resultMap; + } + + @Override + public Map hasRight() { + Map resultMap = new HashMap<>(); + boolean hasRight = HasRightUtil.hasRight(user, RIGHT_NAME, true); + resultMap.put("hasRight", hasRight); + return resultMap; + } + + @Override + public int save(Map params) { + + return 0; + } + + } diff --git a/src/com/engine/organization/web/CardAccessController.java b/src/com/engine/organization/web/CardAccessController.java index ed00df86..46634494 100644 --- a/src/com/engine/organization/web/CardAccessController.java +++ b/src/com/engine/organization/web/CardAccessController.java @@ -1,5 +1,24 @@ package com.engine.organization.web; +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.organization.entity.detach.param.ManagerDetachParam; +import com.engine.organization.util.response.ReturnResult; +import com.engine.organization.wrapper.CardAccessWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + /** * @Author weaver_cl * @Description: @@ -8,4 +27,46 @@ package com.engine.organization.web; **/ public class CardAccessController { + + public CardAccessWrapper getCardAccessWrapper(User user) { + return ServiceUtil.getService(CardAccessWrapper.class,user); + } + + + @GET + @Path("/hasRight") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult hasRight(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getCardAccessWrapper(user).hasRight()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } + + @GET + @Path("/getTable") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult listPage(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + return ReturnResult.successed(getCardAccessWrapper(user).listPage()); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } + + @POST + @Path("/save") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult save(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + return ReturnResult.successed(getCardAccessWrapper(user).save(map)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } } diff --git a/src/com/engine/organization/web/ManagerDetachController.java b/src/com/engine/organization/web/ManagerDetachController.java index a54b29fa..16bdfd7f 100644 --- a/src/com/engine/organization/web/ManagerDetachController.java +++ b/src/com/engine/organization/web/ManagerDetachController.java @@ -33,7 +33,7 @@ public class ManagerDetachController { @GET @Path("/getTable") @Produces(MediaType.APPLICATION_JSON) - public ReturnResult listScheme(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public ReturnResult listPage(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { User user = HrmUserVarify.getUser(request, response); Map map = ParamUtil.request2Map(request); @@ -98,7 +98,7 @@ public class ManagerDetachController { @POST @Path("/save") @Produces(MediaType.APPLICATION_JSON) - public ReturnResult saveScheme(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ManagerDetachParam param) { + public ReturnResult saveDetach(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ManagerDetachParam param) { try { User user = HrmUserVarify.getUser(request, response); return ReturnResult.successed(getManagerDetachWrapper(user).save(param)); @@ -110,7 +110,7 @@ public class ManagerDetachController { @POST @Path("/update") @Produces(MediaType.APPLICATION_JSON) - public ReturnResult updateScheme(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ManagerDetachParam param) { + public ReturnResult updateDetach(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ManagerDetachParam param) { try { User user = HrmUserVarify.getUser(request, response); return ReturnResult.successed(getManagerDetachWrapper(user).updateDetach(param)); diff --git a/src/com/engine/organization/wrapper/CardAccessWrapper.java b/src/com/engine/organization/wrapper/CardAccessWrapper.java index 41475351..8d9add1f 100644 --- a/src/com/engine/organization/wrapper/CardAccessWrapper.java +++ b/src/com/engine/organization/wrapper/CardAccessWrapper.java @@ -1,6 +1,12 @@ package com.engine.organization.wrapper; +import com.engine.common.util.ServiceUtil; +import com.engine.organization.service.CardAccessService; +import com.engine.organization.service.impl.CardAccessServiceImpl; import com.engine.organization.util.OrganizationWrapper; +import weaver.hrm.User; + +import java.util.Map; /** * @Author weaver_cl @@ -9,4 +15,20 @@ import com.engine.organization.util.OrganizationWrapper; * @Version V1.0 **/ public class CardAccessWrapper extends OrganizationWrapper { + + public CardAccessService getCardAccessService(User user) { + return ServiceUtil.getService(CardAccessServiceImpl.class,user); + } + + public Map listPage() { + return getCardAccessService(user).tablePage(); + } + + public Map hasRight() { + return getCardAccessService(user).hasRight(); + } + + public int save(Map params) { + return getCardAccessService(user).save(params); + } }