From bc0b0873fbac7c5d28e01f9da3b4ce748b5e8d7e Mon Sep 17 00:00:00 2001 From: changpengfei Date: Thu, 14 Oct 2021 10:16:36 +0800 Subject: [PATCH] =?UTF-8?q?1=E6=B2=B3=E5=8C=97=E7=9C=810-6=E5=B2=81?= =?UTF-8?q?=E5=84=BF=E7=AB=A5=E4=BF=9D=E5=81=A5=E7=B3=BB=E7=BB=9F=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=99=BB=E8=AE=B0=E8=A1=A8=202=200-6=E5=B2=81?= =?UTF-8?q?=E5=84=BF=E7=AB=A5=E8=A7=86=E8=A7=89=E5=81=A5=E5=BA=B7=E6=A1=A3?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/BabyHealthController.java | 128 ++++ .../operate/web/facade/BabyHealthFacade.java | 654 +++++++++++++++++++++ .../src/main/resources/babyhealthstat.xls | Bin 0 -> 22016 bytes 3 files changed, 782 insertions(+) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyHealthController.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyHealthFacade.java create mode 100644 platform-operate-api/src/main/resources/babyhealthstat.xls diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyHealthController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyHealthController.java new file mode 100644 index 0000000..87c943d --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyHealthController.java @@ -0,0 +1,128 @@ +package com.lyms.platform.operate.web.controller; + + +import com.lyms.platform.common.annotation.TokenRequired; +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.base.LoginContext; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.BaseQuery; +import com.lyms.platform.common.enums.QhdBabyPsychologyEnums; +import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.result.RespBuilder; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.facade.AutoMatchFacade; +import com.lyms.platform.operate.web.facade.BabyCheckFacade; +import com.lyms.platform.operate.web.facade.BabyHealthFacade; +import com.lyms.platform.operate.web.request.*; +import com.lyms.platform.operate.web.service.INewbornVisitService; +import com.lyms.platform.operate.web.service.PatientWeightService; +import com.lyms.platform.permission.service.CouponService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + + +/** + * 儿保检查 + */ +@Controller +public class BabyHealthController extends BaseController { + + + @Autowired + private BabyHealthFacade babyHealthFacade; + @Autowired + private PatientWeightService patientWeightService; + @Autowired + private AutoMatchFacade autoMatchFacade; + + @Autowired + private CouponService couponService; + + /** + * 河北省0-6岁儿童保健系统管理登记表 + * @param checkTime + * @param queryNo + * @param startCheckMonthAge + * @param endCheckMonthAge + * @param nextDate + * @param highRisk + * @param waskSon + * @param checkDoctorId + * @param level + * @param page + * @param limit + * @param request + * @return + */ + @RequestMapping(value = "/queryBabyHealthStat", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public BaseResponse queryBabyHealthStat( + @RequestParam(value = "checkTime", required = false) String checkTime, + @RequestParam(value = "queryNo", required = false) String queryNo, + @RequestParam(value = "startMonthAge", required = false) Integer startCheckMonthAge, + @RequestParam(value = "endMonthAge", required = false) Integer endCheckMonthAge, + @RequestParam(value = "nextDate", required = false) String nextDate, + @RequestParam(value = "highRisk", required = false) Integer highRisk, + @RequestParam(value = "waskSon", required = false) Integer waskSon, + @RequestParam(value = "checkDoctorId", required = false) String checkDoctorId, + @RequestParam(value = "level", required = false) String level, + Integer page, Integer limit, HttpServletRequest request) { + return babyHealthFacade.babystatList(checkTime, queryNo, startCheckMonthAge, endCheckMonthAge, + nextDate, highRisk, waskSon, checkDoctorId, page, limit, getUserId(request), level); + } + + @RequestMapping(value = "/queryBabyHealthStatReport", method = RequestMethod.GET) + @ResponseBody + @TokenRequired + public void queryBabyHealthStatReport( + @RequestParam(value = "checkTime", required = false) String checkTime, + @RequestParam(value = "queryNo", required = false) String queryNo, + @RequestParam(value = "startMonthAge", required = false) Integer startCheckMonthAge, + @RequestParam(value = "endMonthAge", required = false) Integer endCheckMonthAge, + @RequestParam(value = "nextDate", required = false) String nextDate, + @RequestParam(value = "highRisk", required = false) Integer highRisk, + @RequestParam(value = "waskSon", required = false) Integer waskSon, + @RequestParam(value = "checkDoctorId", required = false) String checkDoctorId, + @RequestParam(value = "level", required = false) String level, + Integer page, Integer limit, HttpServletRequest request, HttpServletResponse response) { + BaseResponse baseResponse=babyHealthFacade.babystatListReport(checkTime, queryNo, startCheckMonthAge, endCheckMonthAge, + nextDate, highRisk, waskSon, checkDoctorId, page, limit, getUserId(request), level,response); + System.out.println(baseResponse); + } + + /** + * 0-6岁儿童视觉健康档案 统计 + * @param id + * @param request + * @return + */ + @ResponseBody + @TokenRequired + @RequestMapping(value = "/baby/eye/check/queryLst/{id}", method = RequestMethod.GET) + public BaseResponse query(@PathVariable String id, HttpServletRequest request) { + return babyHealthFacade.query(getUserId(request), id); + } + + /** + * 儿童健康检查记录表 + * @param id + * @param checkMonthAge + * @return + */ + @ResponseBody + @TokenRequired + @RequestMapping(value = "/baby/check/chkRecordLst", method = RequestMethod.GET) + public BaseResponse chkRecordLst(@RequestParam(value = "id", required = false) String id, + @RequestParam(value = "monthAge", required = false) Integer checkMonthAge, HttpServletRequest request) { + return babyHealthFacade.chkRecordLst(id,checkMonthAge); + } + + +} \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyHealthFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyHealthFacade.java new file mode 100644 index 0000000..437c01f --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyHealthFacade.java @@ -0,0 +1,654 @@ +package com.lyms.platform.operate.web.facade; + +import com.lyms.hospitalapi.qhdfy.QhdfyHisService; +import com.lyms.platform.beans.MsgRequest; +import com.lyms.platform.biz.service.*; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.BaseQuery; +import com.lyms.platform.common.dao.operator.MongoCondition; +import com.lyms.platform.common.dao.operator.MongoOper; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.common.enums.*; +import com.lyms.platform.common.result.*; +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.service.BabyAfterVisitService; +import com.lyms.platform.operate.web.service.INewbornVisitService; +import com.lyms.platform.operate.web.service.PatientWeightService; +import com.lyms.platform.operate.web.service.impl.BaseServiceImpl; +import com.lyms.platform.operate.web.utils.CollectionUtils; +import com.lyms.platform.operate.web.utils.MongoUtil; +import com.lyms.platform.permission.dao.master.CouponMapper; +import com.lyms.platform.permission.model.CheckItem; +import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.permission.model.PatientService; +import com.lyms.platform.permission.model.Users; +import com.lyms.platform.permission.service.*; +import com.lyms.platform.pojo.*; +import com.lyms.platform.query.*; +import com.mongodb.BasicDBObject; +import javafx.beans.binding.ObjectExpression; +import jxl.Workbook; +import jxl.format.VerticalAlignment; +import jxl.write.Label; +import jxl.write.WritableCellFormat; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Component; +import org.springframework.web.util.WebUtils; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.*; +import java.util.concurrent.Callable; +import java.util.concurrent.Future; +import java.util.regex.Pattern; + +import static com.lyms.platform.operate.web.service.BabyAfterVisitService.*; + +@Component +public class BabyHealthFacade extends BaseServiceImpl { + //滦平高危同步地址 + public static final String LP_RISK_URL = PropertiesUtils.getPropertyValue("lp_risk_url"); + @Autowired + private BabyCheckService babyCheckService; + @Autowired + private BabyAutoDiagnoseRiskFacade babyAutoDiagnoseRiskFacade; + @Autowired + private BabyDepartmentReferralFacade babyDepartmentReferralFacade; + @Autowired + private BabyBookbuildingService babyBookbuildingService; + @Autowired + private PatientWeightService patientWeightService; + @Autowired + private BabyService babyService; + + @Autowired + private BasicConfigFacade basicConfigFacade; + + @Autowired + private MongoTemplate mongoTemplate; + + + @Autowired + private BasicConfigService basicConfigService; + + @Autowired + private PatientsService patientsService; + + @Autowired + private ApplyOrderService applyOrderService; + + @Autowired + private UsersService usersService; + + @Autowired + private PersonService personService; + + + @Autowired + private OrganizationService organizationService; + + @Autowired + private AntenatalExaminationFacade antenatalExaminationFacade; + + @Autowired + private BabyBookbuildingFacade babyBookbuildingFacade; + @Autowired + private OrganizationGroupsFacade groupsFacade; + @Autowired + private AutoMatchFacade autoMatchFacade; + + @Autowired + private CouponService couponService; + + @Autowired + private QhdfyHisService qhdfyHisService; + + @Autowired + private CouponMapper couponMapper; + + @Autowired + private MongoUtil mongoUtil; + + @Autowired + private OperateLogFacade operateLogFacade; + + @Autowired + private PatientServiceService patientServiceService; + + @Autowired + private AreaCountFacade areaCountFacade; + @Autowired + private MeasureDataInfoService measureDataInfoService; + @Autowired + private BabyNutritionService babyNutritionService; + @Autowired + private BabyAfterVisitService babyAfterVisitService; + + @Autowired + private SmsConfigFacade smsConfigFacade; + + @Autowired + private INewbornVisitService visitService;//访视 + + + @Autowired + @Qualifier("cfCheckItemService") + private CheckItemService checkItemService; + + @Autowired + private OrganizationGroupsFacade organizationGroupsFacade; + + public static final String HIS_VERSION = PropertiesUtils.getPropertyValue("his_version"); + + + public BaseResponse babystatList(String checkTime, String queryNo, Integer checkMonthAge, Integer endCheckMonthAge, String nextDate, + Integer highRisk, Integer waskSon, String checkDoctorId, Integer page, Integer limit, Integer userId, String level) { + boolean flag = false; + // List hospital = groupsFacade.findGroupHospital(userId, false); + int[] monthArr = {0, 3, 4, 8, 12, 18, 24, 30, 36, 48, 60, 72};//月龄 + String hospitalId = autoMatchFacade.getHospitalId(userId); + Criteria criteria = Criteria.where("yn").ne(0).and("hospitalId").is(hospitalId); + Criteria pCriteria = Criteria.where("yn").ne(0).and("hospitalId").is(hospitalId); + if (org.apache.commons.lang.StringUtils.isNotBlank(queryNo)) { + pCriteria.orOperator(Criteria.where("mcertNo").regex(queryNo), Criteria.where("name").regex(queryNo), + Criteria.where("fphone").regex(queryNo), Criteria.where("vcCardNo").regex(queryNo), Criteria.where("mname").regex(queryNo)); + flag = true; + } + PageResult pageResult = findMongoPage(BabyModel.class, new Query(pCriteria).with(new Sort(Sort.Direction.DESC, "created")), page, limit); + List babykModelsList = (List) pageResult.getGrid(); + List> grid = new ArrayList<>(); + + if (com.lyms.platform.operate.web.utils.CollectionUtils.isNotEmpty(babykModelsList)) { + for (BabyModel babyModel : babykModelsList) { + Map row = new HashMap<>(); + Map babyMap = new HashMap<>(); + babyMap.put("babyName", babyModel.getName()); + babyMap.put("sex", babyModel.getSex()); + babyMap.put("birth", babyModel.getBirth()); + babyMap.put("mname", babyModel.getMname()); + babyMap.put("address", babyModel.getAddress()); + babyMap.put("mphone", babyModel.getMphone()); + row.put("baby", babyMap); +// ids.add(babyModel.getId()); + Criteria criteriaCheck = Criteria.where("buildId").in(babyModel.getId()); +// pageResult = findMongoPage(BabyCheckModel.class, new Query(criteriaCheck).with(new Sort(Sort.Direction.DESC, "created")), page, limit); + List babyCheckModelList = mongoTemplate.find(new Query(criteriaCheck).with(new Sort(Sort.Direction.DESC, "created")), BabyCheckModel.class); + +// List babyCheckModelList = (List ) pageResult.getGrid(); + + List> listAge = new ArrayList<>(); + for (BabyCheckModel babyCheckModel : babyCheckModelList) { + Map map = new HashMap<>(); + String feedType = ""; + String feedTypeId = babyCheckModel.getFeedType(); + if (StringUtils.isNotEmpty(feedTypeId)) { + feedType = WyTypeEnums.getNameById(Integer.parseInt(feedTypeId)); + } + map.put("feedType", feedType); + for (int i = 0; i < monthArr.length; i++) { + Map mapAge = new HashMap<>(); + if (monthArr[i] == babyCheckModel.getCheckMonth().intValue()) { + mapAge.put("height", babyCheckModel.getHeight()); + mapAge.put("heightEvaluate", babyCheckModel.getHeightEvaluate()); + mapAge.put("weight", babyCheckModel.getWeight()); + mapAge.put("weightEvaluate", babyCheckModel.getWeightEvaluate()); + mapAge.put("hemoglobin", babyCheckModel.getHemoglobin()); + } else { + mapAge.put("height", ""); + mapAge.put("heightEvaluate", ""); + mapAge.put("weight", ""); + mapAge.put("weightEvaluate", ""); + mapAge.put("hemoglobin", ""); + } + mapAge.put("age", monthArr[i]); + listAge.add(mapAge); + } + + + row.put("monthChk", listAge); + + row.put("height", babyCheckModel.getHeight()); + row.put("weight", babyCheckModel.getWeight()); + //秦皇岛需求,查询最后一次检查的高危详情 + row.put("qhdHighRiskInfo", babyCheckModel.getQhdHighRiskInfo()); + } + +// 访视 + List newbornVisits = mongoTemplate.find(Query.query(Criteria.where("babyId").is(babyModel.getId()).and("hospitalId").in(hospitalId).and("yn").ne("0")) + .with(new Sort(Sort.Direction.ASC, "checkTime")), NewbornVisit.class); + List> rest = new ArrayList<>(); + for (NewbornVisit newbornVisit : newbornVisits) { + Map temp = new HashMap<>(); + temp.put("id", newbornVisit.getId()); + temp.put("hospitalId", newbornVisit.getHospitalId()); + temp.put("pid", newbornVisit.getPid()); + temp.put("checkTime", newbornVisit.getCheckTime() == null ? null : DateUtil.getyyyy_MM_dd(newbornVisit.getCheckTime())); + temp.put("checkTimeDesc", newbornVisit.getCheckTimeDesc()); + rest.add(temp); + } + row.put("visitcnt", newbornVisits.size()); + row.put("instWeight", ""); + if (newbornVisits.size() > 1) { + int size = newbornVisits.size(); + String wn1 = newbornVisits.get(size - 1).getWeightNow(); + String wn2 = newbornVisits.get(size - 2).getWeightNow(); + if (null == wn1) wn1 = "0"; + if (null == wn2) wn2 = "0"; + + row.put("instWeight", (Float.parseFloat(wn1) - Float.parseFloat(wn2))); + } + grid.add(row); + + } + } + + pageResult.setGrid(grid); + return RespBuilder.buildSuccess(pageResult); + + + } + + public BaseResponse babystatListReport(String checkTime, String queryNo, Integer checkMonthAge, Integer endCheckMonthAge, String nextDate, + Integer highRisk, Integer waskSon, String checkDoctorId, Integer page, Integer limit, Integer userId, String level, HttpServletResponse response) { + boolean flag = false; + // List hospital = groupsFacade.findGroupHospital(userId, false); + int[] monthArr = {0, 3, 4, 8, 12, 18, 24, 30, 36, 48, 60, 72};//月龄 + String hospitalId = autoMatchFacade.getHospitalId(userId); + Criteria criteria = Criteria.where("yn").ne(0).and("hospitalId").is(hospitalId); + Criteria pCriteria = Criteria.where("yn").ne(0).and("hospitalId").is(hospitalId); + if (org.apache.commons.lang.StringUtils.isNotBlank(queryNo)) { + pCriteria.orOperator(Criteria.where("mcertNo").regex(queryNo), Criteria.where("name").regex(queryNo), + Criteria.where("fphone").regex(queryNo), Criteria.where("vcCardNo").regex(queryNo), Criteria.where("mname").regex(queryNo)); + flag = true; + } + PageResult pageResult = new PageResult(); + + try { + response.setContentType("application/force-download"); + response.setHeader("Content-Disposition", "attachment;filename=" + new String(("年报表.xls").getBytes("UTF-8"), "ISO-8859-1")); + String path = this.getClass().getResource("/").getPath() + "babyhealthstat.xls"; + + // 导出excel + File file = new File(path); + InputStream in = new FileInputStream(file); + Workbook wb = Workbook.getWorkbook(in); + + + WritableWorkbook book = wb.createWorkbook(response.getOutputStream(), wb); + WritableSheet ws = book.getSheet(0); + + WritableCellFormat contentFormt = new WritableCellFormat(); + contentFormt.setAlignment(jxl.format.Alignment.CENTRE); + contentFormt.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN); + contentFormt.setVerticalAlignment(VerticalAlignment.CENTRE); + + int lastPage = 0, pageSize = 0; + + pageResult = findMongoPage(BabyModel.class, new Query(pCriteria).with(new Sort(Sort.Direction.DESC, "created")), page, limit); +// lastPage = pageResult.getLastPage(); +// pageSize = pageResult.getSize(); +// for (int n = 0; n < lastPage; n++) { +// pageResult = findMongoPage(BabyModel.class, new Query(pCriteria).with(new Sort(Sort.Direction.DESC, "created")), n, pageSize); + List babykModelsList = (List) pageResult.getGrid(); +// PageResult pageResult=new PageResult(); + babykModelsList = this.mongoTemplate.find(new Query(pCriteria).with(new Sort(Sort.Direction.DESC, "created")),BabyModel.class); + List> grid = new ArrayList<>(); + + if (com.lyms.platform.operate.web.utils.CollectionUtils.isNotEmpty(babykModelsList)) { + for (int j=0; j row = new HashMap<>(); + Map babyMap = new HashMap<>(); + babyMap.put("babyName", babyModel.getName()); + babyMap.put("sex", babyModel.getSex()); + babyMap.put("birth", babyModel.getBirth()); + babyMap.put("mname", babyModel.getMname()); + babyMap.put("address", babyModel.getAddress()); + babyMap.put("mphone", babyModel.getMphone()); + row.put("baby", babyMap); + Criteria criteriaCheck = Criteria.where("buildId").in(babyModel.getId()); +// pageResult = findMongoPage(BabyCheckModel.class, new Query(criteriaCheck).with(new Sort(Sort.Direction.DESC, "created")), page, limit); + List babyCheckModelList = mongoTemplate.find(new Query(criteriaCheck).with(new Sort(Sort.Direction.DESC, "created")), BabyCheckModel.class); + + List> listAge = new ArrayList<>(); + + for (BabyCheckModel babyCheckModel : babyCheckModelList) { + Map map = new HashMap<>(); + String feedType = ""; + String feedTypeId = babyCheckModel.getFeedType(); + if (StringUtils.isNotEmpty(feedTypeId)) { + feedType = WyTypeEnums.getNameById(Integer.parseInt(feedTypeId)); + } + map.put("feedType", feedType); + + for (int i = 0; i < monthArr.length; i++) { + Map mapAge = new HashMap<>(); + if (monthArr[i] == babyCheckModel.getCheckMonth().intValue()) { + mapAge.put("height", babyCheckModel.getHeight()); + mapAge.put("heightEvaluate", babyCheckModel.getHeightEvaluate()); + mapAge.put("weight", babyCheckModel.getWeight()); + mapAge.put("weightEvaluate", babyCheckModel.getWeightEvaluate()); + mapAge.put("hemoglobin", babyCheckModel.getHemoglobin()); + } else { + mapAge.put("height", ""); + mapAge.put("heightEvaluate", ""); + mapAge.put("weight", ""); + mapAge.put("weightEvaluate", ""); + mapAge.put("hemoglobin", ""); + } + mapAge.put("age", monthArr[i]); + listAge.add(mapAge); + } + + + + + + row.put("monthChk", listAge); + + row.put("height", babyCheckModel.getHeight()); + row.put("weight", babyCheckModel.getWeight()); + //秦皇岛需求,查询最后一次检查的高危详情 + row.put("qhdHighRiskInfo", babyCheckModel.getQhdHighRiskInfo()); + } + if(babyCheckModelList.size()<1){ + for (int i = 0; i < monthArr.length; i++) { + Map mapAge = new HashMap<>(); + mapAge.put("height", ""); + mapAge.put("heightEvaluate", ""); + mapAge.put("weight", ""); + mapAge.put("weightEvaluate", ""); + mapAge.put("hemoglobin", ""); + listAge.add(mapAge); + } + } + +// 访视 + List newbornVisits = mongoTemplate.find(Query.query(Criteria.where("babyId").is(babyModel.getId()).and("hospitalId").in(hospitalId).and("yn").ne("0")) + .with(new Sort(Sort.Direction.ASC, "checkTime")), NewbornVisit.class); + List> rest = new ArrayList<>(); + for (NewbornVisit newbornVisit : newbornVisits) { + Map temp = new HashMap<>(); + temp.put("id", newbornVisit.getId()); + temp.put("hospitalId", newbornVisit.getHospitalId()); + temp.put("pid", newbornVisit.getPid()); + temp.put("checkTime", newbornVisit.getCheckTime() == null ? null : DateUtil.getyyyy_MM_dd(newbornVisit.getCheckTime())); + temp.put("checkTimeDesc", newbornVisit.getCheckTimeDesc()); + rest.add(temp); + } + row.put("visitcnt", newbornVisits.size()); + row.put("instWeight", ""); + if (newbornVisits.size() > 1) { + int size = newbornVisits.size(); + String wn1 = newbornVisits.get(size - 1).getWeightNow(); + String wn2 = newbornVisits.get(size - 2).getWeightNow(); + if (null == wn1) wn1 = "0"; + if (null == wn2) wn2 = "0"; + + row.put("instWeight", (Float.parseFloat(wn1) - Float.parseFloat(wn2))); + } + +// 写入excel + Label label = new Label(0, j + 5, (j + 1) + ""); + ws.addCell(label); + + + label = new Label(1, j + 5, babyModel.getName(), contentFormt); + ws.addCell(label); + + label = new Label(2, j + 5, SexEnum.getTextById(babyModel.getSex()), contentFormt); + ws.addCell(label); + + label = new Label(3, j + 5, DateUtil.getyyyy_MM_dd(babyModel.getBirth()), contentFormt); + ws.addCell(label); + + label = new Label(4, j + 5, babyModel.getMname(), contentFormt); + ws.addCell(label); + + label = new Label(5, j + 5, babyModel.getAddress()==null?"":babyModel.getAddress(), contentFormt); + ws.addCell(label); +// 访视 + label = new Label(6, j + 5, newbornVisits.size()+"", contentFormt); + ws.addCell(label); + + label = new Label(7, j + 5,row.get("instWeight")+"", contentFormt); + ws.addCell(label); +// 喂养方式 + label = new Label(8, j + 5,row.get("feedType")==null?"":row.get("feedType")+"", contentFormt); + ws.addCell(label); + + // 检查情况 + +// for (int n = 0; n < listAge.size(); n++) { +// Map aRow=listAge.get(n); +// mapAge.put("height", ""); +// mapAge.put("heightEvaluate", ""); +// mapAge.put("weight", ""); +// mapAge.put("weightEvaluate", ""); +// mapAge.put("hemoglobin", ""); + +// label = new Label(9+n*2, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); +// ws.addCell(label); +// label = new Label(10+n*2, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); +// ws.addCell(label); +// if(n==4 || n==8 || n==9 || n==10 || n== 11){ +// +// label = new Label(11+n, j + 5,aRow.get("hemoglobin")+"", contentFormt); +// ws.addCell(label); +// } +// } + + Map aRow=listAge.get(0); + label = new Label(9, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(10, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + + aRow=listAge.get(1); + label = new Label(11, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(12, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + + aRow=listAge.get(2); + label = new Label(13, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(14, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + + aRow=listAge.get(3); + label = new Label(15, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(16, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + + aRow=listAge.get(4); + label = new Label(17, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(18, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + label = new Label(19, j + 5,aRow.get("hemoglobin")+"", contentFormt); + ws.addCell(label); + + aRow=listAge.get(5); + label = new Label(20, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(21, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + + aRow=listAge.get(6); + label = new Label(22, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(23, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + + aRow=listAge.get(7); + label = new Label(24, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(25, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + + aRow=listAge.get(8); + label = new Label(26, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(27, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + label = new Label(28, j + 5,aRow.get("hemoglobin")+"", contentFormt); + ws.addCell(label); + + aRow=listAge.get(9); + label = new Label(29, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(30, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + label = new Label(31, j + 5,aRow.get("hemoglobin")+"", contentFormt); + ws.addCell(label); + + aRow=listAge.get(10); + label = new Label(32, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(33, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + label = new Label(34, j + 5,aRow.get("hemoglobin")+"", contentFormt); + ws.addCell(label); + + aRow=listAge.get(11); + label = new Label(35, j + 5,aRow.get("weight")+"/"+aRow.get("height"), contentFormt); + ws.addCell(label); + label = new Label(36, j + 5,aRow.get("weightEvaluate")+"/"+aRow.get("heightEvaluate"), contentFormt); + ws.addCell(label); + label = new Label(37, j + 5,aRow.get("hemoglobin")+"", contentFormt); + ws.addCell(label); + + + label = new Label(38, j + 5,babyModel.getMphone(), contentFormt); + ws.addCell(label); + + } + + } + +// } + + + book.write(); + book.close(); + wb.close(); + + } catch (Exception e) { + e.printStackTrace(); + } +// pageResult.setGrid(grid); + return RespBuilder.buildSuccess(pageResult); + + + } + + + public BaseResponse query(Integer userId, String babyId) { + List hospitalIds = organizationGroupsFacade.findGroupHospital(userId, false); + if (com.lyms.platform.operate.web.utils.CollectionUtils.isEmpty(hospitalIds)) { + return RespBuilder.buildSuccess(); + } + List> rest = new ArrayList<>(); + BabyModelQuery babyQuery = new BabyModelQuery(); + babyQuery.setId(babyId); + babyQuery.setYn(YnEnums.YES.getId()); + babyQuery.setHospitalIdList(hospitalIds); + List models = babyBookbuildingService.queryBabyBuildByCond(babyQuery); + if (com.lyms.platform.operate.web.utils.CollectionUtils.isNotEmpty(models)) { + BabyModel babyModel = models.get(0); + Map checkRecord = new HashMap<>(); + checkRecord.put("id", babyModel.getId()); + checkRecord.put("pid", babyModel.getPid()); + checkRecord.put("checkTime", DateUtil.getyyyy_MM_dd(babyModel.getBuildDate())); + String monthAge = DateUtil.getBabyMonthAge(babyModel.getBirth(), babyModel.getBuildDate()); + checkRecord.put("monthAge", monthAge); + checkRecord.put("buildId", babyModel.getId()); + checkRecord.put("blNo", babyModel.getBlNo()); + checkRecord.put("type", "1"); + checkRecord.put("hospitalId", babyModel.getHospitalId()); + //查询建档医院 + Organization org = organizationService.getOrganization(Integer.valueOf(babyModel.getHospitalId())); + if (org != null) { + checkRecord.put("hospitalName", org.getName()); + } else { + checkRecord.put("hospitalName", ""); + } +// rest.add(checkRecord); + } + + List babyEyeChecks = mongoTemplate.find(Query.query(Criteria.where("babyId").is(babyId).and("hospitalId").in(hospitalIds).and("yn").ne("0")) + .with(new Sort(Sort.Direction.ASC, "checkTime")), BabyEyeCheck.class); + for (BabyEyeCheck babyEyeCheck : babyEyeChecks) { + Map temp = new HashMap<>(); + temp.put("id", babyEyeCheck.getId()); + temp.put("hospitalId", babyEyeCheck.getHospitalId()); + temp.put("pid", babyEyeCheck.getPid()); + temp.put("checkMonth", CheckMonthEnums.getName(babyEyeCheck.getCheckMonthId())); + BabyModel babyModel = mongoTemplate.findById(babyEyeCheck.getBabyId(), BabyModel.class); + if (babyModel != null) { + temp.put("name", babyModel.getName()); + if (babyModel.getSex() != null) { + temp.put("sex", SexEnum.getTextById(babyModel.getSex())); + } + } + temp.put("checkTime", babyEyeCheck.getCheckTime() == null ? null : DateUtil.getYyyyMmDd(babyEyeCheck.getCheckTime())); + temp.put("doctorSign", babyEyeCheck.getDoctorSign()); + temp.put("guidanceOpinions", babyEyeCheck.getGuidanceOpinions()); + Map rsMap=new HashMap<>(); + rsMap.put("R",ifnull(babyEyeCheck.getRefractionR1())); + rsMap.put("L",ifnull(babyEyeCheck.getRefractionL1())); + temp.put("视力筛查仪", rsMap); + + + Map rslMap=new HashMap<>(); + rslMap.put("R",ifnull(babyEyeCheck.getRightEyeVision())); + rslMap.put("L",ifnull(babyEyeCheck.getLeftEyeVision())); + + temp.put("裸眼视力", rslMap); + CollectionUtils.removeNullValue(temp); + rest.add(temp); + } + return RespBuilder.buildSuccess(rest); + } + + public Object ifnull(Object obj,Object value){ + return obj==null?value:obj; + } + + public Object ifnull(Object obj){ + return obj==null?"":obj; + } + + /** + * 儿童健康检查记录表 + * @param id + * @param checkMonthAge + * @return + */ + public BaseResponse chkRecordLst(String id, Integer checkMonthAge) { + List> rest = new ArrayList>(); + + Criteria criteriaCheck = Criteria.where("buildId").in(id); + criteriaCheck.and("checkMonth").is(checkMonthAge); + List babyCheckModelList = mongoTemplate.find(new Query(criteriaCheck).with(new Sort(Sort.Direction.DESC, "created")), BabyCheckModel.class); + + return RespBuilder.buildSuccess(babyCheckModelList); + } +} \ No newline at end of file diff --git a/platform-operate-api/src/main/resources/babyhealthstat.xls b/platform-operate-api/src/main/resources/babyhealthstat.xls new file mode 100644 index 0000000000000000000000000000000000000000..9ebe443ab58d289f5e57f14aaf0d53c2672ff162 GIT binary patch literal 22016 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 X=(7=N4Rm9`hr=@lFd74e|6KQ9L#0;g literal 0 HcmV?d00001 -- 1.8.3.1