From eecab34fe1cfc3dc797112f5d784ac52879e31d5 Mon Sep 17 00:00:00 2001 From: wtt Date: Thu, 24 Sep 2020 17:34:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A9=9A=E6=A3=80=E5=AD=95=E6=A3=80=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/PreEugenicsBaseController.java | 14 ++ .../operate/web/service/IPreEugenicsService.java | 2 + .../web/service/impl/PreEugebicsServiceImpl.java | 184 ++++++++++++++++----- 3 files changed, 159 insertions(+), 41 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java index 52e0e7e..3b0666b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java @@ -196,6 +196,20 @@ public class PreEugenicsBaseController extends BaseController { return iPreEugenicsService.getRcCount(time, getUserId(request)); } + /** + * 获取 乡镇婚检孕检统计 + * + * @param time + * @param request + * @Author: 武涛涛 + * @Date: 2020/9/24 16:17 + */ + @RequestMapping(method = RequestMethod.GET, value = "/getHjYjList") + @ResponseBody + @TokenRequired + public BaseObjectResponse getHjYjList(@RequestParam String time, HttpServletRequest request) { + return iPreEugenicsService.getHjYjList(time, getUserId(request)); + } /** * 导出数据 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java index 249137c..ff77963 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java @@ -21,5 +21,7 @@ public interface IPreEugenicsService extends IFormReportService list = mongoTemplate.find(query, PreEugenicsBaseModel.class); + List list = mongoTemplate.find(query, PreEugenicsBaseModel.class); if (CollectionUtils.isEmpty(list)) { PreEugenicsBaseModel one = new PreEugenicsBaseModel(); @@ -114,8 +118,7 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen } ////男 - if (model != null && "5d0b782f-b61b-441b-b8c5-4bf55eece273".equals(model.getSex())) - { + if (model != null && "5d0b782f-b61b-441b-b8c5-4bf55eece273".equals(model.getSex())) { //男性基本信息 one.setHusbandName(model.getUsername()); one.setHusbandNation(model.getNationId()); @@ -143,7 +146,7 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen one.setHusbandCurrentStreet(model.getStreetId()); one.setHusbandCurrentAddress(model.getAddress()); - } else if (model != null){ + } else if (model != null) { //女性性基本信息 one.setWifeName(model.getUsername()); @@ -315,8 +318,8 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen long count = mongoTemplate.count(query, PreEugenicsBaseModel.class); param.mysqlBuild((int) count); query.skip(param.getOffset()).limit(param.getLimit()); - List results = new LinkedList<>(); - List preEugenicsBaseModels = mongoTemplate.find(query, PreEugenicsBaseModel.class); + List results = new LinkedList <>(); + List preEugenicsBaseModels = mongoTemplate.find(query, PreEugenicsBaseModel.class); for (PreEugenicsBaseModel model : preEugenicsBaseModels) { PreEugenicsBaseListResult result = getPreEugenicsBaseListResult(model); results.add(result); @@ -479,7 +482,7 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen } - private void setDoctorName(Map map) { + private void setDoctorName(Map map) { if (map != null && map.size() > 0 && map.get("doctor") != null) { String doctor = String.valueOf(map.get("doctor")); String doctorStr = CommonsHelper.getUserName(doctor, usersService); @@ -553,16 +556,119 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen @Override public BaseObjectResponse getRcCount(String time, Integer userId) { - List> datas = getDatas(time, userId); + List > datas = getDatas(time, userId); + + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(datas); + } + + /** + * 获取 乡镇婚检孕检统计 + * + * @param time + * @param userId + * @Author: 武涛涛 + * @Date: 2020/9/24 16:18 + */ + @Override + public BaseObjectResponse getHjYjList(String time, Integer userId) { + + /* + 存储导出list 详情 ,只写了统计总数,没有导出详情 + */ + int hjAllCount = 0; + int yjAllCount = 0; + + //乡镇list 存储 乡镇名称,婚检总数,孕检总数 + List > datas = new LinkedList <>(); + + //当前用户获取对应的 乡镇列表 + String hospitalId = autoMatchFacade.getHospitalId(userId); + Organization organization = organizationService.getOrganization(Integer.valueOf(hospitalId)); + List items = basicConfigService.queryByParentId(organization.getAreaId()); + if (CollectionUtils.isNotEmpty(items)) { + for (BasicConfig item : items) { + Map data = new HashMap(); + data.put("name", item.getName()); + /*婚检*/ + List residentsIds = getResidentsIds(hospitalId, item); + //通过建档 residentsIds 获取这短时间婚检孕检的男女 + if(CollectionUtils.isNotEmpty(residentsIds)){ + PremaritalCheckupQuery query = new PremaritalCheckupQuery(); + query.setYn(YnEnums.YES.getId()); + query.setHospitalId(hospitalId); + query.setParentIds(residentsIds); + if (StringUtils.isNotEmpty(time)) { + try { + query.setPremaritalUpTimeStart(DateUtil.getSNDate(time)[0]); + query.setPremaritalUpTimeEnd(DateUtil.getSNDate(time)[1]); + } catch (Exception e) { + e.printStackTrace(); + } + } + List hjList = premaritalCheckupService.queryPremaritalCheckup(query); + //单个乡镇婚检总数 + data.put("hjCount", hjList.size()); + //婚检总数 + hjAllCount += hjList.size(); + } + + /*孕检*/ + Query yquery = new Query(); + String[] arrs = time.split(" - "); + Date start = DateUtil.parseYMD(arrs[0]); + Date end = DateUtil.parseYMD(arrs[1]); + end = DateUtil.getDayLastSecond(end); + yquery.addCriteria(Criteria.where("fillDate").gte(start).lte(end)); + yquery.addCriteria(Criteria.where("hyj").is(0)); +// tquery.addCriteria(Criteria.where("hyj").is(1)); + yquery.addCriteria(Criteria.where("hospitalId").is(hospitalId)); + yquery.addCriteria(Criteria.where("wifeCurrentStreet").is(item.getId())); + List yjList = mongoTemplate.find(yquery, PreEugenicsBaseModel.class); + if (CollectionUtils.isNotEmpty(yjList)) { + yjAllCount += yjList.size(); + data.put("yjCount", yjList.size()); + } + datas.add(data); + + } + //合计 + Map data = new HashMap(); + data.put("name", "合计"); + data.put("hjCount", hjAllCount); + data.put("yjCount", yjAllCount); + datas.add(data); + } - return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(datas); + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(datas); + } + + /** + * 获取乡镇,婚检建档 男女Id + * @Author: 武涛涛 + * @Date: 2020/9/24 17:18 + */ + private List getResidentsIds(String hospitalId, BasicConfig item) { + List residentsIds = new ArrayList <>(); + ResidentsArchiveQuery archiveQuery = new ResidentsArchiveQuery(); + archiveQuery.setYn(YnEnums.YES.getId()); + archiveQuery.setHospitalId(hospitalId); + archiveQuery.setStreetId(item.getId()); + List hjCounts = residentsArchiveService.queryResident(archiveQuery); + if(CollectionUtils.isNotEmpty(hjCounts)){ + for (int i = 0; i < hjCounts.size(); i++) { + if(hjCounts.get(i)!=null && StringUtils.isNotEmpty(hjCounts.get(i).getId())){ + residentsIds.add(hjCounts.get(i).getId()); + } + } + } + return residentsIds; } @Override public void exportRcCount(String time, Integer userId, HttpServletResponse response) { - List> datas = getDatas( time, userId); - Map cnames = new LinkedHashMap<>(); + List > datas = getDatas(time, userId); + Map cnames = new LinkedHashMap <>(); cnames.put("name", "乡镇"); cnames.put("hjCount", "婚检"); cnames.put("yjCount", "孕检"); @@ -572,23 +678,20 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen } - private List> getDatas(String time,Integer userId) - { + private List > getDatas(String time, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); Organization organization = organizationService.getOrganization(Integer.valueOf(hospitalId)); - List> datas = new LinkedList<>(); + List > datas = new LinkedList <>(); int hjAllCount = 0; int yjAllCount = 0; int tcAllCount = 0; - List items = basicConfigService.queryByParentId(organization.getAreaId()); - if (CollectionUtils.isNotEmpty(items)) - { - for (BasicConfig item : items) - { - Map data = new HashMap(); - data.put("name",item.getName()); + List items = basicConfigService.queryByParentId(organization.getAreaId()); + if (CollectionUtils.isNotEmpty(items)) { + for (BasicConfig item : items) { + Map data = new HashMap(); + data.put("name", item.getName()); //查询条件 ResidentsArchiveQuery query = new ResidentsArchiveQuery(); query.setYn(YnEnums.YES.getId()); @@ -607,8 +710,8 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen e.printStackTrace(); } } - long hjCount = sumField("lyms_resident", "checkup", query.convertToQuery().getCriteria()); - hjAllCount+=hjCount; + long hjCount = sumField("lyms_resident", "checkup", query.convertToQuery().getCriteria()); + hjAllCount += hjCount; Query yquery = new Query(); String[] arrs = time.split(" - "); @@ -632,45 +735,44 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen long tcCount = mongoTemplate.count(tquery, PreEugenicsBaseModel.class); tcAllCount += tcCount; - data.put("hjCount",hjCount); + data.put("hjCount", hjCount); data.put("yjCount", yjCount); - data.put("tcCount",tcCount); + data.put("tcCount", tcCount); datas.add(data); } - Map data = new HashMap(); - data.put("name","合计"); - data.put("hjCount",hjAllCount); - data.put("yjCount",yjAllCount); - data.put("tcCount",tcAllCount); + Map data = new HashMap(); + data.put("name", "合计"); + data.put("hjCount", hjAllCount); + data.put("yjCount", yjAllCount); + data.put("tcCount", tcAllCount); datas.add(data); } return datas; } - public Integer sumField(String collection,String filedName,Criteria criteria) { + public Integer sumField(String collection, String filedName, Criteria criteria) { Integer total = 0; Query query = new Query(); - if(criteria!=null){ + if (criteria != null) { query.addCriteria(criteria); } - List operations = new ArrayList<>(); + List operations = new ArrayList <>(); operations.add(Aggregation.match(criteria)); operations.add(Aggregation.group().sum(filedName).as("total")); Aggregation aggregation = Aggregation.newAggregation(operations); - AggregationResults results =mongoTemplate.aggregate(aggregation, collection, Total.class); - List totals = results.getMappedResults(); - if (CollectionUtils.isNotEmpty(totals)) - { - total = totals.get(0).getTotal(); + AggregationResults results = mongoTemplate.aggregate(aggregation, collection, Total.class); + List totals = results.getMappedResults(); + if (CollectionUtils.isNotEmpty(totals)) { + total = totals.get(0).getTotal(); } return total; } } -class Total -{ + +class Total { private int total; public int getTotal() { -- 1.8.3.1