diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/BloodSugarStatistics.java b/platform-dal/src/main/java/com/lyms/platform/pojo/BloodSugarStatistics.java new file mode 100644 index 0000000..0202409 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/BloodSugarStatistics.java @@ -0,0 +1,100 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +@Document(collection="lyms_blood_sugar_statistics") +public class BloodSugarStatistics extends BaseModel { + private static final long serialVersionUID = -1; + private String id; + + private String parentId; + + private String pid; + + private Date created; + + private String ymdDate; + + private Integer yn; + private String hospitalId; + + private Date modified; + /** + * 1正常血糖管理、2低血糖管理、3高血糖管理 + */ + private Integer sugarType; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + public String getYmdDate() { + return ymdDate; + } + + public void setYmdDate(String ymdDate) { + this.ymdDate = ymdDate; + } + + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + public Integer getSugarType() { + return sugarType; + } + + public void setSugarType(Integer sugarType) { + this.sugarType = sugarType; + } +} diff --git a/platform-dal/src/main/java/com/lyms/platform/query/BloodSugarStatisticsQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/BloodSugarStatisticsQuery.java new file mode 100644 index 0000000..dfac619 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/query/BloodSugarStatisticsQuery.java @@ -0,0 +1,123 @@ +package com.lyms.platform.query; + +import com.lyms.platform.common.base.IConvertToNativeQuery; +import com.lyms.platform.common.dao.BaseQuery; +import com.lyms.platform.common.dao.operator.MongoCondition; +import com.lyms.platform.common.dao.operator.MongoOper; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.common.utils.StringUtils; +import org.springframework.data.mongodb.core.query.Criteria; + +import java.util.Date; + +public class BloodSugarStatisticsQuery extends BaseQuery implements IConvertToNativeQuery { + + private String pid; + + private Date created; + + private Date startTime; + private Date endTime; + + private String ymdDate; + + private Integer yn; + private String hospitalId; + /** + * 1正常血糖管理、2低血糖管理、3高血糖管理 + */ + private Integer sugarType; + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public String getYmdDate() { + return ymdDate; + } + + public void setYmdDate(String ymdDate) { + this.ymdDate = ymdDate; + } + + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public Integer getSugarType() { + return sugarType; + } + + public void setSugarType(Integer sugarType) { + this.sugarType = sugarType; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + @Override + public MongoQuery convertToQuery() { + MongoCondition condition = MongoCondition.newInstance(); + if (StringUtils.isNotEmpty(hospitalId)) { + condition = condition.and("hospitalId", hospitalId, MongoOper.IS); + } + if (null != yn) { + condition = condition.and("yn", yn, MongoOper.IS); + } + if (null !=sugarType) { + condition = condition.and("sugarType", sugarType, MongoOper.IS); + } + if (StringUtils.isNotEmpty(pid)) { + condition = condition.and("pid", pid, MongoOper.IS); + } + Criteria c = null; + if (startTime!=null && endTime!=null){ + if (null != c) { + c = c.where("created").gte(startTime).lte(endTime); + } else { + } + } + + if (null != c) { + condition = condition.andCondition(new MongoCondition(c)); + } + return condition.toMongoQuery(); + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsConfigController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsConfigController.java index af8508d..acd8a8a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsConfigController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SmsConfigController.java @@ -11,6 +11,7 @@ import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; +import com.lyms.platform.operate.web.facade.PatientServiceFacade; import com.lyms.platform.operate.web.facade.SmsConfigFacade; import com.lyms.platform.operate.web.request.MessageListRequest; import com.lyms.platform.operate.web.request.MessageRequest; @@ -46,6 +47,8 @@ public class SmsConfigController extends BaseController { @Autowired private SmsTemplateService smsTemplateService; + @Autowired + private PatientServiceFacade patientServiceFacade; /** * 添加/更新 短信服务配置 @@ -412,6 +415,14 @@ public class SmsConfigController extends BaseController { return "sendBabyBuildSms finish"; } + @RequestMapping(value = "/send/serviceMsg", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse sendServiceMsg(@RequestParam("hospitalId")String hospitalId){ + patientServiceFacade.sendMsg(hospitalId); + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); + } + @RequestMapping(value = "/sms/build/send", method = RequestMethod.GET) @ResponseBody public String querySmsConfAndTemplate(@RequestParam("patientId")String patientId, diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java index 991ad88..53d9208 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java @@ -16,6 +16,7 @@ import com.lyms.platform.operate.web.facade.BasicConfigFacade; import com.lyms.platform.operate.web.facade.PatientServiceFacade; import com.lyms.platform.operate.web.request.CjStatisticsQueryRequest; import com.lyms.platform.operate.web.request.JdStatisticsQueryRequest; +import com.lyms.platform.operate.web.service.IBloodSugarService; import com.lyms.platform.query.AntExRecordQuery; import com.lyms.platform.query.PatientsQuery; import com.lymsh.platform.reportdata.model.AreaData; @@ -1194,6 +1195,26 @@ public class StatisticsController extends BaseController { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return patientServiceFacade.queryStatistics(loginState.getId(),jdStatisticsQueryRequest); } + @Autowired + private IBloodSugarService bloodSugarService; + + @RequestMapping(value = "/xtStatistics", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse xtStatistics(HttpServletRequest request, String startTime,String endTime){ + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return bloodSugarService.getXtStatistics(loginState.getId(),startTime,endTime); + } + + @RequestMapping(value = "/xtStatistics/list", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse xtStatisticsList(HttpServletRequest request, + String startTime,String endTime, + Integer id,Integer page,Integer limit){ + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return bloodSugarService.getXtStatisticsList(loginState.getId(),startTime,endTime,id,page,limit); + } @RequestMapping(value = "/yjStatistics", method = RequestMethod.GET) @ResponseBody @@ -1202,22 +1223,21 @@ public class StatisticsController extends BaseController { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return antenatalExaminationFacade.antenatalExaminationStatistics(loginState.getId()); } - @RequestMapping(value = "/yjStatistics/list", method = RequestMethod.GET) + @RequestMapping(value = "/yjStatistics/list", method = RequestMethod.POST) @ResponseBody @TokenRequired - public BaseResponse yjStatisticsList(String parentIds, - Integer page, - Integer limit){ - if (StringUtils.isEmpty(parentIds)){ + public BaseResponse yjStatisticsList(@RequestBody Map params){ + Object parentIds=params.get("parentIds"); + if (parentIds==null){ return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } PatientsQuery patientsQuery = new PatientsQuery(); patientsQuery.setNeed("1"); patientsQuery.setYn(1); - patientsQuery.setIds(com.lyms.platform.common.utils.StringUtils.covertToList(parentIds, String.class)); + patientsQuery.setIds(com.lyms.platform.common.utils.StringUtils.covertToList(String.valueOf(parentIds), String.class)); patientsQuery.setNeed("true"); - patientsQuery.setLimit(limit); - patientsQuery.setPage(page); + patientsQuery.setLimit(Integer.valueOf(String.valueOf(params.get("limit")))); + patientsQuery.setPage(Integer.valueOf(String.valueOf(params.get("page")))); return antenatalExaminationFacade.antenatalExaminationStatisticsList(patientsQuery); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java index 609dea2..2c40e4a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientServiceFacade.java @@ -26,6 +26,8 @@ import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 java.util.*; @@ -84,6 +86,9 @@ public class PatientServiceFacade { private AreaCountFacade areaCountFacade; @Autowired private SmsConfigFacade smsConfigFacade; + @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; private static Logger logger = LoggerFactory.getLogger(PatientServiceFacade.class); @@ -566,7 +571,8 @@ public class PatientServiceFacade { @Override public void run() { sendServiceMsg(patients, SmsServiceEnums.FWKT.getId(), "您好,请点击此处查看开通服务内容详情。", "大同市第一人民医院", ServiceObjEnums.YUNOBJ.getId(), 1); - }}).start(); + } + }).start(); } else if (PatientSerEnums.SerTypeEnums.bzfw.getId().intValue() == Integer.parseInt(serInfo.get("serType"))) { @@ -603,11 +609,54 @@ public class PatientServiceFacade { return baseResponse; } + public void sendMsg(String hospitalId) { + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(1); + patientsQuery.setHospitalId(hospitalId); + List list = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(list)) { + List messages = new ArrayList<>(); + for (Patients patients : list) { + Organization organization = organizationService.getOrganization(Integer.valueOf(patients.getHospitalId())); + if (organization != null) { + MsgRequest mr = new MsgRequest(); + mr.setPhone(patients.getPhone()); + mr.setTypeId(ProjectTypeEnums.YNXT.getId()); + mr.setStatus(SmsStatusEnums.WFS.getId()); + mr.setHospitalId(patients.getHospitalId()); + mr.setTempId(patients.getId()); + mr.setPatientId(patients.getId()); + mr.setSmsStatus(SmsStatusEnums.WFS.getId()); + mr.setServiceType(1); //判断发送类型 + mr.setFirst("系统已更新,请刷新小程序进行体验");// + mr.setObjType(1); + mr.setSubTypeId(SmsServiceEnums.FWKT.getId()); + mr.setKeyword1(organization.getName());// + //planTime 和 timeType为必填 否则推送中心会推送异常 + mr.setTimeType(SmsTimeTypeEnums.ONTIME.getId()); + mr.setPlanTime(DateUtil.getyyyy_MM_dd_hms(new Date())); + mr.setKeyword2("产科(系统已更新,请刷新小程序进行体验)"); + mr.setRemark(patients.getUsername()); + mr.setCreated(DateUtil.getyyyy_MM_dd_hms(new Date())); + mr.setWxTempId("tx-UmDE3YMqYgAeFccXB7HIlTuG_tiP9LMdX2bvBpus"); + messages.add(mr); + } + } + if (CollectionUtils.isNotEmpty(messages)){ + smsConfigFacade.saveMsg(messages, hospitalId); + } + + } + } + + + + //大同医院服务推送\短信 public void sendServiceMsg(Patients patient, Integer subTypeId, String first, String keyWord1, Integer objType, Integer type) { if ("2100002419".equals(patient.getHospitalId())) { try { - // Thread.sleep(3000); + // Thread.sleep(3000); logger.info("sendServiceMsg startup"); List messages = new ArrayList<>(); if (type != null) { @@ -636,7 +685,7 @@ public class PatientServiceFacade { request.setKeyword1(title); request.setKeyword2(DateUtil.getyyyy_MM_dd(DateUtil.addDay(new Date(), 0))); messages.add(request); - }else { + } else { MsgRequest mr = new MsgRequest(); mr.setPhone(patient.getPhone()); mr.setTypeId(ProjectTypeEnums.YNXT.getId()); @@ -686,7 +735,7 @@ public class PatientServiceFacade { if (serviceWeek != null) { Date endTime = DateUtil.addWeek(currentDate, serviceWeek); - if (pser.getPerType()==1){ + if (pser.getPerType() == 1) { if (endTime.getTime() > DateUtil.addWeek(lastMenses, 42).getTime()) { endTime = DateUtil.addWeek(lastMenses, 42); } @@ -700,7 +749,7 @@ public class PatientServiceFacade { } if (doctorService != null) { Date endTime = DateUtil.addWeek(currentDate, doctorService); - if (pser.getPerType()==1){ + if (pser.getPerType() == 1) { if (endTime.getTime() > DateUtil.addWeek(lastMenses, 42).getTime()) { endTime = DateUtil.addWeek(lastMenses, 42); } @@ -729,7 +778,7 @@ public class PatientServiceFacade { Date startTime = pser.getSerStartTime(); Date endTime = DateUtil.addWeek(pser.getSerEndTime(), serviceWeek); - if (pser.getPerType()==1){ + if (pser.getPerType() == 1) { if (endTime.getTime() > DateUtil.addWeek(lastMenses, 42).getTime()) { endTime = DateUtil.addWeek(lastMenses, 42); } @@ -756,7 +805,7 @@ public class PatientServiceFacade { if (doctorWeek != null && doctorWeek > 0) { if (pser.getDocEndTime() != null && pser.getDocEndTime().getTime() > new Date().getTime()) { Date endTime = DateUtil.addWeek(pser.getDocEndTime(), doctorWeek); - if (pser.getPerType()==1){ + if (pser.getPerType() == 1) { if (endTime.getTime() > DateUtil.addWeek(lastMenses, 42).getTime()) { endTime = DateUtil.addWeek(lastMenses, 42); } @@ -1289,7 +1338,7 @@ public class PatientServiceFacade { //指定医生 jsonObject.put("serDoct", ps.getSerDoct() == null ? "" : ps.getSerDoct()); //开通医生 - jsonObject.put("createUser", StringUtils.isNotEmpty(ps.getCreateUser())? ps.getCreateUser():""); + jsonObject.put("createUser", StringUtils.isNotEmpty(ps.getCreateUser()) ? ps.getCreateUser() : ""); //服务状态 jsonObject.put("serStatus", ps.getSerStatus()); jsonObject.put("hospitalId", ps.getHospitalId()); @@ -1542,6 +1591,7 @@ public class PatientServiceFacade { // } // } } + @Autowired private CommunityConfigService communityConfigService; @Autowired @@ -1555,33 +1605,33 @@ public class PatientServiceFacade { return baseResponse; } - PatientsQuery patientsQuery=new PatientsQuery(); + PatientsQuery patientsQuery = new PatientsQuery(); patientsQuery.setYn(1); patientsQuery.setHospitalId(hospitalId); patientsQuery.setNeed("1"); patientsQuery.setPage(statisticsQueryRequest.getPage()); patientsQuery.setLimit(statisticsQueryRequest.getLimit()); - if (StringUtils.isNotEmpty(statisticsQueryRequest.getDueDate())){ - String time=statisticsQueryRequest.getDueDate(); - String array[]= time.split(" - "); - patientsQuery.setDueDateStart(DateUtil.parseYMDHMS(array[0]+" 00:00:00")); - patientsQuery.setDueDateEnd(DateUtil.parseYMDHMS(array[1]+" 23:59:59")); + if (StringUtils.isNotEmpty(statisticsQueryRequest.getDueDate())) { + String time = statisticsQueryRequest.getDueDate(); + String array[] = time.split(" - "); + patientsQuery.setDueDateStart(DateUtil.parseYMDHMS(array[0] + " 00:00:00")); + patientsQuery.setDueDateEnd(DateUtil.parseYMDHMS(array[1] + " 23:59:59")); } - if (StringUtils.isNotEmpty(statisticsQueryRequest.getBookbuildingDoctor())){ + if (StringUtils.isNotEmpty(statisticsQueryRequest.getBookbuildingDoctor())) { patientsQuery.setBookbuildingDoctor(statisticsQueryRequest.getBookbuildingDoctor()); } - if (StringUtils.isNotEmpty(statisticsQueryRequest.getBookbuildingDate())){ - String time=statisticsQueryRequest.getBookbuildingDate(); - String array[]= time.split(" - "); - patientsQuery.setBookbuildingDateStart(DateUtil.parseYMDHMS(array[0]+" 00:00:00")); - patientsQuery.setBookbuildingDateEnd(DateUtil.parseYMDHMS(array[1]+" 23:59:59")); + if (StringUtils.isNotEmpty(statisticsQueryRequest.getBookbuildingDate())) { + String time = statisticsQueryRequest.getBookbuildingDate(); + String array[] = time.split(" - "); + patientsQuery.setBookbuildingDateStart(DateUtil.parseYMDHMS(array[0] + " 00:00:00")); + patientsQuery.setBookbuildingDateEnd(DateUtil.parseYMDHMS(array[1] + " 23:59:59")); } List data = new ArrayList<>(); - if (statisticsQueryRequest.getType()==0){ - if (StringUtils.isEmpty(statisticsQueryRequest.getBookbuildingDoctor())){ + if (statisticsQueryRequest.getType() == 0) { + if (StringUtils.isEmpty(statisticsQueryRequest.getBookbuildingDoctor())) { patientsQuery.setNebookbuildingDoctor("1"); } - List list = patientsService.aggregatbookbuildingDoctore(patientsQuery); + List list = patientsService.aggregatbookbuildingDoctore(patientsQuery); for (HashMap map : list) { CjStatisticsResult cjStatisticsResult = new CjStatisticsResult(); String dId = null; @@ -1601,7 +1651,7 @@ public class PatientServiceFacade { Users users = usersService.getUsers(Integer.valueOf(dId)); if (null != users) { cjStatisticsResult.setdName(users.getName()); - }else { + } else { continue; } } @@ -1611,10 +1661,10 @@ public class PatientServiceFacade { } Collections.sort(data, new CjStatisticsResult()); baseResponse.setObject(data); - }else { + } else { List patientsList = patientsService.queryPatient(patientsQuery); - List patientManagerQueryModelList = new ArrayList <>(); - if (CollectionUtils.isNotEmpty(patientsList)){ + List patientManagerQueryModelList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(patientsList)) { if (CollectionUtils.isNotEmpty(patientsList)) { for (Patients patients : patientsList) { PatientManagerQueryModel patientManagerQueryModel = new PatientManagerQueryModel(); @@ -1643,14 +1693,11 @@ public class PatientServiceFacade { } if (!"-".equals(patientManagerQueryModel.getRiskFactorId()) && org.apache.commons.lang.StringUtils.isNotEmpty(patients.getoRiskFactor())) { - patientManagerQueryModel.setRiskFactorId(patientManagerQueryModel.getRiskFactorId()+","+patients.getoRiskFactor()); - }else if (org.apache.commons.lang.StringUtils.isNotEmpty(patients.getoRiskFactor())) - { + patientManagerQueryModel.setRiskFactorId(patientManagerQueryModel.getRiskFactorId() + "," + patients.getoRiskFactor()); + } else if (org.apache.commons.lang.StringUtils.isNotEmpty(patients.getoRiskFactor())) { patientManagerQueryModel.setRiskFactorId(patients.getoRiskFactor()); } - } - else if (org.apache.commons.lang.StringUtils.isNotEmpty(patients.getoRiskFactor())) - { + } else if (org.apache.commons.lang.StringUtils.isNotEmpty(patients.getoRiskFactor())) { patientManagerQueryModel.setRiskFactorId(patients.getoRiskFactor()); } @@ -1674,21 +1721,21 @@ public class PatientServiceFacade { } Organization org = organizationService.getOrganization(Integer.valueOf(patients.getHospitalId())); - if(null != org){ + if (null != org) { patientManagerQueryModel.setOrgType(org.getType()); } String comm = "未分配"; - if(StringUtils.isNotEmpty(patients.getCommunityId())){ + if (StringUtils.isNotEmpty(patients.getCommunityId())) { CommunityConfig communityConfig = communityConfigService.getCommunityById(patients.getCommunityId()); - if(null != communityConfig){ + if (null != communityConfig) { comm = communityConfig.getName(); } } patientManagerQueryModel.setCouponCommunity(comm); patientManagerQueryModel.setTypeStr(patients.getType() == 1 ? "未分娩" : "已分娩"); patientManagerQueryModel.setYyzyfmHospitalName( - (patients.getYyzyfmHospitalId() != null && "-1".equals(patients.getYyzyfmHospitalId())) ? "其他" : couponMapper.getHospitalName(patients.getYyzyfmHospitalId())); + (patients.getYyzyfmHospitalId() != null && "-1".equals(patients.getYyzyfmHospitalId())) ? "其他" : couponMapper.getHospitalName(patients.getYyzyfmHospitalId())); patientManagerQueryModel.setAge(DateUtil.getAge(patients.getBirth())); patientManagerQueryModel.setpId(patients.getPid()); String dueWeek = ""; @@ -1784,7 +1831,7 @@ public class PatientServiceFacade { return baseResponse; } - public BaseResponse getPatientList(PatientsQuery patientsQuery,Integer userId){ + public BaseResponse getPatientList(PatientsQuery patientsQuery, Integer userId) { BaseListResponse baseResponse = new BaseListResponse(); String hospitalId = autoMatchFacade.getHospitalId(userId); if (StringUtils.isEmpty(hospitalId)) { @@ -1795,7 +1842,7 @@ public class PatientServiceFacade { patientsQuery.setYn(1); patientsQuery.setServiceType(1); patientsQuery.setNeed("true"); - List list= patientsService.queryPatient(patientsQuery); + List list = patientsService.queryPatient(patientsQuery); baseResponse.setPageInfo(patientsQuery.getPageInfo()); baseResponse.setData(list); return baseResponse; diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBloodSugarService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBloodSugarService.java index 2b9a6d0..8893c24 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBloodSugarService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBloodSugarService.java @@ -45,4 +45,6 @@ public interface IBloodSugarService extends IBaseService { BaseResponse queryDiabetesRecord(String patientId); BaseResponse getDoctorWx(String patientId); + BaseResponse getXtStatistics(Integer userId,String startTime,String endTime); + BaseResponse getXtStatisticsList(Integer userId,String startTime,String endTime,Integer id,Integer page,Integer limit); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java index 8d964e4..d15047e 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.lyms.platform.beans.MsgRequest; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.enums.*; import com.lyms.platform.common.result.*; import com.lyms.platform.common.utils.BeanUtils; @@ -29,16 +30,16 @@ import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.PatientServiceService; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.*; -import com.lyms.platform.query.AntExChuQuery; -import com.lyms.platform.query.AntExRecordQuery; -import com.lyms.platform.query.BloodSugarQuery; -import com.lyms.platform.query.PatientsQuery; +import com.lyms.platform.query.*; import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.map.HashedMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationOperation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; @@ -111,11 +112,13 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga private ThreadPoolTaskExecutor commonThreadPool; public BaseResponse add(Integer userId, BloodSugar bloodSugar) { - + String ymd= DateUtil.getyyyy_MM_dd(new Date()); + String hospitalId= autoMatchFacade.getHospitalId(userId); Patients patients = mongoTemplate.findById(bloodSugar.getParentId(), Patients.class); String pid = patients.getPid(); BloodSugar one = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid).and("created").gt(DateUtil.getYMDTime()).and("bloodSugarType").is(bloodSugar.getBloodSugarType())), BloodSugar.class); - + BloodSugarStatistics sugarStatistics=mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid).and("ymdDate").is(ymd)), BloodSugarStatistics.class); + Integer sugarType=0; if (one != null) { //one.setSugarType(sugarType); one.setModified(new Date()); @@ -125,26 +128,52 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga } one.setRiskFactorId(patients.getRiskFactorId()); bloodSugarService.update(one); + sugarType=one.getSugarType(); + saveOrUpdate(sugarStatistics,patients,hospitalId,ymd,sugarType); return RespBuilder.buildSuccess(one.getId()); } // bloodSugar.setSugarType(sugarType); bloodSugar.setParentId(patients.getId()); - bloodSugar.setHospitalId(autoMatchFacade.getHospitalId(userId)); + bloodSugar.setHospitalId(hospitalId); bloodSugar.setCreated(new Date()); bloodSugar.setCreateUser(userId); bloodSugar.setYn(YnEnums.YES.getId()); bloodSugar.setModified(new Date()); - bloodSugar.setCreatYmdDate(DateUtil.getyyyy_MM_dd(new Date())); + bloodSugar.setCreatYmdDate(ymd); bloodSugar.setPid(pid); bloodSugar.setRiskFactorId(patients.getRiskFactorId()); bloodSugarService.add(bloodSugar); - + sugarType=bloodSugar.getSugarType(); + saveOrUpdate(sugarStatistics,patients,hospitalId,ymd,sugarType); Update up = new Update(); up.set("exceptionSend", 0); mongoTemplate.updateMulti(Query.query(Criteria.where("pid").is(pid)), up, BloodSugar.class); return RespBuilder.buildSuccess(bloodSugar.getId()); } + public void saveOrUpdate(BloodSugarStatistics sugarStatistics, + Patients patients, + String hospitalId, + String ymd, + Integer sugarType){ + if (sugarStatistics!=null){ + Update up = new Update(); + up.set("sugarType", sugarType); + up.set("modified",new Date()); + mongoTemplate.updateMulti(Query.query(Criteria.where("id").is(sugarStatistics.getId())), up, BloodSugarStatistics.class); + }else { + sugarStatistics=new BloodSugarStatistics(); + sugarStatistics.setParentId(patients.getId()); + sugarStatistics.setPid(patients.getPid()); + sugarStatistics.setSugarType(sugarType); + sugarStatistics.setCreated(new Date()); + sugarStatistics.setHospitalId(hospitalId); + sugarStatistics.setYn(YnEnums.YES.getId()); + sugarStatistics.setYmdDate(ymd); + mongoTemplate.save(sugarStatistics); + } + } + /** * * @param type 1正常血糖管理、2低血糖管理、3高血糖管理 @@ -224,7 +253,6 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga temp.put("vcCardNo", p.getVcCardNo()); temp.put("pcerteTypeId", p.getPcerteTypeId()); temp.put("cardNo", p.getCardNo()); - temp.put("cardNo", p.getCardNo()); temp.put("isPrint", null==bloodSugar.getIsPrint()?"":bloodSugar.getIsPrint()==1?"已打印":"未打印"); } restList.add(temp); @@ -414,12 +442,17 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga public BaseResponse wxAdd(String parentId, String bloodSugar, Integer bloodSugarType, boolean flag) { Patients patients = mongoTemplate.findById(parentId, Patients.class); String pid = patients.getPid(); + String ymd=DateUtil.getyyyy_MM_dd(new Date()); BloodSugar one = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid).and("created").gt(DateUtil.getYMDTime()).and("bloodSugarType").is(bloodSugarType)), BloodSugar.class); + BloodSugarStatistics sugarStatistics=mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid).and("ymdDate").is(ymd)), BloodSugarStatistics.class); + Integer sugarType=0; if (one != null) { one.setModified(new Date()); one.setBloodSugar(bloodSugar); one.setRiskFactorId(patients.getRiskFactorId()); bloodSugarService.update(one); + sugarType=one.getSugarType(); + saveOrUpdate(sugarStatistics,patients,patients.getHospitalId(),ymd,sugarType); Update up = new Update(); up.set("exceptionSend", 0); mongoTemplate.updateMulti(Query.query(Criteria.where("pid").is(pid)), up, BloodSugar.class); @@ -435,9 +468,10 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga one.setYn(YnEnums.YES.getId()); one.setModified(new Date()); one.setRiskFactorId(patients.getRiskFactorId()); - one.setCreatYmdDate(DateUtil.getyyyy_MM_dd(new Date())); + one.setCreatYmdDate(ymd); if (!flag) { bloodSugarService.add(one); + sugarType=one.getSugarType(); } else { String str= getBloodSugarStatus(patients.getRiskFactorId(),patients.getHospitalId(),one.getBloodSugarType(), one.getBloodSugar()); Integer type=1; @@ -448,8 +482,9 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga } one.setSugarType(type); mongoTemplate.save(one); + sugarType=type; } - + saveOrUpdate(sugarStatistics,patients,patients.getHospitalId(),ymd,sugarType); Update up = new Update(); up.set("exceptionSend", 0); mongoTemplate.updateMulti(Query.query(Criteria.where("pid").is(pid)), up, BloodSugar.class); @@ -1767,6 +1802,80 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga return RespBuilder.buildSuccess(restList); } + @Override + public BaseResponse getXtStatistics(Integer userId, String startTime, String endTime) { + String hospitalId= autoMatchFacade.getHospitalId(userId); + BloodSugarStatisticsQuery query=new BloodSugarStatisticsQuery(); + query.setHospitalId(hospitalId); + query.setYn(1); + query.setStartTime(DateUtil.parseYMDHMS(startTime+" 00:00:00")); + query.setEndTime(DateUtil.parseYMDHMS(endTime+" 23:59:59")); + BaseResponse baseResponse=new BaseResponse(); + baseResponse.setObject(aggregateOne(query.convertToQuery())); + baseResponse.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); + baseResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + return baseResponse; + } + + @Override + public BaseResponse getXtStatisticsList(Integer userId, + String startTime, String endTime, Integer id, + Integer page,Integer limit) { + String hospitalId= autoMatchFacade.getHospitalId(userId); + Criteria criteria = Criteria.where("hospitalId").is(hospitalId); + criteria.and("yn").is(1); + if (id!=null){ + //1正常血糖管理、2低血糖管理、3高血糖管理 + criteria.and("sugarType").is(id); + } + Query query = Query.query(criteria).with(new Sort(Sort.Direction.DESC, "created")); + PageResult pageResult = findMongoPage(BloodSugarStatistics.class, query, page, limit); + List bloodSugars = (List) pageResult.getGrid(); + List> restList = new ArrayList<>(); + for (BloodSugarStatistics bloodSugar : bloodSugars) { + Map temp = new HashMap<>(); + Patients p = mongoTemplate.findById(bloodSugar.getParentId(), Patients.class); + temp.put("id", bloodSugar.getParentId()); + temp.put("zid", bloodSugar.getId()); + if (p != null) { + temp.put("username", p.getUsername()); + temp.put("time", DateUtil.getyyyy_MM_dd(bloodSugar.getModified())); + temp.put("age", DateUtil.getAge(p.getBirth())); + temp.put("week", DateUtil.getWeekDesc(p.getLastMenses(), new Date())); + temp.put("riskLevel", commonService.findRiskLevel(p.getRiskLevelId())); //高危等级(颜色) + String rFactor = commonService.resloveFactor(p.getRiskFactorId()); + if (p.getoRiskFactor() != null && !"null".equals(p.getoRiskFactor())) { + if (StringUtils.isNotEmpty(rFactor)) { + rFactor += "," + p.getoRiskFactor(); + } else { + rFactor = p.getoRiskFactor(); + } + } + temp.put("riskFactor", rFactor); // 高危因素 + temp.put("dueDate", DateUtil.getyyyy_MM_dd(p.getDueDate())); + temp.put("status", bloodSugar.getSugarType()); + temp.put("vcCardNo", p.getVcCardNo()); + temp.put("pcerteTypeId", p.getPcerteTypeId()); + temp.put("cardNo", p.getCardNo()); + } + restList.add(temp); + } + pageResult.setGrid(restList); + return RespBuilder.buildSuccess(pageResult); + } + + public List aggregateOne(MongoQuery mongoQuery) { + AggregationOperation match = Aggregation.match(mongoQuery.getCriteria()); + + AggregationOperation group = Aggregation.group("sugarType").count().as("count"); + + Aggregation aggregation = Aggregation.newAggregation(match, group); + + AggregationResults result = mongoTemplate.aggregate(aggregation, "lyms_blood_sugar_statistics", HashMap.class); + return result.getMappedResults(); + } + + public void initSugar(){ final List bloodSugars = mongoTemplate.find( new Query(new Criteria().and("yn").is(1)),BloodSugar.class); commonThreadPool.execute(new Runnable() {