Commit c5710b3992e885ef4088c368ea3184949ff8eaec

Authored by zhangchao
1 parent c7311fd687
Exists in luanping and in 1 other branch dev

#新增产妇康复推送

Showing 10 changed files with 340 additions and 5 deletions

platform-biz-service/src/main/resources/mainOrm/master/MatDeliverPushRecordMapper.xml View file @ c5710b3
... ... @@ -17,8 +17,8 @@
17 17 </select>
18 18  
19 19 <insert id="add" parameterType="com.lyms.platform.permission.model.MatDeliverPushRecord" useGeneratedKeys="true" keyProperty="id">
20   - INSERT INTO mat_deliver_push_record(weekType,parentId)
21   - VALUES (#{week_type},#{parent_id})
  20 + INSERT INTO mat_deliver_push_record(week_type,parent_id)
  21 + VALUES (#{weekType},#{parentId})
22 22 </insert>
23 23  
24 24  
platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java View file @ c5710b3
... ... @@ -148,5 +148,12 @@
148 148 return "";
149 149 }
150 150  
  151 + @RequestMapping(method = RequestMethod.GET, value = "/generateChanKangAmsMsg")
  152 + @ResponseBody
  153 + public String generateChanKangAmsMsg(){
  154 + msgGenerateService.generateChanKangAmsMsg(null);
  155 + return "";
  156 + }
  157 +
151 158 }
platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java View file @ c5710b3
... ... @@ -10,6 +10,7 @@
10 10 import com.lyms.platform.msg.model.MessageContent;
11 11 import com.lyms.platform.msg.model.MessageResponseEntity;
12 12 import net.sf.json.JSONArray;
  13 +import net.sf.json.JSONObject;
13 14 import org.apache.commons.collections.CollectionUtils;
14 15 import org.slf4j.Logger;
15 16 import org.slf4j.LoggerFactory;
... ... @@ -33,6 +34,21 @@
33 34 public static final String AMS_URL= ConfigInterface.AMS_URL;
34 35 public static final String DATA_URL= ConfigInterface.DATA_URL;
35 36 private static final String AUTHORIZATION = "healthbaby2015";
  37 +
  38 +
  39 + public static JSONObject getArticleList(Map<String, String> params){
  40 + Map<String, String> headers = new HashMap<String, String>();
  41 + headers.put("Authorization", AUTHORIZATION);
  42 + String str = HttpRequest.sendGet("http://ams.api.healthbaby.com.cn/v1/articleList",
  43 + params, headers);
  44 + try {
  45 + return JSONObject.fromObject(str);
  46 + } catch (Exception e) {
  47 + ExceptionUtils.catchException(e,"getArticleList exception");
  48 + }
  49 + return null;
  50 + }
  51 +
36 52  
37 53 public static Map<String,List<MessageContent>> getMessageTemplateMap(String hospitalId,AmsServiceTypeEnum serviceType) {
38 54 System.out.println("ams > hospitalId=" + hospitalId + ";serviceType=" + serviceType);
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java View file @ c5710b3
1 1 package com.lyms.platform.msg.service;
2 2  
  3 +import com.lyms.platform.msg.model.HighScoreResult;
  4 +import com.lyms.platform.permission.model.MatDeliverPushRecord;
  5 +import com.lyms.platform.pojo.MaternalDeliverModel;
3 6 import com.lyms.platform.pojo.SmsConfigModel;
4 7 import com.lyms.platform.pojo.SmsTemplateModel;
5 8  
... ... @@ -42,5 +45,12 @@
42 45 public String getPregnantSmsPrefix(SmsConfigModel config,String pid,String mainPrefix,SmsTemplateModel template);
43 46  
44 47 public String getDoctorName(String doctorId);
  48 +
  49 + public MaternalDeliverModel getModelByPid(String pid);
  50 +
  51 + public HighScoreResult queryRiskList(List<String> ids);
  52 +
  53 + public Integer selectByWeek(String parentId,Integer weeks);
  54 + void addWeek(MatDeliverPushRecord matDeliverPushRecord);
45 55 }
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java View file @ c5710b3
... ... @@ -30,6 +30,11 @@
30 30 */
31 31 void generateChanAmsMsg(String generateHospitalId);
32 32  
  33 + /**
  34 + * 生成产后康复ams推送消息
  35 + * @param generateHospitalId
  36 + */
  37 + void generateChanKangAmsMsg(String generateHospitalId);
