From 2b2344beb3d835d68a38a4dd6cb398a082727cc8 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Thu, 12 Mar 2026 17:10:35 +0800 Subject: [PATCH 01/15] commit --- .../flow/controller/FlowDesignController.java | 39 +++ .../sys/services/impl/SysUserServiceImpl.java | 2 +- .../views/platform/flow/design/index.html | 4 + src/test/java/com/budwk/app/JugTest.java | 291 ------------------ src/test/java/com/budwk/app/Test.java | 50 --- 5 files changed, 44 insertions(+), 342 deletions(-) delete mode 100644 src/test/java/com/budwk/app/JugTest.java delete mode 100644 src/test/java/com/budwk/app/Test.java 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 ba7a7750..cfc9a412 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java @@ -12,6 +12,9 @@ import com.budwk.app.base.result.Result; import com.budwk.app.flow.engine.AssignmentHandler; import com.budwk.app.flow.engine.CandidateHandler; import com.budwk.app.flow.entity.ProcessDesign; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.entity.ProcessTaskActor; import com.budwk.app.flow.service.ProcessDesignService; import com.budwk.app.sys.services.SysUserService; import io.swagger.annotations.Api; @@ -106,6 +109,42 @@ public class FlowDesignController { request.setAttribute("id", request.getParameter("id")); } + @At + @ApiOperation("获取流程设计分页列表") + @SaCheckPermission("flow.design") + public void onUpdate(){ + + List tasks = dao.query(ProcessTask.class, Cnd.where("taskName", "=", "committee")); + List list = tasks.stream().map(ProcessTask::getId).toList(); + + List actorList = dao.query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "in", list)); + + List instanceList = dao.query(ProcessInstance.class, Cnd.where(ProcessInstance::getProcessDefineId, "=", 389)); + + for (ProcessTask task : tasks) { + task.setTaskName("personnelOffice"); + task.setDisplayName("人事处审核"); + task.setFormKey("/platform/proposal/personnelOffice"); + task.setH5FormKey("/platform/proposal/personnelOffice/h5"); + } + + for (ProcessTaskActor actor : actorList) { + actor.setActorId("a2e5874eb28e42e9811f1af4d4bcb5a5"); + actor.setActorAccount("001094"); + actor.setActorName("郑胜水"); + actor.setActorUnitName("人事处(党委教师工作部、人才工作办公室)"); + actor.setActorUnitId("1001"); + } + + for (ProcessInstance instance : instanceList) { + instance.setProcessDefineId(396L); + } + + dao.update(tasks); + dao.update(actorList); + dao.update(instanceList); + } + @At @ApiOperation("获取流程设计分页列表") @SaCheckPermission("flow.design") diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java index eb212ef0..d6a97a61 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java @@ -304,7 +304,7 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys String decodePwd = Base64Decoder.decodeStr(passowrd); String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt()); if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) { - if (!Globals.sso) { + if (Globals.sso) { throw new BaseException("用户名或者密码不正确"); } } diff --git a/src/main/resources/views/platform/flow/design/index.html b/src/main/resources/views/platform/flow/design/index.html index 0c5587e1..5eac1ea5 100644 --- a/src/main/resources/views/platform/flow/design/index.html +++ b/src/main/resources/views/platform/flow/design/index.html @@ -38,6 +38,7 @@ layout("/layouts/platform.html"){ 新增 + 更新 @@ -146,6 +147,9 @@ layout("/layouts/platform.html"){ } }, methods: { + onUpdate(){ + this.$axios.post(loc()+"/onUpdate") + }, onAdd() { this.formData = {} this.dialogVisible = true diff --git a/src/test/java/com/budwk/app/JugTest.java b/src/test/java/com/budwk/app/JugTest.java deleted file mode 100644 index 8721f878..00000000 --- a/src/test/java/com/budwk/app/JugTest.java +++ /dev/null @@ -1,291 +0,0 @@ -package com.budwk.app; - - -import cn.afterturn.easypoi.excel.ExcelImportUtil; -import cn.afterturn.easypoi.excel.annotation.Excel; -import cn.afterturn.easypoi.excel.entity.ImportParams; -import cn.hutool.core.codec.Base64; -import cn.hutool.core.io.FileUtil; -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.core.util.IdcardUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.crypto.digest.DigestUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpUtil; -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.budwk.app.base.utils.ManyAddOrRenewUtil; -import com.budwk.app.base.utils.PwdUtil; -import com.budwk.app.sys.models.*; -import com.budwk.app.sys.services.SysDictService; -import com.budwk.app.sys.services.SysUnitService; -import com.budwk.app.sys.services.SysUserService; -import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Data; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.nutz.boot.test.junit4.NbJUnit4Runner; -import org.nutz.dao.Chain; -import org.nutz.dao.Cnd; -import org.nutz.dao.Dao; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.json.Json; -import org.nutz.lang.Files; -import org.nutz.lang.Lang; -import org.nutz.lang.random.R; -import org.nutz.lang.util.NutMap; - -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; - -@IocBean -@RunWith(NbJUnit4Runner.class) -public class JugTest { - - @Inject - private SysDictService sysDictService; - - @Inject - private SysUserService sysUserService; - - @Inject - private SysUnitService sysUnitService; - - @Inject - private Dao dao; - - @Test - public void t0001() { - String s = """ - {"@odata.context":"$metadata#DS0005_1926887238437818371","value":[{"机构编码":"006","机构名称":"教务处(教育教学发展与评估中心合署)[创新创业教育办公室(中心)挂靠](下设现代教育技术中心)/现代教育技术中心","机构类别":"4","隶属机构":"100085","是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"100001","机构名称":"党委办公室(保密办公室合署)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100006","机构名称":"党委组织部(党校合署)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100010","机构名称":"机关与直属单位党委","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100014","机构名称":"党委宣传部","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100021","机构名称":"党委统战部(社会主义学院合署)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100025","机构名称":"纪委","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100029","机构名称":"校长办公室[法律事务中心(信访办公室合署)挂靠]","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100036","机构名称":"研究生院(党委研究生工作部合署)(下设招生办公室、学位办公室、培养办公室、教育管理与就业办公室、综合办公室)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100044","机构名称":"学科建设处(“双一流”建设办公室合署)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100047","机构名称":"科学技术研究院(应用研究院合署)(下设军工办公室)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100056","机构名称":"人文社会科学研究院","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100060","机构名称":"人力资源处(党委教师工作部合署)(下设人才服务与管理办公室)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100068","机构名称":"国际合作与交流处(港澳台事务办公室合署)(下设留学生管理办公室、孔子学院办公室)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100075","机构名称":"学生工作处(党委学生工作部、人民武装部合署)(下设心理健康教育中心)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100085","机构名称":"教务处(教育教学发展与评估中心合署)[创新创业教育办公室(中心)挂靠](下设现代教育技术中心)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100093","机构名称":"财务处(下设财务结算中心)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100100","机构名称":"审计处","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100106","机构名称":"保卫处(党委保卫部合署)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100112","机构名称":"后勤管理处(下设公用后勤服务保障中心)(校医院挂靠)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100148","机构名称":"基建处","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100158","机构名称":"发展规划处(党委发展规划部合署)(下设校地合作办公室)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100161","机构名称":"资产管理处(采购中心挂靠)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100167","机构名称":"信息化建设管理处(下设网络与信息中心)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100178","机构名称":"离退休工作处(离退休党工委合署)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100183","机构名称":"继续教育学院","机构类别":"10","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"直属单位(教辅机构)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100188","机构名称":"工会","机构类别":"11","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"群团组织","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100192","机构名称":"团委","机构类别":"11","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"群团组织","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100193","机构名称":"美育中心","机构类别":"10","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"直属单位(教辅机构)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100199","机构名称":"发展委员会(下设董事会及基金会工作办公室、校友工作办公室)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100203","机构名称":"档案馆","机构类别":"10","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"直属单位(教辅机构)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100204","机构名称":"博物馆","机构类别":"10","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"直属单位(教辅机构)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100205","机构名称":"灵岩融创区建设管理委员会办公室","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100218","机构名称":"图书馆","机构类别":"10","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"直属单位(教辅机构)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100234","机构名称":"图书馆(出版社有限责任公司)","机构类别":"6","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"附属单位","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100251","机构名称":"实验室与设备管理处(分析测试中心合署)","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100268","机构名称":"国际文化教育学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100276","机构名称":"文学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100286","机构名称":"学报编辑部(《中国美术教育》编辑部挂靠)","机构类别":"10","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"直属单位(教辅机构)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100296","机构名称":"外国语学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100324","机构名称":"历史文博学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100347","机构名称":"商学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100364","机构名称":"法学院(下设中国法治现代化研究院)","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100387","机构名称":"教育科学学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100401","机构名称":"心理学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100423","机构名称":"公共管理学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100439","机构名称":"新闻与传播学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100458","机构名称":"音乐学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100472","机构名称":"美术学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100492","机构名称":"体育科学学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100511","机构名称":"计算机与电子信息学院 人工智能学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100546","机构名称":"物理科学与技术学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100564","机构名称":"化学与材料科学学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100587","机构名称":"地理科学学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100605","机构名称":"生命科学学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100631","机构名称":"电气与自动化工程学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100646","机构名称":"能源与机械工程学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100658","机构名称":"金陵女子学院 社会学院 会计学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100678","机构名称":"强化培养学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100684","机构名称":"中北学院","机构类别":"6","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"附属单位","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100700","机构名称":"泰州学院","机构类别":"6","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"附属单位","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100744","机构名称":"附属实验学校","机构类别":"6","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"附属单位","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100749","机构名称":"数学科学学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100777","机构名称":"后勤管理处(资产经营有限责任公司)","机构类别":"6","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"附属单位","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100782","机构名称":"教师教育学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100788","机构名称":"校领导","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100791","机构名称":"博士后流动站","机构类别":"13","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"历史遗留机构","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100800","机构名称":"环境学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100801","机构名称":"马克思主义学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100802","机构名称":"海洋科学与工程学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100803","机构名称":"食品与制药工程学院","机构类别":"1","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"教学院系","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100804","机构名称":"随园校区办公室","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100805","机构名称":"紫金校区办公室","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100806","机构名称":"基础教育合作处","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100807","机构名称":"南京师范大学培训中心(江苏省高校师资培训中心合署)","机构类别":"10","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"直属单位(教辅机构)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"100808","机构名称":"教务处(教育教学发展与评估中心合署)[创新创业教育办公室(中心)挂靠](下设现代教育技术中心)/教务处","机构类别":"4","隶属机构":"100085","是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"100809","机构名称":"科学技术研究院(应用研究院合署)(下设军工办公室)/科学技术研究院","机构类别":"4","隶属机构":"100047","是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"100810","机构名称":"科学技术研究院(应用研究院合署)(下设军工办公室)/军工办公室","机构类别":"4","隶属机构":"100047","是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"100900","机构名称":"党委巡察工作办公室","机构类别":"4","隶属机构":null,"是否撤销_name":"否","是否撤销":"0","机构类别_name":"党务部门(含团委、工会)","更新时间":"2025-05-26T06:40:43.011Z"},{"机构编码":"101","机构名称":"入校后统一分配/辅导员","机构类别":null,"隶属机构":"100","是否撤销_name":"否","是否撤销":"0","机构类别_name":null,"更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"139801","机构名称":"后勤管理处(下设公用后勤服务保障中心)(校医院挂靠)/公用后勤服务保障中心","机构类别":null,"隶属机构":"100112","是否撤销_name":"否","是否撤销":"0","机构类别_name":null,"更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"139802","机构名称":"后勤管理处(下设公用后勤服务保障中心)(校医院挂靠)/后勤管理处","机构类别":null,"隶属机构":"100112","是否撤销_name":"否","是否撤销":"0","机构类别_name":null,"更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"139803","机构名称":"后勤管理处(下设公用后勤服务保障中心)(校医院挂靠)/校医院","机构类别":null,"隶属机构":"100112","是否撤销_name":"否","是否撤销":"0","机构类别_name":null,"更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"139804","机构名称":"法学院(下设中国法治现代化研究院)/法学院","机构类别":null,"隶属机构":"100364","是否撤销_name":"否","是否撤销":"0","机构类别_name":null,"更新时间":"2024-11-20T02:56:28.187Z"},{"机构编码":"139805","机构名称":"法学院(下设中国法治现代化研究院)/中国法治现代化研究院","机构类别":null,"隶属机构":"100364","是否撤销_name":"否","是否撤销":"0","机构类别_name":null,"更新时间":"2024-11-20T02:56:28.187Z"}]} - """; - - JSONObject entries = JSONUtil.parseObj(s); - JSONArray value = entries.getJSONArray("value"); - - List units = value.stream().map(item -> { - JSONObject jsonObject = (JSONObject) item; - Sys_unit sysUnit = new Sys_unit(); - sysUnit.setId(jsonObject.getStr("机构编码")); - sysUnit.setName(jsonObject.getStr("机构名称")); - sysUnit.setUnitcode(jsonObject.getStr("机构编码")); - sysUnit.setParentId(StrUtil.blankToDefault(jsonObject.getStr("隶属机构"), "1")); - return sysUnit; - }).toList(); - - dao.fastInsert(units); - } - - @Test - public void t003() { - String s = """ - "党政_副处调", - 专任教师, - 管理_免职, - 校办企业, - 党政_科员, - 专业技术人员, - 教辅_实验教学, - 管理_团委书记, - 管理_办事员, - 管理_学生辅导员, - 管理_院党委副书记, - 管理_本科生教务员, - 党政_正科职, - 党政_正处职, - 无, - 党政_副处职, - 党政_副厅职, - 管理_副院长, - 管理_科研秘书, - 管理_研究生教务员, - 工勤人员, - 管理_院党委书记, - 管理_专职组织员、人事秘书, - 教辅_工勤人员, - 党政_正处调, - 教辅_实验设备维护, - 管理_科研辅助人员, - 管理_办公室主任, - 教辅_图书资料员, - 党政_副科职, - 党政_秘书, - 管理_成教生教务员, - 管理_其他正科职, - 管理_正处调, - 管理_副处调, - 管理_管理, - 教辅_其他人员, - 管理_学科秘书, - 管理_机构秘书, - 党政_副省职, - 管理_院长, - 党政_正厅职, - 管理_科研副院长; - """; - String[] split = s.split(","); - - String parentId = "c78bb5c7bc264b928307508357dea4f0"; - - for (String string : split) { - Sys_dict dict = new Sys_dict(); - dict.setCode(string.trim()); - dict.setName(string.trim()); - dict.setHasChildren(false); - dict.setDisabled(false); - sysDictService.save(dict, parentId); - } - - - } - - @Test - public void t004() { - String appId = "1926887238437818370"; - String secret = "32df31fcf4fc43f9a647ee1f47134f36"; - - List allUsers = new ArrayList<>(); - int skip = 0; - int totalCount = 0; - boolean firstRequest = true; - - do { - long ts = System.currentTimeMillis(); - String sign = Base64.encode(DigestUtil.md5Hex(appId + secret + ts, CharsetUtil.CHARSET_UTF_8)); - - HttpRequest httpRequest = HttpUtil.createPost("https://sjzcpt.nnu.edu.cn/cdsp/data-api/v2/DS0040"); - httpRequest.header("Content-Type", "application/json"); - httpRequest.header("appId", appId); - httpRequest.header("timestamp", String.valueOf(ts)); - httpRequest.header("sign", sign); - - HashMap reqBody = new HashMap<>(); - reqBody.put("$count", true); - reqBody.put("$skip", skip); - reqBody.put("$top", 1000); - - httpRequest.body(JSONUtil.toJsonStr(reqBody)); - String resBody = httpRequest.execute().body(); - - JSONObject entries = JSONUtil.parseObj(resBody); - - if (firstRequest) { - totalCount = entries.getInt("@odata.count", 0); - firstRequest = false; - } - - JSONArray value = entries.getJSONArray("value"); - - if (!value.isEmpty()) { - List list = value.stream().map(item -> (JSONObject) item).toList(); - allUsers.addAll(list); - skip += list.size(); - } else { - break; - } - - } while (skip < totalCount); - - Files.write(new File("C:\\Users\\administrator\\Desktop\\博士后.txt"),allUsers); - System.out.println(allUsers.size()); - } - - @Test - public void userPwd(){ - List users = dao.query(Sys_user.class, Cnd.NEW()); - String pwd = "1"; - for (Sys_user user : users) { - user.setSalt(R.UU32()); - user.setPassword(PwdUtil.getPassword(pwd, user.getSalt())); - } - dao.update(users,"password|salt"); - } - - @Inject - private ManyAddOrRenewUtil manyAddOrRenewUtil; - - @Test - public void test11111(){ -// File file = new File("C:\\temp\\response.json"); -// -// JSONObject entries = JSONUtil.parseObj(FileUtil.readUtf8String(file)); -// -// JSONArray records = entries.getJSONArray("records"); -// List list = records.stream().map(item -> (JSONObject) item).toList(); -// -// // 工号集合 -// List loginNameList = list.stream().map(v -> v.getStr("rydm")).toList(); -//// Sql sql = Sqls.create("update sys_user set member = 1, welfareMember = 1 where loginname in (@loginNameList)") -//// .setParam("loginNameList", loginNameList); -//// dao.execute(sql); -// -// Sql sql = Sqls.create("select id from sys_user where loginname in (@loginNameList)").setParam("loginNameList", loginNameList); -// sql.setCallback(Sqls.callback.strList()); -// dao.execute(sql); -// List userIds = sql.getList(String.class); -// -// List roleList = userIds.stream().map(v -> { -// Sys_user_role userRole = new Sys_user_role(); -// userRole.setUserId(v); -// userRole.setRoleId("6d603b652abee584ba6274dc1fcee3bb"); -// return userRole; -// }).toList(); -// -// dao.clear(Sys_user_role.class, Cnd.where("userId", "in", userIds)); -// dao.insert(roleList); - - -// Sql sql = Sqls.create("select id from sys_user group by id"); -// sql.setCallback(Sqls.callback.strList()); -// dao.execute(sql); -// List userIds = sql.getList(String.class); -// List roleList = userIds.stream().map(v -> { -// Sys_user_role userRole = new Sys_user_role(); -// userRole.setUserId(v); -// userRole.setRoleId("65195ad8f52c4d7d8864624e583b801b"); -// return userRole; -// }).toList(); -// dao.insert(roleList); - - List list = dao.query(Sys_user.class, Cnd.NEW()); - - for (Sys_user v : list) { - if (StrUtil.isNotBlank(v.getIdCard())) { - if (v.getIdCard().length() == 18 || v.getIdCard().length() == 15) { - try { - int genderByIdCard = IdcardUtil.getGenderByIdCard(v.getIdCard()); - v.setSex(genderByIdCard == 1 ? "男" : "女"); - } catch (Exception e) { - e.printStackTrace(); - v.setSex(null); - } - } - } - } - - dao.update(list, "sex"); - - } -} - diff --git a/src/test/java/com/budwk/app/Test.java b/src/test/java/com/budwk/app/Test.java deleted file mode 100644 index 01b42e93..00000000 --- a/src/test/java/com/budwk/app/Test.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.budwk.app; - - -import cn.hutool.core.codec.Base64; -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.crypto.digest.DigestUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpUtil; -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.budwk.app.base.sms.impl.njupt.SmsNjuptServiceImpl; - -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.List; - -public class Test { - - public static void main(String[] args) { - String appId = "1926887238437818370"; - String secret = "32df31fcf4fc43f9a647ee1f47134f36"; - long ts = System.currentTimeMillis(); - - String sign = Base64.encode(DigestUtil.md5Hex(appId + secret + ts, CharsetUtil.CHARSET_UTF_8)); - - HttpRequest httpRequest = HttpUtil.createPost("https://sjzcpt.nnu.edu.cn/cdsp/data-api/v2/DS0005"); - httpRequest.header("Content-Type", "application/json"); - httpRequest.header("appId", appId); - httpRequest.header("timestamp", String.valueOf(ts)); - httpRequest.header("sign", sign); - httpRequest.body("{}"); - String body = httpRequest.execute().body(); - System.out.println(body); - -// JSONObject entries = JSONUtil.parseObj(body); -// JSONArray value = entries.getJSONArray("value"); -// -// for (Object o : value) { -// JSONObject jsonObject = (JSONObject) o; -// } - - - - } - - - -} From c4a5872484851713e87fc98c34d00d0a5d0a8ca6 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Thu, 12 Mar 2026 17:49:25 +0800 Subject: [PATCH 02/15] commit --- .../flow/controller/FlowDesignController.java | 39 ---- .../app/sys/controller/SysMenuController.java | 15 +- .../views/platform/flow/design/index.html | 4 - .../views/platform/sys/menu/index.html | 200 +++++++++--------- 4 files changed, 107 insertions(+), 151 deletions(-) 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 cfc9a412..ba7a7750 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java @@ -12,9 +12,6 @@ import com.budwk.app.base.result.Result; import com.budwk.app.flow.engine.AssignmentHandler; import com.budwk.app.flow.engine.CandidateHandler; import com.budwk.app.flow.entity.ProcessDesign; -import com.budwk.app.flow.entity.ProcessInstance; -import com.budwk.app.flow.entity.ProcessTask; -import com.budwk.app.flow.entity.ProcessTaskActor; import com.budwk.app.flow.service.ProcessDesignService; import com.budwk.app.sys.services.SysUserService; import io.swagger.annotations.Api; @@ -109,42 +106,6 @@ public class FlowDesignController { request.setAttribute("id", request.getParameter("id")); } - @At - @ApiOperation("获取流程设计分页列表") - @SaCheckPermission("flow.design") - public void onUpdate(){ - - List tasks = dao.query(ProcessTask.class, Cnd.where("taskName", "=", "committee")); - List list = tasks.stream().map(ProcessTask::getId).toList(); - - List actorList = dao.query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "in", list)); - - List instanceList = dao.query(ProcessInstance.class, Cnd.where(ProcessInstance::getProcessDefineId, "=", 389)); - - for (ProcessTask task : tasks) { - task.setTaskName("personnelOffice"); - task.setDisplayName("人事处审核"); - task.setFormKey("/platform/proposal/personnelOffice"); - task.setH5FormKey("/platform/proposal/personnelOffice/h5"); - } - - for (ProcessTaskActor actor : actorList) { - actor.setActorId("a2e5874eb28e42e9811f1af4d4bcb5a5"); - actor.setActorAccount("001094"); - actor.setActorName("郑胜水"); - actor.setActorUnitName("人事处(党委教师工作部、人才工作办公室)"); - actor.setActorUnitId("1001"); - } - - for (ProcessInstance instance : instanceList) { - instance.setProcessDefineId(396L); - } - - dao.update(tasks); - dao.update(actorList); - dao.update(instanceList); - } - @At @ApiOperation("获取流程设计分页列表") @SaCheckPermission("flow.design") 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 2d893b7c..24275580 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysMenuController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysMenuController.java @@ -38,7 +38,6 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; -import java.util.Objects; @IocBean @At("/platform/sys/menu") @@ -391,11 +390,11 @@ public class SysMenuController { @At @Ok("json") @SaCheckPermission("sys.manager.menu.edit") - public Object sortDo(@Param("ids") String ids, HttpServletRequest req) { + public Object sortDo(@Param("ids") String ids, @Param("platform") String platform, HttpServletRequest req) { try { String[] menuIds = StringUtils.split(ids, ","); int i = 0; - sysMenuService.execute(Sqls.create("update sys_menu set location=0")); + sysMenuService.execute(Sqls.create("update sys_menu set location=0 where platform = '%s'".formatted(platform))); for (String s : menuIds) { if (!Strings.isBlank(s)) { sysMenuService.update(org.nutz.dao.Chain.make("location", i), Cnd.where("id", "=", s)); @@ -425,11 +424,11 @@ public class SysMenuController { @SaCheckPermission("sys.manager.menu") @ApiOperation("更新首页推荐应用或服务") public Result updateRecommendSetting(@Param("menuIds") String[] menuIds, String platform, String type) { - String column = ""; - switch (type) { - case "app" -> column = "isRecommendApp"; - case "service" -> column = "isRecommendService"; - } + String column = ""; + switch (type) { + case "app" -> column = "isRecommendApp"; + case "service" -> column = "isRecommendService"; + } sysMenuService.update(Chain.make(column, 0), Cnd.where("id", "is not", null).and("platform", "=", platform)); if (ArrayUtil.isNotEmpty(menuIds)) { sysMenuService.update(Chain.make(column, 1), Cnd.where("id", "in", menuIds).and("platform", "=", platform)); diff --git a/src/main/resources/views/platform/flow/design/index.html b/src/main/resources/views/platform/flow/design/index.html index 5eac1ea5..0c5587e1 100644 --- a/src/main/resources/views/platform/flow/design/index.html +++ b/src/main/resources/views/platform/flow/design/index.html @@ -38,7 +38,6 @@ layout("/layouts/platform.html"){ 新增 - 更新 @@ -147,9 +146,6 @@ layout("/layouts/platform.html"){ } }, methods: { - onUpdate(){ - this.$axios.post(loc()+"/onUpdate") - }, onAdd() { this.formData = {} this.dialogVisible = true diff --git a/src/main/resources/views/platform/sys/menu/index.html b/src/main/resources/views/platform/sys/menu/index.html index 286cb6fb..4b8e9d61 100644 --- a/src/main/resources/views/platform/sys/menu/index.html +++ b/src/main/resources/views/platform/sys/menu/index.html @@ -2,25 +2,25 @@ layout("/layouts/platform.html"){ #-->
@@ -52,17 +52,17 @@ layout("/layouts/platform.html"){ @@ -124,13 +124,13 @@ layout("/layouts/platform.html"){ - -
    -
  • 新建菜单
  • -
  • 添加子菜单
  • -
  • 编辑
  • -
  • 删除
  • -
+ +
    +
  • 新建菜单
  • +
  • 添加子菜单
  • +
  • 编辑
  • +
  • 删除
  • +
@@ -140,7 +140,7 @@ layout("/layouts/platform.html"){
- + diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/unionPush/index.html b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/unionPush/index.html new file mode 100644 index 00000000..e3199c39 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/unionPush/index.html @@ -0,0 +1,196 @@ + + +
+ + + + + + + + + + + + + + + + + + + + 委员推选 + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/unionPush/pushFormalDialog.js b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/unionPush/pushFormalDialog.js new file mode 100644 index 00000000..5b85ab3e --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/unionPush/pushFormalDialog.js @@ -0,0 +1,104 @@ +const UNION_PUSH_FORMAL_DIALOG = { + template: /*language=HTML*/ ` +
+ + + +
+
+
{{ option.userName }} - {{ option.loginName + }} - {{option.unitName}} - {{option.unionName}} +
+
+ + {{option.sex}} + + {{ option.age }}岁 + {{ option.professionalTitle }} +
+
+
+
+ + 推选名额:{{quotaCount}}个 + + 取 消 + 确 定 + + +
+
+ `, + data() { + return { + dialogVisible: false, + userValue: [], + userData: [], + rightChecked: [], + attendanceRightChecked: [], + teacherMeetId: null, + quotaCount: 0 + } + }, + methods: { + async onOpen(teacherMeetId) { + + this.teacherMeetId = teacherMeetId + this.userValue = [] + this.userData = [] + const { + code, + msg, + data + } = await this.$axios.post('/platform/executiveCommittee/unionPush/getUnionUser', {teacherMeetId: teacherMeetId}) + if (code === 0) { + data.userData.forEach(v => { + this.userData.push({userId: v.userId, ...v}) + }) + this.quotaCount = data.quotaCount + this.dialogVisible = true + } else { + this.$message.error(msg) + } + }, + filterMethod(query, item) { + return item.userName.indexOf(query) > -1 + }, + async onConfirm() { + const { + code, + msg + } = await this.$axios.post('/platform/executiveCommittee/unionPush/addPush', { + userValue: JSON.stringify(this.userValue), + teacherMeetId: this.teacherMeetId + }) + if (code === 0) { + this.dialogVisible = false + this.$message.success(msg) + this.$emit('refresh') + } else { + this.$message.error(msg) + } + } + }, + style: /*language=CSS*/ ` + + ` +} diff --git a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html index cc4946fb..1dda33c5 100644 --- a/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html +++ b/src/main/resources/views/platform/zhgh/democratic/teachercongress/delegate/push/dwSjAudit.html @@ -231,7 +231,6 @@ layout("/layouts/platform.html"){ } this.$refs.auditInfoRef.onOpen(row) }) - }, onView(row) { this.$refs.guava.edit(() => { From 9ecffaa91ccd673cde75dc5cd51e6d8a5eb8a227 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Fri, 13 Mar 2026 17:39:30 +0800 Subject: [PATCH 09/15] commit --- src/main/resources/db/quartz/oracle.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/quartz/oracle.sql b/src/main/resources/db/quartz/oracle.sql index 723f6971..2529be7f 100644 --- a/src/main/resources/db/quartz/oracle.sql +++ b/src/main/resources/db/quartz/oracle.sql @@ -59,4 +59,4 @@ create index qz_ft_jg on sys_qrtz_fired_triggers(SCHED_NAME,JOB_GROUP) /*QUARTZ_52*/ create index qz_ft_t_g on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) /*QUARTZ_53*/ -create index qz_ft_tg on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP) \ No newline at end of file +create index qz_ft_tg on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP) From 73acd3fe434269bca6db32ac417e2ece4a1c781d Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Fri, 13 Mar 2026 17:39:34 +0800 Subject: [PATCH 10/15] commit --- src/main/resources/db/quartz/dm.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/quartz/dm.sql b/src/main/resources/db/quartz/dm.sql index 723f6971..2529be7f 100644 --- a/src/main/resources/db/quartz/dm.sql +++ b/src/main/resources/db/quartz/dm.sql @@ -59,4 +59,4 @@ create index qz_ft_jg on sys_qrtz_fired_triggers(SCHED_NAME,JOB_GROUP) /*QUARTZ_52*/ create index qz_ft_t_g on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) /*QUARTZ_53*/ -create index qz_ft_tg on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP) \ No newline at end of file +create index qz_ft_tg on sys_qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP) From e2984a0bbbb6c60d86231599450ed5035a7c2e1b Mon Sep 17 00:00:00 2001 From: = <=> Date: Mon, 16 Mar 2026 10:52:47 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E6=95=99=E4=BB=A3=E4=BC=9A=E6=84=8F?= =?UTF-8?q?=E8=A7=81=EF=BC=8C=E5=8F=AF=E4=BB=A5=E6=9B=BF=E5=88=AB=E4=BA=BA?= =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../opinion/controller/transact/OpinionWriteController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/budwk/app/zhgh/democratic/opinion/controller/transact/OpinionWriteController.java b/src/main/java/com/budwk/app/zhgh/democratic/opinion/controller/transact/OpinionWriteController.java index 235addd2..8c001d76 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/opinion/controller/transact/OpinionWriteController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/opinion/controller/transact/OpinionWriteController.java @@ -94,7 +94,7 @@ public class OpinionWriteController { args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); args.set(FlowConst.FORM_DATA, opinionInfo); - ProcessInstance instance = flowEngine.startProcessInstanceByKey("JDHYJ", opinionInfo.getId(), opinionInfo.getCreateUserId(), args); + ProcessInstance instance = flowEngine.startProcessInstanceByKey("JDHYJ", opinionInfo.getId(), SecurityUtil.getUserId(), args); // 自动完成第一个申请任务 List doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null); From 3b00ae10728fab33c07d4ea646b6b693065ab6b0 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Tue, 17 Mar 2026 16:04:52 +0800 Subject: [PATCH 12/15] commit --- .../budwk/app/base/constant/RoleConstant.java | 1 + .../app/flow/service/FlowCommonService.java | 54 +- .../app/flow/service/ProcessTaskService.java | 9 + .../service/impl/ProcessTaskServiceImpl.java | 10 + ...eCommitteeDelegationTwoPushController.java | 35 +- .../ExecutiveCommitteeMemberController.java | 2 +- .../ExecutiveCommitteePushController.java | 173 ++---- .../ExecutiveCommitteeMemberServiceImpl.java | 7 +- ...ProposalCommitteeFilingUnitController.java | 232 ++++--- .../ProposalPersonnelOfficeController.java | 121 ---- .../proposalPersonnelOfficeAdminHandler.java | 46 ++ .../delegationTwoPush/index.html | 25 +- .../delegationTwoPush/twoPushFormalDialog.js | 24 +- .../executiveCommitteeMember/index.html | 6 +- .../preparatoryGroupPush/index.html | 23 +- .../preparatoryGroupPush/pushFormalDialog.js | 2 +- .../zhgh/democratic/proposal/common/info.js | 3 +- .../transact/committeeFiling/index.html | 4 +- .../transact/committeeFilingUnit/index.html | 580 ++++++++---------- .../transact/personnelOffice/index.html | 210 ------- .../transact/personnelOffice/index.html | 190 ------ 21 files changed, 665 insertions(+), 1092 deletions(-) delete mode 100644 src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java delete mode 100644 src/main/resources/views/platform/zhgh/democratic/proposal/transact/personnelOffice/index.html delete mode 100644 src/main/resources/views/platform/zhghh5/democratic/proposal/transact/personnelOffice/index.html diff --git a/src/main/java/com/budwk/app/base/constant/RoleConstant.java b/src/main/java/com/budwk/app/base/constant/RoleConstant.java index 2a10d21c..a7d0a250 100644 --- a/src/main/java/com/budwk/app/base/constant/RoleConstant.java +++ b/src/main/java/com/budwk/app/base/constant/RoleConstant.java @@ -66,6 +66,7 @@ RoleConstant { PROPOSAL_BRANCH_SCHOOL_LEADER("提案分管校领导"), PROPOSAL_UNIT_LEADER("提案承办单位领导"), PROPOSAL_UNIT_PROXY("提案承办单位代理答复人"), + PROPOSAL_PERSONNEL_OFFICE_ADMIN("提案人事处管理员"), WORKER_CONGRESS_DELEGATE_FORMAL("工代会正式代表"), WORKER_CONGRESS_DELEGATE_ATTENDANCE("工代会列席代表"), diff --git a/src/main/java/com/budwk/app/flow/service/FlowCommonService.java b/src/main/java/com/budwk/app/flow/service/FlowCommonService.java index 6ba1f693..31f866bb 100644 --- a/src/main/java/com/budwk/app/flow/service/FlowCommonService.java +++ b/src/main/java/com/budwk/app/flow/service/FlowCommonService.java @@ -2,18 +2,32 @@ package com.budwk.app.flow.service; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import com.budwk.app.base.result.Result; import com.budwk.app.flow.constant.FlowConst; import com.budwk.app.flow.engine.FlowEngine; -import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; +import com.budwk.app.flow.engine.event.ProcessEvent; +import com.budwk.app.flow.engine.event.ProcessPublisher; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.enums.*; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +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.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import java.util.List; + @IocBean public class FlowCommonService { @Inject private FlowEngine flowEngine; + @Inject + private Dao dao; /** * 执行任务 @@ -65,4 +79,42 @@ public class FlowCommonService { } } + + + @Aop(TransAop.READ_COMMITTED) + public Result revokeTask(Long taskId) { + // 自己任务 + ProcessTask selfTask = dao.fetch(ProcessTask.class, taskId); + selfTask.setTaskState(ProcessTaskStateEnum.DOING.getCode()); + + // 撤销任务 + List taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getTaskParentId, "=", taskId)); + for (ProcessTask task : taskList) { + task.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode()); + dao.update(task); + } + // 会签并行任务 撤销后续任务 + if (selfTask.getPerformType().equals(ProcessTaskPerformTypeEnum.COUNTERSIGN.getCode())) { + List doingTasks = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.DOING.getCode()) + .and(ProcessTask::getProcessInstanceId, "=", selfTask.getProcessInstanceId())); + for (ProcessTask doingTask : doingTasks) { + doingTask.setTaskState(ProcessTaskStateEnum.WITHDRAW.getCode()); + dao.update(doingTask); + } + } + + // 激活 + dao.update(selfTask); + + // 流程激活 + dao.update(ProcessInstance.class, Chain.make("state", ProcessInstanceStateEnum.DOING.getCode()),Cnd.where(ProcessInstance::getId, "=", selfTask.getProcessInstanceId())); + + // 发送任务撤回事件 确保上面执行成功 + for (ProcessTask task : taskList) { + ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_REVOKE).sourceId(task.getId()).build()); + } + + return Result.success(); + } + } diff --git a/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java b/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java index 44b298a9..3f51ce85 100644 --- a/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java +++ b/src/main/java/com/budwk/app/flow/service/ProcessTaskService.java @@ -211,4 +211,13 @@ public interface ProcessTaskService extends BaseService { */ List getDoingTaskByBizIdTaskName(List bizIds, String taskName); + /** + * 获取已结束的任务 + * + * @param bizIds 业务ID + * @param taskName 任务名称 + * @return + */ + List getDoneTaskByBizIdTaskName(List bizIds, String taskName); + } diff --git a/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java b/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java index 95f14c74..0398eb5b 100644 --- a/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java +++ b/src/main/java/com/budwk/app/flow/service/impl/ProcessTaskServiceImpl.java @@ -490,6 +490,16 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl impleme } + @Override + public List getDoneTaskByBizIdTaskName(List bizIds, String taskName) { + List instances = dao().query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", bizIds)); + List instanceIds = instances.stream().map(ProcessInstance::getId).toList(); + List tasks = dao().query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", instanceIds) + .and(ProcessTask::getTaskName, "=", taskName) + .and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())); + return tasks; + } + @Override public List getDoingTaskByBizIdTaskName(List bizIds, String taskName) { List instances = dao().query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", bizIds)); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java index eb096aba..7cc99cc1 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeDelegationTwoPushController.java @@ -36,7 +36,7 @@ import java.util.stream.Collectors; /** * @author zhf * @date 2025/6/23 15:25 - * @description 分工会二次推选 + * @description 候选人录入 */ @At("/platform/executiveCommittee/delegationTwoPush") @Ok("json:full") @@ -62,7 +62,8 @@ public class ExecutiveCommitteeDelegationTwoPushController { public Result pageData(PageForm pageForm, String teacherMeetId, String delegationId, - String unionId) { + String unionId, + String roleCode) { Sql sql = Sqls.create(""" SELECT t1.*, @@ -86,9 +87,9 @@ public class ExecutiveCommitteeDelegationTwoPushController { $condition """); Cnd cnd = Cnd.NEW(); - cnd.andEX("t1.pushUserId", "=", SecurityUtil.getUserId()); cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); cnd.andEX("t2.delegationId", "=", delegationId); + cnd.andEX("t1.roleCode", "=", roleCode); if (StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { @@ -109,9 +110,9 @@ public class ExecutiveCommitteeDelegationTwoPushController { @At @SaCheckPermission("executiveCommittee.delegationTwoPush") - @SLog(type = "执委会推选-分工会二次推选", tag = "查询可以二次推选的名单", param = true, result = true) + @SLog(type = "执委会推选-候选人录入", tag = "查询可以二次推选的名单", param = true, result = true) public Result getDelegationUser(String teacherMeetId) { - if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || + /* if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()))) { return Result.error("没有权限,只有分工会主席才能推选"); @@ -126,10 +127,9 @@ public class ExecutiveCommitteeDelegationTwoPushController { } if (config.getSecondEndTime().getTime() < System.currentTimeMillis()) { return Result.error("二次预选已结束"); - } + }*/ List userValue = dao.query(ExecutiveCommitteeTwoPush.class, - Cnd.where("teacherMeetId", "=", teacherMeetId) - .and("pushUserId", "=", SecurityUtil.getUserId())); + Cnd.where("teacherMeetId", "=", teacherMeetId)); List userIds = userValue.stream().map(v -> v.getUserId()).collect(Collectors.toList()); @@ -151,20 +151,20 @@ public class ExecutiveCommitteeDelegationTwoPushController { Cnd cnd = Cnd.NEW(); cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); cnd.andEX("t1.userId", "not in", userIds); - cnd.andEX("t1.userId", "!=", SecurityUtil.getUserId()); sql.setCondition(cnd); List userData = baseService.listMap(sql); - return Result.success(Map.of("userData", userData, "userValue", userValue, "committeeQuotaCount", config.getCommitteeQuotaCount())); + return Result.success(Map.of("userData", userData, "userValue", userValue, "committeeQuotaCount",0)); } @At @SaCheckPermission("executiveCommittee.delegationTwoPush") @ApiOperation("推选委员") - @SLog(tag = "执委会推选-分工会二次推选", msg = "推选委员") + @SLog(tag = "执委会推选-候选人录入", msg = "推选委员") public Result addOnePush(@Param("userValue") String[] userValue, - String teacherMeetId) { + String teacherMeetId, + String roleCode) { try { - if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || + /* if (!(StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()))) { return Result.error("没有权限,只有分工会主席才能推选"); @@ -187,7 +187,7 @@ public class ExecutiveCommitteeDelegationTwoPushController { if (dbCount + userValue.length > config.getCommitteeQuotaCount()) { return Result.error("推选人数限制" + config.getCommitteeQuotaCount() + "人"); } - +*/ List dbList = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", teacherMeetId) .andEX(Teacher_congress_delegate::getUserId, "in", userValue)); @@ -206,6 +206,7 @@ public class ExecutiveCommitteeDelegationTwoPushController { twoPush.setPushUserName(SecurityUtil.getUserUsername()); twoPush.setPushLoginName(SecurityUtil.getUserLoginname()); twoPush.setTeacherMeetId(teacherMeetId); + twoPush.setRoleCode(roleCode); list.add(twoPush); } dao.insert(list); @@ -219,16 +220,16 @@ public class ExecutiveCommitteeDelegationTwoPushController { @At @ApiOperation("删除推选人员") @SaCheckPermission("executiveCommittee.delegationTwoPush") - @SLog(tag = "执委会推选-分工会二次推选", msg = "删除推选人员") + @SLog(tag = "执委会推选-候选人录入", msg = "删除推选人员") public Result doDelete(@Valid String id, @Valid String teacherMeetId) { ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, Cnd.where("teacherMeetId", "=", teacherMeetId)); if (ObjectUtil.isEmpty(config)) { return Result.error("请先配置基础信息"); } - if (config.getSecondEndTime().getTime() < System.currentTimeMillis()) { + /* if (config.getSecondEndTime().getTime() < System.currentTimeMillis()) { return Result.error("二次预选已结束不能删除!"); - } + }*/ int num = dao.clear(ExecutiveCommitteeTwoPush.class, Cnd.where("id", "=", id)); return num >= 0 ? Result.success() : Result.error(); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java index 12b4a8a3..6daa2bc1 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeMemberController.java @@ -113,7 +113,7 @@ public class ExecutiveCommitteeMemberController { entityList.add(new ExcelExportEntity("联系方式", "mobile", 20)); entityList.add(new ExcelExportEntity("所属单位", "unitName", 20)); entityList.add(new ExcelExportEntity("所属代表团", "delegationName", 20)); - entityList.add(new ExcelExportEntity("票数", "pushCount", 20)); + entityList.add(new ExcelExportEntity("委员类别", "addTypeName", 20)); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("委员会预选名单.xlsx", "UTF-8")); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java index 73a754ae..594c45e8 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java @@ -1,21 +1,22 @@ package com.budwk.app.zhgh.democratic.executiveCommittee.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import cn.hutool.core.date.DateUtil; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.pinyin.PinyinUtil; import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.democratic.executiveCommittee.models.ExecutiveCommitteeConfig; -import com.budwk.app.zhgh.democratic.executiveCommittee.models.ExecutiveCommitteeOnePush; +import com.budwk.app.zhgh.democratic.executiveCommittee.models.ExecutiveCommitteeTwoPush; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -29,10 +30,8 @@ import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import javax.validation.Valid; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @author zhf @@ -43,7 +42,7 @@ import java.util.stream.Collectors; @At("/platform/executiveCommittee/preparatoryGroupPush") @Ok("json:full") @Slf4j -@Api(tags = "执委会推选-筹备组推选") +@Api(tags = "执委会推选-正式委员录入") public class ExecutiveCommitteePushController { @Inject @@ -63,38 +62,49 @@ public class ExecutiveCommitteePushController { public Result pageData(PageForm pageForm, String teacherMeetId, String delegationId, - String unionId) { + String unionId, + String roleCode) { Sql sql = Sqls.create(""" - SELECT + SELECT t1.*, - t2.name AS unitName, - t3.name unionName, - t4.sex, + t2.loginName, + t2.userName, + t3.name AS unitName, + t4.name unionName, + t5.sex, TIMESTAMPDIFF( YEAR, - t4.birthday, + t5.birthday, CURDATE()) AS age, - t5.name AS delegationName + t6.name AS delegationName FROM - `executive_committee_one_push` t1 - LEFT JOIN sys_unit t2 ON t1.unitId = t2.id - LEFT JOIN `sys_union` t3 ON t3.id = t2.unionid - LEFT JOIN `vw_user` t4 ON t4.id = t1.userId - LEFT JOIN teacher_congress_delegation t5 ON t5.id = t1.delegationId + `executive_committee_two_push` t1 + LEFT JOIN executive_committee_one_push t2 on t2.userId=t1.userId and t2.teacherMeetId=t1.teacherMeetId + LEFT JOIN sys_unit t3 ON t2.unitId = t3.id + LEFT JOIN `sys_union` t4 ON t4.id = t3.unionid + LEFT JOIN `vw_user` t5 ON t5.id = t1.userId + LEFT JOIN teacher_congress_delegation t6 ON t6.id = t2.delegationId $condition """); Cnd cnd = Cnd.NEW(); cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); - cnd.andEX("t1.delegationId", "=", delegationId); - cnd.andEX("t3.id", "=", unionId); - cnd.andEX("t1.addType", "=", 2); + cnd.andEX("t2.delegationId", "=", delegationId); + cnd.andEX("t1.roleCode", "=", roleCode); + cnd.andEX("t1.isFormal", "=", true); + if (StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || + StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || + StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + cnd.andEX("t4.id", "=", unionId); + } else { + cnd.andEX("t4.id", "=", SecurityUtil.getUnionId()); + } if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { SqlExpressionGroup group = new SqlExpressionGroup(); - group.orLike("t1.userName", pageForm.getSearchKeyword()); - group.orLike("t1.loginName", pageForm.getSearchKeyword()); + group.orLike("t2.userName", pageForm.getSearchKeyword()); + group.orLike("t2.loginName", pageForm.getSearchKeyword()); cnd.and(group); } - cnd.asc("t5.code").asc("t1.firstLetter"); + cnd.asc("t6.code").asc("t2.firstLetter"); sql.setCondition(cnd); return Result.success(baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql)); } @@ -104,93 +114,53 @@ public class ExecutiveCommitteePushController { @SaCheckPermission("executiveCommittee.preparatoryGroupPush") @ApiOperation("查询可以推选委员和已经推选的人员") public Result getDelegationUser(String teacherMeetId) { - List userValue = dao.query(ExecutiveCommitteeOnePush.class, - Cnd.where("teacherMeetId", "=", teacherMeetId) - .and("addType", "=", 2)); - List onePushList = dao.query(ExecutiveCommitteeOnePush.class, Cnd.NEW()); - List userIds = onePushList.stream().map(ExecutiveCommitteeOnePush::getUserId).collect(Collectors.toList()); - ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, - Cnd.where("teacherMeetId", "=", teacherMeetId)); - Cnd cnd = Cnd.NEW(); - cnd.andEX("db.sessionId", "=", teacherMeetId); - cnd.andEX("db.userId", "not in", userIds); - cnd.andEX("db.userId", "!=", SecurityUtil.getUserId()); + List twoPushList = dao.query(ExecutiveCommitteeTwoPush.class, + Cnd.where("teacherMeetId", "=", teacherMeetId).and(ExecutiveCommitteeTwoPush::getRoleCode, "is not", null)); + + List userValue = twoPushList.stream().filter(ExecutiveCommitteeTwoPush::getIsFormal).toList(); + List userIds = userValue.stream().map(ExecutiveCommitteeTwoPush::getUserId).toList(); Sql sql = Sqls.create(""" - SELECT - db.*, - u.professionalTitle, - u.professionalLevel, - TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) AS age + SELECT + t2.id userId, + t2.username userName, + t2.loginname loginName, + t2.unitName, + t2.sex, + t2.professionalTitle, + t2.professionalLevel, + t1.roleCode, + TIMESTAMPDIFF( + YEAR, + t2.birthday, + CURDATE()) age FROM - teacher_congress_delegate db - LEFT JOIN `vw_user` u ON db.userId = u.id + executive_committee_two_push t1 + LEFT JOIN `vw_user` t2 ON t1.userId = t2.id $condition """); + Cnd cnd = Cnd.NEW(); + cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); + cnd.andEX("t1.userId", "not in", userIds); sql.setCondition(cnd); List userData = baseService.listMap(sql); - return Result.success(Map.of("userData", userData, "userValue", userValue,"prepareGroupQuotaCount",config.getPrepareGroupQuotaCount())); + return Result.success(Map.of("userData", userData, "userValue", userValue)); } @At @SaCheckPermission("executiveCommittee.preparatoryGroupPush") - @SLog(tag = "执委会推选-筹备组推选", msg = "推选委员") + @SLog(tag = "执委会推选-正式委员录入", msg = "推选委员") public Result addOnePush(@Param("userValue") String[] userValue, String teacherMeetId) { try { - - ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, - Cnd.where("teacherMeetId", "=", teacherMeetId)); - /* if (ObjectUtil.isEmpty(config)) { - return Result.error("请先配置基础信息"); + if (ObjectUtil.isEmpty(userValue)) { + return Result.error("请选择要录入的委员!"); } - if (config.getFirstStartTime().getTime() > System.currentTimeMillis()) { - return Result.error("请等待一次预选开始时间"); + if (ObjectUtil.isEmpty(teacherMeetId)) { + return Result.error("请选择教代会!"); } - if (config.getFirstEndTime().getTime() < System.currentTimeMillis()) { - return Result.error("一次预选已结束"); - }*/ - - int dbCount = dao.count(ExecutiveCommitteeOnePush.class, - Cnd.where("teacherMeetId", "=", teacherMeetId) - .and("addType", "=", 2)); - if (dbCount + userValue.length > config.getPrepareGroupQuotaCount()) { - return Result.error("推选人数限制" + config.getPrepareGroupQuotaCount() + "人"); - } - - Sql sql = Sqls.create(""" - SELECT - t1.* - FROM - teacher_congress_delegate t1 - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.and("t1.sessionId", "=", teacherMeetId); - cnd.andEX("t1.userId", "in", userValue); - sql.setCondition(cnd); - List dbList = baseService.listMap(sql); - - List list = new ArrayList<>(); - for (String id : userValue) { - NutMap jdhDb = dbList.stream().filter(v -> v.getString("userId").equals(id)).findFirst().orElse(null); - if (ObjectUtil.isEmpty(jdhDb)) { - return Result.error("请选择正确的代表!"); - } - ExecutiveCommitteeOnePush onePush = new ExecutiveCommitteeOnePush(); - onePush.setPushDate(DateUtil.date()); - onePush.setUserId(jdhDb.getString("userId")); - onePush.setUserName(jdhDb.getString("userName")); - onePush.setLoginName(jdhDb.getString("loginName")); - onePush.setDelegationId(jdhDb.getString("delegationId")); - onePush.setUnionId(jdhDb.getString("unionId")); - onePush.setUnitId(jdhDb.getString("unitId")); - onePush.setTeacherMeetId(teacherMeetId); - String firstLetter = String.valueOf(getFirstLetter(jdhDb.getString("userName"))); - onePush.setFirstLetter(firstLetter); - onePush.setAddType(2); - list.add(onePush); - } - dao.insert(list); + List twoPushList = dao.query(ExecutiveCommitteeTwoPush.class, Cnd.where(ExecutiveCommitteeTwoPush::getTeacherMeetId, "=", teacherMeetId).and(ExecutiveCommitteeTwoPush::getUserId, "in", userValue)); + List ids = twoPushList.stream().map(ExecutiveCommitteeTwoPush::getId).toList(); + dao.update(ExecutiveCommitteeTwoPush.class, Chain.make("isFormal", true), Cnd.where("id", "in", ids)); return Result.success("添加成功!"); } catch (Exception e) { e.printStackTrace(); @@ -202,16 +172,9 @@ public class ExecutiveCommitteePushController { @SaCheckPermission("executiveCommittee.preparatoryGroupPush") @SLog(tag = "执委会推选-筹备组推选", msg = "删除推选的人") public Result doDelete(@Valid String id, @Valid String teacherMeetId) { - ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, - Cnd.where("teacherMeetId", "=", teacherMeetId)); - if (ObjectUtil.isEmpty(config)) { - return Result.error("请先配置基础信息"); - } - int num = dao.clear(ExecutiveCommitteeOnePush.class, Cnd.where("id", "=", id)); - return num >= 0 ? Result.success() : Result.error(); + dao.update(ExecutiveCommitteeTwoPush.class, Chain.make("isFormal", false), Cnd.where("id", "=", id)); + return Result.success("删除成功!"); } - - public static char getFirstLetter(String str) { if (str == null || str.isEmpty()) { throw new IllegalArgumentException("字符串不能为空"); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java index 1989e861..3c8abafd 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/service/impl/ExecutiveCommitteeMemberServiceImpl.java @@ -37,7 +37,12 @@ public class ExecutiveCommitteeMemberServiceImpl extends BaseServiceImpl impleme YEAR, u.birthday, CURDATE()) AS age, - ( SELECT count( 1 ) FROM executive_committee_two_push tp WHERE tp.userId = op.userId ) as pushCount + ( SELECT count( 1 ) FROM executive_committee_two_push tp WHERE tp.userId = op.userId ) as pushCount, + CASE op.addType + WHEN 1 THEN '执委会委员' + WHEN 3 THEN '工会委员会委员' + ELSE '未知' + END AS addTypeName FROM executive_committee_one_push op LEFT JOIN sys_unit it ON op.unitId = it.id diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java index 6fb61a6a..283360e7 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java @@ -1,23 +1,26 @@ package com.budwk.app.zhgh.democratic.proposal.controller.transact; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.json.JSONObject; -import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; -import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum; -import com.budwk.app.bpm.models.BpmProcessTask; -import com.budwk.app.bpm.service.BpmService; +import com.budwk.app.flow.constant.FlowConst; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.entity.ProcessTaskActor; +import com.budwk.app.flow.enums.ProcessTaskStateEnum; +import com.budwk.app.flow.service.FlowCommonService; +import com.budwk.app.flow.service.ProcessTaskService; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.democratic.proposal.controller.vo.ProposalInfoPageVO; -import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake; -import com.budwk.app.zhgh.democratic.proposal.param.ProposalCommitteeFilingUnitApprovalParam; +import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam; import com.budwk.app.zhgh.democratic.proposal.service.ProposalCommitteeFilingUnitService; +import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -25,10 +28,10 @@ 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.dao.util.cri.Static; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; @@ -46,10 +49,15 @@ public class ProposalCommitteeFilingUnitController { @Inject private BaseService baseService; @Inject - private BpmService bpmService; - @Inject private ProposalCommitteeFilingUnitService proposalCommitteeFilingUnitService; + @Inject + private ProposalCommonService proposalCommonService; + @Inject + private FlowCommonService flowCommonService; + @Inject + private ProcessTaskService processTaskService; + @At("") @Ok("beetl:/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html") @SaCheckPermission("proposal.committeeFilingUnit") @@ -64,123 +72,143 @@ public class ProposalCommitteeFilingUnitController { SELECT info.*, type.name AS typeName, - tcs.fullName AS sessionName, - tcd.`name` AS delegationName, - inst.id processInstanceId, - inst.processInstanceNodeId, - inst.processInstanceNodeName, - inst.processInstanceTaskIds, - inst.processInstanceStatus, - task.id processInstanceTaskId, - task.taskStatus processInstanceTaskStatus, - COUNT(p.consolidationIds) > 0 AS isConsolidation, - EXISTS ( - SELECT 1 - FROM bpm_process_task next_task - WHERE next_task.prevTaskId = task.id - AND next_task.taskStatus = 'COMPLETE' - ) AS nextTaskIsComplete + IF(mer.proposalId IS NOT NULL, 1, 0) AS merge, + tcs.fullName AS sessionName, + tcd.`name` AS delegationName, + ins.id AS instanceId, + ins.businessNo, + ins.state instanceState, + ins.variable instanceVariable, + ins.processDefineId instanceProcessDefineId, + t.id taskId, + t.taskName AS taskKey, + t.displayName taskName, + t.taskType, + t.performType taskPerformType, + t.taskState, + t.finishTime, + t.taskParentId, + t.variable taskVariable, + IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, + IF(rt.id IS NOT NULL OR (ins.state = 20 AND info.caseFilingResult = 'NOT'), 1, 0) AS canRevoke FROM - bpm_process_task task - INNER JOIN bpm_process_node_define nd ON nd.id = task.processTaskNodeId - INNER JOIN bpm_process_instance inst ON inst.id = task.processInstanceId - INNER JOIN proposal_info info ON info.id = inst.processInstanceBusinessId - LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id)) + wf_process_task t + LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId + LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id + LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 + LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 + LEFT JOIN proposal_info info ON info.id = ins.businessNo LEFT JOIN proposal_type type on type.id = info.typeId - LEFT JOIN teacher_congress_session tcs ON tcs.id = info.sessionId - LEFT JOIN teacher_congress_delegation tcd ON tcd.id = info.delegationId - LEFT JOIN bpm_process_task nt ON nt.prevTaskId = task.id AND nt.taskStatus = 'COMPLETE' + LEFT JOIN proposal_merge mer ON mer.proposalId = info.id + LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId + LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId $condition """); Cnd cnd = Cnd.NEW(); + cnd.and("t.taskName", "=", "committeeFilingUnit"); if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) { - cnd.and(new Static("JSON_CONTAINS( task.assignments, '\"%s\"' )".formatted(SecurityUtil.getUserLoginname()))); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); } - cnd.and("nd.nodeCode", "=", 70); if (approval) { - cnd.and("task.taskStatus", "=", BpmProcessTaskStatusEnum.COMPLETE); + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); } else { - cnd.and("task.taskStatus", "=", BpmProcessTaskStatusEnum.ACTIVE); + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); } ProposalSearchParam.buildSearch(cnd, pageForm); - cnd.and(new Static(""" - NOT EXISTS( - SELECT 1 - FROM bpm_process_task t2 - WHERE t2.processInstanceId = task.processInstanceId - AND t2.processTaskNodeCode = task.processTaskNodeCode - AND t2.createdOn > task.createdOn - ) - """)); - cnd.groupBy("info.id"); - cnd.groupBy("task.id"); + cnd.groupBy("t.id"); + cnd.desc("t.createdAt"); sql.setCondition(cnd); - Pagination pagination = baseService.listPageVO(pageForm, sql, ProposalInfoPageVO.class); + Pagination pagination = proposalCommitteeFilingUnitService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); return Result.success(pagination); } @At @SaCheckPermission("proposal.committeeFilingUnit") + @ApiOperation("执行任务") @Aop(TransAop.READ_COMMITTED) - @SLog(tag = "委员会确认承办单位", msg = "委员会确认承办单位") - @ApiOperation("委员会确认承办单位") - public Result approval(@Valid @Param("approval") ProposalCommitteeFilingUnitApprovalParam approvalParam) { - proposalCommitteeFilingUnitService.approval(approvalParam); - return Result.success(); - } + public Result executeTask(@Param("data") String data) { + Dict args = Json.fromJson(Dict.class, data); + String proposalId = args.getStr("proposalId"); - @At - @SaCheckPermission("proposal.committeeFilingUnit") - @Aop(TransAop.READ_COMMITTED) - @SLog(tag = "委员会确认承办单位", msg = "委员会确认承办单位撤回") - public Result revoke(@Valid String taskId) { - proposalCommitteeFilingUnitService.revoke(taskId); - return Result.success(); - } + // 查询是否提案 - @At - @SaCheckPermission("proposal.committeeFilingUnit") - @ApiOperation("查询立案的结果及承办单位") - public Result committeeFiling(@Valid String processInstanceId, @Valid String processInstanceTaskId) { - JSONObject newJson = new JSONObject(); - - BpmProcessTask caseUnitTask = proposalCommitteeFilingUnitService.dao().fetch(BpmProcessTask.class, - Cnd.where(BpmProcessTask::getId, "=", processInstanceTaskId) - .and(BpmProcessTask::getProcessInstanceId, "=", processInstanceId) - .and(BpmProcessTask::getProcessTaskNodeCode, "=", 70) - .and(BpmProcessTask::getDelFlag, "=", 0) - ); - if (ObjectUtil.isNotNull(caseUnitTask) && ObjectUtil.isNotEmpty(caseUnitTask.getExtVariable())) { - JSONObject jsonObject = caseUnitTask.getExtVariable(); - newJson.set("caseFilingResult", jsonObject.get("caseFilingResult")); - newJson.set("hostUnitId", jsonObject.get("hostUnitId")); - newJson.set("helpUnitIds", jsonObject.getBeanList("helpUnitIds", String.class)); - newJson.set("approvalOpinion", jsonObject.get("approvalOpinion")); - newJson.set("consolidationIds", jsonObject.getBeanList("consolidationIds", String.class)); - return Result.success(newJson); + // 单条审核 + List mergeProposalIds = proposalCommonService.mergeProposal(proposalId); + if (ObjectUtil.isEmpty(mergeProposalIds)) { + flowCommonService.executeTask(args); + return Result.success(); } - BpmProcessTask caseTask = proposalCommitteeFilingUnitService.dao().fetch(BpmProcessTask.class, - Cnd.where(BpmProcessTask::getProcessInstanceId, "=", processInstanceId) - .and(BpmProcessTask::getDelFlag, "=", 0) - .and(BpmProcessTask::getProcessTaskNodeCode, "=", 60) - .desc(BpmProcessTask::getCreatedOn) - ); - JSONObject jsonObject = caseTask.getExtVariable(); - newJson.set("caseFilingResult", jsonObject.get("caseFilingResult")); - newJson.set("hostUnitId", jsonObject.get("hostUnitId")); - newJson.set("helpUnitIds", jsonObject.getBeanList("helpUnitIds", String.class)); - newJson.set("approvalOpinion", jsonObject.get("approvalOpinion")); - newJson.set("consolidationIds", jsonObject.getBeanList("consolidationIds", String.class)); - return Result.success(newJson); + // 并案审核 + ProcessTask thisTask = baseService.dao().fetch(ProcessTask.class, args.getLong(FlowConst.PROCESS_TASK_ID_KEY)); + List mergeTasks = processTaskService.getDoingTaskByBizIdTaskName(mergeProposalIds, thisTask.getTaskName()); + for (ProcessTask mergeTask : mergeTasks) { + Dict cloneArgs = args.clone(); + cloneArgs.put(FlowConst.PROCESS_TASK_ID_KEY, mergeTask.getId()); + flowCommonService.executeTask(cloneArgs); + } + + ProposalInfo info = proposalCommonService.fetch(proposalId); + info.setCaseFilingResult(args.getStr("caseFilingResult")); + return Result.success(); } + + @At + @SaCheckLogin + @Aop(TransAop.READ_COMMITTED) + @ApiOperation("撤销任务") + public Result revokeTask(@Param("taskId") Long taskId,@Param("proposalId")String proposalId) { + // 单条审核 + List mergeProposalIds = proposalCommonService.mergeProposal(proposalId); + if (ObjectUtil.isEmpty(mergeProposalIds)) { + flowCommonService.revokeTask(taskId); + return Result.success(); + } + // 并案审核 + ProcessTask thisTask = baseService.dao().fetch(ProcessTask.class, taskId); + List mergeTasks = processTaskService.getDoneTaskByBizIdTaskName(mergeProposalIds, thisTask.getTaskName()); + for (ProcessTask mergeTask : mergeTasks) { + flowCommonService.revokeTask(mergeTask.getId()); + } + return Result.success(); + } + + @At @SaCheckPermission("proposal.committeeFilingUnit") - @ApiOperation("查询承办单位") - public Result listUnderTake() { - List list = baseService.dao().query(ProposalUndertake.class, Cnd.NEW().asc(ProposalUndertake::getCode)); - return Result.success(list); + public Result doUpData(){ + List tasks = baseService.dao().query(ProcessTask.class, Cnd.where("taskName", "=", "personnelOffice")); + List list = tasks.stream().map(ProcessTask::getId).toList(); + + List actorList = baseService.dao().query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "in", list)); + + List instanceList = baseService.dao().query(ProcessInstance.class, Cnd.where(ProcessInstance::getProcessDefineId, "=", 396)); + + for (ProcessTask task : tasks) { + task.setTaskName("committee"); + task.setDisplayName("提案委员会立案"); + task.setFormKey("/platform/proposal/committee"); + task.setH5FormKey(""); + } + + for (ProcessTaskActor actor : actorList) { + actor.setActorId("1fb89886bf4c43dcb48409c83d3363c3"); + actor.setActorAccount("018054"); + actor.setActorName("赵丽霞"); + actor.setActorUnitName("工会"); + actor.setActorUnitId("0011"); + } + + for (ProcessInstance instance : instanceList) { + instance.setProcessDefineId(400L); + } + + baseService.update(tasks); + baseService.update(actorList); + baseService.update(instanceList); + + return Result.success(); } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java deleted file mode 100644 index cf3dc382..00000000 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalPersonnelOfficeController.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.budwk.app.zhgh.democratic.proposal.controller.transact; - -import cn.dev33.satoken.annotation.SaCheckPermission; -import com.budwk.app.base.constant.RoleConstant; -import com.budwk.app.base.page.Pagination; -import com.budwk.app.base.result.Result; -import com.budwk.app.base.service.BaseService; -import com.budwk.app.bpm.service.BpmService; -import com.budwk.app.flow.enums.ProcessTaskStateEnum; -import com.budwk.app.web.commons.auth.utils.AuthUtil; -import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam; -import com.budwk.app.zhgh.democratic.proposal.service.ProposalDelegationService; -import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import org.nutz.dao.Cnd; -import org.nutz.dao.Sqls; -import org.nutz.dao.sql.Sql; -import org.nutz.ioc.loader.annotation.Inject; -import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.mvc.annotation.At; -import org.nutz.mvc.annotation.Ok; - -import javax.validation.Valid; -import java.util.List; - -/** - * @author zhf - * @date 2026/3/12 09:36 - * @description 人事处审核 - */ -@IocBean -@At("/platform/proposal/personnelOffice") -@Slf4j -@Ok("json:full") -@Api(tags = "提案-办理-人事处审核") -public class ProposalPersonnelOfficeController { - - @Inject - private BaseService baseService; - @Inject - private ProposalCommonService proposalCommonService; - @Inject - private ProposalDelegationService proposalDelegationService; - @Inject - private BpmService bpmService; - - @At("") - @Ok("beetl:/platform/zhgh/democratic/proposal/transact/personnelOffice/index.html") - @SaCheckPermission("proposal.personnelOffice") - public void index() { - } - - @At("/h5") - @Ok("beetl:/platform/zhghh5/democratic/proposal/transact/personnelOffice/index.html") - @SaCheckPermission("h5.proposal.personnelOffice") - public void h5Index() { - } - - - @At - @SaCheckPermission("proposal.personnelOffice") - @ApiOperation("分页列表") - public Result pageData(@Valid ProposalSearchParam pageForm, boolean approval) { - Sql sql = Sqls.create(""" - SELECT - info.*, - type.name AS typeName, - tcs.fullName AS sessionName, - tcd.`name` AS delegationName, - ins.id AS instanceId, - ins.businessNo, - ins.state instanceState, - ins.variable instanceVariable, - ins.processDefineId instanceProcessDefineId, - t.id taskId, - t.taskName AS taskKey, - t.displayName taskName, - t.taskType, - t.performType taskPerformType, - t.taskState, - t.finishTime, - t.taskParentId, - t.variable taskVariable, - IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName, - IF(rt.id IS NOT NULL, 1, 0) AS canRevoke - FROM - wf_process_task t - LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId - LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id - LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 - LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 - LEFT JOIN proposal_info info ON info.id = ins.businessNo - LEFT JOIN proposal_type type on type.id = info.typeId - LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId - LEFT JOIN teacher_congress_delegation tcd on tcd.id = info.delegationId - $condition - """); - Cnd cnd = Cnd.NEW(); - cnd.and("t.taskName", "=", "personnelOffice"); - - if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){ - cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); - } - - if (approval) { - cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); - } else { - cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); - } - ProposalSearchParam.buildSearch(cnd, pageForm); - cnd.groupBy("t.id"); - cnd.desc("t.createdAt"); - sql.setCondition(cnd); - Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(),pageForm.getPageSize(), sql); - return Result.success(pagination); - } - -} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java new file mode 100644 index 00000000..9bd01c40 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/proposalPersonnelOfficeAdminHandler.java @@ -0,0 +1,46 @@ +package com.budwk.app.zhgh.democratic.proposal.handler; + +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.flow.engine.AssignmentHandler; +import com.budwk.app.flow.engine.core.Execution; +import com.budwk.app.flow.engine.core.ServiceContext; +import com.budwk.app.flow.engine.model.TaskModel; +import com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.models.Sys_user_role; +import com.budwk.app.sys.services.SysRoleService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.lang.Lang; + +import java.util.List; + +/** + * @author zhf + * @date 2026/3/16 13:54 + * @description 提案人事处管理员 + */ +public class proposalPersonnelOfficeAdminHandler implements AssignmentHandler { + @Override + public List assign(TaskModel model, Execution execution) { + SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class); + Sys_role role = sysRoleService.getByCode(RoleConstant.PROPOSAL_PERSONNEL_OFFICE_ADMIN); + + List roles = ServiceContext.find(Dao.class).query( + Sys_user_role.class, + Cnd.where(Sys_user_role::getRoleId, "=", role.getId())); + if (Lang.isEmpty(roles)) { + throw new RuntimeException("当前登录用户所在单位未设置单位党委书记,请联系校工会进行设置。"); + } + return roles.stream().map(Sys_user_role::getUserId).toList(); + } + + @Override + public String getMessage() { + return "获取当前提案人事处管理员"; + } + + @Override + public int getOrder() { + return AssignmentHandler.super.getOrder(); + } +} diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html index d588813b..0a6cd5db 100644 --- a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html @@ -27,7 +27,7 @@ layout("/layouts/platform.html"){ > - + + + + + + + +
@@ -50,7 +63,7 @@ layout("/layouts/platform.html"){ size="small" type="primary" @click="$refs.onePushFormalRef.onOpen(pageForm.teacherMeetId)" - >委员推选 + >候选人录入 @@ -59,6 +72,7 @@ layout("/layouts/platform.html"){ :data="tableData" row-key="id" @sort-change="pageOrder" + v-loading="tableLoading" > + + +