diff --git a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java index 8f75692..c075d23 100644 --- a/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java +++ b/platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java @@ -126,4 +126,6 @@ public interface CouponMapper { List> findHospitalInfoByIds2(Map map); void invalid2(Map param); + + List findUsededId(List usedIds); } diff --git a/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml b/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml index de0cdf3..5fe190c 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml @@ -758,4 +758,12 @@ order by a.user_id + + + \ No newline at end of file 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 3cee9aa..97fa980 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 @@ -705,14 +705,155 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService return ""; } - private List getNeedUsedIds(List patients, List antExChuModels, List antenatalExaminationModels, List maternalDeliverModels, List deliverModels, List postReviewModels) { + private List getNeedUsedIds(List patients, List antExChuModels, List antenatalExaminationModels, + List maternalDeliverModels, List deliverModels, List postReviewModels) { List needUsedIds = new ArrayList<>(); for (Patients patient : patients) { needUsedIds.add(patient.getId()); } + for (AntExChuModel antExChuModel : antExChuModels) { + needUsedIds.add(antExChuModel.getId()); + } + for (AntenatalExaminationModel antenatalExaminationModel : antenatalExaminationModels) { + needUsedIds.add(antenatalExaminationModel.getId()); + } + for (MaternalDeliverModel maternalDeliverModel : maternalDeliverModels) { + needUsedIds.add(maternalDeliverModel.getId()); + } + for (DischargeAbstractMotherModel deliverModel : deliverModels) { + needUsedIds.add(deliverModel.getId()); + } + for (PostReviewModel postReviewModel : postReviewModels) { + needUsedIds.add(postReviewModel.getId()); + } return needUsedIds; } + private boolean checkHospital(List patients, List antExChuModels, List antenatalExaminationModels, + List maternalDeliverModels, List deliverModels, List postReviewModels, String hid, String usedId) { + for (Patients patient : patients) { + if(hid.equals(patient.getHospitalId()) && usedId.equals(patient.getId())) { + return true; + } + } + for (AntExChuModel antExChuModel : antExChuModels) { + for (Patients patient : patients) { + if(antExChuModel.getParentId().equals(patient.getId()) && patient.getHospitalId().equals(hid) && usedId.equals(antExChuModel.getId())) { + return true; + } + } + } + for (AntenatalExaminationModel antenatalExaminationModel : antenatalExaminationModels) { + for (Patients patient : patients) { + if(antenatalExaminationModel.getParentId().equals(patient.getId()) && patient.getHospitalId().equals(hid) && usedId.equals(antenatalExaminationModel.getId())) { + return true; + } + } + } + for (MaternalDeliverModel maternalDeliverModel : maternalDeliverModels) { + for (Patients patient : patients) { + if(maternalDeliverModel.getParentId().equals(patient.getId()) && patient.getHospitalId().equals(hid) && usedId.equals(maternalDeliverModel.getId())) { + return true; + } + } + } + for (DischargeAbstractMotherModel deliverModel : deliverModels) { + for (Patients patient : patients) { + if(deliverModel.getPatientId().equals(patient.getId()) && patient.getHospitalId().equals(hid) && usedId.equals(deliverModel.getId())) { + return true; + } + } + } + for (PostReviewModel postReviewModel : postReviewModels) { + for (Patients patient : patients) { + if(postReviewModel.getParentId().equals(patient.getId()) && patient.getHospitalId().equals(hid) && usedId.equals(postReviewModel.getId())) { + return true; + } + } + } + return false; + } + + private Patients getParentByUsedId(List patients, List antExChuModels, List antenatalExaminationModels, + List maternalDeliverModels, List deliverModels, List postReviewModels, String usedId) { + for (Patients patient : patients) { + if(patient.getId().equals(usedId)) { + return patient; + } + } + for (AntExChuModel antExChuModel : antExChuModels) { + for (Patients patient : patients) { + if(antExChuModel.getParentId().equals(patient.getId())) { + return patient; + } + } + } + for (AntenatalExaminationModel antenatalExaminationModel : antenatalExaminationModels) { + for (Patients patient : patients) { + if(antenatalExaminationModel.getParentId().equals(patient.getId())) { + return patient; + } + } + } + for (MaternalDeliverModel maternalDeliverModel : maternalDeliverModels) { + for (Patients patient : patients) { + if(maternalDeliverModel.getParentId().equals(patient.getId())) { + return patient; + } + } + } + for (DischargeAbstractMotherModel deliverModel : deliverModels) { + for (Patients patient : patients) { + if(deliverModel.getPatientId().equals(patient.getId())) { + return patient; + } + } + } + for (PostReviewModel postReviewModel : postReviewModels) { + for (Patients patient : patients) { + if(postReviewModel.getParentId().equals(patient.getId())) { + return patient; + } + } + } + return null; + } + + private String getCheckTimeByUsedId(List patients, List antExChuModels, List antenatalExaminationModels, + List maternalDeliverModels, List deliverModels, List postReviewModels, String usedId) { + for (Patients patient : patients) { + if(patient.getId().equals(usedId)) { + return DateUtil.getyyyy_MM_dd(patient.getBookbuildingDate()); + } + } + for (AntExChuModel antExChuModel : antExChuModels) { + if(antExChuModel.getId().equals(usedId)) { + return DateUtil.getyyyy_MM_dd(antExChuModel.getCheckTime()); + } + } + for (AntenatalExaminationModel antenatalExaminationModel : antenatalExaminationModels) { + if(antenatalExaminationModel.getId().equals(usedId)) { + return DateUtil.getyyyy_MM_dd(antenatalExaminationModel.getCheckDate()); + } + } + for (MaternalDeliverModel maternalDeliverModel : maternalDeliverModels) { + if(maternalDeliverModel.getId().equals(usedId)) { + return maternalDeliverModel.getDueDate(); + } + } + for (DischargeAbstractMotherModel deliverModel : deliverModels) { + if(deliverModel.getId().equals(usedId)) { + return DateUtil.getyyyy_MM_dd(deliverModel.getLeaveHospitalDate()); + } + } + for (PostReviewModel postReviewModel : postReviewModels) { + if(postReviewModel.getId().equals(usedId)) { + return DateUtil.getyyyy_MM_dd(postReviewModel.getCheckTime()); + } + } + return ""; + } + @Override public BaseObjectResponse unUsed(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId) { List hospitalIds = getHospitalIds(userId, hospitalId); @@ -730,12 +871,6 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService for (Patients patient : patients) { parentIds.add(patient.getId()); } - List babyModels = mongoTemplate.find(Query.query(Criteria.where("yn").ne(0).and("parentId").in(parentIds)), BabyModel.class); - List babyIds = new ArrayList<>(); - for (BabyModel babyModel : babyModels) { - babyIds.add(babyModel.getId()); - } - List babyCheckModels = mongoTemplate.find(Query.query(Criteria.where("yn").ne(0).and("buildId").in(babyModels)), BabyCheckModel.class); List antExChuModels = mongoTemplate.find(Query.query(Criteria.where("yn").ne(0).and("parentId").in(parentIds)), AntExChuModel.class); List antenatalExaminationModels = mongoTemplate.find(Query.query(Criteria.where("yn").ne(0).and("parentId").in(parentIds)), AntenatalExaminationModel.class); List maternalDeliverModels = mongoTemplate.find(Query.query(Criteria.where("yn").ne(0).and("parentId").in(parentIds)), MaternalDeliverModel.class); @@ -743,11 +878,58 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService List postReviewModels = mongoTemplate.find(Query.query(Criteria.where("yn").ne(0).and("parentId").in(parentIds)), PostReviewModel.class); List usedIds = getNeedUsedIds(patients, antExChuModels, antenatalExaminationModels, maternalDeliverModels, deliverModels, postReviewModels); + List> restList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(usedIds)) { + List list = couponMapper.findUsededId(usedIds); + usedIds.removeAll(list); + + Map hospitalNameCache = new HashMap<>(); + for (String hid : hids) { + boolean flag = false; + Set unUsedIds = new HashSet<>(); // 未使用优惠券patientid + List> un_used_coupons = new ArrayList<>(); // 未使用优惠券详情 + for (String usedId : usedIds) { + if(checkHospital(patients, antExChuModels, antenatalExaminationModels, maternalDeliverModels, deliverModels, postReviewModels, hid, usedId)) { + flag = true; + Patients p = getParentByUsedId(patients, antExChuModels, antenatalExaminationModels, maternalDeliverModels, deliverModels, postReviewModels, usedId); + if(p != null) { + unUsedIds.add(p.getId()); + Map map = new HashMap<>(); + + map.put("username", p.getUsername()); + map.put("phone", com.lyms.platform.common.utils.StringUtils.encryPhone(p.getPhone())); + map.put("cardNo", com.lyms.platform.common.utils.StringUtils.encryCardNo(p.getCardNo())); + map.put("week", DateUtil.getWeekDesc(p.getLastMenses(), new Date())); + map.put("doctorName", couponMapper.getUserName(p.getBookbuildingDoctor())); + String hName = hospitalNameCache.get(p.getHospitalId()); + if(StringUtils.isNotEmpty(hName)) { + hName = couponMapper.findHospitalNameById(p.getHospitalId()); + } + map.put("hospitalName", hName); + map.put("checkTime", getCheckTimeByUsedId(patients, antExChuModels, antenatalExaminationModels, maternalDeliverModels, deliverModels, postReviewModels, usedId)); + un_used_coupons.add(map); + } + } + } + if(flag) { + Map hospitalInfo = couponMapper.findHospitalInfoById(hid); + hospitalInfo.put("cityName", hospitalInfo.get("city_id")); + hospitalInfo.put("areaName", hospitalInfo.get("area_id")); + hospitalInfo.put("un_used_coupons", un_used_coupons); + hospitalInfo.put("un_used_coupon_count", un_used_coupons.size()); + hospitalInfo.put("unUsedIds", unUsedIds); + hospitalInfo.put("un_used_people", unUsedIds.size()); + hospitalInfo.put("hospitalId", hid); + hospitalInfo.put("hospitalName", hospitalInfo.get("name")); + restList.add(hospitalInfo); + } + } + } - return null; + return RespBuilder.buildSuccess(new PageResult(restList.size(), page, limit, restList)); /*List userIds = new ArrayList<>(); // 存储patientId for (Patients patient : patients) { @@ -794,7 +976,7 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService continue; } String checkTime = getCheckTime((Integer) map.get("type"), (String) map.get("user_id"), patientId); - if(StringUtils.isNotEmpty(checkTime)) { *//** 如果没有做检查 那么返回的时间就是空字符串 这里等于做了检查但是没用券 *//* + if(StringUtils.isNotEmpty(checkTime)) { * 如果没有做检查 那么返回的时间就是空字符串 这里等于做了检查但是没用券 unUsedIds.add(p.getId()); unUsedCouponCount ++; map.put("couponName", (couponReportMap.get(map.get("type") + "_" + map.get("coupon_order"))).toString()