33 38  
34 39 /**
35 40 * 生成 课程推送
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java View file @ c5710b3
... ... @@ -10,6 +10,7 @@
10 10 import com.lyms.platform.msg.service.IBaseService;
11 11 import com.lyms.platform.msg.utils.DateUtils;
12 12 import com.lyms.platform.permission.model.*;
  13 +import com.lyms.platform.permission.service.MatDeliverPushRecordService;
13 14 import com.lyms.platform.permission.service.OrganizationService;
14 15 import com.lyms.platform.permission.service.PatientServiceService;
15 16 import com.lyms.platform.permission.service.UsersService;
... ... @@ -68,6 +69,8 @@
68 69  
69 70 @Autowired
70 71 private BasicConfigService basicConfigService;
  72 + @Autowired
  73 + private MatDeliverPushRecordService matDeliverPushRecordService;
71 74  
72 75 /**
73 76 * 查询出对应周几要发送的的医院配置
... ... @@ -540,6 +543,28 @@
540 543 }
541 544 }
542 545  
  546 + @Override
  547 + public MaternalDeliverModel getModelByPid(String pid) {
  548 + Query query = new Query();
  549 + query.addCriteria(Criteria.where("parentId").is(pid).and("yn").is(1));
  550 + List<MaternalDeliverModel> modelList = mongoTemplate.find(query, MaternalDeliverModel.class);
  551 + return modelList.get(0);
  552 + }
  553 +
  554 + @Override
  555 + public HighScoreResult queryRiskList(List<String> ids) {
  556 + return queryRisk(ids);
  557 + }
  558 +
  559 + @Override
  560 + public Integer selectByWeek(String parentId, Integer weeks) {
  561 + return matDeliverPushRecordService.selectByWeek(parentId,weeks);
  562 + }
  563 +
  564 + @Override
  565 + public void addWeek(MatDeliverPushRecord matDeliverPushRecord) {
  566 + matDeliverPushRecordService.add(matDeliverPushRecord);
  567 + }
543 568  
544 569  
545 570 /**
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java View file @ c5710b3
... ... @@ -247,6 +247,26 @@
247 247 }
248 248 }
249 249  
  250 + @Override
  251 + public void generateChanKangAmsMsg(String generateHospitalId) {
  252 + List<SmsConfigModel> configModels = baseService.getHospitalConfigsByWeek(generateHospitalId);
  253 + logger.info("The generateChanKangAmsMsg configs hospital size is {}", configModels.size());
  254 + if (CollectionUtils.isNotEmpty(configModels))
  255 + {
  256 + int end = 0;
  257 + for (int i = 0; i < configModels.size(); i += DEFAULT_BATCH_SIZE) {
  258 + end = (end + DEFAULT_BATCH_SIZE);
  259 + if (end > configModels.size()) {
  260 + end = configModels.size();
  261 + }
  262 + ChanKangAmsMsgGenerateWorker checkPointCountWorker = new ChanKangAmsMsgGenerateWorker(configModels.subList(i,end),
  263 + baseService,yunBookbuildingService);
  264 + pool.execute(checkPointCountWorker);
  265 + }
  266 +
  267 + }
  268 + }
  269 +
250 270 /**
251 271 * 生成模板消息
252 272 * @param generateHospitalId
... ... @@ -348,6 +368,7 @@
348 368 generatePatAmsMsg(null);
349 369 generateBabyAmsMsg(null);
350 370 generateChanAmsMsg(null);
  371 + generateChanKangAmsMsg(null);
351 372 generateBabyDiseaseAmsMsg(null);
352 373 generateResidentAmsMsg(null);
353 374 }
platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/DateUtils.java View file @ c5710b3
... ... @@ -236,8 +236,8 @@
236 236 Date endDate = DateUtils.getNewDate(new Date(), -13, "周", 1);
237 237 System.out.println(DateUtils.getDateStr(DateUtils.formatDate(startDate, DateUtils.Y_M_D),DateUtils.Y_M_D));
238 238 System.out.println(DateUtils.getDateStr(DateUtils.formatDate(endDate, DateUtils.Y_M_D),DateUtils.Y_M_D));*/
239   -
240   - System.out.println(DateUtils.getNewDate(DateUtils.preaseDate("2023-09-26 8:00:00",DateUtils.Y_M_D_H_M_S),13, "周", -1));
  239 + System.out.println(getWeekOfDate(new Date()));
  240 + //System.out.println(DateUtils.getNewDate(DateUtils.preaseDate("2023-09-26 8:00:00",DateUtils.Y_M_D_H_M_S),13, "周", -1));
