Browse Source

Merge remote-tracking branch 'origin/master'

zhongwei
yang_shj 1 year ago
parent
commit
7358ff6eb1
  1. 36
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamBackupsDTO.java
  2. 15
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamBackupsDetailDTO.java
  3. 42
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamDTO.java
  4. 37
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamDistributeDTO.java
  5. 54
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/entity/ParamBackupsDetailEntity.java
  6. 41
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/entity/ParamBackupsEntity.java
  7. 63
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/entity/ParamModelEntity.java
  8. 1
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/note.md
  9. 15
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamBackupsDetailVO.java
  10. 20
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamBackupsVO.java
  11. 21
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamGroupVO.java
  12. 22
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamTreeVO.java
  13. 64
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamVO.java
  14. 27
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/RealDataVO.java
  15. 26
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/wrapper/ParamBackupsDetailWrapper.java
  16. 21
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/wrapper/ParamBackupsWrapper.java
  17. 11
      hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmInfoEntity.java
  18. 2
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/fill/vo/QueryVo.java
  19. 4
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/constant/MainConstants.java
  20. 67
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/controller/ParamBackupsController.java
  21. 39
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/controller/ParamController.java
  22. 8
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/mapper/ParamBackupsDetailMapper.java
  23. 9
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/mapper/ParamBackupsMapper.java
  24. 10
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/mapper/ParamModelMapper.java
  25. 1
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/note.md
  26. 8
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamBackupsDetailService.java
  27. 30
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamBackupsService.java
  28. 7
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamModelService.java
  29. 13
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamService.java
  30. 18
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamBackupsDetailServiceImpl.java
  31. 90
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamBackupsServiceImpl.java
  32. 17
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamModelServiceImpl.java
  33. 166
      hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamServiceImpl.java
  34. 46
      hzims-service/equipment/src/main/resources/db/1.0.1.sql
  35. 14
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StorageMapper.java
  36. 11
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/WindMapper.java
  37. 30
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/RealTargetScheduledTask.java
  38. 35
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/ReportScheduledTask.java
  39. 20
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/StorageService.java
  40. 15
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/WindService.java
  41. 51
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/impl/StorageServiceImpl.java
  42. 52
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/impl/WindServiceImpl.java
  43. 1
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/RealTargetService.java
  44. 76
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java
  45. 1
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/report/ReportService.java
  46. 39
      hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/report/impl/ReportServiceImpl.java
  47. 4
      hzims-service/hzims-scheduled/src/main/resources/mapper/operation/StorageMapper.xml
  48. 5
      hzims-service/hzims-scheduled/src/main/resources/mapper/operation/WindMapper.xml
  49. 6
      hzims-service/message/src/main/java/com/hnac/hzims/message/controller/MessagePushRecordController.java
  50. 10
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/DefectCheckServiceImpl.java
  51. 11
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/controller/GenerateController.java
  52. 6
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/GenerateService.java
  53. 27
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/impl/GenerateServiceImpl.java
  54. 35
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AreaMonthReportController.java
  55. 5
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IAreaMonthReportService.java
  56. 137
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java
  57. 4
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/OperMaintenanceTaskServiceImpl.java
  58. 85
      hzims-service/operational/src/main/resources/files/消缺处理流程.bpmn20.xml
  59. 118
      hzims-service/operational/src/main/resources/files/隐患排查治理流程.bpmn20.xml
  60. 2
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/OfflineTicketServiceImpl.java
  61. 2
      pom.xml

36
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamBackupsDTO.java

@ -0,0 +1,36 @@
package com.hnac.hzims.emParam.dto;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel("下发参数备份DTO对象")
@EqualsAndHashCode
public class ParamBackupsDTO extends ParamBackupsEntity implements Serializable {
@ApiModelProperty("开始时间")
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
private LocalDateTime startTime;
@ApiModelProperty("结束时间")
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
private LocalDateTime endTime;
@ApiModelProperty("参数备份详情列表")
private List<ParamBackupsDetailDTO> details;
}

15
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamBackupsDetailDTO.java

@ -0,0 +1,15 @@
package com.hnac.hzims.emParam.dto;
import com.hnac.hzims.emParam.entity.ParamBackupsDetailEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@ApiModel("下发参数备份详情DTO对象")
@EqualsAndHashCode
public class ParamBackupsDetailDTO extends ParamBackupsDetailEntity implements Serializable {
}

42
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamDTO.java

@ -0,0 +1,42 @@
package com.hnac.hzims.emParam.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@ApiModel("下发参数")
@Data
@EqualsAndHashCode
public class ParamDTO implements Serializable {
@ApiModelProperty("参数名称")
private String name;
@ApiModelProperty("标识")
private String signage;
@ApiModelProperty("关联设备")
private String facDeviceId;
@ApiModelProperty("hz3000关联id")
private String facDeviceFuncId;
@ApiModelProperty("参数标识")
private String parameterTag;
@ApiModelProperty("参数名称")
private String parameterName;
@ApiModelProperty("值")
private String value;
@ApiModelProperty("最大值")
private String maxValue;
@ApiModelProperty("最小值")
private String minValue;
}

37
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/dto/ParamDistributeDTO.java

@ -0,0 +1,37 @@
package com.hnac.hzims.emParam.dto;
import com.hnac.hzims.emParam.vo.ParamVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
@ApiModel("参数下发请求体")
@Data
@EqualsAndHashCode
public class ParamDistributeDTO implements Serializable {
@ApiModelProperty("站点编号")
@NotBlank
private String stationCode;
@ApiModelProperty("设备编码")
@NotBlank
private String emCode;
@ApiModelProperty("是否延迟发布")
private Boolean delay;
@ApiModelProperty("机器码")
@NotBlank
private String machineCode;
@ApiModelProperty("参数列表")
@NotBlank
private List<ParamDTO> paramList;
}

54
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/entity/ParamBackupsDetailEntity.java

@ -0,0 +1,54 @@
package com.hnac.hzims.emParam.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.support.QueryField;
import org.springblade.core.mp.support.SqlCondition;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serializable;
@Data
@ApiModel("下发参数备份详情表")
@TableName("HZIMS_PARAM_BACKUPS_DETAIL")
@EqualsAndHashCode
public class ParamBackupsDetailEntity extends TenantEntity implements Serializable {
@ApiModelProperty("备份主表ID")
private Long backupsId;
@ApiModelProperty("参数名称")
@QueryField(condition = SqlCondition.LIKE)
private String name;
@ApiModelProperty("标识")
@QueryField(condition = SqlCondition.LIKE)
private String signage;
@ApiModelProperty("关联设备")
private String facDeviceId;
@ApiModelProperty("hz3000关联id")
private String facDeviceFuncId;
@ApiModelProperty("参数标识")
@QueryField(condition = SqlCondition.LIKE)
private String parameterTag;
@ApiModelProperty("参数名称")
@QueryField(condition = SqlCondition.LIKE)
private String parameterName;
@ApiModelProperty("值")
private String value;
@ApiModelProperty("最大值")
private String maxValue;
@ApiModelProperty("最小值")
private String minValue;
}

41
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/entity/ParamBackupsEntity.java

@ -0,0 +1,41 @@
package com.hnac.hzims.emParam.entity;
import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.support.QueryField;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serializable;
@Data
@ApiModel("下发参数备份表")
@TableName("hzims_param_backups")
@EqualsAndHashCode
public class ParamBackupsEntity extends TenantEntity implements Serializable {
@ApiModelProperty("备份名称")
@QueryField(condition = SqlCondition.LIKE)
private String name;
@ApiModelProperty("站点编号")
@QueryField(condition = SqlCondition.EQUAL)
private String stationCode;
@ApiModelProperty("设备编号")
@QueryField(condition = SqlCondition.EQUAL)
private String emCode;
@ApiModelProperty("是否延迟发布")
@QueryField(condition = SqlCondition.EQUAL)
private Boolean delay;
@ApiModelProperty("机器码")
@QueryField(condition = SqlCondition.EQUAL)
private String machineCode;
}

63
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/entity/ParamModelEntity.java

@ -0,0 +1,63 @@
package com.hnac.hzims.emParam.entity;
import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.support.QueryField;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serializable;
@ApiModel("HZ100C参数模板实体类")
@EqualsAndHashCode
@Data
@TableName("HZIMS_EM_PARAM_MODEL")
public class ParamModelEntity extends TenantEntity implements Serializable {
@ApiModelProperty("编号")
@QueryField(condition = SqlCondition.LIKE)
private String code;
@ApiModelProperty("名称")
@QueryField(condition = SqlCondition.LIKE)
private String name;
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("小数位")
private Integer decimalDigit;
@ApiModelProperty("最大值")
private Double maxValue;
@ApiModelProperty("最小值")
private Double minValue;
@ApiModelProperty("宽度")
private Double width;
@ApiModelProperty("类型")
@QueryField(condition = SqlCondition.EQUAL)
private Integer type;
@ApiModelProperty("数据类型")
@QueryField(condition = SqlCondition.EQUAL)
private Integer dataType;
@ApiModelProperty("地址")
private Integer address;
@ApiModelProperty("起始位")
private Integer initDigital;
@ApiModelProperty("所在显示组")
private Integer group;
@ApiModelProperty("注释")
private String remark;
}

1
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/note.md

@ -0,0 +1 @@
### HZ100C 参数下发功能

15
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamBackupsDetailVO.java

@ -0,0 +1,15 @@
package com.hnac.hzims.emParam.vo;
import com.hnac.hzims.emParam.entity.ParamBackupsDetailEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@ApiModel("下发参数备份详情VO对象")
@EqualsAndHashCode
public class ParamBackupsDetailVO extends ParamBackupsDetailEntity implements Serializable {
}

20
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamBackupsVO.java

@ -0,0 +1,20 @@
package com.hnac.hzims.emParam.vo;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel("下发参数备份VO对象")
@EqualsAndHashCode
public class ParamBackupsVO extends ParamBackupsEntity implements Serializable {
@ApiModelProperty("下发参数备份参数列表")
private List<ParamBackupsDetailVO> detailList;
}

21
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamGroupVO.java

@ -0,0 +1,21 @@
package com.hnac.hzims.emParam.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@ApiModel("HZ100C参数分组VO")
@EqualsAndHashCode
public class ParamGroupVO implements Serializable {
@ApiModelProperty("参数分组ID")
private String groupId;
@ApiModelProperty("参数分组名称")
private String groupName;
}

22
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamTreeVO.java

@ -0,0 +1,22 @@
package com.hnac.hzims.emParam.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel("HZ100C参数树VO")
@EqualsAndHashCode
public class ParamTreeVO implements Serializable {
@ApiModelProperty("参数分组")
private ParamGroupVO paramGroup;
@ApiModelProperty("参数列表")
private List<ParamVO> paramList;
}

64
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/ParamVO.java

@ -0,0 +1,64 @@
package com.hnac.hzims.emParam.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @ClassName ParamVO
* @description:
* @author: hx
* @create: 2023-10-17 14:13
* @Version 4.0
**/
@Data
@ApiModel("HZ100C参数VO")
@EqualsAndHashCode
public class ParamVO implements Serializable {
@ApiModelProperty("参数名称")
private String name;
@ApiModelProperty("标识")
private String signage;
@ApiModelProperty("关联设备")
private String facDeviceId;
@ApiModelProperty("hz3000关联id")
private String facDeviceAttrId;
@ApiModelProperty("参数标识")
private String parameterTag;
@ApiModelProperty("参数名称")
private String parameterName;
@ApiModelProperty("是否只读")
private Integer isReadOnly;
@ApiModelProperty("数据类型")
private String dbType;
@ApiModelProperty("参数分组")
private Long modelClassifyId;
@ApiModelProperty("参数分组名称")
private String modelClassifyName;
@ApiModelProperty("单位")
private String units;
@ApiModelProperty("值")
private String value;
@ApiModelProperty("最大值")
private String maxValue;
@ApiModelProperty("最小值")
private String minValue;
}

27
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/vo/RealDataVO.java

@ -0,0 +1,27 @@
package com.hnac.hzims.emParam.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@Data
@ApiModel("实时数据VO对象")
@EqualsAndHashCode
public class RealDataVO implements Serializable {
@ApiModelProperty("采集点ID")
private String realId;
@ApiModelProperty("采集点实时数据")
private String value;
@ApiModelProperty("采集点时间")
private String time;
@ApiModelProperty("有效值")
private String q;
}

26
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/wrapper/ParamBackupsDetailWrapper.java

@ -0,0 +1,26 @@
package com.hnac.hzims.emParam.wrapper;
import com.hnac.hzims.emParam.entity.ParamBackupsDetailEntity;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import com.hnac.hzims.emParam.vo.ParamBackupsDetailVO;
import com.hnac.hzims.emParam.vo.ParamBackupsVO;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
/**
* @ClassName ParamBackupsDetailWrapper
* @description:
* @author: hx
* @create: 2023-10-17 17:07
* @Version 4.0
**/
public class ParamBackupsDetailWrapper extends BaseEntityWrapper<ParamBackupsDetailEntity, ParamBackupsDetailVO> {
public static ParamBackupsDetailWrapper build() {
return new ParamBackupsDetailWrapper();
}
@Override
public ParamBackupsDetailVO entityVO(ParamBackupsDetailEntity entity) {
ParamBackupsDetailVO vo = BeanUtil.copy(entity, ParamBackupsDetailVO.class);
return vo;
}
}

21
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/emParam/wrapper/ParamBackupsWrapper.java

@ -0,0 +1,21 @@
package com.hnac.hzims.emParam.wrapper;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import com.hnac.hzims.emParam.vo.ParamBackupsVO;
import org.apache.ibatis.reflection.wrapper.BaseWrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.utils.BeanUtil;
public class ParamBackupsWrapper extends BaseEntityWrapper<ParamBackupsEntity,ParamBackupsVO> {
public static ParamBackupsWrapper build() {
return new ParamBackupsWrapper();
}
@Override
public ParamBackupsVO entityVO(ParamBackupsEntity entity) {
ParamBackupsVO vo = BeanUtil.copy(entity,ParamBackupsVO.class);
return vo;
}
}

11
hzims-service-api/equipment-api/src/main/java/com/hnac/hzims/equipment/entity/EmInfoEntity.java

@ -17,6 +17,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -191,14 +192,14 @@ public class EmInfoEntity extends TenantEntity {
*/ */
@ApiModelProperty(value = "经度(东经)") @ApiModelProperty(value = "经度(东经)")
@JsonSerialize(nullsUsing = NullSerializer.class) @JsonSerialize(nullsUsing = NullSerializer.class)
@NotNull //@NotNull
private BigDecimal lgtd; private BigDecimal lgtd;
/** /**
* 纬度(北纬) * 纬度(北纬)
*/ */
@ApiModelProperty(value = "纬度(北纬)") @ApiModelProperty(value = "纬度(北纬)")
@JsonSerialize(nullsUsing = NullSerializer.class) @JsonSerialize(nullsUsing = NullSerializer.class)
@NotNull //@NotNull
private BigDecimal lttd; private BigDecimal lttd;
/** /**
* 主要部件及附属设备 * 主要部件及附属设备
@ -249,4 +250,10 @@ public class EmInfoEntity extends TenantEntity {
@TableField(exist = false) @TableField(exist = false)
private List<EmInfoEntity> infoChildren; private List<EmInfoEntity> infoChildren;
@ApiModelProperty("最后下发时间")
private LocalDateTime lastDistributeTime;
@ApiModelProperty("机组类别")
private String setCategory;
} }

2
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/fill/vo/QueryVo.java

@ -3,8 +3,6 @@ package com.hnac.hzims.operational.fill.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* @author ysj * @author ysj
* @date 2023/04/10 11:16:07 * @date 2023/04/10 11:16:07

4
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/main/constant/MainConstants.java

@ -48,6 +48,8 @@ public interface MainConstants {
// 近年发电量 // 近年发电量
String ELECTRICITY_GENERATION_RECENT_YEAR = "electricityGenerationRecentYear"; String ELECTRICITY_GENERATION_RECENT_YEAR = "electricityGenerationRecentYear";
// 風電儲能近年发电量
String WIND_POWER_GENERATION_RECENT_YEAR = "windPowerGenerationRecentYear";
// 区域值班信息 // 区域值班信息
String REGIONAL_DUTY_INFO = "regionalDutyInfo"; String REGIONAL_DUTY_INFO = "regionalDutyInfo";
@ -57,6 +59,8 @@ public interface MainConstants {
// 区域月报 // 区域月报
String AREA_MONTH_REPORT = "areaMonthReport"; String AREA_MONTH_REPORT = "areaMonthReport";
String WIND_AREA_MONTH_REPORT = "windAreaMonthReport";
String ENERGY_AREA_MONTH_REPORT = "energyAreaMonthReport";
// 站点数据统计 // 站点数据统计
String STATION_DATA_COUNT = "stationDataCount"; String STATION_DATA_COUNT = "stationDataCount";

67
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/controller/ParamBackupsController.java

@ -0,0 +1,67 @@
package com.hnac.hzims.emParam.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.common.utils.Condition;
import com.hnac.hzims.emParam.dto.ParamBackupsDTO;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import com.hnac.hzims.emParam.service.IParamBackupsService;
import com.hnac.hzims.emParam.vo.ParamBackupsVO;
import com.hnac.hzims.emParam.wrapper.ParamBackupsWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/emParam/backups")
@Api(value = "HZ100C参数下发备份管理",tags = "HZ100C参数下发备份管理")
@AllArgsConstructor
public class ParamBackupsController extends BladeController {
private final IParamBackupsService paramBackupsService;
@GetMapping("/listPage")
@ApiOperation("分页查询")
@ApiOperationSupport(order = 1)
public R<IPage> listPage(ParamBackupsDTO request, Query query) {
IPage page = paramBackupsService.page(Condition.getPage(query),paramBackupsService.getQueryWrapper(request));
page.setRecords(ParamBackupsWrapper.build().listVO(page.getRecords()));
return R.data(page);
}
@DeleteMapping("/remove/{ids}")
@ApiOperation("删除备份")
@ApiOperationSupport(order = 2)
public R remove(@PathVariable @ApiParam("主键,按,分隔") String ids) {
return R.status(paramBackupsService.removeByIds(Func.toLongList(",",ids)));
}
@PostMapping("/save")
@ApiOperation("新增")
@ApiOperationSupport(order = 3)
public R save(@RequestBody ParamBackupsDTO request) {
return R.status(paramBackupsService.save(request));
}
@GetMapping("/detail/{id}")
@ApiOperation("查看详情")
@ApiOperationSupport(order = 4)
public R<ParamBackupsVO> detail(@PathVariable @ApiParam("主键") Long id) {
return R.data(paramBackupsService.detail(id));
}
@PutMapping("/updateById")
@ApiOperation("编辑")
@ApiOperationSupport(order = 5)
public R updateById(@RequestBody ParamBackupsDTO request) {
return R.status(paramBackupsService.updateById(request));
}
}

39
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/controller/ParamController.java

@ -0,0 +1,39 @@
package com.hnac.hzims.emParam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.emParam.dto.ParamDistributeDTO;
import com.hnac.hzims.emParam.service.IParamService;
import com.hnac.hzims.emParam.vo.ParamTreeVO;
import com.hnac.hzinfo.sdk.core.response.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RequestMapping("/param")
@AllArgsConstructor
@RestController
@Api(value = "参数下发管理",tags = "参数下发管理")
public class ParamController extends BladeController {
private final IParamService paramService;
@GetMapping("/recall")
@ApiOperation("召回参数")
@ApiOperationSupport(order = 1)
public R<List<ParamTreeVO>> recall(String emCode, String stationCode) {
return R.data(paramService.recall(emCode,stationCode));
}
@PostMapping("/distribute")
@ApiOperation("下发参数")
@ApiOperationSupport(order = 2)
public Result<Object> distribute(@RequestBody ParamDistributeDTO req) {
return paramService.distribute(req);
}
}

8
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/mapper/ParamBackupsDetailMapper.java

@ -0,0 +1,8 @@
package com.hnac.hzims.emParam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.emParam.entity.ParamBackupsDetailEntity;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
public interface ParamBackupsDetailMapper extends BaseMapper<ParamBackupsDetailEntity> {
}

9
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/mapper/ParamBackupsMapper.java

@ -0,0 +1,9 @@
package com.hnac.hzims.emParam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import org.apache.ibatis.reflection.wrapper.BaseWrapper;
public interface ParamBackupsMapper extends BaseMapper<ParamBackupsEntity> {
}

10
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/mapper/ParamModelMapper.java

@ -0,0 +1,10 @@
package com.hnac.hzims.emParam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.emParam.entity.ParamModelEntity;
public interface ParamModelMapper extends BaseMapper<ParamModelEntity> {
}

1
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/note.md

@ -0,0 +1 @@
### HZ100C 参数下发功能

8
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamBackupsDetailService.java

@ -0,0 +1,8 @@
package com.hnac.hzims.emParam.service;
import com.hnac.hzims.emParam.entity.ParamBackupsDetailEntity;
import org.springblade.core.mp.base.BaseService;
public interface IParamBackupsDetailService extends BaseService<ParamBackupsDetailEntity> {
}

30
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamBackupsService.java

@ -0,0 +1,30 @@
package com.hnac.hzims.emParam.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hnac.hzims.common.utils.Condition;
import com.hnac.hzims.emParam.dto.ParamBackupsDTO;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import com.hnac.hzims.emParam.vo.ParamBackupsVO;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.RequestBody;
public interface IParamBackupsService extends BaseService<ParamBackupsEntity> {
Boolean save(ParamBackupsDTO request);
ParamBackupsVO detail(Long id);
Boolean updateById(ParamBackupsDTO request);
default LambdaQueryWrapper<ParamBackupsEntity> getQueryWrapper(ParamBackupsDTO request) {
ParamBackupsEntity paramBackupsEntity = BeanUtil.copy(request, ParamBackupsEntity.class);
LambdaQueryWrapper<ParamBackupsEntity> queryWrapper = Condition.getQueryWrapper(ParamBackupsEntity.class, paramBackupsEntity);
queryWrapper.ge(Func.isNotEmpty(request.getStartTime()),ParamBackupsEntity::getCreateTime,request.getStartTime());
queryWrapper.le(Func.isNotEmpty(request.getEndTime()),ParamBackupsEntity::getCreateTime,request.getEndTime());
queryWrapper.orderByDesc(ParamBackupsEntity::getCreateTime);
return queryWrapper;
}
}

7
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamModelService.java

@ -0,0 +1,7 @@
package com.hnac.hzims.emParam.service;
import com.hnac.hzims.emParam.entity.ParamModelEntity;
import org.springblade.core.mp.base.BaseService;
public interface IParamModelService extends BaseService<ParamModelEntity> {
}

13
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/IParamService.java

@ -0,0 +1,13 @@
package com.hnac.hzims.emParam.service;
import com.hnac.hzims.emParam.dto.ParamDistributeDTO;
import com.hnac.hzims.emParam.vo.ParamTreeVO;
import com.hnac.hzinfo.sdk.core.response.Result;
import java.util.List;
public interface IParamService {
List<ParamTreeVO> recall(String emCode, String stationCode);
Result<Object> distribute(ParamDistributeDTO req);
}

18
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamBackupsDetailServiceImpl.java

@ -0,0 +1,18 @@
package com.hnac.hzims.emParam.service.impl;
import com.hnac.hzims.emParam.entity.ParamBackupsDetailEntity;
import com.hnac.hzims.emParam.mapper.ParamBackupsDetailMapper;
import com.hnac.hzims.emParam.service.IParamBackupsDetailService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
@Slf4j
public class ParamBackupsDetailServiceImpl extends BaseServiceImpl<ParamBackupsDetailMapper, ParamBackupsDetailEntity> implements IParamBackupsDetailService {
}

90
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamBackupsServiceImpl.java

@ -0,0 +1,90 @@
package com.hnac.hzims.emParam.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.emParam.dto.ParamBackupsDTO;
import com.hnac.hzims.emParam.entity.ParamBackupsDetailEntity;
import com.hnac.hzims.emParam.entity.ParamBackupsEntity;
import com.hnac.hzims.emParam.mapper.ParamBackupsDetailMapper;
import com.hnac.hzims.emParam.mapper.ParamBackupsMapper;
import com.hnac.hzims.emParam.service.IParamBackupsDetailService;
import com.hnac.hzims.emParam.service.IParamBackupsService;
import com.hnac.hzims.emParam.vo.ParamBackupsVO;
import com.hnac.hzims.emParam.wrapper.ParamBackupsDetailWrapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import javax.sql.rowset.serial.SerialException;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@Slf4j
public class ParamBackupsServiceImpl extends BaseServiceImpl<ParamBackupsMapper, ParamBackupsEntity> implements IParamBackupsService {
private final IParamBackupsDetailService detailService;
@Override
@Transactional
public Boolean save(ParamBackupsDTO request) {
Assert.isTrue(CollectionUtil.isNotEmpty(request.getDetails()),() -> {
throw new ServiceException("备份参数不能为空!");
});
ParamBackupsEntity paramBackupsEntity = BeanUtil.copy(request,ParamBackupsEntity.class);
if(this.save(paramBackupsEntity)) {
List<ParamBackupsDetailEntity> detailList = request.getDetails().stream()
.map(d -> BeanUtil.copy(d, ParamBackupsDetailEntity.class)).filter(Objects::nonNull)
.peek(d -> d.setBackupsId(paramBackupsEntity.getId())).collect(Collectors.toList());
Assert.isTrue(detailService.saveBatch(detailList),() -> {
throw new ServiceException("保存备份参数列表失败!");
});
return true;
}
return false;
}
@Override
public ParamBackupsVO detail(Long id) {
ParamBackupsEntity paramBackupsEntity = this.getById(id);
Assert.isTrue(Func.isNotEmpty(paramBackupsEntity),() -> {
throw new ServiceException("未查询到相关记录!");
});
ParamBackupsVO result = BeanUtil.copy(paramBackupsEntity,ParamBackupsVO.class);
LambdaQueryWrapper<ParamBackupsDetailEntity> detailQuery = Wrappers.<ParamBackupsDetailEntity>lambdaQuery().eq(ParamBackupsDetailEntity::getBackupsId, id);
List<ParamBackupsDetailEntity> detailList = detailService.list(detailQuery);
result.setDetailList(ParamBackupsDetailWrapper.build().listVO(detailList));
return result;
}
@Override
@Transactional
public Boolean updateById(ParamBackupsDTO request) {
Assert.isTrue(CollectionUtil.isNotEmpty(request.getDetails()),() -> {
throw new ServiceException("备份参数不能为空!");
});
ParamBackupsEntity paramBackupsEntity = BeanUtil.copy(request,ParamBackupsEntity.class);
if(this.updateById(paramBackupsEntity)) {
List<ParamBackupsDetailEntity> detailList = request.getDetails().stream()
.map(d -> BeanUtil.copy(d, ParamBackupsDetailEntity.class)).filter(Objects::nonNull)
.peek(d -> d.setBackupsId(paramBackupsEntity.getId())).collect(Collectors.toList());
Assert.isTrue(detailService.saveOrUpdateBatch(detailList),() -> {
throw new ServiceException("保存备份参数列表失败!");
});
return true;
}
return false;
}
}

17
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamModelServiceImpl.java

@ -0,0 +1,17 @@
package com.hnac.hzims.emParam.service.impl;
import com.hnac.hzims.emParam.entity.ParamModelEntity;
import com.hnac.hzims.emParam.mapper.ParamModelMapper;
import com.hnac.hzims.emParam.service.IParamModelService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
@Slf4j
public class ParamModelServiceImpl extends BaseServiceImpl<ParamModelMapper, ParamModelEntity> implements IParamModelService {
}

166
hzims-service/equipment/src/main/java/com/hnac/hzims/emParam/service/impl/ParamServiceImpl.java

@ -0,0 +1,166 @@
package com.hnac.hzims.emParam.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.hnac.hzims.emParam.dto.ParamDTO;
import com.hnac.hzims.emParam.dto.ParamDistributeDTO;
import com.hnac.hzims.emParam.service.IParamService;
import com.hnac.hzims.emParam.vo.ParamGroupVO;
import com.hnac.hzims.emParam.vo.ParamTreeVO;
import com.hnac.hzims.emParam.vo.ParamVO;
import com.hnac.hzims.emParam.vo.RealDataVO;
import com.hnac.hzims.equipment.entity.EmInfoEntity;
import com.hnac.hzims.equipment.service.IEmInfoService;
import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient;
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData;
import com.hnac.hzinfo.datasearch.real.po.RealDataSearchPO;
import com.hnac.hzinfo.sdk.core.response.Result;
import com.hnac.hzinfo.sdk.v5.control.ControlClient;
import com.hnac.hzinfo.sdk.v5.control.dto.ControlBatchDTO;
import com.hnac.hzinfo.sdk.v5.control.dto.Ctrl;
import com.hnac.hzinfo.sdk.v5.device.DeviceDataClient;
import com.hnac.hzinfo.sdk.v5.device.client.DeviceClient;
import com.hnac.hzinfo.sdk.v5.device.dto.DeviceDataDTO;
import com.hnac.hzinfo.sdk.v5.device.vo.DeviceInstanceAttrVO;
import com.hnac.hzinfo.sdk.v5.device.vo.DeviceInstanceFuncVO;
import com.hnac.hzinfo.sdk.v5.redis.RedisClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.log.logger.BladeLogger;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@Slf4j
public class ParamServiceImpl implements IParamService {
private final ControlClient controlClient;
private final DeviceClient deviceClient;
private final RedisClient redisClient;
private final BladeLogger logger;
private final IEmInfoService emInfoService;
private final DeviceDataClient deviceDataClient;
private final IAnalyseDataSearchClient analyseDataSearchClient;
/**
* 参数召回
* @param emCode 设备编号
* @param stationCode 站点编号
* @return 召回参数渲染对象
*/
@Override
public List<ParamTreeVO> recall(String emCode,String stationCode) {
List<ParamTreeVO> result = Lists.newArrayList();
// 获取设备物模型中是参数的属性
Result<List<DeviceInstanceAttrVO>> paramDeviceAttrR = deviceDataClient.getIsParamDeviceAttr(emCode);
Assert.isTrue(paramDeviceAttrR.isSuccess() && CollectionUtil.isNotEmpty(paramDeviceAttrR.getData()),() -> {
throw new ServiceException("获取设备实例物模型属性失败!");
});
// 获取实时数据
List<String> signageList = paramDeviceAttrR.getData().stream().map(DeviceInstanceAttrVO::getSignage).filter(StringUtil::isNotBlank).collect(Collectors.toList());
Result<DeviceDataDTO> realDataR = deviceDataClient.getDeviceRealDataByCode(emCode, signageList);
Assert.isTrue(realDataR.isSuccess(),() -> {
throw new ServiceException("参数召回获取实时数据失败");
});
Map<ParamGroupVO, List<ParamVO>> paramGroupVOListMap = paramDeviceAttrR.getData().stream().map(this::convert).collect(Collectors.groupingBy(p -> {
ParamGroupVO paramGroupVO = new ParamGroupVO();
paramGroupVO.setGroupId(String.valueOf(p.getModelClassifyId()));
paramGroupVO.setGroupName(p.getModelClassifyName());
return paramGroupVO;
}));
paramGroupVOListMap.forEach((groupVO,list) -> {
ParamTreeVO paramTreeVO = new ParamTreeVO();
paramTreeVO.setParamGroup(groupVO);
list.stream().filter(p -> realDataR.getData().getDataMap().containsKey(p.getSignage())).forEach(p -> {
String realData = JSON.toJSONString(realDataR.getData().getDataMap().get(p.getSignage()));
if("0".equals(JSONObject.parseObject(realData).getString("q"))) {
p.setValue(JSONObject.parseObject(realData).getString("v"));
}
});
paramTreeVO.setParamList(list);
result.add(paramTreeVO);
});
return result;
}
/**
* 参数下发
* @param req 下发参数
* @return 下发结果
*/
@Override
public Result<Object> distribute(ParamDistributeDTO req) {
Assert.isTrue(Func.isNotEmpty(AuthUtil.getUserId()),() -> {
throw new ServiceException("未获取到当前登录人,无法下发参数!");
});
ControlBatchDTO controlBatchDTO = new ControlBatchDTO();
controlBatchDTO.setProjectId(req.getStationCode());
controlBatchDTO.setDeviceCode(req.getEmCode());
controlBatchDTO.setDelay(req.getDelay());
controlBatchDTO.setOperator(String.valueOf(AuthUtil.getUserId()));
controlBatchDTO.setMachineCode(req.getMachineCode());
List<Ctrl> ctrl = req.getParamList().stream().map(this::convert).collect(Collectors.toList());
controlBatchDTO.setCtrls(ctrl);
log.info("{}",JSON.toJSONString(controlBatchDTO));
Result<Object> result = controlClient.batchSendToDevice(controlBatchDTO);
if(!result.isSuccess()) {
logger.error("equipment:ParamServiceImpl:distribute","下发参数传参为:"+JSON.toJSONString(controlBatchDTO)+";下发结果为:"+JSON.toJSONString(result));
return result;
}
LambdaUpdateWrapper<EmInfoEntity> updateWrapper = Wrappers.<EmInfoEntity>lambdaUpdate().set(EmInfoEntity::getLastDistributeTime, LocalDateTime.now()).eq(EmInfoEntity::getNumber, req.getEmCode());
emInfoService.update(updateWrapper);
return result;
}
/**
* 参数转换为下发参数传参格式
* @param param 参数
* @return 下发参数传参格式
*/
private Ctrl convert(ParamDTO param) {
Ctrl result = new Ctrl();
result.setSignage(param.getSignage());
Map params = new HashMap(1){{
put(param.getSignage(),param.getValue());
}};
result.setParams(params);
return result;
}
private ParamVO convert(DeviceInstanceAttrVO instanceAttrVO) {
ParamVO paramVO = BeanUtil.copy(instanceAttrVO, ParamVO.class);
paramVO.setMaxValue(String.valueOf(instanceAttrVO.getUpperLimit()));
paramVO.setMinValue(String.valueOf(instanceAttrVO.getLowerLimit()));
return paramVO;
}
/**
* 设备实例功能对象转换为参数VO对象
* @param funcVO 设备实例功能对象
* @return 参数VO对象
*/
private ParamVO convert(DeviceInstanceFuncVO funcVO) {
ParamVO paramVO = BeanUtil.copy(funcVO, ParamVO.class);
return paramVO;
}
}

