Răsfoiți Sursa

add:服务单元查询

caozixuan 1 an în urmă
părinte
comite
0ce03ab207

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

@@ -610,21 +610,6 @@ public class SysController {
                                    @ApiParam(value = "服务单元名称") @RequestParam(required = false) String name) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionDto dpr = sysUserService.buildUserDataPermission(requestUser.getId());
-
-        QueryWrapper<TBService> queryWrapper = new QueryWrapper<>();
-        if (Objects.nonNull(type)) {
-            queryWrapper.lambda().eq(TBService::getType, type);
-        }
-        if (!CollectionUtils.isEmpty(statusList)) {
-            queryWrapper.lambda().in(TBService::getStatus, statusList);
-        }
-        if (name != null && name.length() > 0) {
-            queryWrapper.lambda().like(TBService::getName, SystemConstant.translateSpecificSign(name));
-        }
-        if (!dpr.getHasAdmin() && !dpr.getHasPmo() && dpr.getHasBusiness()) {
-            queryWrapper.lambda().eq(TBService::getServiceLeadId, dpr.getRequestUserId());
-        }
-        List<TBService> tbServiceList = tbServiceService.list(queryWrapper);
-        return ResultUtil.ok(tbServiceList);
+        return ResultUtil.ok(tbServiceService.queryServiceUnit(type, statusList, name, dpr));
     }
 }

+ 18 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBServiceMapper.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.ServiceUnitResult;
 import com.qmth.sop.business.bean.result.SysLogResult;
 import com.qmth.sop.business.entity.TBService;
@@ -10,6 +11,9 @@ import com.qmth.sop.common.enums.ProductTypeEnum;
 import com.qmth.sop.common.enums.ServiceStatusEnum;
 import org.apache.ibatis.annotations.Param;
 
+import javax.xml.ws.Service;
+import java.util.List;
+
 /**
  * <p>
  * 服务单元表 Mapper 接口
@@ -39,4 +43,18 @@ public interface TBServiceMapper extends BaseMapper<TBService> {
                                                  @Param("createEndTime") Long creatEndTime,
                                                  @Param("serviceUnitName") String serviceUnitName);
 
+    /**
+     * 查询服务单元
+     *
+     * @param type       产品类型
+     * @param statusList 状态集合
+     * @param name       服务单元名称
+     * @param dpr        数据权限
+     * @return 服务单元
+     */
+    List<TBService> queryServiceUnit(@Param("type") ProductTypeEnum type,
+                                     @Param("statusList") List<ServiceStatusEnum> statusList,
+                                     @Param("name") String name,
+                                     @Param("dpr") DataPermissionDto dpr);
+
 }

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/service/TBServiceService.java

@@ -2,6 +2,7 @@ package com.qmth.sop.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.sop.business.bean.dto.DataPermissionDto;
 import com.qmth.sop.business.bean.params.ServiceUnitParam;
 import com.qmth.sop.business.bean.result.ServiceUnitResult;
 import com.qmth.sop.business.entity.SysUser;
@@ -76,4 +77,15 @@ public interface TBServiceService extends IService<TBService> {
      */
     @Deprecated
     void restartServiceUnit(Long serviceUnitId);
+
+    /**
+     * 查询服务单元
+     *
+     * @param type       业务类型
+     * @param statusList 状态集
+     * @param name       服务单元名称
+     * @param dpr        数据权限
+     * @return 服务单元
+     */
+    List<TBService> queryServiceUnit(ProductTypeEnum type, List<ServiceStatusEnum> statusList, String name, DataPermissionDto dpr);
 }

+ 11 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingServiceImpl.java

