From ca2e204395cc2ad1e830f0d90312a649eeaace05 Mon Sep 17 00:00:00 2001 From: Paidax Date: Fri, 17 Oct 2025 15:49:02 +0800 Subject: [PATCH] commit --- .../CheckTaskBranchAuditController.java | 11 + .../CheckTaskBusinessConfigController.java | 139 +++++++++ .../CheckTaskSchoolAuditController.java | 11 + .../controller/CheckTaskSingleController.java | 11 + .../CheckTaskVerificationController.java | 116 +++++++ .../model/CheckTaskBusinessConfig.java | 60 ++++ .../model/CheckTaskFiledConfig.java | 63 ++++ .../model/CheckTaskPersonnel.java | 88 ++++++ .../model/CheckTaskVerification.java | 74 +++++ .../model/CheckTaskVerificationLog.java | 62 ++++ .../model/CheckTaskWorkflowStep.java | 54 ++++ .../service/CheckTaskCommonService.java | 14 + .../impl/CheckTaskCommonServiceImpl.java | 21 ++ .../vo/CheckTaskVerificationVO.java | 44 +++ .../vo/pageform/CheckTaskManagePageForm.java | 24 ++ .../staffmanage/member/apply/mine/index.html | 2 +- .../member/change/branchunionaudit/index.html | 2 +- .../staffmanage/member/change/mine/index.html | 2 +- .../member/change/schoolunionaudit/index.html | 2 +- .../member/change/uniongroupaudit/index.html | 2 +- .../personnelcheck/config/index.html | 277 +++++++++++++++++ .../manage/add/basicInfoForm.js | 83 +++++ .../personnelcheck/manage/add/importAndMap.js | 294 ++++++++++++++++++ .../personnelcheck/manage/add/manage.js | 79 +++++ .../manage/add/workflowConfig.js | 128 ++++++++ .../personnelcheck/manage/index.html | 126 ++++++++ .../staffmanage/personnelcheck/manage/info.js | 16 + src/test/java/com/budwk/app/JugTest.java | 66 ++-- 28 files changed, 1841 insertions(+), 30 deletions(-) create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBranchAuditController.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBusinessConfigController.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSchoolAuditController.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSingleController.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskVerificationController.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskBusinessConfig.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskFiledConfig.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskPersonnel.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerification.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerificationLog.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskWorkflowStep.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/CheckTaskCommonService.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/impl/CheckTaskCommonServiceImpl.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/CheckTaskVerificationVO.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/pageform/CheckTaskManagePageForm.java create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/config/index.html create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/basicInfoForm.js create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/importAndMap.js create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/manage.js create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/workflowConfig.js create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/index.html create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/info.js diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBranchAuditController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBranchAuditController.java new file mode 100644 index 00000000..c5461714 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBranchAuditController.java @@ -0,0 +1,11 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.controller; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskBranchAuditController + * @Date 2025/10/15 10:48 + * @注释 + */ +public class CheckTaskBranchAuditController { +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBusinessConfigController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBusinessConfigController.java new file mode 100644 index 00000000..f423e26b --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskBusinessConfigController.java @@ -0,0 +1,139 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.sys.controller.SysRoleController; +import com.budwk.app.sys.models.Sys_role; +import com.budwk.app.sys.services.SysRoleService; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskBusinessConfig; +import com.budwk.app.zhgh.staffmanage.personnelcheck.service.CheckTaskCommonService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import javax.validation.Valid; +import java.util.List; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskTypeController + * @Date 2025/10/15 16:41 + * @注释 + */ +@Slf4j +@IocBean +@Ok("json:full") +@Api("业务配置管理") +@At("/platform/personnel/check/verification/config") +public class CheckTaskBusinessConfigController { + + @Inject + private Dao dao; + @Inject + private SysRoleService sysRoleService; + @Inject + private CheckTaskCommonService checkTaskCommonService; + + @At("/") + @SaCheckPermission("personnel.check.verification.config") + @Ok("beetl:/platform/zhgh/staffmanage/personnelcheck/config/index.html") + public void index() { + } + + + @At + @SaCheckPermission("personnel.check.verification.config") + public Result pageData(PageForm pageForm){ + Sql sql = Sqls.create("select * from check_task_business_config $condition"); + Cnd cnd = Cnd.NEW(); + cnd.andEX("`name`", "like", "%" + pageForm.getSearchKeyword() + "%"); + cnd.asc("sortNum"); + sql.setCondition(cnd); + Pagination pagination = checkTaskCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + + @At + @ApiOperation("添加或修改业务配置") + @SLog(tag = "业务配置", msg = "添加或修改业务配置") + @SaCheckPermission("personnel.check.verification.config") + public Result doAddOrModify(CheckTaskBusinessConfig config){ + if (StrUtil.isBlank(config.getId())) { + int count = dao.count(CheckTaskBusinessConfig.class, + Cnd.where(Cnd.exps("code", "=", config.getCode()) + .or("sortNum", "=", config.getSortNum()))); + if (count > 0) { + return Result.error("业务编码或排序编号已存在"); + } + + config.setIsActive(true); + } + dao.insertOrUpdate(config); + return Result.success(); + } + + + @At + @ApiOperation("修改业务配置状态") + @SaCheckPermission("personnel.check.verification.config") + public Result doUpdateActive(@Valid String id){ + Sql sql = Sqls.create("update check_task_business_config set isActive = isActive ^ 1 where id = @id").setParam("id", id); + dao.execute(sql); + return Result.success(); + } + + + @At + @ApiOperation("删除业务配置") + @SLog(tag = "业务配置", msg = "删除业务配置") + @SaCheckPermission("personnel.check.verification.config") + public Result onDelete(@Valid String id){ + dao.delete(CheckTaskBusinessConfig.class, id); + return Result.success(); + } + + + @At + @ApiOperation("根据查询业务配置") + @SaCheckPermission("personnel.check.verification.config") + public Result findOne(@Valid String id){ + CheckTaskBusinessConfig fetch = dao.fetch(CheckTaskBusinessConfig.class, id); + return Result.success(fetch); + } + + + @At + @ApiOperation("查询所有业务配置") + @SaCheckPermission("personnel.check.verification.config") + public Result findAll() { + List query = dao.query(CheckTaskBusinessConfig.class, Cnd.where(CheckTaskBusinessConfig::getIsActive, "=", true)); + return Result.success(query); + } + + + @At + @Ok("json") + @ApiOperation("获取所有角色") + @SaCheckPermission("personnel.check.verification.config") + public Result listRoles() { + List list = sysRoleService.query(Cnd.NEW().asc("sort")); + return Result.success(list); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSchoolAuditController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSchoolAuditController.java new file mode 100644 index 00000000..6b71d780 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSchoolAuditController.java @@ -0,0 +1,11 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.controller; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskSchoolAuditController + * @Date 2025/10/15 10:48 + * @注释 + */ +public class CheckTaskSchoolAuditController { +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSingleController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSingleController.java new file mode 100644 index 00000000..0cd0fc98 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskSingleController.java @@ -0,0 +1,11 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.controller; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskSingleController + * @Date 2025/10/15 10:48 + * @注释 + */ +public class CheckTaskSingleController { +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskVerificationController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskVerificationController.java new file mode 100644 index 00000000..e975cca7 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/controller/CheckTaskVerificationController.java @@ -0,0 +1,116 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.flow.engine.FlowEngine; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskBusinessConfig; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskFiledConfig; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskVerification; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskPersonnel; +import com.budwk.app.zhgh.staffmanage.personnelcheck.service.CheckTaskCommonService; +import com.budwk.app.zhgh.staffmanage.personnelcheck.vo.CheckTaskVerificationVO; +import com.budwk.app.zhgh.staffmanage.personnelcheck.vo.pageform.CheckTaskManagePageForm; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.AdaptBy; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; +import org.nutz.mvc.upload.TempFile; +import org.nutz.mvc.upload.UploadAdaptor; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskController + * @Date 2025/10/15 10:47 + * @注释 + */ +@Slf4j +@IocBean +@Ok("json:full") +@Api("核对任务") +@At("/platform/personnel/check/verification/manage") +public class CheckTaskVerificationController { + + @Inject + private Dao dao; + @Inject + private FlowEngine flowEngine; + @Inject + private CheckTaskCommonService checkTaskCommonService; + + + @At("/") + @SaCheckPermission("personnel.check.verification.manage") + @Ok("beetl:/platform/zhgh/staffmanage/personnelcheck/manage/index.html") + public void index() { + } + + + @At + @SaCheckPermission("personnel.check.verification.manage") + public Result pageData(CheckTaskManagePageForm pageForm){ + Sql sql = Sqls.create("SELECT * FROM check_task $condition"); + Cnd cnd = Cnd.NEW(); + cnd.andEX("YEAR(createTime)", "=", pageForm.getYear()); + cnd.andEX("taskName", "like", "%" + pageForm.getSearchKeyword() + "%"); + sql.setCondition(cnd); + Pagination pagination = checkTaskCommonService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + + @At + @Aop(TransAop.READ_COMMITTED) + @SLog(tag = "核对任务", msg = "添加核对任务") + @SaCheckPermission("personnel.check.verification.manage") + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) + public Result doAddOrModify(@Param("baseData") String data, TempFile file){ + log.info("=================================主体数据:{}", data); + log.info("=================================导入文件:{}", file); + + CheckTaskVerificationVO vo = JSONUtil.toBean(data, CheckTaskVerificationVO.class); + + if (StrUtil.isNotBlank(vo.getId())) { + // 如果是修改,执行以下步骤 + // 1.重新配置核对字段,filedConfigData + dao.clear(CheckTaskFiledConfig.class, Cnd.where("taskId", "=", vo.getId())); + // 2.重新设置待核对人员表,personnelData +// dao.clear(Check) + } + + // 修改审核流程配置 + dao.update(vo.getBusinessConfig()); + + + log.info("=================================数据转换:{}", vo); + + return Result.success(); + } + + + @At + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("personnel.check.verification.manage") + @SLog(tag = "核对任务", msg = "删除核对任务ID:${args[0]}") + public Result onDelete(String id){ + dao.clear(CheckTaskVerification.class, Cnd.where("id", "=", id)); + dao.clear(CheckTaskPersonnel.class, Cnd.where("taskId", "=", id)); + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + return Result.success(); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskBusinessConfig.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskBusinessConfig.java new file mode 100644 index 00000000..c0ea53fe --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskBusinessConfig.java @@ -0,0 +1,60 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; +import org.nutz.lang.util.NutMap; + +import java.util.List; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskBusinessConfig + * @Date 2025/10/16 10:41 + * @注释 + */ +@Data +@Table +@Comment("业务配置表") +@EqualsAndHashCode(callSuper = true) +public class CheckTaskBusinessConfig extends BaseModel { + + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("业务编码") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String code; + + @Column + @Comment("业务名称") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column + @Comment("排序编号") + @ColDefine(type = ColType.INT) + private String sortNum; + + @Column + @Comment("目标表名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String targetTable; + + @Column + @Comment("审核流程步骤数组") + @ColDefine(type = ColType.MYSQL_JSON) + private List workflowSteps; + + @Column + @Comment("是否启用") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isActive; +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskFiledConfig.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskFiledConfig.java new file mode 100644 index 00000000..38ad87fc --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskFiledConfig.java @@ -0,0 +1,63 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskFiledConfig + * @Date 2025/10/16 11:39 + * @注释 字段配置表 + */ +@Data +@Table +@Comment("核对任务字段配置表") +@EqualsAndHashCode(callSuper = true) +public class CheckTaskFiledConfig extends BaseModel { + + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("任务Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String taskId; + + @Column + @Comment("字段代码") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String fieldCode; + + @Column + @Comment("字段名称") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String fieldName; + + @Column + @Default("string") + @Comment("数据类型") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String dataType; + + @Column + @Comment("是否必填") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isRequired; + + @Column + @Comment("是否在核对界面显示") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isVisible; + + @Column + @Comment("排序") + @ColDefine(type = ColType.INT) + private Integer sortOrder; +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskPersonnel.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskPersonnel.java new file mode 100644 index 00000000..36f9a12c --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskPersonnel.java @@ -0,0 +1,88 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.List; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskPersonnel + * @Date 2025/10/15 9:40 + * @注释 + */ +@Data +@Table +@Comment("待核对人员表") +@EqualsAndHashCode(callSuper = true) +@TableIndexes({ + @Index(name = "IDX_LOGIN_NAME", fields = {"loginname"}, unique = false), +}) +public class CheckTaskPersonnel extends BaseModel { + + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("任务Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String taskId; + + @Column + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String loginname; + + @Column + @Comment("当前步骤") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String currentStep; + + @Column + @Comment("当前状态") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String status; + + @Column + @Comment("动态扩展字段(用户表其余列)") + @ColDefine(type = ColType.MYSQL_JSON) + private List data; + + @Column + @Comment("审核意见") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String remark; + + @Column + @Default("0") + @Comment("是否已核对") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isCheck; + + @Column + @Comment("核对人Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String checkUserId; + + @Column + @Comment("核对人Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String checkLoginname; + + @Column + @Comment("核对人姓名") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String checkUsername; + + @Column + @Comment("变更信息") + @ColDefine(type = ColType.MYSQL_JSON) + private String changeInfos; +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerification.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerification.java new file mode 100644 index 00000000..4739bd35 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerification.java @@ -0,0 +1,74 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskVerification + * @Date 2025/10/15 9:40 + * @注释 + */ +@Data +@Table +@Comment("核对任务事项表") +@EqualsAndHashCode(callSuper = true) +public class CheckTaskVerification extends BaseModel { + + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("事项名称") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String title; + + @Column + @Comment("唯一编码,用于标识") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String code; + + @Column + @Comment("业务类型") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String businessType; + + @Column + @Comment("核对年份") + @ColDefine(type = ColType.INT) + private Integer year; + + @Column + @Comment("原文件名") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String fileName; + + @Column + @Comment("开始时间") + @ColDefine(type = ColType.DATETIME) + private Date startTime; + + @Column + @Comment("结束时间") + @ColDefine(type = ColType.DATETIME) + private Date endTime; + + @Column + @Comment("创建时间") + @ColDefine(type = ColType.DATETIME) + private Date createTime; + + @Column + @Comment("当前状态") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String status; +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerificationLog.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerificationLog.java new file mode 100644 index 00000000..007efbad --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskVerificationLog.java @@ -0,0 +1,62 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskLog + * @Date 2025/10/15 9:41 + * @注释 + */ +@Data +@Table +@Comment("审核日志表") +@EqualsAndHashCode(callSuper = true) +public class CheckTaskVerificationLog extends BaseModel { + + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("任务Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String verificationId; + + @Column + @Comment("待核对人员Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String pendingId; + + @Column + @Comment("节点") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String fromStatus; + + @Column + @Comment("节点") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String toStatus; + + @Column + @Comment("操作人") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String operator; + + @Column + @Comment("状态(PASS/REJECT/ROLLBACK)") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String action; + + @Column + @Comment("备注") + @ColDefine(type = ColType.TEXT) + private String remark; +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskWorkflowStep.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskWorkflowStep.java new file mode 100644 index 00000000..a4a71b1f --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/model/CheckTaskWorkflowStep.java @@ -0,0 +1,54 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.model; + +import com.budwk.app.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.List; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskWorkflowStep + * @Date 2025/10/16 11:30 + * @注释 审核流程节点配置 + */ +@Data +@Table +@Comment("审核流程节点配置表") +@EqualsAndHashCode(callSuper = true) +public class CheckTaskWorkflowStep extends BaseModel { + + @Name + @Comment("ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column + @Comment("任务Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String taskId; + + @Column + @Comment("执行顺序") + @ColDefine(type = ColType.INT) + private Integer stepOrder; + + @Column + @Comment("步骤代码") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String stepCode; + + @Column + @Comment("步骤名称") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String stepName; + + @Column + @Comment("处理角色,可多选") + @ColDefine(type = ColType.MYSQL_JSON) + private List assignRoles; +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/CheckTaskCommonService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/CheckTaskCommonService.java new file mode 100644 index 00000000..b420b397 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/CheckTaskCommonService.java @@ -0,0 +1,14 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskPersonnel; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskCommonService + * @Date 2025/10/15 14:41 + * @注释 + */ +public interface CheckTaskCommonService extends BaseService { +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/impl/CheckTaskCommonServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/impl/CheckTaskCommonServiceImpl.java new file mode 100644 index 00000000..08f67f46 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/service/impl/CheckTaskCommonServiceImpl.java @@ -0,0 +1,21 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskPersonnel; +import com.budwk.app.zhgh.staffmanage.personnelcheck.service.CheckTaskCommonService; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskCommonServiceImpl + * @Date 2025/10/15 14:41 + * @注释 + */ +@IocBean(args = {"refer:dao"}) +public class CheckTaskCommonServiceImpl extends BaseServiceImpl implements CheckTaskCommonService { + public CheckTaskCommonServiceImpl(Dao dao) { + super(dao); + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/CheckTaskVerificationVO.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/CheckTaskVerificationVO.java new file mode 100644 index 00000000..8a712a97 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/CheckTaskVerificationVO.java @@ -0,0 +1,44 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.vo; + +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskBusinessConfig; +import com.budwk.app.zhgh.staffmanage.personnelcheck.model.CheckTaskFiledConfig; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskVerificationVO + * @Date 2025/10/17 14:16 + * @注释 + */ +@Data +@ApiModel("核对事项表") +public class CheckTaskVerificationVO { + + @ApiModelProperty("主键Id") + private String id; + + @ApiModelProperty("标题") + private String title; + + @ApiModelProperty("业务标签") + private String businessType; + + @ApiModelProperty("开始时间") + private Date startTime; + + @ApiModelProperty("结束时间") + private Date endTime; + + @ApiModelProperty("业务配置数据") + private CheckTaskBusinessConfig businessConfig; + + @ApiModelProperty("字段配置数据") + private List fieldConfig; +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/pageform/CheckTaskManagePageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/pageform/CheckTaskManagePageForm.java new file mode 100644 index 00000000..2ac6f075 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/personnelcheck/vo/pageform/CheckTaskManagePageForm.java @@ -0,0 +1,24 @@ +package com.budwk.app.zhgh.staffmanage.personnelcheck.vo.pageform; + +import com.budwk.app.base.param.PageForm; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @version 1.0 + * @Author FKY + * @name:CheckTaskManagePageForm + * @Date 2025/10/15 14:31 + * @注释 + */ +@Data +@ApiModel("核对任务") +@EqualsAndHashCode(callSuper = true) +public class CheckTaskManagePageForm extends PageForm { + + @ApiModelProperty("年份") + private String year; + +} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html index eab5b783..b9acd785 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/apply/mine/index.html @@ -90,7 +90,7 @@ layout("/layouts/platform.html"){ { prop: "unionName", label: "所属工会", sortable: true }, { prop: "unitName", label: "所属单位", sortable: true }, { prop: "sign", label: "签字" }, - { prop: "taskName", label: "当前节点"}, + { prop: "curTaskName", label: "当前节点"}, { prop: "instanceState", label: "流程状态"} ], unions: [], diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html index 4128e945..962639e5 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/branchunionaudit/index.html @@ -100,7 +100,7 @@ layout("/layouts/platform.html"){ { prop: "unitName", label: "所属单位", sortable: true }, { prop: "changeTypes", label: "变更类型", sortable: true, width: 200 }, { prop: "applyDateTime", label: "申请时间", sortable: true }, - { prop: "taskName", label: "当前节点"}, + { prop: "curTaskName", label: "当前节点"}, { prop: "instanceState", label: "流程状态"} ], diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html index df808eef..65ea04ca 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/mine/index.html @@ -74,7 +74,7 @@ layout("/layouts/platform.html"){ { prop: "unitName", label: "所属单位", sortable: true }, { prop: "changeTypes", label: "变更类型", sortable: true, width: 200 }, { prop: "applyDateTime", label: "申请时间", sortable: true }, - { prop: "taskName", label: "当前节点"}, + { prop: "curTaskName", label: "当前节点"}, { prop: "instanceState", label: "流程状态"} ], changeTypeData: [], diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html index 20ee2174..4bc7e937 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/schoolunionaudit/index.html @@ -102,7 +102,7 @@ layout("/layouts/platform.html"){ { prop: "unitName", label: "所属单位", sortable: true }, { prop: "changeTypes", label: "变更类型", sortable: true, width: 200 }, { prop: "applyDateTime", label: "申请时间", sortable: true }, - { prop: "taskName", label: "当前节点"}, + { prop: "curTaskName", label: "当前节点"}, { prop: "instanceState", label: "流程状态"} ], diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html index 0b8b5dd1..4915511d 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/uniongroupaudit/index.html @@ -100,7 +100,7 @@ layout("/layouts/platform.html"){ { prop: "unitName", label: "所属单位", sortable: true }, { prop: "changeTypes", label: "变更类型", sortable: true, width: 200 }, { prop: "applyDateTime", label: "申请时间", sortable: true }, - { prop: "taskName", label: "当前节点"}, + { prop: "curTaskName", label: "当前节点"}, { prop: "instanceState", label: "流程状态"} ], diff --git a/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/config/index.html b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/config/index.html new file mode 100644 index 00000000..89c0abc8 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/config/index.html @@ -0,0 +1,277 @@ + + + +
+ + + + + + + + + + + + 添加 + + + + + + + + + + + + + + + + +
+ + + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/basicInfoForm.js b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/basicInfoForm.js new file mode 100644 index 00000000..d261804f --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/basicInfoForm.js @@ -0,0 +1,83 @@ +const basicInfoForm = { + template: /*language=HTML*/ ` +
+ + + + + + + + + + + + + + + + + + + + + + + + 下一步:配置流程 + + +
+ `, + data() { + return { + businessList: [], + formData: {}, + formRules: { + title: [{ required: true, message: '请输入事项名称', trigger: ['blur', 'change'] }], + businessType: [{ required: true, message: '请选择业务类型', trigger: ['blur', 'change'] }], + startTime: [{ required: true, message: '请选择开始时间', trigger: ['blur', 'change'] }], + endTime: [{ required: true, message: '请选择结束时间', trigger: ['blur', 'change'] }] + } + } + }, + methods: { + async listBusiness() { + const resp = await this.$axios.post('/platform/personnel/check/verification/config/findAll') + if (resp.code === 0) { + this.businessList = resp.data + } + }, + setConfig(val){ + if (val) { + this.formData.businessConfig = this.businessList.find(item => item.code === val) + } else { + this.formData.businessConfig = {} + } + }, + doSubmit() { + this.$refs.formRef.validate(valid => { + if (valid) { + this.$emit('next', { ...this.formData }) + } + }) + } + }, + async created() { + await this.listBusiness() + } +} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/importAndMap.js b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/importAndMap.js new file mode 100644 index 00000000..8e832b67 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/importAndMap.js @@ -0,0 +1,294 @@ +const importAndMap = { + template: /*language=HTML*/ ` +
+

导入人员数据并配置字段

+ +
+ +
+ + +
将 Excel 文件拖到此处,或点击上传
+
支持 .xlsx、.xls 格式,文件大小不超过 20MB,第一行必须为表头且表头中必须包含【工号】字段
+
+
+ + +
+

请选择需要核对的字段:

+

+ 已从文件中读取到 {{ headers.length }} 个字段,勾选后将在审核流程中允许修改。 +
+ 💡 提示:下方数据预览显示全部字段,用于核对数据准确性。 +

+ + +
+ 全选 + 取消全选 +
+ + + + + + + + + + + + + + + + + +
+

数据预览(前 5 条)

+
+ 暂无预览数据,请检查文件内容 +
+ + + +
+
+
+ + +
+ 上一步 + 完成创建并导入数据 +
+ +
+ `, + props: { + baseData: {type: Object} + }, + data() { + return { + fileList: [], + workbook: null, + headers: [], // 原始表头数组 + rawData: [], // 解析出的原始二维数组 + headerList: [], // { name, sample, selected } + previewData: [], // 对象数组,用于预览 + submitting: false + } + }, + computed: { + allPreviewColumns() { + return this.headers + }, + selectedHeaders() { + return this.headerList.filter(h => h.selected).map(h => h.name) + }, + canSubmit() { + return this.selectedHeaders.length > 0 && this.rawData.length > 0 + } + }, + methods: { + handleFileChange(file, fileList) { + this.fileList = fileList.map(item => { + // 确保 item.raw 存在(即用户选择的原始 File 对象) + if (item.raw) { + return item; + } else { + // 兼容已有文件 + return { ...item, raw: item.url ? null : item.response?.data?.file }; + } + }); + + // 只处理 .xlsx .xls 文件 + const allowedTypes = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'] + if (!allowedTypes.includes(file.raw.type)) { + this.$message.error('请上传 Excel 文件(.xls 或 .xlsx)') + this.fileList = this.fileList.filter(f => f.uid !== file.uid) // 移除无效文件 + return + } + + // 读取文件内容 + this.readExcel(file.raw) + }, + + async readExcel(rawFile) { + try { + const reader = new FileReader() + reader.onload = (e) => { + const data = new Uint8Array(e.target.result) + const workbook = XLSX.read(data, { type: 'array' }) + const firstSheet = workbook.Sheets[workbook.SheetNames[0]] + const jsonData = XLSX.utils.sheet_to_json(firstSheet, { header: 1 }) + + if (jsonData.length < 2) { + this.$message.warning('数据为空或缺少表头') + return + } + + this.headers = jsonData[0].filter(h => h) + this.rawData = jsonData.slice(1) + + // 初始化字段选择列表(所有字段默认可编辑?或让用户选) + this.headerList = this.headers.map((h, idx) => ({ + name: h, + sample: this.rawData[0] ? this.rawData[0][idx] : '', + selected: true // 默认都允许修改,也可以让用户决定 + })) + + this.$message.success('成功加载 ' + this.rawData.length + ' 条数据,共 ' + this.headers.length + ' 个字段') + + this.generatePreview() + } + reader.readAsArrayBuffer(rawFile) + } catch (err) { + this.$message.error('文件解析失败') + console.error(err) + } + }, + + resetState() { + this.headers = [] + this.rawData = [] + this.headerList = [] + this.previewData = [] + this.fileList = [] + }, + + generatePreview() { + try { + this.previewData = this.rawData.slice(0, 5).map(row => { + const obj = {} + this.headers.forEach((header, idx) => { + const cleanHeader = (header || '').trim() + if (!cleanHeader) return + obj[cleanHeader] = row[idx] == null ? '' : String(row[idx]).trim() + }) + return obj + }) + } catch (err) { + console.error('生成预览失败', err) + this.previewData = [] + } + }, + + selectAll() { + this.headerList.forEach(h => h.selected = true) + }, + + deselectAll() { + this.headerList.forEach(h => h.selected = false) + }, + + gridFormatter(row, column) { + const val = row[column.property] + return val == null ? '-' : String(val) + }, + + async submitTask() { + if (!this.canSubmit) { + this.$message.warning('请至少选择一个字段') + return + } + + this.submitting = true + + try { + this.baseData.fieldConfig = this.headerList + .map(h => ({ + fieldCode: h.name, + fieldName: h.name, + isRequired: h.selected, + sortOrder: this.headers.indexOf(h.name) + })) + const formData = new FormData() + formData.append('file', this.fileList[0].raw) + formData.append('baseData', JSON.stringify(this.baseData)) + + console.log(formData) + + this.$emit('finish', formData) + } catch (err) { + this.$message.error('提交失败:' + (err.message || '未知错误')) + } finally { + this.submitting = false + } + } + }, + mounted() { + const s = document.createElement("script") + s.type = "text/javascript" + s.src = "/assets/platform/plugins/xlsx/xlsx.full.min.js" + document.body.appendChild(s) + }, + style: /*language=CSS*/ ` + /deep/ .upload-area { + border: 2px dashed #d9d9d9; + border-radius: 8px; + padding: 4px; + text-align: center; + background: #fafafa; + transition: all 0.3s ease; + margin-bottom: 15px; + } + + /deep/ .upload-area:hover { + border-color: #409eff; + background: #f0f9ff; + } + + /deep/ .el-upload-dragger{ + background: none !important; + border: none !important; + } + + /deep/ .import-and-map { + padding: 20px; + background: #fff; + border-radius: 8px; + box-shadow: 0 2px 12px rgba(0,0,0,0.05); + } + + /deep/ .upload-box { + width: 100%; + margin: 0 auto; + } + + /deep/ .field-selection { + padding: 15px; + border: 1px solid #eee; + border-radius: 6px; + background: #f9f9f9; + } + + /deep/ .actions { + text-align: right; + } + + /deep/ .el-table th { + font-weight: bold; + color: #333; + } + ` +} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/manage.js b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/manage.js new file mode 100644 index 00000000..8875976b --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/manage.js @@ -0,0 +1,79 @@ + + + +const Manage = { + template: /*language=HTML*/ ` +
+ + + + + + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ `, + data() { + return { + currentStep: 0, + newTaskId: '', + formData: { + businessConfig: {} + } + } + }, + components: { + basicInfoForm, + workflowConfig, + importAndMap + }, + methods: { + gotoNext(formData) { + this.formData = formData + this.currentStep++ + if (this.currentStep === 1) { + this.$nextTick(() => { + this.$refs.workflowConfigRef.init() + }) + } + }, + onFinish(formData) { + this.$confirm('确定要提交吗?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(async () => { + const resp = await this.$axios.post('/platform/personnel/check/verification/manage/doAddOrModify', formData) + if (resp.code === 0){ + this.$message.success(resp.msg) + } + }) + }, + }, + style: /*language=CSS*/ ` + + ` +} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/workflowConfig.js b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/workflowConfig.js new file mode 100644 index 00000000..2d75514b --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/add/workflowConfig.js @@ -0,0 +1,128 @@ +const workflowConfig = { + template: /*language=HTML*/ ` +
+

配置审核流程(勾选添加审核步骤,拖拽调整顺序,点击删除)

+ +
+ + + {{ opt.label }} + + + + +
+ + {{ '第' + (idx + 1) + '步' }}. {{ step.stepName }} + + + + + + + +
+
+
+ +
+ 上一步 + 下一步:导入数据 +
+
+ `, + props: { + baseData: {type: Object} + }, + data() { + return { + selectedSteps: [], + stepOptions: [ + { value: 'personal', label: '个人核对' }, + { value: 'unionGroupCheck', label: '工会小组核对' }, + { value: 'branchUnionCheck', label: '分工会核对' }, + { value: 'schoolUnionCheck', label: '校工会核对' }, + + { value: 'unionGroupAudit', label: '工会小组审核' }, + { value: 'branchUnionAudit', label: '分工会审核' }, + { value: 'schoolUnionAudit', label: '校工会审核' }, + ], + roles: [] + } + }, + methods: { + onCheckChange(codes) { + // 先删掉已取消的 + this.baseData.businessConfig.workflowSteps = this.baseData.businessConfig.workflowSteps + .filter(s => codes.includes(s.stepCode)) + + // 再追加新勾选的 + const existCodes = this.baseData.businessConfig.workflowSteps.map(s => s.stepCode) + codes.forEach(code => { + if (!existCodes.includes(code)) { + const data = this.stepOptions.find(opt => opt.value === code) + + this.baseData.businessConfig.workflowSteps.push({ + stepName: data.label, + stepCode: data.value, + assignRole: [] + }) + } + }) + }, + removeStep(idx) { + const code = this.baseData.businessConfig.workflowSteps[idx].stepCode + this.baseData.businessConfig.workflowSteps.splice(idx, 1) + // 同步 checkbox + this.selectedSteps = this.selectedSteps.filter(c => c !== code) + }, + async listRoles() { + const resp = await this.$axios.post('/platform/personnel/check/verification/config/listRoles') + if (resp.code === 0) { + this.roles = resp.data + } + }, + init() { + this.selectedSteps = this.baseData.businessConfig.workflowSteps.map(s => s.stepCode) + } + }, + created() { + this.listRoles() + }, + style: /*language=CSS*/ ` + /deep/ .drag-area { + border: 1px dashed #ddd; + padding: 10px; + margin-top: 10px; + min-height: 50px; + } + + /deep/ .drag-item { + background: #f5f5f5; + padding: 8px; + margin: 4px 0; + cursor: move; + } + + /deep/ .ghost { + opacity: 0.5; + } + ` +} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/index.html b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/index.html new file mode 100644 index 00000000..fc8d466c --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/index.html @@ -0,0 +1,126 @@ + +
+ + + + + + + + + + + + + + + 新建 + + + + + + + + + + + + + + + +
+ + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/info.js b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/info.js new file mode 100644 index 00000000..07fb23e3 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/personnelcheck/manage/info.js @@ -0,0 +1,16 @@ +const INFO = { + template: /*language=HTML*/ ` + + `, + data() { + return { + + } + }, + methods: { + + }, + created() { + + } +} diff --git a/src/test/java/com/budwk/app/JugTest.java b/src/test/java/com/budwk/app/JugTest.java index d7c8b636..230305bf 100644 --- a/src/test/java/com/budwk/app/JugTest.java +++ b/src/test/java/com/budwk/app/JugTest.java @@ -14,12 +14,14 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import com.budwk.app.base.utils.ManyAddOrRenewUtil; import com.budwk.app.base.utils.PwdUtil; import com.budwk.app.sys.models.*; import com.budwk.app.sys.services.SysDictService; import com.budwk.app.sys.services.SysUnitService; import com.budwk.app.sys.services.SysUserService; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Data; @@ -219,37 +221,51 @@ public class JugTest { dao.update(users,"password|salt"); } + @Inject + private ManyAddOrRenewUtil manyAddOrRenewUtil; @Test public void test11111(){ - File file = new File("C:\\temp\\response.json"); - - JSONObject entries = JSONUtil.parseObj(FileUtil.readUtf8String(file)); - - JSONArray records = entries.getJSONArray("records"); - List list = records.stream().map(item -> (JSONObject) item).toList(); - - // 工号集合 - List loginNameList = list.stream().map(v -> v.getStr("rydm")).toList(); -// Sql sql = Sqls.create("update sys_user set member = 1, welfareMember = 1 where loginname in (@loginNameList)") -// .setParam("loginNameList", loginNameList); +// File file = new File("C:\\temp\\response.json"); +// +// JSONObject entries = JSONUtil.parseObj(FileUtil.readUtf8String(file)); +// +// JSONArray records = entries.getJSONArray("records"); +// List list = records.stream().map(item -> (JSONObject) item).toList(); +// +// // 工号集合 +// List loginNameList = list.stream().map(v -> v.getStr("rydm")).toList(); +//// Sql sql = Sqls.create("update sys_user set member = 1, welfareMember = 1 where loginname in (@loginNameList)") +//// .setParam("loginNameList", loginNameList); +//// dao.execute(sql); +// +// Sql sql = Sqls.create("select id from sys_user where loginname in (@loginNameList)").setParam("loginNameList", loginNameList); +// sql.setCallback(Sqls.callback.strList()); // dao.execute(sql); +// List userIds = sql.getList(String.class); +// +// List roleList = userIds.stream().map(v -> { +// Sys_user_role userRole = new Sys_user_role(); +// userRole.setUserId(v); +// userRole.setRoleId("6d603b652abee584ba6274dc1fcee3bb"); +// return userRole; +// }).toList(); +// +// dao.clear(Sys_user_role.class, Cnd.where("userId", "in", userIds)); +// dao.insert(roleList); - Sql sql = Sqls.create("select id from sys_user where loginname in (@loginNameList)").setParam("loginNameList", loginNameList); - sql.setCallback(Sqls.callback.strList()); - dao.execute(sql); - List userIds = sql.getList(String.class); - - List roleList = userIds.stream().map(v -> { - Sys_user_role userRole = new Sys_user_role(); - userRole.setUserId(v); - userRole.setRoleId("6d603b652abee584ba6274dc1fcee3bb"); - return userRole; - }).toList(); - - dao.clear(Sys_user_role.class, Cnd.where("userId", "in", userIds)); - dao.insert(roleList); +// Sql sql = Sqls.create("select id from sys_user group by id"); +// sql.setCallback(Sqls.callback.strList()); +// dao.execute(sql); +// List userIds = sql.getList(String.class); +// List roleList = userIds.stream().map(v -> { +// Sys_user_role userRole = new Sys_user_role(); +// userRole.setUserId(v); +// userRole.setRoleId("65195ad8f52c4d7d8864624e583b801b"); +// return userRole; +// }).toList(); +// dao.insert(roleList); } }