diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java index 9fe21b5..2d11236 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java @@ -16,10 +16,7 @@ import com.lyms.platform.operate.web.utils.JdbcUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -593,4 +590,19 @@ public class BabyStatisticsManagerController extends BaseController { } + /** + * 隆化-儿童健康体检统计表 + * @param request + * @param babyManageRequest + * @return + */ + @RequestMapping(value = "/babyHealthCheckUpStatistics", method = RequestMethod.GET) + @TokenRequired + @ResponseBody + public BaseListResponse babyHealthCheckUpStatistics(HttpServletRequest request, + BabyManageRequest babyManageRequest) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return babyStatisticsManagerFacade.babyHealthCheckUpStatistics(babyManageRequest,loginState.getId()); + } + } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java index 1aa9a34..5b43484 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java @@ -1,18 +1,24 @@ package com.lyms.platform.operate.web.facade; +import com.lyms.platform.biz.service.BabyBookbuildingService; import com.lyms.platform.biz.service.BabyCheckService; import com.lyms.platform.biz.service.BabyService; import com.lyms.platform.biz.service.BasicConfigService; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.SexEnum; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseObjectResponse; 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.BabyList2Task; +import com.lyms.platform.operate.web.utils.BabyList3Task; +import com.lyms.platform.operate.web.utils.BabyListTask; import com.lyms.platform.operate.web.utils.JdbcUtil; import com.lyms.platform.operate.web.worker.MaterDeliverWorker; import com.lyms.platform.operate.web.worker.babyStatisticalProbabilityWorker; +import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.BabyCheckModel; import com.lyms.platform.pojo.BabyModel; @@ -57,7 +63,10 @@ public class BabyStatisticsManagerFacade { @Autowired private AutoMatchFacade autoMatchFacade; - + @Autowired + private BabyBookbuildingService babyBookbuildingService; + @Autowired + private OrganizationService organizationService; @Autowired @Qualifier("commonThreadPool") @@ -1313,4 +1322,93 @@ public class BabyStatisticsManagerFacade { data.put("managementRatePercentage", percent(managementRateChechkCount, managementRateCount)); return data; } + + public BaseListResponse babyHealthCheckUpStatistics(BabyManageRequest request,Integer userId) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + + BabyModelQuery babyQuery = new BabyModelQuery(); + babyQuery.setHospitalId(hospitalId); + babyQuery.setYn(YnEnums.YES.getId()); + // 省 + babyQuery.setProvinceId(StringUtils.isEmpty(request.getProvinceId()) ? null : request.getProvinceId()); + // 市 + babyQuery.setCityId(StringUtils.isEmpty(request.getCityId()) ? null : request.getCityId()); + // 区/县 + babyQuery.setAreaId(StringUtils.isEmpty(request.getAreaId()) ? null : request.getAreaId()); + //街道 + babyQuery.setStreetId(StringUtils.isEmpty(request.getStreetId()) ? null : request.getStreetId()); + + //筛选检查时间 + List babyModels=babyBookbuildingService.queryBabyBuildByCond(babyQuery); + List ids=new ArrayList<>(); + if (CollectionUtils.isNotEmpty(babyModels)) { + int batchSize = 5; + int end = 0; + List futures = new ArrayList <>(); + for (int i = 0; i < babyModels.size(); i += batchSize) { + end = (end + batchSize); + if (end > babyModels.size()) { + end = babyModels.size(); + } + List ms = babyModels.subList(i, end); + Callable c = new BabyList2Task( + ms,babyCheckService, + request.getCheckTime()); + Future f = commonThreadPool.submit(c); + futures.add(f); + } + if (CollectionUtils.isNotEmpty(futures)) { + for (Future f : futures) { + try { + ids.addAll((List ) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "BabyList2Task list error."); + } + } + } + } + //结果ids分页组装数据 + List list = new ArrayList <>(); + BabyModelQuery babyQuery2 = new BabyModelQuery(); + if (CollectionUtils.isNotEmpty(ids)) { + + babyQuery2.setNeed("true");//分页 + babyQuery2.setPage(request.getPage()); + babyQuery2.setLimit(request.getLimit()); + babyQuery2.setIds(ids); + List babyModels2=babyBookbuildingService.queryBabyBuildByCond(babyQuery2); + int batchSize = 5; + int end = 0; + List futures = new ArrayList <>(); + for (int i = 0; i < babyModels2.size(); i += batchSize) { + end = (end + batchSize); + if (end > babyModels2.size()) { + end = babyModels2.size(); + } + List ms = babyModels2.subList(i, end); + Callable c = new BabyList3Task( + basicConfigService, + organizationService, + ms, hospitalId,babyCheckService); + Future f = commonThreadPool.submit(c); + futures.add(f); + } + if (CollectionUtils.isNotEmpty(futures)) { + for (Future f : futures) { + try { + list.addAll((List ) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "BabyList3Task list error."); + } + } + } + } + + BaseListResponse objectResponse = new BaseListResponse(); + objectResponse.setErrorcode(ErrorCodeConstants.SUCCESS); + objectResponse.setData(list); + objectResponse.setPageInfo(babyQuery2.getPageInfo()); + objectResponse.setErrormsg("成功"); + return objectResponse; + } } 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 28d7918..208b7cd 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 @@ -133,6 +133,16 @@ public class BabyManageRequest extends BaseQuery { private Integer settleType; //高危结案时间 private String settleTime; + //儿保检查时间 + private String checkTime; + + public String getCheckTime() { + return checkTime; + } + + public void setCheckTime(String checkTime) { + this.checkTime = checkTime; + } public Integer getSettleType() { return settleType; diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyManageListResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyManageListResult.java index d667adb..24ce1a0 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyManageListResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/BabyManageListResult.java @@ -120,6 +120,28 @@ public class BabyManageListResult { //隆化-儿童建档-自动结案时间 private String settleTime; + //隆化-儿童健康体检统计表 (只有居住地) + private String habitat; + + //隆化-儿童健康体检统计表 -体检套餐对应检查时间 + private List dataResult; + + public List getDataResult() { + return dataResult; + } + + public void setDataResult(List dataResult) { + this.dataResult = dataResult; + } + + public String getHabitat() { + return habitat; + } + + public void setHabitat(String habitat) { + this.habitat = habitat; + } + public Integer getSettleType() { return settleType; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyList2Task.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyList2Task.java new file mode 100644 index 0000000..414ac08 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyList2Task.java @@ -0,0 +1,82 @@ +package com.lyms.platform.operate.web.utils; + +import com.lyms.platform.biz.service.BabyCheckService; +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.common.enums.ServiceStatusEnums; +import com.lyms.platform.common.enums.ServiceTypeEnums; +import com.lyms.platform.common.enums.SexEnum; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.facade.BabyCheckFacade; +import com.lyms.platform.operate.web.facade.BasicConfigFacade; +import com.lyms.platform.operate.web.result.BabyManageListResult; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.BabyCheckModel; +import com.lyms.platform.pojo.BabyModel; +import com.lyms.platform.pojo.BasicConfig; +import com.lyms.platform.query.BabyCheckModelQuery; +import org.apache.commons.collections.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.concurrent.Callable; + +/** + * Created by shy on 2022/3/17. + */ +public class BabyList2Task implements Callable { + + private List models; + + private BabyCheckService babyCheckService; + + private String checkTime; + + public BabyList2Task( + List models, + BabyCheckService babyCheckService, + String checkTime) { + this.models = models; + this.babyCheckService = babyCheckService; + this.checkTime = checkTime; + + } + + @Override + public List call() throws Exception { + List list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(models)) { + for (BabyModel model : models) { + BabyCheckModelQuery query = new BabyCheckModelQuery(); + query.setBuildId(model.getId()); + query.setYn(YnEnums.YES.getId()); + //儿保检查时间 + if(StringUtils.isNotEmpty(checkTime)){ + + String[] dates = checkTime.split(" - "); + + query.setCheckDateStart(DateUtil.parseYMD(dates[0])); + if (dates.length == 2) { + Date date = DateUtil.parseYMD(dates[1]); + if (null != date) { + long d = date.getTime() + 86398000; + date = new Date(d); + } + query.setCheckDateEnd(date); + } + } + List models = babyCheckService.queryBabyCheckRecord(query); + if (CollectionUtils.isNotEmpty(models)) { + list.add(model.getId()); + } + } + } + return list; + } + +} + + diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyList3Task.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyList3Task.java new file mode 100644 index 0000000..f189c7d --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/BabyList3Task.java @@ -0,0 +1,126 @@ +package com.lyms.platform.operate.web.utils; + +import com.lyms.platform.biz.service.BabyCheckService; +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.common.enums.SexEnum; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.result.BabyManageListResult; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.pojo.BabyCheckModel; +import com.lyms.platform.pojo.BabyModel; +import com.lyms.platform.pojo.BasicConfig; +import com.lyms.platform.query.BabyCheckModelQuery; +import org.apache.commons.collections.CollectionUtils; + +import java.util.*; +import java.util.concurrent.Callable; + +/** + * Created by shy on 2022/3/17. + */ +public class BabyList3Task implements Callable { + + private BasicConfigService basicConfigService; + + private OrganizationService organizationService; + + private List models; + + private String hospitalId; + + private BabyCheckService babyCheckService; + + public BabyList3Task( + BasicConfigService basicConfigService, + OrganizationService organizationService, + List models, + String hospitalId, + BabyCheckService babyCheckService) { + this.basicConfigService = basicConfigService; + this.organizationService = organizationService; + this.models = models; + this.hospitalId = hospitalId; + this.babyCheckService = babyCheckService; + + } + + @Override + public List call() throws Exception { + List list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(models)) { + for (BabyModel model : models) { + BabyManageListResult result = new BabyManageListResult(); + result.setId(model.getId()); + + + result.setSex(model.getSex() == null ? "" : StringUtils.emptyDeal(SexEnum.getTextById(model.getSex()))); + result.setBabyName(StringUtils.emptyDeal(model.getName())); + result.setBirthday(StringUtils.emptyDeal(DateUtil.getyyyy_MM_dd(model.getBirth()))); + result.setMommyName(StringUtils.emptyDeal(model.getMname())); + result.setMommnyPhone(StringUtils.emptyDeal(model.getMphone())); + result.setMommnyEncryptPhone(StringUtils.encryPhone(model.getMphone())); + result.setMonthAge(StringUtils.emptyDeal(DateUtil.getBabyMonthAge(model.getBirth(), new Date()))); + result.setPatientId(model.getParentId()); + result.setBuildTime(DateUtil.getyyyy_MM_dd(model.getBuildDate())); + String hospitalName = organizationService.getOrganization(Integer.valueOf(hospitalId)).getName(); + result.setHospitalName(hospitalName); + + result.setHospitalName(organizationService.getOrganization(Integer.valueOf(model.getHospitalId())).getName()); + // 开始查询省市区街道 + // 省 + BasicConfig provinceName = basicConfigService.getOneBasicConfigById(model.getProvinceId()); + // 市 + BasicConfig cityName = basicConfigService.getOneBasicConfigById(model.getCityId()); + // 区 + BasicConfig areaName = basicConfigService.getOneBasicConfigById(model.getAreaId()); + // 街道 + BasicConfig streetName = basicConfigService.getOneBasicConfigById(model.getStreetId()); + // 具体 + String address = model.getAddress(); + String habitat = ""; + if (provinceName != null) { + habitat += provinceName.getName(); + } + if (cityName != null) { + habitat += cityName.getName(); + } + if (areaName != null) { + habitat += areaName.getName(); + } + if (streetName != null) { + habitat += streetName.getName(); + } + if (!StringUtils.isEmpty(address)) { + habitat += address; + } + if (habitat.length() == 0) { + habitat = "-"; + } + result.setHabitat(habitat); + + BabyCheckModelQuery query = new BabyCheckModelQuery(); + query.setBuildId(model.getId()); + query.setYn(YnEnums.YES.getId()); + + List models = babyCheckService.queryBabyCheckRecord(query); + if (CollectionUtils.isNotEmpty(models)) { + List listdata=new ArrayList<>(); + for (BabyCheckModel babyCheckModel : models) { + Map map=new HashMap<>(); + map.put(babyCheckModel.getTcType(), DateUtil.getyyyy_MM_dd(babyCheckModel.getCheckDate())); + listdata.add(map); + } + result.setDataResult(listdata); + } + + list.add(result); + } + } + return list; + } + +} + +