项目状态看板--时间轴

This commit is contained in:
zhn
2022-05-13 16:04:54 +08:00
parent 5e14b5a892
commit 7524634bfd
8 changed files with 192 additions and 14 deletions
@@ -98,8 +98,15 @@ public class DictAspect {
if(!"java.util.LinkedHashMap".equals(name) && !"java.util.HashMap".equals(name) && !"java.lang.String".equals(name)){
List<JSONObject> items = new ArrayList<>();
for (Object record : (List)((Result) result).getResult()) {
JSONObject item = getJsonObject(record,cut);
items.add(item);
if("java.util.ArrayList".equals(record.getClass().getName())){
for (Object o : (List) record) {
JSONObject item = getJsonObject(o,cut);
items.add(item);
}
}else{
JSONObject item = getJsonObject(record,cut);
items.add(item);
}
}
((Result) result).setResult(items);
}
@@ -0,0 +1,53 @@
package com.jero.modules.project.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.service.IProjectStatusBoardService;
import com.jero.modules.project.vo.TimeNodeVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @description
* @date 2022/5/13 9:56
* @auth zhn
*/
@Api(tags="项目状态看板")
@RestController
@RequestMapping("/project/ProjectStatusBoardController")
@Slf4j
public class ProjectStatusBoardController {
@Autowired
private IProjectStatusBoardService iProjectStatusBoardService;
/**
* 时间轴列表
*
* @param projectLibraryBase
* @return
*/
@AutoLog(value = "时间轴列表")
@ApiOperation(value="时间轴列表", notes="时间轴列表")
@GetMapping(value = "/timelineList")
public Result<?> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) {
List<List<TimeNodeVO>> result = iProjectStatusBoardService.timelineList(projectLibraryBase, req);
if(result==null) {
return Result.error("未找到对应数据");
}
return Result.OK(result);
}
}
@@ -0,0 +1,9 @@
package com.jero.modules.project.mapper;
/**
* @description
* @date 2022/5/13 10:00
* @auth zhn
*/
public interface ProjectStatusBoardMapper {
}
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.project.mapper.ProjectStatusBoardMapper">
<resultMap id="ProjectLibraryBaseResultMap" type="com.jero.modules.project.entity.ProjectLibraryBase">
<id column="id" property="id" />
<result column="project_name_id" property="projectNameId" />
<result column="target_market" property="targetMarket" />
<result column="project_status" property="projectStatus" />
<result column="studio_engineer" property="studioEngineer" />
<result column="certification_engineer" property="certificationEngineer" />
<result column="vehicle_platform" property="vehiclePlatform" />
<result column="digital_platform" property="digitalPlatform" />
<result column="ipd_info" property="ipdInfo" />
<result column="vehicle_development_plan" property="vehicleDevelopmentPlan" />
<result column="attestation_plan" property="attestationPlan" />
<result column="create_by" property="createBy" />
<result column="create_time" property="createTime" />
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="sys_org_code" property="sysOrgCode" />
</resultMap>
</mapper>
@@ -0,0 +1,17 @@
package com.jero.modules.project.service;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.vo.TimeNodeVO;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @description
* @date 2022/5/13 9:59
* @auth zhn
*/
public interface IProjectStatusBoardService {
List<List<TimeNodeVO>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req);
}
@@ -0,0 +1,49 @@
package com.jero.modules.project.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.dummy.entity.DummyInventoryBaseEO;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.service.IProjectStatusBoardService;
import com.jero.modules.project.vo.TimeNodeVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @description
* @date 2022/5/13 9:59
* @auth zhn
*/
@Service
public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService {
@Autowired
private ProjectTaskPlanningServiceImpl projectTaskPlanningService;
@Autowired
private ProjectLibraryBaseServiceImpl projectLibraryBaseService;
@Override
public List<List<TimeNodeVO>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) {
QueryWrapper<ProjectLibraryBase> queryWrapper = QueryGenerator.initQueryWrapper(projectLibraryBase, req.getParameterMap());
//项目库信息
List<ProjectLibraryBase> projectLibraryBaseList = projectLibraryBaseService.list(queryWrapper);
List<List<TimeNodeVO>> result = new ArrayList<>();
if(projectLibraryBaseList.size() != 0){
//项目库id
List<String> projectLibraryBaseIdList = projectLibraryBaseList.stream().map(ProjectLibraryBase::getId).collect(Collectors.toList());
//时间轴数据
result = projectTaskPlanningService.queryByProjectId(StringUtils.join(projectLibraryBaseIdList, ","), projectLibraryBase.getCut());
}
return result;
}
}
@@ -10,6 +10,7 @@ import com.jero.modules.project.enums.ProjectTaskPlanningNameEnum;
import com.jero.modules.project.mapper.ProjectTaskPlanningMapper;
import com.jero.modules.project.service.IProjectTaskPlanningService;
import com.jero.modules.project.vo.TimeNodeVO;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -93,7 +94,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
public List<List<TimeNodeVO>> queryByProjectId(String projectId,String cut) {
List<ProjectTaskPlanning> projectTaskPlanningList = projectTaskPlanningMapper.getByProjectId(projectId);
List<List<TimeNodeVO>> result = new ArrayList<>();
List<TimeNodeVO> timeNodeVOS = new ArrayList<>();
TimeNodeVO listConfirmationVO=null;
Date now=new Date();
@@ -106,7 +107,8 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
cal1.set(Calendar.MILLISECOND, 0);
Date trueNow = cal1.getTime();
for (ProjectTaskPlanning projectTaskPlanning : projectTaskPlanningList) {
if(StringUtils.isNotBlank(projectTaskPlanning.getListConfirmation().toString())) {
List<TimeNodeVO> timeNodeVOS = new ArrayList<>();
if(ObjectUtils.isNotEmpty(projectTaskPlanning.getListConfirmation())) {
listConfirmationVO = new TimeNodeVO();
if(CutEnum.CN.getValue().equals(cut)){
@@ -126,7 +128,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
timeNodeVOS.add(listConfirmationVO);
}
if(!StringUtils.isEmpty(projectTaskPlanning.getLegalTaskConfirmation().toString())) {
if(ObjectUtils.isNotEmpty(projectTaskPlanning.getLegalTaskConfirmation())) {
TimeNodeVO legalTaskConfirmationVO = new TimeNodeVO();
if(CutEnum.CN.getValue().equals(cut)){
@@ -146,7 +148,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
timeNodeVOS.add(legalTaskConfirmationVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getDesignDeadline().toString())) {
if(ObjectUtils.isNotEmpty(projectTaskPlanning.getDesignDeadline())) {
TimeNodeVO designDeadlineVO = new TimeNodeVO();
if(CutEnum.CN.getValue().equals(cut)){
@@ -166,7 +168,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
timeNodeVOS.add(designDeadlineVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getPrehomoDeadline().toString())) {
if(ObjectUtils.isNotEmpty(projectTaskPlanning.getPrehomoDeadline())) {
TimeNodeVO prehomoDeadlineVO = new TimeNodeVO();
if(CutEnum.CN.getValue().equals(cut)){
@@ -186,7 +188,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
timeNodeVOS.add(prehomoDeadlineVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getAttestationStartTime().toString())) {
if(ObjectUtils.isNotEmpty(projectTaskPlanning.getAttestationStartTime())) {
TimeNodeVO attestationStartTimeVO = new TimeNodeVO();
if(CutEnum.CN.getValue().equals(cut)){
@@ -205,7 +207,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
}
timeNodeVOS.add(attestationStartTimeVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getAttestationEndTime().toString())) {
if(ObjectUtils.isNotEmpty(projectTaskPlanning.getAttestationEndTime())) {
TimeNodeVO attestationEndTimeVO = new TimeNodeVO();
if(CutEnum.CN.getValue().equals(cut)){
@@ -225,7 +227,7 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
timeNodeVOS.add(attestationEndTimeVO);
}
if(StringUtils.isNotBlank(projectTaskPlanning.getVerifyDeadline().toString())) {
if(ObjectUtils.isNotEmpty(projectTaskPlanning.getVerifyDeadline())) {
TimeNodeVO verifyDeadlineVO = new TimeNodeVO();
if(CutEnum.CN.getValue().equals(cut)){
@@ -248,16 +250,19 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl<ProjectTaskPlann
Collections.sort(timeNodeVOS, listConfirmationVO);
//设置在已过时,和未发生之间的数据的状态为进行中
for(int i=0;i<timeNodeVOS.size();i++){
if(i == timeNodeVOS.size()-1){
break;
}
if(timeNodeVOS.get(i).getStatus().equals(PlanStatusEnum.OUT_OF_DATE.getValue())
&& timeNodeVOS.get(i+1).getStatus().equals(PlanStatusEnum.LESS_THAN_TIME.getValue())){
timeNodeVOS.get(i+1).setStatus(PlanStatusEnum.ON_GOING.getValue());
break;
}
}
result.add(timeNodeVOS);
if(timeNodeVOS.size() != 0){
result.add(timeNodeVOS);
}
}
return result;
}
@@ -0,0 +1,13 @@
package com.jero.modules.project.vo;
/**
* @description
* @date 2022/5/13 10:04
* @auth zhn
*/
public class ProjectStatusBoardVO {
//项目名称
//目标市场
}