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

fix:sop相关乙方pmo数据权限

caozixuan 1 жил өмнө
parent
commit
942962a2c6

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DataPermissionDto.java

@@ -50,6 +50,10 @@ public class DataPermissionDto {
     @ApiModelProperty("是设备发货员?")
     @ApiModelProperty("是设备发货员?")
     private Boolean hasDeviceDelivery;
     private Boolean hasDeviceDelivery;
 
 
+    @ApiModelProperty("所管理的供应商id(hasThirdPmo、hasDeviceDelivery为true时必有值)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long supplierId;
+
     public Long getRequestUserId() {
     public Long getRequestUserId() {
         return requestUserId;
         return requestUserId;
     }
     }
@@ -153,4 +157,12 @@ public class DataPermissionDto {
     public void setHasDeviceDelivery(Boolean hasDeviceDelivery) {
     public void setHasDeviceDelivery(Boolean hasDeviceDelivery) {
         this.hasDeviceDelivery = hasDeviceDelivery;
         this.hasDeviceDelivery = hasDeviceDelivery;
     }
     }
+
+    public Long getSupplierId() {
+        return supplierId;
+    }
+
+    public void setSupplierId(Long supplierId) {
+        this.supplierId = supplierId;
+    }
 }
 }

+ 13 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/SysUserServiceImpl.java

@@ -555,6 +555,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (userId == null || userId == 0) {
         if (userId == null || userId == 0) {
             throw ExceptionResultEnum.ERROR.exception("无法获取当前登录人id");
             throw ExceptionResultEnum.ERROR.exception("无法获取当前登录人id");
         }
         }
+        SysUser sysUser = this.getById(userId);
+        if (Objects.isNull(sysUser)) {
+            throw ExceptionResultEnum.ERROR.exception("缺少用户信息");
+        }
+
         List<SysRole> sysRoleList = sysUserRoleService.listRoleByUserId(userId);
         List<SysRole> sysRoleList = sysUserRoleService.listRoleByUserId(userId);
         List<RoleTypeEnum> roleTypeList = sysRoleList.stream().map(SysRole::getType).distinct().collect(Collectors.toList());
         List<RoleTypeEnum> roleTypeList = sysRoleList.stream().map(SysRole::getType).distinct().collect(Collectors.toList());
         DataPermissionDto dto = new DataPermissionDto();
         DataPermissionDto dto = new DataPermissionDto();
@@ -571,6 +576,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         dto.setHasAccountManager(roleTypeList.contains(RoleTypeEnum.ACCOUNT_MANAGER));
         dto.setHasAccountManager(roleTypeList.contains(RoleTypeEnum.ACCOUNT_MANAGER));
         dto.setHasThirdPmo(roleTypeList.contains(RoleTypeEnum.THIRD_PMO));
         dto.setHasThirdPmo(roleTypeList.contains(RoleTypeEnum.THIRD_PMO));
         dto.setHasDeviceDelivery(roleTypeList.contains(RoleTypeEnum.DEVICE_DELIVERY));
         dto.setHasDeviceDelivery(roleTypeList.contains(RoleTypeEnum.DEVICE_DELIVERY));
+        if (dto.getHasThirdPmo() || dto.getHasDeviceDelivery()) {
+            Long supplierId = sysUser.getSupplierId();
+            if (supplierId == null || supplierId == 0) {
+                throw ExceptionResultEnum.ERROR.exception(
+                        String.format("包含[%s]或[%s]角色的用户,请先联系管理员在用户管理中绑定该用户所管辖的供应商.", RoleTypeEnum.THIRD_PMO.getDesc(),
+                                RoleTypeEnum.DEVICE_DELIVERY.getDesc()));
+            }
+        }
         return dto;
         return dto;
     }
     }
 
 

+ 20 - 6
sop-business/src/main/resources/mapper/TBDelayWarnMapper.xml

@@ -56,19 +56,33 @@
             </if>
             </if>
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <choose>
                 <choose>
