From 829245010a58679a6ff4b6fbf1bc18eacf5b6681 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Wed, 24 May 2023 10:09:17 +0800 Subject: [PATCH 01/17] =?UTF-8?q?#=E5=8F=91=E7=94=B5=E8=B4=9F=E8=8D=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/service/impl/AnalyseDataServiceImpl.java | 2 ++ .../main/service/impl/HydropowerServiceImpl.java | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java index f2d0f8d..476cdde 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java @@ -73,10 +73,12 @@ public class AnalyseDataServiceImpl implements IAnalyseDataService { analyzeDataConditionPO.setEndTime(LocalDateTime.parse(DateUtil.format(new Date(), endTime), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME))); signboardConditions.add(analyzeDataConditionPO); po.setSignboardConditions(signboardConditions); + log.error("period_target_data_request {}",po); R> result = analyseDataSearchClient.getAnalyzeDataByAnalyzeCodeAndSignages(po); if (!result.isSuccess() || CollectionUtil.isEmpty(result.getData())) { return new ArrayList<>(); } + log.error("period_target_data_resp {}",result); return result.getData().get(0).getList(); } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java index 7d99632..7f5ee0c 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java @@ -749,7 +749,12 @@ public class HydropowerServiceImpl implements HydropowerService { if(CollectionUtil.isEmpty(realList)){ return 0.0; } - return realList.stream().filter(o->deptId.equals(o.getDeptId())).mapToDouble(HydropowerUnitRealVo::getActivePower).sum(); + return realList.stream().filter(o->deptId.equals(o.getDeptId())).mapToDouble(o->{ + if("MW".equalsIgnoreCase(o.getPowerUnit())){ + return o.getActivePower() * 1000; + } + return o.getActivePower(); + }).sum(); } /** @@ -1006,7 +1011,12 @@ public class HydropowerServiceImpl implements HydropowerService { // 容量 kpi.setInstalledCapacity(reals.stream().mapToDouble(HydropowerUnitRealVo::getInstalledCapacity).sum()); // 负荷 - kpi.setLoad(reals.stream().mapToDouble(HydropowerUnitRealVo::getActivePower).sum()); + kpi.setLoad(reals.stream().mapToDouble(o->{ + if("MW".equalsIgnoreCase(o.getPowerUnit())){ + return o.getActivePower() * 1000; + } + return o.getActivePower(); + }).sum()); // 容量利用率 if (Math.abs(kpi.getInstalledCapacity()) <= 0) { kpi.setCapacityRate(0.0); @@ -1105,7 +1115,12 @@ public class HydropowerServiceImpl implements HydropowerService { // 实时数据: 容量利用率、电站利用率 if(CollectionUtil.isNotEmpty(reals)){ // 实时功率 - double use = reals.stream().filter(real->entry.getValue().stream().map(StationEntity::getRefDept).collect(Collectors.toList()).contains(real.getDeptId())).mapToDouble(HydropowerUnitRealVo::getActivePower).sum(); + double use = reals.stream().filter(real->entry.getValue().stream().map(StationEntity::getRefDept).collect(Collectors.toList()).contains(real.getDeptId())).mapToDouble(o->{ + if("MW".equalsIgnoreCase(o.getPowerUnit())){ + return o.getActivePower() * 1000; + } + return o.getActivePower(); + }).sum(); if(CollectionUtil.isNotEmpty(plans)){ // 装机容量 double capacity = reals.stream().filter(real-> entry.getValue().stream().map(StationEntity::getRefDept).collect(Collectors.toList()).contains(real.getDeptId())).mapToDouble(HydropowerUnitRealVo::getInstalledCapacity).sum(); From c23b2b9449187102a6c34452c5758a8b9265c7bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Wed, 24 May 2023 11:35:11 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E6=B3=A8=E9=87=8Aswagger-bootstrap-ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hzims-service/ticket/pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hzims-service/ticket/pom.xml b/hzims-service/ticket/pom.xml index 53a5ec8..cf9ac58 100644 --- a/hzims-service/ticket/pom.xml +++ b/hzims-service/ticket/pom.xml @@ -275,11 +275,11 @@ - - com.github.xiaoymin - swagger-bootstrap-ui - ${swagger-bootstrap-ui.version} - + + + + + From ccdbae9ad727af67866cd5a36072d99111c704c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Wed, 24 May 2023 11:41:01 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hnac/hzims/scheduled/ScheduledApplication.java | 2 +- .../hnac/hzims/scheduled/config/XxlJobConfig.java | 118 ++++++++++----------- .../mapper/operation/AbnormalAlarmMapper.xml | 17 --- .../operation/HistoryAbnormalAlarmMapper.xml | 10 -- .../mapper/operation/StAlarmRecordMapper.xml | 19 ---- .../scheduled/mapper/operation/StationMapper.xml | 26 ----- .../scheduled/scheduled/ScheduledCreateTask.java | 10 +- .../src/main/resources/application.yml | 23 +++- .../mapper/operation/AbnormalAlarmMapper.xml | 17 +++ .../mapper/operation/StAlarmRecordMapper.xml | 19 ++++ 10 files changed, 124 insertions(+), 137 deletions(-) delete mode 100644 hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/AbnormalAlarmMapper.xml delete mode 100644 hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/HistoryAbnormalAlarmMapper.xml delete mode 100644 hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StAlarmRecordMapper.xml delete mode 100644 hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StationMapper.xml create mode 100644 hzims-service/hzims-scheduled/src/main/resources/mapper/operation/AbnormalAlarmMapper.xml create mode 100644 hzims-service/hzims-scheduled/src/main/resources/mapper/operation/StAlarmRecordMapper.xml diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/ScheduledApplication.java b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/ScheduledApplication.java index d2772ca..63fb110 100644 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/ScheduledApplication.java +++ b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/ScheduledApplication.java @@ -18,7 +18,7 @@ import javax.annotation.Resource; @EnableBladeFeign @SpringCloudApplication @MapperScan("com.hnac.hzims.scheduled.**.mapper.**") -@ComponentScan(basePackages = {"com.hnac.*","org.springblade.core.*"}) +@ComponentScan(basePackages = {"com.hnac.*","org.springblade.core"}) @Resource public class ScheduledApplication { public static void main(String[] args) { diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/config/XxlJobConfig.java b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/config/XxlJobConfig.java index b587329..6b473a9 100644 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/config/XxlJobConfig.java +++ b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/config/XxlJobConfig.java @@ -1,59 +1,59 @@ -package com.hnac.hzims.scheduled.config; - -import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -/** - * @Author WL - * @Version v1.0 - * @Serial 1.0 - * @Date 2022/1/8 10:23 - */ -@Slf4j -@Configuration -//指定任务Handler所在包路径 -public class XxlJobConfig { - - - @Value("${xxl.job.admin.addresses}") - private String adminAddresses; - - @Value("${xxl.job.executor.appname}") - private String appName; - - @Value("${xxl.job.executor.ip}") - private String ip; - - @Value("${xxl.job.executor.port}") - private int port; - - @Value("${xxl.job.accessToken}") - private String accessToken; - - @Value("${xxl.job.executor.logpath}") - private String logPath; - - @Value("${xxl.job.executor.logretentiondays}") - private int logRetentionDays; - - - @Bean(initMethod = "start", destroyMethod = "destroy") - public XxlJobSpringExecutor xxlJobExecutor() { - log.info("====xxl-job config init===="); - XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); - xxlJobSpringExecutor.setAdminAddresses(adminAddresses); - xxlJobSpringExecutor.setAppName(appName); - xxlJobSpringExecutor.setIp(ip); - xxlJobSpringExecutor.setPort(port); - xxlJobSpringExecutor.setAccessToken(accessToken); - xxlJobSpringExecutor.setLogPath(logPath); - xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); - return xxlJobSpringExecutor; - } - -} - +// package com.hnac.hzims.scheduled.config; +// +// import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; +// import lombok.extern.slf4j.Slf4j; +// import org.springframework.beans.factory.annotation.Value; +// import org.springframework.context.annotation.Bean; +// import org.springframework.context.annotation.ComponentScan; +// import org.springframework.context.annotation.Configuration; +// +// /** +// * @Author WL +// * @Version v1.0 +// * @Serial 1.0 +// * @Date 2022/1/8 10:23 +// */ +// @Slf4j +// @Configuration +// //指定任务Handler所在包路径 +// public class XxlJobConfig { +// +// +// @Value("${xxl.job.admin.addresses}") +// private String adminAddresses; +// +// @Value("${xxl.job.executor.appname}") +// private String appName; +// +// @Value("${xxl.job.executor.ip}") +// private String ip; +// +// @Value("${xxl.job.executor.port}") +// private int port; +// +// @Value("${xxl.job.accessToken}") +// private String accessToken; +// +// @Value("${xxl.job.executor.logpath}") +// private String logPath; +// +// @Value("${xxl.job.executor.logretentiondays}") +// private int logRetentionDays; +// +// +// @Bean(initMethod = "start", destroyMethod = "destroy") +// public XxlJobSpringExecutor xxlJobExecutor() { +// log.info("====xxl-job config init===="); +// XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); +// xxlJobSpringExecutor.setAdminAddresses(adminAddresses); +// xxlJobSpringExecutor.setAppName(appName); +// xxlJobSpringExecutor.setIp(ip); +// xxlJobSpringExecutor.setPort(port); +// xxlJobSpringExecutor.setAccessToken(accessToken); +// xxlJobSpringExecutor.setLogPath(logPath); +// xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); +// return xxlJobSpringExecutor; +// } +// +// } +// diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/AbnormalAlarmMapper.xml b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/AbnormalAlarmMapper.xml deleted file mode 100644 index 49c1076..0000000 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/AbnormalAlarmMapper.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/HistoryAbnormalAlarmMapper.xml b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/HistoryAbnormalAlarmMapper.xml deleted file mode 100644 index fdbd02b..0000000 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/HistoryAbnormalAlarmMapper.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - \ No newline at end of file diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StAlarmRecordMapper.xml b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StAlarmRecordMapper.xml deleted file mode 100644 index cfe513d..0000000 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StAlarmRecordMapper.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - SELECT LAST_INSERT_ID() AS id - - insert into hy_st_alarm_record (id, station_id, real_id, - status, phone_record, process_desc, - create_time, processor, process_time - ) - values (#{id,jdbcType=BIGINT}, #{stationId,jdbcType=VARCHAR}, #{realId,jdbcType=VARCHAR}, - #{status,jdbcType=TINYINT}, #{phoneRecord,jdbcType=VARCHAR}, #{processDesc,jdbcType=VARCHAR}, - #{createTime,jdbcType=TIMESTAMP}, #{processor,jdbcType=VARCHAR}, #{processTime,jdbcType=TIMESTAMP} - ) - - - \ No newline at end of file diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StationMapper.xml b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StationMapper.xml deleted file mode 100644 index e5e9daf..0000000 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StationMapper.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/ScheduledCreateTask.java b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/ScheduledCreateTask.java index 280ab7e..81cb979 100644 --- a/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/ScheduledCreateTask.java +++ b/hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/ScheduledCreateTask.java @@ -31,7 +31,6 @@ public class ScheduledCreateTask { * @return ReturnT */ @XxlJob(LOAD_WATER_LEVEL) - //@Scheduled(cron = "0/40 * * * * ? ") public ReturnT loadWaterLevel(String param) throws Exception { if (Func.isBlank(param)) { param = DateUtil.format(new Date(), "yyyy-MM"); @@ -42,5 +41,14 @@ public class ScheduledCreateTask { + /** + * 水利-站点水位数据 + * @return ReturnT + */ + @XxlJob("cheshi") + public ReturnT cheshi(String param) throws Exception { + System.out.println("执行呢方法"); + return new ReturnT<>("SUCCESS"); + } } diff --git a/hzims-service/hzims-scheduled/src/main/resources/application.yml b/hzims-service/hzims-scheduled/src/main/resources/application.yml index 2f8c38f..e738d56 100644 --- a/hzims-service/hzims-scheduled/src/main/resources/application.yml +++ b/hzims-service/hzims-scheduled/src/main/resources/application.yml @@ -36,23 +36,38 @@ spring: # redis访问密码(默认为空) password: 1qaz2WSX@redis +#xxl: +# job: +# accessToken: '' +# admin: +# addresses: http://192.168.1.3:7009/xxl-job-admin +# executor: +# appname: hzims-operational +# ip: 192.168.1.3 +# logpath: /data/applogs/xxl-job/jobhandler +# logretentiondays: -1 +# port: 28501 + xxl: job: accessToken: '' admin: - addresses: http://192.168.1.3:7009/xxl-job-admin + addresses: http://192.168.5.128:9080/xxl-job-admin executor: appname: hzims-operational - ip: 192.168.1.3 + ip: 192.168.18.232 logpath: /data/applogs/xxl-job/jobhandler logretentiondays: -1 port: 28501 + #mybatis-plus配置 mybatis-plus: - mapper-locations: classpath:com/hnac/hzims/**/mapper/*Mapper.xml + mapper-locations: classpath*:/mapper/**/*.xml #实体扫描,多个package用逗号或者分号分隔 - typeAliasesPackage: com.hnac.hzims.**.entity +# typeAliasesPackage: com.hnac.hzims.**.entity + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #swagger扫描路径配置 swagger: diff --git a/hzims-service/hzims-scheduled/src/main/resources/mapper/operation/AbnormalAlarmMapper.xml b/hzims-service/hzims-scheduled/src/main/resources/mapper/operation/AbnormalAlarmMapper.xml new file mode 100644 index 0000000..49c1076 --- /dev/null +++ b/hzims-service/hzims-scheduled/src/main/resources/mapper/operation/AbnormalAlarmMapper.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/hzims-service/hzims-scheduled/src/main/resources/mapper/operation/StAlarmRecordMapper.xml b/hzims-service/hzims-scheduled/src/main/resources/mapper/operation/StAlarmRecordMapper.xml new file mode 100644 index 0000000..cfe513d --- /dev/null +++ b/hzims-service/hzims-scheduled/src/main/resources/mapper/operation/StAlarmRecordMapper.xml @@ -0,0 +1,19 @@ + + + + + + + SELECT LAST_INSERT_ID() AS id + + insert into hy_st_alarm_record (id, station_id, real_id, + status, phone_record, process_desc, + create_time, processor, process_time + ) + values (#{id,jdbcType=BIGINT}, #{stationId,jdbcType=VARCHAR}, #{realId,jdbcType=VARCHAR}, + #{status,jdbcType=TINYINT}, #{phoneRecord,jdbcType=VARCHAR}, #{processDesc,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{processor,jdbcType=VARCHAR}, #{processTime,jdbcType=TIMESTAMP} + ) + + + \ No newline at end of file From 268604257449d74ca2ad03f4e13419bb638334ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Wed, 24 May 2023 11:42:19 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A5=A8=E9=99=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/secondary/动火工作票.docx | Bin 0 -> 22682 bytes .../工作票危险点分析及控制措施票.docx | Bin 0 -> 24342 bytes .../secondary/工作票安全措施附页.docx | Bin 0 -> 21547 bytes .../secondary/有限空间监测记录单.docx | Bin 0 -> 32294 bytes .../main/resources/template/第一种工作票.docx | Bin 24972 -> 24908 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 hzims-service/ticket/src/main/resources/template/secondary/动火工作票.docx create mode 100644 hzims-service/ticket/src/main/resources/template/secondary/工作票危险点分析及控制措施票.docx create mode 100644 hzims-service/ticket/src/main/resources/template/secondary/工作票安全措施附页.docx create mode 100644 hzims-service/ticket/src/main/resources/template/secondary/有限空间监测记录单.docx diff --git a/hzims-service/ticket/src/main/resources/template/secondary/动火工作票.docx b/hzims-service/ticket/src/main/resources/template/secondary/动火工作票.docx new file mode 100644 index 0000000000000000000000000000000000000000..0844a4acfcbd59f4c4cedc1f3308abff985aea0a GIT binary patch literal 22682 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 literal 0 HcmV?d00001 diff --git a/hzims-service/ticket/src/main/resources/template/secondary/工作票危险点分析及控制措施票.docx b/hzims-service/ticket/src/main/resources/template/secondary/工作票危险点分析及控制措施票.docx new file mode 100644 index 0000000000000000000000000000000000000000..4c6118970b4bfb78684697bda91cbdc78612eb96 GIT binary patch literal 24342 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 literal 0 HcmV?d00001 diff --git a/hzims-service/ticket/src/main/resources/template/secondary/有限空间监测记录单.docx b/hzims-service/ticket/src/main/resources/template/secondary/有限空间监测记录单.docx new file mode 100644 index 0000000000000000000000000000000000000000..1a68c607ef2234f612aa097c424aa5a47b5bc902 GIT binary patch literal 32294 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 Jz5lxXzW~WhkVgOj delta 12473 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 bc-7 Date: Wed, 24 May 2023 18:17:54 +0800 Subject: [PATCH 05/17] =?UTF-8?q?poi=20=E5=AF=BC=E5=87=BAword=E5=90=88?= =?UTF-8?q?=E5=B9=B6=20,=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C=E7=A5=A8?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/ticket/constants/TicketConstants.java | 1 + .../workTicket/entity/WorkTicketInfoEntity.java | 50 ++++- .../ticket/response/ProcessWorkFlowResponse.java | 5 + .../controller/TicketProcessController.java | 18 +- .../ticket/twoTicket/entity/WorkTicketFinish.java | 32 ++- .../twoTicket/service/TicketProcessService.java | 10 + .../service/impl/TicketProcessServiceImpl.java | 226 +++++++++++++++++++-- .../ticket/twoTicket/vo/process/WorkTicketVo.java | 5 + .../com/hnac/hzims/ticket/utils/MergeDocUtils.java | 172 ++++++++++++++++ .../ticket/workTicket/dto/WorkTicketInfoDto.java | 4 + .../service/impl/WorkTicketInfoServiceImpl.java | 62 +++++- 11 files changed, 546 insertions(+), 39 deletions(-) create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/TicketConstants.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/TicketConstants.java index 928605a..de3b0bd 100644 --- a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/TicketConstants.java +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/TicketConstants.java @@ -102,6 +102,7 @@ public interface TicketConstants { MECHANICAL_WORK("8","大隆水电站水力机械工作票模板"), EMERGENCY_REPAIR("9","大隆水电站事故应急抢修单模板"), NEW_FIRST_WORK("10","新电气第一种工作票模板"), + NEW_FIRST_WORK1("11","第一种工作票"), ; @Getter private String type; diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java index 82f0992..b0f4153 100644 --- a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java @@ -403,14 +403,14 @@ public class WorkTicketInfoEntity extends TenantEntity implements Serializable { * 下一个审批人 */ @ApiModelProperty("下一个审批人") - private Long nextStepOperator; + private String nextStepOperator; /** * 当前审批人 */ @ApiModelProperty("当前审批人") - private Long stepOperator; + private String stepOperator; /** @@ -427,4 +427,50 @@ public class WorkTicketInfoEntity extends TenantEntity implements Serializable { private String flowTaskId; + /** + * 项目名称 + */ + @ApiModelProperty("项目名称") + private String projectName; + + + /** + * 工作接收人 + */ + @ApiModelProperty("工作接收人") + private String jobReceiver; + + + + /** + * 工作接收人时间 + */ + @ApiModelProperty("工作接收人时间") + private String jobReceiverDateTime; + + + /** + * 安全隔离措施附页 (true,展示附件,false,不展示附件) + */ + @ApiModelProperty("安全隔离措施附页 (true,展示附件,false,不展示附件)") + private Boolean isSafety; + + /** + * 危险点分析与预控措施票 (true,展示附件,false,不展示附件) + */ + @ApiModelProperty("危险点分析与预控措施票 (true,展示附件,false,不展示附件)") + private Boolean isHazard; + + /** + * 动火工作票 (true,展示附件,false,不展示附件) + */ + @ApiModelProperty("动火工作票 (true,展示附件,false,不展示附件)") + private Boolean isRailway; + /** + *有限空间监测记录单(true,展示附件,false,不展示附件) + */ + @ApiModelProperty("有限空间监测记录单 (true,展示附件,false,不展示附件)") + private Boolean isLimited; + + } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java index be96d3c..2071db4 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java @@ -50,4 +50,9 @@ public class ProcessWorkFlowResponse implements Serializable { /**票据表单**/ private Object variables; + /** + * 根据handleType区分是用户还是候选组角色 标识 0是用户 1是角色 + */ + private String handleType; + } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java index b84c076..719404b 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java @@ -16,12 +16,15 @@ import org.springblade.flow.core.vo.ComleteTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 工作票 + * * @Author WL * @Version v1.0 * @Serial 1.0 @@ -35,11 +38,12 @@ import java.util.Map; public class TicketProcessController { - private final TicketProcessService ticketProcessService; + private final TicketProcessService ticketProcessService; /** * 启动流程 + * * @return */ @ApiOperation("启动流程") @@ -52,6 +56,7 @@ public class TicketProcessController { /** * 预览 + * * @param ticketType * @param ticketId */ @@ -64,4 +69,15 @@ public class TicketProcessController { } + /** + * 预览 + */ + @GetMapping("/newPreview") + @ApiOperation(value = "新预览") + @ApiOperationSupport(order = 11) + public void preview(@RequestParam(value = "ticketId", required = true) Long ticketId, + HttpServletResponse response) { + ticketProcessService.newPreview(ticketId, response); + } + } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java index 46c86ed..145b692 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/WorkTicketFinish.java @@ -26,7 +26,7 @@ import java.time.LocalDateTime; @TableName("hzims_work_ticket_finish") public class WorkTicketFinish implements Serializable { - private static final long serialVersionUID=1L; + private static final long serialVersionUID = 1L; /** * 编号 @@ -99,7 +99,6 @@ public class WorkTicketFinish implements Serializable { private Long principal; - /** * 许可人 */ @@ -108,7 +107,6 @@ public class WorkTicketFinish implements Serializable { private Long licensor; - /** * 负责人工作结束时间 */ @@ -126,8 +124,7 @@ public class WorkTicketFinish implements Serializable { /** * 结束时间 */ - private LocalDateTime workEndTime; - + private LocalDateTime workEndTime; /** @@ -140,7 +137,30 @@ public class WorkTicketFinish implements Serializable { * 交底内容 */ @ApiModelProperty("交底内容") - private String tellContent; + private String tellContent; + + + /** + * 刀闸编号 + */ + private String brakeNumber; + + + /** + * 监护人 + */ + private Long guardian; + + /** + * 监护人地点 + */ + private String guardianPlace; + + + /** + * 其他事项 + */ + private String otherItems; } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java index 23920a2..6429eda 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java @@ -3,6 +3,8 @@ package com.hnac.hzims.ticket.twoTicket.service; import com.hnac.hzims.ticket.response.ProcessWorkFlowResponse; import com.hnac.hzims.ticket.twoTicket.vo.process.WorkTicketVo; +import javax.servlet.http.HttpServletResponse; + /** * 开票处理流程接口 * @Author dfy @@ -31,4 +33,12 @@ public interface TicketProcessService { * @param ticketId */ String preview(String ticketType, Long ticketId); + + + /** + * 新预览 + * @param response + * @return + */ + void newPreview(Long ticketId, HttpServletResponse response); } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java index af14806..f34a2f0 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; import com.hnac.hzims.common.logs.utils.StringUtils; import com.hnac.hzims.operational.access.entity.OperAccessTaskEntity; import com.hnac.hzims.operational.access.feign.IOperAccessTaskClient; @@ -26,16 +28,20 @@ import com.hnac.hzims.ticket.twoTicket.service.IWorkTicketFinishService; import com.hnac.hzims.ticket.twoTicket.service.TicketProcessService; import com.hnac.hzims.ticket.twoTicket.vo.process.FristWorkTicketVo; import com.hnac.hzims.ticket.twoTicket.vo.process.WorkTicketVo; +import com.hnac.hzims.ticket.utils.MergeDocUtils; import com.hnac.hzims.ticket.utils.PdfUtils; import com.hnac.hzims.ticket.workTicket.entity.*; import com.hnac.hzims.ticket.workTicket.service.*; import com.hnac.hzims.ticket.workTicket.service.impl.WorkTicketDelayServiceImpl; import com.hnac.hzims.ticket.workTicket.service.impl.WorkTicketOperateTimeServiceImpl; +import io.swagger.annotations.ApiModelProperty; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -51,6 +57,10 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.time.LocalDateTime; import java.util.*; @@ -100,7 +110,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { private final IAccessTaskClient accessTaskClient; - private String newFirstWorkTicketFlowKey = "workTicket"; + private String newFirstWorkTicketFlowKey = "workTicketFlow"; private final IStationClient stationClient; @@ -193,6 +203,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { log.info("获取taskId: {}", response.getTaskId()); log.info("获取下一个审批人是: {}", response.getNextStepOperator()); log.info("获取当前任务名称是: {}", response.getTaskName()); + log.info("获取根据handleType区分是用户还是候选组角色: {}", response.getHandleType()); //json转换表单 String formData = JSON.toJSONString(response.getVariables()); log.info("获取表单的数据:{}", formData); @@ -342,16 +353,20 @@ public class TicketProcessServiceImpl implements TicketProcessService { String description = getWorkTicketDescription(flowStatus); String flowDescription = ""; //当前审批人 - User user = UserCache.getUser(workTicket.getStepOperator()); + String stepOperator = workTicket.getStepOperator(); - if (StringUtils.isNotEmpty(nextStepOperator)) { + if ("0".equals(response.getHandleType())) { Long taskUser = NumberUtils.createLong(nextStepOperator.startsWith("taskUser_") ? nextStepOperator.substring(9) : null); //下一个审批人 User stepUser = UserCache.getUser(taskUser); - flowDescription = "审批中,当前环节是".concat(description).concat(",当前审批人是").concat(user.getName()).concat(",下一个审批人是").concat(stepUser.getName()).concat("待审批"); - workTicket.setNextStepOperator(taskUser); - } else { - flowDescription = "审批中,当前环节是".concat(description).concat(",审批人是").concat(user.getName()); + flowDescription = + "审批中,当前环节是".concat(description).concat(",待").concat(stepUser.getName()).concat("审批"); + workTicket.setNextStepOperator(stepUser.getName()); + } + + if ("1".equals(response.getHandleType())) { + System.out.println("获取角色信息" + response.getNextStepOperator()); + flowDescription = "审批中,当前环节是".concat(description).concat(",当前操作人是").concat(stepOperator); } //如果taskId为空 或 flowStatus = 99 if (StringUtils.isEmpty(taskId) || 99 == flowStatus) { @@ -359,8 +374,8 @@ public class TicketProcessServiceImpl implements TicketProcessService { workTicket.setFlowDescription(flowDescription); workTicket.setFlowTaskId(""); workTicket.setFlowTaskName("结束"); - workTicket.setNextStepOperator(-1L); - workTicket.setStepOperator(-1L); + workTicket.setNextStepOperator(null); + workTicket.setStepOperator(null); } else { workTicket.setFlowDescription(flowDescription); workTicket.setFlowTaskId(taskId); @@ -368,7 +383,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { } //如果下一个审批人【nextStepOperator】是null设为-1 if (StringUtils.isEmpty(nextStepOperator)) { - workTicket.setNextStepOperator(-1L); + workTicket.setNextStepOperator(null); } } @@ -424,7 +439,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { * * @param workTicketVo */ - private void returnTicket(WorkTicketVo workTicketVo) { + public void returnTicket(WorkTicketVo workTicketVo) { WorkTicketInfoEntity workTicket = workTicketVo.getWorkTicket(); if (TicketConstants.TaskTypeEnum.JXRW.getType().equals(workTicket.getTaskType())) { OperAccessTaskEntity taskEntity = new OperAccessTaskEntity(); @@ -451,7 +466,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { * @param newFirstWorkTicketFlowKey * @param workTicketVo */ - private void dealProcess(String newFirstWorkTicketFlowKey, WorkTicketVo workTicketVo) { + public void dealProcess(String newFirstWorkTicketFlowKey, WorkTicketVo workTicketVo) { //若为线下工作票 则无需开启工作流 Integer status = WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus(); if (status.intValue() != workTicketVo.getWorkTicket().getFlowStatus().intValue()) { @@ -465,7 +480,6 @@ public class TicketProcessServiceImpl implements TicketProcessService { if (!listR.isSuccess() || CollectionUtil.isEmpty(listR.getData())) { throw new ServiceException("工作票签发人角色下未查询到相关人员"); } - log.info("获取签发人角色下的人员: {}", listR.getData()); Map params = new HashMap<>(4); params.put("workTicketVo", workTicketVo); @@ -473,7 +487,10 @@ public class TicketProcessServiceImpl implements TicketProcessService { workTicketVo.setIsState(true); log.info("获取表单的数据: {}", workTicketVo); R processInstanceContainNameByKey = flowClient.startProcessInstanceContainNameByKey(newFirstWorkTicketFlowKey, String.valueOf(workTicketVo.getWorkTicket().getId()), workTicketVo.getWorkTicket().getWorkContent(), params); - if (!processInstanceContainNameByKey.isSuccess() && processInstanceContainNameByKey.getData() == null) { + log.info("processInstanceContainNameByKey.isSuccess() : {}", processInstanceContainNameByKey.isSuccess()); + log.info("processInstanceContainNameByKey.getData() : {}", processInstanceContainNameByKey.getData()); + log.info("BladeFlow processInstanceContainNameByKey:{}", processInstanceContainNameByKey); + if (!processInstanceContainNameByKey.isSuccess() && processInstanceContainNameByKey.getCode() == 500) { throw new ServiceException("启动流程失败..."); } } @@ -485,7 +502,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { * @param workTicketContentDtoList * @param workTicketInfoEntity */ - private void saveWorkTicketContentDto(List workTicketContentDtoList, WorkTicketInfoEntity workTicketInfoEntity) { + public void saveWorkTicketContentDto(List workTicketContentDtoList, WorkTicketInfoEntity workTicketInfoEntity) { if (CollectionUtils.isEmpty(workTicketContentDtoList)) { return; } @@ -508,7 +525,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { * @param safetyMeasuresList * @param workTicketInfoEntity */ - private void saveSafetyMeasures(List safetyMeasuresList, WorkTicketInfoEntity workTicketInfoEntity) { + public void saveSafetyMeasures(List safetyMeasuresList, WorkTicketInfoEntity workTicketInfoEntity) { if (CollectionUtil.isEmpty(safetyMeasuresList)) { return; } @@ -533,7 +550,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { * @param workTicket * @return */ - private WorkTicketInfoEntity saveWorkTicketInfo(WorkTicketInfoEntity workTicket) { + public WorkTicketInfoEntity saveWorkTicketInfo(WorkTicketInfoEntity workTicket) { workTicket.setStatus(Func.isEmpty(workTicket.getPrincipal()) || Func.isEmpty(workTicket.getClassGroupMembers()) ? WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_OPERATE.getStatus() : WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus()); //班组成员名称 String byclassGroupMembers = getByClassGroupMembers(workTicket); @@ -542,7 +559,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { String principalName = getByPrincipal(workTicket); workTicket.setPrincipalName(principalName); workTicket.setFlowStatus(1); - workTicket.setStepOperator(AuthUtil.getUserId()); + workTicket.setStepOperator(UserCache.getUser(AuthUtil.getUserId()).getName()); //唯一 workTicket.setCreateUser(AuthUtil.getUserId()); boolean isSave = firstWorkTicketService.save(workTicket); @@ -631,15 +648,120 @@ public class TicketProcessServiceImpl implements TicketProcessService { } + /** + * 新预览 + * + * @param ticketId + * @param response + * @return + */ + @SneakyThrows + @Override + public void newPreview(Long ticketId, HttpServletResponse response) { + String fileName = IdWorker.get32UUID() + ".docx"; + // response.setContentType("application/octet-stream;charset=ISO8859-1"); + response.setHeader("Content-Disposition", "attachment; filename=" + fileName); + response.setContentType("application/vnd.ms-excel;charset=utf-8"); + // response.addHeader("Pargam", "no-cache"); + // response.addHeader("Cache-Control", "no-cache"); + WorkTicketVo workTicketVo = ticketInfoService.selectDetailsById(ticketId); + log.info("新工作票 {}", workTicketVo); + //将查询的数据转换为map + Map workTicketInfoMap = this.convertMap(workTicketVo); + //创建新的map + Map objectObjectHashMap = new HashMap<>(); + for (Map.Entry stringObjectEntry : workTicketInfoMap.entrySet()) { + System.out.println("获取map : " + stringObjectEntry.getKey() + "=====>" + stringObjectEntry.getValue()); + } + WorkTicketInfoEntity workTicket = workTicketVo.getWorkTicket(); + + if ((workTicket.getIsSafety() == null && workTicket.getIsHazard() == null && workTicket.getIsLimited() == null && workTicket.getIsRailway() == null) + || (workTicket.getIsSafety() == null || workTicket.getIsHazard() == null || workTicket.getIsLimited() == null || workTicket.getIsRailway() == null)) { + extractedWithWord(response, workTicketInfoMap); + return; + } + + //如果4个多为false 或为空 附件不展示附件 + if (!workTicket.getIsSafety() && !workTicket.getIsHazard() && !workTicket.getIsLimited() && !workTicket.getIsRailway()) { + extractedWithWord(response, workTicketInfoMap); + return; + } + List docFileList = new ArrayList<>(); + docFileList.add(new File("template/电气第一种工作票模版.docx")); + //安全隔离措施附页 (true,展示附件,false,不展示附件) + if (workTicket.getIsSafety()) { + setWorkTicketPrincipalChange(docFileList); + } + //危险点分析与预控措施票 (true,展示附件,false,不展示附件) + if (workTicket.getIsSafety()) { + setWorkTicketHazardPointChange(docFileList); + } + //动火工作票 (true,展示附件,false,不展示附件) + if (workTicket.getIsRailway()) { + setWorkTicketRailwayChange(docFileList); + } + //有限空间监测记录单(true,展示附件,false,不展示附件) + if (workTicket.getIsLimited()) { + setWorkTicketLimitedChange(docFileList); + } + MergeDocUtils.mergeDoc(docFileList, response); + } + + + /** + * 预览 + * + * @param response + * @param workTicketInfoMap + * @throws Exception + */ + private static void extractedWithWord(HttpServletResponse response, Map workTicketInfoMap) throws Exception { + XWPFDocument doc = WordExportUtil.exportWord07("template/电气第一种工作票模版.docx", workTicketInfoMap); + String os = System.getProperty("os.name"); + //Windows操作系统 + if (os != null && os.toLowerCase().startsWith("windows")) { + log.info("当前系统版本是:{}", os); + String name = "D:/导出excel/电气第一种工作票模版.docx"; + FileOutputStream fos = new FileOutputStream(name); + doc.write(fos); + } else { + //其它操作系统 + log.info("当前系统版本是:{}", os); + ServletOutputStream outputStream = response.getOutputStream(); + doc.write(outputStream); + } + } + //封装map 转换 excel导出 private Map convertMap(WorkTicketVo workTicketVo) { Map result = new HashMap<>(); WorkTicketInfoEntity workTicket = workTicketVo.getWorkTicket(); + + Map map1 = JSONObject.parseObject(JSONObject.toJSONString(workTicket), Map.class); + for (Map.Entry stringObjectEntry : map1.entrySet()) { + System.out.println("stringObjectEntry : " + stringObjectEntry.getKey() + "=====>" + stringObjectEntry.getValue()); + } + + //1. 工作对象 + // log.info("工作对象: {}", workTicket); + Map workTicketInfoMap = PdfUtils.objectToMap(workTicket, true); + //安全隔离措施附页 (true,展示附件,false,不展示附件 + getDataConversion(workTicketInfoMap, "isSafety", workTicketInfoMap.get("isSafety")); + //危险点分析与预控措施票 (true,展示附件,false,不展示附件) + getDataConversion(workTicketInfoMap, "isHazard", workTicketInfoMap.get("isHazard")); + //危险点分析与预控措施票 (true,展示附件,false,不展示附件) + getDataConversion(workTicketInfoMap, "isRailway", workTicketInfoMap.get("isRailway")); + //有限空间监测记录单(true,展示附件,false,不展示附件) + getDataConversion(workTicketInfoMap, "isLimited", workTicketInfoMap.get("isLimited")); + + + result.putAll(workTicketInfoMap); //2. 安全措施 List safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); + log.info("安全措施: {}", safetyMeasuresList); if (CollectionUtils.isNotEmpty(safetyMeasuresList)) { Map> measureMap = safetyMeasuresList.stream().collect(Collectors.groupingBy(WorkTicketSafetyMeasureEntity::getType)); Arrays.stream(WorkTicketConstants.WorkTicketMeasureTypeEnum.class.getEnumConstants()).forEach(measureEnum -> { @@ -654,10 +776,11 @@ public class TicketProcessServiceImpl implements TicketProcessService { index = 1; tempIndex++; } + log.info("获取安全措施的信息: {}", measureVO); Map map = PdfUtils.objectToMap(measureVO, true); map.put("index", index); map.put("safetyMeasure", ObjectUtil.isNotEmpty(map.get("measure")) ? map.get("measure") : null); - String status = TicketConstants.SafetyMeasureStatusEnum.FINISH.getStatus().equals(measureVO.getStatus()) ? "√" : "×"; + String status = TicketConstants.SafetyMeasureStatusEnum.FINISH.getStatus().equals(measureVO.getStatus()) ? "√" : ""; map.put("status", status); mapList.add(map); index++; @@ -668,8 +791,14 @@ public class TicketProcessServiceImpl implements TicketProcessService { workTicketInfoMap.put(measureEnum.getConvertAttributes(), new ArrayList>(1)); } }); + result.putAll(workTicketInfoMap); + } else { + result.put("matterLibraryListOne", new ArrayList<>()); + result.put("matterLibraryListTwo", new ArrayList<>()); + result.put("matterLibraryListThree", new ArrayList<>()); + result.put("matterLibraryListFour", new ArrayList<>()); } - result.putAll(workTicketInfoMap); + //3. 工作票工作任务组 List workTicketContentDtoList = workTicketVo.getWorkTicketContentDtoList(); if (CollectionUtils.isNotEmpty(workTicketContentDtoList)) { @@ -678,6 +807,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { //4. 工作票延期 WorkTicketDelayEntity workTicketDelay = workTicketVo.getWorkTicketDelay(); + log.info("工作票延期: {}", workTicketDelay); if (ObjectUtils.isNotEmpty(workTicketDelay)) { result.putAll(PdfUtils.objectToMap(workTicketDelay, true)); } else { @@ -686,6 +816,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { //5. 工作结束 WorkTicketFinish workTicketFinish = workTicketVo.getWorkTicketFinish(); + log.info("工作结束: {}", workTicketFinish); if (ObjectUtils.isNotEmpty(workTicketFinish)) { result.putAll(PdfUtils.objectToMap(workTicketFinish, true)); } else { @@ -710,6 +841,61 @@ public class TicketProcessServiceImpl implements TicketProcessService { return JSONObject.parseObject(JSONObject.toJSONString(target), Map.class); } + + /** + * 安全隔离措施附页 + */ + @SneakyThrows + public void setWorkTicketPrincipalChange(List docFileList) { + docFileList.add(new File("template/secondary/工作票安全措施附页.docx")); + } + + + /** + * 危险点分析与预控措施票 + */ + @SneakyThrows + public void setWorkTicketHazardPointChange(List docFileList) { + docFileList.add(new File("template/secondary/工作票危险点分析及控制措施票.docx")); + } + + + /** + * 动火工作票 + */ + @SneakyThrows + public void setWorkTicketRailwayChange(List docFileList) { + File file = new File("template/secondary/动火工作票.docx"); + docFileList.add(file); + + } + + + /** + * 有限空间监测记录单(true,展示附件,false,不展示附件) + */ + @SneakyThrows + public void setWorkTicketLimitedChange(List docFileList) { + File file = new File("template/secondary/有限空间监测记录单.docx"); + docFileList.add(file); + } + + + /** + * value true转 ☑ 或 false转 □ + * + * @param dataConversion + * @param key + * @param value + */ + public void getDataConversion(Map dataConversion, String key, Object value) { + String newValue = value == null ? (String) value : value.toString(); + if (StringUtils.isNoneBlank(newValue)) { + dataConversion.put(key, BooleanUtils.toBoolean(newValue) ? "☑" : "□"); + } + } + + } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java index 378d8ad..45daa09 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java @@ -74,4 +74,9 @@ public class WorkTicketVo { private Boolean isState = true; + + + private String ticketType; + + } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java new file mode 100644 index 0000000..209f4fb --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java @@ -0,0 +1,172 @@ +package com.hnac.hzims.ticket.utils; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/5/23 16:42 + */ +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.xwpf.usermodel.BreakType; +import org.apache.poi.xwpf.usermodel.Document; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFPictureData; +import org.apache.xmlbeans.XmlOptions; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.time.LocalDate; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +/** + * 参数1:需要合并的word的文件对象list + * 参数2:合并之后word存储的全路径file对象 + */ +public class MergeDocUtils { + + + /** + * word文档合并 + * @param fileList 合并文档的路径 + * @param response 新的word + * @throws Exception + */ + public static void mergeDoc(List fileList, HttpServletResponse response)throws Exception { + + OutputStream dest = response.getOutputStream(); + ArrayList documentList = new ArrayList(); + XWPFDocument doc = null; + for (int i = 0; i < fileList.size(); i++) { + FileInputStream in = new FileInputStream(fileList.get(i).getPath()); + OPCPackage open = OPCPackage.open(in); + XWPFDocument document = new XWPFDocument(open); + documentList.add(document); + } + + + + for (int i = 0; i < documentList.size(); i++) { + doc = documentList.get(0); + if (i != 0) { + //documentList.get(i).createParagraph().setPageBreak(true);//实现了分页效果。//但是会出现在首行为空的情况 + documentList.get(i).createParagraph().createRun().addBreak(BreakType.PAGE);//现了分页效果。使用这种方式不会出现留白的情况 + appendBody(doc, documentList.get(i)); + } + } + doc.write(dest);//输出合并之后的文件 + } + + + /** + * 图片文件追加 + * @param src + * @param append + * @throws Exception + */ + public static void appendBody(XWPFDocument src, XWPFDocument append) throws Exception { + CTBody src1Body = src.getDocument().getBody(); + CTBody src2Body = append.getDocument().getBody(); + + List allPictures = append.getAllPictures(); + // 记录图片合并前及合并后的ID + Map map = new HashMap(); + for (XWPFPictureData picture : allPictures) { + String before = append.getRelationId(picture); + //将原文档中的图片加入到目标文档中 + String after = src.addPictureData(picture.getData(), Document.PICTURE_TYPE_PNG); + map.put(before, after); + } + + appendBody(src1Body, src2Body, map); + + } + + private static void appendBody(CTBody src, CTBody append, Map map) throws Exception { + XmlOptions optionsOuter = new XmlOptions(); + optionsOuter.setSaveOuter(); + String appendString = append.xmlText(optionsOuter); + + //去掉追加word内容中的 w:sectPr 标签,确保合成的word中只有一个 w:sectPr 标签对 + //避免合成的word文档打开之后会提示有些内容读不出来,导致文件损坏 + String rgex = "<[\\s]*?w:sectPr[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?w:sectPr[\\s]*?>"; + appendString = appendString.replaceAll(rgex, ""); + + String srcString = src.xmlText(); + String regex = regex(srcString, "w:sectPr"); + // System.out.println(regex); + + String prefix = srcString.substring(0, srcString.indexOf(">") + 1); + String mainPart = srcString.substring(srcString.indexOf(">") + 1, srcString.lastIndexOf("<")); + String sufix = srcString.substring(srcString.lastIndexOf("<")); + String addPart = appendString.substring(appendString.indexOf(">") + 1, appendString.lastIndexOf("<")); + + if (map != null && !map.isEmpty()) { + //对xml字符串中图片ID进行替换 + for (Map.Entry set : map.entrySet()) { + addPart = addPart.replace(set.getKey(), set.getValue()); + } + } + //将两个文档的xml内容进行拼接 + CTBody makeBody = CTBody.Factory.parse(prefix + mainPart + addPart + sufix); + + src.set(makeBody); + } + + /** + * 获取指定标签中的内容 + * + * @param xml + * @param label + * @return + */ + public static String regex(String xml, String label) { + String context = ""; + // 正则表达式 + String rgex = "<" + label + "[^>]*>((?:(?!<\\/" + label + ">)[\\s\\S])*)<\\/" + label + ">"; + Pattern pattern = Pattern.compile(rgex);// 匹配的模式 + Matcher m = pattern.matcher(xml); + // 匹配的有多个 + List list = new ArrayList(); + while (m.find()) { + int i = 1; + list.add(m.group(i)); + i++; + } + if (list.size() > 0) { + // 输出内容自己定义 + context = String.valueOf(list.size()); + } + return context; + } + + + // public static void main(String[] args) throws Exception { + // //new一个list 模拟要合并的word对象集合 + // ListdocFileList = new ArrayList<>(); + // docFileList.add(new File("F:\\idea项目\\flowable\\demo\\src\\main\\resources\\电气第一种工作票模版.docx")); + // docFileList.add(new File("F:\\idea项目\\flowable\\demo\\src\\main\\resources\\动火工作票.docx")); + // + // //合并之后doc存储路径 此处读的配置文件的存储路径 D:/pdfData/ + // String docPath = "D:\\导出excel\\"; + // //当前日期+UUID作为文件名防止重复 + // String fileName = LocalDate.now() + "-" + UUID.randomUUID().toString().replaceAll("-", ""); + // //合并之后doc存储路径 + // String mergeDocUrl = docPath+fileName+".docx"; + // //转成file对象 + // File mergeDocFile = new File(mergeDocUrl); + // + // //合并doc + // MergeDocUtils.mergeDoc(docFileList,mergeDocFile); + // + // System.out.println("合并word成功"); + // + // } +} + diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/dto/WorkTicketInfoDto.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/dto/WorkTicketInfoDto.java index cb7f418..cefe915 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/dto/WorkTicketInfoDto.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/dto/WorkTicketInfoDto.java @@ -60,4 +60,8 @@ public class WorkTicketInfoDto extends WorkTicketInfoEntity implements Serializa @ApiModelProperty("机构编号集合") private List deptIds; + + @ApiModelProperty("创建人") + private String createUserName; + } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java index 31607c8..c0e3ad5 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; +import com.hnac.hzims.common.logs.utils.StringUtils; import com.hnac.hzims.operational.access.constants.AccessConstants; import com.hnac.hzims.operational.access.entity.OperAccessTaskEntity; import com.hnac.hzims.operational.access.feign.IOperAccessTaskClient; @@ -237,14 +238,24 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl> queryList(WorkTicketInfoDto req, Query query) { LambdaQueryWrapper lqw = this.getQueryWrapper(req); - if(ObjectUtil.isNotEmpty(req.getCreateDept())) { - lqw.eq(WorkTicketInfoEntity::getCreateDept,req.getCreateDept()); + if (ObjectUtil.isNotEmpty(req.getCreateDept())) { + lqw.eq(WorkTicketInfoEntity::getCreateDept, req.getCreateDept()); } lqw.orderByDesc(WorkTicketInfoEntity::getCreateTime).orderByDesc(WorkTicketInfoEntity::getUpdateTime); - IPage pages = super.page(Condition.getPage(query), lqw); - pages.setRecords(WorkTicketInfoWrapper.build().listVO(pages.getRecords())); - return R.data(pages); + IPage pages = this.page(Condition.getPage(query), lqw); + //数据转换 + IPage workTicketInfoVOIPage = new Page<>(pages.getCurrent(),pages.getSize()); + workTicketInfoVOIPage.setRecords(WorkTicketInfoWrapper.build().listVO(pages.getRecords())); + workTicketInfoVOIPage.setPages(pages.getPages()); + workTicketInfoVOIPage.setTotal(pages.getTotal()); + //获取创建人 + workTicketInfoVOIPage.getRecords().forEach(item -> { + item.setCreateUserName(UserCache.getUser(item.getCreateUser()).getName()); + }); + + + return R.data(workTicketInfoVOIPage); } @Override @@ -940,20 +951,51 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl " + classGroupMembers); + String[] split = classGroupMembers.split(","); + StringBuilder sb = new StringBuilder(); + for (String classGroupMember : split) { + System.out.println(classGroupMember); + if (StringUtils.isNoneBlank(classGroupMember)) { + boolean matches = classGroupMember.matches("[0-9]+"); + if (matches) { + String name = UserCache.getUser(Long.valueOf(classGroupMember)).getName(); + // System.out.println("获取用户信息 ==> " + name); + sb.append(name).append(","); + } + } + } + + //成员信息 + if (workTicketInfo.getClassGroupMembersName() == null) { + workTicketInfo.setClassGroupMembersName(sb.toString().endsWith(",") ? + sb.toString().substring(0,sb.length() - 1) : sb.toString()); + } + //统计人数 + if (workTicketInfo.getTotalPerson() == null) { + workTicketInfo.setTotalPerson(split.length); + } + //负责人名称 + if (workTicketInfo.getPrincipalName() == null && workTicketInfo.getPrincipal() != null) { + workTicketInfo.setPrincipalName(UserCache.getUser(workTicketInfo.getPrincipal()).getName()); + } + + workTicketVo.setWorkTicket(workTicketInfo); //2. 安全措施数组 @@ -995,13 +1037,13 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl Date: Thu, 25 May 2023 08:26:24 +0800 Subject: [PATCH 06/17] =?UTF-8?q?#=E4=BF=9D=E7=95=99=E7=B2=BE=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/operational/main/service/impl/AnalyseDataServiceImpl.java | 2 ++ .../com/hnac/hzims/operational/main/service/impl/WaterServiceImpl.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java index 476cdde..71fae0f 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AnalyseDataServiceImpl.java @@ -65,6 +65,7 @@ public class AnalyseDataServiceImpl implements IAnalyseDataService { analyzeDataConditionPO.setFull(1); po.setDeviceCode(deviceCode); analyzeDataConditionPO.setSignages(signages); + analyzeDataConditionPO.setKeepFigures(2); analyzeDataConditionPO.setAccessRules(accessRules); analyzeDataConditionPO.setSaveTimeType(cycleType); // 间隔 @@ -101,6 +102,7 @@ public class AnalyseDataServiceImpl implements IAnalyseDataService { analyzeDataConditionPO.setFull(1); po.setDeviceCode(deviceCode); analyzeDataConditionPO.setSignages(signages); + analyzeDataConditionPO.setKeepFigures(2); analyzeDataConditionPO.setAccessRules(accessRules); analyzeDataConditionPO.setSaveTimeType(cycleType); // 间隔 diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/WaterServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/WaterServiceImpl.java index 83c7f71..c16822b 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/WaterServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/WaterServiceImpl.java @@ -748,7 +748,7 @@ public class WaterServiceImpl implements IWaterService { calendar.add(Calendar.MONTH, -calendar.get(Calendar.MONTH)); String start = DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATE) + " 00:00:00"; // 查询数据 - List records = analyseDataService.periodTargetData(start,end,5,5,device.getEmCode(),HomePageConstant.HYDROPOWER_GENERATE_POWER); + List records = analyseDataService.periodTargetData(start,end,5,5,device.getEmCode(),HomePageConstant.ELECTRICITY_CONSUMPTION); if(CollectionUtil.isEmpty(records)){ return new HashMap<>(); } From 1845885f60e3d25bfd2377116db0fcbbf338cf16 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Fri, 26 May 2023 08:25:00 +0800 Subject: [PATCH 07/17] =?UTF-8?q?#=E4=BF=9D=E7=95=99=E7=B2=BE=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java index ff99f70..0f13bc3 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java @@ -307,6 +307,7 @@ public class SideHustleServiceImpl implements ISideHustleService { // 故障 List operPhenomenonEntityList = operPhenomenonService.list(new QueryWrapper() {{ in("EM_CODE", deviceCodeList); + ne("IS_DEFECT",DefectConstant.IsDefectStatusEnum.IS_DEFECT.getStatus()); ne("CONCLUSION_STATUS", DefectConstant.HandlerStatusEnum.FINISH_STATUS.getStatus()); }}); List faultList = operPhenomenonEntityList.stream().map(OperPhenomenonEntity::getEmCode).distinct().collect(Collectors.toList()); From ca411580fc4002cc6d4666fb814666d31b759963 Mon Sep 17 00:00:00 2001 From: tyty Date: Fri, 26 May 2023 10:58:01 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=9B=86=E4=B8=AD?= =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E6=8E=A8=E9=80=81=E7=9B=B8=E5=85=B3=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/service/impl/SmsMessageServiceImpl.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java index 65ccdf0..73927f5 100644 --- a/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java +++ b/hzims-service/message/src/main/java/com/hnac/hzims/message/service/impl/SmsMessageServiceImpl.java @@ -2,12 +2,11 @@ package com.hnac.hzims.message.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.google.api.client.util.Value; import com.hnac.hzims.message.MessageConstants; -import com.hnac.hzims.message.entity.MessagePushRecordEntity; -import com.hnac.hzims.message.log.aspect.SaveLog; import com.hnac.hzims.message.dto.PushDto; import com.hnac.hzims.message.dto.SmsPushDto; +import com.hnac.hzims.message.entity.MessagePushRecordEntity; +import com.hnac.hzims.message.log.aspect.SaveLog; import com.hnac.hzims.message.service.IMessageService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,6 +18,7 @@ import org.springblade.core.tool.utils.Func; import org.springblade.resource.feign.ISmsClient; import org.springframework.stereotype.Service; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; /** * @author hx @@ -54,9 +54,16 @@ public class SmsMessageServiceImpl implements IMessageService { request.getSmsParam(), this.getAccountByPusher(Long.parseLong(request.getPusher()),request.getType()) ); - Assert.isTrue(response.isSuccess(),() -> { - throw new ServiceException(response.getMsg()); - }); - return response.getData().isSuccess(); + if(ObjectUtils.isEmpty(response.getData())) { + Assert.isTrue(response.isSuccess(), () -> { + throw new ServiceException(response.getMsg()); + }); + return response.isSuccess(); + }else { + Assert.isTrue(response.getData().isSuccess(), () -> { + throw new ServiceException(response.getMsg()); + }); + return response.getData().isSuccess(); + } } } From 8a3278ff16571fa0a078e62aef21ec0516f92657 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Fri, 26 May 2023 14:52:31 +0800 Subject: [PATCH 09/17] =?UTF-8?q?#=E7=8F=AD=E7=BB=84=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hnac/hzims/operational/main/controller/AppHomeController.java | 6 +++--- .../hzims/operational/main/service/impl/AppHomeServiceImpl.java | 2 +- .../hzims/operational/main/service/impl/HydropowerServiceImpl.java | 5 ++++- .../operational/main/service/impl/PhotovoltaicServiceImpl.java | 4 ++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AppHomeController.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AppHomeController.java index fc614c9..ee111e7 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AppHomeController.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AppHomeController.java @@ -31,7 +31,7 @@ public class AppHomeController extends BladeController { @ApiLog @ApiOperation("app首页-站点") @GetMapping("/appStation") - @ApiOperationSupport(order = 11) + @ApiOperationSupport(order = 1) public R> appStation(@ApiParam(value = "区域机构ID") Long deptId) { return R.data(appService.appStation(deptId)); } @@ -39,7 +39,7 @@ public class AppHomeController extends BladeController { @ApiLog @ApiOperation("app首页-站点列表数据") @GetMapping("/appStationList") - @ApiOperationSupport(order = 11) + @ApiOperationSupport(order = 2) public R> appStationList(@ApiParam(value = "机构ID") Long deptId) { return R.data(appService.appStationList(deptId)); } @@ -47,7 +47,7 @@ public class AppHomeController extends BladeController { @ApiLog @ApiOperation("app首页-当班数据") @GetMapping("/getDutyData") - @ApiOperationSupport(order = 11) + @ApiOperationSupport(order = 3) public R> getDutyData(@ApiParam(value = "区域机构ID") Long deptId) { return R.data(appService.getDutyData(deptId)); } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java index 4aaf926..fd93f5f 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java @@ -574,7 +574,7 @@ public class AppHomeServiceImpl implements IAppHomeService { */ private void getNextDuty(AppAreaDutyVo item, Long id) { DutyMainInfoVo nextDuty = this.dutyMainService.getNextDutyDataV2(id); - if(ObjectUtil.isEmpty(nextDuty)){ + if(ObjectUtil.isEmpty(nextDuty) || ObjectUtil.isEmpty(nextDuty.getId())){ return; } item.setNextShift(nextDuty.getClassName()); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java index 7f5ee0c..2717ab6 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java @@ -1645,6 +1645,9 @@ public class HydropowerServiceImpl implements HydropowerService { * @param item */ private void settingBase(DutyMainInfoVo duty, AppAreaDutyVo item) { + if(ObjectUtil.isEmpty(duty)){ + return; + } item.setShift(duty.getClassName()); item.setTeam(Optional.ofNullable(duty.getGroupName()).orElse("灵活排班")); // 班组负责人 @@ -1662,7 +1665,7 @@ public class HydropowerServiceImpl implements HydropowerService { */ private void getNextDuty(AppAreaDutyVo item, Long id) { DutyMainInfoVo nextDuty = this.dutyMainService.getNextDutyDataV2(id); - if(ObjectUtil.isEmpty(nextDuty)){ + if(ObjectUtil.isEmpty(nextDuty) || ObjectUtil.isEmpty(nextDuty.getId())){ return; } item.setNextShift(nextDuty.getClassName()); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/PhotovoltaicServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/PhotovoltaicServiceImpl.java index 173e3dd..8e0ac4d 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/PhotovoltaicServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/PhotovoltaicServiceImpl.java @@ -1352,9 +1352,9 @@ public class PhotovoltaicServiceImpl implements PhotovoltaicService { } return list.stream().collect(Collectors.groupingBy(AnalyseDataTaosVO::getTs)).entrySet().stream().map(entry ->{ PhotovoltaicLoadGenerateVo target = new PhotovoltaicLoadGenerateVo(); - LocalDateTime time = LocalDateTime.parse(DateUtil.format(new Date(), entry.getKey()), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME)); + LocalDateTime time = LocalDateTime.parse(DateUtil.format(DateUtil.parse(entry.getKey(), "yyyy-MM-dd HH:mm:ss.s"),DateUtil.PATTERN_DATETIME), DateUtil.DATETIME_FORMATTER); target.setPeriod(String.valueOf(time.getHour())); - target.setValue((float) entry.getValue().stream().mapToDouble(o-> Double.parseDouble(String.valueOf(o.getVal()))).sum()); + target.setValue((float) entry.getValue().stream().filter(val -> !StringUtil.isEmpty(val.getVal())).mapToDouble(o-> Double.parseDouble(String.valueOf(o.getVal()))).sum()); return target; }).collect(Collectors.toList()); } From 0ff82bec70c5875328afa07a7aa41b8170ba0438 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Fri, 26 May 2023 17:32:31 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A5=A8=E5=8D=B1=E9=99=A9=E7=82=B9=E5=88=86=E6=9E=90=E5=8F=8A?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E6=8E=AA=E6=96=BD=E7=A5=A8=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ticket/twoTicket/entity/TicketInfoDanger.java | 67 ++++++++++++++++++++++ .../twoTicket/mapper/TicketInfoDangerMapper.java | 13 +++++ .../twoTicket/mapper/TicketInfoDangerMapper.xml | 5 ++ .../twoTicket/service/TicketInfoDangerService.java | 24 ++++++++ .../service/impl/TicketInfoDangerServiceImpl.java | 37 ++++++++++++ 5 files changed, 146 insertions(+) create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/TicketInfoDanger.java create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.java create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.xml create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketInfoDangerService.java create mode 100644 hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketInfoDangerServiceImpl.java diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/TicketInfoDanger.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/TicketInfoDanger.java new file mode 100644 index 0000000..0e8bc71 --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/entity/TicketInfoDanger.java @@ -0,0 +1,67 @@ +package com.hnac.hzims.ticket.twoTicket.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * + * 工作票危险点分析及控制措施票 + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/5/25 17:03 + */ +@Data +@TableName("hzims_ticket_info_danger") +public class TicketInfoDanger { + + + /** + * 编号 + */ + private Long id; + + + /** + * 工作票编号 + */ + private Long ticketId; + + /** + * 安全措施 + */ + private String maintenance; + + + /** + * 危险点 + */ + private String dangerousPoint; + + + /** + * 创建时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT) + private LocalDateTime createTime; + + + /** + * 更新时间 + */ + @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + + /** + * 逻辑删除 + */ + @TableLogic + @TableField("is_deleted") + private Boolean deleted; +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.java new file mode 100644 index 0000000..29fb916 --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.java @@ -0,0 +1,13 @@ +package com.hnac.hzims.ticket.twoTicket.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/5/25 17:13 + */ +public interface TicketInfoDangerMapper extends BaseMapper { +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.xml b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.xml new file mode 100644 index 0000000..4c6a30f --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/mapper/TicketInfoDangerMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketInfoDangerService.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketInfoDangerService.java new file mode 100644 index 0000000..4b5cab6 --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketInfoDangerService.java @@ -0,0 +1,24 @@ +package com.hnac.hzims.ticket.twoTicket.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger; + +import java.util.List; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/5/25 17:15 + */ +public interface TicketInfoDangerService extends IService { + + + /** + * 根据工作票Id查询工作票危险点分析及控制措施票 + * @param ticketId + * @return + */ + + List selectAllByTicket(Long ticketId); +} diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketInfoDangerServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketInfoDangerServiceImpl.java new file mode 100644 index 0000000..bf9f1a0 --- /dev/null +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketInfoDangerServiceImpl.java @@ -0,0 +1,37 @@ +package com.hnac.hzims.ticket.twoTicket.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger; +import com.hnac.hzims.ticket.twoTicket.mapper.TicketInfoDangerMapper; +import com.hnac.hzims.ticket.twoTicket.service.TicketInfoDangerService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * @Author WL + * @Version v1.0 + * @Serial 1.0 + * @Date 2023/5/25 17:15 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class TicketInfoDangerServiceImpl extends ServiceImpl implements TicketInfoDangerService { + /** + * 根据工作票Id查询工作票危险点分析及控制措施票 + * + * @param ticketId + * @return + */ + @Override + public List selectAllByTicket(Long ticketId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TicketInfoDanger::getTicketId,ticketId); + return baseMapper.selectList(queryWrapper); + } +} From 9f02913d671e46701dad9fda7a48830652b9522d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Fri, 26 May 2023 17:33:23 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A5=A8=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/secondary/动火工作票.docx | Bin 22682 -> 26049 bytes .../工作票危险点分析及控制措施票.docx | Bin 24342 -> 28863 bytes .../secondary/工作票安全措施附页.docx | Bin 21547 -> 25871 bytes .../template/电气第一种工作票模版.docx | Bin 0 -> 42447 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 hzims-service/ticket/src/main/resources/template/电气第一种工作票模版.docx diff --git a/hzims-service/ticket/src/main/resources/template/secondary/动火工作票.docx b/hzims-service/ticket/src/main/resources/template/secondary/动火工作票.docx index 0844a4acfcbd59f4c4cedc1f3308abff985aea0a..0618c2326126a52fb445c2d1853ad408706cae87 100644 GIT binary patch delta 18976 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 delta 15660 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 diff --git a/hzims-service/ticket/src/main/resources/template/secondary/工作票危险点分析及控制措施票.docx b/hzims-service/ticket/src/main/resources/template/secondary/工作票危险点分析及控制措施票.docx index 4c6118970b4bfb78684697bda91cbdc78612eb96..8b4eb810a020e458d371f17d9d52aa71b69ef36e 100644 GIT binary patch delta 21879 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Ðq^)9EbWuBDArRn4ouI-^>t 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 z%0A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 z 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 delta 14609 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 y|1J89ai36 diff --git a/hzims-service/ticket/src/main/resources/template/电气第一种工作票模版.docx b/hzims-service/ticket/src/main/resources/template/电气第一种工作票模版.docx new file mode 100644 index 0000000000000000000000000000000000000000..00899e15afbf9822306f509df6ade03e72a4fd00 GIT binary patch literal 42447 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�VIi|ONocrCpVB)ACB~dJorvFLZ>F(3% zupOh8qFv}d?!X{TF=95hCsUrwiPWx&RTfZsaMGSP2~c=DNA3S}l10Zv5s9XQx#8mU zkj|W1gJ8`eWAd9(Ekj=WY%IH;B-ltjklwa_0Xky6_19H`LEErHR8W``o_u6~N<&uT z#OH>UK4S3-=mC2)3#%|2*g>&b#xjmlN>>idsz;k$>F9ZnA?qcM%{H$#H~(tj;~S{u#3`(WCb zzW2*$?Eh=;s^g;Q_BSFak_$-p3cL~$iy(@0OLs`8bV;|cNC^l^3M|qk-O?Q*-QA(I zAjlnfeJ{A)`^WG1_nrL=pWQk0JZENkcIJD|_sn^ArN6nYEWeLb%F~p7h^jU1S&3yO zLIM>@o+uAzoscfGemY){J5v;lP17e*)K-f>U~iK%GLjUvn1hxdYtiqrBIBjG#I`Uv z8yv0wp0|*R>1?aMsByF8Cavjx1BvWsOhSvn_S$CTw)q&FT$3WwN|iW=P9+2d1xjP?0jVmNQIU zc%Y@DPo$!GM2@b}W~Qt5EsqH2hRrunON+xOg^( zkB6YpDK6XBgb`ic7ShPG88^kcr(4E3lJHC{DWptPCHe(z?nY+t{n}37!ltl7R!;q# zv~|-6z0g_OBi$&4(Akc|*&c;y=p&~P{~wRWC@OiLS_&sU6m9fK;t?f*ane-Vtx@Hgof(1cigCEbw6gXHSj@b`ExPX>?${-%Y@)3k zw}jawnQo$G5Vw(p#kp?cukf@3TS7L`_H&U;JSTIJ7Ho_0LXKjisai}_#`Q|eX%pUh z@FH3&LHS7?133_R5sj2^wvCj;1xN{KK8wCYE0LcIBJ9n)Php}&^wmH~e249?wB*oR zxTY{cr14A~AFjWIlS9{Cu&gnU*sqr?uPAQzKti@((NZWu3$X z{%*ts3V&C0v1zZX;r|88nfyP)Qtv(KnnBzs&l)ypTR!B^h-c5)NZ=Ywsq9>G3b*Xf z`syIS(J5pzwBJsye9+m;4ygrg_~BqToS-bBG!K$m;c$h=-oKN?{7Gk|a(VjZU|;kM zi*MJw=kAt6SMB@!KsykqHJH?W4%{8|oUS6BeNFP%m5yQeu6FFRa3qt&sQj^V3iOx; ziIKGD?&?!#DKWG-laQW4-?o@<`D0atSb-JK!}5_Eakt}QpZnN&S1&JU%-SZ?uZ;A! zg)KM~)kT1Cs=j;_3%qTpRk3*nsuX9#~ivFLy~%$79d5e zVlG}UiHWY3^+M})9+6iTb*Cm!8by*csrMlODR=O-cQgrJO&ZFzBBc(~Eb1GVlmXZI zs?xYr_DruiuV)1A5LP`faC zo01fJdBBZBc2#N19&$J!pmBbbp6M*3Qi(C}O)>)NQjxT+BF86N=$@Xm=5b6~=<=Qr z8{%#l;XHWmlNeNSi!ti_iC(E5%dXK_3wy3R-Tcj-{rm4kjqEz#9t7BRFLu53?AHC* zQ{4HB3|bAasp}wT?Wz zyBPDC#}ifx4&%_iZgvCY+wqBvd`|Q?b-?y<(ML~415OH!GJ8U~tHX+FbufjjTZ;Db6mctyuzJVV#Z5Rbl=!D(R52_mDKuT;yJld%;XYouT7O_ z2=bVi6b*mspOB3zUN5UUdGlSs@UM(ldgF#rPicp-h_`m{x~N$xl_nx+M@NlgbYY|} zzL>^Zp}4h^%%?M+b1k`b6hF%(>Rjn(&VbAnKhft4BYnkd zDXGmkZEK)07XUQoo(NBtepmbc;QX=VS}YJEvv2& zAK8AkW^`rsBeqO0%l3x3Z3eGqoH4s&C?u zj>9oWtCA(>%a*?HYv>{Sl)X~7v7+%wr(t=i)#NPYiz-BsfzecpEdk3PWTkm)yJZ}) zWrVGYs<3Byoy!bd9d#%Bt9i?nwwPG*s*!Ph@GQo;T0( z3^DGxJe3XT28ET9{VlQD)GTCOD{(*?~>wZyP9?bR7X&9IQeF zx1S*5l@s~@uqN{IB8oflEIbl|_TGTj)D-_%(68PU>gGv*!_KGmEZ+SEM5{`XppdYo zmcaCT@`G(%5wVSt-SqFl$Kxfkp>JDx6wmbnt+bZ4XY8=~Fy+V^g3g9!MjmKHuX*rt zMBn&6n8yJVhOCV}>N|i@^z3b=)4pFIkwu*{S$Hb1a=h?HmnPFNQjU`j?0^2r-^+p` zEbtLoZuqXxhsE0yhtd57W>YeIuU175c72f+uL! zsTdg&rQ+R;Dvstmq>atOEb18QZzc#U5U}L z-OO=cyI?SyaREYylt58A7WTl6SKdTUn0CHg4W-eP#?R_((e@!4X+hb%&JchF1b?Z}0frBX^*GR&BZGruges{!x(KyTcU@O7^+jpt&M3SsR81z<5ZC3Pxu_mlU7bRihh({K#xr&5#?kXl1Nca-e=!QpY!# zi&C;oYEqY{{nLyD?F6MMD=nPM|6c_#4`tofrN%Dc5E11C2i5-l^~b)+ohDCm{A zks4AZm{AOk)372iF^1@c?R*%61BRJEi5`{$YqO)XC=%;~iA;4{gLUB+X6CXTaQ~#E zcE;`ZLi&2?&i?sTL~W|-0qf#OQw{EIQw<`ZpsC{1ugV|^C)`b%LHkonCHu^k&Ea~E zrg5K}^q$imCp%lk4}9MolITx_Syxo3w~KcAh~aME6SYCd;Bj?_E@X}dh$gaiG}UfIN>IaVB$SMeKzcI>=eWHlW+=zv zQHoDH)z(>bO6B?P&d-e_10nm4#nZ<#LC56=_S+84ciirR*XT&4i}p-HpGrl=J-+MQ zwDQu!A;b1ZmsiyQ=N;oy!2ID)dGa?{xH|*FZN9il15P`Dy^frnwT(TifwkSGI;m2T z{%5ZP+`8N&rzD&169x1ke@$7e>FTqwN(oM$kMQ#$XeoZ}9^b&lEa9-t_h|27vlQOf z#u80luK*LXX?kp(X--}jmf%J7ga^@yG!Lm5Zsh!BxoP(*e=pb}1dlRps3?<3x}W6H zL)<{r*zC$|vTkiLf`Y8S8s}~jsswcImX?AS zJk&30OZ|#0U&Ooc)9>`U56HcpyxrHkhk@_m5UCJZWGlmHvJm=ppd&@82gRE z2$mqtO?t-ZgxHUDw)YA2p9i=Mn2t1g0CN2d$Q9?hT=i^hF0Q5jQ!5}eUy(k2WtVQ_V5Gv)OFpX!`UpjM^L+ z(`%uzNUX8;rtILM7mM}X6&J#&LP;VM+eAvXW!2Mtq$J-xqR7^F5&oeYH4+^+H@xTEA2 zv}@ux;?xDXj}enS9F@?s5yJf@`3_p|i7;9*j3MP}ktzNa!uR8gWi@A=sHYzcqT^uh z^sK$NyJg+I<{Q+PJSEfAub~N{p84#pZWV^<@Ni~b-zm5X?da_0Qt?np@>h;x>kvZ9 zXIQ|)rvKpz>m97xau1L!79d&Bb;%ky+B;ZV{!g`+g1!8c7SSiwbP);po(pw6?g=l` zvn;3`Avhb$6$Hf8_FYsY{gyNlee8K>3C^RDcS9 z#IoQJ*?HPZ_ZH#?$q<*HN-6@qUPDn$Z3ks2#Y@}TLLV^(O>aN@1w`sDY(Xxr{g1m6 z8KD*ltUVNK`5Tp)koReFz-SK>sO+#AdYd)b_eJKg?Sgidz2d|vOIg@T^zofje1|Uw zmN%x?{f8WVLEPh7eE8=Wn zlQIcmdu7Hc>s2f;A{ImWZ;jnRWCq$)Ct-zYq|( z*bpzxrLK_ZfV=NyzTvuOA3XebtG_ES0zwtrFZh2k{)1-{hjVSa;^N`_#q^tp8$2G~ zCF=^0{@@q>x@Q(V9Nw4c3O>y93x3U11Rf1Qdbl^YJXDvJ*gD@`M^IfaK#}FxQ1LF2K>_l@D%WaS+6K| zoqthWAKD5JhfgD4!OLI%g8!COhR4Ha&aUuCLH|_$?>rhj7{24<3hW#83k=r{0?z>7 zZoFc68S{(bw^k%P{`bKC3XOn37mI-KN0<)}|2@#U4j+iW2LBay!J~h_=Uqn!Bwa&a Y-2vsKkWnsn0|Bo-VEV50 Date: Fri, 26 May 2023 17:35:30 +0800 Subject: [PATCH 12/17] =?UTF-8?q?word=20=E5=90=88=E5=B9=B6=20utils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hnac/hzims/ticket/utils/MergeDocUtils.java | 14 ++-- .../java/com/hnac/hzims/ticket/utils/PdfUtils.java | 84 ++++++++++++++++++++++ 2 files changed, 94 insertions(+), 4 deletions(-) diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java index 209f4fb..3849457 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/MergeDocUtils.java @@ -54,13 +54,19 @@ public class MergeDocUtils { for (int i = 0; i < documentList.size(); i++) { doc = documentList.get(0); - if (i != 0) { - //documentList.get(i).createParagraph().setPageBreak(true);//实现了分页效果。//但是会出现在首行为空的情况 - documentList.get(i).createParagraph().createRun().addBreak(BreakType.PAGE);//现了分页效果。使用这种方式不会出现留白的情况 + if (i == 0) { + //首页直接分页,不再插入首页文档内容 + documentList.get(i).createParagraph().createRun().addBreak(BreakType.PAGE); + } else if (i == documentList.size() - 1) { + //尾页不再分页,直接插入最后文档内容 + appendBody(doc, documentList.get(i)); + } else { + documentList.get(i).createParagraph().createRun().addBreak(BreakType.PAGE); appendBody(doc, documentList.get(i)); } } - doc.write(dest);//输出合并之后的文件 + //输出合并之后的文件 + doc.write(dest); } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/PdfUtils.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/PdfUtils.java index ef57581..be9a22b 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/PdfUtils.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/utils/PdfUtils.java @@ -1,6 +1,7 @@ package com.hnac.hzims.ticket.utils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.documents4j.api.DocumentType; import com.documents4j.api.IConverter; import com.documents4j.job.LocalConverter; @@ -209,6 +210,89 @@ public class PdfUtils { return result; } + + /** + * 对象转化为Map 并设置默认值 + * + * @param obj + * @return + * @throws Exception + */ + public static Map objectToMapResult(Object obj, Map map) { + Map result = new HashMap<>(); + if (ObjectUtil.isNotEmpty(obj) && null != obj.getClass()) { + Class clazz = obj.getClass(); + List fieldList = new ArrayList<>(); + while (clazz != null) { + fieldList.addAll(Arrays.asList(clazz.getDeclaredFields())); + clazz = clazz.getSuperclass(); + } + fieldList.forEach(field -> { + field.setAccessible(true); + DefaultValue defaultValue = field.getAnnotation(DefaultValue.class); + Object value; + try { + value = field.get(obj); + } catch (IllegalAccessException e) { + throw new ServiceException("获取属性性出错"); + } + //若为list则不处理 + if (value instanceof List) { + return; + } + //若为时间格式则进行格式化 + if (value instanceof LocalDateTime) { + value = DateUtil.format((LocalDateTime) value, TicketConstants.TICKET_DATE_PATTERN); + } + if (value instanceof Date) { + value = DateUtil.format((Date) value, TicketConstants.TICKET_DATE_PATTERN); + } + + if (map.containsKey(field.getName())) { + return; + } + + //属性上是否加入DefaultValue注解 若加入 则判断是否定义属性名以及值 若未定义则取原属性名及值 + if (ObjectUtil.isNotEmpty(defaultValue)) { + result.put(StringUtil.isNoneBlank(defaultValue.name()) ? defaultValue.name() : field.getName(), + ObjectUtil.isNotEmpty(defaultValue.value()) ? defaultValue.value() : value); + } else { + if ("initialPrincipalName".equals(field.getName()) + || "principalChangeTime".equals(field.getName()) + || "principalName".equals(field.getName()) + || "jobReceiver".equals(field.getName()) + || "jobReceiverDateTime".equals(field.getName()) + || "watchPrincipalEndTime".equals(field.getName()) + || "licenseTime".equals(field.getName()) + || "licensorName".equals(field.getName()) + || "signerDateTime".equals(field.getName()) + || "classGroupName".equals(field.getName()) + || "code".equals(field.getName()) + || "signerName".equals(field.getName()) + || "watchPrincipalName".equals(field.getName())) + { + result.put(field.getName(), Optional.ofNullable(value).orElse("\u00A0 ")); + + } else if ( + "groundNum".equals(field.getName()) || + "dismantleNum".equals(field.getName()) || + "retainNum".equals(field.getName()) + + ) { + result.put(field.getName(), Optional.ofNullable(value).orElse("\u00A0 ")); + } else { + //如果导出word为null会出现{{ ,value设置"\u00A0" + result.put(field.getName(), Optional.ofNullable(value).orElse("\u00A0")); + } + + + } + }); + } + return result; + } + + /** * 读取本地pdf,这里设置的是预览 */ From 6218f64ec5da047fe4d6d1bef84df8d51f926912 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Fri, 26 May 2023 17:36:36 +0800 Subject: [PATCH 13/17] =?UTF-8?q?=E6=96=B0=E5=B7=A5=E4=BD=9C=E7=A5=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ticket/constants/WorkTicketConstants.java | 4 +- .../constant/TicketProcessConstant.java | 3 +- .../consumer/StandardWorkTicketConsumer.java | 1 + .../ticket/response/ProcessWorkFlowResponse.java | 3 + .../controller/TicketProcessController.java | 17 +- .../twoTicket/service/TicketProcessService.java | 7 - .../service/impl/TicketProcessServiceImpl.java | 266 +++++++++++++-------- .../ticket/twoTicket/vo/process/WorkTicketVo.java | 7 + .../service/impl/WorkTicketInfoServiceImpl.java | 97 +++++--- 9 files changed, 255 insertions(+), 150 deletions(-) diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/WorkTicketConstants.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/WorkTicketConstants.java index b602dc5..9fa55b4 100644 --- a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/WorkTicketConstants.java +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/constants/WorkTicketConstants.java @@ -19,7 +19,9 @@ public interface WorkTicketConstants { TWO("2","matterLibraryListTwo"), /**第三种安措**/ THREE("3","matterLibraryListThree"), - FOUR("4","matterLibraryListFour") + FOUR("4","matterLibraryListFour"), + Five("5","matterLibraryListFive"), + Flow("6","matterLibraryListFlow"), ; @Getter private String type; diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java index f37dcae..46a48bc 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/constant/TicketProcessConstant.java @@ -10,6 +10,5 @@ package com.hnac.hzims.ticket.processflow.constant; */ public class TicketProcessConstant { - // public final static String STARTEVENT = "startEvent1"; - public final static String STARTEVENT = "workTicket"; + public final static String STARTEVENT = "workTicketFlow"; } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/consumer/StandardWorkTicketConsumer.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/consumer/StandardWorkTicketConsumer.java index 5936bed..c11ac03 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/consumer/StandardWorkTicketConsumer.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/processflow/consumer/StandardWorkTicketConsumer.java @@ -48,6 +48,7 @@ public class StandardWorkTicketConsumer implements IQueueConsume { if (ObjectUtils.isNotEmpty(ticketService)) { //执行业务方法 try { + response.setNum(1); ticketService.calculate(response); } catch (Exception e) { e.printStackTrace(); diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java index 2071db4..d967681 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/response/ProcessWorkFlowResponse.java @@ -55,4 +55,7 @@ public class ProcessWorkFlowResponse implements Serializable { */ private String handleType; + + + private Integer num; } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java index 719404b..caf10e2 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketProcessController.java @@ -50,22 +50,7 @@ public class TicketProcessController { @PostMapping("/startUp") public R start(@RequestBody WorkTicketVo workTicketVo) { ticketProcessService.startUp(workTicketVo); - return R.success("启动流程成功"); - } - - - /** - * 预览 - * - * @param ticketType - * @param ticketId - */ - @GetMapping("/preview") - @ApiOperation(value = "预览") - @ApiOperationSupport(order = 11) - public R preview(@RequestParam @ApiParam("票据类型") String ticketType, @RequestParam @ApiParam("票据ID") Long ticketId) { - String preview = ticketProcessService.preview(ticketType, ticketId); - return R.data(preview); + return R.success("申请开票成功"); } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java index 6429eda..156e974 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/TicketProcessService.java @@ -27,13 +27,6 @@ public interface TicketProcessService { void findPending(ProcessWorkFlowResponse response); - /** - * 预览 - * @param ticketType - * @param ticketId - */ - String preview(String ticketType, Long ticketId); - /** * 新预览 diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java index f34a2f0..7ef6964 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java @@ -8,8 +8,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.NullSerializer; import com.hnac.hzims.common.logs.utils.StringUtils; import com.hnac.hzims.operational.access.entity.OperAccessTaskEntity; import com.hnac.hzims.operational.access.feign.IOperAccessTaskClient; @@ -22,9 +20,11 @@ import com.hnac.hzims.ticket.constants.TicketConstants; import com.hnac.hzims.ticket.constants.WorkTicketConstants; import com.hnac.hzims.ticket.processflow.strategy.core.ProcessIdWorker; import com.hnac.hzims.ticket.response.ProcessWorkFlowResponse; +import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger; import com.hnac.hzims.ticket.twoTicket.entity.WorkTicketFinish; import com.hnac.hzims.ticket.twoTicket.service.IFirstWorkTicketService; import com.hnac.hzims.ticket.twoTicket.service.IWorkTicketFinishService; +import com.hnac.hzims.ticket.twoTicket.service.TicketInfoDangerService; import com.hnac.hzims.ticket.twoTicket.service.TicketProcessService; import com.hnac.hzims.ticket.twoTicket.vo.process.FristWorkTicketVo; import com.hnac.hzims.ticket.twoTicket.vo.process.WorkTicketVo; @@ -34,14 +34,12 @@ import com.hnac.hzims.ticket.workTicket.entity.*; import com.hnac.hzims.ticket.workTicket.service.*; import com.hnac.hzims.ticket.workTicket.service.impl.WorkTicketDelayServiceImpl; import com.hnac.hzims.ticket.workTicket.service.impl.WorkTicketOperateTimeServiceImpl; -import io.swagger.annotations.ApiModelProperty; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -60,7 +58,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; import java.time.LocalDateTime; import java.util.*; @@ -136,6 +133,9 @@ public class TicketProcessServiceImpl implements TicketProcessService { private String templatePath; + private final TicketInfoDangerService ticketInfoDangerService; + + /** * 启动开票流程 * @@ -147,28 +147,28 @@ public class TicketProcessServiceImpl implements TicketProcessService { public void startUp(WorkTicketVo workTicketVo) { log.info("执行 com.hnac.hzims.ticket.twoTicket.service.impl【startUp】 。。。方法"); if (workTicketVo.getWorkTicket().getSignage() == null) { - throw new ServiceException("站点标识-两票编码不能为空"); + throw new ServiceException("站点编码不能为空"); } StationEntity stationEntity = new StationEntity(); stationEntity.setCode(workTicketVo.getWorkTicket().getSignageCode()); R stationClientOne = stationClient.getOne(stationEntity); if (!stationClientOne.isSuccess()) { - throw new IllegalArgumentException("根据条件获取唯一站点出错呢"); + throw new IllegalArgumentException("站点编码不能为空"); } StationEntity station = stationClientOne.getData(); if (station == null) { - throw new ServiceException("根据条件获取唯一站点暂无数据"); + throw new ServiceException("站点编码不能为空"); } log.info("前端查的站点编号 :{}", workTicketVo.getWorkTicket().getSignage()); log.info("后端查寻的站点编码 :{}", station.getSignage()); if (!workTicketVo.getWorkTicket().getSignage().equals(station.getSignage())) { - throw new ServiceException("站点标识-两票编码不能为空"); + throw new ServiceException("站点编码不能为空"); } //获取站点编号 String signage = station.getSignage(); if (StringUtils.isBlank(signage) || signage.length() < 2) { - throw new ServiceException("站点标识-两票编码不能为空"); + throw new ServiceException("站点编码不能为空"); } signage = signage.length() == 2 ? station.getSignage() : station.getSignage().substring(0, 2); @@ -219,14 +219,32 @@ public class TicketProcessServiceImpl implements TicketProcessService { WorkTicketInfoEntity workTicket = workTicketVo.getWorkTicket(); //2.流程处理 String businessKey = response.getBusinessKey(); - WorkTicketInfoEntity workTicketInfo = firstWorkTicketService.getById(businessKey); + WorkTicketInfoEntity workTicketInfo = ticketInfoService.getById(businessKey); if (ObjectUtils.isEmpty(workTicketInfo)) { log.error("获取工作票的数据为不存在"); + int num = response.getNum(); + while (true) { + if (num == 0) { + break; + } + try { + //睡眠2秒防止cpu飚高 + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + log.info("进入重试机制 {}", response); + num--; + response.setNum(num); + findPending(response); + } return; } //更新工作票 workTicket.setId(workTicketInfo.getId()); //保存流程描述 + workTicketInfo.setCreateDept(workTicketInfo.getCreateDept()); + workTicket.setTenantId(workTicketInfo.getTenantId()); saveWorkTicket(workTicket, response); //工作流ID workTicket.setProcessInstanceId(response.getProcessInstanceId()); @@ -335,6 +353,14 @@ public class TicketProcessServiceImpl implements TicketProcessService { e.printStackTrace(); } + + //工作票危险点分析及控制措施票 + if (workTicketInfo.getIsHazard()) { + List ticketInfoDangers = workTicketVo.getTicketInfoDangers(); + if (CollectionUtils.isNotEmpty(ticketInfoDangers)) { + ticketInfoDangerService.saveBatch(ticketInfoDangers); + } + } } @@ -346,27 +372,35 @@ public class TicketProcessServiceImpl implements TicketProcessService { */ private void saveWorkTicket(WorkTicketInfoEntity workTicket, ProcessWorkFlowResponse response) { String taskId = response.getTaskId(); + workTicket.setFlowTaskId(taskId); + workTicket.setFlowTaskName(response.getTaskName()); String nextStepOperator = response.getNextStepOperator(); - //1.获取状态 - Integer flowStatus = workTicket.getFlowStatus(); - //2.根据流程获取描述信息 - String description = getWorkTicketDescription(flowStatus); String flowDescription = ""; - //当前审批人 - String stepOperator = workTicket.getStepOperator(); + Integer flowStatus = workTicket.getFlowStatus(); if ("0".equals(response.getHandleType())) { Long taskUser = NumberUtils.createLong(nextStepOperator.startsWith("taskUser_") ? nextStepOperator.substring(9) : null); //下一个审批人 User stepUser = UserCache.getUser(taskUser); - flowDescription = - "审批中,当前环节是".concat(description).concat(",待").concat(stepUser.getName()).concat("审批"); + flowDescription = "审批中,当前环节是".concat(response.getTaskName()).concat(",待").concat(stepUser.getName()).concat("审批"); workTicket.setNextStepOperator(stepUser.getName()); } if ("1".equals(response.getHandleType())) { + System.out.println("获取角色信息" + response.getNextStepOperator()); - flowDescription = "审批中,当前环节是".concat(description).concat(",当前操作人是").concat(stepOperator); + //根据角色别名获取用户信息 + try { + R> roleAlias = userClient.relationUserListByRoleAlias(workTicket.getTenantId(), workTicket.getCreateDept(), response.getNextStepOperator()); + String collect = roleAlias.getData().stream().map(item -> item.getName()).collect(Collectors.joining(",")); + flowDescription = "审批中,当前环节是".concat(response.getTaskName()).concat(",待").concat(collect).concat("审批"); + workTicket.setNextStepOperator(collect); + } catch (Exception e) { + e.printStackTrace(); + log.error("R> roleAlias = userClient.userListByRoleAlias(workTicket.getTenantId(), response.getNextStepOperator())"); + log.error("获取用户信息失败"); + } + } //如果taskId为空 或 flowStatus = 99 if (StringUtils.isEmpty(taskId) || 99 == flowStatus) { @@ -378,9 +412,8 @@ public class TicketProcessServiceImpl implements TicketProcessService { workTicket.setStepOperator(null); } else { workTicket.setFlowDescription(flowDescription); - workTicket.setFlowTaskId(taskId); - workTicket.setFlowTaskName(response.getTaskName()); } + //如果下一个审批人【nextStepOperator】是null设为-1 if (StringUtils.isEmpty(nextStepOperator)) { workTicket.setNextStepOperator(null); @@ -398,8 +431,9 @@ public class TicketProcessServiceImpl implements TicketProcessService { String value = null; switch (flowStatus) { case 1: - value = "签发人签发"; + value = "许可人确认工作终结、工作票终结"; break; + case 2: value = "运行人接收"; break; @@ -491,8 +525,11 @@ public class TicketProcessServiceImpl implements TicketProcessService { log.info("processInstanceContainNameByKey.getData() : {}", processInstanceContainNameByKey.getData()); log.info("BladeFlow processInstanceContainNameByKey:{}", processInstanceContainNameByKey); if (!processInstanceContainNameByKey.isSuccess() && processInstanceContainNameByKey.getCode() == 500) { - throw new ServiceException("启动流程失败..."); + log.error("processInstanceContainNameByKey {}", processInstanceContainNameByKey.getMsg()); + throw new ServiceException("不好意思,您暂无权限..."); } + log.info("获取启动流程数据 : {}", processInstanceContainNameByKey); + } @@ -580,7 +617,8 @@ public class TicketProcessServiceImpl implements TicketProcessService { //班组成员 Long principal = workTicket.getPrincipal(); if (ObjectUtils.isNotEmpty(principal)) { - return UserCache.getUser(principal).getName(); + User user = UserCache.getUser(principal); + return user == null ? null : user.getName(); } return workTicket.getPrincipalManual(); } @@ -612,43 +650,6 @@ public class TicketProcessServiceImpl implements TicketProcessService { /** - * 预览 - * - * @param ticketType - * @param ticketId - */ - @SneakyThrows - @Override - public String preview(String ticketType, Long ticketId) { - WorkTicketVo workTicketVo = ticketInfoService.selectDetailsById(ticketId); - //将查询的数据转换为map - Map workTicketInfoMap = this.convertMap(workTicketVo); - String fileName = TicketConstants.WordFileNameEnum.getFileNameByType(ticketType) + PdfUtils.XLSX_SUFFIX; - log.info("工作票模板为:{}", fileName); - XWPFDocument doc = WordExportUtil.exportWord07("template/电气第一种工作票模版.docx", workTicketInfoMap); - FileOutputStream fos = null; - String name = null; - String os = System.getProperty("os.name"); - //Windows操作系统 - if (os != null && os.toLowerCase().startsWith("windows")) { - log.info("当前系统版本是:{}", os); - name = "D:/导出excel/电气第一种工作票模版.docx"; - fos = new FileOutputStream(name); - } else { - //其它操作系统 - log.info("当前系统版本是:{}", os); - String prefix = IdWorker.get32UUID(); - name = templatePath + prefix + ".docx"; - fos = new FileOutputStream(name); - } - - doc.write(fos); - fos.close(); - return name; - } - - - /** * 新预览 * * @param ticketId @@ -665,18 +666,15 @@ public class TicketProcessServiceImpl implements TicketProcessService { // response.addHeader("Pargam", "no-cache"); // response.addHeader("Cache-Control", "no-cache"); WorkTicketVo workTicketVo = ticketInfoService.selectDetailsById(ticketId); - log.info("新工作票 {}", workTicketVo); //将查询的数据转换为map Map workTicketInfoMap = this.convertMap(workTicketVo); //创建新的map - Map objectObjectHashMap = new HashMap<>(); for (Map.Entry stringObjectEntry : workTicketInfoMap.entrySet()) { - System.out.println("获取map : " + stringObjectEntry.getKey() + "=====>" + stringObjectEntry.getValue()); + log.info("获取map : " + stringObjectEntry.getKey() + "=====>" + stringObjectEntry.getValue()); } WorkTicketInfoEntity workTicket = workTicketVo.getWorkTicket(); - if ((workTicket.getIsSafety() == null && workTicket.getIsHazard() == null && workTicket.getIsLimited() == null && workTicket.getIsRailway() == null) - || (workTicket.getIsSafety() == null || workTicket.getIsHazard() == null || workTicket.getIsLimited() == null || workTicket.getIsRailway() == null)) { + if ((workTicket.getIsSafety() == null && workTicket.getIsHazard() == null && workTicket.getIsLimited() == null && workTicket.getIsRailway() == null) || (workTicket.getIsSafety() == null || workTicket.getIsHazard() == null || workTicket.getIsLimited() == null || workTicket.getIsRailway() == null)) { extractedWithWord(response, workTicketInfoMap); return; } @@ -737,16 +735,8 @@ public class TicketProcessServiceImpl implements TicketProcessService { Map result = new HashMap<>(); WorkTicketInfoEntity workTicket = workTicketVo.getWorkTicket(); - Map map1 = JSONObject.parseObject(JSONObject.toJSONString(workTicket), Map.class); - for (Map.Entry stringObjectEntry : map1.entrySet()) { - System.out.println("stringObjectEntry : " + stringObjectEntry.getKey() + "=====>" + stringObjectEntry.getValue()); - } - - //1. 工作对象 - // log.info("工作对象: {}", workTicket); - - Map workTicketInfoMap = PdfUtils.objectToMap(workTicket, true); + Map workTicketInfoMap = PdfUtils.objectToMapResult(workTicket, result); //安全隔离措施附页 (true,展示附件,false,不展示附件 getDataConversion(workTicketInfoMap, "isSafety", workTicketInfoMap.get("isSafety")); //危险点分析与预控措施票 (true,展示附件,false,不展示附件) @@ -755,18 +745,15 @@ public class TicketProcessServiceImpl implements TicketProcessService { getDataConversion(workTicketInfoMap, "isRailway", workTicketInfoMap.get("isRailway")); //有限空间监测记录单(true,展示附件,false,不展示附件) getDataConversion(workTicketInfoMap, "isLimited", workTicketInfoMap.get("isLimited")); - - - result.putAll(workTicketInfoMap); //2. 安全措施 List safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); log.info("安全措施: {}", safetyMeasuresList); if (CollectionUtils.isNotEmpty(safetyMeasuresList)) { + Map workTicketInfoMap1 = new HashMap<>(); Map> measureMap = safetyMeasuresList.stream().collect(Collectors.groupingBy(WorkTicketSafetyMeasureEntity::getType)); Arrays.stream(WorkTicketConstants.WorkTicketMeasureTypeEnum.class.getEnumConstants()).forEach(measureEnum -> { if (CollectionUtil.isNotEmpty(measureMap.get(measureEnum.getType()))) { - List> mapList = new ArrayList<>(); int tempIndex = 1, index = 1; List workTicketSafetyMeasureEntities = measureMap.get(measureEnum.getType()); @@ -785,20 +772,57 @@ public class TicketProcessServiceImpl implements TicketProcessService { mapList.add(map); index++; } - - workTicketInfoMap.put(measureEnum.getConvertAttributes(), mapList); + workTicketInfoMap1.put(measureEnum.getConvertAttributes(), mapList); } else { - workTicketInfoMap.put(measureEnum.getConvertAttributes(), new ArrayList>(1)); + workTicketInfoMap1.put(measureEnum.getConvertAttributes(), new ArrayList()); } }); - result.putAll(workTicketInfoMap); - } else { - result.put("matterLibraryListOne", new ArrayList<>()); - result.put("matterLibraryListTwo", new ArrayList<>()); - result.put("matterLibraryListThree", new ArrayList<>()); - result.put("matterLibraryListFour", new ArrayList<>()); + + // 工作地点保留带电部位或注意事项 + List> matterLibraryListFive1 = workTicketInfoMap1.get("matterLibraryListFive") == null ? new ArrayList>() : (List>) workTicketInfoMap1.get("matterLibraryListFive"); + List> matterLibraryListFlow1 = workTicketInfoMap1.get("matterLibraryListFlow") == null ? new ArrayList>() : (List>) workTicketInfoMap1.get("matterLibraryListFlow"); + + System.out.println("matterLibraryListFive1 = " + matterLibraryListFive1); + System.out.println("matterLibraryListFlow1 = " + matterLibraryListFlow1); + + if (matterLibraryListFive1 != null && matterLibraryListFlow1 != null) { + List> matterLibraryListFive = matterLibraryListFive1; + // (4)补充工作地点保留带电部位和补充安全措施 + List> matterLibraryListFlow = matterLibraryListFlow1; + + if (CollectionUtils.isNotEmpty(matterLibraryListFive) && CollectionUtils.isNotEmpty(matterLibraryListFlow)) { + if (matterLibraryListFive.size() < matterLibraryListFlow.size()) { + for (Map stringObjectMap : matterLibraryListFlow) { + matterLibraryListFive.add(new HashMap<>()); + } + } + + if (matterLibraryListFive.size() > matterLibraryListFlow.size()) { + for (Map stringObjectMap : matterLibraryListFive) { + matterLibraryListFlow.add(new HashMap<>()); + } + } + + workTicketInfoMap1.put("matterLibraryListFive", CollectionUtils.isEmpty(matterLibraryListFive) ? new ArrayList<>() : matterLibraryListFive); + workTicketInfoMap1.put("matterLibraryListFlow", CollectionUtils.isEmpty(matterLibraryListFlow) ? new ArrayList<>() : matterLibraryListFlow); + } + } + + + if (CollectionUtils.isEmpty(matterLibraryListFive1)) { + workTicketInfoMap1.put("matterLibraryListFive", new ArrayList<>()); + } + + + if (CollectionUtils.isEmpty(matterLibraryListFlow1)) { + workTicketInfoMap1.put("matterLibraryListFlow", new ArrayList<>()); + } + + + result.putAll(workTicketInfoMap1); } + //3. 工作票工作任务组 List workTicketContentDtoList = workTicketVo.getWorkTicketContentDtoList(); if (CollectionUtils.isNotEmpty(workTicketContentDtoList)) { @@ -809,26 +833,43 @@ public class TicketProcessServiceImpl implements TicketProcessService { WorkTicketDelayEntity workTicketDelay = workTicketVo.getWorkTicketDelay(); log.info("工作票延期: {}", workTicketDelay); if (ObjectUtils.isNotEmpty(workTicketDelay)) { - result.putAll(PdfUtils.objectToMap(workTicketDelay, true)); + result.putAll(PdfUtils.objectToMapResult(workTicket, result)); } else { - result.putAll(PdfUtils.objectToMap(new WorkTicketDelayEntity(), true)); + result.putAll(PdfUtils.objectToMapResult(new WorkTicketDelayEntity(), result)); } //5. 工作结束 WorkTicketFinish workTicketFinish = workTicketVo.getWorkTicketFinish(); log.info("工作结束: {}", workTicketFinish); if (ObjectUtils.isNotEmpty(workTicketFinish)) { - result.putAll(PdfUtils.objectToMap(workTicketFinish, true)); + result.putAll(PdfUtils.objectToMapResult(workTicketFinish, result)); } else { - result.putAll(PdfUtils.objectToMap(new WorkTicketFinish(), true)); + result.putAll(PdfUtils.objectToMapResult(new WorkTicketFinish(), result)); } //5. 工作票负责人变更 WorkTicketPrincipalChangeEntity workTicketPrincipalChange = workTicketVo.getWorkTicketPrincipalChange(); if (ObjectUtils.isNotEmpty(workTicketPrincipalChange)) { - result.putAll(PdfUtils.objectToMap(workTicketPrincipalChange, true)); + result.putAll(PdfUtils.objectToMapResult(workTicketPrincipalChange, result)); } else { - result.putAll(PdfUtils.objectToMap(new WorkTicketPrincipalChangeEntity(), true)); + result.putAll(PdfUtils.objectToMapResult(new WorkTicketPrincipalChangeEntity(), result)); + } + + //6. 工作票危险点分析及控制措施票 + List ticketInfoDangers = workTicketVo.getTicketInfoDangers(); + if (CollectionUtils.isNotEmpty(ticketInfoDangers)) { + Map>> map = new HashMap<>(); + int index = 1; + List> collect = ticketInfoDangers.stream().map(item -> { + Map newItem = new HashMap<>(); + newItem.put("index", index); + newItem.put("maintenance", item.getMaintenance()); + newItem.put("dangerousPoint", item.getDangerousPoint()); + return newItem; + }).collect(Collectors.toList()); + + map.put("ticketInfoDangers", collect); + result.putAll(map); } return result; } @@ -836,6 +877,41 @@ public class TicketProcessServiceImpl implements TicketProcessService { /** * 对象转map + * + * @param value + * @param result + * @return + */ + public Map getTicketObjectVo(Object value, Map result) { + String jsonString = JSON.toJSONString(value); + Map map = JSONObject.parseObject(jsonString, Map.class); + Map newMap = new HashMap<>(); + for (Map.Entry stringObjectEntry : map.entrySet()) { + System.out.println("没转换的数据 " + stringObjectEntry.getKey() + "=" + stringObjectEntry.getValue()); + + //如果包含直接跳过 + if (result.containsKey(stringObjectEntry.getKey())) { + System.out.println("跳过key : " + stringObjectEntry.getKey()); + continue; + } + + Object newValue = stringObjectEntry.getValue(); + if (newValue == null) { + newValue = "\u00A0"; + } + newMap.put(stringObjectEntry.getKey(), newValue); + + } + for (Map.Entry stringObjectEntry : newMap.entrySet()) { + System.out.println("数据转换的数据 " + stringObjectEntry.getKey() + "=" + stringObjectEntry.getValue()); + } + + return newMap; + } + + + /** + * 对象转map */ private static Map parseObjectMap(T target, Class clas) { return JSONObject.parseObject(JSONObject.toJSONString(target), Map.class); diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java index 45daa09..58da938 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/process/WorkTicketVo.java @@ -1,5 +1,6 @@ package com.hnac.hzims.ticket.twoTicket.vo.process; +import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger; import com.hnac.hzims.ticket.twoTicket.entity.WorkTicketFinish; import com.hnac.hzims.ticket.workTicket.entity.*; import io.swagger.annotations.ApiModel; @@ -79,4 +80,10 @@ public class WorkTicketVo { private String ticketType; + /** + * 工作票危险点分析及控制措施票 + */ + private List ticketInfoDangers; + + } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java index c0e3ad5..1da1885 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java @@ -25,8 +25,10 @@ import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardWorkVo; import com.hnac.hzims.ticket.aspect.AroundFlow; import com.hnac.hzims.ticket.constants.TicketConstants; +import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger; import com.hnac.hzims.ticket.twoTicket.entity.WorkTicketFinish; import com.hnac.hzims.ticket.twoTicket.enums.FlowWorkTicketConstants; +import com.hnac.hzims.ticket.twoTicket.service.TicketInfoDangerService; import com.hnac.hzims.ticket.twoTicket.service.impl.WorkTicketFinishServiceImpl; import com.hnac.hzims.ticket.twoTicket.vo.process.WorkTicketVo; import com.hnac.hzims.ticket.utils.ExcelUtil; @@ -105,6 +107,7 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl pages = this.page(Condition.getPage(query), lqw); //数据转换 - IPage workTicketInfoVOIPage = new Page<>(pages.getCurrent(),pages.getSize()); + IPage workTicketInfoVOIPage = new Page<>(pages.getCurrent(), pages.getSize()); workTicketInfoVOIPage.setRecords(WorkTicketInfoWrapper.build().listVO(pages.getRecords())); workTicketInfoVOIPage.setPages(pages.getPages()); workTicketInfoVOIPage.setTotal(pages.getTotal()); //获取创建人 workTicketInfoVOIPage.getRecords().forEach(item -> { - item.setCreateUserName(UserCache.getUser(item.getCreateUser()).getName()); + User user = UserCache.getUser(item.getCreateUser()); + if (user != null) { + item.setCreateUserName(UserCache.getUser(item.getCreateUser()).getName()); + } }); @@ -951,48 +957,75 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl " + classGroupMembers); - String[] split = classGroupMembers.split(","); + if (workTicketInfo.getWatchPrincipal() != null && workTicketInfo.getWatchPrincipalName() == null) { + User user = UserCache.getUser(workTicketInfo.getWatchPrincipal()); + workTicketInfo.setWatchPrincipalName(user == null ? null : user.getName()); + } + + StringBuilder sb = new StringBuilder(); - for (String classGroupMember : split) { - System.out.println(classGroupMember); - if (StringUtils.isNoneBlank(classGroupMember)) { - boolean matches = classGroupMember.matches("[0-9]+"); - if (matches) { - String name = UserCache.getUser(Long.valueOf(classGroupMember)).getName(); - // System.out.println("获取用户信息 ==> " + name); - sb.append(name).append(","); + String classGroupMembers = workTicketInfo.getClassGroupMembers(); + if (StringUtils.isNoneBlank(classGroupMembers)) { + // System.out.println("获取classGroupMembers ==> " + classGroupMembers); + String[] split = classGroupMembers.split(","); + for (String classGroupMember : split) { + System.out.println(classGroupMember); + if (StringUtils.isNoneBlank(classGroupMember)) { + boolean matches = classGroupMember.matches("[0-9]+"); + if (matches) { + User user = UserCache.getUser(Long.valueOf(classGroupMember)); + String name = user == null ? null : user.getName(); + if (StringUtils.isNotBlank(name)) { + sb.append(name).append(","); + } + } } } - } - //成员信息 - if (workTicketInfo.getClassGroupMembersName() == null) { - workTicketInfo.setClassGroupMembersName(sb.toString().endsWith(",") ? - sb.toString().substring(0,sb.length() - 1) : sb.toString()); - } - //统计人数 - if (workTicketInfo.getTotalPerson() == null) { - workTicketInfo.setTotalPerson(split.length); + //统计人数 + if (workTicketInfo.getTotalPerson() == null) { + workTicketInfo.setTotalPerson(sb.toString().trim().split(",").length); + } + + //成员信息 + if (workTicketInfo.getClassGroupMembersName() == null) { + workTicketInfo.setClassGroupMembersName(sb.toString().endsWith(",") ? + sb.toString().substring(0, sb.length() - 1) : sb.toString()); + } } + + //负责人名称 if (workTicketInfo.getPrincipalName() == null && workTicketInfo.getPrincipal() != null) { - workTicketInfo.setPrincipalName(UserCache.getUser(workTicketInfo.getPrincipal()).getName()); + User user = UserCache.getUser(workTicketInfo.getPrincipal()); + workTicketInfo.setPrincipalName(user == null ? "" : user.getName()); } @@ -1052,6 +1085,12 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl list = ticketInfoDangerService.selectAllByTicket(workTicketInfo.getId()); + if (CollectionUtils.isNotEmpty(list)) { + workTicketVo.setTicketInfoDangers(list); + } return workTicketVo; } } From d6be9a9da145ffd3109ddb0bc0f9fc2c5c938ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AE=B5=E9=A3=9E=E5=AE=87?= <2684146481@qq.com> Date: Mon, 29 May 2023 15:39:17 +0800 Subject: [PATCH 14/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workTicket/entity/WorkTicketInfoEntity.java | 4 +- .../service/impl/TicketProcessServiceImpl.java | 74 ++++++++++++++------- .../impl/WorkTicketPrincipalChangeServiceImpl.java | 2 +- .../ticket/src/main/resources/application.yml | 2 + .../template/电气第一种工作票模版.docx | Bin 42447 -> 42886 bytes 5 files changed, 56 insertions(+), 26 deletions(-) diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java index b0f4153..77e63a0 100644 --- a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/entity/WorkTicketInfoEntity.java @@ -446,7 +446,9 @@ public class WorkTicketInfoEntity extends TenantEntity implements Serializable { * 工作接收人时间 */ @ApiModelProperty("工作接收人时间") - private String jobReceiverDateTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime jobReceiverTime; /** diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java index 7ef6964..12eda49 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketProcessServiceImpl.java @@ -240,15 +240,19 @@ public class TicketProcessServiceImpl implements TicketProcessService { } return; } - //更新工作票 - workTicket.setId(workTicketInfo.getId()); - //保存流程描述 - workTicketInfo.setCreateDept(workTicketInfo.getCreateDept()); - workTicket.setTenantId(workTicketInfo.getTenantId()); - saveWorkTicket(workTicket, response); - //工作流ID - workTicket.setProcessInstanceId(response.getProcessInstanceId()); - workTicketInfoService.updateById(workTicket); + try { + //更新工作票 + workTicket.setId(workTicketInfo.getId()); + //保存流程描述 + workTicketInfo.setCreateDept(workTicketInfo.getCreateDept()); + workTicket.setTenantId(workTicketInfo.getTenantId()); + saveWorkTicket(workTicket, response); + //工作流ID + workTicket.setProcessInstanceId(response.getProcessInstanceId()); + workTicketInfoService.updateById(workTicket); + } catch (Exception e) { + e.printStackTrace(); + } //更新安全措施 List safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); if (CollectionUtils.isNotEmpty(safetyMeasuresList)) { @@ -287,9 +291,11 @@ public class TicketProcessServiceImpl implements TicketProcessService { workTicketDelay.setCreateDept(workTicketInfo.getCreateDept()); workTicketDelay.setTicketId(workTicketInfo.getId()); workTicketDelay.setTenantId(workTicketInfo.getTenantId()); - if (ObjectUtils.isEmpty(workTicketDelay.getId()) || ObjectUtils.isEmpty(workTicketDelayEntity)) { + if (ObjectUtils.isEmpty(workTicketDelayEntity)) { + log.info("正在保存工作票延期"); workTicketDelayService.save(workTicketDelay); } else { + log.info("正在更新工作票延期"); workTicketDelayService.updateByTicketId(workTicketDelay); } } @@ -338,9 +344,11 @@ public class TicketProcessServiceImpl implements TicketProcessService { WorkTicketPrincipalChangeEntity workTicketPrincipalChangeEntity = workTicketPrincipalChangeService.selectByTicketId(workTicket.getId()); - if (workTicketPrincipalChange.getId() == null || ObjectUtils.isEmpty(workTicketPrincipalChangeEntity)) { + if (ObjectUtils.isEmpty(workTicketPrincipalChangeEntity)) { + log.info("工作票负责人保存变更"); workTicketPrincipalChangeService.save(workTicketPrincipalChange); } else { + log.info("工作票负责人更新变更"); workTicketPrincipalChangeService.updateByTicketId(workTicketPrincipalChange); } log.info("工作负责人变更 原来的负责人 {},变更为 {}", user.getName(), newUser.getName()); @@ -355,11 +363,15 @@ public class TicketProcessServiceImpl implements TicketProcessService { //工作票危险点分析及控制措施票 - if (workTicketInfo.getIsHazard()) { - List ticketInfoDangers = workTicketVo.getTicketInfoDangers(); - if (CollectionUtils.isNotEmpty(ticketInfoDangers)) { - ticketInfoDangerService.saveBatch(ticketInfoDangers); + try { + if (workTicketInfo.getIsHazard()) { + List ticketInfoDangers = workTicketVo.getTicketInfoDangers(); + if (CollectionUtils.isNotEmpty(ticketInfoDangers)) { + ticketInfoDangerService.saveBatch(ticketInfoDangers); + } } + } catch (Exception e) { + e.printStackTrace(); } } @@ -380,15 +392,21 @@ public class TicketProcessServiceImpl implements TicketProcessService { if ("0".equals(response.getHandleType())) { Long taskUser = NumberUtils.createLong(nextStepOperator.startsWith("taskUser_") ? nextStepOperator.substring(9) : null); - //下一个审批人 - User stepUser = UserCache.getUser(taskUser); - flowDescription = "审批中,当前环节是".concat(response.getTaskName()).concat(",待").concat(stepUser.getName()).concat("审批"); - workTicket.setNextStepOperator(stepUser.getName()); + if (taskUser != null) { + //下一个审批人 + User stepUser = UserCache.getUser(taskUser); + if (stepUser != null) { + flowDescription = "审批中,当前环节是".concat(response.getTaskName()).concat(",待").concat(stepUser.getName()).concat("审批"); + workTicket.setNextStepOperator(stepUser.getName()); + } + }else { + workTicket.setNextStepOperator(null); + } } if ("1".equals(response.getHandleType())) { - System.out.println("获取角色信息" + response.getNextStepOperator()); + log.info("获取角色信息" + response.getNextStepOperator()); //根据角色别名获取用户信息 try { R> roleAlias = userClient.relationUserListByRoleAlias(workTicket.getTenantId(), workTicket.getCreateDept(), response.getNextStepOperator()); @@ -399,6 +417,7 @@ public class TicketProcessServiceImpl implements TicketProcessService { e.printStackTrace(); log.error("R> roleAlias = userClient.userListByRoleAlias(workTicket.getTenantId(), response.getNextStepOperator())"); log.error("获取用户信息失败"); + workTicket.setNextStepOperator(null); } } @@ -418,6 +437,9 @@ public class TicketProcessServiceImpl implements TicketProcessService { if (StringUtils.isEmpty(nextStepOperator)) { workTicket.setNextStepOperator(null); } + + + System.out.println("workTicket = " + workTicket); } @@ -599,6 +621,10 @@ public class TicketProcessServiceImpl implements TicketProcessService { workTicket.setStepOperator(UserCache.getUser(AuthUtil.getUserId()).getName()); //唯一 workTicket.setCreateUser(AuthUtil.getUserId()); + workTicket.setIsSafety(false); + workTicket.setIsHazard(false); + workTicket.setIsRailway(false); + workTicket.setIsLimited(false); boolean isSave = firstWorkTicketService.save(workTicket); if (!isSave) { throw new IllegalArgumentException("保存工作对象错误"); @@ -738,13 +764,13 @@ public class TicketProcessServiceImpl implements TicketProcessService { //1. 工作对象 Map workTicketInfoMap = PdfUtils.objectToMapResult(workTicket, result); //安全隔离措施附页 (true,展示附件,false,不展示附件 - getDataConversion(workTicketInfoMap, "isSafety", workTicketInfoMap.get("isSafety")); + this.getDataConversion(workTicketInfoMap, "isSafety", workTicketInfoMap.get("isSafety")); //危险点分析与预控措施票 (true,展示附件,false,不展示附件) - getDataConversion(workTicketInfoMap, "isHazard", workTicketInfoMap.get("isHazard")); + this.getDataConversion(workTicketInfoMap, "isHazard", workTicketInfoMap.get("isHazard")); //危险点分析与预控措施票 (true,展示附件,false,不展示附件) - getDataConversion(workTicketInfoMap, "isRailway", workTicketInfoMap.get("isRailway")); + this.getDataConversion(workTicketInfoMap, "isRailway", workTicketInfoMap.get("isRailway")); //有限空间监测记录单(true,展示附件,false,不展示附件) - getDataConversion(workTicketInfoMap, "isLimited", workTicketInfoMap.get("isLimited")); + this.getDataConversion(workTicketInfoMap, "isLimited", workTicketInfoMap.get("isLimited")); result.putAll(workTicketInfoMap); //2. 安全措施 List safetyMeasuresList = workTicketVo.getSafetyMeasuresList(); diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketPrincipalChangeServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketPrincipalChangeServiceImpl.java index 893b07d..8e6059e 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketPrincipalChangeServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketPrincipalChangeServiceImpl.java @@ -101,7 +101,7 @@ public class WorkTicketPrincipalChangeServiceImpl extends BaseServiceImpl&0F5gv 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 IuNHtL0pN+L#sB~S From babb1b81981367a1b2e8e454bebea8c294fcd539 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Tue, 30 May 2023 10:01:32 +0800 Subject: [PATCH 15/17] =?UTF-8?q?#bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hzims-service/operational/pom.xml | 4 ++-- .../operational/main/service/impl/AppHomeServiceImpl.java | 3 +++ .../main/service/impl/HydropowerServiceImpl.java | 15 ++++++++++++--- .../main/service/impl/SideHustleServiceImpl.java | 15 +++++++++------ 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/hzims-service/operational/pom.xml b/hzims-service/operational/pom.xml index 08f941d..e9dd242 100644 --- a/hzims-service/operational/pom.xml +++ b/hzims-service/operational/pom.xml @@ -100,8 +100,8 @@ org.apache.poi - ooxml-schemas - 1.4 + poi-ooxml-schemas + 3.15 org.jfree diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java index fd93f5f..b7882fc 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AppHomeServiceImpl.java @@ -567,9 +567,12 @@ public class AppHomeServiceImpl implements IAppHomeService { item.setClassMember(classMember); } + + /** * 获取下一班组数据 * @param item + * * @param id */ private void getNextDuty(AppAreaDutyVo item, Long id) { diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java index 2717ab6..a6bed57 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java @@ -118,6 +118,8 @@ public class HydropowerServiceImpl implements HydropowerService { private final static String load_hydropower_unit_target_key = "hzims:operation:loadhydropowerunit:target:key"; private final static String loadwater_level_key = "hzims:operation:loadwater:level:key"; + private final static String loadwater_group_key = "hzims:operation:group:key"; + private final static int POOL_QUANTITY = 4; private final static int DUTY_POOL_QUANTITY = 5; @@ -1146,11 +1148,11 @@ public class HydropowerServiceImpl implements HydropowerService { if(Math.abs(generate_sum) > 0){ return scales.stream().peek(scale-> scale.setAreaMakeUp(BigDecimal.valueOf(scale.getPowerYear() / generate_sum * 100).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue())). filter(scale-> Math.abs(scale.getCapacityUse()) > 0 || Math.abs(scale.getAreaMakeUp()) > 0 - && Math.abs(scale.getDeviceUse()) > 0 || Math.abs(scale.getGenerationRate()) > 0) + || Math.abs(scale.getDeviceUse()) > 0 || Math.abs(scale.getGenerationRate()) > 0) .sorted(Comparator.comparing(AreaScaleVo::getPowerYear).reversed()).collect(Collectors.toList()); } return scales.stream().peek(scale-> scale.setAreaMakeUp(0.0)).filter(scale-> Math.abs(scale.getCapacityUse()) > 0 || Math.abs(scale.getAreaMakeUp()) > 0 - && Math.abs(scale.getDeviceUse()) > 0 || Math.abs(scale.getGenerationRate()) > 0) + || Math.abs(scale.getDeviceUse()) > 0 || Math.abs(scale.getGenerationRate()) > 0) .sorted(Comparator.comparing(AreaScaleVo::getPowerYear).reversed()).collect(Collectors.toList()); } @@ -1234,6 +1236,10 @@ public class HydropowerServiceImpl implements HydropowerService { */ @Override public List group(Long deptId) { + List gourps = (List) redisTemplate.opsForValue().get(loadwater_group_key + deptId); + if(CollectionUtil.isNotEmpty(gourps)){ + return gourps; + } Map> areas = areaService.areaOrStaion(deptId,Collections.singletonList(HomePageConstant.HYDROPOWER)); if(MapUtils.isEmpty(areas)) { return new ArrayList<>(); @@ -1252,7 +1258,7 @@ public class HydropowerServiceImpl implements HydropowerService { areas.forEach((key,value)-> codes.addAll(value.stream().map(StationEntity::getCode).collect(Collectors.toList()))); // 计划发电量 List plans = planGenertionClient.getPlanGenerationByParam(codes,null,String.valueOf(Calendar.getInstance().get(Calendar.YEAR))); - return areas.entrySet().stream().map(entry->{ + List hydropowerAreas = areas.entrySet().stream().map(entry->{ HydropowerAreaVo area = new HydropowerAreaVo(); area.setDeptId(entry.getKey().getId()); area.setDeptName(entry.getKey().getDeptName()); @@ -1275,6 +1281,9 @@ public class HydropowerServiceImpl implements HydropowerService { area.setStationTargets(this.stationTarget(entry.getValue(),reals,targets,plans)); return area; }).sorted(Comparator.comparing(HydropowerAreaVo::getReality)).collect(Collectors.toList()); + redisTemplate.opsForValue().set(loadwater_group_key,hydropowerAreas); + redisTemplate.expire(loadwater_group_key,5, TimeUnit.MINUTES); + return hydropowerAreas; } /** diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java index 0f13bc3..7d58740 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/SideHustleServiceImpl.java @@ -344,20 +344,23 @@ public class SideHustleServiceImpl implements ISideHustleService { return runDeviceList.stream().map(o ->{ Map points = o.getPoint(); if(CollectionUtil.isEmpty(points)){ - return ""; + return "0"; } String realId = points.get(HomePageConstant.JOINT_RELAY); - if(StringUtil.isBlank(realId)){ - return ""; + if(StringUtil.isEmpty(realId)){ + return "0"; + } + if(MapUtils.isEmpty(realMap)){ + return "0"; } String value = realMap.get(realId); - if(StringUtil.isBlank(value)){ - return ""; + if(StringUtil.isEmpty(value)){ + return "0"; } if (value.contains("1") || "1.0".equals(value)) { return o.getEmCode(); } - return ""; + return "0"; }).distinct().collect(Collectors.toList()); } From 3172a4ec4048ba0fbd8792e96f79d67f70e03573 Mon Sep 17 00:00:00 2001 From: yang_shj <1069818635@QQ.com> Date: Wed, 31 May 2023 08:52:29 +0800 Subject: [PATCH 16/17] =?UTF-8?q?#=E8=BF=9B=E8=A1=8C=E4=BA=91=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=9A=84=E7=AB=99=E7=82=B9=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/operational/main/service/impl/HydropowerServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java index a6bed57..8a6cb12 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java @@ -133,7 +133,7 @@ public class HydropowerServiceImpl implements HydropowerService { public void loadHydropowerReal(String param) { // 水电站站点 List stations = stationService.list(Wrappers.lambdaQuery() - .eq(StationEntity::getServeType,HomePageConstant.HYDROPOWER_SERVETYPE) + //.eq(StationEntity::getServeType,HomePageConstant.HYDROPOWER_SERVETYPE) .eq(StationEntity::getType,HomePageConstant.HYDROPOWER) ); if(CollectionUtil.isEmpty(stations)){ @@ -191,7 +191,7 @@ public class HydropowerServiceImpl implements HydropowerService { public void loadHydropowerTarget(String param) { // 水电站站点 List stations = stationService.list(Wrappers.lambdaQuery() - .eq(StationEntity::getServeType,HomePageConstant.HYDROPOWER_SERVETYPE) + //.eq(StationEntity::getServeType,HomePageConstant.HYDROPOWER_SERVETYPE) .eq(StationEntity::getType,HomePageConstant.HYDROPOWER) ); if(CollectionUtil.isEmpty(stations)){ From e69dd1dc6d1c0493e58a2258a633393b5b92718e Mon Sep 17 00:00:00 2001 From: tyty Date: Wed, 31 May 2023 10:04:13 +0800 Subject: [PATCH 17/17] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E8=AF=8A=E6=96=AD=E9=80=BB=E8=BE=91=EF=BC=8C=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E6=95=B0=E6=8D=AE=E7=9A=84=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/fdp/controller/FdpMonitorController.java | 4 +- .../hnac/hzims/fdp/request/DiagnoseFaultReq.java | 3 +- .../com/hnac/hzims/fdp/scheduled/ThreadTask.java | 39 ++++++++++----- .../hnac/hzims/fdp/service/IFdpMonitorService.java | 3 +- .../fdp/service/impl/FdpMonitorServiceImpl.java | 58 +++++++++++----------- .../hzims/fdp/service/impl/FdpTaskServiceImpl.java | 8 +-- 6 files changed, 60 insertions(+), 55 deletions(-) diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/controller/FdpMonitorController.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/controller/FdpMonitorController.java index e0f78b8..2cf138e 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/controller/FdpMonitorController.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/controller/FdpMonitorController.java @@ -22,7 +22,6 @@ import com.hnac.hzims.monitor.dto.FdpMonitorBindingDTO; import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeInstanceFieldVO; import io.swagger.annotations.*; import lombok.AllArgsConstructor; -import org.apache.ibatis.annotations.Param; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.log.annotation.ApiLog; import org.springblade.core.mp.support.Condition; @@ -274,7 +273,8 @@ public class FdpMonitorController extends BladeController { @ApiOperationSupport(order = 180) @ApiOperation(value = "获取实时、历史数据返回生成ID-旧版") public R getRealTimeHisData(@RequestBody FdpTaskDTO taskDTO){ - return service.getRealTimeHisData(taskDTO); +// return service.getRealTimeHisData(taskDTO); + return R.fail("此端口弃用,请访问新的接口"); } @PostMapping("/updateFaultStateAll/getRealTimeHisDataNew") diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/request/DiagnoseFaultReq.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/request/DiagnoseFaultReq.java index 2dd8825..d215ec5 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/request/DiagnoseFaultReq.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/request/DiagnoseFaultReq.java @@ -1,7 +1,6 @@ package com.hnac.hzims.fdp.request; import com.alibaba.fastjson.annotation.JSONField; -import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -24,7 +23,7 @@ public class DiagnoseFaultReq implements Serializable { @ApiModelProperty(value = "故障可信度 人工诊断点击或者人工发现时,该故障的状态,发生为1,不发生为0。不确认发生或没发生时填入0-1之间的值。", required = true) @JSONField(name = "confidence") - private Double status; + private Double confidence; @ApiModelProperty("是否有效") @JSONField(name = "is_deleted") diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/scheduled/ThreadTask.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/scheduled/ThreadTask.java index 1c1a221..f70139a 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/scheduled/ThreadTask.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/scheduled/ThreadTask.java @@ -13,7 +13,6 @@ import com.hnac.hzims.fdp.response.DiagnoseNextstepResp; import com.hnac.hzims.fdp.service.IFdpFaultService; import com.hnac.hzims.fdp.util.HttpRequestUtil; import com.hnac.hzims.fdp.vo.FdpHttpResponseVo; -import com.hnac.hzims.fdp.vo.FdpRealTimeAndHisDataVo; import lombok.extern.slf4j.Slf4j; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -50,13 +49,13 @@ public class ThreadTask { //诊断 - public static void fdpTask(FdpTaskDTO taskDTO, FdpFaultEntity fdpFaultEntity, FdpRealTimeAndHisDataVo vo, String key) { + public static void fdpTask(FdpTaskDTO taskDTO, FdpFaultEntity fdpFaultEntity, String key) { try { Runnable runnable = new Runnable() { @Override public void run() { //异步任务 - updateFaultState(taskDTO, fdpFaultEntity, vo, key); + updateFaultState(taskDTO, fdpFaultEntity, key); } }; Thread thread = new Thread(runnable); @@ -84,6 +83,24 @@ public class ThreadTask { // } // } + + + //诊断 + public static void fdpTaskNew(FdpTaskDTO taskDTO, FdpFaultEntity fdpFaultEntity, String key) { + try { + Runnable runnable = new Runnable() { + @Override + public void run() { + //异步任务 + updateFaultStateNew(taskDTO, fdpFaultEntity, key); + } + }; + Thread thread = new Thread(runnable); + thread.start(); + } catch (Exception e) { + log.error(e.getMessage(), e.toString()); + } + } // 声明对象 public static ThreadTask threadTask; @@ -102,20 +119,18 @@ public class ThreadTask { /** * 修改诊断状态 - * - * @param vo * @param key */ - private static void updateFaultState(FdpTaskDTO req, FdpFaultEntity fdpFaultEntity, FdpRealTimeAndHisDataVo vo, String key) { + private static void updateFaultState(FdpTaskDTO req, FdpFaultEntity fdpFaultEntity, String key) { /**更新故障状态**/ DiagnoseFaultAllReq faultAllReq = new DiagnoseFaultAllReq(); - faultAllReq.setAutoData(vo); +// faultAllReq.setAutoData(vo); faultAllReq.setStationId(fdpFaultEntity.getStationId()); DiagnoseFaultReq diagnoseFaultReq = new DiagnoseFaultReq(); diagnoseFaultReq.setTaskId(req.getId().toString()); diagnoseFaultReq.setFaultId(req.getFaultId()); - diagnoseFaultReq.setStatus(1.0); + diagnoseFaultReq.setConfidence(1.0); diagnoseFaultReq.setLifeTime(1); diagnoseFaultReq.setPriority(2); diagnoseFaultReq.setTenantId(fdpFaultEntity.getStationId()); @@ -181,20 +196,18 @@ public class ThreadTask { /** * 修改诊断状态 - * - * @param vo * @param key */ - private static void updateFaultStateNew(FdpTaskDTO req, FdpFaultEntity fdpFaultEntity, FdpRealTimeAndHisDataVo vo, String key) { + private static void updateFaultStateNew(FdpTaskDTO req, FdpFaultEntity fdpFaultEntity, String key) { /**更新故障状态**/ DiagnoseFaultAllReq faultAllReq = new DiagnoseFaultAllReq(); - faultAllReq.setAutoData(vo); +// faultAllReq.setAutoData(vo); faultAllReq.setStationId(fdpFaultEntity.getStationId()); DiagnoseFaultReq diagnoseFaultReq = new DiagnoseFaultReq(); diagnoseFaultReq.setTaskId(req.getId().toString()); diagnoseFaultReq.setFaultId(req.getFaultId()); - diagnoseFaultReq.setStatus(1.0); + diagnoseFaultReq.setConfidence(1.0); diagnoseFaultReq.setLifeTime(1); diagnoseFaultReq.setPriority(2); diagnoseFaultReq.setTenantId(fdpFaultEntity.getStationId()); diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/IFdpMonitorService.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/IFdpMonitorService.java index 95d8f2f..e36e698 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/IFdpMonitorService.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/IFdpMonitorService.java @@ -1,6 +1,5 @@ package com.hnac.hzims.fdp.service; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.hnac.hzims.fdp.dto.FdpMonitorDTO; import com.hnac.hzims.fdp.dto.FdpMonitorExtendDTO; @@ -148,7 +147,7 @@ public interface IFdpMonitorService extends BaseService { R updateFaultState(@RequestBody DiagnoseFaultReq diagnoseFaultReq); - R getRealTimeHisData(@RequestBody FdpTaskDTO taskDTO); +// R getRealTimeHisData(@RequestBody FdpTaskDTO taskDTO); R getRealTimeHisDataNew(@RequestBody FdpTaskDTO taskDTO); diff --git a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/impl/FdpMonitorServiceImpl.java b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/impl/FdpMonitorServiceImpl.java index 4bcb9c1..80df684 100644 --- a/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/impl/FdpMonitorServiceImpl.java +++ b/hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/service/impl/FdpMonitorServiceImpl.java @@ -418,32 +418,32 @@ public class FdpMonitorServiceImpl extends BaseServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(FdpFaultEntity::getFdpId, taskDTO.getFaultId()).last("limit 1"); - FdpFaultEntity fdpFaultEntity = fdpFaultService.getOne(wrapper); - if (ObjectUtil.isEmpty(fdpFaultEntity)) { - throw new ServiceException("获取对应故障对象失败"); - } - /**获取实时、历史数据**/ - FdpRealTimeAndHisDataVo pushResp = this.dataPushByPartition(fdpFaultEntity.getFdpPartition(), fdpFaultEntity.getCreateDept()); - - - //String key = UUID.randomUUID().toString(); - boolean flag = fdpTaskService.save(taskDTO); - if (!flag) { - return R.fail("诊断任务保存失败"); - } - String key = taskDTO.getId().toString(); - //异步处理 - ThreadTask.fdpTask(taskDTO, fdpFaultEntity, pushResp, key); - //获取数据成功-》 告知前端 - Map map = new HashMap<>(); - map.put("id", key); - return R.data(map); - } +// @Override +// public R getRealTimeHisData(FdpTaskDTO taskDTO) { +// /**获取故障对象**/ +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(FdpFaultEntity::getFdpId, taskDTO.getFaultId()).last("limit 1"); +// FdpFaultEntity fdpFaultEntity = fdpFaultService.getOne(wrapper); +// if (ObjectUtil.isEmpty(fdpFaultEntity)) { +// throw new ServiceException("获取对应故障对象失败"); +// } +// /**获取实时、历史数据**/ +// FdpRealTimeAndHisDataVo pushResp = this.dataPushByPartition(fdpFaultEntity.getFdpPartition(), fdpFaultEntity.getCreateDept()); +// +// +// //String key = UUID.randomUUID().toString(); +// boolean flag = fdpTaskService.save(taskDTO); +// if (!flag) { +// return R.fail("诊断任务保存失败"); +// } +// String key = taskDTO.getId().toString(); +// //异步处理 +// ThreadTask.fdpTask(taskDTO, fdpFaultEntity, pushResp, key); +// //获取数据成功-》 告知前端 +// Map map = new HashMap<>(); +// map.put("id", key); +// return R.data(map); +// } @Override public R getRealTimeHisDataNew(FdpTaskDTO taskDTO) { @@ -456,14 +456,14 @@ public class FdpMonitorServiceImpl extends BaseServiceImpl map = new HashMap<>(); map.put("id", key); @@ -582,7 +582,7 @@ public class FdpMonitorServiceImpl extends BaseServiceImpl