Jelajahi Sumber

Merge branch 'refs/heads/转接增加清空标签配置'

ct 1 hari lalu
induk
melakukan
fae103621e
17 mengubah file dengan 173 tambahan dan 79 penghapusan
  1. 5 2
      fs-admin/src/main/java/com/fs/qw/controller/QwExternalContactTransferCompanyAuditController.java
  2. 7 2
      fs-admin/src/main/java/com/fs/qw/controller/QwUserController.java
  3. 5 2
      fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactTransferCompanyAuditController.java
  4. 6 0
      fs-service/src/main/java/com/fs/qw/domain/QwExternalContactTransferCompanyAuditUser.java
  5. 4 0
      fs-service/src/main/java/com/fs/qw/domain/QwExternalContactTransferLog.java
  6. 3 0
      fs-service/src/main/java/com/fs/qw/dto/CompanyTransferDTO.java
  7. 4 0
      fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactTransferCompanyAuditMapper.java
  8. 6 1
      fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactTransferCompanyAuditUserMapper.java
  9. 2 0
      fs-service/src/main/java/com/fs/qw/param/ResignedTransferParam.java
  10. 2 0
      fs-service/src/main/java/com/fs/qw/param/TransferParam.java
  11. 3 0
      fs-service/src/main/java/com/fs/qw/service/IQwExternalContactTransferCompanyAuditService.java
  12. 37 7
      fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java
  13. 59 64
      fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactTransferCompanyAuditServiceImpl.java
  14. 5 0
      fs-service/src/main/resources/db/20251011-转接增加清空标签配置.sql
  15. 9 0
      fs-service/src/main/resources/mapper/qw/QwExternalContactTransferCompanyAuditMapper.xml
  16. 11 0
      fs-service/src/main/resources/mapper/qw/QwExternalContactTransferCompanyAuditUserMapper.xml
  17. 5 1
      fs-service/src/main/resources/mapper/qw/QwExternalContactTransferLogMapper.xml

+ 5 - 2
fs-admin/src/main/java/com/fs/qw/controller/QwExternalContactTransferCompanyAuditController.java

@@ -6,6 +6,7 @@ import com.fs.common.core.domain.model.LoginUser;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.utils.SecurityUtils;
 import com.fs.qw.domain.QwExternalContactTransferCompanyAudit;
+import com.fs.qw.domain.QwExternalContactTransferCompanyAuditUser;
 import com.fs.qw.dto.CompanyTransferAuditDTO;
 import com.fs.qw.service.IQwExternalContactTransferCompanyAuditService;
 import com.fs.qw.service.IQwExternalContactTransferCompanyAuditUserService;
@@ -35,8 +36,10 @@ public class QwExternalContactTransferCompanyAuditController extends BaseControl
 
     @PreAuthorize("@ss.hasPermi('qw:externalContactTransferCompanyAudit:detail')")
     @GetMapping("/detail/{auditId}")
