From 1d0a93fe7d6a7e539ac32f957d4b1c6bace52fae Mon Sep 17 00:00:00 2001 From: liwen Date: Sat, 27 Jan 2024 08:39:07 +0800 Subject: [PATCH 1/7] =?UTF-8?q?update:=20=E5=9F=B9=E8=AE=AD=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hnac/hzims/safeproduct/entity/TestEntity.java | 3 ++ .../hzims/safeproduct/enums/TestMethodEnum.java | 31 +++++++++++++++++++++ .../safeproduct/controller/TrainController.java | 14 ++++++---- .../hnac/hzims/safeproduct/mapper/TestMapper.java | 10 +++++++ .../hnac/hzims/safeproduct/mapper/TestMapper.xml | 23 +++++++++++++++ .../safeproduct/mapper/TrainRecordMapper.java | 10 +++++++ .../hzims/safeproduct/mapper/TrainRecordMapper.xml | 20 +++++++++++++ .../hzims/safeproduct/service/ITestService.java | 11 ++++++++ .../safeproduct/service/ITrainRecordService.java | 11 ++++++++ .../safeproduct/service/impl/TestServiceImpl.java | 13 +++++++++ .../service/impl/TrainRecordServiceImpl.java | 12 ++++++++ .../main/resources/template/培训记录表.docx | Bin 11871 -> 11997 bytes 12 files changed, 152 insertions(+), 6 deletions(-) create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TestMethodEnum.java diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TestEntity.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TestEntity.java index 0736f88..354920b 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TestEntity.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/TestEntity.java @@ -74,4 +74,7 @@ public class TestEntity extends BaseEntity { @Size(max = 1000, message = "考试附件字段长度不能超过1000") @ApiModelProperty("考试附件") private String filePath; + + @ApiModelProperty("考试方式") + private String testMethod; } diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TestMethodEnum.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TestMethodEnum.java new file mode 100644 index 0000000..0e39487 --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/enums/TestMethodEnum.java @@ -0,0 +1,31 @@ +package com.hnac.hzims.safeproduct.enums; + +/** + * 考试方式枚举类 + * + * @author liwen + * @date 2024-01-25 + */ +public enum TestMethodEnum { + + ONLINE("ONLINE", "线上"), + OFFLINE("OFFLINE", "线下"), + MIXED("MIXED", "线上+线下"); + + private final String value; + + private final String desc; + + TestMethodEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } + + public String getValue() { + return value; + } + + public String getDesc() { + return desc; + } +} diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java index 28b8043..8bbf0ea 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/TrainController.java @@ -124,13 +124,14 @@ public class TrainController extends BladeController { @GetMapping("/trainRecordPage") @ApiImplicitParams({ - @ApiImplicitParam(name = "trainPlanId", value = "培训计划id", dataType = "query", paramType = "string") + @ApiImplicitParam(name = "trainPlanId", value = "培训计划id", dataType = "query", paramType = "string"), + @ApiImplicitParam(name = "startTime", value = "计划开始时间", dataType = "query", paramType = "string"), + @ApiImplicitParam(name = "endTime", value = "计划结束时间", dataType = "query", paramType = "string") }) @ApiOperation(value = "培训记录分页") @ApiOperationSupport(order = 10) public R> trainRecordPage(@ApiIgnore @RequestParam Map param, Query query) { - IPage page = trainRecordService.page(Condition.getPage(query), Condition.getQueryWrapper( - param, TrainRecordEntity.class).lambda().orderByDesc(TrainRecordEntity::getCreateTime)); + IPage page = trainRecordService.trainRecordPage(param, query); return R.data(page); } @@ -173,13 +174,14 @@ public class TrainController extends BladeController { @GetMapping("/testPage") @ApiImplicitParams({ @ApiImplicitParam(name = "trainPlanId", value = "培训计划id", dataType = "query", paramType = "string"), - @ApiImplicitParam(name = "trainRecordId", value = "培训记录id", dataType = "query", paramType = "string") + @ApiImplicitParam(name = "trainRecordId", value = "培训记录id", dataType = "query", paramType = "string"), + @ApiImplicitParam(name = "testName", value = "考试名称", dataType = "query", paramType = "string"), + @ApiImplicitParam(name = "unit", value = "单位", dataType = "query", paramType = "string") }) @ApiOperation(value = "考试记录分页") @ApiOperationSupport(order = 16) public R> testPage(@ApiIgnore @RequestParam Map param, Query query) { - IPage page = testService.page(Condition.getPage(query), Condition.getQueryWrapper(param, TestEntity.class) - .lambda().orderByDesc(TestEntity::getCreateTime)); + IPage page = testService.testPage(param, query); return R.data(page); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.java index 6d65b66..9441e30 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.java @@ -1,11 +1,13 @@ package com.hnac.hzims.safeproduct.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.hnac.hzims.safeproduct.dto.TestDTO; import com.hnac.hzims.safeproduct.entity.TestEntity; import org.apache.ibatis.annotations.Mapper; import java.util.List; +import java.util.Map; /** * 考试记录Mapper类 @@ -22,4 +24,12 @@ public interface TestMapper extends BaseMapper { * @return 考试记录名称列表 */ List getTestNameList(String trainPlanId); + + /** + * 考试记录分页 + * @param param 入参 + * @param page 分页类 + * @return 考试记录数据 + */ + IPage testPage(IPage page, Map param); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.xml index 7b1556d..65649d1 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TestMapper.xml @@ -15,4 +15,27 @@ ORDER BY create_time DESC + + \ No newline at end of file diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java index a268688..5586ec0 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.java @@ -1,12 +1,14 @@ package com.hnac.hzims.safeproduct.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.hnac.hzims.safeproduct.dto.TrainRecordDTO; import com.hnac.hzims.safeproduct.entity.TrainRecordEntity; import com.hnac.hzims.safeproduct.vo.TrainRecordDetailVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; +import java.util.Map; /** * 培训记录Mapper类 @@ -30,4 +32,12 @@ public interface TrainRecordMapper extends BaseMapper { * @return 培训记录表VO类 */ TrainRecordDetailVO getTrainRecordDetailById(Long id); + + /** + * 培训记录分页 + * @param param 入参 + * @param page 分页类 + * @return 培训记录数据 + */ + IPage trainRecordPage(IPage page, Map param); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml index e4f15af..b4052fe 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/TrainRecordMapper.xml @@ -27,4 +27,24 @@ t1.is_deleted = 0 AND t1.id = #{id} + + \ No newline at end of file diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestService.java index 83eeeeb..4a59b6e 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITestService.java @@ -1,11 +1,14 @@ package com.hnac.hzims.safeproduct.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.hnac.hzims.safeproduct.dto.TestDTO; import com.hnac.hzims.safeproduct.entity.TestEntity; +import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import java.util.List; +import java.util.Map; /** * 考试记录服务类 @@ -63,4 +66,12 @@ public interface ITestService extends IService { * @return true-成功,false-失败 */ boolean updateTest(TestEntity testEntity); + + /** + * 考试记录分页 + * @param param 入参 + * @param query 分页类 + * @return 考试记录数据 + */ + IPage testPage(Map param, Query query); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java index 13d443a..57d5d62 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/ITrainRecordService.java @@ -1,12 +1,15 @@ package com.hnac.hzims.safeproduct.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.hnac.hzims.safeproduct.dto.TrainRecordDTO; import com.hnac.hzims.safeproduct.entity.TrainRecordEntity; import com.hnac.hzims.safeproduct.vo.TrainRecordDetailVO; +import org.springblade.core.mp.support.Query; import javax.servlet.http.HttpServletResponse; import java.util.List; +import java.util.Map; /** * 培训记录服务类 @@ -64,4 +67,12 @@ public interface ITrainRecordService extends IService { * @return 培训记录表VO类 */ TrainRecordDetailVO getTrainRecordDetailById(Long id); + + /** + * 培训记录分页 + * @param param 入参 + * @param query 分页类 + * @return 培训记录数据 + */ + IPage trainRecordPage(Map param, Query query); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TestServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TestServiceImpl.java index 5573afa..c40c905 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TestServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TestServiceImpl.java @@ -3,6 +3,8 @@ package com.hnac.hzims.safeproduct.service.impl; import cn.hutool.core.date.DatePattern; import com.alibaba.excel.util.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hnac.hzims.safeproduct.constants.SafeProductConstant; import com.hnac.hzims.safeproduct.dto.TestDTO; @@ -14,6 +16,7 @@ import com.hnac.hzims.safeproduct.mapper.TrainPlanMapper; import com.hnac.hzims.safeproduct.service.ITestScoreService; import com.hnac.hzims.safeproduct.service.ITestService; import com.hnac.hzims.safeproduct.utils.BaseUtil; +import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -23,6 +26,7 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -175,6 +179,15 @@ public class TestServiceImpl extends ServiceImpl impleme } /** + * 考试记录分页 + */ + @Override + public IPage testPage(Map param, Query query) { + IPage page = new Page<>(query.getCurrent(), query.getSize()); + return baseMapper.testPage(page, param); + } + + /** * 获取成绩列表 * @param testEntity 考试记录实体类 * @param person 参考人员 diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java index a065735..8311679 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/TrainRecordServiceImpl.java @@ -4,6 +4,8 @@ import cn.afterturn.easypoi.entity.ImageEntity; import cn.hutool.core.date.DatePattern; import com.alibaba.excel.util.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hnac.hzims.common.logs.utils.StringUtils; import com.hnac.hzims.safeproduct.constants.SafeProductConstant; @@ -18,6 +20,7 @@ import com.hnac.hzims.safeproduct.service.ITestService; import com.hnac.hzims.safeproduct.service.ITrainRecordService; import com.hnac.hzims.safeproduct.utils.BaseUtil; import com.hnac.hzims.safeproduct.vo.TrainRecordDetailVO; +import org.springblade.core.mp.support.Query; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -180,6 +183,15 @@ public class TrainRecordServiceImpl extends ServiceImpl trainRecordPage(Map param, Query query) { + IPage page = new Page<>(query.getCurrent(), query.getSize()); + return baseMapper.trainRecordPage(page, param); + } + + /** * 查询是否存在同月编号 * @param currentMonth 当月 * @return 存在则返回上一编号,否则返回null diff --git a/hzims-service/safeproduct/src/main/resources/template/培训记录表.docx b/hzims-service/safeproduct/src/main/resources/template/培训记录表.docx index 803c5329fb305527c241bb1800dee99359a991af..371a227dd3b90e7dd1775ca22e4ee7266dbda9c5 100644 GIT binary patch delta 5018 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 YyfVO6b%7 delta 4907 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 From 7da149379dafffe6c8133ee5d7fc4d4ae9f22dd1 Mon Sep 17 00:00:00 2001 From: liwen Date: Sat, 27 Jan 2024 08:39:48 +0800 Subject: [PATCH 2/7] =?UTF-8?q?update:=20=E8=BD=A6=E8=BE=86=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hnac/hzims/safeproduct/vo/CarMilesYearVO.java | 17 +++++++++++++++++ .../main/resources/template/车辆检查表.docx | Bin 11806 -> 11851 bytes .../resources/template/车辆维保记录单.docx | Bin 11974 -> 12112 bytes 3 files changed, 17 insertions(+) diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarMilesYearVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarMilesYearVO.java index 492587d..c73f78e 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarMilesYearVO.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/CarMilesYearVO.java @@ -1,5 +1,6 @@ package com.hnac.hzims.safeproduct.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -14,51 +15,67 @@ import java.math.BigDecimal; @ApiModel(value = "年度里程数据VO类") public class CarMilesYearVO { + @ExcelProperty(value = "单位", order = 0) @ApiModelProperty("单位") private String unit; + @ExcelProperty(value = "品牌", order = 2) @ApiModelProperty("品牌") private String carBrand; + @ExcelProperty(value = "车牌号", order = 1) @ApiModelProperty("车牌号") private String plateNumber; + @ExcelProperty(value = "1月", order = 3) @ApiModelProperty("1月里程数") private BigDecimal januaryMiles; + @ExcelProperty(value = "2月", order = 4) @ApiModelProperty("2月里程数") private BigDecimal februaryMiles; + @ExcelProperty(value = "3月", order = 5) @ApiModelProperty("3月里程数") private BigDecimal marchMiles; + @ExcelProperty(value = "4月", order = 6) @ApiModelProperty("4月里程数") private BigDecimal aprilMiles; + @ExcelProperty(value = "5月", order = 7) @ApiModelProperty("5月里程数") private BigDecimal mayMiles; + @ExcelProperty(value = "6月", order = 8) @ApiModelProperty("6月里程数") private BigDecimal juneMiles; + @ExcelProperty(value = "7月", order = 9) @ApiModelProperty("7月里程数") private BigDecimal julyMiles; + @ExcelProperty(value = "8月", order = 10) @ApiModelProperty("8月里程数") private BigDecimal augustMiles; + @ExcelProperty(value = "9月", order = 11) @ApiModelProperty("9月里程数") private BigDecimal septemberMiles; + @ExcelProperty(value = "10月", order = 12) @ApiModelProperty("10月里程数") private BigDecimal octoberMiles; + @ExcelProperty(value = "11月", order = 13) @ApiModelProperty("11月里程数") private BigDecimal novemberMiles; + @ExcelProperty(value = "12月", order = 14) @ApiModelProperty("12月里程数") private BigDecimal decemberMiles; + @ExcelProperty(value = "合计里程/km", order = 15) @ApiModelProperty("合计里程数") private BigDecimal sumMiles; } diff --git a/hzims-service/safeproduct/src/main/resources/template/车辆检查表.docx b/hzims-service/safeproduct/src/main/resources/template/车辆检查表.docx index 8868b7d1d944b6d932494ddc3c7d35953b86e1f3..9f421d7cf68f2be778b4a209282150fc1facb445 100644 GIT binary patch delta 6587 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 q{$H#3pEOKTxV!*6!T(GR;En4s4URTC>b;WYJO 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 HH}!u20+!!V delta 5098 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 From c53520d1919d58a33ae5ced85ef16337533b2b2d Mon Sep 17 00:00:00 2001 From: liwen Date: Sat, 27 Jan 2024 08:40:23 +0800 Subject: [PATCH 3/7] =?UTF-8?q?update:=20=E6=BC=94=E7=BB=83=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safeproduct/controller/RehearsalController.java | 4 ++-- .../main/resources/template/演练记录表.docx | Bin 12208 -> 12335 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java index 73c8b0a..72f5a91 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java @@ -113,8 +113,8 @@ public class RehearsalController extends BladeController { @GetMapping("/rehearsalRecordPage") @ApiImplicitParams({ @ApiImplicitParam(name = "rehearsalPlanId", value = "演练计划id", dataType = "query", paramType = "string"), - @ApiImplicitParam(name = "actualStartTime", value = "计划开始时间", dataType = "query", paramType = "string"), - @ApiImplicitParam(name = "actualEndTime", value = "计划结束时间", dataType = "query", paramType = "string") + @ApiImplicitParam(name = "actualStartTime", value = "开始时间", dataType = "query", paramType = "string"), + @ApiImplicitParam(name = "actualEndTime", value = "结束时间", dataType = "query", paramType = "string") }) @ApiOperation(value = "演练记录分页") @ApiOperationSupport(order = 10) diff --git a/hzims-service/safeproduct/src/main/resources/template/演练记录表.docx b/hzims-service/safeproduct/src/main/resources/template/演练记录表.docx index f3c34385275a290ed86fdeeafec27340f572a61e..dd5789ddc85c853267d6335aff7c9b62b063aee8 100644 GIT binary patch delta 5227 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 W1#Ci&2t5ZbBZ0!)xZn8x_52^|7or6K From 6d41d8366d85eca15b836ae99459913553355cd0 Mon Sep 17 00:00:00 2001 From: liwen Date: Sat, 27 Jan 2024 08:41:06 +0800 Subject: [PATCH 4/7] =?UTF-8?q?update:=20=E5=8D=AB=E7=94=9F=E8=87=AA?= =?UTF-8?q?=E6=9F=A5=E7=AE=A1=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/safeproduct/entity/HygienePlanEntity.java | 3 +++ .../main/resources/template/卫生自查表.docx | Bin 11332 -> 11487 bytes 2 files changed, 3 insertions(+) diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygienePlanEntity.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygienePlanEntity.java index fd77873..943287e 100644 --- a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygienePlanEntity.java +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygienePlanEntity.java @@ -1,6 +1,7 @@ package com.hnac.hzims.safeproduct.entity; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -51,10 +52,12 @@ public class HygienePlanEntity extends BaseEntity { @ApiModelProperty("自查计划状态") private String hygienePlanStatus; + @TableField(exist = false) @ExcelProperty(value = "计划开始时间", index = 3) @ApiModelProperty("计划开始时间") private String startTime; + @TableField(exist = false) @ExcelProperty(value = "计划结束时间", index = 4) @ApiModelProperty("计划结束时间") private String endTime; diff --git a/hzims-service/safeproduct/src/main/resources/template/卫生自查表.docx b/hzims-service/safeproduct/src/main/resources/template/卫生自查表.docx index 80ba5d7281dbf818c957b6d18d8f18f174a2e001..06133d5cb6e52c809b65ee8437663985afb67123 100644 GIT binary patch delta 6894 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 From 7d4052f3d83e50f061ffaedb33942e6a3452069c Mon Sep 17 00:00:00 2001 From: liwen Date: Sat, 27 Jan 2024 08:41:26 +0800 Subject: [PATCH 5/7] =?UTF-8?q?update:=20=E4=BC=9A=E8=AE=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ConferenceController.java | 4 ++-- .../main/resources/template/会议记录表.docx | Bin 11834 -> 12061 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java index 9856bec..d025f73 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/ConferenceController.java @@ -110,8 +110,8 @@ public class ConferenceController extends BladeController { @GetMapping("/recordPage") @ApiImplicitParams({ @ApiImplicitParam(name = "conferencePlanId", value = "会议计划id", dataType = "query", paramType = "string"), - @ApiImplicitParam(name = "actualStartTime", value = "计划开始时间", dataType = "query", paramType = "string"), - @ApiImplicitParam(name = "actualEndTime", value = "计划结束时间", dataType = "query", paramType = "string") + @ApiImplicitParam(name = "actualStartTime", value = "开始时间", dataType = "query", paramType = "string"), + @ApiImplicitParam(name = "actualEndTime", value = "结束时间", dataType = "query", paramType = "string") }) @ApiOperation(value = "会议记录分页") @ApiOperationSupport(order = 10) diff --git a/hzims-service/safeproduct/src/main/resources/template/会议记录表.docx b/hzims-service/safeproduct/src/main/resources/template/会议记录表.docx index e4af627340ce2aa44b920eac3292cf968a53fce5..8671b2fd0b55f504b732bd6db5555a7290f1e539 100644 GIT binary patch delta 5174 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 Date: Sat, 27 Jan 2024 08:41:43 +0800 Subject: [PATCH 6/7] =?UTF-8?q?update:=20=E7=89=B9=E7=A7=8D=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=AE=A1=E7=90=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hnac/hzims/safeproduct/mapper/SpecialDeviceInspectionMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/SpecialDeviceInspectionMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/SpecialDeviceInspectionMapper.xml index adf843b..5b98348 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/SpecialDeviceInspectionMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/SpecialDeviceInspectionMapper.xml @@ -13,10 +13,10 @@ AND device_id = #{param.deviceId} - AND inspectionTime >= #{param.startTime} + AND inspection_time >= #{param.startTime} - AND inspectionTime <= #{param.endTime} + AND inspection_time <= #{param.endTime} ORDER BY create_time DESC From a656e7b830999f2b1b7628bcad0dde63e5ff80a0 Mon Sep 17 00:00:00 2001 From: ty <1577900710@qq.com> Date: Mon, 29 Jan 2024 21:03:31 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=9C=88=E6=8A=A5?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspect/report/feign/IInspectReportClient.java | 5 + .../report/feign/InspectReportClientFallback.java | 7 + .../ticket/allTicket/vo/TicketInfoStatisticVO.java | 26 +- .../inspect/gather/feigns/InspectReportClient.java | 20 - .../inspect/report/feigns/InspectReportClient.java | 12 +- .../access/service/IOperAccessTaskService.java | 2 + .../service/impl/OperAccessTaskServiceImpl.java | 50 + .../defect/service/IOperDefectService.java | 3 + .../defect/service/impl/OperDefectServiceImpl.java | 37 + .../duty/service/IImsDutyMainService.java | 5 +- .../duty/service/impl/ImsDutyMainServiceImpl.java | 147 ++- .../main/service/IMainSystemMonitoringService.java | 5 +- .../impl/MainSystemMonitoringServiceImpl.java | 167 ++- .../service/IOperMaintenanceTaskService.java | 2 + .../impl/OperMaintenanceTaskServiceImpl.java | 71 ++ .../report/controller/MonthReportController.java | 52 +- .../schedule/OperStationCreateMonthReport.java | 7 +- .../report/service/IMonthReportService.java | 5 +- .../service/IOperStationMonthReportService.java | 15 +- .../service/impl/MonthReportServiceImpl.java | 43 +- .../impl/OperStationMonthReportServiceImpl.java | 1245 ++++++++++++++------ .../operational/report/vo/AccessRunReportVO.java | 32 + .../operational/report/vo/DefectRunReportsVO.java | 36 + .../operational/report/vo/DutyRunReportVO.java | 36 + .../operational/report/vo/FDPRunReportVO.java | 41 + .../hzims/operational/report/vo/RunReportVO.java | 31 + .../report/vo/StationRunReportAllVO.java | 50 + .../operational/report/vo/StationRunReportVO.java | 32 + .../com/hnac/hzims/operational/util/TimeUtils.java | 15 + .../template/word/stationMonthReport.docx | Bin 0 -> 23366 bytes .../allTicket/fegin/TicketInfoAllClient.java | 47 +- .../service/IStandardTicketInfoService.java | 2 +- .../impl/StandardTicketInfoServiceImpl.java | 112 +- .../twoTicket/service/IFirstWorkTicketService.java | 2 +- .../service/impl/FirstWorkTicketServiceImpl.java | 75 +- .../hnac/hzims/ticket/TicketApplicationTest.java | 4 +- 36 files changed, 1869 insertions(+), 572 deletions(-) delete mode 100644 hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/gather/feigns/InspectReportClient.java create mode 100644 hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/AccessRunReportVO.java create mode 100644 hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DefectRunReportsVO.java create mode 100644 hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DutyRunReportVO.java create mode 100644 hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/FDPRunReportVO.java create mode 100644 hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/RunReportVO.java create mode 100644 hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportAllVO.java create mode 100644 hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportVO.java create mode 100644 hzims-service/operational/src/main/resources/template/word/stationMonthReport.docx diff --git a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/IInspectReportClient.java b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/IInspectReportClient.java index 2c52b77..50d12d5 100644 --- a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/IInspectReportClient.java +++ b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/IInspectReportClient.java @@ -2,6 +2,8 @@ package com.hnac.hzinfo.inspect.report.feign; import com.hnac.hzinfo.inspect.Constants; import com.hnac.hzinfo.inspect.report.vo.AlarmRoutReportVO; +import com.hnac.hzinfo.inspect.task.vo.DutyInspectTaskVO; +import com.hnac.hzinfo.inspect.task.vo.TaskReportVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -16,7 +18,10 @@ import java.util.Map; public interface IInspectReportClient { String API_PREFIX = "/feign/report"; String GET_ALARAM_REPORT = API_PREFIX + "/getAlarmReport"; + String GET_INSPECT_STATISTCS_BY_NAME = API_PREFIX + "/getInspectStatisticsByName"; @PostMapping(GET_ALARAM_REPORT) Map getAlarmReport(@RequestParam("depts") List depts, @RequestParam("date") String date); + @PostMapping(GET_INSPECT_STATISTCS_BY_NAME) + List getInspectStatisticsByName(@RequestParam("depts") List depts, @RequestParam("date") String startTime, @RequestParam("date") String endTime); } diff --git a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/InspectReportClientFallback.java b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/InspectReportClientFallback.java index 4ea23c3..183c6f9 100644 --- a/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/InspectReportClientFallback.java +++ b/hzims-service-api/inspect-api/src/main/java/com/hnac/hzinfo/inspect/report/feign/InspectReportClientFallback.java @@ -1,9 +1,11 @@ package com.hnac.hzinfo.inspect.report.feign; import com.hnac.hzinfo.inspect.report.vo.AlarmRoutReportVO; +import com.hnac.hzinfo.inspect.task.vo.TaskReportVO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,4 +18,9 @@ public class InspectReportClientFallback implements IInspectReportClient{ public Map getAlarmReport(List depts, String date) { return new HashMap<>(); } + + @Override + public List getInspectStatisticsByName(List depts, String startTime, String endTime) { + return new ArrayList<>(); + } } diff --git a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/allTicket/vo/TicketInfoStatisticVO.java b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/allTicket/vo/TicketInfoStatisticVO.java index 0c8d90e..42df792 100644 --- a/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/allTicket/vo/TicketInfoStatisticVO.java +++ b/hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/allTicket/vo/TicketInfoStatisticVO.java @@ -20,7 +20,8 @@ public class TicketInfoStatisticVO implements Serializable { private static final long serialVersionUID = -8870464581684939369L; @ApiModelProperty("日期") private String dateTime; - + @ApiModelProperty("序号") + private Integer index; @ApiModelProperty("本月票据合格率") @JsonSerialize(nullsUsing = NullSerializer.class) private Double ticketInfoProportion; @@ -29,23 +30,26 @@ public class TicketInfoStatisticVO implements Serializable { private String ticketInfoType; @ApiModelProperty("开票数量") - @JsonSerialize(nullsUsing = NullSerializer.class) - private Integer ticketInfoNumber; +// @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer ticketInfoNumber=0; @ApiModelProperty("本月完成开票数") - @JsonSerialize(nullsUsing = NullSerializer.class) - private Integer ticketInfoCompleteNum; +// @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer ticketInfoCompleteNum=0; @ApiModelProperty("本月未完成开票数") - @JsonSerialize(nullsUsing = NullSerializer.class) - private Integer ticketInfoStartNum; +// @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer ticketInfoStartNum=0; @ApiModelProperty("本月延期开票数") - @JsonSerialize(nullsUsing = NullSerializer.class) - private Integer ticketInfoDelayNum; +// @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer ticketInfoDelayNum=0; @ApiModelProperty("工作票合格数量") - @JsonSerialize(nullsUsing = NullSerializer.class) - private Integer ticketInfoQualifiedNum; +// @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer ticketInfoQualifiedNum=0; + @ApiModelProperty("废票数") +// @JsonSerialize(nullsUsing = NullSerializer.class) + private Integer ticketInfoInvalidatedNum=0; } diff --git a/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/gather/feigns/InspectReportClient.java b/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/gather/feigns/InspectReportClient.java deleted file mode 100644 index b09f167..0000000 --- a/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/gather/feigns/InspectReportClient.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hnac.hzinfo.inspect.gather.feigns; - -import com.hnac.hzinfo.inspect.report.feign.IInspectReportClient; -import com.hnac.hzinfo.inspect.report.service.InspectReportService; -import com.hnac.hzinfo.inspect.report.vo.AlarmRoutReportVO; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.List; -import java.util.Map; - -public class InspectReportClient implements IInspectReportClient { - - @Autowired - private InspectReportService inspectReportService; - - @Override - public Map getAlarmReport(List depts, String date) { - return inspectReportService.getAlarnReport(date,depts); - } -} diff --git a/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/report/feigns/InspectReportClient.java b/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/report/feigns/InspectReportClient.java index 960ca7a..c8cc7fa 100644 --- a/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/report/feigns/InspectReportClient.java +++ b/hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/report/feigns/InspectReportClient.java @@ -3,6 +3,8 @@ package com.hnac.hzinfo.inspect.report.feigns; import com.hnac.hzinfo.inspect.report.feign.IInspectReportClient; import com.hnac.hzinfo.inspect.report.service.InspectReportService; import com.hnac.hzinfo.inspect.report.vo.AlarmRoutReportVO; +import com.hnac.hzinfo.inspect.task.service.ITaskService; +import com.hnac.hzinfo.inspect.task.vo.TaskReportVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; @@ -15,10 +17,18 @@ public class InspectReportClient implements IInspectReportClient { @Autowired private InspectReportService inspectReportService; - + @Autowired + private ITaskService taskService; @PostMapping(GET_ALARAM_REPORT) @Override public Map getAlarmReport(List depts, String date) { return inspectReportService.getAlarnReport(date,depts); } + + @PostMapping(GET_INSPECT_STATISTCS_BY_NAME) + @Override + public List getInspectStatisticsByName(List depts, String startTime, String endTime) { + List inspectTaskReport = taskService.getInspectTaskReport(startTime, endTime, depts); + return inspectTaskReport; + } } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/IOperAccessTaskService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/IOperAccessTaskService.java index 696eb63..ab5089b 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/IOperAccessTaskService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/IOperAccessTaskService.java @@ -8,6 +8,7 @@ import com.hnac.hzims.operational.access.vo.AccessTaskExportVo; import com.hnac.hzims.operational.access.vo.OperAccessTaskVO; import com.hnac.hzims.operational.access.vo.RepairBillVO; import com.hnac.hzims.operational.report.vo.AccessReportVO; +import com.hnac.hzims.operational.report.vo.AccessRunReportVO; import com.hnac.hzims.vo.SafeCheckStatisticVO; import com.hnac.hzims.vo.VoteChartVo; import org.springblade.core.mp.base.BaseService; @@ -48,6 +49,7 @@ public interface IOperAccessTaskService extends BaseService getAccessTaskByDisposer(LocalDate startDate, LocalDate endDate, List deptIdList); List getAccessTaskByDisposer(Map params); + List getAccessTaskByName(Map params); List> getAccessConclusion(Map params); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/impl/OperAccessTaskServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/impl/OperAccessTaskServiceImpl.java index c456de8..dc2d35e 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/impl/OperAccessTaskServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/access/service/impl/OperAccessTaskServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hnac.hzims.equipment.entity.EmInfoEntity; import com.hnac.hzims.equipment.feign.IEmInfoClient; +import com.hnac.hzims.message.enums.PushStatEnum; import com.hnac.hzims.message.fegin.IMessagePushClient; import com.hnac.hzims.message.req.PushExtrasReq; import com.hnac.hzims.operational.OperationalConstants; @@ -36,6 +37,7 @@ import com.hnac.hzims.operational.defect.mapper.OperPhenomenonMapper; import com.hnac.hzims.operational.defect.service.IOperDefectService; import com.hnac.hzims.operational.defect.service.IOperDefectStatisticsService; import com.hnac.hzims.operational.report.vo.AccessReportVO; +import com.hnac.hzims.operational.report.vo.AccessRunReportVO; import com.hnac.hzims.safeproduct.Constants; import com.hnac.hzims.safeproduct.feign.IDangerSourceClient; import com.hnac.hzims.spare.entity.SpRecordEntity; @@ -59,6 +61,7 @@ import org.springblade.flow.core.feign.IFlowClient; import org.springblade.flow.core.utils.FlowUtil; import org.springblade.flow.core.utils.TaskUtil; import org.springblade.flow.core.vo.ComleteTask; +import org.springblade.system.cache.DictCache; import org.springblade.system.entity.Dept; import org.springblade.system.feign.ISysClient; import org.springblade.system.user.cache.UserCache; @@ -302,6 +305,53 @@ public class OperAccessTaskServiceImpl extends BaseServiceImpl getAccessTaskByName(Map params) { + LocalDate startDate = LocalDate.parse(params.get("startDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + LocalDate endDate = LocalDate.parse(params.get("endDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + List deptIdList = (List) params.get("deptId"); + List operAccessTaskEntityList = this.list(new LambdaQueryWrapper() {{ + ge(OperAccessTaskEntity::getPlanStartTime, startDate); + le(OperAccessTaskEntity::getPlanStartTime, endDate); + in(OperAccessTaskEntity::getCreateDept, deptIdList); + }}); + List res =new ArrayList<>(); + if(CollectionUtil.isNotEmpty(operAccessTaskEntityList)) { + for (int i = 0; i < operAccessTaskEntityList.size(); i++) { + OperAccessTaskEntity operAccessTaskEntity= operAccessTaskEntityList.get(i); + AccessRunReportVO accessReportVO = new AccessRunReportVO(); + accessReportVO.setIndex(i+1); + accessReportVO.setUserName(operAccessTaskEntity.getHandlerName()); + accessReportVO.setMaintenanceItem(operAccessTaskEntity.getName()); + switch (operAccessTaskEntity.getStatus()) { + case AccessConstants.ACCESS_TASK_STATUS_0: + accessReportVO.setCompleteSituation("未开始"); + break; + case AccessConstants.ACCESS_TASK_STATUS_1: + accessReportVO.setCompleteSituation("进行中"); + break; + case AccessConstants.ACCESS_TASK_STATUS_2: + accessReportVO.setCompleteSituation("待审核"); + break; + case AccessConstants.ACCESS_TASK_STATUS_3: + accessReportVO.setCompleteSituation("审核未通过"); + break; + case AccessConstants.ACCESS_TASK_STATUS_4: + accessReportVO.setCompleteSituation("已完成"); + break; + case AccessConstants.ACCESS_TASK_STATUS_5: + accessReportVO.setCompleteSituation("未完成"); + break; + default: + accessReportVO.setCompleteSituation("未开始"); + break; + } + res.add(accessReportVO); + } + } + return res; + } + + @Override public List> getAccessConclusion(Map params) { return mapper.getAccessConclusion(params); } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/IOperDefectService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/IOperDefectService.java index 98c5c30..4456413 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/IOperDefectService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/IOperDefectService.java @@ -7,6 +7,7 @@ import com.hnac.hzims.operational.defect.entity.OperDefectEntity; import com.hnac.hzims.operational.defect.entity.OperPhenomenonEntity; import com.hnac.hzims.operational.defect.vo.OperDefectVO; import com.hnac.hzims.operational.report.vo.DefectReportsVO; +import com.hnac.hzims.operational.report.vo.DefectRunReportsVO; import com.hnac.hzims.vo.SafeCheckStatisticVO; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; @@ -69,6 +70,8 @@ public interface IOperDefectService extends BaseService { List getFaultByFaultCode(Map params); + List getDefectByName(Map params); + List> getDefectConclusion(Map params); /** diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/OperDefectServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/OperDefectServiceImpl.java index cdcd04c..797e6e6 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/OperDefectServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/OperDefectServiceImpl.java @@ -21,8 +21,11 @@ import com.hnac.hzims.operational.defect.mapper.OperPhenomenonMapper; import com.hnac.hzims.operational.defect.service.IOperDefectService; import com.hnac.hzims.operational.defect.vo.OperDefectVO; import com.hnac.hzims.operational.defect.wrapper.OperDefectWrapper; +import com.hnac.hzims.operational.duty.entity.ImsDutyEmergencyEntity; import com.hnac.hzims.operational.report.vo.DefectReportsVO; +import com.hnac.hzims.operational.report.vo.DefectRunReportsVO; import com.hnac.hzims.safeproduct.Constants; +import com.hnac.hzims.spare.entity.WtSpManagementEntity; import com.hnac.hzims.vo.SafeCheckStatisticVO; import lombok.AllArgsConstructor; import net.logstash.logback.encoder.org.apache.commons.lang3.ObjectUtils; @@ -354,6 +357,40 @@ public class OperDefectServiceImpl extends BaseServiceImpl getDefectByName(Map params) { + LocalDate startDate = LocalDate.parse(params.get("startDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + LocalDate endDate = LocalDate.parse(params.get("endDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + List deptIdList = (List) params.get("deptId"); + List res=new ArrayList<>(); + + List operPhenomenonEntities = operPhenomenonMapper.selectList( + Wrappers.query().lambda() + .ge(OperPhenomenonEntity::getCreateTime, startDate) + .le(OperPhenomenonEntity::getCreateTime, endDate) + .in(OperPhenomenonEntity::getCreateDept, deptIdList) + .eq(OperPhenomenonEntity::getIsDeleted, 0) + .eq(OperPhenomenonEntity::getIsDefect, 1)); + if (CollectionUtil.isNotEmpty(operPhenomenonEntities)){ + for (int i = 0; i < operPhenomenonEntities.size(); i++) { + DefectRunReportsVO reportsVO=new DefectRunReportsVO(); + OperPhenomenonEntity operPhenomenonEntity = operPhenomenonEntities.get(i); + reportsVO.setIndex(i+1); + reportsVO.setFinder(operPhenomenonEntity.getFinderName()); + reportsVO.setFinderTime(DateUtil.formatDateTime(operPhenomenonEntity.getFindTime())); + reportsVO.setDescription(operPhenomenonEntity.getDescripiton()); + if ("1".equals(operPhenomenonEntity.getHandleStatus())) { + reportsVO.setHandleTime(DateUtil.formatDateTime(operPhenomenonEntity.getActStartTime())); + reportsVO.setHandleSituation(operPhenomenonEntity.getDisposeDesc()); + }else { + reportsVO.setHandleSituation("未处理"); + } + res.add(reportsVO); + } + } + return res; + } + + @Override public List> getDefectConclusion(Map params) { return operDefectMapper.getDefectConclusion(params); } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyMainService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyMainService.java index 09b8598..014bede 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyMainService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyMainService.java @@ -6,6 +6,7 @@ import com.hnac.hzims.operational.duty.entity.ImsDutyRecEntity; import com.hnac.hzims.operational.duty.vo.*; import com.hnac.hzims.operational.main.vo.DutyPersonalReportVO; import com.hnac.hzims.operational.report.vo.DutyReportVO; +import com.hnac.hzims.operational.report.vo.DutyRunReportVO; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; @@ -80,8 +81,8 @@ public interface IImsDutyMainService extends BaseService { */ List getDutyMainStatisticsByClassId(LocalDate startDate, LocalDate endDate, List deptIdList); - List getDutyMainStatisticsByClassId(Map params); - +// List getDutyMainStatisticsByClassId(Map params); + List getDutyMainRunReport(Map params); List> getDutyConclusion(Map params); DutyPersonalReportVO getPersonalDutyMain(Map params); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyMainServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyMainServiceImpl.java index fafd0e9..cdf8795 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyMainServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyMainServiceImpl.java @@ -19,6 +19,7 @@ import com.hnac.hzims.operational.duty.service.*; import com.hnac.hzims.operational.duty.vo.*; import com.hnac.hzims.operational.main.vo.DutyPersonalReportVO; import com.hnac.hzims.operational.report.vo.DutyReportVO; +import com.hnac.hzims.operational.report.vo.DutyRunReportVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; @@ -44,6 +45,7 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.stream.Collectors; @@ -1022,13 +1024,144 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl getDutyMainStatisticsByClassId(Map params) { - LocalDate startDate = LocalDate.parse(params.get("startDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); - LocalDate endDate = LocalDate.parse(params.get("endDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); - List deptId = (List) params.get("deptId"); - return getDutyMainStatisticsByClassId(startDate, endDate, deptId); - } + + private void getDutyRunReportByPerson(LocalDate startDate, LocalDate endDate, List deptIdList, List imsDutyMainEntityList, List dutyReportVOList,AtomicInteger index) { + //无班组的值班数据: + List personDutyMainEntity = imsDutyMainEntityList.stream().filter(o -> ObjectUtil.isEmpty(o.getDutyGroupId())).collect(Collectors.toList()); + //获取班组名 + if (ObjectUtil.isNotEmpty(personDutyMainEntity)) { + DutyRunReportVO dutyReportVO = new DutyRunReportVO(); + dutyReportVO.setGroupName("灵活排班"); + dutyReportVO.setIndex(index.get()); + dutyReportVO.setDutyNum(personDutyMainEntity.size()); + //获取值班ID + List dutyIdList = personDutyMainEntity.stream().map(ImsDutyMainEntity::getId).collect(Collectors.toList()); + dutyReportVO.setDutyList(dutyIdList.stream().map(s->String.valueOf(s)).collect(Collectors.toList())); + //发现问题数量 + List operPhenomenonEntityList = operPhenomenonMapper.selectList(new LambdaQueryWrapper() {{ + ge(OperPhenomenonEntity::getCreateTime, startDate); + le(OperPhenomenonEntity::getCreateTime, endDate); + in(OperPhenomenonEntity::getCreateDept, deptIdList); + eq(OperPhenomenonEntity::getSourceCode, DefectConstant.DefectSourceEnum.ZB.getStatus()); + eq(OperPhenomenonEntity::getIsDeleted, 0); + }}); + dutyReportVO.setFindProblemNum(operPhenomenonEntityList.size()); + + //获取交接班异常记录 + List imsDutyRecEntityList = imsDutyRecMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyRecEntity::getDutyId, dutyIdList); + }}); + //延迟交接班 + List delayList = imsDutyRecEntityList.stream().filter(rec -> rec.getDelayStatus() == 1).collect(Collectors.toList()); + //异常交接班 + List exceptionList = imsDutyRecEntityList.stream().filter(rec -> DutyRecStatus.ANOMALY.getVal().equals(rec.getStatus())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(delayList)) { + dutyReportVO.setDelayChangeShifts(delayList.size()); + List delayIdsList = delayList.stream().map(ImsDutyRecEntity::getDutyId).map(s -> String.valueOf(s)).collect(Collectors.toList()); + dutyReportVO.setDelayChangeList(delayIdsList); + } + if (CollectionUtil.isNotEmpty(exceptionList)) { + dutyReportVO.setExceptionChangeShifts(exceptionList.size()); + List exceptionIdsList = exceptionList.stream().map(ImsDutyRecEntity::getDutyId).map(s -> String.valueOf(s)).collect(Collectors.toList()); + dutyReportVO.setExceptionChangeList(exceptionIdsList); + } + dutyReportVOList.add(dutyReportVO); + } + } + + private void getDutyRunReportByGroup(LocalDate startDate, LocalDate endDate, List deptIdList, List imsDutyMainEntityList, List dutyReportVOList,AtomicInteger index) { + + //按班组组合值班记录 + Map> listByGroup = imsDutyMainEntityList.stream().filter(o -> ObjectUtil.isNotEmpty(o.getDutyGroupId())).collect(Collectors.groupingBy(ImsDutyMainEntity::getDutyGroupId)); + listByGroup.forEach((k, v) -> { + //获取班组名 + ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(k); + if (ObjectUtil.isNotEmpty(imsDutyGroupEntity)) { + DutyRunReportVO dutyReportVO = new DutyRunReportVO(); + dutyReportVO.setIndex(index.get()); + index.getAndIncrement(); + dutyReportVO.setGroupName(imsDutyGroupEntity.getGroupName()); + User user = UserCache.getUser(imsDutyGroupEntity.getManagerId()); + if (ObjectUtil.isNotEmpty(user)){ + dutyReportVO.setManagerName(user.getName()); + } + dutyReportVO.setDutyNum(v.size()); + //获取值班ID + List dutyIdList = v.stream().map(ImsDutyMainEntity::getId).collect(Collectors.toList()); + dutyReportVO.setDutyList(dutyIdList.stream().map(s->String.valueOf(s)).collect(Collectors.toList())); + //发现问题数量 + List imsDutyGroupPEntities = imsDutyGroupPMapper.selectByGroupId(k); + List person = imsDutyGroupPEntities.stream().map(s -> s.getPersonId()).collect(Collectors.toList()); + List operPhenomenonEntityList = operPhenomenonMapper.selectList(new LambdaQueryWrapper() {{ + ge(OperPhenomenonEntity::getCreateTime, startDate); + le(OperPhenomenonEntity::getCreateTime, endDate); + in(OperPhenomenonEntity::getCreateDept, deptIdList); + in(OperPhenomenonEntity::getFinder,person); + eq(OperPhenomenonEntity::getSourceCode, DefectConstant.DefectSourceEnum.ZB.getStatus()); + eq(OperPhenomenonEntity::getIsDeleted, 0); + }}); + dutyReportVO.setFindProblemNum(operPhenomenonEntityList.size()); + + //获取交接班异常记录 + List imsDutyRecEntityList = imsDutyRecMapper.selectList(new LambdaQueryWrapper() {{ + in(ImsDutyRecEntity::getDutyId, dutyIdList); + }}); + //延迟交接班 + List delayList = imsDutyRecEntityList.stream().filter(rec -> rec.getDelayStatus() == 1).collect(Collectors.toList()); + //异常交接班 + List exceptionList = imsDutyRecEntityList.stream().filter(rec -> DutyRecStatus.ANOMALY.getVal().equals(rec.getStatus())).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(delayList)) { + dutyReportVO.setDelayChangeShifts(delayList.size()); + List delayIdsList = delayList.stream().map(ImsDutyRecEntity::getDutyId).map(s -> String.valueOf(s)).collect(Collectors.toList()); + dutyReportVO.setDelayChangeList(delayIdsList); + } + if (CollectionUtil.isNotEmpty(exceptionList)) { + dutyReportVO.setExceptionChangeShifts(exceptionList.size()); + List exceptionIdsList = exceptionList.stream().map(ImsDutyRecEntity::getDutyId).map(s -> String.valueOf(s)).collect(Collectors.toList()); + dutyReportVO.setExceptionChangeList(exceptionIdsList); + } + dutyReportVOList.add(dutyReportVO); + } + }); + } + + @Override + public List getDutyMainRunReport(Map params) { + LocalDate startDate = LocalDate.parse(params.get("startDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + LocalDate endDate = LocalDate.parse(params.get("endDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + List deptIdList = (List) params.get("deptId"); + List dutyReportVOList = new ArrayList<>(); + //获取当月值班记录 + List imsDutyMainEntityList = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + ge(ImsDutyMainEntity::getDutyDate, startDate); + le(ImsDutyMainEntity::getDutyDate, endDate); + in(ImsDutyMainEntity::getCreateDept, deptIdList); + ne(ImsDutyMainEntity::getStatus, -1); + eq(ImsDutyMainEntity::getIsDeleted, 0); + }}); + AtomicInteger index= new AtomicInteger(1); + if(CollectionUtil.isNotEmpty(imsDutyMainEntityList)) { + //带班组的值班数据 + this.getDutyRunReportByGroup(startDate, endDate, deptIdList, imsDutyMainEntityList, dutyReportVOList,index); + //灵活排班的值班数据 + this.getDutyRunReportByPerson(startDate, endDate, deptIdList, imsDutyMainEntityList, dutyReportVOList,index); + } + DutyRunReportVO dutyReportVO = new DutyRunReportVO(); + dutyReportVO.setGroupName("合计"); + if (CollectionUtil.isNotEmpty(dutyReportVOList)){ + dutyReportVO.setDutyNum(dutyReportVOList.stream().mapToInt(DutyRunReportVO::getDutyNum).sum()); + dutyReportVO.setFindProblemNum(dutyReportVOList.stream().mapToInt(DutyRunReportVO::getFindProblemNum).sum()); + dutyReportVO.setDelayChangeShifts(dutyReportVOList.stream().mapToInt(DutyRunReportVO::getDelayChangeShifts).sum()); + dutyReportVO.setExceptionChangeShifts(dutyReportVOList.stream().mapToInt(DutyRunReportVO::getExceptionChangeShifts).sum()); + }else { + dutyReportVO.setDutyNum(0); + dutyReportVO.setFindProblemNum(0); + dutyReportVO.setDelayChangeShifts(0); + dutyReportVO.setExceptionChangeShifts(0); + } + + return dutyReportVOList; + } @Override public List> getDutyConclusion(Map params) { diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IMainSystemMonitoringService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IMainSystemMonitoringService.java index 7fbfffb..3dfbb39 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IMainSystemMonitoringService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IMainSystemMonitoringService.java @@ -3,6 +3,7 @@ package com.hnac.hzims.operational.main.service; import com.hnac.hzims.equipment.vo.EminfoAndEmParamVo; import com.hnac.hzims.operational.main.vo.*; import com.hnac.hzims.operational.report.vo.StationReportVO; +import com.hnac.hzims.operational.report.vo.StationRunReportVO; import com.hnac.hzims.operational.station.entity.StationEntity; import org.springblade.core.tool.api.R; import org.springblade.system.entity.Dept; @@ -66,7 +67,8 @@ public interface IMainSystemMonitoringService { List getElectricSituation(String month, String stationId); - + List getElectricSituationV2(String yearAndMonth, String code); + void getElectricSituationByRedis(String month, List reportVOS, List stationEntityList); InDustryVo getUserDataScopeHomePage(String businessType,String stationType,String deptIds,String refTerminal); List classifyUserDataScopeType(String deptIds, String stationType,List types,boolean bool); @@ -87,4 +89,5 @@ public interface IMainSystemMonitoringService { List getEmInfoList(); + } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/MainSystemMonitoringServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/MainSystemMonitoringServiceImpl.java index bff519a..c176274 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/MainSystemMonitoringServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/MainSystemMonitoringServiceImpl.java @@ -24,8 +24,10 @@ import com.hnac.hzims.operational.main.service.IMainWorkBenchService; import com.hnac.hzims.operational.main.service.IUnitRunningTimeService; import com.hnac.hzims.operational.main.vo.*; import com.hnac.hzims.operational.report.vo.StationReportVO; +import com.hnac.hzims.operational.report.vo.StationRunReportVO; import com.hnac.hzims.operational.station.entity.StationEntity; import com.hnac.hzims.operational.station.service.IStationService; +import com.hnac.hzims.operational.util.TimeUtils; import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient; import com.hnac.hzinfo.datasearch.analyse.IAnalyseInstanceClient; import com.hnac.hzinfo.datasearch.analyse.po.AnalyseCodeByAnalyseDataPO; @@ -50,6 +52,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.Duration; import java.time.LocalDate; @@ -1340,7 +1343,167 @@ public class MainSystemMonitoringServiceImpl implements IMainSystemMonitoringSer } } + private final static String RECENT_YEAR_POWER_DATA = "hzims:operation:key:power:data"; + /** + * 获取部门站点发电量情况 + * @param month 2024-01 月份 + */ + @Override + public void getElectricSituationByRedis(String month,List reportVOS, List stationEntityList) { + String[] yearMon = month.split("-"); + Integer year = Integer.valueOf(yearMon[0]); + Integer mon = Integer.valueOf(yearMon[1]); + List listByYear = TimeUtils.getListByYearMon(year, mon); + String currentMon = TimeUtils.getMon(year, mon); + Integer count=0; + Map> powerMapThree = (Map>) redisTemplate.opsForValue().get(RECENT_YEAR_POWER_DATA); + for (Map.Entry> deviceMap : powerMapThree.entrySet()) { + for (StationEntity stationEntity : stationEntityList) { + if (stationEntity.getId().equals(deviceMap.getKey())) { + StationRunReportVO stationReportVO = new StationRunReportVO(); + count++; + stationReportVO.setIndex(count); + stationReportVO.setStationName(stationEntity.getName()); + //当前机构近三年的数据 + Map value = deviceMap.getValue(); + //当月发电量 + BigDecimal powerMon = value.entrySet().stream().filter(s -> currentMon.equals(s.getKey())).map(s -> BigDecimal.valueOf(s.getValue()).setScale(1,BigDecimal.ROUND_UP)).reduce(BigDecimal.ZERO, BigDecimal::add); + stationReportVO.setFinishPowerMon(powerMon.toString()); + //获取计划月发电量 + R planPowerMonR = planGenertionClient.planGenerationMonthCount(stationEntity.getCode(), month); + double planPowerMon =0; + if (planPowerMonR.isSuccess()&&ObjectUtil.isNotEmpty(planPowerMonR.getData())) { + planPowerMon = planPowerMonR.getData().doubleValue(); + } + stationReportVO.setPowerMonPlan(planPowerMon); + //当年发电量 + BigDecimal powerYear = value.entrySet().stream().filter(s -> listByYear.contains(s.getKey())).map(s -> BigDecimal.valueOf(s.getValue()).setScale(1,BigDecimal.ROUND_UP)).reduce(BigDecimal.ZERO, BigDecimal::add); + stationReportVO.setFinishPowerYear(powerYear.toString()); + //获取计划年发电量 + Double planPowerYear = planGenertionClient.getPlanPowerYear(Arrays.asList(stationEntity.getId().toString()), yearMon[0]); + stationReportVO.setPowerYearPlan(planPowerYear); + if (ObjectUtil.isNotEmpty(stationReportVO.getPowerMonPlan()) + &&ObjectUtil.isNotEmpty(stationReportVO.getFinishPowerMon()) + &&new BigDecimal(stationReportVO.getPowerMonPlan()).compareTo(BigDecimal.ZERO)!=0){ + BigDecimal monRate = new BigDecimal(stationReportVO.getFinishPowerMon()).multiply(new BigDecimal(100)) + .divide(new BigDecimal(stationReportVO.getPowerMonPlan()), 2, BigDecimal.ROUND_UP); + stationReportVO.setPowerMonRate(monRate.doubleValue()+"%"); + }else { + stationReportVO.setPowerMonRate(new Double(0)+"%"); + } + if (ObjectUtil.isNotEmpty(stationReportVO.getFinishPowerYear()) + &&ObjectUtil.isNotEmpty(stationReportVO.getPowerYearPlan()) + &&new BigDecimal(stationReportVO.getPowerYearPlan()).compareTo(BigDecimal.ZERO)!=0){ + BigDecimal yearRate = new BigDecimal(stationReportVO.getFinishPowerYear()).multiply(new BigDecimal(100)) + .divide(new BigDecimal(stationReportVO.getPowerYearPlan()), 2, BigDecimal.ROUND_UP); + stationReportVO.setPowerYearRate(yearRate.doubleValue()+"%"); + }else { + stationReportVO.setPowerYearRate(new Double(0)+"%"); + } + reportVOS.add(stationReportVO); + } + } + } + } + @Override + public List getElectricSituationV2(String month, String stationId) { + String year = month.split("-")[0]; + List stationReportVOList = new ArrayList<>(); + DateTimeFormatter df = DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATETIME); + StationRunReportVO stationReportVO = new StationRunReportVO(); + //获取对应的发电量 + StationEntity stationEntity = stationService.getStationByCode(stationId); + stationReportVO.setStationName(stationEntity.getName()); + AtomicReference powerCount = new AtomicReference<>((float) 0L); + AtomicReference powerCountYear = new AtomicReference<>((float) 0L); + //获取站点所属部门下的设备列表 + List emCodes = emInfoClient.getEmCodeByDeptIdAndHomePage(stationEntity.getRefDept()).getData(); + if (CollectionUtil.isNotEmpty(emCodes)) { + List emCodeList = analyseInstanceClient.getListAnalyseCode(emCodes).getData(); + if (CollectionUtil.isNotEmpty(emCodeList)) { + List data = emInfoClient.getEmInfoByEmCodes(emCodeList).getData(); + for (EmInfoEntity emInfoEntity : data) { + int ct = 0; + int pt = 0; + R EmParamEntityCT = emParamClient.getParamByEmId(emInfoEntity.getId(), "ct"); + if (EmParamEntityCT.isSuccess() && ObjectUtil.isNotEmpty(EmParamEntityCT.getData()) + && StringUtil.isNotBlank(EmParamEntityCT.getData().getParamValue())) { + ct = Integer.valueOf(EmParamEntityCT.getData().getParamValue()); + } + R EmParamEntityPT = emParamClient.getParamByEmId(emInfoEntity.getId(), "pt"); + if (EmParamEntityPT.isSuccess() && ObjectUtil.isNotEmpty(EmParamEntityPT.getData()) + && StringUtil.isNotBlank(EmParamEntityPT.getData().getParamValue())) { + pt = Integer.valueOf(EmParamEntityPT.getData().getParamValue()); + } + //TODO + int rideCount = ct * pt; + MainVo vo = new MainVo(); + MainVo yearVo = new MainVo(); + R paramByEmId = emParamClient.getParamByEmId(emInfoEntity.getId(), EquipmentConstants.MainEnum.INSTALLED_CAPACITY.getVal()); + if (paramByEmId.isSuccess()) { + if (ObjectUtil.isNotEmpty(paramByEmId.getData())) { + vo.setInstalledCapacity(paramByEmId.getData().getParamValue()); + } + } + //循环所有机组 + //根据设备编号 标识 获取 发电量、有功功率数据 + AnalyseCodeByAnalyseDataPO po = new AnalyseCodeByAnalyseDataPO(); + po.setDeviceCode(emInfoEntity.getNumber()); + List signboardConditions = new ArrayList<>(); + AnalyzeDataConditionPO analyzeDataConditionPO = new AnalyzeDataConditionPO(); + analyzeDataConditionPO.setFull(1);//填充 null + analyzeDataConditionPO.setSignages(GENERATE_SIGNAGE); + analyzeDataConditionPO.setAccessRules(EquipmentConstants.AccessRulesEnum.DIFF_CYCLE.getType());//取数规则 0=(整点值/最早值)、1=最大值、2=最小值、3=平均值、4=(累计值/和值)、5=(变化值/差值) 6=最新值 + analyzeDataConditionPO.setTimeInterval(1);//间隔 + //月发电量 + analyzeDataConditionPO.setBeginTime(LocalDateTime.parse(month + "-01 00:00:00", df)); + DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE; + LocalDate localDateMonth = LocalDate.parse(month + "-01"); + String endDateTime = fmt.format(localDateMonth.with(TemporalAdjusters.lastDayOfMonth())) + " 23:59:59"; + analyzeDataConditionPO.setEndTime(LocalDateTime.parse(endDateTime, df)); + setValueGenerateCount(analyzeDataConditionPO, signboardConditions, po, rideCount, vo, EquipmentConstants.CycleTypeEnum.MONTH_CYCLE.getType(), true); + //年发电量 + analyzeDataConditionPO.setBeginTime(LocalDateTime.parse(year + "-01-01 00:00:00", df)); + setValueGenerateCount(analyzeDataConditionPO, signboardConditions, po, rideCount, vo, EquipmentConstants.CycleTypeEnum.YEAR_CYCLE.getType(), true); + powerCount.updateAndGet(v -> new Float(v + vo.getMonthGenerateCount())); + powerCountYear.updateAndGet(v -> new Float(v + yearVo.getYearGenerateCount())); + log.info("------------月发电量:[{}]--------", vo.getMonthGenerateCount()); + } + } + } + Double finishPowerMon = new BigDecimal(powerCount.get()).doubleValue(); + stationReportVO.setFinishPowerMon(finishPowerMon.toString()); + Double finishPowerYear = new BigDecimal(powerCountYear.get()).doubleValue(); + stationReportVO.setFinishPowerYear(finishPowerYear.toString()); + //当年的计划发电量 + Double planPowerYear = planGenertionClient.getPlanPowerYear(Arrays.asList(stationId), year); + stationReportVO.setPowerYearPlan(planPowerYear); + //当月的计划发电量 + R planPowerMonR = planGenertionClient.planGenerationMonthCount(stationId, month); + Double planPowerMon = planPowerMonR.getData().doubleValue(); + stationReportVO.setPowerMonPlan(planPowerMon); + if (ObjectUtil.isNotEmpty(stationReportVO.getPowerMonPlan()) + &&ObjectUtil.isNotEmpty(stationReportVO.getFinishPowerMon()) + &&new BigDecimal(stationReportVO.getPowerMonPlan()).compareTo(BigDecimal.ZERO)!=0){ + BigDecimal monRate = new BigDecimal(stationReportVO.getFinishPowerMon()).multiply(new BigDecimal(100)) + .divide(new BigDecimal(stationReportVO.getPowerMonPlan()), 2, BigDecimal.ROUND_UP); + stationReportVO.setPowerMonRate(monRate.doubleValue()+"%"); + }else { + stationReportVO.setPowerMonRate(new Double(0)+"%"); + } + if (ObjectUtil.isNotEmpty(stationReportVO.getFinishPowerYear()) + &&ObjectUtil.isNotEmpty(stationReportVO.getPowerYearPlan()) + &&new BigDecimal(stationReportVO.getPowerYearPlan()).compareTo(BigDecimal.ZERO)!=0){ + BigDecimal yearRate = new BigDecimal(stationReportVO.getFinishPowerYear()).multiply(new BigDecimal(100)) + .divide(new BigDecimal(stationReportVO.getPowerYearPlan()), 2, BigDecimal.ROUND_UP); + stationReportVO.setPowerYearRate(yearRate.doubleValue()+"%"); + }else { + stationReportVO.setPowerYearRate(new Double(0)+"%"); + } + stationReportVOList.add(stationReportVO); + return stationReportVOList; + } /** * 获取部门站点发电量情况 * @@ -1380,12 +1543,12 @@ public class MainSystemMonitoringServiceImpl implements IMainSystemMonitoringSer int pt = 0; R EmParamEntityCT = emParamClient.getParamByEmId(emInfoEntity.getId(), "ct"); if (EmParamEntityCT.isSuccess() && ObjectUtil.isNotEmpty(EmParamEntityCT.getData()) - && StringUtil.isNotBlank(EmParamEntityCT.getData().getParamValue())) { + && StringUtil.isNotBlank(EmParamEntityCT.getData().getParamValue())) { ct = Integer.valueOf(EmParamEntityCT.getData().getParamValue()); } R EmParamEntityPT = emParamClient.getParamByEmId(emInfoEntity.getId(), "pt"); if (EmParamEntityPT.isSuccess() && ObjectUtil.isNotEmpty(EmParamEntityPT.getData()) - && StringUtil.isNotBlank(EmParamEntityPT.getData().getParamValue())) { + && StringUtil.isNotBlank(EmParamEntityPT.getData().getParamValue())) { pt = Integer.valueOf(EmParamEntityPT.getData().getParamValue()); } //TODO diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/IOperMaintenanceTaskService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/IOperMaintenanceTaskService.java index 145bcb4..bce1e00 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/IOperMaintenanceTaskService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/IOperMaintenanceTaskService.java @@ -8,6 +8,7 @@ import com.hnac.hzims.operational.maintenance.entity.OperMaintenanceTaskEntity; import com.hnac.hzims.operational.maintenance.vo.MaintenanceExportVO; import com.hnac.hzims.operational.maintenance.vo.OperMaintenanceTaskVO; import com.hnac.hzims.operational.report.vo.MaintenanceReportVO; +import com.hnac.hzims.operational.report.vo.RunReportVO; import com.hnac.hzims.ticket.areamonthly.vo.MaintenanceTaskVo; import com.hnac.hzims.ticket.areamonthly.vo.MaintenanceTaskWithAreaVo; import com.hnac.hzims.vo.SafeCheckStatisticVO; @@ -48,6 +49,7 @@ public interface IOperMaintenanceTaskService extends BaseService getMaintenanceStatisticsByDisposer(LocalDate startDate,LocalDate endDate,List deptIdList); List getMaintenanceStatisticsByDisposer(Map params); + List getMaintenanceStatisticsByName(Map params); List> getMaintenanceConclusion(Map params); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/OperMaintenanceTaskServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/OperMaintenanceTaskServiceImpl.java index 0db6aa0..7f17469 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/OperMaintenanceTaskServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/OperMaintenanceTaskServiceImpl.java @@ -24,6 +24,7 @@ import com.hnac.hzims.operational.maintenance.vo.MaintenanceExportVO; import com.hnac.hzims.operational.maintenance.vo.OperMaintenanceTaskVO; import com.hnac.hzims.operational.maintenance.wrapper.OperMaintenanceTaskWrapper; import com.hnac.hzims.operational.report.vo.MaintenanceReportVO; +import com.hnac.hzims.operational.report.vo.RunReportVO; import com.hnac.hzims.safeproduct.Constants; import com.hnac.hzims.safeproduct.feign.IDangerSourceClient; import com.hnac.hzims.ticket.areamonthly.vo.MaintenanceTaskVo; @@ -61,6 +62,7 @@ import java.text.DecimalFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -245,6 +247,75 @@ public class OperMaintenanceTaskServiceImpl extends BaseServiceImpl getMaintenanceStatisticsByName(Map params) { + LocalDate startDate = LocalDate.parse(params.get("startDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + LocalDate endDate = LocalDate.parse(params.get("endDate").toString(), DateTimeFormatter.ofPattern(DateUtil.PATTERN_DATE)); + List deptIdList = (List) params.get("deptId"); + List maintenanceReportVOList = new ArrayList<>(); + //查询当月日常维护任务 + List operMaintenanceTaskEntityList = this.baseMapper.selectList(new LambdaQueryWrapper() {{ + ge(OperMaintenanceTaskEntity::getDisposeTime, startDate); + le(OperMaintenanceTaskEntity::getDisposeTime, endDate); + in(OperMaintenanceTaskEntity::getCreateDept, deptIdList); + eq(OperMaintenanceTaskEntity::getIsDeleted, 0); + }}); + AtomicInteger index= new AtomicInteger(1); + //按执行人分组 + if (CollectionUtil.isNotEmpty(operMaintenanceTaskEntityList)) { + Map> map = operMaintenanceTaskEntityList.stream().filter(o -> StringUtils.isNotBlank(o.getDisposer())).collect(Collectors.groupingBy(OperMaintenanceTaskEntity::getDisposer)); + map.forEach((k, v) -> { + RunReportVO maintenanceReportVO = new RunReportVO(); + maintenanceReportVO.setIndex(index.get()); + //获取执行人名字 + List userIdList = Arrays.asList(k.split(",")).stream().map(o -> Long.parseLong(o)).collect(Collectors.toList()); + String userName = userIdList.stream().map(userId -> { + User user = UserCache.getUser(userId); + return Optional.ofNullable(user).map(User::getName).orElse(""); + }).collect(Collectors.joining(",")); + maintenanceReportVO.setUserName(userName); + this.fillRunReport(v, maintenanceReportVO); + maintenanceReportVOList.add(maintenanceReportVO); + index.getAndIncrement(); + }); + //合计 + List maintenanceTaskEntityList = operMaintenanceTaskEntityList.stream().filter(o -> StringUtils.isNotBlank(o.getDisposer())).collect(Collectors.toList()); + RunReportVO maintenanceReportVO = new RunReportVO(); + maintenanceReportVO.setUserName("合计"); + this.fillRunReport(maintenanceTaskEntityList, maintenanceReportVO); + maintenanceReportVOList.add(maintenanceReportVO); + } + return maintenanceReportVOList; + } + + private static void fillRunReport(List v, RunReportVO maintenanceReportVO) { + //已完成任务 + List finishTask = v.stream().filter(o -> MaintenanceConstant.TASK_STATUS_5 == o.getStatus()).collect(Collectors.toList()); + Map> finishTaskGroupByType = finishTask.stream().collect(Collectors.groupingBy(OperMaintenanceTaskEntity::getTypeCode)); + AtomicReference finishSituation = new AtomicReference<>(""); + finishTaskGroupByType.forEach((TypeCode, TypeList) -> { + try { + finishSituation.set(finishSituation.get().concat(DictCache.getValue(DictConstant.MAINTENANCE_TYPE_CODE, TypeCode)).concat(":").concat(TypeList.size() + "").concat("\r\n")); + } catch (NullPointerException e) { + e.printStackTrace(); + } + }); + maintenanceReportVO.setCompleteNum(finishTask.size()); + maintenanceReportVO.setCompleteList(finishTask.stream().map(s->String.valueOf(s.getId())).collect(Collectors.toList())); + //未完成任务 + List immatureTask = v.stream().filter(o -> MaintenanceConstant.TASK_STATUS_5 != o.getStatus()).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(immatureTask)){ + Map> immatureTaskTaskGroupByType = immatureTask.stream().collect(Collectors.groupingBy(OperMaintenanceTaskEntity::getTypeCode)); +// AtomicReference immatureTaskSituation = new AtomicReference<>(""); + immatureTaskTaskGroupByType.forEach((TypeCode, TypeList) -> { + finishSituation.set(finishSituation.get().concat(DictCache.getValue(DictConstant.MAINTENANCE_TYPE_CODE, TypeCode)).concat(":").concat(TypeList.size() + "").concat("\r\n")); + }); + maintenanceReportVO.setIncompleteNum(immatureTask.size()); + maintenanceReportVO.setIncompleteList(immatureTask.stream().map(s->String.valueOf(s.getId())).collect(Collectors.toList())); + maintenanceReportVO.setRemark(finishSituation.get()); + } + } + + @Override public List> getMaintenanceConclusion(Map params) { return operMaintenanceTaskMapper.getMaintenanceConclusion(params); } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/controller/MonthReportController.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/controller/MonthReportController.java index f31fb52..a9f3e2a 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/controller/MonthReportController.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/controller/MonthReportController.java @@ -13,6 +13,7 @@ import com.hnac.hzims.operational.report.schedule.OperStationCreateMonthReport; import com.hnac.hzims.operational.report.service.IMonthReportService; import com.hnac.hzims.operational.report.service.IOperPersonalMonthReportService; import com.hnac.hzims.operational.report.service.IOperStationMonthReportService; +import com.hnac.hzims.operational.report.vo.StationRunReportAllVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import jdk.nashorn.internal.objects.annotations.Getter; @@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.time.LocalDate; @@ -66,38 +68,44 @@ public class MonthReportController { @OperationAnnotation(moduleName = "生产月报", title = "统计月报(对内 对外)",operatorType = OperatorType.MOBILE,businessType = BusinessType.GENCODE, action = "根据站点编码获取站点月报") - public R getStationMonthReportByStationCode(@RequestParam("deptId") Long deptId,@RequestParam("month") String month) throws Exception { + public R getStationMonthReportByStationCode(@RequestParam("deptId") Long deptId,@RequestParam("month") String month) throws Exception { // LocalDate startDate = DateUtil.getFirstDayByYearMonth(month); // LocalDate endDate = DateUtil.getLastDayByYearMonth(month); // return R.data(taskMonthService.getStationMonthReport(startDate,endDate,deptId.toString())); - StationReportAllVO stationReportAllVO = monthReportService.getStationMonthReportByStationCode(deptId,month); + StationRunReportAllVO stationReportAllVO = monthReportService.getStationMonthReportByStationCode(deptId,month); return R.data(stationReportAllVO); } - - @ApiLog - @GetMapping("/getPersonalMonthReport") - @ApiOperation(value = "获取当前登录人个人月报",notes = "获取当前登录人个人月报") - @ApiOperationSupport(order = 2) - @OperationAnnotation(moduleName = "生产月报",title = "统计月报-个人",operatorType = OperatorType.MOBILE,businessType = BusinessType.GENCODE, - action = "获取当前登录人个人月报") - public R getPersonalMonthReport(@RequestParam("month") String month) throws Exception { - PersonalMonthReportVO personalMonthReportVO = monthReportService.getPersonalMonthReport(month); - return R.data(personalMonthReportVO); - } +// +// @ApiLog +// @GetMapping("/getPersonalMonthReport") +// @ApiOperation(value = "获取当前登录人个人月报",notes = "获取当前登录人个人月报") +// @ApiOperationSupport(order = 2) +// @OperationAnnotation(moduleName = "生产月报",title = "统计月报-个人",operatorType = OperatorType.MOBILE,businessType = BusinessType.GENCODE, +// action = "获取当前登录人个人月报") +// public R getPersonalMonthReport(@RequestParam("month") String month) throws Exception { +// PersonalMonthReportVO personalMonthReportVO = monthReportService.getPersonalMonthReport(month); +// return R.data(personalMonthReportVO); +// } @GetMapping("/exportStationMonthReport") @ApiOperation(value = "导出站点月报",notes = "导出站点月报") @ApiOperationSupport(order = 3) - public void exportStationMonthReport(@RequestParam("month") String month,@RequestParam("stationCode") String stationCode,@RequestParam("type") String type) throws UnsupportedEncodingException { - operStationMonthReportService.exportStationMonthReport(month,stationCode,type); - } - - @GetMapping("/exportPersonalMonthReport") - @ApiOperation(value = "导出个人月报",notes = "导出个人月报") - @ApiOperationSupport(order = 4) - public void exportPersonalMonthReport(@RequestParam("month") String month){ - operPersonalMonthReportService.exportPersonalMonthReport(month); + public void exportStationMonthReport(HttpServletResponse response, @RequestParam("deptId") Long deptId, @RequestParam("month") String month) throws Exception { + StationRunReportAllVO stationReportAllVO = monthReportService.getStationMonthReportByStationCode(deptId,month); + operStationMonthReportService.exportStationMonthReport(response, stationReportAllVO,deptId); } +// @GetMapping("/exportStationMonthReport") +// @ApiOperation(value = "导出站点月报",notes = "导出站点月报") +// @ApiOperationSupport(order = 3) +// public void exportStationMonthReport(@RequestParam("month") String month,@RequestParam("stationCode") String stationCode,@RequestParam("type") String type) throws UnsupportedEncodingException { +// operStationMonthReportService.exportStationMonthReport(month,stationCode,type); +// } +// @GetMapping("/exportPersonalMonthReport") +// @ApiOperation(value = "导出个人月报",notes = "导出个人月报") +// @ApiOperationSupport(order = 4) +// public void exportPersonalMonthReport(@RequestParam("month") String month){ +// operPersonalMonthReportService.exportPersonalMonthReport(month); +// } @GetMapping("/getStationMonthReport") @ApiOperation(value = "按机构获取月报测试",notes = "按机构获取月报测试") diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/schedule/OperStationCreateMonthReport.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/schedule/OperStationCreateMonthReport.java index 6adea00..f71d305 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/schedule/OperStationCreateMonthReport.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/schedule/OperStationCreateMonthReport.java @@ -9,6 +9,7 @@ import com.hnac.hzims.operational.report.entity.OperMonthReportEntity; import com.hnac.hzims.operational.report.service.IMonthReportService; import com.hnac.hzims.operational.report.service.IOperStationMonthReportService; import com.hnac.hzims.operational.report.utils.ObjectHelper; +import com.hnac.hzims.operational.report.vo.StationRunReportAllVO; import com.hnac.hzims.operational.station.entity.StationEntity; import com.hnac.hzims.operational.station.service.IStationService; import com.xxl.job.core.biz.model.ReturnT; @@ -63,9 +64,7 @@ public class OperStationCreateMonthReport { }}); if(CollectionUtil.isEmpty(operMonthReportEntityList)){ //按站点生成各电站运维月报 - ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); - singleThreadExecutor.execute(() -> { - StationReportAllVO stationReportAllVO = operStationMonthReportService.getStationMonthReport(yearAndMonth, deptVO); + StationRunReportAllVO stationReportAllVO = operStationMonthReportService.getStationMonthReportV2(yearAndMonth, deptVO); if(ObjectUtil.isNotEmpty(stationReportAllVO)){ OperMonthReportEntity operMonthReportEntity = new OperMonthReportEntity(); operMonthReportEntity.setMonth(yearAndMonth); @@ -79,8 +78,6 @@ public class OperStationCreateMonthReport { e.printStackTrace(); } } - }); - singleThreadExecutor.shutdown(); } else{ log.info("该月{}已生成月报",deptVO.getDeptName()); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IMonthReportService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IMonthReportService.java index a1d5928..f9b415f 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IMonthReportService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IMonthReportService.java @@ -3,6 +3,7 @@ package com.hnac.hzims.operational.report.service; import com.hnac.hzims.operational.report.vo.PersonalMonthReportVO; import com.hnac.hzims.operational.report.vo.StationReportAllVO; import com.hnac.hzims.operational.report.entity.OperMonthReportEntity; +import com.hnac.hzims.operational.report.vo.StationRunReportAllVO; import org.springblade.core.mp.base.BaseService; public interface IMonthReportService extends BaseService { @@ -13,7 +14,7 @@ public interface IMonthReportService extends BaseService * @return * @throws Exception */ - StationReportAllVO getStationMonthReportByStationCode(Long deptId, String month) throws Exception; + StationRunReportAllVO getStationMonthReportByStationCode(Long deptId, String month) throws Exception; /** * 查询个人月报 @@ -21,5 +22,5 @@ public interface IMonthReportService extends BaseService * @return * @throws Exception */ - PersonalMonthReportVO getPersonalMonthReport(String month) throws Exception; +// PersonalMonthReportVO getPersonalMonthReport(String month) throws Exception; } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IOperStationMonthReportService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IOperStationMonthReportService.java index 21c5501..33f9805 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IOperStationMonthReportService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/IOperStationMonthReportService.java @@ -1,8 +1,11 @@ package com.hnac.hzims.operational.report.service; import com.hnac.hzims.operational.report.vo.StationReportAllVO; +import com.hnac.hzims.operational.report.vo.StationRunReportAllVO; import org.springblade.system.vo.DeptVO; +import org.springframework.web.bind.annotation.RequestParam; +import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; public interface IOperStationMonthReportService { @@ -12,11 +15,15 @@ public interface IOperStationMonthReportService { * @return */ StationReportAllVO getStationMonthReport(String yearAndMonth, DeptVO deptVO); - + /** + * 获取电站月报 + * @param yearAndMonth + * @return + */ + StationRunReportAllVO getStationMonthReportV2(String yearAndMonth, DeptVO deptVO); /** * 导出站点月报 - * @param month - * @param type */ - void exportStationMonthReport(String month,String stationCode,String type); +// void exportStationMonthReport(String month,String stationCode,String type); + void exportStationMonthReport(HttpServletResponse response, StationRunReportAllVO stationReportAllVO,Long deptId) throws Exception; } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/MonthReportServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/MonthReportServiceImpl.java index e0cc4d5..be01b60 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/MonthReportServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/MonthReportServiceImpl.java @@ -9,6 +9,7 @@ import com.hnac.hzims.operational.report.entity.OperMonthReportEntity; import com.hnac.hzims.operational.report.mapper.MonthReportMapper; import com.hnac.hzims.operational.report.service.IMonthReportService; import com.hnac.hzims.operational.report.utils.ObjectHelper; +import com.hnac.hzims.operational.report.vo.StationRunReportAllVO; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; @@ -33,12 +34,12 @@ public class MonthReportServiceImpl extends BaseServiceImpl(){{ - eq(OperMonthReportEntity::getMonth,month); - eq(OperMonthReportEntity::getUserId,user.getUserId()); - }}); - personalMonthReportVO = ObjectUtil.isNotEmpty(operMonthReportEntity) ? (PersonalMonthReportVO) ObjectHelper.byte2obj(operMonthReportEntity.getObject()) : null; - } - return personalMonthReportVO; - } +// @Override +// public PersonalMonthReportVO getPersonalMonthReport(String month) throws Exception { +// PersonalMonthReportVO personalMonthReportVO = new PersonalMonthReportVO(); +// BladeUser user = AuthUtil.getUser(); +// if(month.equals(YearMonth.now().toString())){ +// personalMonthReportVO = operPersonalMonthReportService.getPersonalMonthReport(month,user.getUserId()); +// } +// else{ +// OperMonthReportEntity operMonthReportEntity = this.getOne(new LambdaQueryWrapper(){{ +// eq(OperMonthReportEntity::getMonth,month); +// eq(OperMonthReportEntity::getUserId,user.getUserId()); +// }}); +// personalMonthReportVO = ObjectUtil.isNotEmpty(operMonthReportEntity) ? (PersonalMonthReportVO) ObjectHelper.byte2obj(operMonthReportEntity.getObject()) : null; +// } +// return personalMonthReportVO; +// } } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/OperStationMonthReportServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/OperStationMonthReportServiceImpl.java index a2ff283..9486a83 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/OperStationMonthReportServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/service/impl/OperStationMonthReportServiceImpl.java @@ -1,5 +1,6 @@ package com.hnac.hzims.operational.report.service.impl; +import cn.afterturn.easypoi.word.WordExportUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -22,23 +23,33 @@ import com.hnac.hzims.operational.report.vo.*; import com.hnac.hzims.operational.station.entity.StationEntity; import com.hnac.hzims.operational.station.service.IStationService; import com.hnac.hzims.operational.util.ExcelUtil; +import com.hnac.hzims.operational.util.WordUtils; import com.hnac.hzims.ticket.allTicket.dto.TicketStatisticDTO; import com.hnac.hzims.ticket.allTicket.fegin.ITicketInfoAllClient; import com.hnac.hzims.ticket.allTicket.vo.TicketInfoStatisticVO; import com.hnac.hzinfo.inspect.ai.feign.IInspectRobotTaskClient; +import com.hnac.hzinfo.inspect.report.feign.IInspectReportClient; import com.hnac.hzinfo.inspect.task.feign.IInspectTaskReportClient; import com.hnac.hzinfo.inspect.task.vo.TaskReportVO; +import com.hnac.hzinfo.sdk.core.response.HzPage; +import com.hnac.hzinfo.sdk.core.response.Result; +import com.hnac.hzinfo.sdk.v5.soe.SoeDataClient; +import com.hnac.hzinfo.sdk.v5.soe.dto.StbAnalysisDTO; +import com.hnac.hzinfo.sdk.v5.soe.vo.StbAnalysisVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.*; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.logger.BladeLogger; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.*; import org.springblade.system.entity.Dept; import org.springblade.system.feign.ISysClient; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; import org.springblade.system.vo.DeptVO; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -47,12 +58,14 @@ import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.math.BigDecimal; import java.math.RoundingMode; +import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -63,385 +76,735 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import java.util.stream.IntStream; +import static com.hnac.hzims.operational.main.constant.MainConstants.PROJECT_MANAGER; +import static org.springblade.core.tool.utils.DateUtil.DATETIME_FORMATTER; + @Service @Slf4j @RequiredArgsConstructor public class OperStationMonthReportServiceImpl implements IOperStationMonthReportService { - private final IImsDutyMainService iImsDutyMainService; - private final IOperMaintenanceTaskService operMaintenanceTaskService; - private final IOperDefectService operDefectService; - private final IOperAccessTaskService operAccessTaskService; - private final IMainSystemMonitoringService mainSystemMonitoringService; - private final IStationService stationService; - private final IOperPhenomenonService operPhenomenonService; - private final IInspectRobotTaskClient inspectRobotTaskClient; - private final IFdpDiagnoseClient diagnoseClient; - private final ISysClient sysClient; - private final IInspectTaskReportClient taskReportClient; - private final ITicketInfoAllClient ticketInfoAllClient; - private final BladeLogger logger; - - /**统计月报线程数量**/ - private static final int POOL_QUANTITY = 8; - /**通过线程池异步获取月报各模块内容 主要分为八块内容**/ - private static ExecutorService pool = Executors.newFixedThreadPool(POOL_QUANTITY); - - /**统计月报-电站-对内**/ - private static final String STATION_REPORT_INSIDE = "2"; - /**统计月报-电站-对外**/ - private static final String STATION_REPORT_OUTSIDE = "1"; - - @Override - public StationReportAllVO getStationMonthReport(String yearAndMonth, DeptVO deptVO) { - StationReportAllVO stationReportAllVo = new StationReportAllVO(); - stationReportAllVo.setStationName(deptVO.getDeptName()); - stationReportAllVo.setYearMonth(YearMonth.parse(yearAndMonth).format(DateTimeFormatter.ofPattern("yyyy年MM月"))); - //处理请求参数 - Map params = new HashMap<>(); - //使用预定义实例来转换 - DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE; - LocalDate startDate = DateUtil.getFirstDayByYearMonth(yearAndMonth); - LocalDate endDate = DateUtil.getLastDayByYearMonth(yearAndMonth); - params.put("startDate", fmt.format(startDate)); - params.put("endDate", fmt.format(endDate)); - - List deptIdList = new ArrayList<>(); - deptIdList.add(deptVO.getId()); - //获取下属机构 - R> childDeptListR = sysClient.getDeptChild(deptVO.getId()); - if (childDeptListR.isSuccess() && CollectionUtil.isNotEmpty(childDeptListR.getData())) { - deptIdList.addAll(childDeptListR.getData().stream().map(Dept::getId).collect(Collectors.toList())); - } - params.put("deptId", deptIdList); - - //获取机构及子机构下的站点 - List stationEntityList = stationService.list(new LambdaQueryWrapper() {{ - in(StationEntity::getRefDept, deptIdList); - }}); - - //监控线程执行完后返回结果 - CountDownLatch countDownLatch = new CountDownLatch(POOL_QUANTITY); - - //电站发电情况 - pool.execute(() -> { - try { - List powerList = new ArrayList<>(); - stationEntityList.forEach(stationEntity -> { - List stationReportVOList = mainSystemMonitoringService.getElectricSituation(yearAndMonth, stationEntity.getCode()); - powerList.addAll(stationReportVOList); - }); - stationReportAllVo.setStationReportVOList(powerList); - } - finally { - countDownLatch.countDown(); - } - }); - //值班情况 - pool.execute(() -> { - try { - List dutyReportVOList = iImsDutyMainService.getDutyMainStatisticsByClassId(params); - stationReportAllVo.setDutyReportVOList(dutyReportVOList); - } - finally { - countDownLatch.countDown(); - } - }); - //日常维护 - pool.execute(() -> { - try { - List maintenanceList = operMaintenanceTaskService.getMaintenanceStatisticsByDisposer(params); - stationReportAllVo.setMaintenanceReportVOList(maintenanceList); - } - finally { - countDownLatch.countDown(); - } - }); - //检修 - pool.execute(() -> { - try { - List accessList = operAccessTaskService.getAccessTaskByDisposer(params); - stationReportAllVo.setAccessReportVOList(accessList); - } - finally { - countDownLatch.countDown(); - } - }); - //缺陷 - pool.execute(() -> { - try { - List defectList = operDefectService.getFaultByFaultCode(params); - stationReportAllVo.setDefectReportsVOList(defectList); - } - finally { - countDownLatch.countDown(); - } - }); - //两票统计 - pool.execute(() -> { - try { - String deptIds = deptIdList.stream().map(deptId -> deptId.toString()).collect(Collectors.joining(",")); - TicketStatisticDTO ticketStatisticDTO=new TicketStatisticDTO(); - ticketStatisticDTO.setStartDate(fmt.format(startDate)); - ticketStatisticDTO.setEndDate(fmt.format(endDate)); - ticketStatisticDTO.setDeptIds(deptIds); - List ticketVOS = ticketInfoAllClient.getTicketReportStatistic(ticketStatisticDTO); - stationReportAllVo.setTicketInfoStatisticVOList(ticketVOS); - } - finally { - countDownLatch.countDown(); - } - }); - //巡检 - pool.execute(() -> { - try { - List taskReportVOS = taskReportClient.getInspectTaskReport(params); - this.fillInspectProblem(startDate,endDate,deptIdList,taskReportVOS); - stationReportAllVo.setInspectReportVOList(taskReportVOS); - } - finally { - countDownLatch.countDown(); - } - }); - //智能诊断 - pool.execute(() -> { - if (CollectionUtil.isNotEmpty(stationEntityList)) { - StatisticStatusDTO statisticStatusDTO = new StatisticStatusDTO(); - List stationIds = stationEntityList.stream().map(StationEntity::getCode).collect(Collectors.toList()); - String[] stationIdArray = new String[stationIds.size()]; - stationIds.toArray(stationIdArray); - statisticStatusDTO.setStationIds(stationIdArray); - statisticStatusDTO.setThreshold(0.3f); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - statisticStatusDTO.setStart(formatter.format(LocalDateTime.of(startDate, LocalTime.MIN))); - statisticStatusDTO.setEnd(formatter.format(LocalDateTime.of(endDate, LocalTime.MAX))); - R>> diagnoseResult = diagnoseClient.getStatisticStatus(statisticStatusDTO); - List diagnoseConclusionList = new ArrayList<>(); - if (diagnoseResult.isSuccess()) { - Map> statisticStatusVOList = diagnoseResult.getData(); - statisticStatusVOList.forEach((k, v) -> { - if (v.size() > 5) { - v = v.subList(0, 5); - } - String diagnoseConclusion = v.stream().map(s -> { - String riskLevel = ""; - if (s.getSeverity() >= 3) { - riskLevel = "高风险"; - } else if (s.getSeverity() == 2) { - riskLevel = "一般"; - } else if (s.getSeverity() == 1) { - riskLevel = "低风险"; - } - String c = "发生在" + s.getOrd() + "的" + s.getName() + ",风险等级:" + riskLevel + ",最后一次出现的时间:" + s.getLastBeginTime() + ";";//,持续时长:"+s.getLongTime()+" - return c; - }).collect(Collectors.joining("\n")); - if (StringUtil.isNotBlank(diagnoseConclusion)) { - StationEntity stationEntity = stationService.getById(k); - if (ObjectUtil.isNotEmpty(stationEntity)) { - diagnoseConclusion = stationEntity.getName() + "本月智能诊断服务预警前五位的可能存在风险的故障信息:\n" + diagnoseConclusion; - diagnoseConclusionList.add(diagnoseConclusion); - } - } - }); - stationReportAllVo.setDiagnoseConclusion(diagnoseConclusionList.stream().collect(Collectors.joining("\n"))); - stationReportAllVo.setStatisticStatusVOList(statisticStatusVOList); - } - } - countDownLatch.countDown(); - }); - //所有模板数据获取完成后释放锁 - try { - countDownLatch.await(); - } catch (InterruptedException e) { - e.printStackTrace(); - Thread.currentThread().interrupt(); - } - //小结 - this.getStationReportConclusion(stationReportAllVo, params); - return stationReportAllVo; - } + private final IImsDutyMainService iImsDutyMainService; + private final IOperMaintenanceTaskService operMaintenanceTaskService; + private final IInspectReportClient inspectReportClient; + private final IOperDefectService operDefectService; + private final IOperAccessTaskService operAccessTaskService; + private final IMainSystemMonitoringService mainSystemMonitoringService; + private final IStationService stationService; + private final IOperPhenomenonService operPhenomenonService; + private final IInspectRobotTaskClient inspectRobotTaskClient; + private final IFdpDiagnoseClient diagnoseClient; + private final ISysClient sysClient; + private final IUserClient userClient; + private final IInspectTaskReportClient taskReportClient; + private final ITicketInfoAllClient ticketInfoAllClient; + private final BladeLogger logger; + private final SoeDataClient soeDataClient; - /** - * 导出统计月报 - * @param month 月份 - * @param stationCode 站点编码 - * @param type 导出类型 - */ - @Override - public void exportStationMonthReport(String month, String stationCode, String type) { - DeptVO deptVO = BeanUtil.copy(sysClient.getDept(Long.parseLong(stationCode)).getData(), DeptVO.class); - StationReportAllVO stationReportAllVO = this.getStationMonthReport(month, deptVO); - Assert.isTrue(ObjectUtil.isNotEmpty(stationReportAllVO),()->{ - throw new ServiceException("电站统计月报查询为空"); - }); - - ExcelData ed = new ExcelData(); - XSSFWorkbook readWb = ed.getWb(); - XSSFSheet readSheet = null; - - ClassPathResource classPathResource = new ClassPathResource("files/运维月度报表内容设计0708.xlsx"); - InputStream inputStream = null; - XSSFWorkbook wb = null; - try { - inputStream = classPathResource.getInputStream(); - wb = new XSSFWorkbook(inputStream); - } catch (IOException e) { - e.printStackTrace(); - } - Assert.isTrue(ObjectUtil.isNotEmpty(inputStream) && ObjectUtil.isNotEmpty(wb),()->{ - throw new ServiceException("站点统计月报excel模板读取失败"); - }); + /** + * 统计月报线程数量 + **/ + private static final int POOL_QUANTITY = 8; + /** + * 通过线程池异步获取月报各模块内容 主要分为八块内容 + **/ + private static ExecutorService pool = Executors.newFixedThreadPool(POOL_QUANTITY); - if(STATION_REPORT_OUTSIDE.equals(type)) { - readSheet = readWb.getSheet("站长月度报告-对外"); - readWb.setSheetHidden(1, true); - readWb.setSheetHidden(2, true); - } - else if(STATION_REPORT_INSIDE.equals(type)) { - readSheet = readWb.getSheet("站长月度报告-对内"); - readWb.setSheetHidden(0, true); - readWb.setSheetHidden(2, true); - } + /** + * 统计月报-电站-对内 + **/ + private static final String STATION_REPORT_INSIDE = "2"; + /** + * 统计月报-电站-对外 + **/ + private static final String STATION_REPORT_OUTSIDE = "1"; - fillReport(readSheet,stationReportAllVO,type); + @Override + public StationReportAllVO getStationMonthReport(String yearAndMonth, DeptVO deptVO) { + StationReportAllVO stationReportAllVo = new StationReportAllVO(); + stationReportAllVo.setStationName(deptVO.getDeptName()); + stationReportAllVo.setYearMonth(YearMonth.parse(yearAndMonth).format(DateTimeFormatter.ofPattern("yyyy年MM月"))); + //处理请求参数 + Map params = new HashMap<>(); + //使用预定义实例来转换 + DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE; + LocalDate startDate = DateUtil.getFirstDayByYearMonth(yearAndMonth); + LocalDate endDate = DateUtil.getLastDayByYearMonth(yearAndMonth); + params.put("startDate", fmt.format(startDate)); + params.put("endDate", fmt.format(endDate)); - // 下载导出 - RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); - HttpServletResponse response = ((ServletRequestAttributes) requestAttributes).getResponse(); - String fileName = "(" + month + ")站长月度报告"; - try { - ExcelUtil.exportExcel(readWb,response,fileName); - } catch (IOException e) { - e.printStackTrace(); - } - } + List deptIdList = new ArrayList<>(); + deptIdList.add(deptVO.getId()); + //获取下属机构 + R> childDeptListR = sysClient.getDeptChild(deptVO.getId()); + if (childDeptListR.isSuccess() && CollectionUtil.isNotEmpty(childDeptListR.getData())) { + deptIdList.addAll(childDeptListR.getData().stream().map(Dept::getId).collect(Collectors.toList())); + } + params.put("deptId", deptIdList); - /** - * 填充统计月报 - * @param sheet excel sheet - * @param stationReportAllVO 月报对象 - * @param type - */ - private void fillReport(XSSFSheet sheet, StationReportAllVO stationReportAllVO, String type) { - logger.info("hzims:operational:station:report",JSON.toJSONString(stationReportAllVO)); - //当前行数 - int currentRowNum = 0; - //填充标题 - XSSFCell cell_0_0 = sheet.getRow(currentRowNum).getCell(0); - String title = String.format(cell_0_0.getStringCellValue(),stationReportAllVO.getStationName(),stationReportAllVO.getYearMonth()); - cell_0_0.setCellValue(title); - //电站发电情况 - currentRowNum = currentRowNum+2; - currentRowNum = this.fillPowerGeneration(stationReportAllVO.getStationReportVOList(),currentRowNum,sheet,type); - //值班情况 - currentRowNum = currentRowNum+3; - currentRowNum = this.fillDuty(stationReportAllVO.getDutyReportVOList(),currentRowNum,sheet,type); - //日常维护 - currentRowNum = currentRowNum+2; - currentRowNum = this.fillMaintenance(stationReportAllVO.getMaintenanceReportVOList(),currentRowNum,sheet,type); - //巡检 - currentRowNum = currentRowNum+2; - currentRowNum = this.fillInspect(stationReportAllVO.getInspectReportVOList(),currentRowNum,sheet,type); - //检修 - currentRowNum = currentRowNum+2; - currentRowNum = this.fillAccess(stationReportAllVO.getAccessReportVOList(),currentRowNum,sheet,type); - //缺陷 - currentRowNum = currentRowNum+2; - currentRowNum = this.fillDefect(stationReportAllVO.getDefectReportsVOList(),currentRowNum,sheet,type); - //两票 - currentRowNum = currentRowNum+2; - currentRowNum = this.fillTicket(stationReportAllVO.getTicketInfoStatisticVOList(),currentRowNum,sheet,type); - //智能诊断 - currentRowNum = currentRowNum+1; - currentRowNum = this.fillDiagnosis(stationReportAllVO.getDiagnoseConclusion(),currentRowNum,sheet,type); - //小结 - currentRowNum = this.fillConclusion(stationReportAllVO,currentRowNum,sheet,type); - //处理建议合并单元格 - //this.mergeSuggestion(currentRowNum+2,sheet,type); - } + //获取机构及子机构下的站点 + List stationEntityList = stationService.list(new LambdaQueryWrapper() {{ + in(StationEntity::getRefDept, deptIdList); + }}); - private void mergeSuggestion(int currentRowNum, XSSFSheet sheet, String type) { - final int OUTSIDE_COLUMN_NUM = 4; - final int INSIDE_COLUMN_NUM = 5; - if(STATION_REPORT_OUTSIDE.equals(type)) { - CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum, (short) currentRowNum, (short) 0, (short) OUTSIDE_COLUMN_NUM); - sheet.addMergedRegion(cellRangeAddress); - } - else if(STATION_REPORT_INSIDE.equals(type)) { - CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum, (short) currentRowNum, (short) 0, (short) INSIDE_COLUMN_NUM); - sheet.addMergedRegion(cellRangeAddress); - } - } + //监控线程执行完后返回结果 + CountDownLatch countDownLatch = new CountDownLatch(POOL_QUANTITY); + long startMillis = System.currentTimeMillis(); + //电站发电情况 + pool.execute(() -> { + try { + List powerList = new ArrayList<>(); + stationEntityList.forEach(stationEntity -> { + List stationReportVOList = mainSystemMonitoringService.getElectricSituation(yearAndMonth, stationEntity.getCode()); + powerList.addAll(stationReportVOList); + }); + stationReportAllVo.setStationReportVOList(powerList); + } finally { + countDownLatch.countDown(); + log.info("电站发电耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("电站发电耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //值班情况 + pool.execute(() -> { + try { +// List dutyReportVOList = iImsDutyMainService.getDutyMainStatisticsByClassId(params); +// stationReportAllVo.setDutyReportVOList(dutyReportVOList); + } finally { + countDownLatch.countDown(); + log.info("值班情况耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("值班情况耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //日常维护 + pool.execute(() -> { + try { + List maintenanceList = operMaintenanceTaskService.getMaintenanceStatisticsByDisposer(params); + stationReportAllVo.setMaintenanceReportVOList(maintenanceList); + } finally { + countDownLatch.countDown(); + log.info("日常维护:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("日常维护:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //检修 + pool.execute(() -> { + try { +// List accessList = operAccessTaskService.getAccessTaskByName(params); +// stationReportAllVo.setAccessReportVOList(accessList); + } finally { + countDownLatch.countDown(); + log.info("检修:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("检修:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //缺陷 + pool.execute(() -> { + try { + List defectList = operDefectService.getFaultByFaultCode(params); + stationReportAllVo.setDefectReportsVOList(defectList); + } finally { + countDownLatch.countDown(); + log.info("缺陷:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("缺陷:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //两票统计 + pool.execute(() -> { + try { + String deptIds = deptIdList.stream().map(deptId -> deptId.toString()).collect(Collectors.joining(",")); + TicketStatisticDTO ticketStatisticDTO = new TicketStatisticDTO(); + ticketStatisticDTO.setStartDate(fmt.format(startDate)); + ticketStatisticDTO.setEndDate(fmt.format(endDate)); + ticketStatisticDTO.setDeptIds(deptIds); + List ticketVOS = ticketInfoAllClient.getTicketReportStatistic(ticketStatisticDTO); + stationReportAllVo.setTicketInfoStatisticVOList(ticketVOS); + } finally { + countDownLatch.countDown(); + log.info("两票统计:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("两票统计:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //巡检 + pool.execute(() -> { + try { + List taskReportVOS = taskReportClient.getInspectTaskReport(params); + this.fillInspectProblem(startDate, endDate, deptIdList, taskReportVOS); + stationReportAllVo.setInspectReportVOList(taskReportVOS); + } finally { + countDownLatch.countDown(); + log.info("巡检:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("巡检:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //智能诊断 + pool.execute(() -> { + if (CollectionUtil.isNotEmpty(stationEntityList)) { + StatisticStatusDTO statisticStatusDTO = new StatisticStatusDTO(); + List stationIds = stationEntityList.stream().map(StationEntity::getCode).collect(Collectors.toList()); + String[] stationIdArray = new String[stationIds.size()]; + stationIds.toArray(stationIdArray); + statisticStatusDTO.setStationIds(stationIdArray); + statisticStatusDTO.setThreshold(0.3f); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + statisticStatusDTO.setStart(formatter.format(LocalDateTime.of(startDate, LocalTime.MIN))); + statisticStatusDTO.setEnd(formatter.format(LocalDateTime.of(endDate, LocalTime.MAX))); + R>> diagnoseResult = diagnoseClient.getStatisticStatus(statisticStatusDTO); + List diagnoseConclusionList = new ArrayList<>(); + if (diagnoseResult.isSuccess()) { + Map> statisticStatusVOList = diagnoseResult.getData(); + statisticStatusVOList.forEach((k, v) -> { + if (v.size() > 5) { + v = v.subList(0, 5); + } + String diagnoseConclusion = v.stream().map(s -> { + String riskLevel = ""; + if (s.getSeverity() >= 3) { + riskLevel = "高风险"; + } else if (s.getSeverity() == 2) { + riskLevel = "一般"; + } else if (s.getSeverity() == 1) { + riskLevel = "低风险"; + } + String c = "发生在" + s.getOrd() + "的" + s.getName() + ",风险等级:" + riskLevel + ",最后一次出现的时间:" + s.getLastBeginTime() + ";";//,持续时长:"+s.getLongTime()+" + return c; + }).collect(Collectors.joining("\n")); + if (StringUtil.isNotBlank(diagnoseConclusion)) { + StationEntity stationEntity = stationService.getById(k); + if (ObjectUtil.isNotEmpty(stationEntity)) { + diagnoseConclusion = stationEntity.getName() + "本月智能诊断服务预警前五位的可能存在风险的故障信息:\n" + diagnoseConclusion; + diagnoseConclusionList.add(diagnoseConclusion); + } + } + }); + stationReportAllVo.setDiagnoseConclusion(diagnoseConclusionList.stream().collect(Collectors.joining("\n"))); + stationReportAllVo.setStatisticStatusVOList(statisticStatusVOList); + } + } + countDownLatch.countDown(); + }); + //所有模板数据获取完成后释放锁 + try { + countDownLatch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + Thread.currentThread().interrupt(); + } + //小结 + this.getStationReportConclusion(stationReportAllVo, params); + return stationReportAllVo; + } + @Override + public StationRunReportAllVO getStationMonthReportV2(String yearAndMonth, DeptVO deptVO) { + StationRunReportAllVO stationReportAllVo = new StationRunReportAllVO(); + stationReportAllVo.setStationName(deptVO.getDeptName()); + stationReportAllVo.setYearMonth(YearMonth.parse(yearAndMonth).format(DateTimeFormatter.ofPattern("yyyy年MM月"))); + //处理请求参数 + Map params = new HashMap<>(); + //使用预定义实例来转换 + DateTimeFormatter fmt = DateTimeFormatter.ISO_LOCAL_DATE; + LocalDate startDate = DateUtil.getFirstDayByYearMonth(yearAndMonth); + LocalDate endDate = DateUtil.getLastDayByYearMonth(yearAndMonth); + params.put("startDate", fmt.format(startDate)); + params.put("endDate", fmt.format(endDate)); - private int fillConclusion(StationReportAllVO stationReportAllVO, int currentRowNum, XSSFSheet sheet, String type) { - final int OUTSIDE_COLUMN_NUM = 4; - final int INSIDE_COLUMN_NUM = 5; - sheet.shiftRows(currentRowNum+1, sheet.getLastRowNum(), 1,true,false); - sheet.createRow(currentRowNum+1); - XSSFRow row = sheet.getRow(currentRowNum + 1); - row.setHeight((short) 2400); - XSSFRow lastRow = sheet.getRow(currentRowNum); - if(STATION_REPORT_OUTSIDE.equals(type)) { - IntStream.iterate(0,col_index->col_index+1).limit(OUTSIDE_COLUMN_NUM+1).forEachOrdered(col_index->{ - row.createCell(col_index); - XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); - cellStyle.setAlignment(HorizontalAlignment.LEFT); - cellStyle.setWrapText(true); - row.getCell(col_index).setCellStyle(cellStyle); + List deptIdList = new ArrayList<>(); + deptIdList.add(deptVO.getId()); + //获取下属机构 + R> childDeptListR = sysClient.getDeptChild(deptVO.getId()); + if (childDeptListR.isSuccess() && CollectionUtil.isNotEmpty(childDeptListR.getData())) { + deptIdList.addAll(childDeptListR.getData().stream().map(Dept::getId).collect(Collectors.toList())); + } + params.put("deptId", deptIdList); - }); - CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum+1, (short) currentRowNum+1, (short) 0, (short) OUTSIDE_COLUMN_NUM); - sheet.addMergedRegion(cellRangeAddress); - row.getCell(0).setCellValue(stationReportAllVO.getStationOutsideConclusion()); - } - else if(STATION_REPORT_INSIDE.equals(type)) { - IntStream.iterate(0,col_index->col_index+1).limit(INSIDE_COLUMN_NUM+1).forEachOrdered(col_index->{ - row.createCell(col_index); - XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); - cellStyle.setWrapText(true); - cellStyle.setAlignment(HorizontalAlignment.LEFT); - row.getCell(col_index).setCellStyle(cellStyle); - }); - CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum+1, (short) currentRowNum+1, (short) 0, (short) INSIDE_COLUMN_NUM); - sheet.addMergedRegion(cellRangeAddress); - row.getCell(0).setCellValue(stationReportAllVO.getStationInsideConclusion()); - } - return currentRowNum+1; - } + //获取机构及子机构下的站点 + List stationEntityList = stationService.list(new LambdaQueryWrapper() {{ + in(StationEntity::getRefDept, deptIdList); + }}); - private int fillDiagnosis(String diagnoseConclusion, int currentRowNum, XSSFSheet sheet, String type) { - final int OUTSIDE_COLUMN_NUM = 4; - final int INSIDE_COLUMN_NUM = 5; - sheet.shiftRows(currentRowNum+1, sheet.getLastRowNum(), 1,true,false); - sheet.createRow(currentRowNum+1); - XSSFRow row = sheet.getRow(currentRowNum + 1); - row.setHeight((short) 800); - XSSFRow lastRow = sheet.getRow(currentRowNum-1); - if(STATION_REPORT_OUTSIDE.equals(type)) { - IntStream.iterate(0,col_index->col_index+1).limit(OUTSIDE_COLUMN_NUM+1).forEachOrdered(col_index->{ - row.createCell(col_index); - XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); - cellStyle.setWrapText(true); - row.getCell(col_index).setCellStyle(cellStyle); - }); - CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum+1, (short) currentRowNum+1, (short) 0, (short) OUTSIDE_COLUMN_NUM); - sheet.addMergedRegion(cellRangeAddress); - } - else if(STATION_REPORT_INSIDE.equals(type)) { - IntStream.iterate(0,col_index->col_index+1).limit(INSIDE_COLUMN_NUM+1).forEachOrdered(col_index->{ - row.createCell(col_index); - XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); - cellStyle.setWrapText(true); - row.getCell(col_index).setCellStyle(cellStyle); - }); - CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum+1, (short) currentRowNum+1, (short) 0, (short) INSIDE_COLUMN_NUM); - sheet.addMergedRegion(cellRangeAddress); - } - row.getCell(0).setCellValue(diagnoseConclusion); - return currentRowNum+1; - } + //监控线程执行完后返回结果 + CountDownLatch countDownLatch = new CountDownLatch(POOL_QUANTITY); + long startMillis = System.currentTimeMillis(); + //电站发电情况 + pool.execute(() -> { + try { + List reportVOS = new ArrayList<>(); + String[] yearMon = yearAndMonth.split("-"); + Integer year = Integer.valueOf(yearMon[0]); + Calendar calendar=Calendar.getInstance(); + Integer currentYear = calendar.get(Calendar.YEAR); + if (year>currentYear-3) { + mainSystemMonitoringService.getElectricSituationByRedis(yearAndMonth, reportVOS, stationEntityList); + }else { + stationEntityList.forEach(stationEntity -> { + List stationReportVOList = mainSystemMonitoringService.getElectricSituationV2(yearAndMonth, stationEntity.getCode()); + reportVOS.addAll(stationReportVOList); + }); + } + stationReportAllVo.setStationReportVOList(reportVOS); + }catch (Exception e){ + log.error("", e); + System.out.println(e); + }finally { + countDownLatch.countDown(); + log.info("电站发电耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("电站发电耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //值班情况 + pool.execute(() -> { + try { + List dutyReportVOList = iImsDutyMainService.getDutyMainRunReport(params); + stationReportAllVo.setDutyReportVOList(dutyReportVOList); + } finally { + countDownLatch.countDown(); + log.info("值班情况耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("值班情况耗时:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //日常维护 + pool.execute(() -> { + try { + List maintenanceList = operMaintenanceTaskService.getMaintenanceStatisticsByName(params); + stationReportAllVo.setMaintenanceReportVOList(maintenanceList); + } finally { + countDownLatch.countDown(); + log.info("日常维护:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("日常维护:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //巡检 + pool.execute(() -> { + try { + List reportVOS=new ArrayList<>(); + List inspectStatisticsByName = inspectReportClient.getInspectStatisticsByName(deptIdList, fmt.format(startDate), fmt.format(endDate)); + if(CollectionUtil.isNotEmpty(inspectStatisticsByName)) { + for (int i = 0; i < inspectStatisticsByName.size(); i++) { + TaskReportVO taskReportVO = inspectStatisticsByName.get(i); + RunReportVO runReportVO = new RunReportVO(); + runReportVO.setIndex(i+1); + runReportVO.setUserName(taskReportVO.getUserName()); + runReportVO.setCompleteNum(taskReportVO.getCompleteNum()); + runReportVO.setIncompleteNum(taskReportVO.getIncompleteNum()); + runReportVO.setRemark(taskReportVO.getCompleteSituation() + "" + taskReportVO.getIncompleteSituation()); + reportVOS.add(runReportVO); + } + int complete = inspectStatisticsByName.stream().mapToInt(TaskReportVO::getCompleteNum).sum(); + int inComplete = inspectStatisticsByName.stream().mapToInt(TaskReportVO::getIncompleteNum).sum(); + RunReportVO runReportVO = new RunReportVO(); + runReportVO.setUserName("合计"); + runReportVO.setCompleteNum(complete); + runReportVO.setIncompleteNum(inComplete); + reportVOS.add(runReportVO); + }else { + RunReportVO runReportVO = new RunReportVO(); + runReportVO.setUserName("合计"); + runReportVO.setCompleteNum(0); + runReportVO.setIncompleteNum(0); + reportVOS.add(runReportVO); + } + stationReportAllVo.setInspectReportVOList(reportVOS); + } finally { + countDownLatch.countDown(); + log.info("日常维护:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("日常维护:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //检修 + pool.execute(() -> { + try { + List accessList = operAccessTaskService.getAccessTaskByName(params); + stationReportAllVo.setAccessReportVOList(accessList); + } finally { + countDownLatch.countDown(); + log.info("检修:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("检修:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //缺陷 + pool.execute(() -> { + try { + List defectList = operDefectService.getDefectByName(params); + stationReportAllVo.setDefectReportsVOList(defectList); + } finally { + countDownLatch.countDown(); + log.info("缺陷:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("缺陷:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //两票统计 + pool.execute(() -> { + try { + String deptIds = deptIdList.stream().map(deptId -> deptId.toString()).collect(Collectors.joining(",")); + TicketStatisticDTO ticketStatisticDTO = new TicketStatisticDTO(); + ticketStatisticDTO.setStartDate(fmt.format(startDate)); + ticketStatisticDTO.setEndDate(fmt.format(endDate)); + ticketStatisticDTO.setDeptIds(deptIds); + List ticketVOS = ticketInfoAllClient.getTicketReportStatistic(ticketStatisticDTO); + if (CollectionUtil.isNotEmpty(ticketVOS)){ + stationReportAllVo.setTicketInfoStatisticVOList(ticketVOS); + } + } finally { + countDownLatch.countDown(); + log.info("两票统计:"+(System.currentTimeMillis()-startMillis)+"ms"); + System.out.printf("两票统计:"+(System.currentTimeMillis()-startMillis)+"ms"); + } + }); + //智能诊断 + pool.execute(() -> { + List list=new ArrayList<>(); + if (CollectionUtil.isNotEmpty(stationEntityList)) { + StbAnalysisDTO param = new StbAnalysisDTO(); + param.setStartTime(LocalDateTime.parse(fmt.format(startDate)+" 00:00:00", org.springblade.core.tool.utils.DateUtil.DATETIME_FORMATTER)); + param.setEndTime(LocalDateTime.parse(fmt.format(endDate)+" 23:59:59", org.springblade.core.tool.utils.DateUtil.DATETIME_FORMATTER)); +// param.setStartTime(startDate.atStartOfDay()); +// param.setEndTime(endDate.at()); + List collect = stationEntityList.stream().filter(s -> ObjectUtil.isNotEmpty(s.getCode())).map(StationEntity::getCode).collect(Collectors.toList()); + param.setStations(Arrays.asList("902100000026")); +// param.setPageSize(10); +// param.setPage(0); + param.setNeedPage(false); + Result> result = soeDataClient.pageStbAnalysis(param); + if(result.isSuccess() && CollectionUtil.isNotEmpty(result.getData().getRecords())){ + List data = result.getData().getRecords(); + for (int i = 0; i < data.size(); i++) { + StbAnalysisVO stbAnalysisVO = data.get(i); + FDPRunReportVO fdpRunReportVO=new FDPRunReportVO(); + fdpRunReportVO.setIndex(i+1); + fdpRunReportVO.setLastBeginTime(stbAnalysisVO.getTs()); + fdpRunReportVO.setContent(stbAnalysisVO.getContent()); + fdpRunReportVO.setType(stbAnalysisVO.getFtype()); + Long count = data.stream().filter(s -> stbAnalysisVO.equals(s.getFaultid())).count(); + fdpRunReportVO.setNum(count.toString()); + fdpRunReportVO.setReason(stbAnalysisVO.getFinfo()); + list.add(fdpRunReportVO); + } + } + } + countDownLatch.countDown(); + }); + //所有模板数据获取完成后释放锁 + try { + countDownLatch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + logger.error(e.getMessage(), e.toString()); + Thread.currentThread().interrupt(); + } + //小结 + this.getStationReportConclusionV2(stationReportAllVo, params); + return stationReportAllVo; + } + /** + * 导出统计月报 + * + * @param month 月份 + * @param stationCode 站点编码 + * @param type 导出类型 + */ + @Override + public void exportStationMonthReport(HttpServletResponse response, StationRunReportAllVO stationReportAllVO,Long deptId) throws Exception { + Assert.isTrue(ObjectUtil.isNotEmpty(stationReportAllVO), () -> { + throw new ServiceException("电站统计月报查询为空"); + }); + + HashMap map = getHashMap(stationReportAllVO, deptId); + + + XWPFDocument xwpfDocument = WordExportUtil.exportWord07("template/word/stationMonthReport.docx", map); + // 下载导出 + String filename = stationReportAllVO.getYearMonth()+stationReportAllVO.getStationName()+"月报"; + // 设置头信息 + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/vnd.ms-excel"); + ServletOutputStream outputStream = null; + try { + //设置xlsx格式 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename + ".docx", "UTF-8")); + //创建一个输出流 + outputStream = response.getOutputStream(); + + //写入数据 + xwpfDocument.write(outputStream); + // 关闭 + outputStream.close(); + xwpfDocument.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private HashMap getHashMap(StationRunReportAllVO stationReportAllVO, Long deptId) throws IllegalAccessException { + HashMap map = new HashMap<>(); + map.put("deptName", stationReportAllVO.getStationName()); + List userListByRoleAlias = userClient.relationUserListByRoleAlias("200000", deptId, PROJECT_MANAGER).getData(); + if (CollectionUtil.isNotEmpty(userListByRoleAlias)){ + User user = userListByRoleAlias.get(0); + map.put("manager", user.getName()); + }else { + map.put("manager",""); + } + //电站发电情况 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getStationReportVOList())) { + ArrayList> list = new ArrayList<>(); + List stationReportVOList = stationReportAllVO.getStationReportVOList(); + for (StationRunReportVO stationRunReportVO : stationReportVOList) { + fillMapByClass(stationRunReportVO, list); + } + map.put("stationReportVOList", list); + } + //值班情况 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getDutyReportVOList())) { + ArrayList> list = new ArrayList<>(); + List dutyReportVOList = stationReportAllVO.getDutyReportVOList(); + for (DutyRunReportVO dutyRunReportVO : dutyReportVOList) { + if ("合计".equals(dutyRunReportVO.getGroupName())){ + ArrayList> sumList = new ArrayList<>(); + HashMap temp=new HashMap<>(); + temp.put("groupName",dutyRunReportVO.getGroupName()); + temp.put("dutyNum",dutyRunReportVO.getDutyNum().toString()); + temp.put("findProblemNum",dutyRunReportVO.getFindProblemNum().toString()); + temp.put("delayChangeShifts",dutyRunReportVO.getDelayChangeShifts().toString()); + temp.put("exceptionChangeShifts",dutyRunReportVO.getExceptionChangeShifts().toString()); + sumList.add(temp); + map.put("dutyReportSum", sumList); + continue; + } + fillMapByClass(dutyRunReportVO,list); + } + map.put("dutyReportVOList", list); + } + //日常维护 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getMaintenanceReportVOList())) { + ArrayList> list = new ArrayList<>(); + List maintenanceReportVOList = stationReportAllVO.getMaintenanceReportVOList(); + for (RunReportVO maintenanceReport : maintenanceReportVOList) { + if ("合计".equals(maintenanceReport.getUserName())){ + ArrayList> sumList = new ArrayList<>(); + HashMap temp=new HashMap<>(); + temp.put("userName",maintenanceReport.getUserName()); + temp.put("completeNum",maintenanceReport.getCompleteNum().toString()); + temp.put("incompleteNum",maintenanceReport.getIncompleteNum().toString()); + temp.put("remark",maintenanceReport.getRemark().toString()); + sumList.add(temp); + map.put("maintenanceSum", sumList); + continue; + } + fillMapByClass(maintenanceReport,list); + } + map.put("maintenanceReportVOList", list); + } + //巡检 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getInspectReportVOList())) { + ArrayList> list = new ArrayList<>(); + List inspectReportVOList = stationReportAllVO.getInspectReportVOList(); + for (RunReportVO inspectReport : inspectReportVOList) { + if ("合计".equals(inspectReport.getUserName())){ + ArrayList> sumList = new ArrayList<>(); + HashMap temp=new HashMap<>(); + temp.put("userName",inspectReport.getUserName()); + temp.put("completeNum",inspectReport.getCompleteNum().toString()); + temp.put("incompleteNum",inspectReport.getIncompleteNum().toString()); + temp.put("remark",""); + sumList.add(temp); + map.put("inspectReportSum", sumList); + continue; + } + fillMapByClass(inspectReportVOList,list); + } + map.put("inspectReportVOList", list); + } + //检修 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getAccessReportVOList())) { + ArrayList> list = new ArrayList<>(); + List accessReportVOList = stationReportAllVO.getAccessReportVOList(); + for (AccessRunReportVO accessRunReportVO : accessReportVOList) { + fillMapByClass(accessRunReportVO, list); + } + map.put("accessReportVOList", list); + } + //缺陷 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getDefectReportsVOList())) { + ArrayList> list = new ArrayList<>(); + List defectReportsVOList = stationReportAllVO.getDefectReportsVOList(); + for (DefectRunReportsVO defectRunReportsVO : defectReportsVOList) { + fillMapByClass(defectRunReportsVO, list); + } + map.put("defectReportsVOList", list); + } + //两票 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getTicketInfoStatisticVOList())) { + ArrayList> list = new ArrayList<>(); + List ticketInfoStatisticVOList = stationReportAllVO.getTicketInfoStatisticVOList(); + for (TicketInfoStatisticVO ticketInfoStatisticVO : ticketInfoStatisticVOList) { + if (!"合计".equals(ticketInfoStatisticVO.getTicketInfoType())){ + fillMapByClass(ticketInfoStatisticVO, list); + continue; + } + ArrayList> sumList = new ArrayList<>(); + HashMap temp=new HashMap<>(); + temp.put("ticketInfoType",ticketInfoStatisticVO.getTicketInfoType()); + temp.put("ticketInfoNumber",ticketInfoStatisticVO.getTicketInfoNumber().toString()); + temp.put("ticketInfoCompleteNum",ticketInfoStatisticVO.getTicketInfoCompleteNum().toString()); + temp.put("ticketInfoInvalidatedNum",ticketInfoStatisticVO.getTicketInfoInvalidatedNum().toString()); + temp.put("ticketInfoQualifiedNum",ticketInfoStatisticVO.getTicketInfoQualifiedNum().toString()); + temp.put("ticketInfoProportion",ticketInfoStatisticVO.getTicketInfoProportion().toString()); + sumList.add(temp); + map.put("ticketInfoSum", sumList); + } + map.put("ticketInfoStatisticVOList", list); + } + //智能诊断 + if (CollectionUtil.isNotEmpty(stationReportAllVO.getFdpRunReportVOList())) { + ArrayList> list = new ArrayList<>(); + List fdpRunReportVOList = stationReportAllVO.getFdpRunReportVOList(); + for (FDPRunReportVO fdpRunReportVO : fdpRunReportVOList) { + fillMapByClass(fdpRunReportVO, list); + } + map.put("fdpRunReportVOList", list); + } + //总结 + map.put("suggestion", stationReportAllVO.getSuggestion()); + return map; + } + + private static void fillMapByClass(Object object, ArrayList> list) throws IllegalAccessException { + Class clazz = object.getClass(); + HashMap temp=new HashMap<>(); + for (Field field : clazz.getDeclaredFields()) { + field.setAccessible(true); + String fieldName = field.getName(); + Object value = field.get(object); + temp.put(fieldName, value); + } + list.add(temp); + } + + /** + * 填充统计月报 + * + * @param sheet excel sheet + * @param stationReportAllVO 月报对象 + * @param type + */ + private void fillReport(XSSFSheet sheet, StationReportAllVO stationReportAllVO, String type) { + logger.info("hzims:operational:station:report", JSON.toJSONString(stationReportAllVO)); + //当前行数 + int currentRowNum = 0; + //填充标题 + XSSFCell cell_0_0 = sheet.getRow(currentRowNum).getCell(0); + String title = String.format(cell_0_0.getStringCellValue(), stationReportAllVO.getStationName(), stationReportAllVO.getYearMonth()); + cell_0_0.setCellValue(title); + //电站发电情况 + currentRowNum = currentRowNum + 2; + currentRowNum = this.fillPowerGeneration(stationReportAllVO.getStationReportVOList(), currentRowNum, sheet, type); + //值班情况 + currentRowNum = currentRowNum + 3; + currentRowNum = this.fillDuty(stationReportAllVO.getDutyReportVOList(), currentRowNum, sheet, type); + //日常维护 + currentRowNum = currentRowNum + 2; + currentRowNum = this.fillMaintenance(stationReportAllVO.getMaintenanceReportVOList(), currentRowNum, sheet, type); + //巡检 + currentRowNum = currentRowNum + 2; + currentRowNum = this.fillInspect(stationReportAllVO.getInspectReportVOList(), currentRowNum, sheet, type); + //检修 + currentRowNum = currentRowNum + 2; + currentRowNum = this.fillAccess(stationReportAllVO.getAccessReportVOList(), currentRowNum, sheet, type); + //缺陷 + currentRowNum = currentRowNum + 2; + currentRowNum = this.fillDefect(stationReportAllVO.getDefectReportsVOList(), currentRowNum, sheet, type); + //两票 + currentRowNum = currentRowNum + 2; + currentRowNum = this.fillTicket(stationReportAllVO.getTicketInfoStatisticVOList(), currentRowNum, sheet, type); + //智能诊断 + currentRowNum = currentRowNum + 1; + currentRowNum = this.fillDiagnosis(stationReportAllVO.getDiagnoseConclusion(), currentRowNum, sheet, type); + //小结 + currentRowNum = this.fillConclusion(stationReportAllVO, currentRowNum, sheet, type); + //处理建议合并单元格 + //this.mergeSuggestion(currentRowNum+2,sheet,type); + } + + private void mergeSuggestion(int currentRowNum, XSSFSheet sheet, String type) { + final int OUTSIDE_COLUMN_NUM = 4; + final int INSIDE_COLUMN_NUM = 5; + if (STATION_REPORT_OUTSIDE.equals(type)) { + CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum, (short) currentRowNum, (short) 0, (short) OUTSIDE_COLUMN_NUM); + sheet.addMergedRegion(cellRangeAddress); + } else if (STATION_REPORT_INSIDE.equals(type)) { + CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum, (short) currentRowNum, (short) 0, (short) INSIDE_COLUMN_NUM); + sheet.addMergedRegion(cellRangeAddress); + } + } + + private int fillConclusion(StationReportAllVO stationReportAllVO, int currentRowNum, XSSFSheet sheet, String type) { + final int OUTSIDE_COLUMN_NUM = 4; + final int INSIDE_COLUMN_NUM = 5; + sheet.shiftRows(currentRowNum + 1, sheet.getLastRowNum(), 1, true, false); + sheet.createRow(currentRowNum + 1); + XSSFRow row = sheet.getRow(currentRowNum + 1); + row.setHeight((short) 2400); + XSSFRow lastRow = sheet.getRow(currentRowNum); + if (STATION_REPORT_OUTSIDE.equals(type)) { + IntStream.iterate(0, col_index -> col_index + 1).limit(OUTSIDE_COLUMN_NUM + 1).forEachOrdered(col_index -> { + row.createCell(col_index); + XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); + cellStyle.setAlignment(HorizontalAlignment.LEFT); + cellStyle.setWrapText(true); + row.getCell(col_index).setCellStyle(cellStyle); + + }); + CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum + 1, (short) currentRowNum + 1, (short) 0, (short) OUTSIDE_COLUMN_NUM); + sheet.addMergedRegion(cellRangeAddress); + row.getCell(0).setCellValue(stationReportAllVO.getStationOutsideConclusion()); + } else if (STATION_REPORT_INSIDE.equals(type)) { + IntStream.iterate(0, col_index -> col_index + 1).limit(INSIDE_COLUMN_NUM + 1).forEachOrdered(col_index -> { + row.createCell(col_index); + XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); + cellStyle.setWrapText(true); + cellStyle.setAlignment(HorizontalAlignment.LEFT); + row.getCell(col_index).setCellStyle(cellStyle); + }); + CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum + 1, (short) currentRowNum + 1, (short) 0, (short) INSIDE_COLUMN_NUM); + sheet.addMergedRegion(cellRangeAddress); + row.getCell(0).setCellValue(stationReportAllVO.getStationInsideConclusion()); + } + return currentRowNum + 1; + } + + private int fillDiagnosis(String diagnoseConclusion, int currentRowNum, XSSFSheet sheet, String type) { + final int OUTSIDE_COLUMN_NUM = 4; + final int INSIDE_COLUMN_NUM = 5; + sheet.shiftRows(currentRowNum + 1, sheet.getLastRowNum(), 1, true, false); + sheet.createRow(currentRowNum + 1); + XSSFRow row = sheet.getRow(currentRowNum + 1); + row.setHeight((short) 800); + XSSFRow lastRow = sheet.getRow(currentRowNum - 1); + if (STATION_REPORT_OUTSIDE.equals(type)) { + IntStream.iterate(0, col_index -> col_index + 1).limit(OUTSIDE_COLUMN_NUM + 1).forEachOrdered(col_index -> { + row.createCell(col_index); + XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); + cellStyle.setWrapText(true); + row.getCell(col_index).setCellStyle(cellStyle); + }); + CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum + 1, (short) currentRowNum + 1, (short) 0, (short) OUTSIDE_COLUMN_NUM); + sheet.addMergedRegion(cellRangeAddress); + } else if (STATION_REPORT_INSIDE.equals(type)) { + IntStream.iterate(0, col_index -> col_index + 1).limit(INSIDE_COLUMN_NUM + 1).forEachOrdered(col_index -> { + row.createCell(col_index); + XSSFCellStyle cellStyle = lastRow.getCell(col_index).getCellStyle(); + cellStyle.setWrapText(true); + row.getCell(col_index).setCellStyle(cellStyle); + }); + CellRangeAddress cellRangeAddress = new CellRangeAddress((short) currentRowNum + 1, (short) currentRowNum + 1, (short) 0, (short) INSIDE_COLUMN_NUM); + sheet.addMergedRegion(cellRangeAddress); + } + row.getCell(0).setCellValue(diagnoseConclusion); + return currentRowNum + 1; + } private int fillTicket(List ticketInfoStatisticVOList, int currentRowNum, XSSFSheet sheet, String type) { String[] attributes = new String[0]; @@ -723,28 +1086,136 @@ public class OperStationMonthReportServiceImpl implements IOperStationMonthRepor conclusion.append(String.format(phenomenonConclusion,problemNum,stationReportAllVo.getDefectReportsVOList().size())).append(";\r\n"); } - //机器人巡检小结 - if (CollectionUtil.isEmpty(robotConclusion) || ObjectUtil.isEmpty(robotConclusion.get("ROBOT_TASK_HOURS"))) { - outsideConclusion.append("3、本月无机器人巡检任务;\r\n"); - conclusion.append("6、本月无机器人巡检任务;\n"); - } else { - outsideConclusion.append("3、本月机器人巡检").append(robotConclusion.get("ROBOT_TASK_HOURS") == null ? "0" : robotConclusion.get("ROBOT_TASK_HOURS")) - .append("小时,执行") - .append(robotConclusion.get("ROBOT_TASK_NUM") == null ? "0" : robotConclusion.get("ROBOT_TASK_NUM")) - .append("个巡检任务;\r\n"); - conclusion.append("6、本月机器人巡检").append(robotConclusion.get("ROBOT_TASK_HOURS")).append("小时") - .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_NUM")).map(o -> { - return ",执行".concat(o.toString().concat("个巡检任务")); - }).orElse("")) - .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_COMPLETE")).map(o -> { - return ",有".concat(o.toString()).concat("个任务运行正常"); - }).orElse("")) - .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_INCOMPLETE")).map(o -> { - return ",有".concat(o.toString()).concat("任务未执行;\r\n"); - }).orElse(";\r\n")); - } - //outsideConclusion.append("4、本月远程协助工作1次,专家会诊1次,新增1个案例,1个知识分享;\r\n"); - stationReportAllVo.setStationInsideConclusion(conclusion.toString()); - stationReportAllVo.setStationOutsideConclusion(outsideConclusion.toString()); - } + //机器人巡检小结 + if (CollectionUtil.isEmpty(robotConclusion) || ObjectUtil.isEmpty(robotConclusion.get("ROBOT_TASK_HOURS"))) { + outsideConclusion.append("3、本月无机器人巡检任务;\r\n"); + conclusion.append("6、本月无机器人巡检任务;\n"); + } else { + outsideConclusion.append("3、本月机器人巡检").append(robotConclusion.get("ROBOT_TASK_HOURS") == null ? "0" : robotConclusion.get("ROBOT_TASK_HOURS")) + .append("小时,执行") + .append(robotConclusion.get("ROBOT_TASK_NUM") == null ? "0" : robotConclusion.get("ROBOT_TASK_NUM")) + .append("个巡检任务;\r\n"); + conclusion.append("6、本月机器人巡检").append(robotConclusion.get("ROBOT_TASK_HOURS")).append("小时") + .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_NUM")).map(o -> { + return ",执行".concat(o.toString().concat("个巡检任务")); + }).orElse("")) + .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_COMPLETE")).map(o -> { + return ",有".concat(o.toString()).concat("个任务运行正常"); + }).orElse("")) + .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_INCOMPLETE")).map(o -> { + return ",有".concat(o.toString()).concat("任务未执行;\r\n"); + }).orElse(";\r\n")); + } + //outsideConclusion.append("4、本月远程协助工作1次,专家会诊1次,新增1个案例,1个知识分享;\r\n"); + stationReportAllVo.setStationInsideConclusion(conclusion.toString()); + stationReportAllVo.setStationOutsideConclusion(outsideConclusion.toString()); + } + /** + * 完善站点月报小结 + * + * @param stationReportAllVo + * @param params + */ + private void getStationReportConclusionV2(StationRunReportAllVO stationReportAllVo, Map params) { + //值班小结 + List> dutyConclusion = iImsDutyMainService.getDutyConclusion(params); + //机器人巡检小结 + Map robotConclusion = inspectRobotTaskClient.getRobotConclusion(params); + StringBuffer conclusion = new StringBuffer("本月电站工作小结:\r\n"); + + //完善值班小结 + if (CollectionUtil.isNotEmpty(stationReportAllVo.getDutyReportVOList())) { + if (CollectionUtil.isEmpty(dutyConclusion) || dutyConclusion.size() == 0) { + conclusion.append("1、本月无值班任务;\r\n"); + } else { + //对内值班小结 + conclusion.append("1、值班") + .append(dutyConclusion.get(0).get(ColumnEnum.duty_conclusion_date_col.getColumnName())) + .append("天,正常交接班") + .append(dutyConclusion.get(0).get(ColumnEnum.duty_conclusion_intime_col.getColumnName())) + .append("次,延迟交接班") + .append(dutyConclusion.get(0).get(ColumnEnum.duty_conclusion_delay_col.getColumnName())) + .append("次;\r\n"); + } + }else { + conclusion.append("1、本月无值班任务;\r\n"); + } + + //日常维护任务统计 + if (CollectionUtil.isNotEmpty(stationReportAllVo.getMaintenanceReportVOList())) { + List maintenanceReportVOList = stationReportAllVo.getMaintenanceReportVOList(); + int completeTaskNum = maintenanceReportVOList.stream().filter(vo -> Func.isNotEmpty(vo.getCompleteNum())).mapToInt(RunReportVO::getCompleteNum).sum(); + int incompleteTaskNum = maintenanceReportVOList.stream().filter(vo -> Func.isNotEmpty(vo.getIncompleteNum())).mapToInt(RunReportVO::getIncompleteNum).sum(); + if (completeTaskNum == 0 && incompleteTaskNum == 0) { + conclusion.append("2、无日常维护任务;\r\n"); + } else { + //对内日常维护小结 + String maintenanceTaskConclusion = "2、%s个日常维护任务,已执行%s个任务,完成率%s%%"; + Double completeRate = new BigDecimal(completeTaskNum / (double) (completeTaskNum + incompleteTaskNum) * 100) + .setScale(2, RoundingMode.HALF_UP).doubleValue(); + conclusion.append(String.format(maintenanceTaskConclusion, (completeTaskNum + incompleteTaskNum), completeTaskNum, completeRate)).append(";\r\n"); + } + } else { + conclusion.append("2、无日常维护任务;\r\n"); + } + + //巡检任务统计 + if (CollectionUtil.isNotEmpty(stationReportAllVo.getInspectReportVOList())) { + List inspectReportVOList = stationReportAllVo.getInspectReportVOList(); + int completeInspectTaskNum = inspectReportVOList.stream().filter(vo -> Func.isNotEmpty(vo.getCompleteNum())).mapToInt(RunReportVO::getCompleteNum).sum(); + int incompleteInspectTaskNum = inspectReportVOList.stream().filter(vo -> Func.isNotEmpty(vo.getIncompleteNum())).mapToInt(RunReportVO::getIncompleteNum).sum(); + if (completeInspectTaskNum == 0 && incompleteInspectTaskNum == 0) { + conclusion.append("3、无巡检任务;\r\n"); + } else { + String inspectTaskConclusion = "3、%s个巡检任务,已执行%s个巡检任务。"; + conclusion.append(String.format(inspectTaskConclusion, (completeInspectTaskNum + incompleteInspectTaskNum), completeInspectTaskNum)).append(";\r\n"); + } + } else { + conclusion.append("3、无巡检任务;\r\n"); + } + //检修任务统计 + if (CollectionUtil.isNotEmpty(stationReportAllVo.getAccessReportVOList())) { + List accessReportVOList = stationReportAllVo.getAccessReportVOList(); + if (CollectionUtil.isNotEmpty(accessReportVOList)) { + conclusion.append("4、无检修任务;\r\n"); + } else { + String accessTaskConclusion = "4、执行%s个检修任务"; + conclusion.append(String.format(accessTaskConclusion, accessReportVOList.size())).append(";\r\n"); + } } else { + conclusion.append("4、无检修任务;\r\n"); + } + // 现象统计 + if (CollectionUtil.isNotEmpty(stationReportAllVo.getDefectReportsVOList())) { + String phenomenonConclusion = "5、本月发现%s个缺陷"; + conclusion.append(String.format(phenomenonConclusion,stationReportAllVo.getDefectReportsVOList().size())).append(";\r\n"); + }else { + conclusion.append("5、本月未发现缺陷;\r\n"); + } + //机器人巡检小结 + if (CollectionUtil.isEmpty(robotConclusion) || ObjectUtil.isEmpty(robotConclusion.get("ROBOT_TASK_HOURS"))) { + conclusion.append("6、本月无机器人巡检任务;\n"); + } else { + conclusion.append("6、本月机器人巡检").append(robotConclusion.get("ROBOT_TASK_HOURS")).append("小时") + .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_NUM")).map(o -> { + return ",执行".concat(o.toString().concat("个巡检任务")); + }).orElse("")) + .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_COMPLETE")).map(o -> { + return ",有".concat(o.toString()).concat("个任务运行正常"); + }).orElse("")) + .append(Optional.ofNullable(robotConclusion.get("ROBOT_TASK_INCOMPLETE")).map(o -> { + return ",有".concat(o.toString()).concat("任务未执行;\r\n"); + }).orElse(";\r\n")); + } + // 两票 + if (CollectionUtil.isNotEmpty(stationReportAllVo.getTicketInfoStatisticVOList())) { + int sum = stationReportAllVo.getTicketInfoStatisticVOList().stream().mapToInt(TicketInfoStatisticVO::getTicketInfoNumber).sum(); + int qualifiedNum = stationReportAllVo.getTicketInfoStatisticVOList().stream().mapToInt(TicketInfoStatisticVO::getTicketInfoQualifiedNum).sum(); + double ticketInfoProportion = new BigDecimal(qualifiedNum / (double) sum * 100).setScale(2, RoundingMode.HALF_DOWN).doubleValue(); + String phenomenonConclusion = "5、本月开票%s张,合格率%s;"; + conclusion.append(String.format(phenomenonConclusion,sum,ticketInfoProportion)).append(";\r\n"); + }else { + conclusion.append("5、本月未开票;\r\n"); + } + stationReportAllVo.setSuggestion(conclusion.toString()); + } } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/AccessRunReportVO.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/AccessRunReportVO.java new file mode 100644 index 0000000..3f793bc --- /dev/null +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/AccessRunReportVO.java @@ -0,0 +1,32 @@ +package com.hnac.hzims.operational.report.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class AccessRunReportVO implements Serializable { + private static final long serialVersionUID = -6752409583963294512L; + + private Integer index; + + @ApiModelProperty("人员ID") + @JsonSerialize(nullsUsing = NullSerializer.class) + private Long userId; + + @ApiModelProperty("姓名") + private String userName; + + @ApiModelProperty("检修项目") + private String maintenanceItem; + + @ApiModelProperty("完成情况") + private String completeSituation; + @ApiModelProperty("备注") + private String remark; + +} diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DefectRunReportsVO.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DefectRunReportsVO.java new file mode 100644 index 0000000..04676f5 --- /dev/null +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DefectRunReportsVO.java @@ -0,0 +1,36 @@ +package com.hnac.hzims.operational.report.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class DefectRunReportsVO implements Serializable { + + private static final long serialVersionUID = 4172942990070215282L; + + private Integer index; + + @ApiModelProperty("缺陷名称") + private String faultName; + @ApiModelProperty("缺陷等级") + private String seriousSituation; + @ApiModelProperty("发现人") + private String finder; + @ApiModelProperty("发现时间") + private String finderTime; + @ApiModelProperty("缺陷描述") + private String description; + @ApiModelProperty("处理时间") + private String handleTime; + @ApiModelProperty("处理情况") + private String handleSituation; +} diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DutyRunReportVO.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DutyRunReportVO.java new file mode 100644 index 0000000..1ebac32 --- /dev/null +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/DutyRunReportVO.java @@ -0,0 +1,36 @@ +package com.hnac.hzims.operational.report.vo; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class DutyRunReportVO implements Serializable { + private static final long serialVersionUID = 3273581622730234931L; + + private Integer index; + + @ApiModelProperty("班组名称") + private String groupName; + @ApiModelProperty("值长") + private String managerName; + @ApiModelProperty("值班次数") + private Integer dutyNum=0; + @ApiModelProperty("值班") + private List dutyList; + @ApiModelProperty("发现问题数量") + private Integer findProblemNum=0; + @ApiModelProperty("发现问题数量") + private List findProblemList; + @ApiModelProperty("延迟交接班") + private Integer delayChangeShifts=0; + @ApiModelProperty("延迟交接班") + private List delayChangeList; + @ApiModelProperty("异常交接班") + private Integer exceptionChangeShifts=0; + @ApiModelProperty("异常交接班") + private List exceptionChangeList; +} diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/FDPRunReportVO.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/FDPRunReportVO.java new file mode 100644 index 0000000..0b40dc2 --- /dev/null +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/FDPRunReportVO.java @@ -0,0 +1,41 @@ +package com.hnac.hzims.operational.report.vo; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import com.hnac.hzims.operational.maintenance.entity.OperMaintenanceTaskEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class FDPRunReportVO implements Serializable { + private static final long serialVersionUID = -4198449565005940501L; + + private Integer index; + @ApiModelProperty("最近出现告警时间") + @JSONField(name = "LASTBEGINTIME") + private String lastBeginTime; + + @ApiModelProperty("告警内容") + private String content; + + + @ApiModelProperty("告警类型") + private String type; + + @ApiModelProperty("告警次数") + private String num; + + @ApiModelProperty("初步分析原因") + @JSONField(name = "ORD") + private String reason; + + @ApiModelProperty("建议处置方式") + @JSONField(name = "INFO") + private String advise; + + +} diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/RunReportVO.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/RunReportVO.java new file mode 100644 index 0000000..9a92921 --- /dev/null +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/RunReportVO.java @@ -0,0 +1,31 @@ +package com.hnac.hzims.operational.report.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class RunReportVO implements Serializable { + private static final long serialVersionUID = -4198449565005940501L; + + private Integer index; + + @ApiModelProperty("人员ID") + private String userId; + @ApiModelProperty("姓名") + private String userName; + @ApiModelProperty("完成次数") + private Integer completeNum; + @ApiModelProperty("完成任务数量") + private List completeList; + @ApiModelProperty("未完成次数") + private Integer incompleteNum; + @ApiModelProperty("完成任务数量") + private List incompleteList; + @ApiModelProperty("备注") + private String remark; + + +} diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportAllVO.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportAllVO.java new file mode 100644 index 0000000..80697f7 --- /dev/null +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportAllVO.java @@ -0,0 +1,50 @@ +package com.hnac.hzims.operational.report.vo; + +import com.hnac.hzims.fdp.vo.StatisticStatusVO; +import com.hnac.hzims.ticket.allTicket.vo.TicketInfoStatisticVO; +import com.hnac.hzinfo.inspect.task.vo.TaskReportVO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +@Data +public class StationRunReportAllVO implements Serializable { + private static final long serialVersionUID = -3173423342834166988L; + + @ApiModelProperty("月报统计月份") + private String yearMonth; + + @ApiModelProperty("电站名称") + private String stationName; + + @ApiModelProperty("电站发电情况") + private List stationReportVOList; + + @ApiModelProperty("值班") + private List dutyReportVOList; + + @ApiModelProperty("日常维护") + private List maintenanceReportVOList; + + @ApiModelProperty("巡检") + private List inspectReportVOList; + + @ApiModelProperty("检修") + private List accessReportVOList; + + @ApiModelProperty("缺陷") + private List defectReportsVOList; + + @ApiModelProperty("两票") + private List ticketInfoStatisticVOList; + + @ApiModelProperty("智能诊断") + private List fdpRunReportVOList; + + @ApiModelProperty("建议") + private String suggestion; + +} diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportVO.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportVO.java new file mode 100644 index 0000000..11bb939 --- /dev/null +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/report/vo/StationRunReportVO.java @@ -0,0 +1,32 @@ +package com.hnac.hzims.operational.report.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.NullSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class StationRunReportVO implements Serializable { + private static final long serialVersionUID = -8957498837980526029L; + @ApiModelProperty("序号") + private Integer index; + @ApiModelProperty(value = "电站名称") + private String stationName; + @ApiModelProperty(value = "月计划发电量") + private Double powerMonPlan; + @ApiModelProperty(value = "实发电量") + private String finishPowerMon; + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty(value = "月度完成率") + private String powerMonRate; + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty(value = "年度计划") + private Double powerYearPlan; + @JsonSerialize(nullsUsing = NullSerializer.class) + @ApiModelProperty(value = "已完成") + private String finishPowerYear; + @ApiModelProperty(value = "年度完成率") + private String powerYearRate; +} diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/TimeUtils.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/TimeUtils.java index ddfd1f9..c5afd70 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/TimeUtils.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/util/TimeUtils.java @@ -127,6 +127,21 @@ public class TimeUtils { } return monthList; } + public static List getListByYearMon(Integer year,Integer mon) { + List monthList=new ArrayList<>(); + for (int i = 0; i f7%=_uOyq9p9f@5miscjC|&- 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
r}++JxSQOw^Gew~( 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 Cx%>+N literal 0 HcmV?d00001 diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/allTicket/fegin/TicketInfoAllClient.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/allTicket/fegin/TicketInfoAllClient.java index 878cd812..8a647b9 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/allTicket/fegin/TicketInfoAllClient.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/allTicket/fegin/TicketInfoAllClient.java @@ -12,13 +12,16 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.CollectionUtil; import org.springblade.core.tool.utils.StringUtil; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -41,19 +44,53 @@ public class TicketInfoAllClient implements ITicketInfoAllClient { @Override @PostMapping("/getTicketReportStatistic") public List getTicketReportStatistic(@RequestBody TicketStatisticDTO ticketStatisticDTO) { + List workTicketStatistic = new ArrayList<>(); String startDate = ticketStatisticDTO.getStartDate(); String endDate = ticketStatisticDTO.getEndDate(); String deptIds = ticketStatisticDTO.getDeptIds(); - Assert.isTrue(StringUtil.isNoneBlank(deptIds),()->{ + Assert.isTrue(StringUtil.isNoneBlank(deptIds), () -> { throw new ServiceException("站点统计月报工作票查询机构ID不能为空"); }); List deptIdList = Arrays.stream(deptIds.split(",")).map(Long::parseLong).collect(Collectors.toList()); // 统计工作票 - TicketInfoStatisticVO workTicketStatistic = firstWorkTicketService.workTicketReportStatistic(startDate, endDate, deptIdList); + workTicketStatistic = firstWorkTicketService.workTicketReportStatistic(startDate, endDate, deptIdList); // 统计操作票 - TicketInfoStatisticVO operateTicketStatistic = standardTicketInfoService.operateTicketReportStatistic(startDate,endDate,deptIdList); - //TODO 统计应急抢修单 - return Lists.newArrayList(workTicketStatistic,operateTicketStatistic); + List operateTicketStatistic = standardTicketInfoService.operateTicketReportStatistic(startDate, endDate, deptIdList); + if (CollectionUtil.isNotEmpty(operateTicketStatistic)) { + workTicketStatistic.addAll(operateTicketStatistic); + //TODO 统计应急抢修单 + } + if (CollectionUtil.isNotEmpty(workTicketStatistic)){ + AtomicInteger index = new AtomicInteger(1); + workTicketStatistic = workTicketStatistic.stream().map(s -> { + s.setIndex(index.get()); + index.getAndIncrement(); + return s; + }).collect(Collectors.toList()); + TicketInfoStatisticVO ticketInfoStatisticVO=new TicketInfoStatisticVO(); + ticketInfoStatisticVO.setTicketInfoType("合计"); + int sum = workTicketStatistic.stream().mapToInt(TicketInfoStatisticVO::getTicketInfoNumber).sum(); + int CompleteNum = workTicketStatistic.stream().mapToInt(TicketInfoStatisticVO::getTicketInfoCompleteNum).sum(); + int InvalidatedNum = workTicketStatistic.stream().mapToInt(TicketInfoStatisticVO::getTicketInfoInvalidatedNum).sum(); + int QualifiedNum = workTicketStatistic.stream().mapToInt(TicketInfoStatisticVO::getTicketInfoQualifiedNum).sum(); + Double Proportion = new BigDecimal(QualifiedNum).divide(new BigDecimal(sum),2,BigDecimal.ROUND_UP).doubleValue(); + ticketInfoStatisticVO.setTicketInfoNumber(sum); + ticketInfoStatisticVO.setTicketInfoCompleteNum(CompleteNum); + ticketInfoStatisticVO.setTicketInfoInvalidatedNum(InvalidatedNum); + ticketInfoStatisticVO.setTicketInfoQualifiedNum(QualifiedNum); + ticketInfoStatisticVO.setTicketInfoProportion(Proportion); + workTicketStatistic.add(ticketInfoStatisticVO); + }else { + TicketInfoStatisticVO ticketInfoStatisticVO=new TicketInfoStatisticVO(); + ticketInfoStatisticVO.setTicketInfoType("合计"); + ticketInfoStatisticVO.setTicketInfoNumber(0); + ticketInfoStatisticVO.setTicketInfoCompleteNum(0); + ticketInfoStatisticVO.setTicketInfoInvalidatedNum(0); + ticketInfoStatisticVO.setTicketInfoQualifiedNum(0); + ticketInfoStatisticVO.setTicketInfoProportion(0.0); + workTicketStatistic.add(ticketInfoStatisticVO); + } + return workTicketStatistic; } @Override diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/IStandardTicketInfoService.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/IStandardTicketInfoService.java index 52a9e55..f426add 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/IStandardTicketInfoService.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/IStandardTicketInfoService.java @@ -94,7 +94,7 @@ public interface IStandardTicketInfoService extends BaseService deptIdList); + List operateTicketReportStatistic(String startDate, String endDate, List deptIdList); /** * 获取首页区域当月操作票/工作票 diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java index 524c43c..6c08004 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java @@ -38,6 +38,7 @@ import com.hnac.hzims.ticket.utils.PdfUtils; import com.hnac.hzims.ticket.workTicket.entity.WorkTicketInfoEntity; import com.hnac.hzims.ticket.workTicket.service.IWorkTicketInfoService; import com.hnac.hzims.ticket.workTicket.vo.TicketMonthVO; +import com.hnac.hzims.ticket.workTicket.vo.WorkTicketReportStatisticVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -681,20 +682,33 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl deptIdList) { - TicketInfoStatisticVO result = new TicketInfoStatisticVO(); - result.setTicketInfoType("操作票"); + public List operateTicketReportStatistic(String startDate, String endDate, List deptIdList) { + List res = new ArrayList<>(); List operateTicketReportStatistic = this.baseMapper.getOperateTicketReportStatistic(startDate, endDate, deptIdList); + Map> operateTicket = operateTicketReportStatistic.stream().filter(o -> ObjectUtil.isNotEmpty(o.getTicketType())) + .collect(Collectors.groupingBy(OperateTicketStatisticVO::getTicketType)); if (CollectionUtil.isNotEmpty(operateTicketReportStatistic)) { - //已完成数量 - int ticketInfoCompleteNum = operateTicketReportStatistic.stream().filter(item -> "结束".equals(item.getFlowTaskName())).collect(Collectors.toList()).size(); - //合格数量 - int ticketInfoQualifiedNum = operateTicketReportStatistic.stream().filter(ticket -> Func.isNotEmpty(ticket.getEvaluation()) && 1 == ticket.getEvaluation().intValue()).collect(Collectors.toList()).size(); - //计算合格率 - double ticketInfoProportion = new BigDecimal(ticketInfoQualifiedNum / (double) operateTicketReportStatistic.size() * 100).setScale(2, RoundingMode.HALF_DOWN).doubleValue(); - result = TicketInfoStatisticVO.builder().ticketInfoType("操作票").ticketInfoNumber(operateTicketReportStatistic.size()).ticketInfoCompleteNum(ticketInfoCompleteNum).ticketInfoQualifiedNum(ticketInfoQualifiedNum).ticketInfoStartNum(operateTicketReportStatistic.size() - ticketInfoCompleteNum).ticketInfoProportion(ticketInfoProportion).build(); - } - return result; + for (Map.Entry> typeOperateTicket : operateTicket.entrySet()) { + String type = TicketConstants.TicketTypeNameEnum.getTicketNameByType(typeOperateTicket.getKey()); + //已完成数量 + int ticketInfoCompleteNum = operateTicketReportStatistic.stream().filter(item -> "结束".equals(item.getFlowTaskName())).collect(Collectors.toList()).size(); + //合格数量 + int ticketInfoQualifiedNum = operateTicketReportStatistic.stream().filter(ticket -> Func.isNotEmpty(ticket.getEvaluation()) && 1 == ticket.getEvaluation().intValue()).collect(Collectors.toList()).size(); + //废票数量 + int ticketInfoInvalidatedNum = operateTicketReportStatistic.stream().filter(item -> "作废".equals(item.getFlowTaskName())).collect(Collectors.toList()).size(); + //计算合格率 + double ticketInfoProportion = new BigDecimal(ticketInfoQualifiedNum / (double) operateTicketReportStatistic.size() * 100).setScale(2, RoundingMode.HALF_DOWN).doubleValue(); + TicketInfoStatisticVO ticketInfoStatisticVO = TicketInfoStatisticVO.builder().ticketInfoType(type) + .ticketInfoNumber(operateTicketReportStatistic.size()) + .ticketInfoCompleteNum(ticketInfoCompleteNum) + .ticketInfoQualifiedNum(ticketInfoQualifiedNum) + .ticketInfoInvalidatedNum(ticketInfoInvalidatedNum) + .ticketInfoStartNum(operateTicketReportStatistic.size() - ticketInfoCompleteNum) + .ticketInfoProportion(ticketInfoProportion).build(); + res.add(ticketInfoStatisticVO); + } + } + return res; } @@ -788,16 +802,17 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl operate(IPage page,OperateVo business) { + public IPage operate(IPage page, OperateVo business) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.ge(Func.isNotEmpty(business.getStartTime()), "oper.create_time", business.getStartTime()); queryWrapper.le(Func.isNotEmpty(business.getEndTime()), "oper.create_time", business.getEndTime()); - queryWrapper.in(Func.isNotEmpty(business.getDeptIds()), "oper.create_dept",Func.toLongList(",",business.getDeptIds())); + queryWrapper.in(Func.isNotEmpty(business.getDeptIds()), "oper.create_dept", Func.toLongList(",", business.getDeptIds())); queryWrapper.like(Func.isNotEmpty(business.getCode()), "oper.code", business.getCode()); queryWrapper.eq(Func.isNotEmpty(business.getTicketType()), "oper.ticket_type", business.getTicketType()); queryWrapper.eq(Func.isNotEmpty(business.getStatus()), "eva.status", business.getStatus()); @@ -816,11 +831,11 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl standardTicketInfoEntities = super.baseMapper.selectList(queryWrapper); - List list=new ArrayList<>(); - if (CollectionUtils.isNotEmpty(standardTicketInfoEntities)){ - List standardTicketInfoVOS = standardTicketInfoEntities.parallelStream().map(standardTicketInfoEntity -> { - StandardTicketExportVO exportVO = new StandardTicketExportVO(); - try { + List list = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(standardTicketInfoEntities)) { + List standardTicketInfoVOS = standardTicketInfoEntities.parallelStream().map(standardTicketInfoEntity -> { + StandardTicketExportVO exportVO = new StandardTicketExportVO(); + try { exportVO.setCompany(Optional.ofNullable(standardTicketInfoEntity.getCompany()).orElse(null)); exportVO.setTicketType(Optional.ofNullable(DictCache.getValue(TicketConstants.TICKET_TYPE, standardTicketInfoEntity.getTicketType())).orElse(null)); exportVO.setCode(Optional.ofNullable(standardTicketInfoEntity.getCode()).orElse(null)); @@ -853,22 +868,23 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl() {{ eq(TicketInfoEvaluateEntity::getTicketId, standardTicketInfoEntity.getId()); }}.last(" limit 1")); - if ( ObjectUtil.isNotEmpty(evaluateEntity)) { + if (ObjectUtil.isNotEmpty(evaluateEntity)) { exportVO.setIsEvaluate(evaluateEntity.getStatus() == 1 ? "合格" : "不合格"); } } - }}catch (Exception e){ - log.error("转换失败----》"+e.toString()+standardTicketInfoEntity.toString()); - System.out.println("转换失败----》"+e.toString()+standardTicketInfoEntity.toString()); } - return exportVO; - }).collect(Collectors.toList()); - return standardTicketInfoVOS; - }else { + } catch (Exception e) { + log.error("转换失败----》" + e.toString() + standardTicketInfoEntity.toString()); + System.out.println("转换失败----》" + e.toString() + standardTicketInfoEntity.toString()); + } + return exportVO; + }).collect(Collectors.toList()); + return standardTicketInfoVOS; + } else { return list; } } @@ -876,8 +892,8 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl params = com.hnac.hzims.ticket.utils.ObjectUtils.obj2Map(detail); - params.put("measureMapList",this.convert(detail.getStandardTicketMeasureVOList())); + Map params = com.hnac.hzims.ticket.utils.ObjectUtils.obj2Map(detail); + params.put("measureMapList", this.convert(detail.getStandardTicketMeasureVOList())); XWPFDocument xwpfDocument = null; String fileName = "template/电气操作票.docx"; try { @@ -885,15 +901,15 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl documents, String savePath) throws IOException { @@ -902,39 +918,35 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl convert (List list) { - if(CollectionUtil.isNotEmpty(list)) { + private List convert(List list) { + if (CollectionUtil.isNotEmpty(list)) { return IntStream.iterate(0, index -> index + 1).limit(list.size() > 25 ? list.size() : 25).mapToObj(index -> { - if(index <= list.size() - 1) { + if (index <= list.size() - 1) { Map result = com.hnac.hzims.ticket.utils.ObjectUtils.obj2Map(list.get(index)); - result.put("index",index + 1); - result.put("status",TicketConstants.MATTER_FINISH_STATUS == result.get("status") ? "√" : null); + result.put("index", index + 1); + result.put("status", TicketConstants.MATTER_FINISH_STATUS == result.get("status") ? "√" : null); return result; - } - else { + } else { return new HashMap(); } }).collect(Collectors.toList()); } - return IntStream.iterate(0,index -> index + 1).limit(4).mapToObj(index -> new HashMap()).collect(Collectors.toList()); + return IntStream.iterate(0, index -> index + 1).limit(4).mapToObj(index -> new HashMap()).collect(Collectors.toList()); } } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/IFirstWorkTicketService.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/IFirstWorkTicketService.java index f6bc5ec..1ff11e5 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/IFirstWorkTicketService.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/IFirstWorkTicketService.java @@ -133,5 +133,5 @@ public interface IFirstWorkTicketService extends ITwoTicketService deptIdList); + List workTicketReportStatistic(String startDate, String endDate, List deptIdList); } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/FirstWorkTicketServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/FirstWorkTicketServiceImpl.java index dff3284..47e620c 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/FirstWorkTicketServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/FirstWorkTicketServiceImpl.java @@ -1073,38 +1073,57 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl deptIdList) { - TicketInfoStatisticVO workTicketStatistic = new TicketInfoStatisticVO(); - workTicketStatistic.setTicketInfoType("工作票"); + public List workTicketReportStatistic(String startDate, String endDate, List deptIdList) { + List res = new ArrayList<>(); // 统计工作票 List workTicketReportStatistic = this.baseMapper.getWorkTicketReportStatistic(startDate, endDate, deptIdList); + Map> workTicketMap = workTicketReportStatistic.stream().filter(o -> ObjectUtil.isNotEmpty(o.getType())) + .collect(Collectors.groupingBy(WorkTicketReportStatisticVO::getType)); if(CollectionUtil.isNotEmpty(workTicketReportStatistic)) { - // 工作票完成数量 - int ticketInfoCompleteNum = workTicketReportStatistic.stream().filter(item -> "结束".equals(item.getFlowTaskName())) - .collect(Collectors.toList()).size(); - // 工作票未完成数量 - int ticketInfoStartNum = workTicketReportStatistic.size() - ticketInfoCompleteNum; - // 延期数量统计 - int ticketInfoDelayNum = workTicketReportStatistic.stream().filter(item -> "延期".equals(item.getInput())) - .collect(Collectors.toList()).size(); - // 合格数量统计 - int ticketInfoQualifiedNum = workTicketReportStatistic.stream().filter(ticket -> Func.isNotEmpty(ticket.getEvaluation()) && ticket.getEvaluation().intValue() == 1) - .collect(Collectors.toList()).size(); - //计算合格率 - Double ticketInfoProportion = new BigDecimal(ticketInfoQualifiedNum / (double) workTicketReportStatistic.size() *100) - .setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); - - workTicketStatistic = TicketInfoStatisticVO.builder() - .ticketInfoType("工作票") - .ticketInfoNumber(workTicketReportStatistic.size()) - .ticketInfoCompleteNum(ticketInfoCompleteNum) - .ticketInfoStartNum(ticketInfoStartNum) - .ticketInfoDelayNum(ticketInfoDelayNum) - .ticketInfoQualifiedNum(ticketInfoQualifiedNum) - .ticketInfoProportion(ticketInfoProportion) - .build(); + for (Map.Entry> typeWorkTicket : workTicketMap.entrySet()) { + String ticketInfoType=""; + switch (typeWorkTicket.getKey()){ + case "6": + ticketInfoType="第一种工作票"; + break; + case "7": + ticketInfoType="第二种工作票"; + break; + case "8": + ticketInfoType="机械工作票"; + break; + } + // 工作票完成数量 + int ticketInfoCompleteNum = typeWorkTicket.getValue().stream().filter(item -> "结束".equals(item.getFlowTaskName())) + .collect(Collectors.toList()).size(); + // 工作票未完成数量 + int ticketInfoStartNum = typeWorkTicket.getValue().size() - ticketInfoCompleteNum; + // 延期数量统计 + int ticketInfoDelayNum = typeWorkTicket.getValue().stream().filter(item -> "延期".equals(item.getInput())) + .collect(Collectors.toList()).size(); + // 废票数量统计 + int invalidatedNum = typeWorkTicket.getValue().stream().filter(item -> "废票".equals(item.getFlowTaskName())) + .collect(Collectors.toList()).size(); + // 合格数量统计 + int ticketInfoQualifiedNum = typeWorkTicket.getValue().stream().filter(ticket -> Func.isNotEmpty(ticket.getEvaluation()) && ticket.getEvaluation().intValue() == 1) + .collect(Collectors.toList()).size(); + //计算合格率 + Double ticketInfoProportion = new BigDecimal(ticketInfoQualifiedNum / (double) workTicketReportStatistic.size() *100) + .setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); + TicketInfoStatisticVO workTicketStatistic = TicketInfoStatisticVO.builder() + .ticketInfoType(ticketInfoType) + .ticketInfoNumber(workTicketReportStatistic.size()) + .ticketInfoCompleteNum(ticketInfoCompleteNum) + .ticketInfoStartNum(ticketInfoStartNum) + .ticketInfoDelayNum(ticketInfoDelayNum) + .ticketInfoInvalidatedNum(invalidatedNum) + .ticketInfoQualifiedNum(ticketInfoQualifiedNum) + .ticketInfoProportion(ticketInfoProportion) + .build(); + res.add(workTicketStatistic); + } } - return workTicketStatistic; + return res; } /** diff --git a/hzims-service/ticket/src/test/java/com/hnac/hzims/ticket/TicketApplicationTest.java b/hzims-service/ticket/src/test/java/com/hnac/hzims/ticket/TicketApplicationTest.java index f103792..59a498a 100644 --- a/hzims-service/ticket/src/test/java/com/hnac/hzims/ticket/TicketApplicationTest.java +++ b/hzims-service/ticket/src/test/java/com/hnac/hzims/ticket/TicketApplicationTest.java @@ -81,8 +81,8 @@ public class TicketApplicationTest { String startDate = "2022-07-01"; String endDate = "2022-07-31"; List deptIdList = Lists.newArrayList(2000000109L); - TicketInfoStatisticVO ticketInfoStatisticVO = firstWorkTicketService.workTicketReportStatistic(startDate, endDate, deptIdList); - log.info("{}",JSON.toJSONString(ticketInfoStatisticVO)); +// TicketInfoStatisticVO ticketInfoStatisticVO = firstWorkTicketService.workTicketReportStatistic(startDate, endDate, deptIdList); +// log.info("{}",JSON.toJSONString(ticketInfoStatisticVO)); }