From f1ec0f5fa6a8f630bb169de6f44e015a082fb84b Mon Sep 17 00:00:00 2001 From: liquanyu Date: Fri, 26 Aug 2016 11:16:00 +0800 Subject: [PATCH] code update --- .../lyms/platform/data/pojo/HighScoreResult.java | 118 +++++++++ .../platform/data/service/impl/SmsServiceImpl.java | 267 +++++++++++++++++---- .../web/controller/BabyBookbuildingController.java | 6 +- .../operate/web/facade/BabyBookbuildingFacade.java | 23 ++ 4 files changed, 369 insertions(+), 45 deletions(-) create mode 100644 platform-data-api/src/main/java/com/lyms/platform/data/pojo/HighScoreResult.java diff --git a/platform-data-api/src/main/java/com/lyms/platform/data/pojo/HighScoreResult.java b/platform-data-api/src/main/java/com/lyms/platform/data/pojo/HighScoreResult.java new file mode 100644 index 0000000..6963737 --- /dev/null +++ b/platform-data-api/src/main/java/com/lyms/platform/data/pojo/HighScoreResult.java @@ -0,0 +1,118 @@ +package com.lyms.platform.data.pojo; + +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-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java index e02121b..de628e5 100644 --- a/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java +++ b/platform-data-api/src/main/java/com/lyms/platform/data/service/impl/SmsServiceImpl.java @@ -6,6 +6,7 @@ import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.Lunar; import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.data.pojo.HighScoreResult; import com.lyms.platform.data.pojo.MessageContent; import com.lyms.platform.data.pojo.MessageListRequest; import com.lyms.platform.data.pojo.MessageRequest; @@ -21,7 +22,9 @@ 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.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.*; @@ -52,8 +55,7 @@ public class SmsServiceImpl implements SmsService{ private AntenatalExaminationService antenatalExaminationService; @Autowired - private BasicConfigService basicConfigService; - + private PatientsService patientsService; @Autowired private BabyBookbuildingService babyBookbuildingService; @@ -63,6 +65,14 @@ public class SmsServiceImpl implements SmsService{ @Autowired private OrganizationService organizationService; + @Autowired + private MatDeliverService matDeliverService; + @Autowired + private StopPregnancyService stopPregnancyService; + + @Autowired + private BasicConfigService basicConfigService; + /** * 生成孕妇ams指导短信 @@ -88,6 +98,20 @@ public class SmsServiceImpl implements SmsService{ { 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 (!isRunning(hospitalId)) { @@ -117,10 +141,14 @@ public class SmsServiceImpl implements SmsService{ PatientsQuery patientsQuery = new PatientsQuery(); patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(hospitalId); + //1孕妇 3 产妇 patientsQuery.setType(1); + //分娩状态 + patientsQuery.setDueStatus(0); - //末次月经必须大于当前时间减去42周视为为分娩孕妇 + //末次月经必须大于当前时间减去42周视为未分娩孕妇 Date lastMensesMax = DateUtil.getNewDate(-42, "周", 1); patientsQuery.setLastMensesStart(lastMensesMax); //健康指导短信 只能是类型为 增值服务 开通状态 才发送 @@ -152,18 +180,7 @@ public class SmsServiceImpl implements SmsService{ messagePrefix = res == "" ? messagePrefix : res; } - //每周几发送的指导实践 - String timeStr = config.getGuideTime(); - if (StringUtils.isEmpty(timeStr)) - { - continue; - } - List guideTimes = JsonUtil.toList(timeStr, String.class); - if (guideTimes == null || guideTimes.size() != 2) - { - continue; - } int weekNum = 0; for (String guide : guideTimes) { @@ -179,7 +196,7 @@ public class SmsServiceImpl implements SmsService{ * 高危短信 */ //获取最后一次高危因素 - List risks = findLastRisk(pat.getId()); + List risks = findLastRisk(pat.getPid()); if (CollectionUtils.isNotEmpty(risks)) { for (Object obj : risks) @@ -2094,7 +2111,7 @@ public class SmsServiceImpl implements SmsService{ if (StringUtils.isNotEmpty(repalceStr)) { String date = DateUtil.getyyyy_MM_dd(checkDate); - return repalceStr.replace("{{姓名}}",name).replace("{{预约检查时间}}",date); + return repalceStr.replace("{{姓名}}",name).replace("{{预约检查时间}}", date); } return repalceStr; } @@ -2125,7 +2142,7 @@ public class SmsServiceImpl implements SmsService{ //前缀类型 0医院前缀 1科室前缀 if (config.getPrefixType() != null && config.getPrefixType() == 1) { - String res = getDeptPrefix(doctorId,config.getDeptPrefix()); + String res = getDeptPrefix(doctorId, config.getDeptPrefix()); messagePrefix = res == "" ? messagePrefix : res; } return messagePrefix; @@ -2275,47 +2292,155 @@ public class SmsServiceImpl implements SmsService{ /** * 获取最后一次高危产检的高危信息 - * + *

* 先取复诊最后一条,在取初诊 * * @return */ - public List findLastRisk(String parentId) { - List list = antenatalExaminationService.findAllByParentId(parentId); - AntenatalExaminationModel model = null; - if (CollectionUtils.isNotEmpty(list)) { - model = list.get(0); + 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)); + } } - try { - if(null!=model){ - List list1 = JsonUtil.toList(model.getRiskFactor(), List.class); - return queryRisk(list1); + + //终止妊娠记录 + 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)); } - } catch (Exception e) { } - AntExChuQuery antExChuQuery = new AntExChuQuery(); - antExChuQuery.setParentId(parentId); - antExChuQuery.setYn(YnEnums.YES.getId()); - List list1 = antenatalExaminationService.queryAntExChu(antExChuQuery); - AntExChuModel antExChuModel = null; - if (CollectionUtils.isNotEmpty(list1)) { - antExChuModel = list1.get(0); + 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 + */ + public 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(null!=antExChuModel){ - List list2 = JsonUtil.toList(antExChuModel.getHighrisk(), List.class); - return queryRisk(list2); + + 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 Collections.emptyList(); + return highScoreResult; } - - public List queryRisk(List id) { + public 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); @@ -2330,10 +2455,68 @@ public class SmsServiceImpl implements SmsService{ } } } - return data; + 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 = DateUtil.parseYMD(maternalDeliverModel.getDueDate()); + 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; + } + } + @Override public void getBirthPatients() { String dateStr = DateUtil.formatSimpleDate(new Date()); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBookbuildingController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBookbuildingController.java index 7d4f5ab..e79c9c2 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBookbuildingController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBookbuildingController.java @@ -100,14 +100,14 @@ public class BabyBookbuildingController extends BaseController { */ @RequestMapping(value = "/queryBabyBuildRecord", method = RequestMethod.GET) @ResponseBody - @TokenRequired +// @TokenRequired public BaseObjectResponse queryBabyBuildRecord(HttpServletRequest request,@RequestParam(required = false)String cardNo,@RequestParam(required = false)String vcCardNo,@RequestParam(required = false)String hospitalId){ BookbuildingQueryRequest param = new BookbuildingQueryRequest(); param.setCardNo(cardNo); param.setVcCardNo(vcCardNo); param.setHospitalId(hospitalId); - LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return babyBookbuildingFacade.queryBabyBuildRecord(param,loginState.getId()); +// LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return babyBookbuildingFacade.queryBabyBuildRecord(param,null); } 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 fd9a3da..ac6fde1 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 @@ -441,6 +441,7 @@ public class BabyBookbuildingFacade { } model.setCreated(new Date()); model.setModified(new Date()); + model.setBuildType(1); model = babyBookbuildingService.addBabyBookbuilding(model); if (model == null || model.getId() == null) { @@ -714,6 +715,7 @@ public class BabyBookbuildingFacade { + return bm; } @@ -733,6 +735,27 @@ public class BabyBookbuildingFacade { return new BaseResponse().setErrorcode(ErrorCodeConstants.DONT_DELETE).setErrormsg("存在儿童检查记录,不能删除建档"); } + BabyModelQuery babyQuery = new BabyModelQuery(); + babyQuery.setId(id); + babyQuery.setYn(YnEnums.YES.getId()); + List models = babyBookbuildingService.queryBabyBuildByCond(babyQuery); + if (CollectionUtils.isNotEmpty(models)) + { + babyQuery.setId(null); + babyQuery.setPid(models.get(0).getPid()); + List allModels = babyBookbuildingService.queryBabyBuildByCond(babyQuery); + if (CollectionUtils.isNotEmpty(allModels)) + { + if (allModels.get(0) != null && allModels.get(0).getId().equals(id) && allModels.size() == 0) + { + PersonModel personModel = new PersonModel(); + personModel.setYn(YnEnums.NO.getId()); + personService.updatePerson(personModel,allModels.get(0).getPid()); + } + } + + } + babyBookbuildingService.deleteBabyById(id); return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } -- 1.8.3.1