Commit d2281cf9956fabf2574fe65ac4afd26890179e81

Authored by liquanyu

Merge remote-tracking branch 'origin/master'

Showing 11 changed files

platform-dal/src/main/java/com/lyms/platform/pojo/AntenatalExaminationModel.java View file @ d2281cf
... ... @@ -85,7 +85,7 @@
85 85 //产检日期
86 86 private String checkDate;
87 87 //下次产检日期
88   - private String nextCheckDate;
  88 + private String nextCheckTime;
89 89 private Integer yn;
90 90 private Date created;
91 91  
92 92  
... ... @@ -225,12 +225,12 @@
225 225 this.id = id;
226 226 }
227 227  
228   - public String getNextCheckDate() {
229   - return nextCheckDate;
  228 + public String getNextCheckTime() {
  229 + return nextCheckTime;
230 230 }
231 231  
232   - public void setNextCheckDate(String nextCheckDate) {
233   - this.nextCheckDate = nextCheckDate;
  232 + public void setNextCheckTime(String nextCheckTime) {
  233 + this.nextCheckTime = nextCheckTime;
234 234 }
235 235  
236 236 public String getOtherRisk() {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/StatisticsController.java View file @ d2281cf
... ... @@ -74,7 +74,7 @@
74 74 Map<String, Integer> mapsData = new HashMap<>();
75 75 Map<String, String> riskColorMap = new HashMap<>();
76 76  
77   - Option areaBarOption = buildBarOption("建档&高危人数", null);
  77 + Option areaBarOption = buildyBarOption("建档&高危人数", null);
78 78 areaBarOption.getLegend().getData().add("近30天建档人数");
79 79 areaBarOption.getLegend().getData().add("当前高危总人数");
80 80 areaBarOption.getLegend().setOrient("horizontal");
... ... @@ -148,7 +148,7 @@
148 148  
149 149 // 高危数据
150 150 List<AreaData> currentRiskList = statisticsService.queryRisks(new AreaDataQuery());
151   - Option groupRiskOption = buildBarOption("当前高危人数", null);
  151 + Option groupRiskOption = buildyBarOption("当前高危人数", null);
152 152 groupRiskOption.getTooltip().setShow(true);
153 153 List<Object> groupRiskSeriesList = new ArrayList<>();
154 154 Series groupRiskSeries = new Series();
155 155  
... ... @@ -240,9 +240,9 @@
240 240 firstmap.put(month, areaData.getVal());
241 241 }
242 242 if (secondmap.containsKey(month)) {
243   - secondmap.put(month, secondmap.get(month) + areaData.getVal());
  243 + secondmap.put(month, secondmap.get(month) + areaData.getVal2());
244 244 } else {
245   - secondmap.put(month, areaData.getVal());
  245 + secondmap.put(month, areaData.getVal2());
246 246 }
247 247 }
248 248 reportMonthMap.put("初诊人数", firstmap);
249 249  
... ... @@ -250,7 +250,25 @@
250 250 Option reportMonthOption = buildLineOption("初诊&复诊人数", null, reportMonthMap, buildDefaultMonth(12));
251 251  
252 252  
  253 + // 近6个月高危数据(按颜色分组)
  254 + Map<String, Map<String, Integer>> groupRiskMonthMap = new HashMap<>();
  255 + for (AreaData areaData:riskMonthList) {
  256 + String groupName = areaData.getGroupName().replace("预警", "");
  257 + Map<String, Integer> grmap = groupRiskMonthMap.get(groupName);
  258 + if (grmap == null) {
  259 + grmap = new HashMap<>();
  260 + groupRiskMonthMap.put(groupName, grmap);
  261 + }
  262 + String month = buildMonth(areaData.getYear());
  263 + if (grmap.containsKey(month)) {
  264 + grmap.put(month, grmap.get(month) + areaData.getVal());
  265 + } else {
  266 + grmap.put(month, areaData.getVal());
  267 + }
  268 + }
  269 + Option groupRiskMonthOption = buildxBarOption("高危历史人数", null, groupRiskMonthMap, buildDefaultMonth(6), colormap);
253 270  
  271 +
254 272 result.put("type", 1);
255 273 result.put("kvData", kvData);
256 274 result.put("mapsOption", option);
... ... @@ -258,6 +276,7 @@
258 276 result.put("riskOption", groupRiskOption);
259 277 result.put("patientMonthOption", patientMonthOption);
260 278 result.put("reportMonthOption", reportMonthOption);
  279 + result.put("groupRiskMonthOption", groupRiskMonthOption);
261 280 ResultUtils.buildSuccessResultAndWrite(response, result);
262 281 }
263 282  
... ... @@ -362,7 +381,7 @@
362 381 return option;
363 382 }
364 383  
365   - private Option buildBarOption(String titleText, String subTitle) {
  384 + private Option buildyBarOption(String titleText, String subTitle) {
366 385 Option option = new Option();
367 386 Title title = new Title();
368 387 title.setText(titleText);
... ... @@ -397,6 +416,67 @@
397 416 List<Object> dataList = new ArrayList<Object>();
398 417 yAxis.setData(dataList);
399 418 option.setyAxis(yAxis);
  419 + return option;
  420 + }
  421 +
  422 + private Option buildxBarOption(String titleText, String subTitle, Map<String, Map<String, Integer>> map, List<Object> xData, Map<String, String> colormap) {
  423 + Option option = new Option();
  424 + Title title = new Title();
  425 + title.setText(titleText);
  426 + title.setSubtext(subTitle);
  427 + option.setTitle(title);
  428 + Tooltip tooltip = new Tooltip();
  429 + tooltip.setTrigger("axis");
  430 + AxisPointer axisPointer = new AxisPointer();
  431 + axisPointer.setType("shadow");
  432 + tooltip.setAxisPointer(axisPointer);
  433 + option.setTooltip(tooltip);
  434 + Legend legend = new Legend();
  435 + List<Object> tempList = new ArrayList<Object>();
  436 + legend.setData(tempList);
  437 + option.setLegend(legend);
  438 + Grid grid = new Grid();
  439 + grid.setContainLabel(true);
  440 + grid.setTop("55px");
  441 + grid.setLeft("3%");
  442 + grid.setRight("3%");
  443 + grid.setBottom("3%");
  444 + option.setGrid(grid);
  445 + AxisPointer xAxis = new AxisPointer();
  446 + xAxis.setType("value");
  447 + List<Object> gapList = new ArrayList<Object>();
  448 + gapList.add(0);
  449 + gapList.add(0.1);
  450 + xAxis.setBoundaryGap(gapList);
  451 + option.setyAxis(xAxis);
  452 + List<Object> seriesList = new ArrayList<>();
  453 + option.setSeries(seriesList);
  454 + for (String groupName:map.keySet()) {
  455 + tempList.add(groupName);
  456 + Map<String, Integer> sub = map.get(groupName);
  457 + Series series = new Series();
  458 + series.setName(groupName);
  459 + series.setType("bar");
  460 + List<Object> list = new ArrayList<>();
  461 + series.setData(list);
  462 + for (Object o:xData) {
  463 + if (sub.get(o) == null) {
  464 + list.add(0);
  465 + } else if (colormap.containsKey(groupName)) {
  466 + Data data = new Data();
  467 + data.setValue(sub.get(o));
  468 + data.setItemStyle(new ItemStyle(new Normal(true,colormap.get(groupName)),null));
  469 + list.add(data);
  470 + } else {
  471 + list.add(sub.get(o));
  472 + }
  473 + }
  474 + seriesList.add(series);
  475 + }
  476 + AxisPointer yAxis = new AxisPointer();
  477 + yAxis.setType("category");
  478 + yAxis.setData(xData);
  479 + option.setxAxis(yAxis);
400 480 return option;
401 481 }
402 482  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java View file @ d2281cf
... ... @@ -115,13 +115,13 @@
115 115 patientsQuery.setCardNo(exListQueryRequest.getCardNo());
116 116 patientsQuery.setYn(YnEnums.YES.getId());
117 117 patientsQuery.setPhone(exListQueryRequest.getPhone());
118   - AntexListResult antexListResult=new AntexListResult();
  118 + AntexListResult antexListResult = new AntexListResult();
119 119 //获取所有的建档记录
120 120 List<Patients> list = patientsService.queryPatient(patientsQuery);
121   - List listDate = new ArrayList();
  121 + List listDate = new ArrayList();
122 122 int i = 0;
123 123 if (CollectionUtils.isNotEmpty(list)) {
124   - antexListResult.convertToResult(null,list.get(0),null);
  124 + antexListResult.convertToResult(null, list.get(0), null);
125 125 for (Patients patients : list) {
126 126 List<AntData> data = new ArrayList<>();
127 127 MatDeliverQuery matDeliverQuery = new MatDeliverQuery();
128 128  
... ... @@ -173,12 +173,12 @@
173 173 i++;
174 174 //分娩记录
175 175 if (CollectionUtils.isNotEmpty(modelList)) {
176   - data.add(new AntData(modelList.get(0),patients.getLastMenses()));
  176 + data.add(new AntData(modelList.get(0), patients.getLastMenses()));
177 177 }
178 178 //产后复查记录
179   - List<PostReviewModel> reviewModels=postReviewService.findWithList(postReviewQuery);
180   - if(CollectionUtils.isNotEmpty(reviewModels)){
181   - for(PostReviewModel postReviewModel:reviewModels){
  179 + List<PostReviewModel> reviewModels = postReviewService.findWithList(postReviewQuery);
  180 + if (CollectionUtils.isNotEmpty(reviewModels)) {
  181 + for (PostReviewModel postReviewModel : reviewModels) {
182 182 data.add(new AntData(postReviewModel));
183 183 }
184 184 }
185 185  
... ... @@ -318,9 +318,14 @@
318 318 antenatalExaminationResult.convertToResult(examinationModel);
319 319 try {
320 320 List list1 = JsonUtil.toList(examinationModel.getRiskFactor(), List.class);
321   - antenatalExaminationResult.setRiskFactor(list1);
  321 + antenatalExaminationResult.setRiskFactor(queryRisk(list1));
322 322 } catch (Exception e) {
323 323 }
  324 + try {
  325 + List list = JsonUtil.toList(examinationModel.getDiagnosis(), List.class);
  326 + antenatalExaminationResult.setDiagnosis(queryRisk(list));
  327 + } catch (Exception e) {
  328 + }
324 329 object = antenatalExaminationResult;
325 330 } else {
326 331 //查询初诊数据
327 332  
... ... @@ -334,10 +339,42 @@
334 339 antExChuModel = antExChuModels.get(0);
335 340 }
336 341 antexChuResult.convertToResult(antExChuModel);
  342 + try {
  343 + List list = JsonUtil.toList(antExChuModel.getDiagnosis(), List.class);
  344 + antexChuResult.setDiagnosis(queryRisk(list));
  345 + } catch (Exception e) {
  346 + }
  347 + try {
  348 + List list1 = JsonUtil.toList(antExChuModel.getHighrisk(), List.class);
  349 + antexChuResult.setHighrisk(queryRisk(list1));
  350 + } catch (Exception e) {
  351 +
  352 + }
337 353 object = antexChuResult;
338 354 }
339 355  
340 356 return new BaseObjectResponse().setData(object).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
  357 + }
  358 +
  359 + private List queryRisk(List<String> id) {
  360 + BasicConfigQuery
  361 + basicConfigQuery = new BasicConfigQuery();
  362 + List data = new ArrayList();
  363 + if (CollectionUtils.isNotEmpty(id)) {
  364 + for (String i : id) {
  365 + basicConfigQuery.setId(i);
  366 + List<BasicConfig> basicConfigs = basicConfigService.queryBasicConfig(basicConfigQuery);
  367 + if (CollectionUtils.isNotEmpty(basicConfigs)) {
  368 + for (BasicConfig basicConfig : basicConfigs) {
  369 + Map<String, Object> map = new HashMap<>();
  370 + map.put("id", basicConfig.getId());
  371 + map.put("name", basicConfig.getName());
  372 + data.add(map);
  373 + }
  374 + }
  375 + }
  376 + }
  377 + return data;
341 378 }
342 379  
343 380 public BaseResponse getEnums() {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/AntExAddRequest.java View file @ d2281cf
... ... @@ -69,7 +69,7 @@
69 69 //产检日期
70 70 private String checkDate;
71 71 //下次产检日期
72   - private String nextCheckDate;
  72 + private String nextCheckTime;
73 73  
74 74  
75 75  
... ... @@ -109,7 +109,7 @@
109 109 examinationModel.setGuide(guide);
110 110 examinationModel.setCheckDoctor(checkDoctor);
111 111 examinationModel.setCheckDate(checkDate);
112   - examinationModel.setNextCheckDate(nextCheckDate);
  112 + examinationModel.setNextCheckTime(nextCheckTime);
113 113  
114 114 return examinationModel;
115 115 }
116 116  
... ... @@ -226,12 +226,12 @@
226 226 this.id = id;
227 227 }
228 228  
229   - public String getNextCheckDate() {
230   - return nextCheckDate;
  229 + public String getNextCheckTime() {
  230 + return nextCheckTime;
231 231 }
232 232  
233   - public void setNextCheckDate(String nextCheckDate) {
234   - this.nextCheckDate = nextCheckDate;
  233 + public void setNextCheckTime(String nextCheckTime) {
  234 + this.nextCheckTime = nextCheckTime;
235 235 }
236 236  
237 237 public Map getOtherRisk() {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/AntenatalExaminationResult.java View file @ d2281cf
... ... @@ -54,7 +54,7 @@
54 54 //其他高危
55 55 private Map otherRisk;
56 56 //诊断
57   - private String diagnosis;
  57 + private List diagnosis;
58 58 //分类
59 59 private String type;
60 60 //异常
... ... @@ -72,7 +72,6 @@
72 72  
73 73 @Override
74 74 public AntenatalExaminationResult convertToResult(AntenatalExaminationModel destModel) {
75   - setDiagnosis(destModel.getDiagnosis());
76 75 setEdema(destModel.getEdema());
77 76 setParentId(destModel.getParentId());
78 77 setNextCheckDate(destModel.getNextCheckDate());
79 78  
... ... @@ -179,11 +178,11 @@
179 178 this.currentDueDate = currentDueDate;
180 179 }
181 180  
182   - public String getDiagnosis() {
  181 + public List getDiagnosis() {
183 182 return diagnosis;
184 183 }
185 184  
186   - public void setDiagnosis(String diagnosis) {
  185 + public void setDiagnosis(List diagnosis) {
187 186 this.diagnosis = diagnosis;
188 187 }
189 188  
platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/AntexChuResult.java View file @ d2281cf
... ... @@ -123,7 +123,7 @@
123 123 // 其他高危
124 124 private Map otherHighRisk;
125 125 // 诊断
126   - private String diagnosis;
  126 + private List diagnosis;
127 127 //处理意见
128 128 private String treatOpinion;
129 129 //指导意见
130 130  
... ... @@ -346,12 +346,11 @@
346 346 this.chgOther = chgOther;
347 347 }
348 348  
349   -
350   - public String getDiagnosis() {
  349 + public List getDiagnosis() {
351 350 return diagnosis;
352 351 }
353 352  
354   - public void setDiagnosis(String diagnosis) {
  353 + public void setDiagnosis(List diagnosis) {
355 354 this.diagnosis = diagnosis;
356 355 }
357 356  
... ... @@ -869,7 +868,7 @@
869 868 setPlacentas(antExChuModel.getPlacentas());
870 869 setHighriskSocre(antExChuModel.getHighriskSocre());
871 870 setOtherHighRisk(JsonUtil.str2Obj(antExChuModel.getOtherHighRisk(), Map.class));
872   - setDiagnosis(antExChuModel.getDiagnosis());
  871 +// setDiagnosis(antExChuModel.getDiagnosis());
873 872 setTreatOpinion(antExChuModel.getTreatOpinion());
874 873 setDirOpinion(antExChuModel.getDirOpinion());
875 874 setProdDoctor(antExChuModel.getProdDoctor());
platform-reportData/src/main/java/com/lymsh/platform/reportdata/dao/StatisticsMapper.java View file @ d2281cf
... ... @@ -98,5 +98,12 @@
98 98 */
99 99 public List<AreaData> queryHrefYearRisks(AreaDataQuery query);
100 100  
  101 + /**
  102 + * 6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)
  103 + * @param query
  104 + * @return
  105 + */
  106 + public List<AreaData> queryDaysRisks(AreaDataQuery query);
  107 +
101 108 }
platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/StatisticsService.java View file @ d2281cf
... ... @@ -98,5 +98,12 @@
98 98 */
99 99 public List<AreaData> queryHrefYearRisks(AreaDataQuery query);
100 100  
  101 + /**
  102 + * 6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)
  103 + * @param query
  104 + * @return
  105 + */
  106 + public List<AreaData> queryDaysRisks(AreaDataQuery query);
  107 +
101 108 }
platform-reportData/src/main/java/com/lymsh/platform/reportdata/service/impl/StatisticsServiceImpl.java View file @ d2281cf
... ... @@ -87,5 +87,10 @@
87 87 public List<AreaData> queryHrefYearRisks(AreaDataQuery query) {
88 88 return statisticsMapper.queryHrefYearRisks(query);
89 89 }
  90 +
  91 + @Override
  92 + public List<AreaData> queryDaysRisks(AreaDataQuery query) {
  93 + return statisticsMapper.queryDaysRisks(query);
  94 + }
90 95 }
platform-reportData/src/main/resources/reportOrm/StatisticsMapper.xml View file @ d2281cf
... ... @@ -574,5 +574,64 @@
574 574 ORDER BY F.HIGH_RISK_GROUP,E.YEAR_MONTH
575 575 </select>
576 576  
  577 + <!--6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)-->
  578 + <select id="queryDaysRisks" resultMap="AreaDataResultMap"
  579 + parameterType="com.lymsh.platform.reportdata.model.AreaDataQuery">
  580 + SELECT D.PROVINCE_ID as province_id,
  581 + D.PROVINCE as province_name,
  582 + <if test="provinceId != null and provinceId != ''">
  583 + D.CITY_ID as city_id,
  584 + D.CITY as city_name,
  585 + </if>
  586 + <if test="cityId != null and cityId != ''">
  587 + D.CITY_ID as city_id,
  588 + D.CITY as city_name,
  589 + D.AREA_COUNTY_ID as area_id,
  590 + D.AREA_COUNTY as area_name,
  591 + </if>
  592 + F.HIGH_RISK_GROUP as group_name,
  593 + E.DATE_2 as year,
  594 + COUNT(A.RECORD_ID) AS val
  595 + FROM ODS_F_GRAVIDA_RECORD A,
  596 + ODS_F_EXAMINE_HISTORY B,
  597 + ODS_D_HOSPITAL C,
  598 + ODS_D_AREA_COUNTY D,
  599 + ODS_D_DIM_DATE E,
  600 + ODS_F_HIGH_RISK_VALUE F
  601 + WHERE A.RECORD_ID=B.RECORD_ID
  602 + AND A.HOSPITAL_NO=C.HOSPITAL_NO
  603 + AND C.AREA_COUNTY_ID=D.AREA_COUNTY_ID
  604 + AND B.INSERT_DATE=E.DATE_1
  605 + AND B.EXAMINE_ID=F.EXAMINE_ID
  606 + <![CDATA[
  607 + AND F.HIGH_RISK_CONTENT<>'健康'
  608 + AND F.HIGH_RISK_GROUP<>'其他'
  609 + AND B.EXAMINE_HISTORY_NUM=1
  610 + AND B.INSERT_DATE<=TRUNC(SYSDATE)
  611 + AND B.INSERT_DATE>=(TRUNC(SYSDATE)-${days})
  612 + ]]>
  613 + <if test="provinceId != null and provinceId != ''">
  614 + AND D.PROVINCE_ID=#{provinceId}
  615 + </if>
  616 + <if test="cityId != null and cityId != ''">
  617 + AND D.CITY_ID=#{cityId}
  618 + </if>
  619 + GROUP BY D.PROVINCE_ID,
  620 + D.PROVINCE,
  621 + <if test="provinceId != null and provinceId != ''">
  622 + D.CITY_ID,
  623 + D.CITY,
  624 + </if>
  625 + <if test="cityId != null and cityId != ''">
  626 + D.CITY_ID,
  627 + D.CITY,
  628 + D.AREA_COUNTY_ID,
  629 + D.AREA_COUNTY,
  630 + </if>
  631 + F.HIGH_RISK_GROUP,
  632 + E.DATE_2
  633 + ORDER BY F.HIGH_RISK_GROUP,E.DATE_2;
  634 + </select>
  635 +
577 636 </mapper>
platform-reportData/src/test/sql.txt View file @ d2281cf
... ... @@ -508,4 +508,44 @@
508 508 F.HIGH_RISK_GROUP,
509 509 E.YEAR_MONTH
510 510 ORDER BY F.HIGH_RISK_GROUP,E.YEAR_MONTH
  511 +
  512 +-------------------------------------------------------
  513 +6.1. 按省或市或地区查询区域内近30天每天产检中历史高危人数(按颜色分组)
  514 +SELECT D.PROVINCE_ID as province_id,
  515 + D.PROVINCE as province_name,
  516 + D.CITY_ID as city_id,
  517 + D.CITY as city_name,
  518 + D.AREA_COUNTY_ID as area_id,
  519 + D.AREA_COUNTY as area_name,
  520 + F.HIGH_RISK_GROUP as group_name,
  521 + E.DATE_2 as year,
  522 + COUNT(A.RECORD_ID) AS val
  523 +FROM ODS_F_GRAVIDA_RECORD A,
  524 + ODS_F_EXAMINE_HISTORY B,
  525 + ODS_D_HOSPITAL C,
  526 + ODS_D_AREA_COUNTY D,
  527 + ODS_D_DIM_DATE E,
  528 + ODS_F_HIGH_RISK_VALUE F
  529 +WHERE A.RECORD_ID=B.RECORD_ID
  530 + AND A.HOSPITAL_NO=C.HOSPITAL_NO
  531 + AND C.AREA_COUNTY_ID=D.AREA_COUNTY_ID
  532 + AND B.INSERT_DATE=E.DATE_1
  533 + AND B.EXAMINE_ID=F.EXAMINE_ID
  534 + AND F.HIGH_RISK_CONTENT<>'健康'
  535 + AND F.HIGH_RISK_GROUP<>'其他'
  536 + AND B.EXAMINE_HISTORY_NUM=1
  537 + AND B.INSERT_DATE<=TRUNC(SYSDATE)
  538 + AND B.INSERT_DATE>=(TRUNC(SYSDATE)-30)
  539 + AND D.PROVINCE_ID=130000
  540 + AND D.CITY_ID=130300
  541 + AND D.AREA_COUNTY_ID=130302
  542 +GROUP BY D.PROVINCE_ID,
  543 + D.PROVINCE,
  544 + D.CITY_ID,
  545 + D.CITY,
  546 + D.AREA_COUNTY_ID,
  547 + D.AREA_COUNTY,
  548 + F.HIGH_RISK_GROUP,
  549 + E.DATE_2
  550 +ORDER BY F.HIGH_RISK_GROUP,E.DATE_2;