diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxApplyController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxApplyController.java new file mode 100644 index 00000000..7ee27f26 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxApplyController.java @@ -0,0 +1,120 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; +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.SecurityUtil; +import com.budwk.app.zhgh.staffbenefit.dsznfmtx.models.Dsznfmtx; +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.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 java.util.Date; +import java.util.List; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/16 20:51 + */ + +@IocBean +@At("/platform/dsznfmtx/apply") +@Api("独生子女父母退休奖励申请") +@Ok("json:full") +@Slf4j +public class DsznfmtxApplyController { + + @Inject + private Dao dao; + @Inject + private BaseService baseService; + @Inject + private FlowEngine flowEngine; + @Inject + private FlowCommonService flowCommonService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/dsznfmtx/apply/index.html") + @SaCheckPermission("dsznfmtx.apply") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/dsznfmtx/apply/index.html") + @SaCheckPermission("h5.dsznfmtx.apply") + public void h5Index() { + } + + @At + @ApiOperation("保存申请") + @SaCheckPermission(value = {"dsznfmtx.apply", "h5.dsznfmtx.apply"}, mode = SaMode.OR) + @SLog(tag = "生育休假-休假申请", msg = "保存休假申请") + public Result save(@Param("data") Dsznfmtx dsznfmtx) { + if (StrUtil.isBlank(dsznfmtx.getId())) dsznfmtx.setApplyTime(new Date()); + dao.insertOrUpdate(dsznfmtx); + return Result.success(); + } + + @At + @ApiOperation("提交申请") + @SaCheckPermission(value = {"dsznfmtx.apply", "h5.dsznfmtx.apply"}, mode = SaMode.OR) + public Result submit(@Param("data") Dsznfmtx dsznfmtx) { + if (StrUtil.isBlank(dsznfmtx.getId())) dsznfmtx.setApplyTime(new Date()); + + dao.insertOrUpdate(dsznfmtx); + // 开启流程实例 + Dict args = Dict.create(); + args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); + args.set(FlowConst.FORM_DATA, dsznfmtx); + ProcessInstance instance = flowEngine.startProcessInstanceByKey("DSZNFMTX", dsznfmtx.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 = {"dsznfmtx.apply", "h5.dsznfmtx.apply"}, mode = SaMode.OR) + public Result submitAgain(@Param("data") Dsznfmtx dsznfmtx, @Param("taskId") Long taskId) { + if (StrUtil.isBlank(dsznfmtx.getId())) dsznfmtx.setApplyTime(new Date()); + + dao.insertOrUpdate(dsznfmtx); + + 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(Dsznfmtx.class, id)); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxCollectController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxCollectController.java new file mode 100644 index 00000000..e1789f38 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxCollectController.java @@ -0,0 +1,177 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.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.zhgh.staffbenefit.dsznfmtx.service.DsznfmtxService; +import com.budwk.app.zhgh.staffbenefit.dsznfmtx.vo.DsznfmtxCollectExcelVO; +import com.budwk.app.zhgh.staffbenefit.maternityLeave.vo.MaternityLeaveCollectExcelVO; +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/16 20:53 + */ + +@IocBean +@At("/platform/dsznfmtx/collect") +@Api("查询统计") +@Ok("json:full") +@Slf4j +public class DsznfmtxCollectController { + + @Inject + private FlowEngine flowEngine; + @Inject + private DsznfmtxService dsznfmtxService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/dsznfmtx/collect/index.html") + @SaCheckPermission("dsznfmtx.collect") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/dsznfmtx/collect/index.html") + @SaCheckPermission("h5.dsznfmtx.collect") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"dsznfmtx.collect", "h5.dsznfmtx.collect"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + Integer year, + 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' AND taskState in (10,20)) AS startTaskId + FROM + dsznfmtx 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.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 = dsznfmtxService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"dsznfmtx.mine", "h5.dsznfmtx.mine"}, mode = SaMode.OR) + @SLog( tag = "删除工会报销", msg = "删除工会报销") + public Result delete(@Param("id") String id) { + dsznfmtxService.delete(id); + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + return Result.success(); + } + + @At + @Ok("void") + @SaCheckPermission(value = {"dsznfmtx.collect", "h5.dsznfmtx.collect"}, mode = SaMode.OR) + @ApiOperation("导出独生子女父母退休领取奖励表") + public void onExport(@Param(value = "year") Integer year, + @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 + dsznfmtx 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("year(info.applyTime)", "=", year); + 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 = dsznfmtxService.listVO(sql, DsznfmtxCollectExcelVO.class); + + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, DsznfmtxCollectExcelVO.class, list); + CommonDownloadUtil.download("独生子女父母退休领取奖励表.xlsx", workbook, response); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxMineController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxMineController.java new file mode 100644 index 00000000..2f67fe6f --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxMineController.java @@ -0,0 +1,107 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.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.dsznfmtx.service.DsznfmtxService; +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; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/16 20:52 + */ + +@IocBean +@At("/platform/dsznfmtx/mine") +@Api("我的申请") +@Ok("json:full") +@Slf4j +public class DsznfmtxMineController { + + @Inject + private FlowEngine flowEngine; + @Inject + private DsznfmtxService dsznfmtxService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/dsznfmtx/mine/index.html") + @SaCheckPermission("dsznfmtx.mine") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/dsznfmtx/mine/index.html") + @SaCheckPermission("h5.dsznfmtx.mine") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"dsznfmtx.mine", "h5.dsznfmtx.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 + dsznfmtx 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 = dsznfmtxService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @ApiOperation("删除") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission(value = {"dsznfmtx.mine", "h5.dsznfmtx.mine"}, mode = SaMode.OR) + @SLog( tag = "删除工会报销", msg = "删除工会报销") + public Result delete(@Param("id") String id) { + dsznfmtxService.delete(id); + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + return Result.success(); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxSchoolAuditController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxSchoolAuditController.java new file mode 100644 index 00000000..a2a022b6 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxSchoolAuditController.java @@ -0,0 +1,129 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.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.dsznfmtx.service.DsznfmtxService; +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/16 20:52 + */ + +@IocBean +@At("/platform/dsznfmtx/schoolAudit") +@Api("校工会审核") +@Ok("json:full") +@Slf4j +public class DsznfmtxSchoolAuditController { + + @Inject + private DsznfmtxService dsznfmtxService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html") + @SaCheckPermission("dsznfmtx.schoolAudit") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/dsznfmtx/schoolAudit/index.html") + @SaCheckPermission("h5.dsznfmtx.schoolAudit") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"dsznfmtx.unionAudit", "h5.dsznfmtx.unionAudit"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + boolean approval, + Integer year, + 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 dsznfmtx 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", "=", "47a91fa5-4ade-4c15-9a2c-2706465d3c8d"); + 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); + + // 工会、单位名称查询条件 + 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 = dsznfmtxService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxUnionAuditController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxUnionAuditController.java new file mode 100644 index 00000000..d7aab081 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/controller/DsznfmtxUnionAuditController.java @@ -0,0 +1,127 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.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.dsznfmtx.service.DsznfmtxService; +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/16 20:52 + */ + +@IocBean +@At("/platform/dsznfmtx/unionAudit") +@Api("分工会审核") +@Ok("json:full") +@Slf4j +public class DsznfmtxUnionAuditController { + + @Inject + private DsznfmtxService dsznfmtxService; + + @At("/index") + @Ok("beetl:/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html") + @SaCheckPermission("dsznfmtx.unionAudit") + public void index() { + } + @At("/h5") + @Ok("beetl:/platform/zhghh5/staffbenefit/dsznfmtx/unionAudit/index.html") + @SaCheckPermission("h5.dsznfmtx.unionAudit") + public void h5Index() { + } + + @At + @ApiOperation("分页查询") + @SaCheckPermission(value = {"dsznfmtx.unionAudit", "h5.dsznfmtx.unionAudit"}, mode = SaMode.OR) + public Result pageData(PageForm pageForm, + boolean approval, + Integer year, + 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 dsznfmtx 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", "=", "0558e187-d3e5-4c1f-b0e0-1502eb7ac136"); + 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); + + // 工会、单位名称查询条件 + 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 = dsznfmtxService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/models/Dsznfmtx.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/models/Dsznfmtx.java new file mode 100644 index 00000000..6c654a56 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/models/Dsznfmtx.java @@ -0,0 +1,150 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.models; + +import cn.afterturn.easypoi.excel.annotation.Excel; +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/16 20:32 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("dsznfmtx") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("独生子女父母退休") +public class Dsznfmtx extends BaseModel implements Serializable { + + @Column + @Name + @Comment("id") + @ColDefine(type = ColType.VARCHAR, width = 32) + @Prev(els = {@EL("uuid()")}) + private String id; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 32) + @Comment("userId") + private String userId; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 30) + @Comment("姓名") + private String userName; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 30) + @Comment("性别") + private String sex; + + @Column + @ColDefine(type = ColType.DATETIME, width = 30) + @Comment("出生年月") + private Date birthday; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 30) + @Comment("工号") + private String loginName; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 32) + @Comment("所在工会Id") + private String unionId; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 50) + @Comment("所在工会") + private String unionName; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 32) + @Comment("所在单位Id") + private String unitId; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 50) + @Comment("所在单位") + private String unitName; + + @Column + @ColDefine(type = ColType.DATETIME, width = 30) + @Comment("退休时间") + private Date retireTime; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 30) + @Comment("爱人姓名") + private String loverName; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 30) + @Comment("性别") + private String loverSex; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 50) + @Comment("工作单位") + private String loverUnitName; + + @Column + @ColDefine(type = ColType.DATETIME, width = 30) + @Comment("结婚日期") + private Date marryTime; + + @Column + @ColDefine(type = ColType.DATETIME, width = 30) + @Comment("子女出生日期") + private Date childrenBirthday; + + @Column + @ColDefine(type = ColType.DATETIME, width = 30) + @Comment("领独生子女证时间") + private Date getCertificateTime; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 50) + @Comment("奖励金额") + private String bonus; + + @Column + @ColDefine(type = ColType.DATETIME,width = 50) + @Comment("申请时间") + private Date applyTime; + + @Column + @ColDefine(type = ColType.MYSQL_JSON) + @Comment("独生子女父母光荣证") + private List honorFiles; + + @Column + @ColDefine(type = ColType.MYSQL_JSON) + @Comment("退休证") + private List retireFiles; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 500) + @Comment("签字") + private String sign; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 50) + @Comment("独生子女光荣证号") + private String childrenGraceNumber; + + @Column + @ColDefine(type = ColType.VARCHAR,width = 50) + @Comment("办证机关") + private String office; + +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/service/DsznfmtxService.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/service/DsznfmtxService.java new file mode 100644 index 00000000..fb00a4ad --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/service/DsznfmtxService.java @@ -0,0 +1,8 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.staffbenefit.dsznfmtx.models.Dsznfmtx; + + +public interface DsznfmtxService extends BaseService { +} diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/service/impl/DsznfmtxServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/service/impl/DsznfmtxServiceImpl.java new file mode 100644 index 00000000..9427da3f --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/service/impl/DsznfmtxServiceImpl.java @@ -0,0 +1,23 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.zhgh.staffbenefit.dsznfmtx.models.Dsznfmtx; +import com.budwk.app.zhgh.staffbenefit.dsznfmtx.service.DsznfmtxService; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/17 8:48 + */ + +@Slf4j +@IocBean(args = {"refer:dao"}) +public class DsznfmtxServiceImpl extends BaseServiceImpl implements DsznfmtxService { + public DsznfmtxServiceImpl(Dao dao) { + super(dao); + } +} + diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/vo/DsznfmtxCollectExcelVO.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/vo/DsznfmtxCollectExcelVO.java new file mode 100644 index 00000000..982e283e --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/dsznfmtx/vo/DsznfmtxCollectExcelVO.java @@ -0,0 +1,51 @@ +package com.budwk.app.zhgh.staffbenefit.dsznfmtx.vo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +/** + * @author : hongqiwei + * @description : + * @createDate : 2025/9/17 16:03 + */ + +//独生子女父母退休导出 +@Data +public class DsznfmtxCollectExcelVO { + + @Excel(name = "办理时间", width = 20, format = "yyyy-MM-dd") + private Date applyTime; + + @Excel(name = "职工姓名", width = 20) + private String userName; + + @Excel(name = "性别", width = 20) + private String sex; + + @Excel(name = "出生年月", width = 20, format = "yyyy-MM-dd") + private Date birthday; + + @Excel(name = "原工作单位", width = 20) + private String unitName; + + @Excel(name = "退休时间", width = 20, format = "yyyy-MM-dd") + private Date retireTime; + + @Excel(name = "子女出生年月", width = 20, format = "yyyy-MM-dd") + private Date childrenBirthday; + + @Excel(name = "领取独生子女证时间", width = 20, format = "yyyy-MM-dd") + private Date getCertificateTime; + + @Excel(name = "独生子女光荣证号", width = 20) + private String childrenGraceNumber; + + @Excel(name = "办证机关", width = 20) + private String office; + + @Excel(name = "奖励金额", width = 20) + private String bonus; +} + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/apply/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/apply/index.html new file mode 100644 index 00000000..742113cf --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/apply/index.html @@ -0,0 +1,290 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 根据《河北省人口与计划生育条例》第四章第三十四条第四款"独生子女父母是国家工作人员、企事业单位员工的,退休时分别给予不低于三千元一次性奖励"的规定。
+ 说明:1. 本人应如实填写各项情况。2. 申报时需持《独生子女父母光荣证》、《退休证》原件及其复印件各一份。 +
+
+ +
+ + 保存 + 提交 + 提交1 + +
+
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/collect/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/collect/index.html new file mode 100644 index 00000000..7af91558 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/collect/index.html @@ -0,0 +1,136 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 导出 + + + + + + + + + + + · + + + + + + + + + + + + +
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/common/info.js b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/common/info.js new file mode 100644 index 00000000..52c92022 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/common/info.js @@ -0,0 +1,119 @@ +const dsznfmtxInfo = { + template: /*language=HTML*/ ` +
+
+ 申请信息 + 点击查看流程图 +
+ + + {{viewData.userName}} + {{viewData.sex}} + {{viewData.birthday}} + {{viewData.unitName}} + {{viewData.retireTime}} + {{viewData.loverName}} + {{viewData.loverSex}} + {{viewData.loverUnitName}} + {{viewData.marryTime}} + {{viewData.childrenBirthday}} + {{viewData.startTime}} + {{viewData.childrenGraceNumber}} + {{viewData.office}} + {{viewData.bonus}} + + + + + + + + + + 暂无 + + + + + + + +
+ `, + store, + dicts: ["PROCESS_TASK_SUBMIT_TYPE"], + data() { + return { + visible: false, + viewData: {}, + doneTasks: [], + row: null + } + }, + methods: { + // 打开 + onOpen(row) { + this.row = row + this.visible = true + this.getInfo() + this.getDoneTasks() + }, + + // 获取申请信息 + getInfo() { + this.$axios.post('/platform/dsznfmtx/apply/findOne', {id: this.row.id}).then((res) => { + if (res.code === 0) { + this.viewData = res.data + } + }) + }, + + // 获取已办任务审批记录 + getDoneTasks() { + this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => { + if (res.code === 0) { + this.doneTasks = res.data + } + }) + }, + + // 查看流程图 + openChart(){ + this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId,this.row.instanceId) + } + + } + + +} diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/mine/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/mine/index.html new file mode 100644 index 00000000..39e9a17f --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/mine/index.html @@ -0,0 +1,120 @@ + +
+ + + + + + + + + + + + + + + + + + + · + + + + + + + + + + + + +
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html new file mode 100644 index 00000000..933b9101 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/schoolAudit/index.html @@ -0,0 +1,193 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 已审核 + 未审核 + + + + + + + + + + + + · + + + + + + + + + + + + +
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html new file mode 100644 index 00000000..5019fef8 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffbenefit/dsznfmtx/unionAudit/index.html @@ -0,0 +1,191 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 已审核 + 未审核 + + + + + + + + + + + · + + + + + + + + + + + + +
+ + + + + +