Browse Source

Merge remote-tracking branch 'origin/master'

zhongwei
haungxing 1 year ago
parent
commit
e7a035c1f9
  1. 34
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/defect/vo/OperDefectStatisticsExportVO.java
  2. 3
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/vo/RealStationVo.java
  3. 4
      hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/feign/ITicketInfoClient.java
  4. 5
      hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/feign/TicketInfoClientFallback.java
  5. 5
      hzims-service/hzims-scheduled/pom.xml
  6. 12
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/alarm/AlarmQueryMapper.java
  7. 16
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/alarm/AlarmQueryService.java
  8. 74
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/alarm/impl/AlarmQueryServiceImpl.java
  9. 34
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/monitor/impl/MonitorServiceImpl.java
  10. 5
      hzims-service/hzims-scheduled/src/main/resources/mapper/alarm/AlarmQueryMapper.xml
  11. 3
      hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessagePushRecordController.java
  12. 15
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/controller/OperDefectStatisticsController.java
  13. 57
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/OperDefectStatisticsServiceImpl.java
  14. 9
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/controller/StandardTicketInfoController.java
  15. 57
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java
  16. 30
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/vo/StandardTicketExportVO.java
  17. 25
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/wrapper/StandardTicketInfoWrapper.java
  18. 8
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/controller/WorkTicketInfoController.java
  19. 9
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/feign/TicketInfoClient.java
  20. 2
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/IWorkTicketInfoService.java
  21. 2
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/OfflineTicketServiceImpl.java
  22. 56
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java
  23. 30
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/vo/WorkTicketExportVO.java
  24. 2
      pom.xml

34
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/defect/vo/OperDefectStatisticsExportVO.java

@ -18,30 +18,30 @@ import java.util.Date;
public class OperDefectStatisticsExportVO { public class OperDefectStatisticsExportVO {
private static final long serialVersionUID = 8239436726489738763L; private static final long serialVersionUID = 8239436726489738763L;
@ExcelProperty(value = "序号", index = 0) // @ExcelProperty(value = "序号", index = 0)
@ColumnWidth(value = 20) // @ColumnWidth(value = 20)
@ApiModelProperty(value = "序号") // @ApiModelProperty(value = "序号")
private Integer number; // private Integer number;
@ExcelProperty(value = "单位", index = 1) @ExcelProperty(value = "单位", index =0)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "机构名称") @ApiModelProperty(value = "机构名称")
private String deptName; private String deptName;
@ExcelProperty(value = "缺陷编码", index = 2) @ExcelProperty(value = "缺陷编码", index = 1)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "缺陷编码") @ApiModelProperty(value = "缺陷编码")
private String defectCode; private String defectCode;
@ExcelProperty(value = "记录人", index = 3) @ExcelProperty(value = "发现人", index = 2)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "缺陷发现人") @ApiModelProperty(value = "缺陷发现人")
private String finderName; private String finderName;
@ApiModelProperty("记录时间") @ApiModelProperty("创建时间")
@ExcelProperty(value = "记录时间", index = 4) @ExcelProperty(value = "创建时间", index = 3)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@DateTimeFormat( @DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss" pattern = "yyyy-MM-dd HH:mm:ss"
@ -52,18 +52,18 @@ public class OperDefectStatisticsExportVO {
private Date findTime; private Date findTime;
@ExcelProperty(value = "缺陷描述", index = 5) @ExcelProperty(value = "缺陷名称", index = 4)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "现象描述") @ApiModelProperty(value = "缺陷名称")
private String descripiton; private String faultName;
@ExcelProperty(value = "缺陷等级", index = 6) @ExcelProperty(value = "缺陷等级", index = 5)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "缺陷等级, 字段key: defectLevel") @ApiModelProperty(value = "缺陷等级, 字段key: defectLevel")
private String defectLevel; private String defectLevel;
@ExcelProperty(value = "处理时间", index = 7) @ExcelProperty(value = "处理时间", index = 6)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@DateTimeFormat( @DateTimeFormat(
pattern = "yyyy-MM-dd HH:mm:ss" pattern = "yyyy-MM-dd HH:mm:ss"
@ -74,7 +74,7 @@ public class OperDefectStatisticsExportVO {
@ApiModelProperty(value = "处理时间") @ApiModelProperty(value = "处理时间")
private Date actStartTime; private Date actStartTime;
@ExcelProperty(value = "处理人", index = 8) @ExcelProperty(value = "处理人", index = 7)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "消缺处理人") @ApiModelProperty(value = "消缺处理人")
private String planHandler; private String planHandler;
@ -84,13 +84,13 @@ public class OperDefectStatisticsExportVO {
// @ApiModelProperty(value = "消缺处理人") // @ApiModelProperty(value = "消缺处理人")
// private String planHandlerId; // private String planHandlerId;
@ExcelProperty(value = "处理结果", index = 9) @ExcelProperty(value = "处理描述", index = 8)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "处理描述") @ApiModelProperty(value = "处理描述")
private String disposeDesc; private String disposeDesc;
@ExcelProperty(value = "关联工作票编码", index = 10) @ExcelProperty(value = "关联工作票编码", index = 9)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "操作票") @ApiModelProperty(value = "操作票")
private String ticketId; private String ticketId;

3
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/vo/RealStationVo.java

@ -43,6 +43,9 @@ public class RealStationVo implements Serializable {
@ApiModelProperty("站点状态 : 0-正常 1-数据中断") @ApiModelProperty("站点状态 : 0-正常 1-数据中断")
private Integer status; private Integer status;
@ApiModelProperty("铃铛展示: 0-不展示 1-展示")
private Integer bell;
@ApiModelProperty("排序") @ApiModelProperty("排序")
private Integer sort; private Integer sort;
} }

4
hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/feign/ITicketInfoClient.java

