caozixuan пре 1 година
родитељ
комит
65c1bd6502

+ 1 - 1
sop-api/src/main/java/com/qmth/sop/server/api/SysController.java

@@ -548,7 +548,7 @@ public class SysController {
         if (name != null && name.length() > 0) {
             queryWrapper.lambda().like(TBService::getName, SystemConstant.translateSpecificSign(name));
         }
-        if (dpr.getHasBusiness()) {
+        if (!dpr.getHasAdmin() && !dpr.getHasPmo() && dpr.getHasBusiness()) {
             queryWrapper.lambda().eq(TBService::getServiceLeadId, dpr.getRequestUserId());
         }
         List<TBService> tbServiceList = tbServiceService.list(queryWrapper);

+ 13 - 4
sop-business/src/main/java/com/qmth/sop/business/mapper/TBDeviceInOutMapper.java

@@ -3,6 +3,7 @@ package com.qmth.sop.business.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.result.DeviceInOutResult;
 import com.qmth.sop.business.entity.TBDeviceInOut;
 import com.qmth.sop.common.enums.DeviceStatusEnum;
@@ -36,6 +37,7 @@ public interface TBDeviceInOutMapper extends BaseMapper<TBDeviceInOut> {
      * @param location       当前地
      * @param address        发往地
      * @param serialNo       登记流水号
+     * @param dpr            数据权限
      * @return 分页结果
      */
     IPage<DeviceInOutResult> findDeviceInOutPageBySop(@Param("iPage") Page<DeviceInOutResult> iPage,
@@ -49,7 +51,8 @@ public interface TBDeviceInOutMapper extends BaseMapper<TBDeviceInOut> {
                                                       @Param("customName") String customName,
                                                       @Param("location") String location,
                                                       @Param("address") String address,
-                                                      @Param("serialNo") String serialNo);
+                                                      @Param("serialNo") String serialNo,
+                                                      @Param("dpr") DataPermissionDto dpr);
 
     /**
      * 资源保障-设备保障-出入库登记查询
@@ -66,6 +69,7 @@ public interface TBDeviceInOutMapper extends BaseMapper<TBDeviceInOut> {
      * @param location       当前地
      * @param address        发往地
      * @param serialNo       登记流水号
+     * @param dpr            数据权限
      * @return 分页结果
      */
     IPage<DeviceInOutResult> findDeviceInOutPageBySource(@Param("iPage") Page<DeviceInOutResult> iPage,
@@ -79,7 +83,8 @@ public interface TBDeviceInOutMapper extends BaseMapper<TBDeviceInOut> {
                                                          @Param("customName") String customName,
                                                          @Param("location") String location,
                                                          @Param("address") String address,
-                                                         @Param("serialNo") String serialNo);
+                                                         @Param("serialNo") String serialNo,
+                                                         @Param("dpr") DataPermissionDto dpr);
 
     /**
      * 查询可出库设备信息
@@ -87,11 +92,13 @@ public interface TBDeviceInOutMapper extends BaseMapper<TBDeviceInOut> {
      * @param supplierId 供应商id
      * @param status     设备状态 -- 正常
      * @param inOutType  设备最后一次出入库记录状态 -- 入库
+     * @param dpr        数据权限
      * @return 可出库设备信息
      */
     List<DeviceInOutResult> findDeviceCanOutInfo(@Param("supplierId") Long supplierId,
                                                  @Param("status") DeviceStatusEnum status,
-                                                 @Param("inOutType") InOutTypeEnum inOutType);
+                                                 @Param("inOutType") InOutTypeEnum inOutType,
+                                                 @Param("dpr") DataPermissionDto dpr);
 
 
     /**
@@ -100,9 +107,11 @@ public interface TBDeviceInOutMapper extends BaseMapper<TBDeviceInOut> {
      * @param supplierId 供应商id
      * @param inOutType  设备最后一次出入库记录状态 -- 出库
      * @param crmNo      派单号
+     * @param dpr        数据权限
      * @return 可入库设备信息
      */
     List<DeviceInOutResult> findDeviceCanInInfo(@Param("supplierId") Long supplierId,
                                                 @Param("inOutType") InOutTypeEnum inOutType,
-                                                @Param("crmNo") String crmNo);
+                                                @Param("crmNo") String crmNo,
+                                                @Param("dpr") DataPermissionDto dpr);
 }

