Commit 1d38f610633d86dc2ba857f9442f0b336e1e7008

Authored by litao@lymsh.com
1 parent 222ff4b6f3

改部分逻辑

Showing 7 changed files with 221 additions and 6 deletions

platform-common/src/main/java/com/lyms/platform/common/enums/ErrorPatientEnums.java View file @ 1d38f61
  1 +package com.lyms.platform.common.enums;
  2 +
  3 +/**
  4 + * 健康异常孕妇
  5 + */
  6 +public enum ErrorPatientEnums {
  7 +
  8 + PATIENT_WEIGHT(1),
  9 + TEMP(2),
  10 + BLOOD_PRESSURE(3),
  11 + BLOOD_SUGAR(4);
  12 +
  13 + ErrorPatientEnums(Integer id) {
  14 + this.id = id;
  15 + }
  16 +
  17 + private Integer id;
  18 + public Integer getId() {
  19 + return id;
  20 + }
  21 +
  22 + public void setId(Integer id) {
  23 + this.id = id;
  24 + }
  25 +
  26 +}
platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java View file @ 1d38f61
... ... @@ -1388,6 +1388,17 @@
1388 1388 return restList;
1389 1389 }
1390 1390  
  1391 +
  1392 + /**
  1393 + * 获取昨天五点的时间
  1394 + * @return
  1395 + */
  1396 + public static Date getYesterday() {
  1397 + Calendar calendar = Calendar.getInstance();
  1398 + calendar.add(Calendar.DAY_OF_MONTH, -1);
  1399 + return getYmdDate(calendar.getTime());
  1400 + }
  1401 +
