提交代码
parent
58e87b2416
commit
93c5730c4c
|
@ -43,7 +43,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
|
pp.task_outline_level, pp.task_name, pp.task_duation, pp.start_date, pp.finish_date,
|
||||||
pp.predecessors, pp.plan_start_date, pp.plan_finish_date, pp.bim_id, pp.operator, pp.operator_id,
|
pp.predecessors, pp.plan_start_date, pp.plan_finish_date, pp.bim_id, pp.operator, pp.operator_id,
|
||||||
pp.group_id, pp.group_name, pp.schedule_node, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
|
pp.group_id, pp.group_name, pp.schedule_node, pp.is_del, pp.create_by, pp.create_time, pp.update_by, pp.update_time, pp.remark,
|
||||||
dp.`dept_name` comp_name,pi.`project_name`
|
dp.`dept_name` comp_name,pi.`project_name`,
|
||||||
|
CASE
|
||||||
|
WHEN pp.start_date IS NULL THEN
|
||||||
|
'wks'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NOT NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ >= ]]> date(pp.finish_date) THEN
|
||||||
|
'zcwc'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NOT NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ < ]]> date(pp.finish_date) THEN
|
||||||
|
'zhwc'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ >= ]]> date(NOW()) THEN
|
||||||
|
'zcjxz'
|
||||||
|
WHEN pp.start_date IS NOT NULL
|
||||||
|
AND pp.finish_date IS NULL
|
||||||
|
AND date(pp.plan_finish_date) <![CDATA[ < ]]> date(NOW()) THEN
|
||||||
|
'zhjxz'
|
||||||
|
END AS task_status
|
||||||
from pro_plan pp
|
from pro_plan pp
|
||||||
LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_id`
|
LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_id`
|
||||||
LEFT JOIN pro_project_info pi ON pp.`project_id`=pi.`id`
|
LEFT JOIN pro_project_info pi ON pp.`project_id`=pi.`id`
|
||||||
|
@ -291,19 +311,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
'wks'
|
'wks'
|
||||||
WHEN pp.start_date IS NOT NULL
|
WHEN pp.start_date IS NOT NULL
|
||||||
AND pp.finish_date IS NOT NULL
|
AND pp.finish_date IS NOT NULL
|
||||||
AND pp.plan_finish_date <![CDATA[ >= ]]> pp.finish_date THEN
|
AND date(pp.plan_finish_date) <![CDATA[ >= ]]> date(pp.finish_date) THEN
|
||||||
'zcwc'
|
'zcwc'
|
||||||
WHEN pp.start_date IS NOT NULL
|
WHEN pp.start_date IS NOT NULL
|
||||||
AND pp.finish_date IS NOT NULL
|
AND pp.finish_date IS NOT NULL
|
||||||
AND pp.plan_finish_date <![CDATA[ < ]]> pp.finish_date THEN
|
AND date(pp.plan_finish_date) <![CDATA[ < ]]> date(pp.finish_date) THEN
|
||||||
'zhwc'
|
'zhwc'
|
||||||
WHEN pp.start_date IS NOT NULL
|
WHEN pp.start_date IS NOT NULL
|
||||||
AND pp.finish_date IS NULL
|
AND pp.finish_date IS NULL
|
||||||
AND pp.plan_finish_date <![CDATA[ >= ]]> NOW() THEN
|
AND date(pp.plan_finish_date) <![CDATA[ >= ]]> date(NOW()) THEN
|
||||||
'zcjxz'
|
'zcjxz'
|
||||||
WHEN pp.start_date IS NOT NULL
|
WHEN pp.start_date IS NOT NULL
|
||||||
AND pp.finish_date IS NULL
|
AND pp.finish_date IS NULL
|
||||||
AND pp.plan_finish_date <![CDATA[ < ]]> NOW() THEN
|
AND date(pp.plan_finish_date) <![CDATA[ < ]]> date(NOW()) THEN
|
||||||
'zhjxz'
|
'zhjxz'
|
||||||
END AS task_status,
|
END AS task_status,
|
||||||
CASE
|
CASE
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.yanzhu.manage.controller;
|
package com.yanzhu.manage.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.aspose.tasks.Project;
|
import com.aspose.tasks.Project;
|
||||||
import com.aspose.tasks.Task;
|
import com.aspose.tasks.Task;
|
||||||
import com.aspose.tasks.TaskCollection;
|
import com.aspose.tasks.TaskCollection;
|
||||||
|
@ -105,15 +106,17 @@ public class ProPlanController extends BaseController
|
||||||
Project prj=new Project(file.getInputStream());
|
Project prj=new Project(file.getInputStream());
|
||||||
List<ProPlan> proPlans=new ArrayList<>();
|
List<ProPlan> proPlans=new ArrayList<>();
|
||||||
tasksToPlans(prj.getRootTask().getChildren(),proPlans);
|
tasksToPlans(prj.getRootTask().getChildren(),proPlans);
|
||||||
|
System.out.println("prj.getRootTask().getChildren().size()===>"+ prj.getRootTask().getChildren().size());
|
||||||
for(ProPlan proPlan:proPlans){
|
for(ProPlan proPlan:proPlans){
|
||||||
proPlan.setComid(compId);
|
proPlan.setComid(compId);
|
||||||
proPlan.setProjectId(projectId);
|
proPlan.setProjectId(projectId);
|
||||||
}
|
}
|
||||||
|
System.out.println("proPlanService.addTasks(proPlans)==>"+proPlans.size());
|
||||||
proPlanService.addTasks(proPlans);
|
proPlanService.addTasks(proPlans);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tasksToPlans(TaskCollection children, List<ProPlan> proPlans) {
|
private void tasksToPlans(TaskCollection children, List<ProPlan> proPlans) {
|
||||||
|
|
|
@ -76,7 +76,7 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId());
|
ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId());
|
||||||
plan.setScheduleNode(proPlanSchedule.getSchedulePercent().toString());
|
plan.setScheduleNode(proPlanSchedule.getSchedulePercent().toString());
|
||||||
plan.setUpdateTime(proPlanSchedule.getCreateDate());
|
plan.setUpdateTime(proPlanSchedule.getCreateDate());
|
||||||
if(proPlanSchedule.getSchedulePercent()>=100){
|
if(proPlanSchedule.getSchedulePercent()>=100L){
|
||||||
if(plan.getStartDate()==null){
|
if(plan.getStartDate()==null){
|
||||||
plan.setStartDate(proPlanSchedule.getCreateDate());
|
plan.setStartDate(proPlanSchedule.getCreateDate());
|
||||||
}
|
}
|
||||||
|
@ -281,51 +281,47 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
if(plan.getFinishDate()!=null){
|
if(plan.getFinishDate()!=null){
|
||||||
int res = proPlanMapper.updateProPlan(plan);
|
int res = proPlanMapper.updateProPlan(plan);
|
||||||
if(res>0){
|
if(res>0){
|
||||||
// 判断当前结构其它部位是否已全部完成
|
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
|
||||||
List<ProPlan> brothers = proPlanMapper.selectProPlanBrothers(plan.getProjectId(),plan.getParentId());
|
if(entity!=null){
|
||||||
if(brothers.size()==0){
|
|
||||||
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
|
|
||||||
entity.setUpdateTime(plan.getUpdateTime());
|
entity.setUpdateTime(plan.getUpdateTime());
|
||||||
if(entity!=null){
|
if(entity.getStartDate()==null){
|
||||||
if(entity.getStartDate()==null){
|
entity.setStartDate(entity.getUpdateTime());
|
||||||
entity.setStartDate(entity.getUpdateTime());
|
}
|
||||||
}
|
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
|
||||||
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
|
Float Finished = 0.0F;
|
||||||
Float Finished = 0.0F;
|
try {
|
||||||
try {
|
if(belows.size()>0){
|
||||||
if(belows.size()>0){
|
for(ProPlan item:belows){
|
||||||
for(ProPlan item:belows){
|
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
||||||
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
|
if(sNode>0){
|
||||||
if(sNode>0){
|
if(sNode==100){
|
||||||
if(sNode==100){
|
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
||||||
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
|
}else{
|
||||||
}else{
|
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
||||||
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
if(Finished==0){
|
}catch (Exception e){
|
||||||
entity.setScheduleNode("0");
|
e.printStackTrace();
|
||||||
}else{
|
|
||||||
Double _cn = Convert.toDouble(Finished/entity.getTaskDuation())*100;
|
|
||||||
if(_cn>100){
|
|
||||||
entity.setScheduleNode("100");
|
|
||||||
}else{
|
|
||||||
entity.setScheduleNode(String.format("%.2f", _cn));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 更新总进度
|
|
||||||
if(entity.getTaskOutlineLevel()==1){
|
|
||||||
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
|
||||||
}
|
|
||||||
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
|
||||||
entity.setFinishDate(plan.getFinishDate());
|
|
||||||
RecursionEditFinishDate(entity);
|
|
||||||
}
|
}
|
||||||
|
if(Finished==0){
|
||||||
|
entity.setScheduleNode("0");
|
||||||
|
}else{
|
||||||
|
Double _cn = Convert.toDouble(Finished/entity.getTaskDuation())*100;
|
||||||
|
if(_cn>100){
|
||||||
|
entity.setScheduleNode("100");
|
||||||
|
}else{
|
||||||
|
entity.setScheduleNode(String.format("%.2f", _cn));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 更新总进度
|
||||||
|
if(entity.getTaskOutlineLevel()==1L){
|
||||||
|
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
||||||
|
}
|
||||||
|
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||||
|
entity.setFinishDate(plan.getFinishDate());
|
||||||
|
RecursionEditFinishDate(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
@ -362,7 +358,7 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 更新总进度
|
// 更新总进度
|
||||||
if(entity.getTaskOutlineLevel()==1){
|
if(entity.getTaskOutlineLevel()==1L){
|
||||||
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
|
||||||
}
|
}
|
||||||
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
|
||||||
|
|
|
@ -89,13 +89,13 @@
|
||||||
<el-table-column label="完成进度" align="center" prop="operator" width="250">
|
<el-table-column label="完成进度" align="center" prop="operator" width="250">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-progress
|
<el-progress
|
||||||
v-if="scope.row.Progress==0"
|
v-if="scope.row.taskStatus=='zhjxz' || scope.row.taskStatus=='zcjxz'"
|
||||||
:percentage="Number(scope.row.scheduleNode)"
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
:stroke-width="15"
|
:stroke-width="15"
|
||||||
:text-inside="true"
|
:text-inside="true"
|
||||||
/>
|
/>
|
||||||
<el-progress
|
<el-progress
|
||||||
v-if="scope.row.Progress==-2"
|
v-if="scope.row.taskStatus=='wks'"
|
||||||
:percentage="Number(scope.row.scheduleNode)"
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
:stroke-width="15"
|
:stroke-width="15"
|
||||||
status="exception"
|
status="exception"
|
||||||
|
@ -103,14 +103,14 @@
|
||||||
:indeterminate="true"
|
:indeterminate="true"
|
||||||
/>
|
/>
|
||||||
<el-progress
|
<el-progress
|
||||||
v-if="scope.row.Progress==-1"
|
v-if="scope.row.taskStatus=='zhwc'"
|
||||||
:percentage="Number(scope.row.scheduleNode)"
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
:stroke-width="15"
|
:stroke-width="15"
|
||||||
status="warning"
|
status="warning"
|
||||||
:text-inside="true"
|
:text-inside="true"
|
||||||
/>
|
/>
|
||||||
<el-progress
|
<el-progress
|
||||||
v-if="scope.row.Progress==1"
|
v-if="scope.row.taskStatus=='zcwc'"
|
||||||
:percentage="Number(scope.row.scheduleNode)"
|
:percentage="Number(scope.row.scheduleNode)"
|
||||||
:stroke-width="15"
|
:stroke-width="15"
|
||||||
status="success"
|
status="success"
|
||||||
|
@ -166,9 +166,9 @@ function getList() {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
listPlan(queryParams.value).then((response) => {
|
listPlan(queryParams.value).then((response) => {
|
||||||
let tmps = response.data || [];
|
let tmps = response.data || [];
|
||||||
tmps.forEach(tmp => {
|
// tmps.forEach(tmp => {
|
||||||
tmp.Progress = compareDate(tmp.planFinishDate,tmp.finishDate);
|
// tmp.Progress = compareDate(tmp.planFinishDate,tmp.finishDate);
|
||||||
})
|
// })
|
||||||
let objs = buildTree(tmps, 0);
|
let objs = buildTree(tmps, 0);
|
||||||
planList.value = objs;
|
planList.value = objs;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
|
|
Loading…
Reference in New Issue