From cd7fb77d9739e0565affd5f019b7689c8abb863d Mon Sep 17 00:00:00 2001 From: "litao@lymsh.com" Date: Fri, 10 Nov 2017 15:44:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../permission/dao/master/CouponMapper.java | 6 + .../main/resources/mainOrm/master/CouponMapper.xml | 44 +++++++- .../web/service/impl/ReportServiceImpl.java | 125 ++++++++++++++++----- .../operate/web/utils/CollectionUtils.java | 12 +- 4 files changed, 155 insertions(+), 32 deletions(-) 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 5f95ac8..18e15a7 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 @@ -118,4 +118,10 @@ public interface CouponMapper { List> findMulitPatienInfo(List sendUserIds); List> findUserSendInfoByUids(Map uids); + + List> findUnUsed2(Map param); + + List> findUserTypeInfo(Map map); + + List> findHospitalInfoByIds2(Map map); } 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 8fc1c9a..ef96535 100644 --- a/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml +++ b/platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml @@ -533,6 +533,22 @@ and yn = 1 + + + + + + + \ 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 e32c8e6..ee4302a 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 @@ -30,6 +30,7 @@ import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.util.Assert; +import scala.annotation.target.param; import javax.servlet.http.HttpServletResponse; import java.sql.PreparedStatement; @@ -615,47 +616,54 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService * 6=产妇产后复查 lyms_postreview * 7=儿童建档 lyms_baby * 8=儿童保健 lyms_babycheck + * 9=新生儿访视 lyms_newborn_visit + * 10=血红蛋白检查 lyms_babycheck */ private String getCheckTime(Integer type, String userId) { if(type != null && StringUtils.isNotEmpty(userId)) { if(type == 1 || type == 3) { Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), Patients.class); if(patients != null) { - return DateUtil.getyyyy_MM_dd(patients.getCreated()); + return DateUtil.getyyyy_MM_dd(patients.getBookbuildingDate()); } } else if(type == 2) { AntExChuModel exChuModel = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), AntExChuModel.class); if(exChuModel != null) { - return DateUtil.getyyyy_MM_dd(exChuModel.getCreated()); + return DateUtil.getyyyy_MM_dd(exChuModel.getCheckTime()); } AntenatalExaminationModel antenatalExaminationModel = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), AntenatalExaminationModel.class); if(antenatalExaminationModel != null) { - return DateUtil.getyyyy_MM_dd(antenatalExaminationModel.getCreated()); + return DateUtil.getyyyy_MM_dd(antenatalExaminationModel.getCheckDate()); } } else if(type == 4) { MaternalDeliverModel md = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), MaternalDeliverModel.class); - if(md != null && md.getCreated() != null) { - return DateUtil.getyyyy_MM_dd(md.getCreated()); + if(md != null) { + return md.getDueDate(); } } else if(type == 5) { DischargeAbstractMotherModel dischargeAbstractMotherModel = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), DischargeAbstractMotherModel.class); if(dischargeAbstractMotherModel != null) { - return DateUtil.getyyyy_MM_dd(dischargeAbstractMotherModel.getCreateDate()); + return DateUtil.getyyyy_MM_dd(dischargeAbstractMotherModel.getLeaveHospitalDate()); } } else if(type == 6) { PostReviewModel p = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), PostReviewModel.class); - if(p != null && p.getCreated() != null) { - return DateUtil.getyyyy_MM_dd(p.getCreated()); + if(p != null) { + return DateUtil.getyyyy_MM_dd(p.getCheckTime()); } } else if(type == 7) { BabyModel b = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), BabyModel.class); - if(b != null && b.getCreated() != null) { - return DateUtil.getyyyy_MM_dd(b.getCreated()); + if(b != null) { + return DateUtil.getyyyy_MM_dd(b.getBuildDate()); } - } else if(type == 8) { + } else if(type == 8 || type == 10) { BabyCheckModel b = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), BabyCheckModel.class); - if(b != null && b.getCreated() != null) { - return DateUtil.getyyyy_MM_dd(b.getCreated()); + if(b != null) { + return DateUtil.getyyyy_MM_dd(b.getCheckDate()); + } + } else if(type == 9) { + NewbornVisit b = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(userId)).with(new Sort(Sort.Direction.DESC, "created")), NewbornVisit.class); + if(b != null) { + return DateUtil.getyyyy_MM_dd(b.getCheckTime()); } } } @@ -666,27 +674,53 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService @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); - if(CollectionUtils.isNotEmpty(hospitalIds)) { - List> datas = couponMapper.findHospitalInfoByIds(hospitalIds); - List patients = getPatients(hospitalIds, datas, startDate, endDate, provinceId, cityId, areaId, true); - if(CollectionUtils.isNotEmpty(patients)) { - Set userIds = new HashSet<>(); - for (Patients patient : patients) { - userIds.add(patient.getPid()); - } - Map param = CollectionUtils.createMap("hospitalIds", hospitalIds, "userIds", userIds, "provinceId", provinceId, "cityId", cityId, "areaId", areaId, "page", (page - 1) * limit, "limit", limit); - List> restList = couponMapper.findUnUsed(param); - for (Map map : restList) { - map.put("cityName", findName(map.get("city_id"))); - map.put("areaName", findName(map.get("area_id"))); + List> hospitals= couponMapper.findHospitalInfoByIds2(CollectionUtils.createMap("list", hospitalIds, "provinceId", provinceId, "cityId", cityId, "areaId", areaId)); + + Criteria c = new Criteria(); + List hids = CollectionUtils.getListByKey(hospitals, "id"); + c.and("hospitalId").in(hids).and("yn").ne(0).and("enable").ne("2").and("buildType").ne(1).and("isSendCoupon").is(true); + if(startDate != null && endDate != null) { + c.and("bookbuildingDate").gte(startDate).lt(DateUtil.addDay(endDate, 1)); + } + List patients = mongoTemplate.find(Query.query(c).with(new Sort(Sort.Direction.DESC, "bookbuildingDate")), Patients.class); + + Set userIds = new HashSet<>(); + for (Patients patient : patients) { + userIds.add(patient.getPid()); + } +// Map param = CollectionUtils.createMap("hospitalIds", hospitalIds, "userIds", userIds, "provinceId", provinceId, "cityId", cityId, "areaId", areaId, "page", (page - 1) * limit, "limit", limit); + if(CollectionUtils.isNotEmpty(userIds)) { + Map param = CollectionUtils.createMap("hospitalIds", hospitalIds, "userIds", userIds, "provinceId", provinceId, "cityId", cityId, "areaId", areaId, "page", (page - 1) * limit, "limit", limit); + List> restList = new ArrayList<>(); + for (String hid : hids) { + param.put("hid", hid); + List> list = couponMapper.findUnUsed2(param); + if(CollectionUtils.isNotEmpty(list)) { + Map temp = new HashMap<>(); + Set unUsedUids = new HashSet<>(); + Integer unUsedCouponCount = 0; + temp.putAll(list.get(0)); + temp.put("cityName", findName(list.get(0).get("city_id"))); + temp.put("areaName", findName(list.get(0).get("area_id"))); + temp.remove("user_id"); + for (Map map : list) { + /** 如果没有做检查 那么返回的时间就是空字符串 */ + if (StringUtils.isNotEmpty(getCheckTime((Integer) map.get("type"), (String) map.get("user_id")))) { + unUsedUids.add((String) map.get("user_id")); + unUsedCouponCount++; + } + } + temp.put("un_used_people", unUsedUids.size()); + temp.put("un_used_coupon_count", unUsedCouponCount); + restList.add(temp); } - Integer count = couponMapper.findUnUsedCount(param); - return RespBuilder.buildSuccess(new PageResult(count, page, limit, restList)); } + return RespBuilder.buildSuccess(new PageResult(restList.size(), page, limit, restList)); } return RespBuilder.buildSuccess(new PageResult(0, page, limit, null)); } + @Override public void unUsedExport(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer userId, HttpServletResponse response) { BaseObjectResponse rest = unUsed(startDate, endDate, provinceId, cityId, areaId, hospitalId, 1, Integer.MAX_VALUE, userId); @@ -730,8 +764,11 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService } Map param = CollectionUtils.createMap("hospitalId", hospitalId, "userIds", userIds, "provinceId", provinceId, "cityId", cityId, "areaId", areaId, "page", (page - 1) * limit, "limit", limit); List pids = couponMapper.findUnUsedPeopleInfo(param); + doFilter(pids, hospitalId); if(CollectionUtils.isNotEmpty(pids)) { - Integer count = couponMapper.findUnUsedPeopleInfoCount(param); +// Integer count = couponMapper.findUnUsedPeopleInfoCount(param); + Integer count = pids.size(); + pids = CollectionUtils.getPageIds(pids, page, limit); List> restList = new ArrayList<>(); for (String pid : pids) { Map temp = new HashMap<>(); @@ -758,6 +795,36 @@ public class ReportServiceImpl extends BaseServiceImpl implements IReportService return RespBuilder.buildSuccess(new PageResult(0, page, limit, null)); } + /** + * 过滤掉全部优惠券所对应的项目都没做的userid + * @param userIds + */ + private void doFilter(List userIds, String hospitalId) { + if(CollectionUtils.isNotEmpty(userIds) && StringUtils.isNotEmpty(hospitalId)) { + List> lists = couponMapper.findUserTypeInfo(CollectionUtils.createMap("userIds", userIds, "hospitalId", hospitalId)); + if(CollectionUtils.isNotEmpty(lists)) { + // key = user_id, value = isRemove 默认true + Map temp = new HashMap<>(); + for (String userId : userIds) { + temp.put(userId, true); + } + for (Map map : lists) { + Integer type = (Integer) map.get("type"); + String userId = (String) map.get("user_id"); + String checkTime = getCheckTime(type, userId); + if(!"".equals(checkTime)) { // 找到对应信息 + temp.put(userId, false); + } + } + for (Map.Entry entry : temp.entrySet()) { + if(entry.getValue()) { + userIds.remove(entry.getKey()); + } + } + } + } + } + @Override public BaseObjectResponse unSendInfo(Date startDate, Date endDate, String provinceId, String cityId, String areaId, String hospitalId, Integer page, Integer limit, Integer userId) { 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 95aa6a0..358a39c 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 @@ -1,7 +1,6 @@ package com.lyms.platform.operate.web.utils; import org.apache.commons.collections.MapUtils; -import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang3.StringUtils; import org.springframework.util.Assert; @@ -15,6 +14,17 @@ import java.util.*; public class CollectionUtils extends org.apache.commons.collections.CollectionUtils { private CollectionUtils(){} + public static List getListByKey(List> datas, String key) { + List rest = new ArrayList<>(); + if(isNotEmpty(datas)) { + for (Map data : datas) { + Object value = data.get(key); + rest.add(value == null ? null : value + ""); + } + } + return rest; + } + public static Map createMap(Object ... args){ Assert.notNull(args, "参数不能为null"); Assert.isTrue(args.length % 2 == 0, "length必须为偶数"); -- 1.8.3.1