241 241 }
242 242 }
platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ChanKangAmsMsgGenerateWorker.java View file @ c5710b3
  1 +package com.lyms.platform.msg.worker;
  2 +
  3 +import com.lyms.platform.beans.MsgListRequest;
  4 +import com.lyms.platform.beans.MsgRequest;
  5 +import com.lyms.platform.biz.service.YunBookbuildingService;
  6 +import com.lyms.platform.common.enums.*;
  7 +import com.lyms.platform.common.utils.JsonUtil;
  8 +import com.lyms.platform.common.utils.StringUtils;
  9 +import com.lyms.platform.msg.model.HighScoreResult;
  10 +import com.lyms.platform.msg.remote.AmsMessageService;
  11 +import com.lyms.platform.msg.service.IBaseService;
  12 +import com.lyms.platform.msg.utils.DateUtils;
  13 +import com.lyms.platform.msg.utils.HelperUtils;
  14 +import com.lyms.platform.permission.model.MatDeliverPushRecord;
  15 +import com.lyms.platform.pojo.MaternalDeliverModel;
  16 +import com.lyms.platform.pojo.Patients;
  17 +import com.lyms.platform.pojo.SmsConfigModel;
  18 +import com.lyms.platform.query.PatientsQuery;
  19 +import org.apache.commons.collections.CollectionUtils;
  20 +import org.slf4j.Logger;
  21 +import org.slf4j.LoggerFactory;
  22 +
  23 +import java.util.*;
  24 +
  25 +/**
  26 + * 产后康复
  27 + */
  28 +public class ChanKangAmsMsgGenerateWorker implements Runnable {
  29 + private static final Logger logger = LoggerFactory.getLogger(ChanKangAmsMsgGenerateWorker.class);
  30 +
  31 + private List<SmsConfigModel> configs;
  32 +
  33 + private IBaseService baseService;
  34 +
  35 + private YunBookbuildingService yunBookbuildingService;
  36 +
  37 +
  38 + public ChanKangAmsMsgGenerateWorker(List<SmsConfigModel> configs, IBaseService baseService,
  39 + YunBookbuildingService yunBookbuildingService) {
  40 + this.configs = configs;
  41 + this.baseService = baseService;
  42 + this.yunBookbuildingService = yunBookbuildingService;
  43 +
  44 + }
  45 +
  46 + @Override
  47 + public void run() {
  48 + if (CollectionUtils.isNotEmpty(configs)) {
  49 + for (SmsConfigModel config : configs) {
  50 +
  51 + String hospitalId = config.getHospitalId();
  52 + if (StringUtils.isEmpty(hospitalId)) {
  53 + continue;
  54 + }
  55 +
  56 + //判断医院是否运行
  57 + if (!baseService.isRunning(hospitalId)) {
  58 + continue;
  59 + }
  60 +
  61 + String serviceStr = config.getSmsService();
  62 + String serviceType = config.getServiceType();
  63 +
  64 + //判断消息服务是否启动
  65 + int service = baseService.isStartService(SmsServiceEnums.CHKFTX.getId(), serviceStr, serviceType);
  66 + if (service == 0) {
  67 + continue;
  68 + }
  69 +
  70 +
  71 + logger.info("The ChanKangAmsMsgGenerateWorker hospital id is " + hospitalId);
  72 +
  73 + PatientsQuery patientsQuery = new PatientsQuery();
  74 + patientsQuery.setYn(YnEnums.YES.getId());
  75 + patientsQuery.setHospitalId(hospitalId);
  76 + //1孕妇 3 产妇
  77 + patientsQuery.setType(3);
  78 + patientsQuery.setDueStatus(0);
  79 +
  80 + List buildType = new ArrayList();
  81 + buildType.add(0);
  82 + buildType.add(2);
  83 + patientsQuery.setSmsBuildTypeList(buildType);
  84 +
  85 +
  86 + //健康指导短信 只能是类型为 增值服务 开通状态 才发送
  87 + patientsQuery.setServiceType(ServiceTypeEnums.ADD_MAT_DELIVER_SERVICE.getId());
  88 + patientsQuery.setServiceStatus(ServiceStatusEnums.STANDARD_OPEN.getId());
  89 +
  90 +
  91 + //查询符合条件的产妇
  92 + List<Patients> patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery);
  93 + System.out.println("amsSmses--->"+patients);
  94 + if (CollectionUtils.isNotEmpty(patients)) {
  95 +
  96 + //发送短信集合
  97 + MsgListRequest list = new MsgListRequest();
  98 + List<MsgRequest> messages = new ArrayList<>();
  99 + for (Patients pat : patients) {
  100 + if (pat == null || pat.getFmDate() == null) {
  101 + continue;
  102 + }
  103 +
  104 + MaternalDeliverModel maternalDeliverModel = baseService.getModelByPid(pat.getId());
  105 +
  106 + System.out.println("maternalDeliverModel--->"+maternalDeliverModel);
  107 + //分娩类型
  108 + String deliveryMode = getDelivery(maternalDeliverModel);
  109 + //计算产后多少周 按分娩日期计算
  110 + int weeks = (DateUtils.daysBetween(pat.getFmDate(), new Date()) / 7)>12?12:DateUtils.daysBetween(pat.getFmDate(), new Date()) / 7;
  111 +
  112 + String parentId =maternalDeliverModel.getParentId();
  113 +
  114 + Integer id = baseService.selectByWeek(parentId, weeks);
  115 + if (id != null) {
  116 + continue;
  117 + }
  118 +
  119 +
  120 + List<String> riskId = pat.getRiskFactorId();
  121 + StringBuffer sb = new StringBuffer();
  122 + if (CollectionUtils.isNotEmpty(riskId)) {
  123 + HighScoreResult highScoreResult = baseService.queryRiskList(riskId);
  124 + List<Map> riskList = highScoreResult.getHighRisk();
  125 + if (CollectionUtils.isNotEmpty(riskList)) {
  126 + for (Map risk : riskList) {
  127 + sb.append(risk.get("name")).append(",");
  128 + }
  129 + }
  130 + }
  131 +
  132 + String highRisk = sb.toString();
  133 + Map<String, String> params = new HashMap<>();
  134 + params.put("weekType", String.valueOf(weeks));
  135 + params.put("deliveryMode", deliveryMode);
  136 + if (highRisk.length() > 0) {
  137 + params.put("riskType", highRisk.substring(0, highRisk.length() - 1));
  138 + }
  139 + System.out.println("params--->"+params);
  140 + // 查询模板短信 从ams平台配置的短信通过医院ID
  141 + net.sf.json.JSONObject amsSmses = AmsMessageService
  142 + .getArticleList(params);
  143 + System.out.println("amsSmses--->"+amsSmses);
  144 + if (amsSmses == null || amsSmses.getInt("errorcode") != 0 ||
  145 + amsSmses.getJSONArray("list")==null || amsSmses.getJSONArray("list").size()==0) {
  146 + continue;
  147 + }
  148 + MatDeliverPushRecord matDeliverPushRecord = new MatDeliverPushRecord();
  149 + matDeliverPushRecord.setParentId(parentId);
  150 + matDeliverPushRecord.setWeekType(weeks);
  151 + baseService.addWeek(matDeliverPushRecord);
  152 + id=matDeliverPushRecord.getId();
  153 +
  154 + String yunWeek = "产后" + String.valueOf(weeks) + "周";
  155 + String title = "产后康复指导(点此查看详情)";
  156 + String messageContent = "";
  157 + MsgRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(),
  158 + ServiceObjEnums.CHANOBJ.getId(), SmsServiceEnums.CHKFTX.getId(),
  159 + pat.getHospitalId(), String.valueOf(id), pat.getId(), yunWeek, title, "",
  160 + WxTempleteIdEnums.CHAN_YI_BAN_ZHI_DAO.getId(), service);
  161 +
  162 + messages.add(request);
  163 + }
  164 + if (CollectionUtils.isNotEmpty(messages)){
  165 + list.setMessages(messages);
  166 + System.out.println("messages--->"+list);
  167 + HelperUtils.sendMsg(list);
  168 + }
  169 + }
  170 + }
  171 + }
  172 + }
  173 +
  174 +
  175 + /**
  176 + * 获取产妇分娩类型
  177 + *
  178 + * @return
  179 + */
  180 + private String getDelivery(MaternalDeliverModel data) {
  181 + String deliveryMode = "";
  182 + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getDeliveryMode())) {
  183 + StringBuilder sb = new StringBuilder();
  184 +
  185 + Map m = JsonUtil.str2Obj(data.getDeliveryMode(), Map.class);
  186 + String fmfs = null;
  187 + if (m != null) {
  188 + Object b = m.get("fmfs");
  189 + if (b != null) {
  190 + fmfs = b.toString();
  191 + if (fmfs != null) {
  192 + if (fmfs.equals("1")) {
  193 + String fmName = FmTypeEnums.getFmNameById(fmfs);
  194 + sb.append(fmName);
  195 + if (null != m.get("scfs") && !"null".equals(m.get("scfs").toString())) {
  196 + sb.append(",");
  197 + String scfs = m.get("scfs").toString();
  198 + sb.append(FmTypeEnums.getFmScNameById(scfs));
  199 + }
  200 + deliveryMode = sb.toString();
  201 + } else if (fmfs.equals("2")) {
  202 + String fmName = FmTypeEnums.getFmNameById(fmfs);
  203 + deliveryMode = fmName;
  204 + }
  205 + }
  206 + }
  207 + }
  208 + }
  209 + return deliveryMode;
  210 + }
  211 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java View file @ c5710b3
