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