From 270f724b990f5ee26b0238ceb3f89095552611fc Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 16 十二月 2024 19:54:15 +0800 Subject: [PATCH] 小型微波设备管理接口 --- medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java | 52 +- medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwMicroEquipmentRecordDTO.java | 30 + medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml | 3 medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentService.java | 9 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java | 26 - medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java | 11 medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentRecordMapper.xml | 86 +++++ medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentMapper.java | 2 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentRecordController.java | 80 ++++ medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsVO.java | 21 + medicalWaste-system/src/main/java/com/sinata/system/enums/MicroEquipmentStatusEnum.java | 24 + medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentServiceImpl.java | 51 +- medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentStaticsQuery.java | 37 ++ medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java | 62 -- medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsTitleVO.java | 18 + medicalWaste-common/src/main/java/com/sinata/common/utils/DateUtils.java | 64 +++ medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentController.java | 14 medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentRecordQuery.java | 14 medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentQuery.java | 3 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java | 237 ++++++++++++- medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentRecordMapper.java | 36 ++ medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentMapper.xml | 3 medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java | 8 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentRecordVO.java | 31 + medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java | 2 medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentRecordService.java | 56 +++ medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecord.java | 5 27 files changed, 843 insertions(+), 142 deletions(-) diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentController.java index a6f2a8e..361c185 100644 --- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentController.java +++ b/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> @@ -100,5 +102,15 @@ public R<PageDTO<MwMedicalWasteBoxVO>> storedMedicalWastePage(@Valid @RequestBody StorageRecordQuery query) { return R.ok(mwMicroEquipmentService.storedMedicalWastePage(query)); } - + + /** + * 微型设备列表 + * + * @return + */ + @GetMapping("/list") + @ApiOperation("微型设备列表") + public R<List<MwMicroEquipmentVO>> getList() { + return R.ok(mwMicroEquipmentService.getList()); + } } diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentRecordController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentRecordController.java index 2cb7734..c7cbbfa 100644 --- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentRecordController.java +++ b/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); + } + } } diff --git a/medicalWaste-common/src/main/java/com/sinata/common/utils/DateUtils.java b/medicalWaste-common/src/main/java/com/sinata/common/utils/DateUtils.java index 916ca79..84c3047 100644 --- a/medicalWaste-common/src/main/java/com/sinata/common/utils/DateUtils.java +++ b/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; + } + } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecord.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecord.java index 34d6746..181019e 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecord.java +++ b/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; + } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwMicroEquipmentRecordDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwMicroEquipmentRecordDTO.java new file mode 100644 index 0000000..1e0cbe1 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwMicroEquipmentRecordDTO.java @@ -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; +} + diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentQuery.java index 46d06a5..d36fe45 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentQuery.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentRecordQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentRecordQuery.java index 1846fc0..3240a08 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentRecordQuery.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentStaticsQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentStaticsQuery.java new file mode 100644 index 0000000..86d6af4 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentStaticsQuery.java @@ -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; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentRecordVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentRecordVO.java index 197fe1f..480a3d4 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentRecordVO.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsTitleVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsTitleVO.java new file mode 100644 index 0000000..f6eae68 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsTitleVO.java @@ -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; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsVO.java new file mode 100644 index 0000000..8784934 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsVO.java @@ -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; +} diff --git a/medicalWaste-system/src/main/java/com/sinata/system/enums/MicroEquipmentStatusEnum.java b/medicalWaste-system/src/main/java/com/sinata/system/enums/MicroEquipmentStatusEnum.java new file mode 100644 index 0000000..b6587b8 --- /dev/null +++ b/medicalWaste-system/src/main/java/com/sinata/system/enums/MicroEquipmentStatusEnum.java @@ -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; + } +} \ No newline at end of file diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentMapper.java index 70097ea..dfa06ab 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentMapper.java +++ b/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); /** * 待处理的医废列表 diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentRecordMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentRecordMapper.java index ff8b85e..f49059f 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentRecordMapper.java +++ b/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); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java index 56bdac4..047336f 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java +++ b/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); /** * 查询医疗机构详情 diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentRecordService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentRecordService.java index a720343..2a6aa4e 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentRecordService.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentService.java index 10f66d4..c65f2c4 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentService.java +++ b/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(); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java index fdab3b1..296524b 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java +++ b/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); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java index fd187a1..3f5fe6f 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java +++ b/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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); - } else { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } 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)) { - return; - } - treeCode = myDepartment.getTreeCode(); - } else { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return; } List<MwCollectRecordVO> vo = baseMapper.getExportList(query, treeCode); // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java index 652312f..a5f1a3d 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java +++ b/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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); - } else { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } - return null; + return PageDTO.of(baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query, treeCode)); + } + + /** + * 导出设备使用记录 + * + * @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; } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentServiceImpl.java index e0b13db..d9f095d 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentServiceImpl.java +++ b/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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); - } else { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } - 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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); - } else { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } 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(); + } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java index 9676585..38e1d62 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java +++ b/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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); - } else if (Objects.nonNull(query.getDepartmentId())) { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } 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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); - } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } 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)) { - return; - } - treeCode = myDepartment.getTreeCode(); - } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return; } 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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); - } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } 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)) { - return; - } - treeCode = myDepartment.getTreeCode(); - } else if (Objects.nonNull(query.getDepartmentId()) && Objects.isNull(query.getStagingRoomId())) { - treeCode = sysDepartmentService.getById(query.getDepartmentId()).getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return; } List<MwCheckoutRecordVO> list = baseMapper.checkoutRecordList(query, treeCode); // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java index ce7095b..d5eb7ec 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java +++ b/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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); + String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } - 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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); + String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } 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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); + String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } 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; + } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java index a201651..c08b533 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java +++ b/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)) { - return PageDTO.empty(0L, 0L); - } - treeCode = myDepartment.getTreeCode(); + String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } Page<SysUserVO> page = baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getNickName(), query.getRoleId(), treeCode); return PageDTO.of(page); diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentMapper.xml index 18761ce..bca9536 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentMapper.xml +++ b/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> diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentRecordMapper.xml index 5798da5..e9640b6 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentRecordMapper.xml +++ b/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> diff --git a/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml index 4159266..08f61ec 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml +++ b/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> -- Gitblit v1.7.1