diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/Functionx.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/Functionx.java index 7e94f07..eb88f2d 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/Functionx.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/demo/functionx/entity/Functionx.java @@ -1,147 +1,193 @@ 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.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; 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.ApiModelProperty; +import lombok.Data; import lombok.EqualsAndHashCode; 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: 功能管理 * @Author: jeecg-boot - * @Date: 2023-04-10 + * @Date: 2023-04-10 * @Version: V1.0 */ @Data @TableName("functionx") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) -@ApiModel(value="functionx对象", description="功能管理") +@ApiModel(value = "functionx对象", description = "功能管理") public class Functionx implements Serializable { private static final long serialVersionUID = 1L; - /**主键*/ - @TableId(type = IdType.ASSIGN_ID) + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") private java.lang.String id; - /**创建人*/ + /** + * 创建人 + */ @ApiModelProperty(value = "创建人") 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 = "创建日期") private java.util.Date createTime; - /**更新人*/ + /** + * 更新人 + */ @ApiModelProperty(value = "更新人") 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 = "更新日期") private java.util.Date updateTime; - /**对应模块id*/ - @Excel(name = "对应模块id", width = 15) + /** + * 对应模块id + */ + @Excel(name = "对应模块id", width = 15) @ApiModelProperty(value = "对应模块id") - @Dict(dictTable = "modulex",dicCode = "id",dicText = "module_name") + @Dict(dictTable = "modulex", dicCode = "id", dicText = "module_name") private java.lang.String moduleId; - /**中文名称*/ - @Excel(name = "中文名称", width = 15) + /** + * 中文名称 + */ + @Excel(name = "中文名称", width = 15) @ApiModelProperty(value = "中文名称") private java.lang.String functionName; - /**英文名称*/ - @Excel(name = "英文名称", width = 15) + /** + * 英文名称 + */ + @Excel(name = "英文名称", width = 15) @ApiModelProperty(value = "英文名称") private java.lang.String functionEnName; - /**功能编码*/ - @Excel(name = "功能编码", width = 15) + /** + * 功能编码 + */ + @Excel(name = "功能编码", width = 15) @ApiModelProperty(value = "功能编码") private java.lang.String functionCode; - /**功能 + /** + * 功能 * 值:列表0、增加1、删除2、修改3、查看4、导入5、导出6、其它99;默认99 - * 类型*/ - @Excel(name = "功能类型", width = 15) + * 类型 + */ + @Excel(name = "功能类型", width = 15) @ApiModelProperty(value = "功能类型") @Dict(dicCode = "function_type") private java.lang.Integer functionType; - /**功能描述*/ - @Excel(name = "功能描述", width = 15) + /** + * 功能描述 + */ + @Excel(name = "功能描述", width = 15) @ApiModelProperty(value = "功能描述") private java.lang.String pmDescribe; - /**分析图*/ - @Excel(name = "分析图", width = 15) + /** + * 分析图 + */ + @Excel(name = "分析图", width = 15) @ApiModelProperty(value = "分析图") private java.lang.String diagrams; - /**用户角色*/ - @Excel(name = "用户角色", width = 15) + /** + * 用户角色 + */ + @Excel(name = "用户角色", width = 15) @ApiModelProperty(value = "用户角色") 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 = "责任人") private java.lang.String managerUsers; - /**任务等级*/ - @Excel(name = "任务等级", width = 15) + /** + * 任务等级 + */ + @Excel(name = "任务等级", width = 15) @ApiModelProperty(value = "任务等级") @Dict(dicCode = "work_level") private java.lang.Integer workLevel; - /**任务状 - * 值:未发布0、已发布1、开发中2、已完成3、已审核4、DEBUG9;默认0 - * 态*/ - @Excel(name = "任务状态", width = 15) + /** + * 任务状 + * 值:未发布0、已发布1、开发中2、已完成3、已审核(已撤回)4、DEBUG9;默认0 + * 态 + */ + @Excel(name = "任务状态", width = 15) @ApiModelProperty(value = "任务状态") @Dict(dicCode = "work_status") 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 = "发布时间") 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 = "开始时间") private java.util.Date startTime; - /**任务时长*/ - @Excel(name = "任务时长", width = 15) + /** + * 任务时长 + */ + @Excel(name = "任务时长", width = 15) @ApiModelProperty(value = "任务时长") 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 = "提交时间") private java.util.Date submitTime; - /**实际时长*/ - @Excel(name = "实际时长", width = 15) + /** + * 实际时长 + */ + @Excel(name = "实际时长", width = 15) @ApiModelProperty(value = "实际时长") private java.lang.Double realDuration; - /**功能状态*/ - @Excel(name = "功能状态", width = 15) + /** + * 功能状态 + */ + @Excel(name = "功能状态", width = 15) @ApiModelProperty(value = "功能状态") @Dict(dicCode = "status") private java.lang.Integer status; - /**版本状态*/ - @Excel(name = "版本状态", width = 15) + /** + * 版本状态 + */ + @Excel(name = "版本状态", width = 15) @ApiModelProperty(value = "版本状态") @Dict(dicCode = "verison_status") private java.lang.Integer verisonStatus; - /**版本号*/ - @Excel(name = "版本号", width = 15) + /** + * 版本号 + */ + @Excel(name = "版本号", width = 15) @ApiModelProperty(value = "版本号") private java.lang.Integer verison; } diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/modulex/service/impl/ModulexServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/modulex/service/impl/ModulexServiceImpl.java index b086793..bb91be8 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/modulex/service/impl/ModulexServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/modulex/service/impl/ModulexServiceImpl.java @@ -4,12 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.demo.functionx.entity.Functionx; 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.mapper.ModulexMapper; import org.jeecg.modules.modulex.service.IModulexService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import javax.annotation.Resource; import java.util.Date; @@ -32,6 +38,12 @@ public class ModulexServiceImpl extends ServiceImpl impl @Resource private ModulexMapper modulexMapper; + @Autowired + private IFunctionxService iFunctionxService; + + @Autowired + private IRulexService iRulexService; + /** * 得到最大的版本号 */ @@ -44,18 +56,19 @@ public class ModulexServiceImpl extends ServiceImpl impl * 发布:点击发布按钮,状态变成已发布, * 任务责任人(即开发者)可以操作开始、提交等功能; * 模块管理下属所有功能状态变为已发布。 + * * @param id modulex表的主键id */ @Override public Result fabu(String id) { Modulex byId = this.getById(id); - if (byId.getWorkStatus() != 0){ + if (byId.getWorkStatus() == 1) { return Result.error("当前功能已发布!!!"); - }else { + } else { byId.setWorkStatus(1); this.updateById(byId); //模块管理下属所有功能状态变为已发布 - this.handleStatus(id,1); + this.handleStatus(id, 1); return Result.OK("发布成功!!"); } } @@ -63,6 +76,7 @@ public class ModulexServiceImpl extends ServiceImpl impl /** * 开始:任务责任人(即开发者)使用的功能,点击开始按钮,状态变为开发中, * 表示任务开始,开始时间设置为当前时间。 + * * @param id modulex表的主键id */ @Override @@ -83,6 +97,7 @@ public class ModulexServiceImpl extends ServiceImpl impl * 提交:任务责任人(即开发者)使用的功能,点击提交按钮,表示任务完成,状态变为已提交, * 提交时间设置为当前时间,并自动计算实际时长。 * 模块管理下属所有功能状态变成已完成才能点击提交按钮。 + * * @param id modulex表的主键id */ @Override @@ -95,7 +110,7 @@ public class ModulexServiceImpl extends ServiceImpl impl byId.setSubmitTime(new Date()); this.updateById(byId); - this.handleStatus(id,3); + this.handleStatus(id, 3); return Result.OK("提交成功!!"); } @@ -103,9 +118,13 @@ public class ModulexServiceImpl extends ServiceImpl impl /** * 撤回:项目负责人(管理员)使用,点击撤回,状态变为开发中。 + * * @param id modulex表的主键id + *

+ * 问题:模块管理中撤回后,该模块的”功能“对应的所有任务状也做撤回操作,肯该功能所对应的“开发规则”的任务状态也做撤回操作 */ @Override + @Transactional(readOnly = false, rollbackFor = Exception.class) public Result chehui(String id) { Modulex byId = this.getById(id); if (byId.getWorkStatus() == 2) { @@ -113,12 +132,25 @@ public class ModulexServiceImpl extends ServiceImpl impl } byId.setWorkStatus(2); this.updateById(byId); + + //add by zhc 7.5 + this.doWorkStatusRollBack(id); 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内容。 * 审核:项目负责人(管理员)使用,点击完成,状态变为已审核。 + * * @param id modulex表的主键id */ @Override @@ -134,14 +166,14 @@ public class ModulexServiceImpl extends ServiceImpl impl @Override 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 的数据 List modulexs = this.list(new LambdaQueryWrapper().eq(Modulex::getPid, id)); - if (modulexs.size()>0){ + if (modulexs.size() > 0) { modulexs.forEach(modulex -> { modulex.setWorkStatus(a); this.updateById(modulex); @@ -149,7 +181,7 @@ public class ModulexServiceImpl extends ServiceImpl impl } //再查下属功能 List functionxs = functionxMapper.selectList(new LambdaQueryWrapper().eq(Functionx::getModuleId, id)); - if (functionxs.size()>0){ + if (functionxs.size() > 0) { functionxs.forEach(funcx -> { funcx.setWorkStatus(a); functionxMapper.updateById(funcx);