diff --git a/platform-common/src/main/java/com/lyms/platform/common/result/PageResult.java b/platform-common/src/main/java/com/lyms/platform/common/result/PageResult.java index ebe5c65..b3026aa 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/result/PageResult.java +++ b/platform-common/src/main/java/com/lyms/platform/common/result/PageResult.java @@ -18,8 +18,8 @@ public class PageResult extends BaseModel { public PageResult(Integer count, Integer page, Integer limit, Object rows) { this.count = count; - this.page = page; - this.limit = limit; + this.page = page == null ? 1 : page;; + this.limit = limit == null ? 15 : limit; this.grid = rows; // this.page = ((count - 1)/this.limit) + 1; this.lastPage = ((count - 1)/this.limit) + 1; 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 1915fbb..4b65887 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 @@ -36,11 +36,25 @@ public class ReportController extends BaseController { @RequestMapping(value = "/coupon/unSend", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseObjectResponse unSend(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, HttpServletRequest request) { - return reportService.unSend(startDate, endDate, provinceId, cityId, areaId, hospitalId, getUserId(request)); + public BaseObjectResponse unSend(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, HttpServletRequest request) { + return reportService.unSend(startDate, endDate, provinceId, cityId, areaId, hospitalId, page, limit, getUserId(request)); } - @RequestMapping(value = "/coupon/unSend/info", method = RequestMethod.POST) + /** + * 未发放优惠券统计导出 + */ + @RequestMapping(value = "/coupon/unSend/export", method = RequestMethod.GET) + @ResponseBody +// @TokenRequired + public void unSendExport(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, HttpServletRequest request, HttpServletResponse response) { +// reportService.unSendExport(startDate, endDate, provinceId, cityId, areaId, hospitalId, getUserId(request), response); + reportService.unSendExport(startDate, endDate, provinceId, cityId, areaId, hospitalId, 1000000185, response); + } + + /** + * 未发放优惠券统计详情 + */ + @RequestMapping(value = "/coupon/unSend/info", method = RequestMethod.GET) @ResponseBody @TokenRequired public BaseObjectResponse unSendInfo(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, HttpServletRequest request) { 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 94597e6..c31b0e8 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 @@ -84,7 +84,9 @@ public interface IReportService extends IBaseService { void checkNumberInfoExport(Integer childBirth, Date startDate, Date endDate, Integer startWeek, Integer endWeek, Integer number, Integer id, HttpServletResponse resp); - BaseObjectResponse unSend(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer userId); + BaseObjectResponse unSend(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId); BaseObjectResponse unSendInfo(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId); + + void unSendExport(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, 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 83d9bf0..0bd622f 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 @@ -493,47 +493,26 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } return null; } - - @Override - public BaseObjectResponse unSend(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer userId) { + + private List getHospitalIds(Integer userId, String hospitalId) { List hospitalIds = new ArrayList<>(); if(StringUtils.isEmpty(hospitalId)) { hospitalIds.addAll(accessPermissionFacade.getCurrentUserHospPermissions(userId)); } else { hospitalIds.add(hospitalId); } + return hospitalIds; + } + @Override + public BaseObjectResponse unSend(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId) { + List hospitalIds = getHospitalIds(userId, hospitalId); List> datas = couponMapper.findHospitalInfoByIds(hospitalIds); - Iterator iterator = hospitalIds.iterator(); - while (iterator.hasNext()) { - String id = iterator.next(); - if(StringUtils.isNotEmpty(provinceId)) { - if(!provinceId.equals(getValByKey(datas, id, "province_id"))) { - iterator.remove(); - } - } - if(StringUtils.isNotEmpty(cityId)) { - if(!cityId.equals(getValByKey(datas, id, "city_id"))) { - iterator.remove(); - } - } - if(StringUtils.isNotEmpty(areaId)) { - if(!areaId.equals(getValByKey(datas, id, "area_id"))) { - iterator.remove(); - } - } - } - List> restList = new ArrayList<>(); Map hospitalPatientCount = new HashMap<>(); - if(CollectionUtils.isNotEmpty(hospitalIds)) { - Criteria c = new Criteria(); - c.and("hospitalId").in(hospitalIds).and("isSendCoupon").ne(true).and("yn").ne(0); - if(startDate != null && endDate != null) { - c.and("bookbuildingDate").gte(startDate).lt(DateUtil.addDay(endDate, 1)); - } - List patients = mongoTemplate.find(Query.query(c), Patients.class); + if(CollectionUtils.isNotEmpty(hospitalIds)) { + List patients = getPatients(hospitalIds, datas, startDate, endDate, provinceId, cityId, areaId, hospitalId, userId); for (Patients patient : patients) { if(hospitalPatientCount.containsKey(patient.getHospitalId())) { hospitalPatientCount.put(patient.getHospitalId(), hospitalPatientCount.get(patient.getHospitalId()) + 1); @@ -544,7 +523,6 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService for (Map.Entry entry : hospitalPatientCount.entrySet()) { Map tempMap = new HashMap<>(); - tempMap.put("id", entry.getValue()); tempMap.put("areaId", getValByKey(datas, entry.getKey(), "area_id")); tempMap.put("areaName", findName(tempMap.get("areaId"))); tempMap.put("cityId", getValByKey(datas, entry.getKey(), "city_id")); @@ -557,16 +535,99 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService restList.add(tempMap); } } - return RespBuilder.buildSuccess(restList); + return RespBuilder.buildSuccess(new PageResult(restList.size(), page, limit, CollectionUtils.getPageIds(restList, page, limit))); + } + + @Override + public void unSendExport(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer userId, HttpServletResponse response) { + BaseObjectResponse rest = unSend(startDate, endDate, provinceId, cityId, areaId, hospitalId, 1, Integer.MAX_VALUE, userId); + PageResult pageResult = (PageResult) rest.getData(); + List> datas = (List>) pageResult.getGrid(); + Map cnames = new LinkedHashMap<>(); + cnames.put("id", "#"); + cnames.put("cityName", "地市名称"); + cnames.put("areaName", "区县名称"); + cnames.put("hospitalName", "医院名称"); + cnames.put("count", "未发放人数"); + + 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("cityName", data.get("cityName")); + result.put("areaName", data.get("areaName")); + result.put("hospitalName", data.get("hospitalName")); + result.put("count", data.get("count")); + results.add(result); + } + } + + ResponseUtil.responseExcel(cnames, results, response); } + @Override public BaseObjectResponse unSendInfo(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId) { - return null; + List hospitalIds = getHospitalIds(userId, hospitalId); + List> datas = couponMapper.findHospitalInfoByIds(hospitalIds); + if(CollectionUtils.isNotEmpty(hospitalIds)) { + List patients = getPatients(hospitalIds, datas, startDate, endDate, provinceId, cityId, areaId, hospitalId, userId); + List> restList = new ArrayList<>(); + List pageRows = CollectionUtils.getPageIds(patients, page, limit); + for (Patients patient : pageRows) { + Map temp = new HashMap<>(); + temp.put("username", patient.getUsername()); + temp.put("phone", com.lyms.platform.common.utils.StringUtils.encryPhone(patient.getPhone())); + String residenceAddress = findName(patient.getProvinceRegisterId()) + findName(patient.getCityRegisterId()) + findName(patient.getAreaRegisterId()) + findName(patient.getStreetRegisterId()) + patient.getAddressRegister(); + temp.put("residenceAddress", residenceAddress.replace("null", "")); /** 居住地 */ + String householdAddress = findName(patient.getProvinceId()) + findName(patient.getCityId()) + findName(patient.getAreaId()) + findName(patient.getStreetId()) + patient.getAddress(); + temp.put("householdAddress", householdAddress.replace("null", "")); /** 户籍地 */ + temp.put("lastMenses", DateUtil.getyyyy_MM_dd(patient.getLastMenses())); + temp.put("week", DateUtil.getWeekDesc(patient.getLastMenses(), new Date())); + temp.put("buildWeek", DateUtil.getWeekDesc(patient.getBookbuildingDate(), new Date())); + temp.put("buildWeek", DateUtil.getyyyy_MM_dd(patient.getBookbuildingDate())); + temp.put("doctorName", couponMapper.getUserName(patient.getBookbuildingDoctor())); + temp.put("hospitalName", couponMapper.findHospitalNameById(patient.getHospitalId())); + restList.add(temp); + } + PageResult pageResult = new PageResult(patients.size(), page, limit, restList); + return RespBuilder.buildSuccess(pageResult); + } + return RespBuilder.buildSuccess("hospitalIds为null"); } + private List getPatients(List hospitalIds, List> datas, Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer userId) { + Iterator iterator = hospitalIds.iterator(); + while (iterator.hasNext()) { + String id = iterator.next(); + if(StringUtils.isNotEmpty(provinceId)) { + if(!provinceId.equals(getValByKey(datas, id, "province_id"))) { + iterator.remove(); + continue; + } + } + if(StringUtils.isNotEmpty(cityId)) { + if(!cityId.equals(getValByKey(datas, id, "city_id"))) { + iterator.remove(); + continue; + } + } + if(StringUtils.isNotEmpty(areaId)) { + if(!areaId.equals(getValByKey(datas, id, "area_id"))) { + iterator.remove(); + continue; + } + } + } + Criteria c = new Criteria(); + c.and("hospitalId").in(hospitalIds).and("isSendCoupon").ne(true).and("yn").ne(0); + if(startDate != null && endDate != null) { + c.and("bookbuildingDate").gte(startDate).lt(DateUtil.addDay(endDate, 1)); + } - private List getPatients(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer userId) { - return null; + List patients = mongoTemplate.find(Query.query(c), Patients.class); + return patients; } @Override diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/CollectionUtils.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/CollectionUtils.java index 551e6a9..95aa6a0 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/CollectionUtils.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/CollectionUtils.java @@ -186,6 +186,8 @@ public class CollectionUtils extends org.apache.commons.collections.CollectionUt } public static List getPageIds(List data, Integer page, Integer limit) { + page = page == null ? 1 : page; + limit = limit == null ? 15 : limit; Integer startIndex = (page - 1) * limit; Integer endIndex = startIndex + limit; if(startIndex >= data.size()) {