Parcourir la source

预案演练 推优管理 新增 不推荐状态

zhulu il y a 1 an
Parent
commit
7515ec57e1

+ 8 - 0
project_data/sql/0.0.6/soc/soc.sql

@@ -19,6 +19,14 @@ CREATE PROCEDURE schema_change () BEGIN
 
 	END IF;
 
+	 IF NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE ()
+		AND TABLE_NAME = 'core_drill_task' AND COLUMN_NAME = 'unrec_status' )
+	THEN
+        ALTER TABLE `core_drill_task`
+        ADD COLUMN `unrec_status` int NULL COMMENT '不推荐标识: 0 未设置不推荐,6 不推荐(保留普通案例) 7   不推荐(保留行社优秀案例) 8 不推荐(保留地区优秀案例)' AFTER `rec_status`;
+
+END IF;
+
 END ??
 DELIMITER ;
 CALL schema_change ();

+ 3 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/dto/CoreDrillTaskRecPageDto.java

@@ -16,6 +16,9 @@ public class CoreDrillTaskRecPageDto extends PageRequest {
     @ApiModelProperty(value = "状态")
     private Integer recStatus;
 
+    @ApiModelProperty(value = "不推荐状态")
+    private Integer unRecStatus;
+
     @NotNull(message = "开始时间不能为空")
     private Date startTime;
 

+ 7 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/drill/DrillRecStatus.java

@@ -10,7 +10,7 @@ import java.util.Map;
 @AllArgsConstructor
 public enum DrillRecStatus {
 
-    NORMAL(0, "正常案例"),
+    NORMAL(0, "普通案例"),
 
     HS_EXCELLENT_CASE(1, "行社优秀案例"),
 
@@ -22,6 +22,12 @@ public enum DrillRecStatus {
 
     PROVINCE_EXCELLENT_CASE(5, "省级优秀案例"),
 
+    UNREC_NORMAL_CASE(6, "不推荐(保留普通案例)"),
+
+    UNREC_HS_EXCELLENT_CASE(7, "不推荐(保留行社优秀案例)"),
+
+    UNREC_REGION_EXCELLENT_CASE(8, "不推荐(保留地区优秀案例)"),
+
 
 
     ;

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java

@@ -42,7 +42,7 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
 
     IPage<CoreDrillTaskRecTaskPageVo> selectRecTaskListPage(Page<Object> pageRequest, @Param("request") CoreDrillTaskRecPageDto request);
 
-    int updateStatusById(@Param("drillTaskId") Long drillTaskId, @Param("recStatus") Integer recStatus);
+    int updateStatusById(@Param("drillTaskId") Long drillTaskId, @Param("recStatus") Integer recStatus,@Param("unRecStatus") Integer unRecStatus);
 
     List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request,@Param("list") List<Integer> list);
 

+ 56 - 14
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -916,8 +916,20 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     }
 
     private void dealRecListParam(CoreDrillTaskRecPageDto request) {
+        
         //App的查询, App 默认下穿
         request.setCheckSub(true);
+        if(ObjectUtil.isNotEmpty(request.getRecStatus())){
+            if(isUnRecStatus(request.getRecStatus()))
+            {
+                request.setUnRecStatus(request.getRecStatus());
+                request.setRecStatus(null);
+            }
+            else
+            {
+                request.setUnRecStatus(0);
+            }
+        }
         //App端的时间按季度查询
         request.setStartTime(DateUtil.beginOfMonth(request.getStartTime()));
         request.setEndTime(DateUtil.endOfMonth(request.getEndTime()));
@@ -952,15 +964,18 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     @Override
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public int doRecTask(CoreDrillTaskDoRec request) {
+        // 6 不推荐(保留普通案例)、7 不推荐(保留行社优秀案例)、8 不推荐(保留地区优秀案例)
         CoreDrillTask drillTask = getById(request.getDrillTaskId());
         if (drillTask == null) {
             throw new SystemException("获取预案演练数据失败!");
         }
-        //当前推荐状态为null或者小于前端传过来的推荐状态,说明是取消推荐操作
-        if (request.getRecStatus() == null || drillTask.getRecStatus() > request.getRecStatus()) {
+
+        //当前推荐状态为6、7、8(不推荐)或者小于前端传过来的推荐状态,说明是取消推荐操作
+        if (isUnRecStatus(request.getRecStatus()) || drillTask.getRecStatus() > request.getRecStatus()) {
             //取消推荐
             int recStatus = checkRecStatus(drillTask, request.getRecStatus());
-            return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), recStatus);
+
+            return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), recStatus,request.getRecStatus());
         }
 
 
@@ -970,33 +985,60 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             return 1;
         }
         //判断是否越级推荐
-        if (ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 1) && ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 2)) {
+        if (request.getRecStatus()<DrillRecStatus.UNREC_NORMAL_CASE.getCode() && ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 1) && ObjectUtil.notEqual(drillTask.getRecStatus(), request.getRecStatus() - 2)) {
             throw new SystemException("推荐状态异常!");
         }
         if (ObjectUtil.notEqual(DrillDoStatus.DONE.getCode(), drillTask.getStatus())) {
             throw new SystemException("该预案演练任务未完成或已逾期!");
         }
