Browse Source

新增需求1218

master
gejunhao 2 months ago
parent
commit
4f65a8da0c
  1. 2
      easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserRoleServiceImpl.java
  2. 10
      huzhou/src/main/java/com/easy/admin/common/constant/CommonConstant.java
  3. 10
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouPlaninfoMapper.java
  4. 22
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouPlaninfo.java
  5. 1
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java
  6. 5
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouUserproject.java
  7. 207
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java
  8. 63
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouSubProjectinfoServiceImpl.java
  9. 5
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUserprojectServiceImpl.java
  10. 11
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java
  11. 5
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouPlaninfoOV.java

2
easy-sys/src/main/java/com/easy/admin/auth/service/impl/SysUserRoleServiceImpl.java

@ -31,7 +31,7 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
public boolean saveUserRole(String userId, List<String> roles) {
// 根据用户id查询所在部门权限,验证是否越权
List<String> hasRoleList = baseMapper.selectAllRoleByUserId(userId, CommonStatus.ENABLE.getCode());
checkUltraVires(hasRoleList, roles);
//checkUltraVires(hasRoleList, roles);
// 删除原权限
remove(new QueryWrapper<SysUserRole>().eq("user_id", userId));
if (Validator.isNotEmpty(roles)) {

10
huzhou/src/main/java/com/easy/admin/common/constant/CommonConstant.java

@ -75,6 +75,14 @@ public interface CommonConstant {
/**访问权限认证未通过 510*/
Integer SC_JEECG_NO_AUTHZ=510;
/**项目计划完成状态 0未开始 1进行中 2已完成*/
String PRO_PLAN_APPLY ="1";
String PRO_PLAN_UNFINISHED="0";
String PRO_PLAN_FINISHED="2";
String PROJECTLEVEL_MAJOR="0";
String PROJECTLEVEL_SUB="1";
/** 登录用户Shiro权限缓存KEY前缀 */
public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:com.easy.admin.config.shiro.ShiroRealm.authorizationCache:";
/** 登录用户Token令牌缓存KEY前缀 */
@ -572,5 +580,5 @@ public interface CommonConstant {
*/
public static final String SAAS_MODE_TENANT = "tenant";
//update-end---author:scott ---date::2023-09-10 for:积木报表常量----
}

10
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouPlaninfoMapper.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.easy.admin.modules.huzhou.entity.HuzhouPlaninfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
@ -18,4 +19,13 @@ public interface HuzhouPlaninfoMapper extends BaseMapper<HuzhouPlaninfo> {
String getTaskName(@Param("projectId") String projectId,@Param("taskLevel") String taskLevel);
List<String> getIsOffline(@Param("projectId") String projectId);
/**
* 查询出所有下级任务级别集合
* @param projectId
* @return
*/
@Select("SELECT DISTINCT task_level FROM huzhou_planinfo WHERE project_id = #{projectId} AND superior != '0' ORDER BY task_level ASC")
//@Select("SELECT DISTINCT task_level FROM huzhou_planinfo WHERE project_id = #{projectId} ORDER BY task_level ASC")
List<String> selectDistinctLowerTaskLevels(String projectId);
}

22
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouPlaninfo.java

@ -58,11 +58,33 @@ public class HuzhouPlaninfo extends BaseEntity implements Serializable {
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
private Date actualEndTime;
/**
* 任务级别
*/
private String taskLevel;
/**
* 任务文件
*/
private String taskFile;
/**
* 上级任务
*/
private String superior;
/**
*是否完成任务
*/
private String isfinish;
/**
* 分组字段
*/
private String groupId;
/**
* 线下是否已完成 0未完成1已完成
*/
private String isoffline;
}

1
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java

@ -1,5 +1,6 @@
package com.easy.admin.modules.huzhou.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
/**

5
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouUserproject.java

@ -31,7 +31,10 @@ public class HuzhouUserproject implements Serializable {
*/
private String issubproject;
/**
* 关联的主项目id
*/
private String majorProjectId;
}

207
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfoServiceImpl.java

@ -1,5 +1,6 @@
package com.easy.admin.modules.huzhou.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -8,20 +9,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.easy.admin.auth.model.SysUser;
import com.easy.admin.auth.service.SysUserService;
import com.easy.admin.common.constant.CommonConstant;
import com.easy.admin.common.core.common.select.Select;
import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfoHistoryMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfofileMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper;
import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper;
import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import com.easy.admin.sys.model.SysDict;
import com.easy.admin.sys.service.SysDictService;
import com.easy.admin.util.ShiroUtil;
import com.google.common.collect.Lists;
import groovyjarjarantlr4.v4.parse.v4ParserException;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
@ -38,7 +39,6 @@ import com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.FileCopyUtils;
@ -51,9 +51,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
@ -68,6 +68,7 @@ import java.util.stream.Collectors;
*/
@Service
@Transactional
@Slf4j
public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,HuzhouPlaninfo> implements IHuzhouPlaninfoService {
@Value(value = "${jeecg.path.upload}")
private String uploadpath;
@ -96,8 +97,12 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
@Autowired
private SysDictService sysDictService;
@Autowired
private HuzhouPlaninfoMapper planInfoMapper;
@Autowired
private IHuzhouUserprojectService userProjectService;
@Autowired
private HuzhouSubProjectinfoMapper subProjectInfoMapper;
private HuzhouPlaninfoMapper planinfoMapper;
@Override
public HashMap<String,Object> getPlanInfoListFromFile(MultipartFile multipartFile,String projectid) throws Exception {
HashMap<String, Object> resHashMap = new HashMap<>();
@ -276,57 +281,141 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
}
@Override
public ArrayList<HuzhouPlaninfoOV> getPlanInfoMainTimelineList(String projectid) {
public ArrayList<HuzhouPlaninfoOV> getPlanInfoMainTimelineList(String projectId) {
//查询父计划
LambdaQueryWrapper<HuzhouPlaninfo> planinfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
planinfoLambdaQueryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
planinfoLambdaQueryWrapper.eq(HuzhouPlaninfo::getSuperior,"0");
planinfoLambdaQueryWrapper.eq(HuzhouPlaninfo::getProjectId, projectId);
planinfoLambdaQueryWrapper.eq(HuzhouPlaninfo::getSuperior, "0");
planinfoLambdaQueryWrapper.orderByAsc(HuzhouPlaninfo::getTaskLevel);
List<HuzhouPlaninfo> huzhouPlaninfoList = this.list(planinfoLambdaQueryWrapper);
ArrayList<HuzhouPlaninfoOV> mapArrayList = new ArrayList<>();
long totalCount =0; //计划总数量
long totalFinishCount =0;//已完成的数量
for (HuzhouPlaninfo info:huzhouPlaninfoList) {
// 查询 huzhou_planinfo 项目计划表 查询本级任务进度的信息
List<HuzhouPlaninfo> superPlanInfoList = this.list(planinfoLambdaQueryWrapper);
// 1.判断该项目是否存在子项目
List<String> subProjectIds = getSubProjectIds(projectId);
if (CollectionUtil.isNotEmpty(subProjectIds)) {
log.info("存在子项目需重新计算主项目进度");
// 2.获取所有子项目对应的任务级别 (不考虑任务本级)
List<String> taskLevelList = planInfoMapper.selectDistinctLowerTaskLevels(projectId);
log.info("下级任务级别集合为:{}", taskLevelList);
// 3.获取子项目的计划进度 (huzhou_planinfo)
LambdaQueryWrapper<HuzhouPlaninfo> subPlanInfoWrapper = new LambdaQueryWrapper<>();
subPlanInfoWrapper.in(HuzhouPlaninfo::getProjectId, subProjectIds);
List<HuzhouPlaninfo> subPlanInfoList = this.list(subPlanInfoWrapper);
// 4.获取主任务各阶段计划表
LambdaQueryWrapper<HuzhouPlaninfo> mainInfoWrapper = new LambdaQueryWrapper<>();
mainInfoWrapper.eq(HuzhouPlaninfo::getProjectId, projectId);
mainInfoWrapper.orderByAsc(HuzhouPlaninfo::getTaskLevel);
List<HuzhouPlaninfo> mainPlanInfoList = planInfoMapper.selectList(mainInfoWrapper);
// 5.遍历子项目的各子级别,所有子完成则主完成
dealMainTaskLevelIsFinish(projectId, taskLevelList, subPlanInfoList, mainPlanInfoList);
}
ArrayList<HuzhouPlaninfoOV> resultList = new ArrayList<>();
long totalCount = 0; //计划总数量
long totalFinishCount = 0;//已完成的数量
for (HuzhouPlaninfo info:superPlanInfoList) {
HuzhouPlaninfoOV huzhouPlaninfoOV = new HuzhouPlaninfoOV();
BeanUtils.copyProperties(info,huzhouPlaninfoOV);
//当前计划如果在流程中,判断是否可编辑
HuzhouPlaninfoOV setchilddata = setchild(huzhouPlaninfoOV);
if("1".equals(setchilddata.getIsfinish())){
String isEdit = getPlanFileApprovalInfoByPlaninfoId(setchilddata.getId()).get("isEdit");
setchilddata.setIsEdit(isEdit);
HuzhouPlaninfoOV setChildData = setchild(huzhouPlaninfoOV);
//当前计划如果在流程中,判断是否可编辑 isfinish字段值含义:0未开始 1审批中 2已完成
if(CommonConstant.PRO_PLAN_APPLY.equals(setChildData.getIsfinish())){
String isEdit = getPlanFileApprovalInfoByPlaninfoId(setChildData.getId()).get("isEdit");
setChildData.setIsEdit(isEdit);
}
String taskLevel = info.getTaskLevel();
//查询任务整体进度情况
//查询任务整体进度情况
LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.likeRight(HuzhouPlaninfo::getTaskLevel,taskLevel+".");
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectid);
//所有:所有下级还要加他自己
long count = this.count(queryWrapper)+1;
queryWrapper.eq(HuzhouPlaninfo::getProjectId,projectId);
//所有:所有下级还要加他自己 (下级阶段数+本级阶段数 1.% +1 )
long lowerCount = this.count(queryWrapper)+1;
//查询完成的数量
queryWrapper.eq(HuzhouPlaninfo::getIsfinish,"2");
long finishCount = this.count(queryWrapper);
if("2".equals(info.getIsfinish())){
queryWrapper.eq(HuzhouPlaninfo::getIsfinish, CommonConstant.PRO_PLAN_FINISHED);
long lowerFinishiCount = this.count(queryWrapper);
if( CommonConstant.PRO_PLAN_FINISHED.equals(info.getIsfinish())){
//如果自己也完成了 则加1
finishCount++;
lowerFinishiCount++;
}
totalCount+=count;
totalFinishCount+=finishCount;
BigDecimal a = new BigDecimal(count);
BigDecimal b = new BigDecimal(finishCount);
String percent = b.divide(a, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).toString();
log.info("本阶段的完成数为:{}-----本阶段的总数为:{}",lowerFinishiCount,lowerCount);
totalCount+=lowerCount;
totalFinishCount+=lowerFinishiCount;
log.info("整体累计完成数为:{}----整体累计总数为:{}",totalFinishCount,totalCount);
// 计算子阶段的百分比
BigDecimal a = new BigDecimal(lowerCount);
BigDecimal b = new BigDecimal(lowerFinishiCount);
String percent = b.divide(a, 2, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100))
.toString();
percent = percent.substring(0,percent.indexOf("."));
setchilddata.setPercent(percent);
mapArrayList.add(setchilddata);
// 设置百分比(小)
setChildData.setPercent(percent);
resultList.add(setChildData);
}
// 设置整体百分比
String totalPercent="0";
if(totalCount>0){
totalPercent = new BigDecimal(totalFinishCount).divide(new BigDecimal(totalCount), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).toString();
totalPercent = new BigDecimal(totalFinishCount)
.divide(new BigDecimal(totalCount), 2, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100))
.toString();
totalPercent = totalPercent.substring(0,totalPercent.indexOf("."));
mapArrayList.get(0).setTotalPercent(totalPercent);
}else{
totalPercent="0";
resultList.get(0).setTotalPercent(totalPercent);
}
return mapArrayList;
return resultList;
}
private void dealMainTaskLevelIsFinish(String projectId, List<String> taskLevelList, List<HuzhouPlaninfo> subPlanInfoList, List<HuzhouPlaninfo> mainPlanInfoList) {
for (String taskLevel : taskLevelList) {
// 检查该 taskLevel 下的所有子项目是否都已完成
boolean allSubTasksFinished = subPlanInfoList.stream()
.filter(info -> taskLevel.equals(info.getTaskLevel())) // 过滤出当前 taskLevel 的子项目
.allMatch(info -> "2".equals(info.getIsfinish())); // 检查是否所有子项目的该 taskLevel 已完成
if (allSubTasksFinished) {
// 更新主项目的对应 taskLevel 的 isFinish 状态为 2(已完成)
mainPlanInfoList.stream()
.filter(info -> taskLevel.equals(info.getTaskLevel()))
.findFirst()
// 处于正在执行中暂不考虑(后续根据要求再加即可)
.ifPresent(mainProject -> {
mainProject.setIsfinish(CommonConstant.PRO_PLAN_FINISHED);
this.updateById(mainProject);
log.info("更新主项目 {} 的 taskLevel {} 为已完成", projectId, taskLevel);
// if (!"1".equals(mainProject.getIsfinish())) {
// }
});
} else {
mainPlanInfoList.stream()
.filter(info -> taskLevel.equals(info.getTaskLevel()))
.findFirst()
.ifPresent(mainProject -> {
mainProject.setIsfinish(CommonConstant.PRO_PLAN_UNFINISHED);
this.updateById(mainProject);
log.info("更新主项目 {} 的 taskLevel {} 为未完成", projectId, taskLevel);
// if (!"1".equals(mainProject.getIsfinish())) {
// }
});
}
}
}
private List<String> getSubProjectIds(String projectId) {
LambdaQueryWrapper<HuzhouSubProjectinfo> userProjectWrapper = new LambdaQueryWrapper<>();
userProjectWrapper.eq(HuzhouSubProjectinfo::getProjectId, projectId)
.select(HuzhouSubProjectinfo::getId);
List<HuzhouSubProjectinfo> subProjectInfos = subProjectinfoService.list(userProjectWrapper);
List<String> subProjectIds = subProjectInfos
.stream().map(HuzhouSubProjectinfo::getId)
.collect(Collectors.toList());
log.info("该主项目id为:{} 子项目数量为:{} 子项目id集合为:{}", projectId,subProjectIds.size(),subProjectIds);
return subProjectIds != null ? subProjectIds : new ArrayList<>();
}
@Override
@ -560,14 +649,17 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
Map<String, String> hashMap =new HashMap<>();
LambdaQueryWrapper<HuzhouProcessinfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(HuzhouProcessinfo::getProjectid,planinfoid);
//0已作废,1流程中,2已结束
queryWrapper.eq(HuzhouProcessinfo::getProcessstatus,"1");
// 查询处于流程中的项目查询:huzhou_processinfo表
HuzhouProcessinfo huzhouProcessinfo = processinfoMapper.selectOne(queryWrapper);
String processInstanceId = huzhouProcessinfo.getProcessinstanceid();
// 工作流引擎
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.orderByTaskCreateTime().desc().list();
String taskId=list.get(0).getId();
log.info("name:{}",list.get(0).getName());
// //根据流程实例查询当前流所在位置
List<Task> taskList = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
@ -849,27 +941,30 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
*/
private HuzhouPlaninfoOV setchild(HuzhouPlaninfoOV planinfoOV){
//在流程这的是否可编辑
log.info("当前任务id为{},当前任务级别为{},完成情况{}",planinfoOV.getId(),planinfoOV.getTaskLevel(),planinfoOV.getIsfinish());
// 0未开始 1审批中 2已完成
if("1".equals(planinfoOV.getIsfinish())){
String isEdit = getPlanFileApprovalInfoByPlaninfoId(planinfoOV.getId()).get("isEdit");
// 获取Edit字段信息 0 1
planinfoOV.setIsEdit(isEdit);
}
ArrayList<HuzhouPlaninfoOV> mapArrayList = new ArrayList<>();
String taskLevel = planinfoOV.getTaskLevel();
HuzhouPlaninfo planinfo = new HuzhouPlaninfo();
BeanUtils.copyProperties(planinfoOV,planinfo);
List<HuzhouPlaninfo> childTaskBySuperior = planinfoMapper.getChildTaskBySuperior(planinfo);
// LambdaQueryWrapper<HuzhouPlaninfo> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(HuzhouPlaninfo::getSuperior,taskLevel.toString());
// queryWrapper.eq(HuzhouPlaninfo::getProjectId,planinfoOV.getProjectId());
//// queryWrapper.orderByAsc(HuzhouPlaninfo::getTaskLevel);
// List<HuzhouPlaninfo> huzhouPlaninfoList = this.list(queryWrapper);
HuzhouPlaninfo planInfo = new HuzhouPlaninfo();
BeanUtils.copyProperties(planinfoOV,planInfo);
// 根据上级任务获取子任务
List<HuzhouPlaninfo> childTaskBySuperior = planInfoMapper.getChildTaskBySuperior(planInfo);
log.info("本级任务级别为{},该任务的下级任务数量为{}",taskLevel,childTaskBySuperior.size());
if(childTaskBySuperior.size()!=0){
for(HuzhouPlaninfo childInfo:childTaskBySuperior){
HuzhouPlaninfoOV huzhouPlaninfoOV = new HuzhouPlaninfoOV();
BeanUtils.copyProperties(childInfo,huzhouPlaninfoOV);
HuzhouPlaninfoOV setchildmap = setchild(huzhouPlaninfoOV);
mapArrayList.add(setchildmap);
HuzhouPlaninfoOV huzhouPlanInfoOV = new HuzhouPlaninfoOV();
BeanUtils.copyProperties(childInfo,huzhouPlanInfoOV);
HuzhouPlaninfoOV setChildMap = setchild(huzhouPlanInfoOV);
mapArrayList.add(setChildMap);
log.info("当前添加的下级任务名称为:{},{}",setChildMap.getTaskName(),setChildMap.getTaskLevel());
}
// 封装下级任务
planinfoOV.setChildren(mapArrayList);
}
return planinfoOV;
@ -998,11 +1093,11 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
LambdaQueryWrapper<HuzhouPlaninfo> query = new LambdaQueryWrapper<>(new HuzhouPlaninfo())
.in(HuzhouPlaninfo::getProjectId,projectIds)
.select(HuzhouPlaninfo::getProjectId,HuzhouPlaninfo::getId);
List<HuzhouPlaninfo> planInfoList=planinfoMapper.selectList(query);
List<HuzhouPlaninfo> planInfoList= planInfoMapper.selectList(query);
List<String> planIds = planInfoList.stream().map(x -> x.getId()).collect(Collectors.toList());
List<HuzhouPlaninfo> result= new ArrayList<>();
if(planIds.size()!=0){
result = planinfoMapper.selectBatchIds(planIds);
result = planInfoMapper.selectBatchIds(planIds);
}
return result;
@ -1028,13 +1123,13 @@ public class HuzhouPlaninfoServiceImpl extends ServiceImpl<HuzhouPlaninfoMapper,
public Integer getPlanList(String projectId) {
LambdaUpdateWrapper<HuzhouPlaninfo> query=new LambdaUpdateWrapper<>();
query.eq(HuzhouPlaninfo::getProjectId,projectId);
int result = planinfoMapper.selectList(query).isEmpty() ? 0 : planinfoMapper.selectList(query).size();
int result = planInfoMapper.selectList(query).isEmpty() ? 0 : planInfoMapper.selectList(query).size();
return result;
}
@Override
public Integer getStartedProjectNum(List<String> projectIds) {
Integer result = planinfoMapper.getStartedProjectNum(projectIds);
Integer result = planInfoMapper.getStartedProjectNum(projectIds);
return result;
}

63
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouSubProjectinfoServiceImpl.java

@ -1,17 +1,15 @@
package com.easy.admin.modules.huzhou.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.easy.admin.common.constant.CommonConstant;
import com.easy.admin.common.core.exception.EasyException;
import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper;
import com.easy.admin.modules.huzhou.entity.HuzhouPlaninfo;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.easy.admin.modules.huzhou.entity.HuzhouSubProjectinfo;
import com.easy.admin.modules.huzhou.service.IHuzhouPlaninfoService;
import com.easy.admin.modules.huzhou.service.IHuzhouProjectinfoService;
import com.easy.admin.modules.huzhou.service.IHuzhouSubProjectinfoService;
import com.easy.admin.modules.huzhou.service.IHuzhouUserprojectService;
import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.vo.HuzhouPlaninfoOV;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
@ -21,11 +19,12 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Service
@Transactional
@Slf4j
public class HuzhouSubProjectinfoServiceImpl extends ServiceImpl<HuzhouSubProjectinfoMapper, HuzhouSubProjectinfo> implements IHuzhouSubProjectinfoService {
@Autowired
@ -41,21 +40,55 @@ public class HuzhouSubProjectinfoServiceImpl extends ServiceImpl<HuzhouSubProjec
@Lazy
private IHuzhouPlaninfoService planinfoService;
@Autowired
private IHuzhouProcessinfoService processinfoService;
private static final Pattern PATTERN_PREFIX_1 = Pattern.compile("^1");
@Override
public void addSubProjectinfo(HuzhouSubProjectinfo subprojectinfo) {
String projectInfoId = subprojectinfo.getId();
ArrayList<HuzhouPlaninfoOV> planInfoMainTimelineList = planinfoService.getPlanInfoMainTimelineList(projectInfoId);
String mainProjectId = subprojectinfo.getId();
ArrayList<HuzhouPlaninfoOV> planInfoMainTimelineList = planinfoService.getPlanInfoMainTimelineList(mainProjectId);
String isFinish = planInfoMainTimelineList.get(0).getIsfinish();
// 项目立项阶段完成才能添加子任务 1完成 0未完成
if (isFinish.equals("1")){
subprojectinfo.setProjectId(projectInfoId);
// "项目立项阶段"完成才能添加子任务
if (isFinish.equals(CommonConstant.PRO_PLAN_FINISHED)){
// 把主项目的id 设置为子项目的projectId
subprojectinfo.setProjectId(mainProjectId);
subprojectinfo.setId(null);
subprojectinfo.setStage("2");
//项目计划执行中 5
subprojectinfo.setStage("5");
//setIsModify 默认不能为空
subprojectinfo.setIsmodify("");
save(subprojectinfo);
userprojectService.saveFromProject(subprojectinfo,"1");
log.info("新增子项目成功!");
log.info("新增的子项目projectId为:{}---父项目projectId为:{}",subprojectinfo.getId(),mainProjectId);
userprojectService.saveFromProject(subprojectinfo,CommonConstant.PROJECTLEVEL_SUB);
//查询父计划 同步主任务阶段
LambdaQueryWrapper<HuzhouPlaninfo> planinfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
planinfoLambdaQueryWrapper.eq(HuzhouPlaninfo::getProjectId,mainProjectId);
planinfoLambdaQueryWrapper.orderByAsc(HuzhouPlaninfo::getTaskLevel);
// 查询 huzhou_planinfo 表
List<HuzhouPlaninfo> huzhouPlaninfoList = planinfoService.list(planinfoLambdaQueryWrapper);
// huzhou_sub_projectinfo中获取子项目的id
String subProjectId = subprojectinfo.getId();
// 封装子任务信息
List<HuzhouPlaninfo> updatedHuzhouPlaninfoList = huzhouPlaninfoList.stream()
.peek(item -> {
item.setProjectId(subProjectId);
item.setId(null);
// 子项目默认1阶段全部完成
if (item.getTaskLevel() != null && PATTERN_PREFIX_1.matcher(item.getTaskLevel()).find()){
item.setIsfinish(CommonConstant.PRO_PLAN_FINISHED);
log.info("阶段:{},完成情况:{}",item.getTaskLevel(),item.getIsfinish());
}else {
item.setIsfinish(CommonConstant.PRO_PLAN_UNFINISHED);
}
})
.collect(Collectors.toList());
log.info("saveBatch数量 {} ,updatedHuzhouPlaninfoList:{} " ,updatedHuzhouPlaninfoList.size(),updatedHuzhouPlaninfoList);
planinfoService.saveBatch(updatedHuzhouPlaninfoList);
}else {
throw new EasyException("主项目立项阶段未完成,新增子项目失败");
}

5
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouUserprojectServiceImpl.java

@ -191,8 +191,9 @@ public class HuzhouUserprojectServiceImpl extends ServiceImpl<HuzhouUserprojectM
if (checkHaving(sysUser.getId(), "phone_number", sysUser.getPhoneNumber())) {
throw new EasyException("手机号已注册");
}
SysUser currentUser = ShiroUtil.getCurrentUser();
String deptId = currentUser.getDeptId();
// SysUser currentUser = ShiroUtil.getCurrentUser();
// String deptId = currentUser.getDeptId();
String deptId = "1765261106051661826";
sysUser.setDeptId(deptId);
// 是否系统管理员
// boolean isAdmin = ShiroUtil.havRole(SysRoleConst.SYS_ADMIN) || ShiroUtil.havRole(SysRoleConst.ADMIN);

11
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java

@ -36,6 +36,7 @@ import com.easy.admin.sys.service.SysDictService;
import com.easy.admin.util.ShiroUtil;
import com.easy.admin.modules.huzhou.service.IWorkflowService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.bpmn.model.*;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RepositoryService;
@ -69,7 +70,7 @@ import java.util.stream.Collectors;
@Service
@Transactional
@Slf4j
public class WorkflowServiceImpl implements IWorkflowService {
@Autowired
private ActivitiModelService activitiModelService;
@ -484,9 +485,11 @@ public class WorkflowServiceImpl implements IWorkflowService {
queryWrapper.eq(HuzhouProcessinfo::getProjectid,projectid);
queryWrapper.eq(HuzhouProcessinfo::getProcessName,stage);
queryWrapper.orderByDesc(BaseEntity::getCreateDate);
HuzhouProcessinfo huzhouProcessinfo = processinfoService.list(queryWrapper).get(0);
processInstanceId=huzhouProcessinfo.getProcessinstanceid();
List<HuzhouProcessinfo> processinfosDb = processinfoService.list(queryWrapper);
if (processinfosDb.size()>0){
HuzhouProcessinfo huzhouProcessinfo = processinfosDb.get(0);
processInstanceId=huzhouProcessinfo.getProcessinstanceid();
}
}
List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)

5
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/HuzhouPlaninfoOV.java

@ -8,7 +8,7 @@ import java.util.List;
public class HuzhouPlaninfoOV extends HuzhouPlaninfo {
private List<HuzhouPlaninfoOV> children;
/**
* 项目进度
* 项目进度()
*/
private String percent;
/**
@ -19,6 +19,9 @@ public class HuzhouPlaninfoOV extends HuzhouPlaninfo {
* 任务完成节点
*/
private String status;
/**
* 项目进度(整体)
*/
private String totalPercent;
private String isEdit;
}

Loading…
Cancel
Save