任务进度甘特图bug修复

This commit is contained in:
guo 2023-11-07 11:30:22 +08:00
parent 598a2a87e1
commit 556159fb96
15 changed files with 271 additions and 118 deletions

View File

@ -9,6 +9,7 @@ import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.jeecg.common.util.oConvertUtils;
import com.zhgd.xmgl.modules.taskprogress.entity.TaskProgressAlarm;
import com.zhgd.xmgl.modules.taskprogress.service.ITaskProgressAlarmService;
import com.zhgd.xmgl.util.PageUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -49,10 +50,6 @@ public class TaskProgressAlarmController {
/**
* 分页列表查询
*
* @param taskProgressAlarm
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@ApiOperation(value = "分页列表查询任务进度甘特图-报警信息信息", notes = "分页列表查询任务进度甘特图-报警信息信息", httpMethod = "GET")
@ -63,14 +60,11 @@ public class TaskProgressAlarmController {
@ApiImplicitParam(name = "createDate_end", value = "报警时间结束", paramType = "query", dataType = "String"),
})
@GetMapping(value = "/page")
public Result<IPage<TaskProgressAlarm>> queryPageList(TaskProgressAlarm taskProgressAlarm,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
Result<IPage<TaskProgressAlarm>> result = new Result<IPage<TaskProgressAlarm>>();
QueryWrapper<TaskProgressAlarm> queryWrapper = QueryGenerator.initQueryWrapper(taskProgressAlarm, req.getParameterMap());
public Result<IPage<TaskProgressAlarm>> queryPageList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {
Result<IPage<TaskProgressAlarm>> result = new Result<>();
QueryWrapper<TaskProgressAlarm> queryWrapper = QueryGenerator.initPageQueryWrapper(TaskProgressAlarm.class, paramMap);
queryWrapper.lambda().orderByDesc(TaskProgressAlarm::getCreateDate);
Page<TaskProgressAlarm> page = new Page<TaskProgressAlarm>(pageNo, pageSize);
Page page = PageUtil.getPage(paramMap);
IPage<TaskProgressAlarm> pageList = taskProgressAlarmService.page(page, queryWrapper);
result.setSuccess(true);
result.setResult(pageList);

View File

@ -86,7 +86,7 @@ public class TaskProgressController {
@ApiImplicitParam(name = "projectSn", value = "项目sn", dataType = "String", required = true, paramType = "body"),
@ApiImplicitParam(name = "taskName", value = "任务名称", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "projectSn", value = "项目sn", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "status", value = "状态0未开始 ,1进行中2已完成3已逾期 默认未开始", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "status", value = "状态0未开始 ,1进行中2已完成 默认未开始", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "actualFinishDate_begin", value = "实际完成日期开始", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "actualFinishDate_end", value = "实际完成日期结束", dataType = "String", paramType = "body"),
})
@ -100,7 +100,6 @@ public class TaskProgressController {
*
* @return 所有进度甘特图
*/
@PostMapping(value = "/getParentChildPage")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", dataType = "String", required = true, paramType = "body"),
@ApiImplicitParam(name = "taskName", value = "任务名称", dataType = "String", paramType = "body"),
@ -112,6 +111,7 @@ public class TaskProgressController {
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "body", required = true, dataType = "Integer"),
})
@ApiOperation(value = "所有进度甘特图, 以父子节点形式呈现")
@PostMapping(value = "/getParentChildPage")
public Result<IPage<TaskProgress>> getParentChildPage(@ApiIgnore @RequestBody HashMap<String, Object> paramMap) {
return Result.success(taskProgressService.getParentChildPage(paramMap));
}

View File

