diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlan.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlan.java index 00b7c57d..9c11cdcc 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlan.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlan.java @@ -18,7 +18,7 @@ public class ProPlan extends BaseEntity { private static final long serialVersionUID = 1L; - /** $column.columnComment */ + /** 主键 */ private Long id; /** 公司ID */ @@ -120,8 +120,12 @@ public class ProPlan extends BaseEntity } private String projectName; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + + /** 进度节点 */ + private String scheduleNode; + + /** 是否有效 */ + @Excel(name = "是否有效") private Long isDel; public void setId(Long id) @@ -304,7 +308,16 @@ public class ProPlan extends BaseEntity { return groupName; } - public void setIsDel(Long isDel) + + public String getScheduleNode() { + return scheduleNode; + } + + public void setScheduleNode(String scheduleNode) { + this.scheduleNode = scheduleNode; + } + + public void setIsDel(Long isDel) { this.isDel = isDel; } @@ -337,6 +350,7 @@ public class ProPlan extends BaseEntity .append("operatorId", getOperatorId()) .append("groupId", getGroupId()) .append("groupName", getGroupName()) + .append("scheduleNode", getScheduleNode()) .append("isDel", getIsDel()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlanSchedule.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlanSchedule.java index ac6dd3b2..226ab868 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlanSchedule.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProPlanSchedule.java @@ -21,14 +21,24 @@ public class ProPlanSchedule extends BaseEntity /** 主键 */ private Long id; + /** 主键 */ + private Long maxId; + /** 公司主键 */ - @Excel(name = "公司主键") private Long comId; + /** 公司名称 */ + @Excel(name = "公司名称") + private String comName; + /** 项目主键 */ @Excel(name = "项目主键") private Long projectId; + /** 项目名称 */ + @Excel(name = "项目名称") + private String projectName; + /** 计划主键 */ @Excel(name = "计划主键") private Long planId; @@ -53,6 +63,20 @@ public class ProPlanSchedule extends BaseEntity @Excel(name = "进度百分比") private Long schedulePercent; + /** 任务工期 */ + @Excel(name = "任务工期") + private Double taskDuation; + + /** 计划开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date planStartDate; + + /** 计划结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date planFinishDate; + /** 完成时间 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd") @@ -93,7 +117,16 @@ public class ProPlanSchedule extends BaseEntity { return id; } - public void setComId(Long comId) + + public Long getMaxId() { + return maxId; + } + + public void setMaxId(Long maxId) { + this.maxId = maxId; + } + + public void setComId(Long comId) { this.comId = comId; } @@ -156,6 +189,31 @@ public class ProPlanSchedule extends BaseEntity { return bimId; } + + public Double getTaskDuation() { + return taskDuation; + } + + public void setTaskDuation(Double taskDuation) { + this.taskDuation = taskDuation; + } + + public Date getPlanStartDate() { + return planStartDate; + } + + public void setPlanStartDate(Date planStartDate) { + this.planStartDate = planStartDate; + } + + public Date getPlanFinishDate() { + return planFinishDate; + } + + public void setPlanFinishDate(Date planFinishDate) { + this.planFinishDate = planFinishDate; + } + public void setSchedulePercent(Long schedulePercent) { this.schedulePercent = schedulePercent; @@ -229,6 +287,22 @@ public class ProPlanSchedule extends BaseEntity return updateDate; } + public String getComName() { + return comName; + } + + public void setComName(String comName) { + this.comName = comName; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanMapper.java index 501b9600..48ac3729 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanMapper.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanMapper.java @@ -2,6 +2,7 @@ package com.yanzhu.manage.mapper; import java.util.List; import com.yanzhu.manage.domain.ProPlan; +import org.apache.ibatis.annotations.Param; /** * 计划管理Mapper接口 @@ -19,6 +20,15 @@ public interface ProPlanMapper */ public ProPlan selectProPlanById(Long id); + /** + * 查询计划管理 + * + * @param proId 项目主键 + * @param taskId 任务主键 + * @return 计划管理 + */ + public ProPlan selectProPlanByParams(@Param("proId") Long proId, @Param("taskId") Long taskId); + /** * 查询计划管理列表 * @@ -27,6 +37,32 @@ public interface ProPlanMapper */ public List selectProPlanList(ProPlan proPlan); + /** + * 查询计划管理列表 + * + * @param proPlan 计划管理 + * @return 计划管理集合 + */ + public List selectProPlanListView(ProPlan proPlan); + + /** + * 查询计划管理列表 + * + * @param proId 项目主键 + * @param taskId 任务主键 + * @return 计划管理集合 + */ + public List selectProPlanBrothers(@Param("proId") Long proId, @Param("taskId") Long taskId); + + /** + * 查询计划子节点 + * + * @param proId 项目主键 + * @param taskId 任务主键 + * @return 计划管理集合 + */ + public List selectProPlanBelows(@Param("proId") Long proId, @Param("taskId") Long taskId); + /** * 新增计划管理 * @@ -43,6 +79,22 @@ public interface ProPlanMapper */ public int updateProPlan(ProPlan proPlan); + /** + * 修改计划管理 + * + * @param proPlan 计划管理 + * @return 结果 + */ + public int updateProPlanStartDate(ProPlan proPlan); + + /** + * 修改计划管理 + * + * @param proPlan 计划管理 + * @return 结果 + */ + public int updateProPlanFinishDate(ProPlan proPlan); + /** * 删除计划管理 * @@ -58,4 +110,10 @@ public interface ProPlanMapper * @return 结果 */ public int deleteProPlanByIds(Long[] ids); + + /** + * 查询唯一计划 + * @return + */ + public ProPlan findOnlyPlan(ProPlan proPlan); } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanScheduleMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanScheduleMapper.java index c8188957..037367af 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanScheduleMapper.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProPlanScheduleMapper.java @@ -58,4 +58,11 @@ public interface ProPlanScheduleMapper * @return 结果 */ public int deleteProPlanScheduleByIds(Long[] ids); + + /** + * 查询上次任务计划 + * @param taskId + * @return + */ + public ProPlanSchedule findPreviousScheduleByTaskId(Long taskId); } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanMapper.xml index 38610231..39f3cf4f 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanMapper.xml @@ -25,6 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -39,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select pp.id, pp.comid, pp.project_id, pp.task_id, pp.task_unique_id, pp.parent_id, pp.task_type, 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.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` from pro_plan pp LEFT JOIN sys_dept dp ON pp.`comid`=dp.`dept_id` @@ -71,12 +72,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and pp.is_del = #{isDel} - + + + - + + + + + + + insert into pro_plan @@ -99,6 +141,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" operator_id, group_id, group_name, + schedule_node, is_del, create_by, create_time, @@ -126,6 +169,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{operatorId}, #{groupId}, #{groupName}, + #{scheduleNode}, #{isDel}, #{createBy}, #{createTime}, @@ -157,6 +201,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" operator_id = #{operatorId}, group_id = #{groupId}, group_name = #{groupName}, + schedule_node = #{scheduleNode}, is_del = #{isDel}, create_by = #{createBy}, create_time = #{createTime}, @@ -167,6 +212,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + update pro_plan set start_date = #{startDate} + ,schedule_node = #{scheduleNode} + where id = #{id} + + + + update pro_plan set finish_date = #{finishDate} + ,schedule_node = #{scheduleNode} + where id = #{id} + + delete from pro_plan where id = #{id} @@ -177,4 +234,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanScheduleMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanScheduleMapper.xml index 06d47020..43fbf75d 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanScheduleMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProPlanScheduleMapper.xml @@ -6,14 +6,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + @@ -26,27 +32,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, com_id, project_id, plan_id, task_id, task_unique_id, task_name, bim_id, schedule_percent, finish_date, description, images, is_del, create_by, create_user_id, create_date, update_by, update_date from pro_plan_schedule + select pps.id, (select max(mp.id) from pro_plan_schedule mp where mp.project_id = pps.project_id and mp.is_del=0) as max_id, pps.com_id, sd.dept_name as com_name, pps.project_id, pi.project_name, pps.plan_id, pps.task_id, pps.task_unique_id, pps.task_name, pps.bim_id, pps.schedule_percent, pp.task_duation, pp.plan_start_date, pp.plan_finish_date, pps.finish_date, pps.description, pps.images, pps.is_del, pps.create_by, pps.create_user_id, pps.create_date, pps.update_by, pps.update_date + from pro_plan_schedule pps + left join pro_project_info pi on pi.id = pps.project_id + left join sys_dept sd on sd.dept_id = pps.com_id + left join pro_plan pp on pp.id = pps.plan_id @@ -115,14 +130,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - - delete from pro_plan_schedule where id = #{id} - + + update pro_plan_schedule set is_del = 2 where id = #{id} + - - delete from pro_plan_schedule where id in + + update pro_plan_schedule set is_del = 2 where id in #{id} - + + + + \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanController.java index 4a25cbba..003f674a 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanController.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanController.java @@ -39,11 +39,20 @@ public class ProPlanController extends BaseController */ @RequiresPermissions("manage:plan:list") @GetMapping("/list") - public TableDataInfo list(ProPlan proPlan) + public AjaxResult list(ProPlan proPlan) { - startPage(); List list = proPlanService.selectProPlanList(proPlan); - return getDataTable(list); + return success(list); + } + + /** + * 查询计划管理列表 + */ + @GetMapping("/listView") + public AjaxResult listView(ProPlan proPlan) + { + List list = proPlanService.selectProPlanListView(proPlan); + return success(list); } /** @@ -123,8 +132,8 @@ public class ProPlanController extends BaseController plan.setTaskUniqueId(task.getGuid()); plan.setParentId(task.getParentTask().getId()*1l); plan.setTaskDuation(task.getDuration().toDouble()); - plan.setStartDate(task.getStart()); - plan.setFinishDate(task.getFinish()); + plan.setPlanStartDate(task.getStart()); + plan.setPlanFinishDate(task.getFinish()); TaskCollection task_predecessors = task.getPredecessors(); //4. 获取前置任务(任务流) StringBuilder beforeTaskId = new StringBuilder(); @@ -194,4 +203,16 @@ public class ProPlanController extends BaseController { return toAjax(proPlanService.deleteProPlanByIds(ids)); } + + /** + * 获取计划管理详细信息 + */ + @GetMapping(value = "/findOnlyPlan/{proId}") + public AjaxResult findOnlyPlan(@PathVariable("proId") Long proId) + { + ProPlan planQuery = new ProPlan(); + planQuery.setProjectId(proId); + ProPlan proPlan = proPlanService.findOnlyPlan(planQuery); + return success(proPlan); + } } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanScheduleController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanScheduleController.java index 2c493680..53e1db5c 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanScheduleController.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProPlanScheduleController.java @@ -95,4 +95,13 @@ public class ProPlanScheduleController extends BaseController { return toAjax(proPlanScheduleService.deleteProPlanScheduleByIds(ids)); } + + /** + * 获取项目进度详细信息 + */ + @GetMapping(value = "/findPreviousSchedule/{taskId}") + public AjaxResult findPreviousSchedule(@PathVariable("taskId") Long taskId) + { + return success(proPlanScheduleService.findPreviousScheduleByTaskId(taskId)); + } } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanScheduleService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanScheduleService.java index 12b8f78f..48ff49bf 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanScheduleService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanScheduleService.java @@ -58,4 +58,11 @@ public interface IProPlanScheduleService * @return 结果 */ public int deleteProPlanScheduleById(Long id); + + /** + * 查询上次任务计划 + * @param taskId + * @return + */ + public ProPlanSchedule findPreviousScheduleByTaskId(Long taskId); } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanService.java index 47cf5f3d..5b684437 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanService.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProPlanService.java @@ -18,7 +18,7 @@ public interface IProPlanService * @return 计划管理 */ public ProPlan selectProPlanById(Long id); - public ProPlan selectProPlanByUniqueId(String UniqueId); + public ProPlan selectProPlanByUniqueId(String UniqueId); /** * 查询计划管理列表 * @@ -27,6 +27,14 @@ public interface IProPlanService */ public List selectProPlanList(ProPlan proPlan); + /** + * 查询计划管理列表 + * + * @param proPlan 计划管理 + * @return 计划管理集合 + */ + public List selectProPlanListView(ProPlan proPlan); + /** * 新增计划管理 * @@ -65,4 +73,9 @@ public interface IProPlanService */ public void addTasks(List proPlans); + /** + * 查询唯一计划 + * @return + */ + public ProPlan findOnlyPlan(ProPlan proPlan); } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanScheduleServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanScheduleServiceImpl.java index b7accae0..10b4c2cf 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanScheduleServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanScheduleServiceImpl.java @@ -1,12 +1,18 @@ package com.yanzhu.manage.service.impl; import com.yanzhu.common.core.context.SecurityContextHolder; +import com.yanzhu.common.core.text.Convert; +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.manage.domain.ProPlan; import com.yanzhu.manage.domain.ProPlanSchedule; +import com.yanzhu.manage.mapper.ProPlanMapper; import com.yanzhu.manage.mapper.ProPlanScheduleMapper; import com.yanzhu.manage.service.IProPlanScheduleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.text.DecimalFormat; import java.util.List; /** @@ -18,6 +24,9 @@ import java.util.List; @Service public class ProPlanScheduleServiceImpl implements IProPlanScheduleService { + @Autowired + private ProPlanMapper proPlanMapper; + @Autowired private ProPlanScheduleMapper proPlanScheduleMapper; @@ -52,10 +61,31 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService * @return 结果 */ @Override + @Transactional public int insertProPlanSchedule(ProPlanSchedule proPlanSchedule) { proPlanSchedule.setCreateBy(SecurityContextHolder.getUserName()); - return proPlanScheduleMapper.insertProPlanSchedule(proPlanSchedule); + proPlanSchedule.setCreateDate(DateUtils.getNowDate()); + int res = proPlanScheduleMapper.insertProPlanSchedule(proPlanSchedule); + if(res>0){ + ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId()); + plan.setScheduleNode(proPlanSchedule.getSchedulePercent().toString()); + if(proPlanSchedule.getSchedulePercent()>=100){ + if(plan.getStartDate()==null){ + plan.setStartDate(DateUtils.getNowDate()); + } + plan.setFinishDate(proPlanSchedule.getFinishDate()); + RecursionEditFinishDate(plan); + }else{ + if(plan.getStartDate()==null){ + plan.setStartDate(DateUtils.getNowDate()); + RecursionEditStartDate(plan); + }else{ + RecursionEditFinishDate(plan); + } + } + } + return res; } /** @@ -65,10 +95,28 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService * @return 结果 */ @Override + @Transactional public int updateProPlanSchedule(ProPlanSchedule proPlanSchedule) { proPlanSchedule.setUpdateBy(SecurityContextHolder.getUserName()); - return proPlanScheduleMapper.updateProPlanSchedule(proPlanSchedule); + int res = proPlanScheduleMapper.updateProPlanSchedule(proPlanSchedule); + if(res>0){ + ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId()); + plan.setScheduleNode(proPlanSchedule.getSchedulePercent().toString()); + if(proPlanSchedule.getSchedulePercent()>=100){ + plan.setFinishDate(proPlanSchedule.getFinishDate()); + plan.setScheduleNode("100"); + RecursionEditFinishDate(plan); + }else{ + if(plan.getFinishDate()!=null){ + plan.setFinishDate(null); + RecursionEditFinishDate(plan); + }else{ + RecursionEditFinishDate(plan); + } + } + } + return res; } /** @@ -80,7 +128,22 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService @Override public int deleteProPlanScheduleByIds(Long[] ids) { - return proPlanScheduleMapper.deleteProPlanScheduleByIds(ids); + int res = proPlanScheduleMapper.deleteProPlanScheduleByIds(ids); + if(res>0){ + for(Long id:ids){ + ProPlanSchedule proPlanSchedule = proPlanScheduleMapper.selectProPlanScheduleById(id); + ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId()); + ProPlanSchedule Previous = proPlanScheduleMapper.findPreviousScheduleByTaskId(plan.getId()); + if(Previous!=null){ + plan.setScheduleNode(Previous.getSchedulePercent().toString()); + }else{ + plan.setScheduleNode("0"); + } + plan.setFinishDate(null); + RecursionEditFinishDate(plan); + } + } + return res; } /** @@ -92,6 +155,211 @@ public class ProPlanScheduleServiceImpl implements IProPlanScheduleService @Override public int deleteProPlanScheduleById(Long id) { - return proPlanScheduleMapper.deleteProPlanScheduleById(id); + int res = proPlanScheduleMapper.deleteProPlanScheduleById(id); + if(res>0){ + ProPlanSchedule proPlanSchedule = proPlanScheduleMapper.selectProPlanScheduleById(id); + ProPlan plan = proPlanMapper.selectProPlanById(proPlanSchedule.getPlanId()); + ProPlanSchedule Previous = proPlanScheduleMapper.findPreviousScheduleByTaskId(plan.getId()); + if(Previous!=null){ + plan.setScheduleNode(Previous.getSchedulePercent().toString()); + }else{ + plan.setScheduleNode("0"); + } + plan.setFinishDate(null); + RecursionEditFinishDate(plan); + } + return res; } + + /** + * 递归设置项目计划 + * @param plan + */ + private void RecursionEditStartDate(ProPlan plan){ + if(plan.getStartDate()!=null){ + int res = proPlanMapper.updateProPlan(plan); + if(res>0 && plan.getTaskOutlineLevel()>1){ + ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId()); + if(entity!=null){ + List belows = proPlanMapper.selectProPlanBelows(entity.getProjectId(),entity.getTaskId()); + int Finished = 0; + 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)); + } + } + System.out.println("RecursionEditStartDate.entity.getScheduleNode()..."+entity.getScheduleNode()); + entity.setStartDate(plan.getStartDate()); + RecursionEditStartDate(entity); + } + } + }else{ + int res = proPlanMapper.updateProPlanStartDate(plan); + if(res>0 && plan.getTaskOutlineLevel()>1){ + ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId()); + if(entity!=null){ + List 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)); + } + } + System.out.println("RecursionEditStartDate.entity.getScheduleNode()..."+entity.getScheduleNode()); + entity.setStartDate(plan.getStartDate()); + RecursionEditStartDate(entity); + } + } + } + } + + /** + * 递归设置项目计划 + * @param plan + */ + private void RecursionEditFinishDate(ProPlan plan){ + if(plan.getFinishDate()!=null){ + int res = proPlanMapper.updateProPlan(plan); + if(res>0 && plan.getTaskOutlineLevel()>1){ + // 判断当前结构其它部位是否已全部完成 + List brothers = proPlanMapper.selectProPlanBrothers(plan.getProjectId(),plan.getParentId()); + if(brothers.size()==0){ + ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId()); + if(entity!=null){ + if(entity.getStartDate()==null){ + entity.setStartDate(DateUtils.getNowDate()); + } + List 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){ + System.out.println("RecursionEditFinishDate.sNodesNode==>"+sNode); + if(sNode==100){ + Finished += Convert.toFloat(item.getTaskDuation(),0.0F); + System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished); + }else{ + Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100)); + System.out.println("RecursionEditFinishDate.FinishedFinished2==>"+Finished); + } + } + } + } + }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)); + } + } + System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode()); + entity.setFinishDate(plan.getFinishDate()); + RecursionEditFinishDate(entity); + } + } + } + }else{ + int res = proPlanMapper.updateProPlanFinishDate(plan); + if(res>0 && plan.getTaskOutlineLevel()>1){ + ProPlan entity = proPlanMapper.selectProPlanByParams(plan.getProjectId(),plan.getParentId()); + if(entity!=null){ + List 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){ + System.out.println("RecursionEditFinishDate.sNodesNode==>"+sNode); + if(sNode==100){ + Finished += Convert.toFloat(item.getTaskDuation(),0.0F); + System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished); + }else{ + Finished += Convert.toFloat(item.getTaskDuation()*(sNode/100)); + System.out.println("RecursionEditFinishDate.FinishedFinished1==>"+Finished); + } + } + } + } + }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)); + } + } + System.out.println("RecursionEditFinishDate.entity.getScheduleNode()..."+entity.getScheduleNode()); + entity.setFinishDate(plan.getFinishDate()); + RecursionEditFinishDate(entity); + } + } + } + } + + /** + * 查询上次任务计划 + * @param taskId + * @return + */ + @Override + public ProPlanSchedule findPreviousScheduleByTaskId(Long taskId){ + return proPlanScheduleMapper.findPreviousScheduleByTaskId(taskId); + } + } diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanServiceImpl.java index 3cc9f461..be49a96d 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProPlanServiceImpl.java @@ -55,6 +55,16 @@ public class ProPlanServiceImpl implements IProPlanService return proPlanMapper.selectProPlanList(proPlan); } + /** + * 查询计划管理列表 + * + * @param proPlan 计划管理 + * @return 计划管理集合 + */ + public List selectProPlanListView(ProPlan proPlan){ + return proPlanMapper.selectProPlanListView(proPlan); + } + /** * 新增计划管理 * @@ -133,10 +143,8 @@ public class ProPlanServiceImpl implements IProPlanService old.setTaskOutlineLevel(proPlan.getTaskOutlineLevel()); old.setTaskDuation(proPlan.getTaskDuation()); old.setPredecessors(proPlan.getPredecessors()); - old.setStartDate(proPlan.getStartDate()); - old.setFinishDate(proPlan.getFinishDate()); - old.setPlanStartDate(proPlan.getPlanStartDate()); - old.setPlanFinishDate(proPlan.getPlanFinishDate()); + old.setPlanStartDate(proPlan.getStartDate()); + old.setPlanFinishDate(proPlan.getFinishDate()); updateProPlan(old); }else{ //没有原数据进行插入 @@ -159,4 +167,18 @@ public class ProPlanServiceImpl implements IProPlanService } return null; } + + /** + * 查询唯一计划 + * @return + */ + @Override + public ProPlan findOnlyPlan(ProPlan proPlan){ + ProPlan plan = proPlanMapper.findOnlyPlan(proPlan); + if(plan!=null){ + return findOnlyPlan(plan); + }else{ + return proPlan; + } + } } diff --git a/yanzhu-ui-vue3/src/api/manage/plan.js b/yanzhu-ui-vue3/src/api/manage/plan.js index 37850040..3cfb0d67 100644 --- a/yanzhu-ui-vue3/src/api/manage/plan.js +++ b/yanzhu-ui-vue3/src/api/manage/plan.js @@ -42,3 +42,11 @@ export function delPlan(id) { method: 'delete' }) } + +// 查询项目进度 +export function findOnlyPlan(proId) { + return request({ + url: '/manage/plan/findOnlyPlan/' + proId, + method: 'get' + }) +} \ No newline at end of file diff --git a/yanzhu-ui-vue3/src/api/manage/schedule.js b/yanzhu-ui-vue3/src/api/manage/schedule.js new file mode 100644 index 00000000..36f6070d --- /dev/null +++ b/yanzhu-ui-vue3/src/api/manage/schedule.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询项目进度列表 +export function listSchedule(query) { + return request({ + url: '/manage/schedule/list', + method: 'get', + params: query + }) +} + +// 查询项目进度详细 +export function getSchedule(id) { + return request({ + url: '/manage/schedule/' + id, + method: 'get' + }) +} + +// 新增项目进度 +export function addSchedule(data) { + return request({ + url: '/manage/schedule', + method: 'post', + data: data + }) +} + +// 修改项目进度 +export function updateSchedule(data) { + return request({ + url: '/manage/schedule', + method: 'put', + data: data + }) +} + +// 删除项目进度 +export function delSchedule(id) { + return request({ + url: '/manage/schedule/' + id, + method: 'delete' + }) +} + +// 查询之前项目进度 +export function findPreviousSchedule(taskId) { + return request({ + url: '/manage/schedule/findPreviousSchedule/' + taskId, + method: 'get' + }) +} \ No newline at end of file diff --git a/yanzhu-ui-vue3/src/utils/ruoyi.js b/yanzhu-ui-vue3/src/utils/ruoyi.js index 67951f35..985cceb5 100644 --- a/yanzhu-ui-vue3/src/utils/ruoyi.js +++ b/yanzhu-ui-vue3/src/utils/ruoyi.js @@ -46,6 +46,26 @@ export function parseTime(time, pattern) { return time_str } +// 时间比较 +export function compareDate(planFinishDate,finishDate) { + let _planFinishDate = new Date(planFinishDate).getTime(); + let _finishDate = new Date(finishDate).getTime(); + if(planFinishDate && !finishDate){ + let date = new Date().getTime(); + if(_planFinishDate>date){ + return -2; + }else{ + return 0; + } + }else{ + if(_planFinishDate>_finishDate){ + return 1; + }else{ + return -1; + } + } +} + // 表单重置 export function resetForm(refName) { if (this.$refs[refName]) { diff --git a/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/index.vue b/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/index.vue index 73586d92..b95699e7 100644 --- a/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/index.vue +++ b/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/index.vue @@ -3,14 +3,14 @@ - - + diff --git a/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/statistics.vue b/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/statistics.vue index 5f088535..2562bd72 100644 --- a/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/statistics.vue +++ b/yanzhu-ui-vue3/src/views/manage/attendanceUbiData/statistics.vue @@ -2,20 +2,20 @@
- - - + diff --git a/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue b/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue index a32b88b4..2b7caffe 100644 --- a/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue +++ b/yanzhu-ui-vue3/src/views/manage/attendance_cfg/index.vue @@ -1,24 +1,24 @@