Commit c8da209c authored by suhuiguang's avatar suhuiguang

Merge branch 'developer' of http://172.16.10.76/moa/amos-boot-biz into developer

parents abd18c67 fd5dd490
package com.yeejoin.amos.boot.module.common.api.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
@FeignClient(name = "${Knowledgebase.fegin.name}",path = "knowledgebase" ,configuration = {MultipartSupportConfig.class})
public interface KnowledgebaseFeignClient {
@RequestMapping(value = "/v1/tagvalue/getAll/tegartValue", method = RequestMethod.GET)
ResponseModel<Object> getAllTegartValue(@RequestParam String value) ;
@RequestMapping(value = "/v1/taginstance/find/{id}", method = RequestMethod.GET)
ResponseModel<Object> findById(@PathVariable("id") Long id);
@RequestMapping(value = "/v1/doccontent/getSimpleDetail/{sequenceNbr}", method = RequestMethod.GET)
ResponseModel<Object> getSimpleDetail(@PathVariable(value = "sequenceNbr") String sequenceNbr);
@RequestMapping(value = "/v1/taginstance/targetSeq/{id}", method = RequestMethod.GET)
ResponseModel<Object> queryListByTargetSeq(@PathVariable("id") Long id);
@RequestMapping(value = "/v1/tagvalue/getOne/", method = RequestMethod.GET)
ResponseModel<Object> queryByInstance(@RequestParam Long id) ;
@RequestMapping(value = "/v1/taginstance/getTarget/byName", method = RequestMethod.GET)
ResponseModel<Object> queryListByTagName(@RequestParam String name);
}
......@@ -3,13 +3,13 @@ package com.yeejoin.amos.boot.module.jcs.api.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
* <pre>
* 联动控制器
* </pre>
......@@ -24,37 +24,51 @@ public class ControllerDto extends BaseDto {
@ExcelIgnore
private static final long serialVersionUID = 1L;
/**
* 控制站
*/
* 控制站
*/
@ApiModelProperty(value = "控制站")
private String station;
/**
* ip
*/
/**
* ip
*/
@ApiModelProperty(value = "ip")
private String ip;
/**
* 端口
*/
/**
* 端口
*/
@ApiModelProperty(value = "端口")
private Integer port;
/**
* 控制器名称
*/
/**
* 控制器名称
*/
@ApiModelProperty(value = "控制器名称")
private String name;
/**
* 控制器类别
*/
/**
* 控制器类别
*/
@ApiModelProperty(value = "控制器类别")
private String type;
/**
* 状态
*/
/**
* 控制器类别枚举
*/
@ApiModelProperty(value = "控制器类别")
private ControllerTypeEnum typeEnum;
/**
* 控制器类别名称
*/
@ApiModelProperty(value = "控制器类别名称")
private String typeDescription;
/**
* 状态
*/
@ApiModelProperty(value = "状态")
private String state;
/**
* 关联的消防队伍ID
*/
@ApiModelProperty(value = "关联的消防队伍ID")
private String fireTeamSeq;
}
package com.yeejoin.amos.boot.module.jcs.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* @author system_generator
* @date 2021-12-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ControllerLogDto")
public class ControllerLogDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "控制站ID")
private Long controllerSeq;
@ApiModelProperty(value = "控制站名称")
private Long controllerName;
@ApiModelProperty(value = "装备ID")
private Long equipSeq;
@ApiModelProperty(value = "装备名称")
private Long equipName;
@ApiModelProperty(value = "变更后状态")
private String state;
@ApiModelProperty(value = "变更后状态描述")
private Long stateDescription;
@ApiModelProperty(value = "变更人ID")
private String executeUserSeq;
@ApiModelProperty(value = "变更人姓名")
private String executeUserName;
@ApiModelProperty(value = "变更时间")
private Date executeDate;
}
......@@ -8,7 +8,6 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
*
* <pre>
* 联动控制器
* </pre>
......@@ -22,39 +21,43 @@ import lombok.experimental.Accessors;
@TableName("jc_controller")
public class Controller extends BaseEntity {
/**
*
*/
private static final long serialVersionUID = 1L;
*
*/
private static final long serialVersionUID = 1L;
/**
* 控制站
*/
@TableField("station")
/**
* 控制站
*/
@TableField("station")
private String station;
/**
* ip
*/
@TableField("c_ip")
/**
* ip
*/
@TableField("c_ip")
private String ip;
/**
* 端口
*/
@TableField("c_port")
/**
* 端口
*/
@TableField("c_port")
private Integer port;
/**
* 控制器名称
*/
@TableField("c_name")
/**
* 控制器名称
*/
@TableField("c_name")
private String name;
/**
* 控制器类别
*/
@TableField("type")
/**
* 控制器类别
*/
@TableField("type")
private String type;
/**
* 状态
*/
@TableField("c_state")
/**
* 状态
*/
@TableField("c_state")
private String state;
/**
* 关联的消防队伍ID
*/
@TableField(value = "fire_team_seq")
private String fireTeamSeq;
}
package com.yeejoin.amos.boot.module.jcs.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* @author system_generator
* @date 2021-12-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("jc_controller_log")
public class ControllerLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 控制站ID
*/
@TableField("controller_seq")
private Long controllerSeq;
/**
* 装备ID
*/
@TableField("equip_seq")
private Long equipSeq;
/**
* 变更后状态
*/
@TableField("state")
private String state;
/**
* 变更人ID
*/
@TableField("execute_user_seq")
private Long executeUserSeq;
/**
* 变更时间
*/
@TableField("execute_date")
private Date executeDate;
}
......@@ -52,6 +52,12 @@ public enum AlertStageEnums {
fireBrigade("fireBrigade", "岗位名称,规则配置"),
airportUnit("airportUnit", "人员职务规则配置"),
flag("flag", "值班单位"),
keySiteExcle("keySiteExcle","重点部位"),
救援预案警情类型("0","救援预案警情类型"),
责任单位("1","责任单位"),
重点部位名称("2","重点部位名称"),
航空器救援子类("3","航空器救援子类"),
aircraftRescueSub("aircraftRescueSub","航空器救援子类"),
JKDD("6", "企(事)业单位监控大队");
......
package com.yeejoin.amos.boot.module.jcs.api.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* <pre>
* 联动控制器大队枚举
* </pre>
*
* @author gwb
* @version $Id: ControllerTypeEnum.java, v 0.1 2021年8月20日 上午10:21:44 gwb Exp $
*/
@AllArgsConstructor
@Getter
public enum ControllerGroupEnum {
ONE("一大队", 1, 1), TWO("二大队", 3, 2), THREE("三大队", 2, 3);
private final String name;
private final int type;
private final int order;
public static ControllerGroupEnum getEnum(int type) {
for (ControllerGroupEnum status : ControllerGroupEnum.values()) {
if (status.getType() == type) {
return status;
}
}
return null;
}
}
......@@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
/**
*
* <pre>
* 联动控制器类型枚举
* </pre>
......@@ -16,12 +15,13 @@ import lombok.Getter;
@AllArgsConstructor
public enum ControllerTypeEnum {
BELL("1", "警铃"),
BROADCAST("2", "广播"),
DOOR("3", "车库门");
BELL("1", "警铃", 1),
BROADCAST("2", "广播", 2),
DOOR("3", "车库门", 3);
private String code;
private String name;
private int sort;
public String getCode() {
......@@ -39,16 +39,13 @@ public enum ControllerTypeEnum {
public void setName(String name) {
this.name = name;
}
public static ControllerTypeEnum getEnum(String code)
{
for (ControllerTypeEnum status : ControllerTypeEnum.values())
{
if (status.getCode().equals(code))
{
return status;
}
}
return null;
}
public static ControllerTypeEnum getEnum(String code) {
for (ControllerTypeEnum status : ControllerTypeEnum.values()) {
if (status.getCode().equals(code)) {
return status;
}
}
return null;
}
}
package com.yeejoin.amos.boot.module.jcs.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerLog;
import java.util.List;
import java.util.Map;
/**
* Mapper 接口
*
* @author system_generator
* @date 2021-12-03
*/
public interface ControllerLogMapper extends BaseMapper<ControllerLog> {
List<Map<String, Object>> selectToday();
}
package com.yeejoin.amos.boot.module.jcs.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
* <pre>
* 联动控制器 Mapper 接口
* </pre>
......@@ -14,4 +17,5 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
*/
public interface ControllerMapper extends BaseMapper<Controller> {
public List<ControllerDto> getCurrentStationController(@Param("sequenceNbr") Long sequenceNbr);
}
package com.yeejoin.amos.boot.module.jcs.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2021-12-03
*/
public interface IControllerEquipService {
}
package com.yeejoin.amos.boot.module.jcs.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2021-12-03
*/
public interface IControllerLogService {
}
package com.yeejoin.amos.boot.module.jcs.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2021-12-03
*/
public interface IControllerService {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerLogMapper">
<select id="selectToday" resultType="java.util.HashMap">
SELECT
a.sequence_nbr as sequenceNbr,
a.state,
DATE_FORMAT(a.execute_date, '%Y-%m-%d %H:%i:%s') as executeDate,
b.station,
b.type
FROM
jc_controller_log a
LEFT JOIN jc_controller b ON a.controller_seq = b.sequence_nbr
WHERE
TO_DAYS( a.execute_date ) = TO_DAYS( NOW( ) )
ORDER BY a.execute_date DESC
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper">
<select id="getCurrentStationController" resultType="com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto">
SELECT
*
FROM
jc_controller
WHERE
station = ( SELECT station FROM jc_controller WHERE sequence_nbr = #{sequenceNbr} )
</select>
</mapper>
......@@ -45,7 +45,7 @@ public interface LatentDangerState {
/**
* 检查组长确认
*/
检查组长确认("检查组长确认", "leaderConfirm", "secondConfirm","onSiteConfirm", "1", ""),
检查组长确认("检查组长确认", "leaderConfirm", "secondConfirm","onSiteConfirm", "1", "auditRecordPage"),
/**
* 隐患二次审核确认
*/
......
......@@ -116,8 +116,12 @@ public class FireStationServiceImpl extends BaseService<FireStationDto, FireStat
if (model.getAddress() != null) {
JSONObject address = WaterResourceServiceImpl.getLongLatFromAddress(model.getAddress());
model.setAddress(address.getString(BizConstant.ADDRESS));
model.setLongitude(Double.valueOf(address.getString(BizConstant.LONGITUDE)));
model.setLatitude(Double.valueOf(address.getString(BizConstant.LATITUDE)));
if(!"0".equals(address.getString(BizConstant.LONGITUDE))) {
model.setLongitude(Double.valueOf(address.getString(BizConstant.LONGITUDE)));
}
if(!"0".equals(address.getString(BizConstant.LATITUDE))) {
model.setLongitude(Double.valueOf(address.getString(BizConstant.LATITUDE)));
}
}
}
FireStation entity = this.prepareEntity(model);
......@@ -139,8 +143,12 @@ public class FireStationServiceImpl extends BaseService<FireStationDto, FireStat
if (model.getAddress() != null) {
JSONObject address = WaterResourceServiceImpl.getLongLatFromAddress(model.getAddress());
model.setAddress(address.getString(BizConstant.ADDRESS));
model.setLongitude(Double.valueOf(address.getString(BizConstant.LONGITUDE)));
model.setLatitude(Double.valueOf(address.getString(BizConstant.LATITUDE)));
if(!"0".equals(address.getString(BizConstant.LONGITUDE))) {
model.setLongitude(Double.valueOf(address.getString(BizConstant.LONGITUDE)));
}
if(!"0".equals(address.getString(BizConstant.LATITUDE))) {
model.setLongitude(Double.valueOf(address.getString(BizConstant.LATITUDE)));
}
}
FireStation entity = this.prepareEntity(model);
......
......@@ -66,9 +66,6 @@ public class RealTimeSpeechTranscriberListener extends SpeechTranscriberListener
@Override
public void onTranscriberStart(SpeechTranscriberResponse response) {
logger.warn("服务端准备好了进行识别");
logger.warn("task_id: " + response.getTaskId()
+ ", name: " + response.getName()
+ ", status: " + response.getStatus());
}
/**
......@@ -77,9 +74,6 @@ public class RealTimeSpeechTranscriberListener extends SpeechTranscriberListener
@Override
public void onSentenceBegin(SpeechTranscriberResponse response) {
logger.warn("服务端检测到了一句话的开始");
logger.warn("task_id: " + response.getTaskId()
+ ", name: " + response.getName()
+ ", status: " + response.getStatus());
}
/**
......
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
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.typroject.tyboot.component.event.RestEventTrigger;
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.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -25,36 +54,9 @@ import com.yeejoin.amos.boot.module.jcs.api.enums.AlertStatusEnum;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.AlertCalledServiceImpl;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.AlertFormValueServiceImpl;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.ESAlertCalledService;
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.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
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.typroject.tyboot.component.event.RestEventTrigger;
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.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
......@@ -515,4 +517,14 @@ public class AlertCalledController extends BaseController {
public ResponseModel<Object> getLocationLike(@RequestParam(required = false) String locationt) {
return ResponseHelper.buildResponse(iAlertCalledService.getLocationLike(locationt));
}
/**
* 警情预案匹配
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/police/situation/match")
@ApiOperation(httpMethod = "GET", value = "警情预案匹配", notes = "警情预案匹配")
public ResponseModel<Object> toCompletePoliceSituationMatch(@RequestParam Long id)throws Exception {
return ResponseHelper.buildResponse(iAlertCalledService.toCompletePoliceSituationMatch(id));
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerLog;
import com.yeejoin.amos.boot.module.jcs.api.enums.ControllerGroupEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerEquipServiceImpl;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerLogServiceImpl;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.*;
/**
* 联动控制器
*
* @author system_generator
* @date 2021-12-03
*/
@RestController
@Api(tags = "Api")
@RequestMapping(value = "/controller")
public class ControllerController extends BaseController {
@Autowired
ControllerServiceImpl controllerServiceImpl;
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "POST", value = "更新联动控制器状态", notes = "更新联动控制器状态")
@PostMapping(value = "/updateControllerState")
public ResponseModel<Object> updateControllerState(@RequestBody Controller[] controllers) {
return ResponseHelper.buildResponse(controllerServiceImpl.changeControllerState(controllers));
}
/**
* 列表全部数据查询
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<Object> selectForList() {
List<Controller> controllerList = controllerServiceImpl.list();
List<Map<String, Object>> controllerStations = new ArrayList<>();
//分类联动控制站点
HashSet<Integer> controllerStation = new HashSet<>();
controllerList.forEach(controller -> controllerStation.add(Integer.valueOf(controller.getStation())));
controllerStation.forEach(station -> {
ArrayList<ControllerDto> controllerDtos = new ArrayList<>();
controllerList.forEach(controller -> {
if (station.equals(Integer.valueOf(controller.getStation()))) {
ControllerDto controllerDto = new ControllerDto();
ControllerTypeEnum anEnum = ControllerTypeEnum.getEnum(controller.getType());
BeanUtils.copyProperties(controller, controllerDto);
controllerDto.setTypeEnum(anEnum);
controllerDto.setTypeDescription(anEnum.getName());
controllerDtos.add(controllerDto);
}
});
//类型排序
controllerDtos.sort(Comparator.comparingInt(o -> o.getTypeEnum().getSort()));
HashMap<String, Object> result = new HashMap<>();
result.put("groupEnum", ControllerGroupEnum.getEnum(station));
result.put("groupName", Objects.requireNonNull(ControllerGroupEnum.getEnum(station)).getName());
result.put("controllers", controllerDtos);
controllerStations.add(result);
});
//大队排序
controllerStations.sort(Comparator.comparingInt(o -> ((ControllerGroupEnum) o.get("groupEnum")).getOrder()));
return ResponseHelper.buildResponse(controllerStations);
}
}
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerEquipDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerEquipServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.List;
/**
* 控制器设备
*
* @author system_generator
* @date 2021-12-03
*/
@RestController
@Api(tags = "Api")
@RequestMapping(value = "/controller-equip")
public class ControllerEquipController extends BaseController {
@Autowired
ControllerEquipServiceImpl controllerEquipServiceImpl;
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<ControllerEquip>> selectForList() {
return ResponseHelper.buildResponse(controllerEquipServiceImpl.list());
}
}
package com.yeejoin.amos.boot.module.jcs.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerLogDto;
import com.yeejoin.amos.boot.module.jcs.api.enums.ControllerGroupEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum;
import com.yeejoin.amos.boot.module.jcs.biz.service.impl.ControllerLogServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
/**
* 联动控制日志记录
*
* @author system_generator
* @date 2021-12-03
*/
@RestController
@Api(tags = "Api")
@RequestMapping(value = "/controller-log")
public class ControllerLogController extends BaseController {
@Autowired
ControllerLogServiceImpl controllerLogServiceImpl;
/**
* 新增
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
public ResponseModel<ControllerLogDto> save(@RequestBody ControllerLogDto model) {
model = controllerLogServiceImpl.createWithModel(model);
return ResponseHelper.buildResponse(model);
}
/**
* 根据sequenceNbr更新
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
public ResponseModel<ControllerLogDto> updateBySequenceNbrControllerLog(@RequestBody ControllerLogDto model, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(controllerLogServiceImpl.updateWithModel(model));
}
/**
* 根据sequenceNbr删除
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@DeleteMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(controllerLogServiceImpl.removeById(sequenceNbr));
}
/**
* 根据sequenceNbr查询
*
* @param sequenceNbr 主键
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
public ResponseModel<ControllerLogDto> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(controllerLogServiceImpl.queryBySeq(sequenceNbr));
}
/**
* 获取今天的记录
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "获取今天的记录", notes = "获取今天的记录")
@GetMapping(value = "/selectToday")
public ResponseModel<List<Map<String, Object>>> selectToday() {
List<Map<String, Object>> controllerLogDtos = controllerLogServiceImpl.selectToday();
controllerLogDtos.forEach(item -> {
item.put("station", ControllerGroupEnum.getEnum(Integer.parseInt(item.get("station").toString())).getName());
item.put("type", ControllerTypeEnum.getEnum(item.get("type").toString()).getName());
});
return ResponseHelper.buildResponse(controllerLogDtos);
}
/**
* 列表分页查询
*
* @param current 当前页
* @param current 每页大小
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page")
@ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
public ResponseModel<Page<ControllerLogDto>> queryForPage(@RequestParam(value = "current") int current, @RequestParam
(value = "size") int size) {
Page<ControllerLogDto> page = new Page<ControllerLogDto>();
page.setCurrent(current);
page.setSize(size);
return ResponseHelper.buildResponse(controllerLogServiceImpl.queryForControllerLogPage(page));
}
/**
* 列表全部数据查询
*
* @return
*/
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/list")
public ResponseModel<List<ControllerLogDto>> selectForList() {
return ResponseHelper.buildResponse(controllerLogServiceImpl.queryForControllerLogList());
}
}
......@@ -177,10 +177,8 @@ public class PowerTransferController extends BaseController {
AgencyUserModel userInfo = getUserInfo();
powerTransferDto.setTaskSenderId(Long.parseLong(userInfo.getUserId()));
powerTransferDto.setTaskSenderName(userInfo.getRealName());
String companyName = getSelectedOrgInfo().getCompany().getCompanyName();
powerTransferDto.setCompanyName(companyName);
boolean save = powerTransferService.createPowerTransfer(powerTransferDto);
return ResponseHelper.buildResponse(save);
}
......
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import static org.hamcrest.CoreMatchers.nullValue;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.yeejoin.amos.boot.module.jcs.api.dto.*;
import com.yeejoin.amos.boot.module.jcs.api.entity.*;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertBusinessTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.service.IVoiceRecordFileService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
......@@ -25,8 +26,10 @@ import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -44,10 +47,27 @@ import com.yeejoin.amos.boot.module.common.api.dto.FormValue;
import com.yeejoin.amos.boot.module.common.api.dto.OrgUsrzhDto;
import com.yeejoin.amos.boot.module.common.api.dto.RequestData;
import com.yeejoin.amos.boot.module.common.api.feign.JcsControlServerClient;
import com.yeejoin.amos.boot.module.common.api.feign.KnowledgebaseFeignClient;
import com.yeejoin.amos.boot.module.common.biz.service.impl.FirefightersServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.service.impl.KeySiteServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.service.impl.OrgUsrServiceImpl;
import com.yeejoin.amos.boot.module.common.biz.service.impl.WaterResourceServiceImpl;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledFormDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledObjsDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledTodyDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledZhDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerEquipDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.KeyValueLabel;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerData;
import com.yeejoin.amos.boot.module.jcs.api.dto.VoiceRecordFileDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.Aircraft;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertLocationLog;
import com.yeejoin.amos.boot.module.jcs.api.entity.Template;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertBusinessTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertStageEnums;
import com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum;
......@@ -66,98 +86,100 @@ import com.yeejoin.amos.component.rule.config.RuleConfig;
*/
@Service
public class AlertCalledServiceImpl extends BaseService<AlertCalledDto, AlertCalled, AlertCalledMapper>
implements IAlertCalledService {
private final Logger logger = LogManager.getLogger(AlertCalledServiceImpl.class);
@Autowired
RedisUtils redisUtils;
@Autowired
AlertCalledMapper alertCalledMapper;
@Autowired
RuleAlertCalledService ruleAlertCalledService;
@Autowired
TemplateMapper templateMapper;
@Autowired
PowerTransferMapper powerTransferMapper;
@Autowired
AlertSubmittedMapper alertSubmittedMapper;
@Autowired
private JcsControlServerClient jcsControlServerClient;
@Autowired
private AlertFormValueServiceImpl iAlertFormValueService;
@Autowired
private ESAlertCalledService eSAlertCalledService;
@Autowired
private ControllerServiceImpl controllerService;
@Autowired
private ControllerEquipServiceImpl controllerEquipService;
@Autowired
FirefightersServiceImpl firefightersService;
@Autowired
KeySiteServiceImpl keySiteService;
@Autowired
AlertSubmittedServiceImpl alertSubmittedService;
@Autowired
private AlertLocationLogServiceImpl alertLocationLogService;
@Autowired
private EmqKeeper emqKeeper;
@Value("${mqtt.topic.command.alert.notice}")
private String topic;
@Value("${redis.cache.failure.time}")
private long time;
@Value("${mqtt.topic.command.power.deployment}")
private String topic1;
@Autowired
private OrgUsrServiceImpl iOrgUsrService;
@Autowired
AircraftServiceImpl aircraftService;
@Autowired
AlertFormValueServiceImpl alertFormValueService;
@Autowired
OrgUsrServiceImpl orgUsrServiceImpl;
@Autowired
VoiceRecordFileServiceImpl voiceRecordFileService;
private static int comparingByGroupVal(Map<String, Object> map, Map<String, Object> map2, String key) {
int result = 0;
if (map.get(key) instanceof DateTime) {
long r1 = ((Date) map.get(key)).getTime();
long r2 = ((Date) map2.get(key)).getTime();
result = Long.compare(r1, r2);
}
return result;
}
/**
* 指挥系统 未结束的警情列表
**/
@Override
public List<AlertCalledZhDto> alertCalledListByAlertStatus(Integer pageNum, Integer pageSize, RequestData par) {
List<AlertCalledZhDto> list = alertCalledMapper.alertCalledListByAlertStatus(pageNum, pageSize, par);
return list;
}
@Override
public int alertCalledListByAlertStatusCount(RequestData par) {
return alertCalledMapper.alertCalledListByAlertStatusCount(par);
}
/**
* 接警记录 列表分页查询
**/ /*
* bug2407 筛选参数解析异常 修改筛选条件方法 XML中添加了selectAllPage 方法 data代表排序条件 lift 升降序 陈召
* 2021-09-03 开始
*/
implements IAlertCalledService {
private final Logger logger = LogManager.getLogger(AlertCalledServiceImpl.class);
@Autowired
RedisUtils redisUtils;
@Autowired
AlertCalledMapper alertCalledMapper;
@Autowired
RuleAlertCalledService ruleAlertCalledService;
@Autowired
TemplateMapper templateMapper;
@Autowired
PowerTransferMapper powerTransferMapper;
@Autowired
AlertSubmittedMapper alertSubmittedMapper;
@Autowired
private JcsControlServerClient jcsControlServerClient;
@Autowired
private AlertFormValueServiceImpl iAlertFormValueService;
@Autowired
private ESAlertCalledService eSAlertCalledService;
@Autowired
private ControllerServiceImpl controllerService;
@Autowired
private ControllerEquipServiceImpl controllerEquipService;
@Autowired
FirefightersServiceImpl firefightersService;
@Autowired
KeySiteServiceImpl keySiteService;
@Autowired
AlertSubmittedServiceImpl alertSubmittedService;
@Autowired
private AlertLocationLogServiceImpl alertLocationLogService;
@Autowired
private EmqKeeper emqKeeper;
@Value("${mqtt.topic.command.alert.notice}")
private String topic;
@Value("${redis.cache.failure.time}")
private long time;
@Value("${mqtt.topic.command.power.deployment}")
private String topic1;
@Autowired
private OrgUsrServiceImpl iOrgUsrService;
@Autowired
AircraftServiceImpl aircraftService;
@Autowired
AlertFormValueServiceImpl alertFormValueService;
@Autowired
OrgUsrServiceImpl orgUsrServiceImpl;
@Autowired
VoiceRecordFileServiceImpl voiceRecordFileService;
@Autowired
KnowledgebaseFeignClient knowledgebaseFeignClient;
private static int comparingByGroupVal(Map<String, Object> map, Map<String, Object> map2, String key) {
int result = 0;
if (map.get(key) instanceof DateTime) {
long r1 = ((Date) map.get(key)).getTime();
long r2 = ((Date) map2.get(key)).getTime();
result = Long.compare(r1, r2);
}
return result;
}
/**
* 指挥系统 未结束的警情列表
**/
@Override
public List<AlertCalledZhDto> alertCalledListByAlertStatus(Integer pageNum, Integer pageSize, RequestData par) {
List<AlertCalledZhDto> list = alertCalledMapper.alertCalledListByAlertStatus(pageNum, pageSize, par);
return list;
}
@Override
public int alertCalledListByAlertStatusCount(RequestData par) {
return alertCalledMapper.alertCalledListByAlertStatusCount(par);
}
/**
* 接警记录 列表分页查询
**/ /*
* bug2407 筛选参数解析异常 修改筛选条件方法 XML中添加了selectAllPage 方法 data代表排序条件 lift 升降序 陈召
* 2021-09-03 开始
*/
// public IPage<AlertCalled> queryForCalledList(Page pageBean, Integer alertStatus,
// String alertTypeCode,
// String alertSourceCode,
......@@ -174,467 +196,468 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto, AlertCal
//
// List<AlertCalled> list = alertCalledMapper.selectAllPage(pageBean.getCurrent(), pageBean.getSize(), alertStatus, alertTypeCode, alertSourceCode, startTime, endTime, data, lift);
// }
public IPage<AlertCalled> queryForCalledList(Page pageBean, Integer alertStatus, String alertTypeCode,
String alertSourceCode, String startTime, String endTime, String sort, String isFatherAlert) {
String[] split = sort != null ? sort.split(",") : null;
/* 2407 【web】日常值班>警情记录>接警记录,表头排序功能失效 chenzhao 09-28 start */
if (split != null) {
if (split[0] != null) {
if (split[0].equals("alertType") || split[0].equals("alertSource") || split[0].equals("alarmType")) {
split[0] = split[0] + "Code";
}
if (split[0].equals("alertStatusStr")) {
split[0] = "alertStatus";
}
}
if (split[1] != null) {
if (split[1].equals("ascend")) {
split[1] = "ASC";
}
if (split[1].equals("descend")) {
split[1] = "DESC";
}
}
}
String data = split != null ? RedisKey.humpToLine(split[0]) : null;
/* 2407 【web】日常值班>警情记录>接警记录,表头排序功能失效 chenzhao 09-28 end */
String lift = split != null ? split[1] : null;
List<AlertCalled> list = alertCalledMapper.selectAllPage(pageBean.getCurrent(), pageBean.getSize(), alertStatus,
alertTypeCode, alertSourceCode, startTime, endTime, data, lift, isFatherAlert);
IPage<AlertCalled> iPage = new Page<>();
iPage.setRecords(list);
iPage.setTotal(
alertCalledMapper.selectAllCount(alertStatus, alertTypeCode, alertSourceCode, startTime, endTime, isFatherAlert));
//iPage.setSize(pageBean.getSize());
return iPage;
/* bug2407 表头筛选失效 补充条件方法 XML中添加了排序条件判断 data代表排序条件 lift 升降序 陈召 2021-09-03 结束 */
}
/**
* 根据灾情id 查询灾情详情
**/
@Override
public Object selectAlertCalledById(Long id) {
if (redisUtils.hasKey(RedisKey.ALERTCALLED_ID + id)) {
Object obj = redisUtils.get(RedisKey.ALERTCALLED_ID + id);
return obj;
} else {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
List<FormValue> formValue = new ArrayList<FormValue>();
if (list != null && list.size() > 0) {
for (AlertFormValue alertFormValue : list) {
FormValue value = new FormValue(alertFormValue.getFieldCode(), alertFormValue.getFieldName(),
"text", alertFormValue.getFieldValue(), alertFormValue.getBlock());
formValue.add(value);
}
}
AlertCalledFormDto alertCalledFormVo = new AlertCalledFormDto(alertCalled, formValue);
redisUtils.set(RedisKey.ALERTCALLED_ID + id, JSON.toJSON(alertCalledFormVo), time);
return alertCalledFormVo;
}
}
/**
* 根据灾情id 查询灾情详情
**/
@Override
public Object selectAlertCalledByIdNoRedis(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
List<FormValue> formValue = new ArrayList<FormValue>();
if (list != null && list.size() > 0) {
for (AlertFormValue alertFormValue : list) {
FormValue value = new FormValue(alertFormValue.getFieldCode(), alertFormValue.getFieldName(),
"text", alertFormValue.getFieldValue(), alertFormValue.getBlock());
formValue.add(value);
}
}
AlertCalledFormDto alertCalledFormVo = new AlertCalledFormDto(alertCalled, formValue);
return alertCalledFormVo;
}
/**
* 根据灾情id 查询灾情详情
**/
@Override
public Object selectAlertCalledByIdNoRedisNew(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
List<FormValue> formValue = new ArrayList<FormValue>();
public IPage<AlertCalled> queryForCalledList(Page pageBean, Integer alertStatus, String alertTypeCode,
String alertSourceCode, String startTime, String endTime, String sort, String isFatherAlert) {
String[] split = sort != null ? sort.split(",") : null;
/* 2407 【web】日常值班>警情记录>接警记录,表头排序功能失效 chenzhao 09-28 start */
if (split != null) {
if (split[0] != null) {
if (split[0].equals("alertType") || split[0].equals("alertSource") || split[0].equals("alarmType")) {
split[0] = split[0] + "Code";
}
if (split[0].equals("alertStatusStr")) {
split[0] = "alertStatus";
}
}
if (split[1] != null) {
if (split[1].equals("ascend")) {
split[1] = "ASC";
}
if (split[1].equals("descend")) {
split[1] = "DESC";
}
}
}
String data = split != null ? RedisKey.humpToLine(split[0]) : null;
/* 2407 【web】日常值班>警情记录>接警记录,表头排序功能失效 chenzhao 09-28 end */
String lift = split != null ? split[1] : null;
List<AlertCalled> list = alertCalledMapper.selectAllPage(pageBean.getCurrent(), pageBean.getSize(), alertStatus,
alertTypeCode, alertSourceCode, startTime, endTime, data, lift, isFatherAlert);
IPage<AlertCalled> iPage = new Page<>();
iPage.setRecords(list);
iPage.setTotal(alertCalledMapper.selectAllCount(alertStatus, alertTypeCode, alertSourceCode, startTime, endTime,
isFatherAlert));
// iPage.setSize(pageBean.getSize());
return iPage;
/* bug2407 表头筛选失效 补充条件方法 XML中添加了排序条件判断 data代表排序条件 lift 升降序 陈召 2021-09-03 结束 */
}
/**
* 根据灾情id 查询灾情详情
**/
@Override
public Object selectAlertCalledById(Long id) {
if (redisUtils.hasKey(RedisKey.ALERTCALLED_ID + id)) {
Object obj = redisUtils.get(RedisKey.ALERTCALLED_ID + id);
return obj;
} else {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
List<FormValue> formValue = new ArrayList<FormValue>();
if (list != null && list.size() > 0) {
for (AlertFormValue alertFormValue : list) {
FormValue value = new FormValue(alertFormValue.getFieldCode(), alertFormValue.getFieldName(),
"text", alertFormValue.getFieldValue(), alertFormValue.getBlock());
formValue.add(value);
}
}
AlertCalledFormDto alertCalledFormVo = new AlertCalledFormDto(alertCalled, formValue);
redisUtils.set(RedisKey.ALERTCALLED_ID + id, JSON.toJSON(alertCalledFormVo), time);
return alertCalledFormVo;
}
}
/**
* 根据灾情id 查询灾情详情
**/
@Override
public Object selectAlertCalledByIdNoRedis(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
List<FormValue> formValue = new ArrayList<FormValue>();
if (list != null && list.size() > 0) {
for (AlertFormValue alertFormValue : list) {
FormValue value = new FormValue(alertFormValue.getFieldCode(), alertFormValue.getFieldName(), "text",
alertFormValue.getFieldValue(), alertFormValue.getBlock());
formValue.add(value);
}
}
AlertCalledFormDto alertCalledFormVo = new AlertCalledFormDto(alertCalled, formValue);
return alertCalledFormVo;
}
/**
* 根据灾情id 查询灾情详情
**/
@Override
public Object selectAlertCalledByIdNoRedisNew(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
List<FormValue> formValue = new ArrayList<FormValue>();
//
AlertCalledObjsDto alertCalledFormVo = new AlertCalledObjsDto();
alertCalledFormVo.setAlertCalled(alertCalled);
alertCalledFormVo.setAlertFormValue(list);
return alertCalledFormVo;
}
/**
* <pre>
* 保存警情信息
* </pre>
*
* @param alertCalledObjsDto
* @return
*/
@Transactional(rollbackFor = RuntimeException.class)
public AlertCalledObjsDto createAlertCalled(AlertCalledObjsDto alertCalledObjsDto) {
try {
// 警情基本信息
AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled();
//主表增加备注字段
if (alertCalled.getAddress() != null) {
JSONObject address = WaterResourceServiceImpl.getLongLatFromAddress(alertCalled.getAddress());
alertCalled.setAddress(address.getString(BizConstant.ADDRESS));
alertCalled.setCoordinateX(Double.valueOf(address.getString(BizConstant.LONGITUDE)));
alertCalled.setCoordinateY(Double.valueOf(address.getString(BizConstant.LATITUDE)));
}
alertCalled.setCallTime(new Date());
if (AlertStageEnums.RG.getValue().equals(alertCalled.getAlertSourceCode())
|| AlertStageEnums.RG.getValue().equals(alertCalled.getAlertSourceCode())) {
alertCalled.setType("0");
} else {
alertCalled.setType("1");
}
// 动态表单
List<AlertFormValue> alertFormValuelist = alertCalledObjsDto.getAlertFormValue();
// 判断是否航空器救援 如果为航空器救援则保存冗余字段 response_level_code bug2542 bykongfm
if (AlertStageEnums.HKJY.getCode().equals(alertCalled.getAlertTypeCode())) {
alertFormValuelist.stream().forEach(alertFormValue -> {
if (alertFormValue.getFieldCode().equals("responseLevel")) {
alertCalled.setResponseLevelCode(alertFormValue.getFieldValueCode());
alertCalled.setResponseLevel(alertFormValue.getFieldValue());
}
});
}
// 判断是否归并警情
if (alertCalled.getFatherAlert() != null) {
// 警情归并,设置当前警情状态为结束。
alertCalled.setAlertStatus(true);
alertCalled.setAlertStage(AlertStageEnums.JQJB.getValue());
alertCalled.setAlarmType(AlertStageEnums.JQGB.getValue());
alertCalled.setAlarmTypeCode(AlertStageEnums.JQGB.getCode());
alertCalled.setUpdateTime(new Date());
alertCalled.setRemark(alertCalledObjsDto.getRemark());
this.save(alertCalled);
// 填充警情主键
alertFormValuelist.stream().forEach(alertFormValue -> {
alertFormValue.setAlertCalledId(alertCalled.getSequenceNbr());
alertFormValue.setAlertTypeCode(alertCalled.getAlertTypeCode());
});
// 保存动态表单数据
iAlertFormValueService.saveBatch(alertFormValuelist);
emqKeeper.getMqttClient().publish(topic1, "1".getBytes(), RuleConfig.DEFAULT_QOS, true);
} else {
// 警情报送
// ****************************************************待确认开发
alertCalled.setAlertStatus(false);
alertCalled.setIsDelete(false);
alertCalled.setAlertStage(AlertStageEnums.LLDP.getValue());
alertCalled.setAlarmType(AlertStageEnums.JQCB.getValue());
alertCalled.setAlarmTypeCode(AlertStageEnums.JQCB.getCode());
alertCalled.setRemark(alertCalledObjsDto.getRemark());
this.save(alertCalled);
// 填充警情主键
alertFormValuelist.stream().forEach(alertFormValue -> {
alertFormValue.setAlertCalledId(alertCalled.getSequenceNbr());
alertFormValue.setAlertTypeCode(alertCalled.getAlertTypeCode());
});
// 保存动态表单数据
iAlertFormValueService.saveBatch(alertFormValuelist);
alertCalledObjsDto.setAlertCalled(alertCalled);
alertCalledObjsDto.setAlertFormValue(alertFormValuelist);
// 警情报送
// 调用规则 警情初报
ruleAlertCalledService.fireAlertCalledRule(alertCalledObjsDto, AlertBusinessTypeEnum.警情初报.getCode(), null, null, null);
// 通知实战指挥页面发送mqtt 默认发送 String 类型 0, 新警情 1 警情状态变化
emqKeeper.getMqttClient().publish(topic, "0".getBytes(), RuleConfig.DEFAULT_QOS, true);
/**
* 同步保存ES
*/
eSAlertCalledService.saveAlertCalledToES(alertCalled);
}
return alertCalledObjsDto;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("报送失败,系统异常!");
}
}
/**
* 根据id 修改警情 type:警情相关 操作类型 0警情续报 1非警情确认 2 警情结案
*/
@Override
@Transactional(rollbackFor = RuntimeException.class)
public boolean updateAlertCalled(Long id, String code) {
// TODO Auto-generated method stub
try {
switch (code) {
case "314":
alertCalledMapper.update(null,
new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id).set("alert_status", 1)
.set("alert_stage", AlertStageEnums.ZBQJ.getValue())
.set("update_time", new Date())
.set("alarm_type", AlertStageEnums.FJQ.getValue())
.set("alarm_type_code", AlertStageEnums.FJQ.getCode()));
break;
case "315":
alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id)
.set("alert_status", 1).set("update_time", new Date()).set("alert_stage", AlertStageEnums.CZJS.getValue()));
break;
default:
alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id)
.set("update_time", new Date()).set("alert_stage", AlertStageEnums.CZGZ.getValue()));
break;
}
AlertCalled alertCalled = this.getById(id);
// 删除缓存
redisUtils.del(RedisKey.ALERTCALLED_ID + id);
/**
* 同步更新存ES
*/
eSAlertCalledService.saveAlertCalledToES(alertCalled);
// 通知实战指挥页面发送mqtt 默认发送 String 类型 0新警情, 1警情状态变化
emqKeeper.getMqttClient().publish(topic, "1".getBytes(), RuleConfig.DEFAULT_QOS, true);
return true;
} catch (Exception e) {
throw new RuntimeException("系统异常!");
}
}
/**
* 根据时间区间查询警情列表信息
*
* @param beginDate 开始时间
* @param endDate 结束时间
*/
public List<Map<String, Object>> listByDateRange(String beginDate, String endDate) {
// 查询指定日期内的警情列表
List<AlertCalled> alertCalledList = this.list(new LambdaQueryWrapper<AlertCalled>()
.apply(!ValidationUtil.isEmpty(beginDate), "call_time >= '" + beginDate + "'")
.le(true, AlertCalled::getCallTime, endDate));
Map<String, String> queryParams = Maps.newHashMap();
queryParams.put("beginDate", beginDate);
queryParams.put("endDate", endDate);
List<Map<String, Object>> allList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(alertCalledList)) {
Map<String, List<AlertCalled>> alertCalledMap = alertCalledList.stream()
.collect(Collectors.groupingBy(AlertCalled::getAlertTypeCode));
Map<Long, AlertCalled> calledMap = alertCalledList.stream()
.collect(Collectors.toMap(AlertCalled::getSequenceNbr, Function.identity()));
alertCalledMap.forEach((alertTypeCode, list) -> {
allList.addAll(iAlertFormValueService.listAll(alertTypeCode, queryParams));
});
allList.forEach(i -> {
// 增加非空判断 cz 2021-10-08
if (calledMap.get(Long.parseLong(i.get("instanceId").toString())) != null) {
AlertCalled alertCalled = calledMap.get(Long.parseLong(i.get("instanceId").toString()));
i.putAll(Bean.BeantoMap(alertCalled));
}
});
}
// 按接警时间正序排序
allList.sort((e, o) -> comparingByGroupVal(e, o, "recDate"));
return allList;
}
public Map<String, Object> getAlertInfoList(String beginDate, String endDate) {
Map<String, Object> result = Maps.newHashMap();
List<Map<String, Object>> list = listByDateRange(beginDate, endDate);
// 获取接警情况模板
List<Template> templateList = templateMapper.selectList(new LambdaQueryWrapper<Template>()
.eq(Template::getFormat, false).like(Template::getTypeCode, DutyInfoEnum.接警情况.getKey() + "-"));
Map<String, Template> templateMap = templateList.stream()
.collect(Collectors.toMap(Template::getTypeCode, Function.identity()));
List<String> contentList = Lists.newArrayList();
// 增加非空判断 cz 2021-10-08
list.forEach(i -> {
if (i.get("alertTypeCode") != null) {
String tempContent = templateMap.get(DutyInfoEnum.接警情况.getKey() + "-" + i.get("alertTypeCode"))
.getContent();
contentList.add(replaceTemplate(tempContent, i));
}
});
Map<String, Integer> statusCountMap = alertCalledMapper.queryAlertStatusCount(beginDate, endDate);
Integer unFinishedCount = this
.count(new LambdaQueryWrapper<AlertCalled>().eq(AlertCalled::getAlertStatus, false));// bug2532
// 未结案警情统计错误
// bykongfm
result.put("alertInfoList", contentList);
result.putAll(statusCountMap);
result.put("unFinishedCount", unFinishedCount);
return result;
}
/**
* 替换模板
*
* @param tempContent 模板
* @param objMap 对象map
* @return
*/
private String replaceTemplate(String tempContent, Map<String, Object> objMap) {
int size = objMap.size();
String[] keys = objMap.keySet().toArray(new String[size]);
Object[] values = objMap.values().toArray(new Object[size]);
List<String> strList = Lists.newArrayList();
for (Object obj : values) {
if (!ValidationUtil.isEmpty(obj)) {
if (obj instanceof Date) {
obj = DateUtils.date2LongStr((Date) obj);
}
strList.add(obj.toString());
} else {
strList.add("");
}
}
return StringUtils.replaceEach(tempContent, keys, strList.toArray(new String[strList.size()]));
}
@Override
public Map<String, Object> selectAlertCalledKeyValueLabelById(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "【" + alertCalled.getAlertType() + "】" + alertCalled.getAddress());
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<KeyValueLabel> listdate = new ArrayList<>();
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
listdate.add(new KeyValueLabel("接警时间", "callTime", alertCalled.getCallTime()));
listdate.add(new KeyValueLabel("警情地点", "address", alertCalled.getAddress()));
listdate.add(new KeyValueLabel("警情类型", "alertType", alertCalled.getAlertType()));
listdate.add(new KeyValueLabel("警情阶段", "alertStage", alertCalled.getAlertStage()));
listdate.add(new KeyValueLabel("警情等级", "responseLevel", "无"));
listdate.add(new KeyValueLabel("被困人数", "trappedNum", alertCalled.getTrappedNum()));
listdate.add(new KeyValueLabel("伤亡人数", "casualtiesNum", alertCalled.getCasualtiesNum()));
listdate.add(new KeyValueLabel("联系人", "contactUser", alertCalled.getContactUser()));
listdate.add(new KeyValueLabel("联系电话", "contactPhone", alertCalled.getContactPhone()));
AlertCalledObjsDto alertCalledFormVo = new AlertCalledObjsDto();
alertCalledFormVo.setAlertCalled(alertCalled);
alertCalledFormVo.setAlertFormValue(list);
return alertCalledFormVo;
}
/**
* <pre>
* 保存警情信息
* </pre>
*
* @param alertCalledObjsDto
* @return
*/
@Transactional(rollbackFor = RuntimeException.class)
public AlertCalledObjsDto createAlertCalled(AlertCalledObjsDto alertCalledObjsDto) {
try {
// 警情基本信息
AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled();
// 主表增加备注字段
if (alertCalled.getAddress() != null) {
JSONObject address = WaterResourceServiceImpl.getLongLatFromAddress(alertCalled.getAddress());
alertCalled.setAddress(address.getString(BizConstant.ADDRESS));
alertCalled.setCoordinateX(Double.valueOf(address.getString(BizConstant.LONGITUDE)));
alertCalled.setCoordinateY(Double.valueOf(address.getString(BizConstant.LATITUDE)));
}
alertCalled.setCallTime(new Date());
if (AlertStageEnums.RG.getValue().equals(alertCalled.getAlertSourceCode())
|| AlertStageEnums.RG.getValue().equals(alertCalled.getAlertSourceCode())) {
alertCalled.setType("0");
} else {
alertCalled.setType("1");
}
// 动态表单
List<AlertFormValue> alertFormValuelist = alertCalledObjsDto.getAlertFormValue();
// 判断是否航空器救援 如果为航空器救援则保存冗余字段 response_level_code bug2542 bykongfm
if (AlertStageEnums.HKJY.getCode().equals(alertCalled.getAlertTypeCode())) {
alertFormValuelist.stream().forEach(alertFormValue -> {
if (alertFormValue.getFieldCode().equals("responseLevel")) {
alertCalled.setResponseLevelCode(alertFormValue.getFieldValueCode());
alertCalled.setResponseLevel(alertFormValue.getFieldValue());
}
});
}
// 判断是否归并警情
if (alertCalled.getFatherAlert() != null) {
// 警情归并,设置当前警情状态为结束。
alertCalled.setAlertStatus(true);
alertCalled.setAlertStage(AlertStageEnums.JQJB.getValue());
alertCalled.setAlarmType(AlertStageEnums.JQGB.getValue());
alertCalled.setAlarmTypeCode(AlertStageEnums.JQGB.getCode());
alertCalled.setUpdateTime(new Date());
alertCalled.setRemark(alertCalledObjsDto.getRemark());
this.save(alertCalled);
// 填充警情主键
alertFormValuelist.stream().forEach(alertFormValue -> {
alertFormValue.setAlertCalledId(alertCalled.getSequenceNbr());
alertFormValue.setAlertTypeCode(alertCalled.getAlertTypeCode());
});
// 保存动态表单数据
iAlertFormValueService.saveBatch(alertFormValuelist);
emqKeeper.getMqttClient().publish(topic1, "1".getBytes(), RuleConfig.DEFAULT_QOS, true);
} else {
// 警情报送
// ****************************************************待确认开发
alertCalled.setAlertStatus(false);
alertCalled.setIsDelete(false);
alertCalled.setAlertStage(AlertStageEnums.LLDP.getValue());
alertCalled.setAlarmType(AlertStageEnums.JQCB.getValue());
alertCalled.setAlarmTypeCode(AlertStageEnums.JQCB.getCode());
alertCalled.setRemark(alertCalledObjsDto.getRemark());
this.save(alertCalled);
// 填充警情主键
alertFormValuelist.stream().forEach(alertFormValue -> {
alertFormValue.setAlertCalledId(alertCalled.getSequenceNbr());
alertFormValue.setAlertTypeCode(alertCalled.getAlertTypeCode());
});
// 保存动态表单数据
iAlertFormValueService.saveBatch(alertFormValuelist);
alertCalledObjsDto.setAlertCalled(alertCalled);
alertCalledObjsDto.setAlertFormValue(alertFormValuelist);
// 警情报送
// 调用规则 警情初报
ruleAlertCalledService.fireAlertCalledRule(alertCalledObjsDto, AlertBusinessTypeEnum.警情初报.getCode(),
null, null, null);
// 通知实战指挥页面发送mqtt 默认发送 String 类型 0, 新警情 1 警情状态变化
emqKeeper.getMqttClient().publish(topic, "0".getBytes(), RuleConfig.DEFAULT_QOS, true);
/**
* 同步保存ES
*/
eSAlertCalledService.saveAlertCalledToES(alertCalled);
}
return alertCalledObjsDto;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("报送失败,系统异常!");
}
}
/**
* 根据id 修改警情 type:警情相关 操作类型 0警情续报 1非警情确认 2 警情结案
*/
@Override
@Transactional(rollbackFor = RuntimeException.class)
public boolean updateAlertCalled(Long id, String code) {
// TODO Auto-generated method stub
try {
switch (code) {
case "314":
alertCalledMapper.update(null,
new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id).set("alert_status", 1)
.set("alert_stage", AlertStageEnums.ZBQJ.getValue()).set("update_time", new Date())
.set("alarm_type", AlertStageEnums.FJQ.getValue())
.set("alarm_type_code", AlertStageEnums.FJQ.getCode()));
break;
case "315":
alertCalledMapper.update(null,
new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id).set("alert_status", 1)
.set("update_time", new Date()).set("alert_stage", AlertStageEnums.CZJS.getValue()));
break;
default:
alertCalledMapper.update(null, new UpdateWrapper<AlertCalled>().eq("sequence_nbr", id)
.set("update_time", new Date()).set("alert_stage", AlertStageEnums.CZGZ.getValue()));
break;
}
AlertCalled alertCalled = this.getById(id);
// 删除缓存
redisUtils.del(RedisKey.ALERTCALLED_ID + id);
/**
* 同步更新存ES
*/
eSAlertCalledService.saveAlertCalledToES(alertCalled);
// 通知实战指挥页面发送mqtt 默认发送 String 类型 0新警情, 1警情状态变化
emqKeeper.getMqttClient().publish(topic, "1".getBytes(), RuleConfig.DEFAULT_QOS, true);
return true;
} catch (Exception e) {
throw new RuntimeException("系统异常!");
}
}
/**
* 根据时间区间查询警情列表信息
*
* @param beginDate 开始时间
* @param endDate 结束时间
*/
public List<Map<String, Object>> listByDateRange(String beginDate, String endDate) {
// 查询指定日期内的警情列表
List<AlertCalled> alertCalledList = this.list(new LambdaQueryWrapper<AlertCalled>()
.apply(!ValidationUtil.isEmpty(beginDate), "call_time >= '" + beginDate + "'")
.le(true, AlertCalled::getCallTime, endDate));
Map<String, String> queryParams = Maps.newHashMap();
queryParams.put("beginDate", beginDate);
queryParams.put("endDate", endDate);
List<Map<String, Object>> allList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(alertCalledList)) {
Map<String, List<AlertCalled>> alertCalledMap = alertCalledList.stream()
.collect(Collectors.groupingBy(AlertCalled::getAlertTypeCode));
Map<Long, AlertCalled> calledMap = alertCalledList.stream()
.collect(Collectors.toMap(AlertCalled::getSequenceNbr, Function.identity()));
alertCalledMap.forEach((alertTypeCode, list) -> {
allList.addAll(iAlertFormValueService.listAll(alertTypeCode, queryParams));
});
allList.forEach(i -> {
// 增加非空判断 cz 2021-10-08
if (calledMap.get(Long.parseLong(i.get("instanceId").toString())) != null) {
AlertCalled alertCalled = calledMap.get(Long.parseLong(i.get("instanceId").toString()));
i.putAll(Bean.BeantoMap(alertCalled));
}
});
}
// 按接警时间正序排序
allList.sort((e, o) -> comparingByGroupVal(e, o, "recDate"));
return allList;
}
public Map<String, Object> getAlertInfoList(String beginDate, String endDate) {
Map<String, Object> result = Maps.newHashMap();
List<Map<String, Object>> list = listByDateRange(beginDate, endDate);
// 获取接警情况模板
List<Template> templateList = templateMapper.selectList(new LambdaQueryWrapper<Template>()
.eq(Template::getFormat, false).like(Template::getTypeCode, DutyInfoEnum.接警情况.getKey() + "-"));
Map<String, Template> templateMap = templateList.stream()
.collect(Collectors.toMap(Template::getTypeCode, Function.identity()));
List<String> contentList = Lists.newArrayList();
// 增加非空判断 cz 2021-10-08
list.forEach(i -> {
if (i.get("alertTypeCode") != null) {
String tempContent = templateMap.get(DutyInfoEnum.接警情况.getKey() + "-" + i.get("alertTypeCode"))
.getContent();
contentList.add(replaceTemplate(tempContent, i));
}
});
Map<String, Integer> statusCountMap = alertCalledMapper.queryAlertStatusCount(beginDate, endDate);
Integer unFinishedCount = this
.count(new LambdaQueryWrapper<AlertCalled>().eq(AlertCalled::getAlertStatus, false));// bug2532
// 未结案警情统计错误
// bykongfm
result.put("alertInfoList", contentList);
result.putAll(statusCountMap);
result.put("unFinishedCount", unFinishedCount);
return result;
}
/**
* 替换模板
*
* @param tempContent 模板
* @param objMap 对象map
* @return
*/
private String replaceTemplate(String tempContent, Map<String, Object> objMap) {
int size = objMap.size();
String[] keys = objMap.keySet().toArray(new String[size]);
Object[] values = objMap.values().toArray(new Object[size]);
List<String> strList = Lists.newArrayList();
for (Object obj : values) {
if (!ValidationUtil.isEmpty(obj)) {
if (obj instanceof Date) {
obj = DateUtils.date2LongStr((Date) obj);
}
strList.add(obj.toString());
} else {
strList.add("");
}
}
return StringUtils.replaceEach(tempContent, keys, strList.toArray(new String[strList.size()]));
}
@Override
public Map<String, Object> selectAlertCalledKeyValueLabelById(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "【" + alertCalled.getAlertType() + "】" + alertCalled.getAddress());
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<KeyValueLabel> listdate = new ArrayList<>();
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
listdate.add(new KeyValueLabel("接警时间", "callTime", alertCalled.getCallTime()));
listdate.add(new KeyValueLabel("警情地点", "address", alertCalled.getAddress()));
listdate.add(new KeyValueLabel("警情类型", "alertType", alertCalled.getAlertType()));
listdate.add(new KeyValueLabel("警情阶段", "alertStage", alertCalled.getAlertStage()));
listdate.add(new KeyValueLabel("警情等级", "responseLevel", "无"));
listdate.add(new KeyValueLabel("被困人数", "trappedNum", alertCalled.getTrappedNum()));
listdate.add(new KeyValueLabel("伤亡人数", "casualtiesNum", alertCalled.getCasualtiesNum()));
listdate.add(new KeyValueLabel("联系人", "contactUser", alertCalled.getContactUser()));
listdate.add(new KeyValueLabel("联系电话", "contactPhone", alertCalled.getContactPhone()));
// listdate.add(new KeyValueLabel("联系人电话", "contactPhone", alertCalled.getContactPhone()));
list.stream().forEach(alertFormValue -> {
/* 2661 灾情详情中字典类数据错误显示为code 改为value值 2021-09-23 陈召 开始 */
String valueCode = alertFormValue.getFieldValue();
/* 2661 灾情详情中字典类数据错误显示为code 改为value值 2021-09-23 陈召 结束 */
/*
* if(null == valueCode) { valueCode = alertFormValue.getFieldValue(); }
*/
listdate.add(new KeyValueLabel(alertFormValue.getFieldName(), alertFormValue.getFieldCode(), valueCode));
});
map.put("data", listdate);
return map;
}
@Override
public List<KeyValueLabel> selectAlertCalledcount(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
List<KeyValueLabel> listdate = new ArrayList<>();
listdate.add(new KeyValueLabel("被困人数", "trappedNum", alertCalled.getTrappedNum()));
listdate.add(new KeyValueLabel("伤亡人数", "casualtiesNum", alertCalled.getCasualtiesNum()));
return listdate;
}
@Override
public List<KeyValueLabel> powercount(Long id) {
Map<String, Integer> map = powerTransferMapper.getCarNum(id);
list.stream().forEach(alertFormValue -> {
/* 2661 灾情详情中字典类数据错误显示为code 改为value值 2021-09-23 陈召 开始 */
String valueCode = alertFormValue.getFieldValue();
/* 2661 灾情详情中字典类数据错误显示为code 改为value值 2021-09-23 陈召 结束 */
/*
* if(null == valueCode) { valueCode = alertFormValue.getFieldValue(); }
*/
listdate.add(new KeyValueLabel(alertFormValue.getFieldName(), alertFormValue.getFieldCode(), valueCode));
});
map.put("data", listdate);
return map;
}
@Override
public List<KeyValueLabel> selectAlertCalledcount(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
List<KeyValueLabel> listdate = new ArrayList<>();
listdate.add(new KeyValueLabel("被困人数", "trappedNum", alertCalled.getTrappedNum()));
listdate.add(new KeyValueLabel("伤亡人数", "casualtiesNum", alertCalled.getCasualtiesNum()));
return listdate;
}
@Override
public List<KeyValueLabel> powercount(Long id) {
Map<String, Integer> map = powerTransferMapper.getCarNum(id);
// Map<String,Integer> mapc=powerTransferMapper.getCompanyNum(id);
// Map<String,Integer> mapu= alertSubmittedMapper.getUseNum(id);
// 统计参与人员
List<KeyValueLabel> listdate = new ArrayList<>();
listdate.add(new KeyValueLabel("调动人力", "useNum", "0", "人"));
// 统计参与车辆
listdate.add(new KeyValueLabel("调动人力", "carNum", map.get("carNum"), "辆"));
// 统计参与队伍
listdate.add(new KeyValueLabel("调动单位", "companyNum", map.get("companyNum"), "个"));
return listdate;
}
@Override
public List<PowerData> getPowerDataList(Long id) {
List<PowerData> list = powerTransferMapper.getPowerDataList(id);
return list;
}
@Override
public AlertCalled getAlertCalledById(Long id) {
return this.getById(id);
}
@Override
public Integer AlertCalledcountTime(int type) {
return alertCalledMapper.AlertCalledcountTime(type);
}
@Override
public List<AlertCalledTodyDto> getTodayAlertCalled() {
return alertCalledMapper.getTodayAlertCalled();
}
public Boolean controlEquip() {
/**
* 获取控制器设备
*/
List<ControllerEquipDto> controllerEquipDtoList = controllerEquipService.queryAllForList();
Map<Long, List<String>> controllerEquipMap = new HashMap<>();
for (ControllerEquipDto controllerEquipDto : controllerEquipDtoList) {
List<String> numList = controllerEquipMap.get(controllerEquipDto.getControllerSeq());
if (ValidationUtil.isEmpty(numList)) {
numList = new ArrayList<>();
}
numList.add(controllerEquipDto.getNum());
controllerEquipMap.put(controllerEquipDto.getControllerSeq(), numList);
}
/**
* 获取联动控制器
*/
List<ControllerDto> controllerDtoList = controllerService.queryAllForList();
StringBuilder bellNumSb = new StringBuilder();
// 统计参与人员
List<KeyValueLabel> listdate = new ArrayList<>();
listdate.add(new KeyValueLabel("调动人力", "useNum", "0", "人"));
// 统计参与车辆
listdate.add(new KeyValueLabel("调动人力", "carNum", map.get("carNum"), "辆"));
// 统计参与队伍
listdate.add(new KeyValueLabel("调动单位", "companyNum", map.get("companyNum"), "个"));
return listdate;
}
@Override
public List<PowerData> getPowerDataList(Long id) {
List<PowerData> list = powerTransferMapper.getPowerDataList(id);
return list;
}
@Override
public AlertCalled getAlertCalledById(Long id) {
return this.getById(id);
}
@Override
public Integer AlertCalledcountTime(int type) {
return alertCalledMapper.AlertCalledcountTime(type);
}
@Override
public List<AlertCalledTodyDto> getTodayAlertCalled() {
return alertCalledMapper.getTodayAlertCalled();
}
public Boolean controlEquip() {
/**
* 获取控制器设备
*/
List<ControllerEquipDto> controllerEquipDtoList = controllerEquipService.queryAllForList();
Map<Long, List<String>> controllerEquipMap = new HashMap<>();
for (ControllerEquipDto controllerEquipDto : controllerEquipDtoList) {
List<String> numList = controllerEquipMap.get(controllerEquipDto.getControllerSeq());
if (ValidationUtil.isEmpty(numList)) {
numList = new ArrayList<>();
}
numList.add(controllerEquipDto.getNum());
controllerEquipMap.put(controllerEquipDto.getControllerSeq(), numList);
}
/**
* 获取联动控制器
*/
List<ControllerDto> controllerDtoList = controllerService.queryAllForList();
StringBuilder bellNumSb = new StringBuilder();
// StringBuilder broadcastNumSb = new StringBuilder();
for (ControllerDto controllerDto : controllerDtoList) {
// 消防警铃
if (controllerDto.getType().equals(ControllerTypeEnum.BELL.getCode())) {
List<String> bellNumList = controllerEquipMap.get(controllerDto.getSequenceNbr());
if (!ValidationUtil.isEmpty(bellNumList)) {
for (String num : bellNumList) {
bellNumSb.append(num).append(",");
}
}
}
// 广播
for (ControllerDto controllerDto : controllerDtoList) {
// 消防警铃
if (controllerDto.getType().equals(ControllerTypeEnum.BELL.getCode())) {
List<String> bellNumList = controllerEquipMap.get(controllerDto.getSequenceNbr());
if (!ValidationUtil.isEmpty(bellNumList)) {
for (String num : bellNumList) {
bellNumSb.append(num).append(",");
}
}
}
// 广播
// if (controllerDto.getType().equals(ControllerTypeEnum.BROADCAST.getCode())) {
// List<String> broadcastList = controllerEquipMap.get(controllerDto.getSequenceNbr());
// if (!ValidationUtil.isEmpty(broadcastList)) {
......@@ -643,266 +666,267 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto, AlertCal
// }
// }
// }
}
/**
* 打开消防警铃
*/
if (!ValidationUtil.isEmpty(bellNumSb.toString())) {
String bellNum = bellNumSb.toString();
bellNum = bellNum.substring(0, bellNum.length() - 1);
String[] bellNums = bellNum.split(",");
for (int i = 0; i < bellNums.length; i++) {
//打开15s后自动关闭
try {
jcsControlServerClient.sendBellActionWithTime(bellNums[i], "1", 15);
} catch (Exception e) {
logger.info("打开警铃【" + bellNums[i] + "】异常!");
}
}
}
/**
* 播放广播
*/
}
/**
* 打开消防警铃
*/
if (!ValidationUtil.isEmpty(bellNumSb.toString())) {
String bellNum = bellNumSb.toString();
bellNum = bellNum.substring(0, bellNum.length() - 1);
String[] bellNums = bellNum.split(",");
for (int i = 0; i < bellNums.length; i++) {
// 打开15s后自动关闭
try {
jcsControlServerClient.sendBellActionWithTime(bellNums[i], "1", 15);
} catch (Exception e) {
logger.info("打开警铃【" + bellNums[i] + "】异常!");
}
}
}
/**
* 播放广播
*/
// if (!ValidationUtil.isEmpty(broadcastNumSb.toString())) {
// String broadcastNum = broadcastNumSb.toString();
// broadcastNum = broadcastNum.substring(0, broadcastNum.length() - 1);
// jcsControlServerClient.sendFileAction(broadcastNum, "1490075199246.mp3");
// }
/**
* 打开北站车库门
*/
List<ControllerDto> northDoor = controllerService.queryForList("3", ControllerTypeEnum.DOOR.getCode());
if (!ValidationUtil.isEmpty(northDoor)) {
ControllerDto controllerDto = northDoor.get(0);
// 打开北站车库门
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 100, "1,1,1,1");
} catch (Exception e) {
logger.info("打开北站车库门【" + controllerDto.getIp() + "】异常!");
}
// 打开北站车库门弱电警铃
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 107, "1");
} catch (Exception e) {
logger.info("打开北站弱电警铃【" + controllerDto.getIp() + "】异常!");
}
}
/**
* 打开南站车库门
*/
List<ControllerDto> southDoor = controllerService.queryForList("2", ControllerTypeEnum.DOOR.getCode());
if (!ValidationUtil.isEmpty(southDoor)) {
ControllerDto controllerDto = southDoor.get(0);
// 打开南站车库门
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 100, "1");
} catch (Exception e) {
logger.info("打开南站车库门【" + controllerDto.getIp() + "】异常!");
}
// 打开南站车库门弱电警铃
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 107, "1");
} catch (Exception e) {
logger.info("打开南站弱电警铃【" + controllerDto.getIp() + "】异常!");
}
}
return true;
}
/**
* 警情重新定位
*
* @param alertId 警情id
* @param longitude 经度
* @param latitude 纬度
* @return
*/
public Boolean reLocate(String alertId, String longitude, String latitude) {
try {
// 更新警情主表
AlertCalled alertCalled = this.baseMapper.selectById(alertId);
alertCalled.setCoordinateX(Double.valueOf(longitude));
alertCalled.setCoordinateY(Double.valueOf(latitude));
this.updateById(alertCalled);
// 插入定位日志表
AlertLocationLog alertLocationLog = new AlertLocationLog();
alertLocationLog.setAlertId(Long.valueOf(alertId));
alertLocationLog.setLongitude(longitude);
alertLocationLog.setLatitude(latitude);
alertLocationLogService.save(alertLocationLog);
return true;
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
throw new RuntimeException("警情定位失败!");
}
}
@Override
public Map<String, Object> queryAlertCalledById(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
Map<String, Object> map = new HashMap<>();
map.put("title", "【" + alertCalled.getAlertType() + "】" + alertCalled.getAddress());
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<KeyValueLabel> listdate = new ArrayList<>();
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
listdate.add(new KeyValueLabel("接警时间", "callTime", alertCalled.getCallTime()));
listdate.add(new KeyValueLabel("警情地点", "address", alertCalled.getAddress()));
listdate.add(new KeyValueLabel("警情类型", "alertType", alertCalled.getAlertType()));
listdate.add(new KeyValueLabel("警情阶段", "alertStage", alertCalled.getAlertStage()));
listdate.add(new KeyValueLabel("警情等级", "responseLevel", "无"));
listdate.add(new KeyValueLabel("被困人数", "trappedNum", alertCalled.getTrappedNum()));
listdate.add(new KeyValueLabel("伤亡人数", "casualtiesNum", alertCalled.getCasualtiesNum()));
listdate.add(new KeyValueLabel("联系人", "contactUser", alertCalled.getContactUser()));
listdate.add(new KeyValueLabel("联系电话", "contactPhone", alertCalled.getContactPhone()));
listdate.add(new KeyValueLabel("联系人电话", "contactPhone", alertCalled.getContactPhone()));
list.stream().forEach(alertFormValue -> {
String valueCode = alertFormValue.getFieldValueCode();
if (null == valueCode) {
valueCode = alertFormValue.getFieldValue();
}
listdate.add(new KeyValueLabel(alertFormValue.getFieldName(), alertFormValue.getFieldCode(), valueCode));
if ("fireTime".equals(alertFormValue.getFieldCode())) {
map.put("occurrenceTime", alertFormValue.getFieldValue());
}
});
map.put("data", listdate);
// app警情首页使用alarmDetailInfo,alarmContactInfo
if (!AlertStageEnums.YBHZ.getCode().equals(alertCalled.getAlertTypeCode())) {
map.put("occurrenceTime", alertCalled.getCallTime());
}
map.put("alertType", alertCalled.getAlertType());
map.put("address", alertCalled.getAddress());
map.put("contactUser", alertCalled.getContactUser());
map.put("contactPhone", alertCalled.getContactPhone());
map.put("callTime", alertCalled.getCallTime());
//获取通话录音文件地址
List<VoiceRecordFileDto> voiceRecordFileDtos = voiceRecordFileService.listByAlertId(alertCalled.getSequenceNbr());
if (!voiceRecordFileDtos.isEmpty()) {
map.put("voiceRecordFile", voiceRecordFileDtos.get(0).getFilePath());
}
return map;
}
// 未结案警情统计
@Override
public Integer AlertCalledcount(int type) {
return alertCalledMapper.AlertCalledcount(0);
}
@Override
public List<AlertCalled> AlertCalledStatusPage(Integer current, Integer size) {
return alertCalledMapper.AlertCalledStatusPage(current, size);
}
@Override
public List<JSONObject> queryDisposalObjectList(String alertId) {
AlertCalled alertCalled = this.getById(Long.valueOf(alertId));
String alertTypeCode = alertCalled.getAlertTypeCode();
AlertStageEnums alertStage = AlertStageEnums.getEnum(alertTypeCode);
List<JSONObject> resultList = Lists.newArrayList();
if (alertStage != null) {
switch (alertStage) {
case YBHZ:
case TFSJ:
case QTJQ:
resultList = queryDisposalObjectUnit(alertCalled);
break;
case HKJY:
case LYXC:
case ZJBZ:
resultList = queryDisposalObjectAircraft(alertCalled);
default:
break;
}
}
return resultList;
}
private List<JSONObject> queryDisposalObjectUnit(AlertCalled alertCalled) {
List<JSONObject> resultList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(alertCalled.getUnitInvolved())) {
List<OrgUsrzhDto> unitInvolvedDto = iOrgUsrService.getOrgUsrzhDto(alertCalled.getUnitInvolved());
JSONObject a1 = new JSONObject();
a1.put("name", "单位名称");
a1.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getBizOrgName() : "");
JSONObject a2 = new JSONObject();
a2.put("name", "单位性质");
a2.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getCompanyNature() : "");
JSONObject a3 = new JSONObject();
a3.put("name", "单位电话");
a3.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getCompanyPhone() : "");
JSONObject a4 = new JSONObject();
a4.put("name", "单位地址");
a4.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getCompanyLocation() : "");
JSONObject a5 = new JSONObject();
a5.put("name", "重点部位数量");
a5.put("value", !ValidationUtil.isEmpty(unitInvolvedDto.get(0))
? unitInvolvedDto.get(0).getKeySiteCount() != null ? unitInvolvedDto.get(0).getKeySiteCount() : 0
: 0 + "个");
resultList.add(a1);
resultList.add(a2);
resultList.add(a3);
resultList.add(a4);
resultList.add(a5);
}
return resultList;
}
private List<JSONObject> queryDisposalObjectAircraft(AlertCalled alertCalled) {
// 警情动态表单数据
List<AlertFormValue> list = alertFormValueService.getzqlist(alertCalled.getSequenceNbr());
Aircraft aircraft = new Aircraft();
for (AlertFormValue alertFormValue : list) {
if ("aircraftModel".equals(alertFormValue.getFieldCode())) {
String aircraftModel = alertFormValue.getFieldValue();
aircraft = aircraftService.queryAircraftInfoByModel(aircraftModel);
break;
}
}
List<JSONObject> resultList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(aircraft)) {
JSONObject a1 = new JSONObject();
a1.put("name", "飞机型号");
a1.put("value", aircraft.getAircraftModel());
JSONObject a2 = new JSONObject();
a2.put("name", "发动机类型");
a2.put("value", aircraft.getEngineType());
JSONObject a3 = new JSONObject();
a3.put("name", "发动机数量");
a3.put("value", aircraft.getEnginesmNum());
JSONObject a4 = new JSONObject();
a4.put("name", "燃油类型");
a4.put("value", aircraft.getFuelType());
JSONObject a5 = new JSONObject();
a5.put("name", "主要燃烧物质");
a5.put("value", aircraft.getCombustionMaterial());
resultList.add(a1);
resultList.add(a2);
resultList.add(a3);
resultList.add(a4);
resultList.add(a5);
}
return resultList;
}
/* 2304 地址 联系人模糊查询缺失 陈召 2021-09-23 开始 */
public List<Map<String, String>> getContactName() {
// List<Map<String,String>> firefightersName =
// firefightersService.getFirefightersName();
// firefightersName.forEach(r->{
/**
* 打开北站车库门
*/
List<ControllerDto> northDoor = controllerService.queryForList("3", ControllerTypeEnum.DOOR.getCode());
if (!ValidationUtil.isEmpty(northDoor)) {
ControllerDto controllerDto = northDoor.get(0);
// 打开北站车库门
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 100, "1,1,1,1");
} catch (Exception e) {
logger.info("打开北站车库门【" + controllerDto.getIp() + "】异常!");
}
// 打开北站车库门弱电警铃
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 107, "1");
} catch (Exception e) {
logger.info("打开北站弱电警铃【" + controllerDto.getIp() + "】异常!");
}
}
/**
* 打开南站车库门
*/
List<ControllerDto> southDoor = controllerService.queryForList("2", ControllerTypeEnum.DOOR.getCode());
if (!ValidationUtil.isEmpty(southDoor)) {
ControllerDto controllerDto = southDoor.get(0);
// 打开南站车库门
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 100, "1");
} catch (Exception e) {
logger.info("打开南站车库门【" + controllerDto.getIp() + "】异常!");
}
// 打开南站车库门弱电警铃
try {
jcsControlServerClient.writeStateAction(controllerDto.getIp(), controllerDto.getPort(), 107, "1");
} catch (Exception e) {
logger.info("打开南站弱电警铃【" + controllerDto.getIp() + "】异常!");
}
}
return true;
}
/**
* 警情重新定位
*
* @param alertId 警情id
* @param longitude 经度
* @param latitude 纬度
* @return
*/
public Boolean reLocate(String alertId, String longitude, String latitude) {
try {
// 更新警情主表
AlertCalled alertCalled = this.baseMapper.selectById(alertId);
alertCalled.setCoordinateX(Double.valueOf(longitude));
alertCalled.setCoordinateY(Double.valueOf(latitude));
this.updateById(alertCalled);
// 插入定位日志表
AlertLocationLog alertLocationLog = new AlertLocationLog();
alertLocationLog.setAlertId(Long.valueOf(alertId));
alertLocationLog.setLongitude(longitude);
alertLocationLog.setLatitude(latitude);
alertLocationLogService.save(alertLocationLog);
return true;
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
throw new RuntimeException("警情定位失败!");
}
}
@Override
public Map<String, Object> queryAlertCalledById(Long id) {
// 警情基本信息
AlertCalled alertCalled = this.getById(id);
QueryWrapper<AlertFormValue> queryWrapper = new QueryWrapper<>();
Map<String, Object> map = new HashMap<>();
map.put("title", "【" + alertCalled.getAlertType() + "】" + alertCalled.getAddress());
queryWrapper.eq("alert_called_id", id);
// 警情动态表单数据
List<KeyValueLabel> listdate = new ArrayList<>();
List<AlertFormValue> list = iAlertFormValueService.list(queryWrapper);
listdate.add(new KeyValueLabel("接警时间", "callTime", alertCalled.getCallTime()));
listdate.add(new KeyValueLabel("警情地点", "address", alertCalled.getAddress()));
listdate.add(new KeyValueLabel("警情类型", "alertType", alertCalled.getAlertType()));
listdate.add(new KeyValueLabel("警情阶段", "alertStage", alertCalled.getAlertStage()));
listdate.add(new KeyValueLabel("警情等级", "responseLevel", "无"));
listdate.add(new KeyValueLabel("被困人数", "trappedNum", alertCalled.getTrappedNum()));
listdate.add(new KeyValueLabel("伤亡人数", "casualtiesNum", alertCalled.getCasualtiesNum()));
listdate.add(new KeyValueLabel("联系人", "contactUser", alertCalled.getContactUser()));
listdate.add(new KeyValueLabel("联系电话", "contactPhone", alertCalled.getContactPhone()));
listdate.add(new KeyValueLabel("联系人电话", "contactPhone", alertCalled.getContactPhone()));
list.stream().forEach(alertFormValue -> {
String valueCode = alertFormValue.getFieldValueCode();
if (null == valueCode) {
valueCode = alertFormValue.getFieldValue();
}
listdate.add(new KeyValueLabel(alertFormValue.getFieldName(), alertFormValue.getFieldCode(), valueCode));
if ("fireTime".equals(alertFormValue.getFieldCode())) {
map.put("occurrenceTime", alertFormValue.getFieldValue());
}
});
map.put("data", listdate);
// app警情首页使用alarmDetailInfo,alarmContactInfo
if (!AlertStageEnums.YBHZ.getCode().equals(alertCalled.getAlertTypeCode())) {
map.put("occurrenceTime", alertCalled.getCallTime());
}
map.put("alertType", alertCalled.getAlertType());
map.put("address", alertCalled.getAddress());
map.put("contactUser", alertCalled.getContactUser());
map.put("contactPhone", alertCalled.getContactPhone());
map.put("callTime", alertCalled.getCallTime());
// 获取通话录音文件地址
List<VoiceRecordFileDto> voiceRecordFileDtos = voiceRecordFileService
.listByAlertId(alertCalled.getSequenceNbr());
if (!voiceRecordFileDtos.isEmpty()) {
map.put("voiceRecordFile", voiceRecordFileDtos.get(0).getFilePath());
}
return map;
}
// 未结案警情统计
@Override
public Integer AlertCalledcount(int type) {
return alertCalledMapper.AlertCalledcount(0);
}
@Override
public List<AlertCalled> AlertCalledStatusPage(Integer current, Integer size) {
return alertCalledMapper.AlertCalledStatusPage(current, size);
}
@Override
public List<JSONObject> queryDisposalObjectList(String alertId) {
AlertCalled alertCalled = this.getById(Long.valueOf(alertId));
String alertTypeCode = alertCalled.getAlertTypeCode();
AlertStageEnums alertStage = AlertStageEnums.getEnum(alertTypeCode);
List<JSONObject> resultList = Lists.newArrayList();
if (alertStage != null) {
switch (alertStage) {
case YBHZ:
case TFSJ:
case QTJQ:
resultList = queryDisposalObjectUnit(alertCalled);
break;
case HKJY:
case LYXC:
case ZJBZ:
resultList = queryDisposalObjectAircraft(alertCalled);
default:
break;
}
}
return resultList;
}
private List<JSONObject> queryDisposalObjectUnit(AlertCalled alertCalled) {
List<JSONObject> resultList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(alertCalled.getUnitInvolved())) {
List<OrgUsrzhDto> unitInvolvedDto = iOrgUsrService.getOrgUsrzhDto(alertCalled.getUnitInvolved());
JSONObject a1 = new JSONObject();
a1.put("name", "单位名称");
a1.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getBizOrgName() : "");
JSONObject a2 = new JSONObject();
a2.put("name", "单位性质");
a2.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getCompanyNature() : "");
JSONObject a3 = new JSONObject();
a3.put("name", "单位电话");
a3.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getCompanyPhone() : "");
JSONObject a4 = new JSONObject();
a4.put("name", "单位地址");
a4.put("value",
!ValidationUtil.isEmpty(unitInvolvedDto.get(0)) ? unitInvolvedDto.get(0).getCompanyLocation() : "");
JSONObject a5 = new JSONObject();
a5.put("name", "重点部位数量");
a5.put("value", !ValidationUtil.isEmpty(unitInvolvedDto.get(0))
? unitInvolvedDto.get(0).getKeySiteCount() != null ? unitInvolvedDto.get(0).getKeySiteCount() : 0
: 0 + "个");
resultList.add(a1);
resultList.add(a2);
resultList.add(a3);
resultList.add(a4);
resultList.add(a5);
}
return resultList;
}
private List<JSONObject> queryDisposalObjectAircraft(AlertCalled alertCalled) {
// 警情动态表单数据
List<AlertFormValue> list = alertFormValueService.getzqlist(alertCalled.getSequenceNbr());
Aircraft aircraft = new Aircraft();
for (AlertFormValue alertFormValue : list) {
if ("aircraftModel".equals(alertFormValue.getFieldCode())) {
String aircraftModel = alertFormValue.getFieldValue();
aircraft = aircraftService.queryAircraftInfoByModel(aircraftModel);
break;
}
}
List<JSONObject> resultList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(aircraft)) {
JSONObject a1 = new JSONObject();
a1.put("name", "飞机型号");
a1.put("value", aircraft.getAircraftModel());
JSONObject a2 = new JSONObject();
a2.put("name", "发动机类型");
a2.put("value", aircraft.getEngineType());
JSONObject a3 = new JSONObject();
a3.put("name", "发动机数量");
a3.put("value", aircraft.getEnginesmNum());
JSONObject a4 = new JSONObject();
a4.put("name", "燃油类型");
a4.put("value", aircraft.getFuelType());
JSONObject a5 = new JSONObject();
a5.put("name", "主要燃烧物质");
a5.put("value", aircraft.getCombustionMaterial());
resultList.add(a1);
resultList.add(a2);
resultList.add(a3);
resultList.add(a4);
resultList.add(a5);
}
return resultList;
}
/* 2304 地址 联系人模糊查询缺失 陈召 2021-09-23 开始 */
public List<Map<String, String>> getContactName() {
// List<Map<String,String>> firefightersName =
// firefightersService.getFirefightersName();
// firefightersName.forEach(r->{
// String phone = r.get("phone");
// phone = QRCodeUtil.generateQRCode()+"@"+phone;
// r.put("phone",phone);
......@@ -916,32 +940,248 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto, AlertCal
// }
// );
// firefightersName.addAll(contactNames);
List<Map<String, String>> list = orgUsrServiceImpl.getPersonSimpleDetail();
list.stream().forEach(i -> {
String phone = "";
if (i.containsKey("phone")) {
phone = QRCodeUtil.generateQRCode() + "@" + i.get("phone").toString();
i.replace("phone", phone);
} else {
phone = QRCodeUtil.generateQRCode() + "@" + phone;
i.put("phone", phone);
}
});
return list;
}
public List<String> getCalledAddress() {
List<String> keyAddress = keySiteService.getAddress();
List<String> alertAddress = alertCalledMapper.getAddress();
keyAddress.addAll(alertAddress);
return keyAddress;
}
/* 2304 地址 联系人模糊查询缺失 陈召 2021-09-23 结束 */
public Set<Map<String, Object>> getLocationLike(String locationt) {
Set<Map<String, Object>> set = alertCalledMapper.getLocation();
set.remove(null);
return set;
}
List<Map<String, String>> list = orgUsrServiceImpl.getPersonSimpleDetail();
list.stream().forEach(i -> {
String phone = "";
if (i.containsKey("phone")) {
phone = QRCodeUtil.generateQRCode() + "@" + i.get("phone").toString();
i.replace("phone", phone);
} else {
phone = QRCodeUtil.generateQRCode() + "@" + phone;
i.put("phone", phone);
}
});
return list;
}
public List<String> getCalledAddress() {
List<String> keyAddress = keySiteService.getAddress();
List<String> alertAddress = alertCalledMapper.getAddress();
keyAddress.addAll(alertAddress);
return keyAddress;
}
/* 2304 地址 联系人模糊查询缺失 陈召 2021-09-23 结束 */
public Set<Map<String, Object>> getLocationLike(String locationt) {
Set<Map<String, Object>> set = alertCalledMapper.getLocation();
set.remove(null);
return set;
}
@SuppressWarnings("unchecked")
public Object toCompletePoliceSituationMatch(Long id) throws Exception{
AlertCalledFormDto dto = (AlertCalledFormDto) selectAlertCalledByIdNoRedis(id);
AlertCalled alertCalled = dto.getAlertCalled();
List<FormValue> list = dto.getDynamicFormAlert();
if (alertCalled.getAlertTypeCode().equals(AlertStageEnums.YBHZ.getCode())) {// 一般火灾
String condition1 = alertCalled.getAlertType();// 一般火灾
String condition2 = alertCalled.getUnitInvolved();// 事发单位
String condition3 = "";
for (FormValue i : list) {
if (i.getKey().equals(AlertStageEnums.keySiteExcle.getCode())) {
condition3 = i.getValue();
break;
}
}
return getIdsList1( alertCalled.getAlertTypeCode() ,AlertStageEnums.救援预案警情类型.getValue() + "," + condition1,
AlertStageEnums.责任单位.getValue() + "," + condition2,
AlertStageEnums.重点部位名称.getValue() + "," + condition3);
} else if (alertCalled.getAlertTypeCode().equals(AlertStageEnums.HKJY.getCode())) {
String condition1 = alertCalled.getAlertType();// 航空器救援
String condition2 = "";
for (FormValue i : list) {
if (i.getKey().equals(AlertStageEnums.aircraftRescueSub.getCode())) {
condition2 = condition1 + i.getValue();
}
}
return getIdsList1(alertCalled.getAlertTypeCode(),AlertStageEnums.救援预案警情类型.getValue() + "," + condition1,
AlertStageEnums.航空器救援子类.getValue() + "," + condition2, null);
} else {
String condition1 = alertCalled.getAlertType();
return getIdsList1(alertCalled.getAlertTypeCode(),AlertStageEnums.救援预案警情类型.getValue() + "," + condition1, null, null);
}
}
// private List<Map<String, Object>> getIdsList(String condition1, String condition2, String condition3) {
// List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
// ResponseModel condition1Response = knowledgebaseFeignClient.getAllTegartValue(condition1.split(",")[1]);
// List condition1List = (List) condition1Response.getResult();
// if (condition1List.size() < 1) {
// return null;
// } else {
// for (Object i : condition1List) {
// int priority = 1;
// JSONObject obj = JSONObject.parseObject(JSONObject.toJSONString(i));
// String instanceSeq = obj.getString("instanceSeq");
// ResponseModel<Object> list = knowledgebaseFeignClient.findById(Long.parseLong(instanceSeq));
// Object instanceReslt = list.getResult();
// if (instanceReslt != null) {
// JSONObject instanceResltobj = JSONObject.parseObject(JSONObject.toJSONString(instanceReslt));
// String targetSeq = instanceResltobj.getString("targetSeq");
// ResponseModel<Object> targetSeqResult = knowledgebaseFeignClient
// .queryListByTargetSeq(Long.parseLong(targetSeq));
// Object targetSeqResultObj = targetSeqResult.getResult();
// JSONArray targetSeqResultArray = JSONArray.parseArray(JSONArray.toJSONString(targetSeqResultObj));
// boolean flag2 = false;
// boolean flag3 = false;
// for (Object targetDetail : targetSeqResultArray) {
// JSONObject targetDetailJson = JSONObject.parseObject(JSONObject.toJSONString(targetDetail));
// String sequenceNbr = targetDetailJson.getString("sequenceNbr");
// ResponseModel<Object> detailResponseModel = knowledgebaseFeignClient
// .queryByInstance(Long.parseLong(sequenceNbr));
// Object detailResponseModelObj = detailResponseModel.getResult();
// JSONArray detailResponseModelArray = JSONArray
// .parseArray(JSONArray.toJSONString(detailResponseModelObj));
// JSONObject detailJson = JSONObject
// .parseObject(JSONObject.toJSONString(detailResponseModelArray.get(0)));
// if (!detailJson.containsKey("tagValue")) {
// continue;
// }
// if (condition2 != null && condition2.split(",")[1].equals(detailJson.getString("tagValue"))) {
// flag2 = true;
// }
// if (condition3 != null && condition3.split(",")[1].equals(detailJson.getString("tagValue"))) {
// flag3 = true;
// }
// }
// if (StringUtils.isNotBlank(condition3)) {
// if (flag2 && flag3) {
// priority = 1;
// } else if (flag2) {
// priority = 2;
// } else if (flag3) {
// priority = 3;
// } else {
// priority = 0;
// }
// } else if (StringUtils.isNotBlank(condition2) && condition3 == null) {
// if (flag2) {
// priority = 1;
// } else {
// priority = 2;
// }
// }
//
// Map<String, Object> map = new HashMap<String, Object>();
// ResponseModel<Object> SimpleDetailResponse = knowledgebaseFeignClient.getSimpleDetail(targetSeq);
// if (ObjectUtils.isNotEmpty(SimpleDetailResponse) && priority != 0) {
// map.put("priority", priority);
// map.put("data", SimpleDetailResponse.getResult());
// resultList.add(map);
// }
// }
// }
// }
// return resultList;
// }
private Object getIdsList1(String type ,String condition1, String condition2, String condition3)throws Exception {
List<Object> resultList = new ArrayList<Object>();
ResponseModel<Object> responseForcondition1Name = knowledgebaseFeignClient
.queryListByTagName(condition1.split(",")[0]);
if(200!= responseForcondition1Name.getStatus()) {
return responseForcondition1Name;
}
List listForcondition1Name = (List) responseForcondition1Name.getResult();
if (listForcondition1Name.size() > 0) {
for (Object i : listForcondition1Name) {
int priority = 1;
boolean flag2 = false;
boolean flag3 = false;
JSONObject listForcondition1Nameobj = JSONObject.parseObject(JSONObject.toJSONString(i));
ResponseModel<Object> responseForInstanceId = knowledgebaseFeignClient
.queryByInstance(Long.parseLong(listForcondition1Nameobj.getString("sequenceNbr")));
List responseForInstanceIdList = (List) responseForInstanceId.getResult();
Object responseForInstanceIdDetail = responseForInstanceIdList.get(0);
JSONObject responseForInstanceIdJsonDetail = JSONObject
.parseObject(JSONObject.toJSONString(responseForInstanceIdDetail));
if (!(condition1.split(",")[1]).equals(responseForInstanceIdJsonDetail.getString("tagValue"))) {
continue;
}
String condition2Name = null;
String condition2value = null;
if (condition2 != null) {
String[] condition2Array = condition2.split(",");
if(condition2Array.length>1) {
condition2Name = condition2Array[0];
condition2value = condition2Array[1];
}
}
String condition3Name = null;
String condition3value = null;
if (condition3 != null) {
String[] condition3Array = condition3.split(",");
if(condition3Array.length>1) {
condition3Name = condition3Array[0];
condition3value = condition3Array[1];
}
}
ResponseModel<Object> targetSeqResult = knowledgebaseFeignClient
.queryListByTargetSeq(Long.parseLong(listForcondition1Nameobj.getString("targetSeq")));
Object targetSeqResultObj = targetSeqResult.getResult();
JSONArray targetSeqResultArray = JSONArray.parseArray(JSONArray.toJSONString(targetSeqResultObj));
for (Object m : targetSeqResultArray) {
JSONObject detailJson = JSONObject.parseObject(JSONObject.toJSONString(m));
if (condition2Name != null && condition2Name.equals(detailJson.getString("tagName"))) {
ResponseModel<Object> condition2ResponseForInstanceId = knowledgebaseFeignClient
.queryByInstance(Long.parseLong(detailJson.getString("sequenceNbr")));
List condition2ResponseForInstanceIdList = (List) condition2ResponseForInstanceId.getResult();
Object condition2ResponseForInstanceIdDetail = condition2ResponseForInstanceIdList.get(0);
JSONObject condition2ResponseForInstanceIdJsonDetail = JSONObject
.parseObject(JSONObject.toJSONString(condition2ResponseForInstanceIdDetail));
if (condition2value != null && condition2value
.equals(condition2ResponseForInstanceIdJsonDetail.getString("tagValue"))) {
flag2 = true;
}
}
if (condition3Name != null && condition3Name.equals(detailJson.getString("tagName"))) {
ResponseModel<Object> condition3ResponseForInstanceId = knowledgebaseFeignClient
.queryByInstance(Long.parseLong(detailJson.getString("sequenceNbr")));
List condition3ResponseForInstanceIdList = (List) condition3ResponseForInstanceId.getResult();
Object condition3ResponseForInstanceIdDetail = condition3ResponseForInstanceIdList.get(0);
JSONObject condition3ResponseForInstanceIdJsonDetail = JSONObject
.parseObject(JSONObject.toJSONString(condition3ResponseForInstanceIdDetail));
if (condition3value != null && condition3value
.equals(condition3ResponseForInstanceIdJsonDetail.getString("tagValue"))) {
flag3 = true;
}
}
}
if (type.equals(AlertStageEnums.YBHZ.getCode())) {
if (flag2 && flag3) {
priority = 1;
} else if (flag2) {
priority = 2;
} else if (flag3) {
priority = 3;
} else {
priority = 0;
}
} else if (type.equals(AlertStageEnums.HKJY.getCode())) {
if (flag2) {
priority = 1;
} else {
priority = 2;
}
}
Map<String, Object> map = new HashMap<String, Object>();
ResponseModel<Object> SimpleDetailResponse = knowledgebaseFeignClient
.getSimpleDetail(listForcondition1Nameobj.getString("targetSeq"));
if (ObjectUtils.isNotEmpty(SimpleDetailResponse.getResult()) && priority != 0) {
JSONArray detailJsonArray = JSONArray.parseArray(JSONArray.toJSONString(SimpleDetailResponse.getResult()));
JSONObject detailJsonObject= detailJsonArray.getJSONObject(0);
map.put("recDate",detailJsonObject.getString("REC_DATE"));
map.put("sequenceNbr", detailJsonObject.getString("SEQUENCE_NBR"));
map.put("docTitle", detailJsonObject.getString("DOC_TITLE"));
map.put("priority", priority);
resultList.add(map);
}
}
}
return resultList;
}
}
......@@ -3,6 +3,12 @@ package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.common.api.feign.JcsControlServerClient;
import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
import com.yeejoin.amos.boot.module.jcs.api.service.IControllerEquipService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
......@@ -11,7 +17,6 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip;
import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper;
/**
*
* <pre>
* 控制器设备 服务实现类
* </pre>
......@@ -20,10 +25,46 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper;
* @version $Id: ControllerEquipServiceImpl.java, v 0.1 2021年8月20日 上午10:16:33 gwb Exp $
*/
@Service
public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto, ControllerEquip, ControllerEquipMapper>
{
public List<ControllerEquipDto> queryAllForList() {
public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto, ControllerEquip, ControllerEquipMapper> implements IControllerEquipService {
@Autowired
JcsControlServerClient jcsControlServerClient;
public List<ControllerEquipDto> queryAllForList() {
return this.queryForList("", false);
}
/**
* 改变警铃状态 0关闭,1开启
*/
@Async
public void changeBell(Controller controller, String type) {
if (controller == null) return;
List<ControllerEquip> list = getControllerEquips(controller);
list.forEach(controllerEquip -> jcsControlServerClient.sendBellAction(controllerEquip.getNum(), type));
}
/**
* 改变广播状态 0关闭,1开启
*/
@Async
public void changeBroadcast(Controller controller, String type) {
if (controller == null) return;
List<ControllerEquip> list = getControllerEquips(controller);
list.forEach(controllerEquip -> jcsControlServerClient.sendFileAction(controllerEquip.getNum(), ""));
}
/**
* 改变车库门状态 0关闭,1开启
*/
@Async
public void changeDoor(Controller controller, String type) {
if (controller == null) return;
List<ControllerEquip> list = getControllerEquips(controller);
list.forEach(controllerEquip -> jcsControlServerClient.writeStateAction(controller.getIp(), controller.getPort(), Integer.parseInt(controllerEquip.getNum()), type));
}
private List<ControllerEquip> getControllerEquips(Controller controller) {
LambdaQueryWrapper<ControllerEquip> wrapper = new LambdaQueryWrapper<ControllerEquip>().eq(ControllerEquip::getControllerSeq, controller.getSequenceNbr());
return list(wrapper);
}
}
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerLog;
import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerLogMapper;
import com.yeejoin.amos.boot.module.jcs.api.service.IControllerLogService;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerLogDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 服务实现类
*
* @author system_generator
* @date 2021-12-03
*/
@Service
public class ControllerLogServiceImpl extends BaseService<ControllerLogDto, ControllerLog, ControllerLogMapper> implements IControllerLogService {
@Autowired
ControllerLogMapper controllerLogMapper;
/**
* 获取今天的记录
*/
public List<Map<String, Object>> selectToday() {
return controllerLogMapper.selectToday();
}
/**
* 分页查询
*/
public Page<ControllerLogDto> queryForControllerLogPage(Page<ControllerLogDto> page) {
return this.queryForPage(page, null, false);
}
/**
* 列表查询 示例
*/
public List<ControllerLogDto> queryForControllerLogList() {
return this.queryForList("", false);
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.List;
import java.util.*;
import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerLog;
import com.yeejoin.amos.boot.module.jcs.api.enums.ControllerTypeEnum;
import com.yeejoin.amos.boot.module.jcs.api.service.IControllerService;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto;
......@@ -11,7 +17,6 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper;
/**
*
* <pre>
* 联动控制器 服务实现类
* </pre>
......@@ -20,14 +25,198 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper;
* @version $Id: ControllerServiceImpl.java, v 0.1 2021年8月20日 上午10:15:49 gwb Exp $
*/
@Service
public class ControllerServiceImpl extends BaseService<ControllerDto, Controller, ControllerMapper>
{
public List<ControllerDto> queryAllForList() {
public class ControllerServiceImpl extends BaseService<ControllerDto, Controller, ControllerMapper> implements IControllerService {
/**
* 将延迟的任务存放在Hashtable中,以便在多个请求中控制任务的取消分享等操作
*/
private final Map<Long, TimerTask> tasks = new Hashtable<>();
private final Timer timer = new Timer();
public static final String CONTROLLER_STATE_CHANGED_TOPIC = "controllerStateChanged";
@Autowired
ControllerMapper controllerMapper;
@Autowired
ControllerEquipServiceImpl controllerEquipServiceImpl;
@Autowired
ControllerLogServiceImpl controllerLogServiceImpl;
@Autowired
private EmqKeeper emqKeeper;
public List<ControllerDto> queryAllForList() {
return this.queryForList("", false);
}
public List<ControllerDto> queryForList(String station, String type) {
public List<ControllerDto> queryForList(String station, String type) {
return this.queryForList("", false, station, type);
}
public List<ControllerDto> getCurrentStationController(Long sequenceNbr) {
return controllerMapper.getCurrentStationController(sequenceNbr);
}
/**
* 更新station联动控制器状态
* 3.1.3 警铃、广播、车库门 联动规则:
* 当 点击【全部启动】、【某大队全部启动】时:
* 1> 首先:消防警铃第一时间 响铃持续15s 后自动关闭。
* 2> 然后:警铃 响铃结束后,广播系统开启。广播 启动预制的 广播音频, 播放。
* 3> 车库门和警铃第一时间自动开启。
* 4> 系统 需要打印出 “警铃、广播、车库门 ” 启动指令和 停止指令的 日志。
* 当同时 点击【启动警铃】、【启动广播】时
* 1> 首先:消防警铃第一时间 响铃持续15s 后自动关闭。
* 2> 然后:警铃 响铃结束后,广播系统开启。广播 启动预制的 广播音频, 播放。
*/
public boolean changeControllerState(Controller[] controllers) {
boolean isBatch = controllers.length > 1;
if (isBatch) {//全部操作
//分组
HashSet<String> groupTypes = new HashSet<>();
for (Controller controller : controllers) {
groupTypes.add(controller.getStation());
}
//按分组进行归类
List<Map<String, Controller>> groups = new ArrayList<>();
groupTypes.forEach(groupType -> {
Map<String, Controller> group = new HashMap<>();
for (Controller controller : controllers) {
if (groupType.equals(controller.getStation())) group.put(controller.getType(), controller);
}
groups.add(group);
});
//开始处理
startJob(groups);
} else {//单个操作
for (Controller controller : controllers) {
//保存日志
saveLog(controller);
String type = controller.getType();
// 打开警铃,并开始计时15秒,若15秒内启动广播,则播放完警铃后再播放广播
if ("0".equals(controller.getState())) {//关闭操作
if (ControllerTypeEnum.BELL.getCode().equals(type)) {
//取消该警铃的任务
TimerTask stopBellTaskHistory = tasks.get(controller.getSequenceNbr());
if (stopBellTaskHistory != null) {
stopBellTaskHistory.cancel();
tasks.remove(controller.getSequenceNbr());
}
controllerEquipServiceImpl.changeBell(controller, "0");//关闭警铃
} else if (ControllerTypeEnum.BROADCAST.getCode().equals(type)) {
//取消该广播的任务
TimerTask startBroadcastTaskHistory = tasks.get(controller.getSequenceNbr());
if (startBroadcastTaskHistory != null) {
startBroadcastTaskHistory.cancel();
tasks.remove(controller.getSequenceNbr());
}
controllerEquipServiceImpl.changeBroadcast(controller, "0");//关闭广播
} else if (ControllerTypeEnum.DOOR.getCode().equals(type)) {//车库门不能关闭
}
} else {//启动操作
if (ControllerTypeEnum.BELL.getCode().equals(type)) {//启动警铃
controllerEquipServiceImpl.changeBell(controller, "1");//启动警铃
//开始计时15秒,15秒后关闭警铃
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
tasks.remove(controller.getSequenceNbr());
controllerEquipServiceImpl.changeBell(controller, "0");//关闭警铃
}
};
tasks.put(controller.getSequenceNbr(), timerTask);
timer.schedule(timerTask, 15000);
} else if (ControllerTypeEnum.BROADCAST.getCode().equals(type)) {//启动广播
controllerEquipServiceImpl.changeBroadcast(controller, "1");//开启广播
} else if (ControllerTypeEnum.DOOR.getCode().equals(type)) {//启动车库门
controllerEquipServiceImpl.changeDoor(controller, "1");//开启车库门
}
}
}
}
return true;
}
/**
* 全部操作:启动警铃,启动车库门,15秒后关闭警铃,启动广播
*/
public void startJob(List<Map<String, Controller>> groups) {
groups.forEach(group -> {
Controller bellController = group.get(ControllerTypeEnum.BELL.getCode());
Controller broadcastController = group.get(ControllerTypeEnum.BROADCAST.getCode());
Controller doorController = group.get(ControllerTypeEnum.DOOR.getCode());
//保存操作日志
saveLog(bellController);
saveLog(broadcastController);
saveLog(doorController);
if ("0".equals(bellController.getState())) {//全部关闭(车库们不能关闭)
//先查看是否有未执行的历史任务,如果有则取消任务
TimerTask stopBellTaskHistory = tasks.get(bellController.getSequenceNbr());
if (stopBellTaskHistory != null) {
stopBellTaskHistory.cancel();
tasks.remove(bellController.getSequenceNbr());
}
if (broadcastController != null) {
TimerTask startBroadcastTaskHistory = tasks.get(broadcastController.getSequenceNbr());
if (startBroadcastTaskHistory != null) {
startBroadcastTaskHistory.cancel();
tasks.remove(broadcastController.getSequenceNbr());
}
}
controllerEquipServiceImpl.changeBell(bellController, "0");//关闭警铃
controllerEquipServiceImpl.changeBroadcast(broadcastController, "0");//关闭广播
} else {//全部打开
//立即启动警铃,打开车库门
controllerEquipServiceImpl.changeBell(bellController, "1");//开启警铃
controllerEquipServiceImpl.changeDoor(doorController, "1");//开启车库门
//15秒后关闭警铃,启动广播
TimerTask stopBellTask = new TimerTask() {
@Override
public void run() {
tasks.remove(bellController.getSequenceNbr());
controllerEquipServiceImpl.changeBell(bellController, "0");//关闭警铃
}
};
TimerTask startBroadcastTask = new TimerTask() {
@Override
public void run() {
tasks.remove(broadcastController.getSequenceNbr());
controllerEquipServiceImpl.changeBell(broadcastController, "1");//开启广播
}
};
//先查看是否有未执行的历史任务,如果有则取消任务
TimerTask stopBellTaskHistory = tasks.get(bellController.getSequenceNbr());
if (stopBellTaskHistory != null) stopBellTaskHistory.cancel();
TimerTask startBroadcastTaskHistory = tasks.get(broadcastController.getSequenceNbr());
if (startBroadcastTaskHistory != null) startBroadcastTaskHistory.cancel();
//保存新的任务至map中,同时开始调度新任务
tasks.put(bellController.getSequenceNbr(), stopBellTask);
tasks.put(broadcastController.getSequenceNbr(), startBroadcastTask);
timer.schedule(stopBellTask, 15000);
timer.schedule(startBroadcastTask, 16000);
}
});
}
/**
* 保存操作日志
*/
private void saveLog(Controller controller) {
if (controller == null) return;
boolean update = updateById(controller);
if (update) {
ControllerLog controllerLog = new ControllerLog();
controllerLog.setControllerSeq(controller.getSequenceNbr());
controllerLog.setState(controller.getState());
controllerLog.setExecuteDate(new Date());
controllerLogServiceImpl.save(controllerLog);
}
// 分发状态变更通知
try {
emqKeeper.getMqttClient().publish(CONTROLLER_STATE_CHANGED_TOPIC, "".getBytes(), 2, true);
} catch (MqttException e) {
e.printStackTrace();
}
}
}
......@@ -1480,7 +1480,9 @@ public class ExcelServiceImpl {
list.add(row.getAndIncrement());
list.add(o.getFireTeamName() + "@" + o.getFireTeamId());
list.add(o.getName() + "@" + o.getSequenceNbr());
list.add(o.getJobTitle() + "@" + o.getJobTitleCode());
if(!ValidationUtil.isEmpty(o.getJobTitle())) {
list.add(o.getJobTitle() + "@" + o.getJobTitleCode());
}
data.add(list);
});
}
......
package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.jcs.api.entity.*;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.MqttException;
......@@ -47,12 +44,6 @@ import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferResourceDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferSimpleDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.ResourceStatisticsDto;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled;
import com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue;
import com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransfer;
import com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransferCompany;
import com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransferCompanyResources;
import com.yeejoin.amos.boot.module.jcs.api.entity.Template;
import com.yeejoin.amos.boot.module.jcs.api.enums.AlertFeedbackStatusEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum;
......@@ -69,165 +60,168 @@ import com.yeejoin.amos.component.rule.config.RuleConfig;
*/
@Service
public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, PowerTransfer, PowerTransferMapper>
implements IPowerTransferService {
@Autowired
AlertCalledServiceImpl alertCalledService;
@Autowired
PowerTransferCompanyServiceImpl powerTransferCompanyService;
@Autowired
PowerTransferCompanyResourcesServiceImpl powerTransferCompanyResourcesService;
@Autowired
TemplateServiceImpl templateService;
@Autowired
AlertFormValueServiceImpl alertFormValueService;
@Autowired
EquipFeignClient equipFeignService;
@Autowired
FireTeamServiceImpl fireTeamService;
@Autowired
PowerTransferMapper powerTransferMapper;
@Autowired
EquipFeignClient equipFeignClient;
@Autowired
private EmqKeeper emqKeeper;
@Value("${mqtt.topic.command.power.deployment}")
private String topic;
@Autowired
private DutyCarServiceImpl dutyCarService;
@Autowired
FireTeamServiceImpl iFireTeamService;
@Autowired
DynamicFormInstanceMapper dynamicFormInstanceMapper;
@Autowired
RuleAlertCalledService ruleAlertCalledService;
@Override
public PowerTransferSimpleDto getPowerTransferList(Long alertCalledId) {
List<PowerTransferCompanyResourcesDto> powerTransferList = this.baseMapper.getPowerTransferList(alertCalledId);
PowerTransferSimpleDto powerTransferSimpleDto = new PowerTransferSimpleDto();
int resourcesCount = powerTransferList.size();
powerTransferSimpleDto.setResourcesCount(resourcesCount);
powerTransferSimpleDto.setResourcesList(powerTransferList);
return powerTransferSimpleDto;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean createPowerTransfer(PowerTransferDto powerTransferDto) {
try {
// 获取调派ID
Long alertCalledId = powerTransferDto.getAlertCalledId();
int count = count(new QueryWrapper<PowerTransfer>().eq("alert_called_id", alertCalledId));
String dispatch_num = alertCalledId.toString() + (count + 1);
// 获取警情详情
AlertCalledObjsDto alertCalled = (AlertCalledObjsDto) alertCalledService
.selectAlertCalledByIdNoRedisNew(alertCalledId);
// 创建力量调派
PowerTransfer powerTransfer = new PowerTransfer();
BeanUtils.copyProperties(powerTransferDto, powerTransfer);
BeanUtils.copyProperties(alertCalled.getAlertCalled(), powerTransfer);
powerTransfer.setDispatchNum(dispatch_num);
powerTransfer.setSequenceNbr(null);
save(powerTransfer);
Long powerTransferSequenceNbr = powerTransfer.getSequenceNbr();
// 获取任务派发模板
Template template = templateService
.getOne(new QueryWrapper<Template>().eq("type_code", "LLDP").eq("format", false));
String content = template.getContent();
Map<String, String> definitions = new HashMap<>();
// initDefinitions(definitions, alertCalled, powerTransferDto);
// 创建力量调派单位
createPowerTransferCompany(powerTransferDto, powerTransferSequenceNbr, definitions, content, alertCalled);
// 封装调派任务的集合,以便于实现任务规则校验
try {
packagePowerTransferDetail(powerTransferDto);
} catch (Exception e) {
log.error("调用规则失败:PowerTransferServiceImpl。createPowerTransfer()");
}
// 发送调派通知
// 通知实战指挥页面发送mqtt 默认发送 String 类型 0, 新警情 1 警情状态变化
emqKeeper.getMqttClient().publish(topic, "0".getBytes(), RuleConfig.DEFAULT_QOS, true);
} catch (MqttException e) {
throw new RuntimeException();
}
return true;
}
private void packagePowerTransferDetail(PowerTransferDto powerTransferDto) throws Exception {
List<PowerTransferCompanyDto> powerTransferCompanyDtoList = powerTransferDto.getPowerTransferCompanyDotList();
Set<PowerTransferCompanyDto> fullTimeList = new HashSet<PowerTransferCompanyDto>();
Set<PowerTransferCompanyDto> medicalTeamList = new HashSet<PowerTransferCompanyDto>();
Set<PowerTransferCompanyDto> monitorTeamList = new HashSet<PowerTransferCompanyDto>();
for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDtoList) {
if (FireBrigadeTypeEnum.专职消防队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
fullTimeList.add(powerTransferCompanyDto);
} else if (FireBrigadeTypeEnum.医疗救援队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
medicalTeamList.add(powerTransferCompanyDto);
} else if (FireBrigadeTypeEnum.监控大队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
monitorTeamList.add(powerTransferCompanyDto);
}
}
if (fullTimeList.size() > 0) {
ruleAlertCalledService.powerTransferCalledRule(fullTimeList, powerTransferDto.getAlertCalledId(),
FireBrigadeTypeEnum.专职消防队.getKey());
}
if (medicalTeamList.size() > 0) {
ruleAlertCalledService.powerTransferCalledRule(medicalTeamList, powerTransferDto.getAlertCalledId(),
FireBrigadeTypeEnum.医疗救援队.getKey());
}
if (monitorTeamList.size() > 0) {
ruleAlertCalledService.powerTransferCalledRule(monitorTeamList, powerTransferDto.getAlertCalledId(),
FireBrigadeTypeEnum.监控大队.getKey());
}
}
@Override
public List<FireBrigadeResourceDto> getPowerTree(String type) {
List<FireBrigadeResourceDto> fireBrigadeResourceList = Lists.newArrayList();
if (type != null && !"".equals(type) && "1214".equals(type)) {
// 3.消防队伍-监控大队
List<FireBrigadeResourceDto> monitorFireBrigadeList1 = fireTeamService
.listMonitorFireBrigade(FireBrigadeTypeEnum.医疗救援队.getCode());
FireBrigadeResourceDto monitorResourceDto1 = new FireBrigadeResourceDto();
monitorResourceDto1.setId("-1");
monitorResourceDto1.setName(FireBrigadeTypeEnum.医疗救援队.getName());
monitorResourceDto1.setType(FireBrigadeTypeEnum.医疗救援队.getKey());
monitorResourceDto1.setChildren(monitorFireBrigadeList1);
if (!CollectionUtils.isEmpty(monitorFireBrigadeList1)) {
fireBrigadeResourceList.add(monitorResourceDto1);
}
}
// 1.调用装备服务接口查询车辆列表
List<FireBrigadeResourceDto> fireCarDtoList = Lists.newArrayList();
ResponseModel<Object> result = equipFeignService.getFireCarListAll();
implements IPowerTransferService {
@Autowired
AlertCalledServiceImpl alertCalledService;
@Autowired
PowerTransferCompanyServiceImpl powerTransferCompanyService;
@Autowired
PowerTransferCompanyResourcesServiceImpl powerTransferCompanyResourcesService;
@Autowired
TemplateServiceImpl templateService;
@Autowired
AlertFormValueServiceImpl alertFormValueService;
@Autowired
EquipFeignClient equipFeignService;
@Autowired
FireTeamServiceImpl fireTeamService;
@Autowired
PowerTransferMapper powerTransferMapper;
@Autowired
EquipFeignClient equipFeignClient;
@Autowired
private EmqKeeper emqKeeper;
@Value("${mqtt.topic.command.power.deployment}")
private String topic;
@Autowired
private DutyCarServiceImpl dutyCarService;
@Autowired
FireTeamServiceImpl iFireTeamService;
@Autowired
DynamicFormInstanceMapper dynamicFormInstanceMapper;
@Autowired
RuleAlertCalledService ruleAlertCalledService;
@Autowired
ControllerServiceImpl controllerServiceImpl;
@Override
public PowerTransferSimpleDto getPowerTransferList(Long alertCalledId) {
List<PowerTransferCompanyResourcesDto> powerTransferList = this.baseMapper.getPowerTransferList(alertCalledId);
PowerTransferSimpleDto powerTransferSimpleDto = new PowerTransferSimpleDto();
int resourcesCount = powerTransferList.size();
powerTransferSimpleDto.setResourcesCount(resourcesCount);
powerTransferSimpleDto.setResourcesList(powerTransferList);
return powerTransferSimpleDto;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean createPowerTransfer(PowerTransferDto powerTransferDto) {
try {
// 获取调派ID
Long alertCalledId = powerTransferDto.getAlertCalledId();
int count = count(new QueryWrapper<PowerTransfer>().eq("alert_called_id", alertCalledId));
String dispatch_num = alertCalledId.toString() + (count + 1);
// 获取警情详情
AlertCalledObjsDto alertCalled = (AlertCalledObjsDto) alertCalledService
.selectAlertCalledByIdNoRedisNew(alertCalledId);
// 创建力量调派
PowerTransfer powerTransfer = new PowerTransfer();
BeanUtils.copyProperties(powerTransferDto, powerTransfer);
BeanUtils.copyProperties(alertCalled.getAlertCalled(), powerTransfer);
powerTransfer.setDispatchNum(dispatch_num);
powerTransfer.setSequenceNbr(null);
save(powerTransfer);
Long powerTransferSequenceNbr = powerTransfer.getSequenceNbr();
// 获取任务派发模板
Template template = templateService
.getOne(new QueryWrapper<Template>().eq("type_code", "LLDP").eq("format", false));
String content = template.getContent();
Map<String, String> definitions = new HashMap<>();
// initDefinitions(definitions, alertCalled, powerTransferDto);
// 创建力量调派单位
createPowerTransferCompany(powerTransferDto, powerTransferSequenceNbr, definitions, content, alertCalled);
// 封装调派任务的集合,以便于实现任务规则校验
try {
packagePowerTransferDetail(powerTransferDto);
} catch (Exception e) {
log.error("调用规则失败:PowerTransferServiceImpl。createPowerTransfer()");
}
// 发送调派通知
// 通知实战指挥页面发送mqtt 默认发送 String 类型 0, 新警情 1 警情状态变化
emqKeeper.getMqttClient().publish(topic, "0".getBytes(), RuleConfig.DEFAULT_QOS, true);
} catch (MqttException e) {
throw new RuntimeException();
}
return true;
}
private void packagePowerTransferDetail(PowerTransferDto powerTransferDto) throws Exception {
List<PowerTransferCompanyDto> powerTransferCompanyDtoList = powerTransferDto.getPowerTransferCompanyDotList();
Set<PowerTransferCompanyDto> fullTimeList = new HashSet<PowerTransferCompanyDto>();
Set<PowerTransferCompanyDto> medicalTeamList = new HashSet<PowerTransferCompanyDto>();
Set<PowerTransferCompanyDto> monitorTeamList = new HashSet<PowerTransferCompanyDto>();
for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDtoList) {
if (FireBrigadeTypeEnum.专职消防队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
fullTimeList.add(powerTransferCompanyDto);
} else if (FireBrigadeTypeEnum.医疗救援队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
medicalTeamList.add(powerTransferCompanyDto);
} else if (FireBrigadeTypeEnum.监控大队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
monitorTeamList.add(powerTransferCompanyDto);
}
}
if (fullTimeList.size() > 0) {
ruleAlertCalledService.powerTransferCalledRule(fullTimeList, powerTransferDto.getAlertCalledId(),
FireBrigadeTypeEnum.专职消防队.getKey());
}
if (medicalTeamList.size() > 0) {
ruleAlertCalledService.powerTransferCalledRule(medicalTeamList, powerTransferDto.getAlertCalledId(),
FireBrigadeTypeEnum.医疗救援队.getKey());
}
if (monitorTeamList.size() > 0) {
ruleAlertCalledService.powerTransferCalledRule(monitorTeamList, powerTransferDto.getAlertCalledId(),
FireBrigadeTypeEnum.监控大队.getKey());
}
}
@Override
public List<FireBrigadeResourceDto> getPowerTree(String type) {
List<FireBrigadeResourceDto> fireBrigadeResourceList = Lists.newArrayList();
if (type != null && !"".equals(type) && "1214".equals(type)) {
// 3.消防队伍-监控大队
List<FireBrigadeResourceDto> monitorFireBrigadeList1 = fireTeamService
.listMonitorFireBrigade(FireBrigadeTypeEnum.医疗救援队.getCode());
FireBrigadeResourceDto monitorResourceDto1 = new FireBrigadeResourceDto();
monitorResourceDto1.setId("-1");
monitorResourceDto1.setName(FireBrigadeTypeEnum.医疗救援队.getName());
monitorResourceDto1.setType(FireBrigadeTypeEnum.医疗救援队.getKey());
monitorResourceDto1.setChildren(monitorFireBrigadeList1);
if (!CollectionUtils.isEmpty(monitorFireBrigadeList1)) {
fireBrigadeResourceList.add(monitorResourceDto1);
}
}
// 1.调用装备服务接口查询车辆列表
List<FireBrigadeResourceDto> fireCarDtoList = Lists.newArrayList();
ResponseModel<Object> result = equipFeignService.getFireCarListAll();
// if (!ObjectUtils.isEmpty(result)) {
// List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
// if (!ValidationUtil.isEmpty(fireCarListMapList)) {
......@@ -248,76 +242,76 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
// }
// }
// 查询车辆当前任务状态
QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>();
// queryWrapper.notIn("car_status",
// FireCarStatusEnum.返队.getCode(),FireCarStatusEnum.加油.getCode(),FireCarStatusEnum.演练.getCode(),FireCarStatusEnum.训练.getCode(),FireCarStatusEnum.试车.getCode());
queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode());
List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper);
Map<String, String> appleMap = alertFormValue != null && alertFormValue.size() > 0
? alertFormValue.stream().collect(Collectors.toMap(PowerTransferCompanyResources::getResourcesId,
PowerTransferCompanyResources::getCarStatus))
: null;
if (!ObjectUtils.isEmpty(result)) {
List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
if (!ValidationUtil.isEmpty(fireCarListMapList)) {
fireCarListMapList.stream().filter(car -> ObjectUtils.isNotEmpty(car.get("teamId"))).forEach(car -> {
FireBrigadeResourceDto fireCarDto = (FireBrigadeResourceDto) Bean.mapToBean(car,
FireBrigadeResourceDto.class);
// TODO 后期根据车物联状态来返回,现在为"(装备)在位=执勤","(装备)执勤=出动"
if (FireCarStatusEnum.执勤.getCode().equals(fireCarDto.getCarState())) {
fireCarDto.setCarStateDesc(FireCarStatusEnum.执勤.getName());
} else {
if (appleMap != null) {
String state = appleMap.containsKey(car.get("id")) ? appleMap.get(car.get("id")) : null;
fireCarDto.setCarState(state);
fireCarDto
.setCarStateDesc(state != null ? FireCarStatusEnum.getEnum(state).getName() : null);
} else {
fireCarDto.setCarState(null);
fireCarDto.setCarStateDesc(null);
}
}
fireCarDtoList.add(fireCarDto);
});
}
}
// 2.查询消防队伍列表
List<FireTeam> fullTimeFireBrigadeList = fireTeamService.list(
new QueryWrapper<FireTeam>().eq("type_code", FireBrigadeTypeEnum.专职消防队.getCode()).eq("is_delete", 0));
if (!CollectionUtils.isEmpty(fullTimeFireBrigadeList)) {
Map<String, List<FireBrigadeResourceDto>> resultMap = fireCarDtoList.stream()
.collect(Collectors.groupingBy(FireBrigadeResourceDto::getTeamId));
if (!ValidationUtil.isEmpty(fullTimeFireBrigadeList)) {
fullTimeFireBrigadeList.forEach(brigade -> {
if (!CollectionUtils.isEmpty(resultMap.get(brigade.getSequenceNbr().toString()))) {
FireBrigadeResourceDto fireCarResourceDto = new FireBrigadeResourceDto();
List<FireBrigadeResourceDto> fireBrigadeResourceDtoList = resultMap
.get(brigade.getSequenceNbr().toString());
long onDutyCarCount = fireBrigadeResourceDtoList.stream()
.filter(car -> FireCarStatusEnum.执勤.getCode().equals(car.getCarState())).count();
long outCarCount = fireBrigadeResourceDtoList.size() - onDutyCarCount;
fireCarResourceDto.setId(brigade.getSequenceNbr().toString());
fireCarResourceDto.setType(FireBrigadeTypeEnum.专职消防队.getKey());
fireCarResourceDto.setName(brigade.getName());
fireCarResourceDto.getChildren().addAll(fireBrigadeResourceDtoList);
fireCarResourceDto.setOutCount((int) outCarCount);
fireCarResourceDto.setOnDutyCount((int) onDutyCarCount);
fireBrigadeResourceList.add(fireCarResourceDto);
}
});
}
}
// 3.消防队伍-监控大队
List<FireBrigadeResourceDto> monitorFireBrigadeList = fireTeamService
.listMonitorFireBrigade(FireBrigadeTypeEnum.监控大队.getCode());
// List<FireBrigadeResourceDto> monitorFireBrigadeList =
// fireTeamService.listMonitorFireBrigade();
/* bug 2403 队伍未显示图片 2021-09-23 陈召开始 */
// 查询车辆当前任务状态
QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>();
// queryWrapper.notIn("car_status",
// FireCarStatusEnum.返队.getCode(),FireCarStatusEnum.加油.getCode(),FireCarStatusEnum.演练.getCode(),FireCarStatusEnum.训练.getCode(),FireCarStatusEnum.试车.getCode());
queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode());
List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper);
Map<String, String> appleMap = alertFormValue != null && alertFormValue.size() > 0
? alertFormValue.stream().collect(Collectors.toMap(PowerTransferCompanyResources::getResourcesId,
PowerTransferCompanyResources::getCarStatus))
: null;
if (!ObjectUtils.isEmpty(result)) {
List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
if (!ValidationUtil.isEmpty(fireCarListMapList)) {
fireCarListMapList.stream().filter(car -> ObjectUtils.isNotEmpty(car.get("teamId"))).forEach(car -> {
FireBrigadeResourceDto fireCarDto = (FireBrigadeResourceDto) Bean.mapToBean(car,
FireBrigadeResourceDto.class);
// TODO 后期根据车物联状态来返回,现在为"(装备)在位=执勤","(装备)执勤=出动"
if (FireCarStatusEnum.执勤.getCode().equals(fireCarDto.getCarState())) {
fireCarDto.setCarStateDesc(FireCarStatusEnum.执勤.getName());
} else {
if (appleMap != null) {
String state = appleMap.containsKey(car.get("id")) ? appleMap.get(car.get("id")) : null;
fireCarDto.setCarState(state);
fireCarDto
.setCarStateDesc(state != null ? FireCarStatusEnum.getEnum(state).getName() : null);
} else {
fireCarDto.setCarState(null);
fireCarDto.setCarStateDesc(null);
}
}
fireCarDtoList.add(fireCarDto);
});
}
}
// 2.查询消防队伍列表
List<FireTeam> fullTimeFireBrigadeList = fireTeamService.list(
new QueryWrapper<FireTeam>().eq("type_code", FireBrigadeTypeEnum.专职消防队.getCode()).eq("is_delete", 0));
if (!CollectionUtils.isEmpty(fullTimeFireBrigadeList)) {
Map<String, List<FireBrigadeResourceDto>> resultMap = fireCarDtoList.stream()
.collect(Collectors.groupingBy(FireBrigadeResourceDto::getTeamId));
if (!ValidationUtil.isEmpty(fullTimeFireBrigadeList)) {
fullTimeFireBrigadeList.forEach(brigade -> {
if (!CollectionUtils.isEmpty(resultMap.get(brigade.getSequenceNbr().toString()))) {
FireBrigadeResourceDto fireCarResourceDto = new FireBrigadeResourceDto();
List<FireBrigadeResourceDto> fireBrigadeResourceDtoList = resultMap
.get(brigade.getSequenceNbr().toString());
long onDutyCarCount = fireBrigadeResourceDtoList.stream()
.filter(car -> FireCarStatusEnum.执勤.getCode().equals(car.getCarState())).count();
long outCarCount = fireBrigadeResourceDtoList.size() - onDutyCarCount;
fireCarResourceDto.setId(brigade.getSequenceNbr().toString());
fireCarResourceDto.setType(FireBrigadeTypeEnum.专职消防队.getKey());
fireCarResourceDto.setName(brigade.getName());
fireCarResourceDto.getChildren().addAll(fireBrigadeResourceDtoList);
fireCarResourceDto.setOutCount((int) outCarCount);
fireCarResourceDto.setOnDutyCount((int) onDutyCarCount);
fireBrigadeResourceList.add(fireCarResourceDto);
}
});
}
}
// 3.消防队伍-监控大队
List<FireBrigadeResourceDto> monitorFireBrigadeList = fireTeamService
.listMonitorFireBrigade(FireBrigadeTypeEnum.监控大队.getCode());
// List<FireBrigadeResourceDto> monitorFireBrigadeList =
// fireTeamService.listMonitorFireBrigade();
/* bug 2403 队伍未显示图片 2021-09-23 陈召开始 */
// for (FireBrigadeResourceDto fireBrigadeResourceDto : monitorFireBrigadeList) {
// if (fireBrigadeResourceDto.getPic() != null) {
// String[] split = fireBrigadeResourceDto.getPic().split(",");
......@@ -330,54 +324,54 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
// }
// }
// }
/* bug 2403 队伍未显示图片 2021-09-23 陈召结束 */
FireBrigadeResourceDto monitorResourceDto = new FireBrigadeResourceDto();
monitorResourceDto.setId("0");
monitorResourceDto.setName(FireBrigadeTypeEnum.监控大队.getName());
monitorResourceDto.setType(FireBrigadeTypeEnum.监控大队.getKey());
monitorResourceDto.setChildren(monitorFireBrigadeList);
if (!CollectionUtils.isEmpty(monitorFireBrigadeList)) {
fireBrigadeResourceList.add(monitorResourceDto);
}
return fireBrigadeResourceList;
}
private List<PowerTransferCompanyResources> DtoEntityBatchConvert(
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList,
Long powerTransferCompanySequenceNbr) {
ArrayList<PowerTransferCompanyResources> powerTransferCompanyResourcesList = new ArrayList<>();
PowerTransferCompanyResources powerTransferCompanyResources;
List idList = powerTransferCompanyResourcesDtoList.stream()
.map(PowerTransferCompanyResourcesDto::getResourcesId).collect(Collectors.toList());
QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode());
queryWrapper.in("resources_id", idList);
List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper);
if (alertFormValue != null && alertFormValue.size() > 0) {
throw new RuntimeException("已选车辆有已调派车辆!");
} else {
for (PowerTransferCompanyResourcesDto powerTransferCompanyResourcesDto : powerTransferCompanyResourcesDtoList) {
powerTransferCompanyResources = new PowerTransferCompanyResources();
BeanUtils.copyProperties(powerTransferCompanyResourcesDto, powerTransferCompanyResources);
powerTransferCompanyResources.setPowerTransferCompanyId(powerTransferCompanySequenceNbr);
// 资源状态
powerTransferCompanyResources.setStatus(FireCarStatusEnum.执行中.getCode());
// 资源状态
powerTransferCompanyResources.setCarStatus(FireCarStatusEnum.出动.getCode());
powerTransferCompanyResourcesList.add(powerTransferCompanyResources);
}
return powerTransferCompanyResourcesList;
}
}
private void initDefinitions(Map<String, String> definitions, AlertCalled alertCalled,
PowerTransferDto powerTransferDto) {
List<AlertFormValue> alertFormValue = alertFormValueService
.list(new QueryWrapper<AlertFormValue>().eq("alert_called_id", alertCalled.getSequenceNbr()));
/* bug 2403 队伍未显示图片 2021-09-23 陈召结束 */
FireBrigadeResourceDto monitorResourceDto = new FireBrigadeResourceDto();
monitorResourceDto.setId("0");
monitorResourceDto.setName(FireBrigadeTypeEnum.监控大队.getName());
monitorResourceDto.setType(FireBrigadeTypeEnum.监控大队.getKey());
monitorResourceDto.setChildren(monitorFireBrigadeList);
if (!CollectionUtils.isEmpty(monitorFireBrigadeList)) {
fireBrigadeResourceList.add(monitorResourceDto);
}
return fireBrigadeResourceList;
}
private List<PowerTransferCompanyResources> DtoEntityBatchConvert(
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList,
Long powerTransferCompanySequenceNbr) {
ArrayList<PowerTransferCompanyResources> powerTransferCompanyResourcesList = new ArrayList<>();
PowerTransferCompanyResources powerTransferCompanyResources;
List idList = powerTransferCompanyResourcesDtoList.stream()
.map(PowerTransferCompanyResourcesDto::getResourcesId).collect(Collectors.toList());
QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode());
queryWrapper.in("resources_id", idList);
List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper);
if (alertFormValue != null && alertFormValue.size() > 0) {
throw new RuntimeException("已选车辆有已调派车辆!");
} else {
for (PowerTransferCompanyResourcesDto powerTransferCompanyResourcesDto : powerTransferCompanyResourcesDtoList) {
powerTransferCompanyResources = new PowerTransferCompanyResources();
BeanUtils.copyProperties(powerTransferCompanyResourcesDto, powerTransferCompanyResources);
powerTransferCompanyResources.setPowerTransferCompanyId(powerTransferCompanySequenceNbr);
// 资源状态
powerTransferCompanyResources.setStatus(FireCarStatusEnum.执行中.getCode());
// 资源状态
powerTransferCompanyResources.setCarStatus(FireCarStatusEnum.出动.getCode());
powerTransferCompanyResourcesList.add(powerTransferCompanyResources);
}
return powerTransferCompanyResourcesList;
}
}
private void initDefinitions(Map<String, String> definitions, AlertCalled alertCalled,
PowerTransferDto powerTransferDto) {
List<AlertFormValue> alertFormValue = alertFormValueService
.list(new QueryWrapper<AlertFormValue>().eq("alert_called_id", alertCalled.getSequenceNbr()));
// definitions.put("rescueGrid", alertCalled.getRescueGrid());
// definitions.put("alertType", alertCalled.getAlertType());
// definitions.put("address", alertCalled.getAddress());
......@@ -385,373 +379,373 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
// definitions.put("casualtiesNum", alertCalled.getCasualtiesNum().toString());
// definitions.put("companyName", powerTransferDto.getCompanyName());
for (AlertFormValue formValue : alertFormValue) {
definitions.put(formValue.getFieldCode(), formValue.getFieldValue());
}
}
private String getTaskInformation(String content, Map<String, String> definitions) {
int size = definitions.size();
String[] keys = definitions.keySet().toArray(new String[size]);
String[] values = definitions.values().toArray(new String[size]);
return StringUtils.replaceEach(content, keys, values);
}
private void createPowerTransferCompany(PowerTransferDto powerTransferDto, Long powerTransferSequenceNbr,
Map<String, String> definitions, String content, AlertCalledObjsDto alertCalledObjsDto) {
List<PowerTransferCompanyDto> powerTransferCompanyDotList = powerTransferDto.getPowerTransferCompanyDotList();
PowerTransferCompany powerTransferCompany;
List<Object> carStatusInfoDtoList = Lists.newArrayList();
AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled();
// 初始化警情 信息
/**
* 构建警情报送规则对象
*/
AlertCalledRo alertCalledRo = new AlertCalledRo();
String replaceContent ="";
if(null != alertCalled) {
replaceContent = RuleAlertCalledService.init(alertCalledRo, alertCalledObjsDto);
}
definitions.put("rescueGrid", alertCalled.getAddress());
definitions.put("type", alertCalled.getAlertType());
definitions.put("contactUser", alertCalled.getContactUser());
definitions.put("contactPhone", alertCalled.getContactPhone());
definitions.put("type", alertCalled.getAlertType());
definitions.put("replaceContent", replaceContent);
definitions.put("callTime",
DateUtils.convertDateToString(alertCalled.getCallTime(), DateUtils.DATE_TIME_PATTERN));
for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDotList) {
powerTransferCompany = new PowerTransferCompany();
BeanUtils.copyProperties(powerTransferCompanyDto, powerTransferCompany);
powerTransferCompany.setPowerTransferId(powerTransferSequenceNbr);
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList = powerTransferCompanyDto
.getPowerTransferCompanyResourcesDtoList();
if (powerTransferCompanyResourcesDtoList.size() == 0) {
powerTransferCompany.setIsDistributionAgencies(true);
definitions.put("departmentName", powerTransferCompanyDto.getCompanyName());
definitions.put("content", "");
powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions));
powerTransferCompanyService.save(powerTransferCompany);
powerTransferCompanyDto.setSequenceNbr(powerTransferCompany.getSequenceNbr());
} else {
powerTransferCompany.setIsDistributionAgencies(false);
StringBuilder taskInformation = new StringBuilder();
for (PowerTransferCompanyResourcesDto powerTransferCompanyResourcesDto : powerTransferCompanyResourcesDtoList) {
for (AlertFormValue formValue : alertFormValue) {
definitions.put(formValue.getFieldCode(), formValue.getFieldValue());
}
}
private String getTaskInformation(String content, Map<String, String> definitions) {
int size = definitions.size();
String[] keys = definitions.keySet().toArray(new String[size]);
String[] values = definitions.values().toArray(new String[size]);
return StringUtils.replaceEach(content, keys, values);
}
private void createPowerTransferCompany(PowerTransferDto powerTransferDto, Long powerTransferSequenceNbr,
Map<String, String> definitions, String content, AlertCalledObjsDto alertCalledObjsDto) {
List<PowerTransferCompanyDto> powerTransferCompanyDotList = powerTransferDto.getPowerTransferCompanyDotList();
PowerTransferCompany powerTransferCompany;
List<Object> carStatusInfoDtoList = Lists.newArrayList();
AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled();
// 初始化警情 信息
/**
* 构建警情报送规则对象
*/
AlertCalledRo alertCalledRo = new AlertCalledRo();
String replaceContent = "";
if (null != alertCalled) {
replaceContent = RuleAlertCalledService.init(alertCalledRo, alertCalledObjsDto);
}
definitions.put("rescueGrid", alertCalled.getAddress());
definitions.put("type", alertCalled.getAlertType());
definitions.put("contactUser", alertCalled.getContactUser());
definitions.put("contactPhone", alertCalled.getContactPhone());
definitions.put("type", alertCalled.getAlertType());
definitions.put("replaceContent", replaceContent);
definitions.put("callTime",
DateUtils.convertDateToString(alertCalled.getCallTime(), DateUtils.DATE_TIME_PATTERN));
for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDotList) {
powerTransferCompany = new PowerTransferCompany();
BeanUtils.copyProperties(powerTransferCompanyDto, powerTransferCompany);
powerTransferCompany.setPowerTransferId(powerTransferSequenceNbr);
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList = powerTransferCompanyDto
.getPowerTransferCompanyResourcesDtoList();
if (powerTransferCompanyResourcesDtoList.size() == 0) {
powerTransferCompany.setIsDistributionAgencies(true);
definitions.put("departmentName", powerTransferCompanyDto.getCompanyName());
definitions.put("content", "");
powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions));
powerTransferCompanyService.save(powerTransferCompany);
powerTransferCompanyDto.setSequenceNbr(powerTransferCompany.getSequenceNbr());
} else {
powerTransferCompany.setIsDistributionAgencies(false);
StringBuilder taskInformation = new StringBuilder();
for (PowerTransferCompanyResourcesDto powerTransferCompanyResourcesDto : powerTransferCompanyResourcesDtoList) {
// definitions.put("type", powerTransferCompanyResourcesDto.getType());
// definitions.put("resourcesNum", powerTransferCompanyResourcesDto.getResourcesNum());
String information = powerTransferCompanyResourcesDto.getType().concat("车牌号")
.concat(powerTransferCompanyResourcesDto.getResourcesNum());
taskInformation.append(information).append("丶");
CarStatusInfoDto carStatusInfoDto = new CarStatusInfoDto();
carStatusInfoDto.setSequenceNbr(powerTransferCompanyResourcesDto.getResourcesId());
carStatusInfoDto.setStatus(FireCarStatusEnum.出动.getCode());
carStatusInfoDtoList.add(carStatusInfoDto);
}
definitions.put("departmentName", powerTransferCompanyDto.getCompanyName());
definitions.put("content", taskInformation.toString());
powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions));
powerTransferCompanyService.save(powerTransferCompany);
powerTransferCompanyDto.setSequenceNbr(powerTransferCompany.getSequenceNbr());
Long powerTransferCompanySequenceNbr = powerTransferCompany.getSequenceNbr();
List<PowerTransferCompanyResources> powerTransferCompanyResourcesList = DtoEntityBatchConvert(
powerTransferCompanyResourcesDtoList, powerTransferCompanySequenceNbr);
powerTransferCompanyResourcesService.saveBatch(powerTransferCompanyResourcesList);
List<PowerTransferCompanyResourcesDto> resourcesDtoList = new ArrayList<>();
powerTransferCompanyResourcesList.stream().forEach(e->{
PowerTransferCompanyResourcesDto dto = new PowerTransferCompanyResourcesDto();
Bean.toPo(e,dto);
resourcesDtoList.add(dto);
});
powerTransferCompanyDto.setPowerTransferCompanyResourcesDtoList(resourcesDtoList);
// 更新车辆状态
equipFeignService.updateCarStatus(carStatusInfoDtoList);
}
}
}
@Override
public List<PowerTransferCompanyDto> getLastPowerTransferCompany(Long alertCalledId) {
return this.baseMapper.getLastPowerTransferCompany(alertCalledId);
}
public List<String> queryTransferCarIdsByAlertCalledId(Long alertCalledId) {
return this.baseMapper.queryTransferCarIdsByAlertCalledId(alertCalledId);
}
public Map<String, Object> getPowerTransferList(String beginDate, String endDate) {
// 获取力量调派信息
List<PowerTransferDto> powerTransferInfo = this.baseMapper.getPowerTransferInfo(beginDate, endDate);
List<PowerTransferCompanyDto> powerTransferCompanyInfo = this.baseMapper.getPowerTransferCompanyInfo(beginDate,
endDate);
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesInfo = this.baseMapper
.getPowerTransferCompanyResourcesInfo(beginDate, endDate);
Map<String, Object> transferInfo = this.baseMapper.getPowerTransferInfoCount(beginDate, endDate);
// 获取力量出动模板
Template template = templateService
.getOne(new QueryWrapper<Template>().eq("type_code", DutyInfoEnum.力量出动.getKey()).eq("format", false));
String templateContent = template.getContent();
List<String> transferContent = new ArrayList<>();
powerTransferInfo.forEach(pt -> {
StringBuilder transferDetail = new StringBuilder();
Long powerTransferId = pt.getSequenceNbr();
String rescueGrid = pt.getRescueGrid();
powerTransferCompanyInfo.forEach(ptc -> {
if (powerTransferId.equals(ptc.getPowerTransferId())) {
transferDetail.append(ptc.getCompanyName());
if (!ptc.getIsDistributionAgencies()) {
Long powerTransferCompanyId = ptc.getSequenceNbr();
transferDetail.append("车辆车牌号");
powerTransferCompanyResourcesInfo.forEach(ptcr -> {
if (powerTransferCompanyId.equals(ptcr.getPowerTransferCompanyId())) {
transferDetail.append(ptcr.getResourcesNum()).append("、");
transferDetail.append(ptcr.getStatus()).append("、");
}
});
transferDetail.deleteCharAt(transferDetail.length() - 1);
}
transferDetail.append(";");
}
});
transferDetail.deleteCharAt(transferDetail.length() - 1);
if (transferDetail.toString().contains("、")) {
String transfer = null;
String taskStatus = null;
String[] split = transferDetail.toString().split("、");
if (split.length > 1) {
transfer = split[0];
taskStatus = split[1];
}
String transferDetails = templateContent.replace("departmentName-type-resourcesNum", transfer)
.replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus",
taskStatus != null ? FireCarStatusEnum.getEnum(taskStatus).getName() : null);
transferContent.add(transferDetails);
} else {
String transferDetails = templateContent
.replace("departmentName-type-resourcesNum", transferDetail.toString())
.replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus", "");
transferContent.add(transferDetails);
}
});
transferInfo.put("transferContent", transferContent);
return transferInfo;
}
@Override
public List<PowerCompanyCountDto> getPowerCompanyCountDtocount(Long id) {
List<PowerCompanyCountDto> list = powerTransferMapper.getPowerCompanyCountDtocount(id);
if (list != null && list.size() > 0) {
list.stream().forEach(powerCompanyCountDto -> {
List<PowerCarCountDto> li = powerTransferMapper.getPowerCarCountDtocount(id,
powerCompanyCountDto.getCompanyId());
powerCompanyCountDto.setPowerCarCountDto(li);
});
}
return list;
}
@Override
public IPage<PowerTransferResourceDto> getPowerTransferPageByParam(Long alertCalledId, String type,
Page<PowerTransferResourceDto> page) {
if (ValidationUtil.isEmpty(alertCalledId)) {
throw new BaseException("警情id为空", "", "警情id为空");
}
IPage<PowerTransferResourceDto> resultPage = null;
switch (type) {
case "team":
resultPage = getPowerTransferTeamResource(page, alertCalledId);
break;
case "car":
resultPage = getPowerTransferCarResource(page, alertCalledId);
break;
case "person":
// TODO 暂时没有调度人员
resultPage = new Page<>();
break;
default:
break;
}
return resultPage;
}
@Override
public List<ResourceStatisticsDto> getPowerTransferStatistics(Long alertCalledId, String type) {
List<ResourceStatisticsDto> result;
result = powerTransferMapper.getPowerTransferTeamResourceCount(alertCalledId, type);
if (ValidationUtil.isEmpty(result)) {
ResourceStatisticsDto team = new ResourceStatisticsDto("team", 0, 0, 0);
ResourceStatisticsDto car = new ResourceStatisticsDto("car", 0, 0, 0);
ResourceStatisticsDto person = new ResourceStatisticsDto("person", 0, 0, 0);
result.add(team);
result.add(car);
result.add(person);
}
return result;
}
public IPage<PowerTransferResourceDto> getPowerTransferTeamResource(Page<PowerTransferResourceDto> page,
Long alertCalledId) {
return powerTransferMapper.getPowerTransferTeamResource(page, alertCalledId);
}
private IPage<PowerTransferResourceDto> getPowerTransferCarResource(Page<PowerTransferResourceDto> page,
Long alertCalledId) {
Map<String, List<Map<String, Object>>> carInfoMap = getCarListMap();
IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper.getPowerTransferCarResource(page,
alertCalledId);
Map<String, List<Map<String, Object>>> finalCarInfoMap = carInfoMap;
carResourcePage.getRecords().forEach(car -> {
String seq = car.getSequenceNbr().toString();
car.setName((String) finalCarInfoMap.get(seq).get(0).get("name"));
String carStateCode = (String) finalCarInfoMap.get(seq).get(0).get("carState");
car.setCarState(!ValidationUtil.isEmpty(FireCarStatusEnum.getEnum(carStateCode))
? FireCarStatusEnum.getEnum(carStateCode).getName()
: "");
List<String> images = (List<String>) finalCarInfoMap.get(seq).get(0).get("image");
car.setImg(!ValidationUtil.isEmpty(images) ? images.get(0) : "");
});
return carResourcePage;
}
private Map<String, List<Map<String, Object>>> getCarListMap() {
ResponseModel<Object> result = equipFeignClient.getFireCarListAll();
Map<String, List<Map<String, Object>>> carInfoMap = Maps.newConcurrentMap();
if (!ValidationUtil.isEmpty(result)) {
List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
if (!ValidationUtil.isEmpty(fireCarListMapList)) {
carInfoMap = fireCarListMapList.stream()
.collect(Collectors.groupingBy(car -> car.get("id").toString()));
}
}
return carInfoMap;
}
private List<Map<String, Object>> getCarList() {
ResponseModel<Object> result = equipFeignClient.getFireCarListAll();
List<Map<String, Object>> fireCarListMapList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(result)) {
fireCarListMapList = (List<Map<String, Object>>) result.getResult();
}
return fireCarListMapList;
}
@Override
public JSONObject getPowerTransferCarResourceStatistics(Long alertCalledId) {
// 所有车辆
List<Map<String, Object>> carList = getCarList();
IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper
.getPowerTransferCarResource(new Page<>(1L, Long.MAX_VALUE), alertCalledId);
// 调派的车辆id列表
List<Long> carIdList = Lists.transform(carResourcePage.getRecords(), PowerTransferResourceDto::getSequenceNbr);
// 调派的车辆信息列表
List<Map<String, Object>> totalCarList = carList.stream()
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("id")))).collect(Collectors.toList());
// TODO 车辆枚举后期修改为已到达状态车辆
List<Map<String, Object>> arrivedCarList = carList.stream()
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("id")))
&& FireCarStatusEnum.出动.getCode().equals(c.get("carState")))
.collect(Collectors.toList());
// 调派-已到达车辆id列表
List<Long> arrivedCarIdList = Lists.newArrayList();
arrivedCarList.forEach(c -> {
if (FireCarStatusEnum.出动.getCode().equals(c.get("carState"))) {
arrivedCarIdList.add(Long.valueOf((String) c.get("id")));
}
});
JSONObject resourceStatistics = new JSONObject();
double carTotal = carResourcePage.getTotal();
// 车辆统计
carCount(arrivedCarList, resourceStatistics, carTotal, "car");
// 车辆人员统计
dutyPersonCount(carIdList, arrivedCarIdList, resourceStatistics);
// 车载器材统计
fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "equipment", "equip");
// TODO 车载水量统计
carCount(arrivedCarList, resourceStatistics, carTotal, "water");
// 车载药剂统计
fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "fireAgent", "medicament");
return resourceStatistics;
}
public void carCount(List<Map<String, Object>> arrivedCarList, JSONObject resourceStatistics, double carTotal,
String jsoKey) {
JSONObject car = new JSONObject();
car.put("total", carTotal);
car.put("count", arrivedCarList.size());
resourceStatistics.put(jsoKey, car);
}
public void dutyPersonCount(List<Long> carIdList, List<Long> arrivedCarIdList, JSONObject resourceStatistics) {
// 当前时间所在班次
List<Long> shiftIdList = dutyCarService.getDutyShiftIdList();
List<Map<String, Object>> allDutyPersonList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(shiftIdList)) {
// 当前值班车辆-人
allDutyPersonList = dutyCarService.dayDutyPersonList(DateUtils.getDateNowShortStr(), shiftIdList.get(0),
null);
}
// 当前车辆执勤人员
List<Map<String, Object>> allTransferDutyPerson = allDutyPersonList.stream()
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("carId")))).collect(Collectors.toList());
// 当前已到达车辆执勤人员
List<Map<String, Object>> allArrivedTransferDutyPerson = allDutyPersonList.stream()
.filter(c -> arrivedCarIdList.contains(Long.valueOf((String) c.get("carId"))))
.collect(Collectors.toList());
JSONObject person = new JSONObject();
person.put("total", allTransferDutyPerson.size());
person.put("count", allArrivedTransferDutyPerson.size());
resourceStatistics.put("person", person);
}
public void fireAgentOnCarCount(List<Map<String, Object>> totalCarList, List<Map<String, Object>> arrivedCarList,
JSONObject resourceStatistics, String equipType, String jsonKey) {
double agentCountAll = totalCarList.stream().mapToDouble(
car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream()
.filter(res -> equipType.equals(res.get("equipType")))
.mapToDouble(c -> (double) c.get("equipCount")).sum() : 0)
.sum();
double agentCountArrived = arrivedCarList.stream().mapToDouble(
car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream()
.filter(res -> equipType.equals(res.get("equipType")))
.mapToDouble(c -> (double) c.get("equipCount")).sum() : 0)
.sum();
JSONObject jsonObject = new JSONObject();
jsonObject.put("total", agentCountAll);
jsonObject.put("count", agentCountArrived);
resourceStatistics.put(jsonKey, jsonObject);
}
@Override
public List<Map<String, String>> getFireCarStatusList() {
return FireCarStatusEnum.toList();
}
@Override
public List<Map<String, String>> getDispatchTaskStatusList() {
return AlertFeedbackStatusEnum.toList();
}
String information = powerTransferCompanyResourcesDto.getType().concat("车牌号")
.concat(powerTransferCompanyResourcesDto.getResourcesNum());
taskInformation.append(information).append("丶");
CarStatusInfoDto carStatusInfoDto = new CarStatusInfoDto();
carStatusInfoDto.setSequenceNbr(powerTransferCompanyResourcesDto.getResourcesId());
carStatusInfoDto.setStatus(FireCarStatusEnum.出动.getCode());
carStatusInfoDtoList.add(carStatusInfoDto);
}
definitions.put("departmentName", powerTransferCompanyDto.getCompanyName());
definitions.put("content", taskInformation.toString());
powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions));
powerTransferCompanyService.save(powerTransferCompany);
powerTransferCompanyDto.setSequenceNbr(powerTransferCompany.getSequenceNbr());
Long powerTransferCompanySequenceNbr = powerTransferCompany.getSequenceNbr();
List<PowerTransferCompanyResources> powerTransferCompanyResourcesList = DtoEntityBatchConvert(
powerTransferCompanyResourcesDtoList, powerTransferCompanySequenceNbr);
powerTransferCompanyResourcesService.saveBatch(powerTransferCompanyResourcesList);
List<PowerTransferCompanyResourcesDto> resourcesDtoList = new ArrayList<>();
powerTransferCompanyResourcesList.stream().forEach(e -> {
PowerTransferCompanyResourcesDto dto = new PowerTransferCompanyResourcesDto();
Bean.toPo(e, dto);
resourcesDtoList.add(dto);
});
powerTransferCompanyDto.setPowerTransferCompanyResourcesDtoList(resourcesDtoList);
// 更新车辆状态
equipFeignService.updateCarStatus(carStatusInfoDtoList);
// 警情力量调派时,点击【任务派发】后,如果被调派的 力量包含消防车,那么该消防车所在的 大队的警铃、广播自动 启动,消防车所在的车库门自动开启
try {
List<Controller> controllers = controllerServiceImpl.list(new LambdaQueryWrapper<Controller>().eq(Controller::getFireTeamSeq, powerTransferCompanyDto.getCompanyId()));
if (controllers.size() > 0) {
controllerServiceImpl.changeControllerState(controllers.toArray(new Controller[0]));
}
} catch (Exception e) {
log.error(e.getMessage());
log.error("车库门、警铃、广播的 联动 功能出现异常");
}
}
}
}
@Override
public List<PowerTransferCompanyDto> getLastPowerTransferCompany(Long alertCalledId) {
return this.baseMapper.getLastPowerTransferCompany(alertCalledId);
}
public List<String> queryTransferCarIdsByAlertCalledId(Long alertCalledId) {
return this.baseMapper.queryTransferCarIdsByAlertCalledId(alertCalledId);
}
public Map<String, Object> getPowerTransferList(String beginDate, String endDate) {
// 获取力量调派信息
List<PowerTransferDto> powerTransferInfo = this.baseMapper.getPowerTransferInfo(beginDate, endDate);
List<PowerTransferCompanyDto> powerTransferCompanyInfo = this.baseMapper.getPowerTransferCompanyInfo(beginDate,
endDate);
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesInfo = this.baseMapper
.getPowerTransferCompanyResourcesInfo(beginDate, endDate);
Map<String, Object> transferInfo = this.baseMapper.getPowerTransferInfoCount(beginDate, endDate);
// 获取力量出动模板
Template template = templateService
.getOne(new QueryWrapper<Template>().eq("type_code", DutyInfoEnum.力量出动.getKey()).eq("format", false));
String templateContent = template.getContent();
List<String> transferContent = new ArrayList<>();
powerTransferInfo.forEach(pt -> {
StringBuilder transferDetail = new StringBuilder();
Long powerTransferId = pt.getSequenceNbr();
String rescueGrid = pt.getRescueGrid();
powerTransferCompanyInfo.forEach(ptc -> {
if (powerTransferId.equals(ptc.getPowerTransferId())) {
transferDetail.append(ptc.getCompanyName());
if (!ptc.getIsDistributionAgencies()) {
Long powerTransferCompanyId = ptc.getSequenceNbr();
transferDetail.append("车辆车牌号");
powerTransferCompanyResourcesInfo.forEach(ptcr -> {
if (powerTransferCompanyId.equals(ptcr.getPowerTransferCompanyId())) {
transferDetail.append(ptcr.getResourcesNum()).append("、");
transferDetail.append(ptcr.getStatus()).append("、");
}
});
transferDetail.deleteCharAt(transferDetail.length() - 1);
}
transferDetail.append(";");
}
});
transferDetail.deleteCharAt(transferDetail.length() - 1);
if (transferDetail.toString().contains("、")) {
String transfer = null;
String taskStatus = null;
String[] split = transferDetail.toString().split("、");
if (split.length > 1) {
transfer = split[0];
taskStatus = split[1];
}
String transferDetails = templateContent.replace("departmentName-type-resourcesNum", transfer)
.replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus",
taskStatus != null ? FireCarStatusEnum.getEnum(taskStatus).getName() : null);
transferContent.add(transferDetails);
} else {
String transferDetails = templateContent
.replace("departmentName-type-resourcesNum", transferDetail.toString())
.replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus", "");
transferContent.add(transferDetails);
}
});
transferInfo.put("transferContent", transferContent);
return transferInfo;
}
@Override
public List<PowerCompanyCountDto> getPowerCompanyCountDtocount(Long id) {
List<PowerCompanyCountDto> list = powerTransferMapper.getPowerCompanyCountDtocount(id);
if (list != null && list.size() > 0) {
list.stream().forEach(powerCompanyCountDto -> {
List<PowerCarCountDto> li = powerTransferMapper.getPowerCarCountDtocount(id,
powerCompanyCountDto.getCompanyId());
powerCompanyCountDto.setPowerCarCountDto(li);
});
}
return list;
}
@Override
public IPage<PowerTransferResourceDto> getPowerTransferPageByParam(Long alertCalledId, String type,
Page<PowerTransferResourceDto> page) {
if (ValidationUtil.isEmpty(alertCalledId)) {
throw new BaseException("警情id为空", "", "警情id为空");
}
IPage<PowerTransferResourceDto> resultPage = null;
switch (type) {
case "team":
resultPage = getPowerTransferTeamResource(page, alertCalledId);
break;
case "car":
resultPage = getPowerTransferCarResource(page, alertCalledId);
break;
case "person":
// TODO 暂时没有调度人员
resultPage = new Page<>();
break;
default:
break;
}
return resultPage;
}
@Override
public List<ResourceStatisticsDto> getPowerTransferStatistics(Long alertCalledId, String type) {
List<ResourceStatisticsDto> result;
result = powerTransferMapper.getPowerTransferTeamResourceCount(alertCalledId, type);
if (ValidationUtil.isEmpty(result)) {
ResourceStatisticsDto team = new ResourceStatisticsDto("team", 0, 0, 0);
ResourceStatisticsDto car = new ResourceStatisticsDto("car", 0, 0, 0);
ResourceStatisticsDto person = new ResourceStatisticsDto("person", 0, 0, 0);
result.add(team);
result.add(car);
result.add(person);
}
return result;
}
public IPage<PowerTransferResourceDto> getPowerTransferTeamResource(Page<PowerTransferResourceDto> page,
Long alertCalledId) {
return powerTransferMapper.getPowerTransferTeamResource(page, alertCalledId);
}
private IPage<PowerTransferResourceDto> getPowerTransferCarResource(Page<PowerTransferResourceDto> page,
Long alertCalledId) {
Map<String, List<Map<String, Object>>> carInfoMap = getCarListMap();
IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper.getPowerTransferCarResource(page,
alertCalledId);
Map<String, List<Map<String, Object>>> finalCarInfoMap = carInfoMap;
carResourcePage.getRecords().forEach(car -> {
String seq = car.getSequenceNbr().toString();
car.setName((String) finalCarInfoMap.get(seq).get(0).get("name"));
String carStateCode = (String) finalCarInfoMap.get(seq).get(0).get("carState");
car.setCarState(!ValidationUtil.isEmpty(FireCarStatusEnum.getEnum(carStateCode))
? FireCarStatusEnum.getEnum(carStateCode).getName()
: "");
List<String> images = (List<String>) finalCarInfoMap.get(seq).get(0).get("image");
car.setImg(!ValidationUtil.isEmpty(images) ? images.get(0) : "");
});
return carResourcePage;
}
private Map<String, List<Map<String, Object>>> getCarListMap() {
ResponseModel<Object> result = equipFeignClient.getFireCarListAll();
Map<String, List<Map<String, Object>>> carInfoMap = Maps.newConcurrentMap();
if (!ValidationUtil.isEmpty(result)) {
List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
if (!ValidationUtil.isEmpty(fireCarListMapList)) {
carInfoMap = fireCarListMapList.stream()
.collect(Collectors.groupingBy(car -> car.get("id").toString()));
}
}
return carInfoMap;
}
private List<Map<String, Object>> getCarList() {
ResponseModel<Object> result = equipFeignClient.getFireCarListAll();
List<Map<String, Object>> fireCarListMapList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(result)) {
fireCarListMapList = (List<Map<String, Object>>) result.getResult();
}
return fireCarListMapList;
}
@Override
public JSONObject getPowerTransferCarResourceStatistics(Long alertCalledId) {
// 所有车辆
List<Map<String, Object>> carList = getCarList();
IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper
.getPowerTransferCarResource(new Page<>(1L, Long.MAX_VALUE), alertCalledId);
// 调派的车辆id列表
List<Long> carIdList = Lists.transform(carResourcePage.getRecords(), PowerTransferResourceDto::getSequenceNbr);
// 调派的车辆信息列表
List<Map<String, Object>> totalCarList = carList.stream()
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("id")))).collect(Collectors.toList());
// TODO 车辆枚举后期修改为已到达状态车辆
List<Map<String, Object>> arrivedCarList = carList.stream()
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("id")))
&& FireCarStatusEnum.出动.getCode().equals(c.get("carState")))
.collect(Collectors.toList());
// 调派-已到达车辆id列表
List<Long> arrivedCarIdList = Lists.newArrayList();
arrivedCarList.forEach(c -> {
if (FireCarStatusEnum.出动.getCode().equals(c.get("carState"))) {
arrivedCarIdList.add(Long.valueOf((String) c.get("id")));
}
});
JSONObject resourceStatistics = new JSONObject();
double carTotal = carResourcePage.getTotal();
// 车辆统计
carCount(arrivedCarList, resourceStatistics, carTotal, "car");
// 车辆人员统计
dutyPersonCount(carIdList, arrivedCarIdList, resourceStatistics);
// 车载器材统计
fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "equipment", "equip");
// TODO 车载水量统计
carCount(arrivedCarList, resourceStatistics, carTotal, "water");
// 车载药剂统计
fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "fireAgent", "medicament");
return resourceStatistics;
}
public void carCount(List<Map<String, Object>> arrivedCarList, JSONObject resourceStatistics, double carTotal,
String jsoKey) {
JSONObject car = new JSONObject();
car.put("total", carTotal);
car.put("count", arrivedCarList.size());
resourceStatistics.put(jsoKey, car);
}
public void dutyPersonCount(List<Long> carIdList, List<Long> arrivedCarIdList, JSONObject resourceStatistics) {
// 当前时间所在班次
List<Long> shiftIdList = dutyCarService.getDutyShiftIdList();
List<Map<String, Object>> allDutyPersonList = Lists.newArrayList();
if (!ValidationUtil.isEmpty(shiftIdList)) {
// 当前值班车辆-人
allDutyPersonList = dutyCarService.dayDutyPersonList(DateUtils.getDateNowShortStr(), shiftIdList.get(0),
null);
}
// 当前车辆执勤人员
List<Map<String, Object>> allTransferDutyPerson = allDutyPersonList.stream()
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("carId")))).collect(Collectors.toList());
// 当前已到达车辆执勤人员
List<Map<String, Object>> allArrivedTransferDutyPerson = allDutyPersonList.stream()
.filter(c -> arrivedCarIdList.contains(Long.valueOf((String) c.get("carId"))))
.collect(Collectors.toList());
JSONObject person = new JSONObject();
person.put("total", allTransferDutyPerson.size());
person.put("count", allArrivedTransferDutyPerson.size());
resourceStatistics.put("person", person);
}
public void fireAgentOnCarCount(List<Map<String, Object>> totalCarList, List<Map<String, Object>> arrivedCarList,
JSONObject resourceStatistics, String equipType, String jsonKey) {
double agentCountAll = totalCarList.stream().mapToDouble(
car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream()
.filter(res -> equipType.equals(res.get("equipType")))
.mapToDouble(c -> (double) c.get("equipCount")).sum() : 0)
.sum();
double agentCountArrived = arrivedCarList.stream().mapToDouble(
car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream()
.filter(res -> equipType.equals(res.get("equipType")))
.mapToDouble(c -> (double) c.get("equipCount")).sum() : 0)
.sum();
JSONObject jsonObject = new JSONObject();
jsonObject.put("total", agentCountAll);
jsonObject.put("count", agentCountArrived);
resourceStatistics.put(jsonKey, jsonObject);
}
@Override
public List<Map<String, String>> getFireCarStatusList() {
return FireCarStatusEnum.toList();
}
@Override
public List<Map<String, String>> getDispatchTaskStatusList() {
return AlertFeedbackStatusEnum.toList();
}
}
package com.yeejoin.amos.knowledgebase.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.enumeration.DynamicsFunctional;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocContentModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent;
import com.yeejoin.amos.knowledgebase.face.service.DocContentService;
import com.yeejoin.amos.knowledgebase.face.service.DocLibraryService;
import com.yeejoin.amos.knowledgebase.face.service.DynamicsOptionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
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.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.foundation.utils.DateUtil;
import org.typroject.tyboot.core.foundation.utils.StringUtil;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
......@@ -22,10 +22,16 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.knowledgebase.face.enumeration.DynamicsFunctional;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDocContentModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent;
import com.yeejoin.amos.knowledgebase.face.service.DocContentService;
import com.yeejoin.amos.knowledgebase.face.service.DocLibraryService;
import com.yeejoin.amos.knowledgebase.face.service.DynamicsOptionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
......@@ -221,5 +227,12 @@ public class DocContentResource {
@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
return ResponseHelper.buildResponse(docContentService.queryLikeOrDis(sequenceNbr));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取简单的预案信息")
@RequestMapping(value = "/getSimpleDetail/{sequenceNbr}", method = RequestMethod.GET)
public ResponseModel<List<Map<String, Object>>> getSimpleDetail(
@PathVariable(value = "sequenceNbr") String sequenceNbr) {
return ResponseHelper.buildResponse(docContentService.getSimpleDetail(sequenceNbr));
}
}
package com.yeejoin.amos.knowledgebase.controller;
import com.yeejoin.amos.knowledgebase.face.service.TagInstanceService;
import io.swagger.annotations.Api;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
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.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagInstance;
import com.yeejoin.amos.knowledgebase.face.service.TagInstanceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
......@@ -27,4 +41,25 @@ public class TagInstanceResource {
private final Logger logger = LogManager.getLogger(TagInstanceResource.class);
@Autowired
private TagInstanceService tagInstanceService;
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "根据主键查询实例标签")
@RequestMapping(value = "find/{id}", method = RequestMethod.GET)
public ResponseModel<KnowledgeTagInstance> findById(@PathVariable("id") Long id) {
return ResponseHelper.buildResponse(tagInstanceService.findById(id));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "根据targetSeq查询实例标签")
@RequestMapping(value = "targetSeq/{id}", method = RequestMethod.GET)
public ResponseModel<List<KnowledgeTagInstanceModel>> queryListByTargetSeq(@PathVariable("id") Long id) {
return ResponseHelper.buildResponse(tagInstanceService.queryListByTargetSeq(id));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "根据targetSeq查询实例标签")
@RequestMapping(value = "getTarget/byName", method = RequestMethod.GET)
public ResponseModel<List<KnowledgeTagInstanceModel>> queryListByTagName(@RequestParam String name) {
return ResponseHelper.buildResponse(tagInstanceService.queryListByTagName(name));
}
}
package com.yeejoin.amos.knowledgebase.controller;
import com.yeejoin.amos.knowledgebase.face.service.TagValueService;
import io.swagger.annotations.Api;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
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.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.doc.TycloudResource;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import com.yeejoin.amos.knowledgebase.face.service.TagValueService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* <p>
......@@ -27,5 +36,17 @@ public class TagValueResource {
private final Logger logger = LogManager.getLogger(TagValueResource.class);
@Autowired
private TagValueService tagValueService;
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取所有当前系统的值标签的实例值")
@RequestMapping(value = "/getAll/tegartValue", method = RequestMethod.GET)
public ResponseModel<Object> getAllTegartValue(@RequestParam String value) {
return ResponseHelper.buildResponse(tagValueService.getAllTegartValue(value));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(value = "获取所有当前系统的值标签的实例值")
@RequestMapping(value = "/getOne/", method = RequestMethod.GET)
public ResponseModel<Object> queryByInstance(@RequestParam Long id) {
return ResponseHelper.buildResponse(tagValueService.queryByInstance(id));
}
}
......@@ -16,6 +16,7 @@ import com.yeejoin.amos.knowledgebase.face.feign.RemoteData;
import com.yeejoin.amos.knowledgebase.face.model.*;
import com.yeejoin.amos.knowledgebase.face.orm.dao.DocContentMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeDocContent;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagValue;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
import com.yeejoin.amos.knowledgebase.face.util.DocSortUtil;
import com.yeejoin.amos.knowledgebase.face.util.QuoteCountFlushTiming;
......@@ -657,4 +658,19 @@ public class DocContentService extends BaseService<KnowledgeDocContentModel, Kno
private List<KnowledgeDocContentModel> queryListByCategorySeqList(@Condition(Operator.in) List<Long> directoryId) {
return this.queryForList(null, false, directoryId);
}
public List<Map<String, Object>> getSimpleDetail(String sequenceNbrs) {
String[] idStrings= sequenceNbrs.split(",");
List<String> idListString= Arrays.asList(idStrings);
List<Long> idList= new ArrayList<Long>();
idListString.stream().forEach(i->{
idList.add(Long.parseLong(i));
});
QueryWrapper<KnowledgeDocContent> wrapper = new QueryWrapper<KnowledgeDocContent>();
wrapper.eq("DOC_STATUS", "PUBLISHED");
wrapper.in("SEQUENCE_NBR",idList);
wrapper.select("SEQUENCE_NBR","DOC_TITLE","REC_DATE");
return this.baseMapper.selectMaps(wrapper);
}
}
package com.yeejoin.amos.knowledgebase.face.service;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsValueModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.TagInstanceMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagInstance;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -19,7 +15,14 @@ import org.typroject.tyboot.core.rdbms.annotation.Condition;
import org.typroject.tyboot.core.rdbms.annotation.Operator;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.*;
import com.baomidou.mybatisplus.core.toolkit.Sequence;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeDynamicsValueModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagInstanceModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagModel;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.TagInstanceMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagInstance;
import com.yeejoin.amos.knowledgebase.face.util.Constants;
/**
......@@ -152,4 +155,16 @@ public class TagInstanceService extends BaseService<KnowledgeTagInstanceModel, K
public List<KnowledgeTagInstanceModel> queryListByTargetSeqs(@Condition(Operator.in) Collection<Long> targetSeq) {
return this.queryForList(null, false, targetSeq);
}
public KnowledgeTagInstance findById(Long id) {
return this.baseMapper.selectById(id);
}
public List<KnowledgeTagInstanceModel> queryListByTagName(String tagName) {
// TODO Auto-generated method stub
return this.queryForList(null, false, tagName);
}
}
package com.yeejoin.amos.knowledgebase.face.service;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
......@@ -12,10 +13,14 @@ import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yeejoin.amos.knowledgebase.face.model.KnowledgeTagValueModel;
import com.yeejoin.amos.knowledgebase.face.orm.dao.TagValueMapper;
import com.yeejoin.amos.knowledgebase.face.orm.entity.KnowledgeTagValue;
import net.bytebuddy.asm.Advice.This;
/**
* <p>
......@@ -66,4 +71,13 @@ public class TagValueService extends BaseService<KnowledgeTagValueModel, Knowled
public List<KnowledgeTagValueModel> queryTagValuesByDocIds(Collection<Long> docSeqList) {
return Bean.toModels(this.getBaseMapper().queryTagValuesByDocIds(docSeqList), KnowledgeTagValueModel.class);
}
public List<KnowledgeTagValue> getAllTegartValue(String value) {
String[] strings = value.split(",");
QueryWrapper<KnowledgeTagValue> wrapper = new QueryWrapper<KnowledgeTagValue>();
wrapper.eq("AGENCY_CODE", RequestContext.getAgencyCode());
wrapper.in("TAG_VALUE", Arrays.asList(strings));
return this.baseMapper.selectList(wrapper);
}
}
......@@ -6,8 +6,11 @@ import com.yeejoin.amos.boot.module.tzs.api.dto.ElevatorDto;
import com.yeejoin.amos.boot.module.tzs.api.dto.MaintenanceUnitDto;
import com.yeejoin.amos.boot.module.tzs.api.entity.Elevator;
import com.yeejoin.amos.boot.module.tzs.api.entity.MaintenanceUnit;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.EquipmentDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.dto.UnitInfoDto;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.Equipment;
import com.yeejoin.amos.boot.module.tzs.flc.api.entity.UnitInfo;
import com.yeejoin.amos.boot.module.tzs.flc.api.enums.EquipmentStatusEnum;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -274,4 +277,29 @@ public class BeanDtoVoUtils {
}
});
}
/**
* 将设备实体类转换为Vo
*
* @param page 原分页对象
* @return 转换后的分页对象
*/
public static IPage<EquipmentDto> equipmentIPageDto(IPage<Equipment> page) {
return page.convert(item -> {
try {
EquipmentDto target = new EquipmentDto();
// 把原对象数据拷贝到新对象
BeanUtils.copyProperties(item, target);
if(EquipmentStatusEnum.未安装.getCode().equals(item.getStatus())) {
target.setStatus(EquipmentStatusEnum.未安装.getName());
} else if(EquipmentStatusEnum.已安装.getCode().equals(item.getStatus())) {
target.setStatus(EquipmentStatusEnum.已安装.getName());
}
return target;
} catch (Exception e) {
return null;
}
});
}
}
\ No newline at end of file
......@@ -132,7 +132,7 @@ public class EquipmentController extends BaseController {
page = equipmentServiceImpl.page(pageBean, equipmentQueryWrapper);
int num= equipmentServiceImpl.count(equipmentQueryWrapper);
pageBean.setTotal(num);
IPage<EquipmentDto> equipmentDtoIPager = BeanDtoVoUtils.iPageVoStream(page,EquipmentDto.class);
IPage<EquipmentDto> equipmentDtoIPager = BeanDtoVoUtils.equipmentIPageDto(page);
return ResponseHelper.buildResponse(equipmentDtoIPager);
}
......@@ -163,12 +163,12 @@ public class EquipmentController extends BaseController {
if (!ValidationUtil.isEmpty(equipmentDto.getName())) { // 设备名称
queryWrapper.like("name",equipmentDto.getName());
}
if(!ValidationUtil.isEmpty(equipmentDto.getTypeId())) { // 设备种类
queryWrapper.eq("type_id",equipmentDto.getTypeId());
}
if(!ValidationUtil.isEmpty(equipmentDto.getCategoryId())) { // 设备类别
queryWrapper.eq("category_id",equipmentDto.getCategoryId());
}
if(!ValidationUtil.isEmpty(equipmentDto.getTypeId())) { // 设备种类
queryWrapper.eq("type_id",equipmentDto.getTypeId());
}
if(!ValidationUtil.isEmpty(equipmentDto.getVarietyId())) { // 设备品种
queryWrapper.eq("variety_id",equipmentDto.getVarietyId());
}
......
......@@ -79,6 +79,8 @@ equip.fegin.name=AMOS-EQUIPMANAGE
## 设备联动服务(车库门、广播、警铃)
control.fegin.name=JCS-API-CONTROL
Knowledgebase.fegin.name=AMOS-API-KNOWLEDGEBASE
## 故障报修流程
failure.work.flow.processDefinitionKey=malfunction_repair
#设置文件上传的大小限制
......
......@@ -2322,5 +2322,41 @@
</sql>
</changeSet>
<changeSet author="hll" id="2021-12-06-hll-1">
<preConditions onFail="MARK_RAN">
<not>
<tableExists tableName="jc_controller_log"/>
</not>
</preConditions>
<comment>create table jc_controller_log</comment>
<sql>
CREATE TABLE `jc_controller_log` (
`sequence_nbr` bigint(22) NOT NULL,
`controller_seq` bigint(22) NOT NULL COMMENT '控制站ID',
`equip_seq` bigint(22) DEFAULT NULL COMMENT '装备ID',
`state` varchar(2) DEFAULT NULL COMMENT '变更后状态',
`execute_user_seq` bigint(22) DEFAULT NULL COMMENT '变更人ID',
`execute_date` datetime DEFAULT NULL COMMENT '变更时间',
`rec_user_name` varchar(15) CHARACTER SET utf8 DEFAULT NULL COMMENT '操作人名称',
`rec_user_id` varchar(19) CHARACTER SET utf8 DEFAULT NULL COMMENT '操作人员',
`rec_date` datetime DEFAULT NULL COMMENT '创建时间',
`is_delete` bit(1) DEFAULT b'0' COMMENT '是否删除',
PRIMARY KEY (`sequence_nbr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
</sql>
</changeSet>
<changeSet author="hll" id="2021-12-06-hll-2">
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="jc_controller" columnName="fire_team_seq"/>
</not>
</preConditions>
<comment>jc_controller add fire_team_seq</comment>
<sql>
alter table `jc_controller` add column `fire_team_seq` varchar(22) DEFAULT NULL COMMENT '关联的消防队伍ID';
</sql>
</changeSet>
</databaseChangeLog>
......@@ -9,6 +9,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableAsync;
......@@ -20,6 +23,9 @@ import org.typroject.tyboot.core.restful.exception.GlobalExceptionHandler;
*/
@EnableScheduling
@EnableFeignClients
@EnableDiscoveryClient
@EnableEurekaClient
@EnableAsync
@MapperScan({"com.yeejoin.amos.knowledgebase.face.orm.dao*",
"org.typroject.tyboot.face.*.orm.dao*",
......
##开发环境配置文件
# jdbc_config
spring.datasource.url=jdbc:mysql://localhost:3306/safety-knowledge-3.0.0?characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.url=jdbc:mysql://172.16.6.60:3306/knowledge_base?characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root_123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
......
......@@ -71,7 +71,7 @@ class AppNslClientToken {
/**
* 获取访问Token,包含token和过期时间(2021-11-30测试Token过期时间为18天)
* 集成项目中,token放到缓存中,避免多次获取可能导致已进行的任务token失效
* 避免多次获取可能导致已进行的任务token失效
*
* @return token 访问token
*/
......
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