From 3a795a41e583a2fcbbefbc2ad627f8c38164b13f Mon Sep 17 00:00:00 2001 From: yangzhe123 <2824096059@qq.com> Date: Fri, 30 Jan 2026 17:44:07 +0800 Subject: [PATCH] =?UTF-8?q?1:=E5=8F=96=E6=B6=88=E8=87=AA=E5=8A=A8=E6=B4=AA?= =?UTF-8?q?=E6=B0=B4=E9=A2=84=E6=8A=A5=E4=BF=9D=E5=AD=98=E7=9A=84=E9=99=90?= =?UTF-8?q?=E5=88=B6=202=EF=BC=9A=E5=A4=A7=E5=B1=8F-=E9=A2=84=E6=8A=A5=203?= =?UTF-8?q?=EF=BC=9A=E5=A4=A7=E5=B1=8F-=E8=90=BD=E5=AE=9E=E8=B4=A3?= =?UTF-8?q?=E4=BB=BB=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ss/controller/ScreenReportController.java | 31 +++++++++ .../ScreenResponsibilityController.java | 53 ++++++++++++++ .../entity/vo/ScreenPositionTrainingVo.java | 26 +++++++ .../gunshi/project/ss/model/DocCategory.java | 4 ++ .../project/ss/schedule/TaskGroupJob.java | 21 ------ .../ss/service/ScreenReportService.java | 69 +++++++++++++++++++ .../service/ScreenResponsibilityService.java | 65 +++++++++++++++++ .../project/ss/timetask/StWaterDataTask.java | 8 +-- 8 files changed, 252 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/gunshi/project/ss/controller/ScreenReportController.java create mode 100644 src/main/java/com/gunshi/project/ss/controller/ScreenResponsibilityController.java create mode 100644 src/main/java/com/gunshi/project/ss/entity/vo/ScreenPositionTrainingVo.java create mode 100644 src/main/java/com/gunshi/project/ss/service/ScreenReportService.java create mode 100644 src/main/java/com/gunshi/project/ss/service/ScreenResponsibilityService.java diff --git a/src/main/java/com/gunshi/project/ss/controller/ScreenReportController.java b/src/main/java/com/gunshi/project/ss/controller/ScreenReportController.java new file mode 100644 index 0000000..3f9464a --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ScreenReportController.java @@ -0,0 +1,31 @@ +package com.gunshi.project.ss.controller; + + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.model.ForecastProject; +import com.gunshi.project.ss.model.ForecastResults; +import com.gunshi.project.ss.service.ScreenReportService; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "大屏-预报") +@RestController +@RequestMapping(value="/screen/report") +public class ScreenReportController { + + @Resource + private ScreenReportService screenReportService; + + + @GetMapping("/get") + public R getForecast(){ + ForecastProject forecastProject = screenReportService.getForecast(); + return R.ok(forecastProject); + } + + +} diff --git a/src/main/java/com/gunshi/project/ss/controller/ScreenResponsibilityController.java b/src/main/java/com/gunshi/project/ss/controller/ScreenResponsibilityController.java new file mode 100644 index 0000000..e68d2f2 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/controller/ScreenResponsibilityController.java @@ -0,0 +1,53 @@ +package com.gunshi.project.ss.controller; + + +import com.gunshi.core.result.R; +import com.gunshi.project.ss.entity.vo.ScreenPositionTrainingVo; +import com.gunshi.project.ss.model.FileAssociations; +import com.gunshi.project.ss.model.ResPerson; +import com.gunshi.project.ss.service.FileAssociationsService; +import com.gunshi.project.ss.service.PersonnelPlanService; +import com.gunshi.project.ss.service.ScreenResponsibilityService; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Tag(name = "大屏-落实责任制") +@RestController +@RequestMapping(value="/screen/responsibility") +public class ScreenResponsibilityController { + + @Autowired + private ScreenResponsibilityService screenResponsibilityService; + + + + @Autowired + private FileAssociationsService fileService; + + @GetMapping("/getPerson") + public R> getPerson(){ + List vo = screenResponsibilityService.getPerson(); + return R.ok(vo); + } + + + @GetMapping("/getTraining") + public R getTraining(){ + ScreenPositionTrainingVo vo = screenResponsibilityService.getTraining(); + if(vo.getLatestPersonnelPlan() != null){ + List files = fileService.getFiles(getGroupId(), vo.getLatestPersonnelPlan().getId().toString()); + vo.getLatestPersonnelPlan().setFiles(files); + } + return R.ok(vo); + } + + public String getGroupId() { + return "personnelPlan"; + } + +} diff --git a/src/main/java/com/gunshi/project/ss/entity/vo/ScreenPositionTrainingVo.java b/src/main/java/com/gunshi/project/ss/entity/vo/ScreenPositionTrainingVo.java new file mode 100644 index 0000000..8e6d137 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/entity/vo/ScreenPositionTrainingVo.java @@ -0,0 +1,26 @@ +package com.gunshi.project.ss.entity.vo; + + +import com.gunshi.project.ss.model.PersonnelPlan; +import lombok.Data; + +@Data +public class ScreenPositionTrainingVo { + + + //培训计划数量 + private Long trainingCount; + + //已开展 + private Long hasTraining; + + //未开展 + private Long hasNoTraining; + + //参训总人次 + private Long totalTraining; + + + //最新培训内容 + private PersonnelPlan latestPersonnelPlan; +} diff --git a/src/main/java/com/gunshi/project/ss/model/DocCategory.java b/src/main/java/com/gunshi/project/ss/model/DocCategory.java index e95920b..68ccc73 100644 --- a/src/main/java/com/gunshi/project/ss/model/DocCategory.java +++ b/src/main/java/com/gunshi/project/ss/model/DocCategory.java @@ -49,6 +49,9 @@ public class DocCategory { @Schema(description = "当前层级") private Integer level; + @TableField("target_type") + private Integer targetType; + @TableField(exist = false) @Schema(description = "子分类列表") private List children; @@ -56,4 +59,5 @@ public class DocCategory { @TableField(exist = false) @Schema(description = "所有者权限") private List permissions; + } \ No newline at end of file diff --git a/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJob.java b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJob.java index 037d341..3b580b2 100644 --- a/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJob.java +++ b/src/main/java/com/gunshi/project/ss/schedule/TaskGroupJob.java @@ -48,11 +48,6 @@ public class TaskGroupJob implements Job { @Autowired private ForecastResultsService forecastResultsService; - @Autowired - private ForecastUseparamService forecastUseparamService; - - @Autowired - private AttResBaseService attResBaseService; @Autowired private ForecastProjectService forecastProjectService; @@ -92,20 +87,6 @@ public class TaskGroupJob implements Job { List voList = forecastResultsService.autoFloodForecast(forecastTask); // 符合条件就保存到数据库 if (CollectionUtils.isNotEmpty(voList)) { - Map map = forecastUseparamService.getMap(new QueryWrapper().eq("param_code", "ydgdyjz"));// 获取安全值 - AttResBase attResBase = attResBaseService.getOne(new QueryWrapper<>());// 获取堰顶高程 - if (MapUtil.isNotEmpty(map) && ObjectUtils.isNotEmpty(attResBase) && ObjectUtils.isNotEmpty(attResBase.getWcrstel())) { - BigDecimal ydgdyjz = new BigDecimal(map.get("param_value").toString()); - BigDecimal wcrstel = attResBase.getWcrstel(); - Boolean isSave = false; - for (ForecastResultVo vo : voList) { - // 当计算的预报最高水位离堰顶高程小于此安全值,或者超过堰顶高度的值时,发送系统内消息提示。同时自动滚动预报保存方案结果 - if ((vo.getYcSwHValue().add(ydgdyjz)).compareTo(wcrstel) > 0) { - isSave = true; - break; - } - } - if (isSave) { ForecastProject forecastProject = new ForecastProject(); forecastProject.setId(IdWorker.getId()); forecastProject.setName("未来" + forecastPeriod + "小时洪水预报-".concat(sdfTime.format(nowTime))); @@ -125,8 +106,6 @@ public class TaskGroupJob implements Job { forecastProjectService.saveForecastResults(forecastProject); forecastTask.setLastResultsaveTm(nowDate); } - } - } } forecastTaskService.updateById(forecastTask); } catch (Exception e) { diff --git a/src/main/java/com/gunshi/project/ss/service/ScreenReportService.java b/src/main/java/com/gunshi/project/ss/service/ScreenReportService.java new file mode 100644 index 0000000..5954e3d --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ScreenReportService.java @@ -0,0 +1,69 @@ +package com.gunshi.project.ss.service; + + +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.gunshi.project.ss.entity.vo.ForecastResultVo; +import com.gunshi.project.ss.model.ForecastProject; +import com.gunshi.project.ss.model.ForecastResults; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class ScreenReportService { + + @Autowired + private ForecastProjectService forecastProjectService; + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Autowired + private ForecastResultsService forecastResultsService; + + public ForecastProject getForecast() { + ForecastProject one = forecastProjectService.lambdaQuery().eq(ForecastProject::getType, "1").orderByDesc(ForecastProject::getForecastTm).last("limit 1").one(); + if(one == null){ + return null; + } + List forecastResults = forecastResultsService.lambdaQuery() + .eq(ForecastResults::getProjectId, one.getId()).orderByAsc(ForecastResults::getTm).list(); + if(!forecastResults.isEmpty()){ + fillData(forecastResults,one); + } + return one; + } + + public void fillData(List resultList, ForecastProject forecastProject ){ + if (CollectionUtils.isNotEmpty(resultList)) { + List vos = resultList.stream() + .map(result -> { + ForecastResultVo vo = new ForecastResultVo(); + vo.setTm(sdf.format(result.getTm())); + vo.setYcRkQValue(result.getYcRkQValue()); + vo.setRealRkQValue(result.getRealRkQValue()); + vo.setYcCkQValue(result.getYcCkQValue()); + vo.setRealCkQValue(result.getRealCkQValue()); + vo.setYcSwHValue(result.getYcSwHValue()); + vo.setRealSwHValue(result.getRealSwHValue()); + BigDecimal ycSwHValue = result.getYcSwHValue() == null ? BigDecimal.ZERO : result.getYcSwHValue(); + BigDecimal realSwHValue = result.getRealSwHValue() == null ? BigDecimal.ZERO : result.getRealSwHValue(); + vo.setSwHDValue(ycSwHValue.subtract(realSwHValue));// 处理预测与实测水位差 + vo.setDrp(result.getDrp()); + vo.setIspreDrp(result.getIspreDrp()); + vo.setR(result.getR()); + vo.setFlLowLimLev(result.getFlLowLimLev()); + vo.setCurrentYdgdyjz(result.getCurrentYdgdyjz()); + vo.setPa(result.getPa()); + return vo; + }).collect(Collectors.toList()); + forecastProject.setVoList(vos); + forecastResultsService.handleVoList(forecastProject); + } + } +} diff --git a/src/main/java/com/gunshi/project/ss/service/ScreenResponsibilityService.java b/src/main/java/com/gunshi/project/ss/service/ScreenResponsibilityService.java new file mode 100644 index 0000000..7fcec19 --- /dev/null +++ b/src/main/java/com/gunshi/project/ss/service/ScreenResponsibilityService.java @@ -0,0 +1,65 @@ +package com.gunshi.project.ss.service; + + +import com.gunshi.project.ss.entity.vo.ScreenPositionTrainingVo; +import com.gunshi.project.ss.model.PersonnelPlan; +import com.gunshi.project.ss.model.PersonnelPlanLog; +import com.gunshi.project.ss.model.ResPerson; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class ScreenResponsibilityService { + + @Autowired + private PersonnelPlanService personnelPlanService; + + @Autowired + private PersonnelPlanLogService personnelPlanLogService; + + @Autowired + private ResPersonService resPersonService; + + public ScreenPositionTrainingVo getTraining() { + ScreenPositionTrainingVo vo = new ScreenPositionTrainingVo(); + List list = personnelPlanService.lambdaQuery().orderByDesc(PersonnelPlan::getCreateTime).list(); + vo.setTrainingCount(Long.valueOf(list.size())); + + //已开展 + List ids = list.stream().map(o -> o.getId()).collect(Collectors.toList()); + Long hasTraining = 0l; + Long hasNoTraining = 0l; + Long totalTraining = 0L; + //TODO 这里N+1问题自己去解决一下吧,我懒得改了。 + for (Long id : ids) { + List logs = personnelPlanLogService.lambdaQuery().eq(PersonnelPlanLog::getPlanId, id).list(); + if(logs.isEmpty()){ + hasNoTraining++; + }else{ + hasTraining++; + totalTraining += logs.stream().mapToLong(o -> o.getNumPeople()).sum(); + } + } + vo.setHasTraining(hasTraining); + vo.setHasNoTraining(hasNoTraining); + vo.setTotalTraining(totalTraining); + if(!list.isEmpty()){ + PersonnelPlan personnelPlan = list.get(0); + vo.setLatestPersonnelPlan(personnelPlan); + } + return vo; + } + + public List getPerson() { + List list = resPersonService.lambdaQuery().in(ResPerson::getType, Arrays.asList(0, 1, 2)) + .orderByDesc(ResPerson::getCreateTime) + .list(); + return list; + } +} diff --git a/src/main/java/com/gunshi/project/ss/timetask/StWaterDataTask.java b/src/main/java/com/gunshi/project/ss/timetask/StWaterDataTask.java index 0505946..ed425d6 100644 --- a/src/main/java/com/gunshi/project/ss/timetask/StWaterDataTask.java +++ b/src/main/java/com/gunshi/project/ss/timetask/StWaterDataTask.java @@ -45,8 +45,8 @@ public class StWaterDataTask { @Autowired private StWaterRRealService stWaterRRealService; - @Scheduled(fixedDelay = 75 * 60 * 1000) // 75分钟,单位毫秒 - @Async +// @Scheduled(fixedDelay = 75 * 60 * 1000) // 75分钟,单位毫秒 +// @Async public void syncFlowToWater(){ List stcds = stFlowRService.getStcdList(); //去供水量表查数据 @@ -129,8 +129,8 @@ public class StWaterDataTask { } } - @Scheduled(fixedDelay = 76 * 60 * 1000) // 75分钟,单位毫秒 - @Async +// @Scheduled(fixedDelay = 76 * 60 * 1000) // 75分钟,单位毫秒 +// @Async public void syncWaterToReorganize(){ List list = stWaterRReorganizeService.lambdaQuery() .orderByDesc(StWaterRReorganize::getTm).last("limit 1").list();