Commit 4d4e0e39b0e5056d649b8573cc1b3ccd9a1f0ae5
1 parent
b28b9c5169
Exists in
master
and in
6 other branches
bug修复
Showing 4 changed files with 135 additions and 46 deletions
- platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java
- platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml
- 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/impl/ReportServiceImpl.java
platform-biz-service/src/main/java/com/lyms/platform/permission/dao/master/CouponMapper.java
View file @
4d4e0e3
platform-biz-service/src/main/resources/mainOrm/master/CouponMapper.xml
View file @
4d4e0e3
... | ... | @@ -135,39 +135,40 @@ |
135 | 135 | </select> |
136 | 136 | |
137 | 137 | <select id="findReport" parameterType="map" resultType="map"> |
138 | - select a.people_send_count, a.coupon_send_count, a.create_hospital_id, b.user_used_count, b.coupon_used_count, c.province_id, c.city_id, c.area_id, c.name | |
139 | - from ( | |
140 | - select count(distinct(a.user_id)) as people_send_count, count(1) as coupon_send_count, a.create_hospital_id | |
141 | - from coupon_info a, coupon_template b, coupon_type c, organization d, hospital_coupon_template_group e | |
142 | - where a.create_hospital_id = d.id and a.create_hospital_id in | |
143 | - <foreach collection="hospitalId" open="(" close=")" separator="," item="hid"> | |
144 | - #{hid} | |
145 | - </foreach> | |
146 | - and a.coupon_template_id = b.id and b.type_id = c.id and c.type in | |
147 | - <foreach collection="couponType" open="(" close=")" separator="," item="type"> | |
148 | - #{type} | |
149 | - </foreach> | |
150 | - <if test="startDate != null"> | |
151 | - and a.create_date >= #{startDate} | |
152 | - </if> | |
153 | - <if test="endDate != null"> | |
154 | - and a.create_date <![CDATA[ <= ]]> #{endDate} | |
155 | - </if> | |
156 | - <if test="provinceId != null and provinceId != ''"> | |
157 | - and d.province_id = #{provinceId} | |
158 | - </if> | |
159 | - <if test="cityId != null and cityId != '' "> | |
160 | - and d.city_id = #{cityId} | |
161 | - </if> | |
162 | - <if test="areaId != null and areaId != ''"> | |
163 | - and d.area_id = #{areaId} | |
164 | - </if> | |
165 | - <if test="tempId != null and tempId != ''"> | |
166 | - and e.coupon_template_group_id = #{tempId} | |
167 | - </if> | |
168 | - and a.create_hospital_id = e.hospital_id | |
169 | - group by a.create_hospital_id | |
170 | - ) a, ( | |
138 | + select a.people_send_count, a.coupon_send_count, a.create_hospital_id, a.user_used_count, a.coupon_used_count, a.used_hospital_id, b.province_id, b.city_id, b.area_id, b.name from( | |
139 | + select a.people_send_count, a.coupon_send_count, a.create_hospital_id, b.user_used_count, b.coupon_used_count, b.used_hospital_id | |
140 | + from ( | |
141 | + select count(distinct(a.user_id)) as people_send_count, count(1) as coupon_send_count, a.create_hospital_id | |
142 | + from coupon_info a, coupon_template b, coupon_type c, organization d, hospital_coupon_template_group e | |
143 | + where a.create_hospital_id = d.id and a.create_hospital_id in | |
144 | + <foreach collection="hospitalId" open="(" close=")" separator="," item="hid"> | |
145 | + #{hid} | |
146 | + </foreach> | |
147 | + and a.coupon_template_id = b.id and b.type_id = c.id and c.type in | |
148 | + <foreach collection="couponType" open="(" close=")" separator="," item="type"> | |
149 | + #{type} | |
150 | + </foreach> | |
151 | + <if test="startDate != null"> | |
152 | + and a.create_date >= #{startDate} | |
153 | + </if> | |
154 | + <if test="endDate != null"> | |
155 | + and a.create_date <![CDATA[ <= ]]> #{endDate} | |
156 | + </if> | |
157 | + <if test="provinceId != null and provinceId != ''"> | |
158 | + and d.province_id = #{provinceId} | |
159 | + </if> | |
160 | + <if test="cityId != null and cityId != '' "> | |
161 | + and d.city_id = #{cityId} | |
162 | + </if> | |
163 | + <if test="areaId != null and areaId != ''"> | |
164 | + and d.area_id = #{areaId} | |
165 | + </if> | |
166 | + <if test="tempId != null and tempId != ''"> | |
167 | + and e.coupon_template_group_id = #{tempId} | |
168 | + </if> | |
169 | + and a.create_hospital_id = e.hospital_id | |
170 | + group by a.create_hospital_id | |
171 | + ) a left join ( | |
171 | 172 | select count(distinct(a.user_id)) as user_used_count, count(1) as coupon_used_count, a.used_hospital_id |
172 | 173 | from coupon_info a, coupon_template b, coupon_type c |
173 | 174 | where a.used_hospital_id in |
... | ... | @@ -179,8 +180,57 @@ |
179 | 180 | #{type} |
180 | 181 | </foreach> |
181 | 182 | group by a.used_hospital_id |
182 | - ) b, organization c | |
183 | - where a.create_hospital_id = b.used_hospital_id and a.create_hospital_id = c.id | |
183 | + ) b | |
184 | + on a.create_hospital_id = b.used_hospital_id | |
185 | + union | |
186 | + select a.people_send_count, a.coupon_send_count, a.create_hospital_id, b.user_used_count, b.coupon_used_count, b.used_hospital_id | |
187 | + from ( | |
188 | + select count(distinct(a.user_id)) as people_send_count, count(1) as coupon_send_count, a.create_hospital_id | |
189 | + from coupon_info a, coupon_template b, coupon_type c, organization d, hospital_coupon_template_group e | |
190 | + where a.create_hospital_id = d.id and a.create_hospital_id in | |
191 | + <foreach collection="hospitalId" open="(" close=")" separator="," item="hid"> | |
192 | + #{hid} | |
193 | + </foreach> | |
194 | + and a.coupon_template_id = b.id and b.type_id = c.id and c.type in | |
195 | + <foreach collection="couponType" open="(" close=")" separator="," item="type"> | |
196 | + #{type} | |
197 | + </foreach> | |
198 | + <if test="startDate != null"> | |
199 | + and a.create_date >= #{startDate} | |
200 | + </if> | |
201 | + <if test="endDate != null"> | |
202 | + and a.create_date <![CDATA[ <= ]]> #{endDate} | |
203 | + </if> | |
204 | + <if test="provinceId != null and provinceId != ''"> | |
205 | + and d.province_id = #{provinceId} | |
206 | + </if> | |
207 | + <if test="cityId != null and cityId != '' "> | |
208 | + and d.city_id = #{cityId} | |
209 | + </if> | |
210 | + <if test="areaId != null and areaId != ''"> | |
211 | + and d.area_id = #{areaId} | |
212 | + </if> | |
213 | + <if test="tempId != null and tempId != ''"> | |
214 | + and e.coupon_template_group_id = #{tempId} | |
215 | + </if> | |
216 | + and a.create_hospital_id = e.hospital_id | |
217 | + group by a.create_hospital_id | |
218 | + ) a right join ( | |
219 | + select count(distinct(a.user_id)) as user_used_count, count(1) as coupon_used_count, a.used_hospital_id | |
220 | + from coupon_info a, coupon_template b, coupon_type c | |
221 | + where a.used_hospital_id in | |
222 | + <foreach collection="hospitalId" open="(" close=")" separator="," item="hid"> | |
223 | + #{hid} | |
224 | + </foreach> | |
225 | + and a.status = 2 and a.coupon_template_id = b.id and b.type_id = c.id and c.type in | |
226 | + <foreach collection="couponType" open="(" close=")" separator="," item="type"> | |
227 | + #{type} | |
228 | + </foreach> | |
229 | + group by a.used_hospital_id | |
230 | + ) b | |
231 | + on a.create_hospital_id = b.used_hospital_id | |
232 | + )a, organization b | |
233 | + where a.create_hospital_id = b.id or a.used_hospital_id = b.id | |
184 | 234 | </select> |
185 | 235 | |
186 | 236 | <select id="findUsedInfo" parameterType="map" resultType="map"> |
... | ... | @@ -208,6 +258,7 @@ |
208 | 258 | <foreach collection="hospitalIds" open="(" close=")" separator="," item="hid"> |
209 | 259 | #{hid} |
210 | 260 | </foreach> |
261 | + group by a.coupon_template_group_id,b.name | |
211 | 262 | </select> |
212 | 263 | |
213 | 264 | <select id="findHospitalName" parameterType="map" resultType="map"> |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java
View file @
4d4e0e3
... | ... | @@ -210,12 +210,11 @@ |
210 | 210 | Map<String, Object> param = CollectionUtils.createMap("userId", getUserId(request), "startDate", startDate, |
211 | 211 | "endDate", endDate, "hospitalId", hospitalId, "provinceId", provinceId, "cityId", cityId, "areaId", |
212 | 212 | areaId, "tempId", tempId, "couponType", couponType); |
213 | - /*Map<String, Object> param = CollectionUtils.createMap("userId", getUserId(request),"hospitalId", "1000000094","tempId", tempId, "couponType", "1,2,3,4,5,6,7,8");*/ | |
214 | 213 | return reportService.coupon(param); |
215 | 214 | } |
216 | 215 | |
217 | 216 | /** |
218 | - * 优惠券相关统计详情 | |
217 | + * 优惠券使用统计详情 | |
219 | 218 | * @param request |
220 | 219 | * @param startDate 开始时间 |
221 | 220 | * @param endDate 结束时间 |
... | ... | @@ -237,8 +236,6 @@ |
237 | 236 | Map<String, Object> param = CollectionUtils.createMap("userId", getUserId(request), "startDate", startDate, |
238 | 237 | "endDate", endDate, "hospitalId", CollectionUtils.asList(hospitalId), "provinceId", provinceId, "cityId", cityId, "areaId", areaId, "type", type, |
239 | 238 | "tempId", tempId, "couponType", CollectionUtils.asList(couponType), "currentPage", page, "pageSize", limit); |
240 | - /* Map<String, Object> param = CollectionUtils.createMap("userId", getUserId(request), "hospitalId", CollectionUtils.asList("216"), "type", type, | |
241 | - "tempId", tempId, "couponType", CollectionUtils.asList("1,2,3,4,5,6,7,8"), "currentPage", page, "pageSize", limit);*/ | |
242 | 239 | return reportService.couponInfo(param); |
243 | 240 | } |
244 | 241 |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java
View file @
4d4e0e3
... | ... | @@ -445,8 +445,8 @@ |
445 | 445 | param.put("status", 2); |
446 | 446 | param.put("couponType", CollectionUtils.asList((String) param.get("couponType"))); |
447 | 447 | |
448 | - | |
449 | 448 | List<Map<String, Object>> couponReport = couponMapper.findReport(param); /** 优惠券统计详情(发放人数、发放券数、使用人数、使用券数) */ |
449 | + | |
450 | 450 | List<Map<String, Object>> usedInfo = couponMapper.findUsedInfo(param); /** 优惠券使用详情 */ |
451 | 451 | List<String> xAxis = new ArrayList<>(); |
452 | 452 | |
453 | 453 | |
... | ... | @@ -471,9 +471,25 @@ |
471 | 471 | reportModel.setData(Arrays.asList("发放券数", "使用券数")); |
472 | 472 | reportModel.setSeries(createSeries(couponReport)); |
473 | 473 | |
474 | - return RespBuilder.buildSuccess("couponReport", couponReport, "couponReportMap", couponReportMap, "reportModel", reportModel); | |
474 | + Map<String, Object> titleMap = parseTitle(couponReport); | |
475 | + | |
476 | + return RespBuilder.buildSuccess("couponReport", couponReport, "couponReportMap", titleMap, "reportModel", reportModel); | |
475 | 477 | } |
476 | 478 | |
479 | + private Map<String,Object> parseTitle(List<Map<String, Object>> couponReport) { | |
480 | + Map<String, Object> titleMap = new HashMap<>(); | |
481 | + for (Map<String, Object> map : couponReport) { | |
482 | + Set<String> set = map.keySet(); | |
483 | + for (String s : set) { | |
484 | + if(couponReportMap.containsKey(s)) { | |
485 | + titleMap.put(s, couponReportMap.get(s)); | |
486 | + } | |
487 | + } | |
488 | + } | |
489 | + return titleMap; | |
490 | + } | |
491 | + | |
492 | + | |
477 | 493 | private List<Series> createSeries(List<Map<String, Object>> couponReport) { |
478 | 494 | List<Series> seriesList = new ArrayList<>(); |
479 | 495 | for (Map<String, Object> coupon : couponReport) { |
... | ... | @@ -496,8 +512,12 @@ |
496 | 512 | |
497 | 513 | @Override |
498 | 514 | public BaseObjectResponse couponInit(Map<String, Object> param) { |
499 | - List<String> hospitalIds = Arrays.asList("216", "245"); /** 模拟根据登陆人id 查询出来的医院 */ | |
500 | - param.put("hospitalIds", hospitalIds); | |
515 | + if(StringUtils.isBlank((String) param.get("hospitalId"))) { | |
516 | + param.put("hospitalIds", accessPermissionFacade.getCurrentUserHospPermissions(Integer.parseInt(param.get("userId") + ""))); /** 模拟根据登陆人id 查询出来的医院 */ | |
517 | + } else { | |
518 | + param.put("hospitalIds", CollectionUtils.asList((String) param.get("hospitalId"))); | |
519 | + } | |
520 | + | |
501 | 521 | return RespBuilder.buildSuccess("coupons", EnumUtil.toJson(CouponEnums.class, "code", "name"), |
502 | 522 | "hTemp", couponMapper.findHospitals(param)); |
503 | 523 | } |
... | ... | @@ -520,7 +540,7 @@ |
520 | 540 | couponInfo.put("type_desc", s); |
521 | 541 | } |
522 | 542 | |
523 | - setAntexInfo(couponInfo); | |
543 | + setUsedInfo(couponInfo); | |
524 | 544 | } |
525 | 545 | int count = couponMapper.findCouponInfoCount(param); |
526 | 546 | PageResult pageResult = new PageResult(count, (Integer) param.get("currentPage") ,(Integer) param.get("pageSize"), CollectionUtils.createMap("couponInfos", couponInfos)); |
527 | 547 | |
... | ... | @@ -610,9 +630,29 @@ |
610 | 630 | ResponseUtil.responseExcel(cnames, results, response); |
611 | 631 | } |
612 | 632 | |
613 | - private void setAntexInfo(Map<String, Object> map) { | |
633 | + private void setUsedInfo(Map<String, Object> map) { | |
614 | 634 | String sequenceId = (String) map.get("sequence_id"); |
615 | - if(StringUtils.isEmpty(sequenceId)) return; | |
635 | + Integer type = (Integer) map.get("type"); | |
636 | + if(StringUtils.isEmpty(sequenceId) || type == null) return; | |
637 | + | |
638 | + /** | |
639 | + * type | |
640 | + 1=孕妇建档 lyms_patient | |
641 | + 2=孕妇产检 lyms_antexc(初诊),lyms_antex(复诊) | |
642 | + 3=产妇建档 | |
643 | + 4=产妇分娩 lyms_matdeliver | |
644 | + 5=产妇出院小结 lyms_discharge_abstract_mother | |
645 | + 6=产妇产后复查 lyms_postreview | |
646 | + 7=儿童建档 lyms_baby | |
647 | + 8=儿童保健 lyms_babycheck | |
648 | + */ | |
649 | + if(type == 1) { | |
650 | + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("").is(sequenceId)), Patients.class); | |
651 | + if(patients != null) { | |
652 | + map.put("checkDate", patients.getCreated()); /** 产检日期 */ | |
653 | + } | |
654 | + } | |
655 | + | |
616 | 656 | AntExChuModel antexc = mongoTemplate.findOne(Query.query(Criteria.where("barCode").is(sequenceId)), AntExChuModel.class); |
617 | 657 | if(antexc != null) { |
618 | 658 | map.put("checkDate", antexc.getCheckTime()); /** 产检日期 */ |