diff --git a/src/main/java/com/budwk/app/MainLauncher.java b/src/main/java/com/budwk/app/MainLauncher.java index d6997122..5eafcebb 100644 --- a/src/main/java/com/budwk/app/MainLauncher.java +++ b/src/main/java/com/budwk/app/MainLauncher.java @@ -2,6 +2,7 @@ package com.budwk.app; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.config.SaTokenConfig; +import com.budwk.app.base.utils.AppIocUtil; import com.budwk.app.flow.engine.FlowEngine; import com.budwk.app.sys.services.SysTaskService; import com.budwk.app.task.services.TaskPlatformService; @@ -81,6 +82,8 @@ public class MainLauncher { init_auth(); ioc.get(Globals.class); ioc.get(FlowEngine.class); + + AppIocUtil.setIoc(ioc); } public void init_auth() { diff --git a/src/main/java/com/budwk/app/base/event/user/Test2SysUserEventListener.java b/src/main/java/com/budwk/app/base/event/user/Test2SysUserEventListener.java deleted file mode 100644 index a80ae48c..00000000 --- a/src/main/java/com/budwk/app/base/event/user/Test2SysUserEventListener.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.budwk.app.base.event.user; - -import org.nutz.ioc.loader.annotation.IocBean; - -@IocBean -public class Test2SysUserEventListener implements SysUserEventListener{ - - @Override - public void onEvent(SysUserEvent event) { - System.out.println("-----------------------------------"); - System.out.println(event); - } -} diff --git a/src/main/java/com/budwk/app/base/event/user/TestSysUserEventListener.java b/src/main/java/com/budwk/app/base/event/user/TestSysUserEventListener.java deleted file mode 100644 index 9785a6b1..00000000 --- a/src/main/java/com/budwk/app/base/event/user/TestSysUserEventListener.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.budwk.app.base.event.user; - -import org.nutz.ioc.loader.annotation.IocBean; - -@IocBean -public class TestSysUserEventListener implements SysUserEventListener{ - - @Override - public void onEvent(SysUserEvent event) { - System.out.println("-----------------------------------"); - System.out.println(event); - } -} diff --git a/src/main/java/com/budwk/app/base/event/user/UserChangeEventListener.java b/src/main/java/com/budwk/app/base/event/user/UserChangeEventListener.java new file mode 100644 index 00000000..5fd409a8 --- /dev/null +++ b/src/main/java/com/budwk/app/base/event/user/UserChangeEventListener.java @@ -0,0 +1,13 @@ +package com.budwk.app.base.event.user; + +/** + * @version 1.0 + * @Author zzr + * @name:UserChangeEventListener + * @Date 2025/8/13 14:18 + * @注释 + */ +public interface UserChangeEventListener { + + void receive(UserChangeMsg message); +} diff --git a/src/main/java/com/budwk/app/base/event/user/UserChangeMsg.java b/src/main/java/com/budwk/app/base/event/user/UserChangeMsg.java new file mode 100644 index 00000000..5af39d1c --- /dev/null +++ b/src/main/java/com/budwk/app/base/event/user/UserChangeMsg.java @@ -0,0 +1,70 @@ +package com.budwk.app.base.event.user; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @version 1.0 + * @Author zzr + * @name:UserChangeMsg + * @Date 2025/8/13 11:51 + * @注释 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserChangeMsg { + + /** + * 变更资源,用户Id + */ + private List userIds; + + /** + * 操作类型 + */ + private Integer operationType; + + /** + * 变更前的单位Id,当operationType值为1时,该字段有效 + */ + private String sourceUnitId; + + /** + * 变更后的单位Id,当operationType值为1时,该字段有效 + */ + private String targetUnitId; + + /** + * 单位变动 + */ + public final static int UNIT_CHANGE_OPERATION = 1; + + /** + * 退休 + */ + public final static int RETIRE_OPERATION = 2; + + /** + * 入会 + */ + public final static int RESTORE_OPERATION = 3; + + + public UserChangeMsg(List userIds, Integer operationType) { + super(); + this.userIds = userIds; + this.operationType = operationType; + } + + + public UserChangeMsg(List userIds, Integer operationType, String sourceUnitId) { + super(); + this.userIds = userIds; + this.operationType = operationType; + this.sourceUnitId = sourceUnitId; + } +} diff --git a/src/main/java/com/budwk/app/base/event/user/UserChangePublisher.java b/src/main/java/com/budwk/app/base/event/user/UserChangePublisher.java new file mode 100644 index 00000000..1d086f57 --- /dev/null +++ b/src/main/java/com/budwk/app/base/event/user/UserChangePublisher.java @@ -0,0 +1,25 @@ +package com.budwk.app.base.event.user; + +import com.budwk.app.base.utils.AppIocUtil; +import org.nutz.ioc.Ioc; + +/** + * @version 1.0 + * @Author zzr + * @name:UserChangePublisher + * @Date 2025/8/13 14:23 + * @注释 + */ +public class UserChangePublisher { + + // 发送消息给所有订阅者 + public static void broadcast(UserChangeMsg msg) { + Ioc ioc = AppIocUtil.get(); + + String[] names = ioc.getNamesByType(UserChangeEventListener.class); + for (String listener : names) { + UserChangeEventListener listenerBean = ioc.get(UserChangeEventListener.class, listener); + listenerBean.receive(msg); + } + } +} diff --git a/src/main/java/com/budwk/app/base/utils/AppIocUtil.java b/src/main/java/com/budwk/app/base/utils/AppIocUtil.java new file mode 100644 index 00000000..3a236613 --- /dev/null +++ b/src/main/java/com/budwk/app/base/utils/AppIocUtil.java @@ -0,0 +1,27 @@ +package com.budwk.app.base.utils; + +import org.nutz.ioc.Ioc; + +/** + * @version 1.0 + * @Author zzr + * @name:AppIocUtil + * @Date 2025/8/26 17:40 + * @注释 + */ +public class AppIocUtil { + + private static Ioc ioc; + + public static void setIoc(Ioc ioc) { + AppIocUtil.ioc = ioc; + } + + public static Ioc get() { + if (ioc == null) { + throw new IllegalStateException("Ioc not initialized yet!"); + } + return ioc; + } + +} diff --git a/src/main/java/com/budwk/app/flow/controller/FlowCategoryController.java b/src/main/java/com/budwk/app/flow/controller/FlowCategoryController.java index f86fc866..bb855bb1 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowCategoryController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowCategoryController.java @@ -1,15 +1,29 @@ package com.budwk.app.flow.controller; import cn.dev33.satoken.annotation.SaCheckLogin; +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.flow.entity.ProcessCategory; +import com.budwk.app.flow.entity.ProcessDefine; +import com.budwk.app.flow.entity.ProcessDesign; +import com.budwk.app.flow.service.ProcessDefineService; +import com.budwk.app.zhgh.club.model.SysClubRule; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.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.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; import java.util.List; @@ -21,12 +35,59 @@ public class FlowCategoryController { @Inject private Dao dao; + @Inject + private ProcessDefineService defineService; - @At + @At("") + @Ok("beetl:/platform/flow/category/index.html") + @SaCheckLogin + public void index() {} + + @At + @ApiOperation("分页查询") + @SaCheckPermission("flow.category") + public Result pageData(PageForm pageForm, String name) { + Sql sql = Sqls.create(""" + select + *, + (select count(1) from wf_process_design where category = pc.id) as categoryCount + from + wf_process_category pc + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and(Cnd.likeEX(ProcessCategory::getName, name)); + sql.setCondition(cnd); + Pagination pagination = defineService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("flow.category") + @SLog(tag = "流程管理-流程分类", msg = "新增/编辑流程分类") + public Result submit(ProcessCategory category) { + dao.insertOrUpdate(category); + return Result.success(); + } + + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("flow.category") + @SLog(tag = "流程管理-流程分类", msg = "删除流程分类") + public Result delete(String id) { + int count = dao.count(ProcessDesign.class, Cnd.where(ProcessDesign::getCategory, "=", id)); + if(count > 0) { + return Result.error("此分类已关联%s个流程,无法删除".formatted(count)); + } + dao.delete(ProcessCategory.class, id); + return Result.success(); + } + + @At @SaCheckLogin public Result list() { List list = dao.query(ProcessCategory.class, Cnd.NEW()); return Result.success(list); } - } diff --git a/src/main/java/com/budwk/app/flow/controller/FlowDefineController.java b/src/main/java/com/budwk/app/flow/controller/FlowDefineController.java index 05c2c9e8..d80e4cbe 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowDefineController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowDefineController.java @@ -1,11 +1,14 @@ package com.budwk.app.flow.controller; import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.StrUtil; 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.flow.entity.ProcessDefine; +import com.budwk.app.flow.entity.ProcessDesign; import com.budwk.app.flow.entity.ProcessInstance; import com.budwk.app.flow.service.ProcessDefineService; import io.swagger.annotations.Api; @@ -13,14 +16,18 @@ import io.swagger.annotations.ApiOperation; 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.servlet.http.HttpServletRequest; +import java.util.List; @IocBean @At("/flow/define") @@ -35,7 +42,7 @@ public class FlowDefineController { @At("") @Ok("beetl:/platform/flow/define/index.html") - @SaCheckLogin + @SaCheckPermission("flow.define") public void index() { } @@ -56,11 +63,10 @@ public class FlowDefineController { } - @At - @SaCheckLogin @ApiOperation("删除流程定义") @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("flow.define") public Result delete(@Param("id") Long id) { int count = dao.count(ProcessInstance.class, Cnd.where(ProcessInstance::getProcessDefineId, "=", id)); if (count > 0) { @@ -79,17 +85,44 @@ public class FlowDefineController { } @At - @SaCheckLogin @ApiOperation("获取流程定义分页列表") - public Result pageData(Integer pageNumber, Integer pageSize, String type, String name, String displayName) { - Cnd cnd = Cnd.NEW(); - Pagination pagination = processDefineService.listPage(pageNumber, pageSize, cnd); - return Result.success(pagination); + @SaCheckPermission("flow.define") + public Result pageData(PageForm pageForm, String displayName, String name, String category) { + Sql sql = Sqls.create(""" + SELECT + *, + ROW_NUMBER() OVER (ORDER BY name ) AS rowNum + FROM + ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY NAME ORDER BY version DESC ) AS rn FROM wf_process_define ) t + $condition + """); + Cnd cnd = Cnd.NEW(); + + cnd.and("rn", "=", 1); + cnd.and(Cnd.likeEX(ProcessDesign::getDisplayName, displayName)); + cnd.and(Cnd.likeEX(ProcessDesign::getName, name)); + cnd.andEX(ProcessDesign::getCategory, "=", category); + + sql.setCondition(cnd); + Pagination pagination = processDefineService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + + List list = pagination.getList(NutMap.class); + for (NutMap nutMap : list) { + List defineList = dao.query( + ProcessDefine.class, + Cnd.where(ProcessDefine::getName, "=", nutMap.getString("name")) + .and("id", "!=", nutMap.getString("id")) + .desc(ProcessDefine::getVersion) + ); + nutMap.put("children", defineList); + } + + return Result.success(pagination); } @At - @SaCheckLogin @ApiOperation("启用流程定义") + @SaCheckPermission("flow.define") public Result enable(@Param("id") Long id) { ProcessDefine define = new ProcessDefine(); define.setId(id); @@ -99,8 +132,8 @@ public class FlowDefineController { } @At - @SaCheckLogin @ApiOperation("禁用流程定义") + @SaCheckPermission("flow.define") public Result disable(@Param("id") Long id) { ProcessDefine define = new ProcessDefine(); define.setId(id); @@ -108,6 +141,4 @@ public class FlowDefineController { dao.updateIgnoreNull(define); return Result.success(); } - - } diff --git a/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java b/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java index 98cb4473..de4973bc 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowDesignController.java @@ -1,10 +1,12 @@ package com.budwk.app.flow.controller; import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.lang.ClassScanner; import cn.hutool.core.util.ReflectUtil; import cn.hutool.json.JSONObject; 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.flow.engine.AssignmentHandler; import com.budwk.app.flow.engine.CandidateHandler; @@ -89,10 +91,9 @@ public class FlowDesignController { CANDIDATE_HANDLER_LIST = Collections.unmodifiableList(list); } - @At("") @Ok("beetl:/platform/flow/design/index.html") - @SaCheckLogin + @SaCheckPermission("flow.design") public void index() { } @@ -104,17 +105,23 @@ public class FlowDesignController { } @At - @SaCheckLogin @ApiOperation("获取流程设计分页列表") - public Result pageData(Integer pageNumber, Integer pageSize, String name, String key, String category) { + @SaCheckPermission("flow.design") + public Result pageData(PageForm pageForm, String displayName, String name, String category, Boolean deployed) { Cnd cnd = Cnd.NEW(); - Pagination pagination = processDesignService.listPage(pageNumber, pageSize, cnd); + + cnd.and(Cnd.likeEX(ProcessDesign::getDisplayName, displayName)); + cnd.and(Cnd.likeEX(ProcessDesign::getName, name)); + cnd.andEX(ProcessDesign::getCategory, "=", category); + cnd.andEX(ProcessDesign::getIsDeployed, "=", deployed); + + Pagination pagination = processDesignService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); return Result.success(pagination); } @At - @SaCheckLogin @ApiOperation("保存流程设计") + @SaCheckPermission("flow.design") public Result insert(@Param("design") ProcessDesign processDesign) { JSONObject jsonObject = new JSONObject(); jsonObject.set("name", processDesign.getName()); @@ -132,8 +139,8 @@ public class FlowDesignController { } @At - @SaCheckLogin @ApiOperation("修改流程设计") + @SaCheckPermission("flow.design") public Result update(@Param("design") ProcessDesign processDesign) { JSONObject jsonObject = processDesign.getContent(); jsonObject.set("name", processDesign.getName()); @@ -151,8 +158,8 @@ public class FlowDesignController { } @At - @SaCheckLogin @ApiOperation("修改流程设计") + @SaCheckPermission("flow.design") public Result updateContent(@Param("design") ProcessDesign processDesign) { JSONObject jsonObject = processDesign.getContent(); jsonObject.set("name", processDesign.getName()); @@ -170,8 +177,8 @@ public class FlowDesignController { } @At - @SaCheckLogin @ApiOperation("删除流程设计") + @SaCheckPermission("flow.design") public Result delete(@Param("id") Long id) { dao.delete(ProcessDesign.class, id); return Result.success(); @@ -186,9 +193,9 @@ public class FlowDesignController { } @At - @SaCheckLogin @ApiOperation("发布流程设计") @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("flow.design") public Result deploy(@Param("id") Long id) { processDesignService.deploy(id); return Result.success(); @@ -230,5 +237,4 @@ public class FlowDesignController { List list = sysUserService.listMap(sql); return Result.success(list); } - } diff --git a/src/main/java/com/budwk/app/sys/controller/SysUnitController.java b/src/main/java/com/budwk/app/sys/controller/SysUnitController.java index 085fad50..b280fab3 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysUnitController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysUnitController.java @@ -292,7 +292,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> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "1")); + List> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "0000")); // NutMap menuMap = NutMap.NEW(); // for (Sys_unit unit : list) { diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java index 8ea10be8..07234bc7 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/apply/ClubUserJoinMineController.java @@ -1,5 +1,6 @@ package com.budwk.app.zhgh.club.controller.apply; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; import com.budwk.app.base.annotation.SLog; @@ -113,7 +114,7 @@ public class ClubUserJoinMineController { @At @ApiOperation("申请详情") - @SaCheckPermission("club") + @SaCheckLogin public Result info(@Valid String id) { Sql sql = Sqls.create(""" SELECT diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java b/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java index 80c3e942..b54162f6 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/common/ClubCommonController.java @@ -42,7 +42,7 @@ public class ClubCommonController { private SysRoleService sysRoleService; @At - @SaCheckPermission("club") + @SaCheckLogin public Result listClub() { Sql sql = Sqls.create(""" SELECT diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/evaluate/ClubEvaluateApplyController.java b/src/main/java/com/budwk/app/zhgh/club/controller/evaluate/ClubEvaluateApplyController.java index 3410d119..2dba229d 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/evaluate/ClubEvaluateApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/evaluate/ClubEvaluateApplyController.java @@ -1,5 +1,6 @@ package com.budwk.app.zhgh.club.controller.evaluate; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; @@ -134,7 +135,7 @@ public class ClubEvaluateApplyController { } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getMyClubAndYearAuditPass(Integer year) { //List list = sysClubService.getMyClubAndYearAuditPass(year); diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/examine/ClubExamineApplyController.java b/src/main/java/com/budwk/app/zhgh/club/controller/examine/ClubExamineApplyController.java index 1997fbda..e02d046c 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/examine/ClubExamineApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/examine/ClubExamineApplyController.java @@ -1,5 +1,6 @@ package com.budwk.app.zhgh.club.controller.examine; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; @@ -65,7 +66,7 @@ public class ClubExamineApplyController { } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getCount(@Valid String id, @Valid Integer year) { List list = dao.query(SysClubExamineRegister.class, Cnd.where("clubId", "=", id).and("year(registerDate)", "=", year)); List instanceList = dao.query( @@ -77,28 +78,28 @@ public class ClubExamineApplyController { } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getClubsByRole() { List myManageClub = sysClubService.getMyManageClub(); return Result.success(myManageClub); } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getClubUserNum(@Valid String clubId) { List result = sysClubExamineService.getClubUserNum(clubId); return Result.success(result); } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getJgUser(@Valid String clubId) { List result = sysClubExamineService.getJgUser(clubId); return Result.success(result); } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getClubMemberMoney(@Valid String clubId) { int count = dao.count(ClubUser.class, Cnd.where("clubId", "=", clubId)); SysClub club = dao.fetch(SysClub.class, clubId); @@ -107,7 +108,7 @@ public class ClubExamineApplyController { } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getXghBkMoney(@Valid String clubId) { /*jf_club club = dao().fetch(jf_club.class, Cnd.where("club_id", "=", id)); Double total_quota = Double.valueOf(club.getTotal_quota());*/ @@ -115,7 +116,7 @@ public class ClubExamineApplyController { } @At - @SaCheckPermission("club") + @SaCheckLogin public Result getLasYearSurplus(@Valid String clubId) { SysClubExamineRegister register = dao.fetch(SysClubExamineRegister.class, Cnd.where("clubId", "=", clubId) .and("YEAR(registerDate)", "=", DateUtil.thisYear() - 1)); diff --git a/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java b/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java index d3760b60..f2b68d7d 100644 --- a/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/club/controller/register/ClubRegistApplyController.java @@ -1,5 +1,6 @@ package com.budwk.app.zhgh.club.controller.register; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; @@ -150,7 +151,7 @@ public class ClubRegistApplyController { } @At - @SaCheckPermission("club") + @SaCheckLogin public Result queryUserByIds(@Valid String[] ids) { Cnd cnd = Cnd.NEW(); Sql sql = Sqls.create(""" @@ -173,14 +174,14 @@ public class ClubRegistApplyController { } @At - @SaCheckPermission("club") + @SaCheckLogin public Result info(@Valid String id) { ClubRegisterVo clubRegisterVo = sysClubService.findOne(id); return Result.success(clubRegisterVo); } @At - @SaCheckPermission("club") + @SaCheckLogin public Result createCode() { int count = sysClubService.count(Cnd.where("year(createTime)", "=", DateUtil.thisYear())); String s = String.format("%02d", count + 1); diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/cadreTraining/param/CadreTrainingActPageForm.java b/src/main/java/com/budwk/app/zhgh/dayofficework/cadreTraining/param/CadreTrainingActPageForm.java index a74fc310..00c53ad3 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/cadreTraining/param/CadreTrainingActPageForm.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/cadreTraining/param/CadreTrainingActPageForm.java @@ -6,7 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; -@ApiModel("疗休养综合查询查询参数") +@ApiModel("干部培训综合查询查询参数") @EqualsAndHashCode(callSuper = true) @Data public class CadreTrainingActPageForm extends PageForm { diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceApplyController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceApplyController.java new file mode 100644 index 00000000..12f29677 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceApplyController.java @@ -0,0 +1,176 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.date.DateUtil; +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.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.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.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.staffbenefit.maternityLeave.models.MaternityLeave; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceUserInfo; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService; +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.SqlExpressionGroup; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Strings; +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 java.util.Date; +import java.util.List; + +/** + * @version 1.0 + * @Author zzr + * @name:MutualInsuranceApplyController + * @Date 2024/11/23 14:34 + * @注释 + */ + +@IocBean +@At("/platform/mutualInsurance/apply") +@Api("互助保障申请") +@Ok("json:full") +@Slf4j +public class MutualInsuranceApplyController { + + @Inject + private Dao dao; + @Inject + private BaseService baseService; + @Inject + private FlowEngine flowEngine; + @Inject + private FlowCommonService flowCommonService; + @Inject + private MutualInsuranceUserService mutualInsuranceUserService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/mutualInsurance/apply/index.html") + @SaCheckPermission("mutualInsurance.apply") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/apply/index.html") + @SaCheckPermission("h5.mutualInsurance.apply") + public void h5Index() { + } + + @At + @ApiOperation("保存申请") + @SaCheckPermission(value = {"mutualInsurance.apply", "h5.mutualInsurance.apply"}, mode = SaMode.OR) + @SLog(tag = "生育休假-休假申请", msg = "保存休假申请") + public Result save(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo) { + if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date()); + dao.insertOrUpdate(mutualInsuranceUserInfo); + return Result.success(); + } + + @At + @ApiOperation("提交申请") + @SaCheckPermission(value = {"mutualInsurance.apply", "h5.mutualInsurance.apply"}, mode = SaMode.OR) + public Result submit(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo) { + if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date()); + + dao.insertOrUpdate(mutualInsuranceUserInfo); + // 开启流程实例 + Dict args = Dict.create(); + args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); + args.set(FlowConst.FORM_DATA, mutualInsuranceUserInfo); + ProcessInstance instance = flowEngine.startProcessInstanceByKey("SJHZBZ", mutualInsuranceUserInfo.getId(), SecurityUtil.getUserId(), args); + + // 自动完成第一个申请任务 + List doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null); + for (ProcessTask task : doingTaskList) { + flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args); + } + return Result.success(); + } + + @At + @ApiOperation("重新提交申请") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"mutualInsurance.apply", "h5.mutualInsurance.apply"}, mode = SaMode.OR) + public Result submitAgain(@Param("data") MutualInsuranceUserInfo mutualInsuranceUserInfo, @Param("taskId") Long taskId) { + if (StrUtil.isBlank(mutualInsuranceUserInfo.getId())) mutualInsuranceUserInfo.setApplyTime(new Date()); + + dao.insertOrUpdate(mutualInsuranceUserInfo); + + 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 + @SaCheckLogin + public Result findOne(String id) { + return Result.success(baseService.dao().fetch(MutualInsuranceUserInfo.class, id)); + } + + @At + @ApiOperation("获取受助人") + @SaCheckPermission("mutualInsurance.apply") + public Result queryRecipients(String key){ + Sql sql = Sqls.create(""" + SELECT + id, + loginname, + username, + birthday, + mobile, + sex, + unitName, + unionName, + unionId, + unitId + FROM + `vw_user` + $condition + """); + Cnd cnd = Cnd.NEW(); + + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { + if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name())) { + cnd.and("unionId", "=", SecurityUtil.getUnionId()); + } else { + cnd.and("id", "=", SecurityUtil.getUserId()); + } + } + if (Strings.isNotBlank(key)) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.orLike("username", key); + group.orLike("loginname", key); + cnd.and(group); + } + sql.setCondition(cnd); + Pagination pagination = mutualInsuranceUserService.listPageMap(1, 10, sql); + return Result.success().addData(pagination.getList()); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceCollectController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceCollectController.java new file mode 100644 index 00000000..60edaa44 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceCollectController.java @@ -0,0 +1,182 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +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.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.flow.engine.FlowEngine; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.staffbenefit.maternityLeave.vo.MaternityLeaveCollectExcelVO; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.vo.MutualInsuranceCollectExcelVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/23 17:38 + */ + +@IocBean +@At("/platform/mutualInsurance/collect") +@Api("查询统计") +@Ok("json:full") +@Slf4j +public class MutualInsuranceCollectController { + + @Inject + private FlowEngine flowEngine; + @Inject + private MutualInsuranceUserService mutualInsuranceUserService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/mutualInsurance/collect/index.html") + @SaCheckPermission("mutualInsurance.collect") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/collect/index.html") + @SaCheckPermission("h5.mutualInsurance.collect") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"mutualInsurance.collect", "h5.mutualInsurance.collect"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + String projectId, + String unionId, + String unitId, + String userName, + String sex) { + 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') AS startTaskId + FROM + mutual_insurance_user_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(); + // 年度查询条件 +// cnd.andEX("year(info.applyTime)", "=", year); + + //事项id查询 + cnd.andEX("info.projectId", "=", projectId); + + // 工会、单位名称查询条件 + cnd.andEX("info.unionId", "=", unionId); + cnd.andEX("info.unitId", "=", unitId); + + // 性别查询条件 + cnd.andEX("info.sex", "=", sex); + + // 姓名查询条件 + if (StrUtil.isNotBlank(userName)) { + cnd.and("info.userName", "like", "%" + userName + "%"); + } + + // 只查询流程实例状态为20的数据(已完成状态) + cnd.and("ins.state", "=", 20); + + cnd.desc("info.applyTime"); + sql.setCondition(cnd); + Pagination pagination = mutualInsuranceUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"mutualInsurance.collect", "h5.mutualInsurance.collect"}, mode = SaMode.OR) + @SLog( tag = "删除工会报销", msg = "删除工会报销") + public Result delete(@Param("id") String id) { + mutualInsuranceUserService.delete(id); + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + return Result.success(); + } + + @At + @Ok("void") + @SaCheckPermission(value = {"maternityLeave.collect", "h5.maternityLeave.collect"}, mode = SaMode.OR) + @ApiOperation("导出省级互助保障表") + public void onExport(@Param(value = "projectId") String projectId, + @Param(value = "unionId") String unionId, + @Param(value = "unitId") String unitId, + @Param(value = "userName") String userName, + @Param(value = "sex") String sex, + HttpServletResponse response) { + //查询审核通过的数据 + Sql sql = Sqls.create(""" + SELECT + info.*, + ins.state instanceState + FROM + mutual_insurance_user_info info + LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id + $condition + """); + Cnd cnd = Cnd.NEW(); + if (StrUtil.isNotBlank(userName)) { + cnd.and("info.userName", "like", "%" + userName + "%"); + } + cnd.andEX("info.projectId", "=", projectId); + cnd.andEX("info.unionId", "=", unionId); + cnd.andEX("info.unitId", "=", unitId); + cnd.andEX("info.sex", "=", sex); + cnd.and("ins.state", "=", 20); + + cnd.desc("info.applyTime"); + sql.setCondition(cnd); + List list = mutualInsuranceUserService.listVO(sql, MutualInsuranceCollectExcelVO.class); + + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, MutualInsuranceCollectExcelVO.class, list); + CommonDownloadUtil.download("省级互助保障申请表.xlsx", workbook, response); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceMineController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceMineController.java new file mode 100644 index 00000000..3f7c16df --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceMineController.java @@ -0,0 +1,109 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +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.flow.engine.FlowEngine; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService; +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.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; + +/** + * @version 1.0 + * @Author zzr + * @name:ZheJiangMutualInsuranceMineController + * @Date 2024/11/23 14:34 + * @注释 + */ + +@IocBean +@At("/platform/mutualInsurance/mine") +@Api("我的申请") +@Ok("json:full") +@Slf4j +public class MutualInsuranceMineController { + + @Inject + private FlowEngine flowEngine; + @Inject + private MutualInsuranceUserService mutualInsuranceUserService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/mutualInsurance/mine/index.html") + @SaCheckPermission("mutualInsurance.mine") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/mine/index.html") + @SaCheckPermission("h5.mutualInsurance.mine") + public void h5Index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"mutualInsurance.mine", "h5.mutualInsurance.mine"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, @Param(value = "year") Integer year) { + 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') AS startTaskId + FROM + mutual_insurance_user_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(); + // 年度查询条件 + cnd.andEX("year(info.applyTime)", "=", year); + cnd.desc("info.applyTime"); + cnd.and("info.userId", "=", SecurityUtil.getUserId()); + sql.setCondition(cnd); + Pagination pagination = mutualInsuranceUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"mutualInsurance.mine", "h5.mutualInsurance.mine"}, mode = SaMode.OR) + @SLog( tag = "删除工会报销", msg = "删除工会报销") + public Result delete(@Param("id") String id) { + mutualInsuranceUserService.delete(id); + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + return Result.success(); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceProjectController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceProjectController.java new file mode 100644 index 00000000..d43cbe8e --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceProjectController.java @@ -0,0 +1,127 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.date.DateUtil; +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.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.sys.models.Sys_home_activity; +import com.budwk.app.zhgh.dayofficework.cadreTraining.model.CadreTrainingAct; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceProject; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceProjectService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.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; + + +/** + * @version 1.0 + * @Author zzr + * @name:MutualInsuranceProjectController + * @Date 2024/11/23 14:33 + * @注释 + */ + +@IocBean +@At("/platform/mutualInsurance/project") +@Api("项目管理") +@Ok("json:full") +@Slf4j +public class MutualInsuranceProjectController { + + @Inject + private Dao dao; + @Inject + private MutualInsuranceProjectService mutualInsuranceProjectService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/mutualInsurance/project/index.html") + @SaCheckPermission("mutualInsurance.project") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/project/index.html") + @SaCheckPermission("h5.mutualInsurance.project") + public void h5Index() { + } + + @At + @ApiOperation("事项分页") + @SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR) + public Result pageData(@Valid PageForm pageForm, Integer year) { + Cnd cnd = Cnd.NEW(); + cnd.andEX("year", "=", year); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + cnd.and(Cnd.likeEX("projectName", pageForm.getSearchKeyword())); + } + Pagination pagination = mutualInsuranceProjectService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), cnd); + return Result.success(pagination); + } + + + @At + @ApiOperation("事项保存") + @SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR) + public Result save( @Param("data")MutualInsuranceProject mutualInsuranceProject) { + if (StrUtil.isBlank(mutualInsuranceProject.getId())) mutualInsuranceProject.setYear(DateUtil.thisYear()); + dao.insertOrUpdate(mutualInsuranceProject); + return Result.success(); + } + + @At + @ApiOperation("状态切换") + @SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR) + public Result switchChange(MutualInsuranceProject mutualInsuranceProject) { + mutualInsuranceProjectService.updateIgnoreNull(mutualInsuranceProject); + return Result.success(); + } + + + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR) + public Result delete(@Param("id") String id) { + mutualInsuranceProjectService.delete(id); + dao.clear(CadreTrainingAct.class, Cnd.where(CadreTrainingAct::getId, "=", id)); + return Result.success(); + } + + + @At + @ApiOperation("查询事项列表") + @SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR) + public Result listProject(Integer year){ + Cnd cnd = Cnd.NEW(); + cnd.andEX("`year`", "=", year == null ? DateUtil.thisYear() : year); + cnd.and("isOpen", "=", true); + List query = mutualInsuranceProjectService.query(cnd); + return Result.success(query); + } + + + @At + @SaCheckPermission(value = {"mutualInsurance.project", "h5.mutualInsurance.project"}, mode = SaMode.OR) + public Result findOne(String id){ + MutualInsuranceProject project = mutualInsuranceProjectService.fetch(id); + return Result.success(project); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceSchoolAuditController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceSchoolAuditController.java new file mode 100644 index 00000000..ab2ed14d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceSchoolAuditController.java @@ -0,0 +1,130 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +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.SecurityUtil; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService; +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; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/23 17:35 + */ + +@IocBean +@At("/platform/mutualInsurance/schoolAudit") +@Api("校工会审核") +@Ok("json:full") +@Slf4j +public class MutualInsuranceSchoolAuditController { + + @Inject + private MutualInsuranceUserService mutualInsuranceUserService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/mutualInsurance/schoolAudit/index.html") + @SaCheckPermission("mutualInsurance.schoolAudit") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/schoolAudit/index.html") + @SaCheckPermission("h5.mutualInsurance.schoolAudit") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"mutualInsurance.schoolAudit", "h5.mutualInsurance.schoolAudit"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + boolean approval, + String projectId, + String unionId, + String unitId, + String userName, + String sex) { + 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 mutual_insurance_user_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", "=", "3e4e3785-64f4-4e7c-89bc-ea54dca216cd"); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + + if (approval) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + // 年度查询条件 +// cnd.andEX("year(info.applyTime)", "=", year); + + //事项id查询 + cnd.andEX("info.projectId", "=", projectId); + + // 工会、单位名称查询条件 + cnd.andEX("info.unionId", "=", unionId); + cnd.andEX("info.unitId", "=", unitId); + + // 性别查询条件 + cnd.andEX("info.sex", "=", sex); + + // 姓名查询条件 + if (StrUtil.isNotBlank(userName)) { + cnd.and("info.userName", "like", "%" + userName + "%"); + } + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("info.applyTime"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + cnd.groupBy("t.id"); + cnd.desc("t.createdAt"); + sql.setCondition(cnd); + Pagination pagination = mutualInsuranceUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceSecretaryAuditController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceSecretaryAuditController.java new file mode 100644 index 00000000..e09183a3 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceSecretaryAuditController.java @@ -0,0 +1,130 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +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.SecurityUtil; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService; +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; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/23 17:42 + */ + +@IocBean +@At("/platform/mutualInsurance/secretaryAudit") +@Api("党委书记审核") +@Ok("json:full") +@Slf4j +public class MutualInsuranceSecretaryAuditController { + + @Inject + private MutualInsuranceUserService mutualInsuranceUserService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/mutualInsurance/secretaryAudit/index.html") + @SaCheckPermission("mutualInsurance.secretaryAudit") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/secretaryAudit/index.html") + @SaCheckPermission("h5.mutualInsurance.secretaryAudit") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"mutualInsurance.secretaryAudit", "h5.mutualInsurance.secretaryAudit"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + boolean approval, + String projectId, + String unionId, + String unitId, + String userName, + String sex) { + 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 mutual_insurance_user_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", "=", "8567fa6e-7207-4958-ab82-767e22d04159"); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + + if (approval) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + // 年度查询条件 +// cnd.andEX("year(info.applyTime)", "=", year); + + //事项id查询 + cnd.andEX("info.projectId", "=", projectId); + + // 工会、单位名称查询条件 + cnd.andEX("info.unionId", "=", unionId); + cnd.andEX("info.unitId", "=", unitId); + + // 性别查询条件 + cnd.andEX("info.sex", "=", sex); + + // 姓名查询条件 + if (StrUtil.isNotBlank(userName)) { + cnd.and("info.userName", "like", "%" + userName + "%"); + } + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("info.applyTime"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + cnd.groupBy("t.id"); + cnd.desc("t.createdAt"); + sql.setCondition(cnd); + Pagination pagination = mutualInsuranceUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceUnionAuditController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceUnionAuditController.java new file mode 100644 index 00000000..7dde774a --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/controller/MutualInsuranceUnionAuditController.java @@ -0,0 +1,130 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +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.SecurityUtil; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService; +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; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/23 17:35 + */ + +@IocBean +@At("/platform/mutualInsurance/unionAudit") +@Api("分工会审核") +@Ok("json:full") +@Slf4j +public class MutualInsuranceUnionAuditController { + + @Inject + private MutualInsuranceUserService mutualInsuranceUserService; + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/mutualInsurance/unionAudit/index.html") + @SaCheckPermission("mutualInsurance.unionAudit") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/mutualInsurance/unionAudit/index.html") + @SaCheckPermission("h5.mutualInsurance.unionAudit") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"mutualInsurance.unionAudit", "h5.mutualInsurance.unionAudit"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + boolean approval, + String projectId, + String unionId, + String unitId, + String userName, + String sex) { + 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 mutual_insurance_user_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", "=", "7e4a33fb-cd1e-4373-9bc5-815125568471"); + cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); + + if (approval) { + cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode())); + } else { + cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); + } + // 年度查询条件 +// cnd.andEX("year(info.applyTime)", "=", year); + + //事项id查询 + cnd.andEX("info.projectId", "=", projectId); + + // 工会、单位名称查询条件 + cnd.andEX("info.unionId", "=", unionId); + cnd.andEX("info.unitId", "=", unitId); + + // 性别查询条件 + cnd.andEX("info.sex", "=", sex); + + // 姓名查询条件 + if (StrUtil.isNotBlank(userName)) { + cnd.and("info.userName", "like", "%" + userName + "%"); + } + if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.desc("info.applyTime"); + } else { + cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); + } + cnd.groupBy("t.id"); + cnd.desc("t.createdAt"); + sql.setCondition(cnd); + Pagination pagination = mutualInsuranceUserService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/model/MutualInsuranceProject.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/model/MutualInsuranceProject.java new file mode 100644 index 00000000..47ef1a10 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/model/MutualInsuranceProject.java @@ -0,0 +1,73 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.model; + + +import cn.hutool.json.JSONObject; +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/23 16:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Table("mutual_insurance_project") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("省级互助保障") +public class MutualInsuranceProject extends BaseModel implements Serializable { + + @Column + @Name + @Comment("id") + @ColDefine(type = ColType.VARCHAR, width = 32) + @Prev(els = {@EL("uuid()")}) + private String id; + + @Column + @Comment("年度") + @ColDefine(type = ColType.INT) + private Integer year; + + @Column + @Comment("项目名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String projectName; + + @Column + @Comment("开始时间") + @ColDefine(type = ColType.DATETIME) + private Date startTime; + + @Column + @Comment("结束时间") + @ColDefine(type = ColType.DATETIME) + private Date endTime; + + @Column + @Comment("详细信息") + @ColDefine(type = ColType.TEXT) + private String content; + + @Column + @Comment("是否发布") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isOpen; + + @Column + @Comment("封面") + @ColDefine(type = ColType.MYSQL_JSON) + private List cover; + + @Column + @Comment("附件") + @ColDefine(type = ColType.MYSQL_JSON) + private List files; + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/model/MutualInsuranceUserInfo.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/model/MutualInsuranceUserInfo.java new file mode 100644 index 00000000..2f021d2e --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/model/MutualInsuranceUserInfo.java @@ -0,0 +1,135 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/23 16:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Table("mutual_insurance_user_info") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("个人信息") +public class MutualInsuranceUserInfo extends BaseModel implements Serializable { + + @Column + @Name + @Comment("id") + @ColDefine(type = ColType.VARCHAR, width = 32) + @Prev(els = {@EL("uuid()")}) + private String id; + + @Column + @Comment("项目Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String projectId; + + @Column + @Comment("项目名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String projectName; + + @Column + @Comment("申请模式") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String mode; + + @Column + @Comment("填写人id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String proxyUserId; + + @Column + @Comment("填写人姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String proxyUserName; + + @Column + @Comment("填写人工号") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String proxyLoginName; + + @Column + @Comment("userid") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String loginName; + + @Column + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String userName; + + @Column + @Comment("性别") + @ColDefine(type = ColType.VARCHAR, width = 4) + private String sex; + + @Column + @Comment("手机号") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String mobile; + + @Column + @Comment("身份证件号") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String idCard; + + @Column + @Comment("所属单位Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unitId; + + @Column + @Comment("所属单位") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String unitName; + + @Column + @Comment("所属工会Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column + @Comment("所属工会") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String unionName; + + @Column + @Comment("在职状态(年度在岗,不在岗,有个时间范围,在某个时间之后退休的不能参加)") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String insuranceUserState; + + @Column + @Comment("不在岗时间") + @ColDefine(type = ColType.VARCHAR, width = 50) + private Date noDutyTime; + + @Column + @Comment("医保状态") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String medicalInsuranceState; + + @Column + @Comment("签字") + @ColDefine(type = ColType.VARCHAR, width = 200) + private String sign; + + @Column + @Comment("申请时间") + @ColDefine(type = ColType.DATETIME) + private Date applyTime; + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/MutualInsuranceProjectService.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/MutualInsuranceProjectService.java new file mode 100644 index 00000000..50f261fd --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/MutualInsuranceProjectService.java @@ -0,0 +1,8 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceProject; + + +public interface MutualInsuranceProjectService extends BaseService { +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/MutualInsuranceUserService.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/MutualInsuranceUserService.java new file mode 100644 index 00000000..b394bd3e --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/MutualInsuranceUserService.java @@ -0,0 +1,20 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceUserInfo; + +public interface MutualInsuranceUserService extends BaseService { + +// /** +// * 设置基础信息 +// * @param userInfo +// */ +// void setBasicUserInfo(MutualInsuranceUserInfo userInfo); +// +// /** +// * 获取查询统计sql +// * @param pageForm +// * @return +// */ +// Sql getQuerySql(MutualInsuranceUserPageForm pageForm); +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/impl/MutualInsuranceProjectServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/impl/MutualInsuranceProjectServiceImpl.java new file mode 100644 index 00000000..9d1a847e --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/impl/MutualInsuranceProjectServiceImpl.java @@ -0,0 +1,21 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceProject; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceProjectService; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/23 17:55 + */ +@Slf4j +@IocBean(args = {"refer:dao"}) +public class MutualInsuranceProjectServiceImpl extends BaseServiceImpl implements MutualInsuranceProjectService { + public MutualInsuranceProjectServiceImpl(Dao dao) { + super(dao); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/impl/MutualInsuranceUserServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/impl/MutualInsuranceUserServiceImpl.java new file mode 100644 index 00000000..afeb074a --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/service/impl/MutualInsuranceUserServiceImpl.java @@ -0,0 +1,93 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.model.MutualInsuranceUserInfo; +import com.budwk.app.zhgh.staffbenefit.mutualInsurance.service.MutualInsuranceUserService; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @version 1.0 + * @Author zzr + * @name:ZheJiangMutualInsuranceUserServiceImpl + * @Date 2024/11/23 15:33 + * @注释 + */ +@IocBean(args = {"refer:dao"}) +public class MutualInsuranceUserServiceImpl extends BaseServiceImpl implements MutualInsuranceUserService { + public MutualInsuranceUserServiceImpl(Dao dao) { + super(dao); + } + + +// @Override +// public void setBasicUserInfo(MutualInsuranceUserInfo userInfo) { +// User user = dao().fetch(User.class, Cnd.where("id", "=", ShiroUtil.getUserId())); +// if (user != null) { +// userInfo.setUnitId(user.getUnitid()); +// userInfo.setUnitName(user.getUnitname()); +// userInfo.setUnionId(user.getUnionid()); +// userInfo.setUnionName(user.getUnionname()); +// userInfo.setUserState(user.getUserState()); +// userInfo.setPersonType(user.getPersonType()); +// } +// } +// +// +// @Override +// public Sql getQuerySql(MutualInsuranceUserPageForm pageForm) { +// Sql sql = Sqls.create(""" +// SELECT +// u.loginname, +// u.username, +// u.unitname AS unitName, +// u.unionname AS unionName, +// u.sex, +// u.mobile, +// info.signature +// FROM +// `user` u +// LEFT JOIN zhe_jiang_mutual_insurance_user_info info ON info.loginname = u.loginname +// $condition +// """); +// Cnd cnd = Cnd.NEW(); +// cnd.and("u.member", "=", MemberMode.NORMAL.getCode()); +// switch (pageForm.getApplyState()) { +// case "all" -> { +// } +// case "apply" -> { +// cnd.and("info.stateId", "=", 10030); +// } +// case "unApply" -> { +// SqlExpressionGroup seg = new SqlExpressionGroup(); +// seg.or("info.stateId", "!=", 10030); +// seg.or("info.stateId", "is", null); +// cnd.and(seg); +// } +// } +// if (!ShiroUtil.hasAnyRoles("sysadmin,A06")) { +// if (ShiroUtil.hasAnyRoles("H04")) { +// cnd.and("u.unionId", "=", Vi.getUnionId()); +// cnd.andEX("u.unitId", "=", pageForm.getUnitId()); +// } else { +// cnd.and("u.userId", "=", ShiroUtil.getUserId()); +// } +// } else { +// cnd.andEX("u.unionId", "=", pageForm.getUnionId()); +// cnd.andEX("u.unitId", "=", pageForm.getUnitId()); +// } +// if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { +// SqlExpressionGroup seg = new SqlExpressionGroup(); +// seg.orLike("u.username", pageForm.getSearchKeyword()); +// seg.orLike("u.loginname", pageForm.getSearchKeyword()); +// cnd.and(seg); +// } +// if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { +// cnd.orderBy("u." + pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); +// } else { +// cnd.desc("info.applyTime"); +// } +// sql.setCondition(cnd); +// return sql; +// } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/vo/MutualInsuranceCollectExcelVO.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/vo/MutualInsuranceCollectExcelVO.java new file mode 100644 index 00000000..0f0d668d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/mutualInsurance/vo/MutualInsuranceCollectExcelVO.java @@ -0,0 +1,59 @@ +package com.budwk.app.zhgh.staffbenefit.mutualInsurance.vo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/25 9:54 + */ + +@Data +public class MutualInsuranceCollectExcelVO { + + @Excel(name = "申请时间", width = 20, format = "yyyy-MM-dd") + private Date applyTime; + + @Excel(name = "申请模式", width = 20) + private String mode; + + @Excel(name = "填写人工号", width = 20) + private String proxyLoginName; + + @Excel(name = "填写人", width = 20) + private String proxyUserName; + + @Excel(name = "工号", width = 20) + private String loginName; + + @Excel(name = "姓名", width = 20) + private String userName; + + @Excel(name = "性别", width = 20) + private String sex; + + @Excel(name = "身份证号码", width = 20) + private String idCard; + + @Excel(name = "分工会", width = 20) + private String unionName; + + @Excel(name = "单位", width = 20) + private String unitName; + + @Excel(name = "事项名称", width = 20) + private String projectName; + + @Excel(name = "医保状态", width = 20) + private String medicalInsuranceState; + + @Excel(name = "在职状态", width = 20) + private String insuranceUserState; + + @Excel(name = "电话", width = 20) + private String mobile; +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java index 59e7adb0..e02bb3fa 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeApplyController.java @@ -92,7 +92,7 @@ public class MemberChangeApplyController { // 开启流程实例 Dict args = Dict.create(); - args.set("origin", "personType"); + args.set("origin", "person"); args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); args.set(FlowConst.FORM_DATA, memberChangeRecord); ProcessInstance instance = flowEngine.startProcessInstanceByKey("HYBG", memberChangeRecord.getId(), SecurityUtil.getUserId(), args); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberBatchMakeController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberBatchMakeController.java index c8592b12..ad49212a 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberBatchMakeController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberBatchMakeController.java @@ -120,7 +120,7 @@ public class MemberBatchMakeController { } dao.update(Sys_user.class, Chain.make("member", true) - .addSpecial("memberTime", DateUtil.now()), + .add("memberTime", DateUtil.now()), Cnd.where("id", "in", userIds)); // 添加会员角色 diff --git a/src/main/resources/static/assets/platform/img/v4/lczx.png b/src/main/resources/static/assets/platform/img/v4/lczx.png new file mode 100644 index 00000000..c5cc2949 Binary files /dev/null and b/src/main/resources/static/assets/platform/img/v4/lczx.png differ diff --git a/src/main/resources/static/assets/platform/img/v4/yyzx.png b/src/main/resources/static/assets/platform/img/v4/yyzx.png new file mode 100644 index 00000000..36ffcb57 Binary files /dev/null and b/src/main/resources/static/assets/platform/img/v4/yyzx.png differ diff --git a/src/main/resources/views/layouts/platform.html b/src/main/resources/views/layouts/platform.html index 6754bef8..6e3731df 100644 --- a/src/main/resources/views/layouts/platform.html +++ b/src/main/resources/views/layouts/platform.html @@ -243,6 +243,7 @@ layout("/layouts/v4/baseLayout.html"){ try { + debugger const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app")) $("#sub-app-container #sidebar-menu .menu-header .menu-title").text(app?.name) } catch (e) { @@ -323,16 +324,53 @@ layout("/layouts/v4/baseLayout.html"){ if (res.code === 0) { this.menus = res.data window.sessionStorage.setItem("zhgh_sub_app_menus", JSON.stringify(res.data)) + this.echoMenus() + this.matchUrlToMenu() } else { this.menus = [] } - this.echoMenus() }) }, - + + // 按 URL 精准激活 + matchUrlToMenu() { + // 跳转带过来的地址 + const pathname = window.location.pathname + const find = (list, parentIds = []) => { + for (const m of list) { + if (m.href && pathname.includes(m.href.split('?')[0])) { + return { menu: m, parentIds } + } + if (m.children?.length) { + const hit = find(m.children, [...parentIds, m.id]) + if (hit) return hit + } + } + return null + } + + const hit = find(this.menus) + if (hit) { + // 激活跳转菜单 + this.activeMenuIndex = hit.menu.id + this.openedMenus = hit.parentIds + const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app")) + $("#sub-app-container #sidebar-menu .menu-header .menu-title").text(app?.name) + this.$nextTick(() => { + this.menuSelect(hit.menu.id, hit.parentIds) + // 保证内容区对应 + commonUtil.pjaxPush(hit.menu.href) + }) + } else if (!this.activeMenuIndex) { + // 没命中且缓存也没有 → 再降级到第一个 + this.defaultSelect() + } + }, + // 设置应用信息 setAppInfo(app) { if (app) { + debugger // 储存到缓存 window.sessionStorage.setItem("zhgh_sub_app", JSON.stringify(app)) // 储存到div中 diff --git a/src/main/resources/views/layouts/v4/serv.html b/src/main/resources/views/layouts/v4/serv.html index 01c40309..7769c816 100644 --- a/src/main/resources/views/layouts/v4/serv.html +++ b/src/main/resources/views/layouts/v4/serv.html @@ -322,7 +322,7 @@ layout("/layouts/v4/baseLayout.html"){
- 应用中心 + 流程中心
diff --git a/src/main/resources/views/platform/flow/category/index.html b/src/main/resources/views/platform/flow/category/index.html new file mode 100644 index 00000000..c3f5d204 --- /dev/null +++ b/src/main/resources/views/platform/flow/category/index.html @@ -0,0 +1,109 @@ + + + + +
+ + + + + + + + + + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/src/main/resources/views/platform/flow/define/index.html b/src/main/resources/views/platform/flow/define/index.html index 5bf353a2..fcc00857 100644 --- a/src/main/resources/views/platform/flow/define/index.html +++ b/src/main/resources/views/platform/flow/define/index.html @@ -6,38 +6,61 @@ layout("/layouts/platform.html"){ .design-dialog .el-dialog__body { padding: 0; } + .el-table__row--level-1 { + background-color: #FDF5E6 !important; + }
- - + + - - + + + + + + + - - - - - - + + + - - -