diff --git a/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java b/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java index d0814f1..3ff7ecc 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java @@ -18,6 +18,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -32,7 +33,11 @@ import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletRequest; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Set; @IocBean @At("/flow/design") @@ -68,7 +73,7 @@ public class FlowDesignController { log.error("初始化AssignmentHandler失败: {}", aClass.getName()); } } - // 排序 按order + // 排序按 order,保证设计器下拉项展示稳定。 list.sort(Comparator.comparingInt(o -> o.getInt("order"))); ASSIGMENT_HANDLER_LIST = Collections.unmodifiableList(list); } @@ -88,7 +93,7 @@ public class FlowDesignController { log.error("初始化CandidateHandler失败: {}", aClass.getName()); } } - // 排序 按order + // 排序按 order,保证设计器下拉项展示稳定。 list.sort(Comparator.comparingInt(o -> o.getInt("order"))); CANDIDATE_HANDLER_LIST = Collections.unmodifiableList(list); } @@ -110,14 +115,40 @@ public class FlowDesignController { @ApiOperation("获取流程设计分页列表") @SaCheckPermission("flow.design") public Result pageData(PageForm pageForm, String displayName, String name, String category, Boolean deployed) { + Sql sql = Sqls.create(""" + SELECT + pd.* + FROM + wf_process_design pd + LEFT JOIN wf_process_category pc ON pc.id = pd.category + $condition + """); Cnd cnd = Cnd.NEW(); - cnd.and(Cnd.likeEX(ProcessDesign::getDisplayName, displayName)); - cnd.and(Cnd.likeEX(ProcessDesign::getName, name)); - cnd.andEX(ProcessDesign::getCategory, "=", category); - cnd.andEX(ProcessDesign::getIsDeployed, "=", deployed); + cnd.and(Cnd.likeEX("pd.displayName", displayName)); + cnd.and(Cnd.likeEX("pd.name", name)); + cnd.andEX("pd.category", "=", category); + cnd.andEX("pd.isDeployed", "=", deployed); + if ("sortNo".equals(pageForm.getPageOrderName())) { + if ("descending".equals(pageForm.getPageOrderBy())) { + cnd.desc("pd.sortNo"); + } else { + cnd.asc("pd.sortNo"); + } + } else if ("category".equals(pageForm.getPageOrderName())) { + if ("descending".equals(pageForm.getPageOrderBy())) { + cnd.desc("pc.name"); + } else { + cnd.asc("pc.name"); + } + } else { + // 默认按排序编码升序,编码一致时再按主键兜底。 + cnd.asc("pd.sortNo"); + } + cnd.asc("pd.id"); - Pagination pagination = processDesignService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); + sql.setCondition(cnd); + Pagination pagination = processDesignService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); } @@ -206,6 +237,17 @@ public class FlowDesignController { return Result.success(); } + @At + @ApiOperation("修改流程设计排序编码") + @SaCheckPermission("flow.design") + public Result updateSortNo(@Param("id") Long id, @Param("sortNo") Integer sortNo) { + if (id == null || sortNo == null || sortNo < 0) { + return Result.error("排序编码必须是非负整数"); + } + processDesignService.update(Chain.make("sortNo", sortNo), Cnd.where(ProcessDesign::getId, "=", id)); + return Result.success(); + } + @At @SaCheckLogin @ApiOperation("获取流程设计任务参与者处理类") @@ -213,22 +255,20 @@ public class FlowDesignController { return Result.success(ASSIGMENT_HANDLER_LIST); } - @At @SaCheckLogin - @ApiOperation("获取流程设计任务参与者处理类") + @ApiOperation("获取流程设计候选用户处理类") public Result candidateHandlerClass() { return Result.success(CANDIDATE_HANDLER_LIST); } - @At @SaCheckLogin @ApiOperation("获取流程设计任务参与者分页数据") public Result assigneePage(Integer pageNumber, Integer pageSize, String searchKeyword, @Param("userIds") String[] userIds) { Sql sql = Sqls.create("select id,loginname,username,unitName from vw_user $condition"); Cnd cnd = Cnd.NEW(); - if(StrUtil.isNotBlank(searchKeyword)) { + if (StrUtil.isNotBlank(searchKeyword)) { SqlExpressionGroup group = new SqlExpressionGroup(); group.orLike("username", searchKeyword); group.orLike("loginname", searchKeyword); diff --git a/src/main/java/com/budwk/app/flow/entity/ProcessDesign.java b/src/main/java/com/budwk/app/flow/entity/ProcessDesign.java index 065c04b..8d5a84f 100644 --- a/src/main/java/com/budwk/app/flow/entity/ProcessDesign.java +++ b/src/main/java/com/budwk/app/flow/entity/ProcessDesign.java @@ -48,11 +48,11 @@ public class ProcessDesign extends BaseModel { @Column private String h5InstanceUrl; - @Comment("电脑端发起地址") + @Comment("电脑端查看地址") @Column private String instanceViewUrl; - @Comment("手机端发起地址") + @Comment("手机端查看地址") @Column private String h5InstanceViewUrl; @@ -68,6 +68,11 @@ public class ProcessDesign extends BaseModel { @Column private Integer isDeployed; + @Comment("排序编码") + @Column + @Default("0") + private Integer sortNo; + @Comment("备注") @Column private String remark; diff --git a/src/main/java/com/budwk/app/sys/controller/SysMenuController.java b/src/main/java/com/budwk/app/sys/controller/SysMenuController.java index 811d9ca..110de49 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysMenuController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysMenuController.java @@ -411,6 +411,25 @@ public class SysMenuController { } } + @At + @Ok("json") + @SaCheckPermission("sys.manager.menu.edit") + public Object updateLocation(String id, Integer location) { + try { + if (StrUtil.isBlank(id) || location == null || location < 0) { + return Result.error("排序编码必须是非负整数"); + } + // 单独更新排序编码后同步清理缓存,保证菜单树立即按新顺序生效。 + sysMenuService.update(Chain.make("location", location), Cnd.where("id", "=", id)); + sysMenuService.clearCache(); + sysUserService.clearCache(); + sysRoleService.clearCache(); + return Result.success(); + } catch (Exception e) { + return Result.error(); + } + } + @At @Ok("json") @SaCheckPermission("sys.manager.menu") diff --git a/src/main/java/com/budwk/app/sys/controller/v4/SysV4ServController.java b/src/main/java/com/budwk/app/sys/controller/v4/SysV4ServController.java index 2483fb7..5d733d6 100644 --- a/src/main/java/com/budwk/app/sys/controller/v4/SysV4ServController.java +++ b/src/main/java/com/budwk/app/sys/controller/v4/SysV4ServController.java @@ -46,13 +46,14 @@ public class SysV4ServController { @ApiOperation("获取应用列表") public Result list(@Param("categoryId") String categoryId, @Param("letter") String letter, @Param("keyword") String keyword, HttpServletRequest req) { Sql sql = Sqls.create(""" - SELECT t.*,(select picIcon from wf_process_design where name = t.name) as picIcon + SELECT t.*, d.picIcon, d.sortNo FROM wf_process_define t INNER JOIN ( SELECT name, MAX(id) AS max_id FROM wf_process_define GROUP BY name ) sub ON t.name = sub.name AND t.id = sub.max_id + LEFT JOIN wf_process_design d ON d.name = t.name $condition """); Cnd cnd = Cnd.NEW(); @@ -61,10 +62,10 @@ public class SysV4ServController { } cnd.andEX("t.category", "=", categoryId); cnd.andEX("t.pinyinName", "=", letter); + cnd.asc("d.sortNo"); + cnd.asc("t.id"); sql.setCondition(cnd); List list = sysMenuService.listMap(sql); return Result.success(list); } - - } diff --git a/src/main/resources/views/platform/flow/design/index.html b/src/main/resources/views/platform/flow/design/index.html index d46055a..d2a3fd1 100644 --- a/src/main/resources/views/platform/flow/design/index.html +++ b/src/main/resources/views/platform/flow/design/index.html @@ -43,27 +43,37 @@ layout("/layouts/platform.html"){ - + + + + @@ -96,10 +106,10 @@ layout("/layouts/platform.html"){ - + - + { - console.log(event) if (event.data === "success") { this.$message.success("保存成功") this.designVisible = false @@ -182,7 +190,6 @@ layout("/layouts/platform.html"){ } } }, - onDeploy(row) { this.$confirm("部署会生成新的流程定义版本,确定部署吗?", "提示", { confirmButtonText: "确定", @@ -197,9 +204,8 @@ layout("/layouts/platform.html"){ }) }) }, - onRedeploy(row) { - this.$confirm("重新部署会覆盖最新版流程定义,确定重新部署吗?", "提示", { + this.$confirm("重新部署会覆盖最新版本流程定义,确定重新部署吗?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" @@ -211,9 +217,8 @@ layout("/layouts/platform.html"){ }) }) }, - onDelete(row) { - this.$confirm("您确定要删除吗", "提示", { + this.$confirm("您确定要删除吗?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" @@ -226,10 +231,8 @@ layout("/layouts/platform.html"){ }) }) }, - onView(row) { }, - listCategory() { this.$axios.post("/flow/category/list").then((res) => { if (res.code === 0) { @@ -237,6 +240,22 @@ layout("/layouts/platform.html"){ } }) }, + updateSortNo(row) { + const sortNo = Number(row.sortNo) + if (!Number.isInteger(sortNo) || sortNo < 0) { + this.$message.error("排序编码必须是非负整数") + return + } + $.post("/flow/design/updateSortNo", { + id: row.id, + sortNo: sortNo + }).then((res) => { + if (res.code === 0) { + this.$message.success(res.msg) + this.pageData() + } + }) + } }, created() { this.pageData() diff --git a/src/main/resources/views/platform/sys/menu/index.html b/src/main/resources/views/platform/sys/menu/index.html index f44e12f..55890c1 100644 --- a/src/main/resources/views/platform/sys/menu/index.html +++ b/src/main/resources/views/platform/sys/menu/index.html @@ -75,6 +75,19 @@ layout("/layouts/platform.html"){ + + +