-                    <when test="dpr.hasBusiness">
-                        AND s.service_lead_id = #{dpr.requestUserId}
+                    <when test="dpr.hasThirdPmo">
+                        AND EXISTS (
+                        SELECT
+                        1
+                        FROM
+                        t_b_user_archives_allocation tbuaa
+                        LEFT JOIN t_b_user_archives_supplier tbuas ON tbuaa.archives_id = tbuas.user_archives_id
+                        WHERE
+                        tbuas.supplier_id = #{dpr.supplierId} AND tbuaa.service_id = a.service_id)
                     </when>
                     </when>
                     <otherwise>
                     <otherwise>
                         <choose>
                         <choose>
-                            <when test="dpr.hasRegionManager">
-                                AND c.lead_id = #{dpr.requestUserId}
+                            <when test="dpr.hasBusiness">
+                                AND s.service_lead_id = #{dpr.requestUserId}
                             </when>
                             </when>
                             <otherwise>
                             <otherwise>
                                 <choose>
                                 <choose>
-                                    <when test="dpr.hasRegionCoordinator">
-                                        AND c.region_coordinator_id = #{dpr.requestUserId}
+                                    <when test="dpr.hasRegionManager">
+                                        AND c.lead_id = #{dpr.requestUserId}
                                     </when>
                                     </when>
+                                    <otherwise>
+                                        <choose>
+                                            <when test="dpr.hasRegionCoordinator">
+                                                AND c.region_coordinator_id = #{dpr.requestUserId}
+                                            </when>
+                                        </choose>
+                                    </otherwise>
                                 </choose>
                                 </choose>
                             </otherwise>
                             </otherwise>
                         </choose>
                         </choose>

+ 20 - 6
sop-business/src/main/resources/mapper/TBProjectExchangeMapper.xml

@@ -79,19 +79,33 @@
             </if>
             </if>
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <choose>
                 <choose>
-                    <when test="dpr.hasBusiness">
-                        AND tbs.service_lead_id = #{dpr.requestUserId}
+                    <when test="dpr.hasThirdPmo">
+                        AND EXISTS (
+                        SELECT
+                        1
+                        FROM
+                        t_b_user_archives_allocation tbuaa
+                        LEFT JOIN t_b_user_archives_supplier tbuas ON tbuaa.archives_id = tbuas.user_archives_id
+                        WHERE
+                        tbuas.supplier_id = #{dpr.supplierId} AND tbuaa.service_id = tbs.id)
                     </when>
                     </when>
                     <otherwise>
                     <otherwise>
                         <choose>
                         <choose>
-                            <when test="dpr.hasRegionManager">
-                                AND tbc.lead_id = #{dpr.requestUserId}
+                            <when test="dpr.hasBusiness">
+                                AND tbs.service_lead_id = #{dpr.requestUserId}
                             </when>
                             </when>
                             <otherwise>
                             <otherwise>
                                 <choose>
                                 <choose>
-                                    <when test="dpr.hasRegionCoordinator">
-                                        AND tbc.region_coordinator_id = #{dpr.requestUserId}
+                                    <when test="dpr.hasRegionManager">
+                                        AND tbc.lead_id = #{dpr.requestUserId}
                                     </when>
                                     </when>
+                                    <otherwise>
+                                        <choose>
+                                            <when test="dpr.hasRegionCoordinator">
+                                                AND tbc.region_coordinator_id = #{dpr.requestUserId}
+                                            </when>
+                                        </choose>
+                                    </otherwise>
                                 </choose>
                                 </choose>
                             </otherwise>
                             </otherwise>
                         </choose>
                         </choose>

+ 22 - 8
sop-business/src/main/resources/mapper/TBQualityProblemApplyMapper.xml

@@ -63,24 +63,38 @@
             </if>
             </if>
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <choose>
                 <choose>
-                    <when test="dpr.hasBusiness">
-                        AND tbs.service_lead_id = #{dpr.requestUserId}
+                    <when test="dpr.hasThirdPmo">
+                        AND EXISTS (
+                        SELECT
+                        1
+                        FROM
+                        t_b_user_archives_allocation tbuaa
+                        LEFT JOIN t_b_user_archives_supplier tbuas ON tbuaa.archives_id = tbuas.user_archives_id
+                        WHERE
+                        tbuas.supplier_id = #{dpr.supplierId} AND tbuaa.service_id = a.service_id)
                     </when>
                     </when>
                     <otherwise>
                     <otherwise>
                         <choose>
                         <choose>
-                            <when test="dpr.hasRegionManager">
-                                AND tbc.lead_id = #{dpr.requestUserId}
+                            <when test="dpr.hasBusiness">
+                                AND tbs.service_lead_id = #{dpr.requestUserId}
                             </when>
                             </when>
                             <otherwise>
                             <otherwise>
                                 <choose>
                                 <choose>
-                                    <when test="dpr.hasRegionCoordinator">
-                                        AND tbc.region_coordinator_id = #{dpr.requestUserId}
+                                    <when test="dpr.hasRegionManager">
+                                        AND tbc.lead_id = #{dpr.requestUserId}
                                     </when>
                                     </when>
                                     <otherwise>
                                     <otherwise>
                                         <choose>
                                         <choose>
-                                            <when test="dpr.hasEffectEngineer or dpr.hasAssistantEngineer">
-                                                AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbc.crm_no = tbuaa.crm_no AND tbuaa.user_id = #{dpr.requestUserId})
+                                            <when test="dpr.hasRegionCoordinator">
+                                                AND tbc.region_coordinator_id = #{dpr.requestUserId}
                                             </when>
                                             </when>
+                                            <otherwise>
+                                                <choose>
+                                                    <when test="dpr.hasEffectEngineer or dpr.hasAssistantEngineer">
+                                                        AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbc.crm_no = tbuaa.crm_no AND tbuaa.user_id = #{dpr.requestUserId})
+                                                    </when>
+                                                </choose>
+                                            </otherwise>
                                         </choose>
                                         </choose>
                                     </otherwise>
                                     </otherwise>
                                 </choose>
                                 </choose>

+ 22 - 8
sop-business/src/main/resources/mapper/TBServiceMapper.xml

@@ -69,24 +69,38 @@
             </if>
             </if>
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <choose>
                 <choose>
-                    <when test="dpr.hasBusiness">
-                        AND tbs.service_lead_id = #{dpr.requestUserId}
+                    <when test="dpr.hasThirdPmo">
+                        AND EXISTS (
+                        SELECT
+                        1
+                        FROM
+                        t_b_user_archives_allocation tbuaa
+                        LEFT JOIN t_b_user_archives_supplier tbuas ON tbuaa.archives_id = tbuas.user_archives_id
+                        WHERE
+                        tbuas.supplier_id = #{dpr.supplierId} AND tbuaa.service_id = tbs.id)
                     </when>
                     </when>
                     <otherwise>
                     <otherwise>
                         <choose>
                         <choose>
-                            <when test="dpr.hasRegionManager">
-                                AND EXISTS(SELECT 1 FROM t_b_crm tbc WHERE tbs.id = tbc.service_id AND tbc.lead_id = #{dpr.requestUserId})
+                            <when test="dpr.hasBusiness">
+                                AND tbs.service_lead_id = #{dpr.requestUserId}
                             </when>
                             </when>
                             <otherwise>
                             <otherwise>
                                 <choose>
                                 <choose>
-                                    <when test="dpr.hasRegionCoordinator">
-                                        AND EXISTS(SELECT 1 FROM t_b_crm tbc WHERE tbs.id = tbc.service_id AND tbc.region_coordinator_id = #{dpr.requestUserId})
+                                    <when test="dpr.hasRegionManager">
+                                        AND EXISTS(SELECT 1 FROM t_b_crm tbc WHERE tbs.id = tbc.service_id AND tbc.lead_id = #{dpr.requestUserId})
                                     </when>
                                     </when>
                                     <otherwise>
                                     <otherwise>
                                         <choose>
                                         <choose>
-                                            <when test="dpr.hasEffectEngineer or dpr.hasAssistantEngineer">
-                                                AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbuaa.service_id = tbs.id AND tbuaa.user_id = #{dpr.requestUserId})
+                                            <when test="dpr.hasRegionCoordinator">
+                                                AND EXISTS(SELECT 1 FROM t_b_crm tbc WHERE tbs.id = tbc.service_id AND tbc.region_coordinator_id = #{dpr.requestUserId})
                                             </when>
                                             </when>
+                                            <otherwise>
+                                                <choose>
+                                                    <when test="dpr.hasEffectEngineer or dpr.hasAssistantEngineer">
+                                                        AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbuaa.service_id = tbs.id AND tbuaa.user_id = #{dpr.requestUserId})
+                                                    </when>
+                                                </choose>
+                                            </otherwise>
                                         </choose>
                                         </choose>
                                     </otherwise>
                                     </otherwise>
                                 </choose>
                                 </choose>

+ 22 - 8
sop-business/src/main/resources/mapper/TBSopInfoMapper.xml

@@ -107,24 +107,38 @@
             </if>
             </if>
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <choose>
                 <choose>
-                    <when test="dpr.hasBusiness">
-                        AND tbs.service_lead_id = #{dpr.requestUserId}
+                    <when test="dpr.hasThirdPmo">
+                        AND EXISTS (
+                        SELECT
+                        1
+                        FROM
+                        t_b_user_archives_allocation tbuaa
+                        LEFT JOIN t_b_user_archives_supplier tbuas ON tbuaa.archives_id = tbuas.user_archives_id
+                        WHERE
+                        tbuas.supplier_id = #{dpr.supplierId} AND tbuaa.service_id = tbs.id)
                     </when>
                     </when>
                     <otherwise>
                     <otherwise>
                         <choose>
                         <choose>
-                            <when test="dpr.hasRegionManager">
-                                AND tbc.lead_id = #{dpr.requestUserId}
+                            <when test="dpr.hasBusiness">
+                                AND tbs.service_lead_id = #{dpr.requestUserId}
                             </when>
                             </when>
                             <otherwise>
                             <otherwise>
                                 <choose>
                                 <choose>
-                                    <when test="dpr.hasRegionCoordinator">
-                                        AND tbc.region_coordinator_id = #{dpr.requestUserId}
+                                    <when test="dpr.hasRegionManager">
+                                        AND tbc.lead_id = #{dpr.requestUserId}
                                     </when>
                                     </when>
                                     <otherwise>
                                     <otherwise>
                                         <choose>
                                         <choose>
-                                            <when test="dpr.hasEffectEngineer or dpr.hasAssistantEngineer">
-                                                AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbc.crm_no = tbuaa.crm_no AND tbuaa.user_id = #{dpr.requestUserId})
+                                            <when test="dpr.hasRegionCoordinator">
+                                                AND tbc.region_coordinator_id = #{dpr.requestUserId}
                                             </when>
                                             </when>
+                                            <otherwise>
+                                                <choose>
+                                                    <when test="dpr.hasEffectEngineer or dpr.hasAssistantEngineer">
+                                                        AND EXISTS(SELECT 1 FROM t_b_user_archives_allocation tbuaa WHERE tbc.crm_no = tbuaa.crm_no AND tbuaa.user_id = #{dpr.requestUserId})
+                                                    </when>
+                                                </choose>
+                                            </otherwise>
                                         </choose>
                                         </choose>
                                     </otherwise>
                                     </otherwise>
                                 </choose>
                                 </choose>

+ 20 - 6
sop-business/src/main/resources/mapper/TBViolationMapper.xml

@@ -54,19 +54,33 @@
             </if>
             </if>
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
             <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <choose>
                 <choose>
-                    <when test="dpr.hasBusiness">
-                        AND s.service_lead_id = #{dpr.requestUserId}
+                    <when test="dpr.hasThirdPmo">
+                        AND EXISTS (
+                        SELECT
+                        1
+                        FROM
+                        t_b_user_archives_allocation tbuaa
+                        LEFT JOIN t_b_user_archives_supplier tbuas ON tbuaa.archives_id = tbuas.user_archives_id
+                        WHERE
+                        tbuas.supplier_id = #{dpr.supplierId} AND tbuaa.service_id = a.service_id)
                     </when>
                     </when>
                     <otherwise>
                     <otherwise>
                         <choose>
                         <choose>
-                            <when test="dpr.hasRegionManager">
-                                AND c.lead_id = #{dpr.requestUserId}
+                            <when test="dpr.hasBusiness">
+                                AND s.service_lead_id = #{dpr.requestUserId}
                             </when>
                             </when>
                             <otherwise>
                             <otherwise>
                                 <choose>
                                 <choose>
-                                    <when test="dpr.hasRegionCoordinator">
-                                        AND c.region_coordinator_id = #{dpr.requestUserId}
+                                    <when test="dpr.hasRegionManager">
+                                        AND c.lead_id = #{dpr.requestUserId}
                                     </when>
                                     </when>
+                                    <otherwise>
+                                        <choose>
+                                            <when test="dpr.hasRegionCoordinator">
+                                                AND c.region_coordinator_id = #{dpr.requestUserId}
+                                            </when>
+                                        </choose>
+                                    </otherwise>
                                 </choose>
                                 </choose>
                             </otherwise>
                             </otherwise>
                         </choose>
                         </choose>