+ 7 - 2
sop-business/src/main/java/com/qmth/sop/business/mapper/TBUserArchivesAllocationMapper.java

@@ -2,6 +2,7 @@ package com.qmth.sop.business.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.result.CrmArchivesAllocationResult;
 import com.qmth.sop.business.bean.result.SysLogResult;
 import com.qmth.sop.business.bean.result.UserArchivesAllocationResult;
@@ -30,6 +31,7 @@ public interface TBUserArchivesAllocationMapper extends BaseMapper<TBUserArchive
      * @param area          县
      * @param customName    客户名称
      * @param gap           差额
+     * @param dpr           数据权限
      * @return 分页查询结果
      */
     IPage<UserArchivesAllocationResult> findCrmAllocationPage(@Param("iPage") Page<SysLogResult> iPage,
@@ -38,7 +40,8 @@ public interface TBUserArchivesAllocationMapper extends BaseMapper<TBUserArchive
                                                               @Param("city") String city,
                                                               @Param("area") String area,
                                                               @Param("customName") String customName,
-                                                              @Param("gap") Integer gap);
+                                                              @Param("gap") Integer gap,
+                                                              @Param("dpr") DataPermissionDto dpr);
 
     /**
      * 查询派单档案分配 派单小计列表
@@ -50,6 +53,7 @@ public interface TBUserArchivesAllocationMapper extends BaseMapper<TBUserArchive
      * @param customName    客户名称
      * @param gap           差额
      * @param crmIdList     派单id集合
+     * @param dpr           数据权限
      * @return 查询结果
      */
     List<UserArchivesAllocationResult> findCrmAllocationSubTotal(@Param("serviceUnitId") Long serviceUnitId,
@@ -58,7 +62,8 @@ public interface TBUserArchivesAllocationMapper extends BaseMapper<TBUserArchive
                                                                  @Param("area") String area,
                                                                  @Param("customName") String customName,
                                                                  @Param("gap") Integer gap,
-                                                                 @Param("crmIdList") List<Long> crmIdList);
+                                                                 @Param("crmIdList") List<Long> crmIdList,
+                                                                 @Param("dpr") DataPermissionDto dpr);
 
     List<CrmArchivesAllocationResult> findAllocationByCrmNo(@Param("crmNo") String crmNo);
 }

+ 18 - 4
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDeviceInOutServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.params.DeviceInOutForm;
 import com.qmth.sop.business.bean.params.DeviceInOutSubmitParam;
 import com.qmth.sop.business.bean.result.DeviceInOutResult;
@@ -13,6 +14,7 @@ import com.qmth.sop.business.entity.TBDeviceInOut;
 import com.qmth.sop.business.mapper.TBDeviceInOutMapper;
 import com.qmth.sop.business.service.SequenceService;
 import com.qmth.sop.business.service.SysDeviceService;
+import com.qmth.sop.business.service.SysUserService;
 import com.qmth.sop.business.service.TBDeviceInOutService;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.*;
@@ -39,6 +41,8 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
     private SysDeviceService sysDeviceService;
     @Resource
     private SequenceService sequenceService;
