| | |
| | | import com.sinata.system.domain.query.CheckoutRecordQuery; |
| | | import com.sinata.system.domain.query.MwCheckoutRecordItemQuery; |
| | | import com.sinata.system.domain.query.MwTransitRecordQuery; |
| | | import com.sinata.system.domain.query.TransitRecordQuery; |
| | | import com.sinata.system.domain.vo.MwCheckoutRecordVO; |
| | | import com.sinata.system.domain.vo.MwMedicalWasteBoxVO; |
| | | import com.sinata.system.domain.vo.MwTransitRecordVO; |
| | |
| | | * @return |
| | | */ |
| | | @ApiOperation("运输记录详情") |
| | | @GetMapping("/transit/detail/{id}") |
| | | public R<MwTransitRecordVO> transitDetail(@ApiParam(name = "id", value = "运输记录id", required = true) @PathVariable("id") Long id) { |
| | | return R.ok(mwCheckoutRecordService.transitDetail(id)); |
| | | @PostMapping("/transit/detail") |
| | | public R<MwTransitRecordVO> transitDetail(@RequestBody TransitRecordQuery query) { |
| | | return R.ok(mwCheckoutRecordService.transitDetail(query)); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ApiOperation("运输记录详情分页列表") |
| | | @PostMapping("/transit/detailPage") |
| | | public R<PageDTO<MwMedicalWasteBoxVO>> transitDetailPage(@Valid @RequestBody MwTransitRecordQuery query) { |
| | | public R<PageDTO<MwMedicalWasteBoxVO>> transitDetailPage(@Valid @RequestBody TransitRecordQuery query) { |
| | | return R.ok(mwCheckoutRecordService.transitDetailPageList(query)); |
| | | } |
| | | } |
| | |
| | | max.setTime(maxDate); |
| | | |
| | | Calendar curr = min; |
| | | max.add(Calendar.YEAR, 1); |
| | | //max.add(Calendar.YEAR, 1); |
| | | while (curr.before(max)) { |
| | | result.add(sdf.format(curr.getTime())); |
| | | curr.add(Calendar.YEAR, 1); |
| | |
| | | max.setTime(maxDate); |
| | | |
| | | Calendar curr = min; |
| | | max.add(Calendar.MONTH, 1); |
| | | //max.add(Calendar.MONTH, 1); |
| | | while (curr.before(max)) { |
| | | result.add(sdf.format(curr.getTime())); |
| | | curr.add(Calendar.MONTH, 1); |
| | |
| | | min.setTime(minDate); |
| | | max.setTime(maxDate); |
| | | Calendar curr = min; |
| | | max.add(Calendar.DATE, 1); |
| | | //max.add(Calendar.DATE, 1); |
| | | while (curr.before(max)) { |
| | | result.add(sdf.format(curr.getTime())); |
| | | curr.add(Calendar.DATE, 1); |
New file |
| | |
| | | package com.sinata.system.domain.query; |
| | | |
| | | import com.sinata.common.entity.BasePage; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @author mitao |
| | | * @date 2025/3/25 |
| | | */ |
| | | @ApiModel("运输记录查询对象") |
| | | @Data |
| | | public class TransitRecordQuery extends BasePage { |
| | | private static final long serialVersionUID = 710402334522546900L; |
| | | @ApiModelProperty(value = "路线id") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "车辆id") |
| | | private Long carId; |
| | | |
| | | @ApiModelProperty(value = "运输日期") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date transitDate; |
| | | |
| | | } |
| | |
| | | package com.sinata.system.domain.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | |
| | | @ApiModelProperty("最后封箱时间") |
| | | private Date boxTime; |
| | | |
| | | @ApiModelProperty(value = "运输日期") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date transitDate; |
| | | |
| | | } |
| | |
| | | package com.sinata.system.domain.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | |
| | | |
| | | @ApiModelProperty("路线id") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty("路线id") |
| | | private Long carId; |
| | | |
| | | @ApiModelProperty("单位名称") |
| | | private String departmentName; |
| | |
| | | |
| | | @ApiModelProperty("状态 1:暂存中; 2:运输中; 3:已接收; 4:已处置;") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value = "运输日期") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date transitDate; |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.sinata.system.domain.MwCheckoutRecord; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.sinata.system.domain.dto.CollectTotalUpDto; |
| | | import com.sinata.system.domain.query.CheckoutRecordQuery; |
| | | import com.sinata.system.domain.query.DisposalReportQuery; |
| | | import com.sinata.system.domain.query.MwTransitRecordQuery; |
| | | import com.sinata.system.domain.query.TransformQuery; |
| | | import com.sinata.system.domain.query.TransitRecordQuery; |
| | | import com.sinata.system.domain.vo.MwCheckoutRecordVO; |
| | | import com.sinata.system.domain.vo.MwCollectRecordVO; |
| | | import com.sinata.system.domain.vo.MwMedicalWasteBoxVO; |
| | |
| | | /** |
| | | * 运输记录详情 |
| | | * |
| | | * @param id |
| | | * @return |
| | | * @param query@return |
| | | */ |
| | | MwTransitRecordVO transitDetail(Long id); |
| | | MwTransitRecordVO transitDetail(@Param("query") TransitRecordQuery query); |
| | | |
| | | /** |
| | | * 运输记录详情分页列表 |
| | |
| | | * @param id |
| | | * @return |
| | | */ |
| | | Page<MwMedicalWasteBoxVO> transitDetailPageList(Page<MwMedicalWasteBoxVO> page, @Param("id") Long id); |
| | | Page<MwMedicalWasteBoxVO> transitDetailPageList(Page<MwMedicalWasteBoxVO> page, @Param("query") TransitRecordQuery query); |
| | | |
| | | /** |
| | | * 转运记录导出 |
| | |
| | | import com.sinata.system.domain.query.MwCheckoutRecordItemQuery; |
| | | import com.sinata.system.domain.query.MwTransitRecordQuery; |
| | | import com.sinata.system.domain.query.TransformQuery; |
| | | import com.sinata.system.domain.query.TransitRecordQuery; |
| | | import com.sinata.system.domain.vo.MwCheckoutRecordVO; |
| | | import com.sinata.system.domain.vo.MwCollectRecordVO; |
| | | import com.sinata.system.domain.vo.MwMedicalWasteBoxVO; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | * 运输记录详情 |
| | | * |
| | | * @param id |
| | | * @param query |
| | | * @return |
| | | */ |
| | | MwTransitRecordVO transitDetail(Long id); |
| | | MwTransitRecordVO transitDetail(TransitRecordQuery query); |
| | | |
| | | /** |
| | | * 运输记录详情分页列表 |
| | |
| | | * @param query |
| | | * @return |
| | | */ |
| | | PageDTO<MwMedicalWasteBoxVO> transitDetailPageList(MwTransitRecordQuery query); |
| | | PageDTO<MwMedicalWasteBoxVO> transitDetailPageList(TransitRecordQuery query); |
| | | |
| | | /** |
| | | * 转运记录导出 |
| | |
| | | List<TransformVO> checkoutRecordVOList = mwCheckoutRecordService.getCheckoutRecordList(query, region.getTreeCode()); |
| | | if (CollUtils.isNotEmpty(checkoutRecordVOList)) { |
| | | //查询医废类型 |
| | | List<SysDictData> wasteTypeList = sysDictDataService.lambdaQuery().in(SysDictData::getDictCode, query.getWasteTypeCodeList()).list(); |
| | | List<SysDictData> wasteTypeList = sysDictDataService.lambdaQuery().in(SysDictData::getDictCode, query.getWasteTypeCodeList()).orderByDesc(SysDictData::getDictCode).list(); |
| | | if (CollUtils.isNotEmpty(wasteTypeList)) { |
| | | vo.setLegend(wasteTypeList.stream().map(SysDictData::getDictLabel).collect(Collectors.toList())); |
| | | vo.getLegend().add("小计"); |
| | |
| | | import com.sinata.system.domain.query.MwCheckoutRecordItemQuery; |
| | | import com.sinata.system.domain.query.MwTransitRecordQuery; |
| | | import com.sinata.system.domain.query.TransformQuery; |
| | | import com.sinata.system.domain.query.TransitRecordQuery; |
| | | import com.sinata.system.domain.vo.MwCheckoutRecordExcelVO; |
| | | import com.sinata.system.domain.vo.MwCheckoutRecordVO; |
| | | import com.sinata.system.domain.vo.MwCollectRecordVO; |
| | |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | import java.time.LocalDate; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public MwTransitRecordVO transitDetail(Long id) { |
| | | return baseMapper.transitDetail(id); |
| | | public MwTransitRecordVO transitDetail(TransitRecordQuery query) { |
| | | return baseMapper.transitDetail(query); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public PageDTO<MwMedicalWasteBoxVO> transitDetailPageList(MwTransitRecordQuery query) { |
| | | Page<MwMedicalWasteBoxVO> page = baseMapper.transitDetailPageList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getId()); |
| | | public PageDTO<MwMedicalWasteBoxVO> transitDetailPageList(TransitRecordQuery query) { |
| | | Page<MwMedicalWasteBoxVO> page = baseMapper.transitDetailPageList(new Page<>(query.getPageCurr(), query.getPageSize()), query); |
| | | return PageDTO.of(page); |
| | | } |
| | | |
| | |
| | | vo.setLegend(wasteTypeList.stream().map(SysDictDataVO::getDictLabel).collect(Collectors.toList())); |
| | | vo.getLegend().add("小计"); |
| | | String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); |
| | | List<SysDictData> medicalWasteTypeList = sysDictDataService.lambdaQuery().eq(SysDictData::getDictType, "medical_waste_type").list(); |
| | | List<SysDictData> medicalWasteTypeList = sysDictDataService.lambdaQuery().eq(SysDictData::getDictType, "medical_waste_type").orderByDesc(SysDictData::getDictCode).list(); |
| | | |
| | | List<MwMicroEquipmentStaticsVO> staticsData = baseMapper.getStaticsData(query, treeCode); |
| | | SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); |
| | |
| | | break; |
| | | } |
| | | List<String> dateList = DateUtils.getDayBetween(query.getStartTime(), query.getEndTime(), query.getDateType()); |
| | | if (CollUtils.isNotEmpty(staticsData)) { |
| | | List<DepartmentReportItemVO> result = new ArrayList<>(); |
| | | for (String date : dateList) { |
| | | DepartmentReportItemVO departmentReportItemVO = new DepartmentReportItemVO(); |
| | | departmentReportItemVO.setName(date); |
| | | departmentReportItemVO.setData(new ArrayList<>()); |
| | | SimpleDateFormat finalSdf = sdf; |
| | | BigDecimal totalWeight = BigDecimal.ZERO; |
| | | BigDecimal totalCount = BigDecimal.ZERO; |
| | | for (SysDictData sysDictData : medicalWasteTypeList) { |
| | | BigDecimal weight = staticsData.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) |
| | | && finalSdf.format(e.getUseTime()).equals(date) |
| | | ).map(MwMicroEquipmentStaticsVO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP); |
| | | long count = staticsData.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) |
| | | && finalSdf.format(e.getUseTime()).equals(date)).count(); |
| | | departmentReportItemVO.getData().add(weight); |
| | | departmentReportItemVO.getData().add(BigDecimal.valueOf(count)); |
| | | totalWeight = totalWeight.add(weight); |
| | | totalCount = totalCount.add(BigDecimal.valueOf(count)); |
| | | } |
| | | departmentReportItemVO.getData().add(totalWeight); |
| | | departmentReportItemVO.getData().add(totalCount); |
| | | result.add(departmentReportItemVO); |
| | | List<DepartmentReportItemVO> result = new ArrayList<>(); |
| | | for (String date : dateList) { |
| | | DepartmentReportItemVO departmentReportItemVO = new DepartmentReportItemVO(); |
| | | departmentReportItemVO.setName(date); |
| | | departmentReportItemVO.setData(new ArrayList<>()); |
| | | SimpleDateFormat finalSdf = sdf; |
| | | BigDecimal totalWeight = BigDecimal.ZERO; |
| | | BigDecimal totalCount = BigDecimal.ZERO; |
| | | for (SysDictData sysDictData : medicalWasteTypeList) { |
| | | BigDecimal weight = staticsData.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) |
| | | && finalSdf.format(e.getUseTime()).equals(date) |
| | | ).map(MwMicroEquipmentStaticsVO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, RoundingMode.HALF_UP); |
| | | long count = staticsData.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) |
| | | && finalSdf.format(e.getUseTime()).equals(date)).count(); |
| | | departmentReportItemVO.getData().add(weight); |
| | | departmentReportItemVO.getData().add(BigDecimal.valueOf(count)); |
| | | totalWeight = totalWeight.add(weight); |
| | | totalCount = totalCount.add(BigDecimal.valueOf(count)); |
| | | } |
| | | vo.setList(result); |
| | | departmentReportItemVO.getData().add(totalWeight); |
| | | departmentReportItemVO.getData().add(totalCount); |
| | | result.add(departmentReportItemVO); |
| | | } |
| | | vo.setList(result); |
| | | return vo; |
| | | } |
| | | |
| | |
| | | .like(StringUtils.isNotBlank(query.getContactPerson()), SysDepartment::getContactPerson, query.getContactPerson()) |
| | | .like(StringUtils.isNotBlank(query.getContactPhone()), SysDepartment::getContactPhone, query.getContactPhone()) |
| | | .eq(SysDepartment::getOrgType, DepartmentEnum.REGULATORY_UNIT.getCode()) |
| | | .orderByDesc(SysDepartment::getCreateTime) |
| | | .page(new Page<>(query.getPageCurr(), query.getPageSize())); |
| | | return PageDTO.of(page, RegulatoryUnitVO.class); |
| | | } |
| | |
| | | |
| | | @Nullable |
| | | private List<SysDictDataVO> getSysDictDataVOListByType(String dictType) { |
| | | List<SysDictData> medicalWasteTypeList = lambdaQuery().eq(SysDictData::getDictType, dictType).list(); |
| | | List<SysDictData> medicalWasteTypeList = lambdaQuery().eq(SysDictData::getDictType, dictType).orderByDesc(SysDictData::getDictCode).list(); |
| | | return BeanUtils.copyToList(medicalWasteTypeList, SysDictDataVO.class); |
| | | } |
| | | |
| | |
| | | AND MA.PHONE LIKE CONCAT('%',#{query.phone},'%') |
| | | </if> |
| | | </where> |
| | | ORDER BY MA.CREATE_TIME DESC |
| | | </select> |
| | | <select id="detail" resultType="com.sinata.system.domain.vo.MwApplicationVO"> |
| | | SELECT MA.ID, |
| | |
| | | ORDER BY mcr2.CREATE_TIME DESC |
| | | </select> |
| | | <select id="transitPageList" resultType="com.sinata.system.domain.vo.MwTransitRecordVO"> |
| | | SELECT |
| | | MTRC.ROUTE_ID AS id, |
| | | SELECT ID, |
| | | CAR_ID, |
| | | DEPARTMENT_NAME, |
| | | LICENSE_PLATE_NUMBER, |
| | | NICK_NAME, |
| | | SUM(WEIGHT) AS weight, |
| | | COUNT(COLLECT_RECORD_ID) AS bagNum, |
| | | RECEIVE_TIME AS endTime, |
| | | transitDate, |
| | | STATUS, |
| | | DEL_FLAG, |
| | | MIN(BOX_TIME) AS startTime, |
| | | COUNT(DISTINCT BOX_NUMBER) AS boxNum |
| | | FROM (SELECT DISTINCT MTR.ID, |
| | | MCR2.CAR_ID, |
| | | SD.DEPARTMENT_NAME, |
| | | MTC.LICENSE_PLATE_NUMBER, |
| | | SU.NICK_NAME, |
| | | SUM(MCR.BOX_NUM) AS boxNum, |
| | | SUM(MCR.TOTAL_WEIGHT) AS weight, |
| | | MIN(MCR2.BOX_TIME) AS startTime, |
| | | MDR.RECEIVE_TIME AS endTime, |
| | | MCR2.STATUS |
| | | FROM MW_CHECKOUT_RECORD MCR |
| | | LEFT JOIN MW_CHECKOUT_RECORD_ITEM MCRI ON MCRI.CHECKOUT_RECORD_ID = MCR.ID |
| | | MCR2.BOX_NUM, |
| | | MCR.BOX_TIME, |
| | | MCR2.TOTAL_WEIGHT, |
| | | MDR.RECEIVE_TIME, |
| | | MCR.STATUS, |
| | | TRUNC(MCR2.CHECKOUT_TIME) AS transitDate, |
| | | SD.TREE_CODE, |
| | | MCR.ID AS COLLECT_RECORD_ID, |
| | | MCR.WEIGHT, |
| | | MCR2.DEL_FLAG, |
| | | MCR.BOX_NUMBER |
| | | FROM MW_CHECKOUT_RECORD MCR2 |
| | | LEFT JOIN MW_CHECKOUT_RECORD_ITEM MCRI |
| | | ON MCRI.CHECKOUT_RECORD_ID = MCR2.ID |
| | | LEFT JOIN MW_COLLECT_RECORD MCR |
| | | ON MCR.ID = MCRI.COLLECT_RECORD_ID |
| | | LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDRI.COLLECT_RECORD_ID = MCRI.COLLECT_RECORD_ID |
| | | LEFT JOIN MW_DISPOSAL_RECORD MDR ON MDR.ID = MDRI.DISPOSAL_RECORD_ID |
| | | LEFT JOIN MW_COLLECT_RECORD MCR2 ON MCRI.COLLECT_RECORD_ID = MCR2.ID |
| | | LEFT JOIN MW_TRANSIT_CAR MTC ON MCR.CAR_ID = MTC.ID |
| | | LEFT JOIN SYS_USER SU ON MCR.DRIVER_ID = SU.USER_ID |
| | | LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID |
| | | LEFT JOIN MW_TRANSIT_ROUTE_CAR MTRC ON MTRC.CAR_ID = MCR.CAR_ID |
| | | LEFT JOIN (SELECT * FROM MW_TRANSIT_ROUTE GROUP BY DEPARTMENT_ID) MTR |
| | | ON MTR.DEPARTMENT_ID = MDR.DEPARTMENT_ID) AS T |
| | | <where> |
| | | MCR.DEL_FLAG = 0 |
| | | T.DEL_FLAG = 0 |
| | | <if test="treeCode != null and treeCode != null"> |
| | | AND SD.TREE_CODE LIKE CONCAT(#{treeCode},'%') |
| | | AND T.TREE_CODE LIKE CONCAT(#{treeCode},'%') |
| | | </if> |
| | | <if test="query.licensePlateNumber != null and query.licensePlateNumber != ''"> |
| | | AND MTC.LICENSE_PLATE_NUMBER LIKE CONCAT('%',#{query.licensePlateNumber},'%') |
| | | AND T.LICENSE_PLATE_NUMBER LIKE CONCAT('%',#{query.licensePlateNumber},'%') |
| | | </if> |
| | | <if test="query.status != null"> |
| | | AND MCR2.STATUS = #{query.status} |
| | | <if test="query.status != null and (query.status == 3 or query.status == 4)"> |
| | | AND T.STATUS in(3,4) |
| | | </if> |
| | | <if test="query.startTimeStart != null and query.startTimeEnd != null"> |
| | | AND MCR2.BOX_TIME BETWEEN #{query.startTimeStart} AND #{query.startTimeEnd} |
| | | AND T.BOX_TIME BETWEEN #{query.startTimeStart} AND #{query.startTimeEnd} |
| | | </if> |
| | | <if test="query.endTimeStart != null and query.endTimeEnd != null"> |
| | | AND MDR.RECEIVE_TIME BETWEEN #{query.endTimeStart} AND #{query.endTimeEnd} |
| | | AND T.RECEIVE_TIME BETWEEN #{query.endTimeStart} AND #{query.endTimeEnd} |
| | | </if> |
| | | </where> |
| | | GROUP BY MTRC.ROUTE_ID |
| | | ORDER BY startTime DESC |
| | | GROUP BY T.transitDate, T.ID, T.CAR_ID, T.NICK_NAME |
| | | ORDER BY T.transitDate DESC |
| | | </select> |
| | | <select id="transitDetail" resultType="com.sinata.system.domain.vo.MwTransitRecordVO"> |
| | | SELECT |
| | | MTRC.ROUTE_ID AS id, |
| | | MDR.DISPOSAL_UNIT_NAME AS departmentName, |
| | | SELECT ID, |
| | | CAR_ID, |
| | | DEPARTMENT_NAME, |
| | | LICENSE_PLATE_NUMBER, |
| | | NICK_NAME, |
| | | SUM(WEIGHT) AS weight, |
| | | COUNT(COLLECT_RECORD_ID) AS bagNum, |
| | | RECEIVE_TIME AS endTime, |
| | | transitDate, |
| | | STATUS |
| | | FROM (SELECT DISTINCT MTR.ID, |
| | | MCR2.CAR_ID, |
| | | SD.DEPARTMENT_NAME, |
| | | MTC.LICENSE_PLATE_NUMBER, |
| | | SU.NICK_NAME, |
| | | SUM(MCR.BOX_NUM) AS boxNum, |
| | | SUM(MCR2.WEIGHT) AS weight, |
| | | MIN(MCR2.BOX_TIME) AS startTime, |
| | | MDR.RECEIVE_TIME AS endTime |
| | | FROM MW_CHECKOUT_RECORD MCR |
| | | LEFT JOIN MW_CHECKOUT_RECORD_ITEM MCRI ON MCRI.CHECKOUT_RECORD_ID = MCR.ID |
| | | MCR2.BOX_NUM, |
| | | MCR.BOX_TIME, |
| | | MCR2.TOTAL_WEIGHT, |
| | | MDR.RECEIVE_TIME, |
| | | MCR.STATUS, |
| | | TRUNC(MCR2.CHECKOUT_TIME) AS transitDate, |
| | | SD.TREE_CODE, |
| | | MCR.ID AS COLLECT_RECORD_ID, |
| | | MCR.WEIGHT |
| | | FROM MW_CHECKOUT_RECORD MCR2 |
| | | LEFT JOIN MW_CHECKOUT_RECORD_ITEM MCRI |
| | | ON MCRI.CHECKOUT_RECORD_ID = MCR2.ID |
| | | LEFT JOIN MW_COLLECT_RECORD MCR |
| | | ON MCR.ID = MCRI.COLLECT_RECORD_ID |
| | | LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDRI.COLLECT_RECORD_ID = MCRI.COLLECT_RECORD_ID |
| | | LEFT JOIN MW_DISPOSAL_RECORD MDR ON MDR.ID = MDRI.DISPOSAL_RECORD_ID |
| | | LEFT JOIN MW_COLLECT_RECORD MCR2 ON MCRI.COLLECT_RECORD_ID = MCR2.ID |
| | | LEFT JOIN MW_TRANSIT_CAR MTC ON MCR.CAR_ID = MTC.ID |
| | | LEFT JOIN SYS_USER SU ON MCR.DRIVER_ID = SU.USER_ID |
| | | LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID |
| | | LEFT JOIN MW_TRANSIT_ROUTE_CAR MTRC ON MTRC.CAR_ID = MCR.CAR_ID |
| | | LEFT JOIN (SELECT * FROM MW_TRANSIT_ROUTE GROUP BY DEPARTMENT_ID) MTR |
| | | ON MTR.DEPARTMENT_ID = MDR.DEPARTMENT_ID) AS T |
| | | <where> |
| | | MCR.DEL_FLAG = 0 AND MTRC.ROUTE_ID = #{id} |
| | | T.ID = #{query.id} AND T.CAR_ID = #{query.carId} AND T.transitDate = #{query.transitDate} |
| | | </where> |
| | | GROUP BY MTRC.ROUTE_ID |
| | | </select> |
| | | <select id="transitDetailPageList" resultType="com.sinata.system.domain.vo.MwMedicalWasteBoxVO"> |
| | | SELECT MCR2.HOSPITAL_NAME, |
| | | MCR2.BOX_NUMBER, |
| | | MCR2.WASTE_TYPE_STR, |
| | | COUNT(MCR2.ID) AS bagNum, |
| | | SUM(MCR2.WEIGHT) AS totalWeight, |
| | | MAX(MCR.CHECKOUT_TIME) AS latestCheckoutTime |
| | | FROM MW_TRANSIT_ROUTE_CAR MTRC |
| | | INNER JOIN MW_CHECKOUT_RECORD MCR on MTRC.CAR_ID = MCR.CAR_ID |
| | | LEFT JOIN MW_CHECKOUT_RECORD_ITEM MCRI on MCR.ID = MCRI.CHECKOUT_RECORD_ID |
| | | LEFT JOIN MW_COLLECT_RECORD MCR2 ON MCR2.ID = MCRI.COLLECT_RECORD_ID |
| | | SELECT ID, |
| | | CAR_ID, |
| | | DEPARTMENT_NAME, |
| | | LICENSE_PLATE_NUMBER, |
| | | NICK_NAME, |
| | | COUNT(COLLECT_RECORD_ID) AS bagNum, |
| | | SUM(WEIGHT) AS totalWeight, |
| | | RECEIVE_TIME AS endTime, |
| | | transitDate, |
| | | STATUS,CHECK_OUT_ID, |
| | | HOSPITAL_NAME, |
| | | BOX_NUMBER, |
| | | WASTE_TYPE_STR |
| | | FROM (SELECT DISTINCT MTR.ID, |
| | | MCR2.CAR_ID, |
| | | SD.DEPARTMENT_NAME, |
| | | MTC.LICENSE_PLATE_NUMBER, |
| | | SU.NICK_NAME, |
| | | MCR.BOX_TIME, |
| | | MDR.RECEIVE_TIME, |
| | | MCR.STATUS, |
| | | TRUNC(MCR2.CHECKOUT_TIME) AS transitDate, |
| | | SD.TREE_CODE, |
| | | MCR2.ID AS CHECK_OUT_ID, |
| | | MCR.ID AS COLLECT_RECORD_ID, |
| | | MCR.WEIGHT, |
| | | MCR.HOSPITAL_NAME, |
| | | MCR.BOX_NUMBER, |
| | | MCR.WASTE_TYPE_STR |
| | | FROM MW_CHECKOUT_RECORD MCR2 |
| | | LEFT JOIN MW_CHECKOUT_RECORD_ITEM MCRI |
| | | ON MCRI.CHECKOUT_RECORD_ID = MCR2.ID |
| | | LEFT JOIN MW_COLLECT_RECORD MCR |
| | | ON MCR.ID = MCRI.COLLECT_RECORD_ID |
| | | LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDRI.COLLECT_RECORD_ID = MCRI.COLLECT_RECORD_ID |
| | | LEFT JOIN MW_DISPOSAL_RECORD MDR ON MDR.ID = MDRI.DISPOSAL_RECORD_ID |
| | | LEFT JOIN MW_TRANSIT_CAR MTC ON MCR.CAR_ID = MTC.ID |
| | | LEFT JOIN SYS_USER SU ON MCR.DRIVER_ID = SU.USER_ID |
| | | LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MDR.DEPARTMENT_ID |
| | | LEFT JOIN (SELECT * FROM MW_TRANSIT_ROUTE GROUP BY DEPARTMENT_ID) MTR |
| | | ON MTR.DEPARTMENT_ID = MDR.DEPARTMENT_ID) AS T |
| | | <where> |
| | | MTRC.ROUTE_ID = #{id} |
| | | T.ID = #{query.id} |
| | | AND T.CAR_ID = #{query.carId} |
| | | AND T.transitDate = #{query.transitDate} |
| | | </where> |
| | | GROUP BY MCR2.BOX_ID |
| | | ORDER BY latestCheckoutTime DESC |
| | | </select> |
| | | <select id="hospitalTransitList" resultType="com.sinata.system.domain.vo.MwCheckoutRecordVO"> |
| | | SELECT mcr.ID, |
| | |
| | | </if> |
| | | </where> |
| | | GROUP BY MCR2.BOX_NUMBER |
| | | ORDER BY MCR.CHECKOUT_TIME |
| | | </select> |
| | | <select id="getRegulationReportList" resultType="com.sinata.system.domain.vo.MwCollectRecordVO"> |
| | | SELECT MCR2.ID, |
| | |
| | | GROUP BY |
| | | r.ROLE_ID, r.ROLE_NAME, r.ROLE_KEY, r.ROLE_SORT, r.STATUS, r.DEL_FLAG, r.CREATE_BY, r.CREATE_TIME, r.UPDATE_BY, |
| | | r.UPDATE_TIME, r.REMARK, r.MANAGE_ROLE_ID_STR |
| | | ORDER BY r.CREATE_TIME DESC |
| | | ORDER BY r.ROLE_ID DESC |
| | | </select> |
| | | |
| | | <insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId"> |