From dc6f152df8b3368faf51d6ca02529b55d69a4e52 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Thu, 31 Dec 2020 17:13:06 +0800 Subject: [PATCH] update --- .../java/com/lyms/platform/beans/SerialIdEnum.java | 1 + .../lyms/platform/pojo/ResidentSmgRecordModel.java | 52 +++++++ .../msg/controller/MsgGenerateController.java | 17 +++ .../platform/msg/remote/AmsMessageService.java | 19 +++ .../platform/msg/service/IMsgGenerateService.java | 2 + .../msg/service/impl/MsgGenerateServiceImpl.java | 23 +++ .../msg/worker/ResidentAmsGenerateWorker.java | 162 +++++++++++++++++++++ 7 files changed, 276 insertions(+) create mode 100644 platform-dal/src/main/java/com/lyms/platform/pojo/ResidentSmgRecordModel.java create mode 100644 platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ResidentAmsGenerateWorker.java diff --git a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java index f8c1bf7..32dc9fc 100644 --- a/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java +++ b/platform-dal/src/main/java/com/lyms/platform/beans/SerialIdEnum.java @@ -132,6 +132,7 @@ public enum SerialIdEnum { PregnantDeathModel("PregnantDeathModel", 7244731601920572967L), BabyDeathModel("BabyDeathModel", 7244731601924572967L), CervicalCancerModel("CervicalCancerModel", 4302505773278441592L), + ResidentSmgRecordModel("ResidentSmgRecordModel", 430205773278441592L), DefectiveChildModel("DefectiveChildModel", 1684816144240073408L), WxChooseInfoModel("WxChooseInfoModel",-1814469732375965270L); diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/ResidentSmgRecordModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/ResidentSmgRecordModel.java new file mode 100644 index 0000000..e6e08d0 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/ResidentSmgRecordModel.java @@ -0,0 +1,52 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.beans.SerialIdEnum; +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; +import java.util.Map; + + +/** + **/ +@Document(collection = "lyms_resident_record") +public class ResidentSmgRecordModel extends BaseModel { + + private static final long serialVersionUID = SerialIdEnum.PregnantDeathModel.getCid(); + /** + * 主键 + */ + private String id; + //妇女档案id + private String rid; + + /** + * 发送的顺序号码 + */ + private Integer sortNum; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getRid() { + return rid; + } + + public void setRid(String rid) { + this.rid = rid; + } + + public Integer getSortNum() { + return sortNum; + } + + public void setSortNum(Integer sortNum) { + this.sortNum = sortNum; + } +} 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 6e6e9b5..29f62b7 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 @@ -56,6 +56,23 @@ public class MsgGenerateController extends BaseController { /** + * 生成妇女ams消息 + * @param hospitalId + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/generateResidentAmsMsg") + @ResponseBody + public String generateResidentAmsMsg(@RequestParam(required = false) String hospitalId) + { + + logger.info("The request hospital id is {} ", hospitalId); + msgGenerateService.generateResidentAmsMsg(hospitalId); + return ""; + } + + + + /** * 生成儿童疾病ams短信 * @param hospitalId * @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 3499f10..cabdc95 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 @@ -79,6 +79,25 @@ public class AmsMessageService { } + public static List getResidentMsgs(String hospitalId) { + Map param = new HashMap<>(); + param.put("hospitalId", hospitalId); + String url = AMS_URL+"/v1/getResidentMessages"; + String json = HttpClientUtil.doGet(url, param, "utf-8", ""); + net.sf.json.JSONObject jsonObject = JsonUtil.getObj(json); + if (jsonObject != null && jsonObject.getJSONArray("list") != null) { + JSONArray jsonArray = jsonObject.getJSONArray("list"); + String list = jsonArray.toString(); + List messages = JsonUtil.toList(list, MessageContent.class); + if (messages != null && CollectionUtils.isNotEmpty(messages)) + { + return messages; + } + } + return null; + } + + // /** // * 根据医院id和对象来获取ams短信 // * @param hospitalId 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 ec4b6c6..e749dae 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 @@ -44,4 +44,6 @@ public interface IMsgGenerateService { void generaterAllTmpMsg(); void generaterAllAmsMsg(); + + void generateResidentAmsMsg(String generateHospitalId); } 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 cd3b646..1acdbc9 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 @@ -96,6 +96,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { @Autowired private MatDeliverService matDeliverService; + /** * 生成孕妇的AMS推送消息 * @param generateHospitalId 医院id @@ -151,6 +152,27 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { } + @Override + public void generateResidentAmsMsg(String generateHospitalId) { + List configModels = baseService.getHospitalConfigsByWeek(generateHospitalId); + logger.info("The generateResidentAmsMsg 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(); + } + ResidentAmsGenerateWorker checkPointCountWorker = new ResidentAmsGenerateWorker(configModels.subList(i,end), + baseService,residentsArchiveService,mongoTemplate); + pool.execute(checkPointCountWorker); + } + + } + } + /** * 生成儿童疾病ams短信 * @param generateHospitalId 医院id @@ -318,6 +340,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { generateBabyAmsMsg(null); generateChanAmsMsg(null); generateBabyDiseaseAmsMsg(null); + generateResidentAmsMsg(null); } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ResidentAmsGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ResidentAmsGenerateWorker.java new file mode 100644 index 0000000..84706cb --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/ResidentAmsGenerateWorker.java @@ -0,0 +1,162 @@ +package com.lyms.platform.msg.worker; + +import com.lyms.platform.beans.MsgListRequest; +import com.lyms.platform.beans.MsgRequest; +import com.lyms.platform.biz.service.ResidentsArchiveService; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.*; +import com.lyms.platform.msg.model.MessageContent; +import com.lyms.platform.msg.remote.AmsMessageService; +import com.lyms.platform.msg.service.IBaseService; +import com.lyms.platform.msg.utils.HelperUtils; +import com.lyms.platform.pojo.*; +import com.lyms.platform.query.ResidentsArchiveQuery; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Created by Administrator on 2020-12-31. + */ +public class ResidentAmsGenerateWorker implements Runnable { + private static final Logger logger = LoggerFactory.getLogger(BabyAmsMsgGenerateWorker.class); + + + private List configs; + + private IBaseService baseService; + + private ResidentsArchiveService residentsArchiveService; + + private MongoTemplate mongoTemplate; + + public ResidentAmsGenerateWorker(List configs, IBaseService baseService, + ResidentsArchiveService residentsArchiveService, + MongoTemplate mongoTemplate) { + this.configs = configs; + this.baseService = baseService; + this.residentsArchiveService = residentsArchiveService; + this.mongoTemplate = mongoTemplate; + } + + @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(); + + //判断消息服务是否启动 + //0服务不提供,1 推送服务, 2 短信服务,3推送和短信服务 + int service = baseService.isStartService(SmsServiceEnums.YQZD.getId(), serviceStr, serviceType); + if (service == 0) { + continue; + } + + // 查询模板短信 从ams平台配置的短信通过医院ID + List amsSmses = AmsMessageService + .getResidentMsgs(String.valueOf(hospitalId)); + + if (amsSmses == null || amsSmses.size() == 0) { + continue; + } + + logger.info("The ResidentAmsGenerateWorker hospital id is " + hospitalId); + + //查询条件 + ResidentsArchiveQuery query = new ResidentsArchiveQuery(); + query.setYn(YnEnums.YES.getId()); + //只查询女性 + query.setSex(SystemConfig.WOMAN_ID); + + + List modelList = residentsArchiveService.queryResident(query); + + if (CollectionUtils.isNotEmpty(modelList)) { + + //发送短信集合 + MsgListRequest list = new MsgListRequest(); + List messages = new ArrayList<>(); + for (ResidentsArchiveModel resident : modelList) { + if (resident == null) { + continue; + } + + + String msgContent = ""; + Query query1 = new Query(); + query1.addCriteria(Criteria.where("rid").is(resident.getId())); + ResidentSmgRecordModel model = mongoTemplate.findOne(query1, ResidentSmgRecordModel.class); + if (model == null) + { + for (MessageContent msg : amsSmses) + { + if (msg.getDisSort() != null && msg.getDisSort() == 1) + { + + ResidentSmgRecordModel model1 = new ResidentSmgRecordModel(); + model1.setRid(resident.getId()); + model1.setSortNum(1); + mongoTemplate.save(model1); + msgContent = msg.getContent(); + break; + } + } + } + else + { + for (MessageContent msg : amsSmses) + { + if (msg.getDisSort() != null && msg.getDisSort() == model.getSortNum()) + { + msgContent = msg.getContent(); + model.setSortNum(model.getSortNum() + 1); + Query query2 = Query.query(Criteria.where("id").is(model.getId())); + Update update = MongoConvertHelper + .convertToNativeUpdate(ReflectionUtils.getUpdateField(model)); + mongoTemplate.updateFirst(query2, update, ResidentSmgRecordModel.class); + break; + } + } + } + + + String messagePrefix = baseService.getSmsPrefix(config, resident.getBuildDoctor(), ServiceObjEnums.FUNV.getId()); + + String title = "孕前指导"; + String date = DateUtil.getyyyy_MM_dd(new Date()); + + String messageContent = "【" + messagePrefix + "】" + msgContent; + MsgRequest request = HelperUtils.getMessageRequest(messageContent, resident.getPhone(), + ServiceObjEnums.FUNV.getId(), SmsServiceEnums.YQZD.getId(), + resident.getHospitalId(), resident.getId(), resident.getId(), title, date, "", + WxTempleteIdEnums.YI_SHENG_ZHI_DAO.getId(), service); + + messages.add(request); + + } + list.setMessages(messages); + HelperUtils.sendMsg(list); + } + } + } + } +} -- 1.8.3.1