瀏覽代碼

coding:迁移润天批量更换实际发送人功能

zhangqin 1 天之前
父節點
當前提交
19b8879c6a

+ 16 - 1
fs-company/src/main/java/com/fs/company/controller/qw/SopUserLogsController.java

@@ -22,6 +22,7 @@ import com.fs.sop.dto.SopUserLogsParamDTO;
 import com.fs.sop.mapper.QwSopMapper;
 import com.fs.sop.params.SopUserLogsParam;
 import com.fs.sop.service.ISopUserLogsService;
+import com.fs.sop.vo.ReplaceUserDto;
 import com.fs.voice.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -31,6 +32,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * sopUserLogsController
@@ -101,7 +103,11 @@ public class SopUserLogsController extends BaseController
         if (!list.isEmpty()){
             // 收集所有需要查询的 qwUserId 和 corpId 组合
             List<SopUserLogsParamDTO> queryList = list.stream()
-                    .map(item -> new SopUserLogsParamDTO(item.getQwUserId(), item.getCorpId()))
+                    .flatMap(item -> Stream.of(
+                            new SopUserLogsParamDTO(item.getQwUserId(), item.getCorpId()),
+                            new SopUserLogsParamDTO(item.getActualQwUserId(), item.getCorpId())
+                    ))
+                    .filter(dto -> dto.getQwUserId() != null) // 过滤掉null的qwUserId
                     .distinct()  // 去重
                     .collect(Collectors.toList());
 
@@ -115,7 +121,9 @@ public class SopUserLogsController extends BaseController
             // 设置用户名
             list.forEach(item -> {
                 String key = item.getQwUserId() + "_" + item.getCorpId();
+                String key2 = item.getActualQwUserId() + "_" + item.getCorpId();
                 item.setQwUserName(userMap.get(key));
+                item.setActualQwUserName(userMap.get(key2));
             });
         }
         return getDataTable(list);
@@ -180,4 +188,11 @@ public class SopUserLogsController extends BaseController
         sopUserLogsService.addGroupChat(vo);
         return R.ok();
     }
+
+    @Log(title = "更换实际发送人", businessType = BusinessType.UPDATE)
+    @PostMapping("/replaceUser")
+    public R replaceUser(@RequestBody ReplaceUserDto vo){
+        sopUserLogsService.replaceUser(vo);
+        return R.ok();
+    }
 }

+ 4 - 0
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.app.taskService.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -844,6 +845,9 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         sopLogs.setFsUserId(fsUserId);
         sopLogs.setUserLogsId(logVo.getId());
 
+        if (ObjectUtil.isNotEmpty(logVo.getActualQwId())){
+            sopLogs.setQwUserKey(logVo.getActualQwId());
+        }
         return sopLogs;
     }
 

+ 3 - 0
fs-service/src/main/java/com/fs/qw/param/SopUserLogsVO.java

