From 082cb8daa1b6a2b54d0161afea86d6feef6efcc5 Mon Sep 17 00:00:00 2001 From: haungxing <1203316822@qq.com> Date: Mon, 22 Apr 2024 14:41:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=97=A5=E5=B8=B8=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AB=99=E7=82=B9=E7=BC=96=E5=8F=B7=E3=80=81?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E3=80=81=E8=AE=BE=E5=A4=87=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=20fix:=E8=A7=86=E9=A2=91=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E5=88=9D=E5=A7=8B=E5=8C=96=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8Cjson=E5=A2=9E=E5=8A=A0=E9=95=BF?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/OperMaintenanceLibraryEntity.java | 12 +++++- .../entity/OperMaintenancePlanEntity.java | 20 +++++++--- .../entity/OperMaintenanceTaskEntity.java | 15 +++++++ .../scheduled/MaintenanceTaskSchedule.java | 46 +++++++++------------- .../operational/src/main/resources/db/1.0.0.sql | 8 ++-- .../operational/src/main/resources/db/2.0.3.sql | 14 +++++++ 6 files changed, 78 insertions(+), 37 deletions(-) create mode 100644 hzims-service/operational/src/main/resources/db/2.0.3.sql diff --git a/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceLibraryEntity.java b/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceLibraryEntity.java index fdd0378..5f7260e 100644 --- a/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceLibraryEntity.java +++ b/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceLibraryEntity.java @@ -35,13 +35,23 @@ public class OperMaintenanceLibraryEntity extends TenantEntity { @ApiModelProperty(value = "库编码,后台自动生成") @QueryField(condition = SqlCondition.LIKE) private String libraryCode; + + @ApiModelProperty(value = "站点编号") + @QueryField(condition = SqlCondition.EQUAL) + private String stationCode; + + @ApiModelProperty(value = "站点名称") + private String stationName; /** * 设备编码 */ @ApiModelProperty(value = "设备编码,多个按,分隔") - @QueryField(condition = SqlCondition.EQUAL) + @QueryField(condition = SqlCondition.LIKE) private String emCode; + @ApiModelProperty(value = "设备名称,多个按,分隔") + private String emName; + @ApiModelProperty(value = "维护模式 01=人员 02=值班") @JsonSerialize(nullsUsing = NullSerializer.class) private Integer maintenanceModel; diff --git a/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenancePlanEntity.java b/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenancePlanEntity.java index d1f9a3f..e473eba 100644 --- a/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenancePlanEntity.java +++ b/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenancePlanEntity.java @@ -8,6 +8,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import org.springblade.core.mp.support.QueryField; +import org.springblade.core.mp.support.SqlCondition; import org.springblade.core.tenant.mp.TenantEntity; import java.util.Date; @@ -26,6 +28,16 @@ public class OperMaintenancePlanEntity extends TenantEntity { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "站点编号") + private String stationCode; + + @ApiModelProperty(value = "站点名称") + @QueryField(condition = SqlCondition.EQUAL) + private String stationName; + + @ApiModelProperty(value = "设备名称,多个按,分隔") + private String emName; + /** * 设备编码 */ @@ -115,11 +127,9 @@ public class OperMaintenancePlanEntity extends TenantEntity { @JsonSerialize(nullsUsing = NullSerializer.class) private Long messageTemplateId; - - /** - * 站点code - */ - private String stationCode; + @ApiModelProperty(value = "周期(单位:小时)") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer period; @ApiModelProperty(value = "创建用户名称") private String createUserName; diff --git a/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceTaskEntity.java b/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceTaskEntity.java index a06949a..2a94015 100644 --- a/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceTaskEntity.java +++ b/hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/maintenance/entity/OperMaintenanceTaskEntity.java @@ -10,6 +10,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Getter; +import org.springblade.core.mp.support.QueryField; +import org.springblade.core.mp.support.SqlCondition; import org.springblade.core.tenant.mp.TenantEntity; import org.springblade.core.tool.utils.DateUtil; import org.springframework.format.annotation.DateTimeFormat; @@ -31,6 +33,16 @@ public class OperMaintenanceTaskEntity extends TenantEntity { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "站点编号") + private String stationCode; + + @ApiModelProperty(value = "站点名称") + @QueryField(condition = SqlCondition.EQUAL) + private String stationName; + + @ApiModelProperty(value = "设备名称,多个按,分隔") + private String emName; + /** * 设备编码 */ @@ -107,6 +119,9 @@ public class OperMaintenanceTaskEntity extends TenantEntity { */ @ApiModelProperty(value = "维护内容") private String content; + @ApiModelProperty(value = "周期(单位:小时)") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer period; /** * 操作规范 */ diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskSchedule.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskSchedule.java index c318d5a..fe22696 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskSchedule.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/scheduled/MaintenanceTaskSchedule.java @@ -3,6 +3,7 @@ package com.hnac.hzims.operational.maintenance.scheduled; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.hnac.hzims.equipment.entity.EmInfoEntity; import com.hnac.hzims.equipment.feign.IEmInfoClient; import com.hnac.hzims.operational.constants.FlowKeyConstants; import com.hnac.hzims.operational.constants.RedisKeyConstants; @@ -61,6 +62,7 @@ public class MaintenanceTaskSchedule { private final IFlowClient flowClient; private final IImsDutyMainService dutyMainService; private final RedisTemplate redisTemplate; + private final IEmInfoClient emInfoClient; @XxlJob(GENERATE_MAINTENANCE_TASK_SCHEDULE) public ReturnT execute(String param) throws Exception { @@ -87,24 +89,24 @@ public class MaintenanceTaskSchedule { OperMaintenanceTaskEntity taskEntity = BeanUtil.copy(plan,OperMaintenanceTaskEntity.class); taskEntity.setPlanId(plan.getId()); taskEntity.setDisposer(Optional.ofNullable(plan.getDisposer()).map(String::valueOf).orElse(null)); - taskEntity.setDisposerName(Optional.ofNullable(plan.getDisposer()).map(s -> - { - User user = UserCache.getUser(s); - if (ObjectUtil.isNotEmpty(user)){ - return user.getName(); - }else { - return ""; - } - }).filter(s->StringUtils.isNotBlank(s)).orElse(null)); + String disposerName = Optional.ofNullable(plan.getDisposer()).map(UserCache::getUser).map(User::getName).orElse(null); + taskEntity.setDisposerName(disposerName); LocalDateTime disposeTime = taskEntity.getDisposeTime().toInstant() .atZone(ZoneId.systemDefault()).toLocalDateTime(); taskEntity.setPlanEndTime(disposeTime.plusHours(taskEntity.getHours())); if(StringUtil.isNotBlank(plan.getEmCode())){ - String[] emCodeList = plan.getEmCode().split(","); - for(String emCode : emCodeList){ + List emCodeList = Func.toStrList(",", plan.getEmCode()); + emCodeList.stream().filter(StringUtil::isNotBlank).forEach(emCode -> { + EmInfoEntity emInfoEntity = emInfoClient.getByCode(emCode); + if(ObjectUtil.isEmpty(emInfoEntity)) { + log.error( "[{}]设备编号未查询到相关设备,生成任务失败!",emCode); + XxlJobLogger.log("[" + emCode + "]设备编号未查询到相关设备,生成任务失败!"); + return; + } taskEntity.setEmCode(emCode); + taskEntity.setEmName(emInfoEntity.getName()); this.createTask(taskEntity,plan); - } + }); } else { this.createTask(taskEntity,plan); @@ -139,7 +141,7 @@ public class MaintenanceTaskSchedule { Instant instant = task.getDisposeTime().toInstant(); ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime disposeTime = instant.atZone(zoneId).toLocalDateTime(); - task.setPlanEndTime(disposeTime.plusHours(task.getHours())); + task.setPlanEndTime(disposeTime.plusHours(task.getPeriod())); // 当模式为班次时 Integer maintenanceModel = plan.getMaintenanceModel(); if(Func.isNotEmpty(maintenanceModel) && maintenanceModel == 2 ) { @@ -149,20 +151,11 @@ public class MaintenanceTaskSchedule { ImsDutyMainEntity entity = dutyMainService.getOne(dutyQuery); if (ObjectUtil.isNotEmpty(entity) && StringUtils.isNotEmpty(entity.getDutyPersonIds())) { String userId = entity.getDutyPersonIds(); - String[] split = userId.split("\\^"); task.setDisposer(userId.replaceAll("\\^", ",")); - if (ArrayUtils.isNotEmpty(split)){ - List list = Arrays.asList(split); - String disposerName= list.stream().map(s->{ - User user = UserCache.getUser(Long.valueOf(s)); - if (ObjectUtil.isNotEmpty(user)){ - return user.getName();} - return ""; - }).filter(s->StringUtils.isNotBlank(s)).collect(Collectors.joining(",")); - if (StringUtils.isNotBlank(disposerName)) { - task.setDisposerName(disposerName); - } - } + List userIdList = Func.toLongList("\\^", userId); + String disposerName = userIdList.stream().map(UserCache::getUser).filter(Func::isNotEmpty) + .map(User::getName).filter(StringUtil::isNotBlank).collect(Collectors.joining(",")); + task.setDisposerName(Optional.ofNullable(disposerName).filter(StringUtil::isNotBlank).orElse(null)); } else { XxlJobLogger.log("ID为:"+plan.getId()+"的日常维护计划未获取到值班人员,未生成任务。"); @@ -205,5 +198,4 @@ public class MaintenanceTaskSchedule { R flowResult = flowClient.startProcessInstanceContainNameByKey(FlowKeyConstants.MAINTENANCE_TASK_FLOW_KEY, String.valueOf(task.getId()), task.getTitle(), params); return Optional.ofNullable(flowResult).filter(r -> r.isSuccess()).map(R::getData).map(BladeFlow::getProcessInstanceId).orElse(null); } - } diff --git a/hzims-service/operational/src/main/resources/db/1.0.0.sql b/hzims-service/operational/src/main/resources/db/1.0.0.sql index 31fa6f7..c060a25 100644 --- a/hzims-service/operational/src/main/resources/db/1.0.0.sql +++ b/hzims-service/operational/src/main/resources/db/1.0.0.sql @@ -789,7 +789,7 @@ CREATE TABLE IF NOT EXISTS `HZIMS_FLV_VIDEO_CONFIG` ( `ID` BIGINT(20) NOT NULL COMMENT '主键ID', `NAME` VARCHAR(255) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI NULL DEFAULT NULL COMMENT '视频源名称', `TIME` VARCHAR(50) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI NULL DEFAULT NULL COMMENT '时间间隔', - `CONFIG_ENTITY` VARCHAR(1000) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI NULL DEFAULT NULL COMMENT '配置JSON', + `CONFIG_ENTITY` TEXT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI NULL DEFAULT NULL COMMENT '配置JSON', `TYPE` TINYINT(4) NULL DEFAULT 1 COMMENT '类型', `SAVE_PEOPLE` VARCHAR(100) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI NULL DEFAULT NULL COMMENT '保存人姓名', `TENANT_ID` VARCHAR(12) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI NULL DEFAULT NULL COMMENT '租户ID', @@ -800,9 +800,9 @@ CREATE TABLE IF NOT EXISTS `HZIMS_FLV_VIDEO_CONFIG` ( `IS_DELETED` TINYINT(4) NOT NULL DEFAULT 0 COMMENT '是否删除', `STATUS` TINYINT(4) NULL DEFAULT NULL COMMENT '状态 ', `CREATE_DEPT` BIGINT(20) NULL DEFAULT NULL COMMENT '创建部门', - PRIMARY KEY (`ID`) USING BTREE, - INDEX ```XCONFIG_ENTITY```(`CONFIG_ENTITY`) USING BTREE -) ENGINE = INNODB CHARACTER SET = UTF8 COLLATE = UTF8_GENERAL_CI ROW_FORMAT = DYNAMIC; + PRIMARY KEY (`ID`) USING BTREE + ) ENGINE = INNODB CHARACTER SET = UTF8 COLLATE = UTF8_GENERAL_CI ROW_FORMAT = DYNAMIC; +ALTER TABLE HZIMS_FLV_VIDEO_CONFIG ADD FULLTEXT(`CONFIG_ENTITY`); -- ---------------------------- -- TABLE STRUCTURE FOR HZIMS_FOCUS_ATTRIBUTE diff --git a/hzims-service/operational/src/main/resources/db/2.0.3.sql b/hzims-service/operational/src/main/resources/db/2.0.3.sql new file mode 100644 index 0000000..c8df871 --- /dev/null +++ b/hzims-service/operational/src/main/resources/db/2.0.3.sql @@ -0,0 +1,14 @@ +-- 设备维护库添加站点、设备名称 +alter table `hzims_oper_maintenance_library` add column `station_code` varchar(20) comment '站点编号'; +alter table `hzims_oper_maintenance_library` add column `station_name` varchar(100) comment '站点名称'; +alter table `hzims_oper_maintenance_library` add column `em_name` varchar(255) comment '设备名称'; +-- 日常维护计划添加站点、设备名称 +alter table `hzims_oper_maintenance_plan` add column `station_name` varchar(100) comment '站点名称'; +alter table `hzims_oper_maintenance_plan` add column `em_name` varchar(255) comment '设备名称'; +-- 日常维护任务添加站点、设备名称 +alter table `hzims_oper_maintenance_task` add column `station_code` varchar(20) comment '站点编号'; +alter table `hzims_oper_maintenance_task` add column `station_name` varchar(100) comment '站点名称'; +alter table `hzims_oper_maintenance_task` add column `em_name` varchar(255) comment '设备名称'; +-- 日常维护计划、任务添加周期字段 +alter table `hzims_oper_maintenance_plan` add column `period` int(11) comment '周期(单位:小时)'; +alter table `hzims_oper_maintenance_task` add column `period` int(11) comment '周期(单位:小时)'; \ No newline at end of file