1391 1402 public static void main(String[] args) {
1392 1403 /* List<Map<String, Date>> monthBetween = getRange(parseYMD("2017-1-11"), parseYMD("2017-3-11"));
1393 1404 for (Map<String, Date> map : monthBetween) {
... ... @@ -1397,6 +1408,7 @@
1397 1408 }*/
1398 1409  
1399 1410 Date date = parseDate("2017-11-30");
  1411 + System.out.println(getYesterday().toLocaleString());
1400 1412 System.out.println("当月第一天: " + getMonthDay(date, 0, 1).toLocaleString());
1401 1413 System.out.println("当月最后一天: " + getMonthDay(date, 0, 0).toLocaleString());
1402 1414 System.out.println("上月第一天: " + getMonthDay(date, -1, 1).toLocaleString());
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AreaCountController.java View file @ 1d38f61
... ... @@ -24,6 +24,13 @@
24 24 @Autowired
25 25 private AreaCountFacade areaCountFacade;
26 26  
  27 + @ResponseBody
  28 + @RequestMapping(value = "/area/{id}", method = RequestMethod.GET)
  29 + public BaseResponse getAreaName(@PathVariable String id) {
  30 + return areaCountFacade.getAreaName(id);
  31 + }
  32 +
  33 +
27 34 @RequestMapping(value = "/area/childs", method = RequestMethod.GET)
28 35 @ResponseBody
29 36 public BaseResponse getAreaChilds(@RequestParam String provinceName, String cityName, String areaName) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RemoteController.java View file @ 1d38f61
... ... @@ -6,13 +6,12 @@
6 6 import com.lyms.platform.common.base.BaseController;
7 7 import com.lyms.platform.common.base.LoginContext;
8 8 import com.lyms.platform.common.enums.YnEnums;
9   -import com.lyms.platform.common.result.BaseResponse;
10 9 import com.lyms.platform.common.utils.JsonUtil;
11 10 import com.lyms.platform.common.utils.MessageUtil;
12 11 import com.lyms.platform.common.utils.PropertiesUtils;
13 12 import com.lyms.platform.common.utils.StringUtils;
14 13 import com.lyms.platform.operate.web.facade.AutoMatchFacade;
15   -import com.lyms.platform.operate.web.facade.PatientFacade;
  14 +import com.lyms.platform.operate.web.facade.RemoteFacade;
16 15 import com.lyms.platform.pojo.ArchiveData;
17 16 import com.lyms.platform.pojo.Patients;
18 17 import com.lyms.platform.query.ArchiveDataQuery;
... ... @@ -21,9 +20,7 @@
21 20 import org.apache.commons.httpclient.HttpClient;
22 21 import org.springframework.beans.factory.annotation.Autowired;
23 22 import org.springframework.stereotype.Controller;
24   -import org.springframework.web.bind.annotation.RequestMapping;
25   -import org.springframework.web.bind.annotation.RequestMethod;
26   -import org.springframework.web.bind.annotation.RequestParam;
  23 +import org.springframework.web.bind.annotation.*;
27 24  
28 25 import javax.servlet.http.HttpServletRequest;
29 26 import javax.servlet.http.HttpServletResponse;
... ... @@ -41,7 +38,6 @@
41 38 @Controller
42 39 public class RemoteController extends BaseController {
43 40  
44   -
45 41 @Autowired
46 42 private PatientsService patientsService;
47 43  
48 44  
... ... @@ -51,7 +47,16 @@
51 47 @Autowired
52 48 private AutoMatchFacade autoMatchFacade;
53 49  
  50 + @Autowired
  51 + private RemoteFacade remoteFacade;
  52 +
54 53 public static final String center_statistics_url= PropertiesUtils.getPropertyValue("center_statistics_url");
  54 +
  55 + @ResponseBody
  56 + @RequestMapping(value = "/error/fy/list/{operaterId}", method = RequestMethod.GET)
  57 + public List<Map<String, Object>> errorYfList(@PathVariable String operaterId) {
  58 + return remoteFacade.errorYfList(operaterId);
  59 + }
55 60  
56 61 @RequestMapping(value = "/bookArchive",method = RequestMethod.GET)
57 62 public void queryBookArchive(HttpServletResponse response, String idCard, String hospitalId,String cardNum,String phone) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java View file @ 1d38f61
... ... @@ -896,5 +896,9 @@
896 896 mongoUtil.setIdNames(basicConfigs, restList);
897 897 return RespBuilder.buildSuccess(restList);
898 898 }
  899 +
  900 + public BaseResponse getAreaName(String id) {
  901 + return RespBuilder.buildSuccess(mongoUtil.findName(id));
  902 + }
899 903 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RemoteFacade.java View file @ 1d38f61
  1 +package com.lyms.platform.operate.web.facade;
  2 +
  3 +import com.lyms.platform.common.enums.ErrorPatientEnums;
  4 +import com.lyms.platform.common.utils.DateUtil;
  5 +import com.lyms.platform.operate.web.utils.MathUtil;
  6 +import com.lyms.platform.pojo.BloodPressure;
  7 +import com.lyms.platform.pojo.PatientWeight;
  8 +import com.lyms.platform.pojo.Patients;
  9 +import com.lyms.platform.pojo.TempModel;
  10 +import org.apache.commons.collections.MapUtils;
  11 +import org.apache.commons.lang.StringUtils;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.data.mongodb.core.MongoTemplate;
  14 +import org.springframework.data.mongodb.core.query.Criteria;
  15 +import org.springframework.data.mongodb.core.query.Query;
  16 +import org.springframework.stereotype.Component;
  17 +
  18 +import java.util.*;
  19 +
  20 +/**
  21 + * Created by lt on 2017/12/4 0004
  22 + */
  23 +@Component
  24 +public class RemoteFacade {
  25 +
  26 + @Autowired
  27 + private MongoTemplate mongoTemplate;
  28 +
  29 + public List<Map<String, Object>> errorYfList(String operaterId) {
  30 + Date yesterday = DateUtil.getYesterday();
  31 + List<Map<String, Object>> restList = new ArrayList<>();
  32 +
  33 + List<PatientWeight> patientWeights = mongoTemplate.find(Query.query(Criteria.where("operaterId").is(operaterId)), PatientWeight.class);
  34 + List<BloodPressure> bloodPressures = mongoTemplate.find(Query.query(Criteria.where("operaterId").is(operaterId)), BloodPressure.class);
  35 + List<TempModel> tempModels = mongoTemplate.find(Query.query(Criteria.where("operaterId").is(operaterId)), TempModel.class);
  36 +
  37 + for (PatientWeight patientWeight : patientWeights) {
  38 + Patients patients = mongoTemplate.findById(patientWeight.getPatientId(), Patients.class);
  39 + String bmi = patientWeight.getBmi();
  40 + Map<Integer, Double> highMap = new LinkedHashMap<>();
  41 + Map<Integer, Double> lowMap = new LinkedHashMap<>();
  42 + setMapInfo(highMap, lowMap, bmi);
  43 + Map<String, String> dayWeights = patientWeight.getDayWeights();
  44 + Map<String, Object> temp = new HashMap<>();
  45 + for (Map.Entry<String, String> entry : dayWeights.entrySet()) {
  46 + if(DateUtil.parseYMD(entry.getKey()).getTime() >= yesterday.getTime()) {
  47 + Integer week = DateUtil.getWeek2(patients.getLastMenses(), DateUtil.parseYMD(entry.getKey()));
  48 + Double addWeight = getAddWeight(patientWeight.getBeforeWeight(), entry.getValue());
  49 + Double low = lowMap.get(week);
  50 + Double high = highMap.get(week);
  51 + if(addWeight < low || addWeight > high) {
  52 + temp.put("username", patients.getUsername());
  53 + temp.put("week", DateUtil.getWeekDesc(patients.getLastMenses(), new Date()));
  54 + temp.put("parentId", patientWeight.getPatientId());
  55 + temp.put("id", patientWeight.getId());
  56 + temp.put("day", entry.getKey());
  57 + temp.put("desc", addWeight < low ? "增重过少" : "增重过多");
  58 + temp.put("beforeWeight", patientWeight.getBeforeWeight());
  59 + temp.put("nowWeight", patientWeight.getNowWeight());
  60 + temp.put("addWeight", addWeight);
  61 + temp.put("ckz", "(" + lowMap.get(0) + "~" + highMap.get(0) + ")");
  62 + temp.put("type", ErrorPatientEnums.PATIENT_WEIGHT);
  63 + }
  64 + }
  65 + }
  66 + if(MapUtils.isNotEmpty(temp)) {
  67 + restList.add(temp);
  68 + }
  69 + }
  70 +
  71 + for (TempModel tempModel : tempModels) {
  72 + Map<String, Object> temp = new HashMap<>();
  73 + LinkedHashMap<String, Double> tempList = tempModel.getTempList();
  74 + Patients patients = null;
  75 + for (Map.Entry<String, Double> entry : tempList.entrySet()) {
  76 + if(DateUtil.parseYMD(entry.getKey()).getTime() >= yesterday.getTime()) {
  77 + if(entry.getValue() < 36D || entry.getValue() > 38.5D ) {
  78 + /* patients = (patients == null ? mongoTemplate.findById(p, Patients.class) : patients);
  79 + temp.put("username", patients.getUsername());
  80 + temp.put("week", DateUtil.getWeekDesc(patients.getLastMenses(), new Date()));
  81 + temp.put("parentId", patientWeight.getPatientId());
  82 + temp.put("id", patientWeight.getId());
  83 + temp.put("day", entry.getKey());
  84 + temp.put("desc", addWeight < low ? "增重过少" : "增重过多");
  85 + temp.put("beforeWeight", patientWeight.getBeforeWeight());
  86 + temp.put("nowWeight", patientWeight.getNowWeight());
  87 + temp.put("addWeight", addWeight);
  88 + temp.put("ckz", "(" + lowMap.get(0) + "~" + highMap.get(0) + ")");
  89 + temp.put("type", ErrorPatientEnums.PATIENT_WEIGHT);*/
  90 + }
  91 + }
  92 + }
  93 +
  94 + }
  95 +
  96 + return restList;
  97 + }
  98 +
  99 +
  100 + /**
  101 + * 获取两个体重之间相差的数值
  102 + */
  103 + private Double getAddWeight(String before, String now) {
  104 + if(StringUtils.isEmpty(before) || StringUtils.isEmpty(now)) {
  105 + return 0D;
  106 + }
  107 + Double b = Double.parseDouble(before);
  108 + Double n = Double.parseDouble(now);
  109 + return MathUtil.doubleFormat2(n - b);
  110 + }
  111 +
  112 + private void setMapInfo(Map<Integer, Double> highMap, Map<Integer, Double> lowMap, String bmi) {
  113 + double low = 0D;
  114 + double low2 = 0D;
  115 + double high = 0D;
  116 + double high2 = 0D;
  117 + Double bmiD = 20D; // 小程序和app可能没有bmi 默认返回标准
  118 + if(StringUtils.isNotEmpty(bmi)) {
  119 + bmiD = Double.parseDouble(bmi);
  120 + }
  121 + if(bmiD <= 18.5) {
  122 + low = 1.2;
  123 + low2 = 11.9;
  124 + high = 3.8;
  125 + high2 = 18.1;
  126 + } else if(bmiD > 18.5 && bmiD <= 24.9){
  127 + low = 1.4;
  128 + low2 = 11.9;
  129 + high = 3.2;
  130 + high2 = 15.9;
  131 + } else if(bmiD > 24.9 && bmiD < 30){
  132 + low = 1.1 ;
  133 + low2 = 7.1;
  134 + high = 3.1;
  135 + high2 = 11.6;
  136 + } else if(bmiD >= 30){
  137 + low = 0.8 ;
  138 + low2 = 4.9;
  139 + high = 2.1;
  140 + high2 = 8.9;
  141 + }
  142 + double avg = low / 13;
  143 + for (int i = 0; i <= 13; i++) {
  144 + lowMap.put(i, i * avg);
  145 + }
  146 + double avg2 = (low2 - low) / 27;
  147 + for (int i = 1; i <= 27; i++) {
  148 + lowMap.put(13 + i, low + i * avg2);
  149 + }
  150 + double highAvg = high / 13;
  151 + for (int i = 0; i <= 13; i++) {
  152 + highMap.put(i, i * highAvg);
  153 + }
  154 + double highAvg2 = (high2 - high) / 27;
  155 + for (int i = 1; i <= 27; i++) {
  156 + highMap.put(13 + i, high + i * highAvg2);
  157 + }
  158 + }
  159 +
  160 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java View file @ 1d38f61
... ... @@ -54,6 +54,7 @@
54 54 temp.put("pulse", bloodPressure.getPulse());
55 55 temp.put("hospitalId", hospitalId);
56 56 BloodPressure bp = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(bloodPressure.getParentId()).and("yn").ne(0)), BloodPressure.class);
  57 + bloodPressure.setModified(new Date());
57 58 if(bp == null) {
58 59 String parentId = mongoUtil.doHidePatient(bloodPressure.getParentId(), hospitalId);
59 60 bloodPressure.setParentId(parentId);