medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentController.java
@@ -14,6 +14,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.util.List; /** * <p> @@ -101,4 +103,14 @@ return R.ok(mwMicroEquipmentService.storedMedicalWastePage(query)); } /** * 微型设备列表 * * @return */ @GetMapping("/list") @ApiOperation("微型设备列表") public R<List<MwMicroEquipmentVO>> getList() { return R.ok(mwMicroEquipmentService.getList()); } } medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentRecordController.java
@@ -2,19 +2,26 @@ import com.sinata.common.core.domain.R; import com.sinata.common.entity.PageDTO; import com.sinata.system.domain.dto.MwMicroEquipmentRecordDTO; import com.sinata.system.domain.query.MwMicroEquipmentRecordQuery; import com.sinata.system.domain.query.MwMicroEquipmentStaticsQuery; import com.sinata.system.domain.vo.MwMicroEquipmentRecordVO; import com.sinata.system.domain.vo.MwMicroEquipmentStaticsTitleVO; import com.sinata.system.service.MwMicroEquipmentRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; /** * <p> @@ -32,9 +39,82 @@ public class MwMicroEquipmentRecordController { private final MwMicroEquipmentRecordService mwMicroEquipmentRecordService; /** * 设备使用记录分页列表 * * @param query * @return */ @PostMapping("/page") @ApiOperation("设备使用记录分页列表") public R<PageDTO<MwMicroEquipmentRecordVO>> pageList(@Valid @RequestBody MwMicroEquipmentRecordQuery query) { return R.ok(mwMicroEquipmentRecordService.pageList(query)); } /** * 导出设备使用记录 * * @param query */ @PostMapping("/export") @ApiOperation("导出设备使用记录") public void export(@RequestBody MwMicroEquipmentRecordQuery query, HttpServletResponse response) { try { mwMicroEquipmentRecordService.export(query, response); } catch (IOException e) { throw new RuntimeException(e); } } /** * 新增使用记录 * * @param dto * @return */ @PostMapping("/add") @ApiOperation("新增使用记录") public R<?> add(@Valid @RequestBody MwMicroEquipmentRecordDTO dto) { mwMicroEquipmentRecordService.add(dto); return R.ok(); } /** * 处置分析表头 * * @return */ @GetMapping("/statics/title") @ApiOperation("处置分析表头") public R<List<MwMicroEquipmentStaticsTitleVO>> staticsTitle() { return R.ok(mwMicroEquipmentRecordService.staticsTitle()); } /** * 处置分析数据 * * @param query * @return */ @PostMapping("/statics/data") @ApiOperation("处置分析数据") public R<List<List<String>>> staticsData(@Valid @RequestBody MwMicroEquipmentStaticsQuery query) { return R.ok(mwMicroEquipmentRecordService.getStaticsData(query)); } /** * 处置分析导出 * * @param query * @param response */ @PostMapping("/statics/export") @ApiOperation("处置分析导出") public void export(@Valid @RequestBody MwMicroEquipmentStaticsQuery query, HttpServletResponse response) { try { mwMicroEquipmentRecordService.staticsExport(query, response); } catch (IOException e) { throw new RuntimeException(e); } } } medicalWaste-common/src/main/java/com/sinata/common/utils/DateUtils.java
@@ -1,5 +1,7 @@ package com.sinata.common.utils; import org.apache.commons.lang3.time.DateFormatUtils; import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -8,8 +10,10 @@ import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils; import java.util.List; /** * 时间工具类 @@ -188,4 +192,62 @@ ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault()); return Date.from(zdt.toInstant()); } /** * 获取两个时间节点之间的月份列表 * * @param minDate * @param maxDate * @param type 1 = 日 2 = 月 3 = 年 * @return */ public static List<String> getDayBetween(Date minDate, Date maxDate, Integer type) { List<String> result = new ArrayList<String>(); if (type == 3) {//年 SimpleDateFormat sdf = new SimpleDateFormat("yyyy");//格式化为年 Calendar min = Calendar.getInstance(); Calendar max = Calendar.getInstance(); min.setTime(minDate); max.setTime(maxDate); Calendar curr = min; max.add(Calendar.YEAR, 1); while (curr.before(max)) { result.add(sdf.format(curr.getTime())); curr.add(Calendar.YEAR, 1); } } else if (type == 2) {//月 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式化为年月 Calendar min = Calendar.getInstance(); Calendar max = Calendar.getInstance(); min.setTime(minDate); max.setTime(maxDate); Calendar curr = min; max.add(Calendar.MONTH, 1); while (curr.before(max)) { result.add(sdf.format(curr.getTime())); curr.add(Calendar.MONTH, 1); } } else {//日 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//格式化为年月日 Calendar min = Calendar.getInstance(); Calendar max = Calendar.getInstance(); min.setTime(minDate); max.setTime(maxDate); Calendar curr = min; max.add(Calendar.DATE, 1); while (curr.before(max)) { result.add(sdf.format(curr.getTime())); curr.add(Calendar.DATE, 1); } } return result; } } medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecord.java
@@ -11,6 +11,7 @@ import lombok.Setter; import java.math.BigDecimal; import java.util.Date; /** * <p> @@ -56,5 +57,9 @@ @TableField("REMARK") private String remark; @ApiModelProperty("使用时间") @TableField("USE_TIME") private Date useTime; } medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwMicroEquipmentRecordDTO.java
New file @@ -0,0 +1,30 @@ package com.sinata.system.domain.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; /** * @author mitao * @date 2024/12/16 */ @Data @ApiModel("小型微波设备使用记录数据传输对象") public class MwMicroEquipmentRecordDTO { @ApiModelProperty("转运箱id") @NotEmpty(message = "转运箱id不能为空") private List<Long> ids; @ApiModelProperty("设备id") @NotNull(message = "设备id不能为空") private Long equipmentId; @ApiModelProperty("备注") private String remark; } medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentQuery.java
@@ -23,6 +23,9 @@ @ApiModelProperty("设备名称") private String equipmentName; @ApiModelProperty("设备编号") private String equipmentNumber; @ApiModelProperty("设备状态 1:正常 2:丢失 3:损坏") private Integer status; } medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentRecordQuery.java
@@ -1,8 +1,12 @@ package com.sinata.system.domain.query; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; import java.util.List; /** * @author mitao @@ -12,5 +16,15 @@ @EqualsAndHashCode(callSuper = true) @ApiModel("设备使用记录查询数据传输对象") public class MwMicroEquipmentRecordQuery extends MwMicroEquipmentQuery { private static final long serialVersionUID = 9039697918354490906L; @ApiModelProperty("使用时间-开始") private Date useTimeStart; @ApiModelProperty("使用时间-结束") private Date useTimeEnd; @ApiModelProperty("设备使用记录id列表") private List<Long> ids; } medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentStaticsQuery.java
New file @@ -0,0 +1,37 @@ package com.sinata.system.domain.query; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; import java.util.Date; /** * @author mitao * @date 2024/12/16 */ @Data @ApiModel("处置分析查询数据传输对象") public class MwMicroEquipmentStaticsQuery { @ApiModelProperty("医院id") @NotNull(message = "医院id不能为空") private Long departmentId; @ApiModelProperty("设备id") @NotNull(message = "设备id不能为空") private Long equipmentId; @ApiModelProperty("统计方式(1=日期统计,2=月度统计,3=年度统计)") @NotNull(message = "统计方式不能为空") private Integer dateType; @ApiModelProperty("开始时间") @NotNull(message = "开始时间不能为空") private Date startTime; @ApiModelProperty("结束时间") @NotNull(message = "结束时间不能为空") private Date endTime; } medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentRecordVO.java
@@ -1,7 +1,11 @@ package com.sinata.system.domain.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * @author mitao @@ -10,4 +14,31 @@ @Data @ApiModel("设备使用记录视图对象") public class MwMicroEquipmentRecordVO { @ApiModelProperty("设备使用记录id") private Long id; @ApiModelProperty("医院名称") private String hospitalName; @ApiModelProperty("设备名称") private String equipmentName; @ApiModelProperty("使用时间") private Date useTime; @ApiModelProperty("处理箱数") private Integer boxNum; @ApiModelProperty("处理袋数") private Integer bagNum; @ApiModelProperty("处理重量") private BigDecimal totalWeight; @ApiModelProperty("操作人员") private String nickName; @ApiModelProperty("备注") private String remark; } medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsTitleVO.java
New file @@ -0,0 +1,18 @@ package com.sinata.system.domain.vo; import io.swagger.annotations.ApiModel; import lombok.Data; import java.util.List; /** * @author mitao * @date 2024/12/16 */ @Data @ApiModel("处置分析视图对象") public class MwMicroEquipmentStaticsTitleVO { private String title; private String dataIndex = "name"; private List<MwMicroEquipmentStaticsTitleVO> children; } medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsVO.java
New file @@ -0,0 +1,21 @@ package com.sinata.system.domain.vo; import io.swagger.annotations.ApiModel; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * @author mitao * @date 2024/12/16 */ @Data @ApiModel("处置分析视图对象") public class MwMicroEquipmentStaticsVO { private Integer bagNum; private BigDecimal totalWeight; private BigDecimal weight; private Date useTime; private Long wasteType; } medicalWaste-system/src/main/java/com/sinata/system/enums/MicroEquipmentStatusEnum.java
New file @@ -0,0 +1,24 @@ package com.sinata.system.enums; import lombok.Getter; import lombok.AllArgsConstructor; @Getter @AllArgsConstructor public enum MicroEquipmentStatusEnum { NORMAL(1, "正常"), LOST(2, "丢失"), DAMAGE(3, "损坏"); private final Integer code; private final String desc; public static MicroEquipmentStatusEnum getEnumByCode(Integer code) { for (MicroEquipmentStatusEnum e : MicroEquipmentStatusEnum.values()) { if (e.code.equals(code)) { return e; } } return null; } } medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentMapper.java
@@ -28,7 +28,7 @@ * @param treeCode * @return */ Page<MwMicroEquipmentVO> pageList(Page<MwMicroEquipmentVO> page, @Param("equipmentName") String equipmentName, @Param("status") Integer status, @Param("treeCode") String treeCode); Page<MwMicroEquipmentVO> pageList(Page<MwMicroEquipmentVO> page, @Param("equipmentName") String equipmentName, @Param("status") Integer status, @Param("equipmentNumber") String equipmentNumber, @Param("treeCode") String treeCode); /** * 待处理的医废列表 medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentRecordMapper.java
@@ -1,8 +1,16 @@ package com.sinata.system.mapper; import com.sinata.system.domain.MwMicroEquipmentRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sinata.system.domain.MwMicroEquipmentRecord; import com.sinata.system.domain.query.MwMicroEquipmentRecordQuery; import com.sinata.system.domain.query.MwMicroEquipmentStaticsQuery; import com.sinata.system.domain.vo.MwMicroEquipmentRecordVO; import com.sinata.system.domain.vo.MwMicroEquipmentStaticsVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> @@ -14,5 +22,31 @@ */ @Mapper public interface MwMicroEquipmentRecordMapper extends BaseMapper<MwMicroEquipmentRecord> { /** * 设备使用记录分页列表 * * @param page * @param query * @param treeCode * @return */ Page<MwMicroEquipmentRecordVO> pageList(Page<MwMicroEquipmentRecordVO> page, @Param("query") MwMicroEquipmentRecordQuery query, @Param("treeCode") String treeCode); /** * 设备使用记录列表 * * @param query * @param treeCode * @return */ List<MwMicroEquipmentRecordVO> getList(@Param("query") MwMicroEquipmentRecordQuery query, @Param("treeCode") String treeCode); /** * 查询统计数据 * * @param query * @param treeCode * @return */ List<MwMicroEquipmentStaticsVO> getStaticsData(@Param("query") MwMicroEquipmentStaticsQuery query, @Param("treeCode") String treeCode); } medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java
@@ -37,7 +37,7 @@ * @param treeCode * @return */ Page<MedicalInstitutionVO> pageMedicalList(Page<MedicalInstitutionVO> medicalInstitutionVOPage, @Param("departmentId") Long departmentId, @Param("departmentName") String departmentName, @Param("contactPerson") String contactPerson, @Param("contactPhone") String contactPhone, @Param("treeCode") String treeCode); Page<MedicalInstitutionVO> pageMedicalList(Page<MedicalInstitutionVO> medicalInstitutionVOPage, @Param("departmentName") String departmentName, @Param("contactPerson") String contactPerson, @Param("contactPhone") String contactPhone, @Param("treeCode") String treeCode); /** * 查询医疗机构详情 medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentRecordService.java
@@ -1,10 +1,17 @@ package com.sinata.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.sinata.common.entity.PageDTO; import com.sinata.system.domain.MwMicroEquipmentRecord; import com.baomidou.mybatisplus.extension.service.IService; import com.sinata.system.domain.dto.MwMicroEquipmentRecordDTO; import com.sinata.system.domain.query.MwMicroEquipmentRecordQuery; import com.sinata.system.domain.query.MwMicroEquipmentStaticsQuery; import com.sinata.system.domain.vo.MwMicroEquipmentRecordVO; import com.sinata.system.domain.vo.MwMicroEquipmentStaticsTitleVO; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** * <p> @@ -15,6 +22,51 @@ * @since 2024-12-02 */ public interface MwMicroEquipmentRecordService extends IService<MwMicroEquipmentRecord> { /** * 设备使用记录分页列表 * * @param query * @return */ PageDTO<MwMicroEquipmentRecordVO> pageList(MwMicroEquipmentRecordQuery query); /** * 导出设备使用记录 * * @param query * @param response */ void export(MwMicroEquipmentRecordQuery query, HttpServletResponse response) throws IOException; /** * 新增使用记录 * * @param dto * @return */ void add(MwMicroEquipmentRecordDTO dto); /** * 处置分析表头 * * @param query * @return */ List<MwMicroEquipmentStaticsTitleVO> staticsTitle(); /** * 处置分析数据 * * @param query * @return */ List<List<String>> getStaticsData(MwMicroEquipmentStaticsQuery query); /** * 处置分析导出 * * @param query * @param response */ void staticsExport(MwMicroEquipmentStaticsQuery query, HttpServletResponse response) throws IOException; } medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentService.java
@@ -9,6 +9,8 @@ import com.sinata.system.domain.vo.MwMedicalWasteBoxVO; import com.sinata.system.domain.vo.MwMicroEquipmentVO; import java.util.List; /** * <p> * 小型微波设备表 服务类 @@ -49,4 +51,11 @@ * @return */ PageDTO<MwMedicalWasteBoxVO> storedMedicalWastePage(StorageRecordQuery query); /** * 微型设备列表 * * @return */ List<MwMicroEquipmentVO> getList(); } medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java
@@ -214,4 +214,12 @@ * @param id */ void deleteRegulatoryUnit(Long id); /** * 根据部门id获取树编码,如果为空则获取当前登录用户所在区域树编码 * * @param departmentId * @return */ String getTreeCodeByDepartmentId(Long departmentId); } medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java
@@ -4,8 +4,8 @@ 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.StringUtils; import com.sinata.system.domain.MwCollectRecord; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.dto.MwCollectRecordDTO; import com.sinata.system.domain.query.MwCollectRecordQuery; import com.sinata.system.domain.vo.MedicalWasteProcessVO; @@ -43,15 +43,9 @@ */ @Override public PageDTO<MwCollectRecordVO> pageList(MwCollectRecordQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } else { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } Page<MwCollectRecordVO> page = baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query, treeCode); return PageDTO.of(page); @@ -95,15 +89,9 @@ @Override public void export(MwCollectRecordQuery query, HttpServletResponse response) throws IOException { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return; } treeCode = myDepartment.getTreeCode(); } else { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } List<MwCollectRecordVO> vo = baseMapper.getExportList(query, treeCode); // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java
@@ -1,18 +1,46 @@ package com.sinata.system.service.impl; import com.sinata.common.entity.PageDTO; import com.sinata.system.domain.MwMicroEquipmentRecord; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.query.MwMicroEquipmentRecordQuery; import com.sinata.system.domain.vo.MwMicroEquipmentRecordVO; import com.sinata.system.mapper.MwMicroEquipmentRecordMapper; import com.sinata.system.service.MwMicroEquipmentRecordService; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import com.sinata.common.core.domain.entity.SysDictData; import com.sinata.common.entity.PageDTO; import com.sinata.common.utils.CollUtils; import com.sinata.common.utils.DateUtils; import com.sinata.common.utils.SecurityUtils; import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.MwCollectRecord; import com.sinata.system.domain.MwMicroEquipmentRecord; import com.sinata.system.domain.MwMicroEquipmentRecordItem; import com.sinata.system.domain.dto.MwMicroEquipmentRecordDTO; import com.sinata.system.domain.query.MwMicroEquipmentRecordQuery; import com.sinata.system.domain.query.MwMicroEquipmentStaticsQuery; import com.sinata.system.domain.vo.MwCollectRecordVO; import com.sinata.system.domain.vo.MwMicroEquipmentRecordVO; import com.sinata.system.domain.vo.MwMicroEquipmentStaticsTitleVO; import com.sinata.system.domain.vo.MwMicroEquipmentStaticsVO; import com.sinata.system.enums.MedicalWasteStatusEnum; import com.sinata.system.mapper.MwMicroEquipmentRecordMapper; import com.sinata.system.service.ISysDictDataService; import com.sinata.system.service.MwCollectRecordService; import com.sinata.system.service.MwMicroEquipmentRecordItemService; import com.sinata.system.service.MwMicroEquipmentRecordService; import com.sinata.system.service.SysDepartmentService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Objects; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * <p> @@ -26,19 +54,192 @@ @RequiredArgsConstructor public class MwMicroEquipmentRecordServiceImpl extends ServiceImpl<MwMicroEquipmentRecordMapper, MwMicroEquipmentRecord> implements MwMicroEquipmentRecordService { private final SysDepartmentService sysDepartmentService; private final MwCollectRecordService mwCollectRecordService; private final MwMicroEquipmentRecordItemService mwMicroEquipmentRecordItemService; private final ISysDictDataService sysDictDataService; /** * 设备使用记录分页列表 * * @param query * @return */ @Override public PageDTO<MwMicroEquipmentRecordVO> pageList(MwMicroEquipmentRecordQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } else { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); return PageDTO.of(baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query, treeCode)); } return null; /** * 导出设备使用记录 * * @param query * @param response */ @Override public void export(MwMicroEquipmentRecordQuery query, HttpServletResponse response) throws IOException { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return; } List<MwMicroEquipmentRecordVO> list = baseMapper.getList(query, treeCode); // 这里注意 有同学反应使用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"); EasyExcel.write(response.getOutputStream(), MwCollectRecordVO.class).sheet("微波设备使用记录").doWrite(list); } /** * 新增使用记录 * * @param dto * @return */ @Override @Transactional(rollbackFor = Exception.class) public void add(MwMicroEquipmentRecordDTO dto) { List<MwCollectRecord> collectRecordList = mwCollectRecordService.lambdaQuery().in(MwCollectRecord::getBoxId, dto.getIds()) .eq(MwCollectRecord::getStatus, MedicalWasteStatusEnum.TEMPORARILY_STORED.getCode()).list(); if (CollUtils.isNotEmpty(collectRecordList)) { MwMicroEquipmentRecord record = new MwMicroEquipmentRecord(); record.setEquipmentId(dto.getEquipmentId()); record.setOperatorId(SecurityUtils.getUserId()); record.setRemark(dto.getRemark()); record.setUseTime(new Date()); record.setBoxNum(dto.getIds().size()); record.setBagNum(collectRecordList.size()); record.setTotalWeight(collectRecordList.stream().map(MwCollectRecord::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add)); save(record); List<MwMicroEquipmentRecordItem> itemList = new ArrayList<>(); collectRecordList.forEach(collectRecord -> { //封装设备使用记录项 MwMicroEquipmentRecordItem item = new MwMicroEquipmentRecordItem(); item.setEquipmentRecordId(record.getId()); item.setCollectRecordId(collectRecord.getId()); itemList.add(item); //修改状态 collectRecord.setStatus(MedicalWasteStatusEnum.DISPOSED.getCode()); }); //更新状态为已处置 mwCollectRecordService.updateBatchById(collectRecordList); //批量新增设备使用记录项 mwMicroEquipmentRecordItemService.saveBatch(itemList); } } /** * 处置分析表头 * * @return */ @Override public List<MwMicroEquipmentStaticsTitleVO> staticsTitle() { List<SysDictData> medicalWasteTypeList = sysDictDataService.lambdaQuery().eq(SysDictData::getDictType, "medical_waste_type").list(); List<MwMicroEquipmentStaticsTitleVO> titles = new ArrayList<>(); medicalWasteTypeList.forEach(item -> { MwMicroEquipmentStaticsTitleVO vo = new MwMicroEquipmentStaticsTitleVO(); vo.setTitle(item.getDictLabel()); MwMicroEquipmentStaticsTitleVO child1 = new MwMicroEquipmentStaticsTitleVO(); child1.setTitle("总重量(KG)"); MwMicroEquipmentStaticsTitleVO child2 = new MwMicroEquipmentStaticsTitleVO(); child2.setTitle("总数量"); vo.setChildren(Lists.newArrayList(child1, child2)); titles.add(vo); }); MwMicroEquipmentStaticsTitleVO total = new MwMicroEquipmentStaticsTitleVO(); total.setTitle("小计"); MwMicroEquipmentStaticsTitleVO child1 = new MwMicroEquipmentStaticsTitleVO(); child1.setTitle("总重量(KG)"); MwMicroEquipmentStaticsTitleVO child2 = new MwMicroEquipmentStaticsTitleVO(); child2.setTitle("总数量"); total.setChildren(Lists.newArrayList(child1, child2)); titles.add(total); return titles; } /** * 处置分析数据 * * @param query * @return */ @Override public List<List<String>> getStaticsData(MwMicroEquipmentStaticsQuery query) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); List<SysDictData> medicalWasteTypeList = sysDictDataService.lambdaQuery().eq(SysDictData::getDictType, "medical_waste_type").list(); List<MwMicroEquipmentStaticsVO> staticsData = baseMapper.getStaticsData(query, treeCode); SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); switch (query.getDateType()) { case 1: sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD); case 2: sdf = new SimpleDateFormat(DateUtils.YYYY_MM); case 3: sdf = new SimpleDateFormat(DateUtils.YYYY); } List<String> dateList = DateUtils.getDayBetween(query.getStartTime(), query.getEndTime(), query.getDateType()); List<List<String>> result = new ArrayList<>(); if (CollUtils.isNotEmpty(staticsData)) { for (String date : dateList) { List<String> list = new ArrayList<>(); list.add(date); SimpleDateFormat finalSdf = sdf; 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::add).orElse(BigDecimal.ZERO).setScale(2, RoundingMode.HALF_UP); long count = staticsData.stream().filter(e -> e.getWasteType().equals(sysDictData.getDictCode()) && finalSdf.format(e.getUseTime()).equals(date)).count(); list.add(weight.toString()); list.add(String.valueOf(count)); } staticsData.stream().filter(e -> finalSdf.format(e.getUseTime()).equals(date)).findFirst().ifPresent(item -> { list.add(item.getTotalWeight().toString()); list.add(String.valueOf(item.getBagNum())); }); result.add(list); } } return result; } @Override public void staticsExport(MwMicroEquipmentStaticsQuery query, HttpServletResponse response) throws IOException { List<List<String>> head = head(); 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"); // 这里需要设置不关闭流 EasyExcel.write(response.getOutputStream()) .head(head) .autoCloseStream(Boolean.TRUE) .sheet("处置分析报表") .doWrite(getStaticsData(query)); } private List<List<String>> head() { List<SysDictData> medicalWasteTypeList = sysDictDataService.lambdaQuery().eq(SysDictData::getDictType, "medical_waste_type").list(); List<List<String>> headTitles = Lists.newArrayList(); headTitles.add(Lists.newArrayList("日期")); medicalWasteTypeList.forEach(item -> { headTitles.add(Lists.newArrayList(item.getDictLabel(), "总重量(KG)")); headTitles.add(Lists.newArrayList(item.getDictLabel(), "总数量")); }); headTitles.add(Lists.newArrayList("小计", "总重量(KG)")); headTitles.add(Lists.newArrayList("小计", "总数量")); return headTitles; } } medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentServiceImpl.java
@@ -3,7 +3,10 @@ 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.exception.ServiceException; import com.sinata.common.utils.BeanUtils; import com.sinata.common.utils.CollUtils; import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.MwMicroEquipment; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.dto.MwMicroEquipmentDTO; @@ -11,12 +14,15 @@ import com.sinata.system.domain.query.StorageRecordQuery; import com.sinata.system.domain.vo.MwMedicalWasteBoxVO; import com.sinata.system.domain.vo.MwMicroEquipmentVO; import com.sinata.system.enums.DepartmentEnum; import com.sinata.system.enums.MicroEquipmentStatusEnum; import com.sinata.system.mapper.MwMicroEquipmentMapper; import com.sinata.system.service.MwMicroEquipmentService; import com.sinata.system.service.SysDepartmentService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; /** @@ -40,17 +46,11 @@ */ @Override public PageDTO<MwMicroEquipmentVO> pageList(MwMicroEquipmentQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } else { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } Page<MwMicroEquipmentVO> page = baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getEquipmentName(), query.getStatus(), treeCode); Page<MwMicroEquipmentVO> page = baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getEquipmentName(), query.getStatus(), query.getEquipmentNumber(), treeCode); return PageDTO.of(page); } @@ -89,17 +89,30 @@ */ @Override public PageDTO<MwMedicalWasteBoxVO> storedMedicalWastePage(StorageRecordQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } else { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } Page<MwMedicalWasteBoxVO> page = baseMapper.storedMedicalWastePage(new Page<>(query.getPageCurr(), query.getPageSize()), query, treeCode); return PageDTO.of(page); } /** * 微型设备列表 * * @return */ @Override public List<MwMicroEquipmentVO> getList() { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.nonNull(myDepartment)) { if (myDepartment.getOrgType().equals(DepartmentEnum.MEDICAL_INSTITUTION.getCode())) { List<MwMicroEquipment> list = this.lambdaQuery() .eq(MwMicroEquipment::getStatus, MicroEquipmentStatusEnum.NORMAL.getCode()) .eq(MwMicroEquipment::getDepartmentId, myDepartment.getId()).list(); return BeanUtils.copyList(list, MwMicroEquipmentVO.class); } } return CollUtils.emptyList(); } } medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java
@@ -6,8 +6,8 @@ import com.sinata.common.entity.PageDTO; import com.sinata.common.exception.ServiceException; import com.sinata.common.utils.BeanUtils; import com.sinata.common.utils.StringUtils; import com.sinata.system.domain.MwStagingRoom; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.dto.MwStagingRoomDTO; import com.sinata.system.domain.query.CheckoutRecordQuery; import com.sinata.system.domain.query.MwStagingRoomQuery; @@ -48,15 +48,9 @@ */ @Override public PageDTO<MwStagingRoomVO> pageList(MwStagingRoomQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } else if (Objects.nonNull(query.getDepartmentId())) { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } Page<MwStagingRoomVO> page = baseMapper.pagelist(new Page<>(query.getPageCurr(), query.getPageSize()), treeCode); return PageDTO.of(page); @@ -111,15 +105,9 @@ */ @Override public PageDTO<MwStorageRecordVO> storageRecord(StorageRecordQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } Page<MwStorageRecordVO> page = baseMapper.storageRecordPage(new Page<>(query.getPageCurr(), query.getPageSize()), query, treeCode); return PageDTO.of(page); @@ -133,15 +121,9 @@ */ @Override public void storageRecordExport(StorageRecordQuery query, HttpServletResponse response) throws IOException { String treeCode = ""; if (Objects.isNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return; } treeCode = myDepartment.getTreeCode(); } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } List<MwStorageRecordVO> list = baseMapper.storageRecordList(query, treeCode); // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman @@ -161,15 +143,9 @@ */ @Override public PageDTO<MwCheckoutRecordVO> checkoutRecord(CheckoutRecordQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } Page<MwCheckoutRecordVO> page = baseMapper.checkoutRecordPage(new Page<>(query.getPageCurr(), query.getPageSize()), query, treeCode); return PageDTO.of(page); @@ -183,15 +159,9 @@ */ @Override public void checkoutRecordExport(CheckoutRecordQuery query, HttpServletResponse response) throws IOException { String treeCode = ""; if (Objects.isNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return; } treeCode = myDepartment.getTreeCode(); } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); } List<MwCheckoutRecordVO> list = baseMapper.checkoutRecordList(query, treeCode); // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java
@@ -363,15 +363,11 @@ */ @Override public PageDTO<MedicalInstitutionVO> pageMedicalList(DepartmentQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } Page<MedicalInstitutionVO> page = baseMapper.pageMedicalList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); Page<MedicalInstitutionVO> page = baseMapper.pageMedicalList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); return PageDTO.of(page); } @@ -524,13 +520,9 @@ */ @Override public PageDTO<DisposalUnitVO> pageDisposalUnitList(DepartmentQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } Page<DisposalUnitVO> page = baseMapper.pageRegulatoryUnitList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); return PageDTO.of(page); @@ -650,13 +642,9 @@ */ @Override public PageDTO<RegulatoryUnitVO> pageRegulatoryUnitList(DepartmentQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } Page<SysDepartment> page = this.lambdaQuery().eq(Objects.nonNull(query.getDepartmentId()), SysDepartment::getParentId, query.getDepartmentId()) .likeRight(StringUtils.isNotBlank(treeCode), SysDepartment::getTreeCode, treeCode) @@ -772,4 +760,24 @@ } removeById(id); } /** * 根据部门id获取树编码,如果为空则获取当前登录用户所在区域树编码 * * @param departmentId * @return */ @Override public String getTreeCodeByDepartmentId(Long departmentId) { SysDepartment department; if (Objects.isNull(departmentId)) { department = getMyDepartment(); } else { department = getById(departmentId); } if (Objects.nonNull(department)) { return department.getTreeCode(); } return null; } } medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java
@@ -15,7 +15,6 @@ import com.sinata.common.utils.StringUtils; import com.sinata.common.utils.bean.BeanValidators; import com.sinata.common.utils.spring.SpringUtils; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.SysPost; import com.sinata.system.domain.SysUserPost; import com.sinata.system.domain.SysUserRole; @@ -573,13 +572,9 @@ */ @Override public PageDTO<SysUserVO> pageList(SysUserQuery query) { String treeCode = ""; if (Objects.isNull(query.getDepartmentId())) { SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); if (Objects.isNull(myDepartment)) { String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } treeCode = myDepartment.getTreeCode(); } Page<SysUserVO> page = baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getNickName(), query.getRoleId(), treeCode); return PageDTO.of(page); medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentMapper.xml
@@ -43,6 +43,9 @@ <if test="equipmentName != null and equipmentName != ''"> AND mme.EQUIPMENT_NAME LIKE concat('%',#{equipmentName},'%') </if> <if test="equipmentNumber != null and equipmentNumber != ''"> AND mme.EQUIPMENT_NUMBER LIKE concat('%',#{equipmentNumber},'%') </if> <if test="status!= null"> AND mme.STATUS = #{status} </if> medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentRecordMapper.xml
@@ -23,5 +23,91 @@ UPDATE_TIME, ID, EQUIPMENT_ID, REMARK </sql> <select id="pageList" resultType="com.sinata.system.domain.vo.MwMicroEquipmentRecordVO"> SELECT mmer.ID, mmer.EQUIPMENT_ID, mmer.REMARK, mmer.BOX_NUM, mmer.BAG_NUM, mmer.TOTAL_WEIGHT, mmer.USE_TIME, mme.EQUIPMENT_NAME, sd.DEPARTMENT_NAME AS hospitalName, su.NICK_NAME FROM MW_MICRO_EQUIPMENT_RECORD mmer LEFT JOIN MW_MICRO_EQUIPMENT mme ON mmer.EQUIPMENT_ID = mme.ID LEFT JOIN SYS_DEPARTMENT sd ON mme.DEPARTMENT_ID = sd.ID LEFT JOIN SYS_USER su ON mmer.OPERATOR_ID = su.USER_ID <where> <if test="treeCode !=null and treeCode != ''"> AND sd.TREE_CODE like concat(#{treeCode},'%') </if> <if test="query.equipmentName != null and query.equipmentName !=''"> AND mme.EQUIPMENT_NAME like concat('%',#{query.equipmentName},'%') </if> <if test="query.equipmentNumber != null and query.equipmentNumber != ''"> AND mme.EQUIPMENT_NUMBER like concat('%',#{query.equipmentNumber},'%') </if> <if test="query.useTimeStart != null and query.useTimeEnd != null"> AND mmer.USE_TIME BETWEEN #{query.useTimeStart} AND #{query.useTimeEnd} </if> </where> </select> <select id="getList" resultType="com.sinata.system.domain.vo.MwMicroEquipmentRecordVO"> SELECT mmer.ID, mmer.EQUIPMENT_ID, mmer.REMARK, mmer.BOX_NUM, mmer.BAG_NUM, mmer.TOTAL_WEIGHT, mmer.USE_TIME, mme.EQUIPMENT_NAME, sd.DEPARTMENT_NAME AS hospitalName, su.NICK_NAME FROM MW_MICRO_EQUIPMENT_RECORD mmer LEFT JOIN MW_MICRO_EQUIPMENT mme ON mmer.EQUIPMENT_ID = mme.ID LEFT JOIN SYS_DEPARTMENT sd ON mme.DEPARTMENT_ID = sd.ID LEFT JOIN SYS_USER su ON mmer.OPERATOR_ID = su.USER_ID <where> <if test="treeCode !=null and treeCode != ''"> AND sd.TREE_CODE like concat(#{treeCode},'%') </if> <if test="query.equipmentName != null and query.equipmentName !=''"> AND mme.EQUIPMENT_NAME like concat('%',#{query.equipmentName},'%') </if> <if test="query.equipmentNumber != null and query.equipmentNumber != ''"> AND mme.EQUIPMENT_NUMBER like concat('%',#{query.equipmentNumber},'%') </if> <if test="query.useTimeStart != null and query.useTimeEnd != null"> AND mmer.USE_TIME BETWEEN #{query.useTimeStart} AND #{query.useTimeEnd} </if> <if test="query.ids != null and query.ids.size()>0"> AND mmer.ID IN <foreach collection="query.ids" item="id" separator="," open="(" close=")"> #{id} </foreach> </if> </where> </select> <select id="getStaticsData" resultType="com.sinata.system.domain.vo.MwMicroEquipmentStaticsVO"> SELECT mmer.BAG_NUM, mmer.TOTAL_WEIGHT, mmer.USE_TIME, mcr.WEIGHT, mcr.WASTE_TYPE FROM MW_MICRO_EQUIPMENT_RECORD mmer LEFT JOIN MW_MICRO_EQUIPMENT_RECORD_ITEM mmeri ON mmer.ID = mmeri.EQUIPMENT_RECORD_ID LEFT JOIN MW_COLLECT_RECORD mcr on mcr.ID = mmeri.COLLECT_RECORD_ID LEFT JOIN MW_MICRO_EQUIPMENT mme ON mme.ID = mmer.EQUIPMENT_ID LEFT JOIN SYS_DEPARTMENT sd ON sd.ID = mme.DEPARTMENT_ID <where> <if test="treeCode != null and treeCode != ''"> AND sd.TREE_CODE like concat(#{treeCode},'%') </if> <if test="query.equipmentId != null"> AND mmer.EQUIPMENT_ID = #{query.equipmentId} </if> <if test="query.startTime !=null and query.endTime != null"> AND mmer.USE_TIME BETWEEN #{query.startTime} AND #{query.endTime} </if> </where> </select> </mapper> medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml
@@ -66,9 +66,6 @@ ON sdi.INSTITUTION_TYPE = sdd2.DICT_CODE <where> sd.ORG_TYPE = 2 <if test="departmentId != null"> AND sd.PARENT_ID = #{departmentId} </if> <if test="departmentName != null and departmentName != ''"> AND sd.DEPARTMENT_NAME LIKE CONCAT('%', #{departmentName}, '%') </if>