Browse Source

Merge remote-tracking branch 'origin/master'

zhongwei
ty 9 months ago
parent
commit
acf7645d50
  1. 28
      hzims-biz-common/src/main/java/com/hnac/hzims/common/statistics/Charts.java
  2. 6
      hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/DateUtil.java
  3. 3
      hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/ai/entity/CameraInfoEntity.java
  4. 8
      hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/constants/DictKeyConstants.java
  5. 3
      hzims-service/equipment/src/main/resources/db/2.0.0.sql.1
  6. 15
      hzims-service/hzims-middle/src/main/resources/db/1.0.0.sql
  7. 6
      hzims-service/hzims-middle/src/main/resources/db/4.0.0.sql
  8. 34
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/controller/TaskObjectController.java
  9. 217
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/schedule/VideoTaskSchedule.java
  10. 3
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/schedule/XxlJobConstants.java
  11. 3
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskObjectService.java
  12. 36
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskObjectServiceImpl.java
  13. 9
      hzims-service/inspect/src/main/resources/db/2.0.0.sql.1
  14. 1
      hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessagePushRecordService.java
  15. 5
      hzims-service/message/src/main/java/com/hnac/hzims/message/statistics/controller/MsgPushStatisticController.java
  16. 3
      hzims-service/message/src/main/java/com/hnac/hzims/message/statistics/service/IMsgPushStatisticService.java
  17. 40
      hzims-service/message/src/main/java/com/hnac/hzims/message/statistics/service/impl/MsgPushStatisticServiceImpl.java
  18. 4
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskSchedule.java
  19. BIN
      hzims-service/operational/src/main/resources/template/excel/access_import_template.xlsx
  20. 30
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/AccidentController.java

28
hzims-biz-common/src/main/java/com/hnac/hzims/common/statistics/Charts.java

@ -0,0 +1,28 @@
package com.hnac.hzims.common.statistics;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.List;
@ApiModel("统计图表")
@Data
@EqualsAndHashCode
public class Charts implements Serializable {
@ApiModelProperty("类别")
private List<String> legends;
@ApiModelProperty("x轴分区")
private List<String> xAxis;
@ApiModelProperty("展示数据")
private List<List> series;
}

6
hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/DateUtil.java