@@ -13,6 +13,9 @@ public class SopUserLogsVO {
     private String qwUserId;
     private String qwUserName;
 
+    // 实际发送人信息
+    private String actualQwUserId;
+    private String actualQwUserName;
     /**
     * 营期时间
     */

+ 3 - 0
fs-service/src/main/java/com/fs/sop/domain/SopUserLogs.java

@@ -13,6 +13,9 @@ public class SopUserLogs implements Serializable {
     private String sopTempId;
 
     private String qwUserId;
+    private String actualQwUserId;
+    private Long actualQwId;
+
     private String chatId;
     private String corpId;
     @JsonFormat(pattern = "yyyy-MM-dd")

+ 27 - 0
fs-service/src/main/java/com/fs/sop/mapper/SopUserLogsMapper.java

@@ -7,6 +7,7 @@ import com.fs.qw.vo.UpdateSopUserLogDateVo;
 import com.fs.sop.domain.SopUserLogs;
 import com.fs.sop.domain.SopUserLogsInfo;
 import com.fs.sop.params.*;
+import com.fs.sop.vo.ReplaceUserDto;
 import com.fs.sop.vo.SopUserLogsInfoVo;
 import com.fs.sop.vo.SopUserLogsVo;
 import org.apache.ibatis.annotations.Param;
@@ -194,6 +195,7 @@ public interface SopUserLogsMapper {
             "            l.sop_id,\n" +
             "            l.sop_temp_id,\n" +
             "            l.qw_user_id,\n" +
+            "            l.actual_qw_user_id,\n" +
             "            l.chat_id,\n" +
             "            l.corp_id,\n" +
             "            l.start_time,\n" +
@@ -290,6 +292,7 @@ public interface SopUserLogsMapper {
         "            l.sop_id,\n" +
         "            l.sop_temp_id,\n" +
         "            l.qw_user_id,\n" +
+        "            l.actual_qw_user_id,\n" +
         "            l.corp_id,\n" +
         "            l.chat_id,\n" +
         "            l.start_time,\n" +
@@ -364,4 +367,28 @@ List<SopUserLogsVO> selectSopUserLogsGroupListByParam(@Param("maps") SopUserLogs
             "<foreach  item='item' index='index' collection='param.sopIds' open='(' separator=',' close=')'> #{item}    </foreach>" +
             "</script>"})
     List<String> getSopUserLogsIds(@Param("param")SendUserLogsInfoMsgParam param);
+
+    @DataSource(DataSourceType.SOP)
+    @Select("<script>" +
+            "UPDATE sop_user_logs " +
+            "SET actual_qw_user_id = " +
+            "<choose>" +
+            "  <when test='vo.actualQwUserId != null'>#{vo.actualQwUserId}</when>" +
+            "  <otherwise>null</otherwise>" +
+            "</choose>" +
+            ", actual_qw_id = " +
+            "<choose>" +
+            "  <when test='vo.actualQwId != null'>#{vo.actualQwId}</when>" +
+            "  <otherwise>null</otherwise>" +
+            "</choose>" +
+            "WHERE id IN " +
+            "<foreach collection='vo.ids' item='id' open='(' separator=',' close=')'>" +
+            "#{id}" +
+            "</foreach>" +
+            "</script>")
+    void replaceUser(@Param("vo") ReplaceUserDto vo);
+
+    @DataSource(DataSourceType.SOP)
+    @Select("SELECT * FROM sop_user_logs WHERE sop_id = #{sopId} AND qw_user_id = #{qwUserId}")
+    SopUserLogs queryUserBySopId(@Param("qwUserId")String qwUserId,@Param("sopId") String sopId);
 }

+ 2 - 0
fs-service/src/main/java/com/fs/sop/service/ISopUserLogsService.java

@@ -8,6 +8,7 @@ import com.fs.sop.domain.SopUserLogs;
 import com.fs.sop.params.SopUserLogsList;
 import com.fs.sop.params.SopUserLogsParam;
 import com.fs.sop.params.SopUserLogsParamByDate;
+import com.fs.sop.vo.ReplaceUserDto;
 
 import java.util.List;
 
@@ -64,4 +65,5 @@ public interface ISopUserLogsService {
 
     public List<SopUserLogs> meetsTherestoreByIsDaysNotStudy(int offset,int pageSize,Integer notStudyDays);
 
+    void replaceUser(ReplaceUserDto vo);
 }

+ 18 - 0
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.sop.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -546,6 +547,9 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                     sopLogs.setSendType(6);
                     sopLogs.setExternalUserName(groupUser.getName());
                     sopLogs.setQwUserKey(qwUser.getId());
+
+                    // 设置实际发送人
+                    updateQwUserKey(sopLogs,qwUser.getQwUserId(),param.getSopId());
                     //域名
                     String companyUserId = qwUser.getCompanyUserId().toString();
                     String domainName = companyUserMapper.selectDomainByUserId(Long.parseLong(companyUserId));
@@ -662,6 +666,8 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                     sopLogs.setSendType(12);
                     sopLogs.setExternalUserName(groupChat.getName());
                     sopLogs.setQwUserKey(qwUser.getId());
+                    // 设置实际发送人
+                    updateQwUserKey(sopLogs,qwUser.getQwUserId(),param.getSopId());
 
                     QwSopCourseFinishTempSetting setting = new QwSopCourseFinishTempSetting();
 
@@ -956,12 +962,15 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
                 setting.setVideoId(param.getVideoId());
                 setting.setCourseId(param.getCourseId());
                 setting.setCourseType(param.getCourseType());
+
                 try {
                     sopLogs.setQwUserKey(Long.valueOf(qwUserId));
                 }catch (Exception e){
                     log.error("设置qwUserId异常", e);
                 }
                 sopLogs.setContentJson(JSON.toJSONString(setting));
+                // 设置实际发送人
+                updateQwUserKey(sopLogs,qwUser.getQwUserId(),param.getSopId());
 
                 sopLogsList.add(sopLogs);
             });
