Commit 002e6efd authored by helinlin's avatar helinlin

车库门、警铃、广播的 联动

parent ff71058c
...@@ -3,13 +3,13 @@ package com.yeejoin.amos.boot.module.jcs.api.dto; ...@@ -3,13 +3,13 @@ package com.yeejoin.amos.boot.module.jcs.api.dto;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto; 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.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
/** /**
*
* <pre> * <pre>
* 联动控制器 * 联动控制器
* </pre> * </pre>
...@@ -24,37 +24,51 @@ public class ControllerDto extends BaseDto { ...@@ -24,37 +24,51 @@ public class ControllerDto extends BaseDto {
@ExcelIgnore @ExcelIgnore
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 控制站 * 控制站
*/ */
@ApiModelProperty(value = "控制站") @ApiModelProperty(value = "控制站")
private String station; private String station;
/** /**
* ip * ip
*/ */
@ApiModelProperty(value = "ip") @ApiModelProperty(value = "ip")
private String ip; private String ip;
/** /**
* 端口 * 端口
*/ */
@ApiModelProperty(value = "端口") @ApiModelProperty(value = "端口")
private Integer port; private Integer port;
/** /**
* 控制器名称 * 控制器名称
*/ */
@ApiModelProperty(value = "控制器名称") @ApiModelProperty(value = "控制器名称")
private String name; private String name;
/** /**
* 控制器类别 * 控制器类别
*/ */
@ApiModelProperty(value = "控制器类别") @ApiModelProperty(value = "控制器类别")
private String type; private String type;
/**
* 状态 /**
*/ * 控制器类别枚举
*/
@ApiModelProperty(value = "控制器类别")
private ControllerTypeEnum typeEnum;
/**
* 控制器类别名称
*/
@ApiModelProperty(value = "控制器类别名称")
private String typeDescription;
/**
* 状态
*/
@ApiModelProperty(value = "状态") @ApiModelProperty(value = "状态")
private String state; 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; ...@@ -8,7 +8,6 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
*
* <pre> * <pre>
* 联动控制器 * 联动控制器
* </pre> * </pre>
...@@ -22,39 +21,43 @@ import lombok.experimental.Accessors; ...@@ -22,39 +21,43 @@ import lombok.experimental.Accessors;
@TableName("jc_controller") @TableName("jc_controller")
public class Controller extends BaseEntity { public class Controller extends BaseEntity {
/** /**
* *
*/ */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 控制站 * 控制站
*/ */
@TableField("station") @TableField("station")
private String station; private String station;
/** /**
* ip * ip
*/ */
@TableField("c_ip") @TableField("c_ip")
private String ip; private String ip;
/** /**
* 端口 * 端口
*/ */
@TableField("c_port") @TableField("c_port")
private Integer port; private Integer port;
/** /**
* 控制器名称 * 控制器名称
*/ */
@TableField("c_name") @TableField("c_name")
private String name; private String name;
/** /**
* 控制器类别 * 控制器类别
*/ */
@TableField("type") @TableField("type")
private String type; private String type;
/** /**
* 状态 * 状态
*/ */
@TableField("c_state") @TableField("c_state")
private String 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;
}
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; ...@@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
/** /**
*
* <pre> * <pre>
* 联动控制器类型枚举 * 联动控制器类型枚举
* </pre> * </pre>
...@@ -16,12 +15,13 @@ import lombok.Getter; ...@@ -16,12 +15,13 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
public enum ControllerTypeEnum { public enum ControllerTypeEnum {
BELL("1", "警铃"), BELL("1", "警铃", 1),
BROADCAST("2", "广播"), BROADCAST("2", "广播", 2),
DOOR("3", "车库门"); DOOR("3", "车库门", 3);
private String code; private String code;
private String name; private String name;
private int sort;
public String getCode() { public String getCode() {
...@@ -39,16 +39,13 @@ public enum ControllerTypeEnum { ...@@ -39,16 +39,13 @@ public enum ControllerTypeEnum {
public void setName(String name) { public void setName(String name) {
this.name = name; this.name = name;
} }
public static ControllerTypeEnum getEnum(String code) public static ControllerTypeEnum getEnum(String code) {
{ for (ControllerTypeEnum status : ControllerTypeEnum.values()) {
for (ControllerTypeEnum status : ControllerTypeEnum.values()) if (status.getCode().equals(code)) {
{ return status;
if (status.getCode().equals(code)) }
{ }
return status; return null;
} }
}
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; package com.yeejoin.amos.boot.module.jcs.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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 com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
*
* <pre> * <pre>
* 联动控制器 Mapper 接口 * 联动控制器 Mapper 接口
* </pre> * </pre>
...@@ -14,4 +17,5 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.Controller; ...@@ -14,4 +17,5 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
*/ */
public interface ControllerMapper extends BaseMapper<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>
...@@ -66,9 +66,6 @@ public class RealTimeSpeechTranscriberListener extends SpeechTranscriberListener ...@@ -66,9 +66,6 @@ public class RealTimeSpeechTranscriberListener extends SpeechTranscriberListener
@Override @Override
public void onTranscriberStart(SpeechTranscriberResponse response) { public void onTranscriberStart(SpeechTranscriberResponse response) {
logger.warn("服务端准备好了进行识别"); logger.warn("服务端准备好了进行识别");
logger.warn("task_id: " + response.getTaskId()
+ ", name: " + response.getName()
+ ", status: " + response.getStatus());
} }
/** /**
...@@ -77,9 +74,6 @@ public class RealTimeSpeechTranscriberListener extends SpeechTranscriberListener ...@@ -77,9 +74,6 @@ public class RealTimeSpeechTranscriberListener extends SpeechTranscriberListener
@Override @Override
public void onSentenceBegin(SpeechTranscriberResponse response) { public void onSentenceBegin(SpeechTranscriberResponse response) {
logger.warn("服务端检测到了一句话的开始"); logger.warn("服务端检测到了一句话的开始");
logger.warn("task_id: " + response.getTaskId()
+ ", name: " + response.getName()
+ ", status: " + response.getStatus());
} }
/** /**
......
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 { ...@@ -177,10 +177,8 @@ public class PowerTransferController extends BaseController {
AgencyUserModel userInfo = getUserInfo(); AgencyUserModel userInfo = getUserInfo();
powerTransferDto.setTaskSenderId(Long.parseLong(userInfo.getUserId())); powerTransferDto.setTaskSenderId(Long.parseLong(userInfo.getUserId()));
powerTransferDto.setTaskSenderName(userInfo.getRealName()); powerTransferDto.setTaskSenderName(userInfo.getRealName());
String companyName = getSelectedOrgInfo().getCompany().getCompanyName(); String companyName = getSelectedOrgInfo().getCompany().getCompanyName();
powerTransferDto.setCompanyName(companyName); powerTransferDto.setCompanyName(companyName);
boolean save = powerTransferService.createPowerTransfer(powerTransferDto); boolean save = powerTransferService.createPowerTransfer(powerTransferDto);
return ResponseHelper.buildResponse(save); return ResponseHelper.buildResponse(save);
} }
......
...@@ -3,6 +3,12 @@ package com.yeejoin.amos.boot.module.jcs.biz.service.impl; ...@@ -3,6 +3,12 @@ package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.List; 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.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
...@@ -11,7 +17,6 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip; ...@@ -11,7 +17,6 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.ControllerEquip;
import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper; import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper;
/** /**
*
* <pre> * <pre>
* 控制器设备 服务实现类 * 控制器设备 服务实现类
* </pre> * </pre>
...@@ -20,10 +25,46 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerEquipMapper; ...@@ -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 $ * @version $Id: ControllerEquipServiceImpl.java, v 0.1 2021年8月20日 上午10:16:33 gwb Exp $
*/ */
@Service @Service
public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto, ControllerEquip, ControllerEquipMapper> public class ControllerEquipServiceImpl extends BaseService<ControllerEquipDto, ControllerEquip, ControllerEquipMapper> implements IControllerEquipService {
{ @Autowired
JcsControlServerClient jcsControlServerClient;
public List<ControllerEquipDto> queryAllForList() {
public List<ControllerEquipDto> queryAllForList() {
return this.queryForList("", false); 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; 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.springframework.stereotype.Service;
import org.typroject.tyboot.component.emq.EmqKeeper;
import org.typroject.tyboot.core.rdbms.service.BaseService; import org.typroject.tyboot.core.rdbms.service.BaseService;
import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto; import com.yeejoin.amos.boot.module.jcs.api.dto.ControllerDto;
...@@ -11,7 +17,6 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.Controller; ...@@ -11,7 +17,6 @@ import com.yeejoin.amos.boot.module.jcs.api.entity.Controller;
import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper; import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper;
/** /**
*
* <pre> * <pre>
* 联动控制器 服务实现类 * 联动控制器 服务实现类
* </pre> * </pre>
...@@ -20,14 +25,198 @@ import com.yeejoin.amos.boot.module.jcs.api.mapper.ControllerMapper; ...@@ -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 $ * @version $Id: ControllerServiceImpl.java, v 0.1 2021年8月20日 上午10:15:49 gwb Exp $
*/ */
@Service @Service
public class ControllerServiceImpl extends BaseService<ControllerDto, Controller, ControllerMapper> public class ControllerServiceImpl extends BaseService<ControllerDto, Controller, ControllerMapper> implements IControllerService {
{ /**
* 将延迟的任务存放在Hashtable中,以便在多个请求中控制任务的取消分享等操作
public List<ControllerDto> queryAllForList() { */
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); 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); 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();
}
}
} }
package com.yeejoin.amos.boot.module.jcs.biz.service.impl; package com.yeejoin.amos.boot.module.jcs.biz.service.impl;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; 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.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttException;
...@@ -47,12 +44,6 @@ import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto; ...@@ -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.PowerTransferResourceDto;
import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferSimpleDto; 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.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.AlertFeedbackStatusEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum; import com.yeejoin.amos.boot.module.jcs.api.enums.DutyInfoEnum;
import com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum; import com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum;
...@@ -69,165 +60,168 @@ import com.yeejoin.amos.component.rule.config.RuleConfig; ...@@ -69,165 +60,168 @@ import com.yeejoin.amos.component.rule.config.RuleConfig;
*/ */
@Service @Service
public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, PowerTransfer, PowerTransferMapper> public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, PowerTransfer, PowerTransferMapper>
implements IPowerTransferService { implements IPowerTransferService {
@Autowired @Autowired
AlertCalledServiceImpl alertCalledService; AlertCalledServiceImpl alertCalledService;
@Autowired @Autowired
PowerTransferCompanyServiceImpl powerTransferCompanyService; PowerTransferCompanyServiceImpl powerTransferCompanyService;
@Autowired @Autowired
PowerTransferCompanyResourcesServiceImpl powerTransferCompanyResourcesService; PowerTransferCompanyResourcesServiceImpl powerTransferCompanyResourcesService;
@Autowired @Autowired
TemplateServiceImpl templateService; TemplateServiceImpl templateService;
@Autowired @Autowired
AlertFormValueServiceImpl alertFormValueService; AlertFormValueServiceImpl alertFormValueService;
@Autowired @Autowired
EquipFeignClient equipFeignService; EquipFeignClient equipFeignService;
@Autowired @Autowired
FireTeamServiceImpl fireTeamService; FireTeamServiceImpl fireTeamService;
@Autowired @Autowired
PowerTransferMapper powerTransferMapper; PowerTransferMapper powerTransferMapper;
@Autowired @Autowired
EquipFeignClient equipFeignClient; EquipFeignClient equipFeignClient;
@Autowired @Autowired
private EmqKeeper emqKeeper; private EmqKeeper emqKeeper;
@Value("${mqtt.topic.command.power.deployment}") @Value("${mqtt.topic.command.power.deployment}")
private String topic; private String topic;
@Autowired @Autowired
private DutyCarServiceImpl dutyCarService; private DutyCarServiceImpl dutyCarService;
@Autowired @Autowired
FireTeamServiceImpl iFireTeamService; FireTeamServiceImpl iFireTeamService;
@Autowired @Autowired
DynamicFormInstanceMapper dynamicFormInstanceMapper; DynamicFormInstanceMapper dynamicFormInstanceMapper;
@Autowired @Autowired
RuleAlertCalledService ruleAlertCalledService; RuleAlertCalledService ruleAlertCalledService;
@Override @Autowired
public PowerTransferSimpleDto getPowerTransferList(Long alertCalledId) { ControllerServiceImpl controllerServiceImpl;
List<PowerTransferCompanyResourcesDto> powerTransferList = this.baseMapper.getPowerTransferList(alertCalledId);
PowerTransferSimpleDto powerTransferSimpleDto = new PowerTransferSimpleDto(); @Override
int resourcesCount = powerTransferList.size(); public PowerTransferSimpleDto getPowerTransferList(Long alertCalledId) {
powerTransferSimpleDto.setResourcesCount(resourcesCount); List<PowerTransferCompanyResourcesDto> powerTransferList = this.baseMapper.getPowerTransferList(alertCalledId);
powerTransferSimpleDto.setResourcesList(powerTransferList); PowerTransferSimpleDto powerTransferSimpleDto = new PowerTransferSimpleDto();
return powerTransferSimpleDto; int resourcesCount = powerTransferList.size();
} powerTransferSimpleDto.setResourcesCount(resourcesCount);
powerTransferSimpleDto.setResourcesList(powerTransferList);
@Override return powerTransferSimpleDto;
@Transactional(rollbackFor = Exception.class) }
public boolean createPowerTransfer(PowerTransferDto powerTransferDto) {
try { @Override
// 获取调派ID @Transactional(rollbackFor = Exception.class)
Long alertCalledId = powerTransferDto.getAlertCalledId(); public boolean createPowerTransfer(PowerTransferDto powerTransferDto) {
int count = count(new QueryWrapper<PowerTransfer>().eq("alert_called_id", alertCalledId)); try {
String dispatch_num = alertCalledId.toString() + (count + 1); // 获取调派ID
Long alertCalledId = powerTransferDto.getAlertCalledId();
// 获取警情详情 int count = count(new QueryWrapper<PowerTransfer>().eq("alert_called_id", alertCalledId));
AlertCalledObjsDto alertCalled = (AlertCalledObjsDto) alertCalledService String dispatch_num = alertCalledId.toString() + (count + 1);
.selectAlertCalledByIdNoRedisNew(alertCalledId);
// 获取警情详情
// 创建力量调派 AlertCalledObjsDto alertCalled = (AlertCalledObjsDto) alertCalledService
PowerTransfer powerTransfer = new PowerTransfer(); .selectAlertCalledByIdNoRedisNew(alertCalledId);
BeanUtils.copyProperties(powerTransferDto, powerTransfer);
BeanUtils.copyProperties(alertCalled.getAlertCalled(), powerTransfer); // 创建力量调派
powerTransfer.setDispatchNum(dispatch_num); PowerTransfer powerTransfer = new PowerTransfer();
powerTransfer.setSequenceNbr(null); BeanUtils.copyProperties(powerTransferDto, powerTransfer);
BeanUtils.copyProperties(alertCalled.getAlertCalled(), powerTransfer);
save(powerTransfer); powerTransfer.setDispatchNum(dispatch_num);
Long powerTransferSequenceNbr = powerTransfer.getSequenceNbr(); powerTransfer.setSequenceNbr(null);
// 获取任务派发模板 save(powerTransfer);
Template template = templateService Long powerTransferSequenceNbr = powerTransfer.getSequenceNbr();
.getOne(new QueryWrapper<Template>().eq("type_code", "LLDP").eq("format", false));
String content = template.getContent(); // 获取任务派发模板
Map<String, String> definitions = new HashMap<>(); Template template = templateService
// initDefinitions(definitions, alertCalled, powerTransferDto); .getOne(new QueryWrapper<Template>().eq("type_code", "LLDP").eq("format", false));
String content = template.getContent();
// 创建力量调派单位 Map<String, String> definitions = new HashMap<>();
createPowerTransferCompany(powerTransferDto, powerTransferSequenceNbr, definitions, content, alertCalled); // initDefinitions(definitions, alertCalled, powerTransferDto);
// 封装调派任务的集合,以便于实现任务规则校验 // 创建力量调派单位
try { createPowerTransferCompany(powerTransferDto, powerTransferSequenceNbr, definitions, content, alertCalled);
packagePowerTransferDetail(powerTransferDto);
} catch (Exception e) { // 封装调派任务的集合,以便于实现任务规则校验
log.error("调用规则失败:PowerTransferServiceImpl。createPowerTransfer()"); 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(); // 通知实战指挥页面发送mqtt 默认发送 String 类型 0, 新警情 1 警情状态变化
} emqKeeper.getMqttClient().publish(topic, "0".getBytes(), RuleConfig.DEFAULT_QOS, true);
} catch (MqttException e) {
return true; throw new RuntimeException();
} }
private void packagePowerTransferDetail(PowerTransferDto powerTransferDto) throws Exception { return true;
List<PowerTransferCompanyDto> powerTransferCompanyDtoList = powerTransferDto.getPowerTransferCompanyDotList(); }
Set<PowerTransferCompanyDto> fullTimeList = new HashSet<PowerTransferCompanyDto>();
Set<PowerTransferCompanyDto> medicalTeamList = new HashSet<PowerTransferCompanyDto>(); private void packagePowerTransferDetail(PowerTransferDto powerTransferDto) throws Exception {
Set<PowerTransferCompanyDto> monitorTeamList = new HashSet<PowerTransferCompanyDto>(); List<PowerTransferCompanyDto> powerTransferCompanyDtoList = powerTransferDto.getPowerTransferCompanyDotList();
Set<PowerTransferCompanyDto> fullTimeList = new HashSet<PowerTransferCompanyDto>();
for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDtoList) { Set<PowerTransferCompanyDto> medicalTeamList = new HashSet<PowerTransferCompanyDto>();
if (FireBrigadeTypeEnum.专职消防队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) { Set<PowerTransferCompanyDto> monitorTeamList = new HashSet<PowerTransferCompanyDto>();
fullTimeList.add(powerTransferCompanyDto);
} else if (FireBrigadeTypeEnum.医疗救援队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) { for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDtoList) {
medicalTeamList.add(powerTransferCompanyDto); if (FireBrigadeTypeEnum.专职消防队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
} else if (FireBrigadeTypeEnum.监控大队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) { fullTimeList.add(powerTransferCompanyDto);
monitorTeamList.add(powerTransferCompanyDto); } else if (FireBrigadeTypeEnum.医疗救援队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
} medicalTeamList.add(powerTransferCompanyDto);
} } else if (FireBrigadeTypeEnum.监控大队.getKey().equals(powerTransferCompanyDto.getPowerTransType())) {
if (fullTimeList.size() > 0) { monitorTeamList.add(powerTransferCompanyDto);
ruleAlertCalledService.powerTransferCalledRule(fullTimeList, powerTransferDto.getAlertCalledId(), }
FireBrigadeTypeEnum.专职消防队.getKey()); }
} if (fullTimeList.size() > 0) {
if (medicalTeamList.size() > 0) { ruleAlertCalledService.powerTransferCalledRule(fullTimeList, powerTransferDto.getAlertCalledId(),
ruleAlertCalledService.powerTransferCalledRule(medicalTeamList, powerTransferDto.getAlertCalledId(), FireBrigadeTypeEnum.专职消防队.getKey());
FireBrigadeTypeEnum.医疗救援队.getKey()); }
if (medicalTeamList.size() > 0) {
} ruleAlertCalledService.powerTransferCalledRule(medicalTeamList, powerTransferDto.getAlertCalledId(),
if (monitorTeamList.size() > 0) { FireBrigadeTypeEnum.医疗救援队.getKey());
ruleAlertCalledService.powerTransferCalledRule(monitorTeamList, 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();
@Override
if (type != null && !"".equals(type) && "1214".equals(type)) { public List<FireBrigadeResourceDto> getPowerTree(String type) {
// 3.消防队伍-监控大队 List<FireBrigadeResourceDto> fireBrigadeResourceList = Lists.newArrayList();
List<FireBrigadeResourceDto> monitorFireBrigadeList1 = fireTeamService
.listMonitorFireBrigade(FireBrigadeTypeEnum.医疗救援队.getCode()); if (type != null && !"".equals(type) && "1214".equals(type)) {
FireBrigadeResourceDto monitorResourceDto1 = new FireBrigadeResourceDto(); // 3.消防队伍-监控大队
monitorResourceDto1.setId("-1"); List<FireBrigadeResourceDto> monitorFireBrigadeList1 = fireTeamService
monitorResourceDto1.setName(FireBrigadeTypeEnum.医疗救援队.getName()); .listMonitorFireBrigade(FireBrigadeTypeEnum.医疗救援队.getCode());
monitorResourceDto1.setType(FireBrigadeTypeEnum.医疗救援队.getKey()); FireBrigadeResourceDto monitorResourceDto1 = new FireBrigadeResourceDto();
monitorResourceDto1.setChildren(monitorFireBrigadeList1); monitorResourceDto1.setId("-1");
if (!CollectionUtils.isEmpty(monitorFireBrigadeList1)) { monitorResourceDto1.setName(FireBrigadeTypeEnum.医疗救援队.getName());
fireBrigadeResourceList.add(monitorResourceDto1); 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();
// 1.调用装备服务接口查询车辆列表
List<FireBrigadeResourceDto> fireCarDtoList = Lists.newArrayList();
ResponseModel<Object> result = equipFeignService.getFireCarListAll();
// if (!ObjectUtils.isEmpty(result)) { // if (!ObjectUtils.isEmpty(result)) {
// List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult(); // List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
// if (!ValidationUtil.isEmpty(fireCarListMapList)) { // if (!ValidationUtil.isEmpty(fireCarListMapList)) {
...@@ -248,76 +242,76 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe ...@@ -248,76 +242,76 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
// } // }
// } // }
// 查询车辆当前任务状态 // 查询车辆当前任务状态
QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>(); QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>();
// queryWrapper.notIn("car_status", // queryWrapper.notIn("car_status",
// FireCarStatusEnum.返队.getCode(),FireCarStatusEnum.加油.getCode(),FireCarStatusEnum.演练.getCode(),FireCarStatusEnum.训练.getCode(),FireCarStatusEnum.试车.getCode()); // FireCarStatusEnum.返队.getCode(),FireCarStatusEnum.加油.getCode(),FireCarStatusEnum.演练.getCode(),FireCarStatusEnum.训练.getCode(),FireCarStatusEnum.试车.getCode());
queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode()); queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode());
List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper); List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper);
Map<String, String> appleMap = alertFormValue != null && alertFormValue.size() > 0 Map<String, String> appleMap = alertFormValue != null && alertFormValue.size() > 0
? alertFormValue.stream().collect(Collectors.toMap(PowerTransferCompanyResources::getResourcesId, ? alertFormValue.stream().collect(Collectors.toMap(PowerTransferCompanyResources::getResourcesId,
PowerTransferCompanyResources::getCarStatus)) PowerTransferCompanyResources::getCarStatus))
: null; : null;
if (!ObjectUtils.isEmpty(result)) { if (!ObjectUtils.isEmpty(result)) {
List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult(); List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
if (!ValidationUtil.isEmpty(fireCarListMapList)) { if (!ValidationUtil.isEmpty(fireCarListMapList)) {
fireCarListMapList.stream().filter(car -> ObjectUtils.isNotEmpty(car.get("teamId"))).forEach(car -> { fireCarListMapList.stream().filter(car -> ObjectUtils.isNotEmpty(car.get("teamId"))).forEach(car -> {
FireBrigadeResourceDto fireCarDto = (FireBrigadeResourceDto) Bean.mapToBean(car, FireBrigadeResourceDto fireCarDto = (FireBrigadeResourceDto) Bean.mapToBean(car,
FireBrigadeResourceDto.class); FireBrigadeResourceDto.class);
// TODO 后期根据车物联状态来返回,现在为"(装备)在位=执勤","(装备)执勤=出动" // TODO 后期根据车物联状态来返回,现在为"(装备)在位=执勤","(装备)执勤=出动"
if (FireCarStatusEnum.执勤.getCode().equals(fireCarDto.getCarState())) { if (FireCarStatusEnum.执勤.getCode().equals(fireCarDto.getCarState())) {
fireCarDto.setCarStateDesc(FireCarStatusEnum.执勤.getName()); fireCarDto.setCarStateDesc(FireCarStatusEnum.执勤.getName());
} else { } else {
if (appleMap != null) { if (appleMap != null) {
String state = appleMap.containsKey(car.get("id")) ? appleMap.get(car.get("id")) : null; String state = appleMap.containsKey(car.get("id")) ? appleMap.get(car.get("id")) : null;
fireCarDto.setCarState(state); fireCarDto.setCarState(state);
fireCarDto fireCarDto
.setCarStateDesc(state != null ? FireCarStatusEnum.getEnum(state).getName() : null); .setCarStateDesc(state != null ? FireCarStatusEnum.getEnum(state).getName() : null);
} else { } else {
fireCarDto.setCarState(null); fireCarDto.setCarState(null);
fireCarDto.setCarStateDesc(null); fireCarDto.setCarStateDesc(null);
} }
} }
fireCarDtoList.add(fireCarDto); fireCarDtoList.add(fireCarDto);
}); });
} }
} }
// 2.查询消防队伍列表 // 2.查询消防队伍列表
List<FireTeam> fullTimeFireBrigadeList = fireTeamService.list( List<FireTeam> fullTimeFireBrigadeList = fireTeamService.list(
new QueryWrapper<FireTeam>().eq("type_code", FireBrigadeTypeEnum.专职消防队.getCode()).eq("is_delete", 0)); new QueryWrapper<FireTeam>().eq("type_code", FireBrigadeTypeEnum.专职消防队.getCode()).eq("is_delete", 0));
if (!CollectionUtils.isEmpty(fullTimeFireBrigadeList)) { if (!CollectionUtils.isEmpty(fullTimeFireBrigadeList)) {
Map<String, List<FireBrigadeResourceDto>> resultMap = fireCarDtoList.stream() Map<String, List<FireBrigadeResourceDto>> resultMap = fireCarDtoList.stream()
.collect(Collectors.groupingBy(FireBrigadeResourceDto::getTeamId)); .collect(Collectors.groupingBy(FireBrigadeResourceDto::getTeamId));
if (!ValidationUtil.isEmpty(fullTimeFireBrigadeList)) { if (!ValidationUtil.isEmpty(fullTimeFireBrigadeList)) {
fullTimeFireBrigadeList.forEach(brigade -> { fullTimeFireBrigadeList.forEach(brigade -> {
if (!CollectionUtils.isEmpty(resultMap.get(brigade.getSequenceNbr().toString()))) { if (!CollectionUtils.isEmpty(resultMap.get(brigade.getSequenceNbr().toString()))) {
FireBrigadeResourceDto fireCarResourceDto = new FireBrigadeResourceDto(); FireBrigadeResourceDto fireCarResourceDto = new FireBrigadeResourceDto();
List<FireBrigadeResourceDto> fireBrigadeResourceDtoList = resultMap List<FireBrigadeResourceDto> fireBrigadeResourceDtoList = resultMap
.get(brigade.getSequenceNbr().toString()); .get(brigade.getSequenceNbr().toString());
long onDutyCarCount = fireBrigadeResourceDtoList.stream() long onDutyCarCount = fireBrigadeResourceDtoList.stream()
.filter(car -> FireCarStatusEnum.执勤.getCode().equals(car.getCarState())).count(); .filter(car -> FireCarStatusEnum.执勤.getCode().equals(car.getCarState())).count();
long outCarCount = fireBrigadeResourceDtoList.size() - onDutyCarCount; long outCarCount = fireBrigadeResourceDtoList.size() - onDutyCarCount;
fireCarResourceDto.setId(brigade.getSequenceNbr().toString()); fireCarResourceDto.setId(brigade.getSequenceNbr().toString());
fireCarResourceDto.setType(FireBrigadeTypeEnum.专职消防队.getKey()); fireCarResourceDto.setType(FireBrigadeTypeEnum.专职消防队.getKey());
fireCarResourceDto.setName(brigade.getName()); fireCarResourceDto.setName(brigade.getName());
fireCarResourceDto.getChildren().addAll(fireBrigadeResourceDtoList); fireCarResourceDto.getChildren().addAll(fireBrigadeResourceDtoList);
fireCarResourceDto.setOutCount((int) outCarCount); fireCarResourceDto.setOutCount((int) outCarCount);
fireCarResourceDto.setOnDutyCount((int) onDutyCarCount); fireCarResourceDto.setOnDutyCount((int) onDutyCarCount);
fireBrigadeResourceList.add(fireCarResourceDto); fireBrigadeResourceList.add(fireCarResourceDto);
} }
}); });
} }
} }
// 3.消防队伍-监控大队 // 3.消防队伍-监控大队
List<FireBrigadeResourceDto> monitorFireBrigadeList = fireTeamService List<FireBrigadeResourceDto> monitorFireBrigadeList = fireTeamService
.listMonitorFireBrigade(FireBrigadeTypeEnum.监控大队.getCode()); .listMonitorFireBrigade(FireBrigadeTypeEnum.监控大队.getCode());
// List<FireBrigadeResourceDto> monitorFireBrigadeList = // List<FireBrigadeResourceDto> monitorFireBrigadeList =
// fireTeamService.listMonitorFireBrigade(); // fireTeamService.listMonitorFireBrigade();
/* bug 2403 队伍未显示图片 2021-09-23 陈召开始 */ /* bug 2403 队伍未显示图片 2021-09-23 陈召开始 */
// for (FireBrigadeResourceDto fireBrigadeResourceDto : monitorFireBrigadeList) { // for (FireBrigadeResourceDto fireBrigadeResourceDto : monitorFireBrigadeList) {
// if (fireBrigadeResourceDto.getPic() != null) { // if (fireBrigadeResourceDto.getPic() != null) {
// String[] split = fireBrigadeResourceDto.getPic().split(","); // String[] split = fireBrigadeResourceDto.getPic().split(",");
...@@ -330,54 +324,54 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe ...@@ -330,54 +324,54 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
// } // }
// } // }
// } // }
/* bug 2403 队伍未显示图片 2021-09-23 陈召结束 */ /* bug 2403 队伍未显示图片 2021-09-23 陈召结束 */
FireBrigadeResourceDto monitorResourceDto = new FireBrigadeResourceDto(); FireBrigadeResourceDto monitorResourceDto = new FireBrigadeResourceDto();
monitorResourceDto.setId("0"); monitorResourceDto.setId("0");
monitorResourceDto.setName(FireBrigadeTypeEnum.监控大队.getName()); monitorResourceDto.setName(FireBrigadeTypeEnum.监控大队.getName());
monitorResourceDto.setType(FireBrigadeTypeEnum.监控大队.getKey()); monitorResourceDto.setType(FireBrigadeTypeEnum.监控大队.getKey());
monitorResourceDto.setChildren(monitorFireBrigadeList); monitorResourceDto.setChildren(monitorFireBrigadeList);
if (!CollectionUtils.isEmpty(monitorFireBrigadeList)) { if (!CollectionUtils.isEmpty(monitorFireBrigadeList)) {
fireBrigadeResourceList.add(monitorResourceDto); fireBrigadeResourceList.add(monitorResourceDto);
} }
return fireBrigadeResourceList; return fireBrigadeResourceList;
} }
private List<PowerTransferCompanyResources> DtoEntityBatchConvert( private List<PowerTransferCompanyResources> DtoEntityBatchConvert(
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList, List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList,
Long powerTransferCompanySequenceNbr) { Long powerTransferCompanySequenceNbr) {
ArrayList<PowerTransferCompanyResources> powerTransferCompanyResourcesList = new ArrayList<>(); ArrayList<PowerTransferCompanyResources> powerTransferCompanyResourcesList = new ArrayList<>();
PowerTransferCompanyResources powerTransferCompanyResources; PowerTransferCompanyResources powerTransferCompanyResources;
List idList = powerTransferCompanyResourcesDtoList.stream() List idList = powerTransferCompanyResourcesDtoList.stream()
.map(PowerTransferCompanyResourcesDto::getResourcesId).collect(Collectors.toList()); .map(PowerTransferCompanyResourcesDto::getResourcesId).collect(Collectors.toList());
QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>(); QueryWrapper<PowerTransferCompanyResources> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode()); queryWrapper.eq("status", FireCarStatusEnum.执行中.getCode());
queryWrapper.in("resources_id", idList); queryWrapper.in("resources_id", idList);
List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper); List<PowerTransferCompanyResources> alertFormValue = powerTransferCompanyResourcesService.list(queryWrapper);
if (alertFormValue != null && alertFormValue.size() > 0) { if (alertFormValue != null && alertFormValue.size() > 0) {
throw new RuntimeException("已选车辆有已调派车辆!"); throw new RuntimeException("已选车辆有已调派车辆!");
} else { } else {
for (PowerTransferCompanyResourcesDto powerTransferCompanyResourcesDto : powerTransferCompanyResourcesDtoList) { for (PowerTransferCompanyResourcesDto powerTransferCompanyResourcesDto : powerTransferCompanyResourcesDtoList) {
powerTransferCompanyResources = new PowerTransferCompanyResources(); powerTransferCompanyResources = new PowerTransferCompanyResources();
BeanUtils.copyProperties(powerTransferCompanyResourcesDto, powerTransferCompanyResources); BeanUtils.copyProperties(powerTransferCompanyResourcesDto, powerTransferCompanyResources);
powerTransferCompanyResources.setPowerTransferCompanyId(powerTransferCompanySequenceNbr); powerTransferCompanyResources.setPowerTransferCompanyId(powerTransferCompanySequenceNbr);
// 资源状态 // 资源状态
powerTransferCompanyResources.setStatus(FireCarStatusEnum.执行中.getCode()); powerTransferCompanyResources.setStatus(FireCarStatusEnum.执行中.getCode());
// 资源状态 // 资源状态
powerTransferCompanyResources.setCarStatus(FireCarStatusEnum.出动.getCode()); powerTransferCompanyResources.setCarStatus(FireCarStatusEnum.出动.getCode());
powerTransferCompanyResourcesList.add(powerTransferCompanyResources); powerTransferCompanyResourcesList.add(powerTransferCompanyResources);
} }
return powerTransferCompanyResourcesList; return powerTransferCompanyResourcesList;
} }
} }
private void initDefinitions(Map<String, String> definitions, AlertCalled alertCalled, private void initDefinitions(Map<String, String> definitions, AlertCalled alertCalled,
PowerTransferDto powerTransferDto) { PowerTransferDto powerTransferDto) {
List<AlertFormValue> alertFormValue = alertFormValueService List<AlertFormValue> alertFormValue = alertFormValueService
.list(new QueryWrapper<AlertFormValue>().eq("alert_called_id", alertCalled.getSequenceNbr())); .list(new QueryWrapper<AlertFormValue>().eq("alert_called_id", alertCalled.getSequenceNbr()));
// definitions.put("rescueGrid", alertCalled.getRescueGrid()); // definitions.put("rescueGrid", alertCalled.getRescueGrid());
// definitions.put("alertType", alertCalled.getAlertType()); // definitions.put("alertType", alertCalled.getAlertType());
// definitions.put("address", alertCalled.getAddress()); // definitions.put("address", alertCalled.getAddress());
...@@ -385,373 +379,373 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe ...@@ -385,373 +379,373 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
// definitions.put("casualtiesNum", alertCalled.getCasualtiesNum().toString()); // definitions.put("casualtiesNum", alertCalled.getCasualtiesNum().toString());
// definitions.put("companyName", powerTransferDto.getCompanyName()); // definitions.put("companyName", powerTransferDto.getCompanyName());
for (AlertFormValue formValue : alertFormValue) { for (AlertFormValue formValue : alertFormValue) {
definitions.put(formValue.getFieldCode(), formValue.getFieldValue()); definitions.put(formValue.getFieldCode(), formValue.getFieldValue());
} }
} }
private String getTaskInformation(String content, Map<String, String> definitions) { private String getTaskInformation(String content, Map<String, String> definitions) {
int size = definitions.size(); int size = definitions.size();
String[] keys = definitions.keySet().toArray(new String[size]); String[] keys = definitions.keySet().toArray(new String[size]);
String[] values = definitions.values().toArray(new String[size]); String[] values = definitions.values().toArray(new String[size]);
return StringUtils.replaceEach(content, keys, values); return StringUtils.replaceEach(content, keys, values);
} }
private void createPowerTransferCompany(PowerTransferDto powerTransferDto, Long powerTransferSequenceNbr, private void createPowerTransferCompany(PowerTransferDto powerTransferDto, Long powerTransferSequenceNbr,
Map<String, String> definitions, String content, AlertCalledObjsDto alertCalledObjsDto) { Map<String, String> definitions, String content, AlertCalledObjsDto alertCalledObjsDto) {
List<PowerTransferCompanyDto> powerTransferCompanyDotList = powerTransferDto.getPowerTransferCompanyDotList(); List<PowerTransferCompanyDto> powerTransferCompanyDotList = powerTransferDto.getPowerTransferCompanyDotList();
PowerTransferCompany powerTransferCompany; PowerTransferCompany powerTransferCompany;
List<Object> carStatusInfoDtoList = Lists.newArrayList();
List<Object> carStatusInfoDtoList = Lists.newArrayList(); AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled();
// 初始化警情 信息
AlertCalled alertCalled = alertCalledObjsDto.getAlertCalled(); /**
* 构建警情报送规则对象
// 初始化警情 信息 */
/** AlertCalledRo alertCalledRo = new AlertCalledRo();
* 构建警情报送规则对象 String replaceContent = "";
*/ if (null != alertCalled) {
AlertCalledRo alertCalledRo = new AlertCalledRo(); replaceContent = RuleAlertCalledService.init(alertCalledRo, alertCalledObjsDto);
String replaceContent =""; }
if(null != alertCalled) { definitions.put("rescueGrid", alertCalled.getAddress());
replaceContent = RuleAlertCalledService.init(alertCalledRo, alertCalledObjsDto); definitions.put("type", alertCalled.getAlertType());
} definitions.put("contactUser", alertCalled.getContactUser());
definitions.put("contactPhone", alertCalled.getContactPhone());
definitions.put("rescueGrid", alertCalled.getAddress()); definitions.put("type", alertCalled.getAlertType());
definitions.put("type", alertCalled.getAlertType()); definitions.put("replaceContent", replaceContent);
definitions.put("contactUser", alertCalled.getContactUser()); definitions.put("callTime",
definitions.put("contactPhone", alertCalled.getContactPhone()); DateUtils.convertDateToString(alertCalled.getCallTime(), DateUtils.DATE_TIME_PATTERN));
definitions.put("type", alertCalled.getAlertType()); for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDotList) {
definitions.put("replaceContent", replaceContent); powerTransferCompany = new PowerTransferCompany();
definitions.put("callTime", BeanUtils.copyProperties(powerTransferCompanyDto, powerTransferCompany);
DateUtils.convertDateToString(alertCalled.getCallTime(), DateUtils.DATE_TIME_PATTERN)); powerTransferCompany.setPowerTransferId(powerTransferSequenceNbr);
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList = powerTransferCompanyDto
.getPowerTransferCompanyResourcesDtoList();
for (PowerTransferCompanyDto powerTransferCompanyDto : powerTransferCompanyDotList) { if (powerTransferCompanyResourcesDtoList.size() == 0) {
powerTransferCompany = new PowerTransferCompany(); powerTransferCompany.setIsDistributionAgencies(true);
BeanUtils.copyProperties(powerTransferCompanyDto, powerTransferCompany); definitions.put("departmentName", powerTransferCompanyDto.getCompanyName());
powerTransferCompany.setPowerTransferId(powerTransferSequenceNbr);
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesDtoList = powerTransferCompanyDto definitions.put("content", "");
.getPowerTransferCompanyResourcesDtoList(); powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions));
if (powerTransferCompanyResourcesDtoList.size() == 0) { powerTransferCompanyService.save(powerTransferCompany);
powerTransferCompany.setIsDistributionAgencies(true); powerTransferCompanyDto.setSequenceNbr(powerTransferCompany.getSequenceNbr());
definitions.put("departmentName", powerTransferCompanyDto.getCompanyName()); } else {
powerTransferCompany.setIsDistributionAgencies(false);
definitions.put("content", ""); StringBuilder taskInformation = new StringBuilder();
powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions)); for (PowerTransferCompanyResourcesDto powerTransferCompanyResourcesDto : powerTransferCompanyResourcesDtoList) {
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("type", powerTransferCompanyResourcesDto.getType());
// definitions.put("resourcesNum", powerTransferCompanyResourcesDto.getResourcesNum()); // definitions.put("resourcesNum", powerTransferCompanyResourcesDto.getResourcesNum());
String information = powerTransferCompanyResourcesDto.getType().concat("车牌号") String information = powerTransferCompanyResourcesDto.getType().concat("车牌号")
.concat(powerTransferCompanyResourcesDto.getResourcesNum()); .concat(powerTransferCompanyResourcesDto.getResourcesNum());
taskInformation.append(information).append("丶"); taskInformation.append(information).append("丶");
CarStatusInfoDto carStatusInfoDto = new CarStatusInfoDto();
CarStatusInfoDto carStatusInfoDto = new CarStatusInfoDto(); carStatusInfoDto.setSequenceNbr(powerTransferCompanyResourcesDto.getResourcesId());
carStatusInfoDto.setSequenceNbr(powerTransferCompanyResourcesDto.getResourcesId()); carStatusInfoDto.setStatus(FireCarStatusEnum.出动.getCode());
carStatusInfoDto.setStatus(FireCarStatusEnum.出动.getCode()); carStatusInfoDtoList.add(carStatusInfoDto);
carStatusInfoDtoList.add(carStatusInfoDto); }
} definitions.put("departmentName", powerTransferCompanyDto.getCompanyName());
definitions.put("content", taskInformation.toString());
definitions.put("departmentName", powerTransferCompanyDto.getCompanyName()); powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions));
definitions.put("content", taskInformation.toString()); powerTransferCompanyService.save(powerTransferCompany);
powerTransferCompanyDto.setSequenceNbr(powerTransferCompany.getSequenceNbr());
powerTransferCompany.setTaskInformation(getTaskInformation(content, definitions)); Long powerTransferCompanySequenceNbr = powerTransferCompany.getSequenceNbr();
powerTransferCompanyService.save(powerTransferCompany); List<PowerTransferCompanyResources> powerTransferCompanyResourcesList = DtoEntityBatchConvert(
powerTransferCompanyDto.setSequenceNbr(powerTransferCompany.getSequenceNbr()); powerTransferCompanyResourcesDtoList, powerTransferCompanySequenceNbr);
Long powerTransferCompanySequenceNbr = powerTransferCompany.getSequenceNbr(); powerTransferCompanyResourcesService.saveBatch(powerTransferCompanyResourcesList);
List<PowerTransferCompanyResources> powerTransferCompanyResourcesList = DtoEntityBatchConvert( List<PowerTransferCompanyResourcesDto> resourcesDtoList = new ArrayList<>();
powerTransferCompanyResourcesDtoList, powerTransferCompanySequenceNbr); powerTransferCompanyResourcesList.stream().forEach(e -> {
powerTransferCompanyResourcesService.saveBatch(powerTransferCompanyResourcesList); PowerTransferCompanyResourcesDto dto = new PowerTransferCompanyResourcesDto();
List<PowerTransferCompanyResourcesDto> resourcesDtoList = new ArrayList<>(); Bean.toPo(e, dto);
powerTransferCompanyResourcesList.stream().forEach(e->{ resourcesDtoList.add(dto);
PowerTransferCompanyResourcesDto dto = new PowerTransferCompanyResourcesDto(); });
Bean.toPo(e,dto); powerTransferCompanyDto.setPowerTransferCompanyResourcesDtoList(resourcesDtoList);
resourcesDtoList.add(dto); // 更新车辆状态
}); equipFeignService.updateCarStatus(carStatusInfoDtoList);
powerTransferCompanyDto.setPowerTransferCompanyResourcesDtoList(resourcesDtoList); // 警情力量调派时,点击【任务派发】后,如果被调派的 力量包含消防车,那么该消防车所在的 大队的警铃、广播自动 启动,消防车所在的车库门自动开启
try {
// 更新车辆状态 List<Controller> controllers = controllerServiceImpl.list(new LambdaQueryWrapper<Controller>().eq(Controller::getFireTeamSeq, powerTransferCompanyDto.getCompanyId()));
equipFeignService.updateCarStatus(carStatusInfoDtoList); if (controllers.size() > 0) {
} controllerServiceImpl.changeControllerState(controllers.toArray(new Controller[0]));
} }
} } catch (Exception e) {
log.error(e.getMessage());
@Override log.error("车库门、警铃、广播的 联动 功能出现异常");
public List<PowerTransferCompanyDto> getLastPowerTransferCompany(Long alertCalledId) { }
return this.baseMapper.getLastPowerTransferCompany(alertCalledId); }
} }
}
public List<String> queryTransferCarIdsByAlertCalledId(Long alertCalledId) {
return this.baseMapper.queryTransferCarIdsByAlertCalledId(alertCalledId); @Override
} public List<PowerTransferCompanyDto> getLastPowerTransferCompany(Long alertCalledId) {
return this.baseMapper.getLastPowerTransferCompany(alertCalledId);
public Map<String, Object> getPowerTransferList(String beginDate, String endDate) { }
// 获取力量调派信息
List<PowerTransferDto> powerTransferInfo = this.baseMapper.getPowerTransferInfo(beginDate, endDate); public List<String> queryTransferCarIdsByAlertCalledId(Long alertCalledId) {
List<PowerTransferCompanyDto> powerTransferCompanyInfo = this.baseMapper.getPowerTransferCompanyInfo(beginDate, return this.baseMapper.queryTransferCarIdsByAlertCalledId(alertCalledId);
endDate); }
List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesInfo = this.baseMapper
.getPowerTransferCompanyResourcesInfo(beginDate, endDate); public Map<String, Object> getPowerTransferList(String beginDate, String endDate) {
Map<String, Object> transferInfo = this.baseMapper.getPowerTransferInfoCount(beginDate, endDate); // 获取力量调派信息
List<PowerTransferDto> powerTransferInfo = this.baseMapper.getPowerTransferInfo(beginDate, endDate);
// 获取力量出动模板 List<PowerTransferCompanyDto> powerTransferCompanyInfo = this.baseMapper.getPowerTransferCompanyInfo(beginDate,
Template template = templateService endDate);
.getOne(new QueryWrapper<Template>().eq("type_code", DutyInfoEnum.力量出动.getKey()).eq("format", false)); List<PowerTransferCompanyResourcesDto> powerTransferCompanyResourcesInfo = this.baseMapper
String templateContent = template.getContent(); .getPowerTransferCompanyResourcesInfo(beginDate, endDate);
List<String> transferContent = new ArrayList<>(); Map<String, Object> transferInfo = this.baseMapper.getPowerTransferInfoCount(beginDate, endDate);
powerTransferInfo.forEach(pt -> {
StringBuilder transferDetail = new StringBuilder(); // 获取力量出动模板
Long powerTransferId = pt.getSequenceNbr(); Template template = templateService
String rescueGrid = pt.getRescueGrid(); .getOne(new QueryWrapper<Template>().eq("type_code", DutyInfoEnum.力量出动.getKey()).eq("format", false));
powerTransferCompanyInfo.forEach(ptc -> { String templateContent = template.getContent();
if (powerTransferId.equals(ptc.getPowerTransferId())) { List<String> transferContent = new ArrayList<>();
transferDetail.append(ptc.getCompanyName()); powerTransferInfo.forEach(pt -> {
if (!ptc.getIsDistributionAgencies()) { StringBuilder transferDetail = new StringBuilder();
Long powerTransferCompanyId = ptc.getSequenceNbr(); Long powerTransferId = pt.getSequenceNbr();
transferDetail.append("车辆车牌号"); String rescueGrid = pt.getRescueGrid();
powerTransferCompanyResourcesInfo.forEach(ptcr -> { powerTransferCompanyInfo.forEach(ptc -> {
if (powerTransferCompanyId.equals(ptcr.getPowerTransferCompanyId())) { if (powerTransferId.equals(ptc.getPowerTransferId())) {
transferDetail.append(ptcr.getResourcesNum()).append("、"); transferDetail.append(ptc.getCompanyName());
transferDetail.append(ptcr.getStatus()).append("、"); if (!ptc.getIsDistributionAgencies()) {
} Long powerTransferCompanyId = ptc.getSequenceNbr();
}); transferDetail.append("车辆车牌号");
transferDetail.deleteCharAt(transferDetail.length() - 1); powerTransferCompanyResourcesInfo.forEach(ptcr -> {
} if (powerTransferCompanyId.equals(ptcr.getPowerTransferCompanyId())) {
transferDetail.append(";"); transferDetail.append(ptcr.getResourcesNum()).append("、");
} transferDetail.append(ptcr.getStatus()).append("、");
}); }
transferDetail.deleteCharAt(transferDetail.length() - 1); });
if (transferDetail.toString().contains("、")) { transferDetail.deleteCharAt(transferDetail.length() - 1);
String transfer = null; }
String taskStatus = null; transferDetail.append(";");
String[] split = transferDetail.toString().split("、"); }
if (split.length > 1) { });
transfer = split[0]; transferDetail.deleteCharAt(transferDetail.length() - 1);
taskStatus = split[1]; if (transferDetail.toString().contains("、")) {
} String transfer = null;
String transferDetails = templateContent.replace("departmentName-type-resourcesNum", transfer) String taskStatus = null;
.replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus", String[] split = transferDetail.toString().split("、");
taskStatus != null ? FireCarStatusEnum.getEnum(taskStatus).getName() : null); if (split.length > 1) {
transferContent.add(transferDetails); transfer = split[0];
} else { taskStatus = split[1];
String transferDetails = templateContent }
.replace("departmentName-type-resourcesNum", transferDetail.toString()) String transferDetails = templateContent.replace("departmentName-type-resourcesNum", transfer)
.replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus", ""); .replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus",
transferContent.add(transferDetails); taskStatus != null ? FireCarStatusEnum.getEnum(taskStatus).getName() : null);
} transferContent.add(transferDetails);
}); } else {
transferInfo.put("transferContent", transferContent); String transferDetails = templateContent
.replace("departmentName-type-resourcesNum", transferDetail.toString())
return transferInfo; .replace("rescueGrid", rescueGrid == null ? "" : rescueGrid).replace("taskStatus", "");
} transferContent.add(transferDetails);
}
@Override });
public List<PowerCompanyCountDto> getPowerCompanyCountDtocount(Long id) { transferInfo.put("transferContent", transferContent);
List<PowerCompanyCountDto> list = powerTransferMapper.getPowerCompanyCountDtocount(id);
if (list != null && list.size() > 0) { return transferInfo;
list.stream().forEach(powerCompanyCountDto -> { }
List<PowerCarCountDto> li = powerTransferMapper.getPowerCarCountDtocount(id,
powerCompanyCountDto.getCompanyId()); @Override
powerCompanyCountDto.setPowerCarCountDto(li); public List<PowerCompanyCountDto> getPowerCompanyCountDtocount(Long id) {
}); List<PowerCompanyCountDto> list = powerTransferMapper.getPowerCompanyCountDtocount(id);
} if (list != null && list.size() > 0) {
return list; list.stream().forEach(powerCompanyCountDto -> {
} List<PowerCarCountDto> li = powerTransferMapper.getPowerCarCountDtocount(id,
powerCompanyCountDto.getCompanyId());
@Override powerCompanyCountDto.setPowerCarCountDto(li);
public IPage<PowerTransferResourceDto> getPowerTransferPageByParam(Long alertCalledId, String type, });
Page<PowerTransferResourceDto> page) { }
if (ValidationUtil.isEmpty(alertCalledId)) { return list;
throw new BaseException("警情id为空", "", "警情id为空"); }
}
IPage<PowerTransferResourceDto> resultPage = null; @Override
switch (type) { public IPage<PowerTransferResourceDto> getPowerTransferPageByParam(Long alertCalledId, String type,
case "team": Page<PowerTransferResourceDto> page) {
resultPage = getPowerTransferTeamResource(page, alertCalledId); if (ValidationUtil.isEmpty(alertCalledId)) {
break; throw new BaseException("警情id为空", "", "警情id为空");
case "car": }
resultPage = getPowerTransferCarResource(page, alertCalledId); IPage<PowerTransferResourceDto> resultPage = null;
break; switch (type) {
case "person": case "team":
// TODO 暂时没有调度人员 resultPage = getPowerTransferTeamResource(page, alertCalledId);
resultPage = new Page<>(); break;
break; case "car":
default: resultPage = getPowerTransferCarResource(page, alertCalledId);
break; break;
} case "person":
return resultPage; // TODO 暂时没有调度人员
} resultPage = new Page<>();
break;
@Override default:
public List<ResourceStatisticsDto> getPowerTransferStatistics(Long alertCalledId, String type) { break;
List<ResourceStatisticsDto> result; }
result = powerTransferMapper.getPowerTransferTeamResourceCount(alertCalledId, type); return resultPage;
if (ValidationUtil.isEmpty(result)) { }
ResourceStatisticsDto team = new ResourceStatisticsDto("team", 0, 0, 0);
ResourceStatisticsDto car = new ResourceStatisticsDto("car", 0, 0, 0); @Override
ResourceStatisticsDto person = new ResourceStatisticsDto("person", 0, 0, 0); public List<ResourceStatisticsDto> getPowerTransferStatistics(Long alertCalledId, String type) {
result.add(team); List<ResourceStatisticsDto> result;
result.add(car); result = powerTransferMapper.getPowerTransferTeamResourceCount(alertCalledId, type);
result.add(person); if (ValidationUtil.isEmpty(result)) {
} ResourceStatisticsDto team = new ResourceStatisticsDto("team", 0, 0, 0);
return result; ResourceStatisticsDto car = new ResourceStatisticsDto("car", 0, 0, 0);
} ResourceStatisticsDto person = new ResourceStatisticsDto("person", 0, 0, 0);
result.add(team);
public IPage<PowerTransferResourceDto> getPowerTransferTeamResource(Page<PowerTransferResourceDto> page, result.add(car);
Long alertCalledId) { result.add(person);
return powerTransferMapper.getPowerTransferTeamResource(page, alertCalledId); }
} return result;
}
private IPage<PowerTransferResourceDto> getPowerTransferCarResource(Page<PowerTransferResourceDto> page,
Long alertCalledId) { public IPage<PowerTransferResourceDto> getPowerTransferTeamResource(Page<PowerTransferResourceDto> page,
Map<String, List<Map<String, Object>>> carInfoMap = getCarListMap(); Long alertCalledId) {
return powerTransferMapper.getPowerTransferTeamResource(page, alertCalledId);
IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper.getPowerTransferCarResource(page, }
alertCalledId);
Map<String, List<Map<String, Object>>> finalCarInfoMap = carInfoMap; private IPage<PowerTransferResourceDto> getPowerTransferCarResource(Page<PowerTransferResourceDto> page,
carResourcePage.getRecords().forEach(car -> { Long alertCalledId) {
String seq = car.getSequenceNbr().toString(); Map<String, List<Map<String, Object>>> carInfoMap = getCarListMap();
car.setName((String) finalCarInfoMap.get(seq).get(0).get("name"));
String carStateCode = (String) finalCarInfoMap.get(seq).get(0).get("carState"); IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper.getPowerTransferCarResource(page,
car.setCarState(!ValidationUtil.isEmpty(FireCarStatusEnum.getEnum(carStateCode)) alertCalledId);
? FireCarStatusEnum.getEnum(carStateCode).getName() Map<String, List<Map<String, Object>>> finalCarInfoMap = carInfoMap;
: ""); carResourcePage.getRecords().forEach(car -> {
List<String> images = (List<String>) finalCarInfoMap.get(seq).get(0).get("image"); String seq = car.getSequenceNbr().toString();
car.setImg(!ValidationUtil.isEmpty(images) ? images.get(0) : ""); car.setName((String) finalCarInfoMap.get(seq).get(0).get("name"));
}); String carStateCode = (String) finalCarInfoMap.get(seq).get(0).get("carState");
return carResourcePage; car.setCarState(!ValidationUtil.isEmpty(FireCarStatusEnum.getEnum(carStateCode))
} ? FireCarStatusEnum.getEnum(carStateCode).getName()
: "");
private Map<String, List<Map<String, Object>>> getCarListMap() { List<String> images = (List<String>) finalCarInfoMap.get(seq).get(0).get("image");
ResponseModel<Object> result = equipFeignClient.getFireCarListAll(); car.setImg(!ValidationUtil.isEmpty(images) ? images.get(0) : "");
Map<String, List<Map<String, Object>>> carInfoMap = Maps.newConcurrentMap(); });
if (!ValidationUtil.isEmpty(result)) { return carResourcePage;
List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult(); }
if (!ValidationUtil.isEmpty(fireCarListMapList)) {
carInfoMap = fireCarListMapList.stream() private Map<String, List<Map<String, Object>>> getCarListMap() {
.collect(Collectors.groupingBy(car -> car.get("id").toString())); ResponseModel<Object> result = equipFeignClient.getFireCarListAll();
} Map<String, List<Map<String, Object>>> carInfoMap = Maps.newConcurrentMap();
} if (!ValidationUtil.isEmpty(result)) {
return carInfoMap; List<Map<String, Object>> fireCarListMapList = (List<Map<String, Object>>) result.getResult();
} if (!ValidationUtil.isEmpty(fireCarListMapList)) {
carInfoMap = fireCarListMapList.stream()
private List<Map<String, Object>> getCarList() { .collect(Collectors.groupingBy(car -> car.get("id").toString()));
ResponseModel<Object> result = equipFeignClient.getFireCarListAll(); }
List<Map<String, Object>> fireCarListMapList = Lists.newArrayList(); }
if (!ValidationUtil.isEmpty(result)) { return carInfoMap;
fireCarListMapList = (List<Map<String, Object>>) result.getResult(); }
}
return fireCarListMapList; private List<Map<String, Object>> getCarList() {
} ResponseModel<Object> result = equipFeignClient.getFireCarListAll();
List<Map<String, Object>> fireCarListMapList = Lists.newArrayList();
@Override if (!ValidationUtil.isEmpty(result)) {
public JSONObject getPowerTransferCarResourceStatistics(Long alertCalledId) { fireCarListMapList = (List<Map<String, Object>>) result.getResult();
// 所有车辆 }
List<Map<String, Object>> carList = getCarList(); return fireCarListMapList;
}
IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper
.getPowerTransferCarResource(new Page<>(1L, Long.MAX_VALUE), alertCalledId); @Override
// 调派的车辆id列表 public JSONObject getPowerTransferCarResourceStatistics(Long alertCalledId) {
List<Long> carIdList = Lists.transform(carResourcePage.getRecords(), PowerTransferResourceDto::getSequenceNbr); // 所有车辆
// 调派的车辆信息列表 List<Map<String, Object>> carList = getCarList();
List<Map<String, Object>> totalCarList = carList.stream()
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("id")))).collect(Collectors.toList()); IPage<PowerTransferResourceDto> carResourcePage = powerTransferMapper
// TODO 车辆枚举后期修改为已到达状态车辆 .getPowerTransferCarResource(new Page<>(1L, Long.MAX_VALUE), alertCalledId);
List<Map<String, Object>> arrivedCarList = carList.stream() // 调派的车辆id列表
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("id"))) List<Long> carIdList = Lists.transform(carResourcePage.getRecords(), PowerTransferResourceDto::getSequenceNbr);
&& FireCarStatusEnum.出动.getCode().equals(c.get("carState"))) // 调派的车辆信息列表
.collect(Collectors.toList()); List<Map<String, Object>> totalCarList = carList.stream()
// 调派-已到达车辆id列表 .filter(c -> carIdList.contains(Long.valueOf((String) c.get("id")))).collect(Collectors.toList());
List<Long> arrivedCarIdList = Lists.newArrayList(); // TODO 车辆枚举后期修改为已到达状态车辆
arrivedCarList.forEach(c -> { List<Map<String, Object>> arrivedCarList = carList.stream()
if (FireCarStatusEnum.出动.getCode().equals(c.get("carState"))) { .filter(c -> carIdList.contains(Long.valueOf((String) c.get("id")))
arrivedCarIdList.add(Long.valueOf((String) c.get("id"))); && FireCarStatusEnum.出动.getCode().equals(c.get("carState")))
} .collect(Collectors.toList());
}); // 调派-已到达车辆id列表
List<Long> arrivedCarIdList = Lists.newArrayList();
JSONObject resourceStatistics = new JSONObject(); arrivedCarList.forEach(c -> {
double carTotal = carResourcePage.getTotal(); if (FireCarStatusEnum.出动.getCode().equals(c.get("carState"))) {
arrivedCarIdList.add(Long.valueOf((String) c.get("id")));
// 车辆统计 }
carCount(arrivedCarList, resourceStatistics, carTotal, "car"); });
// 车辆人员统计 JSONObject resourceStatistics = new JSONObject();
dutyPersonCount(carIdList, arrivedCarIdList, resourceStatistics); double carTotal = carResourcePage.getTotal();
// 车载器材统计 // 车辆统计
fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "equipment", "equip"); carCount(arrivedCarList, resourceStatistics, carTotal, "car");
// TODO 车载水量统计 // 车辆人员统计
carCount(arrivedCarList, resourceStatistics, carTotal, "water"); dutyPersonCount(carIdList, arrivedCarIdList, resourceStatistics);
// 车载药剂统计 // 车载器材统计
fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "fireAgent", "medicament"); fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "equipment", "equip");
return resourceStatistics;
} // TODO 车载水量统计
carCount(arrivedCarList, resourceStatistics, carTotal, "water");
public void carCount(List<Map<String, Object>> arrivedCarList, JSONObject resourceStatistics, double carTotal,
String jsoKey) { // 车载药剂统计
JSONObject car = new JSONObject(); fireAgentOnCarCount(totalCarList, arrivedCarList, resourceStatistics, "fireAgent", "medicament");
car.put("total", carTotal); return resourceStatistics;
car.put("count", arrivedCarList.size()); }
resourceStatistics.put(jsoKey, car);
} public void carCount(List<Map<String, Object>> arrivedCarList, JSONObject resourceStatistics, double carTotal,
String jsoKey) {
public void dutyPersonCount(List<Long> carIdList, List<Long> arrivedCarIdList, JSONObject resourceStatistics) { JSONObject car = new JSONObject();
// 当前时间所在班次 car.put("total", carTotal);
List<Long> shiftIdList = dutyCarService.getDutyShiftIdList(); car.put("count", arrivedCarList.size());
List<Map<String, Object>> allDutyPersonList = Lists.newArrayList(); resourceStatistics.put(jsoKey, car);
if (!ValidationUtil.isEmpty(shiftIdList)) { }
// 当前值班车辆-人
allDutyPersonList = dutyCarService.dayDutyPersonList(DateUtils.getDateNowShortStr(), shiftIdList.get(0), public void dutyPersonCount(List<Long> carIdList, List<Long> arrivedCarIdList, JSONObject resourceStatistics) {
null); // 当前时间所在班次
} List<Long> shiftIdList = dutyCarService.getDutyShiftIdList();
// 当前车辆执勤人员 List<Map<String, Object>> allDutyPersonList = Lists.newArrayList();
List<Map<String, Object>> allTransferDutyPerson = allDutyPersonList.stream() if (!ValidationUtil.isEmpty(shiftIdList)) {
.filter(c -> carIdList.contains(Long.valueOf((String) c.get("carId")))).collect(Collectors.toList()); // 当前值班车辆-人
// 当前已到达车辆执勤人员 allDutyPersonList = dutyCarService.dayDutyPersonList(DateUtils.getDateNowShortStr(), shiftIdList.get(0),
List<Map<String, Object>> allArrivedTransferDutyPerson = allDutyPersonList.stream() null);
.filter(c -> arrivedCarIdList.contains(Long.valueOf((String) c.get("carId")))) }
.collect(Collectors.toList()); // 当前车辆执勤人员
JSONObject person = new JSONObject(); List<Map<String, Object>> allTransferDutyPerson = allDutyPersonList.stream()
person.put("total", allTransferDutyPerson.size()); .filter(c -> carIdList.contains(Long.valueOf((String) c.get("carId")))).collect(Collectors.toList());
person.put("count", allArrivedTransferDutyPerson.size()); // 当前已到达车辆执勤人员
resourceStatistics.put("person", person); List<Map<String, Object>> allArrivedTransferDutyPerson = allDutyPersonList.stream()
} .filter(c -> arrivedCarIdList.contains(Long.valueOf((String) c.get("carId"))))
.collect(Collectors.toList());
public void fireAgentOnCarCount(List<Map<String, Object>> totalCarList, List<Map<String, Object>> arrivedCarList, JSONObject person = new JSONObject();
JSONObject resourceStatistics, String equipType, String jsonKey) { person.put("total", allTransferDutyPerson.size());
double agentCountAll = totalCarList.stream().mapToDouble( person.put("count", allArrivedTransferDutyPerson.size());
car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream() resourceStatistics.put("person", person);
.filter(res -> equipType.equals(res.get("equipType"))) }
.mapToDouble(c -> (double) c.get("equipCount")).sum() : 0)
.sum(); public void fireAgentOnCarCount(List<Map<String, Object>> totalCarList, List<Map<String, Object>> arrivedCarList,
JSONObject resourceStatistics, String equipType, String jsonKey) {
double agentCountArrived = arrivedCarList.stream().mapToDouble( double agentCountAll = totalCarList.stream().mapToDouble(
car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream() car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream()
.filter(res -> equipType.equals(res.get("equipType"))) .filter(res -> equipType.equals(res.get("equipType")))
.mapToDouble(c -> (double) c.get("equipCount")).sum() : 0) .mapToDouble(c -> (double) c.get("equipCount")).sum() : 0)
.sum(); .sum();
JSONObject jsonObject = new JSONObject(); double agentCountArrived = arrivedCarList.stream().mapToDouble(
jsonObject.put("total", agentCountAll); car -> car.get("resourceList") != null ? ((List<Map<String, Object>>) car.get("resourceList")).stream()
jsonObject.put("count", agentCountArrived); .filter(res -> equipType.equals(res.get("equipType")))
resourceStatistics.put(jsonKey, jsonObject); .mapToDouble(c -> (double) c.get("equipCount")).sum() : 0)
} .sum();
@Override JSONObject jsonObject = new JSONObject();
public List<Map<String, String>> getFireCarStatusList() { jsonObject.put("total", agentCountAll);
return FireCarStatusEnum.toList(); jsonObject.put("count", agentCountArrived);
} resourceStatistics.put(jsonKey, jsonObject);
}
@Override
public List<Map<String, String>> getDispatchTaskStatusList() { @Override
return AlertFeedbackStatusEnum.toList(); public List<Map<String, String>> getFireCarStatusList() {
} return FireCarStatusEnum.toList();
}
@Override
public List<Map<String, String>> getDispatchTaskStatusList() {
return AlertFeedbackStatusEnum.toList();
}
} }
...@@ -71,7 +71,7 @@ class AppNslClientToken { ...@@ -71,7 +71,7 @@ class AppNslClientToken {
/** /**
* 获取访问Token,包含token和过期时间(2021-11-30测试Token过期时间为18天) * 获取访问Token,包含token和过期时间(2021-11-30测试Token过期时间为18天)
* 集成项目中,token放到缓存中,避免多次获取可能导致已进行的任务token失效 * 避免多次获取可能导致已进行的任务token失效
* *
* @return 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