From 46ac46b659d17ae5057c6a2d0c04977b63dbfea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=89=E7=82=AE?= <15856818120@163.com> Date: Sat, 18 Oct 2025 17:01:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=AE=A1=E7=90=86=E5=88=86?= =?UTF-8?q?=E6=9E=90=EF=BC=8C=E6=95=B4=E4=BD=93=E6=95=88=E8=83=BD=E5=88=86?= =?UTF-8?q?=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OverallEfficiencyAnalysisController.java | 2 +- .../controller/ProjectDataController.java | 2 +- .../OverallEfficiencyAnalysisServiceImpl.java | 61 ++++++++++++++----- .../service/impl/ProjectDataServiceImpl.java | 32 +++++----- .../OverallEfficiencyAnalysisMapper.xml | 4 +- .../resources/mapper/ProjectDataMapper.xml | 2 +- 6 files changed, 68 insertions(+), 35 deletions(-) diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/OverallEfficiencyAnalysisController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/OverallEfficiencyAnalysisController.java index fd6be32..ddeb061 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/OverallEfficiencyAnalysisController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/OverallEfficiencyAnalysisController.java @@ -30,7 +30,7 @@ public class OverallEfficiencyAnalysisController extends BaseController { * @param overallEfficiency 传参 * @return 查询整体效能分析 */ - @GetMapping("selectOverallEfficiencyData") + @GetMapping("/selectOverallEfficiencyData") public AjaxResult selectOverallEfficiencyData(OverallEfficiency overallEfficiency) { try { return overallEfficiencyAnalysisService.selectOverallEfficiencyData(overallEfficiency); diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ProjectDataController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ProjectDataController.java index 947edf6..7d82558 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ProjectDataController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ProjectDataController.java @@ -30,7 +30,7 @@ public class ProjectDataController extends BaseController { * @param projectData 传参 * @return 项目管理分析 */ - @GetMapping("selectProjectData") + @GetMapping("/selectProjectData") public AjaxResult selectProjectData(ProjectData projectData) { try { return projectDataService.selectProjectData(projectData); diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/OverallEfficiencyAnalysisServiceImpl.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/OverallEfficiencyAnalysisServiceImpl.java index 300c94e..e46794e 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/OverallEfficiencyAnalysisServiceImpl.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/OverallEfficiencyAnalysisServiceImpl.java @@ -9,6 +9,7 @@ import com.securitycontrol.screen.mapper.OverallEfficiencyAnalysisMapper; import com.securitycontrol.screen.service.OverallEfficiencyAnalysisService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -37,32 +38,64 @@ public class OverallEfficiencyAnalysisServiceImpl implements OverallEfficiencyAn res.put("天气",overallEfficiencyList); //获取施工天数 OverallEfficiency overallEfficiencyNew = overallEfficiencyAnalysisMapper.getPlanDay(overallEfficiency); - res.put("计划施工天数",overallEfficiencyNew.getPlanDay()); - res.put("有效施工天数",overallEfficiencyNew.getEffectiveDay()); + if (StringUtils.isEmpty(overallEfficiencyNew)){ + res.put("计划施工天数",0); + res.put("有效施工天数",0); + }else { + res.put("计划施工天数",overallEfficiencyNew.getPlanDay()); + res.put("有效施工天数",overallEfficiencyNew.getEffectiveDay()); + } + //质量分析 SjProjectQualityVo sjProjectQuality = overallEfficiencyAnalysisMapper.getSjProjectQuality(); - res.put("总验收项",sjProjectQuality.getTotalItem()); - res.put("已验收项",sjProjectQuality.getAcceptItem()); - res.put("验收率",sjProjectQuality.getAcceptRate()); - res.put("主设备试验调试一次通过率",sjProjectQuality.getMainAcceptRate()); + if (StringUtils.isEmpty(overallEfficiencyNew)){ + res.put("总验收项",0); + res.put("已验收项",0); + res.put("验收率",0); + res.put("主设备试验调试一次通过率",0); + }else { + res.put("总验收项",sjProjectQuality.getTotalItem()); + res.put("已验收项",sjProjectQuality.getAcceptItem()); + res.put("验收率",sjProjectQuality.getAcceptRate()); + res.put("主设备试验调试一次通过率",sjProjectQuality.getMainAcceptRate()); + } + //安全预警 List sjProjectSafetyList = overallEfficiencyAnalysisMapper.getSjProjectSafety(overallEfficiency); res.put("安全预警",sjProjectSafetyList); //进度分析 OverallEfficiency overallEfficiencyProgress = overallEfficiencyAnalysisMapper.getProgress(overallEfficiency); - res.put("当前进度",overallEfficiencyProgress.getCurrentProgress()+"%"); - res.put("计划进度",overallEfficiencyProgress.getPlanProgress()+"%"); - res.put("进度偏差",overallEfficiencyProgress.getDeviationPercent()+"%"); + if (StringUtils.isEmpty(overallEfficiencyProgress)){ + res.put("当前进度",0); + res.put("计划进度",0); + res.put("进度偏差",0); + }else { + res.put("当前进度",overallEfficiencyProgress.getCurrentProgress()+"%"); + res.put("计划进度",overallEfficiencyProgress.getPlanProgress()+"%"); + res.put("进度偏差",overallEfficiencyProgress.getDeviationPercent()+"%"); + } //成本分析 1--计划 2--实际 overallEfficiency.setDataType("1"); OverallEfficiency overallEfficiencyCost = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); overallEfficiency.setDataType("2"); OverallEfficiency overallEfficiencyCost2 = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); - res.put("计划成本",overallEfficiencyCost.getDataMoney()); - res.put("实际成本",overallEfficiencyCost2.getDataMoney()); - BigDecimal difference = overallEfficiencyCost2.getDataMoney().subtract(overallEfficiencyCost.getDataMoney()); // B - A - BigDecimal ratio = difference.divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入 - res.put("缩减成本",ratio+"%"); + if(StringUtils.isEmpty(overallEfficiencyCost)){ + res.put("计划成本",BigDecimal.ZERO); + }else { + res.put("计划成本",overallEfficiencyCost.getDataMoney()); + } + if(StringUtils.isEmpty(overallEfficiencyCost2)){ + res.put("实际成本",BigDecimal.ZERO); + }else { + res.put("实际成本",overallEfficiencyCost2.getDataMoney()); + } + if(StringUtils.isEmpty(overallEfficiencyCost) || StringUtils.isEmpty(overallEfficiencyCost2)){ + res.put("实际成本",BigDecimal.ZERO); + }else { + BigDecimal difference = overallEfficiencyCost2.getDataMoney().subtract(overallEfficiencyCost.getDataMoney()); // B - A + BigDecimal ratio = difference.divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入 + res.put("缩减成本",ratio+"%"); + } return AjaxResult.success(res); } } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ProjectDataServiceImpl.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ProjectDataServiceImpl.java index bdbc95f..5a97d6d 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ProjectDataServiceImpl.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ProjectDataServiceImpl.java @@ -11,6 +11,7 @@ import com.securitycontrol.screen.mapper.SjConstructionProgressMapper; import com.securitycontrol.screen.service.ProjectDataService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -45,26 +46,25 @@ public class ProjectDataServiceImpl implements ProjectDataService { overallEfficiency.setEndTime(projectData.getEndTime()); //进度分析 OverallEfficiency overallEfficiencyProgress = overallEfficiencyAnalysisMapper.getProgress(overallEfficiency); - res.put("当前工程进度",overallEfficiencyProgress.getCurrentProgress()+"%"); + if (StringUtils.isEmpty(overallEfficiencyProgress)){ + res.put("当前工程进度",0); + }else { + res.put("当前工程进度",overallEfficiencyProgress.getCurrentProgress()+"%"); + } + //成本分析 1--计划 2--实际 overallEfficiency.setDataType("1"); OverallEfficiency overallEfficiencyCost = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); overallEfficiency.setDataType("2"); OverallEfficiency overallEfficiencyCost2 = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); - BigDecimal ratio = overallEfficiencyCost2.getDataMoney().divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入 - res.put("当前成本投入",ratio+"%"); + if (StringUtils.isEmpty(overallEfficiencyCost) || StringUtils.isEmpty(overallEfficiencyCost2) ){ + res.put("当前成本投入",0); + }else { + BigDecimal ratio = overallEfficiencyCost2.getDataMoney().divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入 + res.put("当前成本投入",ratio+"%"); + } //折线图 SjConstructionProgress o = new SjConstructionProgress(); - String sql = "SELECT DATE_ADD("+projectData.getStartTime()+", INTERVAL (ones.a + tens.a * 10) DAY) AS dt\n" + - " FROM\n" + - " (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3\n" + - " UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7\n" + - " UNION ALL SELECT 8 UNION ALL SELECT 9) AS ones\n" + - " CROSS JOIN\n" + - " (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3\n" + - " UNION ALL SELECT 4 UNION ALL SELECT 5) AS tens\n" + - " WHERE DATE_ADD("+projectData.getStartTime()+", INTERVAL (ones.a + tens.a * 10) DAY) <= "+projectData.getEndTime(); - o.setSql(sql); o.setEndTime(projectData.getEndTime()); o.setStartTime(projectData.getStartTime()); List echartsList = sjConstructionProgressMapper.selectProProgress(o); @@ -72,7 +72,7 @@ public class ProjectDataServiceImpl implements ProjectDataService { .collect(Collectors.groupingBy(SjConstructionProgress::getProType)); res.put("项目情况详情",groupedByProTypeEcharts); //今日风险 - Integer countNum=0 ; + int countNum=0 ; projectData.setDateTime(DateUtils.getDate()); List projectSafetyDataList = projectDataMapper.getTodaySafety(projectData); for (ProjectData projectDataNew:projectSafetyDataList) { @@ -98,10 +98,10 @@ public class ProjectDataServiceImpl implements ProjectDataService { projectDataCountNum.setNum(countNum); projectSafetyDataList2.add(projectDataCountNum); res.put("项目风险",projectSafetyDataList2); - Integer xhCount = projectDataMapper.getXhSafety(projectData); + int xhCount = projectDataMapper.getXhSafety(projectData); res.put("已销号风险",xhCount); res.put("剩余风险",countNum-xhCount); - Integer twoCount = projectDataMapper.getTwoSafety(projectData); + int twoCount = projectDataMapper.getTwoSafety(projectData); res.put("剩余二级及以上风险",twoCount); return AjaxResult.success(res); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/OverallEfficiencyAnalysisMapper.xml b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/OverallEfficiencyAnalysisMapper.xml index 1ba43b9..4859d05 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/OverallEfficiencyAnalysisMapper.xml +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/OverallEfficiencyAnalysisMapper.xml @@ -12,7 +12,7 @@ SELECT SUM( DATEDIFF(LEAST(plan_end_time, #{endTime}), GREATEST(plan_start_time, #{startTime})) + 1 - ) AS total_plan_days, + ) AS planDay, SUM( CASE WHEN start_time IS NOT NULL AND end_time IS NOT NULL THEN @@ -25,7 +25,7 @@ ) ELSE 0 END - ) AS total_actual_days + ) AS effectiveDay FROM sj_construction_progress WHERE diff --git a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ProjectDataMapper.xml b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ProjectDataMapper.xml index b1fb3d0..61cc0ba 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ProjectDataMapper.xml +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ProjectDataMapper.xml @@ -4,7 +4,7 @@