+    @Resource
+    private SysUserService sysUserService;
 
     @Override
     public IPage<DeviceInOutResult> findDeviceInOutPageBySop(Long serviceUnitId, DeviceUsageTypeEnum usageType, Long userId, DeviceStatusEnum deviceStatus, Long inOutTimeStart, Long inOutTimeEnd, String deviceNo, String customName, String location, String address, String serialNo, Integer pageNumber, Integer pageSize) {
@@ -48,18 +52,25 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
         address = SystemConstant.translateSpecificSign(address);
         serialNo = SystemConstant.translateSpecificSign(serialNo);
 
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
+
         return this.baseMapper.findDeviceInOutPageBySop(new Page<>(pageNumber, pageSize), serviceUnitId, usageType,
-                userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, customName, location, address, serialNo);
+                userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, customName, location, address, serialNo, dpr);
     }
 
     @Override
     public List<DeviceInOutResult> findDeviceCanOutInfo(Long supplierId) {
-        return this.baseMapper.findDeviceCanOutInfo(supplierId, DeviceStatusEnum.NORMAL, InOutTypeEnum.IN);
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
+        return this.baseMapper.findDeviceCanOutInfo(supplierId, DeviceStatusEnum.NORMAL, InOutTypeEnum.IN, dpr);
     }
 
     @Override
     public List<DeviceInOutResult> findDeviceCanInInfo(Long supplierId, String crmNo) {
-        return this.baseMapper.findDeviceCanInInfo(supplierId, InOutTypeEnum.OUT, crmNo);
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
+        return this.baseMapper.findDeviceCanInInfo(supplierId, InOutTypeEnum.OUT, crmNo, dpr);
     }
 
 
@@ -135,7 +146,10 @@ public class TBDeviceInOutServiceImpl extends ServiceImpl<TBDeviceInOutMapper, T
         address = SystemConstant.translateSpecificSign(address);
         serialNo = SystemConstant.translateSpecificSign(serialNo);
 
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
+
         return this.baseMapper.findDeviceInOutPageBySource(new Page<>(pageNumber, pageSize), serviceUnitId, usageType,
-                userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, customName, location, address, serialNo);
+                userId, deviceStatus, inOutTimeStart, inOutTimeEnd, deviceNo, customName, location, address, serialNo, dpr);
     }
 }

+ 16 - 4
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBUserArchivesAllocationServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.sop.business.activiti.service.ActivitiService;
+import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.params.AllocationParam;
 import com.qmth.sop.business.bean.params.AutoAllocationParam;
 import com.qmth.sop.business.bean.params.SopPublishParam;
@@ -16,6 +17,7 @@ import com.qmth.sop.business.service.*;
 import com.qmth.sop.common.base.BaseEntity;
 import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.*;
+import com.qmth.sop.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -51,23 +53,33 @@ public class TBUserArchivesAllocationServiceImpl extends ServiceImpl<TBUserArchi
     private TFCustomFlowService tfCustomFlowService;
     @Resource
     private ActivitiService activitiService;
+    @Resource
+    private SysUserService sysUserService;
 
     @Override
     public IPage<UserArchivesAllocationResult> findCrmAllocationPage(Long serviceUnitId, String province, String city, String area, String customName, Integer gap, Integer pageNumber, Integer pageSize) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        Long userId = requestUser.getId();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(userId);
+
         province = SystemConstant.translateSpecificSign(province);
         city = SystemConstant.translateSpecificSign(city);
         area = SystemConstant.translateSpecificSign(area);
         customName = SystemConstant.translateSpecificSign(customName);
-        return this.baseMapper.findCrmAllocationPage(new Page<>(pageNumber, pageSize), serviceUnitId, province, city, area, customName, gap);
+        return this.baseMapper.findCrmAllocationPage(new Page<>(pageNumber, pageSize), serviceUnitId, province, city, area, customName, gap, dpr);
     }
 
     @Override
     public UserArchivesAllocationSubTotalResult findCrmAllocationSubTotal(Long serviceUnitId, String province, String city, String area, String customName, Integer gap) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        Long userId = requestUser.getId();
+        DataPermissionDto dpr = sysUserService.buildUserDataPermission(userId);
+
         province = SystemConstant.translateSpecificSign(province);
         city = SystemConstant.translateSpecificSign(city);
         area = SystemConstant.translateSpecificSign(area);
         customName = SystemConstant.translateSpecificSign(customName);