-        return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), request.getRecStatus());
+        return coreDrillTaskMapper.updateStatusById(request.getDrillTaskId(), request.getRecStatus(),0);
     }
 
+    private boolean isUnRecStatus(Integer recStatus)
+    {
+        if(recStatus.equals(DrillRecStatus.UNREC_NORMAL_CASE.getCode())
+                || recStatus.equals(DrillRecStatus.UNREC_HS_EXCELLENT_CASE.getCode())
+                || recStatus.equals(DrillRecStatus.UNREC_REGION_EXCELLENT_CASE.getCode()))
+        {
+            return true;
+        }
+        return false;
+    }
+    
     private int checkRecStatus(CoreDrillTask drillTask, Integer recStatus) {
 
-        if (recStatus != null && drillTask.getRecStatus() > recStatus) {
+        // -1 为不推荐
+        if (!isUnRecStatus(recStatus) && drillTask.getRecStatus() > recStatus) {
             return recStatus;
         }
-        //前端传null,说明页面两个复选框都没勾选
-        //如果当前是正常案例/行社优秀案例/已推荐地区优秀案例 取消推荐后状态为正常案例
-        if (drillTask.getRecStatus().equals(DrillRecStatus.NORMAL.getCode()) ||
-                drillTask.getRecStatus().equals(DrillRecStatus.HS_EXCELLENT_CASE.getCode()) ||
-                drillTask.getRecStatus().equals(DrillRecStatus.REC_REGION_EXCELLENT_CASE.getCode())) {
+        if(recStatus.equals(DrillRecStatus.UNREC_NORMAL_CASE.getCode()))
+        {
             return DrillRecStatus.NORMAL.getCode();
         }
-        //如果当前是地区优秀案例/已推荐省级优秀案例  取消推荐后状态为行社优秀案例
-        if (drillTask.getRecStatus().equals(DrillRecStatus.REGION_EXCELLENT_CASE.getCode()) || drillTask.getRecStatus().equals(DrillRecStatus.REC_PROVINCE_EXCELLENT_CASE.getCode())) {
+        if(recStatus.equals(DrillRecStatus.UNREC_HS_EXCELLENT_CASE.getCode()))
+        {
             return DrillRecStatus.HS_EXCELLENT_CASE.getCode();
         }
-        //走到这说明当前推荐状态为省级优秀案例,取消推荐后状态为地区优秀案例
+
         return DrillRecStatus.REGION_EXCELLENT_CASE.getCode();
+//        if(recStatus.equals(DrillRecStatus.UNREC_REGION_EXCELLENT_CASE.getCode()))
+//        {
+//            return DrillRecStatus.REGION_EXCELLENT_CASE.getCode();
+//        }
+
+//        //前端传null,说明页面两个复选框都没勾选
+//        //如果当前是正常案例/行社优秀案例/已推荐地区优秀案例 取消推荐后状态为正常案例
+//        if (drillTask.getRecStatus().equals(DrillRecStatus.NORMAL.getCode()) ||
+//                drillTask.getRecStatus().equals(DrillRecStatus.HS_EXCELLENT_CASE.getCode()) ||
+//                drillTask.getRecStatus().equals(DrillRecStatus.REC_REGION_EXCELLENT_CASE.getCode())) {
+//            return DrillRecStatus.NORMAL.getCode();
+//        }
+//        //如果当前是地区优秀案例/已推荐省级优秀案例  取消推荐后状态为行社优秀案例
+//        if (drillTask.getRecStatus().equals(DrillRecStatus.REGION_EXCELLENT_CASE.getCode()) || drillTask.getRecStatus().equals(DrillRecStatus.REC_PROVINCE_EXCELLENT_CASE.getCode())) {
+//            return DrillRecStatus.HS_EXCELLENT_CASE.getCode();
+//        }
+//        //走到这说明当前推荐状态为省级优秀案例,取消推荐后状态为地区优秀案例
+//        return DrillRecStatus.REGION_EXCELLENT_CASE.getCode();
     }
 
     private Boolean checkRecNum(SysOrg sysOrg) {

+ 4 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -198,6 +198,9 @@
         <if test="request.recStatus!=null">
             and t.rec_status =#{request.recStatus}
         </if>
+        <if test="request.unRecStatus!=null">
+            and t.unrec_status =#{request.unRecStatus}
+        </if>
         and t.org_path like concat(#{request.orgPath},'%')
         <include refid="timeRangeSql"/>
     </select>
@@ -245,7 +248,7 @@
 
     <update id="updateStatusById">
         update core_drill_task
-        set rec_status=#{recStatus}
+        set rec_status=#{recStatus} ,unrec_status=#{unRecStatus}
         where id = #{drillTaskId}
     </update>