46
hzims-service/equipment/src/main/resources/db/1.0.1.sql

@ -1 +1,47 @@
alter table hzims_em_param add COLUMN NAME VARCHAR(100) comment '参数名称'; alter table hzims_em_param add COLUMN NAME VARCHAR(100) comment '参数名称';
-- HZ100C参数下发 设备表添加参数最后下发时间字段
alter table `hzims_em_info` add column `LAST_DISTRIBUTE_TIME` DATETIME DEFAULT NULL COMMENT '最后下发时间';
-- HZ100C参数下发 设备表添加字段机组类别
alter table `hzims_em_info` add column `SET_CATEGORY` VARCHAR(2) DEFAULT NULL COMMENT '机组类别';
CREATE TABLE `hzims_param_backups` (
`ID` bigint(20) NOT NULL,
`NAME` varchar(255) DEFAULT NULL,
`STATION_CODE` varchar(64) DEFAULT NULL,
`EM_CODE` varchar(64) DEFAULT NULL,
`DELAY` tinyint(1) DEFAULT NULL,
`MACHINE_CODE` varchar(255) DEFAULT NULL,
`TENANT_ID` varchar(12) DEFAULT NULL COMMENT '租户ID',
`CREATE_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
`CREATE_USER` bigint(20) NOT NULL COMMENT '创建人',
`UPDATE_USER` bigint(20) DEFAULT NULL COMMENT '更新人',
`IS_DELETED` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
`STATUS` tinyint(4) DEFAULT NULL COMMENT '状态 ',
`CREATE_DEPT` bigint(20) DEFAULT NULL COMMENT '创建部门',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
CREATE TABLE `hzims_param_backups_detail` (
`ID` bigint(20) NOT NULL,
`BACKUPS_ID` bigint(20) DEFAULT NULL COMMENT '备份主表ID',
`NAME` varchar(255) DEFAULT NULL COMMENT '参数名称',
`SIGNAGE` varchar(128) DEFAULT NULL COMMENT '标识',
`FAC_DEVICE_ID` varchar(64) DEFAULT NULL COMMENT '关联设备',
`FAC_DEVICE_FUNC_ID` varchar(64) DEFAULT NULL COMMENT 'hz3000关联id',
`PARAMETER_TAG` varchar(128) DEFAULT NULL COMMENT '参数标识',
`PARAMETER_NAME` varchar(255) DEFAULT NULL COMMENT '参数名称',
`VALUE` varchar(16) DEFAULT NULL COMMENT '',
`MAX_VALUE` varchar(16) DEFAULT NULL COMMENT '最大值',
`MIN_VALUE` varchar(16) DEFAULT NULL COMMENT '最小值',
`TENANT_ID` varchar(12) DEFAULT NULL COMMENT '租户ID',
`CREATE_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新时间',
`CREATE_USER` bigint(20) NOT NULL COMMENT '创建人',
`UPDATE_USER` bigint(20) DEFAULT NULL COMMENT '更新人',
`IS_DELETED` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
`STATUS` tinyint(4) DEFAULT NULL COMMENT '状态 ',
`CREATE_DEPT` bigint(20) DEFAULT NULL COMMENT '创建部门',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

14
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/StorageMapper.java

@ -0,0 +1,14 @@
package com.hnac.hzims.scheduled.mapper.operation;
import com.hnac.hzims.operational.fill.entity.StorageEntity;
import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper;
/**
* @author ysj
* @date 2023/03/09 16:12:22
* @version 4.0.0
*/
public interface StorageMapper extends UserDataScopeBaseMapper<StorageEntity> {
}

11
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/mapper/operation/WindMapper.java

@ -0,0 +1,11 @@
package com.hnac.hzims.scheduled.mapper.operation;
import com.hnac.hzims.operational.fill.entity.WindEntity;
import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper;
/**
* @author ysj
*/
public interface WindMapper extends UserDataScopeBaseMapper<WindEntity> {
}

30
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/RealTargetScheduledTask.java

@ -8,12 +8,12 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import static com.hnac.hzims.fdp.constants.ScheduledConstant.LOAD_EM_INFO;
import static com.hnac.hzims.operational.main.constant.MainConstants.*; import static com.hnac.hzims.operational.main.constant.MainConstants.*;
@ -33,9 +33,9 @@ public class RealTargetScheduledTask {
* @return * @return
* @throws Exception * @throws Exception
*/ */
@XxlJob(LOAD_EM_INFO) // @XxlJob(LOAD_EM_INFO)
// @Scheduled(cron = "0/40 * * * * ? ") // @Scheduled(cron = "0/40 * * * * ? ")
public ReturnT<String> loadEmInfo(String param) { public ReturnT<String> loadEmInfo() {
service.loadEmInfo(); service.loadEmInfo();
return new ReturnT<>("SUCCESS"); return new ReturnT<>("SUCCESS");
} }
@ -128,12 +128,26 @@ public class RealTargetScheduledTask {
/** /**
* 获取站点近3年发电量数据 * 获取站点近3年发电量数据
*/ */
@XxlJob(ELECTRICITY_GENERATION_RECENT_YEAR) // @XxlJob(ELECTRICITY_GENERATION_RECENT_YEAR)
public ReturnT<String> loadPowerData(String param) { @Scheduled(cron = "0/40 * * * * ? ")
if (Func.isBlank(param)) { public ReturnT<String> loadPowerData() {
param = DateUtil.format(new Date(), "yyyy-MM"); // if (Func.isBlank(param)) {
// param = DateUtil.format(new Date(), "yyyy-MM");
// }
service.loadPowerData("", Arrays.asList(HomePageConstant.HYDROPOWER,HomePageConstant.PHOTOVOLTAIC),2,3);
return new ReturnT<>("SUCCESS");
} }
service.loadPowerData(param, Arrays.asList(HomePageConstant.HYDROPOWER,HomePageConstant.PHOTOVOLTAIC),2,3); /**
* 获取風電和儲能站点近3年发电量数据
*/
private final static String wind_recent_year_power_data = "hzims:operation:wind:power:data";
// @XxlJob(WIND_POWER_GENERATION_RECENT_YEAR)
@Scheduled(cron = "0/40 * * * * ? ")
public ReturnT<String> loadWindPowerData() {
// if (Func.isBlank(param)) {
// param = DateUtil.format(new Date(), "yyyy-MM");
// }
service.loadPowerDataByWindEnergy("", Arrays.asList(HomePageConstant.WIND_POWER,HomePageConstant.ENERGY_STORAGE),2,3,wind_recent_year_power_data);
return new ReturnT<>("SUCCESS"); return new ReturnT<>("SUCCESS");
} }
} }

35
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/scheduled/ReportScheduledTask.java

@ -1,5 +1,6 @@
package com.hnac.hzims.scheduled.scheduled; package com.hnac.hzims.scheduled.scheduled;
import com.hnac.hzims.operational.main.constant.HomePageConstant;
import com.hnac.hzims.scheduled.service.operation.report.ReportService; import com.hnac.hzims.scheduled.service.operation.report.ReportService;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
@ -7,11 +8,13 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
import static com.hnac.hzims.operational.main.constant.MainConstants.AREA_MONTH_REPORT; import static com.hnac.hzims.operational.main.constant.MainConstants.*;
import static com.hnac.hzims.scheduled.service.operation.report.impl.ReportServiceImpl.wind_recent_year_cache;
/** /**
@ -25,6 +28,11 @@ public class ReportScheduledTask {
@Autowired @Autowired
private ReportService service; private ReportService service;
@Value("${hzims.operation.wind.report}")
private String wind_report_month_cache_final;
@Value("${hzims.operation.energy.report}")
private String energy_report_month_cache_final;
/** /**
* 首页-生产月报表 * 首页-生产月报表
* @return ReturnT<String> * @return ReturnT<String>
@ -37,5 +45,30 @@ public class ReportScheduledTask {
service.loadMonthReport(param,1); service.loadMonthReport(param,1);
return new ReturnT<>("SUCCESS"); return new ReturnT<>("SUCCESS");
} }
/**
* 首页-生产月报表
* @return ReturnT<String>
*/
@XxlJob(WIND_AREA_MONTH_REPORT)
public ReturnT<String> loadWindMonthReport(String param) {
if (Func.isBlank(param)) {
param = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
}
service.loadMonthReportByType(param,1, HomePageConstant.WIND_POWER,wind_recent_year_cache,wind_report_month_cache_final);
return new ReturnT<>("SUCCESS");
}
/**
* 首页-生产月报表
* @return ReturnT<String>
*/
@XxlJob(ENERGY_AREA_MONTH_REPORT)
public ReturnT<String> loadEnergyMonthReport(String param) {
if (Func.isBlank(param)) {
param = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
}
service.loadMonthReportByType(param,1,HomePageConstant.ENERGY_STORAGE,wind_recent_year_cache,energy_report_month_cache_final);
return new ReturnT<>("SUCCESS");
}
} }

