Browse Source

bug修改以及功能新增

master
walton 5 months ago
parent
commit
d3ed5d915b
  1. 2
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/feign/IEmInfoClient.java
  2. 3
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/entity/ImsDutyRecEntity.java
  3. 24
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/vo/ExchangeGroupLeader.java
  4. 52
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/entity/PlanFlowResultInfo.java
  5. 12
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/entity/PlanResultInfo.java
  6. 3
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/vo/MessageWaterDispatchVo.java
  7. 12
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/vo/ReportVo.java
  8. 9
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/feign/IDangerSourceClient.java
  9. 5
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/feign/IDangerSourceClientFallBack.java
  10. 44
      hzims-service/assets/src/main/java/com/hnac/hzims/spare/service/impl/WtSpBasicServiceImpl.java
  11. 8
      hzims-service/base-info/src/main/java/com/hnac/hzims/baseinfo/feign/BaseInfoClient.java
  12. 6
      hzims-service/base-info/src/main/java/com/hnac/hzims/baseinfo/service/impl/ReservoirDataServiceImpl.java
  13. 4
      hzims-service/dam-safety/src/main/java/com/hnac/hzims/damsafety/service/impl/DamSafetyDataServiceImpl.java
  14. 8
      hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/feign/EmInfoClient.java
  15. BIN
      hzims-service/inspect/lib/blade-starter-oss-minio-2.7.3.RELEASE.jar
  16. 38
      hzims-service/inspect/pom.xml
  17. 3
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/obj/services/IObjectDangerService.java
  18. 42
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/obj/services/impl/ObjectDangerServiceImpl.java
  19. 102
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/controller/TaskController.java
  20. 60
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/job/TaskJob.java
  21. 44
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/job/service/impl/SeizeTaskService.java
  22. 29
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/mapper/TaskMapper.java
  23. 209
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/mapper/TaskMapper.xml
  24. 4
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskObjectProjectContentService.java
  25. 2
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskService.java
  26. 11
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskObjectProjectContentServiceImpl.java
  27. 51
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskObjectServiceImpl.java
  28. 21
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskServiceImpl.java
  29. 1
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/dto/HisDataResultDTO.java
  30. 7
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/mapper/PlanFlowResultInfoMapper.java
  31. 4
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/mapper/PlanFlowResultInfoMapper.xml
  32. 7
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/IPlanFlowResultInfoService.java
  33. 8
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/MessageWaterLevelServiceImpl.java
  34. 11
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/PlanFlowResultInfoServiceImpl.java
  35. 189
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/PlanInfoServiceImpl.java
  36. 50
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/xxljob/ForecastOperationJob.java
  37. 16
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/alert/service/impl/HistoryAbnormalAlarmServiceImpl.java
  38. 9
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyMainController.java
  39. 13
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyRecController.java
  40. 2
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyMainService.java
  41. 3
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyRecService.java
  42. 156
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyMainServiceImpl.java
  43. 17
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyRecServiceImpl.java
  44. 52
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java
  45. 6
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/vo/AppAreaDutyVo.java
  46. 13
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/feign/DangerSourceClient.java
  47. BIN
      hzims-service/ticket/lib/spire.xls.free-3.9.1.jar
  48. 4
      hzims-service/ticket/pom.xml
  49. 4
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/OperationTicketServiceImpl.java
  50. 165
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/FirstWorkTicketServiceImpl.java

2
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/feign/IEmInfoClient.java