@@ -975,6 +984,15 @@ public class SopUserLogsInfoServiceImpl implements ISopUserLogsInfoService {
         return R.ok();
     }
 
+    private void updateQwUserKey(QwSopLogs sopLogs, String qwUserId, String sopId) {
+        // 设置实际发送人
+        SopUserLogs qwSopLogs = sopUserLogsMapper.queryUserBySopId(qwUserId,sopId);
+        if (qwSopLogs != null && ObjectUtil.isNotEmpty(qwSopLogs.getActualQwId())){
+            // sopLogs.setQwUserid(qwUser.getQwUserId());
+            sopLogs.setQwUserKey(qwSopLogs.getActualQwId());
+        }
+    }
+
     private void createVoiceUrl(QwSopCourseFinishTempSetting.Setting st, String companyUserId, QwSop qwSop) {
         QwSopTempVoice qwSopTempVoice = sopTempVoiceService.selectQwSopTempVoiceByCompanyUserIdAndVoiceTxt(Long.valueOf(companyUserId), st.getValue());
         if (qwSopTempVoice != null && qwSopTempVoice.getVoiceUrl() != null && qwSopTempVoice.getRecordType() == 1) {

+ 5 - 0
fs-service/src/main/java/com/fs/sop/service/impl/SopUserLogsServiceImpl.java

@@ -39,6 +39,7 @@ import com.fs.sop.service.IQwSopLogsService;
 import com.fs.sop.service.IQwSopTempDayService;
 import com.fs.sop.service.ISopUserLogsService;
 import com.fs.sop.vo.QwRatingVO;
+import com.fs.sop.vo.ReplaceUserDto;
 import com.fs.sop.vo.SopUserLogsInfoVo;
 import com.fs.sop.vo.SopUserLogsVo;
 import com.fs.system.service.ISysConfigService;
@@ -146,6 +147,10 @@ public class SopUserLogsServiceImpl  implements ISopUserLogsService {
 //    public int updateSopUserLogsDistinctByList(SopUserLogsArray userLogsArray) {
 //        return sopUserLogsMapper.updateSopUserLogsDistinctByList(userLogsArray);
 //    }
+    @Override
+    public void replaceUser(ReplaceUserDto vo) {
+        sopUserLogsMapper.replaceUser(vo);
+    }
 
     @Override
     public int deleteSopUserLogsBySopId(String sopId) {

+ 14 - 0
fs-service/src/main/java/com/fs/sop/vo/ReplaceUserDto.java

@@ -0,0 +1,14 @@
+package com.fs.sop.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ReplaceUserDto {
+    // 营期id
+    private List<String> ids;
+    // 实际发送人id
+    private String actualQwUserId;
+    private Long actualQwId;
+}

+ 2 - 0
fs-service/src/main/java/com/fs/sop/vo/SopUserLogsVo.java

@@ -12,6 +12,8 @@ public class SopUserLogsVo  {
     private String sopTempId;
 
     private String qwUserId;
+    private String actualQwUserId;
+    private Long actualQwId;
     private String userId;
     private String corpId;
     private Integer minConversionDay;

+ 1 - 0
fs-service/src/main/resources/mapper/sop/SopUserLogsMapper.xml

@@ -9,6 +9,7 @@
         <result property="sopId"    column="sop_id"    />
         <result property="sopTempId"    column="sop_temp_id"    />
         <result property="qwUserId"    column="qw_user_id"    />
+        <result property="actualQwUserId"    column="actual_user_id"    />
         <result property="corpId"    column="corp_id"    />
         <result property="startTime"    column="start_time"  jdbcType="TIMESTAMP"   />
         <result property="status"    column="status"    />