项目管理分析,整体效能分析
This commit is contained in:
parent
c1ddca32fc
commit
46ac46b659
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
if (StringUtils.isEmpty(overallEfficiencyNew)){
|
||||||
|
res.put("计划施工天数",0);
|
||||||
|
res.put("有效施工天数",0);
|
||||||
|
}else {
|
||||||
res.put("计划施工天数",overallEfficiencyNew.getPlanDay());
|
res.put("计划施工天数",overallEfficiencyNew.getPlanDay());
|
||||||
res.put("有效施工天数",overallEfficiencyNew.getEffectiveDay());
|
res.put("有效施工天数",overallEfficiencyNew.getEffectiveDay());
|
||||||
|
}
|
||||||
|
|
||||||
//质量分析
|
//质量分析
|
||||||
SjProjectQualityVo sjProjectQuality = overallEfficiencyAnalysisMapper.getSjProjectQuality();
|
SjProjectQualityVo sjProjectQuality = overallEfficiencyAnalysisMapper.getSjProjectQuality();
|
||||||
|
if (StringUtils.isEmpty(overallEfficiencyNew)){
|
||||||
|
res.put("总验收项",0);
|
||||||
|
res.put("已验收项",0);
|
||||||
|
res.put("验收率",0);
|
||||||
|
res.put("主设备试验调试一次通过率",0);
|
||||||
|
}else {
|
||||||
res.put("总验收项",sjProjectQuality.getTotalItem());
|
res.put("总验收项",sjProjectQuality.getTotalItem());
|
||||||
res.put("已验收项",sjProjectQuality.getAcceptItem());
|
res.put("已验收项",sjProjectQuality.getAcceptItem());
|
||||||
res.put("验收率",sjProjectQuality.getAcceptRate());
|
res.put("验收率",sjProjectQuality.getAcceptRate());
|
||||||
res.put("主设备试验调试一次通过率",sjProjectQuality.getMainAcceptRate());
|
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);
|
||||||
|
if (StringUtils.isEmpty(overallEfficiencyProgress)){
|
||||||
|
res.put("当前进度",0);
|
||||||
|
res.put("计划进度",0);
|
||||||
|
res.put("进度偏差",0);
|
||||||
|
}else {
|
||||||
res.put("当前进度",overallEfficiencyProgress.getCurrentProgress()+"%");
|
res.put("当前进度",overallEfficiencyProgress.getCurrentProgress()+"%");
|
||||||
res.put("计划进度",overallEfficiencyProgress.getPlanProgress()+"%");
|
res.put("计划进度",overallEfficiencyProgress.getPlanProgress()+"%");
|
||||||
res.put("进度偏差",overallEfficiencyProgress.getDeviationPercent()+"%");
|
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);
|
||||||
|
if(StringUtils.isEmpty(overallEfficiencyCost)){
|
||||||
|
res.put("计划成本",BigDecimal.ZERO);
|
||||||
|
}else {
|
||||||
res.put("计划成本",overallEfficiencyCost.getDataMoney());
|
res.put("计划成本",overallEfficiencyCost.getDataMoney());
|
||||||
|
}
|
||||||
|
if(StringUtils.isEmpty(overallEfficiencyCost2)){
|
||||||
|
res.put("实际成本",BigDecimal.ZERO);
|
||||||
|
}else {
|
||||||
res.put("实际成本",overallEfficiencyCost2.getDataMoney());
|
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 difference = overallEfficiencyCost2.getDataMoney().subtract(overallEfficiencyCost.getDataMoney()); // B - A
|
||||||
BigDecimal ratio = difference.divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入
|
BigDecimal ratio = difference.divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入
|
||||||
res.put("缩减成本",ratio+"%");
|
res.put("缩减成本",ratio+"%");
|
||||||
|
}
|
||||||
return AjaxResult.success(res);
|
return AjaxResult.success(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
if (StringUtils.isEmpty(overallEfficiencyProgress)){
|
||||||
|
res.put("当前工程进度",0);
|
||||||
|
}else {
|
||||||
res.put("当前工程进度",overallEfficiencyProgress.getCurrentProgress()+"%");
|
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);
|
||||||
|
if (StringUtils.isEmpty(overallEfficiencyCost) || StringUtils.isEmpty(overallEfficiencyCost2) ){
|
||||||
|
res.put("当前成本投入",0);
|
||||||
|
}else {
|
||||||
BigDecimal ratio = overallEfficiencyCost2.getDataMoney().divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入
|
BigDecimal ratio = overallEfficiencyCost2.getDataMoney().divide(overallEfficiencyCost.getDataMoney(), 2, RoundingMode.HALF_UP); // 除法,保留scale位小数,四舍五入
|
||||||
res.put("当前成本投入",ratio+"%");
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue