diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java b/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java index 1e0dfd8..c705ea9 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java @@ -16,6 +16,15 @@ public class Patients extends BaseModel { private static final long serialVersionUID = SerialIdEnum.Patients.getCid(); + private String shortCode; + + public String getShortCode() { + return shortCode; + } + + public void setShortCode(String shortCode) { + this.shortCode = shortCode; + } // 纠正末次月经 (和末次月经反起存) private Date fuckLastMens; diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java index 1b8c376..c864a84 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java @@ -46,6 +46,22 @@ public class ReportController extends BaseController { return reportService.patients(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request)); } + /** + * 建档明细导出 + * @param statistType 统计环比 1=周 2=月 3=季度 4=半年 5=年 + * @param ageType 1=全部年龄 2=20岁以下 3=20-30岁 4=30-40岁 5=40岁以上 + * @param patientType 建档孕周 1=孕早期 2=孕中期 3=孕晚期 + * @return + */ + @ResponseBody +// @TokenRequired + @RequestMapping(value = "/patients/export", method = RequestMethod.GET) + public void patientsExport(String provinceId, String cityId, String aredId, String streetId, @RequestParam Integer statistType, + Integer ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request, HttpServletResponse response) { +// reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request), response); + reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, 1000000185, response); + } + /** * 未发放优惠券统计 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java index 6e61cbb..bea05cd 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java @@ -99,4 +99,6 @@ public interface IReportService extends IBaseService { BaseObjectResponse unUsedPeopleInfo(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId); BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId); + + void patientsExport(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId, HttpServletResponse response); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java index 7984f1c..d9ae005 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java @@ -9,6 +9,7 @@ import com.lyms.platform.common.result.PageResult; import com.lyms.platform.common.result.RespBuilder; import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.EnumUtil; +import com.lyms.platform.common.utils.PingYinUtil; import com.lyms.platform.operate.web.dao.IReportDao; import com.lyms.platform.operate.web.facade.AccessPermissionFacade; import com.lyms.platform.operate.web.facade.AutoMatchFacade; @@ -177,6 +178,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService couponDescMap.put(8, "儿童保健券"); } + /** * 建档统计 * @param statistType 统计环比 1=周 2=月 3=季度 4=半年 5=年 @@ -187,6 +189,92 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService @Override public BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId) { + List patients = getPatients(provinceId, cityId, aredId, streetId, ageType, patientType, startDate, endDate, userId); + return null; + } + + @Override + public void patientsExport(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId, HttpServletResponse response) { + List patients = getPatients(provinceId, cityId, aredId, streetId, ageType, patientType, startDate, endDate, userId); + + Map codeCache = new HashMap<>(); + Map hNameCache = new HashMap<>(); + Map userNameCache = new HashMap<>(); + for (Patients patient : patients) { + if(!userNameCache.containsKey(patient.getBookbuildingDoctor())) { + userNameCache.put(patient.getBookbuildingDoctor(), couponMapper.findUserName(patient.getBookbuildingDoctor())); + } + if(codeCache.containsKey(patient.getHospitalId())) { + patient.setShortCode(codeCache.get(patient.getHospitalId())); + } else { + String name = couponMapper.findHospitalNameById(patient.getHospitalId()); + String code = PingYinUtil.getFirstSpell(name); + patient.setShortCode(code); + codeCache.put(patient.getHospitalId(), code); + hNameCache.put(patient.getHospitalId(), name); + } + } + + Collections.sort(patients, new Comparator() { + @Override + public int compare(Patients patients1, Patients patients2) { + if(StringUtils.isEmpty(patients1.getShortCode()) || StringUtils.isEmpty(patients2.getShortCode())) { + return 0; + } + return patients1.getShortCode().compareTo(patients2.getShortCode()); + } + }); + + Map cnames = new LinkedHashMap<>(); + cnames.put("id", "#"); + cnames.put("hospitalName", "医院名称"); + cnames.put("vcCardNo", "就诊卡号"); + cnames.put("username", "姓名"); + cnames.put("birth", "出生日期"); + cnames.put("phone", "手机号"); + cnames.put("cardNo", "证件号"); + cnames.put("age", "年龄"); + cnames.put("huji", "户籍地"); + cnames.put("juzhu", "居住地"); + cnames.put("week", "建档孕周"); + cnames.put("lastMens", "末次月经"); + cnames.put("dueDate", "预产期"); + cnames.put("bookbuildingDate", "建档日期"); + cnames.put("doctorName", "建档医生"); + + + List> results = new ArrayList<>(); + if(org.apache.commons.collections.CollectionUtils.isNotEmpty(patients)) { + int i = 0; + for (Patients p : patients) { + Map result = new LinkedHashMap<>(); + result.put("id", ++i); + result.put("hospitalName", hNameCache.get(p.getHospitalId())); + result.put("vcCardNo", p.getVcCardNo()); + result.put("username", p.getUsername()); + result.put("birth", DateUtil.getyyyy_MM_dd(p.getBirth())); + result.put("phone", com.lyms.platform.common.utils.StringUtils.encryPhone(p.getPhone())); + result.put("cardNo", com.lyms.platform.common.utils.StringUtils.encryCardNo(p.getCardNo())); + result.put("age", DateUtil.getAge(p.getBirth())); + String residenceAddress = findName(p.getProvinceRegisterId()) + findName(p.getCityRegisterId()) + findName(p.getAreaRegisterId()) + findName(p.getStreetRegisterId()) + p.getAddressRegister(); + result.put("juzhu", residenceAddress.replace("null", "")); + String householdAddress = findName(p.getProvinceId()) + findName(p.getCityId()) + findName(p.getAreaId()) + findName(p.getStreetId()) + p.getAddress(); + result.put("huji", householdAddress.replace("null", "")); + + result.put("week", DateUtil.getWeekDesc(p.getLastMenses(), p.getBookbuildingDate())); + result.put("lastMens", DateUtil.getyyyy_MM_dd(p.getLastMenses())); + result.put("dueDate", DateUtil.getyyyy_MM_dd(p.getDueDate())); + result.put("bookbuildingDate", DateUtil.getyyyy_MM_dd(p.getBookbuildingDate())); + result.put("doctorName", userNameCache.get(p.getBookbuildingDoctor())); + results.add(result); + } + } + + ResponseUtil.responseExcel(cnames, results, response); + } + + private List getPatients(String provinceId, String cityId, String aredId, String streetId, + Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId) { List> hospitalInfos = mongoUtil.getHospitals(userId, provinceId, cityId, aredId, streetId); List hospitalIds = CollectionUtils.getListByKey(hospitalInfos, "id"); Criteria c = new Criteria(); @@ -195,8 +283,8 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService c.and("bookbuildingDate").gte(startDate).lt(DateUtil.addDay(endDate, 1)); } List patients = mongoTemplate.find(Query.query(c), Patients.class); - - return null; + doFilter(patients, ageType, patientType); + return patients; } private void doFilter(List patients, Integer ageType, Integer patientType) {