Explorar o código

到家了需求调整

lmx hai 1 semana
pai
achega
9d092a2891

+ 6 - 0
fs-company/src/main/java/com/fs/company/controller/company/CompanyWorkflowController.java

@@ -180,6 +180,12 @@ public class CompanyWorkflowController extends BaseController {
         return R.ok().put("data",optionVOS);
         return R.ok().put("data",optionVOS);
     }
     }
 
 
+    @GetMapping("/nodeTypeCodes/{workflowId}")
+    public R getNodeTypeCodes(@PathVariable("workflowId") Long workflowId) {
+        List<String> typeCodes = companyWorkflowService.selectNodeTypeCodesByWorkflowId(workflowId);
+        return R.ok().put("data", typeCodes);
+    }
+
     /**
     /**
      * 查询某个工作流的版本列表
      * 查询某个工作流的版本列表
      */
      */

+ 2 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyWorkflowService.java

@@ -107,4 +107,6 @@ public interface ICompanyWorkflowService {
     List<CompanyWorkflowNodeVoiceVo> getMyWorkflowNodes(Long companyUserId);
     List<CompanyWorkflowNodeVoiceVo> getMyWorkflowNodes(Long companyUserId);
 
 
     List<OptionVO> optionList(Long companyId);
     List<OptionVO> optionList(Long companyId);
+
+    List<String> selectNodeTypeCodesByWorkflowId(Long workflowId);
 }
 }

+ 13 - 6
fs-service/src/main/java/com/fs/company/service/impl/CompanyVoiceRoboticCallLogCallphoneServiceImpl.java

@@ -53,6 +53,7 @@ import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executor;
 
 
+import static com.fs.company.service.impl.call.node.AbstractWorkflowNode.companyVoiceRoboticMapper;
 import static com.fs.company.service.impl.call.node.AiCallTaskNode.EASYCALL_WORKFLOW_REDIS_KEY;
 import static com.fs.company.service.impl.call.node.AiCallTaskNode.EASYCALL_WORKFLOW_REDIS_KEY;
 
 
 /**
 /**
@@ -334,14 +335,20 @@ public class CompanyVoiceRoboticCallLogCallphoneServiceImpl extends ServiceImpl<
                     CompanyWxClient companyWxClient = companyWxClientServiceImpl.getOne(new QueryWrapper<CompanyWxClient>().eq("robotic_id", callees.getRoboticId()).eq("customer_id", callees.getUserId()));
                     CompanyWxClient companyWxClient = companyWxClientServiceImpl.getOne(new QueryWrapper<CompanyWxClient>().eq("robotic_id", callees.getRoboticId()).eq("customer_id", callees.getUserId()));
                     CompanyVoiceRoboticWx roboticWx = companyVoiceRoboticWxServiceImpl.getById(companyWxClient.getRoboticWxId());
                     CompanyVoiceRoboticWx roboticWx = companyVoiceRoboticWxServiceImpl.getById(companyWxClient.getRoboticWxId());
                     Long setCompanyUserId = null;
                     Long setCompanyUserId = null;
-                    if(Integer.valueOf(1).equals(companyWxClient.getIsWeCom())){
-                        CompanyWxAccount companyWxAccount = companyWxAccountMapper.selectCompanyWxAccountById(roboticWx.getAccountId());
-                        setCompanyUserId =  companyWxAccount.getCompanyUserId();
-                    }else if(Integer.valueOf(2).equals(companyWxClient.getIsWeCom())){
-                        QwUser qwUser = qwUserMapper.selectById(roboticWx.getAccountId());
-                        setCompanyUserId = qwUser.getCompanyUserId();
+                    if(null != roboticWx){
+                        if(Integer.valueOf(1).equals(companyWxClient.getIsWeCom())){
+                            CompanyWxAccount companyWxAccount = companyWxAccountMapper.selectCompanyWxAccountById(roboticWx.getAccountId());
+                            setCompanyUserId =  companyWxAccount.getCompanyUserId();
+                        }else if(Integer.valueOf(2).equals(companyWxClient.getIsWeCom())){
+                            QwUser qwUser = qwUserMapper.selectById(roboticWx.getAccountId());
+                            setCompanyUserId = qwUser.getCompanyUserId();
+                        }
+                    }else{
+                        CompanyVoiceRobotic robotic = companyVoiceRoboticMapper.selectCompanyVoiceRoboticById(callees.getRoboticId());
+                        setCompanyUserId = robotic.getCompanyUserId();
                     }
                     }
 
 
+
                     companyVoiceRoboticCallLog.setCompanyUserId(setCompanyUserId);
                     companyVoiceRoboticCallLog.setCompanyUserId(setCompanyUserId);
                     // 调用接口查询通话其他信息
                     // 调用接口查询通话其他信息
 //                TaskInfo dialogMap = aiCallService.getDialogMapNew(getDialogMap, companyVoiceRoboticCallLog.getCompanyId());
 //                TaskInfo dialogMap = aiCallService.getDialogMapNew(getDialogMap, companyVoiceRoboticCallLog.getCompanyId());

+ 33 - 17
fs-service/src/main/java/com/fs/company/service/impl/CompanyVoiceRoboticServiceImpl.java

@@ -131,6 +131,7 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
 
 
     private final EasyCallTaskControlService easyCallTaskControlService;
     private final EasyCallTaskControlService easyCallTaskControlService;
     private final CompanySiptaskInfoMapper companySiptaskInfoMapper;
     private final CompanySiptaskInfoMapper companySiptaskInfoMapper;
+    private final CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
 
 
     /** EasyCall intent 意向度重试队列 Redis key 前缀,value 为已重试次数 */
     /** EasyCall intent 意向度重试队列 Redis key 前缀,value 为已重试次数 */
     private static final String EASYCALL_INTENT_RETRY_KEY = "easycall:intent:retry:";
     private static final String EASYCALL_INTENT_RETRY_KEY = "easycall:intent:retry:";