@ -6,6 +6,7 @@ import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.util.Assert;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
@ -16,11 +17,14 @@ import java.util.stream.IntStream;
/**
* @author hx
*/
public class DateUtil {
public class DateUtil extends org.springblade.core.tool.utils.DateUtil {
public static final String yyyy_MM_dd_HH_MM_SS= "yyyy-MM-dd HH:mm:ss";
public static final String yyyy_MM_dd= "yyyy-MM-dd";
public static final String yyyy_MM= "yyyy-MM";
public static final DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
public static final String yyyy= "yyyy";
public static final String YEAR = "year";

3
hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/ai/entity/CameraInfoEntity.java

@ -132,4 +132,7 @@ public class CameraInfoEntity extends TenantEntity {
@ApiModelProperty(value = "是否平台接入")
private Integer isHikvideo;
@ApiModelProperty("设备编号")
private String emCode;
}

8
hzims-service-api/message-api/src/main/java/com/hnac/hzims/message/constants/DictKeyConstants.java

@ -0,0 +1,8 @@
package com.hnac.hzims.message.constants;
public interface DictKeyConstants {
/**消息推送类型 [appPush-app推送 smsPush-短信推送 websocketPush-web推送 mailPush-邮件推送]**/
String MESSAGE_TYPE = "messageType";
}

3
hzims-service/equipment/src/main/resources/db/2.0.0.sql.1

@ -29,4 +29,7 @@ alter table `HZIMS_PARAM_BACKUPS` add column `em_name` varchar(100) COMMENT '设
update HZIMS_PARAM_BACKUPS pb,HZIMS_EM_INFO ei set pb.EM_NAME = ei.`NAME` WHERE pb.EM_CODE = ei.NUMBER;
update bladex.blade_dict set dict_key = '2' where id = 1675699613977288706;
update equipment.hzims_em_definition set type = '2' where type = '0';
update bladex.blade_dict set dict_key = '2' where id = 1675699613977288706;
update equipment.hzims_em_definition set type = '2' where type = '0';

15
hzims-service/hzims-middle/src/main/resources/db/1.0.0.sql

@ -146,6 +146,9 @@ INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`,
INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (8, 8, 'DUTY_REC', 'DUTY_REC', '交接班V4', '交接班', 'Y', 0, NULL, '2023-07-25 18:35:01', '2023-07-25 18:35:01', '交接班流程');
INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (9, 9, 'WORK_TASK', 'WORK_TASK', '工作任务单V4', '工作任务单', 'Y', 0, NULL, '2023-07-25 18:35:01', '2024-01-09 14:48:18', '工作任务单流程');
INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (10, 10, 'OFFLINEWORKTICKET', 'OFFLINEWORKTICKET', '线下工作票', '线下工作票', 'Y', 0, NULL, '2023-12-28 16:35:10', '2023-12-28 16:35:14', '线下工作票流程');
INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (11, 11, 'DEALALARM', 'DEALALARM', '告警处理流程', '告警处理流程', 'Y', 0, NULL, '2024-02-19 16:56:10', '2024-02-19 16:56:34', '告警处理流程');
INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (12, 12, 'HIDDENDANGERCHECK', 'HIDDENDANGERCHECK', '隐患排查', '隐患排查', 'Y', 0, NULL, '2023-07-25 18:35:01', '2023-07-25 18:35:01', '隐患排查流程');
INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (13, 13, 'HAZARD_RISK', 'HAZARD_RISK', '风险排查', '风险排查', 'Y', 0, NULL, '2023-07-25 18:35:01', '2023-09-19 22:35:40', '风险排查流程');
alter table hzims_workflow_operation_log add is_operation_log tinyint(1) comment '1 正常日志 0 错误日志';
alter table hzims_statistics add sort int comment '排序';
@ -192,14 +195,4 @@ values ('集中监控', 1),
('消息管理', 31),
('移动端配置', 32),
('水电站设置', 33),
('告警配置', 34);
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (1, 0, 'networking', 'workTicketFlow', '工作票', '两票管理', 'Y', 0, null, '2023-06-05 09:43:47.0', '2023-06-12 10:04:30.0', '第一种工作票 第二种工作票');
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (2, 0, 'moreActionBankDirect', 'standardTicketFlow', '操作票', '两票管理', 'Y', 0, null, '2023-06-06 14:15:39.0', '2023-06-06 14:15:52.0', '操作票');
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (3, 0, 'machinery', 'workTicketFlowmachinery', '机械工作票', '两票管理', 'Y', 0, null, '2023-06-12 10:04:56.0', '2023-06-12 10:07:52.0', '水力机械工作票');
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (4, 0, 'maintenance', 'maintenance_test', '日常维护流程', '日常维护', 'Y', 0, null, '2023-06-14 15:06:39.0', '2023-06-14 15:06:41.0', '日常维护');
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (5, 0, 'defectCheck', 'defectCheck', '消缺流程', '', 'Y', 0, null, '2023-06-16 17:01:01.0', '2023-06-26 11:36:54.0', '消缺流程');
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (6, 6, 'overhaul_plan', 'overhaul_plan', '检修计划v4', '检修计划', 'Y', 0, null, '2023-06-16 17:01:01.0', '2023-06-16 17:04:01.0', '检修计划流程');
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (7, 7, 'overhaul_task', 'overhaul_task', '检修任务v4', '检修任务', 'Y', 0, null, '2023-06-16 17:01:01.0', '2023-06-16 17:04:01.0', '检修任务流程');
INSERT INTO dev_hzims_middle.process_dict (dict_code, dict_sort, dict_key, dict_value, dict_label, dict_type, is_default, status, create_dept, create_time, update_time, remark) VALUES (8, 8, 'duty_rec', 'duty_rec', '交接班v4', '交接班', 'Y', 0, null, '2023-07-25 18:35:01.0', '2023-07-25 18:35:01.0', '交接班流程');
('告警配置', 34);

6
hzims-service/hzims-middle/src/main/resources/db/4.0.0.sql

@ -1,4 +1,4 @@
INSERT INTO `PROCESS_DICT` (`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (9, 9, 'WORK_TASK', 'WORK_TASK', '工作任务单V4', '工作任务单', 'Y', 0, NULL, '2023-07-25 18:35:01', '2024-01-09 14:48:18', '工作任务单流程');
INSERT INTO `process_dict`(`dict_code`, `dict_sort`, `dict_key`, `dict_value`, `dict_label`, `dict_type`, `is_default`, `status`, `create_dept`, `create_time`, `update_time`, `remark`) VALUES (10, 10, 'hazard_risk', 'hazard_risk', '风险排查', '风险排查', 'Y', 0, NULL, '2023-07-25 18:35:01', '2023-09-19 22:35:40', '风险排查流程');
INSERT INTO `process_dict`(`dict_code`, `dict_sort`, `dict_key`, `dict_value`, `dict_label`, `dict_type`, `is_default`, `status`, `create_dept`, `create_time`, `update_time`, `remark`) VALUES (11, 11, 'dealAlarm', 'dealAlarm', '告警处理流程', '告警处理流程', 'Y', 0, NULL, '2024-02-19 16:56:10', '2024-02-19 16:56:34', '告警处理流程');
INSERT INTO `process_dict`(`dict_code`, `dict_sort`, `dict_key`, `dict_value`, `dict_label`, `dict_type`, `is_default`, `status`, `create_dept`, `create_time`, `update_time`, `remark`) VALUES (12, 12, 'hiddenDangerCheck', 'hiddenDangerCheck', '隐患排查', '隐患排查', 'Y', 0, NULL, '2023-07-25 18:35:01', '2023-07-25 18:35:01', '隐患排查流程');
INSERT INTO `PROCESS_DICT`(`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (10, 10, 'HAZARD_RISK', 'HAZARD_RISK', '风险排查', '风险排查', 'Y', 0, NULL, '2023-07-25 18:35:01', '2023-09-19 22:35:40', '风险排查流程');
INSERT INTO `PROCESS_DICT`(`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (11, 11, 'DEALALARM', 'DEALALARM', '告警处理流程', '告警处理流程', 'Y', 0, NULL, '2024-02-19 16:56:10', '2024-02-19 16:56:34', '告警处理流程');
INSERT INTO `PROCESS_DICT`(`DICT_CODE`, `DICT_SORT`, `DICT_KEY`, `DICT_VALUE`, `DICT_LABEL`, `DICT_TYPE`, `IS_DEFAULT`, `STATUS`, `CREATE_DEPT`, `CREATE_TIME`, `UPDATE_TIME`, `REMARK`) VALUES (12, 12, 'HIDDENDANGERCHECK', 'HIDDENDANGERCHECK', '隐患排查', '隐患排查', 'Y', 0, NULL, '2023-07-25 18:35:01', '2023-07-25 18:35:01', '隐患排查流程');

34
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/controller/TaskObjectController.java

@ -0,0 +1,34 @@
package com.hnac.hzinfo.inspect.task.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.operational.station.entity.StationVideoTypeEntity;
import com.hnac.hzinfo.inspect.task.service.ITaskObjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@AllArgsConstructor
@Api(value = "任务对象管理",tags = "任务对象管理")
@RestController
@RequestMapping("/task/object")
public class TaskObjectController extends BladeController {
private final ITaskObjectService taskObjectService;
@GetMapping("/getVideosByObjId")
@ApiOperation("根据任务对象ID获取摄像头点位信息")
@ApiOperationSupport(order = 1)
public R<List<StationVideoTypeEntity>> getVideosByObjId(@RequestParam @ApiParam("任务ID") Long taskId, @RequestParam @ApiParam("对象ID") Long objId) {
return R.data(taskObjectService.getVideosByObjId(taskId,objId));
}
}

217
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/schedule/VideoTaskSchedule.java

@ -0,0 +1,217 @@
package com.hnac.hzinfo.inspect.task.schedule;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.hnac.hzinfo.datasearch.soe.ISoeClient;
import com.hnac.hzinfo.datasearch.soe.vo.DeviceSoeVO;
import com.hnac.hzinfo.inspect.ai.entity.CameraInfoEntity;
import com.hnac.hzinfo.inspect.ai.entity.RobotTaskEntity;
import com.hnac.hzinfo.inspect.ai.service.ICameraInfoService;
import com.hnac.hzinfo.inspect.ai.service.IRobotTaskService;
import com.hnac.hzinfo.inspect.areamonthly.vo.TaskObjectVO;
import com.hnac.hzinfo.inspect.hikVideo.service.IHikApiService;
import com.hnac.hzinfo.inspect.plan.PlanContants;
import com.hnac.hzinfo.inspect.task.TaskContants;
import com.hnac.hzinfo.inspect.task.entity.EventEntity;
import com.hnac.hzinfo.inspect.task.entity.EventRecordEntity;
import com.hnac.hzinfo.inspect.task.entity.TaskEntity;
import com.hnac.hzinfo.inspect.task.entity.TaskUserEntity;
import com.hnac.hzinfo.inspect.task.service.IEventRecordService;
import com.hnac.hzinfo.inspect.task.service.IEventService;
import com.hnac.hzinfo.inspect.task.service.ITaskService;
import com.hnac.hzinfo.inspect.task.service.ITaskUserService;
import com.hnac.hzinfo.sdk.core.response.HzPage;
import com.hnac.hzinfo.sdk.core.response.Result;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import static com.hnac.hzinfo.inspect.task.schedule.XxlJobConstants.EXECUTE_VIDEO_TASK;
/**
* 视频巡检任务定时调度
*/
@Component
@AllArgsConstructor
@Slf4j
public class VideoTaskSchedule {
private final ITaskService taskService;
private final ITaskUserService taskUserService;
private final IEventService eventService;
private final IEventRecordService eventRecordService;
private final IHikApiService hikApiService;
private final IRobotTaskService robotTaskService;
private final ICameraInfoService cameraInfoService;
private final ISoeClient soeClient;
private final DataSourceTransactionManager dataSourceTransactionManager;
private final TransactionDefinition transactionDefinition;
/**
* 视频巡检任务执行
* @param params 任务ID
* @return
*/
@XxlJob(EXECUTE_VIDEO_TASK)
@Transactional
public ReturnT<String> execute(String params) throws InterruptedException {
List<TaskEntity> taskList = Lists.newArrayList();
// 获取待执行的任务
if(StringUtil.isBlank(params)) {
LambdaQueryWrapper<TaskEntity> queryWrapper = Wrappers.<TaskEntity>lambdaQuery()
.eq(TaskEntity::getStatus, TaskContants.TaskStatusEnum.INIT_STATUS.getStatus())
.le(TaskEntity::getPlanStartTime, LocalDateTime.now())
.ge(TaskEntity::getPlanEndTime, LocalDateTime.now())
.eq(TaskEntity::getAutoVideo, PlanContants.InspectTypeEnum.VIDEO.getVal());
taskList.addAll(taskService.list(queryWrapper));
}
else {
LambdaQueryWrapper<TaskEntity> queryWrapper = Wrappers.<TaskEntity>lambdaQuery()
.in(TaskEntity::getId, Func.toLongList(",", params))
.eq(TaskEntity::getStatus, TaskContants.TaskStatusEnum.UNDERWAY_STATUS.getStatus())
.eq(TaskEntity::getAutoVideo, PlanContants.InspectTypeEnum.VIDEO.getVal());
taskList.addAll(taskService.list(queryWrapper));
}
taskList.forEach(this::executeVideoTask);
return ReturnT.SUCCESS;
}
/**
* 执行视频巡检任务
* @param task 视频巡检任务
*/
private void executeVideoTask(TaskEntity task) {
try {
// 登记任务
this.registration(task);
// 完善视频巡检执行情况
this.fillEvent(task);
// 更新视频巡检任务状态
taskService.update(Wrappers.<TaskEntity>lambdaUpdate()
.set(TaskEntity::getStatus,TaskContants.TaskStatusEnum.FINISH_STATUS.getStatus())
.set(TaskEntity::getEndTime,LocalDateTime.now())
.eq(TaskEntity::getId,task.getId()));
}
catch(Exception e) {
e.printStackTrace();
XxlJobLogger.log("【taskId:"+task.getId()+"】视频巡检任务执行失败,报错信息为:"+e.getMessage());
}
try {
Thread.sleep(3*1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
/**
* 填充视频巡检执行情况
* @param task 视频巡检任务
*/
private void fillEvent(TaskEntity task) {
List<com.hnac.hzinfo.inspect.task.vo.TaskObjectVO> taskObjects = taskService.getTaskById(task.getId());
List<TaskObjectVO> taskObjectList = JSONArray.parseArray(JSON.toJSONString(taskObjects),TaskObjectVO.class);
taskObjectList.forEach(object -> object.getProjects().forEach(project -> {
EventEntity event = new EventEntity();
event.setTaskId(task.getId());
event.setObjectId(object.getObjId());
event.setProjectId(project.getProjectId());
event.setIsProblem("0");
event.setTenantId(task.getTenantId());
event.setCreateUser(task.getCreateUser());
event.setCreateDept(task.getCreateDept());
event.setUpdateUser(task.getUpdateUser());
eventService.save(event);
List<EventRecordEntity> recordList = project.getContents().stream().map(content -> {
EventRecordEntity record = new EventRecordEntity();
record.setEventId(event.getId());
record.setObjectId(object.getObjId());
record.setProjectId(project.getProjectId());
record.setContentId(content.getContentId());
record.setTenantId(task.getTenantId());
record.setCreateUser(task.getCreateUser());
record.setCreateDept(task.getCreateDept());
record.setUpdateUser(task.getUpdateUser());
record.setCurrentStatus("1");
CameraInfoEntity camera = this.getCameraByProIdAndConId(project.getProjectId(), content.getContentId());
if(Func.isNotEmpty(camera)) {
// 获取计划时间段内视频的告警信息设置是否异常
if(Func.isNotEmpty(camera.getEmCode())) {
Result<HzPage<DeviceSoeVO>> deviceSoeR = soeClient.getDeviceCodeByTaosSoe(DateUtil.formatDateTime(task.getPlanStartTime()), DateUtil.formatDateTime(task.getPlanEndTime()), camera.getEmCode(), 0, String.valueOf(-1));
if(deviceSoeR.isSuccess() && CollectionUtil.isNotEmpty(deviceSoeR.getData().getRecords())) {
record.setCurrentStatus("0");
}
}
// 调用海康威视api实现手动截屏回传至fileUrl
if(Func.isNotEmpty(camera.getPointCode())) {
String picUrl = hikApiService.manualCapture(camera.getPointCode());
record.setFileUrl(picUrl);
record.setCurrentValue(picUrl);
}
}
return record;
}).collect(Collectors.toList());
eventRecordService.saveBatch(recordList);
if(recordList.stream().anyMatch(r -> TaskContants.CurrentStatusEnum.abnormal.getType().equals(r.getCurrentStatus()))) {
eventService.update(Wrappers.<EventEntity>lambdaUpdate().set(EventEntity::getIsProblem,"1").eq(EventEntity::getId,event.getId()));
}
}));
}
/**
* 登记任务
* @param task 视频巡检任务
*/
private void registration(TaskEntity task) {
// 选择第一个人领用改任务
LambdaQueryWrapper<TaskUserEntity> userQueryWrapper = Wrappers.<TaskUserEntity>lambdaQuery().eq(TaskUserEntity::getTaskId, task.getId());
List<TaskUserEntity> taskUserList = taskUserService.list(userQueryWrapper);
TaskUserEntity taskUserEntity = taskUserList.get(0);
task.setUserId(taskUserEntity.getUserId());
taskUserEntity.setClaimStatus(TaskContants.ClaimStatusEnum.COLLECT.getStatus());
taskUserEntity.setClaimTime(LocalDateTime.now());
taskUserService.updateById(taskUserEntity);
if(PlanContants.PlanMethodEnum.SEIZE.getMethod().equals(task.getMethod())) {
taskUserService.removeByIds(taskUserList.stream().map(TaskUserEntity::getId).filter(id -> !taskUserEntity.getId().equals(id)).collect(Collectors.toList()));
}
// 更改任务状态
task.setStatus(Integer.valueOf(TaskContants.TaskStatusEnum.UNDERWAY_STATUS.getStatus()));
task.setStartTime(LocalDateTime.now());
taskService.updateById(task);
}
/**
* 根据项目ID以及内容ID获取摄像头编号
* @param projectId 项目ID
* @param contentId 内容ID
* @return 摄像头编号
*/
private CameraInfoEntity getCameraByProIdAndConId(Long projectId,Long contentId) {
RobotTaskEntity robotTaskEntity = robotTaskService.getOne(Wrappers.<RobotTaskEntity>lambdaQuery()
.eq(RobotTaskEntity::getProjectId, projectId)
.like(RobotTaskEntity::getContentIds, String.valueOf(contentId))
);
if(Func.isNotEmpty(robotTaskEntity)) {
return cameraInfoService.getById(robotTaskEntity.getCameraId());
}
return null;
}
}

3
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/schedule/XxlJobConstants.java

@ -8,4 +8,7 @@ public interface XxlJobConstants {
/**巡检任务结束提醒**/
String TASK_END_REMIND = "taskEndRemind";
/**视频巡检任务执行**/
String EXECUTE_VIDEO_TASK = "executeVideoTask";
}

3
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskObjectService.java

@ -1,5 +1,6 @@
package com.hnac.hzinfo.inspect.task.service;
import com.hnac.hzims.operational.station.entity.StationVideoTypeEntity;
import com.hnac.hzinfo.inspect.task.vo.TaskObjectOfflineVO;
import com.hnac.hzinfo.inspect.task.vo.TaskObjectVO;
import org.springblade.core.mp.base.BaseService;
@ -24,4 +25,6 @@ public interface ITaskObjectService extends BaseService<TaskObjectEntity> {
List<TaskObjectVO> getTaskObjectsDetail(TaskObjectEntity to);
List<TaskObjectOfflineVO> getExObjectData(List<Long> taskIds);
List<StationVideoTypeEntity> getVideosByObjId(Long taskId, Long objId);
}

36
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskObjectServiceImpl.java

@ -1,14 +1,24 @@
package com.hnac.hzinfo.inspect.task.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.operational.station.entity.StationVideoTypeEntity;
import com.hnac.hzinfo.inspect.ai.entity.CameraInfoEntity;
import com.hnac.hzinfo.inspect.ai.entity.RobotTaskEntity;
import com.hnac.hzinfo.inspect.ai.mapper.RobotTaskMapper;
import com.hnac.hzinfo.inspect.ai.service.ICameraInfoService;
import com.hnac.hzinfo.inspect.obj.entity.ProjectEntity;
import com.hnac.hzinfo.inspect.obj.services.ProjectService;
import com.hnac.hzinfo.inspect.task.entity.TaskObjectEntity;
import com.hnac.hzinfo.inspect.task.entity.TaskObjectProjectEntity;
import com.hnac.hzinfo.inspect.task.mapper.TaskObjectMapper;
import com.hnac.hzinfo.inspect.task.service.ITaskObjectProjectContentService;
import com.hnac.hzinfo.inspect.task.service.ITaskObjectProjectService;
import com.hnac.hzinfo.inspect.task.service.ITaskObjectService;
import com.hnac.hzinfo.inspect.task.vo.TaskObjectOfflineVO;
import com.hnac.hzinfo.inspect.task.vo.TaskObjectProjectContentVO;
import com.hnac.hzinfo.inspect.task.vo.TaskObjectVO;
import com.hnac.hzinfo.inspect.utils.HiKUtil;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.CollectionUtil;
@ -16,6 +26,7 @@ import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
* 服务实现类
@ -28,6 +39,9 @@ public class TaskObjectServiceImpl extends BaseServiceImpl<TaskObjectMapper, Tas
private final ITaskObjectProjectContentService taskContentService;
private final ProjectService projectService;
private final ITaskObjectProjectService taskObjectProjectService;
private final RobotTaskMapper robotTaskMapper;
private final ICameraInfoService cameraInfoService;
@Override
public List<TaskObjectEntity> getTaskObjectList(TaskObjectEntity taskObjectEntity) {
@ -57,4 +71,26 @@ public class TaskObjectServiceImpl extends BaseServiceImpl<TaskObjectMapper, Tas
public List<TaskObjectOfflineVO> getExObjectData(List<Long> taskIds) {
return this.baseMapper.getExObjectData(taskIds);
}
@Override
public List<StationVideoTypeEntity> getVideosByObjId(Long taskId, Long objId) {
LambdaQueryWrapper<TaskObjectProjectEntity> projectQueryWrapper = Wrappers.<TaskObjectProjectEntity>lambdaQuery()
.eq(TaskObjectProjectEntity::getTaskId, taskId)
.eq(TaskObjectProjectEntity::getObjectId, objId);
List<TaskObjectProjectEntity> TaskProjectList = taskObjectProjectService.list(projectQueryWrapper);
List<StationVideoTypeEntity> result = TaskProjectList.stream().map(TaskObjectProjectEntity::getProjectId).filter(Func::isNotEmpty).flatMap(
proId -> robotTaskMapper.selectList(Wrappers.<RobotTaskEntity>lambdaQuery().eq(RobotTaskEntity::getProjectId, proId)).stream().map(r -> cameraInfoService.getById(r.getCameraId()))
).filter(Func::isNotEmpty).map(this::convert).collect(Collectors.toList());
return result;
}
private StationVideoTypeEntity convert(CameraInfoEntity cameraInfoEntity) {
StationVideoTypeEntity result = new StationVideoTypeEntity();
result.setName(cameraInfoEntity.getName());
result.setVideoHost(HiKUtil.HOST);
result.setAppKey(HiKUtil.APP_KEY);
result.setAppSecret(HiKUtil.APP_SECRET);
result.setPointCode(cameraInfoEntity.getPointCode());
return result;
}
}

9
hzims-service/inspect/src/main/resources/db/2.0.0.sql.1

@ -1,3 +1,10 @@
ALTER TABLE `hzims-inspect`.`hz_st_ex_task_user` MODIFY COLUMN `CLAIM_STATUS` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '领用状态 0:未领用 1:已领用 每条任务可以存在多个用户,但是只有一个领用人' AFTER `USER_ID`;
ALTER TABLE `hzims-inspect`.`hz_st_ex_task_user` ADD COLUMN `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `TENANT_ID`;
ALTER TABLE `hzims-inspect`.`hz_st_ex_task_user` ADD COLUMN `user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL AFTER `TENANT_ID`;
alter table `hz_st_ex_task` add column `hik_video_task_id` varchar(50) default null comment '海康录制视频任务ID';
alter table `hz_st_ex_task` add column `video_start_time` datetime default null comment '视频录制开始时间';
alter table `hz_st_ex_task` add column `video_end_time` datetime default null comment '视频录制开始时间';
alter table `hz_st_ex_task` add column `video_url` varchar(255) default null comment '手动录制视频地址';
-- 巡检摄像头管理添加设备编号
alter table `hz_st_camera_info` add column `em_code` varchar(50) default null comment '设备编号';

1
hzims-service/message/src/main/java/com/hnac/hzims/message/service/IMessagePushRecordService.java

@ -12,6 +12,7 @@ import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
public interface IMessagePushRecordService extends BaseService<MessagePushRecordEntity> {

5
hzims-service/message/src/main/java/com/hnac/hzims/message/statistics/controller/MsgPushStatisticController.java

@ -1,6 +1,7 @@
package com.hnac.hzims.message.statistics.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.common.statistics.Charts;
import com.hnac.hzims.message.dto.statistic.MsgPushStatisticDto;
import com.hnac.hzims.message.statistics.service.IMsgPushStatisticService;
import com.hnac.hzims.message.vo.statistic.MsgPushStatisticVO;
@ -36,4 +37,8 @@ public class MsgPushStatisticController extends BladeController {
return R.data(msgPushStatisticService.getMsgPushStatistic(msgPushStatisticDto));
}
public R<Charts> getMsgPushStat(MsgPushStatisticDto req) {
return R.data(msgPushStatisticService.getMsgPushStat(req));
}
}

3
hzims-service/message/src/main/java/com/hnac/hzims/message/statistics/service/IMsgPushStatisticService.java

@ -1,5 +1,6 @@
package com.hnac.hzims.message.statistics.service;
import com.hnac.hzims.common.statistics.Charts;
import com.hnac.hzims.common.utils.DateUtil;
import com.hnac.hzims.message.MessageConstants;
import com.hnac.hzims.message.dto.statistic.MsgPushStatisticDto;
@ -27,6 +28,8 @@ public interface IMsgPushStatisticService {
*/
List<MsgPushStatisticVO> getMsgPushStatistic(MsgPushStatisticDto msgPushStatisticDto);
Charts getMsgPushStat(MsgPushStatisticDto req);
/**
* 处理年日查询日期格式 填充开始时间以及结束时间
* @param msgPushStatisticDto

40
hzims-service/message/src/main/java/com/hnac/hzims/message/statistics/service/impl/MsgPushStatisticServiceImpl.java

@ -1,19 +1,34 @@
package com.hnac.hzims.message.statistics.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.hnac.hzims.common.statistics.Charts;
import com.hnac.hzims.common.utils.DateUtil;
import com.hnac.hzims.message.MessageConstants;
import com.hnac.hzims.message.constants.DictKeyConstants;
import com.hnac.hzims.message.dto.statistic.MsgPushStatisticDto;
import com.hnac.hzims.message.entity.MessagePushRecordEntity;
import com.hnac.hzims.message.log.mapper.AppLogMapper;
import com.hnac.hzims.message.log.mapper.MailLogMapper;
import com.hnac.hzims.message.log.mapper.SmsLogMapper;
import com.hnac.hzims.message.service.IMessagePushRecordService;
import com.hnac.hzims.message.statistics.service.IMsgPushStatisticService;
import com.hnac.hzims.message.vo.statistic.MsgPushStatisticVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.cache.DictCache;
import org.springblade.system.entity.Dict;
import org.springframework.stereotype.Service;
import java.text.DateFormat;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* @author hx
@ -26,6 +41,7 @@ public class MsgPushStatisticServiceImpl implements IMsgPushStatisticService {
private final AppLogMapper appLogMapper;
private final MailLogMapper mailLogMapper;
private final SmsLogMapper smsLogMapper;
private final IMessagePushRecordService messagePushRecordService;
@Override
public List<MsgPushStatisticVO> getMsgPushStatistic(MsgPushStatisticDto msgPushStatisticDto) {
@ -50,4 +66,28 @@ public class MsgPushStatisticServiceImpl implements IMsgPushStatisticService {
}
return result;
}
@Override
public Charts getMsgPushStat(MsgPushStatisticDto req) {
List<Dict> types = DictCache.getList(DictKeyConstants.MESSAGE_TYPE);
Charts charts = new Charts();
if(CollectionUtil.isNotEmpty(types)) {
charts.setLegends(types.stream().map(Dict::getDictValue).collect(Collectors.toList()));
charts.setXAxis(this.getFullMonth());
Function<String,List<Integer>> getCountByType = messageType -> {
return Lists.newArrayList();
};
charts.setSeries(types.stream().map(Dict::getDictKey).map(getCountByType).collect(Collectors.toList()));
}
return charts;
}
private List<String> getFullMonth() {
YearMonth now = YearMonth.now();
return IntStream.iterate(0, index -> index + 1).limit(12)
.mapToObj(index -> now.minusMonths(index))
.map(yearMonth -> yearMonth.format(DateUtil.monthFormatter))
.collect(Collectors.toList());
}
}

4
hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskSchedule.java

@ -23,6 +23,7 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springblade.core.log.logger.BladeLogger;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.*;
import org.springblade.flow.core.entity.BladeFlow;
@ -163,6 +164,9 @@ public class MaintenanceTaskSchedule {
OperMaintenanceTaskEntityVo vo = BeanUtil.copy(task,OperMaintenanceTaskEntityVo.class);
Map<String,Object> params = new HashMap<String, Object>() {{
put("taskId", task.getId());
if(Func.isEmpty(AuthUtil.getUser())) {
put("startFlowUserId", task.getCreateUser().toString());
}
String userId = task.getDisposer();
List<String> userIds = Stream.of(userId.split(",")).collect(Collectors.toList());
Stream.iterate(0, i -> i + 1).limit(5).forEach(index -> {

BIN
hzims-service/operational/src/main/resources/template/excel/access_import_template.xlsx

Binary file not shown.

30
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/AccidentController.java

@ -50,9 +50,6 @@ public class AccidentController extends BladeController {
private final IAccidentService accidentService;
private final IOssClient ossClient;
private static final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private static final ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock();
private static final ReentrantReadWriteLock.ReadLock readLock = lock.readLock();
@PostMapping("/save")
@ApiOperation("事故管理保存")
@ -67,19 +64,8 @@ public class AccidentController extends BladeController {
@ApiOperation("事故管理查询详情")
@ApiOperationSupport(order = 2)
public R<AccidentVO> detail(@PathVariable(value = "id") Long id) {
AccidentVO accidentVO = null;
readLock.lock();
try {
AccidentEntity accidentEntity = accidentService.getById(id);
if (ObjectUtil.isNotEmpty(accidentEntity)) {
accidentVO = AccidentWrapper.build().entityVO(accidentEntity);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
readLock.unlock();
}
return R.data(accidentVO);
AccidentEntity accidentEntity = accidentService.getById(id);
return R.data(AccidentWrapper.build().entityVO(accidentEntity));
}
@PostMapping("updateById")
@ -87,16 +73,8 @@ public class AccidentController extends BladeController {
@ApiOperationSupport(order = 3)
@Transactional(rollbackFor = Exception.class)
public R updateById(@RequestBody @Valid AccidentDTO req) {
writeLock.lock();
try {
AccidentEntity accidentEntity = BeanUtil.copy(req, AccidentEntity.class);
accidentService.updateById(accidentEntity);
} catch (Exception e) {
e.printStackTrace();
} finally {
writeLock.unlock();
}
return R.success("操作成功");
AccidentEntity accidentEntity = BeanUtil.copy(req, AccidentEntity.class);
return R.status(accidentService.updateById(accidentEntity));
}
@PutMapping("/remove/{ids}")

Loading…
Cancel
Save