Merge remote-tracking branch 'origin/main'

This commit is contained in:
haozq 2025-10-27 15:07:11 +08:00
commit 967abac3e7
8 changed files with 73 additions and 38 deletions

View File

@ -30,7 +30,7 @@ public class OverallEfficiencyAnalysisController extends BaseController {
* @param overallEfficiency 传参 * @param overallEfficiency 传参
* @return 查询整体效能分析 * @return 查询整体效能分析
*/ */
@GetMapping("selectOverallEfficiencyData") @GetMapping("/selectOverallEfficiencyData")
public AjaxResult selectOverallEfficiencyData(OverallEfficiency overallEfficiency) { public AjaxResult selectOverallEfficiencyData(OverallEfficiency overallEfficiency) {
try { try {
return overallEfficiencyAnalysisService.selectOverallEfficiencyData(overallEfficiency); return overallEfficiencyAnalysisService.selectOverallEfficiencyData(overallEfficiency);

View File

@ -30,7 +30,7 @@ public class ProjectDataController extends BaseController {
* @param projectData 传参 * @param projectData 传参
* @return 项目管理分析 * @return 项目管理分析
*/ */
@GetMapping("selectProjectData") @GetMapping("/selectProjectData")
public AjaxResult selectProjectData(ProjectData projectData) { public AjaxResult selectProjectData(ProjectData projectData) {
try { try {
return projectDataService.selectProjectData(projectData); return projectDataService.selectProjectData(projectData);

View File

@ -9,6 +9,7 @@ import com.securitycontrol.screen.mapper.OverallEfficiencyAnalysisMapper;
import com.securitycontrol.screen.service.OverallEfficiencyAnalysisService; import com.securitycontrol.screen.service.OverallEfficiencyAnalysisService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -37,32 +38,64 @@ public class OverallEfficiencyAnalysisServiceImpl implements OverallEfficiencyAn
res.put("天气",overallEfficiencyList); res.put("天气",overallEfficiencyList);
//获取施工天数 //获取施工天数
OverallEfficiency overallEfficiencyNew = overallEfficiencyAnalysisMapper.getPlanDay(overallEfficiency); OverallEfficiency overallEfficiencyNew = overallEfficiencyAnalysisMapper.getPlanDay(overallEfficiency);
res.put("计划施工天数",overallEfficiencyNew.getPlanDay()); if (StringUtils.isEmpty(overallEfficiencyNew)){
res.put("有效施工天数",overallEfficiencyNew.getEffectiveDay()); res.put("计划施工天数",0);
res.put("有效施工天数",0);
}else {
res.put("计划施工天数",overallEfficiencyNew.getPlanDay());
res.put("有效施工天数",overallEfficiencyNew.getEffectiveDay());
}
//质量分析 //质量分析
SjProjectQualityVo sjProjectQuality = overallEfficiencyAnalysisMapper.getSjProjectQuality(); SjProjectQualityVo sjProjectQuality = overallEfficiencyAnalysisMapper.getSjProjectQuality();
res.put("总验收项",sjProjectQuality.getTotalItem()); if (StringUtils.isEmpty(overallEfficiencyNew)){
res.put("已验收项",sjProjectQuality.getAcceptItem()); res.put("总验收项",0);
res.put("验收率",sjProjectQuality.getAcceptRate()); res.put("已验收项",0);
res.put("主设备试验调试一次通过率",sjProjectQuality.getMainAcceptRate()); res.put("验收率",0);
res.put("主设备试验调试一次通过率",0);
}else {
res.put("总验收项",sjProjectQuality.getTotalItem());
res.put("已验收项",sjProjectQuality.getAcceptItem());
res.put("验收率",sjProjectQuality.getAcceptRate());
res.put("主设备试验调试一次通过率",sjProjectQuality.getMainAcceptRate());
}
//安全预警 //安全预警
List<SjProjectSafety> sjProjectSafetyList = overallEfficiencyAnalysisMapper.getSjProjectSafety(overallEfficiency); List<SjProjectSafety> sjProjectSafetyList = overallEfficiencyAnalysisMapper.getSjProjectSafety(overallEfficiency);
res.put("安全预警",sjProjectSafetyList); res.put("安全预警",sjProjectSafetyList);
//进度分析 //进度分析
OverallEfficiency overallEfficiencyProgress = overallEfficiencyAnalysisMapper.getProgress(overallEfficiency); OverallEfficiency overallEfficiencyProgress = overallEfficiencyAnalysisMapper.getProgress(overallEfficiency);
res.put("当前进度",overallEfficiencyProgress.getCurrentProgress()+"%"); if (StringUtils.isEmpty(overallEfficiencyProgress)){
res.put("计划进度",overallEfficiencyProgress.getPlanProgress()+"%"); res.put("当前进度",0);
res.put("进度偏差",overallEfficiencyProgress.getDeviationPercent()+"%"); res.put("计划进度",0);
res.put("进度偏差",0);
}else {
res.put("当前进度",overallEfficiencyProgress.getCurrentProgress()+"%");
res.put("计划进度",overallEfficiencyProgress.getPlanProgress()+"%");
res.put("进度偏差",overallEfficiencyProgress.getDeviationPercent()+"%");
}
//成本分析 1--计划 2--实际 //成本分析 1--计划 2--实际
overallEfficiency.setDataType("1"); overallEfficiency.setDataType("1");
OverallEfficiency overallEfficiencyCost = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); OverallEfficiency overallEfficiencyCost = overallEfficiencyAnalysisMapper.getCost(overallEfficiency);
overallEfficiency.setDataType("2"); overallEfficiency.setDataType("2");
OverallEfficiency overallEfficiencyCost2 = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); OverallEfficiency overallEfficiencyCost2 = overallEfficiencyAnalysisMapper.getCost(overallEfficiency);
res.put("计划成本",overallEfficiencyCost.getDataMoney()); if(StringUtils.isEmpty(overallEfficiencyCost)){
res.put("实际成本",overallEfficiencyCost2.getDataMoney()); res.put("计划成本",BigDecimal.ZERO);
BigDecimal difference = overallEfficiencyCost2.getDataMoney().subtract(overallEfficiencyCost.getDataMoney()); // B - A }else {
BigDecimal ratio = difference.divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法保留scale位小数四舍五入 res.put("计划成本",overallEfficiencyCost.getDataMoney());
res.put("缩减成本",ratio+"%"); }
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); return AjaxResult.success(res);
} }
} }

View File

@ -11,6 +11,7 @@ import com.securitycontrol.screen.mapper.SjConstructionProgressMapper;
import com.securitycontrol.screen.service.ProjectDataService; import com.securitycontrol.screen.service.ProjectDataService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -45,26 +46,25 @@ public class ProjectDataServiceImpl implements ProjectDataService {
overallEfficiency.setEndTime(projectData.getEndTime()); overallEfficiency.setEndTime(projectData.getEndTime());
//进度分析 //进度分析
OverallEfficiency overallEfficiencyProgress = overallEfficiencyAnalysisMapper.getProgress(overallEfficiency); OverallEfficiency overallEfficiencyProgress = overallEfficiencyAnalysisMapper.getProgress(overallEfficiency);
res.put("当前工程进度",overallEfficiencyProgress.getCurrentProgress()+"%"); if (StringUtils.isEmpty(overallEfficiencyProgress)){
res.put("当前工程进度",0);
}else {
res.put("当前工程进度",overallEfficiencyProgress.getCurrentProgress()+"%");
}
//成本分析 1--计划 2--实际 //成本分析 1--计划 2--实际
overallEfficiency.setDataType("1"); overallEfficiency.setDataType("1");
OverallEfficiency overallEfficiencyCost = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); OverallEfficiency overallEfficiencyCost = overallEfficiencyAnalysisMapper.getCost(overallEfficiency);
overallEfficiency.setDataType("2"); overallEfficiency.setDataType("2");
OverallEfficiency overallEfficiencyCost2 = overallEfficiencyAnalysisMapper.getCost(overallEfficiency); OverallEfficiency overallEfficiencyCost2 = overallEfficiencyAnalysisMapper.getCost(overallEfficiency);
BigDecimal ratio = overallEfficiencyCost2.getDataMoney().divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法保留scale位小数四舍五入 if (StringUtils.isEmpty(overallEfficiencyCost) || StringUtils.isEmpty(overallEfficiencyCost2) ){
res.put("当前成本投入",ratio+"%"); res.put("当前成本投入",0);
}else {
BigDecimal ratio = overallEfficiencyCost2.getDataMoney().divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法保留scale位小数四舍五入
res.put("当前成本投入",ratio+"%");
}
//折线图 //折线图
SjConstructionProgress o = new SjConstructionProgress(); 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.setEndTime(projectData.getEndTime());
o.setStartTime(projectData.getStartTime()); o.setStartTime(projectData.getStartTime());
List<SjConstructionProgress> echartsList = sjConstructionProgressMapper.selectProProgress(o); List<SjConstructionProgress> echartsList = sjConstructionProgressMapper.selectProProgress(o);
@ -72,7 +72,7 @@ public class ProjectDataServiceImpl implements ProjectDataService {
.collect(Collectors.groupingBy(SjConstructionProgress::getProType)); .collect(Collectors.groupingBy(SjConstructionProgress::getProType));
res.put("项目情况详情",groupedByProTypeEcharts); res.put("项目情况详情",groupedByProTypeEcharts);
//今日风险 //今日风险
Integer countNum=0 ; int countNum=0 ;
projectData.setDateTime(DateUtils.getDate()); projectData.setDateTime(DateUtils.getDate());
List<ProjectData> projectSafetyDataList = projectDataMapper.getTodaySafety(projectData); List<ProjectData> projectSafetyDataList = projectDataMapper.getTodaySafety(projectData);
for (ProjectData projectDataNew:projectSafetyDataList) { for (ProjectData projectDataNew:projectSafetyDataList) {
@ -98,10 +98,10 @@ public class ProjectDataServiceImpl implements ProjectDataService {
projectDataCountNum.setNum(countNum); projectDataCountNum.setNum(countNum);
projectSafetyDataList2.add(projectDataCountNum); projectSafetyDataList2.add(projectDataCountNum);
res.put("项目风险",projectSafetyDataList2); res.put("项目风险",projectSafetyDataList2);
Integer xhCount = projectDataMapper.getXhSafety(projectData); int xhCount = projectDataMapper.getXhSafety(projectData);
res.put("已销号风险",xhCount); res.put("已销号风险",xhCount);
res.put("剩余风险",countNum-xhCount); res.put("剩余风险",countNum-xhCount);
Integer twoCount = projectDataMapper.getTwoSafety(projectData); int twoCount = projectDataMapper.getTwoSafety(projectData);
res.put("剩余二级及以上风险",twoCount); res.put("剩余二级及以上风险",twoCount);
return AjaxResult.success(res); return AjaxResult.success(res);
} }

View File

@ -37,9 +37,11 @@ public class SjProjectSafetyServiceImpl implements SjProjectSafetyService {
List<SjProjectSafety> sjProjectSafeties = mapper.selectProSafetyVideo(o); List<SjProjectSafety> sjProjectSafeties = mapper.selectProSafetyVideo(o);
sjProjectSafeties.forEach(data -> { sjProjectSafeties.forEach(data -> {
Result<SysFile> result= remoteFileService.getFileBast64(data.getImagePath(), SecurityConstants.INNER); Result<SysFile> result= remoteFileService.getFileBast64(data.getImagePath(), SecurityConstants.INNER);
data.setImagePath(result.getData().getUrl()); if(result != null && Result.isSuccess(result)){
data.setImagePath(result.getData().getUrl());
}
}); });
return mapper.selectProSafetyVideo(o); return sjProjectSafeties;
} }
@Override @Override

View File

@ -12,7 +12,7 @@
SELECT SELECT
SUM( SUM(
DATEDIFF(LEAST(plan_end_time, #{endTime}), GREATEST(plan_start_time, #{startTime})) + 1 DATEDIFF(LEAST(plan_end_time, #{endTime}), GREATEST(plan_start_time, #{startTime})) + 1
) AS total_plan_days, ) AS planDay,
SUM( SUM(
CASE CASE
WHEN start_time IS NOT NULL AND end_time IS NOT NULL THEN WHEN start_time IS NOT NULL AND end_time IS NOT NULL THEN
@ -25,7 +25,7 @@
) )
ELSE 0 ELSE 0
END END
) AS total_actual_days ) AS effectiveDay
FROM FROM
sj_construction_progress sj_construction_progress
WHERE WHERE

View File

@ -4,7 +4,7 @@
<select id="getCost" resultType="com.securitycontrol.screen.domain.ProjectData"> <select id="getCost" resultType="com.securitycontrol.screen.domain.ProjectData">
select date_time,data_money select date_time as dateTime,data_money as dataMoney
from sj_project_manage where data_type= #{dataType} from sj_project_manage where data_type= #{dataType}
and date_time between #{startTime} and #{endTime} and date_time between #{startTime} and #{endTime}
</select> </select>

View File

@ -41,7 +41,7 @@
tpd.bid_code = #{bidCode} tpd.bid_code = #{bidCode}
AND tbd.device_code = #{deviceCode} AND tbd.device_code = #{deviceCode}
AND thdv.create_time IS NOT NULL AND thdv.create_time IS NOT NULL
AND DATE(thdv.create_time) BETWEEN #{startDate} AND #{startDate} AND DATE(thdv.create_time) BETWEEN #{startDate} AND #{endDate}
ORDER BY currentDay,`hour` ORDER BY currentDay,`hour`
</select> </select>
</mapper> </mapper>