diff --git a/src/main/java/com/budwk/app/zhgh/democratic/appeal/controller/AppealQueryController.java b/src/main/java/com/budwk/app/zhgh/democratic/appeal/controller/AppealQueryController.java index 36f4b12..a7c106c 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/appeal/controller/AppealQueryController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/appeal/controller/AppealQueryController.java @@ -4,17 +4,23 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; +import com.budwk.app.flow.engine.FlowEngine; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.enums.ProcessInstanceStateEnum; import com.budwk.app.zhgh.democratic.appeal.service.AppealInfoService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; @IocBean @At("/platform/appeal/query") @@ -24,6 +30,8 @@ public class AppealQueryController { @Inject private AppealInfoService appealInfoService; + @Inject + private FlowEngine flowEngine; @At("") @Ok("beetl:/platform/zhgh/democratic/appeal/query/index.html") @@ -72,6 +80,20 @@ public class AppealQueryController { return Result.success(data); } + @At + @SaCheckPermission("appeal.query") + @Aop(TransAop.READ_COMMITTED) + @ApiOperation("删除申诉") + public Result delete(@Param("id") String id) { + ProcessInstance instance = flowEngine.processInstanceService().fetch(Cnd.where(ProcessInstance::getBusinessNo, "=", id)); + if (instance == null || !ProcessInstanceStateEnum.FINISHED.getCode().equals(instance.getState())) { + return Result.error("仅可删除已完成的申诉记录"); + } + appealInfoService.delete(id); + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + return Result.success(); + } + private Cnd buildCondition(String searchKeyword, String appealTypeId, String state, String unitId, String defendantUnitId, Integer year) { Cnd cnd = Cnd.NEW(); diff --git a/src/main/resources/views/platform/zhgh/democratic/appeal/mine/index.html b/src/main/resources/views/platform/zhgh/democratic/appeal/mine/index.html index 3bc00ca..f8054c4 100644 --- a/src/main/resources/views/platform/zhgh/democratic/appeal/mine/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/appeal/mine/index.html @@ -77,7 +77,7 @@ layout("/layouts/platform.html"){ - + - + @@ -257,6 +258,24 @@ layout("/layouts/platform.html"){ this.$refs.infoRef.onOpen(row) }) }, + canDelete(row) { + return this.$auth.hasRole('SYSADMIN') && row.state === '已办结' && Number(row.instanceState) === 20 + }, + onDelete(row) { + this.$confirm("您确定要删除吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + this.$axios.post("/platform/appeal/query/delete", {id: row.id}).then((res) => { + if (res.code === 0) { + this.$message.success(res.msg) + this.pageData() + this.loadStatistics() + } + }) + }) + }, doSearch() { this.pageNumber = 1 this.pageData()