diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IAntenatalExaminationDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IAntenatalExaminationDao.java index 05a0b2d..a74ccaf 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IAntenatalExaminationDao.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IAntenatalExaminationDao.java @@ -7,6 +7,7 @@ import com.lyms.platform.pojo.VisitModel; import java.util.Date; import java.util.List; +import java.util.Map; /** * @@ -70,4 +71,7 @@ public interface IAntenatalExaminationDao { List queryYuyueAntenatalExamination(Date startDate,String hospitalId,String pid); void updatePatientAbortion(String id, Integer abortionZR, Integer abortionRG); + + int queryWeekPointCount(int startWeek, int endWeek, String hospitalId, Date startTime, Date endTime,Integer pointType); + } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java index d8cb58c..abdf6cab 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/AntenatalExaminationDaoImpl.java @@ -11,10 +11,7 @@ import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.pojo.AntExChuModel; import com.lyms.platform.pojo.AntenatalExaminationModel; import com.lyms.platform.pojo.Patients; -import com.mongodb.DBCollection; -import com.mongodb.DBObject; -import com.mongodb.MapReduceCommand; -import com.mongodb.MapReduceOutput; +import com.mongodb.*; import org.apache.commons.collections.CollectionUtils; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.aggregation.Aggregation; @@ -27,9 +24,7 @@ import org.springframework.stereotype.Repository; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; /** * Created by Administrator on 2016/6/16 0016. @@ -139,4 +134,66 @@ public class AntenatalExaminationDaoImpl extends BaseMongoDAOImpl= "+startWeek+" && week <= "+endWeek+")" + + " { " + + " emit(this._id,{checkTime:end,parentId:this.parentId}); " + + " } " + + " } " + + "}"; + String reduce = "function(key, values) { return values.toString(); }"; + + DBCollection collections =this.mongoTemplate.getCollection("lyms_antexrecord"); + + Criteria criteria = Criteria.where("hospitalId").is(hospitalId); + if (startTime != null && endTime != null) + { + criteria.and("checkTime").gte(startTime).lte(endTime); + } + DBObject dbObject = criteria.getCriteriaObject(); + MapReduceCommand cmd = new MapReduceCommand(collections, map, reduce, + null, MapReduceCommand.OutputType.INLINE,dbObject); + MapReduceOutput out = collections.mapReduce(cmd); + + Map ids = new HashMap<>(); + int count = 0; + if (pointType != null && pointType == 2) + { + count = out.getOutputCount(); + } + else + { + for (DBObject o : out.results()) { + if (o != null && o.get("value") != null) + { + BasicDBObject object = (BasicDBObject)o.get("value"); + Date checkTime = (Date)object.get("checkTime"); + String parentId = String.valueOf(object.get("parentId")); + if (ids.containsKey(parentId)) + { + Date localDateTime = ids.get(parentId); + if (localDateTime != null && localDateTime.getTime() < checkTime.getTime()) + { + ids.put(parentId,localDateTime); + } + } + else + { + ids.put(parentId,checkTime); + } + } + } + count = ids.size(); + ids.clear(); + } + return count; + } } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java index 56f5f84..8b6187a 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/AntenatalExaminationService.java @@ -20,6 +20,7 @@ import org.springframework.util.Assert; import java.util.Date; import java.util.List; +import java.util.Map; /** * 产前检查服务实现 @@ -197,4 +198,9 @@ public class AntenatalExaminationService { public void updatePatientAbortion(String id, Integer abortionZR, Integer abortionRG) { iAntenatalExaminationDao.updatePatientAbortion(id,abortionZR,abortionRG); } + + public int queryWeekPointCount(int startWeek, int endWeek, String hospitalId, Date startTime, Date endTime,Integer pointType) { + return iAntenatalExaminationDao.queryWeekPointCount(startWeek, endWeek, hospitalId, startTime, endTime, pointType); + } + } \ No newline at end of file diff --git a/platform-dal/src/main/java/com/lyms/platform/beans/MessageListRequest.java b/platform-dal/src/main/java/com/lyms/platform/beans/MessageListRequest.java new file mode 100644 index 0000000..ffb3034 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/beans/MessageListRequest.java @@ -0,0 +1,28 @@ +package com.lyms.platform.beans; + +import java.util.List; + +/** + * Created by Administrator on 2016/7/5. + */ +public class MessageListRequest { + private Integer typeId; + + private List messages; + + public Integer getTypeId() { + return typeId; + } + + public void setTypeId(Integer typeId) { + this.typeId = typeId; + } + + public List getMessages() { + return messages; + } + + public void setMessages(List messages) { + this.messages = messages; + } +} diff --git a/platform-dal/src/main/java/com/lyms/platform/beans/MessageRequest.java b/platform-dal/src/main/java/com/lyms/platform/beans/MessageRequest.java new file mode 100644 index 0000000..6278d8c --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/beans/MessageRequest.java @@ -0,0 +1,234 @@ +package com.lyms.platform.beans; + +/** + * Created by Administrator on 2016/7/5. + */ +public class MessageRequest { + private int id; + //用户id + private String memberId; + //平台类型ID + private int typeId; + //推送后微信平台返回的msgid + private String msgId; + //推送状态(1:未推送,2:已推送,3:推送成功4:暂不推送 5:推送失败) + private int status; + //创建时间 + private String created; + //计划推送时间 + private String planTime; + //实际推送时间 + private String actualTime; + //医院id + private String hospitalId; + //建档记录id + private String patientId; + //微信模版id + private String wxTempId; + //配置模版id + private String tempId; + //发送类型 + private int subTypeId; + //1及时短信 2非及时短信 + private int timeType; + //微信推送first + private String first; + //微信推送keyword1 + private String keyword1; + //微信推送keyword2 + private String keyword2; + //微信推送remark + private String remark; + + //服务对象 1孕妇 2儿童 3产妇 + private int objType; + + //手机号码 + private String phone; + + public int getObjType() { + return objType; + } + + public void setObjType(int objType) { + this.objType = objType; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getMemberId() { + return memberId; + } + + public void setMemberId(String memberId) { + this.memberId = memberId; + } + + public int getTypeId() { + return typeId; + } + + public void setTypeId(int typeId) { + this.typeId = typeId; + } + + public String getMsgId() { + return msgId; + } + + public void setMsgId(String msgId) { + this.msgId = msgId; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getCreated() { + return created; + } + + public void setCreated(String created) { + this.created = created; + } + + public String getPlanTime() { + return planTime; + } + + public void setPlanTime(String planTime) { + this.planTime = planTime; + } + + public String getActualTime() { + return actualTime; + } + + public void setActualTime(String actualTime) { + this.actualTime = actualTime; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + + public String getWxTempId() { + return wxTempId; + } + + public void setWxTempId(String wxTempId) { + this.wxTempId = wxTempId; + } + + public String getTempId() { + return tempId; + } + + public void setTempId(String tempId) { + this.tempId = tempId; + } + + public int getSubTypeId() { + return subTypeId; + } + + public void setSubTypeId(int subTypeId) { + this.subTypeId = subTypeId; + } + + public int getTimeType() { + return timeType; + } + + public void setTimeType(int timeType) { + this.timeType = timeType; + } + + public String getFirst() { + return first; + } + + public void setFirst(String first) { + this.first = first; + } + + public String getKeyword1() { + return keyword1; + } + + public void setKeyword1(String keyword1) { + this.keyword1 = keyword1; + } + + public String getKeyword2() { + return keyword2; + } + + public void setKeyword2(String keyword2) { + this.keyword2 = keyword2; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + @Override + public String toString() { + return "MessageRequest{" + + "id=" + id + + ", memberId='" + memberId + '\'' + + ", typeId=" + typeId + + ", msgId='" + msgId + '\'' + + ", status=" + status + + ", created='" + created + '\'' + + ", planTime='" + planTime + '\'' + + ", actualTime='" + actualTime + '\'' + + ", hospitalId='" + hospitalId + '\'' + + ", patientId='" + patientId + '\'' + + ", wxTempId='" + wxTempId + '\'' + + ", tempId='" + tempId + '\'' + + ", subTypeId=" + subTypeId + + ", timeType=" + timeType + + ", first='" + first + '\'' + + ", keyword1='" + keyword1 + '\'' + + ", keyword2='" + keyword2 + '\'' + + ", remark='" + remark + '\'' + + ", objType=" + objType + + ", phone='" + phone + '\'' + + '}'; + } +} diff --git a/platform-data-api/pom.xml b/platform-data-api/pom.xml index c355421..048617f 100644 --- a/platform-data-api/pom.xml +++ b/platform-data-api/pom.xml @@ -39,6 +39,11 @@ com.lyms.core + platform-dal + ${project.version} + + + com.lyms.core platform-biz-service ${project.version} diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java b/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java index cea9825..dd80335 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/controller/SmsController.java @@ -42,16 +42,16 @@ public class SmsController extends BaseController { // writeString(response, "success"); // } // - @RequestMapping(value = "/smsTemplate") - public void smsTemplate(HttpServletResponse response,@RequestParam("token")String token){ - if (!"lyms@2016!000".equals(token)) - { - ResultUtils.buildParameterErrorResultAndWrite(response, "没有token"); - return; - } - smsService.productTemplateSms(); - writeString(response, "sms template success"); - } +// @RequestMapping(value = "/smsTemplate") +// public void smsTemplate(HttpServletResponse response,@RequestParam("token")String token){ +// if (!"lyms@2016!000".equals(token)) +// { +// ResultUtils.buildParameterErrorResultAndWrite(response, "没有token"); +// return; +// } +// smsService.productTemplateSms(); +// writeString(response, "sms template success"); +// } // // @RequestMapping(value = "/productChanAmsSms") // public void productChanAmsSms(HttpServletResponse response,@RequestParam("token")String token){ diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java b/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java index 5b637c2..de4a279 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/util/AmsMessageService.java @@ -87,8 +87,8 @@ public class AmsMessageService { //调用https用这个 // String str = HttpClientUtil.doGet(AMS_URL, params, "utf-8", AUTHORIZATION); - System.out.println("amsurl = "+ AMS_URL); + System.out.println( str); ObjectMapper om = new ObjectMapper(); MessageResponseEntity mre = null; Map> map = new HashMap>(); @@ -189,8 +189,8 @@ public class AmsMessageService { public static void main(String[] args) { - Map> list = getMessageTemplateMap("202", - AmsServiceTypeEnum.CHILD_GUIDE); + Map> list = getMessageTemplateMap("2100001306", + AmsServiceTypeEnum.YUN_GUIDE); List msgs = list.get("年龄≥35岁"); // diff --git a/platform-data-api/src/main/resources/config.properties b/platform-data-api/src/main/resources/config.properties index 2e9912d..7f76be2 100644 --- a/platform-data-api/src/main/resources/config.properties +++ b/platform-data-api/src/main/resources/config.properties @@ -7,7 +7,7 @@ center_token=e0c56363-00d6-42ee-bbe0-23c553583062 #AMS地址 线上:http://data.api.healthbaby.com.cn/v1/messages 测试:http://data.api.stage.healthbaby.com.cn/v1/messages #演示地址 https://stage-rp-data-api.healthbaby.com.cn/v1/messages -ams_sms=http://data.api.stage.healthbaby.com.cn/v1/messages +ams_sms=http://data.api.healthbaby.com.cn/v1/messages #短信当天发送时间 如16:00 send_time=16:00 diff --git a/platform-msg-generate/pom.xml b/platform-msg-generate/pom.xml new file mode 100644 index 0000000..5e4060a --- /dev/null +++ b/platform-msg-generate/pom.xml @@ -0,0 +1,111 @@ + + + + com.lyms.core + regional-platform + 1.0.1 + + 4.0.0 + war + platform-msg-generate + + + com.lyms.core + platform-common + ${project.version} + + + com.lyms.core + platform-biz-patient-service + ${project.version} + + + com.lyms.core + platform-dal + ${project.version} + + + com.lyms.core + platform-biz-service + ${project.version} + + + com.lyms.core + platform-mommyData + ${project.version} + + + + + + ../platform-resource/resources + + + **/* + + + true + + + src/main/resources + + **/* + + + + + + + src/main/resources + + database.properties + + true + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.7 + 1.7 + + + + platform-msg-generate + + + + dev + + + + true + + + + ../platform-resource/resources/config-dev.properties + + + + + test + + + ../platform-resource/resources/config-test.properties + + + + + prod + + + ../platform-resource/resources/config-product.properties + + + + + \ No newline at end of file diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java new file mode 100644 index 0000000..bd8cf64 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/constants/ConfigInterface.java @@ -0,0 +1,21 @@ +package com.lyms.platform.msg.constants; + +import com.lyms.platform.common.utils.PropertiesUtils; + +/** + * Created by 基础配置 on 2017-07-17. + */ +public interface ConfigInterface { + + //发送时间 + String SEND_TIME = PropertiesUtils.getPropertyValue("send_time"); + + //ams服务地址 + String AMS_URL = PropertiesUtils.getPropertyValue("ams_url"); + + + String CENTER_BASE_URL= PropertiesUtils.getPropertyValue("center_base_url"); + + String CENTER_TOKEN = PropertiesUtils.getPropertyValue("center_token"); + +} 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 new file mode 100644 index 0000000..ffbd514 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/controller/MsgGenerateController.java @@ -0,0 +1,52 @@ +package com.lyms.platform.msg.controller; + +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.msg.service.IMsgGenerateService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * Created by lqy on 2017-07-17. + */ +@Controller +@RequestMapping("/msg") +public class MsgGenerateController extends BaseController { + + private static final Logger logger = LoggerFactory.getLogger(MsgGenerateController.class); + + @Autowired + private IMsgGenerateService msgGenerateService; + + @RequestMapping(method = RequestMethod.GET, value = "/generatePatAmsMsg") + @ResponseBody + public String generatePatAmsMsg(@RequestParam(required = false) String hospitalId) + { + + logger.info("The request hospital id is {} ", hospitalId); + msgGenerateService.generatePatAmsMsg(hospitalId); + return ""; + } + + + /** + * 生成模板推送消息 + * @param hospitalId + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/generateTemplateMsg") + @ResponseBody + public String generateTemplateMsg(@RequestParam(required = false) String hospitalId) + { + + logger.info("The request hospital id is {} ", hospitalId); + msgGenerateService.generateTemplateMsg(hospitalId); + return ""; + } + +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/HighScoreResult.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/HighScoreResult.java new file mode 100644 index 0000000..de1ed1d --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/HighScoreResult.java @@ -0,0 +1,118 @@ +package com.lyms.platform.msg.model; + +import com.lyms.platform.common.utils.StringUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Created by Administrator on 2016/8/2 0002. + */ +public class HighScoreResult { + + //高危因素 + private List highRisk = new ArrayList(); + //风险等级颜色 + private List level = new ArrayList(); + //高危评分 + private Integer score = 0; + + public List getHighRisk() { + return highRisk; + } + + public List getLevel() { + return level; + } + + public void setLevel(List level) { + this.level = level; + } + + public void setHighRisk(List highRisk) { + this.highRisk = highRisk; + } + + public Integer getScore() { + if (null == score) { + return 0; + } + return score; + } + + + public String getScoreStr(){ + if(null==score || 0==score){ + return ""; + } + return score+""; + } + + public List getLevelId() { + if (null == level) { + return Collections.emptyList(); + } + List idList = new ArrayList<>(); + for (int i1 = 0; i1 < level.size(); i1++) { + java.util.Map map = (java.util.Map) level.get(i1); + String name = map.get("id"); + if (StringUtils.isNotEmpty(name)) { + idList.add(name); + } + } + return idList; + } + + public List getHighId() { + if (null == highRisk) { + return Collections.emptyList(); + } + List idList = new ArrayList<>(); + for (int i1 = 0; i1 < highRisk.size(); i1++) { + java.util.Map map = (java.util.Map) highRisk.get(i1); + String id = map.get("id"); + if (StringUtils.isNotEmpty(id)) { + idList.add(id); + } + } + return idList; + } + + public void setScore(Integer score) { + this.score = score; + } + + public String getLevelStr() { + StringBuilder stringBuilder = new StringBuilder(); + if (null == level) { + return ""; + } + for (int i1 = 0; i1 < level.size(); i1++) { + java.util.Map map = (java.util.Map) level.get(i1); + String name = map.get("name"); + if (stringBuilder.indexOf(name) == -1) { + stringBuilder.append(map.get("name")).append(", "); + } + } + if (stringBuilder.length() >= 2) { + stringBuilder.setLength(stringBuilder.length() - 2); + } + return stringBuilder.toString(); + } + + public String gethighRiskStr() { + StringBuilder stringBuilder = new StringBuilder(); + if (null == highRisk) { + return ""; + } + for (int i1 = 0; i1 < highRisk.size(); i1++) { + java.util.Map map = (java.util.Map) highRisk.get(i1); + stringBuilder.append(map.get("name")).append(", "); + } + if (stringBuilder.length() >= 2) { + stringBuilder.setLength(stringBuilder.length() - 2); + } + return stringBuilder.toString(); + } +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/MessageContent.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/MessageContent.java new file mode 100644 index 0000000..9fc3de7 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/MessageContent.java @@ -0,0 +1,62 @@ +package com.lyms.platform.msg.model; + +import java.io.Serializable; +import java.util.List; + +/** + * Created by Administrator on 2016/7/5. + */ +public class MessageContent implements Serializable { + private static final long serialVersionUID = 1L; + private String id; + private String content; + private String title; + private List tags; + private String highRiskId; + + public String getHighRiskId() { + return highRiskId; + } + + public void setHighRiskId(String highRiskId) { + this.highRiskId = highRiskId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + @Override + public String toString() { + return "MessageContent [content=" + content + ", id=" + id + ", Tags=" + + tags + ", title=" + title + "]"; + } +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/MessageResponseEntity.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/MessageResponseEntity.java new file mode 100644 index 0000000..fb73e0b --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/MessageResponseEntity.java @@ -0,0 +1,43 @@ +package com.lyms.platform.msg.model; + +import java.util.List; + +/** + * Created by Administrator on 2016/7/5. + */ +public class MessageResponseEntity { + private String errormsg; + private PageInfo pageInfo; + private List list ; + private int errorcode; + public String getErrormsg() { + return errormsg; + } + public void setErrormsg(String errormsg) { + this.errormsg = errormsg; + } + + public PageInfo getPageInfo() { + return pageInfo; + } + public void setPageInfo(PageInfo pageInfo) { + this.pageInfo = pageInfo; + } + public List getList() { + return list; + } + public void setList(List list) { + this.list = list; + } + public int getErrorcode() { + return errorcode; + } + public void setErrorcode(int errorcode) { + this.errorcode = errorcode; + } + @Override + public String toString() { + return "MessageResponseEntity [errorcode=" + errorcode + ", errormsg=" + + errormsg + ", list=" + list + ", pageInfo=" + pageInfo + "]"; + } +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/PageInfo.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/PageInfo.java new file mode 100644 index 0000000..cda30e0 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/PageInfo.java @@ -0,0 +1,60 @@ +package com.lyms.platform.msg.model; + +/** + *lqy + */ +public class PageInfo { + private int count; + private int lastPage; + private int limit; + private int page; + private int size; + + public int getCount() { + return count; + } + + public void setCount(int count) { + this.count = count; + } + + public int getLastPage() { + return lastPage; + } + + public void setLastPage(int lastPage) { + this.lastPage = lastPage; + } + + public int getLimit() { + return limit; + } + + public void setLimit(int limit) { + this.limit = limit; + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + @Override + public String toString() { + return "PageInfo [count=" + count + ", lastPage=" + lastPage + + ", limit=" + limit + ", page=" + page + ", size=" + size + + "]"; + } + +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/Tag.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/Tag.java new file mode 100644 index 0000000..9eb4abb --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/model/Tag.java @@ -0,0 +1,34 @@ +package com.lyms.platform.msg.model; + +import java.io.Serializable; + +/** + * Created by Administrator on 2016/7/5. + */ +public class Tag implements Serializable { + + private static final long serialVersionUID = 1L; + private String tagId; + private String tagName; + + public String getTagId() { + return tagId; + } + + public void setTagId(String tagId) { + this.tagId = tagId; + } + + public String getTagName() { + return tagName; + } + + public void setTagName(String tagName) { + this.tagName = tagName; + } + + @Override + public String toString() { + return "Tag [tagId=" + tagId + ", tagName=" + tagName + "]"; + } +} 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 new file mode 100644 index 0000000..5e8ba41 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/AmsMessageService.java @@ -0,0 +1,162 @@ +package com.lyms.platform.msg.remote; + +import com.lyms.platform.common.enums.AmsServiceTypeEnum; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.common.utils.HttpRequest; +import com.lyms.platform.common.utils.PropertiesUtils; +import com.lyms.platform.common.utils.StringUtils; + +import com.lyms.platform.msg.model.MessageContent; +import com.lyms.platform.msg.model.MessageResponseEntity; +import com.lyms.platform.msg.model.Tag; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.JsonMappingException; +import org.codehaus.jackson.map.ObjectMapper; + +import java.io.IOException; + +import java.util.ArrayList; +import java.util.HashMap; + +import java.util.List; +import java.util.Map; +/** + * Created by lqy on 2016/7/5. + */ + +/** + * ams 接口服务 + * + */ +public class AmsMessageService { + private static final Logger logger = LoggerFactory.getLogger(AmsMessageService.class); + public static final String AMS_URL= PropertiesUtils.getPropertyValue("ams_sms"); + private static final String AUTHORIZATION = "healthbaby2015"; + + /** + * 根据医院id和对象来获取ams短信 + * @param hospitalId + * @param serviceType + * @return + */ + public static Map> getMessageTemplateMap(String hospitalId,AmsServiceTypeEnum serviceType) { + System.out.println("ams > hospitalId="+hospitalId+";serviceType="+serviceType); + + Map headers = new HashMap(); + headers.put("Authorization", AUTHORIZATION); + Map params = new HashMap(); + params.put("hospitalId", hospitalId); + params.put("page", "1"); + params.put("limit", "9999"); + String str = HttpRequest.sendGet(AMS_URL, + params, headers); + + //调用https用这个 + // String str = HttpClientUtil.doGet(AMS_URL, params, "utf-8", AUTHORIZATION); + + ObjectMapper om = new ObjectMapper(); + MessageResponseEntity mre = null; + Map> map = new HashMap>(); + try { + mre = om.readValue(str, MessageResponseEntity.class); + } catch (JsonParseException e) { + ExceptionUtils.catchException(e,"JsonParseException"); + } catch (JsonMappingException e) { + ExceptionUtils.catchException(e, "JsonMappingException"); + } catch (IOException e) { + ExceptionUtils.catchException(e, "IOException"); + } + if(mre !=null){ + if(mre.getErrorcode()==0){//成功 + List mcs=mre.getList(); + for(int i = 0;i tags = mc.getTags(); + for (int j = 0; j < tags.size(); j++) { + Tag tag=tags.get(j); + String type = getTagType(tag, serviceType); + if(!StringUtils.isEmpty(type)){ + List list = map.get(type); + if(list==null){ + list = new ArrayList(); + } + list.add(mc); + map.put(type, list); + }else{ + String riskName = tag.getTagName(); + List list = map.get(riskName); + if(list==null){ + list = new ArrayList(); + } + list.add(mc); + map.put(riskName, list); + } + } + } + }else{//失败 + logger.error("The hospital id is {},and error code is {},and error message is {}" + ,new Object[]{hospitalId,mre.getErrorcode(),mre.getErrormsg()}); + } + }else{ + logger.error("The hospital id is {},and error code is {},and error message is {}" + ,new Object[]{hospitalId,mre.getErrorcode(),mre.getErrormsg()}); + } + return map; + } + + public static String getTagType(Tag tag,AmsServiceTypeEnum serviceType){ + String re = null; + if(tag==null) return re; + String tagName = tag.getTagName(); + switch (serviceType) { + case CHILD_GUIDE: + boolean boo = tagName.endsWith("周"); + if(boo) { + String str = tagName.substring(0,tagName.length()-1); + if(StringUtils.isNum(str)){ + re = str; + } + } + break; + case YUN_GUIDE: + boolean end = tagName.endsWith("周"); + boolean start = tagName.startsWith("孕"); + if(start&&end) { + String str = tagName.substring(1,tagName.length()-1); + if(StringUtils.isNum(str)){ + re = str; + } + } + break; + case CHAN_GUIDE: + end = tagName.endsWith("周"); + start = tagName.startsWith("产后"); + if(start&&end) { + String str = tagName.substring(2,tagName.length()-1); + if(StringUtils.isNum(str)){ + re = str; + } + } + break; + case YUN_WARN: + end = tagName.endsWith("周"); + start = tagName.startsWith("孕"); + if(!start && !end) { + re = tagName; + } + break; + default: + break; + } + return re; + } + + public static void main(String[] args) { + Map> list = getMessageTemplateMap("202", + AmsServiceTypeEnum.YUN_GUIDE); + List msgs = list.get("年龄≥35岁"); + System.out.println(msgs); + } +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/SaveMessageService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/SaveMessageService.java new file mode 100644 index 0000000..a04fa41 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/SaveMessageService.java @@ -0,0 +1,69 @@ +package com.lyms.platform.msg.remote; + +import com.lyms.platform.beans.MessageListRequest; +import com.lyms.platform.common.enums.ProjectTypeEnums; +import com.lyms.platform.common.utils.HttpRequest; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.msg.constants.ConfigInterface; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import java.util.Map; + +/** + * Created by Administrator on 2016/7/5. + */ +public class SaveMessageService { + + + /** + * 保存推送消息到消息中心 + * @param list + * @return + */ + public static boolean saveMsgCenter(MessageListRequest list) + { + String json = JsonUtil.obj2JsonString(list); + String result = HttpRequest.sendPost(ConfigInterface.CENTER_BASE_URL+"saveCreatedSMS",json,ConfigInterface.CENTER_TOKEN); + if (StringUtils.isNotEmpty(result)) + { + Map map = JsonUtil.str2Obj(result, Map.class); + if ("0".equals(map.get("errorcode"))) + { + return true; + } + } + return false; + } + + + /** + * 是否存在推送消息 + * @param patientId + * @param tempId + * @return + */ + public static boolean isExistMsg(String patientId,String tempId) + { + + String param = "typeId="+ ProjectTypeEnums.YNXT.getId()+"&ext2="+StringUtils.emptyStr(tempId)+"&ext3="+StringUtils.emptyStr(patientId)+"&page=1&limit=10"; + String result = HttpRequest.sendGet(ConfigInterface.CENTER_BASE_URL + "messages", param, ConfigInterface.CENTER_TOKEN); + + JSONObject jsonObject = JsonUtil.getObj(result); + if (jsonObject != null && jsonObject.getJSONArray("list") != null) + { + JSONArray jsonArray = jsonObject.getJSONArray("list"); + String list = jsonArray.toString(); + if (StringUtils.isNotEmpty(list) && !"[]".equals(list)) + { + return true; + } + } + return false; + } + + public static void main(String[] areg) + { + } +} 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 new file mode 100644 index 0000000..6e4914b --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IBaseService.java @@ -0,0 +1,33 @@ +package com.lyms.platform.msg.service; + +import com.lyms.platform.pojo.SmsConfigModel; + +import java.util.Date; +import java.util.List; +import java.util.Set; + +/** + * Created by Administrator on 2017-07-18. + */ +public interface IBaseService { + + public List getHospitalConfigsByWeek(String hospitalId); + + public boolean isRunning(String hid); + + public boolean isStartService(Integer smsType,String serviceStr); + + public String getDeptPrefix(String doctorId,String detpPrefixStr); + + public List findLastRisk(String pid); + + public boolean isOnlyHealthy(List list); + + public List getHospitalConfigs(String hospitalId); + + public boolean queryYunIsOrder(Integer sendTimeType,String tempHid,String pid,Date lastLmess,Integer start); + + public String getSmsPrefix(SmsConfigModel config,String doctorId); + + public Set getYuYuePatient(Integer sendTimeType,String tempHid); +} 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 new file mode 100644 index 0000000..e6b48b9 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/IMsgGenerateService.java @@ -0,0 +1,16 @@ +package com.lyms.platform.msg.service; + +/** + * Created by Administrator on 2017-07-17. + */ +public interface IMsgGenerateService { + + /** + * 生成孕妇的AMS推送消息 + * @param hospitalId 医院id + */ + void generatePatAmsMsg(String hospitalId); + + + void generateTemplateMsg(String hospitalId); +} 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 new file mode 100644 index 0000000..2f1a4da --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/BaseServiceImpl.java @@ -0,0 +1,616 @@ +package com.lyms.platform.msg.service.impl; + +import com.lyms.platform.biz.service.*; +import com.lyms.platform.common.enums.HospitalStatusEnums; +import com.lyms.platform.common.enums.YnEnums; +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.service.IBaseService; +import com.lyms.platform.msg.utils.DateUtils; +import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.permission.model.OrganizationQuery; +import com.lyms.platform.permission.model.Users; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.*; +import com.lyms.platform.query.*; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * Created by Administrator on 2017-07-18. + */ +@Service("baseService") +public class BaseServiceImpl implements IBaseService { + + @Autowired + private SmsConfigService smsConfigService; + + + + @Autowired + private UsersService usersService; + + + @Autowired + private AntenatalExaminationService antenatalExaminationService; + + @Autowired + private PatientsService patientsService; + + @Autowired + private OrganizationService organizationService; + + @Autowired + private MatDeliverService matDeliverService; + @Autowired + private StopPregnancyService stopPregnancyService; + + @Autowired + private BasicConfigService basicConfigService; + + /** + * 查询出对应周几要发送的的医院配置 + * @return + */ + public List getHospitalConfigsByWeek(String hospitalId) + { + SmsConfigQuery query = new SmsConfigQuery(); + query.setYn(YnEnums.YES.getId()); + String week = DateUtils.getWeekOfDate(new Date()); + query.setGuideTime(week); + if (StringUtils.isNotEmpty(hospitalId)) + { + query.setHospitalId(hospitalId); + } + return smsConfigService.querySmsConfig(query); + } + + /** + * 查询出配置了的医院 + * @param hospitalId + * @return + */ + public List getHospitalConfigs(String hospitalId) { + SmsConfigQuery configQuery = new SmsConfigQuery(); + configQuery.setYn(YnEnums.YES.getId()); + configQuery.setPrefixTypes(new Integer[]{0, 1}); + if (StringUtils.isNotEmpty(hospitalId)) + { + configQuery.setHospitalId(hospitalId); + } + + //查询出对应医院配置 + return smsConfigService.querySmsConfig(configQuery); + } + + + + + /** + * 查询预约孕妇Id + * @param sendTimeType 发送时间 + * @param tempHid 模板医院ID + * @return + */ + public Set getYuYuePatient(Integer sendTimeType,String tempHid) + { + Set idset = new HashSet<>(); + Date yuYueDate = DateUtils.addDay(new Date(), sendTimeType); + if (yuYueDate != null) + { + //把时间格式化成 yyyy_MM_dd 的日期 + yuYueDate = DateUtils.formatDate(yuYueDate,DateUtils.Y_M_D); + } + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setYn(YnEnums.YES.getId()); + antExChuQuery.setNextCheckTimeStart(yuYueDate); + antExChuQuery.setNextCheckTimeEnd(yuYueDate); + antExChuQuery.setHospitalId(tempHid); + List chus = antenatalExaminationService.queryAntExChu(antExChuQuery); + if (CollectionUtils.isNotEmpty(chus)) + { + for (AntExChuModel chu : chus) + { + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setParentId(chu.getParentId()); + antExQuery.setYn(YnEnums.YES.getId()); + antExQuery.setHospitalId(tempHid); + //复诊不存在 才添加 + List list = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "created")); + if (!CollectionUtils.isNotEmpty(list)) + { + idset.add(chu.getParentId()); + } + + } + } + + PatientsQuery patientQuery = new PatientsQuery(); + patientQuery.setYn(YnEnums.YES.getId()); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientQuery.setBuildTypeList(buildType); + //1孕妇 3 产妇 + patientQuery.setType(1); + //分娩状态 + patientQuery.setDueStatus(0); + patientQuery.setHospitalId(tempHid); + + //末次月经必须大于当前时间减去42周视为未分娩孕妇 + Date lastMensesMax = DateUtils.getNewDate(new Date(),-42, "周", 1); + patientQuery.setLastMensesStart(lastMensesMax); + + List patientses = patientsService.queryPatient(patientQuery); + if (CollectionUtils.isNotEmpty(patientses)) + { + for (Patients pat : patientses) + { + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setParentId(pat.getId()); + antExQuery.setYn(YnEnums.YES.getId()); + List list = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "created")); + if (CollectionUtils.isNotEmpty(list)) + { + AntenatalExaminationModel ae = list.get(0); + if (ae != null && ae.getNextCheckTime() != null) + { + if (DateUtils.getDateStr(yuYueDate, DateUtils.Y_M_D).equals(DateUtils.getDateStr(ae.getNextCheckTime(), DateUtils.Y_M_D))) { + idset.add(ae.getParentId()); + } + } + } + } + } +// List fuzs = antenatalExaminationService.queryYuyueAntenatalExamination(yuYueDate, tempHid); +// +// for (AntenatalExaminationModel f : fuzs) +// { +// idset.add(f.getId()); //这里的id就是parentid +// } + return idset; + } + + /** + * 判断医院是否运行 + * @return + */ + public boolean isRunning(String hid) + { + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setYn(YnEnums.YES.getId()); + organizationQuery.setId(Integer.parseInt(hid)); + List organizations = organizationService.queryOrganization(organizationQuery); + if (CollectionUtils.isNotEmpty(organizations)) + { + Organization org = organizations.get(0); + if (org != null && org.getStatus() != null) + { + if (org.getStatus() == HospitalStatusEnums.ZSYX.getId() || org.getStatus() == HospitalStatusEnums.SYX.getId()) + { + return true; + } + } + } + return false; + } + + + /** + * 判断对应服务是否启动 + */ + public boolean isStartService(Integer smsType,String serviceStr) + { + if (StringUtils.isEmpty(serviceStr)) + { + return false; + } + //消息服务启动 + List smsServices = JsonUtil.toList(serviceStr, Map.class); + + if (CollectionUtils.isNotEmpty(smsServices)) + { + for (Map map : smsServices) + { + String status = String.valueOf(map.get(String.valueOf(smsType))); + if ("true".equals(status)) + { + return true; + } + } + } + return false; + } + + + /** + * 获取发送短信的前缀 如果配置为发送科室前缀 就通过医生查询到医生所在科室 + * 然后取对应科室前缀 如果为空就取医院前缀 + * @return + */ + public String getSmsPrefix(SmsConfigModel config,String doctorId) + { + String messagePrefix = config.getHospitalPrefix(); + //前缀类型 0医院前缀 1科室前缀 + if (config.getPrefixType() != null && config.getPrefixType() == 1) + { + String res = getDeptPrefix(doctorId, config.getDeptPrefix()); + messagePrefix = res == "" ? messagePrefix : res; + } + return messagePrefix; + } + + + /** + * /通过医生查询科室前缀 + * @param doctorId + * @param detpPrefixStr + * @return + */ + public String getDeptPrefix(String doctorId,String detpPrefixStr) + { + + if (StringUtils.isEmpty(doctorId) || StringUtils.isEmpty(detpPrefixStr)) + { + return ""; + } + Integer userId = null; + try { + userId = Integer.valueOf(doctorId); + }catch (Exception e) + { + return ""; + } + + //通过建档医生查询用户信息 + Users user = usersService.getUsers(userId); + if (user != null) + { + //得到医生对应的部门id + Integer deptId = user.getDeptId(); + if (StringUtils.isNotEmpty(detpPrefixStr)) + { + List detpPrefixs = JsonUtil.toList(detpPrefixStr, Map.class); + if (CollectionUtils.isNotEmpty(detpPrefixs)) + { + for (Map map : detpPrefixs) + { + Integer preDeptId = Integer.valueOf(String.valueOf(map.get("deptId"))); + if (preDeptId == deptId) + { + return String.valueOf(map.get("deptPrefix")); + } + } + } + } + } + return ""; + } + + + + /** + * 健康高危因素 id d42eec03-aa86-45b8-a4e0-78a0ff365fb6 + * + * 判断高危因素中是不只有健康 + * @param list + * @return + */ + public boolean isOnlyHealthy(List list) + { + if (CollectionUtils.isNotEmpty(list)) + { + Map riskMap = (Map) list.get(0); + //只存在健康高危因素就生成指导短信 + if (list.size() == 1 && "d42eec03-aa86-45b8-a4e0-78a0ff365fb6".equals(riskMap.get("id").toString())) + { + return false; + } + else + { + return true; + } + } + return false; + } + + + + + + + /** + * 判断当前孕妇是否有有效预约短信 + * @param sendTimeType + * @param tempHid + * @param pid 孕妇ID + * @return + */ + public boolean queryYunIsOrder(Integer sendTimeType,String tempHid,String pid,Date lastLmess,Integer start) + { + Set idset = new HashSet<>(); + Date startDate = DateUtils.getNewDate(lastLmess, start, "周", -sendTimeType); + if (startDate != null) + { + //把时间格式化成 yyyy_MM_dd 的日期 + startDate = DateUtils.formatDate(startDate,DateUtils.Y_M_D); + } + + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setYn(YnEnums.YES.getId()); + antExChuQuery.setNextCheckTime(startDate); + antExChuQuery.setParentId(pid); + List chus = antenatalExaminationService.queryAntExChu(antExChuQuery); + if (CollectionUtils.isNotEmpty(chus)) + { + for (AntExChuModel chu : chus) + { + PatientsQuery patientQuery = new PatientsQuery(); + patientQuery.setYn(YnEnums.YES.getId()); + patientQuery.setType(1); + patientQuery.setId(chu.getParentId()); + + List patientses = patientsService.queryPatient(patientQuery); + if (CollectionUtils.isNotEmpty(patientses)) + { + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setParentId(chu.getParentId()); + antExQuery.setYn(YnEnums.YES.getId()); + //复诊不存在 才添加 + List list = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "created")); + if (!CollectionUtils.isNotEmpty(list)) + { + idset.add(chu.getParentId()); + } + } + } + } + List fuzs = antenatalExaminationService.queryYuyueAntenatalExamination(startDate, tempHid, pid); + if (CollectionUtils.isNotEmpty(fuzs)) + { + for (AntenatalExaminationModel f : fuzs) + { + idset.add(f.getId()); //这里的id就是parentid + } + } + return idset.size() > 0; + } + + + + /** + * 获取最后一次高危产检的高危信息 + *

+ * 先取复诊最后一条,在取初诊 + * + * @return + */ + public List findLastRisk(String pid) { + MatDeliverQuery matDeliverQuery = new MatDeliverQuery(); + matDeliverQuery.setPid(pid); + matDeliverQuery.setYn(YnEnums.YES.getId()); + List listDate = new ArrayList<>(); + //分娩记录 + List modelList = matDeliverService.query(matDeliverQuery); + if (CollectionUtils.isNotEmpty(modelList)) { + for (MaternalDeliverModel model : modelList) { + listDate.add(new SortIn(model)); + } + } + + //终止妊娠记录 + StopPregQuery query = new StopPregQuery(); + query.setYn(YnEnums.YES.getId()); + query.setPid(pid); + List stopPregs = stopPregnancyService.queryStopPreg(query); + if (CollectionUtils.isNotEmpty(stopPregs)) { + for (StopPregModel stopPregModel : stopPregs) { + listDate.add(new SortIn(stopPregModel)); + } + } + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setPid(pid); + patientsQuery.setType(3); + patientsQuery.setYn(YnEnums.YES.getId()); + List patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) { + for (Patients patients : patientses) { + listDate.add(new SortIn(patients, 1)); + } + } + //排序集合 + sortList(listDate); + + + PatientsQuery patientsQuery1 = new PatientsQuery(); + patientsQuery1.setPid(pid); + patientsQuery1.setType(1); + List patientses1 = patientsService.findLatelyCreated(patientsQuery1.convertToQuery().addOrder(Sort.Direction.ASC, "created")); + + Date min = null; + if (CollectionUtils.isNotEmpty(patientses1)) { + min = patientses1.get(0).getBookbuildingDate(); + } + + Date max = null; + if (!listDate.isEmpty()) { + max = listDate.get(0).getDate(); + } + + HighScoreResult highScoreResult = getPatLastRiskByDate(pid,min, max); + return highScoreResult.getHighRisk(); + } + + private void sortList(List listDate) { + //按照数据排序 + Collections.sort(listDate, new Comparator() { + @Override + public int compare(SortIn o1, SortIn o2) { + if (o1.getDate().after(o2.getDate())) { + return -1; + } + if (o1.getDate().before(o2.getDate())) { + return 1; + } + return 0; + } + }); + } + + + /** + * 查询当前产程孕妇高危因素 + * + * @param pid + * @param date + * @return + */ + private HighScoreResult getPatLastRiskByDate(String pid, Date min,Date date) { + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setPid(pid); + antExQuery.setYn(YnEnums.YES.getId()); + if (min != null) { + antExQuery.setStart(min); + }else if(null!=date){ + antExQuery.setEnd(date); + } + List list = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "modified")); + HighScoreResult highScoreResult = new HighScoreResult(); + boolean next = true; + if (CollectionUtils.isNotEmpty(list)) { + for (AntenatalExaminationModel model : list) { + if (!next) { + break; + } + //复诊 + if (null != model && org.apache.commons.lang.StringUtils.isNotEmpty(model.getRiskFactor()) && !"[]".equals(model.getRiskFactor())) { + List list1 = JsonUtil.toList(model.getRiskFactor(), List.class); + highScoreResult = queryRisk(list1); + next = false; + } + } + } + + try { + + if (next) { + //初诊 + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setPid(pid); + if (min != null) { + antExChuQuery.setStart(min); + } else if (date != null) { + antExChuQuery.setEnd(date); + } + antExChuQuery.setYn(YnEnums.YES.getId()); + List list1 = antenatalExaminationService.queryAntExChu(antExChuQuery); + if (CollectionUtils.isNotEmpty(list1)) { + for (AntExChuModel antExChuModel : list1) { + if (!next) { + break; + } + if (null != antExChuModel && org.apache.commons.lang.StringUtils.isNotEmpty(antExChuModel.getHighrisk()) && !"[]".equals(antExChuModel.getHighrisk())) { + List list2 = JsonUtil.toList(antExChuModel.getHighrisk(), List.class); + highScoreResult = queryRisk(list2); + next = false; + } + } + } + + } + + } catch (Exception e) { + } + return highScoreResult; + } + + + 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 class SortIn { + + public SortIn(Patients patients) { + this.id = patients.getId(); + this.date = patients.getBookbuildingDate(); + this.type = 2; + } + + public SortIn(Patients patients, int i) { + this.id = patients.getId(); + this.date = patients.getFmDate(); + this.type = 2; + } + + public SortIn(StopPregModel stopPregModel) { + this.id = stopPregModel.getId(); + this.date = stopPregModel.getStopDate(); + this.type = 1; + } + + public SortIn(MaternalDeliverModel maternalDeliverModel) { + this.id = maternalDeliverModel.getId(); + this.date = DateUtils.preaseDate(maternalDeliverModel.getDueDate(), DateUtils.Y_M_D); + this.type = 3; + } + + + private String id; + //type为1 表示终止妊娠数据 2 表示自然分娩数据 + private int type; + private Date date; + + public Date getDate() { + return date; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + } + +} 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 new file mode 100644 index 0000000..61f0339 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java @@ -0,0 +1,105 @@ +package com.lyms.platform.msg.service.impl; + +import com.lyms.platform.biz.service.*; +import com.lyms.platform.msg.service.IBaseService; +import com.lyms.platform.msg.service.IMsgGenerateService; +import com.lyms.platform.msg.utils.DateUtils; +import com.lyms.platform.msg.worker.TempleteMsgGenerateWorker; +import com.lyms.platform.msg.worker.YunAmsMsgGenerateWorker; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.SmsConfigModel; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + + +/** + * Created by Administrator on 2017-07-17. + */ +@Service("msgGenerateService") +public class MsgGenerateServiceImpl implements IMsgGenerateService { + + private static final Logger logger = LoggerFactory.getLogger(MsgGenerateServiceImpl.class); + + + private static ExecutorService pool = Executors.newFixedThreadPool(10); + + @Autowired + private IBaseService baseService; + + @Autowired + private YunBookbuildingService yunBookbuildingService; + + @Autowired + private SmsTemplateService smsTemplateService; + + @Autowired + private HighRiskService highRiskService; + + @Autowired + private BabyBookbuildingService babyBookbuildingService; + + + /** + * 生成孕妇的AMS推送消息 + * @param generateHospitalId 医院id + */ + @Override + public void generatePatAmsMsg(String generateHospitalId) { + String week = DateUtils.getWeekOfDate(new Date()); + List configModels = baseService.getHospitalConfigsByWeek(generateHospitalId); + if (CollectionUtils.isNotEmpty(configModels)) + { + int batchSize = 5; + int end = 0; + for (int i = 0; i < configModels.size(); i += batchSize) { + end = (end + batchSize); + if (end > configModels.size()) { + end = configModels.size(); + } + YunAmsMsgGenerateWorker checkPointCountWorker = new YunAmsMsgGenerateWorker(configModels.subList(i,end), + baseService,yunBookbuildingService,week,highRiskService); + pool.submit(checkPointCountWorker); + } + + } + + } + + /** + * 生成模板消息 + * @param generateHospitalId + */ + @Override + public void generateTemplateMsg(String generateHospitalId) { + List configModels = baseService.getHospitalConfigs(generateHospitalId); + + logger.info("The configs hospital size is {}",configModels.size()); + if (CollectionUtils.isNotEmpty(configModels)) + { + int batchSize = 5; + int end = 0; + for (int i = 0; i < configModels.size(); i += batchSize) { + end = (end + batchSize); + if (end > configModels.size()) { + end = configModels.size(); + } + TempleteMsgGenerateWorker worker = new TempleteMsgGenerateWorker(configModels.subList(i,end), + baseService,yunBookbuildingService,smsTemplateService,babyBookbuildingService); + pool.submit(worker); + } + + } + } + + public void generaterAllMsg() { + + } +} 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 new file mode 100644 index 0000000..749f753 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/DateUtils.java @@ -0,0 +1,248 @@ +package com.lyms.platform.msg.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Created by Administrator on 2017-07-18. + */ +public class DateUtils { + + private static final Logger logger = LoggerFactory.getLogger(DateUtils.class); + + private static Lock lock = new ReentrantLock(); + + public static final String DD = "dd"; + public static final String YYYY = "yyyy"; + public static final String YMD = "yyyyMMdd"; + public static final String Y_M_D = "yyyy-MM-dd"; + public static final String Y_M_D_H_M_S = "yyyy-MM-dd HH:mm:ss"; + public static final String Y_M_D_H_M = "yyyy-MM-dd HH:mm"; + +// private static Map> formatMap = new HashMap>(); + + private static ThreadLocal threadLocal = new ThreadLocal(){ + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat(Y_M_D_H_M_S); + } + }; + + private static final String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; + + + /** + * 为每个线程创建一个时间格式化实例 + * @param dateFormat + * @return + */ + private static SimpleDateFormat getDateFormat(String dateFormat) + { + SimpleDateFormat simpleDateFormat = threadLocal.get(); + if (simpleDateFormat == null) + { + simpleDateFormat = new SimpleDateFormat(dateFormat); + threadLocal.set(simpleDateFormat); + } + simpleDateFormat.applyPattern(dateFormat); + return simpleDateFormat; + } + + +// /** +// * 为每个线程创建一个时间格式化实例 +// * @param dateFormat +// * @return +// */ +// private static SimpleDateFormat getDateFormat(final String dateFormat) +// { +// try { +// ThreadLocal tl = formatMap.get(dateFormat); +// if (tl == null) +// { +// lock.lock(); +// tl = formatMap.get(dateFormat); +// if (tl == null) +// { +// tl = new ThreadLocal() +// { +// @Override +// protected SimpleDateFormat initialValue() +// { +// return new SimpleDateFormat(dateFormat); +// } +// }; +// formatMap.put(dateFormat, tl); +// } +// } +// return tl.get(); +// } +// finally +// { +// lock.unlock(); +// } +// +// } + + /** + * 获取当前日期是星期几
+ * + * @param dt + * @return 当前日期是星期几 + */ + public static String getWeekOfDate(Date dt) + { + try + { + lock.lock(); + Calendar cal = Calendar.getInstance(); + cal.setTime(dt); + int w = cal.get(Calendar.DAY_OF_WEEK) - 1; + return weekDays[w]; + } + finally + { + lock.unlock(); + } + } + + + + + /** + * 格式化时间,返回格式的字符串 + * @param date + * @param format 格式 + * @return + */ + public static String getDateStr(Date date,String format) + { + if (date == null) + { + return null; + } + try + { + return getDateFormat(format).format(date); + } + catch (Exception e) + { + logger.error("get date format error."); + return null; + } + } + + + /** + * 把时间格式化成对应格式的时间 + * @param date + * @param format + * @return + */ + public static Date formatDate(Date date,String format) + { + String time = getDateFormat(format).format(date); + return preaseDate(time, format); + } + + /** + * 把字符串解析成时间 + * @param dateStr + * @param format + * @return + */ + public static Date preaseDate(String dateStr,String format) + { + try + { + Date date = getDateFormat(format).parse(dateStr); + return date; + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 按类型来添加时间,最后添加天数 + * @param num + * @param type + * @param day + * @return + */ + public static Date getNewDate(Date date,int num,String type,int day) + { + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(date); + if(type == null)return null; + if(type.trim().equals("年")){ + rightNow.add(Calendar.YEAR,num); + }else if(type.trim().equals("月")){ + rightNow.add(Calendar.MONTH,num); + }else if(type.trim().equals("周")){ + rightNow.add(Calendar.WEEK_OF_YEAR, num); + }else if(type.trim().equals("天")){ + rightNow.add(Calendar.DAY_OF_YEAR,num); + } + rightNow.add(Calendar.DAY_OF_YEAR, day); + return rightNow.getTime(); + } + + /** + * 时间添加天数 + * @param srcDate + * @param days + * @return + */ + public static Date addDay(Date srcDate, int days) + { + + Calendar rightNow = Calendar.getInstance(); + rightNow.setTime(srcDate); + rightNow.add(Calendar.DAY_OF_YEAR, days); + return rightNow.getTime(); + } + + + /** + * 计算两个日志之前的天数 + * @param startDate + * @param endDate + * @return + */ + public static int daysBetween(Date startDate,Date endDate) + { + if (startDate == null || endDate == null) + { + return -1; + } + try { + startDate = formatDate(startDate, Y_M_D); + endDate = formatDate(endDate, Y_M_D); + Calendar cal = Calendar.getInstance(); + cal.setTime(startDate); + + long time1 = cal.getTimeInMillis(); + cal.setTime(endDate); + long time2 = cal.getTimeInMillis(); + long between_days = (time2-time1)/(1000*3600*24); + return Integer.parseInt(String.valueOf(between_days)); + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java new file mode 100644 index 0000000..b411924 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HelperUtils.java @@ -0,0 +1,336 @@ +package com.lyms.platform.msg.utils; + +import com.lyms.platform.beans.MessageListRequest; +import com.lyms.platform.beans.MessageRequest; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.msg.constants.ConfigInterface; +import com.lyms.platform.msg.remote.SaveMessageService; +import com.lyms.platform.pojo.SmsConfigModel; +import com.lyms.platform.query.BabyModelQuery; +import com.lyms.platform.query.PatientsQuery; +import org.apache.commons.collections.CollectionUtils; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Created by Administrator on 2017-07-19. + */ +public class HelperUtils { + + public static int getWeekNum(List guideTimes,String week) + { + int weekNum = 0; + for (String guide : guideTimes) + { + if (!week.equals(guide)) + { + weekNum = WeekEnums.getIdByName(guide); + } + } + return weekNum; + } + + /** + * 封装发送短信对象 + * @param data + * @param phone + * @param serviceObj + * @param msgType + * @param hospitalId + * @param tempId + * @param pid + * @return + */ + public static MessageRequest getMessageRequest(String data,String phone,Integer serviceObj, + Integer msgType,String hospitalId, + String tempId,String pid, + String keyWord1,String keyWord2, + String remark,String wxTempId) + { + MessageRequest request = new MessageRequest(); + //平台ID + request.setTypeId(ProjectTypeEnums.YNXT.getId()); + //服务对象 1孕妇 2儿童 3产妇 + request.setObjType(serviceObj); + request.setPhone(phone); + //计划发送时间 + request.setPlanTime(DateUtils.getDateStr(new Date(), DateUtils.Y_M_D)+ " " + ConfigInterface.SEND_TIME +":00"); + + request.setSubTypeId(msgType); + request.setStatus(MsgStatusEnums.NO_SEND.getId()); + request.setTimeType(SmsTimeTypeEnums.NO_ONTIME.getId()); + request.setHospitalId(hospitalId); + request.setPatientId(pid); + request.setTempId(tempId); + request.setWxTempId(wxTempId); + request.setCreated(DateUtils.getDateStr(new Date(), DateUtils.Y_M_D_H_M_S)); + + request.setFirst(data); + request.setKeyword1(keyWord1); + request.setKeyword2(keyWord2); + request.setRemark(remark); + + return request; + } + + + /** + * 判断模板对应的服务是否启动 + * @param config + * @param smsType + * @return + */ + public static boolean isStartTemplate(SmsConfigModel config,Integer smsType) + { + if (config != null) { + String serviceStr = config.getSmsService(); + boolean isStart = isStartService(smsType, serviceStr); + return isStart; + } + return false; + } + + /** + * 判断对应服务是否启动 + */ + public static boolean isStartService(Integer smsType,String serviceStr) + { + if (StringUtils.isEmpty(serviceStr)) + { + return false; + } + //消息服务启动 + List smsServices = JsonUtil.toList(serviceStr, Map.class); + + if (CollectionUtils.isNotEmpty(smsServices)) + { + for (Map map : smsServices) + { + String status = String.valueOf(map.get(String.valueOf(smsType))); + if ("true".equals(status)) + { + return true; + } + } + } + return false; + } + + + /** + * + * 获取字符串的孕周名称 + * 如:孕41周,孕3-6周 + * @param start + * @param end + * @return + */ + public static String getCheckTimeStr(Integer start,Integer end) + { + if(start == null && end == null) + { + return ""; + } + if (start.intValue() == end.intValue()) + { + return "孕"+start.intValue()+"周"; + } + else if (start.intValue() < end.intValue()) + { + return "孕"+start.intValue()+"-"+end.intValue()+"周"; + } + return ""; + } + + + /** + * 替换名字 + * @param name + * @param repalceStr + * @return + */ + public static String replaceName(String name,String repalceStr) + { + if (StringUtils.isNotEmpty(repalceStr)) + { + return repalceStr.replace("{{姓名}}", name); + } + return repalceStr; + } + + + /** + * 替换短信中的表达式 + * @return + */ + public static String replaceEL(String name,Date checkDate,String repalceStr) + { + if (StringUtils.isNotEmpty(repalceStr)) + { + String date = DateUtil.getyyyy_MM_dd(checkDate); + return repalceStr.replace("{{姓名}}",name).replace("{{预约检查时间}}", date); + } + return repalceStr; + } + + /** + * 封装孕妇 /产妇 服务类型和服务状态条件 + * @param serviceType + * @param serviceStatus + * @param patientsQuery + * @return + */ + public static void getServicePatientQuery(Integer serviceType,Integer serviceStatus,PatientsQuery patientsQuery) + { + //所有服务类型 + if (serviceType == ServiceTypeEnums.ALL_SERVICE.getId()) + { + Integer[] status = null; + if (serviceStatus == ServiceStatusEnums.ALL_OPEN.getId()) + { + status = new Integer[]{ServiceStatusEnums.STANDARD_OPEN.getId(),ServiceStatusEnums.ADD_OPEN.getId()}; + + } + else if (serviceStatus == ServiceStatusEnums.ALL_NO_OPEN.getId()) + { + status = new Integer[]{ServiceStatusEnums.NO_OPEN.getId(),ServiceStatusEnums.UNSUBSCRIBE.getId()}; + } + else if (serviceStatus == ServiceStatusEnums.ALL_OVERDUE.getId()) + { + status = new Integer[]{ServiceStatusEnums.STANDARD_OVERDUE.getId(),ServiceStatusEnums.ADD_OVERDUE.getId()}; + } + patientsQuery.setOrServiceStatus(status); + } + //标准服务 + else if (serviceType == ServiceTypeEnums.STANDARD_SERVICE.getId()) + { + patientsQuery.setServiceType(serviceType); + if (serviceStatus != ServiceStatusEnums.STANDARD_ALL.getId()) + { + patientsQuery.setServiceStatus(serviceStatus); + } + } + //增值服务 + else if (serviceType == ServiceTypeEnums.ADD_SERVICE.getId()) + { + patientsQuery.setServiceType(serviceType); + if (serviceStatus != ServiceStatusEnums.ADD_ALL.getId()) + { + patientsQuery.setServiceStatus(serviceStatus); + } + } + } + + /** + * 返回孕周天数 + * @param lastMenses + * @return + */ + public static String getYunWeekDay(Date lastMenses) { + if (lastMenses == null) + { + return ""; + } + int day = DateUtils.daysBetween(lastMenses,new Date()); + + return day+"天"; + } + + + /** + * 发送生成的消息到消息中心中心 + * @param list + */ + public static void sendMsg(MessageListRequest list) + { + if (list != null && CollectionUtils.isNotEmpty(list.getMessages())) + { //平台ID + list.setTypeId(ProjectTypeEnums.YNXT.getId()); + if (list != null && list.getMessages() != null) + { + List msgs = list.getMessages(); + int batchSize = 100; + int end = 0; + for (int i = 0; i < msgs.size(); i += batchSize) { + end = (end + batchSize); + if (end > msgs.size()) { + end = msgs.size(); + } + System.out.println(DateUtil.getyyyy_MM_dd_hms(new Date())+"start:" + i + ",end:" + end); + List tempList = msgs.subList(i, end); + MessageListRequest sentList = new MessageListRequest(); + sentList.setMessages(tempList); + sentList.setTypeId(ProjectTypeEnums.YNXT.getId()); + SaveMessageService.saveMsgCenter(sentList); + } + } + } + } + + + /** + * 儿童服务状态和服务类型条件 + * @param serviceType + * @param serviceStatus + * @param babyModelQuery + * @return + */ + public static BabyModelQuery getServiceBabyQuery(Integer serviceType,Integer serviceStatus,BabyModelQuery babyModelQuery) + { + + //所有服务类型 + if (serviceType == ServiceTypeEnums.ALL_SERVICE.getId()) + { + Integer[] status = null; + if (serviceStatus == ServiceStatusEnums.ALL_OPEN.getId()) + { + status = new Integer[]{ServiceStatusEnums.STANDARD_OPEN.getId(),ServiceStatusEnums.ADD_OPEN.getId()}; + + } + else if (serviceStatus == ServiceStatusEnums.ALL_NO_OPEN.getId()) + { + status = new Integer[]{ServiceStatusEnums.NO_OPEN.getId(),ServiceStatusEnums.UNSUBSCRIBE.getId()}; + } + else if (serviceStatus == ServiceStatusEnums.ALL_OVERDUE.getId()) + { + status = new Integer[]{ServiceStatusEnums.STANDARD_OVERDUE.getId(),ServiceStatusEnums.ADD_OVERDUE.getId()}; + } + babyModelQuery.setOrServiceStatus(status); + } + //标准服务 + else if (serviceType == ServiceTypeEnums.STANDARD_SERVICE.getId()) + { + babyModelQuery.setServiceType(serviceType); + if (serviceStatus != ServiceStatusEnums.STANDARD_ALL.getId()) + { + babyModelQuery.setServiceStatus(serviceStatus); + } + } + //增值服务 + else if (serviceType == ServiceTypeEnums.ADD_SERVICE.getId()) + { + babyModelQuery.setServiceType(serviceType); + if (serviceStatus != ServiceStatusEnums.ADD_ALL.getId()) + { + babyModelQuery.setServiceStatus(serviceStatus); + } + } + return babyModelQuery; + } + + /** + *返回两个时间的月龄 + * @param birth + * @param currentDate + * @return + */ + public static String getMonthYear(Date birth, Date currentDate) { + int month = DateUtils.daysBetween(birth,currentDate); + return month+"月龄"; + } +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java new file mode 100644 index 0000000..c28217a --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java @@ -0,0 +1,504 @@ +package com.lyms.platform.msg.worker; + +import com.lyms.platform.beans.MessageListRequest; +import com.lyms.platform.beans.MessageRequest; +import com.lyms.platform.biz.service.BabyBookbuildingService; +import com.lyms.platform.biz.service.SmsConfigService; +import com.lyms.platform.biz.service.SmsTemplateService; +import com.lyms.platform.biz.service.YunBookbuildingService; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.common.utils.StringUtils; +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.pojo.*; +import com.lyms.platform.query.*; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; + +/** + * Created by lqy on 2017-07-18. + */ +public class TempleteMsgGenerateWorker implements Runnable { + + + private static final Logger logger = LoggerFactory.getLogger(TempleteMsgGenerateWorker.class); + private static final Logger errorLogger = LoggerFactory.getLogger("Error"); + + + + private List configs; + + private IBaseService baseService; + + private YunBookbuildingService yunBookbuildingService; + + + private SmsTemplateService smsTemplateService; + + private BabyBookbuildingService babyBookbuildingService; + + public TempleteMsgGenerateWorker(List configs, IBaseService baseService, + YunBookbuildingService yunBookbuildingService, + SmsTemplateService smsTemplateService, + BabyBookbuildingService babyBookbuildingService) + { + this.configs = configs; + this.baseService = baseService; + this.yunBookbuildingService = yunBookbuildingService; + this.smsTemplateService = smsTemplateService; + this.babyBookbuildingService = babyBookbuildingService; + } + + @Override + public void run() { + + if (CollectionUtils.isNotEmpty(configs)) + { + //查询短信模板 + SmsTemplateQuery tempQuery = new SmsTemplateQuery(); + tempQuery.setYn(YnEnums.YES.getId()); + //启用状态 0未启用 1启用 + tempQuery.setStatus(1); + + for(SmsConfigModel config : configs) { + + String hospitalId = config.getHospitalId(); + if (StringUtils.isEmpty(hospitalId)) + { + continue; + } + + //判断医院是否运行 + if (!baseService.isRunning(hospitalId)) + { + continue; + } + + //查询到当前配置的医院的所有模板 可用状态的模板 + tempQuery.setHospitalId(hospitalId); + List templates = smsTemplateService.querySmsTemplates(tempQuery); + + if (!CollectionUtils.isNotEmpty(templates)) + { + continue; + } + try { + //循环每一个模板,根据模板条件查询到用户 发送短信 + for (SmsTemplateModel template : templates) + { + + //模板属于的医院id + String tempHid = template.getHospitalId(); + //服务对象1孕妇 2儿童 3产妇 + Integer serviceObj = template.getServiceObj(); + + //消息类型 + Integer smsType = template.getSmsType(); + + if (tempHid == null || serviceObj == null) { + continue; + } + + //false 表示该服务没有启动 smsType为消息类型 + boolean isStart = HelperUtils.isStartTemplate(config, smsType); + if (!isStart) { + continue; + } + + //孕妇 + if (serviceObj == ServiceObjEnums.YUNOBJ.getId()) + { + generateYunTempMsg(template,config); + } + //儿童 + else if (serviceObj == ServiceObjEnums.BABYOBJ.getId()) + { + generateChildTempMsg(template, config); + } + //产妇 + else if (serviceObj == ServiceObjEnums.CHANOBJ.getId()) + { + + } + } + } + catch (Exception e) + { + ExceptionUtils.catchException(e,"gen templete error."); + continue; + } + } + } + } + + /** + * 生成儿童模板消息 + * @param template + * @param config + */ + private void generateChildTempMsg(SmsTemplateModel template, SmsConfigModel config) { + + //模板属于的医院id + String tempHid = template.getHospitalId(); + + //服务类型 + Integer serviceType = template.getServiceType(); + //服务状态 + Integer serviceStatus = template.getServiceStatus(); + //消息类型 + Integer smsType = template.getSmsType(); + + //发送时间 SendTimeEnums DT(0,"当天"),QYT(1,"前一天"),QLT(2,"前两天"),QST(3,"前三天"); + Integer sendTimeType = template.getSendTimeType(); + + + BabyModelQuery babyModelQuery = new BabyModelQuery(); + babyModelQuery.setYn(YnEnums.YES.getId()); + babyModelQuery.setHospitalId(template.getHospitalId()); + List buildType = new ArrayList(); + buildType.add(1); + buildType.add(2); + babyModelQuery.setSmsBuildTypeList(buildType); + babyModelQuery = HelperUtils.getServiceBabyQuery(serviceType, serviceStatus, babyModelQuery); + + //发送短信集合 + MessageListRequest list = new MessageListRequest(); + List messages = new ArrayList<>(); + + //儿保预约提醒 + if (smsType == SmsServiceEnums.EBYYTX.getId()) + { + Date yuYueDate = DateUtils.addDay(new Date(), sendTimeType); + yuYueDate = DateUtils.formatDate(yuYueDate,DateUtils.Y_M_D); + List checkModels = babyBookbuildingService.queryBabyYuYueRecord(yuYueDate, tempHid); + if (CollectionUtils.isNotEmpty(checkModels)) + { + for(BabyCheckModel checkModel : checkModels) + { + + BabyModelQuery query = new BabyModelQuery(); + query.setYn(YnEnums.YES.getId()); + query.setId(checkModel.getId()); //这里返回的id就是buildId + + //查询符合条件儿童 + List babyModels = babyBookbuildingService.queryBabyBuildByCond(query); + if (CollectionUtils.isNotEmpty(babyModels)) + { + for (BabyModel model : babyModels) + { + //短信前缀 + String messagePrefix = baseService.getSmsPrefix(config, model.getBuildDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + messageContent = HelperUtils.replaceEL(model.getName(), yuYueDate, messageContent); + + String itemName = "儿童保健"; + String nextCheckTime = DateUtils.getDateStr(yuYueDate,DateUtils.Y_M_D); + + MessageRequest request = HelperUtils.getMessageRequest(messageContent, model.getMphone(), + ServiceObjEnums.BABYOBJ.getId(), template.getSmsType(), + model.getHospitalId(), template.getId(), model.getId(), itemName, nextCheckTime, "", WxTempleteIdEnums.ER_TONG_TI_XING.getId()); + + messages.add(request); + } + } + } + } + } + //儿保程序提醒 + else if (smsType == SmsServiceEnums.EBCXTX.getId()) + { + + //发送频次 + Integer sendFreq = template.getSendFrequency(); + + if (sendFreq == SendFrequencyEnums.ONCE.getId()) + { + + //GL(0,"公历","0,1,2","0,1,2,3"),NL(1,"农历","0,1,2","0,1,2,3"),TSRQ(2,"特殊日期","0,2","1,2,3"),SLRQ(3,"生理日期","0","1,2,3"); + Integer sendDateType = template.getSendDateType(); + if (sendDateType == SendDateEnums.SLRQ.getId()) + { + //时间类型 + Integer specialDateType = template.getSpecialDateType(); + + //儿童天数 + if (specialDateType == SpecialDateEnums.ETTS.getId()) + { + Integer start = template.getStart(); + Integer end = template.getEnd(); + + if (start != null && end != null) + { + Date startDate = DateUtils.getNewDate(new Date(),-end, "天", sendTimeType); + Date endDate = DateUtils.getNewDate(new Date(),-start,"天",sendTimeType); + startDate = DateUtils.formatDate(startDate, DateUtils.Y_M_D); + endDate = DateUtils.formatDate(endDate,DateUtils.Y_M_D); + babyModelQuery.setBirthStart(startDate); + babyModelQuery.setBirthEnd(endDate); + + List babyModels = babyBookbuildingService.queryBabyBuildByCond(babyModelQuery); + if (CollectionUtils.isNotEmpty(babyModels)) + { + for (BabyModel model : babyModels) + { + if (model.getBirth() == null) + { + continue; + } + + //如果有有效的预约短信就不发送 儿保检查提醒 + if (queryBabyOrder(model.getBirth(), start, tempHid, sendTimeType, model.getId(),"天")) + { + continue; + } + + //短信前缀 + String messagePrefix = baseService.getSmsPrefix(config, model.getBuildDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + messageContent = HelperUtils.replaceName(model.getName(), messageContent); + + String itemName = "儿童保健"; + String nextCheckTime = HelperUtils.getMonthYear(model.getBirth(), new Date()); + + MessageRequest request = HelperUtils.getMessageRequest(messageContent, model.getMphone(), + ServiceObjEnums.BABYOBJ.getId(), template.getSmsType(), + model.getHospitalId(), template.getId(), model.getId(), itemName, nextCheckTime, "", WxTempleteIdEnums.ER_TONG_TI_XING.getId()); + + messages.add(request); + + } + } + } + } + //儿童月龄 + else if (specialDateType == SpecialDateEnums.ETYL.getId()) + { + Integer start = template.getStart(); + Integer end = template.getEnd(); + + if (start != null && end != null) + { + Date startDate = DateUtils.getNewDate(new Date(),-end-1, "月", sendTimeType); + Date endDate = DateUtils.getNewDate(new Date(),-start,"月",sendTimeType); + startDate = DateUtils.formatDate(startDate, DateUtils.Y_M_D); + endDate = DateUtils.formatDate(endDate,DateUtils.Y_M_D); + babyModelQuery.setBirthStart(startDate); + babyModelQuery.setBirthEnd(endDate); + + List babyModels = babyBookbuildingService.queryBabyBuildByCond(babyModelQuery); + if (CollectionUtils.isNotEmpty(babyModels)) + { + for (BabyModel model : babyModels) + { + if (model.getBirth() == null) + { + continue; + } + + //如果有有效的预约短信就不发送 儿保检查提醒 + if (queryBabyOrder(model.getBirth(), start, tempHid, sendTimeType, model.getId(),"月")) + { + continue; + } + + //短信前缀 + String messagePrefix = baseService.getSmsPrefix(config, model.getBuildDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + messageContent = HelperUtils.replaceName(model.getName(), messageContent); + String itemName = "儿童保健"; + String nextCheckTime = HelperUtils.getMonthYear(model.getBirth(), new Date()); + + MessageRequest request = HelperUtils.getMessageRequest(messageContent, model.getMphone(), + ServiceObjEnums.BABYOBJ.getId(), template.getSmsType(), + model.getHospitalId(), template.getId(), model.getId(), itemName, nextCheckTime, "", WxTempleteIdEnums.ER_TONG_TI_XING.getId()); + messages.add(request); + + } + } + } + } + } + } + } + + list.setMessages(messages); + HelperUtils.sendMsg(list); + + } + + + /** + * 查询儿童有效的下次预约时间 + * @param birth + * @param start + * @param tempHid + * @param sendTimeType + * @param pid + * @param type + * @return + */ + private boolean queryBabyOrder(Date birth, Integer start, String tempHid, Integer sendTimeType, String pid,String type) { + Set idset = new HashSet<>(); + Date startDate = DateUtils.getNewDate(birth, start, type, -sendTimeType); + if (startDate != null) + { + //把时间格式化成 yyyy_MM_dd 的日期 + startDate = DateUtils.formatDate(startDate,DateUtils.Y_M_D); + } + List models = babyBookbuildingService.queryBabyOrder(startDate, tempHid, pid); + if (CollectionUtils.isNotEmpty(models)) + { + for (BabyCheckModel model : models) + { + idset.add(model.getId()); + } + } + return idset.size() > 0; + } + + /** + * 生成孕妇推送模板消息 + * @param template 模板信息 + */ + private void generateYunTempMsg(SmsTemplateModel template,SmsConfigModel config) + { + + //模板属于的医院id + String tempHid = template.getHospitalId(); + + //服务类型 + Integer serviceType = template.getServiceType(); + //服务状态 + Integer serviceStatus = template.getServiceStatus(); + //消息类型 + Integer smsType = template.getSmsType(); + + //发送时间 SendTimeEnums DT(0,"当天"),QYT(1,"前一天"),QLT(2,"前两天"),QST(3,"前三天"); + Integer sendTimeType = template.getSendTimeType(); + + + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(template.getHospitalId()); + + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientsQuery.setSmsBuildTypeList(buildType); + + //1孕妇 + patientsQuery.setType(1); + // 0未终止妊娠 1终止妊娠 + patientsQuery.setDueStatus(0); + + HelperUtils.getServicePatientQuery(serviceType, serviceStatus, patientsQuery); + + //发送短信集合 + MessageListRequest list = new MessageListRequest(); + List messages = new ArrayList<>(); + + //孕妇预约短信 + if (smsType == SmsServiceEnums.CJYYTX.getId()) + { + Date yuYueDate = DateUtils.addDay(new Date(),sendTimeType); + //得到孕妇的id + Set idset = baseService.getYuYuePatient(sendTimeType, tempHid); + + for (String id : idset) + { + //查询符合条件的产妇 + patientsQuery.setId(id); + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + if (CollectionUtils.isNotEmpty(patients)) + { + for (Patients pat : patients) + { + //短信前缀 + String messagePrefix = baseService.getSmsPrefix(config, pat.getBookbuildingDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + messageContent = HelperUtils.replaceEL(pat.getUsername(), yuYueDate, messageContent); + + String checkTimeStr = DateUtils.getDateStr(yuYueDate,DateUtils.Y_M_D); + String checkName = "产前检查"; + + MessageRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(), + ServiceObjEnums.YUNOBJ.getId(), template.getSmsType(), + pat.getHospitalId(), template.getId(), pat.getId(), checkName, checkTimeStr, "", WxTempleteIdEnums.CHAN_JIAN_TI_XING.getId()); + + messages.add(request); + } + } + } + } + //产检程序提醒 + else if (smsType == SmsServiceEnums.CJCXTX.getId()) + { + //发送频次 + Integer sendFreq = template.getSendFrequency(); + + if (sendFreq == SendFrequencyEnums.ONCE.getId()) + { + //GL(0,"公历","0,1,2","0,1,2,3"),NL(1,"农历","0,1,2","0,1,2,3"),TSRQ(2,"特殊日期","0,2","1,2,3"),SLRQ(3,"生理日期","0","1,2,3"); + Integer sendDateType = template.getSendDateType(); + if (sendDateType == SendDateEnums.SLRQ.getId()) + { + //孕妇为孕周 + Integer specialDateType = template.getSpecialDateType(); + + if (specialDateType == SpecialDateEnums.YZ.getId()) + { + Integer start = template.getStart(); + Integer end = template.getEnd(); + + if (start != null && end != null) + { + Date startDate = DateUtils.getNewDate(new Date(),-end-1,"周",sendTimeType+1); + Date endDate = DateUtils.getNewDate(new Date(),-start,"周",sendTimeType); + startDate = DateUtils.formatDate(startDate,DateUtils.Y_M_D); + endDate = DateUtils.formatDate(endDate,DateUtils.Y_M_D); + patientsQuery.setLastMensesStart(startDate); + patientsQuery.setLastMensesEnd(endDate); + //查询符合条件的孕妇 + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + if (CollectionUtils.isNotEmpty(patients)) + { + for (Patients pat : patients) + { + + //如果有有效的预约短信就不发送产检程序提醒 + boolean isOrder = baseService.queryYunIsOrder(sendTimeType, tempHid, pat.getId(), pat.getLastMenses(), start); + if (isOrder) + { + continue; + } + //短信前缀 + String messagePrefix = baseService.getSmsPrefix(config, pat.getBookbuildingDoctor()); + String messageContent = "【"+messagePrefix+"】"+template.getContent(); + + String checkWeekName = HelperUtils.getCheckTimeStr(start,end); + String checkName = "产前检查"; + + messageContent = HelperUtils.replaceName(pat.getUsername(), messageContent); + + MessageRequest request = HelperUtils.getMessageRequest( messageContent,pat.getPhone(), + ServiceObjEnums.YUNOBJ.getId(), template.getSmsType(), + pat.getHospitalId(),template.getId(),pat.getId(),checkName,checkWeekName,"",WxTempleteIdEnums.CHAN_JIAN_TI_XING.getId()); + messages.add(request); + } + } + } + } + } + } + } + + list.setMessages(messages); + HelperUtils.sendMsg(list); + } +} diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/YunAmsMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/YunAmsMsgGenerateWorker.java new file mode 100644 index 0000000..edcf229 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/YunAmsMsgGenerateWorker.java @@ -0,0 +1,281 @@ +package com.lyms.platform.msg.worker; + +import com.lyms.platform.beans.MessageListRequest; +import com.lyms.platform.beans.MessageRequest; +import com.lyms.platform.biz.service.HighRiskService; +import com.lyms.platform.biz.service.YunBookbuildingService; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.msg.model.MessageContent; +import com.lyms.platform.msg.remote.AmsMessageService; +import com.lyms.platform.msg.remote.SaveMessageService; +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.pojo.HighRiskSmsModel; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.SmsConfigModel; +import com.lyms.platform.query.HighRiskSmsQuery; +import com.lyms.platform.query.PatientsQuery; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * Created by lqy on 2017-07-18. + */ +public class YunAmsMsgGenerateWorker implements Runnable { + + + private static final Logger logger = LoggerFactory.getLogger(YunAmsMsgGenerateWorker.class); + + + + private List configs; + + private IBaseService baseService; + + private YunBookbuildingService yunBookbuildingService; + + private String week; + + private HighRiskService highRiskService; + + public YunAmsMsgGenerateWorker(List configs,IBaseService baseService, + YunBookbuildingService yunBookbuildingService, + String week,HighRiskService highRiskService) + { + this.configs = configs; + this.baseService = baseService; + this.yunBookbuildingService = yunBookbuildingService; + this.week = week; + this.highRiskService = highRiskService; + } + + @Override + public void run() { + if (CollectionUtils.isNotEmpty(configs)) + { + for(SmsConfigModel config : configs) { + + String hospitalId = config.getHospitalId(); + if (StringUtils.isEmpty(hospitalId)) { + continue; + } + + //每周几发送的指导短信 + String timeStr = config.getGuideTime(); + if (StringUtils.isEmpty(timeStr)) { + continue; + } + + List guideTimes = JsonUtil.toList(timeStr, String.class); + if (guideTimes == null || guideTimes.size() != 2) { + continue; + } + + //判断医院是否运行 + if (!baseService.isRunning(hospitalId)) { + continue; + } + + String strService = config.getSmsService(); + + //判断消息服务是否启动 + boolean isStart = baseService.isStartService(SmsServiceEnums.YBZD.getId(), strService); + if (!isStart) { + continue; + } + + // 查询模板短信 从ams平台配置的短信通过医院ID + Map> amsSmses = AmsMessageService + .getMessageTemplateMap(hospitalId, + AmsServiceTypeEnum.YUN_GUIDE); + + + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(hospitalId); + + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientsQuery.setSmsBuildTypeList(buildType); + //1孕妇 3 产妇 + patientsQuery.setType(1); + //分娩状态 + patientsQuery.setDueStatus(0); + + //末次月经必须大于当前时间减去42周视为未分娩孕妇 + Date lastMenses = DateUtil.getNewDate(-42, "周", 0); + Date lastMensesMax = DateUtil.parseYMD(DateUtil.getyyyy_MM_dd(lastMenses)); + patientsQuery.setLastMensesStart(lastMensesMax); + //健康指导短信 只能是类型为 增值服务 开通状态 才发送 + patientsQuery.setServiceType(ServiceTypeEnums.ADD_SERVICE.getId()); + patientsQuery.setServiceStatus(ServiceStatusEnums.ADD_OPEN.getId()); + + //查询符合条件的孕妇 + List patients = yunBookbuildingService.queryPregnantWithQuery(patientsQuery); + + + if (CollectionUtils.isNotEmpty(patients)) + { + + //发送短信集合 + MessageListRequest list = new MessageListRequest(); + List messages = new ArrayList<>(); + for (Patients pat : patients) + { + if (pat == null || pat.getLastMenses() == null) + { + continue; + } + + String messagePrefix = config.getHospitalPrefix(); + //前缀类型 0医院前缀 1科室前缀 + if (config.getPrefixType() == 1) + { + String res = baseService.getDeptPrefix(pat.getBookbuildingDoctor(), config.getDeptPrefix()); + messagePrefix = res == "" ? messagePrefix : res; + } + + int weekNum = HelperUtils.getWeekNum(guideTimes,week); + + boolean isRisk = false; + if (weekNum > WeekEnums.getIdByName(week)) + { + /** + * 高危短信 + * + */ + //获取最后一次高危因素 + List risks = baseService.findLastRisk(pat.getPid()); + if (baseService.isOnlyHealthy(risks)) + { + List highRiskContents = new ArrayList(); + //把多种高危因素的短信合并在一起 + for (Object obj : risks) + { + Map riskMap = (Map)obj; + String name = String.valueOf(riskMap.get("name")); + List messageContents = amsSmses.get(name); + if (CollectionUtils.isNotEmpty(messageContents)) + { + for (MessageContent message : messageContents) + { + message.setHighRiskId(String.valueOf(riskMap.get("id"))); + } + highRiskContents.addAll(messageContents); + } + + } + if (CollectionUtils.isNotEmpty(highRiskContents)) + { + //可以发送的高危短信 + List sendMessageContents = new ArrayList<>(); + + for (MessageContent message : highRiskContents) + { + + HighRiskSmsQuery hquery = new HighRiskSmsQuery(); + hquery.setMessageId(message.getId()); + hquery.setHighId(message.getHighRiskId()); + hquery.setPhone(pat.getPhone()); + hquery.setPatientId(pat.getId()); + + int count = highRiskService.queryHighRiskCount(hquery); + if (count > 0) + { + continue; + } + //把未发送过的添加到集合中 + sendMessageContents.add(message); + } + + if (CollectionUtils.isNotEmpty(sendMessageContents)) { + + //根据集合的长度随机一个数字 + int index = (int)(Math.random()*sendMessageContents.size()); + + //从集合中随机取一个发送 + MessageContent message =sendMessageContents.get(index); + String weekDay = HelperUtils.getYunWeekDay(pat.getLastMenses()); + String title = ""; + if (message.getTags() != null && message.getTags().size() > 0) + { + title = message.getTags().get(0).getTagName(); + } + + String messageContent = "【"+messagePrefix+"】" + message.getContent(); + MessageRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(), + ServiceObjEnums.YUNOBJ.getId(), SmsServiceEnums.YBZD.getId(), + pat.getHospitalId(), message.getId(), pat.getId(), weekDay, title, "", WxTempleteIdEnums.CHAN_JIAN_TI_XING.getId()); + + messages.add(request); + + HighRiskSmsModel highRiskSmsModel = new HighRiskSmsModel(); + highRiskSmsModel.setPatientId(pat.getId()); + highRiskSmsModel.setHighId(message.getHighRiskId()); + highRiskSmsModel.setPhone(pat.getPhone()); + highRiskSmsModel.setHospitalId(pat.getHospitalId()); + highRiskSmsModel.setCreated(new Date()); + highRiskSmsModel.setModified(new Date()); + highRiskSmsModel.setMessageId(message.getId()); + highRiskService.addHighRiskSmsModel(highRiskSmsModel); + + isRisk = true; + + } + } + + } + } + //没有高危短信就发送指导短信 + if (!isRisk) + { + //计算出孕周 孕周计算方式 当前时间减去末次月经 除以7 的到孕周 + int weeks = DateUtils.daysBetween(pat.getLastMenses(),new Date()) / 7; + String yunWeek = String.valueOf(weeks); + //得到符合当前孕周的短信条数 + List messageContents = amsSmses.get(yunWeek); + + if (CollectionUtils.isNotEmpty(messageContents)) + { + for(MessageContent message : messageContents) + { + //判断当前短信是否已经发送 通过短信ID和孕妇ID + boolean isExist = SaveMessageService.isExistMsg(pat.getId(), message.getId()); + if (isExist) + { + continue; + } + + String weekDay = HelperUtils.getYunWeekDay(pat.getLastMenses()); + String title = SmsServiceEnums.getSmsServiceById(SmsServiceEnums.YBZD.getId()); + + String messageContent = "【"+messagePrefix+"】" + message.getContent(); + MessageRequest request = HelperUtils.getMessageRequest(messageContent, pat.getPhone(), + ServiceObjEnums.YUNOBJ.getId(), SmsServiceEnums.YBZD.getId(), + pat.getHospitalId(), message.getId(), pat.getId(), weekDay, title, "", WxTempleteIdEnums.CHAN_JIAN_TI_XING.getId()); + + messages.add(request); + break; + } + } + } + } + + list.setMessages(messages); + HelperUtils.sendMsg(list); + } + } + } + } +} diff --git a/platform-msg-generate/src/main/resources/config.properties b/platform-msg-generate/src/main/resources/config.properties new file mode 100644 index 0000000..7f76be2 --- /dev/null +++ b/platform-msg-generate/src/main/resources/config.properties @@ -0,0 +1,13 @@ +#短信中心url +#center_base_url=http://sms.healthbaby.com.cn/v1/ +center_base_url=http://sms.api.stage.platform.healthbaby.com.cn/v1/ + +#区域平台访问短信中心的token +center_token=e0c56363-00d6-42ee-bbe0-23c553583062 + +#AMS地址 线上:http://data.api.healthbaby.com.cn/v1/messages 测试:http://data.api.stage.healthbaby.com.cn/v1/messages +#演示地址 https://stage-rp-data-api.healthbaby.com.cn/v1/messages +ams_sms=http://data.api.healthbaby.com.cn/v1/messages + +#短信当天发送时间 如16:00 +send_time=16:00 diff --git a/platform-msg-generate/src/main/resources/database.properties b/platform-msg-generate/src/main/resources/database.properties new file mode 100644 index 0000000..7fef9c4 --- /dev/null +++ b/platform-msg-generate/src/main/resources/database.properties @@ -0,0 +1,26 @@ +maindata.driver=com.mysql.jdbc.Driver +maindata.jdbcurl=${mysql.jdbcurl} +maindata.username=${mysql.db.name} +maindata.password=${mysql.db.password} + + +mongo.db.host=${mongo.db.host} +mongo.db.port=${mongo.db.port} +mongo.db.dbname=${mongo.db.dbname} +mongo.db.username=${mongo.db.username} +mongo.db.password=${mongo.db.password} + +mongo.connectionsPerHost=8 +mongo.threadsAllowedToBlockForConnectionMultiplier=4 +mongo.connectTimeout=1000 +mongo.maxWaitTime=1500 +mongo.autoConnectRetry=true +mongo.socketKeepAlive=true +mongo.socketTimeout=1500 +mongo.slaveOk=true + +sequence.create.size=3000 +sequence.index=20000000 +sequence.min.size=300 +sequence.schedule.expression=0 */1 * * * ? + diff --git a/platform-msg-generate/src/main/resources/log4j_config.xml b/platform-msg-generate/src/main/resources/log4j_config.xml new file mode 100644 index 0000000..fd157ea --- /dev/null +++ b/platform-msg-generate/src/main/resources/log4j_config.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/platform-msg-generate/src/main/resources/message.properties b/platform-msg-generate/src/main/resources/message.properties new file mode 100644 index 0000000..0e05383 --- /dev/null +++ b/platform-msg-generate/src/main/resources/message.properties @@ -0,0 +1,4 @@ +page.min=\u5206\u9875\u6570\u636E\u4E0D\u80FD\u5C0F\u4E8E1. +page.max=\u6BCF\u9875\u663E\u793A\u7684\u6570\u636E\u4E0D\u80FD\u5927\u4E8E40\u6761 +page.not.null=page\u4E0D\u80FD\u4E3A\u7A7A +page.limit.not.null=limit\u4E0D\u80FD\u4E3A\u7A7A diff --git a/platform-msg-generate/src/main/resources/spring/applicationContext-dal.xml b/platform-msg-generate/src/main/resources/spring/applicationContext-dal.xml new file mode 100644 index 0000000..e391322 --- /dev/null +++ b/platform-msg-generate/src/main/resources/spring/applicationContext-dal.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + classpath*:mainOrm/master/*.xml + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform-msg-generate/src/main/resources/spring/applicationContext-mvc.xml b/platform-msg-generate/src/main/resources/spring/applicationContext-mvc.xml new file mode 100644 index 0000000..11a652b --- /dev/null +++ b/platform-msg-generate/src/main/resources/spring/applicationContext-mvc.xml @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/platform-msg-generate/src/main/resources/spring/applicationContext-quartz.xml b/platform-msg-generate/src/main/resources/spring/applicationContext-quartz.xml new file mode 100644 index 0000000..b38dc27 --- /dev/null +++ b/platform-msg-generate/src/main/resources/spring/applicationContext-quartz.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform-msg-generate/src/main/resources/spring/applicationContext.xml b/platform-msg-generate/src/main/resources/spring/applicationContext.xml new file mode 100644 index 0000000..a5fe03a --- /dev/null +++ b/platform-msg-generate/src/main/resources/spring/applicationContext.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + classpath:database.properties + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform-msg-generate/src/main/resources/spring/applicationContext_biz_patient.xml b/platform-msg-generate/src/main/resources/spring/applicationContext_biz_patient.xml new file mode 100644 index 0000000..0a7c2ff --- /dev/null +++ b/platform-msg-generate/src/main/resources/spring/applicationContext_biz_patient.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + dalInterceptor + + + + + + + + + mysqlDalInterceptor + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform-msg-generate/src/main/resources/spring/spring-mongodb.xml b/platform-msg-generate/src/main/resources/spring/spring-mongodb.xml new file mode 100644 index 0000000..62d7a67 --- /dev/null +++ b/platform-msg-generate/src/main/resources/spring/spring-mongodb.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform-operate-api/pom.xml b/platform-operate-api/pom.xml index 91707ef..f6cbee7 100644 --- a/platform-operate-api/pom.xml +++ b/platform-operate-api/pom.xml @@ -24,7 +24,6 @@ com.aspose aspose-words - 15.8.0 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java index f22a5e9..d92ff00 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java @@ -24,141 +24,6 @@ public class AreaCountController extends BaseController { @Autowired private AreaCountFacade areaCountFacade; - /** - * 产检券使用统计 - * @param request - * @param time 时间范围 - * @param hospitalId 医院id - * @param provinceId 省份 - * @param cityId 城市 - * @param areaId 区域 - * @param objType 1,孕妇建档,2,孕妇产检,3,产妇建档,4,产妇分娩,5,产妇出院小结,6,产妇产后复查,7,儿童建档,8,儿童保健 - * @return - */ - @RequestMapping(method = RequestMethod.GET,value = "/getTicketUsedCount") - @ResponseBody - @TokenRequired - public BaseResponse getTicketUsedCount(HttpServletRequest request, - @RequestParam(required = false) String time, - @RequestParam(required = false)String hospitalId, - @RequestParam(required = false)String provinceId, - @RequestParam(required = false)String cityId, - @RequestParam(required = false)String areaId, - @RequestParam(required = true)Integer objType) { - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return areaCountFacade.getTicketUsedCount(time,hospitalId,provinceId,cityId,areaId, loginState.getId(),objType); - } - - /** - * 建档明细 - * @param request - * @param time - * @param hospitalId - * @param provinceId - * @param cityId - * @param areaId - * @return - */ - @RequestMapping(method = RequestMethod.GET,value = "/getBuildDetail") - @ResponseBody - @TokenRequired - public BaseResponse getBuildDetail(HttpServletRequest request, - @RequestParam(required = false) String time, - @RequestParam(required = false)String hospitalId, - @RequestParam(required = false)String provinceId, - @RequestParam(required = false)String cityId, - @RequestParam(required = false)String areaId, - @RequestParam(required = false) Integer page, - @RequestParam(required = false) Integer limit) { - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return areaCountFacade.getBuildDetail(time, hospitalId, provinceId, cityId, areaId, page, limit, loginState.getId()); - } - - /** - *建档明细 导出 - * @param request - * @param time - * @param hospitalId - * @param provinceId - * @param cityId - * @param areaId - * @return - */ - @RequestMapping(method = RequestMethod.GET,value = "/getBuildDetailExport") - @ResponseBody - @TokenRequired - public void getBuildDetailExport(HttpServletRequest request,HttpServletResponse httpServletResponse, - @RequestParam(required = false) String time, - @RequestParam(required = false)String hospitalId, - @RequestParam(required = false)String provinceId, - @RequestParam(required = false)String cityId, - @RequestParam(required = false)String areaId) { - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - areaCountFacade.getBuildDetailExport(time, hospitalId, provinceId, cityId, areaId, loginState.getId(),httpServletResponse); - } - - - /** - * 产检券使用明细 - * @param request - * @param time - * @param hospitalId - * @param provinceId - * @param cityId - * @param areaId - * @param page - * @param limit - * @param ticketOrder 1,'首次产检券',2,'孕中期一券',3,'孕中期二券',4,'孕晚期一券',5,'孕晚期二券' - * @return - */ - @RequestMapping(method = RequestMethod.GET,value = "/getTicketUseDetail") - @ResponseBody - @TokenRequired - public BaseResponse getTicketUseDetail(HttpServletRequest request, - @RequestParam(required = false) String time, - @RequestParam(required = false)String hospitalId, - @RequestParam(required = false)String provinceId, - @RequestParam(required = false)String cityId, - @RequestParam(required = false)String areaId, - @RequestParam(required = false) Integer page, - @RequestParam(required = false) Integer limit, - @RequestParam(required = false) Integer ticketOrder) { - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return areaCountFacade.getTicketUseDetail(time, hospitalId, provinceId, cityId, areaId,page,limit ,loginState.getId(),ticketOrder); - } - - - /** - * 产检券使用明细 导出 - * @param request - * @param time - * @param hospitalId - * @param provinceId - * @param cityId - * @param areaId - * @param page - * @param limit - * @param ticketOrder 1,'首次产检券',2,'孕中期一券',3,'孕中期二券',4,'孕晚期一券',5,'孕晚期二券' - * @return - */ - @RequestMapping(method = RequestMethod.GET,value = "/getTicketUseDetailExport") - @ResponseBody - @TokenRequired - public void getTicketUseDetailExport(HttpServletRequest request,HttpServletResponse httpServletResponse, - @RequestParam(required = false) String time, - @RequestParam(required = false)String hospitalId, - @RequestParam(required = false)String provinceId, - @RequestParam(required = false)String cityId, - @RequestParam(required = false)String areaId, - @RequestParam(required = false) Integer page, - @RequestParam(required = false) Integer limit, - @RequestParam(required = false) Integer ticketOrder) { - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - areaCountFacade.getTicketUseDetailExport(time, hospitalId, provinceId, cityId, - areaId,loginState.getId(),httpServletResponse,ticketOrder); - } - - /**=============================================***/ @@ -222,18 +87,18 @@ public class AreaCountController extends BaseController { * @param areaId * @return */ - @RequestMapping(method = RequestMethod.GET,value = "/getCheckPointBuildDetailExport") - @ResponseBody - @TokenRequired - public void getCheckPointBuildDetailExport(HttpServletRequest request,HttpServletResponse httpServletResponse, - @RequestParam(required = false) String time, - @RequestParam(required = false)String hospitalId, - @RequestParam(required = false)String provinceId, - @RequestParam(required = false)String cityId, - @RequestParam(required = false)String areaId) { - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - areaCountFacade.getCheckPointBuildDetailExport(time, hospitalId, provinceId, cityId, areaId, loginState.getId(),httpServletResponse); - } +// @RequestMapping(method = RequestMethod.GET,value = "/getCheckPointBuildDetailExport") +// @ResponseBody +// @TokenRequired +// public void getCheckPointBuildDetailExport(HttpServletRequest request,HttpServletResponse httpServletResponse, +// @RequestParam(required = false) String time, +// @RequestParam(required = false)String hospitalId, +// @RequestParam(required = false)String provinceId, +// @RequestParam(required = false)String cityId, +// @RequestParam(required = false)String areaId) { +// LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); +// areaCountFacade.getCheckPointBuildDetailExport(time, hospitalId, provinceId, cityId, areaId, loginState.getId(),httpServletResponse); +// } /** @@ -284,22 +149,22 @@ public class AreaCountController extends BaseController { * @param nodeName 0:0~12 孕周 1: 16~20 孕周 2: 21~24 孕周 3:28~36 孕周 4:37~ 分娩 * @return */ - @RequestMapping(method = RequestMethod.GET,value = "/getCheckDetailExport") - @ResponseBody - @TokenRequired - public void getCheckDetailExport(HttpServletRequest request,HttpServletResponse httpServletResponse, - @RequestParam(required = false) String time, - @RequestParam(required = false)String hospitalId, - @RequestParam(required = false)String provinceId, - @RequestParam(required = false)String cityId, - @RequestParam(required = false)String areaId, - @RequestParam(required = false) Integer page, - @RequestParam(required = false) Integer limit, - @RequestParam(required = false)Integer nodeType, - @RequestParam(required = false)Integer nodeName) { - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - areaCountFacade.getCheckDetailExport(nodeType,time, hospitalId, provinceId, cityId, areaId, loginState.getId(), - httpServletResponse,nodeName); - } +// @RequestMapping(method = RequestMethod.GET,value = "/getCheckDetailExport") +// @ResponseBody +// @TokenRequired +// public void getCheckDetailExport(HttpServletRequest request,HttpServletResponse httpServletResponse, +// @RequestParam(required = false) String time, +// @RequestParam(required = false)String hospitalId, +// @RequestParam(required = false)String provinceId, +// @RequestParam(required = false)String cityId, +// @RequestParam(required = false)String areaId, +// @RequestParam(required = false) Integer page, +// @RequestParam(required = false) Integer limit, +// @RequestParam(required = false)Integer nodeType, +// @RequestParam(required = false)Integer nodeName) { +// LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); +// areaCountFacade.getCheckDetailExport(nodeType,time, hospitalId, provinceId, cityId, areaId, loginState.getId(), +// httpServletResponse,nodeName); +// } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java index cc7ed80..22fec9f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java @@ -1,34 +1,45 @@ package com.lyms.platform.operate.web.facade; +import com.lyms.platform.biz.service.AntenatalExaminationService; import com.lyms.platform.biz.service.BasicConfigService; import com.lyms.platform.biz.service.DataPermissionService; -import com.lyms.platform.common.base.PageInfo; +import com.lyms.platform.biz.service.PatientsService; import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.*; -import com.lyms.platform.operate.web.result.TicketListResult; -import com.lyms.platform.operate.web.utils.JdbcUtil; -import com.lyms.platform.operate.web.utils.ResponseUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.utils.CommonsHelper; +import com.lyms.platform.operate.web.utils.FunvCommonUtil; +import com.lyms.platform.operate.web.worker.AntExRecordWorker; +import com.lyms.platform.operate.web.worker.CheckPointCountWorker; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.model.OrganizationQuery; +import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.service.CouponService; import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.AntExChuModel; import com.lyms.platform.pojo.BasicConfig; import com.lyms.platform.pojo.DataPermissionsModel; -import com.lyms.platform.query.BasicConfigQuery; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.query.AntExChuQuery; +import com.lyms.platform.query.AntExQuery; import com.lyms.platform.query.DataPermissionsModelQuery; +import com.lyms.platform.query.PatientsQuery; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.*; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.OutputStream; import java.util.*; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; /** @@ -39,12 +50,6 @@ import java.util.*; @Component public class AreaCountFacade { - private static final String DRIVER; - private static final String JDBC; - private static final String NAME; - private static final String PWD; - - @Autowired private AutoMatchFacade autoMatchFacade; @@ -59,2085 +64,530 @@ public class AreaCountFacade { private BasicConfigService basicConfigService; @Autowired - private CouponService couponService; - - private static Map node_map = new HashMap<>(); - //0:0~12 孕周 1: 16~20 孕周 2: 21~24 孕周 3:28~36 孕周 4:37~ 分娩 - //--0~12 孕周,16~20 孕周,21~24 孕周,28~36 孕周,37~ 分娩 - static { - node_map.put(0,"0~12 孕周"); - node_map.put(1,"16~20 孕周"); - node_map.put(2,"21~24 孕周"); - node_map.put(3,"28~36 孕周"); - node_map.put(4, "37~ 分娩"); + private PatientsService patientsService; - String area_count_url = PropertiesUtils.getPropertyValue("area_count_url"); - DRIVER = "oracle.jdbc.driver.OracleDriver"; - JDBC = "jdbc:oracle:thin:@"+area_count_url+":orcl"; - NAME = "LYMS_ODS"; - PWD = "Welcome1"; + @Autowired + private UsersService usersService; - } - private static String getNodeName(Integer nodeName) - { - if (nodeName == null) - { - return ""; - } - return node_map.get(nodeName); - } + @Autowired + private AntenatalExaminationService antenatalExaminationService; - public BaseResponse getTicketUsedCount(String time, String hospitalId, - String provinceId,String cityId, - String areaId, Integer userId,Integer type) { + @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; - StringBuilder sql = new StringBuilder(); - sql.append(" select * from ( "); - sql.append(" SELECT A.PROVINCE_ID, A.PROVINCE, A.CITY_ID, "); - sql.append(" A.CITY, A.AREA_COUNTY_ID,"); - sql.append(" A.AREA_COUNTY,A.HOSPITAL_NO,"); - sql.append(" A.HOSPITAL_NAME, A.YCY_STSTEM_ID,"); - sql.append(" BB.OBJ_ID,BB.OBJ_NAME,"); - sql.append(" BB.FF_RS,BB.FF_JS,"); - sql.append(" DD.SY_RS, DD.SY_JS "); - sql.append(" FROM ODS_D_HOSPITAL A LEFT JOIN ( "); - sql.append(" SELECT B.HOSPITAL_NO, C.OBJ_ID, "); - sql.append(" C.OBJ_NAME, COUNT(DISTINCT B.RECORD_ID) AS FF_RS, "); - sql.append(" COUNT(B.TICKETS_NO) AS FF_JS "); - sql.append(" FROM ODS_F_EXAMINE_TICKET B "); - sql.append(" INNER JOIN ODS_F_TICKET_TEMPLATE C ON B.TEMPLATE_ID=C.TEMPLATE_ID "); - sql.append(" INNER JOIN ODS_F_GRAVIDA_RECORD Z ON B.RECORD_ID=Z.RECORD_ID "); - sql.append(" WHERE B.TICKETS_STATUS_ID IN (1,2,3) "); - sql.append(" AND Z.CREATE_TYPE_ID <> 2 "); - sql.append(" AND Z.CREATE_CATEGORY_ID <>2 "); - if (StringUtils.isNotEmpty(time)) - { - String start = time.split(" - ")[0]; - String end = time.split(" - ")[1]; - sql.append(" AND B.ISSUE_DATE BETWEEN TO_DATE('"+start+"','yyyy-mm-dd') AND TO_DATE('"+end+"','yyyy-mm-dd') "); + /** + * 获取当前用户拥有的医院权限列表并和查询条件取交集 + * + * @param userId + * @param provinceId + * @param cityId + * @param areaId + * @return + */ + private List getCurrentUserHospPermissions(Integer userId, String provinceId, String cityId, String areaId) { + List hospitalList = new ArrayList<>(); +// String hospital = autoMatchFacade.getHospitalId(userId); +// if (null != hospital) { +// hospitalList.add(hospital); +// } + + //权限所有的医院 + List allHospitalList = new ArrayList<>(); + DataPermissionsModelQuery dataPermissionsModelQuery = new DataPermissionsModelQuery(); + dataPermissionsModelQuery.setUserId(userId); + List permissionsModels = dataPermissionService.queryPermission(dataPermissionsModelQuery); + if (CollectionUtils.isNotEmpty(permissionsModels)) { + Set set = permissionsModels.get(0).getData().keySet(); + Iterator it = set.iterator(); + while (it.hasNext()) { + String id = it.next(); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(id) && !hospitalList.contains(id)) { + allHospitalList.add(id); + } + } } - sql.append(" AND C.OBJ_ID = "+ type); - sql.append(" GROUP BY B.HOSPITAL_NO, C.OBJ_ID, C.OBJ_NAME) "); - sql.append(" BB ON A.HOSPITAL_NO =BB.HOSPITAL_NO LEFT JOIN ( "); - sql.append(" SELECT D.HOSPITAL_NO, E.OBJ_ID, "); - sql.append(" E.OBJ_NAME, COUNT(DISTINCT D.RECORD_ID) AS SY_RS, COUNT(D.TICKETS_NO) AS SY_JS "); - sql.append(" FROM ODS_F_EXAMINE_TICKET D "); - sql.append(" INNER JOIN ODS_F_TICKET_TEMPLATE E ON D.TEMPLATE_ID=E.TEMPLATE_ID "); - sql.append(" INNER JOIN ODS_F_GRAVIDA_RECORD Z ON D.RECORD_ID=Z.RECORD_ID "); - sql.append(" WHERE D.TICKETS_STATUS_ID=2 "); - sql.append(" AND Z.CREATE_TYPE_ID <> 2 "); - sql.append(" AND Z.CREATE_CATEGORY_ID <>2 "); - - if (StringUtils.isNotEmpty(time)) - { - String start = time.split(" - ")[0]; - String end = time.split(" - ")[1]; - sql.append(" AND D.USE_DATE BETWEEN TO_DATE('"+start+"','yyyy-mm-dd') AND TO_DATE('"+end+"','yyyy-mm-dd') "); - } + //条件查询到的医院 + List orgHospitalList = new ArrayList<>(); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(provinceId)) { + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setYn(YnEnums.YES.getId()); - sql.append(" AND E.OBJ_ID = "+type); - sql.append(" GROUP BY D.HOSPITAL_NO, E.OBJ_ID, E.OBJ_NAME) DD ON A.HOSPITAL_NO =DD.HOSPITAL_NO WHERE 1 = 1"); - if (StringUtils.isNotEmpty(provinceId)) - { - sql.append(" AND A.PROVINCE_ID= '"+provinceId+"' "); + organizationQuery.setProvinceId(provinceId); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(cityId)) { + organizationQuery.setCityId(cityId); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(areaId)) { + organizationQuery.setAreaId(areaId); + } + } + List organizations = organizationService.queryOrganization(organizationQuery); + if (CollectionUtils.isNotEmpty(organizations)) { + for (Organization org : organizations) { + if (null != org.getId()) { + orgHospitalList.add(org.getId() + ""); + } + } + } + } else { + //没有查询条件 就返回所有的权限 并且加上自己的医院id + allHospitalList.addAll(hospitalList); + return allHospitalList; } - - if (StringUtils.isNotEmpty(cityId)) - { - sql.append(" AND A.CITY_ID= '" +cityId+"' "); + //条件查询未空就返回条件查询的结果 + if (CollectionUtils.isEmpty(orgHospitalList)) { + return orgHospitalList; } - if (StringUtils.isNotEmpty(areaId)) - { - sql.append(" AND A.AREA_COUNTY_ID= '" +areaId+"' "); - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql.append(" AND A.YCY_STSTEM_ID= '" +hospitalId+"' "); - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql.append(" AND A.YCY_STSTEM_ID IN " +hospitals +" "); + //取所拥有的医院和查询条件查询的医院的交集 + if (CollectionUtils.isNotEmpty(allHospitalList)) { + for (String hp : allHospitalList) { + if (orgHospitalList.contains(hp)) { + hospitalList.add(hp); + } } - } - sql.append(" ) TEMP WHERE "); - sql.append(" (OBJ_ID IS NOT NULL OR OBJ_NAME IS NOT NULL OR FF_RS IS NOT NULL OR FF_JS IS NOT NULL OR SY_RS IS NOT NULL OR SY_JS IS NOT NULL) "); - - System.out.println("sql========" + sql.toString()); - List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql.toString()); - - - + return hospitalList; + } - StringBuilder itemSql = new StringBuilder(); - itemSql.append(" SELECT D.HOSPITAL_NO, E.OBJ_ID, "); - itemSql.append(" E.OBJ_NAME, D.TICKETS_ORDER, "); - itemSql.append(" E.TEMPLATE_NAME, COUNT(D.TICKETS_NO) AS SY_RC "); - itemSql.append(" FROM ODS_D_HOSPITAL A "); - itemSql.append(" LEFT JOIN ODS_F_EXAMINE_TICKET D ON A.HOSPITAL_NO =D.HOSPITAL_NO "); - itemSql.append(" INNER JOIN ODS_F_TICKET_TEMPLATE E ON D.TEMPLATE_ID=E.TEMPLATE_ID "); - itemSql.append(" INNER JOIN ODS_F_GRAVIDA_RECORD Z ON D.RECORD_ID=Z.RECORD_ID "); - itemSql.append(" WHERE D.TICKETS_STATUS_ID=2 "); - itemSql.append(" AND Z.CREATE_TYPE_ID <> 2 "); - itemSql.append(" AND Z.CREATE_CATEGORY_ID <>2 "); + /** + * 产检节点统计 + * + * @param pointType + * @param time + * @param hospitalId + * @param provinceId + * @param cityId + * @param areaId + * @param userId + * @return + */ + public BaseResponse getCheckPointCount(Integer pointType, String time, String hospitalId, String provinceId, String cityId, String areaId, Integer userId) { + List hospitalIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(hospitalId)) { + hospitalIds.add(hospitalId); + } else { + //获取用户拥有的权限医院和条件筛选的医院交集 + hospitalIds = getCurrentUserHospPermissions(userId, provinceId, cityId, areaId); + } + Date startTime = null; + Date endTime = null; if (StringUtils.isNotEmpty(time)) { - String start = time.split(" - ")[0]; - String end = time.split(" - ")[1]; - sql.append(" AND D.USE_DATE BETWEEN TO_DATE('"+start+"','yyyy-mm-dd') AND TO_DATE('"+end+"','yyyy-mm-dd') "); + String[] times = time.split(" - "); + if (times != null && times.length == 2) + { + startTime = DateUtil.parseYMD(times[0]); + endTime = DateUtil.parseYMD(times[1]); + } } - itemSql.append(" AND E.OBJ_ID= "+type); - itemSql.append(" AND A.YCY_STSTEM_ID='"+hospitalId+"'"); - itemSql.append(" GROUP BY D.HOSPITAL_NO, E.OBJ_ID, "); - itemSql.append(" E.OBJ_NAME, D.TICKETS_ORDER, E.TEMPLATE_NAME "); - itemSql.append(" order by D.TICKETS_ORDER ASC "); - - - - // //产检使用图形统计 List chartData = new ArrayList<>(); - List ffJsData = new ArrayList<>(); - List syJsData = new ArrayList<>(); - - List> ticketItemList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, itemSql.toString()); + List num12 = new ArrayList<>(); + List num20 = new ArrayList<>(); + List num24 = new ArrayList<>(); + List num36 = new ArrayList<>(); + List num40 = new ArrayList<>(); - Map params = new HashMap<>(); - params.put("hospitalId", hospitalId); - params.put("type", type); - List> items = couponService.queryCouponItemsByType(params); - if (CollectionUtils.isNotEmpty(items)) { - for (int i = 0; i < items.size(); i++) { - items.get(i).put("key", "USE_NUM" + (i + 1)); + List> checkPointtList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(hospitalIds)) { + int batchSize = 2; + int end = 0; + List listFuture = new ArrayList<>(); + for (int i = 0; i < hospitalIds.size(); i += batchSize) { + end = (end + batchSize); + if (end > hospitalIds.size()) { + end = hospitalIds.size(); + } + CheckPointCountWorker checkPointCountWorker = new CheckPointCountWorker( patientsService, + antenatalExaminationService, + organizationService, + basicConfigService, + hospitalIds.subList(i,end), + startTime, + endTime, + pointType); + listFuture.add(commonThreadPool.submit(checkPointCountWorker)); } - } - - - if (CollectionUtils.isNotEmpty(ticketList)) - { - for(Map map : ticketList) - { - chartData.add(map.get("HOSPITAL_NAME").toString()); - ffJsData.add(map.get("FF_JS") == null ? 0 : Integer.parseInt(map.get("FF_JS").toString())); - syJsData.add(map.get("SY_JS") == null ? 0 : Integer.parseInt(map.get("SY_JS").toString())); - if (CollectionUtils.isNotEmpty(items)) - { - for(int i = 0 ; i < items.size() ; i++) - { - Map item = items.get(i); - String name = item.get("name").toString(); - Integer num = 0; - if (CollectionUtils.isNotEmpty(ticketItemList)) - { - for(Map itemMap : ticketItemList) - { - String ticketName = itemMap.get("TEMPLATE_NAME").toString(); - if (StringUtils.isNotEmpty(name) && name.equals(ticketName)) - { - num = itemMap.get("SY_RC") == null ? 0 : Integer.parseInt(itemMap.get("SY_RC").toString()); - break; - } - } - } - map.put("USE_NUM"+(i+1),num); - } + for (Future f : listFuture) { + try { + checkPointtList.addAll((List) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "checkPointCountWorker get result future error."); } } } - - - -// String sql1 = "SELECT " + -// " AAA.PROVINCE," + -// " AAA.PROVINCE_ID," + -// " AAA.CITY," + -// " AAA.CITY_ID," + -// " AAA.AREA_COUNTY," + -// " AAA.AREA_COUNTY_ID ," + -// " AAA.HOSPITAL_NAME," + -// " AAA.HOSPITAL_NO," + -// " AAA.YCY_STSTEM_ID, " + -// " (CASE WHEN FF_RS IS NULL THEN 0 ELSE FF_RS END) AS FF_RS," + -// " (CASE WHEN FF_JS IS NULL THEN 0 ELSE FF_JS END) AS FF_JS," + -// " (CASE WHEN SY_RS IS NULL THEN 0 ELSE SY_RS END) AS SY_RS," + -// " (CASE WHEN SY_JS IS NULL THEN 0 ELSE SY_JS END) AS SY_JS," + -// " (CASE WHEN TICKET_1 IS NULL THEN 0 ELSE TICKET_1 END) AS TICKET_1, " + -// " (CASE WHEN TICKET_2 IS NULL THEN 0 ELSE TICKET_2 END) AS TICKET_2, " + -// " (CASE WHEN TICKET_3 IS NULL THEN 0 ELSE TICKET_3 END) AS TICKET_3, " + -// " (CASE WHEN TICKET_4 IS NULL THEN 0 ELSE TICKET_4 END) AS TICKET_4, " + -// " (CASE WHEN TICKET_5 IS NULL THEN 0 ELSE TICKET_5 END) AS TICKET_5" + -// " FROM ODS_D_HOSPITAL AAA LEFT JOIN (SELECT A.PROVINCE_ID, " + -// " A.PROVINCE, " + -// " A.CITY_ID, " + -// " A.CITY, " + -// " A.AREA_COUNTY_ID, " + -// " A.AREA_COUNTY, " + -// " A.HOSPITAL_NO, " + -// " A.HOSPITAL_NAME, " + -// " A.YCY_STSTEM_ID, " + -// " COUNT(DISTINCT B.RECORD_ID) AS FF_RS, " + -// " COUNT(B.TICKETS_NO) AS FF_JS " + -// " FROM ODS_D_HOSPITAL A " + -// " LEFT JOIN ODS_F_EXAMINE_TICKET B ON A.HOSPITAL_NO=B.HOSPITAL_NO" + -// " INNER JOIN ODS_F_GRAVIDA_RECORD C ON B.RECORD_ID=C.RECORD_ID " + -// " WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; -// String issueSql = ""; -// if (StringUtils.isNotEmpty(time)) -// { -// String start = time.split(" - ")[0]; -// String end = time.split(" - ")[1]; -// issueSql+=" AND B.ISSUE_DATE BETWEEN TO_DATE('"+start+"','yyyy-mm-dd') AND TO_DATE('"+end+"','yyyy-mm-dd')"; -// } -// if (StringUtils.isNotEmpty(provinceId)) -// { -// issueSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; -// } -// -// if (StringUtils.isNotEmpty(cityId)) -// { -// issueSql+= " AND A.CITY_ID= '" +cityId+"'"; -// } -// -// if (StringUtils.isNotEmpty(areaId)) -// { -// issueSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; -// } -// if (StringUtils.isNotEmpty(hospitalId)) -// { -// issueSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; -// } -// else -// { -// String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); -// if (StringUtils.isNotEmpty(hospitals)) -// { -// issueSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; -// } -// -// } -// sql1+=issueSql; -// sql1+=" GROUP BY A.PROVINCE_ID, " + -// " A.PROVINCE, " + -// " A.CITY_ID, " + -// " A.CITY, " + -// " A.AREA_COUNTY_ID, " + -// " A.AREA_COUNTY, " + -// " A.HOSPITAL_NO, " + -// " A.HOSPITAL_NAME, " + -// " A.YCY_STSTEM_ID) AA ON AAA.HOSPITAL_NO=AA.HOSPITAL_NO" + -// " LEFT JOIN ( " + -// " SELECT A.PROVINCE_ID, " + -// " A.PROVINCE, " + -// " A.CITY_ID, " + -// " A.CITY, " + -// " A.AREA_COUNTY_ID, " + -// " A.AREA_COUNTY, " + -// " A.HOSPITAL_NO, " + -// " A.HOSPITAL_NAME, " + -// " A.YCY_STSTEM_ID, " + -// " COUNT(DISTINCT CC.RECORD_ID) AS SY_RS, " + -// " COUNT(CC.TICKETS_NO) AS SY_JS, " + -// " SUM((CASE WHEN CC.TICKETS_ORDER=1 THEN 1 END)) AS TICKET_1, " + -// " SUM((CASE WHEN CC.TICKETS_ORDER=2 THEN 1 END)) AS TICKET_2, " + -// " SUM((CASE WHEN CC.TICKETS_ORDER=3 THEN 1 END)) AS TICKET_3, " + -// " SUM((CASE WHEN CC.TICKETS_ORDER=4 THEN 1 END)) AS TICKET_4, " + -// " SUM((CASE WHEN CC.TICKETS_ORDER=5 THEN 1 END)) AS TICKET_5 " + -// " FROM ODS_F_EXAMINE_HISTORY_ASC CC " + -// " LEFT JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO " + -// " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID " + -// " WHERE CC.TICKETS_NO IS NOT NULL AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; -// String examineSql = ""; -// if (StringUtils.isNotEmpty(time)) -// { -// String start = time.split(" - ")[0]; -// String end = time.split(" - ")[1]; -// examineSql+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+start+"','yyyy-mm-dd') AND TO_DATE('"+end+"','yyyy-mm-dd')"; -// } -// if (StringUtils.isNotEmpty(provinceId)) -// { -// examineSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; -// } -// -// if (StringUtils.isNotEmpty(cityId)) -// { -// examineSql+= " AND A.CITY_ID= '" +cityId+"'"; -// } -// -// if (StringUtils.isNotEmpty(areaId)) -// { -// examineSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; -// } -// if (StringUtils.isNotEmpty(hospitalId)) -// { -// examineSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; -// } -// else -// { -// String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); -// if (StringUtils.isNotEmpty(hospitals)) -// { -// examineSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; -// } -// -// } -// sql1+=examineSql; -// sql1+= " GROUP BY A.PROVINCE_ID, " + -// " A.PROVINCE, " + -// " A.CITY_ID, " + -// " A.CITY, " + -// " A.AREA_COUNTY_ID, " + -// " A.AREA_COUNTY, " + -// " A.HOSPITAL_NO, " + -// " A.HOSPITAL_NAME, " + -// " A.YCY_STSTEM_ID " + -// " ) BB ON AAA.HOSPITAL_NO=BB.HOSPITAL_NO "; -// -// sql1+= getTicketSql(time,hospitalId,provinceId,cityId,areaId,userId); -// -//// if (StringUtils.isNotEmpty(hospitalId)) -//// { -//// sql1+=" WHERE AAA.YCY_STSTEM_ID= '" +hospitalId+"'"; -//// } -//// else -//// { -//// String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); -//// if (StringUtils.isNotEmpty(hospitals)) -//// { -//// sql1+=" WHERE AAA.YCY_STSTEM_ID IN " +hospitals; -//// } -//// -//// } -// sql1+=" ORDER BY 1,2,3"; -// -// String groupBySql = ""; -// String groupBySql1 = ""; -// -// if (StringUtils.isNotEmpty(hospitalId) || StringUtils.isNotEmpty(areaId)) -// { -// groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE," + -// " AAA.CITY||';'||AAA.CITY_ID AS CITY," + -// " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID AS AREA_COUNTY," + -// " AAA.HOSPITAL_NAME||';'||AAA.YCY_STSTEM_ID AS HNAME," ; -// groupBySql1="AAA.PROVINCE||';'||AAA.PROVINCE_ID, " + -// " AAA.CITY||';'||AAA.CITY_ID, " + -// " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID, " + -// " AAA.HOSPITAL_NAME||';'||AAA.YCY_STSTEM_ID"; -// } -// -// else if (StringUtils.isNotEmpty(cityId)) -// { -// groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE," + -// " AAA.CITY||';'||AAA.CITY_ID AS CITY," + -// " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID AS AREA_COUNTY," ; -// groupBySql1=" AAA.PROVINCE||';'||AAA.PROVINCE_ID, " + -// " AAA.CITY||';'||AAA.CITY_ID, " + -// " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID"; -// } -// else if (StringUtils.isNotEmpty(provinceId)) -// { -// groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE," + -// " AAA.CITY||';'||AAA.CITY_ID AS CITY,"; -// groupBySql1="AAA.PROVINCE||';'||AAA.PROVINCE_ID, " + -// " AAA.CITY||';'||AAA.CITY_ID "; -// } -// else -// { -// groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE,"; -// groupBySql1="AAA.PROVINCE||';'||AAA.PROVINCE_ID"; -// } -// -// -// String countSql = "SELECT "+groupBySql+ -// " SUM(AA.FF_JS) AS FF_JS,\n" + -// " SUM(SY_JS) AS SY_JS\n" + -// " FROM ODS_D_HOSPITAL AAA \n" + -// " LEFT JOIN (\n" + -// " SELECT A.PROVINCE_ID,\n" + -// " A.PROVINCE,\n" + -// " A.CITY_ID,\n" + -// " A.CITY,\n" + -// " A.AREA_COUNTY_ID,\n" + -// " A.AREA_COUNTY,\n" + -// " A.HOSPITAL_NO,\n" + -// " A.HOSPITAL_NAME,\n" + -// " A.YCY_STSTEM_ID,\n" + -// " COUNT(DISTINCT B.RECORD_ID) AS FF_RS,\n" + -// " COUNT(B.TICKETS_NO) AS FF_JS\n" + -// " FROM ODS_D_HOSPITAL A\n" + -// " LEFT JOIN ODS_F_EXAMINE_TICKET B ON A.HOSPITAL_NO=B.HOSPITAL_NO " + -// " INNER JOIN ODS_F_GRAVIDA_RECORD C ON B.RECORD_ID=C.RECORD_ID " + -// " WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 " ; -// countSql+=issueSql; -// countSql+=" GROUP BY A.PROVINCE_ID,\n" + -// " A.PROVINCE,\n" + -// " A.CITY_ID,\n" + -// " A.CITY,\n" + -// " A.AREA_COUNTY_ID,\n" + -// " A.AREA_COUNTY,\n" + -// " A.HOSPITAL_NO,\n" + -// " A.HOSPITAL_NAME,\n" + -// " A.YCY_STSTEM_ID) AA ON AAA.HOSPITAL_NO=AA.HOSPITAL_NO\n" + -// " LEFT JOIN (\n" + -// " SELECT A.PROVINCE_ID,\n" + -// " A.PROVINCE,\n" + -// " A.CITY_ID,\n" + -// " A.CITY,\n" + -// " A.AREA_COUNTY_ID,\n" + -// " A.AREA_COUNTY,\n" + -// " A.HOSPITAL_NO,\n" + -// " A.HOSPITAL_NAME,\n" + -// " A.YCY_STSTEM_ID,\n" + -// " COUNT(DISTINCT CC.RECORD_ID) AS SY_RS,\n" + -// " COUNT(CC.TICKETS_NO) AS SY_JS\n" + -// " FROM ODS_F_EXAMINE_HISTORY_ASC CC\n" + -// " LEFT JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID" + -// " WHERE CC.TICKETS_NO IS NOT NULL AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 " ; -// countSql+=examineSql; -// countSql+=" GROUP BY A.PROVINCE_ID,\n" + -// " A.PROVINCE,\n" + -// " A.CITY_ID,\n" + -// " A.CITY,\n" + -// " A.AREA_COUNTY_ID,\n" + -// " A.AREA_COUNTY,\n" + -// " A.HOSPITAL_NO,\n" + -// " A.HOSPITAL_NAME,\n" + -// " A.YCY_STSTEM_ID\n" + -// " ) BB ON AAA.HOSPITAL_NO=BB.HOSPITAL_NO " ; -// -// countSql+= getTicketSql(time,hospitalId,provinceId,cityId,areaId,userId); -// -//// if (StringUtils.isNotEmpty(hospitalId)) -//// { -//// countSql+=" WHERE AAA.YCY_STSTEM_ID= '" +hospitalId+"'"; -//// } -//// else -//// { -//// String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); -//// if (StringUtils.isNotEmpty(hospitals)) -//// { -//// countSql+=" WHERE AAA.YCY_STSTEM_ID IN " +hospitals; -//// } -//// -//// } -// countSql+=" GROUP BY ROLLUP("+groupBySql1+") ORDER BY 1,2,3"; -// -// System.out.println("basesql===="+sql1); -// System.out.println("countSql====" + countSql); -// -// //产检使用图形统计 -// List chartData = new ArrayList<>(); -// List ffJsData = new ArrayList<>(); -// List syJsData = new ArrayList<>(); -// List> ticketCount = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, countSql); -// if (CollectionUtils.isNotEmpty(ticketCount)) -// { -// -// for(Map map : ticketCount) -// { -// -// if (StringUtils.isNotEmpty(hospitalId) || StringUtils.isNotEmpty(areaId)) -// { -// if (map.get("HNAME") == null) -// { -// continue; -// } -// chartData.add(spitValue(map.get("HNAME"))); -// } -// else if (StringUtils.isNotEmpty(cityId)) -// { -// if (map.get("AREA_COUNTY") == null) -// { -// continue; -// } -// chartData.add(spitValue(map.get("AREA_COUNTY"))); -// } -// else if (StringUtils.isNotEmpty(provinceId)) -// { -// if (map.get("CITY") == null) -// { -// continue; -// } -// chartData.add(spitValue(map.get("CITY"))); -// } -// else -// { -// if (map.get("PROVINCE") == null) -// { -// continue; -// } -// chartData.add(spitValue(map.get("PROVINCE"))); -// } -// ffJsData.add(getInteger(map.get("FF_JS"))); -// syJsData.add(getInteger(map.get("SY_JS"))); -// } -// } -// -// //产检使用表格统计 -// List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql1); -// Map data = new HashMap<>(); -// data.put("list",ticketList); -// data.put("chartData",chartData); -// data.put("ffJsData",ffJsData); -// data.put("syJsData",syJsData); - - Map data = new HashMap<>(); - data.put("ticketList",ticketList); - data.put("TITLES",items); - data.put("chartData",chartData); - data.put("ffJsData",ffJsData); - data.put("syJsData",syJsData); - return new BaseObjectResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(data); - } - - - public BaseListResponse getBuildDetail(String time, String hospitalId, String provinceId, String cityId, String areaId, Integer page,Integer limit,Integer userId) { - - int start = 0; - int end = 0; - if (page != null && limit != null) { - start = (page - 1) * limit + 1; - end = page * limit; - } - - String sqlCount = "SELECT COUNT(C.NAME) AS BUILDCOUNT"+ - " FROM ODS_F_GRAVIDA_RECORD C " + - " INNER JOIN (SELECT DISTINCT B.RECORD_ID,B.ISSUE_DATE" + - " FROM ODS_D_HOSPITAL A " + - " LEFT JOIN ODS_F_EXAMINE_TICKET B ON A.HOSPITAL_NO=B.HOSPITAL_NO" + - " WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; - - String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT AA.ISSUE_DATE, " + - " C.NAME, " + - " C.CREATE_WEEKS, " + - " C.CREATE_WEEKS_DAY, " + - " DECODE(C.CREATE_WEEKS_DAY,0,'孕'||C.CREATE_WEEKS||'周','孕'||C.CREATE_WEEKS||'周+'||C.CREATE_WEEKS_DAY||'天') AS YZ_NAME, " + - " C.HOSPITAL_NAME, " + - " C.DOCTOR_NAME, " + - " C.HOME_ADDR, " + - " D.PROVINCE||D.CITY||D.AREA_COUNTY AS HJ_ADDR," + - " C.TEL_NO " + - " FROM ODS_F_GRAVIDA_RECORD C " + - " INNER JOIN (SELECT DISTINCT B.RECORD_ID,B.ISSUE_DATE" + - " FROM ODS_D_HOSPITAL A " + - " LEFT JOIN ODS_F_EXAMINE_TICKET B ON A.HOSPITAL_NO=B.HOSPITAL_NO" + - " WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND B.ISSUE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - sqlCount+=" AND B.ISSUE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - sqlCount += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - sqlCount+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - sqlCount+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - sqlCount+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - - - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - sqlCount+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - sql+=" ) AA ON C.RECORD_ID=AA.RECORD_ID " + - " LEFT JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID ORDER BY AA.ISSUE_DATE,C.NAME DESC ) A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; - sqlCount+=" ) AA ON C.RECORD_ID=AA.RECORD_ID " + - " LEFT JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID ORDER BY AA.ISSUE_DATE,C.NAME DESC"; - - System.out.println("sql========="+sql); - System.out.println("sqlCount===="+sql); - List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); - int count = 0; - Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, sqlCount); - if (totalCountObj != null) - { - count = Integer.valueOf(totalCountObj.toString()); - } - - PageInfo pageInfo = new PageInfo(page, 0, count, limit); - return new BaseListResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(ticketList).setPageInfo(pageInfo); - } - - public BaseResponse getTicketUseDetail(String time, String hospitalId, String provinceId, - String cityId, String areaId, Integer page, Integer limit, Integer userId,Integer ticketOrder) { - - - - int start = 0; - int end = 0; - if (page != null && limit != null) { - start = (page - 1) * limit + 1; - end = page * limit; - } - - String sqlCount = "SELECT COUNT(CC.NAME) AS USETICKETCOUNT"+ - " FROM ODS_F_EXAMINE_HISTORY_ASC CC " + - " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO " + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID " + - " INNER JOIN ODS_F_EXAMINE_TICKET D ON CC.TICKETS_NO=D.TICKETS_NO " + - " WHERE CC.TICKETS_NO IS NOT NULL AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; - - String pageSql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ("; - - String sql = " SELECT CC.EXAMINE_DATE, " + - " CC.NAME," + - " CC.NOW_WEEKS, " + - " CC.NOW_WEEKS_DAY, " + - " DECODE(CC.NOW_WEEKS_DAY,0,'孕'||CC.NOW_WEEKS||'周','孕'||CC.NOW_WEEKS||'周+'||CC.NOW_WEEKS_DAY||'天') AS YZ_NAME, " + - " CC.EXAMINE_HISTORY_NUM, " + - " DECODE(CC.TICKETS_ORDER,1,'首次产检券',2,'孕中期一券',3,'孕中期二券',4,'孕晚期一券',5,'孕晚期二券') AS TICKETS_ORDER, " + - " CC.TICKETS_NO, " + - " CC.HOSPITAL_NAME, " + - " CC.DOCTOR_NAME, " + - " D.HOSPITAL_NAME AS FF_HOSPITAL_NAME, " + - " B.TEL_NO " + - " FROM ODS_F_EXAMINE_HISTORY_ASC CC " + - " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO " + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID " + - " INNER JOIN ODS_F_EXAMINE_TICKET D ON CC.TICKETS_NO=D.TICKETS_NO " + - " WHERE CC.TICKETS_NO IS NOT NULL AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; - if (ticketOrder != null) - { - sql+= " AND CC.TICKETS_ORDER= "+ticketOrder; - sqlCount+= " AND CC.TICKETS_ORDER= " +ticketOrder; - } - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - sqlCount+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - sqlCount += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - sqlCount+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - sqlCount+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - sqlCount+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - - - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - sqlCount+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - pageSql+=sql; - pageSql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; - - System.out.println("pageSql===="+pageSql); - System.out.println("countSql====" + sqlCount); - List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, pageSql); - int count = 0; - Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, sqlCount); - if (totalCountObj != null) - { - count = Integer.valueOf(totalCountObj.toString()); - } - - PageInfo pageInfo = new PageInfo(page, 0, count, limit); - return new BaseListResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(ticketList).setPageInfo(pageInfo); + if (StringUtils.isNotEmpty(hospitalId) || StringUtils.isNotEmpty(areaId)) { + for (Map map : checkPointtList) { + chartData.add(map.get("HOSPITAL_NAME").toString()); + num12.add(getInteger(map.get("NUM_12"))); + num20.add(getInteger(map.get("NUM_16"))); + num24.add(getInteger(map.get("NUM_24"))); + num36.add(getInteger(map.get("NUM_36"))); + num40.add(getInteger(map.get("NUM_40"))); + } } - - /** - * 权限医院拼接成字符串 : ('aa','bb') - * @param userId - * @param provinceId - * @param cityId - * @param areaId - * @return - */ - private String getPermissionStr(Integer userId,String provinceId, String cityId, String areaId) + else if (StringUtils.isNotEmpty(cityId)) { - StringBuffer sb = new StringBuffer(); - List list = getCurrentUserHospPermissions( userId, provinceId, cityId, areaId); - if (CollectionUtils.isNotEmpty(list)) - { - sb.append("("); - for(int i = 0;i < list.size() ;i++) - { - sb.append("'"); - sb.append(list.get(i)); - if (i != list.size() - 1) - { - sb.append("',"); - } - else - { - sb.append("'"); - } - } - sb.append(")"); - return sb.toString(); - } - return null; - + getData(checkPointtList,num12,num20,num24,num36,num40,chartData,"AREA_COUNTY_ID","AREA_COUNTY"); } - - - private String getBaseconfgIdByCode(String code) - { - BasicConfigQuery query = new BasicConfigQuery(); - query.setYn(YnEnums.YES.getId()); - query.setCode(code); - List configList = basicConfigService.queryBasicConfig(query); - if (CollectionUtils.isNotEmpty(configList)) + else if (StringUtils.isNotEmpty(provinceId)) { - return configList.get(0).getId(); + getData(checkPointtList,num12,num20,num24,num36,num40,chartData,"CITY_ID","CITY"); } - return ""; - } - - - /** - * 获取当前用户拥有的医院权限列表并和查询条件取交集 - * @param userId - * @param provinceId - * @param cityId - * @param areaId - * @return - */ - private List getCurrentUserHospPermissions(Integer userId,String provinceId, String cityId, String areaId) + else { - List hospitalList = new ArrayList<>(); - String hospital = autoMatchFacade.getHospitalId(userId); - if (null != hospital) { - hospitalList.add(hospital); - } - - //权限所有的医院 - List allHospitalList = new ArrayList<>(); - DataPermissionsModelQuery dataPermissionsModelQuery = new DataPermissionsModelQuery(); - dataPermissionsModelQuery.setUserId(userId); - List permissionsModels = dataPermissionService.queryPermission(dataPermissionsModelQuery); - if (CollectionUtils.isNotEmpty(permissionsModels)) { - Set set = permissionsModels.get(0).getData().keySet(); - Iterator it = set.iterator(); - while (it.hasNext()) { - String id = it.next(); - if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(id) && !hospitalList.contains(id)) { - allHospitalList.add(id); - } - } - } -// List list = autoMatchFacade.matchAreaOrgId(userId); -// if (CollectionUtils.isNotEmpty(list)) -// { -// for(Integer id : list) -// { -// if (id != null && com.lyms.platform.common.utils.StringUtils.isNotEmpty(id.toString()) && !hospitalList.contains(id.toString())) { -// allHospitalList.add(id.toString()); -// } -// } -// } - - - //条件查询到的医院 - List orgHospitalList = new ArrayList<>(); - if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(provinceId)) { - OrganizationQuery organizationQuery = new OrganizationQuery(); - organizationQuery.setYn(YnEnums.YES.getId()); + getData(checkPointtList,num12,num20,num24,num36,num40,chartData,"PROVINCE_ID","PROVINCE"); + } - String id = getBaseconfgIdByCode(provinceId); - if (StringUtils.isNotEmpty(id)) - { - organizationQuery.setProvinceId(id); - } - if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(cityId)) { - id = getBaseconfgIdByCode(cityId); - if (StringUtils.isNotEmpty(id)) - { - organizationQuery.setCityId(id); - } - if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(areaId)) { - id = getBaseconfgIdByCode(areaId); - if (StringUtils.isNotEmpty(id)) - { - organizationQuery.setAreaId(id); - } - } - } - List organizations = organizationService.queryOrganization(organizationQuery); - if (CollectionUtils.isNotEmpty(organizations)) { - for (Organization org : organizations) { - if (null != org.getId()) { - orgHospitalList.add(org.getId() + ""); - } - } - } - } - else - { - //没有查询条件 就返回所有的权限 并且加上自己的医院id - allHospitalList.addAll(hospitalList); - return allHospitalList; - } - //条件查询未空就返回条件查询的结果 - if (CollectionUtils.isEmpty(orgHospitalList)) - { - return orgHospitalList; - } + Map data = new HashMap<>(); + data.put("list", checkPointtList); + data.put("chartData", chartData); + data.put("num12", num12); + data.put("num20", num20); + data.put("num24", num24); + data.put("num36", num36); + data.put("num40", num40); + return new BaseObjectResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(data); + } - //取所拥有的医院和查询条件查询的医院的交集 - if (CollectionUtils.isNotEmpty(allHospitalList)) - { - for(String hp : allHospitalList) - { - if (orgHospitalList.contains(hp)) - { - hospitalList.add(hp); - } - } - } - return hospitalList; -// return orgHospitalList; - } - /** - * 建档明细导出 - * @param time - * @param hospitalId - * @param provinceId - * @param cityId - * @param areaId - * @param userId - * @return - */ - public void getBuildDetailExport(String time, String hospitalId, - String provinceId, String cityId, String areaId, - Integer userId,HttpServletResponse httpServletResponse) { + private void getData(List> checkPointtList, + List num12,List num20, + List num24,List num36, + List num40,List chartData, + String idKey,String nameKey + ) + { + Map result = new LinkedHashMap<>(); + for (Map map : checkPointtList) { - String sql = " SELECT AA.ISSUE_DATE, " + - " C.NAME, " + - " C.CREATE_WEEKS, " + - " C.CREATE_WEEKS_DAY, " + - " DECODE(C.CREATE_WEEKS_DAY,0,'孕'||C.CREATE_WEEKS||'周','孕'||C.CREATE_WEEKS||'周+'||C.CREATE_WEEKS_DAY||'天') AS YZ_NAME, " + - " C.HOSPITAL_NAME, " + - " C.DOCTOR_NAME, " + - " C.HOME_ADDR, " + - " D.PROVINCE||D.CITY||D.AREA_COUNTY AS HJ_ADDR," + - " C.TEL_NO " + - " FROM ODS_F_GRAVIDA_RECORD C " + - " INNER JOIN (SELECT DISTINCT B.RECORD_ID,B.ISSUE_DATE" + - " FROM ODS_D_HOSPITAL A " + - " LEFT JOIN ODS_F_EXAMINE_TICKET B ON A.HOSPITAL_NO=B.HOSPITAL_NO" + - " WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; - if (StringUtils.isNotEmpty(time)) + String key = "num12:"+map.get(idKey).toString()+":"+map.get(nameKey).toString(); + if (result.get(key) != null) { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND B.ISSUE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; + Integer value = result.get(key); + result.put(key,value+getInteger(map.get("NUM_12"))); } - if (StringUtils.isNotEmpty(provinceId)) + else { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; + result.put(key, getInteger(map.get("NUM_12"))); } - if (StringUtils.isNotEmpty(cityId)) + String key1 = "num16:"+map.get(idKey).toString()+":"+map.get(nameKey).toString(); + if (result.get(key1) != null) { - sql+= " AND A.CITY_ID= '" +cityId+"'"; + Integer value = result.get(key1); + result.put(key1,value+getInteger(map.get("NUM_16"))); } - - if (StringUtils.isNotEmpty(areaId)) + else { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; + result.put(key1, getInteger(map.get("NUM_16"))); } - if (StringUtils.isNotEmpty(hospitalId)) + + String key2 = "num24:"+map.get(idKey).toString()+":"+map.get(nameKey).toString(); + if (result.get(key2) != null) { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; + Integer value = result.get(key2); + result.put(key2,value+getInteger(map.get("NUM_24"))); } else { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - + result.put(key2, getInteger(map.get("NUM_24"))); } - sql+=" ) AA ON C.RECORD_ID=AA.RECORD_ID LEFT JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID ORDER BY AA.ISSUE_DATE,C.NAME DESC"; - - System.out.println("sql===="+sql); - List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); - - List> results = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(ticketList)) - { - for (Map map : ticketList) - { - Map result = new HashMap<>(); - result.put("issueDate", map.get("ISSUE_DATE") == null ? "" : DateUtil.getyyyy_MM_dd((Date)map.get("ISSUE_DATE"))); //建档日期 - result.put("name", map.get("NAME")); //姓名 - result.put("buildWeek", map.get("YZ_NAME")); //建档孕周 - result.put("hospitalName", map.get("HOSPITAL_NAME")); //建档机构 - result.put("doctor",map.get("DOCTOR_NAME")); //建档医生 - result.put("homeAddr", map.get("HOME_ADDR")); //居住地 - result.put("hjAddr",map.get("HJ_ADDR")); //户籍地 - result.put("telNo",map.get("TEL_NO")); //联系电话 - results.add(result); - } - } - Map cnames = new LinkedHashMap<>(); - cnames.put("issueDate", "发放日期"); //建档日期 - cnames.put("name", "姓名"); //姓名 - cnames.put("buildWeek", "建档孕周"); //建档孕周 - cnames.put("hospitalName", "建档机构"); //建档机构 - cnames.put("doctor","建档医生"); //建档医生 - cnames.put("homeAddr","居住地"); //居住地 - cnames.put("hjAddr","户籍地"); //户籍地 - cnames.put("telNo","联系电话"); //联系电话 - ResponseUtil.responseExcel(cnames,results,httpServletResponse); - } + String key3 = "num36:"+map.get(idKey).toString()+":"+map.get(nameKey).toString(); + if (result.get(key3) != null) + { + Integer value = result.get(key3); + result.put(key3,value+getInteger(map.get("NUM_36"))); + } + else + { + result.put(key3, getInteger(map.get("NUM_36"))); + } - /** - * 产检券使用导出 - * @param time - * @param hospitalId - * @param provinceId - * @param cityId - * @param areaId - * @param userId - * @param httpServletResponse - */ - public void getTicketUseDetailExport(String time, String hospitalId, String provinceId, String cityId, - String areaId, Integer userId,HttpServletResponse httpServletResponse, - Integer ticketOrder) { - String sql = " SELECT CC.EXAMINE_DATE, " + - " CC.NAME," + - " CC.NOW_WEEKS, " + - " CC.NOW_WEEKS_DAY, " + - " DECODE(CC.NOW_WEEKS_DAY,0,'孕'||CC.NOW_WEEKS||'周','孕'||CC.NOW_WEEKS||'周+'||CC.NOW_WEEKS_DAY||'天') AS YZ_NAME, " + - " CC.EXAMINE_HISTORY_NUM, " + - " DECODE(CC.TICKETS_ORDER,1,'首次产检券',2,'孕中期一券',3,'孕中期二券',4,'孕晚期一券',5,'孕晚期二券') AS TICKETS_ORDER, " + - " CC.TICKETS_NO, " + - " CC.HOSPITAL_NAME, " + - " CC.DOCTOR_NAME, " + - " D.HOSPITAL_NAME AS FF_HOSPITAL_NAME, " + - " B.TEL_NO " + - " FROM ODS_F_EXAMINE_HISTORY_ASC CC " + - " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO " + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID " + - " INNER JOIN ODS_F_EXAMINE_TICKET D ON CC.TICKETS_NO=D.TICKETS_NO " + - " WHERE CC.TICKETS_NO IS NOT NULL AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; - if (ticketOrder != null) + String key4 = "num40:"+map.get(idKey).toString()+":"+map.get(nameKey).toString(); + if (result.get(key4) != null) { - sql+= " AND CC.TICKETS_ORDER= "+ticketOrder; + Integer value = result.get(key4); + result.put(key4,value+getInteger(map.get("NUM_40"))); } - if (StringUtils.isNotEmpty(time)) + else { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; + result.put(key4, getInteger(map.get("NUM_40"))); } - if (StringUtils.isNotEmpty(provinceId)) + } + + for(String key : result.keySet()) { + String name = key.split(":")[2]; + if (!chartData.contains(name)) { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; + chartData.add(name); } - if (StringUtils.isNotEmpty(cityId)) + if (key.contains("num12")) { - sql+= " AND A.CITY_ID= '" +cityId+"'"; + num12.add(result.get(key)); } - - if (StringUtils.isNotEmpty(areaId)) + else if (key.contains("num16")) { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; + num20.add(result.get(key)); } - if (StringUtils.isNotEmpty(hospitalId)) + else if (key.contains("num24")) { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; + num24.add(result.get(key)); } - else + else if (key.contains("num36")) { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - + num36.add(result.get(key)); } - System.out.println("sql===="+sql); - List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); - - List> results = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(ticketList)) - { - for (Map map : ticketList) - { - Map result = new HashMap<>(); - result.put("examineDate", map.get("EXAMINE_DATE") == null ? "" : DateUtil.getyyyy_MM_dd((Date)map.get("EXAMINE_DATE"))); //产检日期 - result.put("name", map.get("NAME")); //姓名 - result.put("checkWeek", map.get("YZ_NAME")); //产检孕周 - result.put("examineHistoryNum", map.get("EXAMINE_HISTORY_NUM")); //产检第次 - result.put("ticketsType",map.get("TICKETS_ORDER")); //产检券类型 - result.put("ticketsNo", map.get("TICKETS_NO")); //产检券号 - result.put("hospitalName",map.get("HOSPITAL_NAME")); //产检机构 - result.put("doctorName",map.get("DOCTOR_NAME")); //产检医生 - result.put("ffHospitalName",map.get("FF_HOSPITAL_NAME")); //产检券发放机构 - result.put("telNo",map.get("TEL_NO")); //联系电话 - results.add(result); - } - } - - Map cnames = new LinkedHashMap<>(); - cnames.put("examineDate", "产检日期"); //产检日期 - cnames.put("name", "姓名"); //姓名 - cnames.put("checkWeek","产检孕周"); //产检孕周 - cnames.put("examineHistoryNum", "产检第次"); //产检第次 - cnames.put("ticketsType","产检券类型"); //产检券类型 - cnames.put("ticketsNo", "产检券号"); //产检券号 - cnames.put("hospitalName","产检机构"); //产检机构 - cnames.put("doctorName","产检医生"); //产检医生 - cnames.put("ffHospitalName","产检券发放机构"); //产检券发放机构 - cnames.put("telNo", "联系电话"); //联系电话 - - ResponseUtil.responseExcel(cnames,results,httpServletResponse); - } - - private String getWeeks(Object week,Object day) - { - String result = "孕"; - if (week == null && day != null) - { - result += day.toString() +"天"; - return result; - } - else if (week != null && week != null) - { - result+=week.toString()+"周"; - if (!"0".equals(day.toString())) - { - result+="+"+day.toString()+"天"; - } - return result; - } - return ""; - } - - - private String spitValue(Object obj) - { - if (obj != null) - { - return obj.toString().split(";")[0]; - } - return ""; - } - - private Integer getInteger(Object obj) - { - if (obj != null) - { - return Integer.parseInt(obj.toString()); - } - return 0; - } - - public BaseResponse getCheckPointCount(Integer pointType, String time, String hospitalId, String provinceId, String cityId, String areaId, Integer userId) { - - - String groupBySql = ""; - String groupBySql1 = ""; - - if (StringUtils.isNotEmpty(hospitalId) || StringUtils.isNotEmpty(areaId)) - { - groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE," + - " AAA.CITY||';'||AAA.CITY_ID AS CITY," + - " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID AS AREA_COUNTY," + - " AAA.HOSPITAL_NAME||';'||AAA.YCY_STSTEM_ID AS HNAME," ; - groupBySql1="AAA.PROVINCE||';'||AAA.PROVINCE_ID, " + - " AAA.CITY||';'||AAA.CITY_ID, " + - " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID, " + - " AAA.HOSPITAL_NAME||';'||AAA.YCY_STSTEM_ID"; - } - - else if (StringUtils.isNotEmpty(cityId)) - { - groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE," + - " AAA.CITY||';'||AAA.CITY_ID AS CITY," + - " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID AS AREA_COUNTY," ; - groupBySql1="AAA.PROVINCE||';'||AAA.PROVINCE_ID, " + - " AAA.CITY||';'||AAA.CITY_ID, " + - " AAA.AREA_COUNTY||';'||AAA.AREA_COUNTY_ID"; - } - else if (StringUtils.isNotEmpty(provinceId)) - { - groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE," + - " AAA.CITY||';'||AAA.CITY_ID AS CITY,"; - groupBySql1="AAA.PROVINCE||';'||AAA.PROVINCE_ID, " + - " AAA.CITY||';'||AAA.CITY_ID "; - } - else - { - groupBySql=" AAA.PROVINCE||';'||AAA.PROVINCE_ID AS PROVINCE,"; - groupBySql1="AAA.PROVINCE||';'||AAA.PROVINCE_ID"; - } - - String countSql = "SELECT "+groupBySql+ - " SUM(AA.JD_NUM) AS JD_NUM,\n" + - " SUM(CJ_NUM) AS CJ_NUM,\n" + - " SUM(NUM_12) AS NUM_12,\n" + - " SUM(NUM_16) AS NUM_16,\n" + - " SUM(NUM_24) AS NUM_24,\n" + - " SUM(NUM_36) AS NUM_36,\n" + - " SUM(NUM_40) AS NUM_40\n" + - " FROM ODS_D_HOSPITAL AAA LEFT JOIN " + - " ( SELECT A.PROVINCE_ID,\n" + - " A.PROVINCE,\n" + - " A.CITY_ID,\n" + - " A.CITY,\n" + - " A.AREA_COUNTY_ID,\n" + - " A.AREA_COUNTY,\n" + - " A.HOSPITAL_NO,\n" + - " A.HOSPITAL_NAME,\n" + - " A.YCY_STSTEM_ID,\n" + - " COUNT(B.RECORD_ID) AS JD_NUM\n" + - " FROM ODS_D_HOSPITAL A\n" + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON A.HOSPITAL_NO=B.HOSPITAL_NO\n" + - " WHERE 1=1 AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <>2 "; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - countSql+=" AND B.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - countSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - countSql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - countSql+= "GROUP BY A.PROVINCE_ID,\n" + - " A.PROVINCE,\n" + - " A.CITY_ID,\n" + - " A.CITY,\n" + - " A.AREA_COUNTY_ID,\n" + - " A.AREA_COUNTY,\n" + - " A.HOSPITAL_NO,\n" + - " A.HOSPITAL_NAME,\n" + - " A.YCY_STSTEM_ID\n" + - " ) AA ON AAA.HOSPITAL_NO=AA.HOSPITAL_NO" + - " LEFT JOIN (\n" + - " SELECT A.PROVINCE_ID,\n" + - " A.PROVINCE,\n" + - " A.CITY_ID,\n" + - " A.CITY,\n" + - " A.AREA_COUNTY_ID,\n" + - " A.AREA_COUNTY,\n" + - " A.HOSPITAL_NO,\n" + - " A.HOSPITAL_NAME,\n" + - " A.YCY_STSTEM_ID,\n" + - " COUNT(B.RECORD_ID) AS CJ_NUM,\n" + - " SUM(CASE WHEN B.NODE_NAME='0~12 孕周' THEN 1 ELSE 0 END) AS NUM_12,\n" + - " SUM(CASE WHEN B.NODE_NAME='16~20 孕周' THEN 1 ELSE 0 END) AS NUM_16,\n" + - " SUM(CASE WHEN B.NODE_NAME='21~24 孕周' THEN 1 ELSE 0 END) AS NUM_24,\n" + - " SUM(CASE WHEN B.NODE_NAME='28~36 孕周' THEN 1 ELSE 0 END) AS NUM_36,\n" + - " SUM(CASE WHEN B.NODE_NAME='37~ 分娩' THEN 1 ELSE 0 END) AS NUM_40\n" + - " FROM ODS_D_HOSPITAL A\n" + - " LEFT JOIN ODS_F_EXAMINE_HISTORY B ON A.HOSPITAL_NO=B.HOSPITAL_NO "+ - " INNER JOIN ODS_F_GRAVIDA_RECORD C ON B.RECORD_ID=C.RECORD_ID "; - if (pointType != null && pointType == 1){ - countSql+=" AND B.NODE_ID=2 "; - } - countSql+= "WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 " ; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - countSql+=" AND B.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - countSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - countSql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - countSql+="GROUP BY A.PROVINCE_ID,\n" + - " A.PROVINCE,\n" + - " A.CITY_ID,\n" + - " A.CITY,\n" + - " A.AREA_COUNTY_ID,\n" + - " A.AREA_COUNTY,\n" + - " A.HOSPITAL_NO,\n" + - " A.HOSPITAL_NAME,\n" + - " A.YCY_STSTEM_ID\n" + - " ) BB ON AAA.HOSPITAL_NO=BB.HOSPITAL_NO " ; - - countSql+=getNodeSql(pointType,time,hospitalId,provinceId,cityId,areaId,userId); -// if (StringUtils.isNotEmpty(hospitalId)) -// { -// countSql+=" WHERE AAA.YCY_STSTEM_ID= '" +hospitalId+"'"; -// } -// else -// { -// String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); -// if (StringUtils.isNotEmpty(hospitals)) -// { -// countSql+=" WHERE AAA.YCY_STSTEM_ID IN " +hospitals; -// } -// -// } - countSql+=" GROUP BY ROLLUP("+groupBySql1+" ) ORDER BY 1,2,3"; - - - - String sql = "SELECT " + - " AAA.PROVINCE," + - " AAA.PROVINCE_ID," + - " AAA.CITY," + - " AAA.CITY_ID," + - " AAA.AREA_COUNTY," + - " AAA.AREA_COUNTY_ID ," + - " AAA.HOSPITAL_NAME," + - " AAA.YCY_STSTEM_ID," + - " (CASE WHEN AA.JD_NUM IS NULL THEN 0 ELSE AA.JD_NUM END) AS JD_NUM," + - " (CASE WHEN CJ_NUM IS NULL THEN 0 ELSE CJ_NUM END) AS CJ_NUM," + - " (CASE WHEN NUM_12 IS NULL THEN 0 ELSE NUM_12 END) AS NUM_12," + - " (CASE WHEN NUM_16 IS NULL THEN 0 ELSE NUM_16 END) AS NUM_16," + - " (CASE WHEN NUM_24 IS NULL THEN 0 ELSE NUM_24 END) AS NUM_24," + - " (CASE WHEN NUM_36 IS NULL THEN 0 ELSE NUM_36 END) AS NUM_36," + - " (CASE WHEN NUM_40 IS NULL THEN 0 ELSE NUM_40 END) AS NUM_40 " + - " FROM ODS_D_HOSPITAL AAA LEFT JOIN (" + - " SELECT A.PROVINCE_ID," + - " A.PROVINCE," + - " A.CITY_ID," + - " A.CITY," + - " A.AREA_COUNTY_ID," + - " A.AREA_COUNTY," + - " A.HOSPITAL_NO," + - " A.HOSPITAL_NAME," + - " A.YCY_STSTEM_ID," + - " COUNT(B.RECORD_ID) AS JD_NUM" + - " FROM ODS_D_HOSPITAL A" + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON A.HOSPITAL_NO=B.HOSPITAL_NO " + - " WHERE 1=1 AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 " ; - - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND B.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - sql+= " GROUP BY A.PROVINCE_ID,\n" + - " A.PROVINCE,\n" + - " A.CITY_ID,\n" + - " A.CITY,\n" + - " A.AREA_COUNTY_ID,\n" + - " A.AREA_COUNTY,\n" + - " A.HOSPITAL_NO,\n" + - " A.HOSPITAL_NAME,\n" + - " A.YCY_STSTEM_ID\n" + - " ) AA ON AAA.HOSPITAL_NO=AA.HOSPITAL_NO LEFT JOIN (\n" + - " SELECT A.PROVINCE_ID,\n" + - " A.PROVINCE,\n" + - " A.CITY_ID,\n" + - " A.CITY,\n" + - " A.AREA_COUNTY_ID,\n" + - " A.AREA_COUNTY,\n" + - " A.HOSPITAL_NO,\n" + - " A.HOSPITAL_NAME,\n" + - " A.YCY_STSTEM_ID,\n" + - " COUNT(B.RECORD_ID) AS CJ_NUM,\n" + - " SUM(CASE WHEN B.NODE_NAME='0~12 孕周' THEN 1 ELSE 0 END) AS NUM_12,\n" + - " SUM(CASE WHEN B.NODE_NAME='16~20 孕周' THEN 1 ELSE 0 END) AS NUM_16,\n" + - " SUM(CASE WHEN B.NODE_NAME='21~24 孕周' THEN 1 ELSE 0 END) AS NUM_24,\n" + - " SUM(CASE WHEN B.NODE_NAME='28~36 孕周' THEN 1 ELSE 0 END) AS NUM_36,\n" + - " SUM(CASE WHEN B.NODE_NAME='37~ 分娩' THEN 1 ELSE 0 END) AS NUM_40\n" + - " FROM ODS_D_HOSPITAL A\n" + - " LEFT JOIN ODS_F_EXAMINE_HISTORY B ON A.HOSPITAL_NO=B.HOSPITAL_NO "+ - " INNER JOIN ODS_F_GRAVIDA_RECORD C ON B.RECORD_ID=C.RECORD_ID "; - if (pointType != null && pointType == 1){ - sql+=" AND B.NODE_ID=2 "; - } - sql+=" WHERE 1= 1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 " ; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND B.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - - sql+=" GROUP BY A.PROVINCE_ID,\n" + - " A.PROVINCE,\n" + - " A.CITY_ID,\n" + - " A.CITY,\n" + - " A.AREA_COUNTY_ID,\n" + - " A.AREA_COUNTY,\n" + - " A.HOSPITAL_NO,\n" + - " A.HOSPITAL_NAME,\n" + - " A.YCY_STSTEM_ID\n" + - " ) BB ON AAA.HOSPITAL_NO = BB.HOSPITAL_NO "; - sql+=getNodeSql(pointType,time,hospitalId,provinceId,cityId,areaId,userId); - -// if (StringUtils.isNotEmpty(hospitalId)) -// { -// sql+=" WHERE AAA.YCY_STSTEM_ID= '" +hospitalId+"'"; -// } -// else -// { -// String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); -// if (StringUtils.isNotEmpty(hospitals)) -// { -// sql+=" WHERE AAA.YCY_STSTEM_ID IN " +hospitals; -// } -// -// } - sql+=" ORDER BY 1,2,3"; - System.out.println("sql===="+sql); - System.out.println("countSql===="+countSql); - - List chartData = new ArrayList<>(); - List num12 = new ArrayList<>(); - List num20 = new ArrayList<>(); - List num24 = new ArrayList<>(); - List num36 = new ArrayList<>(); - List num40 = new ArrayList<>(); - List> ticketCount = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, countSql); - if (CollectionUtils.isNotEmpty(ticketCount)) - { - - for(Map map : ticketCount) + else if (key.contains("num40")) { - - if (StringUtils.isNotEmpty(hospitalId) || StringUtils.isNotEmpty(areaId)) - { - if (map.get("HNAME") == null) - { - continue; - } - chartData.add(spitValue(map.get("HNAME"))); - } - else if (StringUtils.isNotEmpty(cityId)) - { - if (map.get("AREA_COUNTY") == null) - { - continue; - } - chartData.add(spitValue(map.get("AREA_COUNTY"))); - } - else if (StringUtils.isNotEmpty(provinceId)) - { - if (map.get("CITY") == null) - { - continue; - } - chartData.add(spitValue(map.get("CITY"))); - } - else - { - if (map.get("PROVINCE") == null) - { - continue; - } - chartData.add(spitValue(map.get("PROVINCE"))); - } - num12.add(getInteger(map.get("NUM_12"))); - num20.add(getInteger(map.get("NUM_16"))); - num24.add(getInteger(map.get("NUM_24"))); - num36.add(getInteger(map.get("NUM_36"))); - num40.add(getInteger(map.get("NUM_40"))); + num40.add(result.get(key)); } } - - List> checkPointtList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); - Map data = new HashMap<>(); - data.put("list",checkPointtList); - data.put("chartData",chartData); - data.put("num12",num12); - data.put("num20",num20); - data.put("num24",num24); - data.put("num36",num36); - data.put("num40",num40); - return new BaseObjectResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(data); - } - - public BaseResponse getCheckPointBuildDetail(String time, String hospitalId, String provinceId, String cityId, String areaId, Integer page, Integer limit, Integer userId) { - - int start = 0; - int end = 0; - if (page != null && limit != null) { - start = (page - 1) * limit + 1; - end = page * limit; - } - - String countSql = "SELECT COUNT(C.NAME) AS ALLCOUNT FROM ODS_F_GRAVIDA_RECORD C LEFT JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID " + - " INNER JOIN ODS_D_HOSPITAL A ON C.HOSPITAL_NO=A.HOSPITAL_NO WHERE 1 = 1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; - - String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT C.CREATE_DATE,\n" + - " C.NAME,\n" + - " C.CREATE_WEEKS,\n" + - " C.CREATE_WEEKS_DAY,\n" + - " DECODE( C.CREATE_WEEKS_DAY,0,'孕'||C.CREATE_WEEKS||'周','孕'||C.CREATE_WEEKS||'周+'||C.CREATE_WEEKS_DAY||'天') AS YZ_NAME, "+ - " C.HOSPITAL_NAME,\n" + - " C.DOCTOR_NAME,\n" + - " C.HOME_ADDR,\n" + - " D.PROVINCE||D.CITY||D.AREA_COUNTY AS HJ_ADDR,\n" + - " C.TEL_NO\n" + - " FROM ODS_F_GRAVIDA_RECORD C\n" + - " LEFT JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID"+ - " INNER JOIN ODS_D_HOSPITAL A ON C.HOSPITAL_NO=A.HOSPITAL_NO "+ - " WHERE 1 = 1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND C.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - countSql+=" AND C.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - countSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - countSql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - sql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; - - - System.out.println("getCheckPointBuildDetail sql===== "+ sql); - System.out.println("getCheckPointBuildDetail coutsql===== "+ countSql); - - int count = 0; - Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, countSql); - if (totalCountObj != null) - { - count = Integer.valueOf(totalCountObj.toString()); - } - - PageInfo pageInfo = new PageInfo(page, 0, count, limit); - - List> checkBuildtList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); - return new BaseListResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(checkBuildtList).setPageInfo(pageInfo); } - public BaseResponse getCheckDetail(Integer pointType,String time, String hospitalId, String provinceId, - String cityId, String areaId, Integer page, Integer limit, Integer userId, - Integer nodeName) { - - int start = 0; - int end = 0; - if (page != null && limit != null) { - start = (page - 1) * limit + 1; - end = page * limit; - } - - String countSql = "SELECT COUNT(CC.NAME) ALLCOUNT FROM ODS_F_EXAMINE_HISTORY CC\n" + - " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO\n" + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID\n" + - " WHERE 1=1 AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; -// String pageSql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ("; -// pageSql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; - String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT CC.EXAMINE_DATE,\n" + - " CC.NAME,\n" + - " CC.NOW_WEEKS,\n" + - " CC.NOW_WEEKS_DAY,\n" + - " DECODE(CC.NOW_WEEKS_DAY,0,'孕'||CC.NOW_WEEKS||'周','孕'||CC.NOW_WEEKS||'周+'||CC.NOW_WEEKS_DAY||'天') AS YZ_NAME, "+ - " CC.EXAMINE_HISTORY_NUM,\n" + - " CC.HOSPITAL_NAME AS EXAMINE_HOSPITAL,\n" + - " CC.DOCTOR_NAME,\n" + - " B.HOSPITAL_NAME AS JD_HOSPITAL,\n" + - " B.TEL_NO\n" + - " FROM ODS_F_EXAMINE_HISTORY_ASC CC\n" + - " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO\n" + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID\n" + - " WHERE 1=1 AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; - if (pointType != null && pointType == 1){ - sql+=" AND CC.NODE_ID=2 "; - countSql+=" AND CC.NODE_ID=2 "; - } - if (StringUtils.isNotEmpty(getNodeName(nodeName))){ - sql+=" AND CC.NODE_NAME= '" +getNodeName(nodeName)+"'"; - countSql+=" AND CC.NODE_NAME= '" + getNodeName(nodeName)+"'"; - } - //" AND CC.NODE_NAME=''\n" + - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - countSql+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - countSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - countSql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - } - sql+=" ORDER BY CC.EXAMINE_DATE ,CC.NAME DESC"; - countSql+=" ORDER BY CC.EXAMINE_DATE ,CC.NAME DESC"; - sql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; - System.out.println("sql===="+sql); - System.out.println("countSql===="+countSql); - int count = 0; - Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, countSql); - if (totalCountObj != null) + private Integer getInteger(Object obj) + { + if (obj != null) { - count = Integer.valueOf(totalCountObj.toString()); + return Integer.parseInt(obj.toString()); } - - PageInfo pageInfo = new PageInfo(page, 0, count, limit); - - List> checkBuildtList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); - return new BaseListResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(checkBuildtList).setPageInfo(pageInfo); + return 0; } - public void getCheckDetailExport(Integer pointType, String time, String hospitalId, - String provinceId, String cityId, String areaId, - Integer userId, HttpServletResponse httpServletResponse,Integer nodeName) { - String sql = "SELECT CC.EXAMINE_DATE,\n" + - " CC.NAME,\n" + - " CC.NOW_WEEKS,\n" + - " CC.NOW_WEEKS_DAY,\n" + - " DECODE(CC.NOW_WEEKS_DAY,0,'孕'||CC.NOW_WEEKS||'周','孕'||CC.NOW_WEEKS||'周+'||CC.NOW_WEEKS_DAY||'天') AS YZ_NAME, "+ - " CC.EXAMINE_HISTORY_NUM,\n" + - " CC.HOSPITAL_NAME AS EXAMINE_HOSPITAL,\n" + - " CC.DOCTOR_NAME,\n" + - " B.HOSPITAL_NAME AS JD_HOSPITAL,\n" + - " B.TEL_NO\n" + - " FROM ODS_F_EXAMINE_HISTORY_ASC CC\n" + - " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO\n" + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID\n" + - " WHERE 1=1 AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; - if (pointType != null && pointType == 1){ - sql+=" AND CC.NODE_ID=2 "; - } - if (StringUtils.isNotEmpty(getNodeName(nodeName))){ - sql+=" AND CC.NODE_NAME= '" + getNodeName(nodeName)+"'"; - } - //" AND CC.NODE_NAME=''\n" + + /** + * 产检节点建档明细 + * @param time + * @param hospitalId + * @param provinceId + * @param cityId + * @param areaId + * @param page + * @param limit + * @param userId + * @return + */ + public BaseResponse getCheckPointBuildDetail(String time, String hospitalId, + String provinceId, String cityId, String areaId, Integer page, Integer limit, Integer userId) { + List hospitalIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(hospitalId)) { + hospitalIds.add(hospitalId); + } else { + //获取用户拥有的权限医院和条件筛选的医院交集 + hospitalIds = getCurrentUserHospPermissions(userId, provinceId, cityId, areaId); + } + + Date startTime = null; + Date endTime = null; if (StringUtils.isNotEmpty(time)) { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) + String[] times = time.split(" - "); + if (times != null && times.length == 2) { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; + startTime = DateUtil.parseYMD(times[0]); + endTime = DateUtil.parseYMD(times[1]); } - } - sql+= " ORDER BY CC.EXAMINE_DATE,CC.NAME DESC "; + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalList(hospitalIds); - System.out.println("sql===="+sql); - List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); + List buildType = new ArrayList(); + buildType.add(0); + buildType.add(2); + patientsQuery.setSmsBuildTypeList(buildType); + //分娩状态 + patientsQuery.setDueStatus(0); - List> results = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(ticketList)) - { - for (Map map : ticketList) - { - Map result = new HashMap<>(); - result.put("examineDate", map.get("EXAMINE_DATE") == null ? "" : DateUtil.getyyyy_MM_dd((Date)map.get("EXAMINE_DATE"))); //产检日期 - result.put("name", map.get("NAME")); //姓名 - result.put("checkWeek", map.get("YZ_NAME")); //产检孕周 - result.put("examineHistoryNum", map.get("EXAMINE_HISTORY_NUM")); //产检第次 - result.put("examineHospital",map.get("EXAMINE_HOSPITAL")); //产检机构 - result.put("doctorName",map.get("DOCTOR_NAME")); //产检医生 - result.put("jdHospital",map.get("JD_HOSPITAL")); //建档机构 - result.put("telNo",map.get("TEL_NO")); //联系电话 - results.add(result); - } - } - - Map cnames = new LinkedHashMap<>(); - cnames.put("examineDate", "产检日期"); //产检日期 - cnames.put("name", "姓名"); //姓名 - cnames.put("checkWeek", "产检孕周"); //产检孕周 - cnames.put("examineHistoryNum", "产检第次"); //产检第次 - cnames.put("examineHospital","产检机构"); //产检机构 - cnames.put("doctorName","产检医生"); //产检医生 - cnames.put("jdHospital","建档机构"); //建档机构 - cnames.put("telNo","联系电话"); //联系电话 + patientsQuery.setBookbuildingDateStart(startTime); + patientsQuery.setBookbuildingDateEnd(endTime); + patientsQuery.setNeed("true"); - ResponseUtil.responseExcel(cnames,results,httpServletResponse); - } + patientsQuery.setPage(page); + patientsQuery.setLimit(limit); - public void getCheckPointBuildDetailExport(String time, String hospitalId, String provinceId, String cityId, String areaId, - Integer userId, HttpServletResponse httpServletResponse) { - - String sql ="SELECT C.CREATE_DATE,\n" + - " C.NAME,\n" + - " C.CREATE_WEEKS,\n" + - " C.CREATE_WEEKS_DAY,\n" + - " DECODE(C.CREATE_WEEKS_DAY,0,'孕'||C.CREATE_WEEKS||'周','孕'||C.CREATE_WEEKS||'周+'||C.CREATE_WEEKS_DAY||'天') AS YZ_NAME, " + - " C.HOSPITAL_NAME,\n" + - " C.DOCTOR_NAME,\n" + - " C.HOME_ADDR,\n" + - " D.PROVINCE||D.CITY||D.AREA_COUNTY AS HJ_ADDR,\n" + - " C.TEL_NO\n" + - " FROM ODS_F_GRAVIDA_RECORD C " + - " LEFT JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID" + - " INNER JOIN ODS_D_HOSPITAL A ON C.HOSPITAL_NO=A.HOSPITAL_NO "+ - " WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; - - - if (StringUtils.isNotEmpty(time)) + List> list = new ArrayList<>(); + //建档人数 + List patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND C.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } + for(Patients pat : patientses) + { + Map map = new HashMap<>(); + map.put("id",pat.getId()); + map.put("CREATE_DATE",DateUtil.getyyyy_MM_dd(pat.getBookbuildingDate()));//建档时间 + map.put("CREATE_WEEKS",DateUtil.getWeekDesc(pat.getLastMenses(), pat.getBookbuildingDate()));//建档孕周 + map.put("YZ_NAME",DateUtil.getWeekDesc(pat.getLastMenses(),pat.getBookbuildingDate()));//建档孕周 + map.put("CREATE_WEEKS_DAY",""); + + //建档医生 + String bookbuildingDoctor = ""; + if (org.apache.commons.lang.StringUtils.isNotEmpty(pat.getBookbuildingDoctor()) && FunvCommonUtil.isNumeric(pat.getBookbuildingDoctor())) { + Users users = usersService.getUsers(Integer.parseInt(pat.getBookbuildingDoctor())); + if (users != null && users.getYn() == YnEnums.YES.getId()) { + bookbuildingDoctor = users.getName(); + } + } + map.put("DOCTOR_NAME",bookbuildingDoctor); //建档医生 - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } + String hospital = ""; + if (org.apache.commons.lang.StringUtils.isNotEmpty(pat.getHospitalId())) { + Organization organization = organizationService.getOrganization(Integer.parseInt(pat.getHospitalId())); + if (organization != null && organization.getYn() == YnEnums.YES.getId()) { + hospital = organization.getName(); + } + } + map.put("HOSPITAL_NAME", hospital); - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } + //居住地 + String liveAddress = CommonsHelper.getResidence(pat.getProvinceId(), pat.getCityId(), + pat.getAreaId(), pat.getStreetId(), pat.getAddress(), basicConfigService); + map.put("HOME_ADDR", liveAddress); - } + //户籍地址 + String addressRegister = CommonsHelper.getResidence(pat.getProvinceRegisterId(), pat.getCityRegisterId(), + pat.getAreaRegisterId(), pat.getStreetRegisterId(), pat.getAddressRegister(), basicConfigService); + map.put("HJ_ADDR", addressRegister); + map.put("NAME", pat.getUsername()); + map.put("TEL_NO", pat.getPhone()); - System.out.println("sql===="+sql); - List> ticketList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); + list.add(map); - List> results = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(ticketList)) - { - for (Map map : ticketList) - { - Map result = new HashMap<>(); - result.put("createDate", map.get("CREATE_DATE") == null ? "" : DateUtil.getyyyy_MM_dd((Date)map.get("CREATE_DATE"))); //建档日期 - result.put("name", map.get("NAME")); //姓名 - result.put("buildWeek", map.get("YZ_NAME")); //建档孕周 - result.put("hospitalName", map.get("HOSPITAL_NAME")); //建档机构 - result.put("doctor",map.get("DOCTOR_NAME")); //建档医生 - result.put("homeAddr", map.get("HOME_ADDR")); //居住地 - result.put("hjAddr",map.get("HJ_ADDR")); //户籍地 - result.put("telNo",map.get("TEL_NO")); //联系电话 - results.add(result); } } - Map cnames = new LinkedHashMap<>(); - cnames.put("createDate", "建档日期"); //建档日期 - cnames.put("name", "姓名"); //姓名 - cnames.put("buildWeek", "建档孕周"); //建档孕周 - cnames.put("hospitalName", "建档机构"); //建档机构 - cnames.put("doctor","建档医生"); //建档医生 - cnames.put("homeAddr","居住地"); //居住地 - cnames.put("hjAddr","户籍地"); //户籍地 - cnames.put("telNo","联系电话"); //联系电话 - ResponseUtil.responseExcel(cnames,results,httpServletResponse); + return new BaseListResponse().setData(list).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION).setPageInfo(patientsQuery.getPageInfo()); } - /** - * + * 产检明细 + * @param nodeType 1 首次 2 全部 + * @param time + * @param hospitalId + * @param provinceId + * @param cityId + * @param areaId + * @param page + * @param limit + * @param userId + * @param nodeName 0:0~12 孕周 1: 16~20 孕周 2: 21~24 孕周 3:28~36 孕周 4:37~ 分娩 * @return */ - private String getTicketSql(String time, String hospitalId, - String provinceId,String cityId, - String areaId, Integer userId) + public BaseResponse getCheckDetail(Integer nodeType, String time, String hospitalId, + String provinceId, String cityId, String areaId, + Integer page, Integer limit, Integer userId, Integer nodeName) { - String sql = " WHERE AAA.YCY_STSTEM_ID IN ( " + - " SELECT DISTINCT A.YCY_STSTEM_ID " + - " FROM ODS_F_EXAMINE_HISTORY_ASC CC " + - " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO\n" + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID WHERE CC.TICKETS_NO IS NOT NULL AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND CC.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - - } - - sql+=" UNION " + - " SELECT DISTINCT A.YCY_STSTEM_ID\n" + - " FROM ODS_D_HOSPITAL A\n" + - " INNER JOIN ODS_F_EXAMINE_TICKET B ON A.HOSPITAL_NO=B.HOSPITAL_NO\n" + - " INNER JOIN ODS_F_GRAVIDA_RECORD C ON B.RECORD_ID=C.RECORD_ID\n" + - " WHERE 1 = 1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 "; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND B.ISSUE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } - - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } + List hospitalIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(hospitalId)) { + hospitalIds.add(hospitalId); + } else { + //获取用户拥有的权限医院和条件筛选的医院交集 + hospitalIds = getCurrentUserHospPermissions(userId, provinceId, cityId, areaId); + } - } + Date startTime = null; + Date endTime = null; + if (StringUtils.isNotEmpty(time)) + { + String[] times = time.split(" - "); + if (times != null && times.length == 2) + { + startTime = DateUtil.parseYMD(times[0]); + endTime = DateUtil.parseYMD(times[1]); + } + } - sql+=" )"; - return sql; + return null; } +} - private String getNodeSql(Integer pointType, String time, String hospitalId, String provinceId, String cityId, String areaId, Integer userId) - { - - String sql = " WHERE AAA.Ycy_Ststem_Id IN ( " + - " SELECT DISTINCT A.YCY_STSTEM_ID " + - " FROM ODS_D_HOSPITAL A " + - " INNER JOIN ODS_F_EXAMINE_HISTORY B ON A.HOSPITAL_NO=B.HOSPITAL_NO " ; - if (pointType != null && pointType == 1){ - sql+=" AND B.NODE_ID=2 "; - } - sql+=" INNER JOIN ODS_F_GRAVIDA_RECORD C ON B.RECORD_ID=C.RECORD_ID WHERE 1=1 AND C.CREATE_TYPE_ID <> 2 AND C.CREATE_CATEGORY_ID <> 2 " ; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND B.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } +// public BaseResponse getCheckPointBuildDetail(String time, String hospitalId, String provinceId, String cityId, String areaId, Integer page, Integer limit, Integer userId) { +// +// PageInfo pageInfo = new PageInfo(page, 0, count, limit); +// +// List> checkBuildtList = JdbcUtil.getOracleListDataBySql(DRIVER, JDBC, NAME, PWD, sql); +// return new BaseListResponse().setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(checkBuildtList).setPageInfo(pageInfo); +// } - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } - } - sql+=" UNION SELECT DISTINCT A.YCY_STSTEM_ID " + - " FROM ODS_D_HOSPITAL A " + - " INNER JOIN ODS_F_GRAVIDA_RECORD B ON A.HOSPITAL_NO=B.HOSPITAL_NO " + - " WHERE 1= 1 AND B.CREATE_TYPE_ID <> 2 AND B.CREATE_CATEGORY_ID <> 2 "; - if (StringUtils.isNotEmpty(time)) - { - String startTime = time.split(" - ")[0]; - String endTime = time.split(" - ")[1]; - sql+=" AND B.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; - } - if (StringUtils.isNotEmpty(provinceId)) - { - sql += " AND A.PROVINCE_ID= '"+provinceId+"'"; - } - if (StringUtils.isNotEmpty(cityId)) - { - sql+= " AND A.CITY_ID= '" +cityId+"'"; - } +// public void getCheckDetailExport(Integer pointType, String time, String hospitalId, +// String provinceId, String cityId, String areaId, +// Integer userId, HttpServletResponse httpServletResponse,Integer nodeName) { +// +// List> results = new ArrayList<>(); +// if (CollectionUtils.isNotEmpty(ticketList)) +// { +// for (Map map : ticketList) +// { +// Map result = new HashMap<>(); +// result.put("examineDate", map.get("EXAMINE_DATE") == null ? "" : DateUtil.getyyyy_MM_dd((Date)map.get("EXAMINE_DATE"))); //产检日期 +// result.put("name", map.get("NAME")); //姓名 +// result.put("checkWeek", map.get("YZ_NAME")); //产检孕周 +// result.put("examineHistoryNum", map.get("EXAMINE_HISTORY_NUM")); //产检第次 +// result.put("examineHospital",map.get("EXAMINE_HOSPITAL")); //产检机构 +// result.put("doctorName",map.get("DOCTOR_NAME")); //产检医生 +// result.put("jdHospital",map.get("JD_HOSPITAL")); //建档机构 +// result.put("telNo",map.get("TEL_NO")); //联系电话 +// results.add(result); +// } +// } +// +// Map cnames = new LinkedHashMap<>(); +// cnames.put("examineDate", "产检日期"); //产检日期 +// cnames.put("name", "姓名"); //姓名 +// cnames.put("checkWeek", "产检孕周"); //产检孕周 +// cnames.put("examineHistoryNum", "产检第次"); //产检第次 +// cnames.put("examineHospital","产检机构"); //产检机构 +// cnames.put("doctorName","产检医生"); //产检医生 +// cnames.put("jdHospital","建档机构"); //建档机构 +// cnames.put("telNo","联系电话"); //联系电话 +// +// ResponseUtil.responseExcel(cnames,results,httpServletResponse); +// } - if (StringUtils.isNotEmpty(areaId)) - { - sql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; - } - if (StringUtils.isNotEmpty(hospitalId)) - { - sql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; - } - else - { - String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); - if (StringUtils.isNotEmpty(hospitals)) - { - sql+=" AND A.YCY_STSTEM_ID IN " +hospitals; - } +// public void getCheckPointBuildDetailExport(String time, String hospitalId, String provinceId, String cityId, String areaId, +// Integer userId, HttpServletResponse httpServletResponse) { +// +// +// List> results = new ArrayList<>(); +// if (CollectionUtils.isNotEmpty(ticketList)) +// { +// for (Map map : ticketList) +// { +// Map result = new HashMap<>(); +// result.put("createDate", map.get("CREATE_DATE") == null ? "" : DateUtil.getyyyy_MM_dd((Date)map.get("CREATE_DATE"))); //建档日期 +// result.put("name", map.get("NAME")); //姓名 +// result.put("buildWeek", map.get("YZ_NAME")); //建档孕周 +// result.put("hospitalName", map.get("HOSPITAL_NAME")); //建档机构 +// result.put("doctor",map.get("DOCTOR_NAME")); //建档医生 +// result.put("homeAddr", map.get("HOME_ADDR")); //居住地 +// result.put("hjAddr",map.get("HJ_ADDR")); //户籍地 +// result.put("telNo",map.get("TEL_NO")); //联系电话 +// results.add(result); +// } +// } +// +// Map cnames = new LinkedHashMap<>(); +// cnames.put("createDate", "建档日期"); //建档日期 +// cnames.put("name", "姓名"); //姓名 +// cnames.put("buildWeek", "建档孕周"); //建档孕周 +// cnames.put("hospitalName", "建档机构"); //建档机构 +// cnames.put("doctor","建档医生"); //建档医生 +// cnames.put("homeAddr","居住地"); //居住地 +// cnames.put("hjAddr","户籍地"); //户籍地 +// cnames.put("telNo","联系电话"); //联系电话 +// ResponseUtil.responseExcel(cnames,results,httpServletResponse); +// } - } - sql+=" )"; - return sql; - } -} \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index 6e926c5..c0e36df 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -5,6 +5,7 @@ import com.lyms.hospitalapi.fnfy.FnfyHisService; import com.lyms.hospitalapi.qhdfy.QhdfyHisService; import com.lyms.hospitalapi.qinglongxian.QingLongXianHisService; import com.lyms.hospitalapi.v2.HisService; +import com.lyms.platform.beans.*; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.dao.operator.MongoQuery; @@ -14,6 +15,8 @@ import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.request.*; +import com.lyms.platform.operate.web.request.MessageListRequest; +import com.lyms.platform.operate.web.request.MessageRequest; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.utils.BabyListTask; import com.lyms.platform.operate.web.utils.GrowthCountTask; @@ -678,6 +681,156 @@ public class BabyBookbuildingFacade { /** * 创建建档短信 */ + public void createBuildMsg(BabyModel babyModel) { + + //判断医院是否启动和对应的服务项是否启用 + SmsConfigModel configModel = new SmsConfigModel(); + BaseResponse response = smsConfigFacade.hospitalIsStart(babyModel.getHospitalId(), configModel, SmsServiceEnums.FWKT.getId()); + if (response != null) { + return; + } + + ExceptionUtils.catchException("The child build config is started.;" + babyModel.getMphone() + ";name=" + babyModel.getName()); + + SmsTemplateQuery query = new SmsTemplateQuery(); + query.setYn(YnEnums.YES.getId()); + query.setStatus(1); + query.setHospitalId(babyModel.getHospitalId()); + query.setServiceObj(ServiceObjEnums.BABYOBJ.getId()); + query.setSpecialDateType(SpecialDateEnums.JD.getId()); + + Integer serviceType = babyModel.getServiceType(); + Integer serviceStatus = babyModel.getServiceStatus(); + List sendList = new ArrayList<>(); + List temps = smsTemplateService.querySmsTemplates(query); + if (CollectionUtils.isNotEmpty(temps)) { + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceType() == serviceType && temp.getServiceStatus() == serviceStatus) { + sendList.add(temp); + break; + } + } + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceStatus() == ServiceStatusEnums.STANDARD_ALL.getId()) { + if (serviceStatus == ServiceStatusEnums.STANDARD_OPEN.getId() || serviceStatus == ServiceStatusEnums.NO_OPEN.getId() || serviceStatus == ServiceStatusEnums.STANDARD_OVERDUE.getId()) { + sendList.add(temp); + break; + } + } + } + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceStatus() == ServiceStatusEnums.ADD_ALL.getId()) { + if (serviceStatus == ServiceStatusEnums.ADD_OPEN.getId() || serviceStatus == ServiceStatusEnums.UNSUBSCRIBE.getId() + || serviceStatus == ServiceStatusEnums.ADD_OVERDUE.getId() || serviceStatus == ServiceStatusEnums.SUSPEND.getId()) { + sendList.add(temp); + break; + } + } + } + + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceStatus() == ServiceStatusEnums.ALL_OPEN.getId()) { + if (serviceStatus == ServiceStatusEnums.STANDARD_OPEN.getId() || serviceStatus == ServiceStatusEnums.ADD_OPEN.getId()) { + sendList.add(temp); + break; + } + } + } + + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceStatus() == ServiceStatusEnums.ALL_NO_OPEN.getId()) { + if (serviceStatus == ServiceStatusEnums.NO_OPEN.getId() || serviceStatus == ServiceStatusEnums.UNSUBSCRIBE.getId()) { + sendList.add(temp); + break; + } + } + } + + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceStatus() == ServiceStatusEnums.ALL_OVERDUE.getId()) { + if (serviceStatus == ServiceStatusEnums.STANDARD_OVERDUE.getId() || serviceStatus == ServiceStatusEnums.ADD_OVERDUE.getId()) { + sendList.add(temp); + break; + } + } + } + + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceType() == ServiceTypeEnums.ALL_SERVICE.getId() && temp.getServiceStatus() == ServiceStatusEnums.ALL.getId()) { + sendList.add(temp); + break; + } + } + + if (CollectionUtils.isNotEmpty(sendList)) { + //短信前缀 + String messagePrefix = smsConfigFacade.getSmsPrefix(configModel, babyModel.getBuildDoctor()); + for (SmsTemplateModel templateModel : sendList) { + if (templateModel != null && templateModel.getStatus() == 1) { + ExceptionUtils.catchException("The child build status is opened.;" + babyModel.getMphone() + ";name=" + babyModel.getName()); + com.lyms.platform.beans.MessageListRequest smsList = new com.lyms.platform.beans.MessageListRequest(); + List messages = new ArrayList<>(); + com.lyms.platform.beans.MessageRequest mr = new com.lyms.platform.beans.MessageRequest(); + String content = "【" + messagePrefix + "】" + templateModel.getContent(); + + + mr.setFirst(StringUtils.replaceBaby(babyModel.getName(), babyModel.getBirth(), content)); + mr.setObjType(ServiceObjEnums.BABYOBJ.getId()); + mr.setPhone(babyModel.getMphone()); + mr.setTypeId(ProjectTypeEnums.YNXT.getId()); + mr.setPlanTime(DateUtil.getyyyy_MM_dd_hms(new Date())); + mr.setSubTypeId(SmsServiceEnums.FWKT.getId()); + mr.setStatus(SmsStatusEnums.WFS.getId()); + mr.setTimeType(SmsTimeTypeEnums.ONTIME.getId()); + + mr.setHospitalId(babyModel.getHospitalId()); + mr.setTempId(templateModel.getId()); + mr.setPatientId(babyModel.getId()); + + mr.setKeyword1(babyModel.getName()); + mr.setKeyword2(DateUtil.getyyyy_MM_dd(babyModel.getBirth())); + mr.setRemark(""); + + + mr.setWxTempId(WxTempleteIdEnums.ER_TONG_OPEN.getId()); + messages.add(mr); + + if (CollectionUtils.isNotEmpty(messages)) { + smsList.setTypeId(ProjectTypeEnums.YNXT.getId()); + smsList.setMessages(messages); + if ("4".equals(HIS_VERSION)) + { + //秦皇岛建档 + if (syncDataService.savePostMsg(JsonUtil.obj2JsonString(smsList), babyModel.getHospitalId())) { + ExceptionUtils.catchException("The child build is saved.;" + babyModel.getMphone() + ";name=" + babyModel.getName()); + } + } + else + { + //线上 + MessageCenterService.saveMsgCenter(smsList); + ExceptionUtils.catchException("The child build is saved." + babyModel.getMphone() + ";name=" + babyModel.getName()); + } + } + } + } + } + + + } + } + + + /** + * 创建建档短信 + */ public void createBuildSms(BabyModel babyModel) { //判断医院是否启动和对应的服务项是否启用 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index 92c97a6..aa8f72f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -515,6 +515,117 @@ public class BookbuildingFacade { } /** + * 创建孕妇建档推送消息 + */ + private void createBuildMsg(Patients patient) { + + //判断医院是否启动和对应的服务项是否启用 + SmsConfigModel configModel = new SmsConfigModel(); + BaseResponse response = smsConfigFacade.hospitalIsStart(patient.getHospitalId(), configModel, SmsServiceEnums.FWKT.getId()); + if (response != null) { + return; + } + + SmsTemplateQuery query = new SmsTemplateQuery(); + query.setYn(YnEnums.YES.getId()); + query.setStatus(1); + query.setHospitalId(patient.getHospitalId()); + query.setServiceObj(ServiceObjEnums.YUNOBJ.getId()); + query.setSpecialDateType(SpecialDateEnums.JD.getId()); + + Integer serviceType = patient.getServiceType(); + Integer serviceStatus = patient.getServiceStatus(); + + List sendList = new ArrayList<>(); + + List temps = smsTemplateService.querySmsTemplates(query); + if (CollectionUtils.isNotEmpty(temps)) { + + for (SmsTemplateModel temp : temps) { + if (temp.getServiceType() == serviceType && temp.getServiceStatus() == serviceStatus) { + sendList.add(temp); + } else if (temp.getServiceType() == serviceType && temp.getServiceStatus() == serviceStatus) { + sendList.add(temp); + } else if (temp.getServiceStatus() == ServiceStatusEnums.ADD_ALL.getId()) { + if (serviceStatus == ServiceStatusEnums.ADD_OPEN.getId() || serviceStatus == ServiceStatusEnums.UNSUBSCRIBE.getId() + || serviceStatus == ServiceStatusEnums.ADD_OVERDUE.getId() || serviceStatus == ServiceStatusEnums.SUSPEND.getId()) { + sendList.add(temp); + } + } else if (temp.getServiceStatus() == ServiceStatusEnums.ALL_OPEN.getId()) { + if (serviceStatus == ServiceStatusEnums.STANDARD_OPEN.getId() || serviceStatus == ServiceStatusEnums.ADD_OPEN.getId()) { + sendList.add(temp); + } + } else if (temp.getServiceStatus() == ServiceStatusEnums.ALL_OVERDUE.getId()) { + if (serviceStatus == ServiceStatusEnums.STANDARD_OVERDUE.getId() || serviceStatus == ServiceStatusEnums.ADD_OVERDUE.getId()) { + sendList.add(temp); + } + } else if (temp.getServiceType() == ServiceTypeEnums.ALL_SERVICE.getId() && temp.getServiceStatus() == ServiceStatusEnums.ALL.getId()) { + sendList.add(temp); + } + } + + if (CollectionUtils.isNotEmpty(sendList)) { + + //短信前缀 + String messagePrefix = smsConfigFacade.getSmsPrefix(configModel, patient.getBookbuildingDoctor()); + for (SmsTemplateModel templateModel : sendList) { + if (templateModel != null && templateModel.getStatus() == 1) { + com.lyms.platform.beans.MessageListRequest smsList = new com.lyms.platform.beans.MessageListRequest(); + List messages = new ArrayList<>(); + com.lyms.platform.beans.MessageRequest mr = new com.lyms.platform.beans.MessageRequest(); + Date dueDate = DateUtil.addDay(patient.getLastMenses(), 7); + dueDate = DateUtil.addMonth(dueDate, 9); + String content = StringUtils.replaceEL(patient.getUsername(), dueDate, templateModel.getContent()); + + mr.setFirst("【" + messagePrefix + "】" + content); + mr.setObjType(ServiceObjEnums.YUNOBJ.getId()); + mr.setPhone(patient.getPhone()); + mr.setTimeType(SmsTimeTypeEnums.ONTIME.getId()); + mr.setTypeId(ProjectTypeEnums.YNXT.getId()); + mr.setPlanTime(DateUtil.getyyyy_MM_dd_hms(new Date())); + mr.setSubTypeId(SmsServiceEnums.FWKT.getId()); + mr.setStatus(SmsStatusEnums.WFS.getId()); + mr.setHospitalId(patient.getHospitalId()); + mr.setTempId(templateModel.getId()); + mr.setPatientId(patient.getId()); + + + + mr.setKeyword1(patient.getUsername()); + mr.setKeyword2(DateUtil.getyyyy_MM_dd(dueDate)); + mr.setRemark(""); + + + mr.setWxTempId(WxTempleteIdEnums.YUN_FU_OPEN.getId()); + messages.add(mr); + ExceptionUtils.catchException("patient build msg = " + messages); + if (CollectionUtils.isNotEmpty(messages)) { + smsList.setTypeId(ProjectTypeEnums.YNXT.getId()); + smsList.setMessages(messages); + //调用发送接口 + + + if ("4".equals(HIS_VERSION)) + { + //秦皇岛 + //保存到同步表中 + syncDataService.savePostMsg(JsonUtil.obj2JsonString(smsList), messages.get(0).getHospitalId()); + } + else + { + //保存到短信中心 线上 + MessageCenterService.saveMsgCenter(smsList); + } + } + } + } + } + } + } + + + + /** * 创建孕妇建档短信 */ private void createBuildSms(Patients patient) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MessageCenterService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MessageCenterService.java index 090c005..79827d9 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MessageCenterService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/MessageCenterService.java @@ -74,6 +74,36 @@ public class MessageCenterService { return false; } + + + /** + * 线上环境调用 + * 保存到短信中心 短信 + * @param list + * @return + */ + public static boolean saveMsgCenter(com.lyms.platform.beans.MessageListRequest list) + { + String json = ""; + try{ + json = JsonUtil.obj2Str(list); + String result = HttpRequest.sendPost(CENTER_BASE_URL+"saveCreatedSMS", json, CENTER_TOKEN); + if (StringUtils.isNotEmpty(result)) + { + Map map = JsonUtil.str2Obj(result, Map.class); + if ("0".equals(map.get("errorcode").toString())) + { + return true; + } + } + } + catch (Exception e) + { + ExceptionUtils.catchException(e,"保存短信中心异常"+json); + } + return false; + } + // /** // * 演示换调用 // * @param list diff --git a/pom.xml b/pom.xml index 25227cb..6858875 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ platform-reportData regional-etl platform-sync-data + platform-msg-generate @@ -73,6 +74,7 @@ ${project.basedir}/../platform-operate-api/src/main/webapp/WEB-INF/lib/lucene-core-3.6.0.jar + com.aspose aspose-words