@ -59,7 +59,7 @@ import java.util.List;
* @author Chill
*/
@FeignClient(
value = EquipmentConstants.APP_NAME
value = EquipmentConstants.APP_NAME
)
public interface IEmInfoClient {

3
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/entity/ImsDutyRecEntity.java

@ -102,5 +102,6 @@ public class ImsDutyRecEntity extends TenantEntity {
@QueryField(condition = SqlCondition.LIKE)
private String dealChain;
@ApiModelProperty(value = "补充说明")
private String content;
}

24
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/vo/ExchangeGroupLeader.java

@ -0,0 +1,24 @@
package com.hnac.hzims.operational.duty.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
public class ExchangeGroupLeader implements Serializable {
@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
@JsonFormat(pattern = DateUtil.PATTERN_DATE)
private Date fromDate;
private Long fromClassId;
private Long fromDeptId;
@DateTimeFormat(pattern = DateUtil.PATTERN_DATE)
@JsonFormat(pattern = DateUtil.PATTERN_DATE)
private Date toDate;
private Long toClassId;
private Long toDeptId;
}

52
hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/entity/PlanFlowResultInfo.java

@ -0,0 +1,52 @@
package com.hnac.hzims.message_alarm.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@TableName("plan_flow_result_info")
public class PlanFlowResultInfo {
/**
* id
*/
@TableId(
value = "id",
type = IdType.ASSIGN_ID
)
private Long id;
/**
* 方案id
*/
@TableField("plan_id")
private Long planId;
/**
* 水库编码
*/
@TableField("stcd")
private String stcd;
/**
* 时间
*/
@TableField("time")
private LocalDateTime time;
/**
* 反推入库
*/
@TableField("reverse_flow")
private BigDecimal reverseFlow;
/**
* 模拟流量
*/
@TableField("simulated_flow")
private BigDecimal simulatedFlow;
}

12
hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/entity/PlanResultInfo.java

@ -3,11 +3,14 @@ package com.hnac.hzims.message_alarm.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@TableName("plan_result_info")
public class PlanResultInfo {
/**
* id
@ -40,29 +43,30 @@ public class PlanResultInfo {
* 降雨量
*/
@TableField("rain_fall")
private Double rainFall;
private BigDecimal rainFall;
/**
* 来流量
*/
@TableField("income_fall")
private Double incomeFall;
private BigDecimal incomeFall;
/**
* 水位
*/
@TableField("water_level")
private Double waterLevel;
private BigDecimal waterLevel;
/**
* 发电流量
*/
@TableField("power_flow")
private Double powerFlow;
private BigDecimal powerFlow;
/**
* 机组负荷
*/
@TableField("unit_load")
private Float unitLoad;
}

3
hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/vo/MessageWaterDispatchVo.java

@ -3,6 +3,7 @@ package com.hnac.hzims.message_alarm.vo;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
@ -19,7 +20,7 @@ public class MessageWaterDispatchVo {
* 来水流量5天就需要有121个
*/
@JSONField(name = "q_in")
List<Double> qIn;
List<BigDecimal> qIn;
/**
* 水位库容曲线
*/

12
hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/vo/ReportVo.java

@ -18,4 +18,16 @@ public class ReportVo {
private String actualLoad; //实际负荷
private String forecasLoad; //预测负荷
private List<String> setLoad; //机组负荷
/**
* 反推入库
*/
private String reverseFlow;
/**
* 模拟流量
*/
private String simulatedFlow;
/**
* 径流深
*/
// private String runoffDepth;
}

9
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/feign/IDangerSourceClient.java

@ -12,12 +12,13 @@ import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(
value = Constants.APP_NAME,
fallback = IDangerSourceClientFallBack.class
value = Constants.APP_NAME,
fallback = IDangerSourceClientFallBack.class
)
public interface IDangerSourceClient {
String API_PREFIX = "/feign/dangerSource";
String DETAILS = API_PREFIX + "/details";
String LIST = API_PREFIX + "/list";
String LIST_BY_TENANT_ID = API_PREFIX + "/listByTenantId";
String GET_SAFE_CREATE_TABLE = API_PREFIX + "/getSafeCreateTable";
@ -29,6 +30,9 @@ public interface IDangerSourceClient {
@GetMapping(DETAILS)
List<DangerSourceEntity> details(@RequestParam("ids") String[] ids);
@GetMapping(LIST)
List<DangerSourceEntity> list();
/**
* 根据条件查询危险源
*
@ -37,6 +41,7 @@ public interface IDangerSourceClient {
@GetMapping(LIST_BY_TENANT_ID)
List<SourceVO> listByTenantId(@RequestParam("tenantId") String tenantId);
@PostMapping(GET_SAFE_CREATE_TABLE)
List<CreateTableVO> getSafeCreateTable(@RequestParam("list") List<String> tableNames);
}

5
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/feign/IDangerSourceClientFallBack.java

@ -20,6 +20,11 @@ public class IDangerSourceClientFallBack implements IDangerSourceClient {
}
@Override
public List<DangerSourceEntity> list() {
return null;
}
@Override
public List<SourceVO> listByTenantId(String tenantId) {
log.error("远程调用失败,接口:" + LIST_BY_TENANT_ID);
return new ArrayList<>();

44
hzims-service/assets/src/main/java/com/hnac/hzims/spare/service/impl/WtSpBasicServiceImpl.java

@ -177,25 +177,35 @@ public class WtSpBasicServiceImpl extends BaseServiceImpl<WtSpBasicMapper, WtSpB
if (Func.isNotEmpty(spBasicEntity.getName()) && "工具".equals(spBasicEntity.getName())) {
// if(Func.isNotEmpty(spBasicEntity.getName())){
List<WtSpManagementEntity> list = managementService.list(Wrappers.<WtSpManagementEntity>query().lambda().
eq(WtSpManagementEntity::getName, spBasicEntity.getName()));
if (list.size() == 0) {
return null;
}
List<WtSpManagementEntity> result = managementService.list(Wrappers.<WtSpManagementEntity>query().lambda().like(WtSpManagementEntity::getAncestors, list.get(0).getId()));
eq(WtSpManagementEntity::getName, spBasicEntity.getName())
.eq(WtSpManagementEntity::getId,spBasicEntity.getManagementId()));
List<Long> longList = new ArrayList<>();
if (result.size() > 0) {
for (int i = 0; i < result.size(); i++) {
longList.add(result.get(i).getId());
if (list==null && list.size() == 0) {
if(spBasicEntity.getManagementId() != null) {
longList.add(spBasicEntity.getManagementId());
queryWrapper.lambda().in(WtSpBasicEntity::getManagementId, longList);
}else{
return null;
}
}else{
List<WtSpManagementEntity> result = managementService.list(Wrappers.<WtSpManagementEntity>query().lambda().like(WtSpManagementEntity::getAncestors, list.get(0).getId()));
if (result.size() > 0) {
for (int i = 0; i < result.size(); i++) {
longList.add(result.get(i).getId());
}
}
if (longList.size() > 0) {
// 把参数的ManagementId传入
longList.add(spBasicEntity.getManagementId());
queryWrapper.lambda().in(WtSpBasicEntity::getManagementId, longList);
} else {
return voPages;
}
}
if (longList.size() > 0) {
// 把参数的ManagementId传入
longList.add(spBasicEntity.getManagementId());
queryWrapper.lambda().in(WtSpBasicEntity::getManagementId, longList);
} else {
return voPages;
}
spBasicEntity.setName(null);
// spBasicEntity.setName(null);
}
//调拨单新增特殊处理
if (Func.isNotEmpty(sign)) {
@ -247,7 +257,7 @@ public class WtSpBasicServiceImpl extends BaseServiceImpl<WtSpBasicMapper, WtSpB
}
BeanUtils.copyProperties(basicEntity, basicVO);
List<TicketInfoStatisticVO> ticketVOS = ticketInfoAllClient.getTicketStatistic("2022-02");
// List<TicketInfoStatisticVO> ticketVOS = ticketInfoAllClient.getTicketStatistic("2022-02");
// R<Dept> deptR = sysClient.getDept(basicEntity.getWaterPlantId());
// if(Func.isNotEmpty(deptR.getData())){

8
hzims-service/base-info/src/main/java/com/hnac/hzims/baseinfo/feign/BaseInfoClient.java

@ -45,10 +45,10 @@ public class BaseInfoClient implements IBaseInfoClient {
return R.data(baseInfoService.basin());
}
@Override
public R<List<PreviewSchemeContentDTO>> selectSchemeContent(Long schemeId) {
return R.data(previewSchemeContentService.selectSchemeContent(schemeId));
}
@Override
public R<List<PreviewSchemeContentDTO>> selectSchemeContent(Long schemeId) {
return R.data(previewSchemeContentService.selectSchemeContent(schemeId));
}
@Override
public R<List<PreviewSchemeInfo>> selectSchemeInfo(String startTime, String endTime) {

6
hzims-service/base-info/src/main/java/com/hnac/hzims/baseinfo/service/impl/ReservoirDataServiceImpl.java

@ -89,13 +89,13 @@ public class ReservoirDataServiceImpl implements IReservoirDataService {
String rz=null;
String date=null;
for(FieldsData data:list){
for(FieldsData data:list){
if("rz".equals(data.getSignage())){
rz = data.getValue();
date = data.getTime();
break;
}
}
}
if(rz!=null) {//计算库容
BigDecimal w=stZvarlBService.getWValue(stcd,new BigDecimal(rz));
FieldsData data=new FieldsData();
@ -121,7 +121,7 @@ public class ReservoirDataServiceImpl implements IReservoirDataService {
}
}
return list;
return list;
}
@Override

4
hzims-service/dam-safety/src/main/java/com/hnac/hzims/damsafety/service/impl/DamSafetyDataServiceImpl.java

@ -725,8 +725,8 @@ public class DamSafetyDataServiceImpl implements IDamSafetyDataService {
}
for(AnalyzeDataConditionVO vo:datas){
List<AnalyseDataTaosVO> dataTaosVOs=vo.getList();
for (AnalyseDataTaosVO vv : dataTaosVOs) {
if(vo.getSignage().equals(col)) {
for (AnalyseDataTaosVO vv : dataTaosVOs) {
if(vo.getSignage().equals(col)) {
ReportData data = new ReportData();
data.setKeyStr(CommonUtil.getKeyBySaveTimeType(vv.getTs(), saveTimeType));
data.setKeyDate(vv.getTs());

8
hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/feign/EmInfoClient.java

@ -30,11 +30,11 @@ import java.util.stream.Collectors;
@RestController
public class EmInfoClient implements IEmInfoClient {
@Autowired
IEmInfoService service;
private IEmInfoService service;
@Autowired
IEmParamService paramService;
private IEmParamService paramService;
@Autowired
IEmAttachService attachService;
private IEmAttachService attachService;
@RequestMapping(value = DETAIL)
@ -148,7 +148,7 @@ public class EmInfoClient implements IEmInfoClient {
@PostMapping(UPDATE_BY_EM_CODE)
public R updateByEmCode(EmInfoEntity emInfoEntity) {
service.update(new LambdaUpdateWrapper<EmInfoEntity>().set(EmInfoEntity::getRunStatus, emInfoEntity.getRunStatus())
.eq(EmInfoEntity::getNumber, emInfoEntity.getNumber()));
.eq(EmInfoEntity::getNumber, emInfoEntity.getNumber()));
return R.success("保存成功");
}

BIN
hzims-service/inspect/lib/blade-starter-oss-minio-2.7.3.RELEASE.jar

Binary file not shown.

38
hzims-service/inspect/pom.xml

@ -66,9 +66,9 @@
<version>4.5.3.RELEASE</version>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springblade</groupId>-->
<!--<artifactId>blade-starter-trace</artifactId>-->
<!--<version>${bladex.project.version}</version>-->
<!--<groupId>org.springblade</groupId>-->
<!--<artifactId>blade-starter-trace</artifactId>-->
<!--<version>${bladex.project.version}</version>-->
<!--</dependency>-->
<dependency>
<groupId>com.xuxueli</groupId>
@ -122,6 +122,8 @@
<groupId>org.springblade</groupId>
<artifactId>blade-starter-oss-minio</artifactId>
<version>2.7.3.RELEASE</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/blade-starter-oss-minio-2.7.3.RELEASE.jar</systemPath>
</dependency>
<dependency>
<groupId>com.hnac.hzims</groupId>
@ -186,14 +188,14 @@
<artifactId>blade-common</artifactId>
</dependency>
<!-- commons-compress -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.18</version>
</dependency>
<!-- commons-compress -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.18</version>
</dependency>
<!-- 用于创建multipartfile对象 end-->
<!-- 用于创建multipartfile对象 end-->
<dependency>
@ -236,10 +238,18 @@
<skip>false</skip>
</configuration>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-antrun-plugin</artifactId>-->
<!-- </plugin>-->
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-antrun-plugin</artifactId>-->
<!-- </plugin>-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--设置为true,以便把本地的system的jar也包括进来-->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>

3
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/obj/services/IObjectDangerService.java

@ -5,6 +5,7 @@ import org.springblade.core.mp.base.BaseService;
import com.hnac.hzinfo.inspect.obj.entity.ObjectDangerEntity;
import java.util.List;
import java.util.Map;
/**
@ -21,4 +22,6 @@ public interface IObjectDangerService extends BaseService<ObjectDangerEntity> {
*/
List<DangerSourceEntity> getDangerDetailByObjectId(Long objectId);
Map<Long,List<DangerSourceEntity>> getDangerDetail(List<Long> objectIds);
}

42
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/obj/services/impl/ObjectDangerServiceImpl.java

@ -11,7 +11,9 @@ import com.hnac.hzinfo.inspect.obj.services.IObjectDangerService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 服务实现类
@ -27,7 +29,7 @@ public class ObjectDangerServiceImpl extends BaseServiceImpl<ObjectDangerMapper,
@Override
public List<DangerSourceEntity> getDangerDetailByObjectId(Long objectId) {
List<ObjectDangerEntity> dangers = this.list(Wrappers.<ObjectDangerEntity>lambdaQuery()
.eq(ObjectDangerEntity::getObjectId, objectId).orderByAsc(ObjectDangerEntity::getSort));
.eq(ObjectDangerEntity::getObjectId, objectId).orderByAsc(ObjectDangerEntity::getSort));
List<String> dangerIds = new ArrayList<>();
dangers.stream().forEach(t -> {
dangerIds.add(t.getDangerId().toString());
@ -38,4 +40,42 @@ public class ObjectDangerServiceImpl extends BaseServiceImpl<ObjectDangerMapper,
return new ArrayList<>();
}
}
@Override
public Map<Long,List<DangerSourceEntity>> getDangerDetail(List<Long> objectIds) {
Map<Long,List<DangerSourceEntity>> res=new HashMap<>();
List<ObjectDangerEntity> dangers = this.list(Wrappers.<ObjectDangerEntity>lambdaQuery()
.in(ObjectDangerEntity::getObjectId, objectIds).orderByAsc(ObjectDangerEntity::getSort));
List<DangerSourceEntity> dangerSourceEntityList=sourceClient.list();
for(Long objId:objectIds){
List<Long> dangerIds =getDangerIds(dangers,objId);
List<DangerSourceEntity> tmp=getDangerSourceEntity(dangerIds,dangerSourceEntityList);
res.put(objId,tmp);
}
return res;
}
private List<Long> getDangerIds(List<ObjectDangerEntity> dangers,Long objId){
List<Long> ids=new ArrayList<>();
if(dangers!=null && !dangers.isEmpty()){
for(ObjectDangerEntity entity:dangers){
if(entity.getObjectId().equals(objId)){
ids.add(entity.getDangerId());
}
}
}
return ids;
}
private List<DangerSourceEntity> getDangerSourceEntity(List<Long> dangerIds,List<DangerSourceEntity> dangerSourceEntityList){
List<DangerSourceEntity> dangerSourceEntities=new ArrayList<>();
if(dangerSourceEntityList!=null && !dangerSourceEntityList.isEmpty()){
for(DangerSourceEntity entity:dangerSourceEntityList){
if(dangerIds.contains(entity.getId())){
dangerSourceEntities.add(entity);
}
}
}
return dangerSourceEntities;
}
}

102
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/controller/TaskController.java

@ -1,6 +1,8 @@
package com.hnac.hzinfo.inspect.task.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -141,6 +143,10 @@ public class TaskController extends BladeController {
}
if (task.getCurUserId() == -1) {
task.setCurUserId(null);
// if(task.getCreateDept()==null) {
// String deptId=AuthUtil.getDeptId();
// task.setCreateDept(Long.valueOf(deptId));
// }
}
List<TaskVo> list = taskService.getListPage(pages,task);
pages.setRecords(list);
@ -221,6 +227,15 @@ public class TaskController extends BladeController {
task.setCurUserId(AuthUtil.getUserId());
task.setTenantId(AuthUtil.getTenantId());
}
// if (task.getCurUserId() == -1) {
// task.setCurUserId(null);
// if(task.getCreateDept()==null) {
// String deptId=AuthUtil.getDeptId();
// task.setCreateDept(Long.valueOf(deptId));
// }
// }
List<TaskVo> list = taskService.getListPageOfPhone(pages,task);
pages.setRecords(list);
return R.data(pages);
@ -239,6 +254,19 @@ public class TaskController extends BladeController {
return R.data(pages);
}
@RequestMapping(value = "/getDeptTaskList", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperation(value = "获取机构下的所有巡检任务列表", notes = "传入task")
public R<IPage<TaskVo>> getDeptTaskList(TaskListQuery task, Query query) {
IPage<TaskVo> pages = Condition.getPage(query);
if(task.getCreateDept()==null) {//默认当前登录人机构
String deptId = AuthUtil.getDeptId();
task.setCreateDept(Long.valueOf(deptId));
}
List<TaskVo> list = taskService.getDeptTaskList(pages,task);
pages.setRecords(list);
return R.data(pages);
}
/**
* 开始任务
*/
@ -254,8 +282,8 @@ public class TaskController extends BladeController {
@RequestMapping(value = "/modifyTaskStatus", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperation(value = "修改任务状态 0未开始 1进行中 2暂停 3已完成 4未完成", notes = "修改任务状态")
@ApiImplicitParams({
@ApiImplicitParam(name="id",value="计划id"),
@ApiImplicitParam(name="status",value="0未开始 1进行中 2暂停 3已完成 4未完成")
@ApiImplicitParam(name="id",value="计划id"),
@ApiImplicitParam(name="status",value="0未开始 1进行中 2暂停 3已完成 4未完成")
})
public R<Boolean> modifyTaskStatus(@RequestParam Long id,@RequestParam Integer status) {
return R.status(taskService.modifyTaskStatus(id,status));
@ -326,43 +354,43 @@ public class TaskController extends BladeController {
return R.data(list);
}
@Autowired
private IPushClient pushClient;
// @Autowired
// private IPushClient pushClient;
/**
* 测试消息推送
*/
@GetMapping("/testPush")
@ApiOperation(value = "测试消息推送", notes = "测试消息推送")
public R<Boolean> testPush(@ApiParam(value = "tags 多个,隔开", required = false) @RequestParam String tags,
@ApiParam(value = "tenantId", required = false) @RequestParam String tenantId) {
// 移动端消息推送 : 使用 用户id做TAG,前端注册用户id为TAG
PushInfoVO pushInfoVO = new PushInfoVO();
if(Func.isNotEmpty(tenantId)){
pushInfoVO.setTenantId(tenantId);
} else {
pushInfoVO.setTenantId(AuthUtil.getTenantId());
}
PushPlatform platform = PushPlatform.all();
Map<PushAudienceType, List<String>> audienceMap = new HashMap<>();
if(Func.isNotEmpty(tags)){
audienceMap.put(PushAudienceType.TAG, Arrays.asList(tags));
} else {
audienceMap.put(PushAudienceType.TAG, Arrays.asList("test"));
}
PushAudience audience = new PushAudience(false, audienceMap);
PushInfo pushInfo = new PushInfo("hzinfo-inspect"
, "测试后。。。。1"
, "测试内容"
, "测试后。。。。2"
, null
, platform
, audience);
pushInfoVO.setPushInfo(pushInfo);
pushClient.tenantPush(pushInfoVO);
return R.status(true);
}
// @GetMapping("/testPush")
// @ApiOperation(value = "测试消息推送", notes = "测试消息推送")
// public R<Boolean> testPush(@ApiParam(value = "tags 多个,隔开", required = false) @RequestParam String tags,
// @ApiParam(value = "tenantId", required = false) @RequestParam String tenantId) {
// // 移动端消息推送 : 使用 用户id做TAG,前端注册用户id为TAG
// PushInfoVO pushInfoVO = new PushInfoVO();
// if(Func.isNotEmpty(tenantId)){
// pushInfoVO.setTenantId(tenantId);
// } else {
// pushInfoVO.setTenantId(AuthUtil.getTenantId());
// }
//
// PushPlatform platform = PushPlatform.all();
// Map<PushAudienceType, List<String>> audienceMap = new HashMap<>();
// if(Func.isNotEmpty(tags)){
// audienceMap.put(PushAudienceType.TAG, Arrays.asList(tags));
// } else {
// audienceMap.put(PushAudienceType.TAG, Arrays.asList("test"));
// }
// PushAudience audience = new PushAudience(false, audienceMap);
// PushInfo pushInfo = new PushInfo("hzinfo-inspect"
// , "测试后。。。。1"
// , "测试内容"
// , "测试后。。。。2"
// , null
// , platform
// , audience);
// pushInfoVO.setPushInfo(pushInfo);
// pushClient.tenantPush(pushInfoVO);
// return R.status(true);
// }
@ -413,8 +441,8 @@ public class TaskController extends BladeController {
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename + ".xlsx", "UTF-8"));
//创建一个输出流
EasyExcel.write(response.getOutputStream(), VoteChartVo.class).autoCloseStream(Boolean.TRUE).sheet(1,"巡检计划统计表")
.doWrite(list);
response.getOutputStream().close();
.doWrite(list);
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
}

60
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/job/TaskJob.java

@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
@ -63,10 +64,10 @@ public class TaskJob {
closePassedPlansAndTasks();
//将已审核状态且开始时间在当前时间之前的计划改成派发中
UpdateWrapper<PlanEntity> uwPlan = new UpdateWrapper<>();
uwPlan.lambda().set(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.UNDERWAY_STATUS.getStatus()))
.eq(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.CHECK_STATUS.getStatus()))
.le(PlanEntity::getStartTime, LocalDate.now());
planService.update(uwPlan);
uwPlan.lambda().set(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.UNDERWAY_STATUS.getStatus()))
.eq(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.CHECK_STATUS.getStatus()))
.le(PlanEntity::getStartTime, LocalDate.now());
planService.update(uwPlan);
//处理派发中(已经生成了一次任务)的计划
QueryWrapper<PlanEntity> planQw = new QueryWrapper<>();
planQw.lambda().eq(PlanEntity::getStatus,Integer.valueOf(PlanStatusEnum.UNDERWAY_STATUS.getStatus()));
@ -87,28 +88,29 @@ public class TaskJob {
return ReturnT.SUCCESS;
}
/**
* 定期关闭超过计划结束时间的巡检任务以及已审核状态的巡检计划
* @param
* @return
*/
/**
* 定期关闭超过计划结束时间的巡检任务以及已审核状态的巡检计划
* @param
* @return
*/
// @Scheduled(cron = "0 0 0 0 30 ?")
private void closePassedPlansAndTasks() {
//关闭超过计划结束时间暂停状态或者已审核或者派发中的巡检计划
UpdateWrapper<PlanEntity> uwPlan = new UpdateWrapper<>();
uwPlan.lambda().set(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.FINISH_STATUS.getStatus()))
.in(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.PAUSE_STATUS.getStatus()),
Integer.valueOf(PlanStatusEnum.CHECK_STATUS.getStatus()),
Integer.valueOf(PlanStatusEnum.UNDERWAY_STATUS.getStatus()))
.lt(PlanEntity::getEndTime, LocalDate.now());
planService.update(uwPlan);
//关闭超过计划结束时间的巡检任务
UpdateWrapper<TaskEntity> uwTask = new UpdateWrapper<>();
uwTask.lambda().set(TaskEntity::getStatus, Integer.valueOf(TaskStatusEnum.UNFINISH_STATUS.getStatus()))
.ne(TaskEntity::getStatus, Integer.valueOf(TaskStatusEnum.FINISH_STATUS.getStatus()))
.lt(TaskEntity::getPlanEndTime, LocalDate.now());
taskService.update(uwTask);
}
private void closePassedPlansAndTasks() {
//关闭超过计划结束时间暂停状态或者已审核或者派发中的巡检计划
UpdateWrapper<PlanEntity> uwPlan = new UpdateWrapper<>();
uwPlan.lambda().set(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.FINISH_STATUS.getStatus()))
.set(PlanEntity::getUpdateTime,new Date())
.in(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.PAUSE_STATUS.getStatus()),
Integer.valueOf(PlanStatusEnum.CHECK_STATUS.getStatus()),
Integer.valueOf(PlanStatusEnum.UNDERWAY_STATUS.getStatus()))
.lt(PlanEntity::getEndTime, LocalDate.now());
planService.update(uwPlan);
//关闭超过计划结束时间的巡检任务
UpdateWrapper<TaskEntity> uwTask = new UpdateWrapper<>();
uwTask.lambda().set(TaskEntity::getStatus, Integer.valueOf(TaskStatusEnum.UNFINISH_STATUS.getStatus()))
.ne(TaskEntity::getStatus, Integer.valueOf(TaskStatusEnum.FINISH_STATUS.getStatus()))
.lt(TaskEntity::getPlanEndTime, LocalDate.now());
taskService.update(uwTask);
}
/**
* 任务开始结束前提醒发短信
@ -143,11 +145,11 @@ public class TaskJob {
@XxlJob("resetCache")
public ReturnT<String> resetCache(String param) throws Exception {
List<TaskEntity> beginList = taskService.list(Wrappers.<TaskEntity>lambdaQuery()
.ge(TaskEntity::getStartRemindTime, LocalDateTime.now())
.eq(TaskEntity::getStartRemindFlag, true));
.ge(TaskEntity::getStartRemindTime, LocalDateTime.now())
.eq(TaskEntity::getStartRemindFlag, true));
List<TaskEntity> endList = taskService.list(Wrappers.<TaskEntity>lambdaQuery()
.ge(TaskEntity::getEndRemindTime, LocalDateTime.now())
.eq(TaskEntity::getEndRemindFlag, true));
.ge(TaskEntity::getEndRemindTime, LocalDateTime.now())
.eq(TaskEntity::getEndRemindFlag, true));
remindManager.replaceBeginTaskCacheList(beginList);
remindManager.replaceEndTaskCacheList(endList);
return ReturnT.SUCCESS;

44
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/job/service/impl/SeizeTaskService.java

@ -41,10 +41,10 @@ import java.util.stream.Collectors;
@Slf4j
public class SeizeTaskService extends TaskJobService implements ITaskJobService {
@Autowired
private ITaskUserService taskUserService;
@Autowired
private ITaskResultService taskResultService;
@Autowired
private ITaskUserService taskUserService;
@Autowired
private ITaskResultService taskResultService;
@Autowired
private TaskRemindManager remindCacheManager;
@Autowired
@ -54,14 +54,14 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
@Autowired
private IDutyMainClient dutyMainClient;
/**
* 派发任务
* @param plan 计划
*/
@Override
public void sendTaskOther(PlanEntity plan) {
/**
* 派发任务
* @param plan 计划
*/
@Override
public void sendTaskOther(PlanEntity plan) {
plan = planService.getById(plan.getId());
List<PlanUserEntity> users = this.getUsersByPlan(plan);
List<PlanUserEntity> users = this.getUsersByPlan(plan);
List<TaskUserEntity> taskUserList = Lists.newArrayList();
JSONArray timeJsonArray = null;
@ -102,13 +102,13 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
taskResultService.save(taskResultEntity);
}
if(taskUserList.size()>0){
taskUserService.saveBatch(taskUserList);
} else {
log.error("没有用户: plan = " + plan.toString());
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + plan.toString());
}
}
if(taskUserList.size()>0){
taskUserService.saveBatch(taskUserList);
} else {
log.error("没有用户: plan = " + JSONObject.toJSONString(plan));
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + JSONObject.toJSONString(plan));
}
}
/**
* 巡检计划为班次时生成任务
@ -126,7 +126,7 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
/** 多次计划执行时间 **/
timeJsonArray = JSON.parseArray(plan.getExecTimeJson());
} else {
log.error("巡检计划未设置值班班次: plan = " + plan.toString());
log.error("巡检计划未设置值班班次: plan = " + JSONObject.toJSONString(plan));
return taskIds;
}
/** 多次任务 **/
@ -157,7 +157,7 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
}
}
} else {
log.error("获取该班次值班人员为空, plan = " + plan.toString());
log.error("获取该班次值班人员为空, plan = " + JSONObject.toJSONString(plan));
return taskIds;
}
String reason = this.distributeTaskObjs(plan,task);
@ -229,8 +229,8 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
if(taskUserList.size()>0){
taskUserService.saveBatch(taskUserList);
} else {
log.error("没有用户: plan = " + plan.toString());
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + plan.toString());
log.error("没有用户: plan = " + JSONObject.toJSONString(plan));
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + JSONObject.toJSONString(plan));
}
return taskIds;
}

