diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java index d88edac..ff89a9b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntExRecordFacade.java @@ -18,6 +18,8 @@ import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.FunvCommonUtil; import com.lyms.platform.operate.web.utils.UnitConstants; import com.lyms.platform.operate.web.utils.UnitUtils; +import com.lyms.platform.operate.web.worker.AntExRecordWorker; +import com.lyms.platform.operate.web.worker.WorkHR; import com.lyms.platform.permission.model.Organization; import com.lyms.platform.permission.model.OrganizationQuery; import com.lyms.platform.permission.model.Users; @@ -29,12 +31,16 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.util.*; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; /** * 产检管理 @@ -61,6 +67,9 @@ public class AntExRecordFacade { private OrganizationService organizationService; @Autowired private DataPermissionService dataPermissionService; + @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; public void syncAntRecordToList(String hospitalId) { recordService.syncAntRecordToList(hospitalId); @@ -203,6 +212,30 @@ public class AntExRecordFacade { return antExRecordQuery; } + + private List convertToHighRisk(List patientses, Integer userId, String hospital) { + List data = new ArrayList<>(); + int batchSize = 4; + int end = 0; + List listFuture = new ArrayList<>(); + for (int i = 0; i < patientses.size(); i += batchSize) { + end = (end + batchSize); + if (end > patientses.size()) { + end = patientses.size(); + } + listFuture.add(commonThreadPool.submit(new WorkHR(patientses.subList(i, end), usersService, hospital, basicConfigService, antExService, patientsService, organizationService))); + } + for (Future f : listFuture) { + try { + data.addAll((List) f.get(30, TimeUnit.SECONDS)); + } catch (Exception e) { + ExceptionUtils.catchException(e, "convertToHighRisk get result Future error."); + } + } + return data; + } + + /** * 产检管理 * @@ -214,8 +247,7 @@ public class AntExRecordFacade { List data = new ArrayList<>(); List antExRecordModelList = recordService.queryAntExRecords(antExRecordQuery); if (CollectionUtils.isNotEmpty(antExRecordModelList)) { - for (AntExRecordModel e : antExRecordModelList) { - AntExManagerResult antExManagerResult = new AntExManagerResult(); + /*AntExManagerResult antExManagerResult = new AntExManagerResult(); antExManagerResult.convertToResult(e); if (isRegion) { //产检医院 @@ -270,9 +302,25 @@ public class AntExRecordFacade { antExManagerResult.setChTimes(dichi); //高危因素 antExManagerResult.setrLevel(commonService.findRiskLevel(e.gethLevel())); - antExManagerResult.setRiskFactor(commonService.resloveFactor(e.gethRisk())); + antExManagerResult.setRiskFactor(commonService.resloveFactor(e.gethRisk()));*/ - data.add(antExManagerResult); + + int batchSize = 4; + int end = 0; + List listFuture = new ArrayList<>(); + for (int i = 0; i < antExRecordModelList.size(); i += batchSize) { + end = (end + batchSize); + if (end > antExRecordModelList.size()) { + end = antExRecordModelList.size(); + } + listFuture.add(commonThreadPool.submit(new AntExRecordWorker(antExRecordModelList.subList(i, end), isRegion, organizationService, usersService, recordService, commonService, hospital, basicConfigService))); + } + for (Future f : listFuture) { + try { + data.addAll((List) f.get(30, TimeUnit.SECONDS)); + } catch (Exception e) { + ExceptionUtils.catchException(e, "antexrecord findList get result future error."); + } } } return new BaseListResponse().setData(data).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setPageInfo(antExRecordQuery.getPageInfo()); @@ -553,62 +601,62 @@ public class AntExRecordFacade { //查询复诊接口 - public BaseObjectResponse findAntenatalExamination(String id){ + public BaseObjectResponse findAntenatalExamination(String id) { BaseObjectResponse br = new BaseObjectResponse(); - if (org.apache.commons.lang.StringUtils.isEmpty(id)){ + if (org.apache.commons.lang.StringUtils.isEmpty(id)) { br.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); br.setErrormsg("id为空"); return br; } AntenatalExaminationModel data = antExService.findOneById(id); - if (data==null || data.getYn()==YnEnums.NO.getId()){ + if (data == null || data.getYn() == YnEnums.NO.getId()) { br.setErrorcode(ErrorCodeConstants.NO_DATA); br.setErrormsg("没有查询到数据"); return br; } - if (org.apache.commons.lang.StringUtils.isEmpty(data.getParentId())){ + if (org.apache.commons.lang.StringUtils.isEmpty(data.getParentId())) { br.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); br.setErrormsg("数据异常"); return br; } Patients patients = patientsService.findOnePatientById(data.getParentId()); - if (patients==null || patients.getYn()==YnEnums.NO.getId()){ + if (patients == null || patients.getYn() == YnEnums.NO.getId()) { br.setErrorcode(ErrorCodeConstants.PARAMETER_ERROR); br.setErrormsg("孕妇信息不存在"); return br; } - Map map= new HashMap<>(); + Map map = new HashMap<>(); /* 基本信息 */ //孕妇基本信息 - map.put("id",data.getId()); - map.put("username",patients.getUsername()); - map.put("birth",DateUtil.getyyyy_MM_dd(patients.getBirth())); - map.put("age",DateUtil.getAge(patients.getBirth())); - map.put("phone",patients.getPhone()); - map.put("fmWeek",patients.getFmWeek()); - map.put("dueDate",DateUtil.getyyyy_MM_dd(patients.getDueDate())); - map.put("mremark",patients.getMremark()); - map.put("oRiskFactor",patients.getoRiskFactor()); - map.put("riskScore",patients.getRiskScore()); + map.put("id", data.getId()); + map.put("username", patients.getUsername()); + map.put("birth", DateUtil.getyyyy_MM_dd(patients.getBirth())); + map.put("age", DateUtil.getAge(patients.getBirth())); + map.put("phone", patients.getPhone()); + map.put("fmWeek", patients.getFmWeek()); + map.put("dueDate", DateUtil.getyyyy_MM_dd(patients.getDueDate())); + map.put("mremark", patients.getMremark()); + map.put("oRiskFactor", patients.getoRiskFactor()); + map.put("riskScore", patients.getRiskScore()); //产检基本信息 - map.put("checkDate",DateUtil.getyyyy_MM_dd(data.getCheckDate())); - map.put("currentDueDate",data.getCurrentDueDate()); + map.put("checkDate", DateUtil.getyyyy_MM_dd(data.getCheckDate())); + map.put("currentDueDate", data.getCurrentDueDate()); map.put("checkDoctor", data.getCheckDoctor()); String hospital = ""; - if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getHospitalId())){ + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getHospitalId())) { Organization organization = organizationService.getOrganization(Integer.parseInt(data.getHospitalId())); - if (organization!=null && organization.getYn()==YnEnums.YES.getId()){ + if (organization != null && organization.getYn() == YnEnums.YES.getId()) { hospital = organization.getName(); } } map.put("hospital", hospital); - map.put("nextCheckTime",DateUtil.getyyyy_MM_dd(data.getNextCheckTime())); + map.put("nextCheckTime", DateUtil.getyyyy_MM_dd(data.getNextCheckTime())); map.put("cDueWeek", data.getcDueWeek()); /* 复诊信息 */ @@ -626,63 +674,63 @@ public class AntExRecordFacade { map.put("gongGao", UnitUtils.unitSplice(data.getGongGao(), UnitConstants.CM)); map.put("abdominalCircumference", UnitUtils.unitSplice(data.getAbdominalCircumference(), UnitConstants.CM)); String edema = ""; - if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getEdema())){ - for (FuZhongEnums fuZhongEnums:FuZhongEnums.values()){ - if (data.getEdema().equals(fuZhongEnums.getId())){ + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getEdema())) { + for (FuZhongEnums fuZhongEnums : FuZhongEnums.values()) { + if (data.getEdema().equals(fuZhongEnums.getId())) { edema = fuZhongEnums.getName(); } } } - map.put("edema",edema); + map.put("edema", edema); map.put("tireNumber", TaiShuEnums.getTitle(data.getTireNumber())); //胎儿情况 List tireList = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(data.getTireData())){ - for (Object temp : data.getTireData()){ - Map tire = JsonUtil.getMap(temp.toString()); + if (CollectionUtils.isNotEmpty(data.getTireData())) { + for (Object temp : data.getTireData()) { + Map tire = JsonUtil.getMap(temp.toString()); String heartRate = tire.get("heartRate"); String fetalPosition = tire.get("fetalPosition"); String fetalPresentation = tire.get("fetalPresentation"); String join = tire.get("join"); - Map tireMap = new HashMap<>(); - tireMap.put("heartRate",UnitUtils.unitSplice(heartRate, UnitConstants.CIFEN)); + Map tireMap = new HashMap<>(); + tireMap.put("heartRate", UnitUtils.unitSplice(heartRate, UnitConstants.CIFEN)); tireMap.put("fetalPosition", FetalPositionEnums.getTitle(fetalPosition)); tireMap.put("fetalPresentation", FetalEnums.getTitle(fetalPresentation)); tireMap.put("join", JoinEnums.getTitle(join)); tireList.add(tireMap); } } - map.put("tireData",tireList); + map.put("tireData", tireList); /* 辅助信息 */ map.put("hemoglobin", UnitUtils.unitSplice(data.getHemoglobin(), UnitConstants.GL)); - map.put("urineProtein",data.getUrineProtein()); + map.put("urineProtein", data.getUrineProtein()); map.put("bloodSugar", UnitUtils.unitSplice(data.getUrineProtein(), UnitConstants.MMOLL)); - map.put("bChao",data.getbChao()); + map.put("bChao", data.getbChao()); /* 诊断指导 */ String diagnosis = ""; - if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getDiagnosis())){ + if (org.apache.commons.lang.StringUtils.isNotEmpty(data.getDiagnosis())) { List temp = JsonUtil.toList(data.getDiagnosis(), String.class); - if (CollectionUtils.isNotEmpty(temp)){ + if (CollectionUtils.isNotEmpty(temp)) { StringBuilder sb = new StringBuilder(); - for (String sId : temp){ + for (String sId : temp) { sb.append(FunvCommonUtil.getBaseicConfigByid(sId, basicConfigService)).append(","); } if (sb.toString().endsWith(",")) { diagnosis = sb.substring(0, sb.length() - 1); - }else { + } else { diagnosis = sb.toString(); } } } - map.put("diagnosis",diagnosis); - map.put("treatmentOpinion",data.getTreatmentOpinion()); - map.put("guide",data.getGuide()); + map.put("diagnosis", diagnosis); + map.put("treatmentOpinion", data.getTreatmentOpinion()); + map.put("guide", data.getGuide()); br.setErrorcode(ErrorCodeConstants.SUCCESS); br.setErrormsg("成功"); @@ -691,7 +739,4 @@ public class AntExRecordFacade { } - - - } \ No newline at end of file diff --git a/platform-operate-api/src/main/resources/spring/applicationContext.xml b/platform-operate-api/src/main/resources/spring/applicationContext.xml index 76ac598..c979f4c 100644 --- a/platform-operate-api/src/main/resources/spring/applicationContext.xml +++ b/platform-operate-api/src/main/resources/spring/applicationContext.xml @@ -53,4 +53,26 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file