批量任务

This commit is contained in:
zhangheng 2026-04-29 16:46:49 +08:00
parent bbe1efc28a
commit 07c54ef256
19 changed files with 514 additions and 52 deletions

View File

@ -220,10 +220,15 @@ public class Constants {
public static final String OUTPATIENT = "outpatient"; public static final String OUTPATIENT = "outpatient";
/** /**
* 门诊患者 * 患者导入
*/ */
public static final String PATIENT_INFO_IMPORT = "patientInfoImport"; public static final String PATIENT_INFO_IMPORT = "patientInfoImport";
/**
* 患者导入
*/
public static final String BATCH_SEND_TASK_INFO = "batchSendTaskInfo";
/** /**
* 预住院 * 预住院
*/ */

View File

@ -117,4 +117,10 @@ public class BatchSendTaskInfoController extends BaseController {
public AjaxResult batchSend(@RequestBody BatchSendTaskRecordDto batchSendTaskRecordDto) throws Exception { public AjaxResult batchSend(@RequestBody BatchSendTaskRecordDto batchSendTaskRecordDto) throws Exception {
return batchSendTaskInfoService.batchSend(batchSendTaskRecordDto); return batchSendTaskInfoService.batchSend(batchSendTaskRecordDto);
} }
@ApiOperation("标签信息")
@GetMapping("/getPhysicalExaminationLabel")
public List<String> getPhysicalExaminationLabel(){
return batchSendTaskInfoService.getPhysicalExaminationLabel();
}
} }

View File

