瀏覽代碼

考勤异常审核角色权限数据过滤

wangliang 1 年之前
父節點
當前提交
e9495b6ea9

+ 11 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/result/TFFlowLogResult.java

@@ -57,6 +57,17 @@ public class TFFlowLogResult extends ApproveUserResult implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long taskId;
 
+    @ApiModelProperty(value = "流程审核节点")
+    private String taskName;
+
+    public String getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
+    }
+
     public TFCustomTypeEnum getFlowType() {
         return flowType;
     }

+ 6 - 12
sop-business/src/main/java/com/qmth/sop/business/bean/result/TFFlowViewLogResult.java

@@ -50,21 +50,15 @@ public class TFFlowViewLogResult extends BaseFlowData implements Serializable {
     @ApiModelProperty(value = "创建时间")
     private Long createTime;
 
-    public TFFlowViewLogResult() {
+    @ApiModelProperty(value = "流程审核节点")
+    private String taskName;
 
+    public String getTaskName() {
+        return taskName;
     }
 
-    public TFFlowViewLogResult(TFFlowLogResult tfFlowLogResult) {
-        this.flowId = tfFlowLogResult.getFlowId();
-        this.objectId = tfFlowLogResult.getObjectId();
-        this.approveId = tfFlowLogResult.getApproveId();
-        this.approveSetup = tfFlowLogResult.getApproveSetup();
-        this.approveRemark = tfFlowLogResult.getApproveRemark();
-        this.approveOperation = tfFlowLogResult.getApproveOperation();
-        this.pendApproveId = tfFlowLogResult.getPendApproveId();
-        this.pendApproveUserName = tfFlowLogResult.getPendApproveUserName();
-        this.approveUserName = tfFlowLogResult.getApproveUserName();
-        this.createTime = tfFlowLogResult.getCreateTime();
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
     }
 
     public Long getCreateTime() {

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/service/SysUserRoleService.java

@@ -74,5 +74,5 @@ public interface SysUserRoleService extends IService<SysUserRole> {
      * @param serviceId
      * @return
      */
-    List<SysUserRole> listByServiceId(Long serviceId);
+    List<String> listByServiceId(Long serviceId);
 }

+ 37 - 9
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserRoleServiceImpl.java

@@ -7,9 +7,7 @@ import com.qmth.sop.business.bean.result.MenuResult;
 import com.qmth.sop.business.cache.CommonCacheService;
 import com.qmth.sop.business.entity.*;
 import com.qmth.sop.business.mapper.SysUserRoleMapper;
-import com.qmth.sop.business.service.SysDingGroupService;
-import com.qmth.sop.business.service.SysDingObjService;
-import com.qmth.sop.business.service.SysUserRoleService;
+import com.qmth.sop.business.service.*;
 import com.qmth.sop.common.enums.DingObjTypeEnum;
 import com.qmth.sop.common.enums.ExceptionResultEnum;
 import com.qmth.sop.common.enums.RoleTypeEnum;
@@ -19,7 +17,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -42,6 +43,15 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
     @Resource
     SysDingObjService sysDingObjService;
 
+    @Resource
+    SysRoleService sysRoleService;
+
+    @Resource
+    TBServiceService tbServiceService;
+
+    @Resource
+    TBCrmService tbCrmService;
+
     /**
      * 获取用户菜单
      *
@@ -117,7 +127,7 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
      * @return
      */
     @Override
-    public List<SysUserRole> listByServiceId(Long serviceId) {
+    public List<String> listByServiceId(Long serviceId) {
         SysDingGroup sysDingGroup = sysDingGroupService.getOne(new QueryWrapper<SysDingGroup>().lambda().eq(SysDingGroup::getServiceId, serviceId));
         Optional.ofNullable(sysDingGroup).orElseThrow(() -> ExceptionResultEnum.SERVICE_DING_GROUP_NO_DATA.exception());
 
@@ -127,10 +137,28 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
         }
 
         List<Long> roleIsList = sysDingObjList.stream().map(s -> s.getRoleId()).collect(Collectors.toList());
-        List<SysUserRole> sysUserRoleList = this.list(new QueryWrapper<SysUserRole>().lambda().in(SysUserRole::getRoleId, roleIsList));
-        if (CollectionUtils.isEmpty(sysUserRoleList)) {
-            throw ExceptionResultEnum.SERVICE_DING_APPROVE_USER_NO_DATA.exception();
+        //首选查角色类型
+        List<SysRole> sysRoleList = sysRoleService.listByIds(roleIsList);
+        List<String> userIdList = new ArrayList<>();
+        for (SysRole s : sysRoleList) {
+            if (s.getType() == RoleTypeEnum.ADMIN || s.getType() == RoleTypeEnum.PMO) {
+                List<SysUserRole> sysUserRoleList = this.list(new QueryWrapper<SysUserRole>().lambda().in(SysUserRole::getRoleId, s.getId()));
+                List<String> adminIdOrPmoIdList = sysUserRoleList.stream().map(i -> String.valueOf(i.getUserId())).collect(Collectors.toList());
+                userIdList.addAll(adminIdOrPmoIdList);
+            } else if (s.getType() == RoleTypeEnum.BUSSINESS) {
+                List<TBService> tbServiceList = tbServiceService.listByIds(Arrays.asList(serviceId));
+                List<String> serviceLeadIdList = tbServiceList.stream().map(i -> String.valueOf(i.getServiceLeadId())).collect(Collectors.toList());
+                userIdList.addAll(serviceLeadIdList);
+            } else if (s.getType() == RoleTypeEnum.REGION_MANAGER) {
+                List<TBCrm> tbCrmList = tbCrmService.list(new QueryWrapper<TBCrm>().lambda().eq(TBCrm::getServiceId, serviceId));
+                List<String> leadIdList = tbCrmList.stream().map(i -> String.valueOf(i.getLeadId())).collect(Collectors.toList());
+                userIdList.addAll(leadIdList);
+            } else if (s.getType() == RoleTypeEnum.REGION_COORDINATOR) {
+                List<TBCrm> tbCrmList = tbCrmService.list(new QueryWrapper<TBCrm>().lambda().eq(TBCrm::getServiceId, serviceId));
+                List<String> regionCoordinatorIdList = tbCrmList.stream().map(i -> String.valueOf(i.getRegionCoordinatorId())).collect(Collectors.toList());
+                userIdList.addAll(regionCoordinatorIdList);
+            }
         }
-        return sysUserRoleList;
+        return userIdList;
     }
 }

+ 10 - 11
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingApplyServiceImpl.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.gson.reflect.TypeToken;
 import com.qmth.sop.business.activiti.service.ActivitiService;
-import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.params.FlowApproveParam;
 import com.qmth.sop.business.bean.result.*;
 import com.qmth.sop.business.entity.*;
@@ -93,10 +92,9 @@ public class TBDingApplyServiceImpl extends ServiceImpl<TBDingApplyMapper, TBDin
         CrmProjectResult crmProjectResult = tbCrmService.findCrmProjectBySopNoOrCrmNo(sopNo, crmNo);
         Optional.ofNullable(crmProjectResult).orElseThrow(() -> ExceptionResultEnum.CRM_NO_NO_DATA.exception());
 
-        List<SysUserRole> sysUserRoleList = sysUserRoleService.listByServiceId(crmProjectResult.getServiceUnitId());
-        Set<String> approveUserIdSet = sysUserRoleList.stream().map(s -> String.valueOf(s.getUserId())).collect(Collectors.toSet());
+        List<String> sysUserRoleList = sysUserRoleService.listByServiceId(crmProjectResult.getServiceUnitId());
         List<String> approveUserIds = new ArrayList<>();
-        approveUserIds.addAll(approveUserIdSet);
+        approveUserIds.addAll(sysUserRoleList);
         FlowApproveParam flowApproveParam = new FlowApproveParam(tbDingApply.getFlowDeploymentId(), FlowApprovePassEnum.START, approveUserIds, crmNo);
         flowApproveParam.setApproveRemark(FlowApprovePassEnum.START.getTitle());
         Map<String, Object> map = activitiService.taskApprove(flowApproveParam);
@@ -124,9 +122,10 @@ public class TBDingApplyServiceImpl extends ServiceImpl<TBDingApplyMapper, TBDin
     @Override
     public IPage<DingApplyUnDoneResult> flowTaskUnDoneList(IPage<Map> iPage, Long serviceId, String name, Long supplierId, String customName, Long startTime, Long endTime, Long applyStartTime, Long applyEndTime) throws Exception {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
+//        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
 
-        IPage<DingApplyUnDoneResult> dingApplyUnDoneResultIPage = this.baseMapper.flowTaskUnDoneList(iPage, Arrays.asList(String.valueOf(requestUser.getId())), serviceId, name, supplierId, customName, startTime, endTime, applyStartTime, applyEndTime, dpr);
+//        IPage<DingApplyUnDoneResult> dingApplyUnDoneResultIPage = this.baseMapper.flowTaskUnDoneList(iPage, Arrays.asList(String.valueOf(requestUser.getId())), serviceId, name, supplierId, customName, startTime, endTime, applyStartTime, applyEndTime, dpr);
+        IPage<DingApplyUnDoneResult> dingApplyUnDoneResultIPage = this.baseMapper.flowTaskUnDoneList(iPage, Arrays.asList(String.valueOf(requestUser.getId())), serviceId, name, supplierId, customName, startTime, endTime, applyStartTime, applyEndTime, null);
         if (Objects.nonNull(dingApplyUnDoneResultIPage) && !CollectionUtils.isEmpty(dingApplyUnDoneResultIPage.getRecords())) {
             for (DingApplyUnDoneResult d : dingApplyUnDoneResultIPage.getRecords()) {
                 if (Objects.nonNull(d.getAttachmentPaths())) {
@@ -176,9 +175,10 @@ public class TBDingApplyServiceImpl extends ServiceImpl<TBDingApplyMapper, TBDin
     @Override
     public IPage<DingApplyDoneResult> flowTaskDoneList(IPage<Map> iPage, Long serviceId, String name, Long supplierId, DingExceptionApproveEnum dingExceptionApprove, String customName, Long startTime, Long endTime, Long applyStartTime, Long applyEndTime) throws Exception {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
+//        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
 
-        IPage<DingApplyDoneResult> dingApplyDoneResultIPage = this.baseMapper.flowTaskDoneList(iPage, Arrays.asList(String.valueOf(requestUser.getId())), serviceId, name, supplierId, Objects.nonNull(dingExceptionApprove) ? dingExceptionApprove.getTitle() : null, customName, startTime, endTime, applyStartTime, applyEndTime, dpr);
+//        IPage<DingApplyDoneResult> dingApplyDoneResultIPage = this.baseMapper.flowTaskDoneList(iPage, Arrays.asList(String.valueOf(requestUser.getId())), serviceId, name, supplierId, Objects.nonNull(dingExceptionApprove) ? dingExceptionApprove.getTitle() : null, customName, startTime, endTime, applyStartTime, applyEndTime, dpr);
+        IPage<DingApplyDoneResult> dingApplyDoneResultIPage = this.baseMapper.flowTaskDoneList(iPage, Arrays.asList(String.valueOf(requestUser.getId())), serviceId, name, supplierId, Objects.nonNull(dingExceptionApprove) ? dingExceptionApprove.getTitle() : null, customName, startTime, endTime, applyStartTime, applyEndTime, null);
         if (Objects.nonNull(dingApplyDoneResultIPage) && !CollectionUtils.isEmpty(dingApplyDoneResultIPage.getRecords())) {
             for (DingApplyDoneResult d : dingApplyDoneResultIPage.getRecords()) {
                 if (Objects.nonNull(d.getAttachmentPaths())) {
@@ -316,10 +316,9 @@ public class TBDingApplyServiceImpl extends ServiceImpl<TBDingApplyMapper, TBDin
         Optional.ofNullable(crmProjectResult).orElseThrow(() -> ExceptionResultEnum.CRM_NO_NO_DATA.exception());
         Optional.ofNullable(crmProjectResult.getRegionCoordinatorId()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("crm区域协调人数据为空"));
 
-        List<SysUserRole> sysUserRoleList = sysUserRoleService.listByServiceId(crmProjectResult.getServiceUnitId());
-        Set<String> approveUserIdSet = sysUserRoleList.stream().map(s -> String.valueOf(s.getUserId())).collect(Collectors.toSet());
+        List<String> sysUserRoleList = sysUserRoleService.listByServiceId(crmProjectResult.getServiceUnitId());
         List<String> approveUserIds = new ArrayList<>();
-        approveUserIds.addAll(approveUserIdSet);
+        approveUserIds.addAll(sysUserRoleList);
         activitiService.taskApprove(new FlowApproveParam(taskId, FlowApprovePassEnum.PASS, approveUserIds, tfCustomFlowEntity.getCrmNo(), dingExceptionApprove.getTitle()));
 
         TBDingApplyService tbDingApplyService = SpringContextHolder.getBean(TBDingApplyService.class);

+ 3 - 1
sop-business/src/main/resources/mapper/TFFlowLogMapper.xml

@@ -44,12 +44,14 @@
                                         left join sys_org so on
                                         so.id = su.org_id
                                 where
-                                    su.id = tffl.approve_id),su.real_name) as approveUserName
+                                    su.id = tffl.approve_id),su.real_name) as approveUserName,
+                     aht.NAME_ as taskName
         from
             t_f_flow_log tffl
             left join sys_user su on su.id = tffl.approve_id
             left join sys_org so on so.id = su.org_id
             join t_f_custom_flow_entity tffe on tffe.id = tffl.object_id
+            left join act_hi_taskinst aht on aht.PROC_INST_ID_ = cast(tffl.flow_id as char) and aht.ID_ = cast(tffl.task_id as char)
         where
             tffl.object_id = #{objectId}
         order by