From 861d0de9a80cfc5fe8edf0eb0d62e1eb7e85b427 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期日, 26 一月 2025 18:03:12 +0800 Subject: [PATCH] 1.bug修改 --- medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordItemMapper.xml | 0 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java | 26 +++++ medicalWaste-system/src/main/java/com/sinata/system/service/biz/TaskService.java | 34 ++++-- medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningRecordServiceImpl.java | 7 + medicalWaste-admin/src/main/java/com/sinata/task/WarningTask.java | 18 --- medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java | 3 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwApplicationServiceImpl.java | 4 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TotalCollectWeightByTypeVO.java | 2 medicalWaste-system/src/main/java/com/sinata/system/service/biz/ScreenService.java | 80 +++++++++++---- medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordVO.java | 4 medicalWaste-system/src/main/resources/mapper/system/MwTransitCarCollectPointMapper.xml | 11 +- medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java | 6 + medicalWaste-admin/src/main/java/com/sinata/RuoYiApplication.java | 2 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TodayMedicalWastePieVO.java | 3 medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml | 5 medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml | 6 medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalWasteCollectVO.java | 3 medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java | 10 + medicalWaste-system/src/main/java/com/sinata/system/service/SysDepartmentService.java | 8 + medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordStaticsVO.java | 4 medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningRecord.java | 43 +++++++ 21 files changed, 199 insertions(+), 80 deletions(-) diff --git a/medicalWaste-admin/src/main/java/com/sinata/RuoYiApplication.java b/medicalWaste-admin/src/main/java/com/sinata/RuoYiApplication.java index d5eb113..b9361db 100644 --- a/medicalWaste-admin/src/main/java/com/sinata/RuoYiApplication.java +++ b/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 { diff --git a/medicalWaste-admin/src/main/java/com/sinata/task/WarningTask.java b/medicalWaste-admin/src/main/java/com/sinata/task/WarningTask.java index d4e6497..71364c6 100644 --- a/medicalWaste-admin/src/main/java/com/sinata/task/WarningTask.java +++ b/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; /** diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java index 4d00af4..b85043b 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwApplication.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningRecord.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningRecord.java index d8093c0..d96e886 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwWarningRecord.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalWasteCollectVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalWasteCollectVO.java index a8bf7d4..041d0e3 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MedicalWasteCollectVO.java +++ b/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; diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordStaticsVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordStaticsVO.java index 44c76e2..7ec49f5 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordStaticsVO.java +++ b/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("预警类型名称") diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordVO.java index d169aaa..b7e7500 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwWarningRecordVO.java +++ b/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; diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java index d50205d..5260fea 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/SysDictDataVO.java +++ b/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; diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TodayMedicalWastePieVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TodayMedicalWastePieVO.java index 201cbff..f0ee0cd 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TodayMedicalWastePieVO.java +++ b/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; diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TotalCollectWeightByTypeVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TotalCollectWeightByTypeVO.java index c976e20..8de7c93 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/TotalCollectWeightByTypeVO.java +++ b/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<>(); 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 2b98531..25a1244 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 @@ -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); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/biz/ScreenService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/biz/ScreenService.java index f4878b3..d4c1a32 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/biz/ScreenService.java +++ b/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; } /** diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/biz/TaskService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/biz/TaskService.java index 63bc257..539195e 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/biz/TaskService.java +++ b/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; } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwApplicationServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwApplicationServiceImpl.java index 8ccee14..5fbc8c7 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwApplicationServiceImpl.java +++ b/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 ? "已通过" : "未通过"); } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningRecordServiceImpl.java index 7c9d579..49c828d 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwWarningRecordServiceImpl.java +++ b/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 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 5a457eb..aac9f1f 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 @@ -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); + } } diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java index cda9e1c..adc9969 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDictDataServiceImpl.java +++ b/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 diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml index 45d5a5a..0a3e466 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwCollectRecordMapper.xml +++ b/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> diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/xml/MwDisposalHandleRecordItemMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordItemMapper.xml similarity index 100% rename from medicalWaste-system/src/main/java/com/sinata/system/mapper/xml/MwDisposalHandleRecordItemMapper.xml rename to medicalWaste-system/src/main/resources/mapper/system/MwDisposalHandleRecordItemMapper.xml diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml index a90a70f..f8065f3 100644 --- a/medicalWaste-system/src/main/resources/mapper/system/MwDisposalRecordMapper.xml +++ b/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> diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/xml/MwTransitCarCollectPointMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwTransitCarCollectPointMapper.xml similarity index 90% rename from medicalWaste-system/src/main/java/com/sinata/system/mapper/xml/MwTransitCarCollectPointMapper.xml rename to medicalWaste-system/src/main/resources/mapper/system/MwTransitCarCollectPointMapper.xml index 797b502..5fb2c6b 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/xml/MwTransitCarCollectPointMapper.xml +++ b/medicalWaste-system/src/main/resources/mapper/system/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 -- Gitblit v1.7.1