@ -29,6 +29,7 @@ public interface ITicketInfoClient {
String UPDATE_UNDONE_STATUS = API_PREFIX + "/updateUndoneStatus"; String UPDATE_UNDONE_STATUS = API_PREFIX + "/updateUndoneStatus";
String GET_WORK_TICKET_BY_TIME = API_PREFIX + "/getWorkTicketByTime"; String GET_WORK_TICKET_BY_TIME = API_PREFIX + "/getWorkTicketByTime";
String GET_OPERATE_TICKET_BY_TIME = API_PREFIX + "/getOperateTicketByTime"; String GET_OPERATE_TICKET_BY_TIME = API_PREFIX + "/getOperateTicketByTime";
String GET_OPERATE_TICKET_INFO_BY_IDS = API_PREFIX + "/getWorkTicketInfoById";
String GET_TICKET_PASS_BY_IDS = API_PREFIX + "/getTicketPassByIds"; String GET_TICKET_PASS_BY_IDS = API_PREFIX + "/getTicketPassByIds";
String GET_WORK_TICKET_TRANSFER = API_PREFIX + "/getWorkTicketTransfer"; String GET_WORK_TICKET_TRANSFER = API_PREFIX + "/getWorkTicketTransfer";
String GET_WORK_TICKET_STATISTIC = API_PREFIX + "/getWorkTicketStatistic"; String GET_WORK_TICKET_STATISTIC = API_PREFIX + "/getWorkTicketStatistic";
@ -62,6 +63,9 @@ public interface ITicketInfoClient {
@GetMapping(GET_OPERATE_TICKET_BY_TIME) @GetMapping(GET_OPERATE_TICKET_BY_TIME)
R<List<StandardTicketInfoEntity>> getOperateTicketByTime(@RequestParam String startDate, @RequestParam String endDate); R<List<StandardTicketInfoEntity>> getOperateTicketByTime(@RequestParam String startDate, @RequestParam String endDate);
@GetMapping(GET_OPERATE_TICKET_INFO_BY_IDS)
R<List<WorkTicketInfoEntity>> getWorkTicketInfoById(@RequestParam List<Long> ticekeIds);
/** /**
* 获取操作票的合格率 * 获取操作票的合格率
* @param ticekeIds * @param ticekeIds

5
hzims-service-api/ticket-api/src/main/java/com/hnac/hzims/ticket/workTicket/feign/TicketInfoClientFallback.java

@ -32,7 +32,10 @@ public class TicketInfoClientFallback implements ITicketInfoClient {
public R<List<StandardTicketInfoEntity>> getOperateTicketByTime(String startDate, String endDate) { public R<List<StandardTicketInfoEntity>> getOperateTicketByTime(String startDate, String endDate) {
return R.fail("查询失败!"); return R.fail("查询失败!");
} }
@Override
public R<List<WorkTicketInfoEntity>> getWorkTicketInfoById(List<Long> ticekeIds) {
return R.fail("查询失败!");
}
@Override @Override
public R<Long> getTicketPassByIds(@RequestParam List<Long> ticekeIds) { public R<Long> getTicketPassByIds(@RequestParam List<Long> ticekeIds) {
return R.fail("查询失败!"); return R.fail("查询失败!");

5
hzims-service/hzims-scheduled/pom.xml

@ -47,6 +47,11 @@
<artifactId>inspect-api</artifactId> <artifactId>inspect-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.hnac.hzims</groupId>
<artifactId>alarm-api</artifactId>
<version>4.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId> <groupId>org.springblade</groupId>
<artifactId>blade-core-test</artifactId> <artifactId>blade-core-test</artifactId>
<scope>test</scope> <scope>test</scope>

12
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/alarm/AlarmQueryMapper.java

@ -0,0 +1,12 @@
package com.hnac.hzims.scheduled.mapper.alarm;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.alarm.entity.AlarmEntity;
/**
* @author ysj
*/
public interface AlarmQueryMapper extends BaseMapper<AlarmEntity> {
}

16
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/alarm/AlarmQueryService.java

@ -0,0 +1,16 @@
package com.hnac.hzims.scheduled.service.alarm;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
* @author ysj
*/
public interface AlarmQueryService extends BaseService<AlarmEntity> {
List<String> bells(List<String> codes);
List<String> aborts(List<String> codes);
}

74
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/alarm/impl/AlarmQueryServiceImpl.java

@ -0,0 +1,74 @@
package com.hnac.hzims.scheduled.service.alarm.impl;
import cn.hutool.core.stream.CollectorUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.alarm.constants.AlarmConstants;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.scheduled.mapper.alarm.AlarmQueryMapper;
import com.hnac.hzims.scheduled.service.alarm.AlarmQueryService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author ysj
*/
@AllArgsConstructor
@Service
@Slf4j
@DS("alarm")
public class AlarmQueryServiceImpl extends BaseServiceImpl<AlarmQueryMapper, AlarmEntity> implements AlarmQueryService {
/**
* 查询站点铃铛
* @param codes
* @return
*/
@Override
public List<String> bells(List<String> codes) {
List<AlarmEntity> alarms = this.list(Wrappers.<AlarmEntity>lambdaQuery()
.in(AlarmEntity::getStationId,codes)
.eq(AlarmEntity::getIsSmallBell,0)
);
if(CollectionUtil.isEmpty(alarms)){
return new ArrayList<>();
}
return alarms.stream().map(AlarmEntity::getStationId).distinct().collect(Collectors.toList());
}
/**
* 查询站点数据中断
* @param codes
* @return
*/
@Override
public List<String> aborts(List<String> codes) {
List<AlarmEntity> alarms = this.list(Wrappers.<AlarmEntity>lambdaQuery()
.in(AlarmEntity::getStationId,codes)
.eq(AlarmEntity::getAlarmSource, AlarmConstants.HZ3000_ALARM)
.in(AlarmEntity::getAlarmType, Arrays.asList(AlarmConstants.INTERRUPT,AlarmConstants.ABNORMAL))
);
if(CollectionUtil.isEmpty(alarms)){
return new ArrayList<>();
}
return alarms.stream().collect(Collectors.groupingBy(AlarmEntity::getStationId)).entrySet().stream().map(entry->{
// 站点最近的一条数据中断、数据异常告警
AlarmEntity alarm = entry.getValue().stream().sorted(Comparator.comparing(AlarmEntity::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
// 状态为中断
if(alarm.getAlarmStatus().equals(0)){
return alarm.getStationId();
}
return "";
}).filter(StringUtil::isBlank).distinct().collect(Collectors.toList());
}
}

34
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/monitor/impl/MonitorServiceImpl.java

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.hnac.hzims.alarm.entity.AlarmEntity;
import com.hnac.hzims.equipment.entity.WorkshopInfoEntity; import com.hnac.hzims.equipment.entity.WorkshopInfoEntity;
import com.hnac.hzims.equipment.vo.EminfoAndEmParamVo; import com.hnac.hzims.equipment.vo.EminfoAndEmParamVo;
import com.hnac.hzims.fdp.vo.FdpFaultStatusVo; import com.hnac.hzims.fdp.vo.FdpFaultStatusVo;
@ -18,6 +19,7 @@ import com.hnac.hzims.operational.main.vo.RealDeviceVo;
import com.hnac.hzims.operational.main.vo.RealStationVo; import com.hnac.hzims.operational.main.vo.RealStationVo;
import com.hnac.hzims.operational.station.entity.StationAttributeEntity; import com.hnac.hzims.operational.station.entity.StationAttributeEntity;
import com.hnac.hzims.operational.station.entity.StationEntity; import com.hnac.hzims.operational.station.entity.StationEntity;
import com.hnac.hzims.scheduled.service.alarm.AlarmQueryService;
import com.hnac.hzims.scheduled.service.equipment.WorkshopInfoService; import com.hnac.hzims.scheduled.service.equipment.WorkshopInfoService;
import com.hnac.hzims.scheduled.service.operation.alarm.AbnormalAlarmService; import com.hnac.hzims.scheduled.service.operation.alarm.AbnormalAlarmService;
import com.hnac.hzims.scheduled.service.operation.alarm.RecordService; import com.hnac.hzims.scheduled.service.operation.alarm.RecordService;
@ -57,6 +59,7 @@ public class MonitorServiceImpl implements MonitorService {
private final RecordService alertService; private final RecordService alertService;
private final StationService stationService; private final StationService stationService;
private final AlarmQueryService alarmQueryService;
private final StationAttributeService attbtService; private final StationAttributeService attbtService;
private final WorkshopInfoService workshopInfoService; private final WorkshopInfoService workshopInfoService;
private final AbnormalAlarmService abnormalAlarmService; private final AbnormalAlarmService abnormalAlarmService;
@ -278,7 +281,6 @@ public class MonitorServiceImpl implements MonitorService {
List<StAlarmRecordEntity> alertList = alertService.list(new LambdaQueryWrapper<StAlarmRecordEntity>() {{ List<StAlarmRecordEntity> alertList = alertService.list(new LambdaQueryWrapper<StAlarmRecordEntity>() {{
orderByDesc(StAlarmRecordEntity::getCreateTime); orderByDesc(StAlarmRecordEntity::getCreateTime);
}}); }});
List<String> alarmList = abnormalAlarmService.abnormalAlarms();
// 获取所有故障记录 // 获取所有故障记录
List<FdpFaultStatusVo> faultList = this.getFdpFaultAll(); List<FdpFaultStatusVo> faultList = this.getFdpFaultAll();
// 所有设备分类 // 所有设备分类
@ -290,6 +292,10 @@ public class MonitorServiceImpl implements MonitorService {
// 获取站点列表 // 获取站点列表
List<StationEntity> stationEntityList = stationService.list(Wrappers.<StationEntity>lambdaQuery() List<StationEntity> stationEntityList = stationService.list(Wrappers.<StationEntity>lambdaQuery()
.in(StationEntity::getCode,new ArrayList<>(stationAttbtMap.keySet()))); .in(StationEntity::getCode,new ArrayList<>(stationAttbtMap.keySet())));
// 铃铛
List<String> bells = alarmQueryService.bells(stationEntityList.stream().map(StationEntity::getCode).collect(Collectors.toList()));
// 数据中断
List<String> aborts = alarmQueryService.aborts(stationEntityList.stream().map(StationEntity::getCode).collect(Collectors.toList()));
// 隐藏设备列表 // 隐藏设备列表
List<String> hideList = attrConfigService.getHideList(); List<String> hideList = attrConfigService.getHideList();
// 分割,每个map限制10个长度 // 分割,每个map限制10个长度
@ -328,8 +334,10 @@ public class MonitorServiceImpl implements MonitorService {
this.getDeviceParam(devices, deviceClassifyMap, deviceList); this.getDeviceParam(devices, deviceClassifyMap, deviceList);
// 运行设备状态设置 // 运行设备状态设置
this.deviceState(deviceList); this.deviceState(deviceList);
// 设置站点状态 // 设置站点状态:数据中断
this.setStationStatus(alarmList,station,key,deviceList); this.setStationStatus(aborts,station,key,deviceList);
// 铃铛
this.stationBell(station,bells);
station.setDeviceList(deviceList.stream().sorted(Comparator.comparing((RealDeviceVo::getDeviceName))).collect(Collectors.toList())); station.setDeviceList(deviceList.stream().sorted(Comparator.comparing((RealDeviceVo::getDeviceName))).collect(Collectors.toList()));
stationList.add(station); stationList.add(station);
}); });
@ -348,6 +356,21 @@ public class MonitorServiceImpl implements MonitorService {
} }
/** /**
* 站点铃铛设置
* @param station
* @param bells
*/
private void stationBell(RealStationVo station, List<String> bells) {
station.setBell(0);
if(CollectionUtil.isEmpty(bells)){
return;
}
if(bells.contains(station.getStationCode())){
station.setBell(1);
}
}
/**
* 设备处理 * 设备处理
* *
* @param list * @param list
@ -674,11 +697,10 @@ public class MonitorServiceImpl implements MonitorService {
/** /**
* 设置站点状态 * 设置站点状态
* @param alarmList
* @param station * @param station
* @param key * @param key
*/ */
private void setStationStatus(List<String> alarmList, RealStationVo station, String key,List<RealDeviceVo> deviceList) { private void setStationStatus(List<String> aborts,RealStationVo station, String key,List<RealDeviceVo> deviceList) {
// 站点功率大于0为正常上送数据 // 站点功率大于0为正常上送数据
for(RealDeviceVo item : deviceList){ for(RealDeviceVo item : deviceList){
if(!CollectionUtil.isEmpty(item.getAttbtList())){ if(!CollectionUtil.isEmpty(item.getAttbtList())){
@ -695,7 +717,7 @@ public class MonitorServiceImpl implements MonitorService {
} }
} }
} }
if(alarmList.contains(key)){ if(aborts.contains(key)){
station.setStatus(1); station.setStatus(1);
} }
} }

5
hzims-service/hzims-scheduled/src/main/resources/mapper/alarm/AlarmQueryMapper.xml

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hnac.hzims.alarm.show.mapper.AlarmMapper">
</mapper>

3
hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessagePushRecordController.java

@ -2,6 +2,7 @@ package com.hnac.hzims.message.controller;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.common.logs.annotation.OperationAnnotation; import com.hnac.hzims.common.logs.annotation.OperationAnnotation;
@ -97,7 +98,7 @@ public class MessagePushRecordController extends BladeController {
.eq(MessagePushRecordEntity::getPusher, AuthUtil.getUserId()) .eq(MessagePushRecordEntity::getPusher, AuthUtil.getUserId())
.eq(MessagePushRecordEntity::getStatus, MessageConstants.PUSH_SUCCESS) .eq(MessagePushRecordEntity::getStatus, MessageConstants.PUSH_SUCCESS)
.eq(Func.isNotEmpty(businessClassify),MessagePushRecordEntity::getBusinessClassify,businessClassify) .eq(Func.isNotEmpty(businessClassify),MessagePushRecordEntity::getBusinessClassify,businessClassify)
.eq(Func.isNotEmpty(type),MessagePushRecordEntity::getType,type); .eq(StringUtils.isNotBlank(type),MessagePushRecordEntity::getType,type);
return R.status(messagePushRecordService.update(eq)); return R.status(messagePushRecordService.update(eq));
} }

15
hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/controller/OperDefectStatisticsController.java

@ -35,6 +35,10 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -110,6 +114,13 @@ public class OperDefectStatisticsController extends BladeController {
= "缺陷数据导出") = "缺陷数据导出")
public void exportDefectList(HttpServletResponse response,@RequestBody OperDefectStatisticsVO entity) { public void exportDefectList(HttpServletResponse response,@RequestBody OperDefectStatisticsVO entity) {
try { try {
long timeMillis = System.currentTimeMillis();
if(ObjectUtil.isEmpty(entity.getCreateTime())&&ObjectUtil.isEmpty(entity.getCreateEndTime())){
LocalDateTime date = LocalDateTime.now();
LocalDateTime firstDay = date.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);
entity.setCreateTime(Date.from(firstDay.atZone(ZoneId.systemDefault()).toInstant()));
entity.setCreateEndTime(new Date());
}
response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
@ -117,7 +128,11 @@ public class OperDefectStatisticsController extends BladeController {
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
LambdaQueryWrapper<OperDefectStatisticsEntity> queryWrapper = statisticsService.getQueryWrapper(entity); LambdaQueryWrapper<OperDefectStatisticsEntity> queryWrapper = statisticsService.getQueryWrapper(entity);
List<OperDefectStatisticsEntity> list = statisticsService.list(queryWrapper); List<OperDefectStatisticsEntity> list = statisticsService.list(queryWrapper);
long timeMillis1 =System.currentTimeMillis()- timeMillis;
System.out.println("查询对应实例类耗时============================"+ timeMillis1);
List<OperDefectStatisticsExportVO> defectStatisticsExportVO = statisticsService.getDefectStatisticsExportVO(list); List<OperDefectStatisticsExportVO> defectStatisticsExportVO = statisticsService.getDefectStatisticsExportVO(list);
long timeMillis2 =System.currentTimeMillis()- timeMillis;
System.out.println("参数转换耗时============================"+ timeMillis2);
if(defectStatisticsExportVO!=null && defectStatisticsExportVO.size()>0){ if(defectStatisticsExportVO!=null && defectStatisticsExportVO.size()>0){
System.out.println("---------------- size = " + defectStatisticsExportVO.size()); System.out.println("---------------- size = " + defectStatisticsExportVO.size());
// 这里需要设置不关闭流 // 这里需要设置不关闭流

57
hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/OperDefectStatisticsServiceImpl.java

@ -12,20 +12,25 @@ import com.hnac.hzims.operational.defect.vo.OperDefectStatisticsExportVO;
import com.hnac.hzims.operational.defect.vo.OperDefectStatisticsVO; import com.hnac.hzims.operational.defect.vo.OperDefectStatisticsVO;
import com.hnac.hzims.operational.defect.vo.StatistictCount; import com.hnac.hzims.operational.defect.vo.StatistictCount;
import com.hnac.hzims.operational.defect.vo.StatistictCountVo; import com.hnac.hzims.operational.defect.vo.StatistictCountVo;
import com.hnac.hzims.ticket.workTicket.entity.WorkTicketInfoEntity;
import com.hnac.hzims.ticket.workTicket.feign.ITicketInfoClient;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.system.cache.DictCache; import org.springblade.system.cache.DictCache;
import org.springblade.system.entity.Dept;
import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.cache.UserCache;
import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient; import org.springblade.system.user.feign.IUserClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 服务实现类 * 服务实现类
@ -40,6 +45,8 @@ public class OperDefectStatisticsServiceImpl extends BaseServiceImpl<OperDefectS
private ISysClient sysClient; private ISysClient sysClient;
@Autowired @Autowired
private IUserClient userClient; private IUserClient userClient;
@Autowired
private ITicketInfoClient iTicketInfoClient;
/** /**
* 获取设备缺陷统计数据 * 获取设备缺陷统计数据
@ -153,35 +160,40 @@ public class OperDefectStatisticsServiceImpl extends BaseServiceImpl<OperDefectS
@Override @Override
public List<OperDefectStatisticsExportVO> getDefectStatisticsExportVO(List<OperDefectStatisticsEntity> list) { public List<OperDefectStatisticsExportVO> getDefectStatisticsExportVO(List<OperDefectStatisticsEntity> list) {
List<OperDefectStatisticsExportVO> res=new ArrayList<>();
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) { List<OperDefectStatisticsExportVO> defectLevel = list.parallelStream().map(entity -> {
OperDefectStatisticsExportVO operDefectStatisticsExportVO = new OperDefectStatisticsExportVO(); OperDefectStatisticsExportVO operDefectStatisticsExportVO = new OperDefectStatisticsExportVO();
operDefectStatisticsExportVO.setNumber(i+1);
OperDefectStatisticsEntity entity = list.get(i);
Long createDept = entity.getCreateDept(); Long createDept = entity.getCreateDept();
R<Dept> dept = sysClient.getDept(createDept); R<String> deptName = sysClient.getDeptName(createDept);
if (dept.isSuccess()&& ObjectUtils.isNotEmpty(dept.getData())){ if (deptName.isSuccess() && ObjectUtils.isNotEmpty(deptName.getData())) {
operDefectStatisticsExportVO.setDeptName(dept.getData().getDeptName()); operDefectStatisticsExportVO.setDeptName(deptName.getData());
} }
operDefectStatisticsExportVO.setDefectCode(entity.getDefectCode()); operDefectStatisticsExportVO.setDefectCode(entity.getDefectCode());
if (ObjectUtils.isNotEmpty(entity.getFinder())) { if (ObjectUtils.isNotEmpty(entity.getFinder())) {
R<User> finderUser = userClient.userInfoById(entity.getFinder()); User user = UserCache.getUser(entity.getFinder());
if (finderUser.isSuccess() && ObjectUtils.isNotEmpty(finderUser.getData())) { if (ObjectUtils.isNotEmpty(user)) {
operDefectStatisticsExportVO.setFinderName(finderUser.getData().getName()); operDefectStatisticsExportVO.setFinderName(user.getName());
} }
// R<User> finderUser = userClient.userInfoById(entity.getFinder());
// if (finderUser.isSuccess() && ObjectUtils.isNotEmpty(finderUser.getData())) {
// operDefectStatisticsExportVO.setFinderName(finderUser.getData().getName());
// }
} }
if (StringUtils.isNotBlank(entity.getPlanHandler())) { if (StringUtils.isNotBlank(entity.getPlanHandler())) {
R<User> planHandlerUser = userClient.userInfoById(Long.valueOf(entity.getPlanHandler())); User user = UserCache.getUser(Long.valueOf(entity.getPlanHandler()));
if (planHandlerUser.isSuccess() && ObjectUtils.isNotEmpty(planHandlerUser.getData())) { if (ObjectUtils.isNotEmpty(user)) {
operDefectStatisticsExportVO.setPlanHandler(planHandlerUser.getData().getName()); operDefectStatisticsExportVO.setPlanHandler(user.getName());
} }
// R<User> planHandlerUser = userClient.userInfoById(Long.valueOf(entity.getPlanHandler()));
// if (planHandlerUser.isSuccess() && ObjectUtils.isNotEmpty(planHandlerUser.getData())) {
// operDefectStatisticsExportVO.setPlanHandler(planHandlerUser.getData().getName());
// }
} }
if (ObjectUtils.isNotEmpty(entity.getFindTime())) { if (ObjectUtils.isNotEmpty(entity.getFindTime())) {
operDefectStatisticsExportVO.setFindTime(entity.getFindTime()); operDefectStatisticsExportVO.setFindTime(entity.getFindTime());
} }
if (StringUtils.isNotBlank(entity.getDescripiton())) { if (StringUtils.isNotBlank(entity.getFaultName())) {
operDefectStatisticsExportVO.setDescripiton(entity.getDescripiton()); operDefectStatisticsExportVO.setFaultName(entity.getFaultName());
} }
if (StringUtils.isNotBlank(entity.getDefectLevel())) { if (StringUtils.isNotBlank(entity.getDefectLevel())) {
String level = DictCache.getValue("defectLevel", entity.getDefectLevel()); String level = DictCache.getValue("defectLevel", entity.getDefectLevel());
@ -194,11 +206,18 @@ public class OperDefectStatisticsServiceImpl extends BaseServiceImpl<OperDefectS
operDefectStatisticsExportVO.setDisposeDesc(entity.getDisposeDesc()); operDefectStatisticsExportVO.setDisposeDesc(entity.getDisposeDesc());
} }
if (StringUtils.isNotBlank(entity.getTicketId())) { if (StringUtils.isNotBlank(entity.getTicketId())) {
operDefectStatisticsExportVO.setTicketId(entity.getTicketId()); R<List<WorkTicketInfoEntity>> workTicketInfoById = iTicketInfoClient.getWorkTicketInfoById(Arrays.asList(Long.valueOf(entity.getTicketId())));
if (workTicketInfoById.isSuccess()&&CollectionUtil.isNotEmpty(workTicketInfoById.getData())) {
//获取工作票的编码Id
operDefectStatisticsExportVO.setTicketId(workTicketInfoById.getData().get(0).getCode());
}
} }
res.add(operDefectStatisticsExportVO); return operDefectStatisticsExportVO;
} }
).collect(Collectors.toList());
return defectLevel;
} else {
return new ArrayList<>();
} }
return res;
} }
} }

9
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/controller/StandardTicketInfoController.java

@ -33,12 +33,15 @@ import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.flow.core.vo.ComleteTask; import org.springblade.flow.core.vo.ComleteTask;
import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -103,6 +106,12 @@ public class StandardTicketInfoController extends BladeController {
= "操作票导出") = "操作票导出")
public void exportStandardTicket(HttpServletResponse response,@RequestBody StandardTicketInfoDto req) { public void exportStandardTicket(HttpServletResponse response,@RequestBody StandardTicketInfoDto req) {
try { try {
if(ObjectUtils.isEmpty(req.getStartTime())&&ObjectUtils.isEmpty(req.getEndTime())){
LocalDateTime date = LocalDateTime.now();
LocalDateTime firstDay = date.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);
req.setStartTime(firstDay);
req.setEndTime(date);
}
response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系

57
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java

@ -12,7 +12,9 @@ import com.hnac.hzims.ticket.allTicket.entity.TicketInfoEvaluateEntity;
import com.hnac.hzims.ticket.allTicket.service.TicketInfoEvaluateService; import com.hnac.hzims.ticket.allTicket.service.TicketInfoEvaluateService;
import com.hnac.hzims.ticket.allTicket.vo.DoublePassRateVO; import com.hnac.hzims.ticket.allTicket.vo.DoublePassRateVO;
import com.hnac.hzims.ticket.allTicket.vo.DoublePassVO; import com.hnac.hzims.ticket.allTicket.vo.DoublePassVO;
import com.hnac.hzims.ticket.allTicket.vo.TicketInfoEvaluateVO;
import com.hnac.hzims.ticket.allTicket.vo.TicketInfoStatisticVO; import com.hnac.hzims.ticket.allTicket.vo.TicketInfoStatisticVO;
import com.hnac.hzims.ticket.areamonthly.feign.TicketFeignClient;
import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketVo;
import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo;
import com.hnac.hzims.ticket.constants.DictConstants; import com.hnac.hzims.ticket.constants.DictConstants;
@ -82,6 +84,9 @@ import java.util.stream.Collectors;
public class StandardTicketInfoServiceImpl extends BaseServiceImpl<StandardTicketInfoMapper, StandardTicketInfoEntity> implements IStandardTicketInfoService { public class StandardTicketInfoServiceImpl extends BaseServiceImpl<StandardTicketInfoMapper, StandardTicketInfoEntity> implements IStandardTicketInfoService {
private final IStandardTicketMeasureService standardTicketMeasureService; private final IStandardTicketMeasureService standardTicketMeasureService;
private final TicketFeignClient ticketFeignClient;
private final IFlowClient flowClient; private final IFlowClient flowClient;
private final IStandardTicketMeasureService measureService; private final IStandardTicketMeasureService measureService;
private final IWorkTicketInfoService iWorkTicketInfoService; private final IWorkTicketInfoService iWorkTicketInfoService;
@ -807,27 +812,59 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl<StandardTicke
List<StandardTicketInfoEntity> standardTicketInfoEntities = super.baseMapper.selectList(queryWrapper); List<StandardTicketInfoEntity> standardTicketInfoEntities = super.baseMapper.selectList(queryWrapper);
List<StandardTicketExportVO> list=new ArrayList<>(); List<StandardTicketExportVO> list=new ArrayList<>();
if (CollectionUtils.isNotEmpty(standardTicketInfoEntities)){ if (CollectionUtils.isNotEmpty(standardTicketInfoEntities)){
List<StandardTicketInfoVO> standardTicketInfoVOS = StandardTicketInfoWrapper.build().listVO(standardTicketInfoEntities); List<StandardTicketExportVO> standardTicketInfoVOS = standardTicketInfoEntities.parallelStream().map(standardTicketInfoEntity -> {
for (int i = 0; i < standardTicketInfoVOS.size(); i++) {
StandardTicketExportVO exportVO = new StandardTicketExportVO(); StandardTicketExportVO exportVO = new StandardTicketExportVO();
StandardTicketInfoVO standardTicketInfoEntity = standardTicketInfoVOS.get(i); try {
exportVO.setNumber(i+1);
exportVO.setCompany(Optional.ofNullable(standardTicketInfoEntity.getCompany()).orElse(null)); exportVO.setCompany(Optional.ofNullable(standardTicketInfoEntity.getCompany()).orElse(null));
exportVO.setTicketType(Optional.ofNullable(DictCache.getValue(TicketConstants.TICKET_TYPE, standardTicketInfoEntity.getTicketType())).orElse(null)); exportVO.setTicketType(Optional.ofNullable(DictCache.getValue(TicketConstants.TICKET_TYPE, standardTicketInfoEntity.getTicketType())).orElse(null));
exportVO.setCode(Optional.ofNullable(standardTicketInfoEntity.getCode()).orElse(null)); exportVO.setCode(Optional.ofNullable(standardTicketInfoEntity.getCode()).orElse(null));
exportVO.setTitle(Optional.ofNullable(standardTicketInfoEntity.getTitle()).orElse(null)); exportVO.setTitle(Optional.ofNullable(standardTicketInfoEntity.getTitle()).orElse(null));
exportVO.setIssueOrderPerson(Optional.ofNullable(standardTicketInfoEntity.getIssueOrderPersonName()).orElse(null)); if (ObjectUtil.isNotEmpty(standardTicketInfoEntity.getIssueOrderPerson())) {
exportVO.setAccessOrderPerson(Optional.ofNullable(standardTicketInfoEntity.getAccessOrderPersonName()).orElse(null)); User issueOrderPerson = UserCache.getUser(standardTicketInfoEntity.getIssueOrderPerson());
exportVO.setGuardian(Optional.ofNullable(standardTicketInfoEntity.getGuardianName()).orElse(null)); if (ObjectUtil.isNotEmpty(issueOrderPerson)) {
exportVO.setPrincipal(Optional.ofNullable(standardTicketInfoEntity.getPrincipalName()).orElse(null)); exportVO.setIssueOrderPerson(issueOrderPerson.getName());
}
}
if (ObjectUtil.isNotEmpty(standardTicketInfoEntity.getAccessOrderPerson())) {
User accessOrderPerson = UserCache.getUser(standardTicketInfoEntity.getAccessOrderPerson());
if (ObjectUtil.isNotEmpty(accessOrderPerson)) {
exportVO.setAccessOrderPerson(accessOrderPerson.getName());
}
}
if (ObjectUtil.isNotEmpty(standardTicketInfoEntity.getGuardian())) {
User guardian = UserCache.getUser(standardTicketInfoEntity.getGuardian());
if (ObjectUtil.isNotEmpty(guardian)) {
exportVO.setGuardian(guardian.getName());
}
}
if (ObjectUtil.isNotEmpty(standardTicketInfoEntity.getPrincipal())) {
User principal = UserCache.getUser(standardTicketInfoEntity.getPrincipal());
if (ObjectUtil.isNotEmpty(principal)) {
exportVO.setPrincipal(principal.getName());
}
}
exportVO.setStartTime(Optional.ofNullable(DateUtil.format(standardTicketInfoEntity.getStartTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse("")); exportVO.setStartTime(Optional.ofNullable(DateUtil.format(standardTicketInfoEntity.getStartTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse(""));
exportVO.setEndTime(Optional.ofNullable(DateUtil.format(standardTicketInfoEntity.getEndTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse("")); exportVO.setEndTime(Optional.ofNullable(DateUtil.format(standardTicketInfoEntity.getEndTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse(""));
exportVO.setIsEvaluate("未评价");
if (ObjectUtils.isNotEmpty(standardTicketInfoEntity.getIsEvaluate())) { if (ObjectUtils.isNotEmpty(standardTicketInfoEntity.getIsEvaluate())) {
exportVO.setIsEvaluate(standardTicketInfoEntity.getIsEvaluate()==0?"不合格":"合格"); if (standardTicketInfoEntity.getIsEvaluate() == 1) {
TicketInfoEvaluateEntity ticketInfoEvaluateEntity = new TicketInfoEvaluateEntity();
ticketInfoEvaluateEntity.setTicketId(standardTicketInfoEntity.getId());
R<List<TicketInfoEvaluateVO>> ticketList = ticketFeignClient.list(ticketInfoEvaluateEntity);
if (ticketList.isSuccess() && CollectionUtil.isNotEmpty(ticketList.getData())) {
exportVO.setIsEvaluate(ticketList.getData().get(0).getStatus() == 1 ? "合格" : "不合格");
} }
list.add(exportVO);
} }
} }
}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; return list;
} }
} }
}

30
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/vo/StandardTicketExportVO.java

@ -13,65 +13,65 @@ import org.springframework.format.annotation.DateTimeFormat;
@Data @Data
public class StandardTicketExportVO { public class StandardTicketExportVO {
private static final long serialVersionUID = 8239436726489738763L; private static final long serialVersionUID = 8239436726489738763L;
@ExcelProperty(value = "序号", index = 0) // @ExcelProperty(value = "序号", index = 0)
@ColumnWidth(value = 20) // @ColumnWidth(value = 20)
@ApiModelProperty(value = "序号") // @ApiModelProperty(value = "序号")
private Integer number; // private Integer number;
@ExcelProperty(value = "单位", index = 1) @ExcelProperty(value = "单位", index = 0)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "单位") @ApiModelProperty(value = "单位")
private String company; private String company;
@ExcelProperty(value = "票类", index = 2) @ExcelProperty(value = "票类", index = 1)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "票据类型") @ApiModelProperty(value = "票据类型")
private String ticketType; private String ticketType;
@ExcelProperty(value = "操作票编号", index = 3) @ExcelProperty(value = "操作票编号", index = 2)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "操作票编号") @ApiModelProperty(value = "操作票编号")
private String code; private String code;
@ApiModelProperty("操作票任务") @ApiModelProperty("操作票任务")
@ExcelProperty(value = "操作票任务", index = 4) @ExcelProperty(value = "操作票任务", index = 3)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
private String title; private String title;
@ExcelProperty(value = "发令人", index = 5) @ExcelProperty(value = "发令人", index = 4)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "发令人") @ApiModelProperty(value = "发令人")
private String issueOrderPerson; private String issueOrderPerson;
@ExcelProperty(value = "受令人", index = 6) @ExcelProperty(value = "受令人", index = 5)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "受令人") @ApiModelProperty(value = "受令人")
private String accessOrderPerson; private String accessOrderPerson;
@ExcelProperty(value = "监护人", index = 7) @ExcelProperty(value = "监护人", index = 6)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "监护人") @ApiModelProperty(value = "监护人")
private String guardian; private String guardian;
@ExcelProperty(value = "值班负责人", index = 8) @ExcelProperty(value = "值班负责人", index = 7)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "值班负责人") @ApiModelProperty(value = "值班负责人")
private String principal; private String principal;
@ExcelProperty(value = "操作开始时间", index = 9) @ExcelProperty(value = "操作开始时间", index = 8)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty("操作开始时间") @ApiModelProperty("操作开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String startTime; private String startTime;
@ExcelProperty(value = "操作结束时间", index = 10) @ExcelProperty(value = "操作结束时间", index = 9)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty("操作结束时间") @ApiModelProperty("操作结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ -79,7 +79,7 @@ public class StandardTicketExportVO {
private String endTime; private String endTime;
@ExcelProperty(value = "评价", index = 11) @ExcelProperty(value = "评价", index = 10)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty("是否评价") @ApiModelProperty("是否评价")
private String isEvaluate; private String isEvaluate;

25
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/wrapper/StandardTicketInfoWrapper.java

@ -5,6 +5,7 @@ import com.hnac.hzims.ticket.standardTicket.entity.StandardTicketInfoEntity;
import com.hnac.hzims.ticket.standardTicket.vo.StandardTicketInfoVO; import com.hnac.hzims.ticket.standardTicket.vo.StandardTicketInfoVO;
import org.springblade.core.mp.support.BaseEntityWrapper; import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.cache.DictCache; import org.springblade.system.cache.DictCache;
import org.springblade.system.user.cache.UserCache; import org.springblade.system.user.cache.UserCache;
import org.springblade.system.user.entity.User; import org.springblade.system.user.entity.User;
@ -30,12 +31,24 @@ public class StandardTicketInfoWrapper extends BaseEntityWrapper<StandardTicketI
User accessOrderPerson = UserCache.getUser(standardTicketInfoVO.getAccessOrderPerson()); User accessOrderPerson = UserCache.getUser(standardTicketInfoVO.getAccessOrderPerson());
User principal = UserCache.getUser(standardTicketInfoVO.getPrincipal()); User principal = UserCache.getUser(standardTicketInfoVO.getPrincipal());
User guardian = UserCache.getUser(standardTicketInfoVO.getGuardian()); User guardian = UserCache.getUser(standardTicketInfoVO.getGuardian());
standardTicketInfoVO.setCreateUserName(Optional.ofNullable(creator).map(User::getName).orElse(null)); if (ObjectUtil.isNotEmpty(creator)){
standardTicketInfoVO.setUpdateUserName(Optional.ofNullable(updater).map(User::getName).orElse(null)); standardTicketInfoVO.setCreateUserName(creator.getName());
standardTicketInfoVO.setIssueOrderPersonName(Optional.ofNullable(issueOrderPerson).map(User::getName).orElse(null)); }
standardTicketInfoVO.setAccessOrderPersonName(Optional.ofNullable(accessOrderPerson).map(User::getName).orElse(null)); if (ObjectUtil.isNotEmpty(updater)){
standardTicketInfoVO.setPrincipalName(Optional.ofNullable(principal).map(User::getName).orElse(null)); standardTicketInfoVO.setUpdateUserName(updater.getName());
standardTicketInfoVO.setGuardianName(Optional.ofNullable(guardian).map(User::getName).orElse(null)); }
if (ObjectUtil.isNotEmpty(issueOrderPerson)){
standardTicketInfoVO.setIssueOrderPersonName(issueOrderPerson.getName());
}
if (ObjectUtil.isNotEmpty(accessOrderPerson)){
standardTicketInfoVO.setAccessOrderPersonName(accessOrderPerson.getName());
}
if (ObjectUtil.isNotEmpty(principal)){
standardTicketInfoVO.setPrincipalName(principal.getName());
}
if (ObjectUtil.isNotEmpty(guardian)){
standardTicketInfoVO.setGuardianName(guardian.getName());
}
/**来源类型名称**/ /**来源类型名称**/
standardTicketInfoVO.setTaskTypeName(Optional.ofNullable(entity.getTaskType()).map(t-> DictCache.getValue(DictConstants.TICKET_SOURCE_TYPE,t)).orElse(null)); standardTicketInfoVO.setTaskTypeName(Optional.ofNullable(entity.getTaskType()).map(t-> DictCache.getValue(DictConstants.TICKET_SOURCE_TYPE,t)).orElse(null));
return standardTicketInfoVO; return standardTicketInfoVO;

8
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/controller/WorkTicketInfoController.java

@ -262,5 +262,13 @@ public class WorkTicketInfoController {
return R.data(workTicketInfoService.work(Condition.getPage(query),work)); return R.data(workTicketInfoService.work(Condition.getPage(query),work));
} }
@ApiLog
@PostMapping("/cancel")
@ApiOperationSupport(order = 50)
@ApiOperation(value = "线下工作票作废")
public R cancel(@RequestBody WorkTicketInfoEntity entity) {
return R.status(workTicketInfoService.cancel(entity));
}
} }

9
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/feign/TicketInfoClient.java

@ -87,7 +87,14 @@ public class TicketInfoClient implements ITicketInfoClient {
}}); }});
return R.data(infoList); return R.data(infoList);
} }
@Override
@GetMapping("/getWorkTicketInfoById")
public R<List<WorkTicketInfoEntity>> getWorkTicketInfoById(@RequestParam List<Long> ticekeIds) {
List<WorkTicketInfoEntity> infoList = infoService.list(new LambdaQueryWrapper<WorkTicketInfoEntity>() {{
in(WorkTicketInfoEntity::getId, ticekeIds);
}});
return R.data(infoList);
}
@Override @Override
@GetMapping("/getOperateTicketByTime") @GetMapping("/getOperateTicketByTime")
public R<List<StandardTicketInfoEntity>> getOperateTicketByTime(@RequestParam String startDate, @RequestParam String endDate) { public R<List<StandardTicketInfoEntity>> getOperateTicketByTime(@RequestParam String startDate, @RequestParam String endDate) {

2
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/IWorkTicketInfoService.java

@ -185,4 +185,6 @@ public interface IWorkTicketInfoService extends BaseService<WorkTicketInfoEntity
IPage<WorkTicketInfoVO> work(IPage<WorkTicketInfoEntity> page, WorkVO work); IPage<WorkTicketInfoVO> work(IPage<WorkTicketInfoEntity> page, WorkVO work);
List<WorkTicketExportVO> exportWorkTicket(WorkTicketInfoDto req); List<WorkTicketExportVO> exportWorkTicket(WorkTicketInfoDto req);
Boolean cancel(WorkTicketInfoEntity entity);
} }

