Commit dc6f152df8b3368faf51d6ca02529b55d69a4e52

Authored by liquanyu
1 parent 815e5d269e

update

Showing 7 changed files with 276 additions and 0 deletions

platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java View file @ dc6f152
... ... @@ -132,6 +132,7 @@
132 132 PregnantDeathModel("PregnantDeathModel", 7244731601920572967L),
133 133 BabyDeathModel("BabyDeathModel", 7244731601924572967L),
134 134 CervicalCancerModel("CervicalCancerModel", 4302505773278441592L),
  135 + ResidentSmgRecordModel("ResidentSmgRecordModel", 430205773278441592L),
135 136 DefectiveChildModel("DefectiveChildModel", 1684816144240073408L),
136 137 WxChooseInfoModel("WxChooseInfoModel",-1814469732375965270L);
137 138  
platform-dal/src/main/java/com/lyms/platform/pojo/ResidentSmgRecordModel.java View file @ dc6f152
  1 +package com.lyms.platform.pojo;
  2 +
  3 +import com.lyms.platform.beans.SerialIdEnum;
  4 +import com.lyms.platform.common.result.BaseModel;
  5 +import org.springframework.data.mongodb.core.mapping.Document;
  6 +
  7 +import java.util.Date;
  8 +import java.util.Map;
  9 +
  10 +
  11 +/**
  12 + **/
  13 +@Document(collection = "lyms_resident_record")
  14 +public class ResidentSmgRecordModel extends BaseModel {
  15 +
  16 + private static final long serialVersionUID = SerialIdEnum.PregnantDeathModel.getCid();
  17 + /**
  18 + * 主键
  19 + */
  20 + private String id;
  21 + //妇女档案id
  22 + private String rid;
  23 +
  24 + /**
  25 + * 发送的顺序号码
  26 + */
  27 + private Integer sortNum;
  28 +
  29 + public String getId() {
  30 + return id;
  31 + }
  32 +
  33 + public void setId(String id) {
  34 + this.id = id;
  35 + }
  36 +
  37 + public String getRid() {
  38 + return rid;
  39 + }
  40 +
  41 + public void setRid(String rid) {
  42 + this.rid = rid;
  43 + }
  44 +
  45 + public Integer getSortNum() {
  46 + return sortNum;
  47 + }
  48 +
  49 + public void setSortNum(Integer sortNum) {
  50 + this.sortNum = sortNum;
  51 + }
  52 +}
platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java View file @ dc6f152
... ... @@ -56,6 +56,23 @@
56 56  
57 57  
58 58 /**
  59 + * 生成妇女ams消息
  60 + * @param hospitalId
  61 + * @return
  62 + */
  63 + @RequestMapping(method = RequestMethod.GET, value = "/generateResidentAmsMsg")
  64 + @ResponseBody
  65 + public String generateResidentAmsMsg(@RequestParam(required = false) String hospitalId)
  66 + {
  67 +
  68 + logger.info("The request hospital id is {} ", hospitalId);
  69 + msgGenerateService.generateResidentAmsMsg(hospitalId);
  70 + return "";
  71 + }
  72 +
  73 +
  74 +
  75 + /**
59 76 * 生成儿童疾病ams短信
60 77 * @param hospitalId
61 78 * @return
platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java View file @ dc6f152
... ... @@ -79,6 +79,25 @@
79 79 }
80 80  
81 81  
  82 + public static List<MessageContent> getResidentMsgs(String hospitalId) {
  83 + Map<String,String> param = new HashMap<>();
  84 + param.put("hospitalId", hospitalId);
  85 + String url = AMS_URL+"/v1/getResidentMessages";
  86 + String json = HttpClientUtil.doGet(url, param, "utf-8", "");
  87 + net.sf.json.JSONObject jsonObject = JsonUtil.getObj(json);
  88 + if (jsonObject != null && jsonObject.getJSONArray("list") != null) {
  89 + JSONArray jsonArray = jsonObject.getJSONArray("list");
  90 + String list = jsonArray.toString();
  91 + List<MessageContent> messages = JsonUtil.toList(list, MessageContent.class);
  92 + if (messages != null && CollectionUtils.isNotEmpty(messages))
  93 + {
  94 + return messages;
  95 + }
  96 + }
  97 + return null;
  98 + }
  99 +
  100 +
82 101 // /**
83 102 // * 根据医院id和对象来获取ams短信
84 103 // * @param hospitalId
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java View file @ dc6f152
... ... @@ -44,5 +44,7 @@
44 44 void generaterAllTmpMsg();
45 45  
46 46 void generaterAllAmsMsg();
  47 +
  48 + void generateResidentAmsMsg(String generateHospitalId);
47 49 }
platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java View file @ dc6f152
... ... @@ -96,6 +96,7 @@
96 96 @Autowired
97 97 private MatDeliverService matDeliverService;
98 98  
  99 +
99 100 /**
100 101 * 生成孕妇的AMS推送消息
101 102 * @param generateHospitalId 医院id
... ... @@ -151,6 +152,27 @@
151 152 }
152 153  
153 154  
  155 + @Override
  156 + public void generateResidentAmsMsg(String generateHospitalId) {
  157 + List<SmsConfigModel> configModels = baseService.getHospitalConfigsByWeek(generateHospitalId);
  158 + logger.info("The generateResidentAmsMsg configs hospital size is {}", configModels.size());
  159 +
  160 + if (CollectionUtils.isNotEmpty(configModels))
  161 + {
  162 + int end = 0;
  163 + for (int i = 0; i < configModels.size(); i += DEFAULT_BATCH_SIZE) {
  164 + end = (end + DEFAULT_BATCH_SIZE);
  165 + if (end > configModels.size()) {
  166 + end = configModels.size();
  167 + }
  168 + ResidentAmsGenerateWorker checkPointCountWorker = new ResidentAmsGenerateWorker(configModels.subList(i,end),
  169 + baseService,residentsArchiveService,mongoTemplate);
  170 + pool.execute(checkPointCountWorker);
  171 + }
  172 +
  173 + }
  174 + }
  175 +
154 176 /**
155 177 * 生成儿童疾病ams短信
156 178 * @param generateHospitalId 医院id
... ... @@ -318,6 +340,7 @@
318 340 generateBabyAmsMsg(null);
319 341 generateChanAmsMsg(null);
320 342 generateBabyDiseaseAmsMsg(null);
  343 + generateResidentAmsMsg(null);
321 344 }
322 345  
323 346  
platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ResidentAmsGenerateWorker.java View file @ dc6f152
  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.ResidentsArchiveService;
  6 +import com.lyms.platform.common.enums.*;
  7 +import com.lyms.platform.common.utils.*;
  8 +import com.lyms.platform.msg.model.MessageContent;
  9 +import com.lyms.platform.msg.remote.AmsMessageService;
  10 +import com.lyms.platform.msg.service.IBaseService;
  11 +import com.lyms.platform.msg.utils.HelperUtils;
  12 +import com.lyms.platform.pojo.*;
  13 +import com.lyms.platform.query.ResidentsArchiveQuery;
  14 +import org.apache.commons.collections.CollectionUtils;
  15 +import org.slf4j.Logger;
  16 +import org.slf4j.LoggerFactory;
  17 +import org.springframework.data.mongodb.core.MongoTemplate;
  18 +import org.springframework.data.mongodb.core.query.Criteria;
  19 +import org.springframework.data.mongodb.core.query.Query;
  20 +import org.springframework.data.mongodb.core.query.Update;
  21 +
  22 +import java.util.ArrayList;
  23 +import java.util.Date;
  24 +import java.util.List;
  25 +
  26 +/**
  27 + * Created by Administrator on 2020-12-31.
  28 + */
  29 +public class ResidentAmsGenerateWorker implements Runnable {
  30 + private static final Logger logger = LoggerFactory.getLogger(BabyAmsMsgGenerateWorker.class);
  31 +
  32 +
  33 + private List<SmsConfigModel> configs;
  34 +
  35 + private IBaseService baseService;
  36 +
  37 + private ResidentsArchiveService residentsArchiveService;
  38 +
  39 + private MongoTemplate mongoTemplate;
  40 +
  41 + public ResidentAmsGenerateWorker(List<SmsConfigModel> configs, IBaseService baseService,
  42 + ResidentsArchiveService residentsArchiveService,
  43 + MongoTemplate mongoTemplate) {
  44 + this.configs = configs;
  45 + this.baseService = baseService;
  46 + this.residentsArchiveService = residentsArchiveService;
  47 + this.mongoTemplate = mongoTemplate;
  48 + }
  49 +
  50 + @Override
  51 + public void run() {
  52 + if (CollectionUtils.isNotEmpty(configs)) {
  53 + for (SmsConfigModel config : configs) {
  54 + String hospitalId = config.getHospitalId();
  55 + if (StringUtils.isEmpty(hospitalId)) {
  56 + continue;
  57 + }
  58 +
  59 + //判断医院是否运行
  60 + if (!baseService.isRunning(hospitalId)) {
  61 + continue;
  62 + }
  63 +
  64 + String serviceStr = config.getSmsService();
  65 + String serviceType = config.getServiceType();
  66 +
  67 + //判断消息服务是否启动
  68 + //0服务不提供,1 推送服务, 2 短信服务,3推送和短信服务
  69 + int service = baseService.isStartService(SmsServiceEnums.YQZD.getId(), serviceStr, serviceType);
  70 + if (service == 0) {
  71 + continue;
  72 + }
  73 +
  74 + // 查询模板短信 从ams平台配置的短信通过医院ID
  75 + List<MessageContent> amsSmses = AmsMessageService
  76 + .getResidentMsgs(String.valueOf(hospitalId));
  77 +
  78 + if (amsSmses == null || amsSmses.size() == 0) {
  79 + continue;
  80 + }
  81 +
  82 + logger.info("The ResidentAmsGenerateWorker hospital id is " + hospitalId);
  83 +
  84 + //查询条件
  85 + ResidentsArchiveQuery query = new ResidentsArchiveQuery();
  86 + query.setYn(YnEnums.YES.getId());
  87 + //只查询女性
  88 + query.setSex(SystemConfig.WOMAN_ID);
  89 +
  90 +
  91 + List<ResidentsArchiveModel> modelList = residentsArchiveService.queryResident(query);
  92 +
  93 + if (CollectionUtils.isNotEmpty(modelList)) {
  94 +
  95 + //发送短信集合
  96 + MsgListRequest list = new MsgListRequest();
  97 + List<MsgRequest> messages = new ArrayList<>();
  98 + for (ResidentsArchiveModel resident : modelList) {
  99 + if (resident == null) {
  100 + continue;
  101 + }
  102 +
  103 +
  104 + String msgContent = "";
  105 + Query query1 = new Query();
  106 + query1.addCriteria(Criteria.where("rid").is(resident.getId()));
  107 + ResidentSmgRecordModel model = mongoTemplate.findOne(query1, ResidentSmgRecordModel.class);
  108 + if (model == null)
  109 + {
  110 + for (MessageContent msg : amsSmses)
  111 + {
  112 + if (msg.getDisSort() != null && msg.getDisSort() == 1)
  113 + {
  114 +
  115 + ResidentSmgRecordModel model1 = new ResidentSmgRecordModel();
  116 + model1.setRid(resident.getId());
  117 + model1.setSortNum(1);
  118 + mongoTemplate.save(model1);
  119 + msgContent = msg.getContent();
  120 + break;
  121 + }
  122 + }
  123 + }
  124 + else
  125 + {
  126 + for (MessageContent msg : amsSmses)
  127 + {
  128 + if (msg.getDisSort() != null && msg.getDisSort() == model.getSortNum())
  129 + {
  130 + msgContent = msg.getContent();
  131 + model.setSortNum(model.getSortNum() + 1);
  132 + Query query2 = Query.query(Criteria.where("id").is(model.getId()));
  133 + Update update = MongoConvertHelper
  134 + .convertToNativeUpdate(ReflectionUtils.getUpdateField(model));
  135 + mongoTemplate.updateFirst(query2, update, ResidentSmgRecordModel.class);
  136 + break;
  137 + }
  138 + }
  139 + }
  140 +
  141 +
  142 + String messagePrefix = baseService.getSmsPrefix(config, resident.getBuildDoctor(), ServiceObjEnums.FUNV.getId());
  143 +
  144 + String title = "孕前指导";
  145 + String date = DateUtil.getyyyy_MM_dd(new Date());
  146 +
  147 + String messageContent = "【" + messagePrefix + "】" + msgContent;
  148 + MsgRequest request = HelperUtils.getMessageRequest(messageContent, resident.getPhone(),
  149 + ServiceObjEnums.FUNV.getId(), SmsServiceEnums.YQZD.getId(),
  150 + resident.getHospitalId(), resident.getId(), resident.getId(), title, date, "",
  151 + WxTempleteIdEnums.YI_SHENG_ZHI_DAO.getId(), service);
  152 +
  153 + messages.add(request);
  154 +
  155 + }
  156 + list.setMessages(messages);
  157 + HelperUtils.sendMsg(list);
  158 + }
  159 + }
  160 + }
  161 + }
  162 +}