|
@@ -1,6 +1,10 @@
|
|
|
package com.fs.his.service.impl;
|
|
package com.fs.his.service.impl;
|
|
|
|
|
|
|
|
|
|
+import com.fs.common.core.domain.AjaxResult;
|
|
|
import com.fs.common.utils.DateUtils;
|
|
import com.fs.common.utils.DateUtils;
|
|
|
|
|
+import com.fs.common.utils.spring.SpringUtils;
|
|
|
|
|
+import com.fs.company.domain.CompanyUser;
|
|
|
|
|
+import com.fs.company.mapper.CompanyUserMapper;
|
|
|
import com.fs.his.domain.FsAiWorkflow;
|
|
import com.fs.his.domain.FsAiWorkflow;
|
|
|
import com.fs.his.domain.FsAiWorkflowEdge;
|
|
import com.fs.his.domain.FsAiWorkflowEdge;
|
|
|
import com.fs.his.domain.FsAiWorkflowNode;
|
|
import com.fs.his.domain.FsAiWorkflowNode;
|
|
@@ -10,8 +14,10 @@ import com.fs.his.mapper.FsAiWorkflowMapper;
|
|
|
import com.fs.his.mapper.FsAiWorkflowNodeMapper;
|
|
import com.fs.his.mapper.FsAiWorkflowNodeMapper;
|
|
|
import com.fs.his.mapper.FsAiWorkflowNodeTypeMapper;
|
|
import com.fs.his.mapper.FsAiWorkflowNodeTypeMapper;
|
|
|
import com.fs.his.param.FsAiWorkflowSaveParam;
|
|
import com.fs.his.param.FsAiWorkflowSaveParam;
|
|
|
|
|
+import com.fs.his.param.FsAiWorkflowUpdateBindWCParam;
|
|
|
import com.fs.his.service.IFsAiWorkflowService;
|
|
import com.fs.his.service.IFsAiWorkflowService;
|
|
|
import com.fs.his.vo.FsAiWorkflowExportVO;
|
|
import com.fs.his.vo.FsAiWorkflowExportVO;
|
|
|
|
|
+import com.fs.his.vo.FsAiWorkflowNodeVoiceVo;
|
|
|
import com.fs.his.vo.FsAiWorkflowVO;
|
|
import com.fs.his.vo.FsAiWorkflowVO;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -39,6 +45,7 @@ public class FsAiWorkflowServiceImpl implements IFsAiWorkflowService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private FsAiWorkflowNodeTypeMapper fsAiWorkflowNodeTypeMapper;
|
|
private FsAiWorkflowNodeTypeMapper fsAiWorkflowNodeTypeMapper;
|
|
|
|
|
|
|
|
|
|
+ private static List<String> aiCallNodeTypes = Arrays.asList("param", "ai_chat","end");
|
|
|
@Override
|
|
@Override
|
|
|
public FsAiWorkflowVO selectFsAiWorkflowById(Long workflowId) {
|
|
public FsAiWorkflowVO selectFsAiWorkflowById(Long workflowId) {
|
|
|
FsAiWorkflow workflow = fsAiWorkflowMapper.selectFsAiWorkflowById(workflowId);
|
|
FsAiWorkflow workflow = fsAiWorkflowMapper.selectFsAiWorkflowById(workflowId);
|
|
@@ -110,6 +117,28 @@ public class FsAiWorkflowServiceImpl implements IFsAiWorkflowService {
|
|
|
fsAiWorkflowEdgeMapper.batchInsertFsAiWorkflowEdge(edges);
|
|
fsAiWorkflowEdgeMapper.batchInsertFsAiWorkflowEdge(edges);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //更新工作流后,需要删除或新增录音节点对应的id
|
|
|
|
|
+
|
|
|
|
|
+ List<String> nodeKeyOlds = fsAiWorkflowMapper.selectFsAiWorkflowNodeByWorkflowId(workflowId);
|
|
|
|
|
+ List<Long> companyUserIds = fsAiWorkflowMapper.selectWorkflowCompanyUserByWfId(workflowId);
|
|
|
|
|
+
|
|
|
|
|
+ // 提取新节点的nodeKey
|
|
|
|
|
+ List<String> newNodeKeys = nodes.stream()
|
|
|
|
|
+ .filter(node -> aiCallNodeTypes.contains(node.getNodeType()))
|
|
|
|
|
+ .map(FsAiWorkflowNode::getNodeKey)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ // 找出新增的nodeKey(新节点中有,旧节点中没有)
|
|
|
|
|
+ List<String> nodeKeyAdd = newNodeKeys.stream()
|
|
|
|
|
+ .filter(key -> !nodeKeyOlds.contains(key))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
|
|
+ // 找出需要删除的nodeKey(旧节点中有,新节点中没有)
|
|
|
|
|
+ List<String> nodeKeyDel = nodeKeyOlds.stream()
|
|
|
|
|
+ .filter(key -> !newNodeKeys.contains(key))
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ if (!nodeKeyDel.isEmpty())fsAiWorkflowMapper.deleteAiWorkflowCompanyUserVoice(workflowId, nodeKeyDel);
|
|
|
|
|
+ if (!nodeKeyAdd.isEmpty())fsAiWorkflowMapper.addAiWorkflowCompanyUserVoice(workflowId,companyUserIds, nodeKeyAdd);
|
|
|
return workflowId;
|
|
return workflowId;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -244,6 +273,11 @@ public class FsAiWorkflowServiceImpl implements IFsAiWorkflowService {
|
|
|
return exportVO;
|
|
return exportVO;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<CompanyUser> listCompanyUser() {
|
|
|
|
|
+ return SpringUtils.getBean(CompanyUserMapper.class).selectAllCompanyUserList();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private String getWorkflowTypeName(Integer workflowType) {
|
|
private String getWorkflowTypeName(Integer workflowType) {
|
|
|
if (workflowType == null) return "";
|
|
if (workflowType == null) return "";
|
|
|
switch (workflowType) {
|
|
switch (workflowType) {
|
|
@@ -299,4 +333,37 @@ public class FsAiWorkflowServiceImpl implements IFsAiWorkflowService {
|
|
|
updateNode.setVoiceUrl(voiceUrl);
|
|
updateNode.setVoiceUrl(voiceUrl);
|
|
|
return fsAiWorkflowNodeMapper.updateFsAiWorkflowNode(updateNode);
|
|
return fsAiWorkflowNodeMapper.updateFsAiWorkflowNode(updateNode);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public CompanyUser getCompanyUserById(Long id) {
|
|
|
|
|
+ return SpringUtils.getBean(CompanyUserMapper.class).selectCompanyUserById( id);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Boolean checkCompanyUserBeUsed(Long companyUserId) {
|
|
|
|
|
+ return fsAiWorkflowMapper.selectFsAiWorkflowCountByCompanyUserId(companyUserId) > 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public AjaxResult updateWorkflowBindCompanyUser(FsAiWorkflowUpdateBindWCParam param) {
|
|
|
|
|
+ if (param == null ||param.getWorkflowId() == null || param.getCompanyUserIds() == null || param.getCompanyUserIds().size() == 0) return AjaxResult.error("传参异常");
|
|
|
|
|
+ FsAiWorkflow fsAiWorkflowResult = fsAiWorkflowMapper.selectFsAiWorkflowById(Long.valueOf(param.getWorkflowId().toString()));
|
|
|
|
|
+ if (fsAiWorkflowResult == null)return AjaxResult.error("未查询到对应工作流,请刷新后重试");
|
|
|
|
|
+ int i = fsAiWorkflowMapper.insertFsAiWorkflowCompanyUser(param.getWorkflowId(),param.getCompanyUserIds());
|
|
|
|
|
+ List<FsAiWorkflowNode> fsAiWorkflowNodes = fsAiWorkflowNodeMapper.selectNodesByWorkflowIdAndTypes(param.getWorkflowId(), aiCallNodeTypes);
|
|
|
|
|
+ fsAiWorkflowMapper.insertAiWorkflowCompanyUserVoice(param.getWorkflowId(), param.getCompanyUserIds(), fsAiWorkflowNodes);
|
|
|
|
|
+ return AjaxResult.success("绑定成功");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public AjaxResult getBindCompanyUserByWorkflowId(Long workflowId) {
|
|
|
|
|
+ FsAiWorkflow fsAiWorkflow = fsAiWorkflowMapper.selectFsAiWorkflowById(workflowId);
|
|
|
|
|
+ if (fsAiWorkflow == null) return AjaxResult.error("工作流不存在");
|
|
|
|
|
+ return AjaxResult.success(fsAiWorkflowMapper.getBindCompanyUserByWorkflowId(workflowId));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<FsAiWorkflowNodeVoiceVo> getMyWorkflowNodes(Long companyUserId) {
|
|
|
|
|
+ return fsAiWorkflowMapper.getMyWorkflowNodes(companyUserId);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|