提交代码

dev_xd
姜玉琦 2025-05-09 22:25:28 +08:00
parent 58e87b2416
commit 93c5730c4c
4 changed files with 73 additions and 54 deletions

View File

@ -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.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,
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
LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_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'
WHEN pp.start_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'
WHEN pp.start_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'
WHEN pp.start_date IS NOT 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'
WHEN pp.start_date IS NOT 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'
END AS task_status,
CASE

View File

@ -1,5 +1,6 @@
package com.yanzhu.manage.controller;
import com.alibaba.fastjson2.JSON;
import com.aspose.tasks.Project;
import com.aspose.tasks.Task;
import com.aspose.tasks.TaskCollection;
@ -105,15 +106,17 @@ public class ProPlanController extends BaseController
Project prj=new Project(file.getInputStream());
List<ProPlan> proPlans=new ArrayList<>();
tasksToPlans(prj.getRootTask().getChildren(),proPlans);
System.out.println("prj.getRootTask().getChildren().size()===>"+ prj.getRootTask().getChildren().size());
for(ProPlan proPlan:proPlans){
proPlan.setComid(compId);
proPlan.setProjectId(projectId);
}
System.out.println("proPlanService.addTasks(proPlans)==>"+proPlans.size());
proPlanService.addTasks(proPlans);
} catch (Exception e) {
e.printStackTrace();
}
return AjaxResult.success();
return AjaxResult.success();
}
private void tasksToPlans(TaskCollection children, List<ProPlan> proPlans) {

View File

@ -76,7 +76,7 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId());
plan.setScheduleNode(proPlanSchedule.getSchedulePercent().toString());
plan.setUpdateTime(proPlanSchedule.getCreateDate());
if(proPlanSchedule.getSchedulePercent()>=100){
if(proPlanSchedule.getSchedulePercent()>=100L){
if(plan.getStartDate()==null){
plan.setStartDate(proPlanSchedule.getCreateDate());
}
@ -281,51 +281,47 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
if(plan.getFinishDate()!=null){
int res = proPlanMapper.updateProPlan(plan);
if(res>0){
// 判断当前结构其它部位是否已全部完成
List<ProPlan> brothers = proPlanMapper.selectProPlanBrothers(plan.getProjectId(),plan.getParentId());
if(brothers.size()==0){
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId());
if(entity!=null){
entity.setUpdateTime(plan.getUpdateTime());
if(entity!=null){
if(entity.getStartDate()==null){
entity.setStartDate(entity.getUpdateTime());
}
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
Float Finished = 0.0F;
try {
if(belows.size()>0){
for(ProPlan item:belows){
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
if(sNode>0){
if(sNode==100){
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
}else{
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
}
if(entity.getStartDate()==null){
entity.setStartDate(entity.getUpdateTime());
}
List<ProPlan> belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId());
Float Finished = 0.0F;
try {
if(belows.size()>0){
for(ProPlan item:belows){
Float sNode = Convert.toFloat(item.getScheduleNode(),0.0F);
if(sNode>0){
if(sNode==100){
Finished += Convert.toFloat(item.getTaskDuation(),0.0F);
}else{
Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100));
}
}
}
}catch (Exception e){
e.printStackTrace();
}
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()==1){
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
}
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());
entity.setFinishDate(plan.getFinishDate());
RecursionEditFinishDate(entity);
}catch (Exception e){
e.printStackTrace();
}
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{
@ -362,7 +358,7 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService
}
}
// 更新总进度
if(entity.getTaskOutlineLevel()==1){
if(entity.getTaskOutlineLevel()==1L){
proPlanScheduleMapper.updateProPlanTotalSchedule(entity.getProjectId(),entity.getScheduleNode());
}
System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode());

View File

@ -89,13 +89,13 @@
<el-table-column label="完成进度" align="center" prop="operator" width="250">
<template #default="scope">
<el-progress
v-if="scope.row.Progress==0"
v-if="scope.row.taskStatus=='zhjxz' || scope.row.taskStatus=='zcjxz'"
:percentage="Number(scope.row.scheduleNode)"
:stroke-width="15"
:text-inside="true"
/>
<el-progress
v-if="scope.row.Progress==-2"
v-if="scope.row.taskStatus=='wks'"
:percentage="Number(scope.row.scheduleNode)"
:stroke-width="15"
status="exception"
@ -103,14 +103,14 @@
:indeterminate="true"
/>
<el-progress
v-if="scope.row.Progress==-1"
v-if="scope.row.taskStatus=='zhwc'"
:percentage="Number(scope.row.scheduleNode)"
:stroke-width="15"
status="warning"
:text-inside="true"
/>
<el-progress
v-if="scope.row.Progress==1"
v-if="scope.row.taskStatus=='zcwc'"
:percentage="Number(scope.row.scheduleNode)"
:stroke-width="15"
status="success"
@ -166,9 +166,9 @@ function getList() {
loading.value = true;
listPlan(queryParams.value).then((response) => {
let tmps = response.data || [];
tmps.forEach(tmp => {
tmp.Progress = compareDate(tmp.planFinishDate,tmp.finishDate);
})
// tmps.forEach(tmp => {
// tmp.Progress = compareDate(tmp.planFinishDate,tmp.finishDate);
// })
let objs = buildTree(tmps, 0);
planList.value = objs;
loading.value = false;