liubo лет назад: 3
Родитель
Сommit
ba359e4101

+ 19 - 2
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/vo/HxpAlarmRecordVo.java

@@ -2,10 +2,8 @@ package com.zd.chemical.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zd.model.annotation.Excel;
-import com.zd.model.entity.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.hibernate.validator.constraints.Length;
 
 import java.util.Date;
 
@@ -81,6 +79,9 @@ public class HxpAlarmRecordVo {
     @ApiModelProperty(value = "报警时长")
     private String alarmDuration;
 
+    private String liableUserIds;
+
+    private String adminId;
 
     public Long getId() {
         return id;
@@ -209,4 +210,20 @@ public class HxpAlarmRecordVo {
     public void setAlarmDuration(String alarmDuration) {
         this.alarmDuration = alarmDuration;
     }
+
+    public String getLiableUserIds() {
+        return liableUserIds;
+    }
+
+    public void setLiableUserIds(String liableUserIds) {
+        this.liableUserIds = liableUserIds;
+    }
+
+    public String getAdminId() {
+        return adminId;
+    }
+
+    public void setAdminId(String adminId) {
+        this.adminId = adminId;
+    }
 }

+ 6 - 2
zd-modules/zd-chemical/src/main/java/com/zd/chemical/mapper/HxpAlarmRecordMapper.java

@@ -1,11 +1,13 @@
 package com.zd.chemical.mapper;
 
-import java.util.List;
 import com.zd.chemical.domain.HxpAlarmRecord;
 import com.zd.chemical.domain.vo.AioAlarmRecordVo;
 import com.zd.chemical.domain.vo.HxpAlarmRecordSearch;
 import com.zd.chemical.domain.vo.HxpAlarmRecordVo;
-import com.zd.chemical.domain.vo.HxpCabinetVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 化学品报警记录Mapper接口
@@ -23,6 +25,8 @@ public interface HxpAlarmRecordMapper
      */
     public HxpAlarmRecord selectHxpAlarmRecordById(Long id);
 
+    public List<Map<String, String>> selectHxpAlarmRecordUserInfo();
+
     /**
      * 查询化学品报警记录列表
      *

+ 64 - 12
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpAlarmRecordServiceImpl.java

@@ -1,28 +1,28 @@
 package com.zd.chemical.service.impl;
 
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
+import com.zd.chemical.domain.HxpAlarmRecord;
 import com.zd.chemical.domain.vo.AioAlarmRecordVo;
 import com.zd.chemical.domain.vo.HxpAlarmRecordSearch;
 import com.zd.chemical.domain.vo.HxpAlarmRecordVo;
+import com.zd.chemical.mapper.HxpAlarmRecordMapper;
 import com.zd.chemical.mapper.HxpUserecordMapper;
+import com.zd.chemical.service.IHxpAlarmRecordService;
 import com.zd.chemical.util.SmsSydUtil;
-import com.zd.model.domain.per.PerPrefix;
+import com.zd.common.core.annotation.DataScope;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.SecurityUtils;
-import com.zd.common.core.annotation.DataScope;
+import com.zd.model.domain.per.PerPrefix;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.zd.chemical.mapper.HxpAlarmRecordMapper;
-import com.zd.chemical.domain.HxpAlarmRecord;
-import com.zd.chemical.service.IHxpAlarmRecordService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 化学品报警记录Service业务层处理
@@ -60,7 +60,41 @@ public class HxpAlarmRecordServiceImpl implements IHxpAlarmRecordService {
     @Override
     @DataScope(deptAlias = "st", permi = PerPrefix.HXP_ALARMRECORD)
     public List<HxpAlarmRecordVo> selectHxpAlarmRecordList(HxpAlarmRecordSearch hxpAlarmRecordSearch) {
-        return hxpAlarmRecordMapper.selectHxpAlarmRecordList(hxpAlarmRecordSearch);
+
+        List<HxpAlarmRecordVo> list = hxpAlarmRecordMapper.selectHxpAlarmRecordList(hxpAlarmRecordSearch);
+
+        List<Map<String,String>> userInfos = hxpAlarmRecordMapper.selectHxpAlarmRecordUserInfo();
+
+        list.forEach(a -> {
+            if(a.getAlarmModeStatus() != null){
+                if(a.getAlarmModeStatus() == 1 && a.getLiableUserIds() != null){
+                    a.setLiableUserName(
+                            userInfos.stream().filter(u -> a.getLiableUserIds().contains(String.valueOf(u.get("user_id")))).collect(Collectors.toList())
+                            .stream().map(n -> n.get("nick_name")).collect(Collectors.joining(","))
+                    );
+                }else if(a.getSafeUserId() != null){
+                    a.setLiableUserName(
+                            userInfos.stream().filter(u -> a.getSafeUserId().contains(String.valueOf(u.get("user_id")))).collect(Collectors.toList())
+                            .stream().map(n -> n.get("nick_name")).collect(Collectors.joining(","))
+                    );
+                }
+            }
+
+            if(a.getAdminId() != null){
+                a.setAdminNames(
+                        userInfos.stream().filter(u -> a.getAdminId().contains(String.valueOf(u.get("user_id")))).collect(Collectors.toList())
+                        .stream().map(n -> n.get("nick_name") + ", " + n.get("phonenumber")).collect(Collectors.joining(","))
+                );
+            }
+            if(a.getSafeUserId() != null){
+                a.setSafeUserNames(
+                        userInfos.stream().filter(u -> a.getSafeUserId().contains(String.valueOf(u.get("user_id")))).collect(Collectors.toList())
+                        .stream().map(n -> n.get("nick_name") + ", " + n.get("phonenumber")).collect(Collectors.joining(","))
+                );
+            }
+        });
+
+        return list;
     }
 
     /**
@@ -128,7 +162,25 @@ public class HxpAlarmRecordServiceImpl implements IHxpAlarmRecordService {
 
     @Override
     public List<AioAlarmRecordVo> queryAlarmRecordList(AioAlarmRecordVo aioAlarmRecordVo) {
-        return hxpAlarmRecordMapper.queryAlarmRecordList(aioAlarmRecordVo);
+        List<AioAlarmRecordVo> list = hxpAlarmRecordMapper.queryAlarmRecordList(aioAlarmRecordVo);
+
+        List<Map<String,String>> userInfos = hxpAlarmRecordMapper.selectHxpAlarmRecordUserInfo();
+        list.forEach(a -> {
+            if(a.getAlarmMode() != null){
+                if(a.getAlarmMode() == 1 && a.getLiableUserIds() != null){
+                    a.setLiableUserNames(
+                            userInfos.stream().filter(u -> a.getLiableUserIds().contains(String.valueOf(u.get("user_id")))).collect(Collectors.toList())
+                            .stream().map(n -> n.get("nick_name")).collect(Collectors.joining(","))
+                    );
+                }else if(a.getSafeUserId() != null){
+                    a.setLiableUserNames(
+                            userInfos.stream().filter(u -> a.getSafeUserId().contains(String.valueOf(u.get("user_id")))).collect(Collectors.toList())
+                            .stream().map(n -> n.get("nick_name")).collect(Collectors.joining(","))
+                    );
+                }
+            }
+        });
+        return list;
     }
 
     @Override

+ 33 - 20
zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpAlarmRecordMapper.xml

@@ -23,14 +23,6 @@
     </resultMap>
 
     <resultMap id="AioAlarmRecordResult" type="com.zd.chemical.domain.vo.AioAlarmRecordVo">
-<!--        <association property="safeUserNames" column="safe_user_id" javaType="string"-->
-<!--                     select="com.zd.chemical.mapper.HxpChemicalJoinCabinetMapper.queryUserNameBySafeUserId"/>-->
-<!--        <association property="safeUserPhones" column="safe_user_id" javaType="string"-->
-<!--                     select="com.zd.chemical.mapper.HxpChemicalJoinCabinetMapper.queryUserPhoneBySafeUserId"/>-->
-<!--        <association property="liableUserNames" column="liable_user_ids" javaType="string"-->
-<!--                     select="com.zd.chemical.mapper.HxpChemicalJoinCabinetMapper.queryUserNameBySafeUserId"/>-->
-<!--        <association property="liableUserPhones" column="liable_user_ids" javaType="string"-->
-<!--                     select="com.zd.chemical.mapper.HxpChemicalJoinCabinetMapper.queryUserPhoneBySafeUserId"/>-->
     </resultMap>
 
     <sql id="selectHxpAlarmRecordVo">
@@ -71,21 +63,18 @@
             resultType="com.zd.chemical.domain.vo.HxpAlarmRecordVo">
         SELECT ard.`id`,ard.alarm_time alarmTime,ard.`alarm_content` alarmContent,CASE WHEN ard.alarm_mode=1 THEN '系统通知'
         ELSE CASE WHEN ard.alarm_mode=2 THEN '声光报警' ELSE '短信通知' END END alarmMode,
-        (SELECT dt.dept_name FROM sys_dept dt,lab_subject st WHERE dt.dept_id = st.dept_id AND st.id = ard.`sub_id`)
-        alarmDeptName,
-        (SELECT st.name FROM lab_subject st WHERE st.id = ard.`sub_id`) subName,
-        CASE WHEN ard.alarm_mode = 1 THEN (SELECT GROUP_CONCAT(nick_name) FROM sys_user WHERE FIND_IN_SET(user_id, ard.liable_user_ids))
-        ELSE (select GROUP_CONCAT(nick_name) FROM sys_user where FIND_IN_SET(user_id, st.safe_user_id))
-        END liableUserName,
+        dt.dept_name as alarmDeptName,
+        st.`name` as subName,
+        ard.liable_user_ids,
         ard.handling_time handlingTime,
         (SELECT ur.nick_name FROM sys_user ur WHERE ur.user_id = ard.handling_user_id) handlingUserName,
         CASE WHEN ard.handling_status = 1 THEN '待处理' ELSE '已处理' END operate,
-        (SELECT GROUP_CONCAT(nick_name,' ',phonenumber SEPARATOR '、') FROM sys_user WHERE FIND_IN_SET(user_id, st.admin_id)) adminNames,
-        (SELECT GROUP_CONCAT(nick_name,' ',phonenumber SEPARATOR '、') FROM sys_user WHERE FIND_IN_SET(user_id, st.safe_user_id)) safeUserNames,
+        st.admin_id,
         ard.handling_status handlingStatus,st.safe_user_id safeUserId,ard.alarm_mode alarmModeStatus,
         concat(TIMESTAMPDIFF(MINUTE, ard.alarm_time, ard.handling_time),'分',TIMESTAMPDIFF(SECOND, ard.alarm_time, ard.handling_time)%60,'秒') alarmDuration
         FROM hxp_alarm_record ard
         inner join lab_subject st on ard.sub_id = st.id
+        left join sys_dept dt on dt.dept_id = st.dept_id
         <where>
             ard.has_valid = 1
             <if test="searchValue != null  and searchValue != ''">
@@ -117,14 +106,38 @@
         where id = #{id}
     </select>
 
+    <select id="selectHxpAlarmRecordUserInfo" resultType="map">
+        <!--select
+               <choose>
+                   <when test="type == 2">
+                       GROUP_CONCAT(nick_name,' ',phonenumber SEPARATOR '、')
+                   </when>
+                   <otherwise>
+                       GROUP_CONCAT(nick_name)
+                   </otherwise>
+               </choose>
+        from
+        (-->
+            select user_id, nick_name, phonenumber from sys_user u where
+            FIND_IN_SET(u.user_id, (select group_concat(DISTINCT CONCAT_WS(",", st.safe_user_id,ard.liable_user_ids,st.admin_id)) as safe_user_id
+                                    FROM hxp_alarm_record ard
+                                             left JOIN lab_subject st ON ard.sub_id = st.id
+                                             left join sys_dept dt on dt.dept_id = st.dept_id
+                                    where ard.alarm_mode = 1))
+        <!--) as u
+        <where>
+            <if test="userIds != null">
+                FIND_IN_SET(user_id, #{userIds})
+            </if>
+        </where>-->
+    </select>
+
+
     <select id="queryAlarmRecordList" resultMap="AioAlarmRecordResult">
         select ar.*,
                s.dept_id,
                s.safe_user_id,
-               d.dept_name,
-               CASE WHEN ar.alarm_mode = 1 THEN (SELECT GROUP_CONCAT(nick_name) FROM sys_user WHERE FIND_IN_SET(user_id, ar.liable_user_ids))
-                    ELSE (select GROUP_CONCAT(nick_name) FROM sys_user where FIND_IN_SET(user_id, s.safe_user_id))
-                   END liableUserNames
+               d.dept_name
         from hxp_alarm_record ar
                  left join lab_subject s on ar.sub_id = s.id
                  left join sys_dept d on s.dept_id = d.dept_id