diff --git a/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditManageController.java b/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditManageController.java new file mode 100644 index 0000000..8fe960f --- /dev/null +++ b/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditManageController.java @@ -0,0 +1,138 @@ +package io.v.nutz.clubPreAudit.controller; + +import cn.hutool.core.util.StrUtil; +import io.v.nutz.annontation.ViReturn; +import io.v.nutz.base.service.BaseService; +import io.v.nutz.base.utils.Vi; +import io.v.nutz.modules.models.Audit; +import io.v.nutz.modules.models.PageForm; +import io.v.nutz.clubPreAudit.models.ClubPreAudit; +import io.v.nutz.sys.models.Sys_club; +import io.v.nutz.sys.models.Sys_club_user; +import io.v.nutz.util.ShiroUtil; +import org.apache.shiro.authz.annotation.RequiresPermissions; +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 org.nutz.mvc.annotation.Param; + +/** + * @ClassName clubPreAuditManageController + * @Description 我的预审管理 + * @Version 1.0 + * @Author zhf + * @Date 2025/4/9 下午2:04 + */ +@At("/platform/clubPreAudit/manage") +@Ok("json:full") +@IocBean +public class clubPreAuditManageController { + + @Inject + private BaseService baseService; + + @At("") + @Ok("beetl:/platform/clubPreAudit/manage.html") + @RequiresPermissions("clubPreAudit.manage") + public void index() { + } + + + @At + @ViReturn + @RequiresPermissions("clubPreAudit.manage") + public Object pageData(PageForm pageForm, String year, String notes) { + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT * FROM `club_pre_audit` $condition + """); + cnd.andEX("YEAR(applyDate)", "=", year); + cnd.andEX("unionId", "=", Vi.getUnionId()); + cnd.desc("applyDate").desc("opAt"); + if (StrUtil.isNotEmpty(notes)) { + cnd.andEX("notes", "like", "%" + notes + "%"); + } + if (StrUtil.isAllNotEmpty(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy()); + } + sql.setCondition(cnd); + return baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + } + + + @At + @ViReturn + @RequiresPermissions("clubPreAudit.manage") + public Object doDelete(String id) { + baseService.dao().delete(ClubPreAudit.class, id); + return null; + } + + @At + @ViReturn + @RequiresPermissions("clubPreAudit.manage") + public Object doSubmit(@Param("preAudit") ClubPreAudit preAudit, Boolean flag) { + preAudit.setUserId(ShiroUtil.getUserId()); + preAudit.setUnitId(ShiroUtil.getUnitId()); + preAudit.setUnionId(Vi.getUnionId()); + + // 获取用户所属协会 + Sys_club_user clubUser = baseService.dao().fetch(Sys_club_user.class, Cnd.where("userid", "=", ShiroUtil.getUserId()).and("isNormal", "=", true)); + if (clubUser != null) { + Sys_club club = baseService.dao().fetch(Sys_club.class, clubUser.getClubid()); + if (club != null) { + preAudit.setClubId(club.getId()); + preAudit.setClubName(club.getName()); + } + } + + preAudit.setAuditState(flag ? 1 : 0); + baseService.insertOrUpdate(preAudit); + return null; + } + + + @At + @ViReturn + public Object findOne(String id) { + Sql sql = Sqls.create(""" + SELECT * FROM `club_pre_audit` WHERE id=@id + """) + .setParam("id", id); + sql.setCallback(Sqls.callback.map()); + baseService.dao().execute(sql); + NutMap info = (NutMap) sql.getResult(); + info.put("auditInfo", baseService.dao().fetch(Audit.class, Cnd.where("id", "=", info.getString("auditId")))); + return info; + } + + @At("/getUserClub") + @ViReturn + public Object getUserClub() { + NutMap result = new NutMap(); + // 获取用户所属协会 + Sys_club_user clubUser = baseService.dao().fetch(Sys_club_user.class, Cnd.where("userid", "=", ShiroUtil.getUserId()).and("isNormal", "=", true)); + if (clubUser != null) { + Sys_club club = baseService.dao().fetch(Sys_club.class, clubUser.getClubid()); + if (club != null) { + result.put("clubId", club.getId()); + result.put("clubName", club.getName()); + } + } + return result; + } + + @At("/getClubs") + @ViReturn + public Object getClubs() { + // 获取所有协会列表 + return baseService.dao().query(Sys_club.class, Cnd.where("isjs", "=", false)); + } + + +} diff --git a/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditQueryController.java b/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditQueryController.java new file mode 100644 index 0000000..a87bc0e --- /dev/null +++ b/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditQueryController.java @@ -0,0 +1,67 @@ +package io.v.nutz.clubPreAudit.controller; + +import cn.hutool.core.util.StrUtil; +import io.v.nutz.annontation.ViReturn; +import io.v.nutz.base.service.BaseService; +import io.v.nutz.modules.models.PageForm; +import io.v.nutz.util.ShiroUtil; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +/** + * @ClassName clubPreAuditQueryController + * @Description TODO + * @Author zhf + * @Date 2025/4/10 上午9:13 + */ +@At("/platform/clubPreAudit/query") +@Ok("json:full") +@IocBean +public class clubPreAuditQueryController { + + @Inject + private BaseService baseService; + + @At("") + @Ok("beetl:/platform/clubPreAudit/query.html") + @RequiresPermissions("clubPreAudit.query") + public void index() { + } + + @At + @ViReturn + @RequiresPermissions("clubPreAudit.manage") + public Object pageData(PageForm pageForm, String startDate, String endDate, String notes, String unitId, String unionId, String clubId) { + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT * FROM `club_pre_audit` $condition + """); + cnd.andEX("applyDate", ">=", startDate); + cnd.andEX("applyDate", "<=", endDate); + cnd.andEX("auditState", ">=", 3); + cnd.andEX("unitId", "=", unitId); + cnd.andEX("unionId", "=", unionId); + if (StrUtil.isNotEmpty(clubId)) { + cnd.andEX("clubId", "=", clubId); + } + if (StrUtil.isNotEmpty(notes)) { + cnd.andEX("notes", "like", "%" + notes + "%"); + } + if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) { + cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword())); + } + if (StrUtil.isAllNotEmpty(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy()); + }else{ + cnd.desc("applyDate").desc("opAt"); + } + sql.setCondition(cnd); + return baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + } +} diff --git a/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditSchoolController.java b/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditSchoolController.java new file mode 100644 index 0000000..565ad4d --- /dev/null +++ b/src/main/java/io/v/nutz/clubPreAudit/controller/clubPreAuditSchoolController.java @@ -0,0 +1,96 @@ +package io.v.nutz.clubPreAudit.controller; + +import cn.hutool.core.util.StrUtil; +import io.v.nutz.annontation.ViReturn; +import io.v.nutz.base.service.BaseService; +import io.v.nutz.modules.models.Audit; +import io.v.nutz.modules.models.PageForm; +import io.v.nutz.clubPreAudit.models.ClubPreAudit; +import io.v.nutz.util.ShiroUtil; +import io.v.nutz.web.commons.slog.annotation.SLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +/** + * @ClassName clubPreAuditSchoolController + * @Description TODO + * @Author zhf + * @Date 2025/4/9 下午4:46 + */ +@At("/platform/clubPreAudit/audit") +@Ok("json:full") +@IocBean +public class clubPreAuditSchoolController { + @Inject + private BaseService baseService; + + @At("") + @Ok("beetl:/platform/clubPreAudit/audit.html") + @RequiresPermissions("clubPreAudit.audit") + public void index() { + } + + @At + @ViReturn + @RequiresPermissions("clubPreAudit.audit") + public Object pageData(PageForm pageForm, String year, String notes, Integer auditState, String unitId, String unionId, String clubId) { + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT * FROM `club_pre_audit` $condition + """); + cnd.andEX("YEAR(applyDate)", "=", year); + cnd.andEX("unitId", "=", unitId); + cnd.andEX("unionId", "=", unionId); + if (StrUtil.isNotEmpty(clubId)) { + cnd.andEX("clubId", "=", clubId); + } + if (auditState != 0) { + cnd.andEX("auditState", auditState == 1 ? ">" : "=", 1); + } else { + cnd.andEX("auditState", ">=", 1); + } + if (StrUtil.isNotEmpty(notes)) { + cnd.andEX("notes", "like", "%" + notes + "%"); + } + + if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) { + cnd.and(Cnd.likeEX(pageForm.getSearchName(), pageForm.getSearchKeyword())); + } + if (StrUtil.isAllNotEmpty(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { + cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy()); + }else{ + cnd.desc("applyDate").desc("opAt"); + } + sql.setCondition(cnd); + return baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + } + + + @At + @ViReturn + @SLog(tag = "协会预审", msg = "审核一条记录", param = true, result = true) + @RequiresPermissions("clubPreAudit.audit") + public Object doSubmit(Audit audit, String id, @Param("flag") Integer flag) { + audit.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString()); + baseService.insert(audit); + Integer auditState; + if (flag == 1) { + auditState = 2; + } else if (flag == 2) { + auditState = 3; + } else { + auditState = 4; + } + Chain chain = Chain.make("auditId", audit.getId()).add("auditState", auditState); + baseService.dao().update(ClubPreAudit.class, chain, Cnd.where("id", "=", id)); + return null; + } +} diff --git a/src/main/java/io/v/nutz/clubPreAudit/models/ClubPreAudit.java b/src/main/java/io/v/nutz/clubPreAudit/models/ClubPreAudit.java new file mode 100644 index 0000000..f37789e --- /dev/null +++ b/src/main/java/io/v/nutz/clubPreAudit/models/ClubPreAudit.java @@ -0,0 +1,106 @@ +package io.v.nutz.clubPreAudit.models; + +import io.v.nutz.base.model.BaseModel; +import io.v.nutz.sys.models.Sys_file; +import lombok.Data; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.List; + +/** + * @ClassName ClubPreAudit + * @Description TODO + * @Author zhf + * @Date 2025/4/9 下午1:55 + */ +@Data +@Table +@Comment("协会预审系统") +public class ClubPreAudit extends BaseModel { + + + @Column + @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 userId; + + @Column + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userName; + + @Column + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String loginName; + + @Column + @Comment("单位") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String unitName; + + @Column + @Comment("单位Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unitId; + + @Column + @Comment("工会") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String unionName; + + @Column + @Comment("工会Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column + @Comment("协会") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String clubName; + + @Column + @Comment("协会Id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String clubId; + + @Column + @Comment("报销事由") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String notes; + + @Column + @Comment("联系电话") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String mobile; + + @Column + @Comment("申报时间") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String applyDate; + + @Column + @Comment("附件信息") + @ColDefine(type = ColType.MYSQL_JSON) + private List files; + + @Column + @Comment("审核记录id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String auditId; + + @Column + @Comment("审核状态") + @ColDefine(type = ColType.INT) + private Integer auditState; + + +} diff --git a/src/main/resources/views/platform/clubPreAudit/audit.html b/src/main/resources/views/platform/clubPreAudit/audit.html new file mode 100644 index 0000000..81d89d4 --- /dev/null +++ b/src/main/resources/views/platform/clubPreAudit/audit.html @@ -0,0 +1,311 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + 关 闭 + 退回修改 + 退回修改并结束 + 通 过 + + + + + + + 关 闭 + + +
+ + + + diff --git a/src/main/resources/views/platform/clubPreAudit/info.js b/src/main/resources/views/platform/clubPreAudit/info.js new file mode 100644 index 0000000..8d9c993 --- /dev/null +++ b/src/main/resources/views/platform/clubPreAudit/info.js @@ -0,0 +1,102 @@ +let info = { + /*language=HTML*/ + template: ` + + + + + + + {{viewData.userName}} + + + + + {{viewData.loginName}} + + + + + {{viewData.unitName}} + + + + + {{viewData.unionName}} + + + + + {{viewData.clubName}} + + + + + {{viewData.notes}} + + + + + {{viewData.mobile}} + + + + + + + + + + + + + + + {{viewData.auditInfo.username}} + + + + + {{viewData.auditInfo.auditTime}} + + + + + {{viewData.auditInfo.auditOpinion}} + + + + + + + + + + `, + data() { + return { + handle: false, + label: "审核", + loading: false, + activeName: "1", + viewData: {} + } + }, + methods: { + async openAudit(id, handle) { + this.handle = handle + await this.openView(id) + }, + async openView(id) { + this.loading = true + const resp = await $.post("/platform/clubPreAudit/manage/findOne", {id}) + resp.data.files = JSON.parse(resp.data.files) + this.viewData = resp.data + this.loading = false + if (this.handle){ + this.activeName = "999" + } + } + } +} diff --git a/src/main/resources/views/platform/clubPreAudit/manage.html b/src/main/resources/views/platform/clubPreAudit/manage.html new file mode 100644 index 0000000..f488ace --- /dev/null +++ b/src/main/resources/views/platform/clubPreAudit/manage.html @@ -0,0 +1,292 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 关 闭 + 保 存 + 提 交 + + + + + + + 关 闭 + + +
+ + + + diff --git a/src/main/resources/views/platform/clubPreAudit/query.html b/src/main/resources/views/platform/clubPreAudit/query.html new file mode 100644 index 0000000..2680fc2 --- /dev/null +++ b/src/main/resources/views/platform/clubPreAudit/query.html @@ -0,0 +1,258 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + 关 闭 + + +
+ + + +