From 9c717849bee3d6cc25f29ad69a93a507e3de7d13 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 27 十二月 2024 18:22:37 +0800 Subject: [PATCH] 统计分析报表接口 --- medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalRecordService.java | 3 medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml | 80 ++++++++------- medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalHandleRecordServiceImpl.java | 14 ++ medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalRecordMapper.java | 5 medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalHandleRecordMapper.java | 13 ++ medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/StaticsController.java | 21 ++++ medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalHandleRecordService.java | 12 ++ medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalRecordServiceImpl.java | 23 +--- medicalWaste-system/src/main/java/com/sinata/system/service/biz/StaticsService.java | 101 ++++++++++++++++++- medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordMapper.xml | 25 +++++ 10 files changed, 230 insertions(+), 67 deletions(-) diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/StaticsController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/StaticsController.java index a5055cf..e90318f 100644 --- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/StaticsController.java +++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/StaticsController.java @@ -134,9 +134,30 @@ } } + /** + * 监管报表 + * + * @param query + * @return + */ @ApiOperation("监管报表") @PostMapping("/regulationReport") public R<DepartmentReportVO> regulationReport(@Valid @RequestBody DisposalReportQuery query) { return R.ok(staticsService.regulationReport(query)); } + + /** + * 监管报表导出 + * + * @param query + */ + @ApiOperation("监管报表导出") + @PostMapping("/regulationReportExport") + public void regulationReportExport(@Valid @RequestBody DisposalReportQuery query) { + try { + staticsService.regulationReportExport(query); + } catch (IOException e) { + throw new RuntimeException(e); + } + } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalHandleRecordMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalHandleRecordMapper.java index aa25caf..b71c191 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalHandleRecordMapper.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalHandleRecordMapper.java @@ -2,7 +2,12 @@ import com.sinata.system.domain.MwDisposalHandleRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.sinata.system.domain.query.DisposalReportQuery; +import com.sinata.system.domain.vo.MwDisposalRecordReportVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -14,5 +19,11 @@ */ @Mapper public interface MwDisposalHandleRecordMapper extends BaseMapper<MwDisposalHandleRecord> { - + /** + * 处置记录报表 + * + * @param query + * @return + */ + List<MwDisposalRecordReportVO> disposalReport(@Param("query") DisposalReportQuery query); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalRecordMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalRecordMapper.java index 1ebc082..ba06a71 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalRecordMapper.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwDisposalRecordMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.sinata.system.domain.query.DisposalReportQuery; import com.sinata.system.domain.query.MwDisposalRecordQuery; +import com.sinata.system.domain.vo.DisposalRecordStaticsVO; import com.sinata.system.domain.vo.MwCollectRecordVO; import com.sinata.system.domain.vo.MwDisposalRecordItemVO; import com.sinata.system.domain.vo.MwDisposalRecordReportVO; @@ -31,7 +32,7 @@ * @param treeCode * @return */ - List<MwDisposalRecordVO> getStaticsData(@Param("query") MwDisposalRecordQuery query, @Param("treeCode") String treeCode); + DisposalRecordStaticsVO getStaticsData(@Param("query") MwDisposalRecordQuery query, @Param("treeCode") String treeCode); /** * 处置显示分页列表 @@ -59,7 +60,7 @@ * @param type * @return */ - List<MwDisposalRecordReportVO> disposalReportByType(@Param("query") DisposalReportQuery query, @Param("type") Integer type); + List<MwDisposalRecordReportVO> disposalReceiveReport(@Param("query") DisposalReportQuery query); /** * 监管报表医疗废物处置列表 diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalHandleRecordService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalHandleRecordService.java index c5f86a4..3abad7c 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalHandleRecordService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalHandleRecordService.java @@ -2,6 +2,10 @@ import com.sinata.system.domain.MwDisposalHandleRecord; import com.baomidou.mybatisplus.extension.service.IService; +import com.sinata.system.domain.query.DisposalReportQuery; +import com.sinata.system.domain.vo.MwDisposalRecordReportVO; + +import java.util.List; /** * <p> @@ -12,5 +16,11 @@ * @since 2024-12-27 */ public interface MwDisposalHandleRecordService extends IService<MwDisposalHandleRecord> { - + /** + * 处置记录报表 + * + * @param query + * @return + */ + List<MwDisposalRecordReportVO> disposalReport(DisposalReportQuery query); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalRecordService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalRecordService.java index 7940776..fc98875 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalRecordService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwDisposalRecordService.java @@ -51,10 +51,9 @@ * 处置报表 * * @param query - * @param type 1:接收 2:处置 * @return */ - List<MwDisposalRecordReportVO> disposalReportByType(DisposalReportQuery query, Integer type); + List<MwDisposalRecordReportVO> disposalReceiveReport(DisposalReportQuery query); /** * 监管报表医疗废物处置列表 diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/biz/StaticsService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/biz/StaticsService.java index 7eb9c8f..2fa4733 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/biz/StaticsService.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/biz/StaticsService.java @@ -25,6 +25,7 @@ import com.sinata.system.service.ISysDictDataService; import com.sinata.system.service.MwCheckoutRecordService; import com.sinata.system.service.MwCollectRecordService; +import com.sinata.system.service.MwDisposalHandleRecordService; import com.sinata.system.service.MwDisposalRecordService; import com.sinata.system.service.MwWarningRecordService; import com.sinata.system.service.SysDepartmentService; @@ -57,6 +58,7 @@ private final MwWarningRecordService mwWarningRecordService; private final HttpServletResponse response; private final MwDisposalRecordService mwDisposalRecordService; + private final MwDisposalHandleRecordService mwDisposalHandleRecordService; /** * 机构分布-获取机构列表 @@ -333,9 +335,9 @@ public DepartmentReportVO disposalReport(DisposalReportQuery query) { DepartmentReportVO vo = new DepartmentReportVO(); //已接收 - List<MwDisposalRecordReportVO> receivedList = mwDisposalRecordService.disposalReportByType(query, 1); + List<MwDisposalRecordReportVO> receivedList = mwDisposalRecordService.disposalReceiveReport(query); //已处置 - List<MwDisposalRecordReportVO> disposaledList = mwDisposalRecordService.disposalReportByType(query, 2); + List<MwDisposalRecordReportVO> disposaledList = mwDisposalHandleRecordService.disposalReport(query); SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); switch (query.getDateType()) { case 1: @@ -445,15 +447,19 @@ headTitles.add(Lists.newArrayList("日期")); wasteTypeList.forEach(item -> { headTitles.add(Lists.newArrayList("医疗废物接收量(kg)", item.getDictLabel())); - headTitles.add(Lists.newArrayList("医疗废物接收量(kg)", item.getDictLabel())); }); wasteTypeList.forEach(item -> { - headTitles.add(Lists.newArrayList("医疗废物处置量(kg)", item.getDictLabel())); headTitles.add(Lists.newArrayList("医疗废物处置量(kg)", item.getDictLabel())); }); return headTitles; } + /** + * 监管报表 + * + * @param query + * @return + */ public DepartmentReportVO regulationReport(DisposalReportQuery query) { DepartmentReportVO vo = new DepartmentReportVO(); //医废产生量 @@ -480,16 +486,93 @@ if (CollUtils.isNotEmpty(wasteTypeList)) { vo.setLegend(wasteTypeList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList())); vo.setList(new ArrayList<>()); + List<DepartmentReportItemVO> list = new ArrayList<>(); for (String date : dateList) { DepartmentReportItemVO departmentReportItemVO = new DepartmentReportItemVO(); departmentReportItemVO.setName(date); SimpleDateFormat finalSdf = sdf; for (SysDictData sysDictData : wasteTypeList) { - collectRecordList.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) && finalSdf.format(e.getCollectTime()).equals(date)).map(MwCollectRecordVO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); - } - } - } + BigDecimal weight = collectRecordList.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) && + finalSdf.format(e.getCollectTime()).equals(date)).map(MwCollectRecordVO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); + departmentReportItemVO.getData().add(weight); - return null; + } + for (SysDictData sysDictData : wasteTypeList) { + BigDecimal weight = checkoutRecordList.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) && + finalSdf.format(e.getCollectTime()).equals(date)).map(MwCollectRecordVO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); + departmentReportItemVO.getData().add(weight); + } + for (SysDictData sysDictData : wasteTypeList) { + BigDecimal weight = disposalRecordList.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) && + finalSdf.format(e.getCollectTime()).equals(date)).map(MwCollectRecordVO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); + departmentReportItemVO.getData().add(weight); + } + list.add(departmentReportItemVO); + } + vo.setList(list); + } + return vo; + } + + public void regulationReportExport(DisposalReportQuery query) throws IOException { + List<List<String>> head = regulationReportHead(query.getWasteTypeCodeList()); + System.out.println(JSONObject.toJSONString(head)); + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + String fileName = URLEncoder.encode("监管报表", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + // 这里需要设置不关闭流 + FastExcel.write(response.getOutputStream()) + .head(head) + .autoCloseStream(Boolean.TRUE) + .sheet("监管报表") + .doWrite(getRegulationReportStaticsData(query)); + } + + /** + * 监管报表导出数据 + * + * @param query + * @return + */ + private List<List<Object>> getRegulationReportStaticsData(DisposalReportQuery query) { + DepartmentReportVO vo = regulationReport(query); + List<DepartmentReportItemVO> list = vo.getList(); + if (CollUtils.isNotEmpty(list)) { + List<List<Object>> result = new ArrayList<>(); + for (DepartmentReportItemVO departmentReportItemVO : list) { + List<Object> data = new ArrayList<>(); + data.add(departmentReportItemVO.getName()); + data.addAll(departmentReportItemVO.getData()); + result.add(data); + } + return result; + } + return CollUtils.emptyList(); + } + + /** + * 监管报表表头 + * + * @param wasteTypeCodeList + * @return + */ + private List<List<String>> regulationReportHead(List<Long> wasteTypeCodeList) { + //查询医废类型 + List<SysDictData> wasteTypeList = sysDictDataService.lambdaQuery().in(SysDictData::getDictCode, wasteTypeCodeList).list(); + List<List<String>> headTitles = Lists.newArrayList(); + headTitles.add(Lists.newArrayList("日期")); + wasteTypeList.forEach(item -> { + headTitles.add(Lists.newArrayList("医疗废物产生量(kg)", item.getDictLabel())); + }); + wasteTypeList.forEach(item -> { + headTitles.add(Lists.newArrayList("医疗废物转移量(kg)", item.getDictLabel())); + }); + wasteTypeList.forEach(item -> { + headTitles.add(Lists.newArrayList("医疗废物处置量(kg)", item.getDictLabel())); + }); + return headTitles; } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalHandleRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalHandleRecordServiceImpl.java index 90d3a09..ad5b72a 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalHandleRecordServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalHandleRecordServiceImpl.java @@ -1,10 +1,14 @@ package com.sinata.system.service.impl; import com.sinata.system.domain.MwDisposalHandleRecord; +import com.sinata.system.domain.query.DisposalReportQuery; +import com.sinata.system.domain.vo.MwDisposalRecordReportVO; import com.sinata.system.mapper.MwDisposalHandleRecordMapper; import com.sinata.system.service.MwDisposalHandleRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; + +import java.util.List; /** * <p> @@ -16,5 +20,15 @@ */ @Service public class MwDisposalHandleRecordServiceImpl extends ServiceImpl<MwDisposalHandleRecordMapper, MwDisposalHandleRecord> implements MwDisposalHandleRecordService { + /** + * 处置记录报表 + * + * @param query + * @return + */ + @Override + public List<MwDisposalRecordReportVO> disposalReport(DisposalReportQuery query) { + return baseMapper.disposalReport(query); + } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalRecordServiceImpl.java index d17581e..fd72934 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalRecordServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwDisposalRecordServiceImpl.java @@ -3,7 +3,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sinata.common.entity.PageDTO; -import com.sinata.common.utils.CollUtils; import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.MwDisposalRecord; import com.sinata.system.domain.query.DisposalReportQuery; @@ -14,13 +13,13 @@ import com.sinata.system.domain.vo.MwDisposalRecordItemVO; import com.sinata.system.domain.vo.MwDisposalRecordReportVO; import com.sinata.system.domain.vo.MwDisposalRecordVO; +import com.sinata.system.mapper.MwDisposalHandleRecordMapper; import com.sinata.system.mapper.MwDisposalRecordMapper; import com.sinata.system.service.MwDisposalRecordService; import com.sinata.system.service.SysDepartmentService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.math.BigDecimal; import java.util.List; /** @@ -35,6 +34,7 @@ @RequiredArgsConstructor public class MwDisposalRecordServiceImpl extends ServiceImpl<MwDisposalRecordMapper, MwDisposalRecord> implements MwDisposalRecordService { private final SysDepartmentService sysDepartmentService; + private final MwDisposalHandleRecordMapper mwDisposalHandleRecordMapper; /** * 统计数据 @@ -45,19 +45,11 @@ @Override public DisposalRecordStaticsVO statics(MwDisposalRecordQuery query) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + DisposalRecordStaticsVO vo = null; if (StringUtils.isNotBlank(treeCode)) { - List<MwDisposalRecordVO> disposalRecordVOList = baseMapper.getStaticsData(query, treeCode); - if (CollUtils.isNotEmpty(disposalRecordVOList)) { - DisposalRecordStaticsVO vo = new DisposalRecordStaticsVO(); - vo.setReceiveQuantity(disposalRecordVOList.stream().map(MwDisposalRecordVO::getReceiveQuantity).reduce(0, Integer::sum)); - vo.setReceiveWeight(disposalRecordVOList.stream().map(MwDisposalRecordVO::getReceiveWeight).reduce(BigDecimal.ZERO, BigDecimal::add)); - vo.setUnloadQuantity(disposalRecordVOList.stream().map(MwDisposalRecordVO::getUnloadQuantity).reduce(0, Integer::sum)); - vo.setUnloadWeight(disposalRecordVOList.stream().map(MwDisposalRecordVO::getUnloadWeight).reduce(BigDecimal.ZERO, BigDecimal::add)); - vo.setTotalHandledQuantity(disposalRecordVOList.stream().map(MwDisposalRecordVO::getTotalHandledQuantity).reduce(0, Integer::sum)); - vo.setTotalHandledWeight(disposalRecordVOList.stream().map(MwDisposalRecordVO::getTotalHandledWeight).reduce(BigDecimal.ZERO, BigDecimal::add)); - } + vo = baseMapper.getStaticsData(query, treeCode); } - return new DisposalRecordStaticsVO(); + return vo; } /** @@ -92,12 +84,11 @@ * 处置报表 * * @param query - * @param type * @return */ @Override - public List<MwDisposalRecordReportVO> disposalReportByType(DisposalReportQuery query, Integer type) { - return baseMapper.disposalReportByType(query, type); + public List<MwDisposalRecordReportVO> disposalReceiveReport(DisposalReportQuery query) { + return baseMapper.disposalReceiveReport(query); } /** diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordMapper.xml index fdfe4cd..c120c17 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordMapper.xml +++ b/medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordMapper.xml @@ -26,5 +26,30 @@ UPDATE_TIME, ID, DEPARTMENT_ID, DISPOSAL_UNIT_NAME, DISPOSAL_TIME, DISPOSAL_USER_ID, DISPOSAL_RECORD_ID </sql> + <select id="disposalReport" resultType="com.sinata.system.domain.vo.MwDisposalRecordReportVO"> + SELECT MDHR.ID, + MDHR.DEPARTMENT_ID, + MDHR.DISPOSAL_UNIT_NAME, + MDHR.DISPOSAL_TIME, + MDHR.DISPOSAL_USER_ID, + MCR.WEIGHT, + MCR.WASTE_TYPE + FROM MW_DISPOSAL_HANDLE_RECORD MDHR + LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.DISPOSAL_HANDLE_RECORD_ID = MDHR.ID + <where> + <if test="query.departmentId != null"> + AND MDHR.DEPARTMENT_ID = #{query.departmentId} + </if> + <if test="query.startTime != null and query.endTime != null"> + AND MDHR.DISPOSAL_TIME BETWEEN #{query.startTime} AND #{query.endTime} + </if> + <if test="query.wasteTypeCodeList != null and query.wasteTypeCodeList.size()>0"> + AND MCR.WASTE_TYPE IN + <foreach collection="query.wasteTypeCodeList" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + </where> + </select> </mapper> diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml index 3782a15..a7d53a5 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml +++ b/medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml @@ -34,10 +34,17 @@ UPDATE_TIME, ID, DEPARTMENT_ID, DISPOSAL_UNIT_NAME, RECEIVE_QUANTITY, RECEIVE_TIME, RECEIVE_WEIGHT, RECEIVER_ID, UNLOAD_QUANTITY, UNLOAD_WEIGHT, TOTAL_HANDLED_QUANTITY, DISPOSAL_FLAG, TOTAL_HANDLED_WEIGHT, DISPOSAL_TIME, DISPOSAL_USER_ID </sql> - <select id="getStaticsData" resultType="com.sinata.system.domain.vo.MwDisposalRecordVO"> - SELECT MDR.* + <select id="getStaticsData" resultType="com.sinata.system.domain.vo.DisposalRecordStaticsVO"> + SELECT SUM(MDR.RECEIVE_QUANTITY) AS receivedQuantity, + SUM(MDR.RECEIVE_WEIGHT) AS receivedWeight, + SUM(MDR.RECEIVE_QUANTITY) AS unloadQuantity, + SUM(MDR.RECEIVE_WEIGHT) AS unloadWeight, + SUM(MCR.WEIGHT) AS totalHandledWeight, + COUNT(DISTINCT MCR.BOX_NUMBER) AS totalHandledQuantity FROM MW_DISPOSAL_RECORD MDR LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID + LEFT JOIN MW_DISPOSAL_HANDLE_RECORD MDHR ON MDHR.DISPOSAL_RECORD_ID = MDR.ID + LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.DISPOSAL_HANDLE_RECORD_ID = MDHR.ID <where> MDR.DEL_FLAG = 0 <if test="treeCode != null and treeCode !=''"> @@ -49,9 +56,29 @@ </where> </select> <select id="pageList" resultType="com.sinata.system.domain.vo.MwDisposalRecordVO"> - SELECT MDR.* + SELECT MDR.ID, + MDR.DEPARTMENT_ID, + MDR.DISPOSAL_UNIT_NAME, + MDR.RECEIVE_QUANTITY, + MDR.RECEIVE_TIME, + MDR.RECEIVE_WEIGHT, + MDR.RECEIVER_ID, + MDR.UNLOAD_QUANTITY, + MDR.UNLOAD_WEIGHT, + MDR.DISPOSAL_FLAG, + MDR.DISPOSAL_TIME, + MDR.DISPOSAL_USER_ID, + MDR.DEL_FLAG, + MDR.CREATE_BY, + MDR.CREATE_TIME, + MDR.UPDATE_BY, + MDR.UPDATE_TIME, + SUM(MCR.WEIGHT) AS totalHandledWeight, + COUNT(DISTINCT MCR.BOX_NUMBER) AS totalHandledQuantity FROM MW_DISPOSAL_RECORD MDR LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID + LEFT JOIN MW_DISPOSAL_HANDLE_RECORD MDHR ON MDHR.DISPOSAL_RECORD_ID = MDR.ID + LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.DISPOSAL_HANDLE_RECORD_ID = MDHR.ID <where> MDR.DEL_FLAG = 0 <if test="treeCode != null and treeCode !=''"> @@ -61,25 +88,23 @@ AND MDR.RECEIVE_TIME BETWEEN #{query.receiveTimeStart} AND #{query.receiveTimeEnd} </if> </where> - ORDER BY MDR.DISPOSAL_TIME DESC + ORDER BY MDR.RECEIVE_TIME DESC </select> <select id="pageDetail" resultType="com.sinata.system.domain.vo.MwDisposalRecordItemVO"> SELECT MCR.BOX_NUMBER, - COUNT(*) AS bagNum, + COUNT(MCR.ID) AS bagNum, IFNULL(SUM(MCR.WEIGHT), 0) AS weight, - MDR.DISPOSAL_TIME - FROM MW_DISPOSAL_RECORD MDR - LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDR.ID = MDRI.DISPOSAL_RECORD_ID - LEFT JOIN MW_COLLECT_RECORD MCR ON MDR.ID = MDRI.COLLECT_RECORD_ID + MDHR.DISPOSAL_TIME + FROM MW_DISPOSAL_HANDLE_RECORD MDHR + LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.DISPOSAL_HANDLE_RECORD_ID = MDHR.ID <where> - MCR.STATUS = 4 <if test="disposalRecordId != null"> - AND MDR.ID = #{disposalRecordId} + AND MDHR.DISPOSAL_RECORD_ID = #{disposalRecordId} </if> </where> - GROUP BY MCR.BOX_ID + GROUP BY MCR.BOX_NUMBER </select> - <select id="disposalReportByType" resultType="com.sinata.system.domain.vo.MwDisposalRecordReportVO"> + <select id="disposalReceiveReport" resultType="com.sinata.system.domain.vo.MwDisposalRecordReportVO"> SELECT MCR.ID, MDR.RECEIVE_TIME, MDR.DISPOSAL_TIME, MCR.WASTE_TYPE, MCR.WEIGHT, MCR.STATUS FROM MW_DISPOSAL_RECORD MDR LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDRI.DISPOSAL_RECORD_ID = MDR.ID @@ -88,24 +113,8 @@ <if test="query.departmentId != null"> AND MDR.DEPARTMENT_ID = #{query.departmentId} </if> - <!-- 判断 type 为 1 或 2 的状态条件 --> - <choose> - <when test="type == 1"> - AND MCR.STATUS = 3 - </when> - <when test="type == 2"> - AND MCR.STATUS = 4 - </when> - </choose> <if test="query.startTime != null and query.endTime != null"> - <choose> - <when test="type == 1"> - AND MDR.RECEIVE_TIME BETWEEN #{query.startTime} AND #{query.endTime} - </when> - <when test="type == 2"> - AND MDR.DISPOSAL_TIME BETWEEN #{query.startTime} AND #{query.endTime} - </when> - </choose> + AND MDR.RECEIVE_TIME BETWEEN #{query.startTime} AND #{query.endTime} </if> <if test="query.wasteTypeCodeList != null and query.wasteTypeCodeList.size()>0"> AND MCR.WASTE_TYPE IN @@ -119,18 +128,17 @@ SELECT MCR.ID, MCR.WASTE_TYPE, MCR.WEIGHT, - MDR.DISPOSAL_TIME AS collectTime - FROM MW_DISPOSAL_RECORD MDR - LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDRI.DISPOSAL_RECORD_ID = MDR.ID - LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.ID = MDRI.COLLECT_RECORD_ID - LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MCR.DEPARTMENT_ID + MDHR.DISPOSAL_TIME AS collectTime + FROM MW_DISPOSAL_HANDLE_RECORD MDHR + LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.DISPOSAL_HANDLE_RECORD_ID = MDHR.ID + LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDHR.DEPARTMENT_ID <where> MDR.DEL_FLAG = 0 <if test="treeCode != null and treeCode != ''"> AND SD.TREE_CODE LIKE CONCAT(#{treeCode}, '%') </if> <if test="query.startTime != null and query.endTime != null"> - AND MDR.DISPOSAL_TIME BETWEEN #{query.startTime} AND #{query.endTime} + AND MDHR.DISPOSAL_TIME BETWEEN #{query.startTime} AND #{query.endTime} </if> <if test="query.wasteTypeList != null and query.wasteTypeList.size()>0"> AND MCR.WASTE_TYPE IN -- Gitblit v1.7.1