From 07c54ef256ed87b74d47fd94b3e9cecba2809f16 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Wed, 29 Apr 2026 16:46:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/template/批量发送任务信息.xlsx | Bin 9828 -> 9939 bytes .../com/xinelu/common/constant/Constants.java | 7 +- .../BatchSendTaskInfoController.java | 6 + .../ImportDownloadController.java | 3 + .../batchsendtaskinfo/BatchSendTaskInfo.java | 14 +-- .../BatchSendTaskLabelInfo.java | 48 ++++++++ .../BatchSendTaskVariableInfo.java | 6 + .../BatchSendTaskLabelInfoMapper.java | 70 +++++++++++ .../mapper/scriptInfo/ScriptInfoMapper.java | 8 ++ .../service/aiob/impl/AIOBServiceImpl.java | 40 ++++-- .../IBatchSendTaskInfoService.java | 9 +- .../impl/BatchSendTaskInfoServiceImpl.java | 115 ++++++++++++++---- .../IBatchSendTaskLabelInfoService.java | 62 ++++++++++ .../BatchSendTaskLabelInfoServiceImpl.java | 87 +++++++++++++ .../SignPatientManageRouteServiceImpl.java | 2 +- .../BatchSendTaskInfoMapper.xml | 4 +- .../BatchSendTaskLabelInfoMapper.xml | 79 ++++++++++++ .../manage/scriptInfo/ScriptInfoMapper.xml | 4 + .../SignPatientManageRouteNodeMapper.xml | 2 +- 19 files changed, 514 insertions(+), 52 deletions(-) create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtasklabelinfo/BatchSendTaskLabelInfo.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/mapper/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/IBatchSendTaskLabelInfoService.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/impl/BatchSendTaskLabelInfoServiceImpl.java create mode 100644 postdischarge-manage/src/main/resources/mapper/manage/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.xml diff --git a/postdischarge-admin/src/main/resources/template/批量发送任务信息.xlsx b/postdischarge-admin/src/main/resources/template/批量发送任务信息.xlsx index c16bb1ca221e40794d96708d953b487d40d6c939..450469ea62dcf79c49ad55e0fe4f25444a6663fc 100644 GIT binary patch delta 5528 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 H_J{c&&;~>j delta 5443 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

~E_d(T;v1Rh zD5l%gra&o$SUP_HYA~w@^1H4L#V5w59UIrwa!ITw15K8BUCwhrfLrlPxltre-xs)2 zF8xe2@!WiX21JpXgXQS~cXN#4SG@9PU9he72BPq<^eP zCU!|&+a{KcoX_L>4QA1ItivU*ll}YkcOAn14<0mR<5=-m7Wv>=4X~2jNU%KOuT* zB)mTd)5CnD?RLzCko%6F2yz_}6`Bc2DM+DS@Ylb$Vv0UnAO(v|bIR|OhFQug!y=I* z2B%!94~ruH$G+EdGC40tD~);Xn{UWoD~R5lZ6BAeg@th}!L}@uGSA+SiYyEWvASFz zbxlp7hA{P&Zqew$Hv9vn@VnFX=EZ@uUFdFV(&@SMg+tq zX?Y%yYq8?ZI|sdOJWcATA4{=LU@IRH*~L^w+uzBEn9g*?&@6GnJ)`;{jp&jpJk+Zz zG`M%q3B{2C;k{w73+qW8nPDo0L+R}}FV9Zdck67_&6i&EAu?!qLQ?c$Fh8$9oU|)k zKvOYb|JmBySch=x{KMV)Va86Fp>&-v`?5C(SWa+7%0|)j8phnkCvrChYu`EGfH=8= zqGf}VQ-!^sCvN41(guHDuk9`tj>V7)4_%w<@H{z_lk74Te`;cUy0Inm(1uEyCG6#S zi^P=axc~I+dCU{jGS)8XvQHgg;sOmmVXbTnmg8W)Ec{q1&G4*UUq0c&YzM{>X_bs( zgFvz>&E@Ha0P$Q+TE4m<*brcCNtt_Yo2a~N`uIeac$FQ=5`{0E!&DNvLfQ)jd3NHx zM5PgZ_Sc=P8Ir76hhy4J_l}sB|1U3AUol)CsFmASa+(|>)Tk6l+!NaS%2otaCHHS0 z3Ev#fG`%j^1l7E=Vlo)1YD9b-k>$`gVTxs&N?04A4Kud&{ACUK#h@Efy%JxF9iL`N z+=HU;J*KCq!AK7AYD6Be{@*uw>i?A z!?C$&%jM%GSvM>qn3v$3DynY0lK32~a?!ttZ$%MprCyZs9og0#-4Z z`{j0p-(%c*^Hy@55=#l}{hdY-H_1RX^7@!ofON8OJ|Q6-97jdTz2Qn^;7&AFhA`V7 z0Yq%gywUj`Q{xn})@$CRuBET@Z63vVqRcu7V&!e8pjYQR zvT(Z0FjS+vR2p4;hZY(uBPx@|rngWy)FeQ+uZuD?*uSXUwU7$Rw~9n3%9g_Y8)fXX z3Nc0U1l&lK-3H&=*!uA2a*(56_zv=}1R9-hnun#Y1dHpdT&KDXoG_J2!{8z}1&PHx z&&ht}6;)9ZWuBqwI(`I1$t-*C*H@#T^+AN`!67p}DhaWyX{y{8R^K54jE3hnmv|Jprm& z`4*V>-B$4Cb!$DjO~pfr7&Y!l==a>zF3=q-JvVRH=8ZbYozy7(F=(#NzAKbgQ_VKD zm$+%3YPuE^m}1>$uV6rl#iiW;B}TEvOzUANSxw39HL<(je9T_*F6uUd zj0R>d7H-d|T+;7CE=#R~fls+^6MHJq#my{A3muL~q1EpfOGtPhKR)L_C;7gA+MK*- z$oZV;{F@EHc-08Bx#6vGZz;VR@RqxL@B^f~eXg&M$0zyID!z=5vh8+Jp(;jIkzk{C z8!uRl&x^yV`a_hxl*D@sLgfh>wt< z7sCvE)WMH^1%wd8OGE(O6QCKQo}Lf*5wTCtM*hG3heu@u00O8V5sBadGm`(WZ2HH~ zgK!560y7cSU_Rgv#5S0L{C{=#KU_KlGlMWN4`I$g^YZ_ibQk~t>0ip@_)o@RG{ipI P3q(5uA%+a?U-Q2JmZM2x diff --git a/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java b/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java index e1b2846a..d05d2874 100644 --- a/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java +++ b/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java @@ -220,10 +220,15 @@ public class Constants { public static final String OUTPATIENT = "outpatient"; /** - * 门诊患者 + * 患者导入 */ public static final String PATIENT_INFO_IMPORT = "patientInfoImport"; + /** + * 患者导入 + */ + public static final String BATCH_SEND_TASK_INFO = "batchSendTaskInfo"; + /** * 预住院 */ diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/batchsendtaskinfo/BatchSendTaskInfoController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/batchsendtaskinfo/BatchSendTaskInfoController.java index d16526a9..5c46f1ee 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/batchsendtaskinfo/BatchSendTaskInfoController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/batchsendtaskinfo/BatchSendTaskInfoController.java @@ -117,4 +117,10 @@ public class BatchSendTaskInfoController extends BaseController { public AjaxResult batchSend(@RequestBody BatchSendTaskRecordDto batchSendTaskRecordDto) throws Exception { return batchSendTaskInfoService.batchSend(batchSendTaskRecordDto); } + + @ApiOperation("标签信息") + @GetMapping("/getPhysicalExaminationLabel") + public List getPhysicalExaminationLabel(){ + return batchSendTaskInfoService.getPhysicalExaminationLabel(); + } } \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java index e6c2388c..57d76c4c 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java @@ -73,6 +73,9 @@ public class ImportDownloadController { // 通过流讲文件复制到file中 FileUtils.copyToFile(resource.getInputStream(), file); break; + case Constants.BATCH_SEND_TASK_INFO: + file = ResourceUtils.getFile("classpath:template/批量发送任务信息.xlsx"); + break; } if (Objects.isNull(file)) { throw new ServiceException("下载导入模板文件失败,请联系管理员!"); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskinfo/BatchSendTaskInfo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskinfo/BatchSendTaskInfo.java index 0bf908ff..cb042612 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskinfo/BatchSendTaskInfo.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskinfo/BatchSendTaskInfo.java @@ -92,10 +92,10 @@ public class BatchSendTaskInfo extends BaseEntity { private Date visitDate; /** - * 门诊/住院/体检号 + * 体检/门诊/住院号 */ - @ApiModelProperty(value = "门诊/住院/体检号") - @Excel(name = "门诊/住院/体检号") + @ApiModelProperty(value = "体检/门诊/住院号") + @Excel(name = "体检/门诊/住院号") private String inHospitalNumber; /** @@ -106,10 +106,10 @@ public class BatchSendTaskInfo extends BaseEntity { private String patientName; /** - * 患者电话 + * 联系电话 */ - @ApiModelProperty(value = "患者电话") - @Excel(name = "电话") + @ApiModelProperty(value = "联系电话") + @Excel(name = "联系电话") private String patientPhone; /** @@ -150,7 +150,7 @@ public class BatchSendTaskInfo extends BaseEntity { * 体检总结/主要诊断 */ @ApiModelProperty(value = "体检总结/主要诊断") - @Excel(name = "体检总结/主要诊断") + @Excel(name = "总检结论") private String physicalExaminationSummary; /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtasklabelinfo/BatchSendTaskLabelInfo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtasklabelinfo/BatchSendTaskLabelInfo.java new file mode 100644 index 00000000..aefdc45b --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtasklabelinfo/BatchSendTaskLabelInfo.java @@ -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(); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskvariableinfo/BatchSendTaskVariableInfo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskvariableinfo/BatchSendTaskVariableInfo.java index 8c059605..69de2ebc 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskvariableinfo/BatchSendTaskVariableInfo.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/batchsendtaskvariableinfo/BatchSendTaskVariableInfo.java @@ -47,6 +47,11 @@ public class BatchSendTaskVariableInfo extends BaseEntity { @ApiModelProperty(value = "批量推送任务记录表id") private Long batchSendTaskRecordId; + /** + * 批量推送任务表id + */ + @ApiModelProperty(value = "批量推送任务表id") + private Long batchSendTaskId; @Override public String toString() { @@ -55,6 +60,7 @@ public class BatchSendTaskVariableInfo extends BaseEntity { .append("variable", getVariable()) .append("variableAttribute", getVariableAttribute()) .append("batchSendTaskRecordId", getBatchSendTaskRecordId()) + .append("batchSendTaskId", getBatchSendTaskId()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .toString(); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.java new file mode 100644 index 00000000..9589a660 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.java @@ -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 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 labels); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/scriptInfo/ScriptInfoMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/scriptInfo/ScriptInfoMapper.java index 412a1b0d..48def642 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/scriptInfo/ScriptInfoMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/scriptInfo/ScriptInfoMapper.java @@ -88,4 +88,12 @@ public interface ScriptInfoMapper { * @return 话术信息集合 */ List selectScriptInfos(); + + /** + * 根据机器人编号查询变量信息 + * + * @param robotPublishId + * @return String + */ + String selectVariablesByRobotPublishId(String robotPublishId); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/impl/AIOBServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/impl/AIOBServiceImpl.java index 915b709a..a925d622 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/impl/AIOBServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/aiob/impl/AIOBServiceImpl.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.aliyuncs.exceptions.ClientException; -import com.sun.media.jfxmedia.logging.Logger; import com.xinelu.common.config.AliYunSmsTwoConfig; import com.xinelu.common.config.SystemBusinessConfig; 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.exception.ServiceException; 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.patientquestionoptionresult.PatientQuestionOptionResult; 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.patientquestionsubmitresult.PatientQuestionSubmitResultDTO; 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.patientinfo.PatientInfoMapper; import com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper; @@ -143,6 +144,8 @@ public class AIOBServiceImpl implements IAIOBService { private ScriptInfoTaskInfoMapper scriptInfoTaskInfoMapper; @Resource private PatientVisitRecordMapper patientVisitRecordMapper; + @Resource + private BatchSendTaskInfoMapper batchSendTaskInfoMapper; /** * @description 获取外呼平台accessToken @@ -366,7 +369,6 @@ public class AIOBServiceImpl implements IAIOBService { signPatientManageRouteNode.setNodeFinishStatus(NodeExecuteResultStatusEnum.FAILURE.getInfo()); } } - } } else { signPatientManageRouteNode.setPhoneNodeExecuteResultStatus(NodeExecuteResultStatusEnum.SUCCESS.getInfo()); @@ -398,24 +400,25 @@ public class AIOBServiceImpl implements IAIOBService { patientTaskExecuteRecord.setPatientId(signPatientManageRoute.getPatientId()); 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)) { patientTaskExecuteRecord.setVisitRecordId(signPatientRecord.getPatientVisitRecordId()); } // 发送短信 if (needSendSms) { - //System.out.println("发送短信-------------------------------------------"); - sendSms(signPatientManageRoute.getPatientId(), signPatientManageRouteNode); + sendSms(signPatientManageRoute.getPatientId(), signPatientManageRouteNode, signPatientManageRoute.getBatchSendTaskId()); } // 重拨 if (needRedial) { if (ObjectUtils.isNotEmpty(signPatientRecord)) { PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.selectPatientVisitRecordById(signPatientRecord.getPatientVisitRecordId()); redialInfoSave(signPatientManageRouteNode, patientVisitRecord); - } - else - { + } else { redialInfoSave(signPatientManageRouteNode, null); } } @@ -445,10 +448,12 @@ public class AIOBServiceImpl implements IAIOBService { phoneDialRecordMapper.insertPhoneDialRecord(phoneDialRecord); - // 修改任务统计表数据 - if (patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) > 0) { + // 修改任务统计表数据 添加getPatientId判断针对batch_send_task_info表未签约未存patient_info表处理 + 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-已接通 @@ -503,12 +508,21 @@ public class AIOBServiceImpl implements IAIOBService { 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()); if (ObjectUtils.isNotEmpty(textMessage)) { // 发送短信 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.setSignName(aliYunSmsTwoConfig.getSignName()); smsInfoDTO.setTemplateCode(textMessage.getTextMessageId()); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/IBatchSendTaskInfoService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/IBatchSendTaskInfoService.java index c7eeea34..7902350e 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/IBatchSendTaskInfoService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/IBatchSendTaskInfoService.java @@ -79,5 +79,12 @@ public interface IBatchSendTaskInfoService { * @return AjaxResult * @throws ClientException */ - AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException; + AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException, IllegalAccessException; + + /** + * 搜素框添加 标签信息 + * + * @return String + */ + List getPhysicalExaminationLabel(); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java index 5504be65..202c81a4 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtaskinfo/impl/BatchSendTaskInfoServiceImpl.java @@ -21,6 +21,7 @@ import com.xinelu.common.utils.SecurityUtils; import com.xinelu.common.utils.regex.RegexUtil; import com.xinelu.manage.domain.agency.Agency; 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.batchsendtaskvariableinfo.BatchSendTaskVariableInfo; 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.mapper.agency.AgencyMapper; 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.batchsendtaskvariableinfo.BatchSendTaskVariableInfoMapper; 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.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; import com.xinelu.manage.service.aiob.IAIOBService; @@ -46,12 +49,14 @@ import com.xinelu.system.mapper.SysUserMapper; import com.xinelu.system.service.ISysDictTypeService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.lang.reflect.Field; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @@ -95,6 +100,11 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { private String callBackUrl; @Resource private AliYunSmsConfig aliyunSmsConfig; + @Resource + private BatchSendTaskLabelInfoMapper batchSendTaskLabelInfoMapper; + @Resource + private ScriptInfoMapper scriptInfoMapper; + private static final String SUCCESS = "OK"; /** @@ -182,6 +192,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { return AjaxResult.error("该账号无所属医院信息,请先配置该账号所属的医院信息!"); } String sn = "batch_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); + List stringList = new ArrayList<>(); for (BatchSendTaskInfo batchSendTaskInfo : list) { batchSendTaskInfo.setSn(sn); batchSendTaskInfo.setHospitalAgencyId(agency.getId()); @@ -198,12 +209,21 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { } if (StringUtils.isNotBlank(batchSendTaskInfo.getPhysicalExaminationSummary())) { String[] strings = BracketExtractor.extractToArray(batchSendTaskInfo.getPhysicalExaminationSummary()); + stringList.addAll(Arrays.asList(strings)); batchSendTaskInfo.setPhysicalExaminationLabel(Arrays.toString(strings)); if (batchSendTaskInfo.getPhysicalExaminationSummary().length() > 999) { batchSendTaskInfo.setPhysicalExaminationSummary(batchSendTaskInfo.getPhysicalExaminationSummary().substring(0, 999)); } } } + //处理标签 + List batchSendTaskLabelInfos = batchSendTaskLabelInfoMapper.selectBatchSendTaskLabelInfoList(null); + List data = batchSendTaskLabelInfos.stream().filter(Objects::nonNull).map(BatchSendTaskLabelInfo::getPhysicalExaminationLabel).collect(Collectors.toList()); + List collect1 = stringList.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); + List subtract = ListUtils.subtract(collect1, data); + if (CollectionUtils.isNotEmpty(subtract)) { + batchSendTaskLabelInfoMapper.insertBatchSendTaskLabelInfList(subtract); + } batchSendTaskInfoMapper.insertBatchSendTaskInfoList(list); return AjaxResult.success(); } @@ -216,9 +236,12 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { * @throws ClientException */ @Override - public AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException { + public AjaxResult batchSend(BatchSendTaskRecordDto batchSendTaskRecordDto) throws ClientException, IllegalAccessException { + log.info("开始创建批量推送任务---------------"); + //新增批量推送任务记录 BatchSendTaskRecordInfo batchSendTaskRecordInfo = new BatchSendTaskRecordInfo(); batchSendTaskRecordInfo.setBatchTaskName(batchSendTaskRecordDto.getManageRouteName()); + //新增批量推送任务记录编号 String batchTaskNumber = null; if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) { 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")); batchSendTaskRecordInfo.setTemplateId(batchSendTaskRecordDto.getPhoneTemplateId()); batchSendTaskRecordInfo.setTemplateName(batchSendTaskRecordDto.getPhoneTemplateName()); - batchSendTaskRecordInfo.setRobotPublishId(batchSendTaskRecordInfo.getRobotPublishId()); + batchSendTaskRecordInfo.setRobotPublishId(batchSendTaskRecordDto.getRobotPublishId()); } batchSendTaskRecordInfo.setBatchTaskNumber(batchTaskNumber); batchSendTaskRecordInfo.setTaskExecuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo()); @@ -238,14 +261,15 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { batchSendTaskRecordInfo.setCreateBy(SecurityUtils.getUsername()); batchSendTaskRecordInfo.setBatchTaskSource(batchSendTaskRecordDto.getBatchTaskSource()); batchSendTaskRecordInfo.setCreateTime(LocalDateTime.now()); + batchSendTaskRecordInfo.setPhysicalExaminationLabel(batchSendTaskRecordDto.getPhysicalExaminationLabel()); int insertBatchSendTaskRecord = batchSendTaskRecordInfoMapper.insertBatchSendTaskRecordInfo(batchSendTaskRecordInfo); if (insertBatchSendTaskRecord <= 0) { log.info("新增批量推送任务记录失败"); return AjaxResult.error("上传任务失败!请联系管理员!"); } - //保存变量 - if (Objects.nonNull(batchSendTaskRecordDto.getVars())) { - List batchSendTaskVariableInfos = new ArrayList<>(); + //保存短信变量 + List batchSendTaskVariableInfos = new ArrayList<>(); + if (Objects.nonNull(batchSendTaskRecordDto.getVars()) && batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) { Set keys = batchSendTaskRecordDto.getVars().keySet(); for (String key : keys) { BatchSendTaskVariableInfo batchSendTaskVariableInfo = new BatchSendTaskVariableInfo(); @@ -256,13 +280,15 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { batchSendTaskRecordInfo.setCreateTime(LocalDateTime.now()); batchSendTaskVariableInfos.add(batchSendTaskVariableInfo); } - if (CollectionUtils.isNotEmpty(batchSendTaskVariableInfos)) { - batchSendTaskVariableInfoMapper.insertBatchSendTaskVariableInfos(batchSendTaskVariableInfos); - } } List signPatientManageRoutes = new ArrayList<>(); List signPatientManageRouteNodes = new ArrayList<>(); List 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()) { //节点主表 SignPatientManageRoute signPatientManageRoute = new SignPatientManageRoute(); @@ -320,12 +346,38 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { shortMessageSendRecord.setMessageNodeContent(batchSendTaskRecordDto.getMessageNodeContent()); shortMessageSendRecord.setCreateTime(LocalDateTime.now()); 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); for (int i = 0; i < signPatientManageRouteNodes.size(); i++) { signPatientManageRouteNodes.get(i).setManageRouteId(signPatientManageRoutes.get(i).getId()); } signPatientManageRouteNodeMapper.insertBatch(signPatientManageRouteNodes); + if (CollectionUtils.isNotEmpty(batchSendTaskVariableInfos)) { + batchSendTaskVariableInfoMapper.insertBatchSendTaskVariableInfos(batchSendTaskVariableInfos); + } if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.TELEPHONE.getInfo())) { SysUser sysUser = sysUserMapper.selectUserById(SecurityUtils.getUserId()); Agency agency = agencyMapper.selectAgencyById(sysUser.getHospitalAgencyId()); @@ -355,7 +407,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { if (dateEndTime.isBefore(localEndTime)) { localEndTime = dateEndTime; } - log.info("开始创建批量电话推送任务---------------"); + log.info("创建批量电话推送任务---------------"); CreateTaskDto createTaskDto = new CreateTaskDto(); //临时重复测试用, String taskName = batchTaskNumber + "-" + batchSendTaskRecordDto.getPhoneTemplateName(); @@ -386,19 +438,19 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { List customerInfoList = new ArrayList<>(); signPatientManageRouteNodes.forEach(node -> { 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()); BatchSendTaskInfo batchSendTaskInfo = batchSendTaskRecordDto.getList().stream().filter(Objects::nonNull).filter(item -> item.getId().equals(signPatientManageRoute.getBatchSendTaskId())).findFirst().orElse(new BatchSendTaskInfo()); + List batchSendTaskVariableList = batchSendTaskVariableInfos.stream().filter(Objects::nonNull).filter(item -> item.getBatchSendTaskId().equals(batchSendTaskInfo.getId())).collect(Collectors.toList()); //校验手机号 if (StringUtils.isNotBlank(batchSendTaskInfo.getPatientPhone())) { if (regexUtil.regexPhone(batchSendTaskInfo.getPatientPhone())) { customerInfoDto.setMobile(batchSendTaskInfo.getPatientPhone()); // 处理变量 JSONObject jsonObject = new JSONObject(); - if (Objects.nonNull(batchSendTaskRecordDto.getVars())) { - Set keys = batchSendTaskRecordDto.getVars().keySet(); - keys.forEach(variable -> { - jsonObject.fluentPut(variable, ObjectUtils.isEmpty(batchSendTaskRecordDto.getVars().get(variable)) ? "" : batchSendTaskRecordDto.getVars().get(variable)); + if (CollectionUtils.isNotEmpty(batchSendTaskVariableList)) { + batchSendTaskVariableList.forEach(variable -> { + jsonObject.fluentPut(variable.getVariable(), ObjectUtils.isEmpty(variable.getVariableAttribute()) ? "" : variable.getVariableAttribute()); }); } customerInfoDto.setVar(jsonObject); @@ -418,6 +470,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { return AjaxResult.success("创建批量电话推送任务执行完成"); } if (batchSendTaskRecordDto.getBatchTaskSource().equals(BillSourceEnum.MESSAGE.getInfo())) { + log.info("创建批量短信推送任务---------------"); SmsInfoDTO smsInfoDTO = new SmsInfoDTO(); List phones = batchSendTaskRecordDto.getList().stream().filter(Objects::nonNull).map(BatchSendTaskInfo::getPatientPhone).distinct().collect(Collectors.toList()); String phoneString = String.join(",", phones); @@ -426,32 +479,42 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { // 处理变量 JSONObject jsonObject = new JSONObject(); if (Objects.nonNull(batchSendTaskRecordDto.getVars())) { - Set keys = batchSendTaskRecordDto.getVars().keySet(); - keys.forEach(variable -> { + Set keySet = batchSendTaskRecordDto.getVars().keySet(); + keySet.forEach(variable -> { jsonObject.fluentPut(variable, ObjectUtils.isEmpty(batchSendTaskRecordDto.getVars().get(variable)) ? "" : batchSendTaskRecordDto.getVars().get(variable)); }); } smsInfoDTO.setTemplateParam(jsonObject); // 根据模版id发送 smsInfoDTO.setTemplateCode(batchSendTaskRecordDto.getMessageTemplateCode()); + smsInfoDTO.setOutId(batchSendTaskRecordInfo.getId().toString()); Boolean aBoolean = sendSms(smsInfoDTO); if (!aBoolean) { - 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()); + return AjaxResult.error("短信上传失败"); } //发送记录批量 - log.info("创建批量电信推送任务执行完成......"); - return AjaxResult.success("短信发送成功"); + log.info("创建批量短信推送任务执行完成......"); + return AjaxResult.success("短信上传成功"); } return AjaxResult.success(); } /** - * 单{code}替换值,发送短信 + * 搜素框添加 标签信息 + * + * @return String + */ + @Override + public List getPhysicalExaminationLabel() { + List 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 { try { @@ -484,7 +547,7 @@ public class BatchSendTaskInfoServiceImpl implements IBatchSendTaskInfoService { request.setSignName(smsInfoDTO.getSignName()); request.setTemplateCode(smsInfoDTO.getTemplateCode()); request.setTemplateParam(smsInfoDTO.getTemplateParam().toJSONString()); - + request.setOutId(smsInfoDTO.getOutId()); SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); // 判断响应的结果 if (!SUCCESS.equals(sendSmsResponse.getCode())) { diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/IBatchSendTaskLabelInfoService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/IBatchSendTaskLabelInfoService.java new file mode 100644 index 00000000..360043d8 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/IBatchSendTaskLabelInfoService.java @@ -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 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); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/impl/BatchSendTaskLabelInfoServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/impl/BatchSendTaskLabelInfoServiceImpl.java new file mode 100644 index 00000000..ceba58a5 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/batchsendtasklabelinfo/impl/BatchSendTaskLabelInfoServiceImpl.java @@ -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 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); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java index e4da3fb7..6677c4a6 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java @@ -1554,7 +1554,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout /** - * 发送短信 + * 发送短信(无变量) */ @Override public Boolean sendSms(SmsInfoDTO smsInfoDTO) throws ClientException, ServiceException { diff --git a/postdischarge-manage/src/main/resources/mapper/manage/batchsendtaskinfo/BatchSendTaskInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/batchsendtaskinfo/BatchSendTaskInfoMapper.xml index a6364eb0..7eb87c0d 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/batchsendtaskinfo/BatchSendTaskInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/batchsendtaskinfo/BatchSendTaskInfoMapper.xml @@ -118,7 +118,7 @@ and physical_examination_summary = #{physicalExaminationSummary} - and physical_examination_label = #{physicalExaminationLabel} + and physical_examination_label like concat('%', #{physicalExaminationLabel}, '%') @@ -342,7 +342,7 @@ ( #{BatchSendTaskInfo.orderNum}, #{BatchSendTaskInfo.sn}, - #{BatchSendTaskInfo.importname}, + #{BatchSendTaskInfo.importName}, #{BatchSendTaskInfo.teamName}, #{BatchSendTaskInfo.hospitalAgencyId}, #{BatchSendTaskInfo.hospitalAgencyName}, diff --git a/postdischarge-manage/src/main/resources/mapper/manage/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.xml new file mode 100644 index 00000000..28c55c63 --- /dev/null +++ b/postdischarge-manage/src/main/resources/mapper/manage/batchsendtasklabelinfo/BatchSendTaskLabelInfoMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + select id, physical_examination_label + from batch_send_task_label_info + + + + + + + + insert into batch_send_task_label_info + + physical_examination_label, + + + + #{physicalExaminationLabel}, + + + + + + update batch_send_task_label_info + + physical_examination_label = + #{physicalExaminationLabel}, + + + where id = #{id} + + + + delete + from batch_send_task_label_info + where id = #{id} + + + + delete from batch_send_task_label_info where id in + + #{id} + + + + + + insert into batch_send_task_label_info( + physical_examination_label + ) + values + + (#{label}) + + + \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml index 55ae49e3..8135a88d 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/scriptInfo/ScriptInfoMapper.xml @@ -365,4 +365,8 @@ + + \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml index aaa11fbe..28b90a95 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml @@ -564,7 +564,7 @@ - + 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, 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,