2
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/OfflineTicketServiceImpl.java

@ -8,7 +8,6 @@ import com.hnac.hzims.operational.station.entity.StationEntity;
import com.hnac.hzims.operational.station.feign.IStationClient; import com.hnac.hzims.operational.station.feign.IStationClient;
import com.hnac.hzims.ticket.constants.TicketConstants; import com.hnac.hzims.ticket.constants.TicketConstants;
import com.hnac.hzims.ticket.constants.WorkTicketConstants; import com.hnac.hzims.ticket.constants.WorkTicketConstants;
import com.hnac.hzims.ticket.twoTicket.constant.TicketConstant;
import com.hnac.hzims.ticket.workTicket.dto.WorkTicketInfoDto; import com.hnac.hzims.ticket.workTicket.dto.WorkTicketInfoDto;
import com.hnac.hzims.ticket.workTicket.entity.WorkTicketContentEntity; import com.hnac.hzims.ticket.workTicket.entity.WorkTicketContentEntity;
import com.hnac.hzims.ticket.workTicket.entity.WorkTicketFlowEntity; import com.hnac.hzims.ticket.workTicket.entity.WorkTicketFlowEntity;
@ -40,7 +39,6 @@ import java.time.YearMonth;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors; import java.util.stream.Collectors;

56
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java

