mitao
2025-01-26 861d0de9a80cfc5fe8edf0eb0d62e1eb7e85b427
1.bug修改
2 文件已重命名
19个文件已修改
279 ■■■■ 已修改文件
medicalWaste-admin/src/main/java/com/sinata/RuoYiApplication.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/task/WarningTask.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningRecord.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalWasteCollectVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordStaticsVO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordVO.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TodayMedicalWastePieVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TotalCollectWeightByTypeVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/biz/ScreenService.java 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/biz/TaskService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwApplicationServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningRecordServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordItemMapper.xml 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-system/src/main/resources/mapper/system/MwTransitCarCollectPointMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
medicalWaste-admin/src/main/java/com/sinata/RuoYiApplication.java
@@ -3,12 +3,14 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
 * 启动程序
 * 
 * @author ruoyi
 */
@EnableScheduling
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class RuoYiApplication
{
medicalWaste-admin/src/main/java/com/sinata/task/WarningTask.java
@@ -2,15 +2,6 @@
import com.sinata.system.domain.MwWarningRecord;
import com.sinata.system.enums.WarningStatusEnum;
import com.sinata.system.service.MwCollectRecordService;
import com.sinata.system.service.MwContractService;
import com.sinata.system.service.MwProtectionEquipmentRecordService;
import com.sinata.system.service.MwProtectionEquipmentService;
import com.sinata.system.service.MwStaffService;
import com.sinata.system.service.MwStagingRoomService;
import com.sinata.system.service.MwWarningConfigItemService;
import com.sinata.system.service.MwWarningConfigService;
import com.sinata.system.service.MwWarningRecordService;
import com.sinata.system.service.biz.TaskService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -28,15 +19,6 @@
@Slf4j
@RequiredArgsConstructor
public class WarningTask {
    private final MwWarningConfigService mwWarningConfigService;
    private final MwWarningConfigItemService mwWarningConfigItemService;
    private final MwCollectRecordService mwCollectRecordService;
    private final MwWarningRecordService mwWarningRecordService;
    private final MwStagingRoomService mwStagingRoomService;
    private final MwContractService mwContractService;
    private final MwStaffService mwStaffService;
    private final MwProtectionEquipmentService mwProtectionEquipmentService;
    private final MwProtectionEquipmentRecordService mwProtectionEquipmentRecordService;
    private final TaskService taskService;
    /**
medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java
@@ -80,5 +80,8 @@
    @TableField(exist = false)
    private String code;
    @ApiModelProperty("层级关系")
    @TableField("RELATION")
    private String relation;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningRecord.java
@@ -3,16 +3,16 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sinata.common.entity.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
@@ -24,13 +24,12 @@
 * @since 2024-12-02
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("MW_WARNING_RECORD")
@ApiModel(value = "MwWarningRecord对象", description = "预警记录表")
public class MwWarningRecord extends BaseModel {
public class MwWarningRecord implements Serializable {
    private static final long serialVersionUID = 1L;
@@ -79,4 +78,40 @@
    @ApiModelProperty("正常范围")
    @TableField("NORMAL_RANGE")
    private String normalRange;
    /**
     * 创建者
     */
    @ApiModelProperty(value = "记录创建人,前端忽略")
    @TableField(value = "create_by")
    private Long createBy;
    /**
     * 创建时间
     */
    @ApiModelProperty(value = "记录创建时间,前端忽略")
    @TableField(value = "create_time")
    private Date createTime;
    /**
     * 更新者
     */
    @ApiModelProperty(value = "记录修改人,前端忽略")
    @TableField(value = "update_by")
    private Long updateBy;
    /**
     * 更新时间
     */
    @ApiModelProperty(value = "记录修改时间,前端忽略")
    @TableField(value = "update_time")
    private Date updateTime;
    /**
     * 是否删除 0未删除 1已删除
     */
    @TableField("del_flag")
    @ApiModelProperty(value = "是否删除 0未删除 1已删除")
    @TableLogic
    private Integer delFlag;
}
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalWasteCollectVO.java
@@ -17,6 +17,9 @@
    @ApiModelProperty("医废类型")
    private String wasteTypeStr;
    @ApiModelProperty("大屏统计颜色")
    private String cssClass;
    @ApiModelProperty("袋数")
    private Integer bagNum;
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordStaticsVO.java
@@ -12,7 +12,9 @@
@ApiModel("预警记录统计视图对象")
public class MwWarningRecordStaticsVO {
    @ApiModelProperty("预警类型 1:出库超时预警;2:暂存间使用率预警;3:合同到期预警;4:健康记录预警;5:疫苗记录预警;6:防护用品使用预警;7:医疗机构产废日预警;8:医疗机构产废月预警;9:医疗机构存储量预警;10:车辆转运异常预警;11:处置单位存储量预警")
    @ApiModelProperty("预警类型 1:出库超时预警 2:暂存间使用率预警 3:合同到期预警 4:健康记录预警 \" +\n" +
            "            \"5:疫苗记录预警 6:防护用品使用预警 7:防护用品库存预警  8:医疗机构产废日预警 \" +\n" +
            "            \"9:医疗机构产废月预警 10:医疗机构存储量预警 11:车辆转运异常预警 12:处置单位存储量预警")
    private Integer type;
    @ApiModelProperty("预警类型名称")
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordVO.java
@@ -36,7 +36,9 @@
    @ExcelProperty(value = "预警对象", index = 2)
    private String warningTargetName;
    @ApiModelProperty("预警类型 1:出库超时预警;2:暂存间使用率预警;3:合同到期预警;4:健康记录预警;5:疫苗记录预警;6:防护用品使用预警;7:医疗机构产废日预警;8:医疗机构产废月预警;9:医疗机构存储量预警;10:车辆转运异常预警;11:处置单位存储量预警")
    @ApiModelProperty("预警类型 1:出库超时预警 2:暂存间使用率预警 3:合同到期预警 4:健康记录预警 \" +\n" +
            "            \"5:疫苗记录预警 6:防护用品使用预警 7:防护用品库存预警  8:医疗机构产废日预警 \" +\n" +
            "            \"9:医疗机构产废月预警 10:医疗机构存储量预警 11:车辆转运异常预警 12:处置单位存储量预警")
    @ExcelProperty(value = "预警类型", index = 3, converter = EConverter.class)
    @FastExcel(type = WarningTypeEnum.class)
    private Integer type;
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java
@@ -22,6 +22,12 @@
    @ApiModelProperty("字典类型")
    private String dictType;
    @ApiModelProperty("字典类型名称")
    private String dictTypeName;
    @ApiModelProperty("大屏统计颜色")
    private String cssClass;
    
    @ApiModelProperty("备注")
    private String remark;
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TodayMedicalWastePieVO.java
@@ -17,6 +17,9 @@
    @ApiModelProperty("医废类型名称")
    private String medicalWasteStr;
    @ApiModelProperty("大屏统计颜色")
    private String cssClass;
    @ApiModelProperty("数量")
    private Integer count;
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TotalCollectWeightByTypeVO.java
@@ -20,7 +20,7 @@
    private List<String> dateList;
    @ApiModelProperty("医废类型列表")
    private List<String> wasteTypeList = new ArrayList<>();
    private List<SysDictDataVO> wasteTypeList = new ArrayList<>();
    @ApiModelProperty("各日期各类型医废收集总量列表")
    private List<List<BigDecimal>> totalCollectWeightList = new ArrayList<>();
medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.sinata.common.entity.PageDTO;
import com.sinata.system.domain.MwApplication;
import com.sinata.system.domain.SysDepartment;
import com.sinata.system.domain.dto.DisposalUnitDTO;
import com.sinata.system.domain.dto.MedicalInstitutionDTO;
@@ -232,4 +233,11 @@
     * @return
     */
    List<MedicalInstitutionVO> getHospitalListByRouteId(Long id);
    /**
     * 创建机构
     *
     * @param mwApplication
     */
    void createDepartment(MwApplication mwApplication);
}
medicalWaste-system/src/main/java/com/sinata/system/service/biz/ScreenService.java
@@ -1,12 +1,15 @@
package com.sinata.system.service.biz;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONArray;
import com.sinata.common.exception.ServiceException;
import com.sinata.common.utils.BeanUtils;
import com.sinata.common.utils.CollUtils;
import com.sinata.common.utils.DateUtils;
import com.sinata.system.domain.MedicalWasteStaticsVO;
import com.sinata.system.domain.MwCollectRecord;
import com.sinata.system.domain.MwTransitCarCollectPoint;
import com.sinata.system.domain.MwWarningRecord;
import com.sinata.system.domain.SysDepartment;
import com.sinata.system.domain.vo.CarDistributionVO;
@@ -74,7 +77,7 @@
     */
    public DepartmentTagInfoVO getTagInfo(Long id) {
        SysDepartment department = sysDepartmentService.getById(id);
        DepartmentTagInfoVO vo = null;
        DepartmentTagInfoVO vo = new DepartmentTagInfoVO();
        if (Objects.isNull(department)) {
            throw new ServiceException("单位不存在");
        }
@@ -127,18 +130,20 @@
            return todayMedicalWastePieVOList;
        }
        int total = collectRecordList.size();
        // 分组并统计每个 wasteTypeStr 对应的记录数
        Map<String, Long> resultMap = collectRecordList.stream()
                .collect(Collectors.groupingBy(MwCollectRecord::getWasteTypeStr, Collectors.counting()));
        todayMedicalWastePieVOList = resultMap.entrySet().stream().map(entry -> {
        //查询医废类型列表
        List<SysDictDataVO> sysDictDataVOS = sysDictDataService.medicalWasteTypeList();
        // 分组并统计每个 wasteType 对应的记录数
        Map<Long, Long> resultMap = collectRecordList.stream()
                .collect(Collectors.groupingBy(MwCollectRecord::getWasteType, Collectors.counting()));
        todayMedicalWastePieVOList = sysDictDataVOS.stream().map(sysDictDataVO -> {
            Long count = resultMap.getOrDefault(sysDictDataVO.getDictCode(), 0L);
            TodayMedicalWastePieVO todayMedicalWastePieVO = new TodayMedicalWastePieVO();
            todayMedicalWastePieVO.setMedicalWasteStr(entry.getKey());
            todayMedicalWastePieVO.setCount(entry.getValue().intValue());
            todayMedicalWastePieVO.setProportion(BigDecimal.valueOf(entry.getValue()).divide(BigDecimal.valueOf(total), RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
            todayMedicalWastePieVO.setMedicalWasteStr(sysDictDataVO.getDictLabel());
            todayMedicalWastePieVO.setCssClass(sysDictDataVO.getCssClass());
            todayMedicalWastePieVO.setCount(count.intValue());
            todayMedicalWastePieVO.setProportion(BigDecimal.valueOf(count).divide(BigDecimal.valueOf(total), 4, RoundingMode.FLOOR).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.FLOOR));
            return todayMedicalWastePieVO;
        }).collect(Collectors.toList());
        return todayMedicalWastePieVOList;
    }
@@ -174,7 +179,7 @@
        }
        //查询医废类型
        List<SysDictDataVO> medicalWasteTypeList = sysDictDataService.medicalWasteTypeList();
        vo.setWasteTypeList(medicalWasteTypeList);
        //查询南宁市下面的医疗机构
        List<SysDepartment> list = sysDepartmentService.lambdaQuery()
                .likeRight(SysDepartment::getTreeCode, nanNingDepartment.getTreeCode())
@@ -273,16 +278,12 @@
        medicalWasteCollectVO.setWasteTypeStr(sysDictDataVO.getDictLabel());
        // 获取当前类型的医废记录
        List<MwCollectRecord> mwCollectRecords = collectRecordGroupByWasteType.get(sysDictDataVO.getDictCode());
        if (CollUtils.isNotEmpty(mwCollectRecords)) {
            medicalWasteCollectVO.setBagNum(mwCollectRecords.size());
            medicalWasteCollectVO.setWeight(mwCollectRecords.stream()
                    .map(MwCollectRecord::getWeight)
                    .reduce(BigDecimal.ZERO, BigDecimal::add));
        } else {
            medicalWasteCollectVO.setBagNum(0);
            medicalWasteCollectVO.setWeight(BigDecimal.ZERO);
        }
        List<MwCollectRecord> mwCollectRecords = collectRecordGroupByWasteType.getOrDefault(sysDictDataVO.getDictCode(), CollUtils.emptyList());
        medicalWasteCollectVO.setCssClass(sysDictDataVO.getCssClass());
        medicalWasteCollectVO.setBagNum(mwCollectRecords.size());
        medicalWasteCollectVO.setWeight(mwCollectRecords.stream()
                .map(MwCollectRecord::getWeight)
                .reduce(BigDecimal.ZERO, BigDecimal::add));
        return medicalWasteCollectVO;
    }
@@ -293,7 +294,15 @@
     */
    public List<MwWarningRecordStaticsVO> warningRecordStaticsList() {
        SysDepartment nanNingDepartment = getNanNingDepartment();
        List<MwWarningRecord> warningRecordList = mwWarningRecordService.lambdaQuery().eq(MwWarningRecord::getDepartmentId, nanNingDepartment.getId()).list();
        //查询南宁的所有单位
        List<SysDepartment> list = sysDepartmentService.lambdaQuery()
                .likeRight(SysDepartment::getTreeCode, nanNingDepartment.getTreeCode())
                .in(SysDepartment::getOrgType, DepartmentEnum.MEDICAL_INSTITUTION.getCode(), DepartmentEnum.DISPOSAL_UNIT.getCode()).list();
        if (CollUtils.isEmpty(list)) {
            return CollUtils.emptyList();
        }
        List<Long> departmentIds = list.stream().map(SysDepartment::getId).collect(Collectors.toList());
        List<MwWarningRecord> warningRecordList = mwWarningRecordService.lambdaQuery().in(MwWarningRecord::getDepartmentId, departmentIds).list();
        if (CollUtils.isEmpty(warningRecordList)) {
            return CollUtils.emptyList();
        }
@@ -323,7 +332,13 @@
     */
    public List<MwWarningRecordVO> queryWarningRecordDetailByType(Integer type) {
        SysDepartment nanNingDepartment = getNanNingDepartment();
        List<MwWarningRecord> warningRecordList = mwWarningRecordService.lambdaQuery().eq(MwWarningRecord::getDepartmentId, nanNingDepartment.getId()).eq(MwWarningRecord::getType, type).list();
        //查询南宁市所有单位信息
        List<SysDepartment> list = sysDepartmentService.lambdaQuery().likeRight(SysDepartment::getTreeCode, nanNingDepartment.getTreeCode()).list();
        if (CollUtils.isEmpty(list)) {
            return CollUtils.emptyList();
        }
        List<Long> departmentIds = list.stream().map(SysDepartment::getId).collect(Collectors.toList());
        List<MwWarningRecord> warningRecordList = mwWarningRecordService.lambdaQuery().in(MwWarningRecord::getDepartmentId, departmentIds).eq(MwWarningRecord::getType, type).list();
        return BeanUtils.copyToList(warningRecordList, MwWarningRecordVO.class);
    }
@@ -335,7 +350,24 @@
    public List<CarDistributionVO> queryCarDistribution() {
        SysDepartment nanNingDepartment = getNanNingDepartment();
        //查询车辆分布列表
        return mwTransitCarCollectPointService.queryCarListByTreeCode(nanNingDepartment.getTreeCode());
        List<CarDistributionVO> carDistributionVOS = mwTransitCarCollectPointService.queryCarListByTreeCode(nanNingDepartment.getTreeCode());
        if (CollUtils.isNotEmpty(carDistributionVOS)) {
            for (CarDistributionVO carDistributionVO : carDistributionVOS) {
                MwTransitCarCollectPoint point = mwTransitCarCollectPointService.lambdaQuery().eq(MwTransitCarCollectPoint::getCarId, carDistributionVO.getId()).eq(MwTransitCarCollectPoint::getTransitDate, DateUtil.format(DateUtil.date(), DatePattern.NORM_DATE_PATTERN)).last("LIMIT 1").one();
                if (Objects.nonNull(point)) {
                    String pointList = point.getPointList();
                    List<Long> pointIdList = JSONArray.parseArray(pointList, Long.class);
                    if (CollUtils.isNotEmpty(pointIdList)) {
                        //查询最后一个点位
                        SysDepartment department = sysDepartmentService.getById(pointIdList.get(pointIdList.size() - 1));
                        carDistributionVO.setLatitude(department.getLatitude());
                        carDistributionVO.setLongitude(department.getLongitude());
                    }
                }
            }
        }
        return carDistributionVOS;
    }
    /**
medicalWaste-system/src/main/java/com/sinata/system/service/biz/TaskService.java
@@ -97,7 +97,10 @@
            log.info("【出库超时预警】:没有暂存的医废记录,跳过定时任务执行");
            return;
        }
        //查询所有出库超时预警
        List<MwWarningRecord> warningRecordList = mwWarningRecordService.lambdaQuery()
                .eq(MwWarningRecord::getType, WarningTypeEnum.CHECKOUT_TIMEOUT_WARNING.getCode())
                .list();
        // 遍历配置项并处理预警
        for (MwWarningConfigItem configItem : configItems) {
            // 过滤出需要预警的记录
@@ -111,20 +114,24 @@
            }
            // 创建预警记录并保存
            List<MwWarningRecord> warningRecordList = recordList.stream().map(item -> {
                Long id = item.getId();
                String medicalWasteNumber = item.getMedicalWasteNumber();
                String hospitalName = item.getHospitalName();
                String msg = String.format("%s医废超过%d小时未出库", item.getWasteTypeStr(), configItem.getValue());
                String currentValue = String.valueOf(DateUtils.timeDistanceHour(new Date(), item.getCollectTime()));
                Long departmentId = item.getDepartmentId();
                String configValue = configItem.getValue().toString();
                return getMwWarningRecord(WarningTypeEnum.CHECKOUT_TIMEOUT_WARNING.getCode(), id, medicalWasteNumber, hospitalName, msg, departmentId, currentValue, configValue);
            }).collect(Collectors.toList());
            List<MwWarningRecord> warningRecordSaveList = recordList.stream().map(item -> {
                long count = warningRecordList.stream().filter(record -> record.getWarningTargetId().equals(item.getId())).count();
                if (count == 0L) {
                    Long id = item.getId();
                    String medicalWasteNumber = item.getMedicalWasteNumber();
                    String hospitalName = item.getHospitalName();
                    String msg = String.format("%s医废超过%d小时未出库", item.getWasteTypeStr(), configItem.getValue());
                    String currentValue = String.valueOf(DateUtils.timeDistanceHour(new Date(), item.getCollectTime()));
                    Long departmentId = item.getDepartmentId();
                    String configValue = configItem.getValue().toString();
                    return getMwWarningRecord(WarningTypeEnum.CHECKOUT_TIMEOUT_WARNING.getCode(), id, medicalWasteNumber, hospitalName, msg, departmentId, currentValue, configValue);
                }
                return null;
            }).filter(Objects::nonNull).collect(Collectors.toList());
            // 批量保存预警记录
            if (!warningRecordList.isEmpty()) {
                mwWarningRecordService.saveBatch(warningRecordList);
            if (!warningRecordSaveList.isEmpty()) {
                mwWarningRecordService.saveBatch(warningRecordSaveList);
            }
        }
    }
@@ -154,6 +161,7 @@
        warningRecord.setNormalRange(normalRange);
        warningRecord.setStatus(WarningStatusEnum.UNRESOLVED.getCode());
        warningRecord.setWarnTime(new Date());
        warningRecord.setCreateTime(new Date());
        return warningRecord;
    }
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwApplicationServiceImpl.java
@@ -74,6 +74,10 @@
        mwApplication.setAuditStatus(dto.getAuditStatus() == 1 ? 2 : 3);
        mwApplication.setAuditOpinion(dto.getAuditOpinion());
        updateById(mwApplication);
        //创建机构
        if (dto.getAuditStatus() == 1) {
            sysDepartmentService.createDepartment(mwApplication);
        }
        //发送短信通知
        aliSmsService.sendAuditResult(mwApplication.getPhone(), dto.getAuditStatus() == 1 ? "已通过" : "未通过");
    }
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningRecordServiceImpl.java
@@ -4,6 +4,7 @@
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.SecurityUtils;
import com.sinata.common.utils.StringUtils;
import com.sinata.system.domain.MwWarningRecord;
import com.sinata.system.domain.query.MwWarningRecordQuery;
@@ -18,6 +19,7 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
/**
@@ -54,7 +56,10 @@
     */
    @Override
    public void relieve(Long id) {
        lambdaUpdate().set(MwWarningRecord::getStatus, WarningStatusEnum.RESOLVED.getCode()).eq(MwWarningRecord::getId, id).update();
        lambdaUpdate().set(MwWarningRecord::getStatus, WarningStatusEnum.RESOLVED.getCode())
                .set(MwWarningRecord::getUpdateTime, new Date())
                .set(MwWarningRecord::getUpdateBy, SecurityUtils.getUserId())
                .eq(MwWarningRecord::getId, id).update();
    }
    @Override
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java
@@ -1,7 +1,6 @@
package com.sinata.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sinata.common.constant.CacheConstants;
@@ -12,6 +11,7 @@
import com.sinata.common.utils.CollUtils;
import com.sinata.common.utils.SecurityUtils;
import com.sinata.common.utils.StringUtils;
import com.sinata.system.domain.MwApplication;
import com.sinata.system.domain.SysDepartment;
import com.sinata.system.domain.SysDepartmentInfo;
import com.sinata.system.domain.SysUserDepartment;
@@ -881,4 +881,28 @@
    public List<MedicalInstitutionVO> getHospitalListByRouteId(Long id) {
        return baseMapper.getHospitalListByRouteId(id);
    }
    /**
     * 创建机构
     *
     * @param mwApplication
     */
    @Override
    public void createDepartment(MwApplication mwApplication) {
        SysDepartment parent = this.getById(mwApplication.getDepartmentId());
        if (Objects.isNull(parent)) {
            throw new ServiceException("找不到对应父级组织");
        }
        SysDepartment department = new SysDepartment();
        department.setParentId(mwApplication.getDepartmentId());
        department.setDepartmentName(mwApplication.getUnitName());
        department.setContactPerson(mwApplication.getConcat());
        department.setContactPhone(mwApplication.getPhone());
        department.setOrgType(mwApplication.getUnitType().equals(1) ? DepartmentEnum.MEDICAL_INSTITUTION.getCode() : DepartmentEnum.DISPOSAL_UNIT.getCode());
        department.setRegion(mwApplication.getRegion());
        department.setRelation(mwApplication.getRelation());
        department.setTreeCode(generateTreeCode(parent.getId()));
        department.setOrgCode(getOrgCode(parent.getId(), department.getOrgType()));
        save(department);
    }
}
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java
@@ -133,16 +133,18 @@
        Page<SysDictData> result = this.lambdaQuery().like(StringUtils.isNotBlank(query.getKeyword()), SysDictData::getDictLabel, query.getKeyword()).page(new Page<>(query.getPageCurr(), query.getPageSize()));
        List<String> dictTypeList = result.getRecords().stream().map(SysDictData::getDictType).distinct().collect(Collectors.toList());
        if (CollUtils.isNotEmpty(dictTypeList)) {
            PageDTO<SysDictDataVO> sysDictDataVOPageDTO = PageDTO.of(result, SysDictDataVO.class);
            List<SysDictType> sysDictTypes = dictTypeMapper.selectList(new LambdaQueryWrapper<SysDictType>().in(SysDictType::getDictType, dictTypeList));
            result.getRecords().forEach(sysDictData -> {
            sysDictDataVOPageDTO.getList().forEach(vo -> {
                sysDictTypes.forEach(sysDictType -> {
                    if (sysDictType.getDictType().equals(sysDictData.getDictType())) {
                        sysDictData.setDictType(sysDictType.getDictName());
                    if (sysDictType.getDictType().equals(vo.getDictType())) {
                        vo.setDictTypeName(sysDictType.getDictName());
                    }
                });
            });
            return sysDictDataVOPageDTO;
        }
        return PageDTO.of(result, SysDictDataVO.class);
        return PageDTO.empty(result);
    }
    @Override
medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml
@@ -477,10 +477,9 @@
        COALESCE(SUM(IF(TRUNC(MCR.COLLECT_TIME) = TRUNC(SYSDATE), MCR.WEIGHT, 0)), 0) AS
        todayHandleWeight,
        COALESCE(COUNT(IF(TRUNC(MCR.COLLECT_TIME) = TRUNC(SYSDATE), MCR.ID, NULL)), 0) AS
        todayHandleBagNum FROM MW_COLLECT_RECORD MCR LEFT JOIN SYS_DEPARTMENT SD ON MCR.DEPARTMENT_ID
        todayHandleBagNum FROM MW_COLLECT_RECORD MCR LEFT JOIN SYS_DEPARTMENT SD ON SD.ID = MCR.DEPARTMENT_ID
        <where>
            MCR.DEL_FLAG = 0,
            MCR.DEPARTMENT_ID = #{id}
            MCR.DEL_FLAG = 0 AND MCR.DEPARTMENT_ID = #{id}
        </where>
        GROUP BY MCR.DEPARTMENT_ID
    </select>
medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordItemMapper.xml
medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml
@@ -174,13 +174,11 @@
        todayHandleWeight,
        COALESCE(COUNT(IF(TRUNC(MCR.DISPOSAL_TIME) = TRUNC(SYSDATE) AND MCR.STATUS = 4, MCR.ID, NULL)), 0) AS
        todayHandleBagNum
        FROM MW_DISPOSAL_RECORD MDR
        FROM SYS_DEPARTMENT SD LEFT JOIN MW_DISPOSAL_RECORD MDR ON MDR.DEPARTMENT_ID = SD.ID
        LEFT JOIN MW_DISPOSAL_RECORD_ITEM MDRI ON MDR.ID = MDRI.DISPOSAL_RECORD_ID
        LEFT JOIN MW_COLLECT_RECORD MCR ON MCR.ID = MDRI.COLLECT_RECORD_ID
        LEFT JOIN SYS_DEPARTMENT SD ON MDR.DEPARTMENT_ID
        <where>
            MDR.DEL_FLAG = 0
            AND MDR.DEPARTMENT_ID = #{id}
            SD.ID = #{id}
        </where>
        GROUP BY MDR.DEPARTMENT_ID
    </select>
medicalWaste-system/src/main/resources/mapper/system/MwTransitCarCollectPointMapper.xml
File was renamed from medicalWaste-system/src/main/java/com/sinata/system/mapper/xml/MwTransitCarCollectPointMapper.xml
@@ -21,30 +21,31 @@
    </sql>
    <select id="queryCarListByTreeCode" resultType="com.sinata.system.domain.vo.CarDistributionVO"
            parameterType="java.lang.String">
        SELECT MTC.ID,
        SELECT
        MTC.ID,
        MTC.LICENSE_PLATE_NUMBER,
        SD.DEPARTMENT_NAME,
        SUM(MCR.TOTAL_WEIGHT) AS currentLoad
        FROM MW_TRANSIT_CAR_COLLECT_POINT MTCCP
        LEFT JOIN MW_TRANSIT_CAR MTC ON MTC.ID = MTCCP.CAR_ID
        LEFT JOIN SYS_DEPARTMENT SD ON MTC.DEPARTMENT_ID
        LEFT JOIN SYS_DEPARTMENT SD ON MTC.DEPARTMENT_ID = SD.ID
        LEFT JOIN MW_CHECKOUT_RECORD MCR ON MCR.CAR_ID = MTCCP.CAR_ID
        <where>
            SD.ORG_TYPE = 3 AND MTCCP.TRANSIT_DATE = CURDATE() AND SD.TREE_CODE LIKE CONCAT(#{treeCode}, '%') AND
            MCR.DEL_FLAG = 0
        </where>
        ORDER BY MTC.ID
        GROUP BY MTCCP.CAR_ID
    </select>
    <select id="queryCarDistributionDetail" resultType="com.sinata.system.domain.vo.CarDistributionVO"
            parameterType="java.lang.Long">
        SELECT MTC.ID,
        SD.DEPARTMENT_NAME,
        MTC.LICENSE_PLATE_NUMBER,MTC.PERSON_IN_CHARGE,MTC.PHONE_NUMBER,MTC.MAXIMUM_LOAD,
        MTC.LICENSE_PLATE_NUMBER,MTC.PERSON_IN_CHARGE,MTC.PHONE_NUMBER,MTC.MAXIMUM_LOAD,MTC.IMAGE_URL,
        SUM(MCR.TOTAL_WEIGHT) AS currentLoad,
        MTCCP.POINT_LIST
        FROM MW_TRANSIT_CAR_COLLECT_POINT MTCCP
        LEFT JOIN MW_TRANSIT_CAR MTC ON MTC.ID = MTCCP.CAR_ID
        LEFT JOIN SYS_DEPARTMENT SD ON MTC.DEPARTMENT_ID
        LEFT JOIN SYS_DEPARTMENT SD ON MTC.DEPARTMENT_ID = SD.ID
        LEFT JOIN MW_CHECKOUT_RECORD MCR ON MCR.CAR_ID = MTCCP.CAR_ID
        <where>
            SD.ORG_TYPE = 3 AND MTCCP.TRANSIT_DATE = CURDATE() AND