-    public AjaxResult detail(@PathVariable Long auditId) {
-        return AjaxResult.success(auditUserService.getListByAuditId(auditId));
+    public TableDataInfo detail(@PathVariable Long auditId) {
+        startPage();
+        List<QwExternalContactTransferCompanyAuditUser> listByAuditId = auditUserService.getListByAuditId(auditId);
+        return getDataTable(listByAuditId);
     }
 
     @PreAuthorize("@ss.hasPermi('qw:externalContactTransferCompanyAudit:audit')")

+ 7 - 2
fs-admin/src/main/java/com/fs/qw/controller/QwUserController.java

@@ -3,12 +3,17 @@ package com.fs.qw.controller;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.model.LoginUser;
+import com.fs.common.utils.ServletUtils;
+import com.fs.qw.domain.QwExternalContactTransferCompanyAudit;
 import com.fs.qw.param.QwFsUserParam;
+import com.fs.qw.service.IQwExternalContactTransferCompanyAuditService;
 import com.fs.qw.service.IQwUserService;
 import com.fs.qw.vo.QwOptionsVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
@@ -24,7 +29,8 @@ import java.util.List;
 public class QwUserController extends BaseController {
     @Autowired
     private IQwUserService qwUserService;
-
+    @Autowired
+    private IQwExternalContactTransferCompanyAuditService auditService;
     @GetMapping("/getQwUserAll")
     public AjaxResult getQwUserAll(){
         return AjaxResult.success(qwUserService.getQwUserAll());
@@ -38,7 +44,6 @@ public class QwUserController extends BaseController {
         return R.ok().put("data",qwUserService.getQwUserInfo(param));
     }
 
-
    @GetMapping("/getMyQwCompanyList")
     public R getMyQwCompanyList()
     {

+ 5 - 2
fs-company/src/main/java/com/fs/company/controller/qw/QwExternalContactTransferCompanyAuditController.java

@@ -10,6 +10,7 @@ import com.fs.common.utils.ServletUtils;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.service.TokenService;
 import com.fs.qw.domain.QwExternalContactTransferCompanyAudit;
+import com.fs.qw.domain.QwExternalContactTransferCompanyAuditUser;
 import com.fs.qw.service.IQwExternalContactTransferCompanyAuditService;
 import com.fs.qw.service.IQwExternalContactTransferCompanyAuditUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -50,7 +51,9 @@ public class QwExternalContactTransferCompanyAuditController extends BaseControl
 
     @PreAuthorize("@ss.hasPermi('qw:externalContactTransferCompanyAudit:detail')")
     @GetMapping("/detail/{auditId}")
-    public AjaxResult detail(@PathVariable Long auditId) {
-        return AjaxResult.success(auditUserService.getListByAuditId(auditId));
+    public TableDataInfo detail(@PathVariable Long auditId) {
+        startPage();
+        List<QwExternalContactTransferCompanyAuditUser> list = auditUserService.getListByAuditId(auditId);
+        return getDataTable(list);
     }
 }

+ 6 - 0
fs-service/src/main/java/com/fs/qw/domain/QwExternalContactTransferCompanyAuditUser.java

@@ -1,5 +1,7 @@
 package com.fs.qw.domain;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -11,6 +13,7 @@ import java.time.LocalDateTime;
 public class QwExternalContactTransferCompanyAuditUser {
 
     @ApiModelProperty("主键ID")
+    @TableId(type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("审核记录ID")
@@ -57,4 +60,7 @@ public class QwExternalContactTransferCompanyAuditUser {
 
     @ApiModelProperty("接替时间")
     private LocalDateTime replaceTime;
+
+    @ApiModelProperty("是否需要清除标签")
+    private Integer needClearTag;
 }

+ 4 - 0
fs-service/src/main/java/com/fs/qw/domain/QwExternalContactTransferLog.java

@@ -60,4 +60,8 @@ public class QwExternalContactTransferLog
     private Long qwUserId;
     private Long handoverQwUserId;
     private Long fsUserId;
+    /**
+     * 是否需要清除标签
+     */
+    private Integer needClearTag;
 }

+ 3 - 0
fs-service/src/main/java/com/fs/qw/dto/CompanyTransferDTO.java

@@ -29,4 +29,7 @@ public class CompanyTransferDTO {
 
     @ApiModelProperty("原员工企微ID")
     private Long oldQwUserId;
+
+    @ApiModelProperty("是否需要清除标签")
+    private Integer needClearTag = 0;
 }

+ 4 - 0
fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactTransferCompanyAuditMapper.java

@@ -11,4 +11,8 @@ public interface QwExternalContactTransferCompanyAuditMapper extends BaseMapper<
      * 查询审核记录列表
      */
     List<QwExternalContactTransferCompanyAudit> selectQwExternalContactTransferCompanyAuditList(QwExternalContactTransferCompanyAudit param);
+
+    List<QwExternalContactTransferCompanyAudit> selectQwExternalContactTransferCompanyAuditLists();
+
+
 }

+ 6 - 1
fs-service/src/main/java/com/fs/qw/mapper/QwExternalContactTransferCompanyAuditUserMapper.java

@@ -14,7 +14,12 @@ public interface QwExternalContactTransferCompanyAuditUserMapper extends BaseMap
     List<QwExternalContactTransferCompanyAuditUser> getExistAuditByExtIds(@Param("ids") List<Long> ids);
 
     /**
-     * 查询接替记录
+     * 查询接替记录 (接替)
      */
     List<QwExternalContactTransferCompanyAuditUser> selectListByExtIdAndTakeoverUserIdAndCorpId(@Param("externalUserID") String externalUserID, @Param("takeoverUserId") String takeoverUserId, @Param("corpId") String corpId);
+
+    /**
+     * 查询接替记录 (转出)
+     */
+    List<QwExternalContactTransferCompanyAuditUser> selectListByExtIdAndHandoverUserIdAndCorpId(@Param("externalUserID") String externalUserID, @Param("handoverUserId") String handoverUserId, @Param("corpId") String corpId);
 }

+ 2 - 0
fs-service/src/main/java/com/fs/qw/param/ResignedTransferParam.java

@@ -11,4 +11,6 @@ public class ResignedTransferParam {
     String corpId;
     String  qwUserName;
     String type;
+    // 是否需要清除标签
+    private Integer needClearTag = 0;
 }

+ 2 - 0
fs-service/src/main/java/com/fs/qw/param/TransferParam.java

@@ -12,4 +12,6 @@ public class TransferParam {
     String corpId;
     String content;
     String type;
+    // 是否需要清除标签
+    private Integer needClearTag = 0;
 }

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

@@ -32,4 +32,7 @@ public interface IQwExternalContactTransferCompanyAuditService extends IService<
      * 同步最新状态
      */
     void syncTransfer(Long auditId);
+
+    List<QwExternalContactTransferCompanyAudit> selectQwExternalContactTransferCompanyAuditLists();
+
 }

+ 37 - 7
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -1143,6 +1143,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                                     qwExternalContactTransferLog.setTakeoverUserId(qwUser.getQwUserId());
                                     qwExternalContactTransferLog.setCorpId(param.getCorpId());
                                     qwExternalContactTransferLog.setExternalUserId(qwCustomer.getExternal_userid());
+                                    qwExternalContactTransferLog.setNeedClearTag(param.getNeedClearTag());
                                     qwExternalContactTransferLogMapper.insertQwExternalContactTransferLog(qwExternalContactTransferLog);
                                     QwExternalContact qwExternal = new QwExternalContact();
                                     qwExternal.setStatus(2);
@@ -1209,6 +1210,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                                     qwExternalContactTransferLog.setExternalUserId(qwCustomer.getExternal_userid());
                                     qwExternalContactTransferLog.setHandoverQwUserId(qwExternalContact.getQwUserId());
                                     qwExternalContactTransferLog.setFsUserId(qwExternalContact.getFsUserId());
+                                    qwExternalContactTransferLog.setNeedClearTag(param.getNeedClearTag());
                                     qwExternalContactTransferLogMapper.insertQwExternalContactTransferLog(qwExternalContactTransferLog);
                                     QwExternalContact qwExternal = new QwExternalContact();
                                     qwExternal.setStatus(2);
@@ -2488,6 +2490,26 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                 }
             }
         }
