diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/BabyModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/BabyModel.java index ffff8bc..5203564 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/BabyModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/BabyModel.java @@ -210,6 +210,59 @@ public class BabyModel extends BaseModel { //儿童诊断 private String babyDiagnosis; + //体重评价 + private String weightEvaluate; + //身长评价 + private String heightEvaluate; + //头围评价 + private String headEvaluate; + + //身长别体重 + private String heightWeight; + + //病历号(住院号) + private String blNo; + + public String getBlNo() { + return blNo; + } + + public void setBlNo(String blNo) { + this.blNo = blNo; + } + + public String getWeightEvaluate() { + return weightEvaluate; + } + + public void setWeightEvaluate(String weightEvaluate) { + this.weightEvaluate = weightEvaluate; + } + + public String getHeightEvaluate() { + return heightEvaluate; + } + + public void setHeightEvaluate(String heightEvaluate) { + this.heightEvaluate = heightEvaluate; + } + + public String getHeadEvaluate() { + return headEvaluate; + } + + public void setHeadEvaluate(String headEvaluate) { + this.headEvaluate = headEvaluate; + } + + public String getHeightWeight() { + return heightWeight; + } + + public void setHeightWeight(String heightWeight) { + this.heightWeight = heightWeight; + } + public String getBabyDiagnosis() { return babyDiagnosis; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java index d22de7d..4bb7698 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/BabyModelQuery.java @@ -245,6 +245,48 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { private String queryNo; + //体重评价 + private String weightEvaluate; + //身长评价 + private String heightEvaluate; + //头围评价 + private String headEvaluate; + + //身长别体重 + private String heightWeight; + + public String getWeightEvaluate() { + return weightEvaluate; + } + + public void setWeightEvaluate(String weightEvaluate) { + this.weightEvaluate = weightEvaluate; + } + + public String getHeightEvaluate() { + return heightEvaluate; + } + + public void setHeightEvaluate(String heightEvaluate) { + this.heightEvaluate = heightEvaluate; + } + + public String getHeadEvaluate() { + return headEvaluate; + } + + public void setHeadEvaluate(String headEvaluate) { + this.headEvaluate = headEvaluate; + } + + public String getHeightWeight() { + return heightWeight; + } + + public void setHeightWeight(String heightWeight) { + this.heightWeight = heightWeight; + } + public String getQueryNo() { return queryNo; } @@ -449,6 +491,20 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { condition = condition.and("pregnancyOut", pregnancyOut, MongoOper.IS); } + if (null != weightEvaluate) { + condition = condition.and("weightEvaluate", weightEvaluate, MongoOper.IS); + } + if (null != heightEvaluate) { + condition = condition.and("heightEvaluate", heightEvaluate, MongoOper.IS); + } + if (null != headEvaluate) { + condition = condition.and("pregnancyOut", headEvaluate, MongoOper.IS); + } + if (null != heightWeight) { + condition = condition.and("pregnancyOut", heightWeight, MongoOper.IS); + } + + if (!StringUtils.isEmpty(mcertNo)) { condition = condition.and("mcertNo", mcertNo, MongoOper.IS); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java index 98077ed..30af8bd 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java @@ -371,4 +371,18 @@ public class BabyBuildController extends BaseController { return babyBookbuildingFacade.queryHisBabyDiagnosis(blNo); } + + /** + * 儿童生长统计 + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/getBabyGroupCount") + @ResponseBody + public BaseResponse getBabyGroupCount(@Valid @RequestBody BabyManageRequest babyManageRequest, + HttpServletRequest request) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return babyBookbuildingFacade.getBabyGroupCount(babyManageRequest,loginState.getId()); + } + + } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index 378acca..dfedcb1 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -14,6 +14,7 @@ import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.utils.BabyListTask; +import com.lyms.platform.operate.web.utils.GrowthCountTask; import com.lyms.platform.operate.web.utils.HiskCountTask; import com.lyms.platform.operate.web.utils.MessageCenterService; import com.lyms.platform.permission.model.Organization; @@ -798,6 +799,7 @@ public class BabyBookbuildingFacade { bm.setDueWeek(b.getDueWeek()); bm.setBabyDiagnosis(b.getBabyDiagnosis()); + bm.setBlNo(b.getBlNo()); return bm; } @@ -965,7 +967,7 @@ public class BabyBookbuildingFacade { result.setExpType(model.getExpType()); result.setBabyDiagnosis(model.getBabyDiagnosis()); - + result.setBlNo(model.getBlNo()); result.setDueWeek(model.getDueWeek()); return result; } @@ -2111,4 +2113,210 @@ public class BabyBookbuildingFacade { objectResponse.setErrormsg("成功"); return objectResponse; } + + /** + * 儿童生长发育统计 + * @param request + * @param userId + * @return + */ + public BaseResponse getBabyGroupCount(BabyManageRequest request, Integer userId) { + String hospitalId = ""; + //得到当前登录的医院id + if (userId != null) { + Users dbuser = usersService.getUsers(userId); + if (dbuser != null) { + hospitalId = String.valueOf(dbuser.getOrgId()); + } + } + + BabyModelQuery babyQuery = new BabyModelQuery(); + List buildType = new ArrayList(); + buildType.add(1); + buildType.add(2); + babyQuery.setBuildTypeList(buildType); + babyQuery.setHospitalId(hospitalId); + + babyQuery.setYn(YnEnums.YES.getId()); + Date currentDate = DateUtil.formatDate(new Date()); + + if(StringUtils.isNotEmpty(request.getBirth()) && request.getMonthAgeStart() != null && request.getMonthAgeEnd() != null) + { + + Date start = DateUtil.addMonth(currentDate, -request.getMonthAgeStart()); + String birthStr = request.getBirth(); + String[] dates = birthStr.split(" - "); + + if (DateUtil.parseYMD(dates[1]).getTime() < start.getTime()) + { + babyQuery.setBirthEnd(DateUtil.parseYMD(dates[1])); + + } + else + { + babyQuery.setBirthEnd(start); + } + + Date end = DateUtil.addDay(DateUtil.addMonth(currentDate, -request.getMonthAgeEnd() - 1), 1); + + if (DateUtil.parseYMD(dates[0]).getTime() < end.getTime()) + { + babyQuery.setBirthStart(end); + } + else + { + babyQuery.setBirthStart(DateUtil.parseYMD(dates[0])); + } + } + else if (StringUtils.isNotEmpty(request.getBirth()) && request.getMonthAgeStart() != null ) + { + + Date start = DateUtil.addMonth(currentDate, -request.getMonthAgeStart()); + String birthStr = request.getBirth(); + String[] dates = birthStr.split(" - "); + + if (DateUtil.parseYMD(dates[1]).getTime() < start.getTime()) + { + babyQuery.setBirthEnd(DateUtil.parseYMD(dates[1])); + } + else + { + babyQuery.setBirthEnd(start); + } + + babyQuery.setBirthStart(DateUtil.parseYMD(dates[0])); + + } + else if (StringUtils.isNotEmpty(request.getBirth())) + { + String birthStr = request.getBirth(); + String[] dates = birthStr.split(" - "); + babyQuery.setBirthStart(DateUtil.parseYMD(dates[0])); + babyQuery.setBirthEnd(DateUtil.parseYMD(dates[1])); + } + else if (request.getMonthAgeStart() != null && request.getMonthAgeEnd() != null) + { + Date start = DateUtil.addMonth(currentDate, -request.getMonthAgeStart()); + babyQuery.setBirthEnd(start); + + Date end = DateUtil.addDay(DateUtil.addMonth(currentDate, -request.getMonthAgeEnd() - 1), 1); + babyQuery.setBirthStart(end); + } + else if (request.getMonthAgeStart() != null) + { + Date start = DateUtil.addMonth(currentDate, -request.getMonthAgeStart()); + babyQuery.setBirthEnd(start); + } + else if (request.getMonthAgeEnd() != null) + { + Date end = DateUtil.addDay(DateUtil.addMonth(currentDate, -request.getMonthAgeEnd() - 1), 1); + babyQuery.setBirthStart(end); + } + Map> result = new HashMap<>(); + + Map> mapItems = getCountGroupItemMaps(); + for(String key : mapItems.keySet()) + { + List groups = mapItems.get(key); + GrowthCountTask task = new GrowthCountTask(groups,babyQuery,babyBookbuildingService,key); + result.put(key,task.getResults()); + } + + BaseObjectResponse objectResponse = new BaseObjectResponse(); + objectResponse.setData(result); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setErrormsg("成功"); + return objectResponse; + } + + + public Map> getCountGroupItemMaps() + { + List list1 = new ArrayList<>(); + BabyGrowthCountResult growH = new BabyGrowthCountResult(); + growH.setBzc("> +3SD"); + growH.setEvaluate("上"); + list1.add(growH); + + BabyGrowthCountResult growH1 = new BabyGrowthCountResult(); + growH1.setBzc("+2SD - +3SD"); + growH1.setEvaluate("中上"); + list1.add(growH1); + + + BabyGrowthCountResult growH2 = new BabyGrowthCountResult(); + growH2.setBzc("+1SD > +2SD"); + growH2.setEvaluate("中+"); + list1.add(growH2); + + BabyGrowthCountResult growH3 = new BabyGrowthCountResult(); + growH3.setBzc("-1SD - +1SD"); + growH3.setEvaluate("中"); + list1.add(growH3); + + + BabyGrowthCountResult growH4 = new BabyGrowthCountResult(); + growH4.setBzc("-2SD> -1SD"); + growH4.setEvaluate("中-"); + list1.add(growH4); + + + BabyGrowthCountResult growH5 = new BabyGrowthCountResult(); + growH5.setBzc("-3SD - -2SD"); + growH5.setEvaluate("中下"); + list1.add(growH5); + + BabyGrowthCountResult growH6 = new BabyGrowthCountResult(); + growH6.setBzc("< -3SD"); + growH6.setEvaluate("下"); + list1.add(growH5); + + + + List list2 = new ArrayList<>(); + BabyGrowthCountResult growW = new BabyGrowthCountResult(); + growW.setBzc("> +3SD"); + growW.setEvaluate("上"); + list2.add(growW); + + BabyGrowthCountResult growW1 = new BabyGrowthCountResult(); + growW1.setBzc("+2SD - +3SD"); + growW1.setEvaluate("中上"); + list2.add(growW1); + + + BabyGrowthCountResult growW2 = new BabyGrowthCountResult(); + growW2.setBzc("+1SD > +2SD"); + growW2.setEvaluate("中+"); + list2.add(growW2); + + BabyGrowthCountResult growW3 = new BabyGrowthCountResult(); + growW3.setBzc("-1SD - +1SD"); + growW3.setEvaluate("中"); + list2.add(growW3); + + + BabyGrowthCountResult growW4 = new BabyGrowthCountResult(); + growW4.setBzc("-2SD> -1SD"); + growW4.setEvaluate("中-"); + list2.add(growW4); + + + BabyGrowthCountResult growW5 = new BabyGrowthCountResult(); + growW5.setBzc("-3SD - -2SD"); + growW5.setEvaluate("中下"); + list2.add(growH5); + + BabyGrowthCountResult growW6 = new BabyGrowthCountResult(); + growW6.setBzc("< -3SD"); + growW6.setEvaluate("下"); + list2.add(growW6); + + + Map> map1 = new HashMap<>(); + map1.put("身长",list1); + map1.put("体重",list2); + + return map1; + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyBookbuildingAddRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyBookbuildingAddRequest.java index cb70278..9476229 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyBookbuildingAddRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyBookbuildingAddRequest.java @@ -166,6 +166,17 @@ public class BabyBookbuildingAddRequest { //儿童诊断 private String babyDiagnosis; + //病历号(住院号) + private String blNo; + + public String getBlNo() { + return blNo; + } + + public void setBlNo(String blNo) { + this.blNo = blNo; + } + public String getBabyDiagnosis() { return babyDiagnosis; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyBuildResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyBuildResult.java index 3fcd8bf..cb729e0 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyBuildResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyBuildResult.java @@ -137,6 +137,18 @@ public class BabyBuildResult { //儿童诊断 private String babyDiagnosis; + + //病历号(住院号) + private String blNo; + + public String getBlNo() { + return blNo; + } + + public void setBlNo(String blNo) { + this.blNo = blNo; + } + public String getBabyDiagnosis() { return babyDiagnosis; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyGrowthCountResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyGrowthCountResult.java new file mode 100644 index 0000000..7e363e7 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyGrowthCountResult.java @@ -0,0 +1,47 @@ +package com.lyms.platform.operate.web.result; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by lqy on 2016-12-21. + */ +public class BabyGrowthCountResult { + + //标准差 + private String bzc; + + //评价 + private String evaluate; + + //人数 + private String count; + + public String getBzc() { + return bzc; + } + + public void setBzc(String bzc) { + this.bzc = bzc; + } + + public String getEvaluate() { + return evaluate; + } + + public void setEvaluate(String evaluate) { + this.evaluate = evaluate; + } + + public String getCount() { + return count; + } + + public void setCount(String count) { + this.count = count; + } + + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/GrowthCountTask.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/GrowthCountTask.java new file mode 100644 index 0000000..f7f01ae --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/GrowthCountTask.java @@ -0,0 +1,85 @@ +package com.lyms.platform.operate.web.utils; + +import com.lyms.platform.biz.service.BabyBookbuildingService; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.operate.web.result.BabyGrowthCountResult; +import com.lyms.platform.query.BabyModelQuery; +import org.apache.commons.collections.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.*; + +/** + * Created by lqy on 2016-12-21. + */ +public class GrowthCountTask{ + + private static ExecutorService pool = Executors.newFixedThreadPool(6); + private BabyModelQuery babyQuery; + private List growth; + private BabyBookbuildingService babyBookbuildingService; + private String type; + public GrowthCountTask(List growth,BabyModelQuery babyQuery, + BabyBookbuildingService babyBookbuildingService,String type) + { + this.babyQuery=babyQuery; + this.growth = growth; + this.babyBookbuildingService = babyBookbuildingService; + this.type = type; + } + public List getResults() { + List results = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(growth)) { + + int batchSize = 1; + int end = 0; + List futures = new ArrayList<>(); + for (int i = 0; i < growth.size(); i += batchSize) { + end = (end + batchSize); + if (end > growth.size()) { + end = growth.size(); + } + + final List growths = growth.subList(i, end); + Callable c = new Callable() + { + @Override + public List call() throws Exception { + + if (CollectionUtils.isNotEmpty(growths)) + { + for(BabyGrowthCountResult grouwth : growths) + { + if ("身长".equals(type)) + { + babyQuery.setHeightEvaluate(grouwth.getEvaluate()); + } + else if ("体重".equals(type)) + { + babyQuery.setWeightEvaluate(grouwth.getEvaluate()); + } + int count = babyBookbuildingService.queryBabyCount(babyQuery); + grouwth.setCount(String.valueOf(count)); + } + } + + return growths; + } + }; + + Future f = pool.submit(c); + futures.add(f); + } + for (Future f : futures) { + try { + results.addAll((List) f.get(30, TimeUnit.SECONDS)); + } catch (Exception e) { + ExceptionUtils.catchException(e, "baby growth count"); + } + } + } + + return results; + } +}