wangxy 16 時間 前
コミット
72027d1f7a

+ 18 - 0
fs-company/src/main/java/com/fs/company/controller/qw/QwSopController.java

@@ -11,6 +11,7 @@ import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.company.service.impl.CompanyDeptServiceImpl;
+import com.fs.course.domain.FsUserCourse;
 import com.fs.course.mapper.FsUserCourseMapper;
 import com.fs.course.mapper.FsUserCourseVideoMapper;
 import com.fs.framework.security.LoginUser;
@@ -177,6 +178,23 @@ public class QwSopController extends BaseController
         return R.ok().put("list", optionsVOS);
     }
 
+    /**
+     * 按课程 ID 取下拉选项(规则详情回显:当公司课程列表未包含该课时用于补全名称)
+     */
+    @GetMapping("/courseOption/{id}")
+    public R courseOption(@PathVariable("id") Long id)
+    {
+        FsUserCourse course = fsUserCourseMapper.selectFsUserCourseByCourseId(id);
+        if (course == null) {
+            return R.error("未找到课程");
+        }
+        OptionsVO vo = new OptionsVO();
+        vo.setDictValue(course.getCourseId());
+        vo.setDictLabel(course.getCourseName());
+        vo.setDictImgUrl(course.getImgUrl());
+        return R.ok().put("data", vo);
+    }
+
     @GetMapping(value = "/videoList/{id}")
     public R videoList(@PathVariable("id") Long id)
     {

+ 9 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyWxClientService.java

@@ -69,6 +69,15 @@ public interface ICompanyWxClientService extends IService<CompanyWxClient> {
 
     void addWxTrueResult(AddWxResultVo vo);
 
+    /** 发起加微:状态加微中,记录发起时间 */
+    void markAddWxInProgress(Long wxClientId);
+
+    /** 加微成功:状态加微成功,记录成功时间 */
+    void markAddWxSuccess(Long wxClientId);
+
+    /** 加微失败:状态加微失败 */
+    void markAddWxFailed(Long wxClientId);
+
     List<CompanyWxClient> getAddWxList(List<Long> accountIdList,Integer isWeCom);
 
     List<CompanyWxClient4WorkFlowVO> getAddWxList4Workflow(List<Long> accountIdList,Integer cidGroupId);

+ 95 - 13
fs-service/src/main/java/com/fs/company/service/impl/CompanyWxClientServiceImpl.java

@@ -6,10 +6,12 @@ import com.fs.common.exception.base.BaseException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.PubFun;
 import com.fs.company.domain.CompanyUser;
+import com.fs.company.domain.CompanyVoiceRoboticCallLogAddwx;
 import com.fs.company.domain.CompanyVoiceRoboticWx;
 import com.fs.company.domain.CompanyWxClient;
 import com.fs.company.mapper.CompanyVoiceRoboticWxMapper;
 import com.fs.company.mapper.CompanyWxClientMapper;
+import com.fs.company.service.ICompanyVoiceRoboticCallLogAddwxService;
 import com.fs.company.service.ICompanyWxClientService;
 import com.fs.company.vo.AddWxResultVo;
 import com.fs.company.vo.CompanyWxClient4WorkFlowVO;
@@ -46,6 +48,7 @@ public class CompanyWxClientServiceImpl extends ServiceImpl<CompanyWxClientMappe
     private final CompanyWxDialogServiceImpl companyWxDialogService;
     private final CompanyWxUserMapper companyWxUserMapper;
     private final CompanyVoiceRoboticWxMapper companyVoiceRoboticWxMapper;
+    private final ICompanyVoiceRoboticCallLogAddwxService companyVoiceRoboticCallLogAddwxService;
 
 
     /**
@@ -191,23 +194,23 @@ public class CompanyWxClientServiceImpl extends ServiceImpl<CompanyWxClientMappe
     @Override
     public void addWxResult(AddWxResultVo vo) {
         CompanyWxClient companyWxClient = baseMapper.selectById(vo.getId());
-        if(companyWxClient == null) throw new BaseException("未找到数据");
-        companyWxClient.setIsAdd(2);
-        companyWxClient.setAddTime(LocalDateTime.now());
-        companyWxClient.setUpdateTime(new Date());
-        baseMapper.updateById(companyWxClient);
+        if (companyWxClient == null) {
+            throw new BaseException("未找到数据");
+        }
+        markAddWxInProgress(vo.getId());
     }
 
     @Override
     public void addWxTrueResult(AddWxResultVo vo) {
         CompanyWxClient companyWxClient = baseMapper.selectById(vo.getId());
-        companyWxClient.setIsAdd(1);
-        companyWxClient.setAddTime(LocalDateTime.now());
-        baseMapper.updateById(companyWxClient);
+        if (companyWxClient == null) {
+            throw new BaseException("未找到数据");
+        }
+        markAddWxSuccess(vo.getId());
         log.info("回调数据:{}", companyWxClient);
         CompanyUser companyUser = baseMapper.selectCompanyByAccountId(companyWxClient.getRoboticWxId());
         CompanyWxUser companyWx = companyWxUserMapper.selectCompanyWxUserByWeixinId(vo.getWxNo());
-        if(companyWx == null){
+        if (companyWx == null) {
             companyWx = new CompanyWxUser();
             companyWx.setAccountId(vo.getAccountId());
             companyWx.setCompanyId(companyUser.getCompanyId());
@@ -218,15 +221,94 @@ public class CompanyWxClientServiceImpl extends ServiceImpl<CompanyWxClientMappe
             companyWx.setStatus(1);
             companyWx.setCreateTime(new Date());
             companyWxUserMapper.insertCompanyWxUser(companyWx);
-            CompanyVoiceRoboticWx wx = companyVoiceRoboticWxMapper.selectById(companyWxClient.getRoboticWxId());
-            wx.setAddNum(wx.getAddNum() + 1);
-            companyVoiceRoboticWxMapper.updateById(wx);
-        }else{
+            // add_num 已由 markAddWxSuccess 累加,此处不再重复 +1
+        } else {
             companyWx.setNickName(vo.getWxName());
             companyWxUserMapper.updateCompanyWxUser(companyWx);
         }
     }
 
+    @Override
+    public void markAddWxInProgress(Long wxClientId) {
+        if (wxClientId == null) {
+            return;
+        }
+        lambdaUpdate()
+                .eq(CompanyWxClient::getId, wxClientId)
+                .set(CompanyWxClient::getIsAdd, 2)
+                .set(CompanyWxClient::getAddTime, LocalDateTime.now())
+                .set(CompanyWxClient::getUpdateTime, new Date())
+                .update();
+    }
+
+    @Override
+    public void markAddWxSuccess(Long wxClientId) {
+        if (wxClientId == null) {
+            return;
+        }
+        CompanyWxClient existing = getById(wxClientId);
+        if (existing == null) {
+            return;
+        }
+        boolean alreadySuccess = Integer.valueOf(1).equals(existing.getIsAdd());
+        lambdaUpdate()
+                .eq(CompanyWxClient::getId, wxClientId)
+                .set(CompanyWxClient::getIsAdd, 1)
+                .set(CompanyWxClient::getSuccessAddTime, LocalDateTime.now())
+                .set(CompanyWxClient::getUpdateTime, new Date())
+                .update();
+        syncAddWxCallLogStatus(wxClientId, 2);
+        if (!alreadySuccess) {
+            incrementRoboticWxAddNum(existing.getRoboticWxId());
+        }
+    }
+
+    private void incrementRoboticWxAddNum(Long roboticWxId) {
+        if (roboticWxId == null || companyVoiceRoboticWxMapper == null) {
+            return;
+        }
+        try {
+            CompanyVoiceRoboticWx wx = companyVoiceRoboticWxMapper.selectById(roboticWxId);
+            if (wx == null) {
+                return;
+            }
+            int current = wx.getAddNum() == null ? 0 : wx.getAddNum();
+            wx.setAddNum(current + 1);
+            companyVoiceRoboticWxMapper.updateById(wx);
+        } catch (Exception e) {
+            log.warn("累加加微添加数量失败 - roboticWxId: {}", roboticWxId, e);
+        }
+    }
+
+    @Override
+    public void markAddWxFailed(Long wxClientId) {
+        if (wxClientId == null) {
+            return;
+        }
+        // HIS 表无 fail_add_time 字段,仅回写 is_add / update_time
+        lambdaUpdate()
+                .eq(CompanyWxClient::getId, wxClientId)
+                .set(CompanyWxClient::getIsAdd, 3)
+                .set(CompanyWxClient::getUpdateTime, new Date())
+                .update();
+        syncAddWxCallLogStatus(wxClientId, 3);
+    }
+
+    private void syncAddWxCallLogStatus(Long wxClientId, int status) {
+        if (companyVoiceRoboticCallLogAddwxService == null || wxClientId == null) {
+            return;
+        }
+        try {
+            companyVoiceRoboticCallLogAddwxService.lambdaUpdate()
+                    .eq(CompanyVoiceRoboticCallLogAddwx::getWxClientId, wxClientId)
+                    .in(CompanyVoiceRoboticCallLogAddwx::getStatus, Arrays.asList(1, 2))
+                    .set(CompanyVoiceRoboticCallLogAddwx::getStatus, status)
+                    .update();
+        } catch (Exception e) {
+            log.warn("同步加微日志状态失败 - wxClientId: {}, status: {}", wxClientId, status, e);
+        }
+    }
+
     @Override
     public List<CompanyWxClient> getAddWxList(List<Long> accountIdList,Integer isWeCom) {
         return baseMapper.getAddWxList(accountIdList,isWeCom);

+ 19 - 7
fs-service/src/main/java/com/fs/company/service/impl/CompanyWxServiceImpl.java

@@ -421,6 +421,18 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
      * @param wxClientId 加微客户ID
      */
     public void triggerWorkflowOnAddWxSuccess(Long wxClientId) {
+        triggerWorkflowOnAddWxResult(wxClientId, true);
+    }
+
+    /**
+     * 加微失败后触发工作流继续执行(走失败分支)
+     * @param wxClientId 加微客户ID
+     */
+    public void triggerWorkflowOnAddWxFail(Long wxClientId) {
+        triggerWorkflowOnAddWxResult(wxClientId, false);
+    }
+
+    private void triggerWorkflowOnAddWxResult(Long wxClientId, boolean success) {
         try {
             // 先查老类型的等待中工作流实例
             CompanyAiWorkflowExec waitingExec = companyAiWorkflowExecMapper.selectWaitingAddWxWorkflowByWxClientId(
@@ -438,7 +450,7 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
             }
 
             if (waitingExec == null) {
-                log.info("未找到等待中的加微工作流实例 - wxClientId: {}", wxClientId);
+                log.info("未找到等待中的加微工作流实例 - wxClientId: {}, success: {}", wxClientId, success);
                 return;
             }
 
@@ -457,8 +469,8 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
             String workflowInstanceId = waitingExec.getWorkflowInstanceId();
             String currentNodeKey = waitingExec.getCurrentNodeKey();
 
-            log.info("加微成功回调,尝试触发工作流继续执行 - workflowInstanceId: {}, nodeKey: {}, wxClientId: {}",
-                    workflowInstanceId, currentNodeKey, wxClientId);
+            log.info("加微{}回调,尝试触发工作流继续执行 - workflowInstanceId: {}, nodeKey: {}, wxClientId: {}",
+                    success ? "成功" : "失败", workflowInstanceId, currentNodeKey, wxClientId);
 
             // 互斥检查:根据节点类型使用对应的互斥方法
             boolean canExecute;
@@ -475,17 +487,17 @@ public class CompanyWxServiceImpl extends ServiceImpl<CompanyWxAccountMapper, Co
 
             // 触发工作流继续执行
             Map<String, Object> inputData = new HashMap<>();
-            inputData.put("addWxSuccess", true);
+            inputData.put("addWxSuccess", success);
             inputData.put("wxClientId", wxClientId);
             inputData.put("triggerType", "callback");
 
             companyWorkflowEngine.resumeFromBlockingNode(workflowInstanceId, currentNodeKey, inputData);
 
-            log.info("加微成功回调触发工作流继续执行完成 - workflowInstanceId: {}, wxClientId: {}",
-                    workflowInstanceId, wxClientId);
+            log.info("加微{}回调触发工作流继续执行完成 - workflowInstanceId: {}, wxClientId: {}",
+                    success ? "成功" : "失败", workflowInstanceId, wxClientId);
 
         } catch (Exception ex) {
-            log.error("加微成功回调触发工作流异常 - wxClientId: {}", wxClientId, ex);
+            log.error("加微{}回调触发工作流异常 - wxClientId: {}", success ? "成功" : "失败", wxClientId, ex);
         }
     }
 

+ 20 - 2
fs-wx-api/src/main/java/com/fs/app/controller/CommonController.java

@@ -6,8 +6,10 @@ import com.fs.app.enums.CmdType;
 import com.fs.company.param.AddWxActionParam;
 import com.fs.app.websocket.bean.ResultMsgVo;
 import com.fs.common.core.domain.ResponseResult;
+import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.CompanyWxAccount;
 import com.fs.company.mapper.CompanyWxAccountMapper;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.wxcid.domain.WxContact;
 import com.fs.wxcid.mapper.WxContactMapper;
 import com.fs.wxcid.vo.wxvo.AddWxVo;
@@ -73,11 +75,18 @@ public class CommonController {
     @GetMapping("/addWx")
     public R addWx(String wxId, String phone, String remark){
         Session session = WebSocketServer.sessionPools.get(wxId);
+        if (session == null) {
+            log.warn("addWx 客户端未在线 wxId={}", wxId);
+            return R.error("客户端未在线");
+        }
         CompanyWxAccount companyWxAccount = companyWxAccountMapper.selectOne(new QueryWrapper<CompanyWxAccount>().eq("wx_no", wxId));
+        if (companyWxAccount == null) {
+            return R.error("未找到对应微信账号");
+        }
         WxContact wxContact = new WxContact();
         wxContact.setRemark(remark);
         wxContact.setNickName("测试1");
-        wxContact.setPhone(phone);
+        wxContact.setPhone(PhoneUtil.decryptPhone(phone));
         wxContact.setAccountId(companyWxAccount.getId());
         wxContact.setCompanyId(companyWxAccount.getCompanyId());
         wxContact.setCompanyUserId(companyWxAccount.getCompanyUserId());
@@ -90,8 +99,17 @@ public class CommonController {
     @PostMapping("/addWxAction")
     public R addWxAction(@RequestBody AddWxActionParam param){
         String wxId = param.getWxId();
+        if (StringUtils.isEmpty(wxId)) {
+            return R.error("微信号为空");
+        }
         Session session = WebSocketServer.sessionPools.get(wxId);
-        webSocketServer.sendMessage(session, ResultMsgVo.<AddWxVo>builder().cmd(CmdType.ADD_WX).data(new AddWxVo(param.getRemark(), param.getPhone(), param.getApplyMsg(), param.getBizJson())).build());
+        if (session == null) {
+            log.warn("addWxAction 客户端未在线 wxId={}", wxId);
+            return R.error("客户端未在线");
+        }
+        AddWxVo addWxVo = new AddWxVo(param.getRemark(), PhoneUtil.decryptPhone(param.getPhone()),
+                param.getApplyMsg(), param.getBizJson());
+        webSocketServer.sendMessage(session, ResultMsgVo.<AddWxVo>builder().cmd(CmdType.ADD_WX).data(addWxVo).build());
         return R.ok();
     }
 

+ 49 - 8
fs-wx-api/src/main/java/com/fs/app/controller/CompanyWxUserController.java

@@ -5,7 +5,10 @@ import com.fs.app.param.CompanyWxListParam;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.domain.R;
 import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.ServletUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.company.domain.CompanyUser;
+import com.fs.company.domain.CompanyWxClient;
 import com.fs.company.mapper.CompanyWxAccountMapper;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.company.service.ICompanyWxClientService;
@@ -16,6 +19,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
@@ -28,6 +32,7 @@ import java.util.List;
  * @author fs
  * @date 2022-12-21
  */
+@Slf4j
 @AllArgsConstructor
 @RestController
 @RequestMapping("/app/companyWxUser")
@@ -46,19 +51,55 @@ public class CompanyWxUserController extends AppBaseController
     public R toDayAddWxAccountList(){
         return R.ok().put("data", companyWxClientService.toDayAddWxAccountList(Long.parseLong(getUserId()), Long.parseLong(getAccountId()), 0));
     }
-    // 添加微信回调
+    // 添加微信回调(PAD 可无登录)
     @PostMapping("/addWxResult")
     public R addWxResult(@RequestBody AddWxResultVo vo){
-        vo.setAccountId(Long.parseLong(getAccountId()));
-        companyWxClientService.addWxResult(vo);
-        return R.ok();
+        return handleAddWxCallback(vo, false);
     }
-    // 加微成功回调接口
+    // 加微成功回调接口(PAD 可无登录)
     @PostMapping("/addWxTrueResult")
     public R addWxTrueResult(@RequestBody AddWxResultVo vo){
-        vo.setAccountId(Long.parseLong(getAccountId()));
-        companyWxClientService.addWxTrueResult(vo);
-        return R.ok();
+        return handleAddWxCallback(vo, true);
+    }
+
+    private R handleAddWxCallback(AddWxResultVo vo, boolean successResult) {
+        if (vo == null || vo.getId() == null) {
+            return R.error("参数不完整");
+        }
+        try {
+            String appWxToken = ServletUtils.getRequest().getHeader("APPWxToken");
+            if (StringUtils.isNotEmpty(appWxToken)) {
+                vo.setAccountId(Long.parseLong(getAccountId()));
+            }
+            if (!fillAccountIdIfAbsent(vo)) {
+                return R.error("未找到加微数据");
+            }
+            if (successResult) {
+                companyWxClientService.addWxTrueResult(vo);
+            } else {
+                companyWxClientService.addWxResult(vo);
+            }
+            return R.ok();
+        } catch (Exception e) {
+            log.error("加微回调处理失败 id={}, success={}", vo.getId(), successResult, e);
+            return R.error(e.getMessage() != null ? e.getMessage() : "回调处理失败");
+        }
+    }
+
+    /**
+     * 无登录时从加微记录补全 accountId(个微账号 ID)
+     */
+    private boolean fillAccountIdIfAbsent(AddWxResultVo vo) {
+        if (vo.getAccountId() != null) {
+            return true;
+        }
+        CompanyWxClient client = companyWxClientService.getById(vo.getId());
+        if (client == null) {
+            return false;
+        }
+        Long accountId = client.getAccountId() != null ? client.getAccountId() : client.getRoboticWxId();
+        vo.setAccountId(accountId);
+        return true;
     }
     // 添加中的个微列表
     @GetMapping("/addingList")

+ 34 - 21
fs-wx-api/src/main/java/com/fs/app/websocket/service/WebSocketServer.java

@@ -10,6 +10,7 @@ import com.fs.company.domain.CompanyWxClient;
 import com.fs.company.mapper.CompanyWxClientMapper;
 import com.fs.company.service.CompanyWorkflowEngine;
 import com.fs.company.service.ICompanyVoiceRoboticService;
+import com.fs.company.service.ICompanyWxClientService;
 import com.fs.company.service.impl.CompanyWxServiceImpl;
 import com.fs.core.config.TenantConfigContext;
 import com.fs.wxcid.domain.CidIpadServer;
@@ -55,6 +56,7 @@ public class WebSocketServer {
     IWxMsgLogService wxMsgLogService = SpringUtils.getBean(IWxMsgLogService.class);
     CompanyWxClientMapper companyWxClientMapper = SpringUtils.getBean(CompanyWxClientMapper.class);
     CompanyWxServiceImpl companyWxService = SpringUtils.getBean(CompanyWxServiceImpl.class);
+    ICompanyWxClientService companyWxClientService = SpringUtils.getBean(ICompanyWxClientService.class);
     CidIpadServerMapper cidIpadServerMapper = SpringUtils.getBean(CidIpadServerMapper.class);
     CompanyWorkflowEngine companyWorkflowEngine = SpringUtils.getBean(CompanyWorkflowEngine.class);
     ICompanyVoiceRoboticService companyVoiceRoboticService = SpringUtils.getBean(ICompanyVoiceRoboticService.class);
@@ -174,35 +176,51 @@ public class WebSocketServer {
                 case ADD_WX_RESULT:
                     com.fs.wxcid.vo.wxvo.AddResultWxVo addResultWxVo = JSON.parseObject(msg.getDataJson(), com.fs.wxcid.vo.wxvo.AddResultWxVo.class);
                     log.info("接收到加好友回调:{}", addResultWxVo);
-//                    WxContact wxContact = wxContactMapper.selectOne(new QueryWrapper<WxContact>().eq("remark", addResultWxVo.getRemark()).eq("friends", 0));
+                    if (addResultWxVo == null || StringUtils.isBlank(addResultWxVo.getBizJson())) {
+                        log.warn("加好友回调数据不完整,跳过工作流续跑 - wxId: {}, data: {}", wxId, addResultWxVo);
+                        break;
+                    }
+                    if (StringUtils.isBlank(addResultWxVo.getWxid())) {
+                        log.warn("加好友未成功(无 wxid),标记加微失败 - wxId: {}, remark: {}", wxId, addResultWxVo.getRemark());
+                        JSONObject failJson = JSONObject.parseObject(addResultWxVo.getBizJson());
+                        WxContact failContact = wxContactMapper.selectById(failJson.getLong("wxContactId"));
+                        if (failContact != null) {
+                            List<CompanyWxClient> failClients = companyWxClientMapper.selectWxV2(
+                                    companyWxAccount.getId(), failContact.getPhone());
+                            if (failClients != null) {
+                                failClients.forEach(item -> {
+                                    companyWxClientService.markAddWxFailed(item.getId());
+                                    companyWxService.triggerWorkflowOnAddWxFail(item.getId());
+                                });
+                            }
+                        }
+                        break;
+                    }
                     JSONObject jsonObject = JSONObject.parseObject(addResultWxVo.getBizJson());
                     WxContact wxContact = wxContactMapper.selectById(jsonObject.getLong("wxContactId"));
+                    if (wxContact == null) {
+                        log.error("加好友回调未找到联系人,跳过工作流续跑 - wxContactId: {}", jsonObject.getLong("wxContactId"));
+                        break;
+                    }
                     log.info("更新联系人:{}", wxContact);
                     wxContact.setFriends(1);
+                    // HIS 兼容:同时写 alias / userName
                     wxContact.setAlias(addResultWxVo.getWxid());
+                    wxContact.setUserName(addResultWxVo.getWxid());
                     wxContactMapper.updateById(wxContact);
                     List<CompanyWxClient> clients = companyWxClientMapper.selectWxV2(companyWxAccount.getId(), wxContact.getPhone());
                     log.info("更新联系人2:{}", clients);
-//                    if(clients != null){
-//                        clients.parallelStream().forEach(e -> {
-//                            e.setIsAdd(1);
-//                            e.setRemark(addResultWxVo.getRemark());
-//                            e.setWxName(addResultWxVo.getUserName());
-//                            e.setSuccessAddTime(LocalDateTime.now());
-//                            companyWxClientMapper.updateById(e);
-//                            companyWxService.triggerWorkflowOnAddWxSuccess(e.getId());
-//                        });
-//                    }
                     if (clients != null) {
                         List<CompletableFuture<Void>> futures = new ArrayList<>();
                         clients.forEach(e -> {
                             CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
                                 try {
-                                    e.setIsAdd(1);
-                                    e.setWxNo(addResultWxVo.getWxid());
-                                    e.setWxName(addResultWxVo.getUserName());
-                                    e.setSuccessAddTime(LocalDateTime.now());
-                                    companyWxClientMapper.updateById(e);
+                                    companyWxClientService.markAddWxSuccess(e.getId());
+                                    companyWxClientService.lambdaUpdate()
+                                            .eq(CompanyWxClient::getId, e.getId())
+                                            .set(CompanyWxClient::getWxNo, addResultWxVo.getWxid())
+                                            .set(CompanyWxClient::getWxName, addResultWxVo.getUserName())
+                                            .update();
                                     // 暂停检查:任务暂停中则跳过工作流触发,加微结果已保存,恢复时resumePausedInstances会自动检测并补触发
                                     if (e.getRoboticId() != null && companyVoiceRoboticService.isTaskPaused(e.getRoboticId())) {
                                         log.info("任务暂停中,加微结果已保存但不触发工作流继续执行 - taskId: {}, wxClientId: {}", e.getRoboticId(), e.getId());
@@ -219,11 +237,6 @@ public class WebSocketServer {
                         });
                         CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
                     }
-//                    if(null != addResultWxVo && StringUtils.isNotBlank(addResultWxVo.getBizJson())){
-//                        JSONObject jsonObject = JSONObject.parseObject(addResultWxVo.getBizJson());
-//                        jsonObject.put("remark",addResultWxVo.getRemark());
-//                        companyWorkflowEngine.addWxSuccess(jsonObject);
-//                    }
                     break;
 
             }