Commit a8b01ad127d71f561e80980f7d543c171c228083
1 parent
e895d08404
Exists in
master
and in
6 other branches
建档统计导出接口
Showing 4 changed files with 117 additions and 2 deletions
- platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java
platform-dal/src/main/java/com/lyms/platform/pojo/Patients.java
View file @
a8b01ad
| ... | ... | @@ -16,6 +16,15 @@ |
| 16 | 16 | |
| 17 | 17 | private static final long serialVersionUID = SerialIdEnum.Patients.getCid(); |
| 18 | 18 | |
| 19 | + private String shortCode; | |
| 20 | + | |
| 21 | + public String getShortCode() { | |
| 22 | + return shortCode; | |
| 23 | + } | |
| 24 | + | |
| 25 | + public void setShortCode(String shortCode) { | |
| 26 | + this.shortCode = shortCode; | |
| 27 | + } | |
| 19 | 28 | |
| 20 | 29 | // 纠正末次月经 (和末次月经反起存) |
| 21 | 30 | private Date fuckLastMens; |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java
View file @
a8b01ad
| ... | ... | @@ -46,6 +46,22 @@ |
| 46 | 46 | return reportService.patients(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request)); |
| 47 | 47 | } |
| 48 | 48 | |
| 49 | + /** | |
| 50 | + * 建档明细导出 | |
| 51 | + * @param statistType 统计环比 1=周 2=月 3=季度 4=半年 5=年 | |
| 52 | + * @param ageType 1=全部年龄 2=20岁以下 3=20-30岁 4=30-40岁 5=40岁以上 | |
| 53 | + * @param patientType 建档孕周 1=孕早期 2=孕中期 3=孕晚期 | |
| 54 | + * @return | |
| 55 | + */ | |
| 56 | + @ResponseBody | |
| 57 | +// @TokenRequired | |
| 58 | + @RequestMapping(value = "/patients/export", method = RequestMethod.GET) | |
| 59 | + public void patientsExport(String provinceId, String cityId, String aredId, String streetId, @RequestParam Integer statistType, | |
| 60 | + Integer ageType, Integer patientType, Date startDate, Date endDate, HttpServletRequest request, HttpServletResponse response) { | |
| 61 | +// reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, getUserId(request), response); | |
| 62 | + reportService.patientsExport(provinceId, cityId, aredId, streetId, statistType, ageType, patientType, startDate, endDate, 1000000185, response); | |
| 63 | + } | |
| 64 | + | |
| 49 | 65 | |
| 50 | 66 | /** |
| 51 | 67 | * 未发放优惠券统计 |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java
View file @
a8b01ad
| ... | ... | @@ -99,5 +99,7 @@ |
| 99 | 99 | BaseObjectResponse unUsedPeopleInfo(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId); |
| 100 | 100 | |
| 101 | 101 | BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId); |
| 102 | + | |
| 103 | + void patientsExport(String provinceId, String cityId, String aredId, String streetId, Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId, HttpServletResponse response); | |
| 102 | 104 | } |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java
View file @
a8b01ad
| ... | ... | @@ -9,6 +9,7 @@ |
| 9 | 9 | import com.lyms.platform.common.result.RespBuilder; |
| 10 | 10 | import com.lyms.platform.common.utils.DateUtil; |
| 11 | 11 | import com.lyms.platform.common.utils.EnumUtil; |
| 12 | +import com.lyms.platform.common.utils.PingYinUtil; | |
| 12 | 13 | import com.lyms.platform.operate.web.dao.IReportDao; |
| 13 | 14 | import com.lyms.platform.operate.web.facade.AccessPermissionFacade; |
| 14 | 15 | import com.lyms.platform.operate.web.facade.AutoMatchFacade; |
| ... | ... | @@ -177,6 +178,7 @@ |
| 177 | 178 | couponDescMap.put(8, "儿童保健券"); |
| 178 | 179 | } |
| 179 | 180 | |
| 181 | + | |
| 180 | 182 | /** |
| 181 | 183 | * 建档统计 |
| 182 | 184 | * @param statistType 统计环比 1=周 2=月 3=季度 4=半年 5=年 |
| ... | ... | @@ -187,6 +189,92 @@ |
| 187 | 189 | @Override |
| 188 | 190 | public BaseObjectResponse patients(String provinceId, String cityId, String aredId, String streetId, |
| 189 | 191 | Integer statistType, Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId) { |
| 192 | + List<Patients> patients = getPatients(provinceId, cityId, aredId, streetId, ageType, patientType, startDate, endDate, userId); | |
| 193 | + return null; | |
| 194 | + } | |
| 195 | + | |
| 196 | + @Override | |
| 197 | + 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) { | |
| 198 | + List<Patients> patients = getPatients(provinceId, cityId, aredId, streetId, ageType, patientType, startDate, endDate, userId); | |
| 199 | + | |
| 200 | + Map<String, String> codeCache = new HashMap<>(); | |
| 201 | + Map<String, String> hNameCache = new HashMap<>(); | |
| 202 | + Map<String, String> userNameCache = new HashMap<>(); | |
| 203 | + for (Patients patient : patients) { | |
| 204 | + if(!userNameCache.containsKey(patient.getBookbuildingDoctor())) { | |
| 205 | + userNameCache.put(patient.getBookbuildingDoctor(), couponMapper.findUserName(patient.getBookbuildingDoctor())); | |
| 206 | + } | |
| 207 | + if(codeCache.containsKey(patient.getHospitalId())) { | |
| 208 | + patient.setShortCode(codeCache.get(patient.getHospitalId())); | |
| 209 | + } else { | |
| 210 | + String name = couponMapper.findHospitalNameById(patient.getHospitalId()); | |
| 211 | + String code = PingYinUtil.getFirstSpell(name); | |
| 212 | + patient.setShortCode(code); | |
| 213 | + codeCache.put(patient.getHospitalId(), code); | |
| 214 | + hNameCache.put(patient.getHospitalId(), name); | |
| 215 | + } | |
| 216 | + } | |
| 217 | + | |
| 218 | + Collections.sort(patients, new Comparator<Patients>() { | |
| 219 | + @Override | |
| 220 | + public int compare(Patients patients1, Patients patients2) { | |
| 221 | + if(StringUtils.isEmpty(patients1.getShortCode()) || StringUtils.isEmpty(patients2.getShortCode())) { | |
| 222 | + return 0; | |
| 223 | + } | |
| 224 | + return patients1.getShortCode().compareTo(patients2.getShortCode()); | |
| 225 | + } | |
| 226 | + }); | |
| 227 | + | |
| 228 | + Map<String, String> cnames = new LinkedHashMap<>(); | |
| 229 | + cnames.put("id", "#"); | |
| 230 | + cnames.put("hospitalName", "医院名称"); | |
| 231 | + cnames.put("vcCardNo", "就诊卡号"); | |
| 232 | + cnames.put("username", "姓名"); | |
| 233 | + cnames.put("birth", "出生日期"); | |
| 234 | + cnames.put("phone", "手机号"); | |
| 235 | + cnames.put("cardNo", "证件号"); | |
| 236 | + cnames.put("age", "年龄"); | |
| 237 | + cnames.put("huji", "户籍地"); | |
| 238 | + cnames.put("juzhu", "居住地"); | |
| 239 | + cnames.put("week", "建档孕周"); | |
| 240 | + cnames.put("lastMens", "末次月经"); | |
| 241 | + cnames.put("dueDate", "预产期"); | |
| 242 | + cnames.put("bookbuildingDate", "建档日期"); | |
| 243 | + cnames.put("doctorName", "建档医生"); | |
| 244 | + | |
| 245 | + | |
| 246 | + List<Map<String,Object>> results = new ArrayList<>(); | |
| 247 | + if(org.apache.commons.collections.CollectionUtils.isNotEmpty(patients)) { | |
| 248 | + int i = 0; | |
| 249 | + for (Patients p : patients) { | |
| 250 | + Map<String, Object> result = new LinkedHashMap<>(); | |
| 251 | + result.put("id", ++i); | |
| 252 | + result.put("hospitalName", hNameCache.get(p.getHospitalId())); | |
| 253 | + result.put("vcCardNo", p.getVcCardNo()); | |
| 254 | + result.put("username", p.getUsername()); | |
| 255 | + result.put("birth", DateUtil.getyyyy_MM_dd(p.getBirth())); | |
| 256 | + result.put("phone", com.lyms.platform.common.utils.StringUtils.encryPhone(p.getPhone())); | |
| 257 | + result.put("cardNo", com.lyms.platform.common.utils.StringUtils.encryCardNo(p.getCardNo())); | |
| 258 | + result.put("age", DateUtil.getAge(p.getBirth())); | |
| 259 | + String residenceAddress = findName(p.getProvinceRegisterId()) + findName(p.getCityRegisterId()) + findName(p.getAreaRegisterId()) + findName(p.getStreetRegisterId()) + p.getAddressRegister(); | |
| 260 | + result.put("juzhu", residenceAddress.replace("null", "")); | |
| 261 | + String householdAddress = findName(p.getProvinceId()) + findName(p.getCityId()) + findName(p.getAreaId()) + findName(p.getStreetId()) + p.getAddress(); | |
| 262 | + result.put("huji", householdAddress.replace("null", "")); | |
| 263 | + | |
| 264 | + result.put("week", DateUtil.getWeekDesc(p.getLastMenses(), p.getBookbuildingDate())); | |
| 265 | + result.put("lastMens", DateUtil.getyyyy_MM_dd(p.getLastMenses())); | |
| 266 | + result.put("dueDate", DateUtil.getyyyy_MM_dd(p.getDueDate())); | |
| 267 | + result.put("bookbuildingDate", DateUtil.getyyyy_MM_dd(p.getBookbuildingDate())); | |
| 268 | + result.put("doctorName", userNameCache.get(p.getBookbuildingDoctor())); | |
| 269 | + results.add(result); | |
| 270 | + } | |
| 271 | + } | |
| 272 | + | |
| 273 | + ResponseUtil.responseExcel(cnames, results, response); | |
| 274 | + } | |
| 275 | + | |
| 276 | + private List<Patients> getPatients(String provinceId, String cityId, String aredId, String streetId, | |
| 277 | + Integer ageType, Integer patientType, Date startDate, Date endDate, Integer userId) { | |
| 190 | 278 | List<Map<String, Object>> hospitalInfos = mongoUtil.getHospitals(userId, provinceId, cityId, aredId, streetId); |
| 191 | 279 | List<String> hospitalIds = CollectionUtils.getListByKey(hospitalInfos, "id"); |
| 192 | 280 | Criteria c = new Criteria(); |
| ... | ... | @@ -195,8 +283,8 @@ |
| 195 | 283 | c.and("bookbuildingDate").gte(startDate).lt(DateUtil.addDay(endDate, 1)); |
| 196 | 284 | } |
| 197 | 285 | List<Patients> patients = mongoTemplate.find(Query.query(c), Patients.class); |
| 198 | - | |
| 199 | - return null; | |
| 286 | + doFilter(patients, ageType, patientType); | |
| 287 | + return patients; | |
| 200 | 288 | } |
| 201 | 289 | |
| 202 | 290 | private void doFilter(List<Patients> patients, Integer ageType, Integer patientType) { |