20
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/StorageService.java

@ -0,0 +1,20 @@
package com.hnac.hzims.scheduled.service.operation.fill;
import com.hnac.hzims.operational.fill.entity.StorageEntity;
import com.hnac.hzims.operational.main.vo.PowerMonthVo;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
* @author ysj
* @date 2023/03/09 16:12:22
* @version 4.0.0
*/
/**
* 接入电站历史发电量填报
*/
public interface StorageService extends BaseService<StorageEntity> {
List<PowerMonthVo> generateThreeYear(String start, String end, Long station);
}

15
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/WindService.java

@ -0,0 +1,15 @@
package com.hnac.hzims.scheduled.service.operation.fill;
import com.hnac.hzims.operational.fill.entity.WindEntity;
import com.hnac.hzims.operational.main.vo.PowerMonthVo;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
/**
* @author ysj
*/
public interface WindService extends BaseService<WindEntity> {
List<PowerMonthVo> generateThreeYear(String start, String end, Long station);
}

51
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/impl/StorageServiceImpl.java

@ -0,0 +1,51 @@
package com.hnac.hzims.scheduled.service.operation.fill.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.operational.fill.entity.StorageEntity;
import com.hnac.hzims.operational.main.vo.PowerMonthVo;
import com.hnac.hzims.scheduled.mapper.operation.StorageMapper;
import com.hnac.hzims.scheduled.service.operation.fill.StorageService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author ysj
* @date 2023/03/09 16:12:22
* @version 4.0.0
*/
@Slf4j
@Service
@AllArgsConstructor
public class StorageServiceImpl extends BaseServiceImpl<StorageMapper, StorageEntity> implements StorageService {
@Override
public List<PowerMonthVo> generateThreeYear(String start, String end, Long station) {
List<StorageEntity> fills = this.list(Wrappers.<StorageEntity>lambdaQuery()
.between(StorageEntity::getFillDate,start,end)
.eq(StorageEntity::getCreateDept,station)
);
if(CollectionUtil.isEmpty(fills)){
return new ArrayList<>();
}
return fills.stream().map(fill->{
PowerMonthVo mon = new PowerMonthVo();
mon.setStrMonth(DateUtil.format(fill.getFillDate(),DateUtil.PATTERN_DATE));
if(Math.abs(fill.getPower().intValue()) <= 0){
mon.setPower(0f);
}else{
mon.setPower(Float.parseFloat(fill.getPower().toString()));
}
return mon;
}).collect(Collectors.toList());
}
}

52
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/fill/impl/WindServiceImpl.java

@ -0,0 +1,52 @@
package com.hnac.hzims.scheduled.service.operation.fill.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hnac.hzims.operational.fill.entity.WindEntity;
import com.hnac.hzims.operational.main.vo.PowerMonthVo;
import com.hnac.hzims.scheduled.mapper.operation.WindMapper;
import com.hnac.hzims.scheduled.service.operation.fill.WindService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author ysj
* @date 2023/04/10 11:16:07
* @version 4.0.0
*/
@Slf4j
@Service
@AllArgsConstructor
public class WindServiceImpl extends BaseServiceImpl<WindMapper, WindEntity> implements WindService {
@Override
public List<PowerMonthVo> generateThreeYear(String start, String end, Long station) {
List<WindEntity> fills = this.list(Wrappers.<WindEntity>lambdaQuery()
.between(WindEntity::getFillDate,start,end)
.eq(WindEntity::getCreateDept,station)
);
if(CollectionUtil.isEmpty(fills)){
return new ArrayList<>();
}
return fills.stream().map(fill->{
PowerMonthVo mon = new PowerMonthVo();
mon.setStrMonth(DateUtil.format(DateUtil.parse(fill.getFillDate(),DateUtil.PATTERN_DATE),DateUtil.PATTERN_DATE));
if(Math.abs(fill.getPower()) <= 0){
mon.setPower(0f);
}else{
mon.setPower(Float.parseFloat(fill.getPower().toString()));
}
return mon;
}).collect(Collectors.toList());
}
}

1
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/RealTargetService.java

@ -34,4 +34,5 @@ public interface RealTargetService {
// 光伏、水电站近3年发电量 // 光伏、水电站近3年发电量
void loadPowerData(String param, List<Integer> types, Integer serveType, int year); void loadPowerData(String param, List<Integer> types, Integer serveType, int year);
void loadPowerDataByWindEnergy(String param, List<Integer> types, Integer serveType, int year,String key);
} }

76
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/home/impl/RealTargetServiceImpl.java

@ -14,18 +14,15 @@ import com.hnac.hzims.operational.station.entity.HzimsAnalyzeModelStationEntity;
import com.hnac.hzims.operational.station.entity.StationEntity; import com.hnac.hzims.operational.station.entity.StationEntity;
import com.hnac.hzims.scheduled.service.equipment.DeviceParamService; import com.hnac.hzims.scheduled.service.equipment.DeviceParamService;
import com.hnac.hzims.scheduled.service.equipment.DeviceService; import com.hnac.hzims.scheduled.service.equipment.DeviceService;
import com.hnac.hzims.scheduled.service.operation.fill.*;
import com.hnac.hzims.scheduled.service.operation.home.ModelStationService; import com.hnac.hzims.scheduled.service.operation.home.ModelStationService;
import com.hnac.hzims.scheduled.service.operation.home.RealTargetService; import com.hnac.hzims.scheduled.service.operation.home.RealTargetService;
import com.hnac.hzims.scheduled.service.operation.fill.GenerateService; import com.hnac.hzims.scheduled.service.operation.plate.DataService;
import com.hnac.hzims.scheduled.service.operation.fill.PowerService;
import com.hnac.hzims.scheduled.service.operation.fill.UseService;
import com.hnac.hzims.scheduled.service.operation.station.StationAttributeService; import com.hnac.hzims.scheduled.service.operation.station.StationAttributeService;
import com.hnac.hzims.scheduled.service.operation.station.StationService; import com.hnac.hzims.scheduled.service.operation.station.StationService;
import com.hnac.hzims.scheduled.service.operation.plate.DataService;
import com.hnac.hzinfo.datasearch.PointData; import com.hnac.hzinfo.datasearch.PointData;
import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient; import com.hnac.hzinfo.datasearch.analyse.IAnalyseDataSearchClient;
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData;
import com.hnac.hzinfo.datasearch.analyse.po.AnalyseCodeByAnalyseDataPO;
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyseDataTaosVO; import com.hnac.hzinfo.datasearch.analyse.vo.AnalyseDataTaosVO;
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeCodeBySignagesVO; import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeCodeBySignagesVO;
import com.hnac.hzinfo.datasearch.history.IHistoryDataSearchClient; import com.hnac.hzinfo.datasearch.history.IHistoryDataSearchClient;
@ -80,6 +77,8 @@ public class RealTargetServiceImpl implements RealTargetService {
private final ModelStationService modelStationService; private final ModelStationService modelStationService;
private final RedisTemplate redisTemplate; private final RedisTemplate redisTemplate;
private final WindService windService;
private final StorageService storageService;
private final IHistoryDataSearchClient historyDataSearchClient; private final IHistoryDataSearchClient historyDataSearchClient;
@ -1111,7 +1110,50 @@ public class RealTargetServiceImpl implements RealTargetService {
redisTemplate.opsForValue().set(recent_year_power_data, powerMap); redisTemplate.opsForValue().set(recent_year_power_data, powerMap);
} }
/**
* 近年发电量数据
*
* @param param 时间
* @param serveType 站点类型
* @param year 近几年
*/
@Override
public void loadPowerDataByWindEnergy(String param, List<Integer> types, Integer serveType, int year,String key) {
// 站点查询
List<StationEntity> stationList = stationService.list(new LambdaQueryWrapper<StationEntity>() {{
if (ObjectUtil.isNotEmpty(serveType)) {
eq(StationEntity::getServeType, serveType);
}
if (CollectionUtil.isNotEmpty(types)) {
in(StationEntity::getType, types);
}
}});
// 设备信息
// List<EminfoAndEmParamVo> devices = JSONObject.parseObject(redisTemplate.opsForValue().get(device_cache_cofig_final).toString(), new TypeReference<List<EminfoAndEmParamVo>>() {
// });
// 开始时间
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -calendar.get(Calendar.MONTH) + 12);
calendar.add(Calendar.DATE, -calendar.get(Calendar.DATE) + 1);
String end = DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATE) + " 00:00:00";
// 结束日期
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - year);
calendar.add(Calendar.MONTH, -calendar.get(Calendar.MONTH));
String start = DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATE) + " 00:00:00";
// 存储数据map :<站点id,<月份,发电量>>
Map<Long, Map<String, Float>> powerMap = new HashMap<>();
stationList.forEach(station -> {
// 站点设备集合
// List<EminfoAndEmParamVo> stationDevices = devices.stream().filter(device -> device.getCreateDept().equals(station.getRefDept())).collect(Collectors.toList());
// log.error("load_power_data station :" + station.getCode() + "==== device :" + stationDevices );
Map<String, Float> generateMap = this.getGenerateYearByWindEnergy(station,start,end);
if(MapUtils.isEmpty(generateMap)){
return;
}
powerMap.put(station.getId(),generateMap);
});
redisTemplate.opsForValue().set(key, powerMap);
}
/** /**
* 当天有功功率 * 当天有功功率
* @param device * @param device
@ -1165,7 +1207,21 @@ public class RealTargetServiceImpl implements RealTargetService {
} }
return datas.stream().collect(Collectors.toMap(PowerMonthVo::getStrMonth, PowerMonthVo::getPower, Float::sum)); return datas.stream().collect(Collectors.toMap(PowerMonthVo::getStrMonth, PowerMonthVo::getPower, Float::sum));
} }
/**
* 获取风电或者储能的年发电量
* @param start
* @param end
* @return
*/
private Map<String, Float> getGenerateYearByWindEnergy(StationEntity station, String start, String end) {
List<PowerMonthVo> datas = new ArrayList<>();
// 补充填报数据
datas.addAll(this.generateFill(station,start,end));
if(CollectionUtil.isEmpty(datas)){
return null;
}
return datas.stream().collect(Collectors.toMap(PowerMonthVo::getStrMonth, PowerMonthVo::getPower, Float::sum));
}
/** /**
* 获取填报用电量 * 获取填报用电量
@ -1207,6 +1263,12 @@ public class RealTargetServiceImpl implements RealTargetService {
if(HomePageConstant.PHOTOVOLTAIC.equals(station.getType())){ if(HomePageConstant.PHOTOVOLTAIC.equals(station.getType())){
return powerService.generateThreeYear(start,end,station.getRefDept()); return powerService.generateThreeYear(start,end,station.getRefDept());
} }
if(HomePageConstant.WIND_POWER.equals(station.getType())){
return windService.generateThreeYear(start,end,station.getRefDept());
}
if(HomePageConstant.ENERGY_STORAGE.equals(station.getType())){
return storageService.generateThreeYear(start,end,station.getRefDept());
}
// 水电 // 水电
return generateService.generateThreeYear(start,end,station.getCode()); return generateService.generateThreeYear(start,end,station.getCode());
} }

1
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/report/ReportService.java

@ -6,4 +6,5 @@ package com.hnac.hzims.scheduled.service.operation.report;
public interface ReportService { public interface ReportService {
void loadMonthReport(String param, int i); void loadMonthReport(String param, int i);
void loadMonthReportByType(String param, int year,Integer type,String key,String saveKey);
} }

39
hzims-service/hzims-scheduled/src/main/java/com/hnac/hzims/scheduled/service/operation/report/impl/ReportServiceImpl.java

@ -72,6 +72,7 @@ public class ReportServiceImpl implements ReportService {
private final static String recent_year_cache_final = "hzims:operation:key:power:data"; private final static String recent_year_cache_final = "hzims:operation:key:power:data";
public final static String wind_recent_year_cache = "hzims:operation:wind:power:data";
@Value("${hzims.operation.area.report}") @Value("${hzims.operation.area.report}")
private String report_month_cache_final; private String report_month_cache_final;
@ -115,6 +116,44 @@ public class ReportServiceImpl implements ReportService {
} }
/** /**
* 区域-月报-风电/储能/水利
* @param param
* @param year
*/
@Override
public void loadMonthReportByType(String param, int year,Integer type,String key,String saveKey) {
// 获取所有机构
R<List<Dept>> R = sysClient.getDeptList();
if (!R.isSuccess() || CollectionUtil.isEmpty(R.getData())) {
return;
}
// 查询所有服务类型——"运维服务"、站点类型——"水电站"
List<StationEntity> stations = stationService.list(Wrappers.<StationEntity>lambdaQuery()
.eq(StationEntity::getServeType,HomePageConstant.HYDROPOWER_SERVETYPE)
.eq(StationEntity::getType,type)
);
if (CollectionUtil.isEmpty(stations)) {
return;
}
// 站点近年发电数据
Map<Long, Map<String, Float>> powerMap = (Map<Long, Map<String, Float>>) redisTemplate.opsForValue().get(key);
// 存储数据节点 key - 月份 value - 区域数据集合
Map<String, List<AreaMonthReportVo>> map = new HashMap<>();
// 月份集合
List<String> monthList = getMonthList(year, Calendar.getInstance().get(Calendar.MONTH));
monthList.forEach(mon -> {
List<AreaMonthReportVo> list = this.getAreaReportByMon(R.getData(), powerMap, stations, mon);
if (CollectionUtil.isEmpty(list)) {
return;
}
map.put(mon, list);
});
// 推送当月报表邮件
this.sendMonthReport(map, R.getData());
redisTemplate.opsForValue().set(report_month_cache_final, map);
}
/**
* 获取近年月份集合 * 获取近年月份集合
* *
* @param year * @param year

4
hzims-service/hzims-scheduled/src/main/resources/mapper/operation/StorageMapper.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.scheduled.mapper.operation.StorageMapper">
</mapper>

5
hzims-service/hzims-scheduled/src/main/resources/mapper/operation/WindMapper.xml

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

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

@ -90,12 +90,14 @@ public class MessagePushRecordController extends BladeController {
@GetMapping("/readMessageBatch") @GetMapping("/readMessageBatch")
@ApiOperation("批量处理消息") @ApiOperation("批量处理消息")
@ApiOperationSupport(order = 7) @ApiOperationSupport(order = 7)
public R<Boolean> readMessageBatch() { public R<Boolean> readMessageBatch(String businessClassify,String type) {
LambdaUpdateWrapper<MessagePushRecordEntity> eq = Wrappers.<MessagePushRecordEntity>lambdaUpdate() LambdaUpdateWrapper<MessagePushRecordEntity> eq = Wrappers.<MessagePushRecordEntity>lambdaUpdate()
.set(MessagePushRecordEntity::getStatus, MessageConstants.CONFIRM) .set(MessagePushRecordEntity::getStatus, MessageConstants.CONFIRM)
.set(MessagePushRecordEntity::getRespondTime, LocalDateTime.now()) .set(MessagePushRecordEntity::getRespondTime, LocalDateTime.now())
.eq(MessagePushRecordEntity::getPusher, AuthUtil.getUserId()) .eq(MessagePushRecordEntity::getPusher, AuthUtil.getUserId())
.eq(MessagePushRecordEntity::getStatus, MessageConstants.PUSH_SUCCESS); .eq(MessagePushRecordEntity::getStatus, MessageConstants.PUSH_SUCCESS)
.eq(Func.isNotEmpty(businessClassify),MessagePushRecordEntity::getBusinessClassify,businessClassify)
.eq(Func.isNotEmpty(type),MessagePushRecordEntity::getType,type);
return R.status(messagePushRecordService.update(eq)); return R.status(messagePushRecordService.update(eq));
} }

10
hzims-service/operational/src/main/java/com/hnac/hzims/operational/defect/service/impl/DefectCheckServiceImpl.java

@ -79,7 +79,7 @@ public class DefectCheckServiceImpl extends BaseServiceImpl<OperPhenomenonMapper
private final IUserClient userClient; private final IUserClient userClient;
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
private IStationClient stationClient; private final IStationClient stationClient;
private final IFlowClient processClient; private final IFlowClient processClient;
private final IMessageClient messageClient; private final IMessageClient messageClient;
@ -135,12 +135,12 @@ public class DefectCheckServiceImpl extends BaseServiceImpl<OperPhenomenonMapper
*/ */
private boolean savePhenomenon(OperPhenomenonEntity entity) { private boolean savePhenomenon(OperPhenomenonEntity entity) {
String deptId = AuthUtil.getDeptId(); String deptId = AuthUtil.getDeptId();
if (StringUtils.isNotBlank(deptId)) { if (StringUtils.isBlank(deptId)) {
throw new ServiceException("获取当前用户机构失败!"); throw new ServiceException("获取当前用户机构失败!");
} }
StationEntity station = new StationEntity(); StationEntity station = new StationEntity();
station.setRefDept(Long.valueOf(deptId)); station.setRefDept(Long.valueOf(deptId));
R<StationEntity> stationR = stationClient.getOne(station); R<StationEntity> stationR = stationClient.getStationByCodeOrRedDept(station);
Assert.isTrue(stationR.isSuccess() && ObjectUtil.isNotEmpty(stationR.getData()) && Func.isNotEmpty(stationR.getData().getSignage()), () -> { Assert.isTrue(stationR.isSuccess() && ObjectUtil.isNotEmpty(stationR.getData()) && Func.isNotEmpty(stationR.getData().getSignage()), () -> {
throw new ServiceException("该工作票站点下未获取到两票抬头!"); throw new ServiceException("该工作票站点下未获取到两票抬头!");
}); });
@ -150,14 +150,14 @@ public class DefectCheckServiceImpl extends BaseServiceImpl<OperPhenomenonMapper
LocalDateTime firstDay = date.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0); LocalDateTime firstDay = date.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);
LocalDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59); LocalDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59);
List<OperPhenomenonEntity> ticketList = this.list( List<OperPhenomenonEntity> ticketList = this.list(
Wrappers.<OperPhenomenonEntity>lambdaQuery().eq(OperPhenomenonEntity::getCreateDept, entity.getCreateDept()) Wrappers.<OperPhenomenonEntity>lambdaQuery().eq(OperPhenomenonEntity::getCreateDept, deptId)
.ge(OperPhenomenonEntity::getCreateTime, firstDay).le(OperPhenomenonEntity::getCreateTime, lastDay) .ge(OperPhenomenonEntity::getCreateTime, firstDay).le(OperPhenomenonEntity::getCreateTime, lastDay)
); );
String suffix = String.format(String.format("%03d", ticketList.size() + 1)); String suffix = String.format(String.format("%03d", ticketList.size() + 1));
String result = stationR.getData().getSignage() + yearMonth + suffix; String result = stationR.getData().getSignage() + yearMonth + suffix;
// 缺陷编码 : 按项目+年+月+序号 // 缺陷编码 : 按项目+年+月+序号
if (Func.isEmpty(result)) { if (Func.isNotEmpty(result)) {
entity.setDefectCode(result); entity.setDefectCode(result);
} }
// 现象发起人 : 当前用户Id // 现象发起人 : 当前用户Id

11
hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/controller/GenerateController.java

@ -20,6 +20,8 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* @author ysj * @author ysj
@ -43,6 +45,15 @@ public class GenerateController extends BladeController {
public R saveOrUpdate(@RequestBody GenerateEntity entity) { public R saveOrUpdate(@RequestBody GenerateEntity entity) {
return R.status(service.saveUpdate(entity)); return R.status(service.saveUpdate(entity));
} }
/**
* 新增
*/
@PostMapping("/saveOrUpdateList")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "新增", notes = "传入InsertPowerEntity对象")
public R saveOrUpdateList(@RequestBody List<GenerateEntity> entity) {
return service.saveUpdateList(entity);
}
/** /**
* 删除 * 删除

6
hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/GenerateService.java

@ -2,19 +2,15 @@ package com.hnac.hzims.operational.fill.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hnac.hzims.operational.fill.entity.GenerateEntity; import com.hnac.hzims.operational.fill.entity.GenerateEntity;
import com.hnac.hzims.operational.fill.entity.RainfallEntity;
import com.hnac.hzims.operational.fill.vo.GenerateVo; import com.hnac.hzims.operational.fill.vo.GenerateVo;
import com.hnac.hzims.operational.fill.vo.QueryVo; import com.hnac.hzims.operational.fill.vo.QueryVo;
import com.hnac.hzims.operational.fill.vo.RainfallVo;
import com.hnac.hzims.operational.main.vo.GenerationPowerVo; import com.hnac.hzims.operational.main.vo.GenerationPowerVo;
import com.hnac.hzims.operational.main.vo.PowerMonthVo; import com.hnac.hzims.operational.main.vo.PowerMonthVo;
import com.hnac.hzims.operational.main.vo.UsrPowerVo;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author ysj * @author ysj
@ -28,7 +24,7 @@ public interface GenerateService extends BaseService<GenerateEntity> {
// 新增/修改发电量填报数据 // 新增/修改发电量填报数据
boolean saveUpdate(GenerateEntity entity); boolean saveUpdate(GenerateEntity entity);
R saveUpdateList(List<GenerateEntity> entity);
// 查询填报用电量 // 查询填报用电量
Float generate(String date,String station); Float generate(String date,String station);

27
hzims-service/operational/src/main/java/com/hnac/hzims/operational/fill/service/impl/GenerateServiceImpl.java

@ -24,6 +24,7 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
@ -77,6 +78,11 @@ public class GenerateServiceImpl extends BaseServiceImpl<GenerateMapper, Generat
GenerateEntity history = this.getOne(new LambdaQueryWrapper<GenerateEntity>(){{ GenerateEntity history = this.getOne(new LambdaQueryWrapper<GenerateEntity>(){{
eq(GenerateEntity::getStationCode, entity.getStationCode()); eq(GenerateEntity::getStationCode, entity.getStationCode());
eq(GenerateEntity::getFillDate,entity.getFillDate()); eq(GenerateEntity::getFillDate,entity.getFillDate());
eq(GenerateEntity::getIsDeleted,0);
if (ObjectUtil.isNotEmpty(entity.getId())){
eq(GenerateEntity::getFillDate,entity.getFillDate());
}
last("limit 1");
}}); }});
if(ObjectUtil.isNotEmpty(history) && (ObjectUtil.isEmpty(entity.getId()) || !entity.getId().equals(history.getId()))){ if(ObjectUtil.isNotEmpty(history) && (ObjectUtil.isEmpty(entity.getId()) || !entity.getId().equals(history.getId()))){
throw new ServiceException("日期已经存在填报数据!"); throw new ServiceException("日期已经存在填报数据!");
@ -86,7 +92,28 @@ public class GenerateServiceImpl extends BaseServiceImpl<GenerateMapper, Generat
} }
return this.updateById(entity); return this.updateById(entity);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public R saveUpdateList(List<GenerateEntity> entityList) {
//发电量不为空的,保存或者编辑
List<GenerateEntity> addList = entityList.stream().filter(s -> ObjectUtil.isNotEmpty(s.getGenerate())).collect(Collectors.toList());
boolean saveFlag = this.saveOrUpdateBatch(addList);
//发电量为空的,且有ID的为删除
List<Long> ids = entityList.stream().
filter(s -> ObjectUtil.isEmpty(s.getGenerate()))
.filter(s -> ObjectUtil.isNotEmpty(s.getId()))
.map(GenerateEntity::getId).collect(Collectors.toList());
boolean deleteFlag =true;
if (CollectionUtil.isNotEmpty(ids)){
deleteFlag= this.deleteLogic(ids);
}
if (saveFlag&&deleteFlag){
return R.success("保存成功");
}else {
return R.fail("保存失败");
}
}
/** /**
* 根据时间机构查询用电量 * 根据时间机构查询用电量
* @param date 时间: - yyyy/ yyyy-mm/ yyyy-mm-dd * @param date 时间: - yyyy/ yyyy-mm/ yyyy-mm-dd

35
hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AreaMonthReportController.java

@ -20,6 +20,7 @@ import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.ISysClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -54,7 +55,14 @@ public class AreaMonthReportController extends BladeController {
service.loadMonthReport(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"), 1); service.loadMonthReport(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"), 1);
return R.success("success"); return R.success("success");
} }
@ApiLog
@ApiOperationSupport(order = 1)
@ApiOperation("生成区域月报")
@GetMapping("/loadMonthReportByType")
public R loadMonthReportByType(int type) {
service.loadMonthReportByType(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"), 1,type);
return R.success("success");
}
@ApiLog @ApiLog
@ApiOperationSupport(order = 2) @ApiOperationSupport(order = 2)
@ApiOperation("获取区域月报") @ApiOperation("获取区域月报")
@ -66,7 +74,30 @@ public class AreaMonthReportController extends BladeController {
public R<List<AreaMonthReportVo>> getAreaMonthReport(@ApiParam(value = "日期-年月", required = true) String date) { public R<List<AreaMonthReportVo>> getAreaMonthReport(@ApiParam(value = "日期-年月", required = true) String date) {
return service.getReport(date); return service.getReport(date);
} }
@ApiLog
@ApiOperationSupport(order = 2)
@ApiOperation("获取区域月报")
@GetMapping("/getAreaMonthReportByType")
@OperationAnnotation(
moduleName = "生产月报",
title = "水电生产运行月报", operatorType = OperatorType.MOBILE, businessType = BusinessType.GENCODE,
action = "获取区域月报")
public R<List<AreaMonthReportVo>> getAreaMonthReportByType(@ApiParam(value = "日期-年月", required = true) String date,Integer type) {
if (ObjectUtil.isEmpty(type)){
type=0;
}
return service.getReportByType(date,type);
}
@ApiLog
@ApiOperationSupport(order = 3)
@ApiOperation("导出区域月报")
@GetMapping("/exportAreaMonthReportByType")
public R exportAreaMonthReportByType(HttpServletResponse response, @ApiParam(value = "日期-年月", required = true) String date,Integer type) {
if (ObjectUtil.isEmpty(type)){
type=0;
}
return service.exportByType(response, date,type);
}
@ApiLog @ApiLog
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
@ApiOperation("导出区域月报") @ApiOperation("导出区域月报")

5
hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IAreaMonthReportService.java

@ -13,10 +13,15 @@ import java.util.List;
public interface IAreaMonthReportService { public interface IAreaMonthReportService {
void loadMonthReport(String param,int year); void loadMonthReport(String param,int year);
void loadMonthReportByType(String param,int year,int type);
R<List<AreaMonthReportVo>> getReport(String date); R<List<AreaMonthReportVo>> getReport(String date);
R export(HttpServletResponse response, String date); R export(HttpServletResponse response, String date);
R exportHydropowerStationMonthReport(HttpServletResponse response, HashMap<String, Object> map, Integer year, Integer month,Long deptId,String name); R exportHydropowerStationMonthReport(HttpServletResponse response, HashMap<String, Object> map, Integer year, Integer month,Long deptId,String name);
R<List<AreaMonthReportVo>> getReportByType(String date, Integer type);
R exportByType(HttpServletResponse response, String date, Integer type);
} }

137
hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java

@ -121,7 +121,10 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
@Value("${hzims.operation.area.report}") @Value("${hzims.operation.area.report}")
private String area_month_report_key; private String area_month_report_key;
@Value("${hzims.operation.wind.report}")
private String wind_report_month_cache_final;
@Value("${hzims.operation.energy.report}")
private String energy_report_month_cache_final;
private final static String RECENT_YEAR_POWER_DATA = "hzims:operation:key:power:data"; private final static String RECENT_YEAR_POWER_DATA = "hzims:operation:key:power:data";
private final static String load_hydropower_unit_real_key = "hzims:operation:loadhydropowerunit:real:key"; private final static String load_hydropower_unit_real_key = "hzims:operation:loadhydropowerunit:real:key";
private final static String load_hydropower_unit_target_key = "hzims:operation:loadhydropowerunit:target:key"; private final static String load_hydropower_unit_target_key = "hzims:operation:loadhydropowerunit:target:key";
@ -153,7 +156,61 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
//根据用户权限获取机构 //根据用户权限获取机构
return R.data(areaMonthReportVoList.stream().sorted(Comparator.comparing(AreaMonthReportVo::getActualPower, Comparator.reverseOrder())).collect(Collectors.toList())); return R.data(areaMonthReportVoList.stream().sorted(Comparator.comparing(AreaMonthReportVo::getActualPower, Comparator.reverseOrder())).collect(Collectors.toList()));
} }
@Override
public R<List<AreaMonthReportVo>> getReportByType(String date, Integer type){
List<AreaMonthReportVo> areaMonthReportVoList = this.getAreaMonthReportByType(date, false,type);
if (CollectionUtil.isEmpty(areaMonthReportVoList)) {
return R.fail("选择月份无统计报表数据");
}
//根据用户权限获取机构
return R.data(areaMonthReportVoList.stream().sorted(Comparator.comparing(AreaMonthReportVo::getActualPower, Comparator.reverseOrder())).collect(Collectors.toList()));
}
/**
* 导出区域月报
*
* @param response
* @param date
*/
@Override
public R exportByType(HttpServletResponse response, String date, Integer type) {
List<AreaMonthReportVo> monthReportVoList = this.getAreaMonthReportByType(date, true,type);
// 创建Excel文件
HSSFWorkbook hssWB = new HSSFWorkbook();
// 添加sheet页
HSSFSheet sheet = hssWB.createSheet("运行月报(" + date + ")");
// 行高
sheet.setDefaultRowHeight((short) (20 * 25));
// 列宽
sheet.setDefaultColumnWidth(20);
this.setFirstHeader(hssWB, sheet);
// 第二行/三行 表头格式设置
this.setWorkHeader(hssWB, sheet);
if (!CollectionUtil.isEmpty(monthReportVoList)) {
// 数据填充
this.setWorkData(hssWB, sheet, monthReportVoList);
}
// 下载导出
String filename = "(" + date + ")水电站生产运行月报";
// 设置头信息
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.ms-excel");
ServletOutputStream outputStream;
try {
//设置xlsx格式
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename + ".xlsx", "UTF-8"));
//创建一个输出流
outputStream = response.getOutputStream();
//写入数据
hssWB.write(outputStream);
// 关闭
outputStream.close();
hssWB.close();
} catch (IOException e) {
e.printStackTrace();
}
return R.data("success");
}
/** /**
* 导出区域月报 * 导出区域月报
* *
@ -1103,6 +1160,37 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
/** /**
* 获取区域月报数据
*
* @return
*/
private List<AreaMonthReportVo> getAreaMonthReportByType(String date, boolean isSendFlag,Integer type) {
R<List<Dept>> D = sysClient.getDeptByCurrentUser();
if (!D.isSuccess() || CollectionUtil.isEmpty(D.getData())) {
return null;
}
List<Long> authList = D.getData().stream().filter(o -> o.getDeptCategory().equals(3)).map(Dept::getId).collect(Collectors.toList());
if (CollectionUtil.isEmpty(authList)) {
return null;
}
String key = area_month_report_key;
if (type.equals(HomePageConstant.WIND_POWER)){
key= wind_report_month_cache_final;
}
if (type.equals(HomePageConstant.ENERGY_STORAGE)){
key= energy_report_month_cache_final;
}
Map<String, List<AreaMonthReportVo>> map = (Map<String, List<AreaMonthReportVo>>) redisTemplate.opsForValue().get(key);
if (MapUtils.isEmpty(map)) {
return null;
}
if (isSendFlag) {
// 发送邮件
this.sendMonthReport(map, D.getData());
}
return map.get(date);
}
/**
* 区域-加载月报数据 * 区域-加载月报数据
* *
* @param param * @param param
@ -1133,10 +1221,53 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
map.put(mon, list); map.put(mon, list);
}); });
// 推送当月报表邮件 // 推送当月报表邮件
this.sendMonthReport(map, R.getData()); // this.sendMonthReport(map, R.getData());
redisTemplate.opsForValue().set(area_month_report_key, map); redisTemplate.opsForValue().set(area_month_report_key, map);
} }
/**
* 区域-加载月报数据
*
* @param param
*/
@Override
public void loadMonthReportByType(String param, int year,int type) {
// 获取所有机构
R<List<Dept>> R = sysClient.getDeptList();
if (!R.isSuccess() || CollectionUtil.isEmpty(R.getData())) {
return;
}
if (ObjectUtil.isEmpty(type)){
type=HomePageConstant.HYDROPOWER;
}
String saveKey=area_month_report_key;
if (type==HomePageConstant.WIND_POWER){
saveKey=wind_report_month_cache_final;
}
if (type==HomePageConstant.ENERGY_STORAGE){
saveKey=energy_report_month_cache_final;
}
// 查询所有服务类型——"运维服务"、站点类型——"水电站"
List<StationEntity> stationList = stationService.getStationType(HomePageConstant.HYDROPOWER_SERVETYPE, Collections.singletonList(type), null,true);
if (CollectionUtil.isEmpty(stationList)) {
return;
}
// 站点近年发电数据
Map<Long, Map<String, Float>> powerMap = (Map<Long, Map<String, Float>>) redisTemplate.opsForValue().get(RECENT_YEAR_POWER_DATA);
// 存储数据节点 key - 月份 value - 区域数据集合
Map<String, List<AreaMonthReportVo>> map = new HashMap<>();
// 月份集合
List<String> monthList = getMonthList(year, Calendar.getInstance().get(Calendar.MONTH));
monthList.forEach(mon -> {
List<AreaMonthReportVo> list = this.getAreaReportByMon(R.getData(), powerMap, stationList, mon);
if (CollectionUtil.isEmpty(list)) {
return;
}
map.put(mon, list);
});
// 推送当月报表邮件
// this.sendMonthReport(map, R.getData());
redisTemplate.opsForValue().set(saveKey, map);
}
/** /**
* 获取近年月份集合 * 获取近年月份集合
* *

4
hzims-service/operational/src/main/java/com/hnac/hzims/operational/maintenance/service/impl/OperMaintenanceTaskServiceImpl.java

@ -145,7 +145,9 @@ public class OperMaintenanceTaskServiceImpl extends BaseServiceImpl<OperMaintena
if (!CollectionUtils.isEmpty(req.getDeptIds())) { if (!CollectionUtils.isEmpty(req.getDeptIds())) {
in(OperMaintenanceTaskEntity::getCreateDept, req.getDeptIds()); in(OperMaintenanceTaskEntity::getCreateDept, req.getDeptIds());
} }
if (req.getCreateDept() != null) {
eq(OperMaintenanceTaskEntity::getCreateDept, req.getCreateDept());
}
if (StringUtil.isNoneBlank(req.getFlowTaskName())) { if (StringUtil.isNoneBlank(req.getFlowTaskName())) {
eq(OperMaintenanceTaskEntity::getFlowTaskName, req.getFlowTaskName()); eq(OperMaintenanceTaskEntity::getFlowTaskName, req.getFlowTaskName());
} }

85
hzims-service/operational/src/main/resources/files/消缺处理流程.bpmn20.xml

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
<process id="defectCheck" name="消缺处理流程" isExecutable="true">
<startEvent id="startEvent1"></startEvent>
<userTask id="sid-F8BDAAE3-B2FE-496F-B159-2B07E6F2D107" name="甄别问题" flowable:candidateGroups="1402433611392647169">
<extensionElements>
<flowable:taskListener event="create" class="org.springblade.flow.engine.listener.DynamicTaskUserListener"></flowable:taskListener>
<modeler:group-info-name-1402433611392647169 xmlns:modeler="http://flowable.org/modeler"><![CDATA[检修组长(甄别)]]></modeler:group-info-name-1402433611392647169>
<modeler:activiti-idm-candidate-group xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:activiti-idm-candidate-group>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<exclusiveGateway id="sid-5E44F7E3-8279-4DDA-9E3E-77A4AF6DF35A"></exclusiveGateway>
<userTask id="sid-62B7E521-0A01-4D0E-85F6-7A237DC01E12" name="缺陷处理" flowable:candidateUsers="${flowHandler}"></userTask>
<endEvent id="sid-7A78DE5C-0379-471E-A096-6E5466E42AA1"></endEvent>
<userTask id="sid-450C8BF7-FDD6-43D0-AEBD-EAFAFF8480C3" name="缺陷定论" flowable:candidateGroups="1380691110248099841">
<extensionElements>
<flowable:taskListener event="create" class="org.springblade.flow.engine.listener.DynamicTaskUserListener"></flowable:taskListener>
<modeler:group-info-name-1380691110248099841 xmlns:modeler="http://flowable.org/modeler"><![CDATA[项目经理]]></modeler:group-info-name-1380691110248099841>
<modeler:activiti-idm-candidate-group xmlns:modeler="http://flowable.org/modeler"><![CDATA[true]]></modeler:activiti-idm-candidate-group>
<modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
</extensionElements>
</userTask>
<sequenceFlow id="sid-798A609C-7834-4D8D-88BC-AA6A03433AE3" sourceRef="sid-62B7E521-0A01-4D0E-85F6-7A237DC01E12" targetRef="sid-450C8BF7-FDD6-43D0-AEBD-EAFAFF8480C3"></sequenceFlow>
<endEvent id="sid-7833F4F9-CCB9-4FA3-A1FD-EBB3DECD8A3A"></endEvent>
<sequenceFlow id="sid-C7E275D3-2E92-4201-9B14-2F7FFA9E7BEA" sourceRef="sid-450C8BF7-FDD6-43D0-AEBD-EAFAFF8480C3" targetRef="sid-7833F4F9-CCB9-4FA3-A1FD-EBB3DECD8A3A"></sequenceFlow>
<sequenceFlow id="sid-9FAF85B3-288B-42EB-9119-8A2469CC3073" sourceRef="startEvent1" targetRef="sid-F8BDAAE3-B2FE-496F-B159-2B07E6F2D107"></sequenceFlow>
<sequenceFlow id="sid-E27C35CD-5D61-43D8-A05C-5CFBC3E98332" sourceRef="sid-F8BDAAE3-B2FE-496F-B159-2B07E6F2D107" targetRef="sid-5E44F7E3-8279-4DDA-9E3E-77A4AF6DF35A"></sequenceFlow>
<sequenceFlow id="sid-32973C9C-76A1-447C-9D14-62A1EC3D15B7" name="是缺陷" sourceRef="sid-5E44F7E3-8279-4DDA-9E3E-77A4AF6DF35A" targetRef="sid-62B7E521-0A01-4D0E-85F6-7A237DC01E12">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${isDefect==1}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-AC6E6DDC-820F-4110-8450-5067B6E1CD18" name="非缺陷" sourceRef="sid-5E44F7E3-8279-4DDA-9E3E-77A4AF6DF35A" targetRef="sid-7A78DE5C-0379-471E-A096-6E5466E42AA1">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${isDefect==0}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_defectCheck">
<bpmndi:BPMNPlane bpmnElement="defectCheck" id="BPMNPlane_defectCheck">
<bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
<omgdc:Bounds height="30.0" width="30.0" x="74.99999776482586" y="150.0000196216333"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-F8BDAAE3-B2FE-496F-B159-2B07E6F2D107" id="BPMNShape_sid-F8BDAAE3-B2FE-496F-B159-2B07E6F2D107">
<omgdc:Bounds height="80.00000000000003" width="100.0" x="179.99999195337318" y="125.00000183725928"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-5E44F7E3-8279-4DDA-9E3E-77A4AF6DF35A" id="BPMNShape_sid-5E44F7E3-8279-4DDA-9E3E-77A4AF6DF35A">
<omgdc:Bounds height="40.0" width="40.0" x="360.00000903871654" y="145.00000369990445"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-62B7E521-0A01-4D0E-85F6-7A237DC01E12" id="BPMNShape_sid-62B7E521-0A01-4D0E-85F6-7A237DC01E12">
<omgdc:Bounds height="80.0" width="100.0" x="450.0" y="125.00000183725928"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-7A78DE5C-0379-471E-A096-6E5466E42AA1" id="BPMNShape_sid-7A78DE5C-0379-471E-A096-6E5466E42AA1">
<omgdc:Bounds height="27.999999999999993" width="28.0" x="366.0000166681108" y="60.00000275505963"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-450C8BF7-FDD6-43D0-AEBD-EAFAFF8480C3" id="BPMNShape_sid-450C8BF7-FDD6-43D0-AEBD-EAFAFF8480C3">
<omgdc:Bounds height="80.0" width="100.0" x="645.0000148084454" y="125.000018390024"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-7833F4F9-CCB9-4FA3-A1FD-EBB3DECD8A3A" id="BPMNShape_sid-7833F4F9-CCB9-4FA3-A1FD-EBB3DECD8A3A">
<omgdc:Bounds height="28.0" width="28.0" x="825.0000189410348" y="151.00002185680776"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-AC6E6DDC-820F-4110-8450-5067B6E1CD18" id="BPMNEdge_sid-AC6E6DDC-820F-4110-8450-5067B6E1CD18">
<omgdi:waypoint x="380.00001071131436" y="145.00000537669428"></omgdi:waypoint>
<omgdi:waypoint x="380.00001541940827" y="87.9499398138724"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-32973C9C-76A1-447C-9D14-62A1EC3D15B7" id="BPMNEdge_sid-32973C9C-76A1-447C-9D14-62A1EC3D15B7">
<omgdi:waypoint x="399.94170376868516" y="165.00000338946361"></omgdi:waypoint>
<omgdi:waypoint x="449.9999984255562" y="165.00000261258538"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-E27C35CD-5D61-43D8-A05C-5CFBC3E98332" id="BPMNEdge_sid-E27C35CD-5D61-43D8-A05C-5CFBC3E98332">
<omgdi:waypoint x="279.94999195332866" y="165.00000245752005"></omgdi:waypoint>
<omgdi:waypoint x="360.00000903871654" y="165.0000034515518"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-C7E275D3-2E92-4201-9B14-2F7FFA9E7BEA" id="BPMNEdge_sid-C7E275D3-2E92-4201-9B14-2F7FFA9E7BEA">
<omgdi:waypoint x="744.950014360429" y="165.00001959256457"></omgdi:waypoint>
<omgdi:waypoint x="825.0000186376348" y="165.00002151975934"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-798A609C-7834-4D8D-88BC-AA6A03433AE3" id="BPMNEdge_sid-798A609C-7834-4D8D-88BC-AA6A03433AE3">
<omgdi:waypoint x="549.9499998297176" y="165.0000060773133"></omgdi:waypoint>
<omgdi:waypoint x="645.000014808418" y="165.0000141457257"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-9FAF85B3-288B-42EB-9119-8A2469CC3073" id="BPMNEdge_sid-9FAF85B3-288B-42EB-9119-8A2469CC3073">
<omgdi:waypoint x="104.9499968330837" y="165.00001771616456"></omgdi:waypoint>
<omgdi:waypoint x="179.99999180749393" y="165.00000818247014"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

118
hzims-service/operational/src/main/resources/files/隐患排查治理流程.bpmn20.xml

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
<process id="hiddenDangerCheck" name="隐患排查治理流程" isExecutable="true">
<startEvent id="startEvent1" name="隐患上报">
<extensionElements>
<flowable:formProperty id="new_property_1" type="string" default="start"></flowable:formProperty>
</extensionElements>
</startEvent>
<userTask id="sid-1CA1FF60-2EAF-45B3-808A-520B8CABCC35" name="隐患判定" flowable:candidateUsers="${judgeFlow}">
<extensionElements>
<flowable:formProperty id="new_property_1" type="string" default="1"></flowable:formProperty>
</extensionElements>
</userTask>
<userTask id="sid-BBF1AC02-F5EA-4A29-8924-20F6CBFF7563" name="隐患核查" flowable:candidateUsers="${checkPeopleFlow}">
<extensionElements>
<flowable:formProperty id="new_property_1" type="string" default="2"></flowable:formProperty>
</extensionElements>
</userTask>
<userTask id="sid-6B0EC9BD-6783-4226-9191-B2A31C7E91D2" name="隐患整改" flowable:candidateUsers="${rectifierFlow}">
<extensionElements>
<flowable:formProperty id="new_property_1" type="string" default="3"></flowable:formProperty>
</extensionElements>
</userTask>
<exclusiveGateway id="sid-404D825E-656A-47F7-ADEF-F8EC1F5C3EB1"></exclusiveGateway>
<userTask id="sid-76242BA7-1758-42C2-94C3-0843718D4A48" name="隐患验收" flowable:candidateUsers="${conclusionPeopleFlow}">
<extensionElements>
<flowable:formProperty id="new_property_1" type="string" default="4"></flowable:formProperty>
</extensionElements>
</userTask>
<endEvent id="sid-3687F74B-82AE-4680-AE4F-02FBBF349DB0"></endEvent>
<exclusiveGateway id="sid-17C75D03-E494-4A91-87FB-D3F89E399019"></exclusiveGateway>
<sequenceFlow id="sid-D338E1F1-49BC-4C1E-9692-4DE85B5672D9" sourceRef="sid-1CA1FF60-2EAF-45B3-808A-520B8CABCC35" targetRef="sid-404D825E-656A-47F7-ADEF-F8EC1F5C3EB1"></sequenceFlow>
<sequenceFlow id="sid-3FD90637-D17D-496E-901B-F8C4504900A0" sourceRef="sid-BBF1AC02-F5EA-4A29-8924-20F6CBFF7563" targetRef="sid-6B0EC9BD-6783-4226-9191-B2A31C7E91D2"></sequenceFlow>
<sequenceFlow id="sid-09D94D7E-EDA3-4CBA-BB6C-DE18C1A166FB" sourceRef="sid-6B0EC9BD-6783-4226-9191-B2A31C7E91D2" targetRef="sid-76242BA7-1758-42C2-94C3-0843718D4A48"></sequenceFlow>
<sequenceFlow id="sid-214DD9DA-EEFB-406A-94FC-30295DCECABA" sourceRef="sid-76242BA7-1758-42C2-94C3-0843718D4A48" targetRef="sid-17C75D03-E494-4A91-87FB-D3F89E399019"></sequenceFlow>
<sequenceFlow id="sid-7DF139A0-50B9-488D-BB45-07F0500D3C8E" name="是隐患" sourceRef="sid-404D825E-656A-47F7-ADEF-F8EC1F5C3EB1" targetRef="sid-BBF1AC02-F5EA-4A29-8924-20F6CBFF7563">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${judgeRes==1}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-9DAD4E3F-EEDF-47CA-A0AC-3438BF769C4B" name="非是隐患" sourceRef="sid-404D825E-656A-47F7-ADEF-F8EC1F5C3EB1" targetRef="sid-3687F74B-82AE-4680-AE4F-02FBBF349DB0">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${judgeRes==0}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-E1F8433C-F368-436A-8FBD-3F5C801ED721" name="验收不通过" sourceRef="sid-17C75D03-E494-4A91-87FB-D3F89E399019" targetRef="sid-6B0EC9BD-6783-4226-9191-B2A31C7E91D2">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${conclusionRes==0}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-5A5C84CA-4E2E-4890-9793-ED0861254301" name="验收通过" sourceRef="sid-17C75D03-E494-4A91-87FB-D3F89E399019" targetRef="sid-3687F74B-82AE-4680-AE4F-02FBBF349DB0">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${conclusionRes==1}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-27BC2662-8441-40E2-89D2-E7EFAAF850A9" sourceRef="startEvent1" targetRef="sid-1CA1FF60-2EAF-45B3-808A-520B8CABCC35"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_hiddenDangerCheck">
<bpmndi:BPMNPlane bpmnElement="hiddenDangerCheck" id="BPMNPlane_hiddenDangerCheck">
<bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
<omgdc:Bounds height="30.0" width="30.0" x="134.9999959766866" y="374.9999665319939"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-1CA1FF60-2EAF-45B3-808A-520B8CABCC35" id="BPMNShape_sid-1CA1FF60-2EAF-45B3-808A-520B8CABCC35">
<omgdc:Bounds height="48.00000047683716" width="71.00000043213367" x="254.9999810010204" y="365.9999553859266"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-BBF1AC02-F5EA-4A29-8924-20F6CBFF7563" id="BPMNShape_sid-BBF1AC02-F5EA-4A29-8924-20F6CBFF7563">
<omgdc:Bounds height="46.00000049173832" width="74.00000038743025" x="479.9999713897718" y="367.99995559454277"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-6B0EC9BD-6783-4226-9191-B2A31C7E91D2" id="BPMNShape_sid-6B0EC9BD-6783-4226-9191-B2A31C7E91D2">
<omgdc:Bounds height="49.000000476837215" width="73.00000040233147" x="644.9999519437577" y="366.4999665543455"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-404D825E-656A-47F7-ADEF-F8EC1F5C3EB1" id="BPMNShape_sid-404D825E-656A-47F7-ADEF-F8EC1F5C3EB1">
<omgdc:Bounds height="40.0" width="40.0" x="389.999982565642" y="369.99997770786376"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-76242BA7-1758-42C2-94C3-0843718D4A48" id="BPMNShape_sid-76242BA7-1758-42C2-94C3-0843718D4A48">
<omgdc:Bounds height="51.000000432133675" width="67.00000050663948" x="779.999965131284" y="365.4999665915984"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-3687F74B-82AE-4680-AE4F-02FBBF349DB0" id="BPMNShape_sid-3687F74B-82AE-4680-AE4F-02FBBF349DB0">
<omgdc:Bounds height="28.0" width="28.0" x="1064.9998889118506" y="376.999955572191"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="sid-17C75D03-E494-4A91-87FB-D3F89E399019" id="BPMNShape_sid-17C75D03-E494-4A91-87FB-D3F89E399019">
<omgdc:Bounds height="40.0" width="40.0" x="914.999959096314" y="370.99995575100496"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sid-27BC2662-8441-40E2-89D2-E7EFAAF850A9" id="BPMNEdge_sid-27BC2662-8441-40E2-89D2-E7EFAAF850A9">
<omgdi:waypoint x="164.94999505130716" y="389.9999653674761"></omgdi:waypoint>
<omgdi:waypoint x="254.99998094146997" y="389.9999583764889"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-09D94D7E-EDA3-4CBA-BB6C-DE18C1A166FB" id="BPMNEdge_sid-09D94D7E-EDA3-4CBA-BB6C-DE18C1A166FB">
<omgdi:waypoint x="717.9497086084729" y="390.9999667968788"></omgdi:waypoint>
<omgdi:waypoint x="779.9994432256531" y="390.99996680388347"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-9DAD4E3F-EEDF-47CA-A0AC-3438BF769C4B" id="BPMNEdge_sid-9DAD4E3F-EEDF-47CA-A0AC-3438BF769C4B">
<omgdi:waypoint x="410.499982565642" y="409.4365570322147"></omgdi:waypoint>
<omgdi:waypoint x="410.499982565642" y="461.0"></omgdi:waypoint>
<omgdi:waypoint x="1078.9998889118503" y="461.0"></omgdi:waypoint>
<omgdi:waypoint x="1078.9998889118503" y="404.94989926185485"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-E1F8433C-F368-436A-8FBD-3F5C801ED721" id="BPMNEdge_sid-E1F8433C-F368-436A-8FBD-3F5C801ED721">
<omgdi:waypoint x="935.499959096314" y="371.499955751005"></omgdi:waypoint>
<omgdi:waypoint x="935.499959096314" y="325.0"></omgdi:waypoint>
<omgdi:waypoint x="680.5" y="325.0"></omgdi:waypoint>
<omgdi:waypoint x="680.5" y="366.4999665543455"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-5A5C84CA-4E2E-4890-9793-ED0861254301" id="BPMNEdge_sid-5A5C84CA-4E2E-4890-9793-ED0861254301">
<omgdi:waypoint x="954.509550344249" y="391.4335221281242"></omgdi:waypoint>
<omgdi:waypoint x="1064.9999718500032" y="391.04856165832416"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-3FD90637-D17D-496E-901B-F8C4504900A0" id="BPMNEdge_sid-3FD90637-D17D-496E-901B-F8C4504900A0">
<omgdi:waypoint x="553.9499717770799" y="390.9999601076708"></omgdi:waypoint>
<omgdi:waypoint x="644.9999519437577" y="390.9999667201396"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-D338E1F1-49BC-4C1E-9692-4DE85B5672D9" id="BPMNEdge_sid-D338E1F1-49BC-4C1E-9692-4DE85B5672D9">
<omgdi:waypoint x="325.9499814331541" y="390.49995644172753"></omgdi:waypoint>
<omgdi:waypoint x="390.49997753521234" y="390.49997267743413"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-7DF139A0-50B9-488D-BB45-07F0500D3C8E" id="BPMNEdge_sid-7DF139A0-50B9-488D-BB45-07F0500D3C8E">
<omgdi:waypoint x="428.5259741729652" y="391.41772516429126"></omgdi:waypoint>
<omgdi:waypoint x="479.9999707887046" y="391.41771813407576"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="sid-214DD9DA-EEFB-406A-94FC-30295DCECABA" id="BPMNEdge_sid-214DD9DA-EEFB-406A-94FC-30295DCECABA">
<omgdi:waypoint x="846.9499656379227" y="391.13705394818504"></omgdi:waypoint>
<omgdi:waypoint x="915.4176563928215" y="391.4176530475125"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>

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

@ -61,6 +61,7 @@ public class OfflineTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMapp
private final IWorkTicketContentService contentService; private final IWorkTicketContentService contentService;
private final IUserClient userClient; private final IUserClient userClient;
private final IWorkTicketFlowService workTicketFlowService; private final IWorkTicketFlowService workTicketFlowService;
private Lock lock = new ReentrantLock();
/** /**
* 线下工作票开票 * 线下工作票开票
@ -175,7 +176,6 @@ public class OfflineTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMapp
}); });
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMM"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMM");
String yearMonth = YearMonth.now().format(formatter); String yearMonth = YearMonth.now().format(formatter);
Lock lock = new ReentrantLock();
lock.lock(); lock.lock();
try { try {
LocalDateTime date = LocalDateTime.now(); LocalDateTime date = LocalDateTime.now();

2
pom.xml

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

Loading…
Cancel
Save