29
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/mapper/TaskMapper.java

@ -21,11 +21,11 @@ import java.util.List;
@Mapper
public interface TaskMapper extends UserDataScopeBaseMapper<TaskEntity> {
/**
* PC端任务列表
* @return
*/
List<TaskVo> getListPage(@Param("page") IPage<TaskVo> page, @Param("task") TaskListQuery task);
/**
* PC端任务列表
* @return
*/
List<TaskVo> getListPage(@Param("page") IPage<TaskVo> page, @Param("task") TaskListQuery task);
List<TaskVo> mainQueryPage(@Param("page") IPage<TaskVo> page, @Param("task") TaskListQuery task);
@ -38,17 +38,17 @@ public interface TaskMapper extends UserDataScopeBaseMapper<TaskEntity> {
/**
* 任务报备列表
* @return
*/
@UserDataAuth
List<TaskEntity> getListPageOfTaskRecord(@Param("page") IPage<TaskEntity> page, @Param("task") TaskListQuery task);
* 任务报备列表
* @return
*/
@UserDataAuth
List<TaskEntity> getListPageOfTaskRecord(@Param("page") IPage<TaskEntity> page, @Param("task") TaskListQuery task);
/**
* phone端任务列表
* @return
*/
/**
* phone端任务列表
* @return
*/
List<TaskVo> getListPageOfPhone(@Param("page") IPage<TaskVo> page,@Param("task") TaskListQuery task);
/**
@ -58,6 +58,7 @@ public interface TaskMapper extends UserDataScopeBaseMapper<TaskEntity> {
* @return
*/
List<TaskVo> getFinishTaskList(@Param("page") IPage<TaskVo> page,@Param("task") TaskListQuery task);
List<TaskVo> getDeptTaskList(@Param("page") IPage<TaskVo> page,@Param("task") TaskListQuery task);
/**
* phone端任务列表 不分页

209
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/mapper/TaskMapper.xml

@ -35,50 +35,50 @@
<select id="getListPageAuth" parameterType="com.hnac.hzinfo.inspect.task.vo.TaskListQuery" resultType="com.hnac.hzinfo.inspect.task.vo.TaskVo">
SELECT t.*,u.USER_ID from HZ_ST_EX_TASK t
LEFT JOIN HZ_ST_EX_TASK_USER u on t.ID=u.TASK_ID
where t.IS_DELETED=0 and u.IS_DELETED=0
<if test="task.dutyId != null ">
and t.DUTY_ID=#{task.dutyId}
</if>
<if test="task.curUserId != null and task.curUserId != ''">
and u.USER_ID=#{task.curUserId}
</if>
<if test="task.planName != null and task.planName != ''">
and t.PLAN_NAME like concat('%', #{task.planName}, '%')
</if>
<if test="task.batchNumber != null and task.batchNumber != ''">
and t.BATCH_NUMBER like concat('%', #{task.batchNumber}, '%')
</if>
<if test="task.planStartTime != null">
and t.PLAN_START_TIME &gt;= #{task.planStartTime}
</if>
<if test="task.planEndTime != null">
and t.PLAN_END_TIME &lt;= #{task.planEndTime}
</if>
<if test="task.startTime != null">
and t.PLAN_END_TIME &gt;= #{task.startTime}
</if>
<if test="task.cycle != null and task.cycle != ''">
and t.CYCLE=#{task.cycle}
</if>
<if test="task.status != null">
and t.STATUS=#{task.status}
</if>
<if test="task.keepOnRecord != null">
and t.KEEP_ON_RECORD=#{task.keepOnRecord}
</if>
<if test="task.tenantId != null and task.tenantId != ''">
SELECT t.*,u.USER_ID from HZ_ST_EX_TASK t
LEFT JOIN HZ_ST_EX_TASK_USER u on t.ID=u.TASK_ID
where t.IS_DELETED=0 and u.IS_DELETED=0
<if test="task.dutyId != null ">
and t.DUTY_ID=#{task.dutyId}
</if>
<if test="task.curUserId != null and task.curUserId != ''">
and u.USER_ID=#{task.curUserId}
</if>
<if test="task.planName != null and task.planName != ''">
and t.PLAN_NAME like concat('%', #{task.planName}, '%')
</if>
<if test="task.batchNumber != null and task.batchNumber != ''">
and t.BATCH_NUMBER like concat('%', #{task.batchNumber}, '%')
</if>
<if test="task.planStartTime != null">
and t.PLAN_START_TIME &gt;= #{task.planStartTime}
</if>
<if test="task.planEndTime != null">
and t.PLAN_END_TIME &lt;= #{task.planEndTime}
</if>
<if test="task.startTime != null">
and t.PLAN_END_TIME &gt;= #{task.startTime}
</if>
<if test="task.cycle != null and task.cycle != ''">
and t.CYCLE=#{task.cycle}
</if>
<if test="task.status != null">
and t.STATUS=#{task.status}
</if>
<if test="task.keepOnRecord != null">
and t.KEEP_ON_RECORD=#{task.keepOnRecord}
</if>
<if test="task.tenantId != null and task.tenantId != ''">
and t.TENANT_ID = #{task.tenantId}
</if>
<if test="task.autoVideo != null">
and t.AUTO_VIDEO=#{task.autoVideo}
</if>
<if test="task.createDept != null">
and t.CREATE_DEPT=#{task.createDept}
</if>
order by t.UPDATE_TIME desc
</select>
</if>
<if test="task.autoVideo != null">
and t.AUTO_VIDEO=#{task.autoVideo}
</if>
<if test="task.createDept != null">
and t.CREATE_DEPT=#{task.createDept}
</if>
order by t.UPDATE_TIME desc
</select>
<select id="mainQueryPage" parameterType="com.hnac.hzinfo.inspect.task.vo.TaskListQuery" resultType="com.hnac.hzinfo.inspect.task.vo.TaskVo">
SELECT t.* from HZ_ST_EX_TASK t
@ -126,6 +126,9 @@
SELECT t.*,u.USER_ID from HZ_ST_EX_TASK t
LEFT JOIN HZ_ST_EX_TASK_USER u on t.ID=u.TASK_ID
where t.IS_DELETED=0 and u.IS_DELETED=0
<if test="task.createDept!=null">
and t.CREATE_DEPT like concat(#{task.createDept}, '%')
</if>
<if test="task.dutyId != null ">
and t.DUTY_ID=#{task.dutyId}
</if>
@ -215,6 +218,39 @@
order by t.UPDATE_TIME desc
</select>
<select id="getDeptTaskList" parameterType="com.hnac.hzinfo.inspect.task.vo.TaskListQuery" resultType="com.hnac.hzinfo.inspect.task.vo.TaskVo">
SELECT t.* from HZ_ST_EX_TASK t
where t.IS_DELETED=0
<if test="task.createDept!=null">
and t.CREATE_DEPT like concat(#{task.createDept}, '%')
</if>
<if test="task.planName != null and task.planName != ''">
and t.PLAN_NAME like concat('%', #{task.planName}, '%')
</if>
<if test="task.batchNumber != null and task.batchNumber != ''">
and t.BATCH_NUMBER like concat('%', #{task.batchNumber}, '%')
</if>
<if test="task.planStartTime != null">
and t.PLAN_START_TIME &gt;= #{task.planStartTime}
</if>
<if test="task.planEndTime != null">
and t.PLAN_START_TIME &lt;= #{task.planEndTime}
</if>
<if test="task.startTime != null">
and t.PLAN_END_TIME &gt;= #{task.startTime}
</if>
<if test="task.cycle != null and task.cycle != ''">
and t.CYCLE=#{task.cycle}
</if>
<if test="task.objectId != null and task.objectId != ''">
and tobj.OBJECT_ID=#{task.objectId}
</if>
<if test="task.autoVideo != null">
and t.AUTO_VIDEO=#{task.autoVideo}
</if>
order by t.UPDATE_TIME desc
</select>
<!--手机端任务列表 只显示 0未开始 1进行中 2暂停-->
<select id="getListPageOfPhone" parameterType="com.hnac.hzinfo.inspect.task.vo.TaskListQuery" resultType="com.hnac.hzinfo.inspect.task.vo.TaskVo">
SELECT t.* from HZ_ST_EX_TASK t
@ -222,38 +258,41 @@
left join HZ_ST_EX_OBJECT tobj on t.ID=tobj.TASK_ID
where t.IS_DELETED=0 and u.IS_DELETED=0 and tobj.IS_DELETED=0 and u.USER_ID=#{task.curUserId} and t.TENANT_ID = #{task.tenantId}
and t.STATUS in(0,1,2)
<if test="task.planName != null and task.planName != ''">
and t.PLAN_NAME like concat('%', #{task.planName}, '%')
</if>
<if test="task.batchNumber != null and task.batchNumber != ''">
and t.BATCH_NUMBER like concat('%', #{task.batchNumber}, '%')
</if>
<if test="task.planStartTime != null">
and t.PLAN_START_TIME &gt;= #{task.planStartTime}
</if>
<if test="task.planEndTime != null">
and t.PLAN_END_TIME &lt;= #{task.planEndTime}
</if>
<if test="task.startTime != null">
and t.PLAN_END_TIME &gt;= #{task.startTime}
</if>
<if test="task.cycle != null and task.cycle != ''">
and t.CYCLE=#{task.cycle}
</if>
<if test="task.objectId != null and task.objectId != ''">
and tobj.OBJECT_ID=#{task.objectId}
</if>
<if test="task.autoVideo != null">
and t.AUTO_VIDEO=#{task.autoVideo}
</if>
<if test="task.status != null">
and t.STATUS=#{task.status}
</if>
GROUP BY t.ID
order by t.UPDATE_TIME desc
</select>
<if test="task.createDept!=null">
and t.CREATE_DEPT like concat(#{task.createDept}, '%')
</if>
<if test="task.planName != null and task.planName != ''">
and t.PLAN_NAME like concat('%', #{task.planName}, '%')
</if>
<if test="task.batchNumber != null and task.batchNumber != ''">
and t.BATCH_NUMBER like concat('%', #{task.batchNumber}, '%')
</if>
<if test="task.planStartTime != null">
and t.PLAN_START_TIME &gt;= #{task.planStartTime}
</if>
<if test="task.planEndTime != null">
and t.PLAN_END_TIME &lt;= #{task.planEndTime}
</if>
<if test="task.startTime != null">
and t.PLAN_END_TIME &gt;= #{task.startTime}
</if>
<if test="task.cycle != null and task.cycle != ''">
and t.CYCLE=#{task.cycle}
</if>
<if test="task.objectId != null and task.objectId != ''">
and tobj.OBJECT_ID=#{task.objectId}
</if>
<if test="task.autoVideo != null">
and t.AUTO_VIDEO=#{task.autoVideo}
</if>
<if test="task.status != null">
and t.STATUS=#{task.status}
</if>
GROUP BY t.ID
order by t.UPDATE_TIME desc
</select>
<!--任务列表 只显示 0未开始 1进行中 2暂停-->
<!--任务列表 只显示 0未开始 1进行中 2暂停-->
<select id="getListOfPhone" parameterType="com.hnac.hzinfo.inspect.task.vo.TaskListQuery" resultType="com.hnac.hzinfo.inspect.task.vo.TaskVo">
SELECT t.* from HZ_ST_EX_TASK t
LEFT JOIN HZ_ST_EX_TASK_USER u on t.ID=u.TASK_ID
@ -376,17 +415,17 @@
</select>
<select id="getTaskData" resultType="com.hnac.hzinfo.inspect.task.vo.TaskOfflineVO">
select * from HZ_ST_EX_TASK
where is_deleted = 0
and plan_start_time &lt;= #{currentDate}
and plan_end_time &gt; #{currentDate}
and status = 1
AND id IN
<foreach collection="userIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="getTaskData" resultType="com.hnac.hzinfo.inspect.task.vo.TaskOfflineVO">
select * from HZ_ST_EX_TASK
where is_deleted = 0
and plan_start_time &lt;= #{currentDate}
and plan_end_time &gt; #{currentDate}
and status = 1
AND id IN
<foreach collection="userIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="getSameDayTask" resultType="com.hnac.hzinfo.inspect.task.entity.TaskEntity">
select * from HZ_ST_EX_TASK

4
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskObjectProjectContentService.java

@ -1,10 +1,12 @@
package com.hnac.hzinfo.inspect.task.service;
import com.hnac.hzinfo.inspect.areamonthly.vo.TaskObjectProjectContentVO;
import com.hnac.hzinfo.inspect.obj.entity.ContentEntity;
import org.springblade.core.mp.base.BaseService;
import com.hnac.hzinfo.inspect.task.entity.TaskObjectProjectContentEntity;
import java.util.List;
import java.util.Map;
/**
* 服务类
@ -15,6 +17,6 @@ public interface ITaskObjectProjectContentService extends BaseService<TaskObject
List<TaskObjectProjectContentEntity> getTaskObjectProjectContentList(TaskObjectProjectContentEntity topc);
void fillRealData(TaskObjectProjectContentVO contentVO);
void fillRealData(TaskObjectProjectContentVO contentVO, Map<Long, ContentEntity> contentMap);
}

2
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskService.java

@ -109,6 +109,8 @@ public interface ITaskService extends BaseService<TaskEntity> {
* @return
*/
List<TaskVo> getFinishTaskList(IPage<TaskVo> page,TaskListQuery task);
List<TaskVo> getDeptTaskList(IPage<TaskVo> page,TaskListQuery task);
/**
* 撤销领用

11
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskObjectProjectContentServiceImpl.java

@ -21,6 +21,7 @@ import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 服务实现类
@ -32,10 +33,7 @@ import java.util.List;
@Slf4j
public class TaskObjectProjectContentServiceImpl extends BaseServiceImpl<TaskObjectProjectContentMapper, TaskObjectProjectContentEntity> implements ITaskObjectProjectContentService {
private final ContentService contentService;
private final IAnalyseDataSearchClient analyseDataSearchClient;
private final IStationClient stationClient;
private final RedisClient redisClient;
@Override
public List<TaskObjectProjectContentEntity> getTaskObjectProjectContentList(TaskObjectProjectContentEntity topc) {
@ -43,9 +41,10 @@ public class TaskObjectProjectContentServiceImpl extends BaseServiceImpl<TaskObj
}
@Override
public void fillRealData(TaskObjectProjectContentVO contentVO) {
if(Func.isNotEmpty(contentVO.getContentId())) {
ContentEntity content = contentService.getById(contentVO.getContentId());
public void fillRealData(TaskObjectProjectContentVO contentVO, Map<Long,ContentEntity> contentMap) {
if(Func.isNotEmpty(contentVO.getContentId()) && contentMap!=null) {
// ContentEntity content = contentService.getById(contentVO.getContentId());
ContentEntity content=contentMap.get(contentVO.getContentId());
// 若内容中不存在模型的属性标识 则不获取实时数据
if(Func.isNotEmpty(content.getAttrSignage()) && Func.isNotEmpty(contentVO.getEmCode())) {
RealDataSearchPO po = new RealDataSearchPO();

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

@ -8,7 +8,11 @@ import com.hnac.hzinfo.inspect.ai.entity.RobotTaskEntity;
import com.hnac.hzinfo.inspect.ai.mapper.RobotTaskMapper;
import com.hnac.hzinfo.inspect.ai.service.ICameraInfoService;
import com.hnac.hzinfo.inspect.ai.service.IRobotTaskService;
import com.hnac.hzinfo.inspect.areamonthly.vo.TaskObjectProjectContentVO;
import com.hnac.hzinfo.inspect.areamonthly.vo.TaskObjectProjectVO;
import com.hnac.hzinfo.inspect.obj.entity.ContentEntity;
import com.hnac.hzinfo.inspect.obj.entity.ProjectEntity;
import com.hnac.hzinfo.inspect.obj.services.ContentService;
import com.hnac.hzinfo.inspect.obj.services.ProjectService;
import com.hnac.hzinfo.inspect.task.entity.TaskObjectEntity;
import com.hnac.hzinfo.inspect.task.entity.TaskObjectProjectEntity;
@ -25,8 +29,11 @@ import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -43,6 +50,7 @@ public class TaskObjectServiceImpl extends BaseServiceImpl<TaskObjectMapper, Tas
private final ITaskObjectProjectService taskObjectProjectService;
private final RobotTaskMapper robotTaskMapper;
private final ICameraInfoService cameraInfoService;
private final ContentService contentService;
@Override
public List<TaskObjectEntity> getTaskObjectList(TaskObjectEntity taskObjectEntity) {
@ -52,22 +60,61 @@ public class TaskObjectServiceImpl extends BaseServiceImpl<TaskObjectMapper, Tas
@Override
public List<TaskObjectVO> getTaskObjectsDetail(TaskObjectEntity to){
List<TaskObjectVO> taskObjectVOList = this.baseMapper.getTaskObjectsDetail(to);
List<List<TaskObjectProjectVO>> projectVOList=taskObjectVOList.stream().map(TaskObjectVO::getProjects).collect(Collectors.toList());
//获取项目中的信息
Set<Long> projectIds=new HashSet<>();
Set<Long> contentIds=new HashSet<>();
for(List<TaskObjectProjectVO> list:projectVOList){
for(TaskObjectProjectVO vo:list){
projectIds.add(vo.getProjectId());
if(vo.getContents()!=null && !vo.getContents().isEmpty()) {
for (TaskObjectProjectContentVO contentVO : vo.getContents()) {
contentIds.add(contentVO.getContentId());
}
}
}
}
LambdaQueryWrapper<ProjectEntity> wrapper=new LambdaQueryWrapper<>();
wrapper.in(ProjectEntity::getId,projectIds);
List<ProjectEntity> projects = projectService.list(wrapper);
//获取任务中的所有内容
Map<Long, ContentEntity> contentMap;
LambdaQueryWrapper<ContentEntity> wrapper1=new LambdaQueryWrapper<>();
if(!contentIds.isEmpty()) {
wrapper1.in(ContentEntity::getId, contentIds);
List<ContentEntity> contentEntityList=contentService.list(wrapper1);
contentMap = contentEntityList.stream().collect(Collectors.toMap(ContentEntity::getId, Function.identity()));
} else {
contentMap = null;
}
if(CollectionUtil.isNotEmpty(taskObjectVOList)) {
taskObjectVOList.stream()
.filter(taskObjectVO -> CollectionUtil.isNotEmpty(taskObjectVO.getProjects()))
.flatMap(taskObjectVO -> taskObjectVO.getProjects().stream())
.filter(taskObjectVO -> Func.isNotEmpty(taskObjectVO.getProjectId()) && CollectionUtil.isNotEmpty(taskObjectVO.getContents()))
.flatMap(project -> {
ProjectEntity projectEntity = projectService.getById(project.getProjectId());
ProjectEntity projectEntity=getProjectEntity(projects,project.getProjectId());
if(Func.isEmpty(projectEntity) && Func.isNotEmpty(projectEntity.getEmCode())) {
return null;
}
return project.getContents().stream().peek(contentVO -> contentVO.setEmCode(projectEntity.getEmCode()));
}).filter(Func::isNotEmpty).forEach(contentVO -> taskContentService.fillRealData(contentVO));
}).filter(Func::isNotEmpty).forEach(contentVO -> taskContentService.fillRealData(contentVO,contentMap));
}
return taskObjectVOList;
}
private ProjectEntity getProjectEntity(List<ProjectEntity> projects,Long projectId){
if(projects!=null && !projects.isEmpty()){
for(ProjectEntity entity:projects){
if(entity.getId().equals(projectId)){
return entity;
}
}
}
return null;
}
@Override
public List<TaskObjectOfflineVO> getExObjectData(List<Long> taskIds) {
return this.baseMapper.getExObjectData(taskIds);

21
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskServiceImpl.java

@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.hnac.hzims.common.utils.Condition;
import com.hnac.hzims.safeproduct.Constants;
import com.hnac.hzims.safeproduct.entity.DangerSourceEntity;
import com.hnac.hzims.safeproduct.entity.ImsMonCameraInfoEntity;
import com.hnac.hzims.safeproduct.feign.IImsMonCameraInfoClient;
import com.hnac.hzims.vo.SafeCheckStatisticVO;
@ -511,8 +512,11 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, TaskEntity> imp
TaskObjectEntity toQuery = new TaskObjectEntity();
toQuery.setTaskId(id);
List<TaskObjectVO> result = taskObjectService.getTaskObjectsDetail(toQuery);
List<Long> objectIds=result.stream().map(TaskObjectVO::getObjId).collect(Collectors.toList());
Map<Long,List<DangerSourceEntity>> listMap=objectDangerService.getDangerDetail(objectIds);
result.forEach(vo -> {
vo.setDangers(objectDangerService.getDangerDetailByObjectId(vo.getObjId()));
vo.setDangers(listMap.get(vo.getObjId()));
vo.setOrder(routMap.get(vo.getObjId()));
log.info("---routMap:{};objId:{}---", JSONObject.toJSONString(routMap), vo.getObjId());
});
@ -580,7 +584,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, TaskEntity> imp
@Override
public List<TaskVo> getListPageAuth(IPage<TaskVo> page, TaskListQuery task) {
List<TaskVo> re = this.baseMapper.getListPageAuth(page, task);
setVoInfo(re);
setVoInfo(re);
return re;
}
@ -614,6 +618,13 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, TaskEntity> imp
return re;
}
@Override
public List<TaskVo> getDeptTaskList(IPage<TaskVo> page, TaskListQuery task) {
List<TaskVo> re = this.baseMapper.getDeptTaskList(page, task);
setVoInfo(re);
return re;
}
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean cancelStart(Long taskId) {
@ -983,9 +994,9 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, TaskEntity> imp
} else {
queryWrapper.in(ObjectUtils.isNotNull(deptIds), "CREATE_DEPT", deptIds);
}
queryWrapper.ge(ObjectUtils.isNotNull(startTime), "CREATE_TIME",startTime);
queryWrapper.le(ObjectUtils.isNotNull(endTime), "CREATE_TIME",endTime);
taskEntities= baseMapper.selectList(queryWrapper);
queryWrapper.ge(ObjectUtils.isNotNull(startTime), "CREATE_TIME",startTime);
queryWrapper.le(ObjectUtils.isNotNull(endTime), "CREATE_TIME",endTime);
taskEntities= baseMapper.selectList(queryWrapper);
List<VoteChartVo> res=new ArrayList<>();
if (CollectionUtil.isNotEmpty(taskEntities)) {
VoteChartVo all = getVoteChartVo(taskEntities);

1
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/dto/HisDataResultDTO.java

@ -1,6 +1,5 @@
package com.hnac.hzims.message_alarm.dto;
import com.hnac.hzims.operational.huosan.vo.HouSanDeviceVO;
import lombok.Data;
import java.util.List;

7
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/mapper/PlanFlowResultInfoMapper.java

@ -0,0 +1,7 @@
package com.hnac.hzims.message_alarm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.message_alarm.entity.PlanFlowResultInfo;
public interface PlanFlowResultInfoMapper extends BaseMapper<PlanFlowResultInfo> {
}

4
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/mapper/PlanFlowResultInfoMapper.xml

@ -0,0 +1,4 @@
<?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.message_alarm.mapper.PlanFlowResultInfoMapper">
</mapper>

7
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/IPlanFlowResultInfoService.java

@ -0,0 +1,7 @@
package com.hnac.hzims.message_alarm.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hnac.hzims.message_alarm.entity.PlanFlowResultInfo;
public interface IPlanFlowResultInfoService extends IService<PlanFlowResultInfo> {
}

8
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/MessageWaterLevelServiceImpl.java

@ -125,11 +125,13 @@ public class MessageWaterLevelServiceImpl implements IMessageWaterLevelService {
MessageWaterDispatchVo buildParam(PlanConfigInfo config, List<PlanResultInfo> list) {
MessageWaterDispatchVo req = new MessageWaterDispatchVo();
if (!CollectionUtils.isEmpty(list)) {
List<BigDecimal> qIn=list.stream().map(PlanResultInfo::getIncomeFall).collect(Collectors.toList());
//String stcd = list.get(0).getStcd();
String stcd = config.getStcd();
req.setM(list.size() - 1);
// 来水流量
req.setQIn(list.stream().map(PlanResultInfo::getIncomeFall).collect(Collectors.toList()));
req.setQIn(qIn);
// 查询库容曲线 并转换为WaterStorageVo
List<StZvarlB> infos = baseInfoClient.getStZvarlBs(stcd).getData();
// 拿到其中两个属性转为 double[][]
@ -219,7 +221,7 @@ public class MessageWaterLevelServiceImpl implements IMessageWaterLevelService {
}
String waterLeve = JSONObject.parseObject(data).getString("Z");
List<Double> waterLeveList = JSONObject.parseArray(waterLeve, Double.class);
List<BigDecimal> waterLeveList = JSONObject.parseArray(waterLeve, BigDecimal.class);
// i = 1 跳过第一个
for (int i = 0; i < waterLeveList.size(); i++) {
if (list.size() - 1 < i) {
@ -230,7 +232,7 @@ public class MessageWaterLevelServiceImpl implements IMessageWaterLevelService {
}
String powerFlow = JSONObject.parseObject(data).getString("S");
List<Double> powerFlowList = JSONObject.parseArray(powerFlow, Double.class);
List<BigDecimal> powerFlowList = JSONObject.parseArray(powerFlow, BigDecimal.class);
// i = 1 跳过第一个
for (int i = 0; i < powerFlowList.size(); i++) {
if (list.size() - 1 < i) {

11
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/PlanFlowResultInfoServiceImpl.java

@ -0,0 +1,11 @@
package com.hnac.hzims.message_alarm.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hnac.hzims.message_alarm.entity.PlanFlowResultInfo;
import com.hnac.hzims.message_alarm.mapper.PlanFlowResultInfoMapper;
import com.hnac.hzims.message_alarm.service.IPlanFlowResultInfoService;
import org.springframework.stereotype.Service;
@Service
public class PlanFlowResultInfoServiceImpl extends ServiceImpl<PlanFlowResultInfoMapper, PlanFlowResultInfo> implements IPlanFlowResultInfoService {
}

189
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/PlanInfoServiceImpl.java

@ -15,10 +15,7 @@ import com.hnac.hzims.hzimsweather.feign.IHeWeatherWeatherClient;
import com.hnac.hzims.hzimsweather.response.weather.HeWeatherWeatherHourlyResponse;
import com.hnac.hzims.message_alarm.constants.AlarmConstants;
import com.hnac.hzims.message_alarm.dto.*;
import com.hnac.hzims.message_alarm.entity.PlanConfigInfo;
import com.hnac.hzims.message_alarm.entity.PlanInfo;
import com.hnac.hzims.message_alarm.entity.PlanParamInfo;
import com.hnac.hzims.message_alarm.entity.PlanResultInfo;
import com.hnac.hzims.message_alarm.entity.*;
import com.hnac.hzims.message_alarm.mapper.PlanInfoMapper;
import com.hnac.hzims.message_alarm.service.*;
import com.hnac.hzims.message_alarm.util.HttpClientUtils;
@ -72,6 +69,9 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
IPlanResultInfoService planResultInfoService;
@Autowired
IPlanFlowResultInfoService planFlowResultInfoService;
@Autowired
IBaseInfoClient baseInfoClient;
@Autowired
@ -176,12 +176,45 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
//将预报计算结果返回 后续作为调度计算的入参使用
result.setPlanResultInfos(planResultInfos);
Map<String,Map<String, Double>> dealResult=dealResult(config,planInfo,calResults);
dealReportResult(result.getReport(),dealResult);
}
}
log.info("===预报干预出参planResultInfos====:{}", result.getPlanResultInfos());
return result;
}
private void dealReportResult(List<ReportVo> report,Map<String,Map<String, Double>> map){
log.info("===dealReportResult====report:{}", report);
Map<String, Double> mnllMap=map.get("mnllMap");
log.info("===dealReportResult====mnllMap:{}", mnllMap);
Map<String, Double> ftrkMap=map.get("ftrkMap");
log.info("===dealReportResult====ftrkMap:{}", ftrkMap);
for(ReportVo vo:report){
String key=vo.getTime()+":00";
log.info("===dealReportResult====key:{}", key);
// Map<String, Double> jlsMap=map.get("jlsMap");
if(mnllMap!=null) {
vo.setSimulatedFlow(mnllMap.get(key) != null ? String.valueOf(mnllMap.get(key)) : "-");
}
// if(jlsMap!=null) {
// vo.setRunoffDepth(jlsMap.get(key) != null ? String.valueOf(jlsMap.get(key)) : "-");
// }
if(ftrkMap!=null) {
vo.setReverseFlow(ftrkMap.get(key) != null ? String.valueOf(ftrkMap.get(key)) : "-");
}
}
}
private ForecastVo forecastByHuman(Long id) {
ForecastVo forecastVo = new ForecastVo();
IncomingWaterForecastVo incomingWaterForecastVo = new IncomingWaterForecastVo();
@ -218,7 +251,9 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
ZoneId zoneId = ZoneId.systemDefault();
List<PlanResultInfo> planResultInfos = planResultInfoService.list(new QueryWrapper<PlanResultInfo>().eq("plan_id", id).orderByAsc("time"));
log.info("==预报方案结果==:{}", planResultInfos);
this.getIncomingWaterForecast(incomingWaterForecastVo, planParamInfo.getStcd(), Date.from(startTime.atZone(zoneId).toInstant()), Date.from(endTime.atZone(zoneId).toInstant()), planResultInfos, BigDecimal.valueOf(planParamInfo.getSt()), formatter,reportVoList,indexMap);
this.getIncomingWaterForecast(incomingWaterForecastVo, planParamInfo.getStcd(),
Date.from(startTime.atZone(zoneId).toInstant()), Date.from(endTime.atZone(zoneId).toInstant()),
planResultInfos, BigDecimal.valueOf(planParamInfo.getSt()), formatter,reportVoList,indexMap);
forecastVo.setIncomingWaterForecastVo(incomingWaterForecastVo);
log.info("==预报方案reportVoList==:{}", reportVoList);
forecastVo.setReport(reportVoList);
@ -397,7 +432,7 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
forecastDataVo.setRz(planResultInfo.getWaterLevel() != null ? String.valueOf(planResultInfo.getWaterLevel()) : "-");
forecastDataVo.setDrp(planResultInfo.getRainFall() != null ? String.valueOf(planResultInfo.getRainFall()) : "-");
forecastDataVo.setInFlow(planResultInfo.getIncomeFall() != null ? String.valueOf(planResultInfo.getIncomeFall()) : "-");
forecastDataVo.setOutFlow(planResultInfo.getPowerFlow() != null ? st.add(BigDecimal.valueOf(planResultInfo.getPowerFlow())).toString() : "-");
forecastDataVo.setOutFlow(planResultInfo.getPowerFlow() != null ? st.add(planResultInfo.getPowerFlow()).toString() : "-");
forecastDataVoList.add(forecastDataVo);
TimeValueVo valueVo = new TimeValueVo();
@ -486,8 +521,10 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
log.info(config.getStnm()+"==获取历史负荷数据==:{}",load);
log.info(config.getStnm()+"==获取负荷和数据==:{}",load1);
Map<String, String> drpMap = new HashMap<>();
for (Map<String, String> map : drpsignageList) {
drpMap.put(map.get("time"), map.get("drp"));
if (CollectionUtils.isNotEmpty(drpsignageList)) {
for (Map<String, String> map : drpsignageList) {
drpMap.put(map.get("time"), map.get("drp"));
}
}
log.info(config.getStnm()+"==获取历史雨量数据Map==:{}",drpMap);
Map<String, String> loadMap = new HashMap<>();
@ -498,13 +535,13 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
List<HisDataResultDTO> dtoList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(rzsignageList)) {
Map<String, String> finalLoadMap = loadMap;
rzsignageList.stream().forEach(list->{
rzsignageList.stream().forEach(item->{
HisDataResultDTO dto = new HisDataResultDTO();
String time = list.get("time");
String time = item.get("time");
//时间
dto.setTime(time);
//水位
dto.setRz(list.get("rz"));
dto.setRz(item.get("rz"));
//雨量
dto.setDrp(drpMap.get(time));
//负荷
@ -618,8 +655,8 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
planResultInfo.setPlanId(planInfo.getId());
planResultInfo.setStcd(stcd);
planResultInfo.setTime(LocalDateTime.parse(tm, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
planResultInfo.setRainFall(entry.getValue());
planResultInfo.setIncomeFall(ybllMap.get(tm));
planResultInfo.setRainFall(new BigDecimal(entry.getValue().toString()));
planResultInfo.setIncomeFall(new BigDecimal(ybllMap.get(tm).toString()));
planResultInfos.add(planResultInfo);
}
}
@ -628,6 +665,79 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
planResultInfoService.saveBatch(planResultInfos);
}
private Map<String,Map<String, Double>> dealResult(PlanConfigInfo config,PlanInfo planInfo,List<CalResultDTO> calResults) {
log.info("====dealResult===");
List<PlanFlowResultInfo> planFlowResultInfos=new ArrayList<>();
Map<String,Map<String, Double>> res=new HashMap<>();
//获取发电调度结果
for (CalResultDTO calResult : calResults) {
String forecastStationName = calResult.getForecastStationName();
String stnm = config.getStnm();
String stcd = config.getStcd();
if (stnm.equals(forecastStationName)) {
RsvrResultDTO rsvrResult = calResult.getRsvrResult();
ForecastCalResultDTO forecastCalResult = rsvrResult.getForecastCalResult();
List<ProcessValueDTO> processValues = forecastCalResult.getProcessValues();
if (CollectionUtils.isNotEmpty(processValues)) {
//模拟流量Map
Map<String, Double> mnllMap = new HashMap<>();
//反推入库Map
Map<String, Double> ftrkMap = new HashMap<>();
//径流深Map
// Map<String, Double> jlsMap = new HashMap<>();
for (ProcessValueDTO processValue : processValues) {
String valueName = processValue.getValueName();
List<ValueDataDTO> valueDatas = processValue.getValueDatas();
if ("反推入库".equals(valueName)) {
for(ValueDataDTO dto:valueDatas){
ftrkMap.put(dto.getTm(),dto.getValue());
}
}
if ("模拟流量".equals(valueName)) {
for(ValueDataDTO dto:valueDatas){
mnllMap.put(dto.getTm(),dto.getValue());
}
}
// if ("径流深".equals(valueName)) {
// for(ValueDataDTO dto:valueDatas){
// jlsMap.put(dto.getTm(),dto.getValue());
// }
// }
}
log.info("====dealResult===mnllMap:{}",mnllMap);
res.put("mnllMap",mnllMap);
// res.put("jlsMap",jlsMap);
log.info("====dealResult===ftrkMap:{}",ftrkMap);
res.put("ftrkMap",ftrkMap);
for (Map.Entry<String, Double> entry : mnllMap.entrySet()) {
String tm = entry.getKey();
PlanFlowResultInfo planResultInfo = new PlanFlowResultInfo();
planResultInfo.setPlanId(planInfo.getId());
planResultInfo.setStcd(stcd);
planResultInfo.setTime(LocalDateTime.parse(tm, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
planResultInfo.setSimulatedFlow(new BigDecimal(entry.getValue().toString()));
planResultInfo.setReverseFlow(new BigDecimal(ftrkMap.get(tm).toString()));
planFlowResultInfos.add(planResultInfo);
}
}
}
}
//保存 反推入库 模拟流量
if(planFlowResultInfos!=null && !planFlowResultInfos.isEmpty()) {
planFlowResultInfoService.saveBatch(planFlowResultInfos);
}
return res;
}
private PlanInfo savePlanInfo(PlanConfigInfo config) {
LocalDateTime now = LocalDateTime.now();
String timeStr = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
@ -728,19 +838,56 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
ZoneId zoneId = ZoneId.systemDefault();
List<PlanResultInfo> planResultInfos = planResultInfoService.list(new QueryWrapper<PlanResultInfo>().eq("plan_id", id).orderByAsc("time"));
this.getIncomingWaterForecast(incomingWaterForecastVo,planParamInfo.getStcd(),Date.from(startTime.atZone(zoneId).toInstant()),Date.from(endTime.atZone(zoneId).toInstant()),planResultInfos,BigDecimal.valueOf(planParamInfo.getSt()),formatter,reportVoList,indexMap);
this.getIncomingWaterForecast(incomingWaterForecastVo,planParamInfo.getStcd(),Date.from(startTime.atZone(zoneId).toInstant()),
Date.from(endTime.atZone(zoneId).toInstant()),
planResultInfos,BigDecimal.valueOf(planParamInfo.getSt()),formatter,reportVoList,indexMap);
PowerPlantOptimizationVo powerPlantOptimizationVo = new PowerPlantOptimizationVo();
powerPlantOptimizationVo.setStationCode(planParamInfo.getStationCode());
powerPlantOptimizationVo.setStationName(planParamInfo.getStationName());
this.getPowerPlantOptimization(powerPlantOptimizationVo,startTime.format(formatter),endTime.format(formatter),planResultInfos,reportVoList,indexMap);
this.getPowerPlantOptimization(powerPlantOptimizationVo,startTime.format(formatter),endTime.format(formatter),planResultInfos,
reportVoList,indexMap);
forecastVo.setIncomingWaterForecastVo(incomingWaterForecastVo);
forecastVo.setPowerPlantOptimizationVo(powerPlantOptimizationVo);
List<PlanFlowResultInfo> planFlowResultInfos = planFlowResultInfoService.list(new QueryWrapper<PlanFlowResultInfo>().eq("plan_id", id).orderByAsc("time"));
dealPlanFlow(planFlowResultInfos,reportVoList);
forecastVo.setReport(reportVoList);
return forecastVo;
}
private void getIncomingWaterForecast(IncomingWaterForecastVo vo, String stcd, Date startTime, Date endTime, List<PlanResultInfo> planResultInfos, BigDecimal st, DateTimeFormatter formatter,List<ReportVo> reportVoList,Map<String,Integer> indexMap){
private void dealPlanFlow(List<PlanFlowResultInfo> planFlowResultInfos,List<ReportVo> reportVoList){
if(planFlowResultInfos!=null && !planFlowResultInfos.isEmpty()) {
for (ReportVo vo : reportVoList) {
String time = vo.getTime();
PlanFlowResultInfo info = getPlanFlowResultInfoByTime(time, planFlowResultInfos);
if (info != null) {
String reverseFlow = info.getReverseFlow() != null ? String.valueOf(info.getReverseFlow()) : "-";
String simulatedFlow = info.getSimulatedFlow() != null ? String.valueOf(info.getSimulatedFlow()) : "-";
vo.setSimulatedFlow(simulatedFlow);
vo.setReverseFlow(reverseFlow);
}
}
}
}
private PlanFlowResultInfo getPlanFlowResultInfoByTime(String time,List<PlanFlowResultInfo> planFlowResultInfos){
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH");
for(PlanFlowResultInfo info:planFlowResultInfos){
LocalDateTime dateTime=info.getTime();
if(time.equals(df.format(dateTime))){
return info;
}
}
return null;
}
private void getIncomingWaterForecast(IncomingWaterForecastVo vo, String stcd, Date startTime,
Date endTime, List<PlanResultInfo> planResultInfos, BigDecimal st,
DateTimeFormatter formatter,List<ReportVo> reportVoList,
Map<String,Integer> indexMap){
R<List<Map<String, String>>> rz = null;
if (gbyStcd.equals(stcd)) {
rz = baseInfoClient.getHistoryDataBySignage(gbyStcdZc, startTime, endTime, "hour", "rz");
@ -773,7 +920,7 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
log.info("{}==发电流量==:{}",stcd,planResultInfo.getPowerFlow());
log.info("{}==生态流量==:{}",stcd,st);
forecastDataVo.setInFlow(planResultInfo.getIncomeFall()!=null?String.valueOf(planResultInfo.getIncomeFall()):"-");
forecastDataVo.setOutFlow(planResultInfo.getPowerFlow()!=null?st.add(BigDecimal.valueOf(planResultInfo.getPowerFlow())).toString():"-");
forecastDataVo.setOutFlow(planResultInfo.getPowerFlow()!=null?st.add(planResultInfo.getPowerFlow()).toString():"-");
log.info("{}==预报入库流量==:{}",stcd,forecastDataVo.getInFlow());
log.info("{}==预报入库流量==:{}",stcd,forecastDataVo.getOutFlow());
forecastDataVoList.add(forecastDataVo);
@ -781,7 +928,8 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
vo.setPowerTotal(String.format("%.3f", sum));
vo.setStMaxPowerTime(maxPowerTime.getTime().format(formatter));
vo.setStMaxPower(maxPowerTime.getUnitLoad());
this.getReport(rzsignageList,drpsignageList,forecastDataVoList,null,null,reportVoList,indexMap);
this.getReport(rzsignageList,drpsignageList,forecastDataVoList,null,null,
reportVoList,indexMap);
}
}
@ -855,7 +1003,10 @@ public class PlanInfoServiceImpl extends ServiceImpl<PlanInfoMapper, PlanInfo> i
}
}
private void getReport(List<Map<String,String>> signageList,List<Map<String,String>> drpsignageList,List<ForecastDataVo> forecastRes, List<TimeValueVo> loadForecastRes,List<TimeValueVo> actualLoad,List<ReportVo> reportVoList,Map<String,Integer> indexMap){
private void getReport(List<Map<String,String>> signageList,List<Map<String,String>> drpsignageList,
List<ForecastDataVo> forecastRes, List<TimeValueVo> loadForecastRes,
List<TimeValueVo> actualLoad,List<ReportVo> reportVoList,
Map<String,Integer> indexMap){
log.info("==预报indexMap==:{}", indexMap);
if (signageList!=null&&!signageList.isEmpty()){
signageList.forEach(item->{

50
hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/xxljob/ForecastOperationJob.java

@ -13,10 +13,7 @@ import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.equipment.vo.EminfoAndEmParamVo;
import com.hnac.hzims.message_alarm.constants.AlarmConstants;
import com.hnac.hzims.message_alarm.dto.*;
import com.hnac.hzims.message_alarm.entity.PlanConfigInfo;
import com.hnac.hzims.message_alarm.entity.PlanInfo;
import com.hnac.hzims.message_alarm.entity.PlanParamInfo;
import com.hnac.hzims.message_alarm.entity.PlanResultInfo;
import com.hnac.hzims.message_alarm.entity.*;
import com.hnac.hzims.message_alarm.service.*;
import com.hnac.hzims.message_alarm.util.HttpClientUtils;
import com.hnac.hzims.message_alarm.util.pojo.HttpResponse;
@ -63,6 +60,9 @@ public class ForecastOperationJob {
IPlanResultInfoService planResultInfoService;
@Autowired
IPlanFlowResultInfoService planFlowResultInfoService;
@Autowired
IBaseInfoClient baseInfoClient;
@Autowired
@ -189,6 +189,7 @@ public class ForecastOperationJob {
private MessageWaterSuggestVo savePlanResultInfo(PlanConfigInfo config, PlanInfo planInfo, List<PlanResultInfo> planResultInfos, List<CalResultDTO> calResults) {
//获取发电调度结果
List<PlanFlowResultInfo> planFlowResultInfos=new ArrayList<>();
for (CalResultDTO calResult : calResults) {
String forecastStationName = calResult.getForecastStationName();
String stnm = config.getStnm();
@ -202,6 +203,11 @@ public class ForecastOperationJob {
Map<String, Double> ybylMap = null;
//预报流量Map
Map<String, Double> ybllMap = null;
//模拟流量Map
Map<String, Double> mnllMap = new LinkedHashMap<>();
//反推入库Map
Map<String, Double> ftrkMap = new LinkedHashMap<>();
for (ProcessValueDTO processValue : processValues) {
String valueName = processValue.getValueName();
List<ValueDataDTO> valueDatas = processValue.getValueDatas();
@ -211,6 +217,16 @@ public class ForecastOperationJob {
if ("预报流量".equals(valueName)) {
ybllMap = valueDatas.stream().collect(Collectors.toMap(ValueDataDTO::getTm, ValueDataDTO::getValue));
}
if ("反推入库".equals(valueName)) {
for(ValueDataDTO dto:valueDatas){
ftrkMap.put(dto.getTm(),dto.getValue());
}
}
if ("模拟流量".equals(valueName)) {
for(ValueDataDTO dto:valueDatas){
mnllMap.put(dto.getTm(),dto.getValue());
}
}
}
logger.info("====预报雨量Map=====:{}", ybylMap);
logger.info("====预报流量Map=====:{}", ybllMap);
@ -220,15 +236,33 @@ public class ForecastOperationJob {
planResultInfo.setPlanId(planInfo.getId());
planResultInfo.setStcd(stcd);
planResultInfo.setTime(LocalDateTime.parse(tm, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
planResultInfo.setRainFall(entry.getValue());
planResultInfo.setIncomeFall(ybllMap.get(tm));
planResultInfo.setRainFall(new BigDecimal(entry.getValue().toString()));
planResultInfo.setIncomeFall(new BigDecimal(ybllMap.get(tm).toString()));
planResultInfos.add(planResultInfo);
}
for (Map.Entry<String, Double> entry : mnllMap.entrySet()) {
String tm = entry.getKey();
PlanFlowResultInfo planResultInfo = new PlanFlowResultInfo();
planResultInfo.setPlanId(planInfo.getId());
planResultInfo.setStcd(stcd);
planResultInfo.setTime(LocalDateTime.parse(tm, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
planResultInfo.setSimulatedFlow(new BigDecimal(entry.getValue().toString()));
planResultInfo.setReverseFlow(new BigDecimal(ftrkMap.get(tm).toString()));
planFlowResultInfos.add(planResultInfo);
}
}
}
}
MessageWaterSuggestVo comeWaterInfo = messageWaterLevelService.getComeWaterInfo(config,planResultInfos);
planResultInfoService.saveBatch(comeWaterInfo.getList());
//保存 反推入库 模拟流量
if(planFlowResultInfos!=null && !planFlowResultInfos.isEmpty()) {
planFlowResultInfoService.saveBatch(planFlowResultInfos);
}
return comeWaterInfo;
}
@ -252,13 +286,13 @@ public class ForecastOperationJob {
Double ySt = getRealUseWater(config,powerList, gbyRzList);
logger.info(stnm + "====ySt=====:{}", ySt);
//将高板岩五天的数据按照时间排序
List<Double> gbyFiveDayAll = planResultInfos.stream().filter(planResultInfo -> stcd.equals(planResultInfo.getStcd())).sorted(Comparator.comparing(PlanResultInfo::getTime)).map(PlanResultInfo::getIncomeFall).collect(Collectors.toList());
List<BigDecimal> gbyFiveDayAll = planResultInfos.stream().filter(planResultInfo -> stcd.equals(planResultInfo.getStcd())).sorted(Comparator.comparing(PlanResultInfo::getTime)).map(PlanResultInfo::getIncomeFall).collect(Collectors.toList());
logger.info(stnm + "====gbyFiveDayAll=====:{}", gbyFiveDayAll);
//高板岩后五天来水量
List<Double> gbyFiveDay = new LinkedList<>();
BigDecimal count = new BigDecimal("0.0");
for (int i = 1; i <= gbyFiveDayAll.size(); i++) {
Double aDouble = gbyFiveDayAll.get(i - 1);
BigDecimal aDouble = gbyFiveDayAll.get(i - 1);
String s = String.valueOf(aDouble);
count = count.add(new BigDecimal(String.valueOf(s)));
if (i % 24 == 0) {

16
hzims-service/operational/src/main/java/com/hnac/hzims/operational/alert/service/impl/HistoryAbnormalAlarmServiceImpl.java

@ -65,7 +65,7 @@ public class HistoryAbnormalAlarmServiceImpl extends BaseServiceImpl<HistoryAbno
private final ISoeClient alarmClient;
@Value("${hzims.operation.alarm.types}")
private String types;
String types;
/**
* 查询单条历史告警
@ -123,10 +123,10 @@ public class HistoryAbnormalAlarmServiceImpl extends BaseServiceImpl<HistoryAbno
List<HistoryAbnormalAlarmVo> voList = historyAbnormalAlarmVos.parallelStream().peek(s -> s.setTimes((s.getEndTime().getTime() - s.getStartTime().getTime()))).collect(Collectors.toList());
//次数统计
Map<String, Long> timesList = voList.stream().collect(Collectors.groupingBy(HistoryAbnormalAlarmEntity::getStationName,
Collectors.counting()));
Collectors.counting()));
//时间统计
Map<String, Long> durationList = voList.stream().collect(Collectors.groupingBy(HistoryAbnormalAlarmEntity::getStationName,
Collectors.summingLong(HistoryAbnormalAlarmVo::getTimes)));
Collectors.summingLong(HistoryAbnormalAlarmVo::getTimes)));
List<HistoryAbnormalAlarmVo> res = new ArrayList<>();
for (Map.Entry<String, Long> entry : durationList.entrySet()) {
//累计时长
@ -146,8 +146,8 @@ public class HistoryAbnormalAlarmServiceImpl extends BaseServiceImpl<HistoryAbno
}
//根据电站名字排序
res = res.stream().
sorted(Comparator.comparing(HistoryAbnormalAlarmVo::getStationName))
.collect(Collectors.toList());
sorted(Comparator.comparing(HistoryAbnormalAlarmVo::getStationName))
.collect(Collectors.toList());
IPage<HistoryAbnormalAlarmVo> page = Condition.getPage(query);
page.setTotal(res.size());
if (entityIsNull(query)) {
@ -271,7 +271,7 @@ public class HistoryAbnormalAlarmServiceImpl extends BaseServiceImpl<HistoryAbno
record.setAlarmType(AbnormalAlarmConstant.SYSTEM_ALARM);
return record;
}).sorted(Comparator.comparing(AlarmDataVo::getIsHandle)
.thenComparing(AlarmDataVo::getTs, Comparator.reverseOrder())).collect(Collectors.toList());
.thenComparing(AlarmDataVo::getTs, Comparator.reverseOrder())).collect(Collectors.toList());
response.setCount((int) (soe.getData().getTotal() - handles.size()));
response.setSoeList(datas);
@ -393,8 +393,8 @@ public class HistoryAbnormalAlarmServiceImpl extends BaseServiceImpl<HistoryAbno
// 步骤4.分页
page.setTotal(alarms.size());
page.setRecords(alarms.stream().sorted(Comparator.comparing(AlarmVo::getTs,Comparator.reverseOrder()))
.skip(page.getSize() * (page.getCurrent() - 1)).limit(page.getSize())
.collect(Collectors.toList()));
.skip(page.getSize() * (page.getCurrent() - 1)).limit(page.getSize())
.collect(Collectors.toList()));
page.setPages((alarms.size() -1) / page.getSize() + 1);
}else{
page.setTotal(0);

9
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyMainController.java

@ -12,6 +12,7 @@ import com.hnac.hzims.operational.duty.service.IImsDutyMainService;
import com.hnac.hzims.operational.duty.utils.ExcelMergeHandler;
import com.hnac.hzims.operational.duty.utils.ExcelTool;
import com.hnac.hzims.operational.duty.vo.ChangeDutyMainVo;
import com.hnac.hzims.operational.duty.vo.ExchangeGroupLeader;
import com.hnac.hzims.operational.duty.vo.HomePageDutyMainInfoVo;
import com.hnac.hzims.operational.duty.vo.ImsSchedulingVo;
import io.swagger.annotations.Api;
@ -217,6 +218,14 @@ public class ImsDutyMainController extends BladeController {
return imsDutyMainService.updateDutyMainInfoVoById(changeDutyMainVo);
}
//班组长交换班
@PostMapping("/changDutyMainGroupLeader")
@ApiOperationSupport(order = 9)
@ApiOperation(value = "班组长交换班", notes = "")
public R changDutyMainGroupLeader(@RequestBody ExchangeGroupLeader changeGroupLeader) {
return imsDutyMainService.changDutyMainGroupLeader(changeGroupLeader);
}
@GetMapping("/exportDuty")
@ApiOperation(value = "导出排班计划")
public void exportTemplate(HttpServletResponse response, String time, Long deptId) throws IOException {

13
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyRecController.java

@ -21,6 +21,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@ -34,6 +35,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Map;
/**
@ -335,6 +337,17 @@ public class ImsDutyRecController extends BladeController {
return R.status(imsDutyRecService.changeShift(imsDutyRecDTO));
}
@PostMapping("/updateContent")
@ApiOperation(value = "修改补充说明", notes = "修改补充说明")
public R updateContent(@RequestBody Map<String,Object> param) {
if(param.get("id")==null){
return R.fail("值班id不能为空");
}
if(param.get("content")==null || "".equals(param.get("content").toString())){
return R.fail("补充说明不能为空");
}
return R.status(imsDutyRecService.updateContent(param));
}
}

2
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyMainService.java

@ -151,4 +151,6 @@ public interface IImsDutyMainService extends BaseService<ImsDutyMainEntity> {
R updateDutyMainInfoVoById(ChangeDutyMainVo changeDutyMainVo);
List<ImsDutyMainReportExcel> getExcelDutyData(Integer year, Integer month, Long deptId);
R changDutyMainGroupLeader(ExchangeGroupLeader changeGroupLeader);
}

3
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyRecService.java

@ -15,6 +15,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.flow.core.entity.BladeFlow;
import java.util.List;
import java.util.Map;
/**
* 服务类
@ -135,4 +136,6 @@ public interface IImsDutyRecService extends BaseService<ImsDutyRecEntity> {
* @return
*/
Boolean dealDutyRecFlow(ImsDutyRecDTO recDTO);
Boolean updateContent(Map<String,Object> param);
}

156
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyMainServiceImpl.java

@ -20,6 +20,7 @@ import com.hnac.hzims.operational.duty.vo.*;
import com.hnac.hzims.operational.main.vo.DutyPersonalReportVO;
import com.hnac.hzims.operational.report.vo.DutyReportVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
@ -360,12 +361,12 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
imsDutyMainEntity.setDutyGroupId(Long.valueOf(groupIdsSplit[tempSub]));
//查询预备排班的班组人员,为空,则失败
List<Long> longList = Arrays.asList(imsSchedulingVo.getGroupIds().split("\\^"))
.parallelStream()
.map(a -> Long.parseLong(a.trim()))
.collect(Collectors.toList());
.parallelStream()
.map(a -> Long.parseLong(a.trim()))
.collect(Collectors.toList());
List<ImsDutyGroupPEntity> list = imsDutyGroupPService.selectByGroupIds(longList);
collect = list.stream().filter(iter -> iter.getGroupId().toString().equals(groupId)).map(iter ->
iter.getPersonId()).collect(Collectors.toList());
iter.getPersonId()).collect(Collectors.toList());
ImsDutyGroupEntity imsDutyGroupEntity = dutyGroupMapper.selectById(groupId);
groupName = imsDutyGroupEntity.getGroupName();
if (ObjectUtil.isNotEmpty(imsDutyGroupEntity) && ObjectUtil.isNotEmpty(imsDutyGroupEntity.getManagerId())) {
@ -417,7 +418,7 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
imsDutyMainPersonEntity.setDutyPerson(personId);
long id1 = IdWorker.getId(imsDutyMainPersonEntity);
imsDutyMainPersonEntity.setId(id1);
imsDutyMainPersonEntity.setDutyChargePerson(managerId);
imsDutyMainPersonEntity.setDutyChargePerson(managerId);
imsDutyMainPersonEntityList.add(imsDutyMainPersonEntity);
}
}
@ -650,7 +651,7 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept());
String groupId = groupIdsSplit[tempSub];
List<Long> collect = list.stream().filter(iter -> iter.getGroupId().toString().equals(groupId)).map(iter ->
iter.getPersonId()).collect(Collectors.toList());
iter.getPersonId()).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(collect)) {
String ids = StringUtils.join(collect, "^");
imsDutyMainEntity.setDutyPersonIds(ids);
@ -1306,7 +1307,7 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
}
//值班组长无法调走
List<String> dutyChargePersonIds = personEntityList.stream().filter(s -> s.getDutyChargePerson()!=null)
.map(s -> s.getDutyChargePerson().toString()).collect(Collectors.toList());
.map(s -> s.getDutyChargePerson().toString()).collect(Collectors.toList());
manageIds.addAll(dutyChargePersonIds);
for (String s : personId) {
if (manageIds.contains(s)) {
@ -1323,21 +1324,21 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
// });
List<ImsDutyMainPersonEntity> addPersonEntityList = new ArrayList<>();
List<ImsDutyMainEntity> updateDutyMainEntities = imsDutyMainEntities.stream().map(s -> {
String[] dutyMainPersonIds = s.getDutyPersonIds().split("\\^");
List<String> personIdlist = new ArrayList<>(Arrays.asList(dutyMainPersonIds));
if (1 == changeDutyMainVo.getType()) {
personIdlist.addAll(personId);
} else {
personIdlist.removeAll(personId);
}
String resIds = StringUtils.join(personIdlist, "^");
s.setDutyPersonIds(resIds);
//如果是班组排班,调班之后,则需要转换为灵活排班,加上排班名字
if (s.getDutyGroupId() != null) {
s.setDutyGroupId(null);
}
return s;
}).collect(Collectors.toList());
String[] dutyMainPersonIds = s.getDutyPersonIds().split("\\^");
List<String> personIdlist = new ArrayList<>(Arrays.asList(dutyMainPersonIds));
if (1 == changeDutyMainVo.getType()) {
personIdlist.addAll(personId);
} else {
personIdlist.removeAll(personId);
}
String resIds = StringUtils.join(personIdlist, "^");
s.setDutyPersonIds(resIds);
//如果是班组排班,调班之后,则需要转换为灵活排班,加上排班名字
if (s.getDutyGroupId() != null) {
s.setDutyGroupId(null);
}
return s;
}).collect(Collectors.toList());
//之前原有的排版-人员表,需要修改的部分
List<ImsDutyMainPersonEntity> updatePersonEntityList= personEntityList.stream().map(sig -> {
if (sig.getDutyGroupId() != null) {
@ -1369,8 +1370,8 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
if (2 == changeDutyMainVo.getType()) {
for (String s : personId) {
updatePersonEntityList=updatePersonEntityList.stream().filter(
sig -> !sig.getDutyPerson().equals(s))
.collect(Collectors.toList());
sig -> !sig.getDutyPerson().equals(s))
.collect(Collectors.toList());
}
}
//更新排班-班组表,删除排班人员表,再添加排班班组人员表
@ -1379,7 +1380,7 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
iImsDutyMainPersonService.deleteLogic(list);
iImsDutyMainPersonService.saveBatch(updatePersonEntityList);
return R.success("修改成功");
}
}
@Override
public List<ImsDutyMainReportExcel> getExcelDutyData(Integer year, Integer month, Long deptId) {
@ -1502,6 +1503,111 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
return dutyMainReportExcelList;
}
@Override
public R changDutyMainGroupLeader(ExchangeGroupLeader changeGroupLeader) {
if(changeGroupLeader == null){
return R.fail("传入换班数据不能为空");
}
if(!changeGroupLeader.getFromDeptId().equals(changeGroupLeader.getToDeptId())){
return R.fail("不同机构间不能换班");
}
if(changeGroupLeader.getFromDate().compareTo(changeGroupLeader.getToDate())>0){
return R.fail("换班日期不能大于被换班日期");
}
if(changeGroupLeader.getFromDate().compareTo(changeGroupLeader.getToDate()) == 0
&& changeGroupLeader.getFromClassId().equals(changeGroupLeader.getToClassId())){
return R.fail("同一日期同一班次无须换班");
}
List<ImsDutyMainEntity> aDutyList = this.baseMapper.selectList(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getDutyDate, changeGroupLeader.getFromDate());
eq(ImsDutyMainEntity::getCreateDept, changeGroupLeader.getFromDeptId());
eq(ImsDutyMainEntity::getClassId, changeGroupLeader.getFromClassId());
eq(ImsDutyMainEntity::getIsDeleted, 0);
}});
if(aDutyList== null|| aDutyList.isEmpty()){
return R.fail("换班人无排班计划");
}
List<ImsDutyMainEntity> bDutyList = this.baseMapper.selectList(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getDutyDate, changeGroupLeader.getToDate());
eq(ImsDutyMainEntity::getCreateDept, changeGroupLeader.getToDeptId());
eq(ImsDutyMainEntity::getClassId, changeGroupLeader.getToClassId());
eq(ImsDutyMainEntity::getIsDeleted, 0);
}});
if(bDutyList== null|| bDutyList.isEmpty()){
return R.fail("被换班人无排班计划");
}
ImsDutyMainEntity aDutyMainEntity=aDutyList.get(0);
//查询换换班是否在值班
if(aDutyMainEntity.getStatus()!=0){
return R.fail("换班人待值班状态才能换班");
}
ImsDutyGroupEntity aGroupEntity = dutyGroupMapper.selectById(aDutyMainEntity.getDutyGroupId());
Long aManagerId=aGroupEntity.getManagerId();
List<ImsDutyMainPersonEntity> aPersonEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper<ImsDutyMainPersonEntity>() {{
eq(ImsDutyMainPersonEntity::getDutyMainId, aDutyMainEntity.getId());
eq(ImsDutyMainPersonEntity::getIsDeleted, 0);
}});
ImsDutyMainEntity bDutyMainEntity=bDutyList.get(0);
//查询换换班是否在值班
if(bDutyMainEntity.getStatus()!=0){
return R.fail("被换班人待值班状态才能换班");
}
ImsDutyGroupEntity bGroupEntity = dutyGroupMapper.selectById(bDutyMainEntity.getDutyGroupId());
Long bManagerId=bGroupEntity.getManagerId();
List<ImsDutyMainPersonEntity> bPersonEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper<ImsDutyMainPersonEntity>() {{
eq(ImsDutyMainPersonEntity::getDutyMainId, bDutyMainEntity.getId());
eq(ImsDutyMainPersonEntity::getIsDeleted, 0);
}});
String aPersonIds=aDutyMainEntity.getDutyPersonIds();
String bPersonIds=bDutyMainEntity.getDutyPersonIds();
//更新duty_main
ImsDutyMainEntity aEntity= SerializationUtils.clone(aDutyMainEntity);
ImsDutyMainEntity bEntity=SerializationUtils.clone(bDutyMainEntity);
aEntity.setDutyGroupId(bDutyMainEntity.getDutyGroupId());
aPersonIds=aPersonIds.replaceAll(aManagerId+"",bManagerId+"");
aEntity.setDutyPersonIds(aPersonIds);
this.baseMapper.updateById(aEntity);
bEntity.setDutyGroupId(aDutyMainEntity.getDutyGroupId());
bPersonIds=bPersonIds.replaceAll(bManagerId+"",aManagerId+"");
bEntity.setDutyPersonIds(bPersonIds);
this.baseMapper.updateById(bEntity);
//更新 duty_main_person
for(ImsDutyMainPersonEntity entity:aPersonEntityList){
if(entity.getDutyPerson().equals(aManagerId)){
entity.setDutyPerson(bManagerId);
}
// entity.setDutyGroupName(bGroupEntity.getGroupName());
entity.setDutyChargePerson(bManagerId);
}
iImsDutyMainPersonService.updateBatchById(aPersonEntityList);
for(ImsDutyMainPersonEntity entity:bPersonEntityList){
if(entity.getDutyPerson().equals(bManagerId)){
entity.setDutyPerson(aManagerId);
}
// entity.setDutyGroupName(aGroupEntity.getGroupName());
entity.setDutyChargePerson(aManagerId);
}
iImsDutyMainPersonService.updateBatchById(bPersonEntityList);
return R.success("班组长换班成功");
}
/**
* 获取上一班组

17
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyRecServiceImpl.java

@ -208,6 +208,16 @@ public class ImsDutyRecServiceImpl extends BaseServiceImpl<ImsDutyRecMapper, Ims
Assert.isTrue(Func.isNotEmpty(managerId),() -> {
throw new ServiceException("获取值班班组长失败!");
});
//防止多次创建巡检任务
LambdaQueryWrapper<ImsDutyRecEntity> wrapper=new LambdaQueryWrapper<>();
wrapper.eq(ImsDutyRecEntity::getDutyId,recDTO.getDutyId());
wrapper.isNotNull(ImsDutyRecEntity::getInspectTaskId);
List<ImsDutyRecEntity> list=this.list(wrapper);
if(list!=null && !list.isEmpty()){
throw new ServiceException("接班巡检任务已创建,不能多次提交!");
}
// 新建巡检计划并获取巡检任务Id
PlanVO planVO = new PlanVO();
planVO.setRouteId(recDTO.getRouteId());
@ -1402,6 +1412,13 @@ public class ImsDutyRecServiceImpl extends BaseServiceImpl<ImsDutyRecMapper, Ims
return true;
}
@Override
public Boolean updateContent(Map<String, Object> param) {
UpdateWrapper<ImsDutyRecEntity> wrapper=new UpdateWrapper<>();
wrapper.set("content",param.get("content")).eq("id",param.get("id"));
return this.update(wrapper);
}
/**
* 计算交接班状态
* @param duty 值班信息

52
hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java

@ -290,19 +290,19 @@ public class HydropowerServiceImpl implements HydropowerService {
* @return
*/
private List<ActivePowerVo> getLoadsByDay(EminfoAndEmParamVo device) {
String start = DateUtil.format(new Date(), DateUtil.PATTERN_DATE) + " 00:00:00";
String end = DateUtil.format(new Date(), DateUtil.PATTERN_DATETIME);
List<AnalyseDataTaosVO> records = analyseDataService.periodTargetData(start, end, 3, 2, device.getEmCode(), HomePageConstant.PV_LOAD);
if (CollectionUtil.isEmpty(records)) {
return new ArrayList<>();
}
return records.stream().map(record -> {
String start = DateUtil.format(new Date(), DateUtil.PATTERN_DATE) + " 00:00:00";
String end = DateUtil.format(new Date(), DateUtil.PATTERN_DATETIME);
List<AnalyseDataTaosVO> records = analyseDataService.periodTargetData(start, end, 3, 2, device.getEmCode(), HomePageConstant.PV_LOAD);
if (CollectionUtil.isEmpty(records)) {
return new ArrayList<>();
}
return records.stream().map(record -> {
ActivePowerVo load = new ActivePowerVo();
Date time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s");
load.setHour(time.getHours());
load.setActivePower(Optional.ofNullable(record.getVal()).orElse("0"));
return load;
}).sorted(Comparator.comparing(ActivePowerVo::getHour)).collect(Collectors.toList());
Date time = DateUtil.parse(record.getTs(), "yyyy-MM-dd HH:mm:ss.s");
load.setHour(time.getHours());
load.setActivePower(Optional.ofNullable(record.getVal()).orElse("0"));
return load;
}).sorted(Comparator.comparing(ActivePowerVo::getHour)).collect(Collectors.toList());
}
/**
@ -525,7 +525,7 @@ public class HydropowerServiceImpl implements HydropowerService {
private List<GenerationPowerVo> getGenerationPowerList(EminfoAndEmParamVo device) {
String start = DateUtil.format(new Date(), "yyyy-MM") + "-01 00:00:00";
String end = DateUtil.format(new Date(), DateUtil.PATTERN_DATETIME);
List<AnalyseDataTaosVO> records = analyseDataService.periodTargetData(start,end,5,EquipmentConstants.CycleTypeEnum.DAY_CYCLE.getType(),device.getEmCode(),HomePageConstant.HYDROPOWER_GENERATE_POWER);
List<AnalyseDataTaosVO> records = analyseDataService.periodTargetData(start,end,5,EquipmentConstants.CycleTypeEnum.DAY_CYCLE.getType(),device.getEmCode(),HomePageConstant.HYDROPOWER_GENERATE_POWER);
if(CollectionUtil.isEmpty(records)){
return new ArrayList<>();
}
@ -994,7 +994,7 @@ public class HydropowerServiceImpl implements HydropowerService {
return hydropower;
}).collect(Collectors.toList());
}
/**
* 水电站区域指标
* @param deptId
@ -1154,8 +1154,8 @@ public class HydropowerServiceImpl implements HydropowerService {
if(Math.abs(generate_sum) > 0){
return scales.stream().peek(scale-> scale.setAreaMakeUp(BigDecimal.valueOf(scale.getPowerYear() / generate_sum * 100).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue())).
filter(scale-> Math.abs(scale.getCapacityUse()) > 0 || Math.abs(scale.getAreaMakeUp()) > 0
|| Math.abs(scale.getDeviceUse()) > 0 || Math.abs(scale.getGenerationRate()) > 0)
.sorted(Comparator.comparing(AreaScaleVo::getPowerYear).reversed()).collect(Collectors.toList());
|| Math.abs(scale.getDeviceUse()) > 0 || Math.abs(scale.getGenerationRate()) > 0)
.sorted(Comparator.comparing(AreaScaleVo::getPowerYear).reversed()).collect(Collectors.toList());
}
return scales.stream().peek(scale-> scale.setAreaMakeUp(0.0)).filter(scale-> Math.abs(scale.getCapacityUse()) > 0 || Math.abs(scale.getAreaMakeUp()) > 0
|| Math.abs(scale.getDeviceUse()) > 0 || Math.abs(scale.getGenerationRate()) > 0)
@ -1699,6 +1699,8 @@ public class HydropowerServiceImpl implements HydropowerService {
// 班组负责人
String managerName = this.getManagerName(duty.getManagerId());
item.setTeamLeader(managerName);
String managerPhone = this.getManagerPhone(duty.getManagerId());
item.setTeamLeaderPhone(managerPhone);
// 班组成员
String classMember = this.getClassMemberName(duty.getDutyPersonIds(),duty.getManagerId());
item.setClassMember(classMember);
@ -1719,6 +1721,8 @@ public class HydropowerServiceImpl implements HydropowerService {
// 下一班组负责人
String managerName = this.getManagerName(nextDuty.getManagerId());
item.setNextTeamLeader(managerName);
String managerPhone = this.getManagerPhone(nextDuty.getManagerId());
item.setNextTeamLeaderPhone(managerPhone);
// 下一班组成员
String classMember = this.getClassMemberName(nextDuty.getDutyPersonIds(),nextDuty.getManagerId());
item.setNextClassMember(classMember);
@ -1857,6 +1861,22 @@ public class HydropowerServiceImpl implements HydropowerService {
}
/**
* 获取班组负责人电话号码
* @param managerId
* @return
*/
private String getManagerPhone(String managerId) {
if(StringUtil.isBlank(managerId)){
return "";
}
User user = UserCache.getUser(Long.valueOf(managerId));
if (ObjectUtil.isEmpty(user)) {
return "";
}
return user.getPhone();
}
/**
* 获取班组成员
* @param personIds
* @param managerId

6
hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/vo/AppAreaDutyVo.java

@ -21,6 +21,9 @@ public class AppAreaDutyVo {
@ApiModelProperty("班组长")
private String teamLeader;
@ApiModelProperty("班组长电话")
private String teamLeaderPhone;
@ApiModelProperty("班成员")
private String classMember;
@ -33,6 +36,9 @@ public class AppAreaDutyVo {
@ApiModelProperty("下一班组长")
private String nextTeamLeader;
@ApiModelProperty("下一班组长电话")
private String nextTeamLeaderPhone;
@ApiModelProperty("下一班成员")
private String nextClassMember;

13
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/feign/DangerSourceClient.java

@ -46,6 +46,19 @@ public class DangerSourceClient implements IDangerSourceClient {
}
}
@Override
@GetMapping(LIST)
public List<DangerSourceEntity> list() {
List<DangerSourceEntity> resp = service.list();
//未查到数据返回空集合
if (CollectionUtils.isEmpty(resp)) {
return new ArrayList<>();
}
return resp;
}
@GetMapping(LIST_BY_TENANT_ID)
@Override
public List<SourceVO> listByTenantId(String tenantId) {

BIN
hzims-service/ticket/lib/spire.xls.free-3.9.1.jar

Binary file not shown.

4
hzims-service/ticket/pom.xml

@ -17,7 +17,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<!-- <poi.version>3.17</poi.version>-->
<!-- <poi.version>3.17</poi.version>-->
<easypoi.version>3.2.0</easypoi.version>
<documents4j.version>1.0.3</documents4j.version>
<swagger-bootstrap-ui.version>1.9.6</swagger-bootstrap-ui.version>
@ -68,6 +68,8 @@
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>3.9.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/spire.xls.free-3.9.1.jar</systemPath>
</dependency>
<!--easypoi-->

4
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/OperationTicketServiceImpl.java

@ -401,10 +401,10 @@ public class OperationTicketServiceImpl implements OperationTicketService {
result = "DZ";
break;
case "4":
result = type;
result = "KJ";
break;
case "5":
result = type;
result = "TJ";
break;
default:
result = "DZ";

165
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/FirstWorkTicketServiceImpl.java

@ -79,7 +79,7 @@ import java.util.stream.IntStream;
@Slf4j
@RequiredArgsConstructor
public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMapper, WorkTicketInfoEntity>
implements IFirstWorkTicketService {
implements IFirstWorkTicketService {
private final IWorkTicketSafetyMeasureService workTicketSafetyMeasureService;
private final IOperAccessTaskClient operAccessTaskClient;
@ -132,9 +132,9 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
public R billing(WorkTicketInfoDto dto) {
dto.setCode(this.generateCode());
dto.setStatus(Func.isEmpty(dto.getPrincipal())
|| Func.isEmpty(dto.getClassGroupMembers()) ?
WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_OPERATE.getStatus() :
WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus());
|| Func.isEmpty(dto.getClassGroupMembers()) ?
WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_OPERATE.getStatus() :
WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus());
if(this.save(dto)) {
//保存详情表
this.saveDetail(dto);
@ -166,7 +166,7 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
completeTask.setProcessInstanceId(dto.getProcessInstanceId());
//获取工作流任务
String taskId = flowClient.getTaskByProcessInstanceIdAndUserId(
dto.getProcessInstanceId(),userId).getData().getTaskId();
dto.getProcessInstanceId(),userId).getData().getTaskId();
completeTask.setTaskId(taskId);
completeTask.setComment("签发人签发通过");
Map<String,Object> variables = new HashMap<>(3);
@ -187,8 +187,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
if(WorkTicketConstants.FirstWorkTicketStatusEnum.SIGN.getStatus().equals(dto.getStatus())) {
//获取签发人角色下的人员
R<List<User>> listR = userClient.relationUserListByRoleAlias(
AuthUtil.getTenantId(),Long.parseLong(AuthUtil.getUser().getDeptId()),
TicketConstants.SIGNER_ROLE);
AuthUtil.getTenantId(),Long.parseLong(AuthUtil.getUser().getDeptId()),
TicketConstants.SIGNER_ROLE);
if(!listR.isSuccess() || CollectionUtil.isEmpty(listR.getData())){
throw new ServiceException("工作票签发人角色下未查询到相关人员");
}
@ -197,17 +197,17 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
put("signUserIds", AuthUtil.getUserId());
}};
R<BladeFlow> result = flowClient
.startProcessInstanceContainNameByKey(newFirstWorkTicketFlowKey,"workTicket:task:" + dto.getId(),
dto.getWorkContent(),
params);
.startProcessInstanceContainNameByKey(newFirstWorkTicketFlowKey,"workTicket:task:" + dto.getId(),
dto.getWorkContent(),
params);
Assert.isTrue(result.isSuccess(),()-> {
throw new ServiceException("开启工作票工作流失败!");
});
dto.setProcessInstanceId(result.getData().getProcessInstanceId());
//保存工作流实例ID
this.update(Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getProcessInstanceId,result.getData().getProcessInstanceId())
.eq(WorkTicketInfoEntity::getId,dto.getId()));
.set(WorkTicketInfoEntity::getProcessInstanceId,result.getData().getProcessInstanceId())
.eq(WorkTicketInfoEntity::getId,dto.getId()));
}
}
@ -219,24 +219,24 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
//保存安全措施
if(CollectionUtil.isNotEmpty(dto.getWorkTicketSafetyMeasureDtoList())) {
List<WorkTicketSafetyMeasureEntity> measureEntityList =
dto.getWorkTicketSafetyMeasureDtoList().stream().map(measure -> {
WorkTicketSafetyMeasureEntity measureEntity =
BeanUtil.copy(measure, WorkTicketSafetyMeasureEntity.class);
measureEntity.setTicketId(dto.getId());
return measureEntity;
}).collect(Collectors.toList());
dto.getWorkTicketSafetyMeasureDtoList().stream().map(measure -> {
WorkTicketSafetyMeasureEntity measureEntity =
BeanUtil.copy(measure, WorkTicketSafetyMeasureEntity.class);
measureEntity.setTicketId(dto.getId());
return measureEntity;
}).collect(Collectors.toList());
workTicketSafetyMeasureService.saveBatch(measureEntityList);
}
//保存工作任务
if(CollectionUtil.isNotEmpty(dto.getWorkTicketContentDtoList())) {
List<WorkTicketContentEntity> contentEntities = dto.getWorkTicketContentDtoList()
.stream()
.map(contentDto -> {
WorkTicketContentEntity contentEntity =
BeanUtil.copy(contentDto, WorkTicketContentEntity.class);
contentEntity.setTicketId(dto.getId());
return contentEntity;
}).collect(Collectors.toList());
.stream()
.map(contentDto -> {
WorkTicketContentEntity contentEntity =
BeanUtil.copy(contentDto, WorkTicketContentEntity.class);
contentEntity.setTicketId(dto.getId());
return contentEntity;
}).collect(Collectors.toList());
contentService.saveBatch(contentEntities);
}
}
@ -291,7 +291,7 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
//流程进行下一步必要参数判断
Map<String,Object> variable = comleteTask.getVariables();
Assert.isTrue(CollectionUtil.isNotEmpty(variable) && Func.isNotEmpty(variable.get(TICKET_ID))
&& Func.isNotEmpty(variable.get("ticketStatus")),()->{
&& Func.isNotEmpty(variable.get("ticketStatus")),()->{
throw new ServiceException("完成当前流程必须要传入ticketId&ticketStatus");
});
WorkTicketConstants.FirstWorkTicketStatusEnum statusEnum = WorkTicketConstants.FirstWorkTicketStatusEnum.getEnumByStatus(Integer.parseInt(variable.get(TICKET_STATUS).toString()));
@ -334,6 +334,9 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
@Override
public R<WorkTicketInfoVO> detail(Long id) {
WorkTicketInfoEntity entity = this.getById(id);
if(entity==null){
return R.fail("票据不存在");
}
WorkTicketInfoVO workTicketInfoVO = WorkTicketInfoWrapper.build().entityVO(entity);
//获取工作票安全措施列表
@ -409,9 +412,9 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.set(WorkTicketInfoEntity::getSigner,AuthUtil.getUserId())
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.set(WorkTicketInfoEntity::getSigner,AuthUtil.getUserId())
.eq(WorkTicketInfoEntity::getId,ticketId);
if(this.update(luw)){
//将下一步骤收到工作票所需值班负责人赋入工作流
WorkTicketInfoEntity entity = this.getById(ticketId);
@ -437,9 +440,9 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS);
//更新工作票状态 更新工作票值班负责人
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getPrincipal,AuthUtil.getUserId())
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getPrincipal,AuthUtil.getUserId())
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
//创建流程信息
WorkTicketFlowEntity flowEntity = new WorkTicketFlowEntity();
flowEntity.setFlowCode(ticketStatus.toString());
@ -483,16 +486,16 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
});
//更新工作票状态 更新工作票许可人
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getLicensor,AuthUtil.getUserId())
.set(WorkTicketInfoEntity::getLicenseTime, LocalDateTime.now())
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getLicensor,AuthUtil.getUserId())
.set(WorkTicketInfoEntity::getLicenseTime, LocalDateTime.now())
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS,TICKET_MEASURES);
if(this.update(luw) && workTicketSafetyMeasureService.updateBatchById(measureEntityList)) {
//将下一步骤收到工作票所需工作负责人及组员赋入工作流
WorkTicketInfoEntity entity = this.getById(ticketId);
String taskUser = Arrays.stream((entity.getPrincipal()+","+entity.getClassGroupMembers()).split(","))
.map(u->"taskUser_"+u).collect(Collectors.joining(","));
.map(u->"taskUser_"+u).collect(Collectors.joining(","));
variable.put("principalUserIds",taskUser);
comleteTask.setVariables(variable);
//完成工作流
@ -535,8 +538,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
});
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
if(this.update(luw) && workTicketSafetyMeasureService.updateBatchById(measureEntityList)) {
//将下一步骤收到工作票所需工作负责人赋入工作流
WorkTicketInfoEntity entity = this.getById(ticketId);
@ -565,11 +568,11 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS,CONFIRM_IMG_URLS,CONFIRM_IMG_FILENAMES);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.set(WorkTicketInfoEntity::getConfirmImgUrls,confirmImgUrls)
.set(WorkTicketInfoEntity::getConfirmImgFilenames,confirmImgFilenames)
.set(WorkTicketInfoEntity::getConfirmWorkTime,now)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.set(WorkTicketInfoEntity::getConfirmImgUrls,confirmImgUrls)
.set(WorkTicketInfoEntity::getConfirmImgFilenames,confirmImgFilenames)
.set(WorkTicketInfoEntity::getConfirmWorkTime,now)
.eq(WorkTicketInfoEntity::getId,ticketId);
if(this.update(luw)) {
WorkTicketInfoEntity entity = this.getById(ticketId);
variable.put("licenseUserIds","taskUser_"+entity.getLicensor().toString());
@ -595,9 +598,9 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS,LICENSE_END_TIME);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.set(WorkTicketInfoEntity::getLicenseEndTime,licenseEndTime)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.set(WorkTicketInfoEntity::getLicenseEndTime,licenseEndTime)
.eq(WorkTicketInfoEntity::getId,ticketId);
//许可人确认工作结束需上传图片 创建流程信息
String licenseImgUrls = (String) variable.get(LICENSE_IMG_URLS);
@ -635,8 +638,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS,LICENSE_END_TIME);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
//创建流程信息
WorkTicketFlowEntity workTicketFlowEntity = new WorkTicketFlowEntity();
workTicketFlowEntity.setTicketId(ticketId);
@ -685,8 +688,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS,TICKET_DELAY);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
if(this.update(luw) && workTicketDelayService.saveOrUpdate(delayEntity)) {
//完成工作流
WorkTicketInfoEntity entity = this.getById(ticketId);
@ -717,8 +720,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS,TICKET_DELAY);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
if(this.update(luw) && workTicketDelayService.updateById(delayEntity)) {
//完成工作流
WorkTicketInfoEntity entity = this.getById(ticketId);
@ -748,8 +751,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS,TICKET_DELAY);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
if(this.update(luw) && workTicketDelayService.updateById(delayEntity)) {
//完成工作流
comleteTask.setVariables(variable);
@ -773,8 +776,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
variable = this.excludeProperties(comleteTask.getVariables(),TICKET_ID,TICKET_STATUS);
//更新工作票状态
LambdaUpdateWrapper<WorkTicketInfoEntity> luw = Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
.set(WorkTicketInfoEntity::getStatus,ticketStatus)
.eq(WorkTicketInfoEntity::getId,ticketId);
WorkTicketInfoEntity entity = this.getById(ticketId);
if(this.update(luw)) {
//完成工作流
@ -792,10 +795,10 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
configEntity.setPushers(entity.getCreateUser().toString());
SimpleDateFormat sdf = new SimpleDateFormat(DateUtil.PATTERN_DATETIME);
configEntity.setContent("【"
+ entity.getWorkContent() + "】于"
+ sdf.format(new Date()) + "被"
+ userName
+ "作废;作废理由为:" + comment);
+ entity.getWorkContent() + "】于"
+ sdf.format(new Date()) + "被"
+ userName
+ "作废;作废理由为:" + comment);
messageConfigClient.pushAppMessageByConfig(configEntity);
},"messagePush").start();
}
@ -836,11 +839,11 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
throw new ServiceException("当前操作人没有许可人角色,无法执行该操作");
}
update(Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus, WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_LICENSE.getStatus())
.set(WorkTicketInfoEntity::getLicensor,AuthUtil.getUserId())
.set(WorkTicketInfoEntity::getLicenseTime,LocalDateTime.now())
.set(WorkTicketInfoEntity::getLicenseEndTime,req.getLicenseEndTime())
.eq(WorkTicketInfoEntity::getId,ticketId)
.set(WorkTicketInfoEntity::getStatus, WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_LICENSE.getStatus())
.set(WorkTicketInfoEntity::getLicensor,AuthUtil.getUserId())
.set(WorkTicketInfoEntity::getLicenseTime,LocalDateTime.now())
.set(WorkTicketInfoEntity::getLicenseEndTime,req.getLicenseEndTime())
.eq(WorkTicketInfoEntity::getId,ticketId)
);
//添加流程信息
WorkTicketFlowEntity flowEntity = new WorkTicketFlowEntity();
@ -862,8 +865,8 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
//更新工作票
WorkTicketInfoDto infoDto = ticketAccessTaskDto.getWorkTicketInfoDto();
update(Wrappers.<WorkTicketInfoEntity>lambdaUpdate()
.set(WorkTicketInfoEntity::getStatus,WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_END.getStatus())
.eq(WorkTicketInfoEntity::getId,infoDto.getId())
.set(WorkTicketInfoEntity::getStatus,WorkTicketConstants.FirstWorkTicketStatusEnum.OFFLINE_END.getStatus())
.eq(WorkTicketInfoEntity::getId,infoDto.getId())
);
//获取工作票实体类
WorkTicketInfoEntity infoEntity = getById(infoDto.getId());
@ -898,29 +901,29 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
if(CollectionUtil.isNotEmpty(workTicketReportStatistic)) {
// 工作票完成数量
int ticketInfoCompleteNum = workTicketReportStatistic.stream().filter(
ticket-> WorkTicketConstants.FirstWorkTicketStatusEnum.FINISH.getStatus().equals(ticket.getStatus())
ticket-> WorkTicketConstants.FirstWorkTicketStatusEnum.FINISH.getStatus().equals(ticket.getStatus())
).collect(Collectors.toList()).size();
// 工作票未完成数量
int ticketInfoStartNum = workTicketReportStatistic.size() - ticketInfoCompleteNum;
// 延期数量统计
int ticketInfoDelayNum = workTicketReportStatistic.stream().filter(ticket -> Func.isNotEmpty(ticket.getDelayId()))
.collect(Collectors.toList()).size();
.collect(Collectors.toList()).size();
// 合格数量统计
int ticketInfoQualifiedNum = workTicketReportStatistic.stream().filter(ticket -> Func.isNotEmpty(ticket.getEvaluation()) && ticket.getEvaluation().intValue() == 1)
.collect(Collectors.toList()).size();
.collect(Collectors.toList()).size();
//计算合格率
Double ticketInfoProportion = new BigDecimal(ticketInfoQualifiedNum / (double) workTicketReportStatistic.size() *100)
.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
.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();
.ticketInfoType("工作票")
.ticketInfoNumber(workTicketReportStatistic.size())
.ticketInfoCompleteNum(ticketInfoCompleteNum)
.ticketInfoStartNum(ticketInfoStartNum)
.ticketInfoDelayNum(ticketInfoDelayNum)
.ticketInfoQualifiedNum(ticketInfoQualifiedNum)
.ticketInfoProportion(ticketInfoProportion)
.build();
}
return workTicketStatistic;
}
@ -934,7 +937,7 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
//安全措施
if(CollectionUtil.isNotEmpty(infoVO.getWorkTicketSafetyMeasureVOList())){
Map<String,List<WorkTicketSafetyMeasureVO>> measureMap = infoVO.getWorkTicketSafetyMeasureVOList().stream()
.collect(Collectors.groupingBy(WorkTicketSafetyMeasureVO::getType));
.collect(Collectors.groupingBy(WorkTicketSafetyMeasureVO::getType));
Arrays.stream(WorkTicketConstants.WorkTicketMeasureTypeEnum.class.getEnumConstants()).forEach(measureEnum->{
if(CollectionUtil.isNotEmpty(measureMap.get(measureEnum.getType()))) {
List<Map<String,Object>> mapList = measureMap.get(measureEnum.getType()).stream().map(measureVO->{

Loading…
Cancel
Save