... ... @@ -4293,6 +4293,23 @@
4293 4293 query.addCriteria(Criteria.where("parentId").is(patientsList.get(0).getId()).and("yn").is(1));
4294 4294 List<MaternalDeliverModel> list = mongoTemplate.find(query, MaternalDeliverModel.class);
4295 4295 if (CollectionUtils.isNotEmpty(list)) {
  4296 + //高危因素
  4297 + List<String> riskId = patientsList.get(0).getRiskFactorId();
  4298 + StringBuffer sb = new StringBuffer();
  4299 + if (CollectionUtils.isNotEmpty(riskId)) {
  4300 + HighScoreResult highScoreResult = queryRisk(riskId);
  4301 + List<Map> riskList = highScoreResult.getHighRisk();
  4302 + if (CollectionUtils.isNotEmpty(riskList)) {
  4303 + for (Map risk : riskList) {
  4304 + sb.append(risk.get("name")).append(",");
  4305 + }
  4306 + }
  4307 + }
  4308 +
  4309 + String highRisk = sb.toString();
  4310 + if (highRisk.length() > 0) {
  4311 + params.put("riskType", highRisk.substring(0, highRisk.length() - 1));
  4312 + }
4296 4313 MaternalDeliverModel maternalDeliverModel = list.get(0);
4297 4314 String dueDate = maternalDeliverModel.getDueDate() + " 00:00:00";
4298 4315 //分娩类型 基于ID查询对应文章
... ... @@ -4317,7 +4334,30 @@
4317 4334  
4318 4335 private static int getTime(Date dueDate) {
4319 4336 int days = DateUtil.daysBetween(dueDate, new Date());
4320   - return days / 7;
  4337 + return days%7==0?days/7:days/7+1;
  4338 + }
  4339 + private HighScoreResult queryRisk(List<String> id) {
  4340 + HighScoreResult highScoreResult = new HighScoreResult();
  4341 + BasicConfigQuery
  4342 + basicConfigQuery = new BasicConfigQuery();
  4343 + List data = new ArrayList();
  4344 + Integer score = null;
  4345 + if (CollectionUtils.isNotEmpty(id)) {
  4346 + for (String i : id) {
  4347 + basicConfigQuery.setId(i);
  4348 + List<BasicConfig> basicConfigs = basicConfigService.queryBasicConfig(basicConfigQuery);
  4349 + if (CollectionUtils.isNotEmpty(basicConfigs)) {
  4350 + for (BasicConfig basicConfig : basicConfigs) {
  4351 + Map<String, Object> map = new HashMap<>();
  4352 + map.put("id", basicConfig.getId());
  4353 + map.put("name", basicConfig.getName());
  4354 + data.add(map);
  4355 + }
  4356 + }
  4357 + }
  4358 + }
  4359 + highScoreResult.setHighRisk(data);
  4360 + return highScoreResult;
4321 4361 }
4322 4362  
4323 4363 public static void main(String[] args) {