From e533a681d6ae661f5deecc4d968aa67e22e2f0ed Mon Sep 17 00:00:00 2001 From: "litao@lymsh.com" Date: Fri, 12 Jan 2018 15:14:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=BD=E8=AE=BF=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/platform/common/enums/FmTypeEnums.java | 10 ++ .../web/controller/TrackDownController.java | 7 + .../operate/web/service/ITrackDownService.java | 17 ++- .../web/service/impl/TrackDownServiceImpl.java | 153 ++++++++++++++++++--- 4 files changed, 163 insertions(+), 24 deletions(-) diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/FmTypeEnums.java b/platform-common/src/main/java/com/lyms/platform/common/enums/FmTypeEnums.java index 1b1a105..f680b18 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/enums/FmTypeEnums.java +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/FmTypeEnums.java @@ -41,6 +41,16 @@ public enum FmTypeEnums { return null; } + public static String getFmNameById2(String id) + { + for (FmTypeEnums e : FmTypeEnums.values()) { + if (e.getId().equals(id)) + { + return e.getName(); + } + } + return "--"; + } public static String getFmScNameById(String id) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java index 0fa87e4..ddbdd83 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Date; /** @@ -56,6 +57,12 @@ public class TrackDownController extends BaseController { return trackDownService.list(provinceId, cityId, areaId, streetId, key, trackType, page, limit, getUserId(request)); } + @TokenRequired + @RequestMapping(value = "/export", method = RequestMethod.GET) + public void export(String provinceId, String cityId, String areaId, String streetId, String key, @RequestParam Integer trackType, HttpServletRequest request, HttpServletResponse response) { + trackDownService.export(provinceId, cityId, areaId, streetId, key, trackType, getUserId(request), response); + } + /** * * @param parentId diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java index 639ba5a..37be7dc 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java @@ -1,21 +1,24 @@ package com.lyms.platform.operate.web.service; -import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.pojo.TrackDown; +import javax.servlet.http.HttpServletResponse; import java.util.Date; public interface ITrackDownService extends IBaseService { - BaseResponse add(Integer userId, TrackDown trackDown); + BaseObjectResponse add(Integer userId, TrackDown trackDown); - BaseResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId); + BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId); - BaseResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId); + BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId); - BaseResponse info(String patientId, Integer trackType); + BaseObjectResponse info(String patientId, Integer trackType); - BaseResponse init(); + BaseObjectResponse init(); - BaseResponse mother(String parentId, Integer userId); + BaseObjectResponse mother(String parentId, Integer userId); + + void export(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer userId, HttpServletResponse response); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java index 0783aa3..6db82ee 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java @@ -2,7 +2,8 @@ package com.lyms.platform.operate.web.service.impl; import com.lyms.platform.biz.service.TrackDownService; import com.lyms.platform.common.enums.*; -import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.PageResult; import com.lyms.platform.common.result.RespBuilder; import com.lyms.platform.common.utils.DateUtil; @@ -12,6 +13,7 @@ import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.CollectionUtils; import com.lyms.platform.operate.web.utils.MongoUtil; +import com.lyms.platform.operate.web.utils.ResponseUtil; import com.lyms.platform.permission.dao.master.CouponMapper; import com.lyms.platform.pojo.*; import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +23,7 @@ import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; import java.util.*; @Service @@ -42,7 +45,7 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS private CouponMapper couponMapper; @Override - public BaseResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId) { + public BaseObjectResponse all(Date buildStart, Date buildEnd, Date checkStart, Date checkEnd, Date fmStart, Date fmEnd, String key, Integer page, Integer limit, Integer userId) { String hospitalId = autoMatchFacade.getHospitalId(userId); Criteria patientCriteria = new Criteria(); Criteria residentCriteria = new Criteria(); @@ -173,7 +176,7 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS return antexcCount + antexCount; } - public BaseResponse add(Integer userId, TrackDown trackDown) { + public BaseObjectResponse add(Integer userId, TrackDown trackDown) { String hospitalId = autoMatchFacade.getHospitalId(userId); if(StringUtils.isNotEmpty(trackDown.getResidentsArchiveId())) { // 怀孕建档是lyms_resident ResidentsArchiveModel archiveModel = mongoTemplate.findById(trackDown.getResidentsArchiveId(), ResidentsArchiveModel.class); @@ -198,7 +201,7 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS } @Override - public BaseResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId) { + public BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId) { PageResult pageResult = null; String hospitalId = autoMatchFacade.getHospitalId(userId); Criteria patientCriteria = new Criteria(); @@ -281,9 +284,14 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS temp.put("phone", StringUtils.encryPhone(patient.getPhone())); temp.put("id", patient.getId()); temp.put("dueDate", DateUtil.getyyyy_MM_dd(patient.getDueDate())); + temp.put("week", DateUtil.getWeekDesc(patient.getLastMenses(), new Date())); /** 孕周 */ + temp.put("cjDate", ""); /** 产检日期 */ + temp.put("yycjDate", ""); /** 预约产检日期 */ + temp.put("cjzfDate", ""); /** 产检追访时间 */ TrackDown trackDown = mongoTemplate.findOne(Query.query(Criteria.where("yn").is(1).and("parentId").is(patient.getId())).with(new Sort(Sort.Direction.DESC, "created")), TrackDown.class); if(trackDown != null) { temp.put("result", StringUtils.isEmpty(trackDown.getResult()) ? "--" : trackDown.getResult()); // 婚检追访结果 + temp.put("result", getResultByType(trackType, patient.getId(), new Sort(Sort.Direction.DESC, "created"))); // 婚检追访结果 temp.put("trackDownTime", trackDown == null ? "--" : DateUtil.getyyyy_MM_dd(trackDown.getTrackDownDate())); // 追访时间 temp.put("yyTime", trackDown == null ? "--" : DateUtil.getyyyy_MM_dd(trackDown.getReservatDate())); // 预约时间 } else { @@ -298,6 +306,13 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS /** 初次复查日期 */ TrackDown t = mongoTemplate.findOne(Query.query(Criteria.where("yn").is(1).and("parentId").is(patient.getId()).and("trackDownDateType").is(7)).with(new Sort(Sort.Direction.ASC, "created")), TrackDown.class); temp.put("ccfcDate", t == null ? "--" : DateUtil.getyyyy_MM_dd(t.getCreated())); + /** 预约复查日期 */ + TrackDown t2 = mongoTemplate.findOne(Query.query(Criteria.where("yn").is(1).and("parentId").is(patient.getId()).and("trackDownDateType").is(7)).with(new Sort(Sort.Direction.DESC, "created")), TrackDown.class); + temp.put("yyfcDate ", t2 == null ? "--" : DateUtil.getyyyy_MM_dd(t2.getReservatDate())); + /** 生产方式 */ + temp.put("scType", FmTypeEnums.getFmNameById2(patient.getFmType())); + + } else if(trackType == TrackDownDateEnums.C.getId()) { } restList.add(temp); } @@ -312,8 +327,17 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS return RespBuilder.buildSuccess(pageResult); } + private String getResultByType(Integer type, String parentId, Sort sort) { + Query query = Query.query(Criteria.where("yn").is(1).and("parentId").is(parentId).and("trackDownDateType").is(type)); + if(sort != null) { + query.with(sort); + } + TrackDown t = mongoTemplate.findOne(query, TrackDown.class); + return (t == null || StringUtils.isEmpty(t.getResult()) ? "--" : t.getResult()); + } + @Override - public BaseResponse info(String patientId, Integer trackType) { + public BaseObjectResponse info(String patientId, Integer trackType) { List> tabList = new ArrayList<>(); if(trackType == 0) { List trackDowns = mongoTemplate.find(Query.query(Criteria.where("parentId").is(patientId).and("yn").is(1)).with(new Sort(Sort.Direction.DESC, "created")), TrackDown.class); @@ -348,7 +372,6 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS chfcList.add(temp); } } - setTrackType(); return RespBuilder.buildSuccess("hqjcList", hqjcList, "hyjdList", hyjdList, "cqjcList", cqjcList, "cqscList", cqscList, "zyfmList", zyfmList, "chfsList", chfsList, "chfcList", chfcList); } List trackDowns = mongoTemplate.find(Query.query(Criteria.where("parentId").is(patientId).and("trackDownDateType").is(trackType).and("yn").is(1)), TrackDown.class); @@ -364,17 +387,8 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS return RespBuilder.buildSuccess(tabList); } - private void setTrackType(List> ... datas) { - for (List> data : datas) { - - for (Map map : data) { - - } - } - } - @Override - public BaseResponse init() { + public BaseObjectResponse init() { List> trackTypes = EnumUtil.toJson(TrackDownTypeEnums.class); // 追访方式 List> dataTypes = EnumUtil.toJson(TrackDownDateEnums.class); // 追访相关数据类型 List> transfers = EnumUtil.toJson(TrackDownTransferEnums.class); // 追访转接 @@ -382,7 +396,7 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS } @Override - public BaseResponse mother(String parentId, Integer userId) { + public BaseObjectResponse mother(String parentId, Integer userId) { Patients patients = mongoTemplate.findById(parentId, Patients.class); String hospitalId = autoMatchFacade.getHospitalId(userId); Map map = new HashMap<>(); @@ -394,6 +408,7 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS map.put("week", DateUtil.getWeekDesc(patients.getLastMenses(), new Date())); map.put("dueDate", DateUtil.getyyyy_MM_dd(patients.getDueDate())); /** 预产期 */ map.put("trackCount", mongoTemplate.count(Query.query(Criteria.where("parentId").is(parentId).and("trackDownDateType").is(TrackDownDateEnums.F.getId()).and("yn").is(1)), TrackDown.class)); /** 访视次数 */ + map.put("fmDate", DateUtil.getyyyy_MM_dd(patients.getFmDate())); TrackDown tc = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(parentId).and("trackDownDateType").is(TrackDownDateEnums.E.getId()).and("yn").is(1)).with(new Sort(Sort.Direction.DESC, "created")), TrackDown.class); if(tc != null) { @@ -421,5 +436,109 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS return RespBuilder.buildSuccess(map); } + @Override + public void export(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer userId, HttpServletResponse response) { + BaseObjectResponse rest = list(provinceId, cityId, areaId, streetId, key, trackType, 1, 20, userId); + PageResult pageResult = (PageResult) rest.getData(); + List> datas = (List>) pageResult.getGrid(); + Map cnames = new LinkedHashMap<>(); + cnames.put("id", "#"); + cnames.put("username", "姓名"); + cnames.put("age", "年龄"); + cnames.put("cardNo", "证件号"); + cnames.put("residenceAddress", "居住地址"); + cnames.put("phone", "联系方式"); + if (trackType == 1) { // 婚前检查 + cnames.put("result", "婚检追访结果"); + cnames.put("trackDownTime", "婚检追访时间"); + cnames.put("yyTime", "预约时间"); + } else if (trackType == 2) { // 怀孕建档 + cnames.put("result", "追访结果"); + cnames.put("trackDownTime", "建档追访时间"); + cnames.put("yyTime", "预约时间"); + } else if (trackType == 3) { // 产前检查 + cnames.put("week", "孕周"); + cnames.put("checkCount", "本院产检次数"); + cnames.put("yyTime", "产检日期"); + cnames.put("yycjDate", "预约产检日期"); + cnames.put("cjzfDate", "产检追访时间"); + cnames.put("result", "产检追访结果"); + } else if (trackType == 4) { // 产前筛查 + cnames.put("week", "孕周"); + cnames.put("yycsDate", "预约产筛日期"); + cnames.put("zfDate", "追访时间"); + cnames.put("result", "追访结果"); + } else if (trackType == 5) { // 分娩住院 + cnames.put("dueDate", "预产期"); + cnames.put("yyzyDate", "预约住院时间"); + cnames.put("zyzfDate", "住院追访时间"); + cnames.put("result", "追访结果"); + } else if (trackType == 6) { // 产后访视 + cnames.put("fmDate", "分娩时间"); + cnames.put("yyTime", "访视预约时间"); + cnames.put("trackCount", "访视次数"); + cnames.put("trackDownTime", "访视追访时间"); + } else if (trackType == 7) { // 产后复查 + cnames.put("fmDate", "分娩时间"); + cnames.put("scType", "生产方式"); + cnames.put("chfcCount", "复查次数"); + cnames.put("ccfcDate", "初次复查日期"); + cnames.put("yyfcDate", "预约复查日期"); + cnames.put("result", "追访结果"); + } + + List> results = new ArrayList<>(); + if(org.apache.commons.collections.CollectionUtils.isNotEmpty(datas)) { + int i = 0; + for (Map data : datas) { + Map result = new LinkedHashMap<>(); + result.put("id", ++i); + result.put("username", data.get("username")); + result.put("age", data.get("age")); + result.put("cardNo", data.get("cardNo")); + result.put("residenceAddress", data.get("residenceAddress")); + result.put("phone", data.get("phone")); + if (trackType == 1 || trackType == 2) { + result.put("result", data.get("result")); + result.put("trackDownTime", data.get("trackDownTime")); + result.put("yyTime", data.get("yyTime")); + } else if (trackType == 3) { // 产前检查 + result.put("week", data.get("week")); + result.put("checkCount", data.get("checkCount")); + result.put("yyTime", data.get("yyTime")); + result.put("yycjDate", data.get("yycjDate")); + result.put("cjzfDate", data.get("cjzfDate")); + result.put("result", data.get("result")); + } else if (trackType == 4) { // 产前筛查 + result.put("week", data.get("week")); + result.put("yycsDate", data.get("yycsDate")); + result.put("zfDate", data.get("zfDate")); + result.put("result", data.get("result")); + } else if (trackType == 5) { // 分娩住院 + result.put("dueDate", data.get("dueDate")); + result.put("yyzyDate", data.get("yyzyDate")); + result.put("zyzfDate", data.get("zyzfDate")); + result.put("result", data.get("result")); + } else if (trackType == 6) { // 产后访视 + result.put("fmDate", data.get("fmDate")); + result.put("yyTime", data.get("yyTime")); + result.put("trackCount", data.get("trackCount")); + result.put("trackDownTime", data.get("trackDownTime")); + result.put("result", data.get("result")); + } else if (trackType == 7) { // 产后复查 + result.put("fmDate", data.get("fmDate")); + result.put("scType", data.get("scType")); + result.put("chfcCount", data.get("chfcCount")); + result.put("ccfcDate", data.get("ccfcDate")); + result.put("yyfcDate", data.get("yyfcDate")); + result.put("result", data.get("result")); + } + results.add(result); + } + } + + ResponseUtil.responseExcel(cnames, results, response); + } + } -- 1.8.3.1