..
This commit is contained in:
@@ -40,7 +40,7 @@ public class FlowTodoCenter {
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
public Result todo(Integer pageNumber, Integer pageSize, String keyword, String categoty) {
|
||||
public Result todo(Integer pageNumber, Integer pageSize, String searchKeyword, String category) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
t.id AS taskId,
|
||||
@@ -75,7 +75,7 @@ public class FlowTodoCenter {
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
public Result done(Integer pageNumber, Integer pageSize, String keyword, String categoty) {
|
||||
public Result done(Integer pageNumber, Integer pageSize, String searchKeyword, String category) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
t.id AS taskId,
|
||||
@@ -110,7 +110,7 @@ public class FlowTodoCenter {
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
public Result started(Integer pageNumber, Integer pageSize, String keyword, String categoty) {
|
||||
public Result started(Integer pageNumber, Integer pageSize, String searchKeyword, String category) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
ins.id AS instanceId,
|
||||
|
||||
@@ -9,20 +9,24 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@DictEnum(key = "ProcessInstanceStateEnum", name = "流程实例状态")
|
||||
public enum ProcessInstanceStateEnum {
|
||||
DOING(10, "进行中"),
|
||||
FINISHED(20, "已完成"),
|
||||
WITHDRAW(30, "已撤回"),
|
||||
INTERRUPT(40, "强行终止"),
|
||||
REJECT(45, "已拒绝"),
|
||||
PENDING(50, "挂起"),
|
||||
ABANDON(99, "已废弃");
|
||||
DOING(10, "进行中", null),
|
||||
FINISHED(20, "已完成", "success"),
|
||||
WITHDRAW(30, "已撤回", "danger"),
|
||||
INTERRUPT(40, "强行终止", "danger"),
|
||||
REJECT(45, "已拒绝", "danger"),
|
||||
PENDING(50, "挂起", "danger"),
|
||||
ABANDON(99, "已废弃", "danger");
|
||||
|
||||
private final Integer code;
|
||||
|
||||
private final String message;
|
||||
|
||||
ProcessInstanceStateEnum(Integer code, String message) {
|
||||
private final String type;
|
||||
|
||||
ProcessInstanceStateEnum(Integer code, String message, String type) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -378,7 +378,7 @@ public class SysRoleController {
|
||||
|
||||
@At
|
||||
@Ok("json")
|
||||
@SaCheckPermission("sys.manager.role.menu")
|
||||
// @SaCheckPermission("sys.manager.role.menu")
|
||||
@SLog(tag = "分配角色菜单", msg = "角色名称:${args[3].getAttribute('name')}")
|
||||
public Object menuDo(@Param("menuIds") String menuIds, @Param("platform") String platform, @Param("roleId") String roleId, HttpServletRequest req) {
|
||||
try {
|
||||
|
||||
@@ -14,7 +14,10 @@ import com.budwk.app.base.exception.BaseException;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.sys.models.*;
|
||||
import com.budwk.app.sys.models.Sys_dict;
|
||||
import com.budwk.app.sys.models.Sys_role;
|
||||
import com.budwk.app.sys.models.Sys_unit;
|
||||
import com.budwk.app.sys.models.Sys_user;
|
||||
import com.budwk.app.sys.services.SysDictService;
|
||||
import com.budwk.app.sys.services.SysRoleService;
|
||||
import com.budwk.app.sys.services.SysUnitService;
|
||||
@@ -286,7 +289,7 @@ public class SysUnitController {
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
nodeList.add(new TreeNode<>(list.get(i).getId(), list.get(i).getParentId(), list.get(i).getName(), i));
|
||||
}
|
||||
List<Tree<String>> treeList = TreeUtil.build(nodeList, "1");
|
||||
List<Tree<String>> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "1"));
|
||||
|
||||
// NutMap menuMap = NutMap.NEW();
|
||||
// for (Sys_unit unit : list) {
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.budwk.app.sys.controller.message;
|
||||
|
||||
import com.budwk.app.sys.models.Sys_user;
|
||||
|
||||
/**
|
||||
* 消息发送者
|
||||
*/
|
||||
public interface SysMessageSender {
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
* @param message 消息内容
|
||||
* @param receiver 接收人
|
||||
* @return 发送结果
|
||||
*/
|
||||
// boolean send(Message message, Sys_user receiver);
|
||||
|
||||
/**
|
||||
* 支持的渠道类型
|
||||
* @return 渠道类型
|
||||
*/
|
||||
String getChannelType();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.budwk.app.sys.controller.message;
|
||||
|
||||
public class SysSmsMessageSender {
|
||||
}
|
||||
-80
@@ -1,80 +0,0 @@
|
||||
package com.budwk.app.zhgh.democratic.grassrootscongress.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.bpm.param.BpmTaskApprovalParam;
|
||||
import com.budwk.app.bpm.service.BpmService;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.service.GrassrootsCongressMeetingService;
|
||||
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.ioc.aop.Aop;
|
||||
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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* @ClassName GrassrootsCongressMeetingAuditController
|
||||
* @Description TODO
|
||||
* @Author zhf
|
||||
* @Date 2024/9/6 15:17
|
||||
*/
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/grassrootsCongress/materials/audit")
|
||||
@Api(tags = "基层双代会资料审核")
|
||||
public class GrassrootsCongressMaterialsAuditController {
|
||||
|
||||
@Inject
|
||||
private BpmService bpmService;
|
||||
@Inject
|
||||
private GrassrootsCongressMeetingService grassrootsCongressMeetingService;
|
||||
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/grassrootscongress/materials/audit/index.html")
|
||||
@SaCheckPermission("grassrootsCongress.materials.audit")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("资料列表")
|
||||
@SaCheckPermission("grassrootsCongress.materials.audit")
|
||||
public Result pageData(PageForm pageForm, Integer year, String unionId) {
|
||||
Pagination pagination = grassrootsCongressMeetingService.pageData(pageForm, year, unionId);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@ApiOperation("会议资料审核")
|
||||
@SaCheckPermission("grassrootsCongress.materials.audit")
|
||||
@SLog(type = "基层双代会", tag = "基层双代会资料审核", msg = "校工会审核信息")
|
||||
public Result approval(@Param("approval") @Valid BpmTaskApprovalParam approvalParam) {
|
||||
bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), null, null);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@ApiOperation("会议批复撤回")
|
||||
@SaCheckPermission("grassrootsCongress.materials.audit")
|
||||
@SLog(type = "基层双代会", tag = "基层双代会资料撤回", msg = "基层双代会资料撤回")
|
||||
public Result revoke(@Valid String taskId) {
|
||||
bpmService.revokeTask(taskId);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
-143
@@ -1,143 +0,0 @@
|
||||
package com.budwk.app.zhgh.democratic.grassrootscongress.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.BpmProcessConstant;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.exception.BaseException;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
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.bpm.service.BpmService;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.web.controllers.open.commons.service.CommonService;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.models.GrassrootsCongressMaterialsInfo;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.service.GrassrootsCongressMeetingService;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.vo.GrassrootsCongressMaterialVo;
|
||||
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.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName GrassrootsCongressMaterialsController
|
||||
* @Description TODO
|
||||
* @Author zhf
|
||||
* @Date 2024/9/6 9:53
|
||||
*/
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/grassrootsCongress/materials/manage")
|
||||
@Api(tags = "基层双代会资料管理")
|
||||
public class GrassrootsCongressMaterialsController {
|
||||
|
||||
@Inject
|
||||
private GrassrootsCongressMeetingService grassrootsCongressMeetingService;
|
||||
@Inject
|
||||
private BpmService bpmService;
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
@Inject
|
||||
private CommonService commonService;
|
||||
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/grassrootscongress/materials/manage/index.html")
|
||||
@SaCheckPermission("grassrootsCongress.materials.manage")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("我的资料列表")
|
||||
@SaCheckPermission("grassrootsCongress.materials.manage")
|
||||
public Result pageData(PageForm pageForm, Integer year) {
|
||||
Pagination pagination = grassrootsCongressMeetingService.pageData(pageForm, year);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("提交")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("grassrootsCongress.materials.manage")
|
||||
@SLog(tag = "基层双代会", msg = "上传会议资料", type = "grassrootsCongressMaterials")
|
||||
public Result doSave(@Param("data") GrassrootsCongressMaterialsInfo data) {
|
||||
data.setCreatedDate(new Date());
|
||||
data.setUserName(SecurityUtil.getUserUsername());
|
||||
data.setLoginName(SecurityUtil.getUserLoginname());
|
||||
data.setUserId(SecurityUtil.getUserId());
|
||||
grassrootsCongressMeetingService.insertOrUpdate(data);
|
||||
bpmService.startSaveProcessInstance(BpmProcessConstant.GRASSROOTS_CONGRESS_MATERIALS.name(), data.getMaterialsName(), data.getId(), null);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("提交")
|
||||
@Aop({TransAop.READ_COMMITTED})
|
||||
@SaCheckPermission("grassrootsCongress.materials.manage")
|
||||
@SLog(type = "grassrootsCongressMaterials", tag = "基层双代会", msg = "会议请示添加会议")
|
||||
public Result doSubmit(@Param("data") GrassrootsCongressMaterialsInfo data) {
|
||||
data.setCreatedDate(new Date());
|
||||
data.setUserName(SecurityUtil.getUserUsername());
|
||||
data.setLoginName(SecurityUtil.getUserLoginname());
|
||||
data.setUserId(SecurityUtil.getUserId());
|
||||
grassrootsCongressMeetingService.insertOrUpdate(data);
|
||||
String approvalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_ADMIN);
|
||||
if (StrUtil.isBlank(approvalLoginName)) {
|
||||
throw new BaseException("会议资料审批人未设置");
|
||||
}
|
||||
bpmService.startSubmitProcessInstance(BpmProcessConstant.GRASSROOTS_CONGRESS_MATERIALS.name(), data.getMaterialsName(), data.getId(), List.of(approvalLoginName), null);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("删除会议资料")
|
||||
@SaCheckPermission("grassrootsCongress.myMeeting")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(type = "grassrootsCongressMaterials", tag = "基层双代会", msg = "删除会议资料")
|
||||
public Result doDelete(@Valid String id) {
|
||||
grassrootsCongressMeetingService.dao().delete(GrassrootsCongressMaterialsInfo.class, id);
|
||||
bpmService.deleteInstance(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("撤回申请")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "基层双代会", msg = "撤回申请")
|
||||
@SaCheckPermission("grassrootsCongress.myMeeting")
|
||||
public Result revokeApply(@Valid String id) {
|
||||
bpmService.revokeApply(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("grassrootsCongress.materials.manage")
|
||||
@ApiOperation("查询单个会议资料信息")
|
||||
public Result findOne(@Valid String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
select * from grassroots_congress_materials_info where id=@id
|
||||
""").setParam("id", id);
|
||||
GrassrootsCongressMaterialVo grassrootsCongressMaterialVo = (GrassrootsCongressMaterialVo) baseService.fetchVO(sql, GrassrootsCongressMaterialVo.class);
|
||||
grassrootsCongressMaterialVo.setNodeTasks(bpmService.getNodeTasks(BpmProcessConstant.GRASSROOTS_CONGRESS_MATERIALS, id));
|
||||
return Result.success(grassrootsCongressMaterialVo);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package com.budwk.app.zhgh.democratic.grassrootscongress.controller.material;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.PageUtil;
|
||||
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.grassrootscongress.service.GrassrootsCongressService;
|
||||
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.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/grassrootsCongress/material/approval")
|
||||
@Api(tags = "基层双代会-会议资料-校工会审核")
|
||||
public class GrassrootsCongressMaterialApprovalController {
|
||||
|
||||
@Inject
|
||||
private GrassrootsCongressService grassrootsCongressService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/grassrootscongress/material/approval/index.html")
|
||||
@SaCheckPermission("grassrootsCongress.material.approval")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("会议列表")
|
||||
@SaCheckPermission("grassrootsCongress.material.approval")
|
||||
public Result pageData(PageForm pageForm, Integer year, String unionId, boolean approval) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
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 grassroots_congress_materials_info info ON info.id = ins.businessNo
|
||||
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
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "=", "zlsh");
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR(info.createdTime)", "=", year);
|
||||
cnd.andEX("info.unionId", "=", unionId);
|
||||
|
||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
cnd.desc("info.createdAt");
|
||||
} else {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
}
|
||||
cnd.groupBy("t.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pageVO = grassrootsCongressService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pageVO);
|
||||
}
|
||||
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.budwk.app.zhgh.democratic.grassrootscongress.controller.material;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.models.GrassrootsCongressMaterialsInfo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nutz.dao.Dao;
|
||||
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 org.nutz.mvc.annotation.Param;
|
||||
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/grassrootsCongress/material/common")
|
||||
@Api(tags = "基层双代会-会议资料-公共")
|
||||
public class GrassrootsCongressMaterialCommonController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
@ApiOperation("获取申请信息")
|
||||
public Result info(@Param("id") String id) {
|
||||
GrassrootsCongressMaterialsInfo info = dao.fetch(GrassrootsCongressMaterialsInfo.class, id);
|
||||
return Result.success(info);
|
||||
}
|
||||
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
package com.budwk.app.zhgh.democratic.grassrootscongress.controller.material;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
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.flow.engine.FlowEngine;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.models.GrassrootsCongressMaterialsInfo;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.models.GrassrootsCongressMeetingInfo;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.param.GrassrootsCongressPageForm;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.service.GrassrootsCongressService;
|
||||
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.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.Lang;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/grassrootsCongress/material/mine")
|
||||
@Api(tags = "基层双代会-会议资料-我的申请")
|
||||
public class GrassrootsCongressMaterialMineController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private FlowEngine flowEngine;
|
||||
@Inject
|
||||
private GrassrootsCongressService grassrootsCongressService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/grassrootscongress/material/mine/index.html")
|
||||
@SaCheckPermission("grassrootsCongress.material.mine")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("我的请示列表")
|
||||
@SaCheckPermission("grassrootsCongress.material.mine")
|
||||
public Result pageData(@Valid GrassrootsCongressPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
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,
|
||||
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask' AND taskState in (10,20)) AS startTaskId
|
||||
FROM
|
||||
grassroots_congress_materials_info info
|
||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
|
||||
cnd.and("info.createdBy", "=", SecurityUtil.getUserId());
|
||||
}
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX("info.meetingName", pageForm.getSearchKeyword()));
|
||||
}
|
||||
cnd.andEX("YEAR(info.createdTime)", "=", pageForm.getYear());
|
||||
cnd.desc("info.createdTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pagination = grassrootsCongressService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("删除会议请示")
|
||||
@SaCheckPermission("grassrootsCongress.material.mine")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "基层双代会-会议资料-我的申请", msg = "删除")
|
||||
public Result delete(@Valid String id) {
|
||||
dao.clear(GrassrootsCongressMaterialsInfo.class, Cnd.where("id", "=", id));
|
||||
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("基层双代会届次")
|
||||
@SaCheckPermission("grassrootsCongress.material.mine")
|
||||
public Result getAllJc(Integer year) {
|
||||
List<GrassrootsCongressMeetingInfo> query = dao.query(GrassrootsCongressMeetingInfo.class,
|
||||
Cnd.where("YEAR(createTime)", "=", year).and("fullName", "is not", null).groupBy("fullName"));
|
||||
if (Lang.isNotEmpty(query)) {
|
||||
List<String> list = query.stream().map(GrassrootsCongressMeetingInfo::getFullName).toList();
|
||||
return Result.success(list);
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package com.budwk.app.zhgh.democratic.grassrootscongress.controller.material;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.flow.enums.ProcessInstanceStateEnum;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.param.GrassrootsCongressPageForm;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.service.GrassrootsCongressService;
|
||||
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.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/grassrootsCongress/material/statistics")
|
||||
@Api(tags = "基层双代会-会议资料-统计")
|
||||
public class GrassrootsCongressMaterialStatisticsController {
|
||||
|
||||
@Inject
|
||||
private GrassrootsCongressService grassrootsCongressService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/grassrootscongress/material/statistics/index.html")
|
||||
@SaCheckPermission("grassrootsCongress.material.statistics")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("汇总统计列表")
|
||||
@SaCheckPermission("grassrootsCongress.material.statistics")
|
||||
public Result pageData(GrassrootsCongressPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId
|
||||
FROM
|
||||
grassroots_congress_materials_info info
|
||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("ins.state","=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
cnd.andEX("YEAR(info.createdTime)", "=", pageForm.getYear());
|
||||
cnd.desc("info.createdTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pagination = grassrootsCongressService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
package com.budwk.app.zhgh.democratic.grassrootscongress.controller.material;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
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.entity.ProcessInstance;
|
||||
import com.budwk.app.flow.entity.ProcessTask;
|
||||
import com.budwk.app.flow.enums.ProcessInstanceStateEnum;
|
||||
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||
import com.budwk.app.flow.service.FlowCommonService;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.models.GrassrootsCongressMaterialsInfo;
|
||||
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.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@IocBean
|
||||
@Ok("json:full")
|
||||
@At("/platform/grassrootsCongress/material/write")
|
||||
@Api(tags = "基层双代会-资料上传")
|
||||
public class GrassrootsCongressMaterialWriteController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private FlowEngine flowEngine;
|
||||
@Inject
|
||||
private FlowCommonService flowCommonService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/grassrootscongress/material/write/index.html")
|
||||
@SaCheckPermission("grassrootsCongress.material.write")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("保存")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "基层双代会-资料资料", msg = "保存资料")
|
||||
@SaCheckPermission("grassrootsCongress.material.write")
|
||||
public Result save(@Param("data") GrassrootsCongressMaterialsInfo info) {
|
||||
info.setCreatedTime(new Date());
|
||||
dao.insertOrUpdate(info);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("提交")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "基层双代会-资料请示", msg = "提交资料")
|
||||
@SaCheckPermission("grassrootsCongress.material.write")
|
||||
public Result submit(@Param("data") GrassrootsCongressMaterialsInfo info) {
|
||||
info.setCreatedTime(new Date());
|
||||
dao.insertOrUpdate(info);
|
||||
|
||||
// 开启流程实例
|
||||
Dict args = Dict.create();
|
||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("JCSDHHYZL", info.getId(), SecurityUtil.getUserId(), args);
|
||||
|
||||
// 自动完成第一个申请任务
|
||||
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
||||
for (ProcessTask task : doingTaskList) {
|
||||
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
@ApiOperation("重新提交申请")
|
||||
@SLog(tag = "基层双代会-资料请示", msg = "重新提交申请")
|
||||
@SaCheckPermission("grassrootsCongress.material.write")
|
||||
public Result submitAgain(@Param("data") GrassrootsCongressMaterialsInfo info, @Param("taskId") Long taskId) {
|
||||
dao.insertOrUpdate(info);
|
||||
|
||||
Dict dict = Dict.create();
|
||||
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
|
||||
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
|
||||
flowCommonService.executeTask(dict);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("grassrootsCongress")
|
||||
@ApiOperation("查询单个资料信息")
|
||||
public Result info(@Valid String id) {
|
||||
GrassrootsCongressMaterialsInfo info = dao.fetch(GrassrootsCongressMaterialsInfo.class, id);
|
||||
return Result.success(info);
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@ApiOperation("查询分工会申请成功的届次信息")
|
||||
@SaCheckPermission("grassrootsCongress.material.write")
|
||||
public Result listSession(String unionId) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.id,
|
||||
info.fullName
|
||||
FROM
|
||||
`grassroots_congress_meeting_info` info
|
||||
LEFT JOIN wf_process_instance inst ON inst.businessNo = info.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("inst.state","=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){
|
||||
cnd.andEX("info.unionId","=", unionId);
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
sql.setCallback(Sqls.callback.maps());
|
||||
dao.execute(sql);
|
||||
List<NutMap> list = sql.getList(NutMap.class);
|
||||
return Result.success(list);
|
||||
}
|
||||
}
|
||||
+4
-2
@@ -44,7 +44,7 @@ public class GrassrootsCongressMeetingApprovalController {
|
||||
@At
|
||||
@ApiOperation("会议列表")
|
||||
@SaCheckPermission("grassrootsCongress.meeting.approval")
|
||||
public Result pageData(PageForm pageForm, Integer year, String meetingName, String unionId, boolean approval) {
|
||||
public Result pageData(PageForm pageForm, Integer year, String unionId, boolean approval) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
@@ -87,7 +87,9 @@ public class GrassrootsCongressMeetingApprovalController {
|
||||
}
|
||||
|
||||
cnd.andEX("YEAR(info.createTime)", "=", year);
|
||||
cnd.and(Cnd.likeEX("info.meetingName", meetingName));
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX("info.meetingName", pageForm.getSearchKeyword()));
|
||||
}
|
||||
cnd.andEX("info.unionId", "=", unionId);
|
||||
|
||||
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||
|
||||
-4
@@ -59,14 +59,10 @@ public class GrassrootsCongressMeetingStatisticsController {
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("ins.state","=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||
|
||||
cnd.andEX("YEAR(info.createTime)", "=", pageForm.getYear());
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.and(Cnd.likeEX("info.meetingName", pageForm.getSearchKeyword()));
|
||||
}
|
||||
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
|
||||
cnd.and("info.createUserId", "=", SecurityUtil.getUserId());
|
||||
}
|
||||
cnd.desc("info.createTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pagination = grassrootsCongressService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
|
||||
+45
@@ -16,12 +16,15 @@ import com.budwk.app.flow.service.FlowCommonService;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.models.GrassrootsCongressMeetingInfo;
|
||||
import com.budwk.app.zhgh.democratic.grassrootscongress.service.GrassrootsCongressService;
|
||||
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.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
@@ -45,6 +48,8 @@ public class GrassrootsCongressMeetingWriteController {
|
||||
private FlowEngine flowEngine;
|
||||
@Inject
|
||||
private FlowCommonService flowCommonService;
|
||||
@Inject
|
||||
private GrassrootsCongressService grassrootsCongressService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/grassrootscongress/meeting/write/index.html")
|
||||
@@ -59,6 +64,26 @@ public class GrassrootsCongressMeetingWriteController {
|
||||
@SLog(tag = "基层双代会-会议请示", msg = "保存会议")
|
||||
@SaCheckPermission("grassrootsCongress.meeting.write")
|
||||
public Result save(@Param("data") GrassrootsCongressMeetingInfo data) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
count(1)
|
||||
FROM
|
||||
`grassroots_congress_meeting_info` info
|
||||
LEFT JOIN wf_process_instance inst ON inst.businessNo = info.id
|
||||
WHERE inst.state=20 AND info.unionId = @unionId
|
||||
AND info.j = @j AND info.c = @c
|
||||
""");
|
||||
sql.setParam("unionId", data.getUnionId());
|
||||
sql.setParam("j", data.getJ());
|
||||
sql.setParam("c", data.getC());
|
||||
int count = grassrootsCongressService.count(sql);
|
||||
|
||||
if (count > 0) {
|
||||
return Result.error("该届次已存在!");
|
||||
}
|
||||
|
||||
|
||||
data.setFullName(data.getJ() + data.getC());
|
||||
data.setCreateTime(DateUtil.now());
|
||||
data.setCreateUserId(SecurityUtil.getUserId());
|
||||
data.setCreateUserName(SecurityUtil.getUserUsername());
|
||||
@@ -72,6 +97,25 @@ public class GrassrootsCongressMeetingWriteController {
|
||||
@SLog(tag = "基层双代会-会议请示", msg = "提交会议")
|
||||
@SaCheckPermission("grassrootsCongress.meeting.write")
|
||||
public Result submit(@Param("data") GrassrootsCongressMeetingInfo data) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
count(1)
|
||||
FROM
|
||||
`grassroots_congress_meeting_info` info
|
||||
LEFT JOIN wf_process_instance inst ON inst.businessNo = info.id
|
||||
WHERE inst.state=20 AND info.unionId = @unionId
|
||||
AND info.j = @j AND info.c = @c
|
||||
""");
|
||||
sql.setParam("unionId", data.getUnionId());
|
||||
sql.setParam("j", data.getJ());
|
||||
sql.setParam("c", data.getC());
|
||||
int count = grassrootsCongressService.count(sql);
|
||||
|
||||
if (count > 0) {
|
||||
return Result.error("该届次已存在!");
|
||||
}
|
||||
|
||||
data.setFullName(data.getJ() + data.getC());
|
||||
data.setCreateTime(DateUtil.now());
|
||||
data.setCreateUserId(SecurityUtil.getUserId());
|
||||
data.setCreateUserName(SecurityUtil.getUserUsername());
|
||||
@@ -97,6 +141,7 @@ public class GrassrootsCongressMeetingWriteController {
|
||||
@SLog(tag = "基层双代会-会议请示", msg = "重新提交申请")
|
||||
@SaCheckPermission("grassrootsCongress.meeting.write")
|
||||
public Result submitAgain(@Param("data") GrassrootsCongressMeetingInfo data, @Param("taskId") Long taskId) {
|
||||
data.setFullName(data.getJ() + data.getC());
|
||||
dao.insertOrUpdate(data);
|
||||
|
||||
Dict dict = Dict.create();
|
||||
|
||||
+7
-7
@@ -10,12 +10,6 @@ import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName GrassrootsCongressMaterialsInfo
|
||||
* @Description TODO
|
||||
* @Author zhf
|
||||
* @Date 2024/9/6 10:06
|
||||
*/
|
||||
@Data
|
||||
@Comment("基层双代会资料")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@@ -49,6 +43,11 @@ public class GrassrootsCongressMaterialsInfo extends BaseModel {
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String unionName;
|
||||
|
||||
@Column
|
||||
@Comment("创建人工会id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String unionId;
|
||||
|
||||
@Column
|
||||
@Comment("教代会id")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@@ -73,10 +72,11 @@ public class GrassrootsCongressMaterialsInfo extends BaseModel {
|
||||
@Comment("附件")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<JSONObject> files;
|
||||
|
||||
@Column
|
||||
@Comment("创建时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
private Date createdDate;
|
||||
private Date createdTime;
|
||||
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -81,7 +81,7 @@ public class ProposalConfigTypeController {
|
||||
@At
|
||||
@SaCheckPermission("proposal.config.type")
|
||||
@ApiModelProperty("删除提案类型")
|
||||
@SLog(type = "提案类型配置", tag = "删除提案类型", msg = "${id}")
|
||||
@SLog(type = "提案类型配置", tag = "删除提案类型", msg = "id:${id}")
|
||||
public Result delete(@Valid Integer id){
|
||||
int count = dao.count(ProposalInfo.class, Cnd.where(ProposalInfo::getTypeId, "=", id));
|
||||
if(count > 0){
|
||||
|
||||
+5
-10
@@ -1,24 +1,16 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.query;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum;
|
||||
import com.budwk.app.bpm.models.BpmProcessTask;
|
||||
import com.budwk.app.flow.entity.ProcessInstance;
|
||||
import com.budwk.app.flow.entity.ProcessTask;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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;
|
||||
@@ -26,7 +18,10 @@ import org.nutz.lang.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -65,7 +60,7 @@ public class ProposalQueryUnitReplyController {
|
||||
// 主办任务记录
|
||||
List<ProcessTask> masterUnitTasks = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", instIds)
|
||||
.and(ProcessTask::getTaskState, "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.DOING.getCode()))
|
||||
.and(ProcessTask::getTaskName, "=", "85cf23da-2dd5-4007-a1e9-bd9bfddc68f0"));
|
||||
.and(ProcessTask::getTaskName, "in", List.of("85cf23da-2dd5-4007-a1e9-bd9bfddc68f0", "5ed5a1be-0cd3-4b47-a0d5-238d53b61f34")));
|
||||
|
||||
// 协办任务记录
|
||||
List<ProcessTask> slaveUnitTasks = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", instIds)
|
||||
|
||||
+20
-8
@@ -1,12 +1,14 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.senior;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.zhgh.democratic.proposal.controller.vo.ProposalInfoPageVO;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
@@ -31,7 +33,7 @@ public class ProposalSeniorBasicController {
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
private ProposalCommonService proposalCommonService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/proposal/senior/basic/index.html")
|
||||
@@ -50,25 +52,35 @@ public class ProposalSeniorBasicController {
|
||||
type.name AS typeName,
|
||||
tcs.fullName AS sessionName,
|
||||
tcd.`name` AS delegationName,
|
||||
inst.processInstanceNodeId,
|
||||
inst.processInstanceNodeCode,
|
||||
inst.processInstanceNodeName,
|
||||
inst.processInstanceTaskIds,
|
||||
inst.processInstanceStatus
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.displayName curTaskName,
|
||||
JSON_UNQUOTE(JSON_EXTRACT(caseTasks.variable, '$.tf_hostUnitName')) AS masterUnitName,
|
||||
JSON_EXTRACT(caseTasks.variable, '$.tf_helpUnitNames') AS slaveUnitNames
|
||||
FROM
|
||||
proposal_info info
|
||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
||||
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_instance inst ON inst.processInstanceBusinessId = info.id
|
||||
LEFT JOIN teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
||||
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
||||
|
||||
}
|
||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||
cnd.groupBy("info.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = baseService.listPageVO(pageForm, sql, ProposalInfoPageVO.class);
|
||||
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
+15
-6
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.senior;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
@@ -57,20 +58,32 @@ public class ProposalSeniorDeleteController {
|
||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
||||
type.name AS typeName,
|
||||
tcs.fullName AS sessionName,
|
||||
tcd.`name` AS delegationName
|
||||
tcd.`name` AS delegationName,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.displayName curTaskName
|
||||
FROM
|
||||
proposal_info info
|
||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
||||
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 teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
||||
|
||||
}
|
||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||
cnd.groupBy("info.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = proposalCommonService.listPageVO(pageForm, sql, ProposalInfoPageVO.class);
|
||||
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
@@ -81,10 +94,6 @@ public class ProposalSeniorDeleteController {
|
||||
@SLog(tag = "提案管理系统-高级管理-万能删除提案", msg = "删除提案")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result delete(String id) {
|
||||
// dao.clear(ProposalReplyUnit.class, Cnd.where(ProposalReplyUnit::getProposalId, "=", id));
|
||||
// dao.clear(ProposalSeconded.class, Cnd.where(ProposalReplyUnit::getProposalId, "=", id));
|
||||
// dao.clear(ProposalInfo.class, Cnd.where(ProposalInfo::getId, "=", id));
|
||||
// bpmService.deleteInstance(id);
|
||||
dao.clear(ProposalInfo.class, Cnd.where("id", "=", id));
|
||||
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
|
||||
return Result.success();
|
||||
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.senior;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
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.entity.ProcessTask;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.flow.vo.ProcessTaskVO;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
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.util.NutMap;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/senior/feedback")
|
||||
@Ok("json:full")
|
||||
@Api(tags = "提案-高级管理-反馈评分修改")
|
||||
public class ProposalSeniorFeedBackController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private FlowEngine flowEngine;
|
||||
@Inject
|
||||
private ProposalCommonService proposalCommonService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/proposal/senior/feedback/index.html")
|
||||
@SaCheckPermission("proposal.senior.feedback")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.senior.feedback")
|
||||
@ApiOperation(value = "分页列表")
|
||||
public Result pageData(@Valid @Param("pageForm") ProposalQueryComprehensiveParam pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
||||
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.displayName curTaskName,
|
||||
JSON_UNQUOTE(JSON_EXTRACT(caseTasks.variable, '$.tf_hostUnitName')) AS masterUnitName,
|
||||
JSON_EXTRACT(caseTasks.variable, '$.tf_helpUnitNames') AS slaveUnitNames
|
||||
FROM
|
||||
proposal_info info
|
||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
||||
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 teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
||||
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
||||
|
||||
}
|
||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||
cnd.groupBy("info.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.senior.feedback")
|
||||
@ApiOperation(value = "反馈信息")
|
||||
public Result info(@Param("instanceId") String instanceId) {
|
||||
List<ProcessTask> taskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instanceId)
|
||||
.and(ProcessTask::getTaskName, "=", "013a7cf9-20dd-4188-a196-53fd595448e5")
|
||||
.and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())
|
||||
);
|
||||
|
||||
List<ProcessTaskVO> doneTaskVos = new ArrayList<>();
|
||||
for (ProcessTask doneTask : taskList) {
|
||||
ProcessTaskVO taskVO = flowEngine.processTaskService().findById(doneTask.getId());
|
||||
doneTaskVos.add(taskVO);
|
||||
}
|
||||
return Result.success(doneTaskVos);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.senior.feedback")
|
||||
@ApiOperation(value = "修改反馈信息")
|
||||
@SLog(tag = "提案-高级管理-反馈评分修改", msg = "修改反馈信息")
|
||||
public Result update(@Param("data")String data) {
|
||||
List<NutMap> tasks = Json.fromJsonAsList(NutMap.class, data);
|
||||
for (NutMap task : tasks) {
|
||||
ProcessTask processTask = flowEngine.processTaskService().fetch(task.getInt("id"));
|
||||
NutMap variable = Json.fromJson(NutMap.class, processTask.getVariable());
|
||||
variable.setv(FlowConst.TASK_FORM_DATA_PREFIX+"feedback",task.getString("feedback"));
|
||||
variable.setv(FlowConst.TASK_FORM_DATA_PREFIX+"opinion",task.getString("opinion"));
|
||||
processTask.setVariable(Json.toJson(variable));
|
||||
dao.update(processTask,"variable");
|
||||
}
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+21
-3
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.senior;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
@@ -8,6 +9,7 @@ import com.budwk.app.zhgh.democratic.proposal.controller.vo.ProposalInfoPageVO;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalSeniorUpdateTypeParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
@@ -33,7 +35,7 @@ public class ProposalSeniorTypeController {
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
private ProposalCommonService proposalCommonService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/proposal/senior/type/index.html")
|
||||
@@ -51,20 +53,36 @@ public class ProposalSeniorTypeController {
|
||||
COUNT(p.consolidationIds) > 0 AS isConsolidation,
|
||||
type.name AS typeName,
|
||||
tcs.fullName AS sessionName,
|
||||
tcd.`name` AS delegationName
|
||||
tcd.`name` AS delegationName,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.displayName curTaskName,
|
||||
JSON_UNQUOTE(JSON_EXTRACT(caseTasks.variable, '$.tf_hostUnitName')) AS masterUnitName,
|
||||
JSON_EXTRACT(caseTasks.variable, '$.tf_helpUnitNames') AS slaveUnitNames
|
||||
FROM
|
||||
proposal_info info
|
||||
LEFT JOIN proposal_consolidation p ON JSON_CONTAINS(p.consolidationIds, JSON_QUOTE(info.id))
|
||||
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 teacher_congress_delegate tcde on tcde.loginName = info.createUserLoginName
|
||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||
LEFT JOIN (SELECT processInstanceId, MAX(finishTime) AS finishTime FROM wf_process_task WHERE taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND taskState = 20 GROUP BY processInstanceId) latestTasks ON latestTasks.processInstanceId = ins.id
|
||||
LEFT JOIN wf_process_task caseTasks ON caseTasks.processInstanceId = ins.id AND caseTasks.taskName = '9846ab38-40c5-4093-bafc-a9b3b443338b' AND caseTasks.taskState = 20 AND caseTasks.finishTime = latestTasks.finishTime
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getUndertakeUnitId())) {
|
||||
|
||||
}
|
||||
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
|
||||
cnd.groupBy("info.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = baseService.listPageVO(pageForm, sql, ProposalInfoPageVO.class);
|
||||
Pagination pagination = proposalCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
|
||||
+4
-22
@@ -1,46 +1,27 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.transact;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
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.param.BpmTaskApprovalParam;
|
||||
import com.budwk.app.bpm.service.BpmService;
|
||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||
import com.budwk.app.sys.services.SysMsgService;
|
||||
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.ProposalInfo;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalCommitteeFilingApprovalParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.ProposalCommitteeFilingService;
|
||||
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.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.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/proposal/committeeFiling")
|
||||
@@ -59,7 +40,7 @@ public class ProposalCommitteeFilingController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.delegation")
|
||||
@SaCheckPermission("proposal.committeeFiling")
|
||||
@ApiOperation("分页列表")
|
||||
public Result pageData(@Valid ProposalSearchParam pageForm,boolean approval) {
|
||||
Sql sql = Sqls.create("""
|
||||
@@ -98,8 +79,9 @@ public class ProposalCommitteeFilingController {
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "=", "9846ab38-40c5-4093-bafc-a9b3b443338b");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
|
||||
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 {
|
||||
|
||||
+4
-1
@@ -99,7 +99,10 @@ public class ProposalDelegationController {
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "=", "93d5ba64-8220-4e62-9783-83422f474b36");
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
|
||||
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()));
|
||||
|
||||
+20
-12
@@ -1,30 +1,24 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.transact;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
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.service.BpmService;
|
||||
import com.budwk.app.flow.entity.ProcessTask;
|
||||
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.controller.vo.ProposalInfoPageVO;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalFeedbackEvaluationParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.ProposalFeedbackEvaluationService;
|
||||
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.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
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.mvc.annotation.At;
|
||||
@@ -42,9 +36,9 @@ import java.util.List;
|
||||
public class ProposalFeedbackEvaluationController {
|
||||
|
||||
@Inject
|
||||
private ProposalCommonService proposalCommonService;
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private ProposalFeedbackEvaluationService proposalFeedbackEvaluationService;
|
||||
private ProposalCommonService proposalCommonService;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/proposal/transact/feedbackEvaluation/index.html")
|
||||
@@ -110,4 +104,18 @@ public class ProposalFeedbackEvaluationController {
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.feedbackEvaluation")
|
||||
@ApiOperation("获取立案信息")
|
||||
public Result caseInfo(@Param("instId") String instId) {
|
||||
ProcessTask task = dao.fetch(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instId)
|
||||
.and(ProcessTask::getTaskName, "=", "9846ab38-40c5-4093-bafc-a9b3b443338b")
|
||||
.and(ProcessTask::getTaskState, "=", ProcessTaskStateEnum.FINISHED.getCode())
|
||||
.desc(ProcessTask::getCreatedAt)
|
||||
);
|
||||
JSONObject variable = JSONUtil.parseObj(task.getVariable());
|
||||
return Result.success(variable);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ public class ProposalUnderTakeReplyController {
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("t.taskName", "in", List.of("85cf23da-2dd5-4007-a1e9-bd9bfddc68f0", "c9a1586e-272b-41b8-b438-0be9f9e3781d"));
|
||||
cnd.and("t.taskName", "in", List.of("85cf23da-2dd5-4007-a1e9-bd9bfddc68f0", "c9a1586e-272b-41b8-b438-0be9f9e3781d","5ed5a1be-0cd3-4b47-a0d5-238d53b61f34"));
|
||||
|
||||
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
|
||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||
|
||||
+18
-7
@@ -1,13 +1,10 @@
|
||||
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.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.BpmProcessConstant;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.bpm.service.BpmService;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.FlowEngine;
|
||||
import com.budwk.app.flow.entity.ProcessInstance;
|
||||
@@ -20,6 +17,7 @@ import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
||||
import com.budwk.app.zhgh.democratic.proposal.service.ProposalWriteService;
|
||||
import com.budwk.app.zhgh.democratic.suggestionBox.models.SuggestionBox;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -68,7 +66,7 @@ public class ProposalWriteController {
|
||||
@SLog(tag = "提案管理系统-我的提案", msg = "保存提案")
|
||||
public Result save(@Param("info") ProposalInfo proposalInfo) {
|
||||
if (StrUtil.isBlank(proposalInfo.getCode())) {
|
||||
proposalInfo.setCode(proposalWriteService.generateProposalCode(proposalInfo.getSessionId(),proposalInfo.getDelegationId()));
|
||||
proposalInfo.setCode(proposalWriteService.generateProposalCode(proposalInfo.getSessionId(), proposalInfo.getDelegationId()));
|
||||
}
|
||||
dao.insertOrUpdate(proposalInfo);
|
||||
return Result.success(proposalInfo);
|
||||
@@ -81,7 +79,7 @@ public class ProposalWriteController {
|
||||
@SLog(tag = "提案管理系统-我的提案", msg = "提交提案")
|
||||
public Result submit(@Param("info") ProposalInfo proposalInfo) {
|
||||
if (StrUtil.isBlank(proposalInfo.getCode())) {
|
||||
proposalInfo.setCode(proposalWriteService.generateProposalCode(proposalInfo.getSessionId(),proposalInfo.getDelegationId()));
|
||||
proposalInfo.setCode(proposalWriteService.generateProposalCode(proposalInfo.getSessionId(), proposalInfo.getDelegationId()));
|
||||
}
|
||||
dao.insertOrUpdate(proposalInfo);
|
||||
|
||||
@@ -89,6 +87,8 @@ public class ProposalWriteController {
|
||||
Dict args = Dict.create();
|
||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||
args.set(FlowConst.FORM_DATA, proposalInfo);
|
||||
args.set(FlowConst.TASK_FORM_DATA_PREFIX + "source", proposalInfo.getSource());
|
||||
|
||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("JDHTA", proposalInfo.getId(), SecurityUtil.getUserId(), args);
|
||||
|
||||
// 自动完成第一个申请任务
|
||||
@@ -105,12 +105,14 @@ public class ProposalWriteController {
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@ApiOperation("重新提交提案")
|
||||
@SLog(tag = "提案管理系统-我的提案", msg = "重新提交提案")
|
||||
public Result submitAgain(@Param("data") SuggestionBox suggestionBox, @Param("taskId") Long taskId) {
|
||||
dao.insertOrUpdate(suggestionBox);
|
||||
public Result submitAgain(@Param("info") ProposalInfo proposalInfo, @Param("taskId") Long taskId) {
|
||||
dao.insertOrUpdate(proposalInfo);
|
||||
|
||||
Dict dict = Dict.create();
|
||||
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
|
||||
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
|
||||
dict.set(FlowConst.TASK_FORM_DATA_PREFIX + "source", proposalInfo.getSource());
|
||||
|
||||
flowCommonService.executeTask(dict);
|
||||
return Result.success();
|
||||
}
|
||||
@@ -143,4 +145,13 @@ public class ProposalWriteController {
|
||||
return Result.success().addData(sysDicts);
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.write")
|
||||
@ApiOperation("检查提案撰写时间")
|
||||
public Result checkWriteTime(@Valid String sessionId) {
|
||||
Teacher_congress_session session = dao.fetch(Teacher_congress_session.class, sessionId);
|
||||
boolean flag = session.getCollectStartTime().getTime() < System.currentTimeMillis() && System.currentTimeMillis() < session.getCollectEndTime().getTime();
|
||||
return Result.success().addData(flag);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.handler;
|
||||
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
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 com.budwk.app.sys.services.SysUserService;
|
||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 提案代表团团长
|
||||
*/
|
||||
public class ProposalDelegationAssignmentHandler implements AssignmentHandler {
|
||||
@Override
|
||||
public List<String> assign(TaskModel model, Execution execution) {
|
||||
NutMap variable = Json.fromJson(NutMap.class, execution.getProcessInstance().getVariable());
|
||||
ProposalInfo info = variable.getAs(FlowConst.FORM_DATA, ProposalInfo.class);
|
||||
|
||||
String sessionId = info.getSessionId();
|
||||
String delegationId = info.getDelegationId();
|
||||
|
||||
|
||||
SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class);
|
||||
Sys_role role = sysRoleService.getByCode(RoleConstant.TEACHER_CONGRESS_DELEGATION_HEAD);
|
||||
|
||||
Sys_user_role user_role = ServiceContext.find(Dao.class).fetch(Sys_user_role.class, Cnd.where(Sys_user_role::getRoleId, "=", role.getId())
|
||||
.and(Sys_user_role::getTcDelegationId, "=", delegationId)
|
||||
.and(Sys_user_role::getTcSessionId, "=", sessionId));
|
||||
|
||||
if(user_role==null){
|
||||
throw new RuntimeException("您所在的代表团没有设置团长,无法流转到下一步,请联系校工会进行设置。");
|
||||
}
|
||||
return List.of(user_role.getUserId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "当前代表代表团团长";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return 210;
|
||||
}
|
||||
|
||||
}
|
||||
-2
@@ -11,12 +11,10 @@ import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ProposalSchoolLeaderCandidateHandler implements CandidateHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public List<Candidate> handle(TaskModel model) {
|
||||
Dao dao = ServiceContext.find(Dao.class);
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.handler;
|
||||
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
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 com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.json.Json;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 提案委员会主任
|
||||
*/
|
||||
public class ProposalWyhAssignmentHandler implements AssignmentHandler {
|
||||
@Override
|
||||
public List<String> assign(TaskModel model, Execution execution) {
|
||||
NutMap variable = Json.fromJson(NutMap.class, execution.getProcessInstance().getVariable());
|
||||
ProposalInfo info = variable.getAs(FlowConst.FORM_DATA, ProposalInfo.class);
|
||||
|
||||
String sessionId = info.getSessionId();
|
||||
|
||||
SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class);
|
||||
Sys_role role = sysRoleService.getByCode(RoleConstant.PROPOSAL_COMMITTEE_DIRECTOR);
|
||||
|
||||
Sys_user_role user_role = ServiceContext.find(Dao.class).fetch(Sys_user_role.class, Cnd.where(Sys_user_role::getRoleId, "=", role.getId()).and(Sys_user_role::getTcSessionId, "=", sessionId));
|
||||
|
||||
if (user_role == null) {
|
||||
throw new RuntimeException("没有设置提案委员会主任,无法流转到下一步,请联系校工会进行设置。");
|
||||
}
|
||||
return List.of(user_role.getUserId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "教代会提案委员会主任";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return 220;
|
||||
}
|
||||
|
||||
}
|
||||
+4
-3
@@ -1,5 +1,6 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.interceptor;
|
||||
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.FlowInterceptor;
|
||||
import com.budwk.app.flow.engine.core.Execution;
|
||||
import com.budwk.app.flow.engine.core.ServiceContext;
|
||||
@@ -20,7 +21,7 @@ import java.util.List;
|
||||
/**
|
||||
* 提案委员会立案后置拦截器
|
||||
*/
|
||||
public class ProposalUnitNameInterceptor implements FlowInterceptor {
|
||||
public class ProposalCaseFilingInterceptor implements FlowInterceptor {
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void intercept(Execution execution) {
|
||||
@@ -35,7 +36,7 @@ public class ProposalUnitNameInterceptor implements FlowInterceptor {
|
||||
|
||||
// 单位名称
|
||||
variable.setv("unitName", taskActor.getActorUnitName());
|
||||
variable.setv("unitId",taskActor.getActorUnitId());
|
||||
variable.setv("unitId", taskActor.getActorUnitId());
|
||||
|
||||
// 是否主办
|
||||
variable.setv("isMaster", task.getTaskName().equals("85cf23da-2dd5-4007-a1e9-bd9bfddc68f0"));
|
||||
@@ -46,7 +47,7 @@ public class ProposalUnitNameInterceptor implements FlowInterceptor {
|
||||
// 更新立案结果
|
||||
ProcessInstance processInstance = execution.getProcessInstance();
|
||||
String businessNo = processInstance.getBusinessNo();
|
||||
dao.update(ProposalInfo.class, Chain.make("caseFilingResult", execution.getArgs().getStr("")), Cnd.where(ProposalInfo::getId, "=", businessNo));
|
||||
dao.update(ProposalInfo.class, Chain.make("caseFilingResult", execution.getArgs().getStr(FlowConst.TASK_FORM_DATA_PREFIX + "caseFilingResult")), Cnd.where(ProposalInfo::getId, "=", businessNo));
|
||||
|
||||
dao.update(processTaskList, "variable");
|
||||
}
|
||||
+13
-7
@@ -1,6 +1,8 @@
|
||||
package com.budwk.app.zhgh.democratic.suggestionBox.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.flow.engine.FlowEngine;
|
||||
@@ -24,7 +26,7 @@ import org.nutz.mvc.annotation.Param;
|
||||
@IocBean
|
||||
@At("/platform/suggestionBox/mine")
|
||||
@Ok("json:full")
|
||||
@Api("意见箱-我的")
|
||||
@Api("建言献策-我的申请")
|
||||
public class SuggestionBoxMineController {
|
||||
|
||||
@Inject
|
||||
@@ -36,15 +38,14 @@ public class SuggestionBoxMineController {
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/suggestionBox/mine/index.html")
|
||||
@SaCheckLogin
|
||||
@SaCheckPermission("suggestionBox.mine")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
public Result pageData(Integer pageNumber, Integer pageSize) {
|
||||
@SaCheckPermission("suggestionBox.mine")
|
||||
public Result pageData(Integer pageNumber, Integer pageSize, String title, Integer year) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.id,
|
||||
@@ -79,6 +80,10 @@ public class SuggestionBoxMineController {
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("info.createdBy", "=", SecurityUtil.getUserId());
|
||||
if (StrUtil.isNotBlank(title)) {
|
||||
cnd.where().andLike("info.title", title);
|
||||
}
|
||||
cnd.andEX("YEAR(info.submitTime)", "=", year);
|
||||
cnd.desc("info.submitTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pagination = suggestionBoxService.listPageMap(pageNumber, pageSize, sql);
|
||||
@@ -86,9 +91,10 @@ public class SuggestionBoxMineController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
@SaCheckPermission("suggestionBox.mine")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@ApiOperation("删除")
|
||||
@SLog(tag = "建言献策-我的申请", msg = "删除")
|
||||
public Result delete(@Param("id") String id) {
|
||||
suggestionBoxService.delete(id);
|
||||
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
|
||||
|
||||
+12
-8
@@ -1,7 +1,9 @@
|
||||
package com.budwk.app.zhgh.democratic.suggestionBox.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.flow.constant.FlowConst;
|
||||
import com.budwk.app.flow.engine.FlowEngine;
|
||||
@@ -27,7 +29,7 @@ import java.util.List;
|
||||
@IocBean
|
||||
@At("/platform/suggestionBox/write")
|
||||
@Ok("json:full")
|
||||
@Api("意见箱-撰写")
|
||||
@Api("建言献策-填写申请")
|
||||
public class SuggestionBoxWriteController {
|
||||
|
||||
@Inject
|
||||
@@ -39,14 +41,15 @@ public class SuggestionBoxWriteController {
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/democratic/suggestionBox/write/index.html")
|
||||
@SaCheckLogin
|
||||
@SaCheckPermission("suggestionBox.write")
|
||||
public void index() {
|
||||
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
@SaCheckPermission("suggestionBox.write")
|
||||
@ApiOperation("保存申请")
|
||||
@SLog(tag = "建言献策-填写申请", msg = "保存申请")
|
||||
public Result save(@Param("data") SuggestionBox suggestionBox) {
|
||||
dao.insertOrUpdate(suggestionBox);
|
||||
return Result.success();
|
||||
@@ -54,8 +57,10 @@ public class SuggestionBoxWriteController {
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
@SaCheckPermission("suggestionBox.write")
|
||||
@ApiOperation("提交申请")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "建言献策-填写申请", msg = "提交申请")
|
||||
public Result submit(@Param("data") SuggestionBox suggestionBox) {
|
||||
dao.insertOrUpdate(suggestionBox);
|
||||
// 开启流程实例
|
||||
@@ -73,9 +78,10 @@ public class SuggestionBoxWriteController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
@SaCheckPermission("suggestionBox.write")
|
||||
@ApiOperation("重新提交申请")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SLog(tag = "建言献策-填写申请", msg = "重新提交申请")
|
||||
public Result submitAgain(@Param("data") SuggestionBox suggestionBox, @Param("taskId") Long taskId) {
|
||||
dao.insertOrUpdate(suggestionBox);
|
||||
|
||||
@@ -86,14 +92,12 @@ public class SuggestionBoxWriteController {
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckLogin
|
||||
@SaCheckPermission("suggestionBox.write")
|
||||
@ApiOperation("获取申请信息")
|
||||
public Result info(@Param("id") String id) {
|
||||
SuggestionBox box = dao.fetch(SuggestionBox.class, id);
|
||||
return Result.success(box);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+159
-6
@@ -1,20 +1,35 @@
|
||||
package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller;
|
||||
|
||||
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.model.ExcelImportRes;
|
||||
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.base.utils.CommonDownloadUtil;
|
||||
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 com.budwk.app.sys.services.SysUserService;
|
||||
import com.budwk.app.sys.views.View_user;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.mode.TeacherCongressImportExcel;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.*;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.service.TeacherCongressDelegateService;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_unit;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.*;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
@@ -23,14 +38,17 @@ import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.AdaptBy;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
import org.nutz.mvc.upload.TempFile;
|
||||
import org.nutz.mvc.upload.UploadAdaptor;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 代表高级管理
|
||||
@@ -38,13 +56,12 @@ import java.util.Optional;
|
||||
@IocBean
|
||||
@At("/platform/teacherCongress/delegate/manage")
|
||||
@Ok("json:full")
|
||||
@Slf4j
|
||||
public class TeacherCongressDelegateManageController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
@Inject
|
||||
private SysUserService sysUserService;
|
||||
@Inject
|
||||
private SysRoleService sysRoleService;
|
||||
@@ -285,4 +302,140 @@ public class TeacherCongressDelegateManageController {
|
||||
sysRoleService.clearCache();
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("tc.delegate.manage")
|
||||
@ApiOperation("下载模版")
|
||||
public void downloadTemplate(HttpServletResponse response, String sessionId) {
|
||||
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||
entities.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||
entities.add(new ExcelExportEntity("姓名", "username", 20));
|
||||
entities.add(new ExcelExportEntity("代表团", "delegationName", 20));
|
||||
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, Collections.emptyList());
|
||||
|
||||
Sheet sheet = workbook.getSheetAt(0);
|
||||
DataValidationHelper helper = sheet.getDataValidationHelper();
|
||||
|
||||
// 添加代表团下拉列
|
||||
List<Teacher_congress_delegation> delegations = dao.query(Teacher_congress_delegation.class, Cnd.where(Teacher_congress_delegation::getSessionId, "=", sessionId).asc(Teacher_congress_delegation::getCode));
|
||||
String[] delegationNames = delegations.stream().map(Teacher_congress_delegation::getName).toArray(String[]::new);
|
||||
|
||||
CellRangeAddressList delegationAddressList = new CellRangeAddressList(0, 65535, 2, 2);
|
||||
DataValidationConstraint dataValidationConstraint = helper.createExplicitListConstraint(delegationNames);
|
||||
DataValidation validation = helper.createValidation(dataValidationConstraint, delegationAddressList);
|
||||
sheet.addValidationData(validation);
|
||||
|
||||
CommonDownloadUtil.download("教代会代表导入模版.xlsx", workbook, response);
|
||||
}
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("tc.delegate.manage")
|
||||
@AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"})
|
||||
public Result importByExcel(@Param("file") TempFile tempFile, @Param("sessionId") String sessionId) {
|
||||
// 读取数据
|
||||
List<TeacherCongressImportExcel> excelList = ExcelImportUtil.importExcel(tempFile.getFile(), TeacherCongressImportExcel.class, new ImportParams());
|
||||
|
||||
// 查询用户
|
||||
List<String> loginNames = excelList.stream().map(TeacherCongressImportExcel::getLoginName).filter(StrUtil::isNotBlank).collect(Collectors.toList());
|
||||
List<View_user> sysUsers = dao.query(View_user.class, Cnd.where(View_user::getLoginname, "in", loginNames));
|
||||
|
||||
// 查询当前届次的代表
|
||||
List<Teacher_congress_delegate> delegates = dao.query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", sessionId));
|
||||
|
||||
// 查询当前届次的代表团
|
||||
List<Teacher_congress_delegation> delegations = dao.query(Teacher_congress_delegation.class, Cnd.where(Teacher_congress_delegation::getSessionId, "=", sessionId));
|
||||
Map<String, Teacher_congress_delegation> delegationMap = delegations.stream().collect(Collectors.toMap(Teacher_congress_delegation::getName, v -> v));
|
||||
|
||||
// 创建结果集
|
||||
ExcelImportRes<TeacherCongressImportExcel> excelImportRes = new ExcelImportRes<>();
|
||||
excelImportRes.setTotalRecords(excelList.size());
|
||||
|
||||
|
||||
for (int i = 0; i < excelList.size(); i++) {
|
||||
TeacherCongressImportExcel excel = excelList.get(i);
|
||||
if (StrUtil.isBlank(excel.getLoginName())) {
|
||||
excel.setErrInfo("工号为空", i + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 不能在excel里重复
|
||||
if (excelList.stream().filter(s -> s.getLoginName().equals(excel.getLoginName())).count() > 1) {
|
||||
excel.setErrInfo("重复数据", i + 1);
|
||||
}
|
||||
|
||||
View_user user = sysUsers.stream().filter(s -> s.getLoginname().equals(excel.getLoginName())).findFirst().orElse(null);
|
||||
if (user == null) {
|
||||
excel.setErrInfo("无此用户", i + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (delegates.stream().anyMatch(s -> s.getUserId().equals(user.getId()))) {
|
||||
excel.setErrInfo("该用户已设置为代表", i + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(excel.getDelegationName())) {
|
||||
excel.setErrInfo("代表团为空", i + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!delegationMap.containsKey(excel.getDelegationName())) {
|
||||
excel.setErrInfo("无此代表团", i + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
Sql sql = Sqls.queryEntity("""
|
||||
SELECT
|
||||
t1.id as userId,
|
||||
t1.username AS userName,
|
||||
t1.loginName AS loginName,
|
||||
t1.sex,
|
||||
TIMESTAMPDIFF(YEAR,t1.birthday,CURDATE()) AS age,
|
||||
t1.mobile,
|
||||
t1.unitId,
|
||||
t2.NAME AS unitName,
|
||||
t3.id AS unionId,
|
||||
t3.NAME AS unionName
|
||||
FROM
|
||||
`sys_user` t1
|
||||
LEFT JOIN sys_unit t2 ON t2.id = t1.unitId
|
||||
LEFT JOIN sys_union t3 ON t3.id = t2.unionId
|
||||
WHERE t1.id = (@userId)
|
||||
""");
|
||||
sql.setParam("userId", user.getId());
|
||||
sql.setCallback(Sqls.callback.entity());
|
||||
sql.setEntity(dao.getEntity(Teacher_congress_delegate.class));
|
||||
dao.execute(sql);
|
||||
Teacher_congress_delegate delegate = (Teacher_congress_delegate) sql.getResult();
|
||||
|
||||
delegate.setDelegationId(delegationMap.get(excel.getDelegationName()).getId());
|
||||
delegate.setSessionId(sessionId);
|
||||
// 正式代表
|
||||
delegate.setRoleId("72e24b5b4c4f4e90a6641e6af8487e42");
|
||||
|
||||
try {
|
||||
dao.insert(delegate);
|
||||
dao.insert("sys_user_role", Chain.make("userId", delegate.getUserId()).add("roleId", delegate.getRoleId()).add("tcSessionId", sessionId).add("tcDelegationId", delegate.getDelegationId()));
|
||||
sysUserService.clearCache();
|
||||
} catch (Exception e) {
|
||||
log.error("导入代表失败:{}", e.getMessage());
|
||||
excel.setErrInfo("添加失败", i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
// 添加错误记录
|
||||
excelImportRes.setErrorDetails(excelList.stream().filter(s -> StrUtil.isNotBlank(s.getErrMsg())).collect(Collectors.toList()));
|
||||
excelImportRes.setFailedCount(excelImportRes.getErrorDetails().size());
|
||||
|
||||
return Result.success(excelImportRes);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+4
-1
@@ -6,6 +6,7 @@ import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.TeacherCongressDelegateManagePageParam;
|
||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.service.TeacherCongressDelegateService;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
@@ -49,13 +50,15 @@ public class TeacherCongressDelegateReadController {
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("tc.delegate.read")
|
||||
@ApiOperation("导出xlsx")
|
||||
public void exportXlsx(TeacherCongressDelegateManagePageParam param, HttpServletResponse response) {
|
||||
teacherDelegateService.exportXlsx(param, response);
|
||||
}
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@SaCheckPermission("tc.delegate.read.exportDocx")
|
||||
@SaCheckPermission("tc.delegate.read")
|
||||
@ApiOperation("导出docx")
|
||||
public void exportDocx(TeacherCongressDelegateManagePageParam param, HttpServletResponse response){
|
||||
teacherDelegateService.exportDocx(param, response);
|
||||
}
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.budwk.app.zhgh.democratic.teachercongress.delegate.mode;
|
||||
|
||||
import cn.afterturn.easypoi.excel.annotation.Excel;
|
||||
import com.budwk.app.base.model.ExcelImportError;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 教代会代表导入模板
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class TeacherCongressImportExcel extends ExcelImportError {
|
||||
|
||||
@Excel(name = "工号")
|
||||
private String loginName;
|
||||
|
||||
@Excel(name = "姓名")
|
||||
private String userName;
|
||||
|
||||
@Excel(name = "代表团")
|
||||
private String delegationName;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user