diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/shortmessagesendrecord/ShortMessageSendRecord.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/shortmessagesendrecord/ShortMessageSendRecord.java index ca7af3d1..a1dd0bee 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/shortmessagesendrecord/ShortMessageSendRecord.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/shortmessagesendrecord/ShortMessageSendRecord.java @@ -67,6 +67,9 @@ public class ShortMessageSendRecord extends BaseEntity { @ApiModelProperty(value = "消息模板id") private String messageTemplateId; + @Excel(name = "模板") + private String template; + /** * 消息内容 */ diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/phonedialrecord/impl/PhoneDialRecordServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/phonedialrecord/impl/PhoneDialRecordServiceImpl.java index 0e3da6c0..f545d564 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/phonedialrecord/impl/PhoneDialRecordServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/phonedialrecord/impl/PhoneDialRecordServiceImpl.java @@ -103,7 +103,7 @@ public class PhoneDialRecordServiceImpl implements IPhoneDialRecordService { if (Objects.nonNull(pushCount.getTotal()) && pushCount.getTotal() != 0) { pushCount.setSuccessRate(new BigDecimal(pushCount.getSuccess()).divide(new BigDecimal(pushCount.getTotal()), 4, RoundingMode.HALF_UP)); } - if (Objects.isNull(pushCount.getTotal()) || pushCount.getTotal() == 0){ + if (Objects.isNull(pushCount.getTotal()) || pushCount.getTotal() == 0) { pushCount.setSuccessRate(BigDecimal.ZERO); } return AjaxResult.success(pushCount); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectresult/impl/ProjectResultServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectresult/impl/ProjectResultServiceImpl.java index 11362df8..87c2f177 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectresult/impl/ProjectResultServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectresult/impl/ProjectResultServiceImpl.java @@ -114,7 +114,8 @@ public class ProjectResultServiceImpl implements IProjectResultService { projectGroup.setGroupCode(projectResultStatisticDto.getGroupCode()); List groupList = projectGroupMapper.selectProjectGroupList(projectGroup); if (CollectionUtils.isEmpty(groupList)) { - throw new ServiceException("未找到该检测项目"); + //throw new ServiceException("未找到该检测项目"); + return new ProjectResultStatisticVo(); } projectResultStatisticDto.setGroupId(groupList.get(0).getId()); } @@ -124,12 +125,14 @@ public class ProjectResultServiceImpl implements IProjectResultService { projectQuery.setProjectCode(projectResultStatisticDto.getProjectCode()); List projectList = projectMapper.selectProjectList(projectQuery); if (CollectionUtils.isEmpty(projectList)) { - throw new ServiceException("未找到该检测项目"); + //throw new ServiceException("未找到该检测项目"); + return new ProjectResultStatisticVo(); } projectResultStatisticDto.setProjectId(projectList.get(0).getId()); } if (projectResultStatisticDto.getPatientId() == null) { - throw new ServiceException("数据格式错误"); + //throw new ServiceException("数据格式错误"); + return new ProjectResultStatisticVo(); } List measureTimeList = new ArrayList<>(); Map> valueMap = new HashMap<>(); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/phonedialrecord/BillPhoneDialVo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/phonedialrecord/BillPhoneDialVo.java index 3e1fe2fc..85291de0 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/phonedialrecord/BillPhoneDialVo.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/phonedialrecord/BillPhoneDialVo.java @@ -4,8 +4,10 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.xinelu.common.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -122,4 +124,22 @@ public class BillPhoneDialVo { */ @ApiModelProperty(value = "关联账单名称") private Long billName; + + /** + * 关联账单名称 + */ + @ApiModelProperty(value = "推送结果状态") + private String errorStatus; + + /** + * 关联账单名称 + */ + @ApiModelProperty(value = "推送结果状态码") + private String errorCode; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate dialTimeStart; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate dialTimeEnd; } \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/shortmessagesendrecord/ShortMessageSendRecordVo.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/shortmessagesendrecord/ShortMessageSendRecordVo.java index ab946396..dc9ce95b 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/shortmessagesendrecord/ShortMessageSendRecordVo.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/shortmessagesendrecord/ShortMessageSendRecordVo.java @@ -4,8 +4,10 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.xinelu.common.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; /** @@ -111,4 +113,10 @@ public class ShortMessageSendRecordVo { */ @ApiModelProperty(value = "关联账单名称") private String billName; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate sendTimeStart; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate sendTimeEnd; } diff --git a/postdischarge-manage/src/main/resources/mapper/manage/phonedialrecord/PhoneDialRecordMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/phonedialrecord/PhoneDialRecordMapper.xml index fc01c277..5747959a 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/phonedialrecord/PhoneDialRecordMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/phonedialrecord/PhoneDialRecordMapper.xml @@ -120,6 +120,8 @@ record.phone_expense, record.phone_unit_price, record.bill_id, + record.error_status, + record.error_code, patient.patient_name, bill.bill_name from phone_dial_record record @@ -127,13 +129,14 @@ left join bill_info bill ON record.bill_id = bill.id where 1 = 1 - and patient.patient_name = #{patientName} + and patient.patient_name LIKE CONCAT(#{patientName}, '%') - and record.patient_phone = #{patientPhone} + and record.patient_phone LIKE CONCAT(#{patientPhone}, '%') - - and record.dial_time = #{dialTime} + + and record.dial_time >= #{dialTimeStart} + and record.dial_time < #{dialTimeEnd} and record.phone_template_id = #{phoneTemplateId} diff --git a/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml index c93f93f8..10a54c7a 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/shortmessagesendrecord/ShortMessageSendRecordMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -25,6 +25,7 @@ + @@ -114,19 +115,22 @@ record.message_expense, record.bill_id, patient.patient_name, - bill.bill_name + bill.bill_name, + text.text_message_name as template from short_message_send_record record left join patient_info patient on patient.id = record.patient_id left join bill_info bill ON record.bill_id = bill.id + left join text_message text ON text.text_message_id = record.message_template_id where 1 = 1 - and patient.patient_name = #{patientName} + and patient.patient_name LIKE CONCAT(#{patientName}, '%') - and record.patient_phone = #{patientPhone} + and record.patient_phone LIKE CONCAT(#{patientPhone}, '%') - - and record.send_time = #{sendTime} + + and record.send_time >= #{sendTimeStart} + and record.send_time < #{sendTimeEnd} and record.message_template_id = #{messageTemplateId} @@ -138,8 +142,30 @@ sysDictDataList = iSysDictTypeService.selectDictDataByType("unit_price"); + if (CollectionUtils.isNotEmpty(sysDictDataList)){ + SysDictData message = sysDictDataList.stream().filter(Objects::nonNull).filter(item -> item.getDictLabel().equals("message")).findFirst().orElse(new SysDictData()); + if (Objects.nonNull(message.getDictValue())){ + price = new BigDecimal(message.getDictValue()); + } + } List shortMessageSendRecords = new ArrayList<>(); - JSONObject jsonObject = sendTextMessageService.taskTextMessageSendBack(data, shortMessageSendRecords, signPatientManageRoute); + JSONObject jsonObject = sendTextMessageService.taskTextMessageSendBack(data, shortMessageSendRecords, signPatientManageRoute, price); if (CollectionUtils.isNotEmpty(shortMessageSendRecords)) { shortMessageSendRecordMapper.insertShortMessageSendRecords(shortMessageSendRecords); } diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/SendTextMessageService.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/SendTextMessageService.java index 8228ac10..a40b286e 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/SendTextMessageService.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/SendTextMessageService.java @@ -7,6 +7,7 @@ import com.xinelu.manage.domain.textmessage.SmsReport; import com.xinelu.manage.domain.textmessage.TaskMessageBackEntity; import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO; +import java.math.BigDecimal; import java.util.List; /** @@ -29,7 +30,7 @@ public interface SendTextMessageService { * @param data 任务单通电话回调传输data * @return JSONObject */ - JSONObject taskTextMessageSendBack(SmsReport data, List shortMessageSendRecords, SignPatientManageRouteVO signPatientManageRoute); + JSONObject taskTextMessageSendBack(SmsReport data, List shortMessageSendRecords, SignPatientManageRouteVO signPatientManageRoute, BigDecimal price); Integer updateReadState(Integer readState, List ids); diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java index 866e0ccd..464a9064 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/service/impl/SendTextMessageServiceImpl.java @@ -248,7 +248,7 @@ public class SendTextMessageServiceImpl implements SendTextMessageService { } @Override - public JSONObject taskTextMessageSendBack(SmsReport data, List shortMessageSendRecords, SignPatientManageRouteVO signPatientManageRouteVO) { + public JSONObject taskTextMessageSendBack(SmsReport data, List shortMessageSendRecords, SignPatientManageRouteVO signPatientManageRouteVO, BigDecimal price) { JSONObject retObj = new JSONObject(); retObj.fluentPut("code", 0).fluentPut("msg", "成功"); List signPatientManageRouteNodes = signPatientManageRouteNodeMapper.selectNodeByRouteId(signPatientManageRouteVO.getId()); @@ -286,7 +286,7 @@ public class SendTextMessageServiceImpl implements SendTextMessageService { shortMessageSendRecord.setMessageType("COMMON"); if (StringUtils.isNotBlank(data.getSms_size())){ shortMessageSendRecord.setMessageQuantity(Long.valueOf(data.getSms_size())); - shortMessageSendRecord.setMessageUnitPrice(new BigDecimal("0.1")); + shortMessageSendRecord.setMessageUnitPrice(price); } shortMessageSendRecord.setCreateBy("system"); shortMessageSendRecord.setCreateTime(LocalDateTime.now()); diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SendTextMessageTask.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SendTextMessageTask.java index 547a78c3..493c758d 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SendTextMessageTask.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SendTextMessageTask.java @@ -3,6 +3,7 @@ package com.xinelu.quartz.task; import com.alibaba.fastjson.JSON; import com.aliyuncs.exceptions.ClientException; +import com.xinelu.common.core.domain.entity.SysDictData; import com.xinelu.manage.domain.shortmessagesendrecord.ShortMessageSendRecord; import com.xinelu.manage.domain.textmessage.SmsReport; import com.xinelu.manage.domain.textmessage.TaskMessageBackEntity; @@ -10,6 +11,7 @@ import com.xinelu.manage.mapper.shortmessagesendrecord.ShortMessageSendRecordMap import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper; import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO; import com.xinelu.quartz.service.SendTextMessageService; +import com.xinelu.system.service.ISysDictTypeService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -17,6 +19,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -37,6 +40,8 @@ public class SendTextMessageTask { private ShortMessageSendRecordMapper shortMessageSendRecordMapper; @Resource private SignPatientManageRouteMapper signPatientManageRouteMapper; + @Resource + private ISysDictTypeService iSysDictTypeService; /** * 签约患者管理任务路径节点短信发送定时任务 @@ -46,6 +51,7 @@ public class SendTextMessageTask { sendTextMessageService.sendTextMessageSendTask(); log.info("完成订阅签约患者管理任务路径节点推送定时任务......"); } + @Transactional(rollbackFor = Exception.class) public void smsReportBack() { log.info("开始执行同步短信回调数据定时任务......"); @@ -79,16 +85,24 @@ public class SendTextMessageTask { log.info("短信数据缺少任务信息!"); return; } + BigDecimal price = BigDecimal.valueOf(0.00); + List sysDictDataList = iSysDictTypeService.selectDictDataByType("unit_price"); + if (CollectionUtils.isNotEmpty(sysDictDataList)){ + SysDictData message = sysDictDataList.stream().filter(Objects::nonNull).filter(item -> item.getDictLabel().equals("message")).findFirst().orElse(new SysDictData()); + if (Objects.nonNull(message.getDictValue())){ + price = new BigDecimal(message.getDictValue()); + } + } List signPatientManageRoutes = signPatientManageRouteMapper.selectRouteByBatchSendTaskRecordId(outIds); for (SmsReport smsReport : smsReports) { // 回调数据解析 SignPatientManageRouteVO signPatientManageRoute = signPatientManageRoutes.stream().filter(Objects::nonNull) .filter(item -> smsReport.getPhone_number().equals(item.getPhone()) && item.getBatchSendTaskRecordId().equals(Long.parseLong(smsReport.getOut_id()))) .findFirst().orElse(new SignPatientManageRouteVO()); - if (StringUtils.isBlank(signPatientManageRoute.getPhone()) || Objects.isNull(signPatientManageRoute.getId())){ + if (StringUtils.isBlank(signPatientManageRoute.getPhone()) || Objects.isNull(signPatientManageRoute.getId())) { continue; } - sendTextMessageService.taskTextMessageSendBack(smsReport, shortMessageSendRecords, signPatientManageRoute); + sendTextMessageService.taskTextMessageSendBack(smsReport, shortMessageSendRecords, signPatientManageRoute, price); } } if (CollectionUtils.isNotEmpty(shortMessageSendRecords) && shortMessageSendRecords.size() > 0) {