-        List<UserArchivesAllocationResult> list = this.baseMapper.findCrmAllocationSubTotal(serviceUnitId, province, city, area, customName, gap, null);
+        List<UserArchivesAllocationResult> list = this.baseMapper.findCrmAllocationSubTotal(serviceUnitId, province, city, area, customName, gap, null, dpr);
         Integer publishedCrmCount = Math.toIntExact(list.stream().filter(e -> CrmStatusEnum.PUBLISH.equals(e.getCrmStatus())).count());
         Integer totalCrmCount = list.size();
 
@@ -216,7 +228,7 @@ public class TBUserArchivesAllocationServiceImpl extends ServiceImpl<TBUserArchi
     public void autoEditCrmAllocationBatch(AutoAllocationParam autoAllocationParam) {
         Long serviceUnitId = autoAllocationParam.getServiceUnitId();
         List<Long> crmIdList = autoAllocationParam.getCrmIdList();
-        List<UserArchivesAllocationResult> crmSourceList = this.baseMapper.findCrmAllocationSubTotal(serviceUnitId, null, null, null, null, null, crmIdList);
+        List<UserArchivesAllocationResult> crmSourceList = this.baseMapper.findCrmAllocationSubTotal(serviceUnitId, null, null, null, null, null, crmIdList, null);
         // crm按照差额倒序
         crmSourceList = crmSourceList.stream().filter(e -> e.getUnDistributed() > 0)
                 .sorted(Comparator.comparing(UserArchivesAllocationResult::getUnDistributed).reversed())
@@ -395,7 +407,7 @@ public class TBUserArchivesAllocationServiceImpl extends ServiceImpl<TBUserArchi
         Long crmId = tbCrm.getId();
         List<Long> crmIdList = new ArrayList<>();
         crmIdList.add(crmId);
-        List<UserArchivesAllocationResult> crmSourceList = this.baseMapper.findCrmAllocationSubTotal(serviceUnitId, null, null, null, null, null, crmIdList);
+        List<UserArchivesAllocationResult> crmSourceList = this.baseMapper.findCrmAllocationSubTotal(serviceUnitId, null, null, null, null, null, crmIdList, null);
         if (CollectionUtils.isEmpty(crmSourceList)) {
             throw ExceptionResultEnum.ERROR.exception("未找到派单信息");
         } else if (crmSourceList.size() > 1) {

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

@@ -47,7 +47,7 @@
                     </otherwise>
                 </choose>
             </if>
-            <if test="dpr != null">
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <if test="dpr.hasBusiness">
                     AND tbs.service_lead_id = #{dpr.requestUserId}
                 </if>
@@ -101,7 +101,7 @@
                     </otherwise>
                 </choose>
             </if>
-            <if test="dpr != null">
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
                 <if test="dpr.hasBusiness">
                     AND tbs.service_lead_id = #{dpr.requestUserId}
                 </if>

+ 10 - 0
sop-business/src/main/resources/mapper/TBDeviceInOutMapper.xml

@@ -68,6 +68,11 @@
             <if test="serialNo != null and serialNo != ''">
                 AND tbdio.serial_no LIKE CONCAT('%',#{serialNo},'%')
             </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <if test="dpr.hasBusiness">
+                    AND tbs.service_lead_id = #{dpr.requestUserId}
+                </if>
+            </if>
         </where>
         ORDER BY tbs.id DESC,tbdio.in_out_time
     </select>
@@ -137,6 +142,11 @@
             <if test="serialNo != null and serialNo != ''">
                 AND tbdio.serial_no LIKE CONCAT('%',#{serialNo},'%')
             </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <if test="dpr.hasBusiness">
+                    AND tbs.service_lead_id = #{dpr.requestUserId}
+                </if>
+            </if>
         </where>
         ORDER BY tbs.id DESC,tbdio.in_out_time
     </select>

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

@@ -37,7 +37,7 @@
                 AND tbs.status != #{serviceStatus}
             </if>
             <if test="dpr != null">
-                <if test="dpr.hasBusiness">
+                <if test="!dpr.hasAdmin and !dpr.hasPmo and dpr.hasBusiness">
                     AND tbs.service_lead_id = #{dpr.requestUserId}
                 </if>
             </if>

+ 32 - 2
sop-business/src/main/resources/mapper/TBUserArchivesAllocationMapper.xml

@@ -6,6 +6,7 @@
             resultType="com.qmth.sop.business.bean.result.UserArchivesAllocationResult">
         SELECT
             *,
+            (result.effectQuota + result.assistantQuota + result.coordinatorDistributed) AS quota,
             (result.coordinatorUnDistributed + result.effectUnDistributed + result.assistantUnDistributed) AS unDistributed
         FROM
             (SELECT
@@ -31,7 +32,9 @@
                  IF(tbc.region_coordinator_id IS NULL, 1, 0) AS coordinatorUnDistributed,
                  IF(IFNULL(effectQ.quota, 0) - IFNULL(effectR.reality, 0) &lt; 0, 0, IFNULL(effectQ.quota, 0) - IFNULL(effectR.reality, 0)) AS effectUnDistributed,
                  IF(IFNULL(assistantQ.quota, 0) - IFNULL(assistantR.reality, 0) &lt; 0, 0, IFNULL(assistantQ.quota, 0) - IFNULL(assistantR.reality, 0)) AS assistantUnDistributed,
-                 tbc.status AS status
+                 tbc.status AS crmStatus,
+                 tbs.service_lead_id AS serviceUnitLeaderId,
+                 tbc.lead_id AS regionManagerId
              FROM
                  t_b_crm tbc
                      LEFT JOIN t_b_service tbs ON tbc.service_id = tbs.id
@@ -87,6 +90,18 @@
             <if test="gap != null">
                 AND (result.coordinatorUnDistributed + result.effectUnDistributed + result.assistantUnDistributed) &lt;= #{gap}
             </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <choose>
+                    <when test="dpr.hasBusiness">
+                        AND result.serviceUnitLeaderId = #{dpr.requestUserId}
+                    </when>
+                    <otherwise>
+                        <if test="dpr.hasRegionManager">
+                            AND result.regionManagerId = #{dpr.requestUserId}
+                        </if>
+                    </otherwise>
+                </choose>
+            </if>
         </where>
         ORDER BY result.serviceUnitId DESC, result.crmId DESC
     </select>
@@ -94,6 +109,7 @@
             resultType="com.qmth.sop.business.bean.result.UserArchivesAllocationResult">
         SELECT
             *,
+            (result.effectQuota + result.assistantQuota + result.coordinatorDistributed) AS quota,
             (result.coordinatorUnDistributed + result.effectUnDistributed + result.assistantUnDistributed) AS unDistributed
         FROM
             (SELECT
@@ -120,7 +136,9 @@
                 IF(tbc.region_coordinator_id IS NULL, 1, 0) AS coordinatorUnDistributed,
                 IF(IFNULL(effectQ.quota, 0) - IFNULL(effectR.reality, 0) &lt; 0, 0, IFNULL(effectQ.quota, 0) - IFNULL(effectR.reality, 0)) AS effectUnDistributed,
                 IF(IFNULL(assistantQ.quota, 0) - IFNULL(assistantR.reality, 0) &lt; 0, 0, IFNULL(assistantQ.quota, 0) - IFNULL(assistantR.reality, 0)) AS assistantUnDistributed,
-                tbc.status AS status
+                tbc.status AS crmStatus,
+                tbs.service_lead_id AS serviceUnitLeaderId,
+                tbc.lead_id AS regionManagerId
              FROM
                  t_b_crm tbc
                      LEFT JOIN t_b_service tbs ON tbc.service_id = tbs.id
@@ -183,6 +201,18 @@
                 </foreach>
                 )
             </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <choose>
+                    <when test="dpr.hasBusiness">
+                        AND result.serviceUnitLeaderId = #{dpr.requestUserId}
+                    </when>
+                    <otherwise>
+                        <if test="dpr.hasRegionManager">
+                            AND result.regionManagerId = #{dpr.requestUserId}
+                        </if>
+                    </otherwise>
+                </choose>
+            </if>
         </where>
     </select>
     <select id="findAllocationByCrmNo"