From 9e61c8273e78ee7e6eb2f21e17fef55e530bd5e9 Mon Sep 17 00:00:00 2001 From: hujiaqi Date: Wed, 30 Nov 2016 11:35:35 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E4=BA=A7=E6=9C=9F=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lyms/platform/biz/dal/IPatientDao.java | 5 +- .../lyms/platform/biz/dal/impl/PatientDaoImpl.java | 46 ++++- .../lyms/platform/biz/service/PatientsService.java | 4 + .../biz/service/PredictedStatisticsService.java | 12 ++ .../com/lyms/platform/common/utils/DateUtil.java | 35 +++- .../pojo/PredictedStatisticsCountModel.java | 28 +++ .../web/controller/BCTransferInController.java | 31 ++-- .../controller/PredictedStatisticsController.java | 91 ++++++++++ .../operate/web/facade/BCTransferInFacade.java | 8 +- .../web/facade/PredictedStatisticsFacade.java | 199 +++++++++++++++++++++ .../web/request/PredictedStatisticsRequest.java | 39 ++++ .../web/request/PredictedStatisticsSumRequest.java | 29 +++ .../web/result/PredictedStatisticsQueryModel.java | 123 +++++++++++++ .../result/PredictedStatisticsQuerySumModel.java | 9 + .../web/result/PredictedStatisticsResult.java | 11 ++ .../web/result/PredictedStatisticsSumResult.java | 11 ++ .../operate/web/result/RiskLevelResultModel.java | 29 +++ 17 files changed, 679 insertions(+), 31 deletions(-) create mode 100644 platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PredictedStatisticsService.java create mode 100644 platform-dal/src/main/java/com/lyms/platform/pojo/PredictedStatisticsCountModel.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PredictedStatisticsController.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PredictedStatisticsFacade.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsRequest.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsSumRequest.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQueryModel.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQuerySumModel.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsResult.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsSumResult.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/RiskLevelResultModel.java diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java index 06e3cfd..b6f393c 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/IPatientDao.java @@ -3,8 +3,7 @@ package com.lyms.platform.biz.dal; import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.dao.operator.Page; import com.lyms.platform.pojo.Patients; -import com.lyms.platform.pojo.PuerperaModel; -import com.mongodb.Mongo; +import com.lyms.platform.pojo.PredictedStatisticsCountModel; import java.util.HashMap; import java.util.List; @@ -35,5 +34,7 @@ public interface IPatientDao { void updatePatientOneCol(String id, Object colValue); + List predictedStatistics(); + List aggregateOne(MongoQuery mongoQuery); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java index aadfa28..25caa39 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/dal/impl/PatientDaoImpl.java @@ -6,14 +6,12 @@ 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.dao.operator.Page; -import com.lyms.platform.pojo.AntenatalExaminationModel; -import com.lyms.platform.pojo.BabyModel; import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.PredictedStatisticsCountModel; import org.bson.types.ObjectId; 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.aggregation.Field; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; @@ -45,6 +43,48 @@ public class PatientDaoImpl extends BaseMongoDAOImpl implements IPatie } @Override + public List predictedStatistics() { + // List predictedStatisticsCountModelList = new ArrayList<>(); + // DBCollection dbCollection = this.mongoTemplate.getCollection("lyms_patient"); + // SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); + // String date = simpleDateFormat.format(new Date()); + // String map = "function() { " + + // "var date; " + + // "if (this['dueDate'] &&(this.dueDate.getFullYear()+'-'+(this.dueDate.getMonth()+1) == '" + date + "')) " + + // "{date = '" + date + "';} "; + // for (int i = 1; i < 10; i++) { + // map += "else if(this['dueDate'] &&(this.dueDate.getFullYear()+'-'+(this.dueDate.getMonth()+1) == '" + DateUtil.addMonthWithout0(date, i) + "'))" + + // "{date = '" + DateUtil.addMonthWith0(date, i) + "';} "; + // } + // map += "emit(date, 1);}"; + // String reduce = "function(key, values) { " + + // "var sum = 0; " + + // "values.forEach(function(doc) { " + + // "sum += 1; " + + // "}); " + + // "return sum;} "; + // System.out.println(map); + // MapReduceCommand mapReduceCommand = new MapReduceCommand(dbCollection, map, reduce, + // null, MapReduceCommand.OutputType.INLINE, null); + // MapReduceOutput mapReduceOutput = dbCollection.mapReduce(mapReduceCommand); + // Map resultMap = new HashMap<>(); + // for (DBObject dbObject : mapReduceOutput.results()) { + // if (dbObject.get("_id") != null) { + // resultMap.put(dbObject.get("_id").toString(), dbObject.get("value").toString()); + // } + // } + // for (int i = 0; i < 10; i++) { + // PredictedStatisticsCountModel predictedStatisticsCountModel = new PredictedStatisticsCountModel(); + // predictedStatisticsCountModel.setPredicted(DateUtil.addMonthWith0(date, i)); + // String number = resultMap.get(DateUtil.addMonthWith0(date, i)); + // predictedStatisticsCountModel.setNumber(number == null ? "0" : String.valueOf(Double.valueOf(number).intValue())); + // predictedStatisticsCountModelList.add(predictedStatisticsCountModel); + // } + // return predictedStatisticsCountModelList; + return null; + } + + @Override public void updatePatient(Patients obj, String id) { update(new MongoQuery(new MongoCondition("id", id, MongoOper.IS)).convertToMongoQuery(), obj); } diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java index 5aaa09b..2e8dd0f 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientsService.java @@ -391,6 +391,10 @@ public class PatientsService { iPatientDao.updatePatientByPid(patientUpdate, pid); } + public List predictedStatistics() { + return iPatientDao.predictedStatistics(); + } + private class PatientWorker extends Thread { private List patientses; private long startTime; diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PredictedStatisticsService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PredictedStatisticsService.java new file mode 100644 index 0000000..bed91dc --- /dev/null +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PredictedStatisticsService.java @@ -0,0 +1,12 @@ +package com.lyms.platform.biz.service; + +import org.springframework.stereotype.Service; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 14时11分 + * @discription + */ +@Service +public class PredictedStatisticsService { +} diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java index 76a9222..430b439 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java @@ -1,11 +1,12 @@ package com.lyms.platform.common.utils; -import org.apache.commons.lang.time.DateUtils; import org.joda.time.DateTime; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; public class DateUtil { @@ -806,4 +807,34 @@ public class DateUtil { } + + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 11时30分 + * @discription 这个方法是为了孕产妇围产管理-统计管理-预产期统计管理定制,请慎重使用 + */ + public static String addMonthWithout0(String date, int add) { + int year = Integer.valueOf(date.substring(0, 4)); + int month = Integer.valueOf(date.substring(5)) + add; + if (month < 13) { + date = year + "-" + month; + } else { + date = (year + 1) + "-" + (month - 12); + } + return date; + } + + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 11时30分 + * @discription 这个方法是为了孕产妇围产管理-统计管理-预产期统计管理定制,请慎重使用 + */ + public static String addMonthWith0(String date, int add) { + date = addMonthWithout0(date, add); + if (date.substring(5).length() == 1) { + date = date.substring(0, 4) + "-" + 0 + date.substring(5); + } + return date; + } + } diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/PredictedStatisticsCountModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/PredictedStatisticsCountModel.java new file mode 100644 index 0000000..e6bac78 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/PredictedStatisticsCountModel.java @@ -0,0 +1,28 @@ +package com.lyms.platform.pojo; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 15时12分 + * @discription + */ +public class PredictedStatisticsCountModel { + + private String predicted; + private String number; + + public String getPredicted() { + return predicted; + } + + public void setPredicted(String predicted) { + this.predicted = predicted; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BCTransferInController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BCTransferInController.java index 6162e6c..7d929b3 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BCTransferInController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BCTransferInController.java @@ -26,7 +26,10 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @auther HuJiaqi @@ -117,9 +120,8 @@ public class BCTransferInController extends BaseController { */ @ResponseBody @RequestMapping(value = "query", method = RequestMethod.POST) - public BaseListResponse query(HttpServletRequest httpServletRequest, - @RequestParam String startDate, - @RequestParam String endDate, + public BaseListResponse query(@RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, @RequestParam Integer page, @RequestParam Integer limit) { BaseListResponse baseListResponse; @@ -135,12 +137,7 @@ public class BCTransferInController extends BaseController { bcTransferInQueryRequest.setPage(page); bcTransferInQueryRequest.setLimit(limit); - // TODO HuJiaqi-这里是自测使用的调试需要修改 - // LoginContext loginContext = (LoginContext) httpServletRequest.getAttribute("loginContext"); - // Integer operatorId = loginContext.getId(); - Integer operatorId = 123456; - - BCTransferInQueryResult bcTransferInQueryResult = bcTransferInFacade.query(bcTransferInQueryRequest, operatorId); + BCTransferInQueryResult bcTransferInQueryResult = bcTransferInFacade.query(bcTransferInQueryRequest); if (bcTransferInQueryResult.getErrorcode() != ErrorCodeConstants.SUCCESS) { baseListResponse = new BaseListResponse().setErrorcode(bcTransferInQueryResult.getErrorcode()).setErrormsg(bcTransferInQueryResult.getErrormsg()); return baseListResponse; @@ -154,9 +151,9 @@ public class BCTransferInController extends BaseController { } @RequestMapping(value = "excel", method = RequestMethod.GET) - public void excel(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, - @RequestParam String startDate, - @RequestParam String endDate, + public void excel(HttpServletResponse httpServletResponse, + @RequestParam(required = false) String startDate, + @RequestParam(required = false) String endDate, @RequestParam Integer page, @RequestParam Integer limit) { try { @@ -166,14 +163,9 @@ public class BCTransferInController extends BaseController { bcTransferInQueryRequest.setPage(page); bcTransferInQueryRequest.setLimit(limit); - // TODO HuJiaqi-这里是自测使用的调试需要修改 - // LoginContext loginContext = (LoginContext) httpServletRequest.getAttribute("loginContext"); - // Integer operatorId = loginContext.getId(); - Integer operatorId = 123456; - // 这里返回的结果必然是这个泛型,之所以query返回的结果集没有用泛型是为了更好的传递数据 @SuppressWarnings("unchecked") - List bcTransferInHistoryQueryModelList = bcTransferInFacade.query(bcTransferInQueryRequest, operatorId).getData(); + List bcTransferInHistoryQueryModelList = bcTransferInFacade.query(bcTransferInQueryRequest).getData(); List> list = new ArrayList<>(); for (BCTransferInHistoryQueryModel bcTransferInHistoryQueryModel : bcTransferInHistoryQueryModelList) { Map map = BeanUtils.objectToObjectMap(bcTransferInHistoryQueryModel); @@ -189,7 +181,6 @@ public class BCTransferInController extends BaseController { header.put("total", "数量"); header.put("inOperatorName", "经办人"); header.put("isCancel", "可否撤销"); - // httpServletResponse.setHeader("Content-Disposition", "attachment;fileName=" + "证明入库(" + startDate + "至" + endDate + ").xls"); httpServletResponse.setContentType("application/force-download"); httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + new String(("证明入库(" + startDate + "至" + endDate + ").xls").getBytes("UTF-8"), "ISO-8859-1")); ExcelUtil.toExcel(httpServletResponse.getOutputStream(), list, header); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PredictedStatisticsController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PredictedStatisticsController.java new file mode 100644 index 0000000..545d18e --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PredictedStatisticsController.java @@ -0,0 +1,91 @@ +package com.lyms.platform.operate.web.controller; + +import com.lyms.platform.common.annotation.TokenRequired; +import com.lyms.platform.common.base.LoginContext; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.result.BaseListResponse; +import com.lyms.platform.operate.web.facade.PredictedStatisticsFacade; +import com.lyms.platform.operate.web.request.PredictedStatisticsRequest; +import com.lyms.platform.operate.web.request.PredictedStatisticsSumRequest; +import com.lyms.platform.operate.web.result.PredictedStatisticsResult; +import com.lyms.platform.operate.web.result.PredictedStatisticsSumResult; +import org.apache.log4j.Logger; +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; + +import javax.servlet.http.HttpServletRequest; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 11时31分 + * @discription 孕产妇围产管理-统计管理-预产期统计管理 + */ +@Controller +public class PredictedStatisticsController { + + private Logger log = Logger.getLogger(this.getClass()); + + @Autowired + private PredictedStatisticsFacade predictedStatisticsFacade; + + @ResponseBody + @TokenRequired + @RequestMapping(value = "predictedStatistics", method = RequestMethod.POST) + public BaseListResponse predictedStatistics(HttpServletRequest httpServletRequest, + @RequestParam(required = false) String doctorId, + @RequestParam Integer page, + @RequestParam Integer limit, + @RequestParam(required = false) String date) { + BaseListResponse baseListResponse; + try { + PredictedStatisticsRequest predictedStatisticsRequest = new PredictedStatisticsRequest(); + predictedStatisticsRequest.setDoctorId(doctorId); + predictedStatisticsRequest.setPage(page); + predictedStatisticsRequest.setLimit(limit); + predictedStatisticsRequest.setDate(date); + + predictedStatisticsRequest.setOperatorId(((LoginContext) httpServletRequest.getAttribute("loginContext")).getId()); + + PredictedStatisticsResult predictedStatisticsResult = predictedStatisticsFacade.predictedStatistics(predictedStatisticsRequest); + if (predictedStatisticsResult.getErrorcode() != ErrorCodeConstants.SUCCESS) { + baseListResponse = new BaseListResponse().setErrorcode(predictedStatisticsResult.getErrorcode()).setErrormsg(predictedStatisticsResult.getErrormsg()); + return baseListResponse; + } + baseListResponse = new BaseListResponse().setErrorcode(predictedStatisticsResult.getErrorcode()).setErrormsg(predictedStatisticsResult.getErrormsg()).setData(predictedStatisticsResult.getData()).setPageInfo(predictedStatisticsResult.getPageInfo()); + } catch (Exception e) { + baseListResponse = new BaseListResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg(ErrorCodeConstants.SYSTEM_ERROR_DESCRIPTION); + log.error("predictedStatistics异常:" + e); + } + return baseListResponse; + } + + @ResponseBody + @TokenRequired + @RequestMapping(value = "predictedStatisticsSum", method = RequestMethod.POST) + public BaseListResponse predictedStatisticsSum(HttpServletRequest httpServletRequest, + @RequestParam(required = false) String doctorId) { + BaseListResponse baseListResponse; + try { + PredictedStatisticsSumRequest predictedStatisticsRequest = new PredictedStatisticsSumRequest(); + predictedStatisticsRequest.setDoctorId(doctorId); + + predictedStatisticsRequest.setOperatorId(((LoginContext) httpServletRequest.getAttribute("loginContext")).getId()); + + PredictedStatisticsSumResult predictedStatisticsSumResult = predictedStatisticsFacade.predictedStatisticsSum(predictedStatisticsRequest); + if (predictedStatisticsSumResult.getErrorcode() != ErrorCodeConstants.SUCCESS) { + baseListResponse = new BaseListResponse().setErrorcode(predictedStatisticsSumResult.getErrorcode()).setErrormsg(predictedStatisticsSumResult.getErrormsg()); + return baseListResponse; + } + baseListResponse = new BaseListResponse().setErrorcode(predictedStatisticsSumResult.getErrorcode()).setErrormsg(predictedStatisticsSumResult.getErrormsg()).setData(predictedStatisticsSumResult.getData()); + } catch (Exception e) { + baseListResponse = new BaseListResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg(ErrorCodeConstants.SYSTEM_ERROR_DESCRIPTION); + log.error("predictedStatistics异常:" + e); + } + return baseListResponse; + } + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BCTransferInFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BCTransferInFacade.java index b71550c..bfde361 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BCTransferInFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BCTransferInFacade.java @@ -147,12 +147,12 @@ public class BCTransferInFacade { return bcTransferInCancelResult; } - public BCTransferInQueryResult query(BCTransferInQueryRequest bcTransferInQueryRequest, Integer operatorId) { + public BCTransferInQueryResult query(BCTransferInQueryRequest bcTransferInQueryRequest) { BCTransferInQueryResult bcTransferInQueryResult = new BCTransferInQueryResult(); BCTransferInHistoryQuery bcTransferInHistoryQuery = new BCTransferInHistoryQuery(); - BeanUtils.copy(bcTransferInQueryRequest,bcTransferInHistoryQuery); + BeanUtils.copy(bcTransferInQueryRequest, bcTransferInHistoryQuery); // 查询 @@ -165,9 +165,9 @@ public class BCTransferInFacade { for (BCTransferInHistoryModel bcTransferInHistoryModel : bcTransferInHistoryModelList) { BCTransferInHistoryQueryModel bcTransferInHistoryQueryModel = new BCTransferInHistoryQueryModel(); BeanUtils.copy(bcTransferInHistoryModel, bcTransferInHistoryQueryModel); - if(BCEnums.TRANSFER_IN_HISTORY_EXIST.code.equals(bcTransferInHistoryModel.getStatus())){ + if (BCEnums.TRANSFER_IN_HISTORY_EXIST.code.equals(bcTransferInHistoryModel.getStatus())) { bcTransferInHistoryQueryModel.setIsCancel(TRANSFER_IN_HISTORY_QUERY_YES.code); - }else{ + } else { bcTransferInHistoryQueryModel.setIsCancel(TRANSFER_IN_HISTORY_QUERY_NO.code); } bcTransferInHistoryQueryModelList.add(bcTransferInHistoryQueryModel); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PredictedStatisticsFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PredictedStatisticsFacade.java new file mode 100644 index 0000000..8d356a3 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PredictedStatisticsFacade.java @@ -0,0 +1,199 @@ +package com.lyms.platform.operate.web.facade; + +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.enums.RiskDefaultTypeEnum; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.utils.BeanUtils; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.request.PredictedStatisticsRequest; +import com.lyms.platform.operate.web.request.PredictedStatisticsSumRequest; +import com.lyms.platform.operate.web.result.PredictedStatisticsQueryModel; +import com.lyms.platform.operate.web.result.PredictedStatisticsResult; +import com.lyms.platform.operate.web.result.PredictedStatisticsSumResult; +import com.lyms.platform.operate.web.result.RiskLevelResultModel; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.Patients; +import com.lyms.platform.pojo.PredictedStatisticsCountModel; +import com.lyms.platform.query.PatientsQuery; +import net.sf.json.JSONArray; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 11时36分 + * @discription + */ +@Component +public class PredictedStatisticsFacade { + + @Autowired + private PatientsService patientsService; + + @Autowired + private BasicConfigService basicConfigService; + + @Autowired + private UsersService usersService; + + public PredictedStatisticsResult predictedStatistics(PredictedStatisticsRequest predictedStatisticsRequest) { + PredictedStatisticsResult predictedStatisticsResult = new PredictedStatisticsResult(); + PatientsQuery patientsQuery = new PatientsQuery(); + BeanUtils.copy(predictedStatisticsRequest, patientsQuery); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); + String ym = predictedStatisticsRequest.getDate(); + Date date; + if (StringUtils.isEmpty(ym)) { + try { + date = simpleDateFormat.parse(predictedStatisticsRequest.getDate()); + } catch (Exception e) { + date = new Date(); + } + } else { + date = new Date(); + } + Date startDate = DateUtil.getMonthStart(date); + Date endDate = DateUtil.getMonthEndTime(date); + patientsQuery.setDueDateStart(startDate); + patientsQuery.setDueDateEnd(endDate); + patientsQuery.setNeed(YnEnums.YES.name()); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setHospitalId(usersService.getUsers(predictedStatisticsRequest.getOperatorId()).getOrgId().toString()); + patientsQuery.setType(1); + String doctorId = predictedStatisticsRequest.getDoctorId(); + if (!StringUtils.isEmpty(doctorId)) { + patientsQuery.setLastCheckEmployeeId(doctorId); + } + // 查列表 + List patientsList = patientsService.queryPatient(patientsQuery); + List predictedStatisticsQueryModelList = new ArrayList<>(); + if (patientsList != null && patientsList.size() > 0) { + for (Patients patients : patientsList) { + PredictedStatisticsQueryModel predictedStatisticsQueryModel = new PredictedStatisticsQueryModel(); + BeanUtils.copy(patients, predictedStatisticsQueryModel); + predictedStatisticsQueryModel.setDueDate(DateUtil.getyyyy_MM_dd(patients.getDueDate())); + predictedStatisticsQueryModel.setRiskLevelResultModelList(getRiskLevel(patients.getRiskLevelId())); + predictedStatisticsQueryModel.setRiskFactor(getRiskFactor(patients.getFirstRiskFactorId())); + predictedStatisticsQueryModel.setLastCheckEmployee(getLastCheckEmployee(patients.getLastCheckEmployeeId())); + predictedStatisticsQueryModel.setGestationalWeeks(getGestationalWeeks(patients.getLastMenses())); + predictedStatisticsQueryModelList.add(predictedStatisticsQueryModel); + } + } + predictedStatisticsResult.setPageInfo(patientsQuery.getPageInfo()); + predictedStatisticsResult.setData(predictedStatisticsQueryModelList); + + predictedStatisticsResult.setErrorcode(ErrorCodeConstants.SUCCESS); + predictedStatisticsResult.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); + + return predictedStatisticsResult; + } + + public PredictedStatisticsSumResult predictedStatisticsSum(PredictedStatisticsSumRequest predictedStatisticsRequest) { + + PredictedStatisticsSumResult predictedStatisticsSumResult = new PredictedStatisticsSumResult(); + // 查统计 + // List predictedStatisticsCountModelList = patientsService.predictedStatistics(); + List predictedStatisticsCountModelList = new ArrayList<>(); + Date date = new Date(); + for (int i = 0; i < 10; i++) { + date = DateUtil.addMonth(date, i); + Date startDate = DateUtil.getMonthStart(date); + Date endDate = DateUtil.getMonthEndTime(date); + PatientsQuery patientsQuery = new PatientsQuery(); + String doctorId = predictedStatisticsRequest.getDoctorId(); + patientsQuery.setHospitalId(usersService.getUsers(predictedStatisticsRequest.getOperatorId()).getOrgId().toString()); + if (!StringUtils.isEmpty(doctorId)) { + patientsQuery.setLastCheckEmployeeId(doctorId); + } + patientsQuery.setDueDateStart(startDate); + patientsQuery.setDueDateEnd(endDate); + int count = patientsService.queryPatientCount(patientsQuery); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); + String dateStr = simpleDateFormat.format(new Date()); + PredictedStatisticsCountModel predictedStatisticsCountModel = new PredictedStatisticsCountModel(); + predictedStatisticsCountModel.setPredicted(DateUtil.addMonthWith0(dateStr, i)); + predictedStatisticsCountModel.setNumber(String.valueOf(count)); + predictedStatisticsCountModelList.add(predictedStatisticsCountModel); + } + predictedStatisticsSumResult.setData(predictedStatisticsCountModelList); + + predictedStatisticsSumResult.setErrorcode(ErrorCodeConstants.SUCCESS); + predictedStatisticsSumResult.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); + + return predictedStatisticsSumResult; + + } + + private static String getGestationalWeeks(Date date) { + try { + long s = new Date().getTime() - date.getTime(); + long d = s / (60 * 60 * 24 * 1000); + int day = (int) d; + int w = day / 7; + int dd = day % 7; + return "孕" + w + "周+" + dd + "天"; + } catch (Exception e) { + return ""; + } + } + + private List getRiskLevel(String str) { + + List riskLevelResultModelList = new ArrayList<>(); + + Object[] array; + try { + array = JSONArray.fromObject(str).toArray(); + } catch (Exception e) { + return null; + } + if (array.length > 0) { + for (Object o : array) { + RiskLevelResultModel riskLevelResultModel = new RiskLevelResultModel(); + try { + String name = basicConfigService.getOneBasicConfigById(o.toString()).getName(); + if (name.contains("预警")) { + name = name.replace("预警", ""); + } + riskLevelResultModel.setName(name); + riskLevelResultModel.setColor("risk_" + RiskDefaultTypeEnum.getColor(name)); + riskLevelResultModelList.add(riskLevelResultModel); + } catch (Exception e) { + // 什么都不干 + } + } + } + return riskLevelResultModelList; + } + + private String getRiskFactor(List list) { + String riskFactor = ""; + if (list != null && list.size() > 0) { + for (String s : list) { + try { + riskFactor += basicConfigService.getOneBasicConfigById(s).getName(); + } catch (Exception e) { + riskFactor += ""; + } + } + } + return riskFactor; + } + + + private String getLastCheckEmployee(String str) { + try { + return usersService.getUsers(Integer.valueOf(str)).getName(); + } catch (Exception e) { + return ""; + } + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsRequest.java new file mode 100644 index 0000000..d5d1c2e --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsRequest.java @@ -0,0 +1,39 @@ +package com.lyms.platform.operate.web.request; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 11时37分 + * @discription + */ +public class PredictedStatisticsRequest extends BasePageQueryRequest { + + private String doctorId; + + private Integer operatorId; + + private String date; + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public Integer getOperatorId() { + return operatorId; + } + + public void setOperatorId(Integer operatorId) { + this.operatorId = operatorId; + } + + public String getDoctorId() { + return doctorId; + } + + public void setDoctorId(String doctorId) { + this.doctorId = doctorId; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsSumRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsSumRequest.java new file mode 100644 index 0000000..00d7e43 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PredictedStatisticsSumRequest.java @@ -0,0 +1,29 @@ +package com.lyms.platform.operate.web.request; + +/** + * @auther HuJiaqi + * @createTime 2016年11月30日 10时14分 + * @discription + */ +public class PredictedStatisticsSumRequest { + + private Integer operatorId; + private String doctorId; + + public String getDoctorId() { + return doctorId; + } + + public void setDoctorId(String doctorId) { + this.doctorId = doctorId; + } + + public Integer getOperatorId() { + return operatorId; + } + + public void setOperatorId(Integer operatorId) { + this.operatorId = operatorId; + } + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQueryModel.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQueryModel.java new file mode 100644 index 0000000..5879ce9 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQueryModel.java @@ -0,0 +1,123 @@ +package com.lyms.platform.operate.web.result; + +import java.util.List; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 11时46分 + * @discription + */ +public class PredictedStatisticsQueryModel { + + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 17时03分 + * @discription 姓名 + */ + private String username; + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 17时03分 + * @discription 孕周 + */ + // 需要计算 + private String gestationalWeeks; + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 17时04分 + * @discription 预产期 + */ + private String dueDate; + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 17时05分 + * @discription 高危评分 + */ + private Integer riskScore; + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 17时06分 + * @discription 风险等级 + */ + // 需要计算 + private List riskLevelResultModelList; + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 17时06分 + * @discription 风险因素 + */ + // 需要计算 + private String riskFactor; + /** + * @auther HuJiaqi + * @createTime 2016年11月29日 17时06分 + * @discription 产检医生 + */ + private String lastCheckEmployee; + + private String pid; + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getGestationalWeeks() { + return gestationalWeeks; + } + + public void setGestationalWeeks(String gestationalWeeks) { + this.gestationalWeeks = gestationalWeeks; + } + + public String getDueDate() { + return dueDate; + } + + public void setDueDate(String dueDate) { + this.dueDate = dueDate; + } + + public Integer getRiskScore() { + return riskScore; + } + + public void setRiskScore(Integer riskScore) { + this.riskScore = riskScore; + } + + public List getRiskLevelResultModelList() { + return riskLevelResultModelList; + } + + public void setRiskLevelResultModelList(List riskLevelResultModelList) { + this.riskLevelResultModelList = riskLevelResultModelList; + } + + public String getRiskFactor() { + return riskFactor; + } + + public void setRiskFactor(String riskFactor) { + this.riskFactor = riskFactor; + } + + public String getLastCheckEmployee() { + return lastCheckEmployee; + } + + public void setLastCheckEmployee(String lastCheckEmployee) { + this.lastCheckEmployee = lastCheckEmployee; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQuerySumModel.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQuerySumModel.java new file mode 100644 index 0000000..71a9452 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsQuerySumModel.java @@ -0,0 +1,9 @@ +package com.lyms.platform.operate.web.result; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 11时48分 + * @discription + */ +public class PredictedStatisticsQuerySumModel { +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsResult.java new file mode 100644 index 0000000..1561c01 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsResult.java @@ -0,0 +1,11 @@ +package com.lyms.platform.operate.web.result; + +import com.lyms.platform.common.result.BaseListResponse; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 14时29分 + * @discription + */ +public class PredictedStatisticsResult extends BaseListResponse { +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsSumResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsSumResult.java new file mode 100644 index 0000000..9bbb735 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PredictedStatisticsSumResult.java @@ -0,0 +1,11 @@ +package com.lyms.platform.operate.web.result; + +import com.lyms.platform.common.result.BaseListResponse; + +/** + * @auther HuJiaqi + * @createTime 2016年11月28日 11时38分 + * @discription + */ +public class PredictedStatisticsSumResult extends BaseListResponse { +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/RiskLevelResultModel.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/RiskLevelResultModel.java new file mode 100644 index 0000000..08aaff0 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/RiskLevelResultModel.java @@ -0,0 +1,29 @@ +package com.lyms.platform.operate.web.result; + +/** + * @auther HuJiaqi + * @createTime 2016年11月30日 10时57分 + * @discription + */ +public class RiskLevelResultModel { + + private String name; + + private String color; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } +} -- 1.8.3.1