@ -67,6 +67,7 @@ public class TaskProgressMaterialRelController {
@ApiOperation(value = "树形列表查询任务进度甘特图-计划材料工程列表", notes = "树形列表查询任务进度甘特图-计划材料工程列表", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "query", required = true, dataType = "String"),
@ApiImplicitParam(name = "taskName", value = "任务名称", paramType = "query", required = false, dataType = "String"),
})
@GetMapping(value = "/tree/list")
public Result<List<TaskProgress>> queryTreeList(@ApiIgnore @RequestParam HashMap<String, Object> paramMap) {

View File

@ -7,6 +7,7 @@ import com.zhgd.jeecg.common.api.vo.Result;
import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.taskprogress.entity.TaskProgressMaterialType;
import com.zhgd.xmgl.modules.taskprogress.service.ITaskProgressMaterialTypeService;
import com.zhgd.xmgl.util.RefUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@ -72,7 +73,7 @@ public class TaskProgressMaterialTypeController {
public Result<List<TaskProgressMaterialType>> queryList(TaskProgressMaterialType taskProgressMaterialType,
HttpServletRequest req) {
QueryWrapper<TaskProgressMaterialType> queryWrapper = QueryGenerator.initQueryWrapper(taskProgressMaterialType, req.getParameterMap());
return Result.success(taskProgressMaterialTypeService.list(queryWrapper));
return Result.success(taskProgressMaterialTypeService.queryList(queryWrapper));
}
/**

View File

@ -108,10 +108,10 @@ public class TaskProgress implements Serializable {
@ApiModelProperty(value = "更新时间")
private java.util.Date updateDate;
/**
* 状态0未开始 ,1进行中2已完成3已逾期 默认未开始
* 状态0未开始 ,1进行中2已完成 默认未开始
*/
@Excel(name = "执行状态", width = 15, replace = {"未开始_0", "进行中_1", "已完成_2", "已逾期_3"})
@ApiModelProperty(value = "状态0未开始 ,1进行中2已完成3已逾期 默认未开始")
@ApiModelProperty(value = "状态0未开始 ,1进行中2已完成 默认未开始")
private java.lang.Integer status;
/**
@ -171,4 +171,8 @@ public class TaskProgress implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "任务进度甘特图-材料类型数量-计划用量")
private List<TaskProgressMaterialRelPlan> relPlanList;
@TableField(exist = false)
@ApiModelProperty(value = "甘特图状态0未开始 ,1进行中2已完成 3已逾期")
private java.lang.Integer mppStatus;
}

View File

@ -26,5 +26,7 @@ public interface TaskProgressMapper extends BaseMapper<TaskProgress> {
IPage<TaskProgress> queryList(@Param("p") HashMap<String, Object> paramMap, Page<TaskProgress> page);
void insertBatch(Collection<TaskProgress> progressTaskList);
void updateByTaskName(TaskProgress taskProgress);
void updateByPrimaryId(TaskProgress taskProgress);
}

View File

@ -1,8 +1,13 @@
package com.zhgd.xmgl.modules.taskprogress.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import com.zhgd.xmgl.modules.taskprogress.entity.TaskProgressMaterialType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 任务进度甘特图-材料类型
@ -13,4 +18,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface TaskProgressMaterialTypeMapper extends BaseMapper<TaskProgressMaterialType> {
List<TaskProgressMaterialType> queryList(@Param(Constants.WRAPPER) QueryWrapper<TaskProgressMaterialType> queryWrapper);
}

View File

@ -12,7 +12,7 @@
from task_progress tp
left join system_user su on su.user_id = tp.duty_user_id
where tp.project_sn = #{p.projectSn}
<if test="p.status != null">
<if test="(p.status != null and p.status != '') or p.status == '0'.toString()">
and tp.status = #{p.status}
</if>
<if test="p.taskName != null and p.taskName != ''">
@ -25,4 +25,88 @@
AND tp.actual_finish_date &lt;= CONCAT(DATE_FORMAT(#{p.actualFinishDate_end}, '%Y-%m-%d'), ' 23:59:59')
</if>
</select>
<update id="updateByTaskName" parameterType="com.zhgd.xmgl.modules.taskprogress.entity.TaskProgress">
update task_progress
<set>
<if test="id != null">
id = #{id},
</if>
<if test="projectSn != null">
project_sn = #{projectSn,jdbcType=VARCHAR},
</if>
<if test="taskName != null">
task_name = #{taskName,jdbcType=VARCHAR},
</if>
<if test="duration != null">
duration = #{duration,jdbcType=DOUBLE},
</if>
<if test="progressRatio != null">
progress_ratio = #{progressRatio,jdbcType=DOUBLE},
</if>
<if test="startDate != null">
start_date = #{startDate,jdbcType=DATE},
</if>
<if test="actualStartDate != null">
actual_start_date = #{actualStartDate,jdbcType=DATE},
</if>
<if test="finishDate != null">
finish_date = #{finishDate,jdbcType=DATE},
</if>
<if test="actualFinishDate != null">
actual_finish_date = #{actualFinishDate,jdbcType=DATE},
</if>
<if test="createDate != null">
create_date = #{createDate,jdbcType=TIMESTAMP},
</if>
<if test="updateDate != null">
update_date = #{updateDate,jdbcType=TIMESTAMP},
</if>
<if test="status != null">
`status` = #{status,jdbcType=INTEGER},
</if>
<if test="parentId != null">
parent_id = #{parentId,jdbcType=BIGINT},
</if>
<if test="dutyUserId != null">
duty_user_id = #{dutyUserId,jdbcType=BIGINT},
</if>
<if test="predecessorIds != null">
predecessor_ids = #{predecessorIds,jdbcType=VARCHAR},
</if>
<if test="remark != null">
remark = #{remark,jdbcType=VARCHAR},
</if>
<if test="createUserId != null">
create_user_id = #{createUserId,jdbcType=BIGINT},
</if>
<if test="endWarning != null">
end_warning = #{endWarning,jdbcType=INTEGER},
</if>
<if test="beginWarning != null">
begin_warning = #{beginWarning,jdbcType=INTEGER},
</if>
</set>
where project_sn = #{projectSn}
and task_name = #{taskName}
</update>
<update id="updateByPrimaryId" parameterType="com.zhgd.xmgl.modules.taskprogress.entity.TaskProgress">
update task_progress
<set>
project_sn = #{projectSn,jdbcType=VARCHAR},
task_name = #{taskName,jdbcType=VARCHAR},
progress_ratio = #{progressRatio,jdbcType=DOUBLE},
start_date = #{startDate,jdbcType=DATE},
actual_start_date = #{actualStartDate,jdbcType=DATE},
finish_date = #{finishDate,jdbcType=DATE},
actual_finish_date = #{actualFinishDate,jdbcType=DATE},
parent_id = #{parentId,jdbcType=BIGINT},
duty_user_id = #{dutyUserId,jdbcType=BIGINT},
remark = #{remark,jdbcType=VARCHAR},
begin_warning = #{beginWarning},
end_warning = #{endWarning},
status = #{status},
</set>
where id = #{id}
</update>
</mapper>

View File

@ -7,6 +7,7 @@
left join task_progress_material_rel_plan p
on t.id = p.task_progress_material_type_id and p.task_progress_id = #{taskProgressId}
where t.project_sn = #{projectSn}
order by t.type ,t.id
</select>
<select id="queryNewestPlanList" resultType="com.zhgd.xmgl.modules.taskprogress.entity.TaskProgressMaterialRelPlan">

View File

@ -1,4 +1,9 @@
<?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.zhgd.xmgl.modules.taskprogress.mapper.TaskProgressMaterialTypeMapper">
<select id="queryList" resultType="com.zhgd.xmgl.modules.taskprogress.entity.TaskProgressMaterialType">
select * from task_progress_material_type
${ew.customSqlSegment}
order by type ,id
</select>
</mapper>

View File

@ -1,8 +1,11 @@
package com.zhgd.xmgl.modules.taskprogress.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zhgd.xmgl.modules.taskprogress.entity.TaskProgressMaterialType;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 任务进度甘特图-材料类型
* @author pds
@ -14,4 +17,6 @@ public interface ITaskProgressMaterialTypeService extends IService<TaskProgressM
void add(TaskProgressMaterialType taskProgressMaterialType);
void edit(TaskProgressMaterialType taskProgressMaterialType);
List<TaskProgressMaterialType> queryList(QueryWrapper<TaskProgressMaterialType> queryWrapper);
}

View File

@ -20,7 +20,6 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -39,10 +38,14 @@ public class TaskProgressContentServiceImpl extends ServiceImpl<TaskProgressCont
@Override
public void add(TaskProgressContent taskProgressContent) {
TaskProgress taskProgress = taskProgressMapper.selectById(taskProgressContent.getTaskProgressId());
if (Objects.equals(taskProgress.getStatus(), 0)) {
if (taskProgressContent.getProgressRatio().equals(100D)) {
taskProgress.setStatus(2);
} else if (taskProgressContent.getProgressRatio().equals(0D)) {
taskProgress.setStatus(0);
} else {
taskProgress.setStatus(1);
taskProgressMapper.updateById(taskProgress);
}
taskProgressMapper.updateById(taskProgress);
String projectSn = taskProgress.getProjectSn();
taskProgressContent.setProjectSn(projectSn);
UserInfo user = SecurityUtils.getUser();

View File

@ -2,6 +2,7 @@ package com.zhgd.xmgl.modules.taskprogress.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.api.vo.Result;
@ -15,6 +16,8 @@ import com.zhgd.xmgl.modules.taskprogress.mapper.TaskProgressMaterialRelMapper;
import com.zhgd.xmgl.modules.taskprogress.mapper.TaskProgressMaterialRelPlanMapper;
import com.zhgd.xmgl.modules.taskprogress.mapper.TaskProgressMaterialTypeMapper;
import com.zhgd.xmgl.modules.taskprogress.service.ITaskProgressMaterialRelService;
import com.zhgd.xmgl.modules.taskprogress.service.ITaskProgressMaterialTypeService;
import com.zhgd.xmgl.util.RefUtil;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
@ -53,6 +56,8 @@ public class TaskProgressMaterialRelServiceImpl extends ServiceImpl<TaskProgress
TaskProgressServiceImpl taskProgressService;
@Autowired
TaskProgressMaterialTypeMapper taskProgressMaterialTypeMapper;
@Autowired
private ITaskProgressMaterialTypeService taskProgressMaterialTypeService;
@Override
public List<TaskProgressMaterialRel> queryNewestDetailList(HashMap<String, Object> paramMap) {
@ -70,12 +75,38 @@ public class TaskProgressMaterialRelServiceImpl extends ServiceImpl<TaskProgress
@Override
public List<TaskProgress> queryTreeList(HashMap<String, Object> paramMap) {
String projectSn = MapUtils.getString(paramMap, "projectSn");
List<TaskProgress> progressTaskList = taskProgressMapper.selectList(Wrappers.lambdaQuery(TaskProgress.class).eq(TaskProgress::getProjectSn, projectSn));
String taskName = MapUtils.getString(paramMap, "taskName");
List<TaskProgress> progressTaskList = taskProgressMapper.selectList(Wrappers.lambdaQuery(TaskProgress.class)
.eq(TaskProgress::getProjectSn, projectSn)
.like(StringUtils.isNotBlank(taskName), TaskProgress::getTaskName, taskName)
);
List<Long> ids = progressTaskList.stream().map(TaskProgress::getId).collect(Collectors.toList());
if (CollUtil.isNotEmpty(ids)) {
setRelActualAndPlanList(paramMap, projectSn, progressTaskList, ids);
}
List<TaskProgress> rtList;
if (StringUtils.isBlank(taskName)) {
Map<Long, List<TaskProgress>> parentIdTaskListMap = progressTaskList.stream().collect(Collectors.groupingBy(TaskProgress::getParentId));
rtList = taskProgressService.getChild(parentIdTaskListMap, 0L);
} else {
rtList = progressTaskList;
}
return rtList;
}
/**
* 设置实际和计划数量
*
* @param paramMap
* @param projectSn
* @param progressTaskList
* @param ids
*/
private void setRelActualAndPlanList(HashMap<String, Object> paramMap, String projectSn, List<TaskProgress> progressTaskList, List<Long> ids) {
paramMap.put("list", ids);
List<TaskProgressMaterialType> types = taskProgressMaterialTypeMapper.selectList(new LambdaQueryWrapper<TaskProgressMaterialType>()
.eq(TaskProgressMaterialType::getProjectSn, projectSn));
QueryWrapper<TaskProgressMaterialType> typeQueryWrapper = new QueryWrapper<>();
typeQueryWrapper.eq(RefUtil.fieldNameUlc(TaskProgressMaterialType::getProjectSn), projectSn);
List<TaskProgressMaterialType> types = taskProgressMaterialTypeService.queryList(typeQueryWrapper);
//设置relActualList
List<TaskProgressMaterialRel> taskProgresses = taskProgressMaterialRelMapper.queryNewestActualList(paramMap);
@ -92,7 +123,7 @@ public class TaskProgressMaterialRelServiceImpl extends ServiceImpl<TaskProgress
TaskProgressMaterialRel r = m.get(type.getId());
if (r == null) {
r = new TaskProgressMaterialRel();
r.setActualUsage(0D);
r.setActualUsage(null);
r.setName(type.getName());
}
rl.add(r);
@ -110,7 +141,7 @@ public class TaskProgressMaterialRelServiceImpl extends ServiceImpl<TaskProgress
TaskProgressMaterialRelPlan r = pM.get(type.getId());
if (r == null) {
r = new TaskProgressMaterialRelPlan();
r.setPlanUsage(0D);
r.setPlanUsage(null);
r.setName(type.getName());
}
planList.add(r);
@ -119,9 +150,6 @@ public class TaskProgressMaterialRelServiceImpl extends ServiceImpl<TaskProgress
taskProgress.setRelPlanList(planList);
}
}
Map<Long, List<TaskProgress>> parentIdTaskListMap = progressTaskList.stream().collect(Collectors.groupingBy(TaskProgress::getParentId));
return taskProgressService.getChild(parentIdTaskListMap, 0L);
}
@Override
public void exportXls(HashMap<String, Object> paramMap, HttpServletResponse response) {
@ -139,8 +167,9 @@ public class TaskProgressMaterialRelServiceImpl extends ServiceImpl<TaskProgress
entityList.add(new ExcelExportEntity("id", "id"));
entityList.add(new ExcelExportEntity("父级id", "pid"));
entityList.add(new ExcelExportEntity("分部分项工程名称", "taskName"));
List<TaskProgressMaterialType> taskProgressMaterialRels = taskProgressMaterialTypeMapper.selectList(new LambdaQueryWrapper<TaskProgressMaterialType>()
.eq(TaskProgressMaterialType::getProjectSn, projectSn));
QueryWrapper<TaskProgressMaterialType> typeQueryWrapper = new QueryWrapper<>();
typeQueryWrapper.eq(RefUtil.fieldNameUlc(TaskProgressMaterialType::getProjectSn), projectSn);
List<TaskProgressMaterialType> taskProgressMaterialRels = taskProgressMaterialTypeService.queryList(typeQueryWrapper);
String p = "p";
String a = "a";
for (TaskProgressMaterialType rel : taskProgressMaterialRels) {
@ -180,12 +209,12 @@ public class TaskProgressMaterialRelServiceImpl extends ServiceImpl<TaskProgress
//导出
if (CollUtil.isNotEmpty(relActualList) && Objects.equals(type, 2)) {
for (TaskProgressMaterialRel rel : relActualList) {
map.put(a + rel.getTaskProgressMaterialTypeId() + "", rel.getActualUsage() + "");
map.put(a + rel.getTaskProgressMaterialTypeId() + "", rel.getActualUsage() != null ? rel.getActualUsage() + "" : "");
}
}
if (CollUtil.isNotEmpty(relPlanList) && Objects.equals(type, 2)) {
for (TaskProgressMaterialRelPlan rel : relPlanList) {
map.put(p + rel.getTaskProgressMaterialTypeId() + "", rel.getPlanUsage() + "");
map.put(p + rel.getTaskProgressMaterialTypeId() + "", rel.getPlanUsage() != null ? rel.getPlanUsage() + "" : "");
}
}
list.add(map);

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.taskprogress.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import com.zhgd.xmgl.modules.taskprogress.entity.TaskProgressMaterialType;
import com.zhgd.xmgl.modules.taskprogress.mapper.TaskProgressMaterialTypeMapper;
@ -9,6 +10,8 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
/**
* @Description: 任务进度甘特图-材料类型
* @author pds
@ -41,4 +44,9 @@ public class TaskProgressMaterialTypeServiceImpl extends ServiceImpl<TaskProgres
}
updateById(taskProgressMaterialType);
}
@Override
public List<TaskProgressMaterialType> queryList(QueryWrapper<TaskProgressMaterialType> queryWrapper) {
return baseMapper.queryList(queryWrapper);
}
}

View File

@ -1,6 +1,7 @@
package com.zhgd.xmgl.modules.taskprogress.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
@ -8,8 +9,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.jeecg.common.api.vo.Result;
@ -18,7 +17,6 @@ import com.zhgd.jeecg.common.system.query.QueryGenerator;
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
import com.zhgd.xmgl.modules.basicdata.service.UploadFileService;
import com.zhgd.xmgl.modules.project.constants.ProgressTaskConstant;
import com.zhgd.xmgl.modules.taskprogress.entity.*;
import com.zhgd.xmgl.modules.taskprogress.mapper.*;
import com.zhgd.xmgl.modules.taskprogress.service.ITaskProgressService;
@ -83,32 +81,17 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
public List<TaskProgress> getParentChildList(HashMap<String, Object> paramMap) {
// 查询项目下的节点集合通过父节点分组
List<TaskProgress> progressTaskList = baseMapper.queryList(paramMap);
for (TaskProgress taskProgress : progressTaskList) {
if (Objects.equals(taskProgress.getBeginWarning(), 3) || Objects.equals(taskProgress.getEndWarning(), 3)) {
taskProgress.setMppStatus(3);
} else {
taskProgress.setMppStatus(taskProgress.getStatus());
}
}
Map<Long, List<TaskProgress>> parentIdTaskListMap = progressTaskList.stream().collect(Collectors.groupingBy(TaskProgress::getParentId));
return getChild(parentIdTaskListMap, 0L);
}
/**
* 获取预警状态
*
* @param plan
* @param actual
* @return
*/
private Integer getWarningStatus(Date plan, Date actual) {
if (actual != null) {
int i = plan.compareTo(actual);
if (i > 0) {
return 1;
} else if (i < 0) {
return 3;
} else {
return 2;
}
} else {
return 2;
}
}
@Override
public void add(TaskProgress taskProgress) {
if (!Objects.equals(taskProgress.getParentId(), 0L)) {
@ -117,15 +100,18 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
taskProgress.setPredecessorIds(tp.getPredecessorIds() + "," + taskProgress.getParentId());
}
setStatusRel(taskProgress);
taskProgress.setBeginWarning(getWarningStatus(taskProgress.getStartDate(), taskProgress.getActualStartDate()));
taskProgress.setEndWarning(getWarningStatus(taskProgress.getFinishDate(), taskProgress.getActualFinishDate()));
save(taskProgress);
addWarning(taskProgress);
}
/**
* 设置状态相关
*
* @param taskProgress
*/
private void setStatusRel(TaskProgress taskProgress) {
if (taskProgress.getActualStartDate() != null && taskProgress.getStartDate().compareTo(taskProgress.getActualStartDate()) < 0) {
taskProgress.setBeginWarning(3);
taskProgress.setStatus(3);
} else if (taskProgress.getActualStartDate() != null && taskProgress.getStartDate().compareTo(taskProgress.getActualStartDate()) > 0) {
taskProgress.setBeginWarning(1);
} else {
@ -134,7 +120,6 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
if (taskProgress.getActualFinishDate() != null && taskProgress.getFinishDate().compareTo(taskProgress.getActualFinishDate()) < 0) {
taskProgress.setEndWarning(3);
taskProgress.setStatus(3);
} else if (taskProgress.getActualFinishDate() != null && taskProgress.getFinishDate().compareTo(taskProgress.getActualFinishDate()) > 0) {
taskProgress.setEndWarning(1);
} else {
@ -149,10 +134,40 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
taskProgress.setActualStartDate(taskProgress.getStartDate());
}
taskProgress.setStatus(2);
} else if (taskProgress.getProgressRatio().equals(0D)) {
taskProgress.setStatus(0);
} else {
taskProgress.setStatus(1);
}
}
/**
* 添加预警信息
*
* @param taskProgress
*/
private void addWarning(TaskProgress taskProgress) {
//添加预警
if (Objects.equals(taskProgress.getBeginWarning(), 3)) {
TaskProgressAlarm alarm = new TaskProgressAlarm();
alarm.setProjectSn(taskProgress.getProjectSn());
alarm.setTaskProgressId(taskProgress.getId());
alarm.setAlarmDetails("当前任务预计开始时间为:" + DateUtil.formatDate(taskProgress.getStartDate()) + "" + "实际任务开始时间为:" + DateUtil.formatDate(taskProgress.getActualStartDate()));
alarm.setTaskName(taskProgress.getTaskName());
taskProgressAlarmMapper.insert(alarm);
}
if (Objects.equals(taskProgress.getEndWarning(), 3)) {
TaskProgressAlarm alarm = new TaskProgressAlarm();
alarm.setProjectSn(taskProgress.getProjectSn());
alarm.setTaskProgressId(taskProgress.getId());
alarm.setAlarmDetails("当前任务预计完成时间为:" + DateUtil.formatDate(taskProgress.getFinishDate()) + "" + "实际任务完成时间为:" + DateUtil.formatDate(taskProgress.getActualFinishDate()));
alarm.setTaskName(taskProgress.getTaskName());
taskProgressAlarmMapper.insert(alarm);
}
}
@Override
public void delete(HashMap<String, Object> map) {
String id = MapUtils.getString(map, "id");
@ -179,7 +194,6 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
taskProgressMapper.delete(queryWrapper);
taskProgressContentMapper.delete(Wrappers.lambdaQuery(TaskProgressContent.class).eq(TaskProgressContent::getProjectSn, projectSn));
taskProgressMaterialRelMapper.delete(Wrappers.lambdaQuery(TaskProgressMaterialRel.class).eq(TaskProgressMaterialRel::getProjectSn, projectSn));
taskProgressAlarmMapper.delete(Wrappers.lambdaQuery(TaskProgressAlarm.class).eq(TaskProgressAlarm::getProjectSn, projectSn));
taskProgressMaterialRelPlanMapper.delete(Wrappers.lambdaQuery(TaskProgressMaterialRelPlan.class).eq(TaskProgressMaterialRelPlan::getProjectSn, projectSn));
if (CollUtil.isNotEmpty(progressTaskList)) {
this.saveBatch(progressTaskList);
@ -196,10 +210,7 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
for (TaskProgress taskProgress : progressTaskList) {
String taskName = taskProgress.getTaskName();
if (oldSet.contains(taskName)) {
taskProgressMapper.update(taskProgress, new LambdaQueryWrapper<TaskProgress>()
.eq(TaskProgress::getProjectSn, projectSn)
.eq(TaskProgress::getTaskName, taskName)
);
taskProgressMapper.updateByTaskName(taskProgress);
}
}
}
@ -275,7 +286,11 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
long id = IdUtil.getSnowflake().nextId();
progressTask.setId(id);
// 任务名称
progressTask.setTaskName(task.getName());
String taskName = task.getName();
if (StrUtil.isBlank(taskName)) {
throw new OpenAlertException("任务名称不能为空");
}
progressTask.setTaskName(taskName);
// 工期
progressTask.setDuration(task.getDuration().getDuration());
// 父节点id
@ -295,15 +310,8 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
progressTask.setActualFinishDate(actualFinishDate);
progressTask.setRemark(task.getNotes());
// 设置当前状态
if (progressRatio == 0 || actualStartDate == null || actualStartDate.getTime() > System.currentTimeMillis()) {
progressTask.setProgressRatio(0D);
progressTask.setStatus(ProgressTaskConstant.NOT_STARTED);
} else if (progressRatio == 100D || (actualFinishDate != null && actualFinishDate.getTime() <= System.currentTimeMillis())) {
progressTask.setProgressRatio(100D);
progressTask.setStatus(ProgressTaskConstant.FINISH);
} else {
progressTask.setStatus(ProgressTaskConstant.RUNNING);
}
setStatusRel(progressTask);
// 负责人名称
String dutyUserName = task.getText(4);
progressTask.setDutyUserName(dutyUserName);
@ -319,6 +327,7 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
}
predecessorIds = progressTask.getPredecessorIds() + "," + progressTask.getId();
addWarning(progressTask);
progressTaskList.add(progressTask);
structureTaskDataList(progressTaskList, userNameSet, task.getChildTasks(), progressTask.getId(), projectSn, createUserId, predecessorIds);
}
@ -407,6 +416,7 @@ public class TaskProgressServiceImpl extends ServiceImpl<TaskProgressMapper, Tas
@Override
public void edit(TaskProgress taskProgress) {
setStatusRel(taskProgress);
updateById(taskProgress);
baseMapper.updateByPrimaryId(taskProgress);
addWarning(taskProgress);
}
}