Commit 35789445 authored by 高建强's avatar 高建强

item:总部直流中心-消防系统运行状态总览提交

parent 680ae113
package com.yeejoin.equipmanage.common.dto;
import lombok.Data;
@Data
public class FireFightingSystemDto {
private Long id;
private String code;
private String name;
private Integer equipTotal = 0;
private Integer alarmEquipTotal = 0;
private String status;
private String image;
}
package com.yeejoin.equipmanage.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.equipmanage.common.utils.*;
import com.yeejoin.equipmanage.service.IEquipmentSpecificAlarmService;
import com.yeejoin.equipmanage.service.IFireFightingSystemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
......@@ -34,11 +34,13 @@ import java.util.Map;
public class DCenterController extends AbstractBaseController {
@Autowired
IEquipmentSpecificAlarmService iEquipmentSpecificAlarmService;
private IEquipmentSpecificAlarmService equipmentSpecificAlarmService;
@Autowired
private IFireFightingSystemService fireFightingSystemService;
/**
* 直流中心告警列表分页,用于直流中心大数据查询分页,不建议再扩展联表查询
*
*/
@RequestMapping(value = "/list", method = RequestMethod.GET)
@TycloudOperation(ApiLevel = UserType.AGENCY)
......@@ -54,9 +56,33 @@ public class DCenterController extends AbstractBaseController {
request.setValue(StringUtil.isNotEmpty(alarmType) ? StringUtils.trimToNull(alarmType) : null);
queryRequests.add(request);
CommonPageInfoParam param = CommonPageParamUtil.fillCommonPageInfoParam(queryRequests, commonPageable);
Page<Map<String, Object>> list = iEquipmentSpecificAlarmService.zlzxListPage(param);
Page<Map<String, Object>> list = equipmentSpecificAlarmService.zlzxListPage(param);
return CommonResponseUtil.success(list);
}
/**
* 消防系统运行状态分页查询
* @param bizOrgCode
* @param commonPageable
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "消防系统运行状态分页查询")
@GetMapping("/fireSysRunStatusPage")
public ResponseModel fireSysRunStatusPage(@RequestParam(value = "bizOrgCode", required = false) String bizOrgCode,
CommonPageable commonPageable) {
if (commonPageable.getPageNumber() == 0) {
commonPageable.setPageNumber(1);
}
if (StringUtils.isBlank(bizOrgCode)) {
ReginParams reginParams = getSelectedOrgInfo();
if (!ValidationUtil.isEmpty(reginParams.getPersonIdentity())) {
bizOrgCode = reginParams.getPersonIdentity().getBizOrgCode();
}
}
Page page = new Page<>(commonPageable.getPageNumber(), commonPageable.getPageSize());
return CommonResponseUtil.success(fireFightingSystemService.fireSysRunStatusPage(page, bizOrgCode));
}
}
package com.yeejoin.equipmanage.mapper;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import com.yeejoin.equipmanage.common.datasync.vo.FireEquipmentVO;
import com.yeejoin.equipmanage.common.dto.FireFightingSystemDto;
import com.yeejoin.equipmanage.common.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -238,4 +236,8 @@ public interface EquipmentSpecificMapper extends BaseMapper<EquipmentSpecific> {
Map<String, Object> getPaomoSysInfo();
Map<String, Object> getWaterSysInfo();
Page<FireFightingSystemDto> fireSysIotEquipCount(Page<Map<String, Object>> page, @Param("bizOrgCode") String bizOrgCode);
List<FireFightingSystemDto> fireSysIotEquipAlarmCount(Date date, String bizOrgCode);
}
......@@ -8,6 +8,7 @@ import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.equipmanage.common.datasync.entity.FireEquipment;
import com.yeejoin.equipmanage.common.datasync.vo.FireEquipmentVO;
import com.yeejoin.equipmanage.common.dto.EquipmentSpecificDto;
import com.yeejoin.equipmanage.common.dto.FireFightingSystemDto;
import com.yeejoin.equipmanage.common.dto.UserDto;
import com.yeejoin.equipmanage.common.entity.EquipmentSpecific;
import com.yeejoin.equipmanage.common.entity.EquipmentSpecificIndex;
......@@ -17,9 +18,9 @@ import com.yeejoin.equipmanage.common.entity.vo.EquipmentSpecificVo;
import com.yeejoin.equipmanage.common.entity.vo.IotIndexInfoVo;
import com.yeejoin.equipmanage.common.entity.vo.SourceNameByEquipSpeIdVO;
import com.yeejoin.equipmanage.common.vo.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
......@@ -244,4 +245,20 @@ public interface IEquipmentSpecificSerivce extends IService<EquipmentSpecific> {
Map<String, Object> getPaomoSysInfo(String startDate, String endDate);
Map<String, Object> getWaterSysInfo(String startDate, String endDate);
/**
* 消防系统物联部件统计
* @param page
* @param bizOrgCode
* @return
*/
Page<FireFightingSystemDto> fireSysIotEquipCount(Page<Map<String, Object>> page, String bizOrgCode);
/**
* 系统状态及告警设备统计
* @param date
* @param bizOrgCode
* @return
*/
List<FireFightingSystemDto> fireSysIotEquipAlarmCount(Date date, String bizOrgCode);
}
......@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yeejoin.amos.boot.biz.common.dto.OrgMenuDto;
import com.yeejoin.amos.feign.morphic.model.ResourceDTO;
import com.yeejoin.equipmanage.common.datasync.entity.FireFightingSystem;
import com.yeejoin.equipmanage.common.dto.FireFightingSystemDto;
import com.yeejoin.equipmanage.common.entity.FireFightingSystemEntity;
import com.yeejoin.equipmanage.common.entity.dto.EquipTypeAmountPageDTO;
import com.yeejoin.equipmanage.common.entity.vo.*;
......@@ -295,4 +296,6 @@ public interface IFireFightingSystemService extends IService<FireFightingSystemE
List<Map<String, Object>> getSystemAlarmInfoList(String startDate, String endDate);
List<Map<String, Object>> getSystemRunningInfoList();
Page<FireFightingSystemDto> fireSysRunStatusPage(Page<Map<String, Object>> page, String bizOrgCode);
}
......@@ -6,15 +6,14 @@ import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONArray;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.MessageModel;
import com.yeejoin.equipmanage.common.dto.FireFightingSystemDto;
import com.yeejoin.equipmanage.common.entity.vo.*;
import com.yeejoin.equipmanage.common.vo.*;
import com.yeejoin.equipmanage.fegin.SystemctlFeign;
import com.yeejoin.equipmanage.mapper.*;
import com.yeejoin.equipmanage.remote.RemoteSecurityService;
import com.yeejoin.equipmanage.service.*;
import org.apache.catalina.util.IOTools;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -1929,4 +1928,14 @@ public class EquipmentSpecificSerivceImpl extends ServiceImpl<EquipmentSpecificM
public Map<String, Object> getWaterSysInfo(String startDate, String endDate) {
return equipmentSpecificMapper.getWaterSysInfo();
}
@Override
public Page<FireFightingSystemDto> fireSysIotEquipCount(Page<Map<String, Object>> page, String bizOrgCode) {
return equipmentSpecificMapper.fireSysIotEquipCount(page, bizOrgCode);
}
@Override
public List<FireFightingSystemDto> fireSysIotEquipAlarmCount(Date date, String bizOrgCode) {
return equipmentSpecificMapper.fireSysIotEquipAlarmCount(date, bizOrgCode);
}
}
......@@ -21,6 +21,7 @@ import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import com.yeejoin.equipmanage.common.datasync.entity.FireFightingSystem;
import com.yeejoin.equipmanage.common.dto.FireFightingSystemDto;
import com.yeejoin.equipmanage.common.dto.OrgUsrDto;
import com.yeejoin.equipmanage.common.entity.*;
import com.yeejoin.equipmanage.common.entity.dto.EquipTypeAmountPageDTO;
......@@ -35,7 +36,6 @@ import com.yeejoin.equipmanage.remote.RemoteSecurityService;
import com.yeejoin.equipmanage.service.*;
import org.apache.commons.beanutils.BeanUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
......@@ -2075,4 +2075,26 @@ public class FireFightingSystemServiceImpl extends ServiceImpl<FireFightingSyste
}
return resultList;
}
@Override
public Page<FireFightingSystemDto> fireSysRunStatusPage(Page<Map<String, Object>> page, String bizOrgCode) {
// 消防系统物联部件统计
Page<FireFightingSystemDto> pages = equipmentSpecificSerivce.fireSysIotEquipCount(page, bizOrgCode);
List<FireFightingSystemDto> records = pages.getRecords();
// 系统状态及今日告警设备统计
if (!CollectionUtils.isEmpty(records)) {
List<Long> idList = records.stream().map(FireFightingSystemDto::getId).collect(Collectors.toList());
List<FireFightingSystemDto> list = equipmentSpecificSerivce.fireSysIotEquipAlarmCount(new Date(), bizOrgCode);
//使用stream流把list1和list2根据属性userId合并一个list集合
List<FireFightingSystemDto> collect = records.stream().map(m -> {
list.stream().filter(m2-> Objects.equals(m.getId(),m2.getId())).forEach(m2-> {
m.setAlarmEquipTotal(m2.getAlarmEquipTotal());
m.setStatus(m2.getStatus());
});
return m;
}).collect(Collectors.toList());
pages.setRecords(collect);
}
return pages;
}
}
......@@ -1970,4 +1970,69 @@
ORDER BY
`c`.`click_date`
</select>
<select id="fireSysIotEquipCount" resultType="com.yeejoin.equipmanage.common.dto.FireFightingSystemDto">
SELECT
fs.id,
fs.`code`,
fs.`name`,
count( 1 ) AS equipTotal,
ec.image
FROM
f_fire_fighting_system fs
LEFT JOIN `wl_equipment_specific` `wes` ON find_in_set( `fs`.`id`, `wes`.`system_id` )
LEFT JOIN wl_equipment_detail wed ON wed.id = wes.equipment_detail_id
LEFT JOIN wl_equipment e ON wed.`equipment_id` = e.`id`
LEFT JOIN wl_equipment_category ec ON ec.id = fs.system_type
WHERE
e.is_iot = 1
<if test="bizOrgCode!=null and bizOrgCode!=''">
and fs.biz_org_code like concat(#{bizOrgCode}, '%')
</if>
GROUP BY
fs.id
ORDER BY
fs.sort
</select>
<select id="fireSysIotEquipAlarmCount" resultType="com.yeejoin.equipmanage.common.dto.FireFightingSystemDto">
SELECT
s.id,
s.`name`,
IFNULL(s.alarmEquipTotal, 0) AS alarmEquipTotal,
<choose>
<when test="date != null">
IFNULL(s.total, IF(s.total > 0,1,0)) AS `status`
</when>
<otherwise>
IFNULL(s.alarmEquipTotal, IF(s.alarmEquipTotal > 0,1,0)) AS `status`
</otherwise>
</choose>
FROM
(SELECT
fs.id,
fs.`name`,
count( 1 ) AS total,
<choose>
<when test="date != null">
SUM(IF(TO_DAYS(esi.create_date) = TO_DAYS(#{date}),1,0)) AS alarmEquipTotal
</when>
<otherwise>
COUNT( 1 ) AS alarmEquipTotal
</otherwise>
</choose>
FROM
f_fire_fighting_system fs
LEFT JOIN `wl_equipment_specific` `wes` ON find_in_set( `fs`.`id`, `wes`.`system_id` )
LEFT JOIN wl_equipment_specific_index esi ON esi.equipment_specific_id = wes.id
<where>
(
( esi.is_alarm = 1 AND esi.`value` = 'true' )
OR ( esi.is_alarm = 0 AND esi.`value` = 'false' )
)
<if test="bizOrgCode!=null and bizOrgCode!=''">
AND fs.biz_org_code like concat(#{bizOrgCode}, '%')
</if>
</where>
GROUP BY
fs.id) s
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment