Compare commits

...

10 Commits

  1. 31
      .gitignore
  2. 7
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/entity/ImsDutyMainEntity.java
  3. 3
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/entity/ImsDutyRecEntity.java
  4. 24
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/vo/ExchangeGroupLeader.java
  5. 42
      hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/vo/ImsSchedulingNewVo.java
  6. 52
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/entity/PlanFlowResultInfo.java
  7. 12
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/entity/PlanResultInfo.java
  8. 3
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/vo/MessageWaterDispatchVo.java
  9. 12
      hzims-service-api/message-alarm-api/src/main/java/com/hnac/hzims/message_alarm/vo/ReportVo.java
  10. 1
      hzims-service-api/pom.xml
  11. 5
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/feign/IDangerSourceClient.java
  12. 5
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/feign/IDangerSourceClientFallBack.java
  13. 3
      hzims-service-api/weather-api/src/main/java/com/hnac/hzims/hzimsweather/HeWeatherInitialize.java
  14. 21
      hzims-service/assets/src/main/java/com/hnac/hzims/spare/service/impl/WtSpBasicServiceImpl.java
  15. 7
      hzims-service/digital-twin-display/pom.xml
  16. 4
      hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java
  17. 1
      hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/PlanTaskController.java
  18. 6
      hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/feign/EmInfoClient.java
  19. BIN
      hzims-service/inspect/lib/blade-starter-oss-minio-2.7.3.RELEASE.jar
  20. 10
      hzims-service/inspect/pom.xml
  21. 3
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/obj/services/IObjectDangerService.java
  22. 40
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/obj/services/impl/ObjectDangerServiceImpl.java
  23. 7
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/plan/feign/InspectPlanClient.java
  24. 2
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/plan/service/IPlanService.java
  25. 13
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/plan/service/impl/PlanServiceImpl.java
  26. 94
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/controller/TaskController.java
  27. 2
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/job/TaskJob.java
  28. 12
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/job/service/impl/SeizeTaskService.java
  29. 1
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/mapper/TaskMapper.java
  30. 39
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/mapper/TaskMapper.xml
  31. 4
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskObjectProjectContentService.java
  32. 2
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/ITaskService.java
  33. 11
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskObjectProjectContentServiceImpl.java
  34. 51
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskObjectServiceImpl.java
  35. 13
      hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/task/service/impl/TaskServiceImpl.java
  36. 1
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/dto/HisDataResultDTO.java
  37. 7
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/mapper/PlanFlowResultInfoMapper.java
  38. 4
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/mapper/PlanFlowResultInfoMapper.xml
  39. 7
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/IPlanFlowResultInfoService.java
  40. 8
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/MessageWaterLevelServiceImpl.java
  41. 11
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/PlanFlowResultInfoServiceImpl.java
  42. 185
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/service/impl/PlanInfoServiceImpl.java
  43. 50
      hzims-service/message-alarm-service/src/main/java/com/hnac/hzims/message_alarm/xxljob/ForecastOperationJob.java
  44. 2
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/alert/service/impl/HistoryAbnormalAlarmServiceImpl.java
  45. 46
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/DemoController.java
  46. 7
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyGroupController.java
  47. 51
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyMainController.java
  48. 13
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyRecController.java
  49. 26
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/entity/SchedulingExcelDTO.java
  50. 7
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyMainService.java
  51. 3
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/IImsDutyRecService.java
  52. 30
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyGroupServiceImpl.java
  53. 566
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyMainServiceImpl.java
  54. 7
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyRecServiceImpl.java
  55. 33
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/utils/ExcelToolListener.java
  56. 348
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/utils/ExcelUtil.java
  57. 20
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/HydropowerServiceImpl.java
  58. 6
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/vo/AppAreaDutyVo.java
  59. 13
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/feign/DangerSourceClient.java
  60. BIN
      hzims-service/ticket/lib/spire.xls.free-3.9.1.jar
  61. 2
      hzims-service/ticket/pom.xml
  62. 4
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/OperationTicketServiceImpl.java
  63. 3
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/FirstWorkTicketServiceImpl.java
  64. 2
      hzims-service/weather/src/main/java/com/hnac/hzims/weather/aspect/WeatherCacheAspect.java

31
.gitignore vendored

@ -1,8 +1,23 @@
*.idea
/hzims-biz-common/target
/hzims-service/*/target
/hzims-service-api/*/target
log
*.class
*.project
# Mobile Tools for Java (J2ME)
.mtj.tmp/
.springBeans
# Package Files #
*.jar
*.war
*.ear
.DS_Store
hs_err_pid*
.factorypath
.project
.gradle/
.idea/
.settings/
*.iml
.classpath
build/
target/
*.logs
*.log
logs/

7
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/entity/ImsDutyMainEntity.java

@ -37,7 +37,9 @@ public class ImsDutyMainEntity extends TenantEntity {
@ApiModelProperty(value = "值班组id")
private Long dutyGroupId;
@TableField(exist = false)
@ApiModelProperty(value = "值班组名称")
private String dutyGroupName;
/**
* 值班人IDS, ID之间用^隔开
*/
@ -72,4 +74,7 @@ public class ImsDutyMainEntity extends TenantEntity {
@ApiModelProperty(value = "备注")
private String remark;
@TableField(exist = false)
private Long manageId;//值班长id
}

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

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

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

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

42
hzims-service-api/hzims-operational-api/src/main/java/com/hnac/hzims/operational/duty/vo/ImsSchedulingNewVo.java

@ -0,0 +1,42 @@
package com.hnac.hzims.operational.duty.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
public class ImsSchedulingNewVo implements Serializable {
@ApiModelProperty(value = "班组ID 通过^隔开",required = true)
private String groupIds;
// @ApiModelProperty(value = "班组名称 通过^隔开",required = true)
// private String groupNames;
@ApiModelProperty(value = "班次ID 通过^隔开",required = true)
private String classIds;
@ApiModelProperty(value = "班次名称 通过^隔开",required = true)
private String classNames;
@ApiModelProperty(value = "开始时间",required = true)
private String startDate;
@ApiModelProperty(value = "结束时间",required = true)
private String endDate;
private Long deptId;//机构id
@ApiModelProperty("人员类型: 1、班组 2 、人员")
private Integer personType;
//人员组
List<Map<String,String>> personIds; //人员用 managerId 值长id personIds 人员ids 多个^隔开(不包含值长id)
@ApiModelProperty("班次类型ID")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long dutyClassTypeId;
}

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

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

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

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

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

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

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

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

1
hzims-service-api/pom.xml

@ -28,7 +28,6 @@
<module>common-api</module>
<module>middle-api</module>
<module>base-info-api</module>
<module>digital-twin-display-api</module>
<module>dam-safety-api</module>
<module>video-image-api</module>
<module>water-quality-api</module>

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

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

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

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

3
hzims-service-api/weather-api/src/main/java/com/hnac/hzims/hzimsweather/HeWeatherInitialize.java

@ -16,7 +16,8 @@ public class HeWeatherInitialize {
HeWeatherInitialize.publicId = publicId;
HeWeatherInitialize.privateKey = privateKey;
//HeWeatherInitialize.domain = "https://api.heweather.net";
HeWeatherInitialize.domain = "https://devapi.qweather.com";
//HeWeatherInitialize.domain = "https://devapi.qweather.com";
HeWeatherInitialize.domain = "https://px5khukpur.re.qweatherapi.com";
HeWeatherInitialize.geoDomain = "https://geoapi.heweather.net";
}

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

@ -32,7 +32,6 @@ import com.hnac.hzims.spare.utils.ExcelToolListener;
import com.hnac.hzims.spare.utils.SheetWriteStyleHandler;
import com.hnac.hzims.spare.vo.WtSpBasicVO;
import com.hnac.hzims.ticket.allTicket.fegin.ITicketInfoAllClient;
import com.hnac.hzims.ticket.allTicket.vo.TicketInfoStatisticVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@ -177,12 +176,20 @@ public class WtSpBasicServiceImpl extends BaseServiceImpl<WtSpBasicMapper, WtSpB
if (Func.isNotEmpty(spBasicEntity.getName()) && "工具".equals(spBasicEntity.getName())) {
// if(Func.isNotEmpty(spBasicEntity.getName())){
List<WtSpManagementEntity> list = managementService.list(Wrappers.<WtSpManagementEntity>query().lambda().
eq(WtSpManagementEntity::getName, spBasicEntity.getName()));
if (list.size() == 0) {
eq(WtSpManagementEntity::getName, spBasicEntity.getName())
.eq(WtSpManagementEntity::getId,spBasicEntity.getManagementId()));
List<Long> longList = new ArrayList<>();
if (list==null && list.size() == 0) {
if(spBasicEntity.getManagementId() != null) {
longList.add(spBasicEntity.getManagementId());
queryWrapper.lambda().in(WtSpBasicEntity::getManagementId, longList);
}else{
return null;
}
}else{
List<WtSpManagementEntity> result = managementService.list(Wrappers.<WtSpManagementEntity>query().lambda().like(WtSpManagementEntity::getAncestors, list.get(0).getId()));
List<Long> longList = new ArrayList<>();
if (result.size() > 0) {
for (int i = 0; i < result.size(); i++) {
longList.add(result.get(i).getId());
@ -195,7 +202,9 @@ public class WtSpBasicServiceImpl extends BaseServiceImpl<WtSpBasicMapper, WtSpB
} else {
return voPages;
}
spBasicEntity.setName(null);
}
// spBasicEntity.setName(null);
}
//调拨单新增特殊处理
if (Func.isNotEmpty(sign)) {
@ -247,7 +256,7 @@ public class WtSpBasicServiceImpl extends BaseServiceImpl<WtSpBasicMapper, WtSpB
}
BeanUtils.copyProperties(basicEntity, basicVO);
List<TicketInfoStatisticVO> ticketVOS = ticketInfoAllClient.getTicketStatistic("2022-02");
// List<TicketInfoStatisticVO> ticketVOS = ticketInfoAllClient.getTicketStatistic("2022-02");
// R<Dept> deptR = sysClient.getDept(basicEntity.getWaterPlantId());
// if(Func.isNotEmpty(deptR.getData())){

7
hzims-service/digital-twin-display/pom.xml

@ -49,13 +49,6 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.hnac.hzims</groupId>
<artifactId>digital-twin-display-api</artifactId>
<version>${hzims.project.version}</version>
</dependency>
<dependency>
<groupId>com.hnac.hzinfo.data</groupId>
<artifactId>hzinfo-data-sdk</artifactId>

4
hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/BaseInfoController.java

@ -5,10 +5,6 @@ import com.hnac.hzims.baseinfo.util.CommonUtil;
import com.hnac.hzims.equipment.entity.EmOreanizationEntity;
import com.hnac.hzims.equipment.entity.EmTreeNode;
import com.hnac.hzims.equipment.vo.EmInfoVO;
import com.hnac.hzims.hzimsweather.response.weather.HeWeatherWeatherDailyResponse;
import com.hnac.hzims.hzimsweather.response.weather.HeWeatherWeatherNowResponse;
import com.hnac.hzims.hzimsweather.vo.RainFallCountByMonthVo;
import com.hnac.hzims.message_alarm.entity.MessageReceiveStatusInfo;
import com.hnac.hzims.twindisplay.service.IDigitalBaseInfoService;
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData;
import io.swagger.annotations.*;

1
hzims-service/digital-twin-display/src/main/java/com/hnac/hzims/twindisplay/controller/PlanTaskController.java

@ -9,7 +9,6 @@ import com.hnac.hzinfo.inspect.task.feign.ITaskClient;
import com.hnac.hzinfo.inspect.task.vo.TaskListQuery;
import com.hnac.hzinfo.inspect.task.vo.TaskVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

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

@ -30,11 +30,11 @@ import java.util.stream.Collectors;
@RestController
public class EmInfoClient implements IEmInfoClient {
@Autowired
IEmInfoService service;
private IEmInfoService service;
@Autowired
IEmParamService paramService;
private IEmParamService paramService;
@Autowired
IEmAttachService attachService;
private IEmAttachService attachService;
@RequestMapping(value = DETAIL)

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

Binary file not shown.

10
hzims-service/inspect/pom.xml

@ -122,6 +122,8 @@
<groupId>org.springblade</groupId>
<artifactId>blade-starter-oss-minio</artifactId>
<version>2.7.3.RELEASE</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/blade-starter-oss-minio-2.7.3.RELEASE.jar</systemPath>
</dependency>
<dependency>
<groupId>com.hnac.hzims</groupId>
@ -241,6 +243,14 @@
<!-- <artifactId>maven-antrun-plugin</artifactId>-->
<!-- </plugin>-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--设置为true,以便把本地的system的jar也包括进来-->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>

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

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

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

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

7
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/plan/feign/InspectPlanClient.java

@ -3,6 +3,7 @@ package com.hnac.hzinfo.inspect.plan.feign;
import com.hnac.hzinfo.inspect.plan.service.IPlanService;
import com.hnac.hzinfo.inspect.plan.vo.PlanVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -17,6 +18,7 @@ import java.util.List;
@RestController
@RequestMapping(value = "/feign/plan")
@Slf4j
public class InspectPlanClient implements IInspectPlanClient {
@Autowired
private IPlanService planService;
@ -24,6 +26,11 @@ public class InspectPlanClient implements IInspectPlanClient {
@PostMapping("/addPlanAndChecked")
@Override
public R<List<Long>> addPlanAndChecked(PlanVO plan) {
boolean flag=planService.checkName(plan.getName());
log.error("交班巡检计划创建校验计划:{}",flag);
if(flag) {
return R.fail("交班巡检计划已存在");
}
return R.data(planService.addAndChecked(plan));
}
}

2
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/plan/service/IPlanService.java

@ -61,4 +61,6 @@ public interface IPlanService extends BaseService<PlanEntity> {
List<PlanOfflineVO> getPlans(List<Long> planIds);
Boolean revoke(Long planId);
boolean checkName(String name);
}

13
hzims-service/inspect/src/main/java/com/hnac/hzinfo/inspect/plan/service/impl/PlanServiceImpl.java

@ -1,5 +1,6 @@
package com.hnac.hzinfo.inspect.plan.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hnac.hzinfo.inspect.plan.vo.PlanOfflineVO;
import org.springblade.system.feign.ISysClient;
import com.alibaba.fastjson.JSON;
@ -123,6 +124,18 @@ public class PlanServiceImpl extends BaseServiceImpl<PlanMapper, PlanEntity> imp
return re;
}
@Override
public boolean checkName(String name) {
LambdaQueryWrapper<PlanEntity> uw = new LambdaQueryWrapper<>();
uw.eq(PlanEntity::getName,name);
uw.eq(PlanEntity::getIsDeleted,0);
List<PlanEntity> list=this.list(uw);
if(list!=null && !list.isEmpty()){
return true;
}
return false;
}
/**
* 保存巡检计划
*/

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

@ -1,6 +1,8 @@
package com.hnac.hzinfo.inspect.task.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -141,6 +143,10 @@ public class TaskController extends BladeController {
}
if (task.getCurUserId() == -1) {
task.setCurUserId(null);
// if(task.getCreateDept()==null) {
// String deptId=AuthUtil.getDeptId();
// task.setCreateDept(Long.valueOf(deptId));
// }
}
List<TaskVo> list = taskService.getListPage(pages,task);
pages.setRecords(list);
@ -221,6 +227,15 @@ public class TaskController extends BladeController {
task.setCurUserId(AuthUtil.getUserId());
task.setTenantId(AuthUtil.getTenantId());
}
// if (task.getCurUserId() == -1) {
// task.setCurUserId(null);
// if(task.getCreateDept()==null) {
// String deptId=AuthUtil.getDeptId();
// task.setCreateDept(Long.valueOf(deptId));
// }
// }
List<TaskVo> list = taskService.getListPageOfPhone(pages,task);
pages.setRecords(list);
return R.data(pages);
@ -239,6 +254,19 @@ public class TaskController extends BladeController {
return R.data(pages);
}
@RequestMapping(value = "/getDeptTaskList", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperation(value = "获取机构下的所有巡检任务列表", notes = "传入task")
public R<IPage<TaskVo>> getDeptTaskList(TaskListQuery task, Query query) {
IPage<TaskVo> pages = Condition.getPage(query);
if(task.getCreateDept()==null) {//默认当前登录人机构
String deptId = AuthUtil.getDeptId();
task.setCreateDept(Long.valueOf(deptId));
}
List<TaskVo> list = taskService.getDeptTaskList(pages,task);
pages.setRecords(list);
return R.data(pages);
}
/**
* 开始任务
*/
@ -326,43 +354,43 @@ public class TaskController extends BladeController {
return R.data(list);
}
@Autowired
private IPushClient pushClient;
// @Autowired
// private IPushClient pushClient;
/**
* 测试消息推送
*/
@GetMapping("/testPush")
@ApiOperation(value = "测试消息推送", notes = "测试消息推送")
public R<Boolean> testPush(@ApiParam(value = "tags 多个,隔开", required = false) @RequestParam String tags,
@ApiParam(value = "tenantId", required = false) @RequestParam String tenantId) {
// 移动端消息推送 : 使用 用户id做TAG,前端注册用户id为TAG
PushInfoVO pushInfoVO = new PushInfoVO();
if(Func.isNotEmpty(tenantId)){
pushInfoVO.setTenantId(tenantId);
} else {
pushInfoVO.setTenantId(AuthUtil.getTenantId());
}
PushPlatform platform = PushPlatform.all();
Map<PushAudienceType, List<String>> audienceMap = new HashMap<>();
if(Func.isNotEmpty(tags)){
audienceMap.put(PushAudienceType.TAG, Arrays.asList(tags));
} else {
audienceMap.put(PushAudienceType.TAG, Arrays.asList("test"));
}
PushAudience audience = new PushAudience(false, audienceMap);
PushInfo pushInfo = new PushInfo("hzinfo-inspect"
, "测试后。。。。1"
, "测试内容"
, "测试后。。。。2"
, null
, platform
, audience);
pushInfoVO.setPushInfo(pushInfo);
pushClient.tenantPush(pushInfoVO);
return R.status(true);
}
// @GetMapping("/testPush")
// @ApiOperation(value = "测试消息推送", notes = "测试消息推送")
// public R<Boolean> testPush(@ApiParam(value = "tags 多个,隔开", required = false) @RequestParam String tags,
// @ApiParam(value = "tenantId", required = false) @RequestParam String tenantId) {
// // 移动端消息推送 : 使用 用户id做TAG,前端注册用户id为TAG
// PushInfoVO pushInfoVO = new PushInfoVO();
// if(Func.isNotEmpty(tenantId)){
// pushInfoVO.setTenantId(tenantId);
// } else {
// pushInfoVO.setTenantId(AuthUtil.getTenantId());
// }
//
// PushPlatform platform = PushPlatform.all();
// Map<PushAudienceType, List<String>> audienceMap = new HashMap<>();
// if(Func.isNotEmpty(tags)){
// audienceMap.put(PushAudienceType.TAG, Arrays.asList(tags));
// } else {
// audienceMap.put(PushAudienceType.TAG, Arrays.asList("test"));
// }
// PushAudience audience = new PushAudience(false, audienceMap);
// PushInfo pushInfo = new PushInfo("hzinfo-inspect"
// , "测试后。。。。1"
// , "测试内容"
// , "测试后。。。。2"
// , null
// , platform
// , audience);
// pushInfoVO.setPushInfo(pushInfo);
// pushClient.tenantPush(pushInfoVO);
// return R.status(true);
// }

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

@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
@ -97,6 +98,7 @@ public class TaskJob {
//关闭超过计划结束时间暂停状态或者已审核或者派发中的巡检计划
UpdateWrapper<PlanEntity> uwPlan = new UpdateWrapper<>();
uwPlan.lambda().set(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.FINISH_STATUS.getStatus()))
.set(PlanEntity::getUpdateTime,new Date())
.in(PlanEntity::getStatus, Integer.valueOf(PlanStatusEnum.PAUSE_STATUS.getStatus()),
Integer.valueOf(PlanStatusEnum.CHECK_STATUS.getStatus()),
Integer.valueOf(PlanStatusEnum.UNDERWAY_STATUS.getStatus()))

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

@ -105,8 +105,8 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
if(taskUserList.size()>0){
taskUserService.saveBatch(taskUserList);
} else {
log.error("没有用户: plan = " + plan.toString());
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + plan.toString());
log.error("没有用户: plan = " + JSONObject.toJSONString(plan));
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + JSONObject.toJSONString(plan));
}
}
@ -126,7 +126,7 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
/** 多次计划执行时间 **/
timeJsonArray = JSON.parseArray(plan.getExecTimeJson());
} else {
log.error("巡检计划未设置值班班次: plan = " + plan.toString());
log.error("巡检计划未设置值班班次: plan = " + JSONObject.toJSONString(plan));
return taskIds;
}
/** 多次任务 **/
@ -157,7 +157,7 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
}
}
} else {
log.error("获取该班次值班人员为空, plan = " + plan.toString());
log.error("获取该班次值班人员为空, plan = " + JSONObject.toJSONString(plan));
return taskIds;
}
String reason = this.distributeTaskObjs(plan,task);
@ -229,8 +229,8 @@ public class SeizeTaskService extends TaskJobService implements ITaskJobService
if(taskUserList.size()>0){
taskUserService.saveBatch(taskUserList);
} else {
log.error("没有用户: plan = " + plan.toString());
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + plan.toString());
log.error("没有用户: plan = " + JSONObject.toJSONString(plan));
XxlJobLogger.log("SeizeTaskService...没有任务用户: plan = " + JSONObject.toJSONString(plan));
}
return taskIds;
}

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

@ -58,6 +58,7 @@ public interface TaskMapper extends UserDataScopeBaseMapper<TaskEntity> {
* @return
*/
List<TaskVo> getFinishTaskList(@Param("page") IPage<TaskVo> page,@Param("task") TaskListQuery task);
List<TaskVo> getDeptTaskList(@Param("page") IPage<TaskVo> page,@Param("task") TaskListQuery task);
/**
* phone端任务列表 不分页

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

@ -126,6 +126,9 @@
SELECT t.*,u.USER_ID from HZ_ST_EX_TASK t
LEFT JOIN HZ_ST_EX_TASK_USER u on t.ID=u.TASK_ID
where t.IS_DELETED=0 and u.IS_DELETED=0
<if test="task.createDept!=null">
and t.CREATE_DEPT like concat(#{task.createDept}, '%')
</if>
<if test="task.dutyId != null ">
and t.DUTY_ID=#{task.dutyId}
</if>
@ -215,6 +218,39 @@
order by t.UPDATE_TIME desc
</select>
<select id="getDeptTaskList" parameterType="com.hnac.hzinfo.inspect.task.vo.TaskListQuery" resultType="com.hnac.hzinfo.inspect.task.vo.TaskVo">
SELECT t.* from HZ_ST_EX_TASK t
where t.IS_DELETED=0
<if test="task.createDept!=null">
and t.CREATE_DEPT like concat(#{task.createDept}, '%')
</if>
<if test="task.planName != null and task.planName != ''">
and t.PLAN_NAME like concat('%', #{task.planName}, '%')
</if>
<if test="task.batchNumber != null and task.batchNumber != ''">
and t.BATCH_NUMBER like concat('%', #{task.batchNumber}, '%')
</if>
<if test="task.planStartTime != null">
and t.PLAN_START_TIME &gt;= #{task.planStartTime}
</if>
<if test="task.planEndTime != null">
and t.PLAN_START_TIME &lt;= #{task.planEndTime}
</if>
<if test="task.startTime != null">
and t.PLAN_END_TIME &gt;= #{task.startTime}
</if>
<if test="task.cycle != null and task.cycle != ''">
and t.CYCLE=#{task.cycle}
</if>
<if test="task.objectId != null and task.objectId != ''">
and tobj.OBJECT_ID=#{task.objectId}
</if>
<if test="task.autoVideo != null">
and t.AUTO_VIDEO=#{task.autoVideo}
</if>
order by t.UPDATE_TIME desc
</select>
<!--手机端任务列表 只显示 0未开始 1进行中 2暂停-->
<select id="getListPageOfPhone" parameterType="com.hnac.hzinfo.inspect.task.vo.TaskListQuery" resultType="com.hnac.hzinfo.inspect.task.vo.TaskVo">
SELECT t.* from HZ_ST_EX_TASK t
@ -222,6 +258,9 @@
left join HZ_ST_EX_OBJECT tobj on t.ID=tobj.TASK_ID
where t.IS_DELETED=0 and u.IS_DELETED=0 and tobj.IS_DELETED=0 and u.USER_ID=#{task.curUserId} and t.TENANT_ID = #{task.tenantId}
and t.STATUS in(0,1,2)
<if test="task.createDept!=null">
and t.CREATE_DEPT like concat(#{task.createDept}, '%')
</if>
<if test="task.planName != null and task.planName != ''">
and t.PLAN_NAME like concat('%', #{task.planName}, '%')
</if>

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

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

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

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

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

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

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

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

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

@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.hnac.hzims.common.utils.Condition;
import com.hnac.hzims.safeproduct.Constants;
import com.hnac.hzims.safeproduct.entity.DangerSourceEntity;
import com.hnac.hzims.safeproduct.entity.ImsMonCameraInfoEntity;
import com.hnac.hzims.safeproduct.feign.IImsMonCameraInfoClient;
import com.hnac.hzims.vo.SafeCheckStatisticVO;
@ -511,8 +512,11 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, TaskEntity> imp
TaskObjectEntity toQuery = new TaskObjectEntity();
toQuery.setTaskId(id);
List<TaskObjectVO> result = taskObjectService.getTaskObjectsDetail(toQuery);
List<Long> objectIds=result.stream().map(TaskObjectVO::getObjId).collect(Collectors.toList());
Map<Long,List<DangerSourceEntity>> listMap=objectDangerService.getDangerDetail(objectIds);
result.forEach(vo -> {
vo.setDangers(objectDangerService.getDangerDetailByObjectId(vo.getObjId()));
vo.setDangers(listMap.get(vo.getObjId()));
vo.setOrder(routMap.get(vo.getObjId()));
log.info("---routMap:{};objId:{}---", JSONObject.toJSONString(routMap), vo.getObjId());
});
@ -614,6 +618,13 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, TaskEntity> imp
return re;
}
@Override
public List<TaskVo> getDeptTaskList(IPage<TaskVo> page, TaskListQuery task) {
List<TaskVo> re = this.baseMapper.getDeptTaskList(page, task);
setVoInfo(re);
return re;
}
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean cancelStart(Long taskId) {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -65,7 +65,7 @@ public class HistoryAbnormalAlarmServiceImpl extends BaseServiceImpl<HistoryAbno
private final ISoeClient alarmClient;
@Value("${hzims.operation.alarm.types}")
private String types;
String types;
/**
* 查询单条历史告警

46
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/DemoController.java

@ -1,46 +0,0 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.hnac.hzims.operational.duty.controller;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Demo控制器
*
* @author Chill
*/
@RefreshScope
@RestController
@RequestMapping("demo")
@Api(value = "配置接口", tags = "即时刷新配置")
public class DemoController {
//@Value("${duty.name}")
private String name;
@GetMapping("name")
public String getName() {
return name;
}
}

7
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/controller/ImsDutyGroupController.java

@ -128,6 +128,13 @@ public class ImsDutyGroupController extends BladeController {
@ApiOperationSupport(order = 7)
@ApiOperation(value = "设置班组长", notes = "传入imsDutyGroup")
public R manager(@Valid @RequestBody ImsDutyGroupEntity imsDutyGroup) {
LambdaQueryWrapper<ImsDutyGroupEntity> wrapper=new LambdaQueryWrapper<>();
wrapper.ne(ImsDutyGroupEntity::getId,imsDutyGroup.getId());
wrapper.ne(ImsDutyGroupEntity::getManagerId,imsDutyGroup.getManagerId());
List<ImsDutyGroupEntity> list=imsDutyGroupService.list(wrapper);
if(list!=null && !list.isEmpty()){
return R.data("该用户已在其他组中设置为班组长");
}
return R.status(imsDutyGroupService.updateById(imsDutyGroup));
}

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

@ -11,13 +11,12 @@ import com.hnac.hzims.operational.duty.entity.ImsDutyMainReportExcel;
import com.hnac.hzims.operational.duty.service.IImsDutyMainService;
import com.hnac.hzims.operational.duty.utils.ExcelMergeHandler;
import com.hnac.hzims.operational.duty.utils.ExcelTool;
import com.hnac.hzims.operational.duty.vo.ChangeDutyMainVo;
import com.hnac.hzims.operational.duty.vo.HomePageDutyMainInfoVo;
import com.hnac.hzims.operational.duty.vo.ImsSchedulingVo;
import com.hnac.hzims.operational.duty.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
@ -26,6 +25,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.feign.ISysClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@ -119,17 +119,36 @@ public class ImsDutyMainController extends BladeController {
return imsDutyMainService.getSchedulingV2(imsSchedulingVo);
}
// /**
// * 排班管理
// */
// @PostMapping("/scheduling")
@PostMapping("/schedulingNew")
@ApiOperationSupport(order = 8)
@ApiOperation(value = "排班管理", notes = "")
public R schedulingNew(@Valid @RequestBody ImsSchedulingNewVo vo) {
if (null == vo.getDeptId()) {
return R.fail("请选择机构");
}
if (null == AuthUtil.getTenantId()) {
return R.fail("请登录");
}
return imsDutyMainService.getSchedulingV3(vo);
}
/**
* 导入排班
*/
// @PostMapping("/importScheduling")
// @ApiOperationSupport(order = 8)
// @ApiOperation(value = "排班管理", notes = "")
// public R schedulingV2(@Valid @RequestBody ImsSchedulingVo imsSchedulingVo) {
// if (null == imsSchedulingVo.getCreateDept()) {
// imsSchedulingVo.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
// @ApiOperation(value = "导入排班管理(适用一天一班的情况)", notes = "")
// public R importScheduling(@RequestParam("file")MultipartFile file,
// @RequestParam("yearMonth") String yearMonth,////yearMonth格式 yyyy-MM
// @RequestParam("deptId") Long deptId
// ) {
// if(StringUtils.isBlank(yearMonth)){
// return R.fail("请选择年月");
// }
// if(deptId == null){
// return R.fail("请选择部门");
// }
// return imsDutyMainService.getScheduling(imsSchedulingVo);
// return imsDutyMainService.importScheduling(file,yearMonth,deptId);
// }
/**
@ -217,6 +236,14 @@ public class ImsDutyMainController extends BladeController {
return imsDutyMainService.updateDutyMainInfoVoById(changeDutyMainVo);
}
//班组长交换班
@PostMapping("/changDutyMainGroupLeader")
@ApiOperationSupport(order = 9)
@ApiOperation(value = "班组长交换班", notes = "")
public R changDutyMainGroupLeader(@RequestBody ExchangeGroupLeader changeGroupLeader) {
return imsDutyMainService.changDutyMainGroupLeader(changeGroupLeader);
}
@GetMapping("/exportDuty")
@ApiOperation(value = "导出排班计划")
public void exportTemplate(HttpServletResponse response, String time, Long deptId) throws IOException {

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

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

26
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/entity/SchedulingExcelDTO.java

@ -0,0 +1,26 @@
package com.hnac.hzims.operational.duty.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class SchedulingExcelDTO implements Serializable {
@ExcelProperty(value = "日期(必填)",index = 0 )
@ApiModelProperty(value = "日期-天")
private String day;
/**
* 编码
*/
@ExcelProperty(value = "主值(必填)",index = 1 )
@ApiModelProperty(value = "主值")
private String mainDuty;
/**
* 规格
*/
@ExcelProperty(value = "副值(必填)",index = 2 )
@ApiModelProperty(value = "副值")
private String deputyDuty;
}

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

@ -8,6 +8,7 @@ import com.hnac.hzims.operational.main.vo.DutyPersonalReportVO;
import com.hnac.hzims.operational.report.vo.DutyReportVO;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDate;
import java.util.List;
@ -61,6 +62,10 @@ public interface IImsDutyMainService extends BaseService<ImsDutyMainEntity> {
R getSchedulingV2(ImsSchedulingVo imsSchedulingVo);
R getSchedulingV3(ImsSchedulingNewVo vo);
R importScheduling(MultipartFile file,String yearMonth,Long deptId);
R getSchedulingList(int year, int month, Long deptId);
R getSchedulingListV2(int year, int month, Long deptId);
@ -151,4 +156,6 @@ public interface IImsDutyMainService extends BaseService<ImsDutyMainEntity> {
R updateDutyMainInfoVoById(ChangeDutyMainVo changeDutyMainVo);
List<ImsDutyMainReportExcel> getExcelDutyData(Integer year, Integer month, Long deptId);
R changDutyMainGroupLeader(ExchangeGroupLeader changeGroupLeader);
}

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

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

30
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/service/impl/ImsDutyGroupServiceImpl.java

@ -59,24 +59,12 @@ public class ImsDutyGroupServiceImpl extends BaseServiceImpl<ImsDutyGroupMapper,
if (ObjectUtil.isNotEmpty(user)) {
tenantId = user.getTenantId();
}
boolean flag = this.saveImsDutyGroupPEntity(imsDutyGroup.getPersonId(), tenantId, imsDutyGroup.getId());
if (flag == false) {
return R.fail("当前选择人员已全部存在分组");
}
// if (flag == false) {
// return R.fail("当前选择人员已全部存在分组");
// }
/* //先查看该班组今天是否存在
List<ImsDutyMainEntity> list = iImsDutyMainService.list(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getDutyGroupId, imsDutyGroup.getId());
eq(ImsDutyMainEntity::getDutyDate, DateUtil.format(new Date(), DateUtil.PATTERN_DATE));
}});
if(CollectionUtil.isNotEmpty(list)){//存在
if(null == imsDutyGroup.getIsUpdateThatVeryDay()){
return R.data("1");
}else if(imsDutyGroup.getIsUpdateThatVeryDay()){
//更新当天数据
}
}
*/
//判断是否更新排班
if (imsDutyGroup.getUpdateDuty()) {
this.updateDuty(imsDutyGroup.getId());
@ -133,13 +121,13 @@ public class ImsDutyGroupServiceImpl extends BaseServiceImpl<ImsDutyGroupMapper,
imsDutyGroupPEntity.setTenantId(tenantId);
imsDutyGroupPEntity.setGroupId(groupId);
imsDutyGroupPEntity.setPersonId(Long.parseLong(personIds[i]));
if (imsDutyGroupPMapper.selectPersonIsExist(imsDutyGroupPEntity) < 1) {
// if (imsDutyGroupPMapper.selectPersonIsExist(imsDutyGroupPEntity) < 1) {
list.add(imsDutyGroupPEntity);
// }
}
}
if (CollectionUtil.isEmpty(list)) {
return false;
}
// if (CollectionUtil.isEmpty(list)) {
// return false;
// }
return imsDutyGroupPService.saveBatch(list);
}

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

@ -1,5 +1,7 @@
package com.hnac.hzims.operational.duty.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -16,15 +18,18 @@ import com.hnac.hzims.operational.duty.enume.JoinStatus;
import com.hnac.hzims.operational.duty.mapper.*;
import com.hnac.hzims.operational.duty.scheduled.ThreadTask;
import com.hnac.hzims.operational.duty.service.*;
import com.hnac.hzims.operational.duty.utils.ExcelToolListener;
import com.hnac.hzims.operational.duty.vo.*;
import com.hnac.hzims.operational.main.vo.DutyPersonalReportVO;
import com.hnac.hzims.operational.report.vo.DutyReportVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.*;
import org.springblade.system.cache.SysCache;
import org.springblade.system.user.cache.UserCache;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
@ -33,19 +38,25 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Time;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.hnac.hzims.operational.duty.utils.ExcelUtil.asyncReadModel;
/**
* 服务实现类
*
@ -292,6 +303,446 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
return cycleSchedulingTowV2(imsSchedulingVo, dates, imsDutyMainEntity1);
}
@Override
public R getSchedulingV3(ImsSchedulingNewVo vo) {
String startDate=vo.getStartDate();
String endDate=vo.getEndDate();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
Date start=sdf.parse(startDate);
Date end=sdf.parse(endDate);
Date now=new Date();
if(start.compareTo(now) <= 0){
return R.fail("开始时间应从明天开始");
}
if(end.compareTo(now) <= 0){
return R.fail("结束时间应从明天开始");
}
}catch (Exception e){
return R.fail("开始时间格式不对");
}
//判断是否符合排班规则。
String[] start = startDate.split("-");
String[] end = endDate.split("-");
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;//获取月份
int day = cal.get(Calendar.DAY_OF_MONTH);
String date1 = getDate(year, month, day);
String date2 = DateUtils.dayStringDate(date1, 1, true);
if (!vo.getStartDate().equals(date2)) {
String minusOnedDay = DateUtils.dayStringDate(vo.getStartDate(), 1, false);
log.info("--------------Auth:" + AuthUtil.getDeptId() + "--------createDept:" + vo.getDeptId());
List<ImsDutyMainEntity> imsDutyMainEntities = this.baseMapper.selectByDateAndDept(minusOnedDay, vo.getDeptId());
if (CollectionUtil.isEmpty(imsDutyMainEntities)) {
return R.fail("所选日期之前存在未排班情况,请重新选择日期区间!");
}
}
List<String> dates = getTwoPeriodsAll(Integer.valueOf(start[0]), Integer.valueOf(start[1]), Integer.valueOf(start[2]), Integer.valueOf(end[0]), Integer.valueOf(end[1]), Integer.valueOf(end[2]));
if (Integer.valueOf(start[0]) < year) {
return R.fail("年份必须大于或等于当前年份!");
}
if (Integer.valueOf(start[0]) == year && Integer.valueOf(start[1]) < month) {
return R.fail("时间必须大于或等于当前时间");
}
List<ImsDutyMainEntity> imsDutyMainEntities2 = this.baseMapper.selectList(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
ge(ImsDutyMainEntity::getDutyDate, vo.getStartDate());
le(ImsDutyMainEntity::getDutyDate, vo.getEndDate());
eq(ImsDutyMainEntity::getCreateDept, vo.getDeptId());
}});
List<ImsDutyMainPersonEntity> imsDutyMainPersonEntities = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper<ImsDutyMainPersonEntity>() {{
ge(ImsDutyMainPersonEntity::getDutyDate, vo.getStartDate());
le(ImsDutyMainPersonEntity::getDutyDate, vo.getEndDate());
eq(ImsDutyMainPersonEntity::getCreateDept, vo.getDeptId());
}});
if (CollectionUtil.isNotEmpty(imsDutyMainPersonEntities) || CollectionUtil.isNotEmpty(imsDutyMainEntities2)) {
if (CollectionUtil.isNotEmpty(dates)) {
//重新修改已有的排版,先删除,在添加
this.baseMapper.delete(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getCreateDept, vo.getDeptId());
in(ImsDutyMainEntity::getDutyDate, dates);
}});
imsDutyMainPersonMapper.delete(new LambdaQueryWrapper<ImsDutyMainPersonEntity>() {{
in(ImsDutyMainPersonEntity::getDutyDate, dates);
eq(ImsDutyMainPersonEntity::getCreateDept, vo.getDeptId());
}});
}
}
String subDayDate = DateUtils.dayDate(DateUtil.parse(vo.getStartDate(), DateUtil.PATTERN_DATE), -1, DateUtil.PATTERN_DATE);
//获取最后一个排班的信息
ImsDutyMainEntity preDutyMain = this.baseMapper.selectOne(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getDutyDate, subDayDate);
eq(ImsDutyMainEntity::getCreateDept, vo.getDeptId());
ne(ImsDutyMainEntity::getStatus, "-1");
orderByDesc(ImsDutyMainEntity::getId).last("LIMIT 1");
}});
String proDutyMainId=null;
List<ImsDutyMainEntity> imsDutyMainEntityList=getImsDutyMainEntityList(vo,dates);
if(imsDutyMainEntityList!=null && !imsDutyMainEntityList.isEmpty()){
ImsDutyMainEntity entity=imsDutyMainEntityList.get(0);
if(preDutyMain!=null) {
Long dutyMainId = preDutyMain.getId();
proDutyMainId =String.valueOf(dutyMainId);
entity.setPreDutyId(dutyMainId);
}
dealCreator(entity,vo.getDeptId());
}else{
return R.fail("排班失败");
}
//统一处理preDutyId
for(int i=1,count=imsDutyMainEntityList.size();i<count;i++){
ImsDutyMainEntity entity=imsDutyMainEntityList.get(i);
dealCreator(entity,vo.getDeptId());
ImsDutyMainEntity preEntity=imsDutyMainEntityList.get(i-1);
entity.setPreDutyId(preEntity.getId());
}
// this.saveBatch(imsDutyMainEntityList);
List<ImsDutyMainPersonEntity> mainPersonEntityList=new ArrayList<>();
for(ImsDutyMainEntity imsDutyMainEntity:imsDutyMainEntityList) {
String[] personIds=imsDutyMainEntity.getDutyPersonIds().split("\\^");
List<Long> collect=Arrays.asList(personIds).stream().map(e->Long.valueOf(e)).collect(Collectors.toList());
//每个人员对应一条排班-人员计划
for (Long personId : collect) {
ImsDutyMainPersonEntity imsDutyMainPersonEntity = new ImsDutyMainPersonEntity();
imsDutyMainPersonEntity.setClassId(imsDutyMainEntity.getClassId());
imsDutyMainPersonEntity.setCreateDept(imsDutyMainEntity.getCreateDept());
imsDutyMainPersonEntity.setDutyGroupName(imsDutyMainEntity.getDutyGroupName());
imsDutyMainPersonEntity.setDutyGroupId(imsDutyMainEntity.getDutyGroupId());
imsDutyMainPersonEntity.setDutyDate(imsDutyMainEntity.getDutyDate());
imsDutyMainPersonEntity.setStatus(imsDutyMainEntity.getStatus());
imsDutyMainPersonEntity.setCreateTime(imsDutyMainEntity.getCreateTime());
imsDutyMainPersonEntity.setDutyMainId(imsDutyMainEntity.getId());
imsDutyMainPersonEntity.setCreateUser(imsDutyMainEntity.getCreateUser());
imsDutyMainPersonEntity.setUpdateUser(imsDutyMainEntity.getUpdateUser());
imsDutyMainPersonEntity.setTenantId(imsDutyMainEntity.getTenantId());
imsDutyMainPersonEntity.setDutyPerson(personId);
long id1 = IdWorker.getId(imsDutyMainPersonEntity);
imsDutyMainPersonEntity.setId(id1);
imsDutyMainPersonEntity.setDutyChargePerson(imsDutyMainEntity.getManageId());
mainPersonEntityList.add(imsDutyMainPersonEntity);
}
}
log.error("=排班====imsDutyMainEntityList{}====mainPersonEntityList:{}",imsDutyMainEntityList,mainPersonEntityList);
ThreadTask.dutyTask(imsDutyMainEntityList, mainPersonEntityList, vo.getEndDate(), proDutyMainId, vo.getDeptId(), vo.getDutyClassTypeId());
return R.success("排班成功");
}
private void dealCreator(ImsDutyMainEntity entity,Long deptId){
entity.setCreateDept(deptId);
entity.setCreateUser(AuthUtil.getUserId());
entity.setCreateTime(new Date());
entity.setTenantId(AuthUtil.getTenantId());
entity.setIsDeleted(0);
entity.setStatus(0);
entity.setUpdateUser(AuthUtil.getUserId());
entity.setUpdateTime(new Date());
}
private List<ImsDutyMainEntity> getImsDutyMainEntityList(ImsSchedulingNewVo vo,List<String> dates){
List<ImsDutyMainEntity> list=new ArrayList<>();
////班次信息
String[] classIdArr=vo.getClassIds().split("\\^");
List<Long> classIds=Arrays.asList(classIdArr).stream().map(e->Long.valueOf(e)).collect(Collectors.toList());
String[] classNameArr=vo.getClassNames().split("\\^");
Map<Long,String> classMap=new HashMap<>();
for(int i=0;i<classIds.size();i++){
classMap.put(classIds.get(i),classNameArr[i]);
}
if(vo.getPersonType().intValue() == 1){//班组
String[] groupIdsArr=vo.getGroupIds().split("\\^");
List<Long> groupIds=Arrays.asList(groupIdsArr).stream().map(e->Long.valueOf(e)).collect(Collectors.toList());
LambdaQueryWrapper<ImsDutyGroupEntity> groupWrapper=new LambdaQueryWrapper<>();
groupWrapper.in(ImsDutyGroupEntity::getId,groupIds);
List<ImsDutyGroupEntity> groupEntities=dutyGroupMapper.selectList(groupWrapper);
Map<Long,ImsDutyGroupEntity> groupMap=groupEntities.stream().collect(Collectors.toMap(ImsDutyGroupEntity::getId,Function.identity()));
List<ImsDutyGroupPEntity> groupPEntities = imsDutyGroupPService.selectByGroupIds(groupIds);
Map<Long,List<ImsDutyGroupPEntity>> personMap=groupPEntities.stream().collect(Collectors.groupingBy(ImsDutyGroupPEntity::getGroupId));
//班组信息
List<Map<String,String>> groups=new ArrayList<>();
for(Long groupId :groupIds){
Map<String,String> map=new HashMap<>();
map.put("groupId",String.valueOf(groupId));
ImsDutyGroupEntity groupEntity=groupMap.get(groupId);
map.put("groupName",groupEntity.getGroupName());
map.put("managerId",String.valueOf(groupEntity.getManagerId()));
List<ImsDutyGroupPEntity> groupPList=personMap.get(groupId);
List<String> personIds=groupPList.stream().map(e->String.valueOf(e.getPersonId())).collect(Collectors.toList());
String personStrIds=personIds.stream().collect(Collectors.joining("^"));
map.put("personIds",personStrIds);//包含了值长id
groups.add(map);
}
dealImsDutyMainEntityList(list,dates,classIds,groups,classMap);
}else if(vo.getPersonType().intValue() == 2){//人员
List<Map<String,String>> persons=vo.getPersonIds();
for(Map<String,String> person:persons){
String personIds=person.get("personIds");
person.put("personIds",person.get("managerId")+"^"+personIds);
}
dealImsDutyMainEntityList(list,dates,classIds,persons,classMap);
}
return list;
}
private void dealImsDutyMainEntityList(List<ImsDutyMainEntity> list,List<String> dates,
List<Long> classIds,
List<Map<String,String>> persons,Map<Long,String> classMap){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
int dateCount=dates.size();
int classCount=classIds.size();
int count=dateCount * classCount;//总工共排多少个
List<Map<String,String>> allPerson=new ArrayList<>();//总数队列
while (allPerson.size() < count){
for(Map<String,String> person:persons){
allPerson.add(person);
}
}
try {
for (int i = 0; i < dateCount; i++) {
String ts = dates.get(i);
for (int j = 0; j < classCount; j++) {
int personIndex = (i * classCount) + j;
Map<String, String> person = allPerson.get(personIndex);
Long classId = classIds.get(j);
ImsDutyMainEntity res = new ImsDutyMainEntity();
res.setId(IdWorker.getId());
if (person.get("groupId") != null) {
res.setDutyGroupId(Long.valueOf(person.get("groupId").toString()));
}
if (person.get("groupName") != null) {
res.setDutyGroupName(person.get("groupName").toString());
}
res.setDutyPersonIds(person.get("personIds"));
res.setDutyDate(sdf.parse(ts));
res.setClassId(classId);
res.setClassName(classMap.get(classId));
res.setManageId(Long.valueOf(person.get("managerId")));
list.add(res);
}
}
}catch (ParseException e){
log.error("日期格式不对");
}
}
@Override
public R importScheduling(MultipartFile file,String yearMonth,Long deptId) {
String filename = file.getOriginalFilename();
ExcelToolListener excelToolListener = new ExcelToolListener();
if (org.springframework.util.StringUtils.isEmpty(filename)) {
return R.fail("请上传文件!");
} else if (!org.springframework.util.StringUtils.endsWithIgnoreCase(filename, ".xls") && !org.springframework.util.StringUtils.endsWithIgnoreCase(filename, ".xlsx")) {
return R.fail("请上传正确的excel文件!");
} else {
try {
InputStream inputStream = file.getInputStream();
asyncReadModel(inputStream, excelToolListener, SchedulingExcelDTO.class, 0, 2);
} catch (IOException e) {
e.printStackTrace();
}
}
List entityList = excelToolListener.getDataList();
if(entityList==null || entityList.isEmpty()){
return R.fail("请在表格中填写数据");
}
List<SchedulingExcelDTO> list = JSONArray.parseArray(JSON.toJSONString(entityList), SchedulingExcelDTO.class).stream()
.filter(e->StringUtils.isNotBlank(e.getDay()))
.filter(e->StringUtils.isNotBlank(e.getMainDuty()))
.filter(e->StringUtils.isNotBlank(e.getDeputyDuty()))
.collect(Collectors.toList());
int days=getMaxDays(yearMonth);
if(list==null || list.isEmpty() || list.size()!=days){
return R.fail("日期,主值,副值数据不够完整,请补充");
}
R<List<User>> listR=userClient.userList(AuthUtil.getTenantId(),deptId);
if(listR==null || !listR.isSuccess() || listR.getData()==null || listR.getData().isEmpty()){
return R.fail("该部门未创建用户");
}
List<User> users=listR.getData();
//记录系统中不存在的用户
Set<String> userNameSet=new HashSet<>();
Set<Long> mainDutyIds=new HashSet<>();
//获取所有用户名称以及对应的用户id
Map<String,Long> map=new HashMap<>();
for(SchedulingExcelDTO dto:list){
Long id=map.get(dto.getMainDuty());
if(id==null){
Long tmpId=getByName(users,dto.getMainDuty());
if(tmpId!=null) {
map.put(dto.getMainDuty(), tmpId);
mainDutyIds.add(tmpId);
}else{
userNameSet.add(dto.getMainDuty());
}
}
id=map.get(dto.getDeputyDuty());
if(id==null){
Long tmpId=getByName(users,dto.getDeputyDuty());
if(tmpId!=null) {
map.put(dto.getDeputyDuty(), tmpId);
}else{
userNameSet.add(dto.getDeputyDuty());
}
}
}
//判断用户是否在系统中存在
if(userNameSet.size() >=0 ){
return R.fail("用户("+StringUtils.join(userNameSet,"、")+")在系统中不存在,需要在用户管理中创建!");
}
String[] arr=yearMonth.split("-");
int year=Integer.valueOf(arr[0]);
int month=Integer.valueOf(arr[1]);
List<String> dates = getTwoPeriodsAll(year, month, 1, year, month, days);
//先删除
this.baseMapper.delete(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getCreateDept, deptId);
in(ImsDutyMainEntity::getDutyDate, dates);
}});
imsDutyMainPersonMapper.delete(new LambdaQueryWrapper<ImsDutyMainPersonEntity>() {{
in(ImsDutyMainPersonEntity::getDutyDate, dates);
eq(ImsDutyMainPersonEntity::getCreateDept, deptId);
}});
//查询导入数据的上一班的值班对象 比如10月1号的前一班9月30号
LambdaQueryWrapper<ImsDutyMainEntity> wrapper=new LambdaQueryWrapper<>();
wrapper.eq(ImsDutyMainEntity::getDutyDate,beforeDutyDate(dates.get(0)));
wrapper.eq(ImsDutyMainEntity::getCreateDept,deptId);
ImsDutyMainEntity beforeEntity=this.getOne(wrapper);
Long beforeDutyId=null;
if(beforeEntity!=null){
beforeDutyId=beforeEntity.getId();
}
//再增加
//查询最新的班次
LambdaQueryWrapper<ImsDutyClassEntity> wrapper1=new LambdaQueryWrapper<>();
wrapper1.eq(ImsDutyClassEntity::getCreateDept,deptId);
wrapper1.last(" limit 1");
List<ImsDutyClassEntity> classList=iImsDutyClassService.list(wrapper1);
if(classList==null || classList.isEmpty()){
return R.fail("该机构还未创建班次");
}
ImsDutyClassEntity classEntity=classList.get(0);
Long classId=classEntity.getId();
//查询班组
LambdaQueryWrapper<ImsDutyGroupEntity> wrapper2=new LambdaQueryWrapper<>();
wrapper2.in(ImsDutyGroupEntity::getManagerId,mainDutyIds);
wrapper2.eq(ImsDutyGroupEntity::getCreateDept,deptId);
List<ImsDutyGroupEntity> groups=dutyGroupMapper.selectList(wrapper2);
if(groups==null || groups.isEmpty()){
return R.fail("该机构还未创建班组");
}
//组装数据
List<ImsDutyMainEntity> dutyMainList=new ArrayList<>();
List<ImsDutyMainPersonEntity> dutyMainPList=new ArrayList<>();
for(int i=0;i<dates.size();i++){
String date=dates.get(i);
SchedulingExcelDTO dto=list.get(i);
//排班主表
ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity();
Long managerId=map.get(dto.getMainDuty());
ImsDutyGroupEntity dutyGroup=getGroupByManageId(groups,managerId);
setMainEntity(imsDutyMainEntity, classId, dutyGroup.getId(), date);
imsDutyMainEntity.setStatus(-1);
String personIds=managerId+"^"+map.get(dto.getDeputyDuty());
imsDutyMainEntity.setDutyPersonIds(personIds);
imsDutyMainEntity.setCreateDept(deptId);
Long id = IdWorker.getId();
imsDutyMainEntity.setId(id);
imsDutyMainEntity.setPreDutyId(beforeDutyId);
imsDutyMainEntity.setCreateUser(AuthUtil.getUserId());
imsDutyMainEntity.setUpdateUser(AuthUtil.getUserId());
imsDutyMainEntity.setTenantId(AuthUtil.getTenantId());
dutyMainList.add(imsDutyMainEntity);
beforeDutyId = id;
//排班人员表
String[] personIdArr=personIds.split("^");
for(String personId:personIdArr) {
ImsDutyMainPersonEntity imsDutyMainPersonEntity = new ImsDutyMainPersonEntity();
imsDutyMainPersonEntity.setClassId(imsDutyMainEntity.getClassId());
imsDutyMainPersonEntity.setCreateDept(imsDutyMainEntity.getCreateDept());
imsDutyMainPersonEntity.setDutyGroupName(dutyGroup.getGroupName());
imsDutyMainPersonEntity.setDutyGroupId(dutyGroup.getId());
imsDutyMainPersonEntity.setDutyDate(imsDutyMainEntity.getDutyDate());
imsDutyMainPersonEntity.setStatus(imsDutyMainEntity.getStatus());
imsDutyMainPersonEntity.setCreateTime(imsDutyMainEntity.getCreateTime());
imsDutyMainPersonEntity.setDutyMainId(imsDutyMainEntity.getId());
imsDutyMainPersonEntity.setCreateUser(imsDutyMainEntity.getCreateUser());
imsDutyMainPersonEntity.setUpdateUser(imsDutyMainEntity.getUpdateUser());
imsDutyMainPersonEntity.setTenantId(imsDutyMainEntity.getTenantId());
imsDutyMainPersonEntity.setDutyPerson(Long.valueOf(personId));
long id1 = IdWorker.getId(imsDutyMainPersonEntity);
imsDutyMainPersonEntity.setId(id1);
imsDutyMainPersonEntity.setDutyChargePerson(managerId);
dutyMainPList.add(imsDutyMainPersonEntity);
}
}
//批量保存
this.saveBatch(dutyMainList);
iImsDutyMainPersonService.saveBatch(dutyMainPList);
return R.success("导入成功");
}
private ImsDutyGroupEntity getGroupByManageId(List<ImsDutyGroupEntity> groups,Long managerId){
for(ImsDutyGroupEntity entity:groups){
if(entity.getManagerId().equals(managerId)){
return entity;
}
}
return null;
}
private static int getMaxDays(String yearMonthStr){
String[] arr=yearMonthStr.split("-");
int year=Integer.valueOf(arr[0]);
int month=Integer.valueOf(arr[1]);
YearMonth yearMonth = YearMonth.of(year, month);
int maxDays = yearMonth.lengthOfMonth();
return maxDays;
}
private String beforeDutyDate(String date){
LocalDate today = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate yesterday = today.minusDays(1); // 获取前一天的日期
// 如果需要格式化日期,可以使用DateTimeFormatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return yesterday.format(formatter);
}
private Long getByName(List<User> users,String name){
for(User user:users){
if(user.getName().equals(name)){
return user.getId();
}
}
return null;
}
/**
* 轮询排班
*
@ -478,7 +929,7 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
}
if (StringUtil.isNotBlank(dutyGroupId)) {
ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity();
setMainEntity(imsDutyMainEntity, classId, Long.valueOf(dutyGroupId), date);
setMainEntity(imsDutyMainEntity, Long.valueOf(classId), Long.valueOf(dutyGroupId), date);
imsDutyMainEntity.setStatus(-1);
imsDutyMainEntity.setDutyPersonIds(personIds);
imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept());
@ -1502,6 +1953,111 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
return dutyMainReportExcelList;
}
@Override
public R changDutyMainGroupLeader(ExchangeGroupLeader changeGroupLeader) {
if(changeGroupLeader == null){
return R.fail("传入换班数据不能为空");
}
if(!changeGroupLeader.getFromDeptId().equals(changeGroupLeader.getToDeptId())){
return R.fail("不同机构间不能换班");
}
if(changeGroupLeader.getFromDate().compareTo(changeGroupLeader.getToDate())>0){
return R.fail("换班日期不能大于被换班日期");
}
if(changeGroupLeader.getFromDate().compareTo(changeGroupLeader.getToDate()) == 0
&& changeGroupLeader.getFromClassId().equals(changeGroupLeader.getToClassId())){
return R.fail("同一日期同一班次无须换班");
}
List<ImsDutyMainEntity> aDutyList = this.baseMapper.selectList(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getDutyDate, changeGroupLeader.getFromDate());
eq(ImsDutyMainEntity::getCreateDept, changeGroupLeader.getFromDeptId());
eq(ImsDutyMainEntity::getClassId, changeGroupLeader.getFromClassId());
eq(ImsDutyMainEntity::getIsDeleted, 0);
}});
if(aDutyList== null|| aDutyList.isEmpty()){
return R.fail("换班人无排班计划");
}
List<ImsDutyMainEntity> bDutyList = this.baseMapper.selectList(new LambdaQueryWrapper<ImsDutyMainEntity>() {{
eq(ImsDutyMainEntity::getDutyDate, changeGroupLeader.getToDate());
eq(ImsDutyMainEntity::getCreateDept, changeGroupLeader.getToDeptId());
eq(ImsDutyMainEntity::getClassId, changeGroupLeader.getToClassId());
eq(ImsDutyMainEntity::getIsDeleted, 0);
}});
if(bDutyList== null|| bDutyList.isEmpty()){
return R.fail("被换班人无排班计划");
}
ImsDutyMainEntity aDutyMainEntity=aDutyList.get(0);
//查询换换班是否在值班
if(aDutyMainEntity.getStatus()!=0){
return R.fail("换班人待值班状态才能换班");
}
ImsDutyGroupEntity aGroupEntity = dutyGroupMapper.selectById(aDutyMainEntity.getDutyGroupId());
Long aManagerId=aGroupEntity.getManagerId();
List<ImsDutyMainPersonEntity> aPersonEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper<ImsDutyMainPersonEntity>() {{
eq(ImsDutyMainPersonEntity::getDutyMainId, aDutyMainEntity.getId());
eq(ImsDutyMainPersonEntity::getIsDeleted, 0);
}});
ImsDutyMainEntity bDutyMainEntity=bDutyList.get(0);
//查询换换班是否在值班
if(bDutyMainEntity.getStatus()!=0){
return R.fail("被换班人待值班状态才能换班");
}
ImsDutyGroupEntity bGroupEntity = dutyGroupMapper.selectById(bDutyMainEntity.getDutyGroupId());
Long bManagerId=bGroupEntity.getManagerId();
List<ImsDutyMainPersonEntity> bPersonEntityList = imsDutyMainPersonMapper.selectList(new LambdaQueryWrapper<ImsDutyMainPersonEntity>() {{
eq(ImsDutyMainPersonEntity::getDutyMainId, bDutyMainEntity.getId());
eq(ImsDutyMainPersonEntity::getIsDeleted, 0);
}});
String aPersonIds=aDutyMainEntity.getDutyPersonIds();
String bPersonIds=bDutyMainEntity.getDutyPersonIds();
//更新duty_main
ImsDutyMainEntity aEntity= SerializationUtils.clone(aDutyMainEntity);
ImsDutyMainEntity bEntity=SerializationUtils.clone(bDutyMainEntity);
aEntity.setDutyGroupId(bDutyMainEntity.getDutyGroupId());
aPersonIds=aPersonIds.replaceAll(aManagerId+"",bManagerId+"");
aEntity.setDutyPersonIds(aPersonIds);
this.baseMapper.updateById(aEntity);
bEntity.setDutyGroupId(aDutyMainEntity.getDutyGroupId());
bPersonIds=bPersonIds.replaceAll(bManagerId+"",aManagerId+"");
bEntity.setDutyPersonIds(bPersonIds);
this.baseMapper.updateById(bEntity);
//更新 duty_main_person
for(ImsDutyMainPersonEntity entity:aPersonEntityList){
if(entity.getDutyPerson().equals(aManagerId)){
entity.setDutyPerson(bManagerId);
}
// entity.setDutyGroupName(bGroupEntity.getGroupName());
entity.setDutyChargePerson(bManagerId);
}
iImsDutyMainPersonService.updateBatchById(aPersonEntityList);
for(ImsDutyMainPersonEntity entity:bPersonEntityList){
if(entity.getDutyPerson().equals(bManagerId)){
entity.setDutyPerson(aManagerId);
}
// entity.setDutyGroupName(aGroupEntity.getGroupName());
entity.setDutyChargePerson(aManagerId);
}
iImsDutyMainPersonService.updateBatchById(bPersonEntityList);
return R.success("班组长换班成功");
}
/**
* 获取上一班组
@ -1676,7 +2232,7 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
}
if (StringUtil.isNotBlank(dutyGroupId)) {
ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity();
setMainEntity(imsDutyMainEntity, classId, Long.valueOf(dutyGroupId), date);
setMainEntity(imsDutyMainEntity, Long.valueOf(classId), Long.valueOf(dutyGroupId), date);
imsDutyMainEntity.setStatus(-1);
imsDutyMainEntity.setDutyPersonIds(personIds);
imsDutyMainEntity.setCreateDept(imsSchedulingVo.getCreateDept());
@ -1699,7 +2255,7 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
}
ImsDutyMainEntity imsDutyMainEntity = new ImsDutyMainEntity();
setMainEntity(imsDutyMainEntity, classId, Long.valueOf(groupId), date);
setMainEntity(imsDutyMainEntity, Long.valueOf(classId), Long.valueOf(groupId), date);
if (Func.isBlank(proDutyMainId)) {
if (ObjectUtil.isNotEmpty(imsDutyMainEntity1)) {
proDutyMainId = imsDutyMainEntity1.getId().toString();
@ -1731,9 +2287,9 @@ public class ImsDutyMainServiceImpl extends BaseServiceImpl<ImsDutyMainMapper, I
}
public void setMainEntity(ImsDutyMainEntity imsDutyMainEntity, String classId, Long groupId, String date) {
public void setMainEntity(ImsDutyMainEntity imsDutyMainEntity, Long classId, Long groupId, String date) {
imsDutyMainEntity.setDutyDate(DateUtil.parse(date, DateUtil.PATTERN_DATE));
imsDutyMainEntity.setClassId(Long.valueOf(classId));
imsDutyMainEntity.setClassId(classId);
imsDutyMainEntity.setDutyGroupId(groupId);
imsDutyMainEntity.setStatus(0);
imsDutyMainEntity.setCreateTime(new Date());

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

@ -1402,6 +1402,13 @@ public class ImsDutyRecServiceImpl extends BaseServiceImpl<ImsDutyRecMapper, Ims
return true;
}
@Override
public Boolean updateContent(Map<String, Object> param) {
UpdateWrapper<ImsDutyRecEntity> wrapper=new UpdateWrapper<>();
wrapper.set("content",param.get("content")).eq("id",param.get("id"));
return this.update(wrapper);
}
/**
* 计算交接班状态
* @param duty 值班信息

33
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/utils/ExcelToolListener.java

@ -0,0 +1,33 @@
package com.hnac.hzims.operational.duty.utils;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Slf4j
@Data
public class ExcelToolListener extends AnalysisEventListener {
/**保存数据**/
private List<Object> dataList = Collections.synchronizedList(new ArrayList<>());
public ExcelToolListener() {
}
@Override
public void invoke(Object data, AnalysisContext context) {
dataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
log.info("解析完成");
log.info("------结果集为:{}------", JSONObject.toJSONString(dataList));
}
}

348
hzims-service/operational/src/main/java/com/hnac/hzims/operational/duty/utils/ExcelUtil.java

@ -0,0 +1,348 @@
package com.hnac.hzims.operational.duty.utils;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.write.handler.WriteHandler;
import org.apache.poi.ss.formula.functions.T;
import java.io.File;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author hx
*/
public class ExcelUtil {
/**
* 同步无模型读默认读取sheet0,从第2行开始读
* @param filePath
* @return
*/
public static List<Map<Integer, String>> syncRead(String filePath){
return EasyExcelFactory.read(filePath).sheet().doReadSync();
}
/**
* 同步无模型读默认表头占一行从第2行开始读
* @param filePath
* @param sheetNo sheet页号从0开始
* @return
*/
public static List<Map<Integer, String>> syncRead(String filePath, Integer sheetNo){
return EasyExcelFactory.read(filePath).sheet(sheetNo).doReadSync();
}
/**
* 同步无模型读指定sheet和表头占的行数
* @param inputStream
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return List<Map<colNum, cellValue>>
*/
public static List<Map<Integer, String>> syncRead(InputStream inputStream, Integer sheetNo, Integer headRowNum){
return EasyExcelFactory.read(inputStream).sheet(sheetNo).headRowNumber(headRowNum).doReadSync();
}
/**
* 同步无模型读指定sheet和表头占的行数
* @param file
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return List<Map<colNum, cellValue>>
*/
public static List<Map<Integer, String>> syncRead(File file, Integer sheetNo, Integer headRowNum){
return EasyExcelFactory.read(file).sheet(sheetNo).headRowNumber(headRowNum).doReadSync();
}
/**
* 同步无模型读指定sheet和表头占的行数
* @param filePath
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return List<Map<colNum, cellValue>>
*/
public static List<Map<Integer, String>> syncRead(String filePath, Integer sheetNo, Integer headRowNum){
return EasyExcelFactory.read(filePath).sheet(sheetNo).headRowNumber(headRowNum).doReadSync();
}
/**
* 同步按模型读默认读取sheet0,从第2行开始读
* @param filePath
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @return
*/
public static List<T> syncReadModel(String filePath, Class clazz){
return EasyExcelFactory.read(filePath).sheet().head(clazz).doReadSync();
}
/**
* 同步按模型读默认表头占一行从第2行开始读
* @param filePath
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
* @return
*/
public static List<T> syncReadModel(String filePath, Class clazz, Integer sheetNo){
return EasyExcelFactory.read(filePath).sheet(sheetNo).head(clazz).doReadSync();
}
/**
* 同步按模型读指定sheet和表头占的行数
* @param inputStream
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return
*/
public static List<T> syncReadModel(InputStream inputStream, Class clazz, Integer sheetNo, Integer headRowNum){
return EasyExcelFactory.read(inputStream).sheet(sheetNo).headRowNumber(headRowNum).head(clazz).doReadSync();
}
/**
* 同步按模型读指定sheet和表头占的行数
* @param file
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return
*/
public static List<T> syncReadModel(File file, Class clazz, Integer sheetNo, Integer headRowNum){
return EasyExcelFactory.read(file).sheet(sheetNo).headRowNumber(headRowNum).head(clazz).doReadSync();
}
/**
* 同步按模型读指定sheet和表头占的行数
* @param filePath
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return
*/
public static List<T> syncReadModel(String filePath, Class clazz, Integer sheetNo, Integer headRowNum){
return EasyExcelFactory.read(filePath).sheet(sheetNo).headRowNumber(headRowNum).head(clazz).doReadSync();
}
/**
* 异步无模型读默认读取sheet0,从第2行开始读
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param filePath 表头占的行数从0开始如果要连表头一起读出来则传0
* @return
*/
public static void asyncRead(String filePath, AnalysisEventListener<T> excelListener){
EasyExcelFactory.read(filePath, excelListener).sheet().doRead();
}
/**
* 异步无模型读默认表头占一行从第2行开始读
* @param filePath 表头占的行数从0开始如果要连表头一起读出来则传0
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param sheetNo sheet页号从0开始
* @return
*/
public static void asyncRead(String filePath, AnalysisEventListener<T> excelListener, Integer sheetNo){
EasyExcelFactory.read(filePath, excelListener).sheet(sheetNo).doRead();
}
/**
* 异步无模型读指定sheet和表头占的行数
* @param inputStream
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return
*/
public static void asyncRead(InputStream inputStream, AnalysisEventListener<T> excelListener, Integer sheetNo, Integer headRowNum){
EasyExcelFactory.read(inputStream, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doRead();
}
/**
* 异步无模型读指定sheet和表头占的行数
* @param file
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return
*/
public static void asyncRead(File file, AnalysisEventListener<T> excelListener, Integer sheetNo, Integer headRowNum){
EasyExcelFactory.read(file, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doRead();
}
/**
* 异步无模型读指定sheet和表头占的行数
* @param filePath
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
* @return
*/
public static void asyncRead(String filePath, AnalysisEventListener<T> excelListener, Integer sheetNo, Integer headRowNum){
EasyExcelFactory.read(filePath, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doRead();
}
/**
* 异步按模型读取默认读取sheet0,从第2行开始读
* @param filePath
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param clazz 模型的类类型excel数据会按该类型转换成对象
*/
public static void asyncReadModel(String filePath, AnalysisEventListener<T> excelListener, Class clazz){
EasyExcelFactory.read(filePath, clazz, excelListener).sheet().doRead();
}
/**
* 异步按模型读取默认表头占一行从第2行开始读
* @param filePath
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
*/
public static void asyncReadModel(String filePath, AnalysisEventListener<T> excelListener, Class clazz, Integer sheetNo){
EasyExcelFactory.read(filePath, clazz, excelListener).sheet(sheetNo).doRead();
}
/**
* 异步按模型读取
* @param inputStream
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
*/
public static void asyncReadModel(InputStream inputStream, AnalysisEventListener<T> excelListener, Class clazz, Integer sheetNo, Integer headRowNum){
EasyExcelFactory.read(inputStream, clazz, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doRead();
}
/**
* 异步按模型读取
* @param file
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
*/
public static void asyncReadModel(File file, AnalysisEventListener<T> excelListener, Class clazz, Integer sheetNo, Integer headRowNum){
EasyExcelFactory.read(file, clazz, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doRead();
}
/**
* 异步按模型读取
* @param filePath
* @param excelListener 监听器在监听器中可以处理行数据LinkedHashMap表头数据异常处理等
* @param clazz 模型的类类型excel数据会按该类型转换成对象
* @param sheetNo sheet页号从0开始
* @param headRowNum 表头占的行数从0开始如果要连表头一起读出来则传0
*/
public static void asyncReadModel(String filePath, AnalysisEventListener<T> excelListener, Class clazz, Integer sheetNo, Integer headRowNum){
EasyExcelFactory.read(filePath, clazz, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doRead();
}
/**
* 无模板写文件
* @param filePath
* @param head 表头数据
* @param data 表内容数据
*/
public static void write(String filePath, List<List<String>> head, List<List<Object>> data){
EasyExcel.write(filePath).head(head).sheet().doWrite(data);
}
/**
* 无模板写文件
* @param filePath
* @param head 表头数据
* @param data 表内容数据
* @param sheetNo sheet页号从0开始
* @param sheetName sheet名称
*/
public static void write(String filePath, List<List<String>> head, List<List<Object>> data, Integer sheetNo, String sheetName){
EasyExcel.write(filePath).head(head).sheet(sheetNo, sheetName).doWrite(data);
}
/**
* 根据excel模板文件写入文件
* @param filePath
* @param templateFileName
* @param headClazz
* @param data
*/
public static void writeTemplate(String filePath, String templateFileName, Class headClazz, List data){
EasyExcel.write(filePath, headClazz).withTemplate(templateFileName).sheet().doWrite(data);
}
/**
* 根据excel模板文件写入文件
* @param filePath
* @param templateFileName
* @param data
*/
public static void writeTemplate(String filePath, String templateFileName, List data){
EasyExcel.write(filePath).withTemplate(templateFileName).sheet().doWrite(data);
}
/**
* 按模板写文件
* @param filePath
* @param headClazz 表头模板
* @param data 数据
*/
public static void write(String filePath, Class headClazz, List data){
EasyExcel.write(filePath, headClazz).sheet().doWrite(data);
}
/**
* 按模板写文件
* @param filePath
* @param headClazz 表头模板
* @param data 数据
* @param sheetNo sheet页号从0开始
* @param sheetName sheet名称
*/
public static void write(String filePath, Class headClazz, List data, Integer sheetNo, String sheetName){
EasyExcel.write(filePath, headClazz).sheet(sheetNo, sheetName).doWrite(data);
}
/**
* 按模板写文件
* @param filePath
* @param headClazz 表头模板
* @param data 数据
* @param writeHandler 自定义的处理器比如设置table样式设置超链接单元格下拉框等等功能都可以通过这个实现需要注册多个则自己通过链式去调用
* @param sheetNo sheet页号从0开始
* @param sheetName sheet名称
*/
public static void write(String filePath, Class headClazz, List data, WriteHandler writeHandler, Integer sheetNo, String sheetName){
EasyExcel.write(filePath, headClazz).registerWriteHandler(writeHandler).sheet(sheetNo, sheetName).doWrite(data);
}
/**
* 按模板写文件包含某些字段
* @param filePath
* @param headClazz 表头模板
* @param data 数据
* @param includeCols 过滤包含的字段根据字段名称过滤
* @param sheetNo sheet页号从0开始
* @param sheetName sheet名称
*/
public static void writeInclude(String filePath, Class headClazz, List data, Set<String> includeCols, Integer sheetNo, String sheetName){
EasyExcel.write(filePath, headClazz).includeColumnFiledNames(includeCols).sheet(sheetNo, sheetName).doWrite(data);
}
/**
* 按模板写文件排除某些字段
* @param filePath
* @param headClazz 表头模板
* @param data 数据
* @param excludeCols 过滤排除的字段根据字段名称过滤
* @param sheetNo sheet页号从0开始
* @param sheetName sheet名称
*/
public static void writeExclude(String filePath, Class headClazz, List data, Set<String> excludeCols, Integer sheetNo, String sheetName){
EasyExcel.write(filePath, headClazz).excludeColumnFiledNames(excludeCols).sheet(sheetNo, sheetName).doWrite(data);
}
}

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

@ -1699,6 +1699,8 @@ public class HydropowerServiceImpl implements HydropowerService {
// 班组负责人
String managerName = this.getManagerName(duty.getManagerId());
item.setTeamLeader(managerName);
String managerPhone = this.getManagerPhone(duty.getManagerId());
item.setTeamLeaderPhone(managerPhone);
// 班组成员
String classMember = this.getClassMemberName(duty.getDutyPersonIds(),duty.getManagerId());
item.setClassMember(classMember);
@ -1719,6 +1721,8 @@ public class HydropowerServiceImpl implements HydropowerService {
// 下一班组负责人
String managerName = this.getManagerName(nextDuty.getManagerId());
item.setNextTeamLeader(managerName);
String managerPhone = this.getManagerPhone(nextDuty.getManagerId());
item.setNextTeamLeaderPhone(managerPhone);
// 下一班组成员
String classMember = this.getClassMemberName(nextDuty.getDutyPersonIds(),nextDuty.getManagerId());
item.setNextClassMember(classMember);
@ -1857,6 +1861,22 @@ public class HydropowerServiceImpl implements HydropowerService {
}
/**
* 获取班组负责人电话号码
* @param managerId
* @return
*/
private String getManagerPhone(String managerId) {
if(StringUtil.isBlank(managerId)){
return "";
}
User user = UserCache.getUser(Long.valueOf(managerId));
if (ObjectUtil.isEmpty(user)) {
return "";
}
return user.getPhone();
}
/**
* 获取班组成员
* @param personIds
* @param managerId

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

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

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

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

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

Binary file not shown.

2
hzims-service/ticket/pom.xml

@ -68,6 +68,8 @@
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>3.9.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/spire.xls.free-3.9.1.jar</systemPath>
</dependency>
<!--easypoi-->

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

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

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

@ -334,6 +334,9 @@ public class FirstWorkTicketServiceImpl extends BaseServiceImpl<WorkTicketInfoMa
@Override
public R<WorkTicketInfoVO> detail(Long id) {
WorkTicketInfoEntity entity = this.getById(id);
if(entity==null){
return R.fail("票据不存在");
}
WorkTicketInfoVO workTicketInfoVO = WorkTicketInfoWrapper.build().entityVO(entity);
//获取工作票安全措施列表

2
hzims-service/weather/src/main/java/com/hnac/hzims/weather/aspect/WeatherCacheAspect.java

@ -64,7 +64,7 @@ public class WeatherCacheAspect {
*/
private void saveCacheForHash(String key, String location, Object result,long timeout,TimeUnit unit) {
HeWeatherResponse response = (HeWeatherResponse) result;
if(response.getCode().isOk()) {
if(null != response && null != response.getCode() && response.getCode().isOk()) {
redisTemplate.opsForHash().put(key,location,result);
redisTemplate.expire(key,timeout,unit);
}

Loading…
Cancel
Save