Эх сурвалжийг харах

项目计划变更数据权限修改

wangliang 1 жил өмнө
parent
commit
913b614ae1

+ 17 - 11
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBProjectExchangeServiceImpl.java

@@ -155,17 +155,23 @@ public class TBProjectExchangeServiceImpl extends ServiceImpl<TBProjectExchangeM
                         .collect(Collectors.toList());
                 p.setApproveUsersName(StringUtils.join(userName, SystemConstant.LIST_JOIN_SPLIT));
             }
-            if (Objects.nonNull(p.getTaskId())) {
-                Task task = taskService.createTaskQuery().taskId(String.valueOf(p.getTaskId())).singleResult();
-                if (Objects.nonNull(task.getAssignee()) && task.getAssignee().equals(requestUser.getId().toString())) {
-                    p.setMyself(true);
-                } else {
-                    List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(task.getId());
-                    if (!CollectionUtils.isEmpty(identityLinkList)) {
-                        for (IdentityLink i : identityLinkList) {
-                            if (Objects.nonNull(i.getUserId()) && i.getUserId()
-                                    .equals(requestUser.getId().toString())) {
-                                p.setMyself(true);
+            List<Task> taskList = taskService.createTaskQuery().processInstanceId(String.valueOf(p.getFlowId())).list();
+            if (!CollectionUtils.isEmpty(taskList)) {
+                for (Task task : taskList) {
+                    if (Objects.nonNull(task.getAssignee()) && task.getAssignee()
+                            .equals(requestUser.getId().toString())) {
+                        p.setMyself(true);
+                        p.setTaskId(Long.parseLong(task.getId()));
+                        break;
+                    } else {
+                        List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(task.getId());
+                        if (!CollectionUtils.isEmpty(identityLinkList)) {
+                            for (IdentityLink i : identityLinkList) {
+                                if (i.getUserId().equals(requestUser.getId().toString())) {
+                                    p.setMyself(true);
+                                    p.setTaskId(Long.parseLong(task.getId()));
+                                    break;
+                                }
                             }
                         }
                     }

+ 17 - 2
sop-business/src/main/resources/mapper/TBProjectExchangeMapper.xml

@@ -44,6 +44,7 @@
                  left join t_b_service tbs on tbs.id = tbc.service_id
                  left join sys_custom sc on sc.id = tbc.custom_id
                  left join sys_user su ON tbpe.create_id = su.id
+                 left join t_b_crm_detail tbcd on tbcd.sop_no = tbpe.sop_no
         <where> 1 = 1
             and IF(tbs.`status` = 'PUBLISH', 1 = 1, 1 <![CDATA[ <> ]]> 1)
             <if test="serviceId != null and serviceId != ''">
@@ -101,9 +102,23 @@
                                     </when>
                                     <otherwise>
                                         <choose>
-                                            <when test="dpr.hasRegionCoordinator">
-                                                AND tbc.region_coordinator_id = #{dpr.requestUserId}
+                                            <when test="dpr.hasProjectManager">
+                                                AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbuaa.crm_detail_id = tbcd.id AND tbuaa.user_id = #{dpr.requestUserId} and tbuaa.sop_role_type = 'PROJECT_MANAGER')
                                             </when>
+                                            <otherwise>
+                                                <choose>
+                                                    <when test="dpr.hasRegionCoordinator">
+                                                        AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbuaa.crm_detail_id = tbcd.id AND tbuaa.user_id = #{dpr.requestUserId} and tbuaa.sop_role_type = 'REGION_COORDINATOR')
+                                                    </when>
+                                                    <otherwise>
+                                                        <choose>
+                                                            <when test="dpr.hasEffectEngineer or dpr.hasAssistantEngineer">
+                                                                AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbuaa.crm_detail_id = tbcd.id AND tbuaa.user_id = #{dpr.requestUserId} and tbuaa.sop_role_type = 'ENGINEER')
+                                                            </when>
+                                                        </choose>
+                                                    </otherwise>
+                                                </choose>
+                                            </otherwise>
                                         </choose>
                                     </otherwise>
                                 </choose>

+ 0 - 1
sop-business/src/main/resources/mapper/TBSopInfoMapper.xml

@@ -162,7 +162,6 @@
                                             <otherwise>
                                                 <choose>
                                                     <when test="dpr.hasRegionCoordinator">
-                                                        --AND tbc.region_coordinator_id = #{dpr.requestUserId}
                                                         AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbuaa.crm_detail_id = tbcd.id AND tbuaa.user_id = #{dpr.requestUserId} and tbuaa.sop_role_type = 'REGION_COORDINATOR')
                                                     </when>
                                                     <otherwise>