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 a45205d..de05eaa 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 @@ -140,7 +140,6 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { //高危ID private String highRiskInfo; - private String diagnosehighRiskInfo; //体弱ID private String weakSonInfo; @@ -1029,10 +1028,6 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { if (!StringUtils.isEmpty(lastDiagnose)) { condition = condition.and("lastDiagnose", lastDiagnose, MongoOper.IN); } - if (!StringUtils.isEmpty(diagnosehighRiskInfo)) { - condition = condition.and("diagnose", diagnosehighRiskInfo, MongoOper.IS); - } - if (!StringUtils.isEmpty(highRiskInfo)) { condition = condition.and("highRiskInfo", highRiskInfo, MongoOper.IN); @@ -1353,14 +1348,6 @@ public class BabyModelQuery extends BaseQuery implements IConvertToNativeQuery { this.nextDateStart = nextDateStart; } - public String getDiagnosehighRiskInfo() { - return diagnosehighRiskInfo; - } - - public void setDiagnosehighRiskInfo(String diagnosehighRiskInfo) { - this.diagnosehighRiskInfo = diagnosehighRiskInfo; - } - public Date getNextDateEnd() { return nextDateEnd; } 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 3d0438a..3e548a2 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 @@ -220,7 +220,6 @@ public class BabyBuildController extends BaseController { @RequestParam(value = "name", required = false) String name, @RequestParam(value = "highRiskType", required = false) Integer highRiskType, @RequestParam(value = "diagnose", required = false) String diagnose, - @RequestParam(value = "diagnosehighRiskInfo", required = false) String diagnosehighRiskInfo, @RequestParam(value = "dateRange", required = false) String dateRange, @RequestParam(value = "highRiskInfos", required = false) List highRiskInfos, @RequestParam(value = "weakSonInfos", required = false) List weakSonInfos, @@ -258,7 +257,6 @@ public class BabyBuildController extends BaseController { request.setVcCardNo(vcCardNo); request.setWeakSonInfos(weakSonInfos); request.setHighRiskInfos(highRiskInfos); - request.setDiagnosehighRiskInfo(diagnosehighRiskInfo); request.setShowDetail(showDetail); request.setBuildDoctor(buildDoctor); request.setQueryNo(queryNo); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java index fc7d230..6dfd43d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java @@ -37,7 +37,13 @@ public class RiskReportController extends BaseController { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return riskReportFacade.queryBabyRiskReport(babysQueryRequest,loginState.getId()); } - + @RequestMapping(method = RequestMethod.GET, value = "/queryBabyRiskReportQhd") + @ResponseBody + @TokenRequired + public BaseResponse queryBabyRiskReportQhd(@Valid RiskBabysQueryRequest babysQueryRequest, HttpServletRequest request) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return riskReportFacade.queryBabyRiskReportQhd(babysQueryRequest,loginState.getId()); + } /** * 院内高危统计报表 * @return 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 f7b3a0f..fee17bd 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 @@ -2194,7 +2194,6 @@ public class BabyBookbuildingFacade { babyQuery.setWeakSonInfo(request.getWeakSonInfo()); //高危儿详情 babyQuery.setHighRiskInfo(request.getHighRiskInfo()); - babyQuery.setDiagnosehighRiskInfo(request.getDiagnosehighRiskInfo()); //多项体弱儿因素查询条件 babyQuery.setWeakSonInfos(request.getWeakSonInfos()); //多项体弱儿因素查询 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java index 203af35..3d9c5d0 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java @@ -225,6 +225,141 @@ public class RiskReportFacade { return new BaseListResponse() .setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(results); } + public BaseListResponse queryBabyRiskReportQhd(RiskBabysQueryRequest riskBabysQueryRequest, Integer userId) { + + String hospitalId = autoMatchFacade.getHospitalId(userId); + BabyModelQuery babyModelQuery = new BabyModelQuery(); + babyModelQuery.setYn(YnEnums.YES.getId()); + babyModelQuery.setHospitalId(hospitalId); + + //建档时间 + if (StringUtils.isNotEmpty(riskBabysQueryRequest.getBuildTime())) { + String nextDateStr = riskBabysQueryRequest.getBuildTime(); + String[] dates = nextDateStr.split(" - "); + babyModelQuery.setBuildDateStart(DateUtil.parseYMD(dates[0])); + if (dates.length == 2) { + babyModelQuery.setBuildDateEnd(DateUtil.parseYMD(dates[1])); + } + } + + if (StringUtils.isNotEmpty(riskBabysQueryRequest.getBirth())) + { + String birthStr = riskBabysQueryRequest.getBirth(); + String[] dates = birthStr.split(" - "); + babyModelQuery.setBirthStart(DateUtil.parseYMD(dates[0])); + babyModelQuery.setBirthEnd(new Date(DateUtil.parseYMD(dates[1]).getTime()+24*60*60*1000 -1 )); + } + + Date currentDate = DateUtil.formatDate(new Date());if (riskBabysQueryRequest.getMonthAgeStart() != null && riskBabysQueryRequest.getMonthAgeEnd() != null) + { + Date start = DateUtil.addMonth(currentDate, -riskBabysQueryRequest.getMonthAgeStart()); + babyModelQuery.setBirthEnd(start); + + Date end = DateUtil.addDay(DateUtil.addMonth(currentDate, -riskBabysQueryRequest.getMonthAgeEnd() - 1), 1); + babyModelQuery.setBirthStart(end); + } + + BasicConfigQuery basicConfigQuery = new BasicConfigQuery(); + BabyModelQuery query = new BabyModelQuery(); + query.setYn(YnEnums.YES.getId()); + query.setBuildTypeList(babyModelQuery.getBuildTypeList()); + query.setHospitalId(babyModelQuery.getHospitalId()); + if (riskBabysQueryRequest.getType() == 1) { + query.setHighRisk(1); + basicConfigQuery.setParentId(SystemConfig.BABY_HIGH_RISK_ID); + } else if (riskBabysQueryRequest.getType() == 2) { + query.setWeakSon(1); + basicConfigQuery.setParentId(SystemConfig.BABY_WEAK_SON_ID); + } else return null; + + // System.out.println(query.convertToQuery().convertToMongoQuery()); + + int riskPatientCount = babyService.queryBabyCount(query); + + // int allPatientCount = babyService.queryBabyCount(babyModelQuery); + + basicConfigQuery.setYn(YnEnums.YES.getId()); + basicConfigQuery.setEnable(1); + List futures = new ArrayList<>(); + List results = new ArrayList<>(); + List riskLevelConfig = basicConfigService.queryBasicConfig(basicConfigQuery); + if (CollectionUtils.isNotEmpty(riskLevelConfig)) { + List mainRiskReportResults = new ArrayList<>(); + for (BasicConfig levelConfig : riskLevelConfig) { + RiskReportResult risk = new RiskReportResult(); + risk.setLevel(1); + risk.setHighRiskId(levelConfig.getId()); + risk.setHighRisk(levelConfig.getName()); + risk.setPid(levelConfig.getpId()); + mainRiskReportResults.add(risk); + } + if (riskBabysQueryRequest.getType() == 1) { + for (BasicConfig levelConfig : riskLevelConfig) { + RiskReportResult risk = new RiskReportResult(); + risk.setLevel(1); + risk.setHighRiskId(levelConfig.getId()); + risk.setHighRisk(levelConfig.getName()); + risk.setPid(levelConfig.getpId()); + Callable c = new BabyQhdHiskCountTask(basicConfigService, + babyService, levelConfig, + babyModelQuery, + riskPatientCount, riskBabysQueryRequest.getType()); + Future f = commonThreadPool.submit(c); + futures.add(f); + } + results.addAll(mainRiskReportResults); + } else if (riskBabysQueryRequest.getType() == 2) { + BasicConfig levelConfig = riskLevelConfig.get(0); + RiskReportResult risk = new RiskReportResult(); + risk.setLevel(1); + risk.setHighRiskId(levelConfig.getId()); + risk.setHighRisk(levelConfig.getName()); + risk.setPid(levelConfig.getpId()); + Callable c = new BabyHiskCountTask(basicConfigService, + babyService, levelConfig, + babyModelQuery, + riskPatientCount, riskBabysQueryRequest.getType()); + Future f = commonThreadPool.submit(c); + futures.add(f); + } + + if (CollectionUtils.isNotEmpty(futures)) { + for (Future f : futures) { + try { + results.addAll((List) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "high risk count error."); + } + } + } + Map> slaveBasicConfigMap = new HashMap<>(); + for (RiskReportResult bc : results) { + if (riskBabysQueryRequest.getType() == 1) { + if (bc.getPid() != null) { + if (slaveBasicConfigMap.containsKey(bc.getPid())) { + slaveBasicConfigMap.get(bc.getPid()).add(bc); + } else { + List basicConfigs = new ArrayList<>(); + basicConfigs.add(bc); + slaveBasicConfigMap.put(bc.getPid(), basicConfigs); + } + } + } + } + + if (riskBabysQueryRequest.getType() == 1) { + for (RiskReportResult bs : mainRiskReportResults) { + configData(bs, slaveBasicConfigMap, riskPatientCount); + } + } else if (riskBabysQueryRequest.getType() == 2) { + for (RiskReportResult bs : results) { + configSignData(bs, riskPatientCount); + } + } + } + return new BaseListResponse() + .setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS).setData(results); + } /** diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyManageRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyManageRequest.java index 2307039..7b8f541 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyManageRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyManageRequest.java @@ -46,8 +46,6 @@ public class BabyManageRequest extends BaseQuery { private String highRiskInfo; //高危儿多项 private List highRiskInfos; - //高危儿统计秦皇岛数据处理 - private String diagnosehighRiskInfo; //体弱儿多项 private List weakSonInfos; //建档医生id @@ -425,12 +423,4 @@ public class BabyManageRequest extends BaseQuery { this.hospitalId = hospitalId; } - - public String getDiagnosehighRiskInfo() { - return diagnosehighRiskInfo; - } - - public void setDiagnosehighRiskInfo(String diagnosehighRiskInfo) { - this.diagnosehighRiskInfo = diagnosehighRiskInfo; - } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyQhdHiskCountTask.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyQhdHiskCountTask.java new file mode 100644 index 0000000..0d1d070 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyQhdHiskCountTask.java @@ -0,0 +1,79 @@ +package com.lyms.platform.operate.web.utils; + +import com.lyms.platform.biz.service.BabyService; +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.operate.web.result.RiskReportResult; +import com.lyms.platform.pojo.BasicConfig; +import com.lyms.platform.query.BabyModelQuery; +import com.lyms.platform.query.BasicConfigQuery; +import org.apache.commons.collections.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + + +public class BabyQhdHiskCountTask implements Callable { + + private static ExecutorService pool = Executors.newFixedThreadPool(6); + + private BabyService babyService; + private BasicConfigService basicConfigService; + private BasicConfig levelConfig; + private BabyModelQuery babyModelQuery; + private int allPatientCount; + private int type; + + public BabyQhdHiskCountTask(BasicConfigService basicConfigService, + BabyService babyService, BasicConfig levelConfig, + BabyModelQuery babyModelQuery, + int allPatientCount, int type) { + this.basicConfigService = basicConfigService; + this.babyService = babyService; + this.levelConfig = levelConfig; + this.babyModelQuery = babyModelQuery; + this.allPatientCount = allPatientCount; + this.type = type; + } + + @Override + public List call() throws Exception { + BasicConfigQuery basicConfigQuery = new BasicConfigQuery(); + basicConfigQuery.setYn(YnEnums.YES.getId()); + basicConfigQuery.setEnable(1); + if (type == 1) { + basicConfigQuery.setParentId(levelConfig.getId()); + } else if (type == 2) { + basicConfigQuery.setParentId(levelConfig.getParentId()); + } + List results = new ArrayList<>(); + List riskConfig = basicConfigService.queryBasicConfig(basicConfigQuery); + if (CollectionUtils.isNotEmpty(riskConfig)) { + for (int i = 0; i < riskConfig.size(); i++) { + BasicConfig config = riskConfig.get(i); + babyModelQuery.setYn(YnEnums.YES.getId()); + if (type == 1) { + babyModelQuery.setLastDiagnose(config.getName());//处理秦皇岛数据,只能用name + } else if (type == 2) { + babyModelQuery.setWeakSonInfo(config.getId()); + } + int riskPatientCount = babyService.queryBabyCount(babyModelQuery); + System.out.println("name:" + config.getName() + ",riskPatientCount:" + riskPatientCount); + RiskReportResult risk = new RiskReportResult(); + risk.setHighRiskId(config.getId()); + risk.setHighRisk(config.getName()); + risk.setPid(config.getpId()); + risk.setRiskCount(riskPatientCount); + results.add(risk); + } + } + return results; + } + + +} + +