任务管理 功能优化 7.5

master
zhc077 1 year ago
parent 66ea95e0ab
commit d2bbf021c7
  1. 184
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/Functionx.java
  2. 48
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/modulex/service/impl/ModulexServiceImpl.java

@ -1,147 +1,193 @@
package org.jeecg.modules.demo.functionx.entity; package org.jeecg.modules.demo.functionx.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
/** /**
* @Description: 功能管理 * @Description: 功能管理
* @Author: jeecg-boot * @Author: jeecg-boot
* @Date: 2023-04-10 * @Date: 2023-04-10
* @Version: V1.0 * @Version: V1.0
*/ */
@Data @Data
@TableName("functionx") @TableName("functionx")
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ApiModel(value="functionx对象", description="功能管理") @ApiModel(value = "functionx对象", description = "功能管理")
public class Functionx implements Serializable { public class Functionx implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**主键*/ /**
@TableId(type = IdType.ASSIGN_ID) * 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private java.lang.String id; private java.lang.String id;
/**创建人*/ /**
* 创建人
*/
@ApiModelProperty(value = "创建人") @ApiModelProperty(value = "创建人")
private java.lang.String createBy; private java.lang.String createBy;
/**创建日期*/ /**
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") * 创建日期
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") */
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期") @ApiModelProperty(value = "创建日期")
private java.util.Date createTime; private java.util.Date createTime;
/**更新人*/ /**
* 更新人
*/
@ApiModelProperty(value = "更新人") @ApiModelProperty(value = "更新人")
private java.lang.String updateBy; private java.lang.String updateBy;
/**更新日期*/ /**
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") * 更新日期
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") */
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期") @ApiModelProperty(value = "更新日期")
private java.util.Date updateTime; private java.util.Date updateTime;
/**对应模块id*/ /**
@Excel(name = "对应模块id", width = 15) * 对应模块id
*/
@Excel(name = "对应模块id", width = 15)
@ApiModelProperty(value = "对应模块id") @ApiModelProperty(value = "对应模块id")
@Dict(dictTable = "modulex",dicCode = "id",dicText = "module_name") @Dict(dictTable = "modulex", dicCode = "id", dicText = "module_name")
private java.lang.String moduleId; private java.lang.String moduleId;
/**中文名称*/ /**
@Excel(name = "中文名称", width = 15) * 中文名称
*/
@Excel(name = "中文名称", width = 15)
@ApiModelProperty(value = "中文名称") @ApiModelProperty(value = "中文名称")
private java.lang.String functionName; private java.lang.String functionName;
/**英文名称*/ /**
@Excel(name = "英文名称", width = 15) * 英文名称
*/
@Excel(name = "英文名称", width = 15)
@ApiModelProperty(value = "英文名称") @ApiModelProperty(value = "英文名称")
private java.lang.String functionEnName; private java.lang.String functionEnName;
/**功能编码*/ /**
@Excel(name = "功能编码", width = 15) * 功能编码
*/
@Excel(name = "功能编码", width = 15)
@ApiModelProperty(value = "功能编码") @ApiModelProperty(value = "功能编码")
private java.lang.String functionCode; private java.lang.String functionCode;
/**功能 /**
* 功能
* 列表0增加1删除2修改3查看4导入5导出6其它99默认99 * 列表0增加1删除2修改3查看4导入5导出6其它99默认99
* 类型*/ * 类型
@Excel(name = "功能类型", width = 15) */
@Excel(name = "功能类型", width = 15)
@ApiModelProperty(value = "功能类型") @ApiModelProperty(value = "功能类型")
@Dict(dicCode = "function_type") @Dict(dicCode = "function_type")
private java.lang.Integer functionType; private java.lang.Integer functionType;
/**功能描述*/ /**
@Excel(name = "功能描述", width = 15) * 功能描述
*/
@Excel(name = "功能描述", width = 15)
@ApiModelProperty(value = "功能描述") @ApiModelProperty(value = "功能描述")
private java.lang.String pmDescribe; private java.lang.String pmDescribe;
/**分析图*/ /**
@Excel(name = "分析图", width = 15) * 分析图
*/
@Excel(name = "分析图", width = 15)
@ApiModelProperty(value = "分析图") @ApiModelProperty(value = "分析图")
private java.lang.String diagrams; private java.lang.String diagrams;
/**用户角色*/ /**
@Excel(name = "用户角色", width = 15) * 用户角色
*/
@Excel(name = "用户角色", width = 15)
@ApiModelProperty(value = "用户角色") @ApiModelProperty(value = "用户角色")
private java.lang.String userRole; private java.lang.String userRole;
/**责任人*/ /**
@Excel(name = "责任人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id") * 责任人
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") */
@Excel(name = "责任人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id")
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
@ApiModelProperty(value = "责任人") @ApiModelProperty(value = "责任人")
private java.lang.String managerUsers; private java.lang.String managerUsers;
/**任务等级*/ /**
@Excel(name = "任务等级", width = 15) * 任务等级
*/
@Excel(name = "任务等级", width = 15)
@ApiModelProperty(value = "任务等级") @ApiModelProperty(value = "任务等级")
@Dict(dicCode = "work_level") @Dict(dicCode = "work_level")
private java.lang.Integer workLevel; private java.lang.Integer workLevel;
/**任务状 /**
* 未发布0已发布1开发中2已完成3已审核4DEBUG9默认0 * 任务状
* */ * 未发布0已发布1开发中2已完成3已审核已撤回4DEBUG9默认0
@Excel(name = "任务状态", width = 15) *
*/
@Excel(name = "任务状态", width = 15)
@ApiModelProperty(value = "任务状态") @ApiModelProperty(value = "任务状态")
@Dict(dicCode = "work_status") @Dict(dicCode = "work_status")
private java.lang.Integer workStatus; private java.lang.Integer workStatus;
/**发布时间*/ /**
@Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd") * 发布时间
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") */
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "发布时间") @ApiModelProperty(value = "发布时间")
private java.util.Date publishTime; private java.util.Date publishTime;
/**开始时间*/ /**
@Excel(name = "开始时间", width = 15, format = "yyyy-MM-dd") * 开始时间
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") */
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @Excel(name = "开始时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "开始时间") @ApiModelProperty(value = "开始时间")
private java.util.Date startTime; private java.util.Date startTime;
/**任务时长*/ /**
@Excel(name = "任务时长", width = 15) * 任务时长
*/
@Excel(name = "任务时长", width = 15)
@ApiModelProperty(value = "任务时长") @ApiModelProperty(value = "任务时长")
private java.lang.Double duration; private java.lang.Double duration;
/**提交时间*/ /**
@Excel(name = "提交时间", width = 15, format = "yyyy-MM-dd") * 提交时间
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") */
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @Excel(name = "提交时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "提交时间") @ApiModelProperty(value = "提交时间")
private java.util.Date submitTime; private java.util.Date submitTime;
/**实际时长*/ /**
@Excel(name = "实际时长", width = 15) * 实际时长
*/
@Excel(name = "实际时长", width = 15)
@ApiModelProperty(value = "实际时长") @ApiModelProperty(value = "实际时长")
private java.lang.Double realDuration; private java.lang.Double realDuration;
/**功能状态*/ /**
@Excel(name = "功能状态", width = 15) * 功能状态
*/
@Excel(name = "功能状态", width = 15)
@ApiModelProperty(value = "功能状态") @ApiModelProperty(value = "功能状态")
@Dict(dicCode = "status") @Dict(dicCode = "status")
private java.lang.Integer status; private java.lang.Integer status;
/**版本状态*/ /**
@Excel(name = "版本状态", width = 15) * 版本状态
*/
@Excel(name = "版本状态", width = 15)
@ApiModelProperty(value = "版本状态") @ApiModelProperty(value = "版本状态")
@Dict(dicCode = "verison_status") @Dict(dicCode = "verison_status")
private java.lang.Integer verisonStatus; private java.lang.Integer verisonStatus;
/**版本号*/ /**
@Excel(name = "版本号", width = 15) * 版本号
*/
@Excel(name = "版本号", width = 15)
@ApiModelProperty(value = "版本号") @ApiModelProperty(value = "版本号")
private java.lang.Integer verison; private java.lang.Integer verison;
} }

@ -4,12 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.demo.functionx.entity.Functionx; import org.jeecg.modules.demo.functionx.entity.Functionx;
import org.jeecg.modules.demo.functionx.mapper.FunctionxMapper; import org.jeecg.modules.demo.functionx.mapper.FunctionxMapper;
import org.jeecg.modules.demo.functionx.service.IFunctionxService;
import org.jeecg.modules.demo.rulex.entity.Rulex;
import org.jeecg.modules.demo.rulex.service.IRulexService;
import org.jeecg.modules.modulex.entity.Modulex; import org.jeecg.modules.modulex.entity.Modulex;
import org.jeecg.modules.modulex.mapper.ModulexMapper; import org.jeecg.modules.modulex.mapper.ModulexMapper;
import org.jeecg.modules.modulex.service.IModulexService; import org.jeecg.modules.modulex.service.IModulexService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
@ -32,6 +38,12 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
@Resource @Resource
private ModulexMapper modulexMapper; private ModulexMapper modulexMapper;
@Autowired
private IFunctionxService iFunctionxService;
@Autowired
private IRulexService iRulexService;
/** /**
* 得到最大的版本号 * 得到最大的版本号
*/ */
@ -44,18 +56,19 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
* 发布点击发布按钮状态变成已发布 * 发布点击发布按钮状态变成已发布
* 任务责任人即开发者可以操作开始提交等功能 * 任务责任人即开发者可以操作开始提交等功能
* 模块管理下属所有功能状态变为已发布 * 模块管理下属所有功能状态变为已发布
*
* @param id modulex表的主键id * @param id modulex表的主键id
*/ */
@Override @Override
public Result<?> fabu(String id) { public Result<?> fabu(String id) {
Modulex byId = this.getById(id); Modulex byId = this.getById(id);
if (byId.getWorkStatus() != 0){ if (byId.getWorkStatus() == 1) {
return Result.error("当前功能已发布!!!"); return Result.error("当前功能已发布!!!");
}else { } else {
byId.setWorkStatus(1); byId.setWorkStatus(1);
this.updateById(byId); this.updateById(byId);
//模块管理下属所有功能状态变为已发布 //模块管理下属所有功能状态变为已发布
this.handleStatus(id,1); this.handleStatus(id, 1);
return Result.OK("发布成功!!"); return Result.OK("发布成功!!");
} }
} }
@ -63,6 +76,7 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
/** /**
* 开始任务责任人即开发者使用的功能点击开始按钮状态变为开发中 * 开始任务责任人即开发者使用的功能点击开始按钮状态变为开发中
* 表示任务开始开始时间设置为当前时间 * 表示任务开始开始时间设置为当前时间
*
* @param id modulex表的主键id * @param id modulex表的主键id
*/ */
@Override @Override
@ -83,6 +97,7 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
* 提交任务责任人即开发者使用的功能点击提交按钮表示任务完成状态变为已提交 * 提交任务责任人即开发者使用的功能点击提交按钮表示任务完成状态变为已提交
* 提交时间设置为当前时间并自动计算实际时长 * 提交时间设置为当前时间并自动计算实际时长
* 模块管理下属所有功能状态变成已完成才能点击提交按钮 * 模块管理下属所有功能状态变成已完成才能点击提交按钮
*
* @param id modulex表的主键id * @param id modulex表的主键id
*/ */
@Override @Override
@ -95,7 +110,7 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
byId.setSubmitTime(new Date()); byId.setSubmitTime(new Date());
this.updateById(byId); this.updateById(byId);
this.handleStatus(id,3); this.handleStatus(id, 3);
return Result.OK("提交成功!!"); return Result.OK("提交成功!!");
} }
@ -103,9 +118,13 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
/** /**
* 撤回项目负责人管理员使用点击撤回状态变为开发中 * 撤回项目负责人管理员使用点击撤回状态变为开发中
*
* @param id modulex表的主键id * @param id modulex表的主键id
* <p>
* 问题模块管理中撤回后该模块的功能对应的所有任务状也做撤回操作肯该功能所对应的开发规则的任务状态也做撤回操作
*/ */
@Override @Override
@Transactional(readOnly = false, rollbackFor = Exception.class)
public Result<?> chehui(String id) { public Result<?> chehui(String id) {
Modulex byId = this.getById(id); Modulex byId = this.getById(id);
if (byId.getWorkStatus() == 2) { if (byId.getWorkStatus() == 2) {
@ -113,12 +132,25 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
} }
byId.setWorkStatus(2); byId.setWorkStatus(2);
this.updateById(byId); this.updateById(byId);
//add by zhc 7.5
this.doWorkStatusRollBack(id);
return Result.OK("撤回成功"); return Result.OK("撤回成功");
} }
@Transactional(readOnly = false, rollbackFor = Exception.class)
public void doWorkStatusRollBack(final String moduleId) {
/**
* work_status值未发布0已发布1开发中2已完成3已撤回4已取消9默认0
*/
iFunctionxService.lambdaUpdate().set(Functionx::getWorkStatus, 4).set(Functionx::getUpdateTime, new Date()).eq(Functionx::getModuleId, moduleId).update();
iRulexService.lambdaUpdate().set(Rulex::getWorkStatus, 4).set(Rulex::getUpdateTime, new Date()).eq(Rulex::getModuleId, moduleId).update();
}
/** /**
* BUG反馈项目负责人管理员使用点击BUG反馈状态变为DEBUG下属功能状态不变BUG管理增加一条记录记录BUG内容 * BUG反馈项目负责人管理员使用点击BUG反馈状态变为DEBUG下属功能状态不变BUG管理增加一条记录记录BUG内容
* 审核项目负责人管理员使用点击完成状态变为已审核 * 审核项目负责人管理员使用点击完成状态变为已审核
*
* @param id modulex表的主键id * @param id modulex表的主键id
*/ */
@Override @Override
@ -134,14 +166,14 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
@Override @Override
public void setmodule(String id, String moduleId) { public void setmodule(String id, String moduleId) {
modulexMapper.setmodule(id,moduleId); modulexMapper.setmodule(id, moduleId);
} }
private void handleStatus(String id, Integer a){ private void handleStatus(String id, Integer a) {
//先查字模块 先查询父id 等于 这个 id 的数据 //先查字模块 先查询父id 等于 这个 id 的数据
List<Modulex> modulexs = this.list(new LambdaQueryWrapper<Modulex>().eq(Modulex::getPid, id)); List<Modulex> modulexs = this.list(new LambdaQueryWrapper<Modulex>().eq(Modulex::getPid, id));
if (modulexs.size()>0){ if (modulexs.size() > 0) {
modulexs.forEach(modulex -> { modulexs.forEach(modulex -> {
modulex.setWorkStatus(a); modulex.setWorkStatus(a);
this.updateById(modulex); this.updateById(modulex);
@ -149,7 +181,7 @@ public class ModulexServiceImpl extends ServiceImpl<ModulexMapper, Modulex> impl
} }
//再查下属功能 //再查下属功能
List<Functionx> functionxs = functionxMapper.selectList(new LambdaQueryWrapper<Functionx>().eq(Functionx::getModuleId, id)); List<Functionx> functionxs = functionxMapper.selectList(new LambdaQueryWrapper<Functionx>().eq(Functionx::getModuleId, id));
if (functionxs.size()>0){ if (functionxs.size() > 0) {
functionxs.forEach(funcx -> { functionxs.forEach(funcx -> {
funcx.setWorkStatus(a); funcx.setWorkStatus(a);
functionxMapper.updateById(funcx); functionxMapper.updateById(funcx);

Loading…
Cancel
Save