mitao
2024-12-16 270f724b990f5ee26b0238ceb3f89095552611fc
小型微波设备管理接口
22个文件已修改
5个文件已添加
985 ■■■■ 已修改文件
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwMicroEquipmentRecordController.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-common/src/main/java/com/sinata/common/utils/DateUtils.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/MwMicroEquipmentRecord.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwMicroEquipmentRecordDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentQuery.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentRecordQuery.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwMicroEquipmentStaticsQuery.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentRecordVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsTitleVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwMicroEquipmentStaticsVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/enums/MicroEquipmentStatusEnum.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/MwMicroEquipmentRecordMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/mapper/SysDepartmentMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentRecordService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/MwMicroEquipmentService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwCollectRecordServiceImpl.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/MwMicroEquipmentRecordMapper.xml 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/SysDepartmentMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
    }
}
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)) {
                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
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;
    }
}
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();
    }
}
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
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;
    }
}
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);
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>