@@ -70,6 +70,10 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
     public DingElementResult findDingElements(String sopNo, Long userId) {
 
         SopCrmInfo sopCrmInfo = tbCrmService.findSopCrmInfoBySop(sopNo);
+        if (Objects.isNull(sopCrmInfo)) {
+            throw ExceptionResultEnum.ERROR.exception(String.format("未找到sop单号为[%s]的派单信息", sopNo));
+        }
+
         Long serviceUnitId = sopCrmInfo.getServiceUnitId();
 
         DingElementResult dingElementResult = this.findDingRule(userId, serviceUnitId);
@@ -174,6 +178,7 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
             }
 
             String endDate = dateFormDto.getEndDate();
+            endDate = endDate.substring(5);
 
             for (String date : dateFormList) {
                 String year = date.substring(0, 4);
@@ -232,6 +237,10 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
     public void dingSave(DingSaveParam dingSaveParam, Long userId) throws IOException {
         String sopNo = dingSaveParam.getSopNo();
         SopCrmInfo sopCrmInfo = tbCrmService.findSopCrmInfoBySop(sopNo);
+        if (Objects.isNull(sopCrmInfo)) {
+            throw ExceptionResultEnum.ERROR.exception(String.format("未找到sop单号为[%s]的派单信息", sopNo));
+        }
+
         Long serviceUnitId = sopCrmInfo.getServiceUnitId();
         DingElementResult dingElementResult = this.findDingRule(userId, serviceUnitId);
         if (Objects.isNull(dingElementResult)) {
@@ -503,9 +512,9 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
 
     @Override
     public int findRemainCount(Long userId, String sopNo) {
-        // TODO: 2023/11/8 查明为什么会有sop找不到对应的派单 
+        // TODO: 2023/11/8 查明为什么会有sop找不到对应的派单 (脏数据)
         SopCrmInfo sopCrmInfo = tbCrmService.findSopCrmInfoBySop(sopNo);
-        if (Objects.isNull(sopCrmInfo)){
+        if (Objects.isNull(sopCrmInfo)) {
             return 0;
         }
         Long serviceUnitId = sopCrmInfo.getServiceUnitId();

+ 9 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBServiceServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.ServiceUnitParam;
 import com.qmth.sop.business.bean.result.ReductionResult;
 import com.qmth.sop.business.bean.result.ServiceUnitResult;
@@ -168,6 +169,14 @@ public class TBServiceServiceImpl extends ServiceImpl<TBServiceMapper, TBService
         this.updateById(tbService);
     }
 
+    @Override
+    public List<TBService> queryServiceUnit(ProductTypeEnum type, List<ServiceStatusEnum> statusList, String name, DataPermissionDto dpr) {
+        if (name != null && name.length() > 0) {
+            name = SystemConstant.translateSpecificSign(name);
+        }
+        return this.baseMapper.queryServiceUnit(type, statusList, name, dpr);
+    }
+
     /**
      * 约分
      *

+ 49 - 0
sop-business/src/main/resources/mapper/TBServiceMapper.xml

@@ -48,4 +48,53 @@
         </where>
         ORDER BY tbs.create_time DESC
     </select>
+
+    <select id="queryServiceUnit" resultType="com.qmth.sop.business.entity.TBService">
+        SELECT
+            tbs.*
+        FROM
+            t_b_service tbs
+        <where>
+            <if test="type != null">
+                AND tbs.type = #{type}
+            </if>
+            <if test="name != null and name != ''">
+                AND tbs.name LIKE CONCAT('%',#{name},'%')
+            </if>
+            <if test="statusList != null and statusList != '' and statusList.size > 0">
+                AND tbs.status IN
+                <foreach collection="statusList" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="dpr != null and !dpr.hasAdmin and !dpr.hasPmo">
+                <choose>
+                    <when test="dpr.hasBusiness">
+                        AND tbs.service_lead_id = #{dpr.requestUserId}
+                    </when>
+                    <otherwise>
+                        <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>
+                            <otherwise>
+                                <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>
+                                    <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>
+                            </otherwise>
+                        </choose>
+                    </otherwise>
+                </choose>
+            </if>
+        </where>
+    </select>
 </mapper>