@@ -204,19 +205,20 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
         }
         }
         int i = companyVoiceRoboticMapper.insert(companyVoiceRobotic);
         int i = companyVoiceRoboticMapper.insert(companyVoiceRobotic);
         int isWeCom = companyVoiceRobotic.getIsWeCom() == null ? 1 : companyVoiceRobotic.getIsWeCom();
         int isWeCom = companyVoiceRobotic.getIsWeCom() == null ? 1 : companyVoiceRobotic.getIsWeCom();
-        // 设置加微微信列表
         List<RoboticWxVo> qwUserList = companyVoiceRobotic.getQwUserList();
         List<RoboticWxVo> qwUserList = companyVoiceRobotic.getQwUserList();
-        List<CompanyVoiceRoboticWx> collect = qwUserList.stream().map(e -> {
-            CompanyVoiceRoboticWx entity = new CompanyVoiceRoboticWx();
-            entity.setIntention(e.getIntention());
-            entity.setRoboticId(companyVoiceRobotic.getId());
-            entity.setIsWeCom(isWeCom);
-            entity.setAccountId(e.getCompanyUserId());
-            entity.setWxDialogId(e.getWxDialogId());
-            entity.setSmsTempId(e.getSmsTempId());
-            return entity;
-        }).collect(Collectors.toList());
-        companyVoiceRoboticWxService.saveBatch(collect);
+        if (qwUserList != null && !qwUserList.isEmpty()) {
+            List<CompanyVoiceRoboticWx> collect = qwUserList.stream().map(e -> {
+                CompanyVoiceRoboticWx entity = new CompanyVoiceRoboticWx();
+                entity.setIntention(e.getIntention());
+                entity.setRoboticId(companyVoiceRobotic.getId());
+                entity.setIsWeCom(isWeCom);
+                entity.setAccountId(e.getCompanyUserId());
+                entity.setWxDialogId(e.getWxDialogId());
+                entity.setSmsTempId(e.getSmsTempId());
+                return entity;
+            }).collect(Collectors.toList());
+            companyVoiceRoboticWxService.saveBatch(collect);
+        }
         List<CompanyWxClient> clients = companyVoiceRobotic.getUserIds().stream().map(e -> {
         List<CompanyWxClient> clients = companyVoiceRobotic.getUserIds().stream().map(e -> {
             CompanyWxClient client = new CompanyWxClient();
             CompanyWxClient client = new CompanyWxClient();
             client.setRoboticId(companyVoiceRobotic.getId());
             client.setRoboticId(companyVoiceRobotic.getId());
@@ -1354,6 +1356,20 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
 
 
     }
     }
 
 
+    private boolean workflowHasAddWxNode(Long workflowId) {
+        if (workflowId == null) {
+            return false;
+        }
+        List<CompanyWorkflowNode> nodes = companyWorkflowNodeMapper.selectCompanyWorkflowNodeByWorkflowId(workflowId);
+        if (nodes == null || nodes.isEmpty()) {
+            return false;
+        }
+        return nodes.stream().anyMatch(n ->
+                NodeTypeEnum.AI_ADD_WX_TASK_NEW.getCode().equals(n.getNodeType())
+                || NodeTypeEnum.AI_QW_ADD_WX_TASK.getCode().equals(n.getNodeType())
+        );
+    }
+
     @Override
     @Override
     public void taskRun(Long id,Long tenantId) {
     public void taskRun(Long id,Long tenantId) {
         if(null != tenantId){
         if(null != tenantId){
@@ -1371,8 +1387,8 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
         }
         }
         robotic.setTaskStatus(1);
         robotic.setTaskStatus(1);
         updateById(robotic);
         updateById(robotic);
-        // 根据任务加微方式决定是否直接分配微信 平均时 直接分配用户 场景任务不做分配
-        if (Integer.valueOf(0).equals(robotic.getAddType()) && robotic.getTaskType().equals(TaskTypeEnum.ORDINARY.getValue())) {
+        boolean hasAddWxNode = workflowHasAddWxNode(robotic.getCompanyAiWorkflowId());
+        if (hasAddWxNode && Integer.valueOf(0).equals(robotic.getAddType()) && robotic.getTaskType().equals(TaskTypeEnum.ORDINARY.getValue())) {
             allocateWx(robotic);
             allocateWx(robotic);
         }
         }
         // 新增启动写入任务业务表数据
         // 新增启动写入任务业务表数据
@@ -1481,10 +1497,10 @@ public class CompanyVoiceRoboticServiceImpl extends ServiceImpl<CompanyVoiceRobo
         callee.setRunTaskFlow(companyVoiceRobotic.getRunTaskFlow());
         callee.setRunTaskFlow(companyVoiceRobotic.getRunTaskFlow());
         callee.setIsWeCom(companyVoiceRobotic.getIsWeCom());
         callee.setIsWeCom(companyVoiceRobotic.getIsWeCom());
         companyVoiceRoboticCalleesService.save(callee);
         companyVoiceRoboticCalleesService.save(callee);
-        //分配用户
-        if (Integer.valueOf(0).equals(companyVoiceRobotic.getAddType())) {
+        boolean hasAddWxNode = workflowHasAddWxNode(companyVoiceRobotic.getCompanyAiWorkflowId());
+        if (hasAddWxNode && Integer.valueOf(0).equals(companyVoiceRobotic.getAddType())) {
             allocateWx4SceneTask(companyVoiceRobotic, client.getId());
             allocateWx4SceneTask(companyVoiceRobotic, client.getId());
-        } else if (Integer.valueOf(1).equals(companyVoiceRobotic.getAddType())) {
+        } else if (hasAddWxNode && Integer.valueOf(1).equals(companyVoiceRobotic.getAddType())) {
             String intention = crmCustomer.getIntention();
             String intention = crmCustomer.getIntention();
             String queryIntention = intention;
             String queryIntention = intention;
             if (!isPositiveInteger(intention)) {
             if (!isPositiveInteger(intention)) {

+ 14 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyWorkflowServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.util.*;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * AI工作流Service业务层处理
  * AI工作流Service业务层处理
@@ -699,4 +700,17 @@ public class CompanyWorkflowServiceImpl implements ICompanyWorkflowService {
 
 
         return workflowId;
         return workflowId;
     }
     }
+
+    @Override
+    public List<String> selectNodeTypeCodesByWorkflowId(Long workflowId) {
+        List<CompanyWorkflowNode> nodes = companyWorkflowNodeMapper.selectCompanyWorkflowNodeByWorkflowId(workflowId);
+        if (nodes == null || nodes.isEmpty()) {
+            return new ArrayList<>();
+        }
+        return nodes.stream()
+                .map(CompanyWorkflowNode::getNodeType)
+                .filter(Objects::nonNull)
+                .distinct()
+                .collect(Collectors.toList());
+    }
 }
 }

+ 6 - 0
fs-service/src/main/java/com/fs/his/utils/PhoneUtil.java

@@ -8,6 +8,12 @@ import java.util.Base64;
 
 
 public class PhoneUtil {
 public class PhoneUtil {
 
 
+    public static void main(String[] args) {
+        String s = decryptPhone("5tT/VWNAryGvcKltfyEgKA==");
+        System.out.println(s);
+
+    }
+
     public static String encryptPhone(String text) {
     public static String encryptPhone(String text) {
         String encryptedText=null;
         String encryptedText=null;
         try {
         try {

+ 1 - 1
fs-service/src/main/resources/db/tenant-initTable.sql

@@ -18356,7 +18356,7 @@ CREATE TABLE `company_siptask_info`
     `task_json`   text NULL COMMENT 'sip外呼任务',
     `task_json`   text NULL COMMENT 'sip外呼任务',
     PRIMARY KEY (`id`) USING BTREE,
     PRIMARY KEY (`id`) USING BTREE,
     INDEX         `task_node_key_idx`(`task_id`, `node_key`) USING BTREE
     INDEX         `task_node_key_idx`(`task_id`, `node_key`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 94 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '任务与外呼sip任务关联关系表' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '任务与外呼sip任务关联关系表' ROW_FORMAT = Dynamic;
 
 
 -- ----------------------------
 -- ----------------------------
 -- Table structure for company_inbound_bind
 -- Table structure for company_inbound_bind