From c5710b3992e885ef4088c368ea3184949ff8eaec Mon Sep 17 00:00:00 2001 From: zhangchao Date: Thu, 7 Mar 2024 08:34:46 +0800 Subject: [PATCH] =?UTF-8?q?#=E6=96=B0=E5=A2=9E=E4=BA=A7=E5=A6=87=E5=BA=B7?= =?UTF-8?q?=E5=A4=8D=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainOrm/master/MatDeliverPushRecordMapper.xml | 4 +- .../msg/controller/MsgGenerateController.java | 7 + .../platform/msg/remote/AmsMessageService.java | 16 ++ .../lyms/platform/msg/service/IBaseService.java | 10 + .../platform/msg/service/IMsgGenerateService.java | 5 + .../platform/msg/service/impl/BaseServiceImpl.java | 25 +++ .../msg/service/impl/MsgGenerateServiceImpl.java | 21 ++ .../com/lyms/platform/msg/utils/DateUtils.java | 4 +- .../msg/worker/ChanKangAmsMsgGenerateWorker.java | 211 +++++++++++++++++++++ .../operate/web/facade/MatDeliverFacade.java | 42 +++- 10 files changed, 340 insertions(+), 5 deletions(-) create mode 100644 platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanKangAmsMsgGenerateWorker.java diff --git a/platform-biz-service/src/main/resources/mainOrm/master/MatDeliverPushRecordMapper.xml b/platform-biz-service/src/main/resources/mainOrm/master/MatDeliverPushRecordMapper.xml index e6fbe38..bbca983 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/MatDeliverPushRecordMapper.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/MatDeliverPushRecordMapper.xml @@ -17,8 +17,8 @@ - INSERT INTO mat_deliver_push_record(weekType,parentId) - VALUES (#{week_type},#{parent_id}) + INSERT INTO mat_deliver_push_record(week_type,parent_id) + VALUES (#{weekType},#{parentId}) diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java index 5f397f4..22de7ed 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java @@ -148,4 +148,11 @@ public class MsgGenerateController extends BaseController { return ""; } + @RequestMapping(method = RequestMethod.GET, value = "/generateChanKangAmsMsg") + @ResponseBody + public String generateChanKangAmsMsg(){ + msgGenerateService.generateChanKangAmsMsg(null); + return ""; + } + } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java index cabdc95..1bd3d09 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java @@ -10,6 +10,7 @@ import com.lyms.platform.msg.constants.ConfigInterface; import com.lyms.platform.msg.model.MessageContent; import com.lyms.platform.msg.model.MessageResponseEntity; import net.sf.json.JSONArray; +import net.sf.json.JSONObject; import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +35,21 @@ public class AmsMessageService { public static final String DATA_URL= ConfigInterface.DATA_URL; private static final String AUTHORIZATION = "healthbaby2015"; + + public static JSONObject getArticleList(Map params){ + Map headers = new HashMap(); + headers.put("Authorization", AUTHORIZATION); + String str = HttpRequest.sendGet("http://ams.api.healthbaby.com.cn/v1/articleList", + params, headers); + try { + return JSONObject.fromObject(str); + } catch (Exception e) { + ExceptionUtils.catchException(e,"getArticleList exception"); + } + return null; + } + + public static Map> getMessageTemplateMap(String hospitalId,AmsServiceTypeEnum serviceType) { System.out.println("ams > hospitalId=" + hospitalId + ";serviceType=" + serviceType); diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java index 2b26455..36333bf 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java @@ -1,5 +1,8 @@ package com.lyms.platform.msg.service; +import com.lyms.platform.msg.model.HighScoreResult; +import com.lyms.platform.permission.model.MatDeliverPushRecord; +import com.lyms.platform.pojo.MaternalDeliverModel; import com.lyms.platform.pojo.SmsConfigModel; import com.lyms.platform.pojo.SmsTemplateModel; @@ -42,4 +45,11 @@ public interface IBaseService { public String getPregnantSmsPrefix(SmsConfigModel config,String pid,String mainPrefix,SmsTemplateModel template); public String getDoctorName(String doctorId); + + public MaternalDeliverModel getModelByPid(String pid); + + public HighScoreResult queryRiskList(List ids); + + public Integer selectByWeek(String parentId,Integer weeks); + void addWeek(MatDeliverPushRecord matDeliverPushRecord); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java index e749dae..3d1f8c8 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java @@ -30,6 +30,11 @@ public interface IMsgGenerateService { */ void generateChanAmsMsg(String generateHospitalId); + /** + * 生成产后康复ams推送消息 + * @param generateHospitalId + */ + void generateChanKangAmsMsg(String generateHospitalId); /** * 生成 课程推送 diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java index a21ff1b..e48cd84 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java @@ -10,6 +10,7 @@ import com.lyms.platform.msg.model.HighScoreResult; import com.lyms.platform.msg.service.IBaseService; import com.lyms.platform.msg.utils.DateUtils; import com.lyms.platform.permission.model.*; +import com.lyms.platform.permission.service.MatDeliverPushRecordService; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.PatientServiceService; import com.lyms.platform.permission.service.UsersService; @@ -68,6 +69,8 @@ public class BaseServiceImpl implements IBaseService { @Autowired private BasicConfigService basicConfigService; + @Autowired + private MatDeliverPushRecordService matDeliverPushRecordService; /** * 查询出对应周几要发送的的医院配置 @@ -540,6 +543,28 @@ public class BaseServiceImpl implements IBaseService { } } + @Override + public MaternalDeliverModel getModelByPid(String pid) { + Query query = new Query(); + query.addCriteria(Criteria.where("parentId").is(pid).and("yn").is(1)); + List modelList = mongoTemplate.find(query, MaternalDeliverModel.class); + return modelList.get(0); + } + + @Override + public HighScoreResult queryRiskList(List ids) { + return queryRisk(ids); + } + + @Override + public Integer selectByWeek(String parentId, Integer weeks) { + return matDeliverPushRecordService.selectByWeek(parentId,weeks); + } + + @Override + public void addWeek(MatDeliverPushRecord matDeliverPushRecord) { + matDeliverPushRecordService.add(matDeliverPushRecord); + } /** diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java index 50be0e2..db47fe6 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java @@ -247,6 +247,26 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { } } + @Override + public void generateChanKangAmsMsg(String generateHospitalId) { + List configModels = baseService.getHospitalConfigsByWeek(generateHospitalId); + logger.info("The generateChanKangAmsMsg configs hospital size is {}", configModels.size()); + if (CollectionUtils.isNotEmpty(configModels)) + { + int end = 0; + for (int i = 0; i < configModels.size(); i += DEFAULT_BATCH_SIZE) { + end = (end + DEFAULT_BATCH_SIZE); + if (end > configModels.size()) { + end = configModels.size(); + } + ChanKangAmsMsgGenerateWorker checkPointCountWorker = new ChanKangAmsMsgGenerateWorker(configModels.subList(i,end), + baseService,yunBookbuildingService); + pool.execute(checkPointCountWorker); + } + + } + } + /** * 生成模板消息 * @param generateHospitalId @@ -348,6 +368,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { generatePatAmsMsg(null); generateBabyAmsMsg(null); generateChanAmsMsg(null); + generateChanKangAmsMsg(null); generateBabyDiseaseAmsMsg(null); generateResidentAmsMsg(null); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/DateUtils.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/DateUtils.java index e477ddd..31d7503 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/DateUtils.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/DateUtils.java @@ -236,7 +236,7 @@ public class DateUtils { Date endDate = DateUtils.getNewDate(new Date(), -13, "周", 1); System.out.println(DateUtils.getDateStr(DateUtils.formatDate(startDate, DateUtils.Y_M_D),DateUtils.Y_M_D)); System.out.println(DateUtils.getDateStr(DateUtils.formatDate(endDate, DateUtils.Y_M_D),DateUtils.Y_M_D));*/ - - System.out.println(DateUtils.getNewDate(DateUtils.preaseDate("2023-09-26 8:00:00",DateUtils.Y_M_D_H_M_S),13, "周", -1)); + System.out.println(getWeekOfDate(new Date())); + //System.out.println(DateUtils.getNewDate(DateUtils.preaseDate("2023-09-26 8:00:00",DateUtils.Y_M_D_H_M_S),13, "周", -1)); } } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanKangAmsMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanKangAmsMsgGenerateWorker.java new file mode 100644 index 0000000..1371f55 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanKangAmsMsgGenerateWorker.java @@ -0,0 +1,211 @@ +package com.lyms.platform.msg.worker; + +import com.lyms.platform.beans.MsgListRequest; +import com.lyms.platform.beans.MsgRequest; +import com.lyms.platform.biz.service.YunBookbuildingService; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.msg.model.HighScoreResult; +import com.lyms.platform.msg.remote.AmsMessageService; +import com.lyms.platform.msg.service.IBaseService; +import com.lyms.platform.msg.utils.DateUtils; +import com.lyms.platform.msg.utils.HelperUtils; +import com.lyms.platform.permission.model.MatDeliverPushRecord; +import com.lyms.platform.pojo.MaternalDeliverModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.SmsConfigModel; +import com.lyms.platform.query.PatientsQuery; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; + +/** + * 产后康复 + */ +public class ChanKangAmsMsgGenerateWorker implements Runnable { + private static final Logger logger = LoggerFactory.getLogger(ChanKangAmsMsgGenerateWorker.class); + + private List configs; + + private IBaseService baseService; + + private YunBookbuildingService yunBookbuildingService; + + + public ChanKangAmsMsgGenerateWorker(List configs, IBaseService baseService, + YunBookbuildingService yunBookbuildingService) { + this.configs = configs; + this.baseService = baseService; + this.yunBookbuildingService = yunBookbuildingService; + + } + + @Override + public void run() { + if (CollectionUtils.isNotEmpty(configs)) { + for (SmsConfigModel config : configs) { + + String hospitalId = config.getHospitalId(); + if (StringUtils.isEmpty(hospitalId)) { + continue; + } + + //判断医院是否运行 + if (!baseService.isRunning(hospitalId)) { + continue; + } + + String serviceStr = config.getSmsService(); + String serviceType = config.getServiceType(); + + //判断消息服务是否启动 + int service = baseService.isStartService(SmsServiceEnums.CHKFTX.getId(), serviceStr, serviceType); + if (service == 0) { + continue; + } + + + logger.info("The ChanKangAmsMsgGenerateWorker hospital id is " + hospitalId); + + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(hospitalId); + //1孕妇 3 产妇 + patientsQuery.setType(3); + patientsQuery.setDueStatus(0); + + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientsQuery.setSmsBuildTypeList(buildType); + + + //健康指导短信 只能是类型为 增值服务 开通状态 才发送 + patientsQuery.setServiceType(ServiceTypeEnums.ADD_MAT_DELIVER_SERVICE.getId()); + patientsQuery.setServiceStatus(ServiceStatusEnums.STANDARD_OPEN.getId()); + + + //查询符合条件的产妇 + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + System.out.println("amsSmses--->"+patients); + if (CollectionUtils.isNotEmpty(patients)) { + + //发送短信集合 + MsgListRequest list = new MsgListRequest(); + List messages = new ArrayList<>(); + for (Patients pat : patients) { + if (pat == null || pat.getFmDate() == null) { + continue; + } + + MaternalDeliverModel maternalDeliverModel = baseService.getModelByPid(pat.getId()); + + System.out.println("maternalDeliverModel--->"+maternalDeliverModel); + //分娩类型 + String deliveryMode = getDelivery(maternalDeliverModel); + //计算产后多少周 按分娩日期计算 + int weeks = (DateUtils.daysBetween(pat.getFmDate(), new Date()) / 7)>12?12:DateUtils.daysBetween(pat.getFmDate(), new Date()) / 7; + + String parentId =maternalDeliverModel.getParentId(); + + Integer id = baseService.selectByWeek(parentId, weeks); + if (id != null) { + continue; + } + + + List riskId = pat.getRiskFactorId(); + StringBuffer sb = new StringBuffer(); + if (CollectionUtils.isNotEmpty(riskId)) { + HighScoreResult highScoreResult = baseService.queryRiskList(riskId); + List riskList = highScoreResult.getHighRisk(); + if (CollectionUtils.isNotEmpty(riskList)) { + for (Map risk : riskList) { + sb.append(risk.get("name")).append(","); + } + } + } + + String highRisk = sb.toString(); + Map params = new HashMap<>(); + params.put("weekType", String.valueOf(weeks)); + params.put("deliveryMode", deliveryMode); + if (highRisk.length() > 0) { + params.put("riskType", highRisk.substring(0, highRisk.length() - 1)); + } + System.out.println("params--->"+params); + // 查询模板短信 从ams平台配置的短信通过医院ID + net.sf.json.JSONObject amsSmses = AmsMessageService + .getArticleList(params); + System.out.println("amsSmses--->"+amsSmses); + if (amsSmses == null || amsSmses.getInt("errorcode") != 0 || + amsSmses.getJSONArray("list")==null || amsSmses.getJSONArray("list").size()==0) { + continue; + } + MatDeliverPushRecord matDeliverPushRecord = new MatDeliverPushRecord(); + matDeliverPushRecord.setParentId(parentId); + matDeliverPushRecord.setWeekType(weeks); + baseService.addWeek(matDeliverPushRecord); + id=matDeliverPushRecord.getId(); + + String yunWeek = "产后" + String.valueOf(weeks) + "周"; + String title = "产后康复指导(点此查看详情)"; + String messageContent = ""; + MsgRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(), + ServiceObjEnums.CHANOBJ.getId(), SmsServiceEnums.CHKFTX.getId(), + pat.getHospitalId(), String.valueOf(id), pat.getId(), yunWeek, title, "", + WxTempleteIdEnums.CHAN_YI_BAN_ZHI_DAO.getId(), service); + + messages.add(request); + } + if (CollectionUtils.isNotEmpty(messages)){ + list.setMessages(messages); + System.out.println("messages--->"+list); + HelperUtils.sendMsg(list); + } + } + } + } + } + + + /** + * 获取产妇分娩类型 + * + * @return + */ + private String getDelivery(MaternalDeliverModel data) { + String deliveryMode = ""; + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getDeliveryMode())) { + StringBuilder sb = new StringBuilder(); + + Map m = JsonUtil.str2Obj(data.getDeliveryMode(), Map.class); + String fmfs = null; + if (m != null) { + Object b = m.get("fmfs"); + if (b != null) { + fmfs = b.toString(); + if (fmfs != null) { + if (fmfs.equals("1")) { + String fmName = FmTypeEnums.getFmNameById(fmfs); + sb.append(fmName); + if (null != m.get("scfs") && !"null".equals(m.get("scfs").toString())) { + sb.append(","); + String scfs = m.get("scfs").toString(); + sb.append(FmTypeEnums.getFmScNameById(scfs)); + } + deliveryMode = sb.toString(); + } else if (fmfs.equals("2")) { + String fmName = FmTypeEnums.getFmNameById(fmfs); + deliveryMode = fmName; + } + } + } + } + } + return deliveryMode; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java index ed6eb62..f2b97a4 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java @@ -4293,6 +4293,23 @@ public class MatDeliverFacade { query.addCriteria(Criteria.where("parentId").is(patientsList.get(0).getId()).and("yn").is(1)); List list = mongoTemplate.find(query, MaternalDeliverModel.class); if (CollectionUtils.isNotEmpty(list)) { + //高危因素 + List riskId = patientsList.get(0).getRiskFactorId(); + StringBuffer sb = new StringBuffer(); + if (CollectionUtils.isNotEmpty(riskId)) { + HighScoreResult highScoreResult = queryRisk(riskId); + List riskList = highScoreResult.getHighRisk(); + if (CollectionUtils.isNotEmpty(riskList)) { + for (Map risk : riskList) { + sb.append(risk.get("name")).append(","); + } + } + } + + String highRisk = sb.toString(); + if (highRisk.length() > 0) { + params.put("riskType", highRisk.substring(0, highRisk.length() - 1)); + } MaternalDeliverModel maternalDeliverModel = list.get(0); String dueDate = maternalDeliverModel.getDueDate() + " 00:00:00"; //分娩类型 基于ID查询对应文章 @@ -4317,7 +4334,30 @@ public class MatDeliverFacade { private static int getTime(Date dueDate) { int days = DateUtil.daysBetween(dueDate, new Date()); - return days / 7; + return days%7==0?days/7:days/7+1; + } + private HighScoreResult queryRisk(List id) { + HighScoreResult highScoreResult = new HighScoreResult(); + BasicConfigQuery + basicConfigQuery = new BasicConfigQuery(); + List data = new ArrayList(); + Integer score = null; + if (CollectionUtils.isNotEmpty(id)) { + for (String i : id) { + basicConfigQuery.setId(i); + List basicConfigs = basicConfigService.queryBasicConfig(basicConfigQuery); + if (CollectionUtils.isNotEmpty(basicConfigs)) { + for (BasicConfig basicConfig : basicConfigs) { + Map map = new HashMap<>(); + map.put("id", basicConfig.getId()); + map.put("name", basicConfig.getName()); + data.add(map); + } + } + } + } + highScoreResult.setHighRisk(data); + return highScoreResult; } public static void main(String[] args) { -- 1.8.3.1