+
+        // 判断是否需要清除标签
+        boolean needClearTag = false;
+
+        //更新在职继承(可能有 可能没有)
+        QwExternalContactTransferLog transferLog=new QwExternalContactTransferLog();
+        transferLog.setCorpId(corpId);
+        transferLog.setTakeoverUserId(userID);
+        transferLog.setExternalUserId(externalUserID);
+        QwExternalContactTransferLog transferLogListByCheck = qwExternalContactTransferLogMapper.selectQwExternalContactTransferLogListByCheck(transferLog);
+        if (Objects.nonNull(transferLogListByCheck)) {
+            needClearTag = transferLogListByCheck.getNeedClearTag() == 1;
+        }
+
+        // 跨公司接替回调处理
+        List<QwExternalContactTransferCompanyAuditUser> auditUserList = transferCompanyAuditUserMapper.selectListByExtIdAndTakeoverUserIdAndCorpId(externalUserID, userID, corpId);
+        if (!auditUserList.isEmpty()) {
+            needClearTag = auditUserList.stream().anyMatch(t -> t.getNeedClearTag() == 1);
+        }
+
         for (FollowUser followUser : followUsers) {
             if (followUser.getUserid().equals(userID)) {
                 qwExternalContact.setUserId(followUser.getUserid()); // 设置属于用户ID
@@ -2507,7 +2529,7 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
                 List<Tag> tags = followUser.getTags();
                 Set<String> combinedTagsSet = new HashSet<>();
 
-                if (tags != null && tags.size() > 0) {
+                if (tags != null && tags.size() > 0 && !needClearTag) {
                     List<String> tagArr = new ArrayList<>();
                     for (Tag tag : tags) {
                         tagArr.add(tag.getTag_id());
@@ -2802,11 +2824,6 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         }
 
         //更新在职继承(可能有 可能没有)
-        QwExternalContactTransferLog transferLog=new QwExternalContactTransferLog();
-        transferLog.setCorpId(corpId);
-        transferLog.setTakeoverUserId(userID);
-        transferLog.setExternalUserId(externalUserID);
-        QwExternalContactTransferLog transferLogListByCheck = qwExternalContactTransferLogMapper.selectQwExternalContactTransferLogListByCheck(transferLog);
         if (transferLogListByCheck!=null){
             transferLogListByCheck.setStatus(1);
             qwExternalContactTransferLogMapper.updateQwExternalContactTransferLog(transferLogListByCheck);
@@ -2821,7 +2838,6 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         }
 
         // 跨公司接替回调处理
-        List<QwExternalContactTransferCompanyAuditUser> auditUserList = transferCompanyAuditUserMapper.selectListByExtIdAndTakeoverUserIdAndCorpId(externalUserID, userID, corpId);
         if (!auditUserList.isEmpty()) {
             for (QwExternalContactTransferCompanyAuditUser auditUser : auditUserList) {
                 auditUser.setStatus(1);
@@ -4278,6 +4294,11 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
             qwExternal.setId(qwExternalContact.getId());
             qwExternal.setStatus(4);
             qwExternal.setDelTime(new Date());
+
+            // 是否存在转接记录
+            if (isTransfer(transferLogVO, externalUserID, userID, corpId)) {
+                qwExternal.setTransferStatus(1);
+            }
 //            logger.info("删除用户客户更改状态");
             qwExternalContactMapper.updateQwExternalContact(qwExternal);
 
@@ -4294,6 +4315,15 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         }
     }
 
+    /**
+     * 是否存在转接记录
+     */
+    private boolean isTransfer(QwExternalContactTransferLog transferLogVO, String externalUserID, String handoverUserId, String corpId) {
+        // 跨公司接替回调处理
+        List<QwExternalContactTransferCompanyAuditUser> auditUserList = transferCompanyAuditUserMapper.selectListByExtIdAndHandoverUserIdAndCorpId(externalUserID, handoverUserId, corpId);
+        return Objects.nonNull(transferLogVO) || !auditUserList.isEmpty();
+    }
+
     @Override
     public void deletefollowUserByExternalUserId(String externalUserID, String userID, String corpId) {
 

+ 59 - 64
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactTransferCompanyAuditServiceImpl.java

@@ -72,6 +72,10 @@ public class QwExternalContactTransferCompanyAuditServiceImpl extends ServiceImp
             throw new ServiceException("接替员工不能为本公司员工");
         }
 
+        if (qwUser.getCompanyUserId() == null) {
+            throw new ServiceException("接替员工必须绑定销售");
+        }
+
         List<QwExternalContact> qwExternalContacts = new ArrayList<>();
         // 为1转移员工下客户 其余转移转递的客户
         if (param.getType() == 1) {
@@ -90,6 +94,11 @@ public class QwExternalContactTransferCompanyAuditServiceImpl extends ServiceImp
             throw new ServiceException("只能转移本公司下的客户");
         }
 
+        boolean hasNotCorpId = qwExternalContacts.stream().anyMatch(c -> !c.getCorpId().equals(qwUser.getCorpId()));
+        if (hasNotCorpId) {
+            throw new ServiceException("只能转移同主体下的客户");
+        }
+
         if (qwExternalContacts.isEmpty()) {
             throw new ServiceException("请选择需要分配的客户");
         }
@@ -145,6 +154,7 @@ public class QwExternalContactTransferCompanyAuditServiceImpl extends ServiceImp
                 auditUser.setQwUserExtId(userQwUser.getQwUserId());
                 auditUser.setQwUserName(userQwUser.getQwUserName());
                 auditUser.setCreateTime(LocalDateTime.now());
+                auditUser.setNeedClearTag(param.getNeedClearTag());
 
                 return auditUser;
             }).collect(Collectors.toList());
@@ -195,58 +205,32 @@ public class QwExternalContactTransferCompanyAuditServiceImpl extends ServiceImp
      * 转接用户
      */
     private void transferCustomer(QwExternalContactTransferCompanyAudit auditInfo) {
+        String content = StringUtils.isNotBlank(auditInfo.getContent()) ? auditInfo.getContent() :
+                "您好,您的服务已升级,后续将由我的同事接替我的工作,继续为您服务。";
         List<QwExternalContactTransferCompanyAuditUser> auditUserList = auditUserService.getListByAuditId(auditInfo.getId());
-        outer:
-        for (QwExternalContactTransferCompanyAuditUser auditUser : auditUserList) {
+        auditUserList.parallelStream().forEach(auditUser -> {
             try {
                 // 已提交的不再处理
                 if (auditUser.getStatus() != 0) {
-                    continue;
+                    return;
                 }
 
+                List<QwCustomer> customer;
+                int code;
+                String message;
+
                 // 在职
                 if (auditInfo.getTransferType() == 1) {
                     QwTransferCustomerParam qwTransferCustomerParam = new QwTransferCustomerParam();
-                    String content = auditInfo.getContent();
-                    if(StringUtils.isBlank(content)){
-                        content = "您好,您的服务已升级,后续将由我的同事接替我的工作,继续为您服务。";
-                    }
                     qwTransferCustomerParam.setTransfer_success_msg(content);
                     qwTransferCustomerParam.setHandover_userid(auditUser.getQwUserExtId());
                     qwTransferCustomerParam.setTakeover_userid(auditInfo.getQwUserExtId());
                     qwTransferCustomerParam.setExternal_userid(Collections.singletonList(auditUser.getExternalUserId()));
                     QwTransferCustomerResult qwTransferCustomerResult = qwApiService.transferCustomer(qwTransferCustomerParam, auditInfo.getCorpId());
 
-                    if (qwTransferCustomerResult.getErrcode() != 0) {
-                        auditUser.setRemark("接替失败: " + qwTransferCustomerResult.getErrmsg());
-                        auditUserService.updateById(auditUser);
-                        continue;
-                    }
-
-                    List<QwCustomer> customer = qwTransferCustomerResult.getCustomer();
-                    if (Objects.isNull(customer) || customer.isEmpty()) {
-                        auditUser.setRemark("接替失败: 未获取到数据");
-                        auditUserService.updateById(auditUser);
-                        continue;
-                    }
-
-                    for (QwCustomer qwCustomer : customer) {
-                        if (qwCustomer.getErrcode() != 0) {
-                            auditUser.setRemark("接替失败: " + qwCustomer.getErrcode());
-                            auditUserService.updateById(auditUser);
-                            continue outer;
-                        }
-
-                        QwExternalContact qwExternal = new QwExternalContact();
-                        qwExternal.setStatus(2);
-                        qwExternal.setTransferStatus(2);
-                        qwExternal.setId(auditUser.getExternalId());
-                        contactMapper.updateQwExternalContact(qwExternal);
-
-                        auditUser.setStatus(2);
-                        auditUser.setReplaceTime(LocalDateTime.now());
-                        auditUserService.updateById(auditUser);
-                    }
+                    code = qwTransferCustomerResult.getErrcode();
+                    message = qwTransferCustomerResult.getErrmsg();
+                    customer = qwTransferCustomerResult.getCustomer();
                 }
                 // 离职
                 else if (auditInfo.getTransferType() == 2) {
@@ -254,44 +238,50 @@ public class QwExternalContactTransferCompanyAuditServiceImpl extends ServiceImp
                     qwTransferCustomerParam.setHandover_userid(auditUser.getQwUserExtId());
                     qwTransferCustomerParam.setTakeover_userid(auditInfo.getQwUserExtId());
                     qwTransferCustomerParam.setExternal_userid(Collections.singletonList(auditUser.getExternalUserId()));
-                    QwTransferCustomerResignedResult qwTransferCustomerResignedParam = qwApiService.resignedTransferCustomer(qwTransferCustomerParam, auditInfo.getCorpId());
+                    QwTransferCustomerResignedResult qwTransferCustomerResignedResult = qwApiService.resignedTransferCustomer(qwTransferCustomerParam, auditInfo.getCorpId());
+
+                    code = qwTransferCustomerResignedResult.getErrcode();
+                    message = qwTransferCustomerResignedResult.getErrmsg();
+                    customer = qwTransferCustomerResignedResult.getCustomer();
+                } else {
+                    auditUser.setRemark("接替失败: 接替类型错误");
+                    auditUserService.updateById(auditUser);
+                    return;
+                }
 
-                    if (qwTransferCustomerResignedParam.getErrcode() != 0) {
-                        auditUser.setRemark("接替失败: " + qwTransferCustomerResignedParam.getErrmsg());
-                        auditUserService.updateById(auditUser);
-                        continue;
-                    }
+                if (code != 0) {
+                    auditUser.setRemark("接替失败: " + message);
+                    auditUserService.updateById(auditUser);
+                    return;
+                }
+
+                if (Objects.isNull(customer) || customer.isEmpty()) {
+                    auditUser.setRemark("接替失败: 未获取到数据");
+                    auditUserService.updateById(auditUser);
+                    return;
+                }
 
-                    List<QwCustomer> customer = qwTransferCustomerResignedParam.getCustomer();
-                    if (Objects.isNull(customer) || customer.isEmpty()) {
-                        auditUser.setRemark("接替失败: 未获取到数据");
+                for (QwCustomer qwCustomer : customer) {
+                    if (qwCustomer.getErrcode() != 0) {
+                        auditUser.setRemark("接替失败: " + qwCustomer.getErrcode());
                         auditUserService.updateById(auditUser);
-                        continue;
+                        return;
                     }
 
-                    for (QwCustomer qwCustomer : customer) {
-                        if (qwCustomer.getErrcode() != 0) {
-                            auditUser.setRemark("接替失败: " + qwCustomer.getErrcode());
-                            auditUserService.updateById(auditUser);
-                            continue outer;
-                        }
-
-                        QwExternalContact qwExternal = new QwExternalContact();
-                        qwExternal.setStatus(2);
-                        qwExternal.setTransferStatus(2);
-                        qwExternal.setId(auditUser.getExternalId());
-                        contactMapper.updateQwExternalContact(qwExternal);
+                    QwExternalContact qwExternal = new QwExternalContact();
+                    qwExternal.setStatus(2);
+                    qwExternal.setTransferStatus(2);
+                    qwExternal.setId(auditUser.getExternalId());
+                    contactMapper.updateQwExternalContact(qwExternal);
 
-                        auditUser.setStatus(2);
-                        auditUser.setReplaceTime(LocalDateTime.now());
-                        auditUserService.updateById(auditUser);
-                    }
+                    auditUser.setStatus(2);
+                    auditUserService.updateById(auditUser);
                 }
             } catch (Exception e) {
                 auditUser.setRemark("接替失败: " + e.getMessage());
                 auditUserService.updateById(auditUser);
             }
-        }
+        });
     }
 
     /**
@@ -335,4 +325,9 @@ public class QwExternalContactTransferCompanyAuditServiceImpl extends ServiceImp
             }
         }
     }
+
+    @Override
+    public List<QwExternalContactTransferCompanyAudit> selectQwExternalContactTransferCompanyAuditLists() {
+        return baseMapper.selectQwExternalContactTransferCompanyAuditLists();
+    }
 }

+ 5 - 0
fs-service/src/main/resources/db/20251011-转接增加清空标签配置.sql

@@ -0,0 +1,5 @@
+alter table qw_external_contact_transfer_log
+    add column need_clear_tag tinyint default 0 comment '是否需要清空标签 0否 1是';
+
+alter table qw_external_contact_transfer_company_audit_user
+    add column need_clear_tag tinyint default 0 comment '是否需要清空标签 0否 1是';

+ 9 - 0
fs-service/src/main/resources/mapper/qw/QwExternalContactTransferCompanyAuditMapper.xml

@@ -8,6 +8,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select *
         from qw_external_contact_transfer_company_audit
         <where>
+            <if test="corpId != null">
+                and corp_id = #{corpId}
+            </if>
             <if test="corpName != null and corpName != ''">
                 and corp_name like concat('%', #{corpName}, '%')
             </if>
@@ -26,4 +29,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         order by create_time desc,id desc
     </select>
+
+    <select id="selectQwExternalContactTransferCompanyAuditLists" resultType="com.fs.qw.domain.QwExternalContactTransferCompanyAudit">
+        select DISTINCT corp_name ,corp_id
+        from qw_external_contact_transfer_company_audit
+        order by create_time desc,id desc
+    </select>
 </mapper>

+ 11 - 0
fs-service/src/main/resources/mapper/qw/QwExternalContactTransferCompanyAuditUserMapper.xml

@@ -25,4 +25,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           and ca.corp_id = #{corpId}
           and ca.qw_user_ext_id = #{takeoverUserId}
     </select>
+
+    <select id="selectListByExtIdAndHandoverUserIdAndCorpId" resultType="com.fs.qw.domain.QwExternalContactTransferCompanyAuditUser">
+        select
+            au.*
+        from qw_external_contact_transfer_company_audit_user au
+        inner join qw_external_contact_transfer_company_audit ca on au.audit_id = ca.id and ca.status = 2
+        where au.status in (1,2)
+          and au.external_user_id = #{externalUserID}
+          and ca.corp_id = #{corpId}
+          and au.qw_user_ext_id = #{handoverUserId}
+    </select>
 </mapper>

+ 5 - 1
fs-service/src/main/resources/mapper/qw/QwExternalContactTransferLogMapper.xml

@@ -19,10 +19,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="qwUserId"    column="qw_user_id"    />
         <result property="handoverQwUserId"    column="handover_qw_user_id"    />
         <result property="fsUserId"    column="fs_user_id"    />
+        <result property="needClearTag"    column="need_clear_tag"    />
     </resultMap>
 
     <sql id="selectQwExternalContactTransferLogVo">
-        select id, corp_id, qw_user_id,handover_qw_user_id,company_id,takeover_user_id,handover_user_id, company_user_id, external_user_id, customer_id, external_contact_id, status, create_time,fs_user_id from qw_external_contact_transfer_log
+        select id, corp_id, qw_user_id,handover_qw_user_id,company_id,takeover_user_id,handover_user_id, company_user_id, external_user_id, customer_id, external_contact_id, status, create_time,fs_user_id, need_clear_tag from qw_external_contact_transfer_log
     </sql>
 
     <select id="selectQwExternalContactTransferLogList" parameterType="QwExternalContactTransferLog" resultMap="QwExternalContactTransferLogResult">
@@ -83,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="qwUserId != null">qw_user_id,</if>
             <if test="handoverQwUserId != null">handover_qw_user_id,</if>
             <if test="fsUserId != null">fs_user_id,</if>
+            <if test="needClearTag != null">need_clear_tag,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -99,6 +101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="qwUserId != null">#{qwUserId},</if>
             <if test="handoverQwUserId != null">#{handoverQwUserId},</if>
             <if test="fsUserId != null">#{fsUserId},</if>
+            <if test="needClearTag != null">#{needClearTag},</if>
          </trim>
     </insert>
 
@@ -117,6 +120,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="handoverUserId != null">handover_user_id = #{handoverUserId},</if>
             <if test="qwUserId != null">qw_user_id = #{qwUserId},</if>
             <if test="handoverQwUserId != null">handover_qw_user_id = #{handoverQwUserId},</if>
+            <if test="needClearTag != null">need_clear_tag = #{needClearTag},</if>
         </trim>
         where id = #{id}
     </update>