浏览代码

课程模板新增一件开关官方群发

lmx 1 天之前
父节点
当前提交
5dd201a3a9

+ 13 - 0
fs-company/src/main/java/com/fs/company/controller/qw/QwSopTempController.java

@@ -20,6 +20,7 @@ import com.fs.qw.vo.SortDayVo;
 import com.fs.sop.domain.QwSop;
 import com.fs.sop.domain.QwSopTemp;
 import com.fs.sop.domain.QwSopTempDay;
+import com.fs.sop.params.BatchOpenOrCloseOfficialParam;
 import com.fs.sop.params.QwSopShareTempParam;
 import com.fs.sop.service.IQwSopTempService;
 import com.fs.sop.vo.UpdateRedVo;
@@ -362,4 +363,16 @@ public class QwSopTempController extends BaseController
     public R getSelectableRange(){
         return R.ok().put("data", qwSopTempService.getSelectableRange());
     }
+
+    /**
+     * sop模板update一键开关官方群发
+     * @param param
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('qw:sopTemp:edit') or @ss.hasPermi('qw:sopTemp:myEdit') or @ss.hasPermi('qw:sopTemp:deptEdit')")
+    @Log(title = "sop模板update一键开关官方群发", businessType = BusinessType.UPDATE)
+    @PostMapping("/batchOpenOrCloseOfficial")
+    public R batchOpenOrCloseOfficial(@RequestBody BatchOpenOrCloseOfficialParam param){
+        return qwSopTempService.batchOpenOrCloseOfficial(param);
+    }
 }

+ 6 - 0
fs-service/src/main/java/com/fs/sop/mapper/QwSopTempRulesMapper.java

@@ -99,4 +99,10 @@ public interface QwSopTempRulesMapper extends BaseMapper<QwSopTempRules> {
     List<QwSopTempRules> listByTempIdAndNameAndDayNum(@Param("id") String id, @Param("dayNum") Integer dayNum);
 
     void deleteByIdList(@Param("ids") List<String> ids);
+
+    List<Long> getTempOfficialIdsForOpen(@Param("tempId")String tempId);
+
+    List<Long> getTempOfficialIdsForClose(@Param("tempId") String tempId);
+
+    int updateTempRulesOfficialBatch(@Param("ids") List<Long> ids,@Param("official") Integer official);
 }

+ 22 - 0
fs-service/src/main/java/com/fs/sop/params/BatchOpenOrCloseOfficialParam.java

@@ -0,0 +1,22 @@
+package com.fs.sop.params;
+
+import lombok.Data;
+
+/**
+ * @author MixLiu
+ * @date 2025/12/22 上午10:30)
+ */
+@Data
+public class BatchOpenOrCloseOfficialParam {
+
+    /**
+     * 模板id
+     */
+    private String tempId;
+
+    /**
+     * 是否官方 0 关闭 1 开启
+     */
+    private Integer isOfficial;
+
+}

+ 10 - 0
fs-service/src/main/java/com/fs/sop/service/IQwSopTempService.java

@@ -1,8 +1,10 @@
 package com.fs.sop.service;
 
+import com.fs.common.core.domain.R;
 import com.fs.qw.vo.SortDayVo;
 import com.fs.sop.domain.QwSopTemp;
 import com.fs.sop.domain.QwSopTempDay;
+import com.fs.sop.params.BatchOpenOrCloseOfficialParam;
 import com.fs.sop.params.QwSopShareTempParam;
 import com.fs.sop.vo.QwSopTempRedPackageVo;
 
@@ -101,4 +103,12 @@ public interface IQwSopTempService {
     List<String> getSelectableRange();
 
     void syncTemplate(Long courseId);
+
+    /**
+     * sop模板update一键开关官方群发
+     * @param param
+     * @return
+     */
+    R batchOpenOrCloseOfficial(BatchOpenOrCloseOfficialParam param);
+
 }

+ 30 - 0
fs-service/src/main/java/com/fs/sop/service/impl/QwSopTempServiceImpl.java

@@ -8,9 +8,11 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fs.common.BeanCopyUtils;
 import com.fs.common.annotation.DataSource;
+import com.fs.common.core.domain.R;
 import com.fs.common.enums.DataSourceType;
 import com.fs.common.exception.base.BaseException;
 import com.fs.common.utils.PubFun;
+import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.Company;
 import com.fs.company.service.ICompanyService;
 import com.fs.config.cloud.CloudHostProper;
@@ -30,6 +32,8 @@ import com.fs.qw.vo.QwUserVO;
 import com.fs.qw.vo.SortDayVo;
 import com.fs.sop.domain.*;
 import com.fs.sop.mapper.QwSopTempMapper;
+import com.fs.sop.mapper.QwSopTempRulesMapper;
+import com.fs.sop.params.BatchOpenOrCloseOfficialParam;
 import com.fs.sop.params.QwSopShareTempParam;
 import com.fs.sop.service.*;
 import com.fs.sop.vo.QwSopTempRedPackageVo;
@@ -84,6 +88,8 @@ public class QwSopTempServiceImpl implements IQwSopTempService {
     private final ICompanyService companyService;
     private final ThreadPoolTaskExecutor threadPoolTaskExecutor;
 
+    @Autowired
+    QwSopTempRulesMapper qwSopTempRulesMapper;
     /**
      * 查询sop模板
      *
@@ -788,4 +794,28 @@ public class QwSopTempServiceImpl implements IQwSopTempService {
 //        }
     }
 
+    /**
+     * sop模板update一键开关官方群发
+     * @param param
+     * @return
+     */
+    public R batchOpenOrCloseOfficial(BatchOpenOrCloseOfficialParam param){
+        List<Long> updateIds = new ArrayList<>();
+        if(StringUtils.isBlank(param.getTempId())){
+            return R.error("参数错误,请确认模板id是否正确");
+        }
+        if(Integer.valueOf(1).equals(param.getIsOfficial())){
+            updateIds = qwSopTempRulesMapper.getTempOfficialIdsForOpen(param.getTempId());
+        }else if(Integer.valueOf(0).equals(param.getIsOfficial())){
+            updateIds = qwSopTempRulesMapper.getTempOfficialIdsForClose(param.getTempId());
+        }else{
+            return R.error("参数错误,请确认选择类型是否正确");
+        }
+
+        if(null != updateIds && !updateIds.isEmpty()){
+            qwSopTempRulesMapper.updateTempRulesOfficialBatch(updateIds, param.getIsOfficial());
+        }
+        return  R.ok("操作成功");
+    }
+
 }

+ 26 - 0
fs-service/src/main/resources/mapper/sop/QwSopTempRulesMapper.xml

@@ -134,4 +134,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             CAST(#{item} AS UUID)
         </foreach>
     </delete>
+
+    <select id="getTempOfficialIdsForOpen" parameterType="java.lang.String" resultType="java.lang.Long">
+        select tt.id from
+                         (
+                          select
+                              t.id,
+                              RANK() OVER (PARTITION by t.day_id ORDER BY t.sorts ) AS rank_num
+                          from qw_sop_temp_rules  t
+                          where t.temp_id = #{tempId}
+                          ) tt
+        where tt.rank_num = 1
+    </select>
+
+    <select id="getTempOfficialIdsForClose" parameterType="java.lang.String" resultType="java.lang.Long">
+        select id from qw_sop_temp_rules where temp_id = #{tempId}  and  is_official = 1
+    </select>
+
+    <update id="updateTempRulesOfficialBatch" >
+        update qw_sop_temp_rules
+        set is_official = #{official}
+        where id in
+        <foreach item="item" collection="ids" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
+
 </mapper>