@ -22,6 +22,8 @@ import com.hnac.hzims.operational.maintenance.dto.OperMaintenanceTaskDTO;
import com.hnac.hzims.operational.maintenance.feign.ITaskClient; import com.hnac.hzims.operational.maintenance.feign.ITaskClient;
import com.hnac.hzims.ticket.allTicket.entity.TicketInfoEvaluateEntity; import com.hnac.hzims.ticket.allTicket.entity.TicketInfoEvaluateEntity;
import com.hnac.hzims.ticket.allTicket.service.TicketInfoEvaluateService; import com.hnac.hzims.ticket.allTicket.service.TicketInfoEvaluateService;
import com.hnac.hzims.ticket.allTicket.vo.TicketInfoEvaluateVO;
import com.hnac.hzims.ticket.areamonthly.feign.TicketFeignClient;
import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo;
import com.hnac.hzims.ticket.areamonthly.vo.StandardWorkVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardWorkVo;
import com.hnac.hzims.ticket.aspect.AroundFlow; import com.hnac.hzims.ticket.aspect.AroundFlow;
@ -103,6 +105,7 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl<WorkTicketInfoMap
private final IWorkTicketOperateTimeService workTicketOperateTimeService; private final IWorkTicketOperateTimeService workTicketOperateTimeService;
private final IWorkTicketFlowService workTicketFlowService; private final IWorkTicketFlowService workTicketFlowService;
private final IFlowClient flowClient; private final IFlowClient flowClient;
private final TicketFeignClient ticketFeignClient;
private final IUserClient userClient; private final IUserClient userClient;
private final WorkDelayNoScopeMapper workDelayNoScopeMapper; private final WorkDelayNoScopeMapper workDelayNoScopeMapper;
private final IOperAccessTaskClient operAccessTaskClient; private final IOperAccessTaskClient operAccessTaskClient;
@ -1247,29 +1250,62 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl<WorkTicketInfoMap
List<WorkTicketInfoEntity> res = super.baseMapper.selectList(lqw); List<WorkTicketInfoEntity> res = super.baseMapper.selectList(lqw);
List<WorkTicketExportVO> list = new ArrayList<>(); List<WorkTicketExportVO> list = new ArrayList<>();
if (CollectionUtils.isNotEmpty(res)) { if (CollectionUtils.isNotEmpty(res)) {
List<WorkTicketInfoVO> workTicketInfoVOS = WorkTicketInfoWrapper.build().listVO(res); // List<WorkTicketInfoVO> workTicketInfoVOS = WorkTicketInfoWrapper.build().listVO(res);
for (int i = 0; i < workTicketInfoVOS.size(); i++) { list= res.parallelStream().map(workTicketInfoVO -> {
WorkTicketExportVO resEntity = new WorkTicketExportVO(); WorkTicketExportVO resEntity = new WorkTicketExportVO();
WorkTicketInfoVO workTicketInfoVO = workTicketInfoVOS.get(i); // resEntity.setNumber(i + 1);
resEntity.setNumber(i+1);
resEntity.setCompany(Optional.ofNullable(workTicketInfoVO.getCompany()).orElse("")); resEntity.setCompany(Optional.ofNullable(workTicketInfoVO.getCompany()).orElse(""));
resEntity.setType(Optional.ofNullable(DictCache.getValue(TicketConstants.TICKET_TYPE, workTicketInfoVO.getType())).orElse("")); resEntity.setType(Optional.ofNullable(DictCache.getValue(TicketConstants.TICKET_TYPE, workTicketInfoVO.getType())).orElse(""));
resEntity.setCode(Optional.ofNullable(workTicketInfoVO.getCode()).orElse("")); resEntity.setCode(Optional.ofNullable(workTicketInfoVO.getCode()).orElse(""));
resEntity.setWorkContent(Optional.ofNullable(workTicketInfoVO.getWorkContent()).orElse("")); resEntity.setWorkContent(Optional.ofNullable(workTicketInfoVO.getWorkContent()).orElse(""));
resEntity.setSigner(Optional.ofNullable(workTicketInfoVO.getSignerName()).orElse("")); if (ObjectUtil.isNotEmpty(workTicketInfoVO.getSigner())) {
resEntity.setPrincipal(Optional.ofNullable(workTicketInfoVO.getPrincipalName()).orElse("")); User user = UserCache.getUser(workTicketInfoVO.getSigner());
resEntity.setLicensor(Optional.ofNullable(workTicketInfoVO.getLicensorName()).orElse("")); if (ObjectUtil.isNotEmpty(user)) {
resEntity.setSigner(user.getName());
}
}
//负责人-线上和线下
if (Func.isEmpty(workTicketInfoVO.getPrincipal())) {
resEntity.setPrincipal(workTicketInfoVO.getPrincipalManual());
} else {
User principal = UserCache.getUser(workTicketInfoVO.getPrincipal());
if (ObjectUtil.isNotEmpty(principal)) {
resEntity.setPrincipal(principal.getName());
}
}
if (ObjectUtil.isNotEmpty(workTicketInfoVO.getLicensor())) {
User user = UserCache.getUser(workTicketInfoVO.getLicensor());
if (ObjectUtil.isNotEmpty(user)) {
resEntity.setLicensor(user.getName());
}
}
workTicketInfoVO.setClassGroupMembersName(workTicketInfoVO.getClassGroupMembers());
if(Func.isNotEmpty(workTicketInfoVO.getClassGroupMembersManual())){
workTicketInfoVO.setClassGroupMembersName(workTicketInfoVO.getClassGroupMembersManual());
}
resEntity.setClassGroupMembers(Optional.ofNullable(workTicketInfoVO.getClassGroupMembersName()).orElse(workTicketInfoVO.getClassGroupMembersManual() == null ? "" : workTicketInfoVO.getClassGroupMembersManual())); resEntity.setClassGroupMembers(Optional.ofNullable(workTicketInfoVO.getClassGroupMembersName()).orElse(workTicketInfoVO.getClassGroupMembersManual() == null ? "" : workTicketInfoVO.getClassGroupMembersManual()));
resEntity.setCreateTime(Optional.ofNullable(DateUtil.format(workTicketInfoVO.getCreateTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse("")); resEntity.setCreateTime(Optional.ofNullable(DateUtil.format(workTicketInfoVO.getCreateTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse(""));
if (ObjectUtil.isNotEmpty(workTicketInfoVO.getConfirmWorkTime())) { if (ObjectUtil.isNotEmpty(workTicketInfoVO.getConfirmWorkTime())) {
resEntity.setConfirmWorkTime(Optional.ofNullable(DateUtil.format(workTicketInfoVO.getConfirmWorkTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse("")); resEntity.setConfirmWorkTime(Optional.ofNullable(DateUtil.format(workTicketInfoVO.getConfirmWorkTime(), TicketConstants.TICKET_DATE_PATTERN)).orElse(""));
} }
if (ObjectUtils.isNotEmpty(workTicketInfoVO.getIsEvaluate())){ resEntity.setIsEvaluate("未评价");
resEntity.setIsEvaluate(workTicketInfoVO.getIsEvaluate()==0?"不合格":"合格"); if (workTicketInfoVO.getIsEvaluate() == 1) {
TicketInfoEvaluateEntity ticketInfoEvaluateEntity = new TicketInfoEvaluateEntity();
ticketInfoEvaluateEntity.setTicketId(workTicketInfoVO.getId());
R<List<TicketInfoEvaluateVO>> ticketList = ticketFeignClient.list(ticketInfoEvaluateEntity);
if (ticketList.isSuccess() && CollectionUtil.isNotEmpty(ticketList.getData())) {
resEntity.setIsEvaluate(ticketList.getData().get(0).getStatus() == 1 ? "合格" : "不合格");
} }
list.add(resEntity);
} }
return resEntity;
}).collect(Collectors.toList());
} }
return list; return list;
} }
@Override
public Boolean cancel(WorkTicketInfoEntity entity) {
entity.setFlowTaskName("线下作废");
return this.updateById(entity);
}
} }

30
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/vo/WorkTicketExportVO.java

@ -13,65 +13,65 @@ import org.springframework.format.annotation.DateTimeFormat;
@Data @Data
public class WorkTicketExportVO { public class WorkTicketExportVO {
@ExcelProperty(value = "序号", index = 0) // @ExcelProperty(value = "序号", index = 0)
@ColumnWidth(value = 20) // @ColumnWidth(value = 20)
@ApiModelProperty(value = "序号") // @ApiModelProperty(value = "序号")
private Integer number; // private Integer number;
@ExcelProperty(value = "单位", index = 1) @ExcelProperty(value = "单位", index = 0)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "单位") @ApiModelProperty(value = "单位")
private String company; private String company;
@ExcelProperty(value = "票类", index = 2) @ExcelProperty(value = "票类", index = 1)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "票据类型") @ApiModelProperty(value = "票据类型")
private String type; private String type;
@ExcelProperty(value = "工作票编号", index = 3) @ExcelProperty(value = "工作票编号", index = 2)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "工作票编号") @ApiModelProperty(value = "工作票编号")
private String code; private String code;
@ApiModelProperty("工作票任务") @ApiModelProperty("工作票任务")
@ExcelProperty(value = "工作票任务", index = 4) @ExcelProperty(value = "工作票任务", index = 3)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
private String workContent; private String workContent;
@ExcelProperty(value = "签发人", index = 5) @ExcelProperty(value = "签发人", index = 4)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "签发人") @ApiModelProperty(value = "签发人")
private String signer; private String signer;
@ExcelProperty(value = "工作负责人", index = 6) @ExcelProperty(value = "工作负责人", index = 5)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "工作负责人") @ApiModelProperty(value = "工作负责人")
private String principal; private String principal;
@ExcelProperty(value = "工作许可人", index = 7) @ExcelProperty(value = "工作许可人", index = 6)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "工作许可人") @ApiModelProperty(value = "工作许可人")
private String licensor; private String licensor;
@ExcelProperty(value = "工作班成员", index = 8) @ExcelProperty(value = "工作班成员", index = 7)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty(value = "工作班成员") @ApiModelProperty(value = "工作班成员")
private String classGroupMembers; private String classGroupMembers;
@ExcelProperty(value = "工作票开始时间", index = 9) @ExcelProperty(value = "工作票开始时间", index = 8)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty("工作票开始时间") @ApiModelProperty("工作票开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String createTime; private String createTime;
@ExcelProperty(value = "工作票结束时间", index = 10) @ExcelProperty(value = "工作票结束时间", index = 9)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty("工作票结束时间") @ApiModelProperty("工作票结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ -79,7 +79,7 @@ public class WorkTicketExportVO {
private String confirmWorkTime; private String confirmWorkTime;
@ExcelProperty(value = "评价", index = 11) @ExcelProperty(value = "评价", index = 10)
@ColumnWidth(value = 20) @ColumnWidth(value = 20)
@ApiModelProperty("是否评价") @ApiModelProperty("是否评价")
private String isEvaluate; private String isEvaluate;

2
pom.xml

@ -16,7 +16,7 @@
<properties> <properties>
<bladex.project.version>5.0.1.RELEASE</bladex.project.version> <bladex.project.version>5.0.1.RELEASE</bladex.project.version>
<!--数据平台接口版本--> <!--数据平台接口版本-->
<hzinfo.data.sdk.version>5.1.0-SNAPSHOT</hzinfo.data.sdk.version> <hzinfo.data.sdk.version>5.0.3.RELEASE</hzinfo.data.sdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version> <java.version>1.8</java.version>

Loading…
Cancel
Save