@ -73,6 +73,9 @@ public class ImportDownloadController {
// 通过流讲文件复制到file中 // 通过流讲文件复制到file中
FileUtils.copyToFile(resource.getInputStream(), file); FileUtils.copyToFile(resource.getInputStream(), file);
break; break;
case Constants.BATCH_SEND_TASK_INFO:
file = ResourceUtils.getFile("classpath:template/批量发送任务信息.xlsx");
break;
} }
if (Objects.isNull(file)) { if (Objects.isNull(file)) {
throw new ServiceException("下载导入模板文件失败,请联系管理员!"); throw new ServiceException("下载导入模板文件失败,请联系管理员!");

View File

@ -92,10 +92,10 @@ public class BatchSendTaskInfo extends BaseEntity {
private Date visitDate; private Date visitDate;
/** /**
* 门诊/住院/体检 * 体检/门诊/住院
*/ */
@ApiModelProperty(value = "门诊/住院/体检") @ApiModelProperty(value = "体检/门诊/住院号")
@Excel(name = "门诊/住院/体检") @Excel(name = "体检/门诊/住院号")
private String inHospitalNumber; private String inHospitalNumber;
/** /**
@ -106,10 +106,10 @@ public class BatchSendTaskInfo extends BaseEntity {
private String patientName; private String patientName;
/** /**
* 患者电话 * 联系电话
*/ */
@ApiModelProperty(value = "患者电话") @ApiModelProperty(value = "联系电话")
@Excel(name = "电话") @Excel(name = "联系电话")
private String patientPhone; private String patientPhone;
/** /**
@ -150,7 +150,7 @@ public class BatchSendTaskInfo extends BaseEntity {
* 体检总结/主要诊断 * 体检总结/主要诊断
*/ */
@ApiModelProperty(value = "体检总结/主要诊断") @ApiModelProperty(value = "体检总结/主要诊断")
@Excel(name = "体检总结/主要诊断") @Excel(name = "总检结论")
private String physicalExaminationSummary; private String physicalExaminationSummary;
/** /**

View File

@ -0,0 +1,48 @@
package com.xinelu.manage.domain.batchsendtasklabelinfo;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 批量推送任务标签信息表对象 batch_send_task_label_info
*
* @author xinelu
* @date 2026-04-29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "批量推送任务标签信息表对象", description = "batch_send_task_label_info")
public class BatchSendTaskLabelInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 标签id
*/
private Long id;
/**
* 总结标签
*/
@ApiModelProperty(value = "总结标签")
@Excel(name = "总结标签")
private String physicalExaminationLabel;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("physicalExaminationLabel", getPhysicalExaminationLabel())
.toString();
}
}

View File

@ -47,6 +47,11 @@ public class BatchSendTaskVariableInfo extends BaseEntity {
@ApiModelProperty(value = "批量推送任务记录表id") @ApiModelProperty(value = "批量推送任务记录表id")
private Long batchSendTaskRecordId; private Long batchSendTaskRecordId;
/**
* 批量推送任务表id
*/
@ApiModelProperty(value = "批量推送任务表id")
private Long batchSendTaskId;
@Override @Override
public String toString() { public String toString() {
@ -55,6 +60,7 @@ public class BatchSendTaskVariableInfo extends BaseEntity {
.append("variable", getVariable()) .append("variable", getVariable())
.append("variableAttribute", getVariableAttribute()) .append("variableAttribute", getVariableAttribute())
.append("batchSendTaskRecordId", getBatchSendTaskRecordId()) .append("batchSendTaskRecordId", getBatchSendTaskRecordId())
.append("batchSendTaskId", getBatchSendTaskId())
.append("createBy", getCreateBy()) .append("createBy", getCreateBy())
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.toString(); .toString();

View File

@ -0,0 +1,70 @@
package com.xinelu.manage.mapper.batchsendtasklabelinfo;
import com.xinelu.manage.domain.batchsendtasklabelinfo.BatchSendTaskLabelInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 批量推送任务标签信息表Mapper接口
*
* @author xinelu
* @date 2026-04-29
*/
public interface BatchSendTaskLabelInfoMapper {
/**
* 查询批量推送任务标签信息表
*
* @param id 批量推送任务标签信息表主键
* @return 批量推送任务标签信息表
*/
BatchSendTaskLabelInfo selectBatchSendTaskLabelInfoById(Long id);
/**
* 查询批量推送任务标签信息表列表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 批量推送任务标签信息表集合
*/
List<BatchSendTaskLabelInfo> selectBatchSendTaskLabelInfoList(BatchSendTaskLabelInfo batchSendTaskLabelInfo);
/**
* 新增批量推送任务标签信息表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 结果
*/
int insertBatchSendTaskLabelInfo(BatchSendTaskLabelInfo batchSendTaskLabelInfo);
/**
* 修改批量推送任务标签信息表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 结果
*/
int updateBatchSendTaskLabelInfo(BatchSendTaskLabelInfo batchSendTaskLabelInfo);
/**
* 删除批量推送任务标签信息表
*
* @param id 批量推送任务标签信息表主键
* @return 结果
*/
int deleteBatchSendTaskLabelInfoById(Long id);
/**
* 批量删除批量推送任务标签信息表
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteBatchSendTaskLabelInfoByIds(Long[] ids);
/**
* 新增患者信息
*
* @param labels 批量任务信息
* @return 结果
*/
int insertBatchSendTaskLabelInfList(@Param("list") List<String> labels);
}

View File

@ -88,4 +88,12 @@ public interface ScriptInfoMapper {
* @return 话术信息集合 * @return 话术信息集合
*/ */
List<ScriptInfo> selectScriptInfos(); List<ScriptInfo> selectScriptInfos();
/**
* 根据机器人编号查询变量信息
*
* @param robotPublishId
* @return String
*/
String selectVariablesByRobotPublishId(String robotPublishId);
} }

View File

@ -5,7 +5,6 @@ import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ClientException;
import com.sun.media.jfxmedia.logging.Logger;
import com.xinelu.common.config.AliYunSmsTwoConfig; import com.xinelu.common.config.AliYunSmsTwoConfig;
import com.xinelu.common.config.SystemBusinessConfig; import com.xinelu.common.config.SystemBusinessConfig;
import com.xinelu.common.constant.*; import com.xinelu.common.constant.*;
@ -13,6 +12,7 @@ import com.xinelu.common.core.redis.RedisCache;
import com.xinelu.common.enums.*; import com.xinelu.common.enums.*;
import com.xinelu.common.exception.ServiceException; import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.StringUtils; import com.xinelu.common.utils.StringUtils;
import com.xinelu.manage.domain.batchsendtaskinfo.BatchSendTaskInfo;
import com.xinelu.manage.domain.patientinfo.PatientInfo; import com.xinelu.manage.domain.patientinfo.PatientInfo;
import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult; import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult;
import com.xinelu.manage.domain.patientquestionsubjectresult.PatientQuestionSubjectResult; import com.xinelu.manage.domain.patientquestionsubjectresult.PatientQuestionSubjectResult;
@ -31,6 +31,7 @@ import com.xinelu.manage.domain.textmessage.TextMessage;
import com.xinelu.manage.dto.aiob.*; import com.xinelu.manage.dto.aiob.*;
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO; import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
import com.xinelu.manage.dto.smssend.SmsInfoDTO; import com.xinelu.manage.dto.smssend.SmsInfoDTO;
import com.xinelu.manage.mapper.batchsendtaskinfo.BatchSendTaskInfoMapper;
import com.xinelu.manage.mapper.labelfieldcontent.LabelFieldContentMapper; import com.xinelu.manage.mapper.labelfieldcontent.LabelFieldContentMapper;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper; import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
import com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper; import com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper;
@ -143,6 +144,8 @@ public class AIOBServiceImpl implements IAIOBService {
private ScriptInfoTaskInfoMapper scriptInfoTaskInfoMapper; private ScriptInfoTaskInfoMapper scriptInfoTaskInfoMapper;
@Resource @Resource
private PatientVisitRecordMapper patientVisitRecordMapper; private PatientVisitRecordMapper patientVisitRecordMapper;
@Resource
private BatchSendTaskInfoMapper batchSendTaskInfoMapper;
/** /**
* @description 获取外呼平台accessToken * @description 获取外呼平台accessToken
@ -366,7 +369,6 @@ public class AIOBServiceImpl implements IAIOBService {
signPatientManageRouteNode.setNodeFinishStatus(NodeExecuteResultStatusEnum.FAILURE.getInfo()); signPatientManageRouteNode.setNodeFinishStatus(NodeExecuteResultStatusEnum.FAILURE.getInfo());
} }
} }
} }
} else { } else {
signPatientManageRouteNode.setPhoneNodeExecuteResultStatus(NodeExecuteResultStatusEnum.SUCCESS.getInfo()); signPatientManageRouteNode.setPhoneNodeExecuteResultStatus(NodeExecuteResultStatusEnum.SUCCESS.getInfo());
@ -398,24 +400,25 @@ public class AIOBServiceImpl implements IAIOBService {
patientTaskExecuteRecord.setPatientId(signPatientManageRoute.getPatientId()); patientTaskExecuteRecord.setPatientId(signPatientManageRoute.getPatientId());
patientTaskExecuteRecord.setPatientName(signPatientManageRoute.getPatientName()); patientTaskExecuteRecord.setPatientName(signPatientManageRoute.getPatientName());
// 签约记录 // 签约记录
SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signPatientManageRoute.getSignPatientRecordId()); SignPatientRecord signPatientRecord = new SignPatientRecord();
//针对batch_send_task_info表未签约未存patient_info表处理
if (Objects.nonNull(signPatientManageRoute.getSignPatientRecordId())){
signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(signPatientManageRoute.getSignPatientRecordId());
}
if (ObjectUtils.isNotEmpty(signPatientRecord)) { if (ObjectUtils.isNotEmpty(signPatientRecord)) {
patientTaskExecuteRecord.setVisitRecordId(signPatientRecord.getPatientVisitRecordId()); patientTaskExecuteRecord.setVisitRecordId(signPatientRecord.getPatientVisitRecordId());
} }
// 发送短信 // 发送短信
if (needSendSms) { if (needSendSms) {
//System.out.println("发送短信-------------------------------------------"); sendSms(signPatientManageRoute.getPatientId(), signPatientManageRouteNode, signPatientManageRoute.getBatchSendTaskId());
sendSms(signPatientManageRoute.getPatientId(), signPatientManageRouteNode);
} }
// 重拨 // 重拨
if (needRedial) { if (needRedial) {
if (ObjectUtils.isNotEmpty(signPatientRecord)) { if (ObjectUtils.isNotEmpty(signPatientRecord)) {
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId()); PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId());
redialInfoSave(signPatientManageRouteNode, patientVisitRecord); redialInfoSave(signPatientManageRouteNode, patientVisitRecord);
} } else {
else
{
redialInfoSave(signPatientManageRouteNode, null); redialInfoSave(signPatientManageRouteNode, null);
} }
} }
@ -445,10 +448,12 @@ public class AIOBServiceImpl implements IAIOBService {
phoneDialRecordMapper.insertPhoneDialRecord(phoneDialRecord); phoneDialRecordMapper.insertPhoneDialRecord(phoneDialRecord);
// 修改任务统计表数据 // 修改任务统计表数据 添加getPatientId判断针对batch_send_task_info表未签约未存patient_info表处理
if (patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) > 0) { if (Objects.nonNull(patientTaskExecuteRecord.getPatientId()) && patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) > 0) {
// 任务统计表修改 // 任务统计表修改
patientTaskStatisticsService.updateNum(signPatientManageRoute.getPatientId(), TaskStatisticsTypeConstants.TASK_EXECUTE_NUM, 1); if (Objects.nonNull(signPatientManageRoute.getPatientId())){
patientTaskStatisticsService.updateNum(signPatientManageRoute.getPatientId(), TaskStatisticsTypeConstants.TASK_EXECUTE_NUM, 1);
}
} }
//接通状态1-已接通 //接通状态1-已接通
@ -503,12 +508,21 @@ public class AIOBServiceImpl implements IAIOBService {
return obj.getOrDefault("downloadUrl", null).toString(); return obj.getOrDefault("downloadUrl", null).toString();
} }
private void sendSms(Long patientId, SignPatientManageRouteNode signPatientManageRouteNode) throws ClientException { private void sendSms(Long patientId, SignPatientManageRouteNode signPatientManageRouteNode, Long batchSendTaskId) throws ClientException {
TextMessage textMessage = textMessageMapper.selectTextMessageById(signPatientManageRouteNode.getPhoneMessageTemplateId()); TextMessage textMessage = textMessageMapper.selectTextMessageById(signPatientManageRouteNode.getPhoneMessageTemplateId());
if (ObjectUtils.isNotEmpty(textMessage)) { if (ObjectUtils.isNotEmpty(textMessage)) {
// 发送短信 // 发送短信
SmsInfoDTO smsInfoDTO = new SmsInfoDTO(); SmsInfoDTO smsInfoDTO = new SmsInfoDTO();
String patientPhone = signPatientManageRouteMapper.selectPatientPhone(patientId); String patientPhone = null;
//添加PatientId判断针对batch_send_task_info表未签约未存patient_info表处理
if (Objects.nonNull(patientId)){
patientPhone = signPatientManageRouteMapper.selectPatientPhone(patientId);
}
if (Objects.nonNull(patientId)){
//批量推送任务表没有同步到患者表所以分开查询
BatchSendTaskInfo batchSendTaskInfo = batchSendTaskInfoMapper.selectBatchSendTaskInfoById(batchSendTaskId);
patientPhone = batchSendTaskInfo.getPatientPhone();
}
smsInfoDTO.setPhoneNumbers(patientPhone); smsInfoDTO.setPhoneNumbers(patientPhone);
smsInfoDTO.setSignName(aliYunSmsTwoConfig.getSignName()); smsInfoDTO.setSignName(aliYunSmsTwoConfig.getSignName());
smsInfoDTO.setTemplateCode(textMessage.getTextMessageId()); smsInfoDTO.setTemplateCode(textMessage.getTextMessageId());

View File

@ -79,5 +79,12 @@ public interface IBatchSendTaskInfoService {
* @return AjaxResult * @return AjaxResult
* @throws ClientException * @throws ClientException
*/ */
AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException; AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException, IllegalAccessException;
/**
* 搜素框添加 标签信息
*
* @return String
*/
List<String> getPhysicalExaminationLabel();
} }

View File

@ -21,6 +21,7 @@ import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.regex.RegexUtil; import com.xinelu.common.utils.regex.RegexUtil;
import com.xinelu.manage.domain.agency.Agency; import com.xinelu.manage.domain.agency.Agency;
import com.xinelu.manage.domain.batchsendtaskinfo.BatchSendTaskInfo; import com.xinelu.manage.domain.batchsendtaskinfo.BatchSendTaskInfo;
import com.xinelu.manage.domain.batchsendtasklabelinfo.BatchSendTaskLabelInfo;
import com.xinelu.manage.domain.batchsendtaskrecordinfo.BatchSendTaskRecordInfo; import com.xinelu.manage.domain.batchsendtaskrecordinfo.BatchSendTaskRecordInfo;
import com.xinelu.manage.domain.batchsendtaskvariableinfo.BatchSendTaskVariableInfo; import com.xinelu.manage.domain.batchsendtaskvariableinfo.BatchSendTaskVariableInfo;
import com.xinelu.manage.domain.dialtime.DialTime; import com.xinelu.manage.domain.dialtime.DialTime;
@ -35,9 +36,11 @@ import com.xinelu.manage.dto.batchsendtaskrecordinfo.BatchSendTaskRecordDto;
import com.xinelu.manage.dto.smssend.SmsInfoDTO; import com.xinelu.manage.dto.smssend.SmsInfoDTO;
import com.xinelu.manage.mapper.agency.AgencyMapper; import com.xinelu.manage.mapper.agency.AgencyMapper;
import com.xinelu.manage.mapper.batchsendtaskinfo.BatchSendTaskInfoMapper; import com.xinelu.manage.mapper.batchsendtaskinfo.BatchSendTaskInfoMapper;
import com.xinelu.manage.mapper.batchsendtasklabelinfo.BatchSendTaskLabelInfoMapper;
import com.xinelu.manage.mapper.batchsendtaskrecordinfo.BatchSendTaskRecordInfoMapper; import com.xinelu.manage.mapper.batchsendtaskrecordinfo.BatchSendTaskRecordInfoMapper;
import com.xinelu.manage.mapper.batchsendtaskvariableinfo.BatchSendTaskVariableInfoMapper; import com.xinelu.manage.mapper.batchsendtaskvariableinfo.BatchSendTaskVariableInfoMapper;
import com.xinelu.manage.mapper.patientinfoimportmain.PatientInfoImportMainMapper; import com.xinelu.manage.mapper.patientinfoimportmain.PatientInfoImportMainMapper;
import com.xinelu.manage.mapper.scriptInfo.ScriptInfoMapper;
import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper; import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper;
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
import com.xinelu.manage.service.aiob.IAIOBService; import com.xinelu.manage.service.aiob.IAIOBService;
@ -46,12 +49,14 @@ import com.xinelu.system.mapper.SysUserMapper;
import com.xinelu.system.service.ISysDictTypeService; import com.xinelu.system.service.ISysDictTypeService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -95,6 +100,11 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
private String callBackUrl; private String callBackUrl;
@Resource @Resource
private AliYunSmsConfig aliyunSmsConfig; private AliYunSmsConfig aliyunSmsConfig;
@Resource
private BatchSendTaskLabelInfoMapper batchSendTaskLabelInfoMapper;
@Resource
private ScriptInfoMapper scriptInfoMapper;
private static final String SUCCESS = "OK"; private static final String SUCCESS = "OK";
/** /**
@ -182,6 +192,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
return AjaxResult.error("该账号无所属医院信息,请先配置该账号所属的医院信息!"); return AjaxResult.error("该账号无所属医院信息,请先配置该账号所属的医院信息!");
} }
String sn = "batch_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); String sn = "batch_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
List<String> stringList = new ArrayList<>();
for (BatchSendTaskInfo batchSendTaskInfo : list) { for (BatchSendTaskInfo batchSendTaskInfo : list) {
batchSendTaskInfo.setSn(sn); batchSendTaskInfo.setSn(sn);
batchSendTaskInfo.setHospitalAgencyId(agency.getId()); batchSendTaskInfo.setHospitalAgencyId(agency.getId());
@ -198,12 +209,21 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
} }
if (StringUtils.isNotBlank(batchSendTaskInfo.getPhysicalExaminationSummary())) { if (StringUtils.isNotBlank(batchSendTaskInfo.getPhysicalExaminationSummary())) {
String[] strings = BracketExtractor.extractToArray(batchSendTaskInfo.getPhysicalExaminationSummary()); String[] strings = BracketExtractor.extractToArray(batchSendTaskInfo.getPhysicalExaminationSummary());
stringList.addAll(Arrays.asList(strings));
batchSendTaskInfo.setPhysicalExaminationLabel(Arrays.toString(strings)); batchSendTaskInfo.setPhysicalExaminationLabel(Arrays.toString(strings));
if (batchSendTaskInfo.getPhysicalExaminationSummary().length() > 999) { if (batchSendTaskInfo.getPhysicalExaminationSummary().length() > 999) {
batchSendTaskInfo.setPhysicalExaminationSummary(batchSendTaskInfo.getPhysicalExaminationSummary().substring(0, 999)); batchSendTaskInfo.setPhysicalExaminationSummary(batchSendTaskInfo.getPhysicalExaminationSummary().substring(0, 999));
} }
} }
} }
//处理标签
List<BatchSendTaskLabelInfo> batchSendTaskLabelInfos = batchSendTaskLabelInfoMapper.selectBatchSendTaskLabelInfoList(null);
List<String> data = batchSendTaskLabelInfos.stream().filter(Objects::nonNull).map(BatchSendTaskLabelInfo::getPhysicalExaminationLabel).collect(Collectors.toList());
List<String> collect1 = stringList.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
List<String> subtract = ListUtils.subtract(collect1, data);
if (CollectionUtils.isNotEmpty(subtract)) {
batchSendTaskLabelInfoMapper.insertBatchSendTaskLabelInfList(subtract);
}
batchSendTaskInfoMapper.insertBatchSendTaskInfoList(list); batchSendTaskInfoMapper.insertBatchSendTaskInfoList(list);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -216,9 +236,12 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
* @throws ClientException * @throws ClientException
*/ */
@Override @Override
public AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException { public AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException, IllegalAccessException {
log.info("开始创建批量推送任务---------------");
//新增批量推送任务记录
BatchSendTaskRecordInfo batchSendTaskRecordInfo = new BatchSendTaskRecordInfo(); BatchSendTaskRecordInfo batchSendTaskRecordInfo = new BatchSendTaskRecordInfo();
batchSendTaskRecordInfo.setBatchTaskName(batchSendTaskRecordDto.getManageRouteName()); batchSendTaskRecordInfo.setBatchTaskName(batchSendTaskRecordDto.getManageRouteName());
//新增批量推送任务记录编号
String batchTaskNumber = null; String batchTaskNumber = null;
if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) { if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) {
batchTaskNumber = "hkqdermyy_message_batch" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); batchTaskNumber = "hkqdermyy_message_batch" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
@ -230,7 +253,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
batchTaskNumber = "hkqdermyy_phone_batch" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); batchTaskNumber = "hkqdermyy_phone_batch" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
batchSendTaskRecordInfo.setTemplateId(batchSendTaskRecordDto.getPhoneTemplateId()); batchSendTaskRecordInfo.setTemplateId(batchSendTaskRecordDto.getPhoneTemplateId());
batchSendTaskRecordInfo.setTemplateName(batchSendTaskRecordDto.getPhoneTemplateName()); batchSendTaskRecordInfo.setTemplateName(batchSendTaskRecordDto.getPhoneTemplateName());
batchSendTaskRecordInfo.setRobotPublishId(batchSendTaskRecordInfo.getRobotPublishId()); batchSendTaskRecordInfo.setRobotPublishId(batchSendTaskRecordDto.getRobotPublishId());
} }
batchSendTaskRecordInfo.setBatchTaskNumber(batchTaskNumber); batchSendTaskRecordInfo.setBatchTaskNumber(batchTaskNumber);
batchSendTaskRecordInfo.setTaskExecuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo()); batchSendTaskRecordInfo.setTaskExecuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());
@ -238,14 +261,15 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
batchSendTaskRecordInfo.setCreateBy(SecurityUtils.getUsername()); batchSendTaskRecordInfo.setCreateBy(SecurityUtils.getUsername());
batchSendTaskRecordInfo.setBatchTaskSource(batchSendTaskRecordDto.getBatchTaskSource()); batchSendTaskRecordInfo.setBatchTaskSource(batchSendTaskRecordDto.getBatchTaskSource());
batchSendTaskRecordInfo.setCreateTime(LocalDateTime.now()); batchSendTaskRecordInfo.setCreateTime(LocalDateTime.now());
batchSendTaskRecordInfo.setPhysicalExaminationLabel(batchSendTaskRecordDto.getPhysicalExaminationLabel());
int insertBatchSendTaskRecord = batchSendTaskRecordInfoMapper.insertBatchSendTaskRecordInfo(batchSendTaskRecordInfo); int insertBatchSendTaskRecord = batchSendTaskRecordInfoMapper.insertBatchSendTaskRecordInfo(batchSendTaskRecordInfo);
if (insertBatchSendTaskRecord <= 0) { if (insertBatchSendTaskRecord <= 0) {
log.info("新增批量推送任务记录失败"); log.info("新增批量推送任务记录失败");
return AjaxResult.error("上传任务失败!请联系管理员!"); return AjaxResult.error("上传任务失败!请联系管理员!");
} }
//保存变量 //保存短信变量
if (Objects.nonNull(batchSendTaskRecordDto.getVars())) { List<BatchSendTaskVariableInfo> batchSendTaskVariableInfos = new ArrayList<>();
List<BatchSendTaskVariableInfo> batchSendTaskVariableInfos = new ArrayList<>(); if (Objects.nonNull(batchSendTaskRecordDto.getVars()) && batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) {
Set<String> keys = batchSendTaskRecordDto.getVars().keySet(); Set<String> keys = batchSendTaskRecordDto.getVars().keySet();
for (String key : keys) { for (String key : keys) {
BatchSendTaskVariableInfo batchSendTaskVariableInfo = new BatchSendTaskVariableInfo(); BatchSendTaskVariableInfo batchSendTaskVariableInfo = new BatchSendTaskVariableInfo();
@ -256,13 +280,15 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
batchSendTaskRecordInfo.setCreateTime(LocalDateTime.now()); batchSendTaskRecordInfo.setCreateTime(LocalDateTime.now());
batchSendTaskVariableInfos.add(batchSendTaskVariableInfo); batchSendTaskVariableInfos.add(batchSendTaskVariableInfo);
} }
if (CollectionUtils.isNotEmpty(batchSendTaskVariableInfos)) {
batchSendTaskVariableInfoMapper.insertBatchSendTaskVariableInfos(batchSendTaskVariableInfos);
}
} }
List<SignPatientManageRoute> signPatientManageRoutes = new ArrayList<>(); List<SignPatientManageRoute> signPatientManageRoutes = new ArrayList<>();
List<SignPatientManageRouteNode> signPatientManageRouteNodes = new ArrayList<>(); List<SignPatientManageRouteNode> signPatientManageRouteNodes = new ArrayList<>();
List<ShortMessageSendRecord> shortMessageSendRecords = new ArrayList<>(); List<ShortMessageSendRecord> shortMessageSendRecords = new ArrayList<>();
String[] keys = new String[0];
if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.TELEPHONE)) {
String s1 = scriptInfoMapper.selectVariablesByRobotPublishId(batchSendTaskRecordDto.getRobotPublishId());
keys = s1.split("\\|");
}
for (BatchSendTaskInfo batchSendTaskInfo : batchSendTaskRecordDto.getList()) { for (BatchSendTaskInfo batchSendTaskInfo : batchSendTaskRecordDto.getList()) {
//节点主表 //节点主表
SignPatientManageRoute signPatientManageRoute = new SignPatientManageRoute(); SignPatientManageRoute signPatientManageRoute = new SignPatientManageRoute();
@ -320,12 +346,38 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
shortMessageSendRecord.setMessageNodeContent(batchSendTaskRecordDto.getMessageNodeContent()); shortMessageSendRecord.setMessageNodeContent(batchSendTaskRecordDto.getMessageNodeContent());
shortMessageSendRecord.setCreateTime(LocalDateTime.now()); shortMessageSendRecord.setCreateTime(LocalDateTime.now());
shortMessageSendRecords.add(shortMessageSendRecord); shortMessageSendRecords.add(shortMessageSendRecord);
//电话变量
if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.TELEPHONE.getInfo())) {
for (String key : keys) {
// 获取对象的Class对象
Class<?> objClass = batchSendTaskInfo.getClass();
// 获取所有属性
Field[] fields = objClass.getDeclaredFields();
//匹配属性名
Field field = Arrays.stream(fields).filter(Objects::nonNull).filter(s -> Objects.equals(s.getName().toUpperCase(), key.replaceAll("_", "").toUpperCase())).findFirst().orElse(null);
if (Objects.isNull(field)) {
return AjaxResult.error("该模板变量" + key + "不存在!");
}
BatchSendTaskVariableInfo batchSendTaskVariableInfo = new BatchSendTaskVariableInfo();
batchSendTaskVariableInfo.setBatchSendTaskRecordId(batchSendTaskRecordInfo.getId());
batchSendTaskVariableInfo.setBatchSendTaskId(batchSendTaskInfo.getId());
batchSendTaskVariableInfo.setVariable(key);
field.setAccessible(true);
batchSendTaskVariableInfo.setVariableAttribute(field.get(batchSendTaskInfo).toString());
batchSendTaskVariableInfo.setCreateBy(SecurityUtils.getUsername());
batchSendTaskRecordInfo.setCreateTime(LocalDateTime.now());
batchSendTaskVariableInfos.add(batchSendTaskVariableInfo);
}
}
} }
signPatientManageRouteMapper.insertBatch(signPatientManageRoutes); signPatientManageRouteMapper.insertBatch(signPatientManageRoutes);
for (int i = 0; i < signPatientManageRouteNodes.size(); i++) { for (int i = 0; i < signPatientManageRouteNodes.size(); i++) {
signPatientManageRouteNodes.get(i).setManageRouteId(signPatientManageRoutes.get(i).getId()); signPatientManageRouteNodes.get(i).setManageRouteId(signPatientManageRoutes.get(i).getId());
} }
signPatientManageRouteNodeMapper.insertBatch(signPatientManageRouteNodes); signPatientManageRouteNodeMapper.insertBatch(signPatientManageRouteNodes);
if (CollectionUtils.isNotEmpty(batchSendTaskVariableInfos)) {
batchSendTaskVariableInfoMapper.insertBatchSendTaskVariableInfos(batchSendTaskVariableInfos);
}
if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.TELEPHONE.getInfo())) { if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.TELEPHONE.getInfo())) {
SysUser sysUser = sysUserMapper.selectUserById(SecurityUtils.getUserId()); SysUser sysUser = sysUserMapper.selectUserById(SecurityUtils.getUserId());
Agency agency = agencyMapper.selectAgencyById(sysUser.getHospitalAgencyId()); Agency agency = agencyMapper.selectAgencyById(sysUser.getHospitalAgencyId());
@ -355,7 +407,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
if (dateEndTime.isBefore(localEndTime)) { if (dateEndTime.isBefore(localEndTime)) {
localEndTime = dateEndTime; localEndTime = dateEndTime;
} }
log.info("开始创建批量电话推送任务---------------"); log.info("创建批量电话推送任务---------------");
CreateTaskDto createTaskDto = new CreateTaskDto(); CreateTaskDto createTaskDto = new CreateTaskDto();
//临时重复测试用 //临时重复测试用
String taskName = batchTaskNumber + "-" + batchSendTaskRecordDto.getPhoneTemplateName(); String taskName = batchTaskNumber + "-" + batchSendTaskRecordDto.getPhoneTemplateName();
@ -386,19 +438,19 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
List<CustomerInfoDto> customerInfoList = new ArrayList<>(); List<CustomerInfoDto> customerInfoList = new ArrayList<>();
signPatientManageRouteNodes.forEach(node -> { signPatientManageRouteNodes.forEach(node -> {
CustomerInfoDto customerInfoDto = new CustomerInfoDto(); CustomerInfoDto customerInfoDto = new CustomerInfoDto();
customerInfoDto.setExtJson(node.getId() + ""); customerInfoDto.setExtJson(node.getId().toString());
SignPatientManageRoute signPatientManageRoute = signPatientManageRoutes.stream().filter(Objects::nonNull).filter(item -> item.getId().equals(node.getManageRouteId())).findFirst().orElse(new SignPatientManageRoute()); SignPatientManageRoute signPatientManageRoute = signPatientManageRoutes.stream().filter(Objects::nonNull).filter(item -> item.getId().equals(node.getManageRouteId())).findFirst().orElse(new SignPatientManageRoute());
BatchSendTaskInfo batchSendTaskInfo = batchSendTaskRecordDto.getList().stream().filter(Objects::nonNull).filter(item -> item.getId().equals(signPatientManageRoute.getBatchSendTaskId())).findFirst().orElse(new BatchSendTaskInfo()); BatchSendTaskInfo batchSendTaskInfo = batchSendTaskRecordDto.getList().stream().filter(Objects::nonNull).filter(item -> item.getId().equals(signPatientManageRoute.getBatchSendTaskId())).findFirst().orElse(new BatchSendTaskInfo());
List<BatchSendTaskVariableInfo> batchSendTaskVariableList = batchSendTaskVariableInfos.stream().filter(Objects::nonNull).filter(item -> item.getBatchSendTaskId().equals(batchSendTaskInfo.getId())).collect(Collectors.toList());
//校验手机号 //校验手机号
if (StringUtils.isNotBlank(batchSendTaskInfo.getPatientPhone())) { if (StringUtils.isNotBlank(batchSendTaskInfo.getPatientPhone())) {
if (regexUtil.regexPhone(batchSendTaskInfo.getPatientPhone())) { if (regexUtil.regexPhone(batchSendTaskInfo.getPatientPhone())) {
customerInfoDto.setMobile(batchSendTaskInfo.getPatientPhone()); customerInfoDto.setMobile(batchSendTaskInfo.getPatientPhone());
// 处理变量 // 处理变量
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
if (Objects.nonNull(batchSendTaskRecordDto.getVars())) { if (CollectionUtils.isNotEmpty(batchSendTaskVariableList)) {
Set<String> keys = batchSendTaskRecordDto.getVars().keySet(); batchSendTaskVariableList.forEach(variable -> {
keys.forEach(variable -> { jsonObject.fluentPut(variable.getVariable(), ObjectUtils.isEmpty(variable.getVariableAttribute()) ? "" : variable.getVariableAttribute());
jsonObject.fluentPut(variable, ObjectUtils.isEmpty(batchSendTaskRecordDto.getVars().get(variable)) ? "" : batchSendTaskRecordDto.getVars().get(variable));
}); });
} }
customerInfoDto.setVar(jsonObject); customerInfoDto.setVar(jsonObject);
@ -418,6 +470,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
return AjaxResult.success("创建批量电话推送任务执行完成"); return AjaxResult.success("创建批量电话推送任务执行完成");
} }
if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) { if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) {
log.info("创建批量短信推送任务---------------");
SmsInfoDTO smsInfoDTO = new SmsInfoDTO(); SmsInfoDTO smsInfoDTO = new SmsInfoDTO();
List<String> phones = batchSendTaskRecordDto.getList().stream().filter(Objects::nonNull).map(BatchSendTaskInfo::getPatientPhone).distinct().collect(Collectors.toList()); List<String> phones = batchSendTaskRecordDto.getList().stream().filter(Objects::nonNull).map(BatchSendTaskInfo::getPatientPhone).distinct().collect(Collectors.toList());
String phoneString = String.join(",", phones); String phoneString = String.join(",", phones);
@ -426,32 +479,42 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
// 处理变量 // 处理变量
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
if (Objects.nonNull(batchSendTaskRecordDto.getVars())) { if (Objects.nonNull(batchSendTaskRecordDto.getVars())) {
Set<String> keys = batchSendTaskRecordDto.getVars().keySet(); Set<String> keySet = batchSendTaskRecordDto.getVars().keySet();
keys.forEach(variable -> { keySet.forEach(variable -> {
jsonObject.fluentPut(variable, ObjectUtils.isEmpty(batchSendTaskRecordDto.getVars().get(variable)) ? "" : batchSendTaskRecordDto.getVars().get(variable)); jsonObject.fluentPut(variable, ObjectUtils.isEmpty(batchSendTaskRecordDto.getVars().get(variable)) ? "" : batchSendTaskRecordDto.getVars().get(variable));
}); });
} }
smsInfoDTO.setTemplateParam(jsonObject); smsInfoDTO.setTemplateParam(jsonObject);
// 根据模版id发送 // 根据模版id发送
smsInfoDTO.setTemplateCode(batchSendTaskRecordDto.getMessageTemplateCode()); smsInfoDTO.setTemplateCode(batchSendTaskRecordDto.getMessageTemplateCode());
smsInfoDTO.setOutId(batchSendTaskRecordInfo.getId().toString());
Boolean aBoolean = sendSms(smsInfoDTO); Boolean aBoolean = sendSms(smsInfoDTO);
if (!aBoolean) { if (!aBoolean) {
return AjaxResult.error("短信发送失败"); return AjaxResult.error("短信上传失败");
}
for (int i = 0; i < signPatientManageRouteNodes.size(); i++) {
shortMessageSendRecords.get(i).setManageRouteNodeId(signPatientManageRouteNodes.get(i).getId());
shortMessageSendRecords.get(i).setErrorCode(0L);
shortMessageSendRecords.get(i).setErrorStatus(ErrorStatusEnum.success.getValue());
} }
//发送记录批量 //发送记录批量
log.info("创建批量信推送任务执行完成......"); log.info("创建批量短信推送任务执行完成......");
return AjaxResult.success("短信发送成功"); return AjaxResult.success("短信上传成功");
} }
return AjaxResult.success(); return AjaxResult.success();
} }
/** /**
* {code}替换值发送短信 * 搜素框添加 标签信息
*
* @return String
*/
@Override
public List<String> getPhysicalExaminationLabel() {
List<BatchSendTaskLabelInfo> batchSendTaskLabelInfos = batchSendTaskLabelInfoMapper.selectBatchSendTaskLabelInfoList(null);
if (CollectionUtils.isEmpty(batchSendTaskLabelInfos)) {
return new ArrayList<>();
}
return batchSendTaskLabelInfos.stream().filter(Objects::nonNull).map(BatchSendTaskLabelInfo::getPhysicalExaminationLabel).collect(Collectors.toList());
}
/**
* 变量替换值发送短信
*/ */
public Boolean sendSms(SmsInfoDTO smsInfoDTO) throws ClientException, ServiceException { public Boolean sendSms(SmsInfoDTO smsInfoDTO) throws ClientException, ServiceException {
try { try {
@ -484,7 +547,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService {
request.setSignName(smsInfoDTO.getSignName()); request.setSignName(smsInfoDTO.getSignName());
request.setTemplateCode(smsInfoDTO.getTemplateCode()); request.setTemplateCode(smsInfoDTO.getTemplateCode());
request.setTemplateParam(smsInfoDTO.getTemplateParam().toJSONString()); request.setTemplateParam(smsInfoDTO.getTemplateParam().toJSONString());
request.setOutId(smsInfoDTO.getOutId());
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
// 判断响应的结果 // 判断响应的结果
if (!SUCCESS.equals(sendSmsResponse.getCode())) { if (!SUCCESS.equals(sendSmsResponse.getCode())) {

View File

@ -0,0 +1,62 @@
package com.xinelu.manage.service.batchsendtasklabelinfo;
import com.xinelu.manage.domain.batchsendtasklabelinfo.BatchSendTaskLabelInfo;
import java.util.List;
/**
* 批量推送任务标签信息表Service接口
*
* @author xinelu
* @date 2026-04-29
*/
public interface IBatchSendTaskLabelInfoService {
/**
* 查询批量推送任务标签信息表
*
* @param id 批量推送任务标签信息表主键
* @return 批量推送任务标签信息表
*/
BatchSendTaskLabelInfo selectBatchSendTaskLabelInfoById(Long id);
/**
* 查询批量推送任务标签信息表列表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 批量推送任务标签信息表集合
*/
List<BatchSendTaskLabelInfo> selectBatchSendTaskLabelInfoList(BatchSendTaskLabelInfo batchSendTaskLabelInfo);
/**
* 新增批量推送任务标签信息表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 结果
*/
int insertBatchSendTaskLabelInfo(BatchSendTaskLabelInfo batchSendTaskLabelInfo);
/**
* 修改批量推送任务标签信息表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 结果
*/
int updateBatchSendTaskLabelInfo(BatchSendTaskLabelInfo batchSendTaskLabelInfo);
/**
* 批量删除批量推送任务标签信息表
*
* @param ids 需要删除的批量推送任务标签信息表主键集合
* @return 结果
*/
int deleteBatchSendTaskLabelInfoByIds(Long[] ids);
/**
* 删除批量推送任务标签信息表信息
*
* @param id 批量推送任务标签信息表主键
* @return 结果
*/
int deleteBatchSendTaskLabelInfoById(Long id);
}

View File

@ -0,0 +1,87 @@
package com.xinelu.manage.service.batchsendtasklabelinfo.impl;
import com.xinelu.manage.domain.batchsendtasklabelinfo.BatchSendTaskLabelInfo;
import com.xinelu.manage.mapper.batchsendtasklabelinfo.BatchSendTaskLabelInfoMapper;
import com.xinelu.manage.service.batchsendtasklabelinfo.IBatchSendTaskLabelInfoService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 批量推送任务标签信息表Service业务层处理
*
* @author xinelu
* @date 2026-04-29
*/
@Service
public class BatchSendTaskLabelInfoServiceImpl implements IBatchSendTaskLabelInfoService {
@Resource
private BatchSendTaskLabelInfoMapper batchSendTaskLabelInfoMapper;
/**
* 查询批量推送任务标签信息表
*
* @param id 批量推送任务标签信息表主键
* @return 批量推送任务标签信息表
*/
@Override
public BatchSendTaskLabelInfo selectBatchSendTaskLabelInfoById(Long id) {
return batchSendTaskLabelInfoMapper.selectBatchSendTaskLabelInfoById(id);
}
/**
* 查询批量推送任务标签信息表列表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 批量推送任务标签信息表
*/
@Override
public List<BatchSendTaskLabelInfo> selectBatchSendTaskLabelInfoList(BatchSendTaskLabelInfo batchSendTaskLabelInfo) {
return batchSendTaskLabelInfoMapper.selectBatchSendTaskLabelInfoList(batchSendTaskLabelInfo);
}
/**
* 新增批量推送任务标签信息表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 结果
*/
@Override
public int insertBatchSendTaskLabelInfo(BatchSendTaskLabelInfo batchSendTaskLabelInfo) {
return batchSendTaskLabelInfoMapper.insertBatchSendTaskLabelInfo(batchSendTaskLabelInfo);
}
/**
* 修改批量推送任务标签信息表
*
* @param batchSendTaskLabelInfo 批量推送任务标签信息表
* @return 结果
*/
@Override
public int updateBatchSendTaskLabelInfo(BatchSendTaskLabelInfo batchSendTaskLabelInfo) {
return batchSendTaskLabelInfoMapper.updateBatchSendTaskLabelInfo(batchSendTaskLabelInfo);
}
/**
* 批量删除批量推送任务标签信息表
*
* @param ids 需要删除的批量推送任务标签信息表主键
* @return 结果
*/
@Override
public int deleteBatchSendTaskLabelInfoByIds(Long[] ids) {
return batchSendTaskLabelInfoMapper.deleteBatchSendTaskLabelInfoByIds(ids);
}
/**
* 删除批量推送任务标签信息表信息
*
* @param id 批量推送任务标签信息表主键
* @return 结果
*/
@Override
public int deleteBatchSendTaskLabelInfoById(Long id) {
return batchSendTaskLabelInfoMapper.deleteBatchSendTaskLabelInfoById(id);
}
}

View File

@ -1554,7 +1554,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
/** /**
* 发送短信 * 发送短信(无变量)
*/ */
@Override @Override
public Boolean sendSms(SmsInfoDTO smsInfoDTO) throws ClientException, ServiceException { public Boolean sendSms(SmsInfoDTO smsInfoDTO) throws ClientException, ServiceException {

View File

@ -118,7 +118,7 @@
and physical_examination_summary = #{physicalExaminationSummary} and physical_examination_summary = #{physicalExaminationSummary}
</if> </if>
<if test="physicalExaminationLabel != null and physicalExaminationLabel != ''"> <if test="physicalExaminationLabel != null and physicalExaminationLabel != ''">
and physical_examination_label = #{physicalExaminationLabel} and physical_examination_label like concat('%', #{physicalExaminationLabel}, '%')
</if> </if>
</where> </where>
</select> </select>
@ -342,7 +342,7 @@
( (
#{BatchSendTaskInfo.orderNum}, #{BatchSendTaskInfo.orderNum},
#{BatchSendTaskInfo.sn}, #{BatchSendTaskInfo.sn},
#{BatchSendTaskInfo.importname}, #{BatchSendTaskInfo.importName},
#{BatchSendTaskInfo.teamName}, #{BatchSendTaskInfo.teamName},
#{BatchSendTaskInfo.hospitalAgencyId}, #{BatchSendTaskInfo.hospitalAgencyId},
#{BatchSendTaskInfo.hospitalAgencyName}, #{BatchSendTaskInfo.hospitalAgencyName},

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.batchsendtasklabelinfo.BatchSendTaskLabelInfoMapper">
<resultMap type="BatchSendTaskLabelInfo" id="BatchSendTaskLabelInfoResult">
<result property="id" column="id"/>
<result property="physicalExaminationLabel" column="physical_examination_label"/>
</resultMap>
<sql id="selectBatchSendTaskLabelInfoVo">
select id, physical_examination_label
from batch_send_task_label_info
</sql>
<select id="selectBatchSendTaskLabelInfoList" parameterType="BatchSendTaskLabelInfo"
resultMap="BatchSendTaskLabelInfoResult">
<include refid="selectBatchSendTaskLabelInfoVo"/>
<where>
<if test="physicalExaminationLabel != null and physicalExaminationLabel != ''">
and physical_examination_label = #{physicalExaminationLabel}
</if>
</where>
</select>
<select id="selectBatchSendTaskLabelInfoById" parameterType="Long"
resultMap="BatchSendTaskLabelInfoResult">
<include refid="selectBatchSendTaskLabelInfoVo"/>
where id = #{id}
</select>
<insert id="insertBatchSendTaskLabelInfo" parameterType="BatchSendTaskLabelInfo" useGeneratedKeys="true"
keyProperty="id">
insert into batch_send_task_label_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="physicalExaminationLabel != null">physical_examination_label,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="physicalExaminationLabel != null">#{physicalExaminationLabel},
</if>
</trim>
</insert>
<update id="updateBatchSendTaskLabelInfo" parameterType="BatchSendTaskLabelInfo">
update batch_send_task_label_info
<trim prefix="SET" suffixOverrides=",">
<if test="physicalExaminationLabel != null">physical_examination_label =
#{physicalExaminationLabel},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteBatchSendTaskLabelInfoById" parameterType="Long">
delete
from batch_send_task_label_info
where id = #{id}
</delete>
<delete id="deleteBatchSendTaskLabelInfoByIds" parameterType="String">
delete from batch_send_task_label_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="insertBatchSendTaskLabelInfList">
insert into batch_send_task_label_info(
physical_examination_label
)
values
<foreach collection="list" item="label" separator=",">
(#{label})
</foreach>
</insert>
</mapper>

View File

@ -365,4 +365,8 @@
<select id="selectScriptInfos" resultType="com.xinelu.manage.domain.scriptInfo.ScriptInfo"> <select id="selectScriptInfos" resultType="com.xinelu.manage.domain.scriptInfo.ScriptInfo">
<include refid="selectScriptInfoVo"/> <include refid="selectScriptInfoVo"/>
</select> </select>
<select id="selectVariablesByRobotPublishId" resultType="java.lang.String">
select variables from script_info where robot_publish_id = #{robotPublishId}
</select>
</mapper> </mapper>

View File

@ -564,7 +564,7 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<insert id="insertBatch"> <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
insert into sign_patient_manage_route_node(manage_route_id, manage_route_name, route_node_id, route_node_name,route_node_day,sn,dial_status,task_excute_type,node_plan_time, task_type, task_status, task_subdivision, task_node_type, second_classify_describe, insert into sign_patient_manage_route_node(manage_route_id, manage_route_name, route_node_id, route_node_name,route_node_day,sn,dial_status,task_excute_type,node_plan_time, task_type, task_status, task_subdivision, task_node_type, second_classify_describe,
execute_time, phone_push_sign, script_info_id, robot_publish_id, phone_template_id, phone_template_name, phone_node_content, phone_result_json, phone_redial_times, phone_time_interval, phone_message_remind, phone_message_template_id, execute_time, phone_push_sign, script_info_id, robot_publish_id, phone_template_id, phone_template_name, phone_node_content, phone_result_json, phone_redial_times, phone_time_interval, phone_message_remind, phone_message_template_id,
phone_message_template_name, phone_message_template_content,question_info_id, questionnaire_name, questionnaire_content, question_expiration_date, propaganda_info_id, propaganda_title, propaganda_content, message_push_sign, phone_message_template_name, phone_message_template_content,question_info_id, questionnaire_name, questionnaire_content, question_expiration_date, propaganda_info_id, propaganda_title, propaganda_content, message_push_sign,