diff --git a/src/main/java/com/budwk/app/sys/models/Sys_user.java b/src/main/java/com/budwk/app/sys/models/Sys_user.java index 63a3a0e4..e6f2b39b 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_user.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_user.java @@ -10,6 +10,7 @@ import org.nutz.dao.entity.annotation.*; import org.nutz.dao.interceptor.annotation.PrevInsert; import org.nutz.json.JsonField; +import javax.validation.constraints.Size; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -181,6 +182,11 @@ public class Sys_user extends BaseModel implements Serializable { @DataCenterColumn(name = "来校时间", key = "LXRQ") private String arrivalAtSchoolDate; + @Column + @Comment("工作时间") + @ColDefine(type = ColType.VARCHAR, width = 10) + private String workDate; + @Column @Comment("身份类型") @ColDefine(type = ColType.VARCHAR, width = 30) @@ -192,6 +198,12 @@ public class Sys_user extends BaseModel implements Serializable { @DataCenterColumn(name = "当前状态码", key = "DQZTM", dict = "USER_STATE") private String userState; + @Column + @Comment("人员属性") + @ColDefine(type = ColType.VARCHAR, width = 50) + @Size(max = 50) + private String userAttribute; + @Column @Comment("在岗情况") @ColDefine(type = ColType.VARCHAR, width = 30) @@ -323,6 +335,11 @@ public class Sys_user extends BaseModel implements Serializable { @ColDefine(type = ColType.VARCHAR, width = 100) private String homeAddress; + @Column + @Comment("校区") + @ColDefine(type = ColType.VARCHAR, width = 20) + private String campus; + @Column @Comment("常用审批意见") @@ -400,7 +417,7 @@ public class Sys_user extends BaseModel implements Serializable { private Boolean aidFundMember; @Column - @Comment("基金会员类型") + @Comment("基金会员类型(人员分类)") @ColDefine(type = ColType.VARCHAR,width = 10) private String aidFundMemberUserType; diff --git a/src/main/java/com/budwk/app/sys/views/View_user.java b/src/main/java/com/budwk/app/sys/views/View_user.java index 18cbad19..6ca73c79 100644 --- a/src/main/java/com/budwk/app/sys/views/View_user.java +++ b/src/main/java/com/budwk/app/sys/views/View_user.java @@ -225,4 +225,7 @@ public class View_user { @Column private String oldLoginName; + + @Column + private String userAttribute; } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java index eb5dfce4..809b5354 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/change/MemberChangeManageController.java @@ -24,6 +24,9 @@ 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.sys.models.Sys_config; +import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.sys.models.Sys_unit; +import com.budwk.app.sys.models.Sys_user; import com.budwk.app.sys.views.View_user; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; @@ -43,12 +46,15 @@ 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.json.Json; import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.POST; import org.nutz.mvc.annotation.Param; +import java.util.Date; import java.util.List; import java.util.Map; @@ -176,6 +182,219 @@ public class MemberChangeManageController { return Result.success(map); } + @At + @POST + @RepeatSubmit + @Aop(TransAop.READ_COMMITTED) + @SLog(tag = "会员高级管理-批量设置人员属性", msg = "批量设置人员属性") + @SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR) + public Result batchUpdateUserAttribute(@Param("users") String usersJson) { + try { + List userList = Json.fromJsonAsList(NutMap.class, usersJson); + if (Lang.isEmpty(userList)) { + return Result.error("请选择要修改的用户"); + } + + int successCount = 0; + for (NutMap userMap : userList) { + MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id")); + if (record != null) { + record.setUserAttribute(userMap.getString("userAttribute")); + successCount += applyManualChange(record); + } + } + + if (successCount <= 0) { + return Result.error("未检测到可保存的变更数据"); + } + return Result.success("批量设置人员属性成功"); + } catch (Exception e) { + log.error("批量设置人员属性失败", e); + return Result.error("批量设置人员属性失败:" + e.getMessage()); + } + } + + @At + @POST + @RepeatSubmit + @Aop(TransAop.READ_COMMITTED) + @SLog(tag = "会员高级管理-批量设置会员", msg = "批量设置会员") + @SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR) + public Result batchUpdateMember(@Param("users") String usersJson) { + try { + List userList = Json.fromJsonAsList(NutMap.class, usersJson); + if (Lang.isEmpty(userList)) { + return Result.error("请选择要修改的用户"); + } + + int successCount = 0; + for (NutMap userMap : userList) { + MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id")); + if (record != null) { + Boolean member = userMap.getBoolean("member"); + record.setMember(member); + record.setWelfareMember(userMap.getBoolean("welfareMember")); + int changed = applyManualChange(record); + if (changed > 0 && Boolean.TRUE.equals(member)) { + Sys_user user = dao.fetch(Sys_user.class, userMap.getString("id")); + if (user != null && user.getMemberTime() == null) { + user.setMemberTime(new Date()); + dao.updateIgnoreNull(user); + } + } + successCount += changed; + } + } + + if (successCount <= 0) { + return Result.error("未检测到可保存的变更数据"); + } + return Result.success("批量设置会员成功"); + } catch (Exception e) { + log.error("批量设置会员失败", e); + return Result.error("批量设置会员失败:" + e.getMessage()); + } + } + + @At + @POST + @RepeatSubmit + @Aop(TransAop.READ_COMMITTED) + @SLog(tag = "会员高级管理-批量设置人员分类", msg = "批量设置人员分类") + @SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR) + public Result batchUpdateAidFundType(@Param("users") String usersJson) { + try { + List userList = Json.fromJsonAsList(NutMap.class, usersJson); + if (Lang.isEmpty(userList)) { + return Result.error("请选择要修改的用户"); + } + + int successCount = 0; + for (NutMap userMap : userList) { + MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id")); + if (record != null) { + record.setAidFundMemberUserType(userMap.getString("aidFundMemberUserType")); + successCount += applyManualChange(record); + } + } + + if (successCount <= 0) { + return Result.error("未检测到可保存的变更数据"); + } + return Result.success("批量设置人员分类成功"); + } catch (Exception e) { + log.error("批量设置人员分类失败", e); + return Result.error("批量设置人员分类失败:" + e.getMessage()); + } + } + + @At + @POST + @RepeatSubmit + @Aop(TransAop.READ_COMMITTED) + @SLog(tag = "会员高级管理-批量设置在职状态", msg = "批量设置在职状态") + @SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR) + public Result batchUpdateUserState(@Param("users") String usersJson) { + try { + List userList = Json.fromJsonAsList(NutMap.class, usersJson); + if (Lang.isEmpty(userList)) { + return Result.error("请选择要修改的用户"); + } + + int successCount = 0; + for (NutMap userMap : userList) { + MemberChangeRecord record = buildManualChangeRecord(userMap.getString("id")); + if (record != null) { + record.setUserState(userMap.getString("userState")); + successCount += applyManualChange(record); + } + } + + if (successCount <= 0) { + return Result.error("未检测到可保存的变更数据"); + } + return Result.success("批量设置在职状态成功"); + } catch (Exception e) { + log.error("批量设置在职状态失败", e); + return Result.error("批量设置在职状态失败:" + e.getMessage()); + } + } + + @At + @POST + @RepeatSubmit + @Aop(TransAop.READ_COMMITTED) + @SLog(tag = "会员高级管理-单位调整", msg = "批量单位调整") + @SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR) + public Result unitMove(@Param("unitId") String unitId, @Param("userIds") String userIdsJson) { + try { + if (StrUtil.isBlank(unitId)) { + return Result.error("请选择新单位"); + } + if (StrUtil.isBlank(userIdsJson)) { + return Result.error("请选择要修改的用户"); + } + + List userIds = Json.fromJsonAsList(String.class, userIdsJson); + if (Lang.isEmpty(userIds)) { + return Result.error("请选择要修改的用户"); + } + + Sys_unit unit = dao.fetch(Sys_unit.class, unitId); + if (unit == null) { + return Result.error("单位不存在"); + } + + Sys_union union = StrUtil.isNotBlank(unit.getUnionId()) ? dao.fetch(Sys_union.class, unit.getUnionId()) : null; + int successCount = 0; + for (String userId : userIds) { + MemberChangeRecord record = buildManualChangeRecord(userId); + if (record != null) { + record.setUnitId(unitId); + record.setUnitName(unit.getName()); + record.setUnionId(unit.getUnionId()); + record.setUnionName(union != null ? union.getName() : ""); + successCount += applyManualChange(record); + } + } + + if (successCount <= 0) { + return Result.error("未检测到可保存的变更数据"); + } + return Result.success("单位调整成功"); + } catch (Exception e) { + log.error("单位调整失败", e); + return Result.error("单位调整失败:" + e.getMessage()); + } + } + + private MemberChangeRecord buildManualChangeRecord(String userId) { + if (StrUtil.isBlank(userId)) { + return null; + } + View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", userId)); + if (user == null) { + return null; + } + MemberChangeRecord record = new MemberChangeRecord(); + BeanUtil.copyProperties(user, record); + record.setUserId(user.getId()); + return record; + } + + private int applyManualChange(MemberChangeRecord record) { + try { + memberCommonService.validateChangeAndSetBasicData(record, MemberChangeOrigin.HAND_MOVEMENT); + memberCommonService.compareChangeInfoAndUpdateMember(record); + return 1; + } catch (BaseException e) { + if (StrUtil.contains(e.getMessage(), "未获取到异动数据")) { + return 0; + } + throw e; + } + } + public void doExport() { diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberInfoInputController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberInfoInputController.java new file mode 100644 index 00000000..f1aec67e --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberInfoInputController.java @@ -0,0 +1,80 @@ +package com.budwk.app.zhgh.staffmanage.member.controller.info; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm; +import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Cnd; +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.Strings; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.POST; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.BufferedOutputStream; +import java.net.URLEncoder; +import java.util.List; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * @version 1.0 + * @Author hqw + * @name:MemberInfoInputController + * @Date 2026/4/8 19:31 + * @注释 人员补录 + */ +@At("/platform/member/info/input") +@Ok("json:full") +@IocBean +public class MemberInfoInputController { + + @Inject + private MemberInfoService memberInfoService; + + @At("") + @Ok("beetl:/platform/zhgh/staffmanage/member/info/input/index.html") + @SaCheckPermission("member.info.input") + public void index() { + } + + + @At + @SaCheckPermission("member.info.input") + public Result pageData(MemberInfoPageForm pageForm) { + Sql sql = memberInfoService.getMemberInputSql(pageForm); + Pagination pagination = memberInfoService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + @At + @POST + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("member.info.input") + @SLog(tag = "会员信息录入", type = "add", msg = "新增会员") + public Result add(Sys_user user) { + try { + memberInfoService.addMember(user); + return Result.success("新增成功"); + } catch (Exception e) { + return Result.error(e.getMessage()); + } + } + + + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberSummaryController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberSummaryController.java index 78a579b1..f3697d04 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberSummaryController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberSummaryController.java @@ -2,6 +2,7 @@ package com.budwk.app.zhgh.staffmanage.member.controller.statistics; import cn.dev33.satoken.annotation.SaCheckPermission; import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberStatisticsPageForm; import com.budwk.app.zhgh.staffmanage.member.service.MemberStatisticsService; import org.apache.poi.ss.usermodel.Workbook; import org.nutz.ioc.loader.annotation.Inject; @@ -38,13 +39,12 @@ public class MemberSummaryController { @At @SaCheckPermission("member.statistics.summary") - public Result pageData(@Param("queryId") String queryId, @Param("queryType") String queryType, - @Param("currentYear") Integer currentYear) { + public Result pageData(MemberStatisticsPageForm pageForm) { List list = new ArrayList<>(); - if ("fgh".equals(queryType)) { - list = memberStatisticsService.getUnionStatisticsData(queryId, currentYear); + if ("fgh".equals(pageForm.getQueryType())) { + list = memberStatisticsService.getUnionStatisticsData(pageForm); } else { - list = memberStatisticsService.getUnitStatisticsData(queryId, currentYear); + list = memberStatisticsService.getUnitStatisticsData(pageForm); } return Result.success(list); } @@ -53,16 +53,15 @@ public class MemberSummaryController { @At @Ok("void") @SaCheckPermission("member.statistics.summary") - public void doExport(@Param("queryId") String queryId, @Param("queryType") String queryType, - @Param("currentYear") Integer currentYear, HttpServletResponse response) { + public void doExport(MemberStatisticsPageForm pageForm, HttpServletResponse response) { List list = new ArrayList<>(); - if ("union".equals(queryType)) { - list = memberStatisticsService.getUnionStatisticsData(queryId, currentYear); + if ("union".equals(pageForm.getQueryType())) { + list = memberStatisticsService.getUnionStatisticsData(pageForm); } else { - list = memberStatisticsService.getUnitStatisticsData(queryId, currentYear); + list = memberStatisticsService.getUnitStatisticsData(pageForm); } NutMap map = NutMap.NEW(); - map.put("union".equals(queryType) ? "unionName" : "unitName", "合计"); + map.put("union".equals(pageForm.getQueryType()) ? "unionName" : "unitName", "合计"); map.put("totalNumber", list.stream().mapToInt(v -> v.getInt("TotalNumber")).sum()); map.put("maleMember", list.stream().mapToInt(v -> v.getInt("maleMember")).sum()); map.put("femaleMember", list.stream().mapToInt(v -> v.getInt("femaleMember")).sum()); @@ -73,7 +72,7 @@ public class MemberSummaryController { try { response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(("会员性别统计.xlsx").getBytes("utf-8"), "ISO8859-1")); - Workbook workbook = memberStatisticsService.exportStatisticsExcel(list, queryType); + Workbook workbook = memberStatisticsService.exportStatisticsExcel(list, pageForm.getQueryType()); workbook.write(response.getOutputStream()); workbook.close(); } catch (Exception e) { diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberChangeRecord.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberChangeRecord.java index 638d8d51..e04a749f 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberChangeRecord.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/models/MemberChangeRecord.java @@ -2,6 +2,7 @@ package com.budwk.app.zhgh.staffmanage.member.models; import cn.hutool.json.JSONObject; import com.budwk.app.base.model.BaseModel; +import com.budwk.app.sys.annotation.DataCenterColumn; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -124,6 +125,17 @@ public class MemberChangeRecord extends BaseModel { @Size(max = 50) private String userState; + @Column + @Comment("人员属性") + @ColDefine(type = ColType.VARCHAR, width = 50) + @Size(max = 50) + private String userAttribute; + + @Column + @Comment("职称") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String professionalTitle; + @Column @Comment("编制类别") @ColDefine(type = ColType.VARCHAR, width = 50) @@ -220,5 +232,10 @@ public class MemberChangeRecord extends BaseModel { @ColDefine(type = ColType.TEXT) private String remark; + @Column + @Comment("基金会员类型(人员分类)") + @ColDefine(type = ColType.VARCHAR,width = 10) + private String aidFundMemberUserType; + private Boolean edit; } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberChangePageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberChangePageForm.java index d859eb03..e3b49fe0 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberChangePageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberChangePageForm.java @@ -41,6 +41,12 @@ public class MemberChangePageForm extends PageForm { @ApiModelProperty("教职工类别") private List personTypes; + @ApiModelProperty("人员分类") + private String aidFundMemberUserType; + + @ApiModelProperty("人员属性") + private String userAttribute; + public void buildSearch(Cnd cnd, String prefix){ if (cnd == null) { @@ -59,5 +65,7 @@ public class MemberChangePageForm extends PageForm { cnd.andEX(prefix + "userState", "in", this.getUserStates()); cnd.andEX(prefix + "preparedBy", "in", this.getPreparedBys()); cnd.andEX(prefix + "personType", "in", this.getPersonTypes()); + cnd.andEX(prefix + "aidFundMemberUserType", "=", this.getAidFundMemberUserType()); + cnd.andEX(prefix + "userAttribute", "=", this.getUserAttribute()); } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java index e85e464c..3c2396b5 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberInfoPageForm.java @@ -98,6 +98,18 @@ public class MemberInfoPageForm extends PageForm { @ApiModelProperty("导出的数据") private List> columns; + @ApiModelProperty("人员分类") + private String aidFundMemberUserType; + + @ApiModelProperty("人员分类组") + private List aidFundMemberUserTypes; + + @ApiModelProperty("人员属性") + private String userAttribute; + + @ApiModelProperty("人员属性组") + private List userAttributes; + public void buildSearch(Cnd cnd, String prefix){ if (cnd == null) { cnd = Cnd.NEW(); @@ -128,15 +140,39 @@ public class MemberInfoPageForm extends PageForm { } cnd.andEX(prefix + "unitId", "=", this.getUnitId()); - cnd.andEX(prefix + "userState", "in", this.getUserStates()); - cnd.andEX(prefix + "preparedBy", "in", this.getPreparedBys()); - cnd.andEX(prefix + "personType", "in", this.getPersonTypes()); - - if(StrUtil.isAllBlank(this.getPageOrderName(),this.getPageOrderBy())){ - cnd.asc("unionCode").asc("unitCode"); - }else{ - cnd.orderBy(this.getPageOrderName(), PageUtil.getOrder(this.getPageOrderBy())); + if (StrUtil.isNotBlank(this.getUserState())) { + cnd.and(prefix + "userState", "=", this.getUserState()); + } else if (Lang.isNotEmpty(this.getUserStates())) { + cnd.and(prefix + "userState", "in", this.getUserStates()); } + + if (StrUtil.isNotBlank(this.getPreparedBy())) { + cnd.and(prefix + "preparedBy", "=", this.getPreparedBy()); + } else if (Lang.isNotEmpty(this.getPreparedBys())) { + cnd.and(prefix + "preparedBy", "in", this.getPreparedBys()); + } + + if (StrUtil.isNotBlank(this.getPersonType())) { + cnd.and(prefix + "personType", "=", this.getPersonType()); + } else if (Lang.isNotEmpty(this.getPersonTypes())) { + cnd.and(prefix + "personType", "in", this.getPersonTypes()); + } + if (StrUtil.isNotBlank(this.getUserAttribute())) { + cnd.and(prefix + "userAttribute", "=", this.getUserAttribute()); + } else if (Lang.isNotEmpty(this.getUserAttributes())) { + cnd.and(prefix + "userAttribute", "in", this.getUserAttributes()); + } + + if (StrUtil.isNotBlank(this.getAidFundMemberUserType())) { + cnd.and(prefix + "aidFundMemberUserType", "=", this.getAidFundMemberUserType()); + } else if (Lang.isNotEmpty(this.getAidFundMemberUserTypes())) { + cnd.and(prefix + "aidFundMemberUserType", "in", this.getAidFundMemberUserTypes()); + } +// if(StrUtil.isAllBlank(this.getPageOrderName(),this.getPageOrderBy())){ +// cnd.asc("unionCode").asc("unitCode"); +// }else{ +// cnd.orderBy(this.getPageOrderName(), PageUtil.getOrder(this.getPageOrderBy())); +// } } } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java index 7f1dd505..365b24d4 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberManagePageForm.java @@ -38,6 +38,10 @@ public class MemberManagePageForm extends PageForm { private String userState; + private String aidFundMemberUserType; + + private String userAttribute; + private String changeType; //变更状态数组 @@ -88,6 +92,8 @@ public class MemberManagePageForm extends PageForm { cnd.andEX("u.preparedBy", "=", pageForm.getPreparedBy()); cnd.andEX("u.sex", "=", pageForm.getSex()); cnd.andEX("u.personType", "=", pageForm.getPersonType()); + cnd.andEX("u.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType()); + cnd.andEX("u.userAttribute", "=", pageForm.getUserAttribute()); if (StrUtil.isNotBlank(pageForm.getChangeDateBefore()) && StrUtil.isNotBlank(pageForm.getChangeDateEnd())) { cnd.and(new Static(String.format("Date(his.changeTime) >= '%s' and Date(his.changeTime) <= '%s'", pageForm.getChangeDateBefore(), pageForm.getChangeDateEnd()))); @@ -141,6 +147,8 @@ public class MemberManagePageForm extends PageForm { cnd.andEX("record.userState", "=", pageForm.getUserState()); cnd.andEX("record.preparedBy", "=", pageForm.getPreparedBy()); cnd.andEX("record.personType", "=", pageForm.getPersonType()); + cnd.andEX("record.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType()); + cnd.andEX("record.userAttribute", "=", pageForm.getUserAttribute()); cnd.groupBy("record.id,task.id"); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java index f78660f3..b01a8d02 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberStatisticsPageForm.java @@ -19,6 +19,12 @@ import java.util.Map; @Data public class MemberStatisticsPageForm extends PageForm { + private String queryId; + + private String queryType; + + private Integer currentYear; + private String isUnit; private String isUnion; @@ -44,6 +50,10 @@ public class MemberStatisticsPageForm extends PageForm { private List preparedBys; + private List aidFundMemberUserTypes; + + private List userAttributes; + private List userStates; private List memberStatus; diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java index 9b76e766..4d773988 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberInfoService.java @@ -27,6 +27,19 @@ public interface MemberInfoService extends BaseService { */ Sql getSql(MemberInfoPageForm pageForm); + /** + * 获取查询人员补录Sql(变更表) + * @param pageForm + * @return + */ + Sql getMemberInputSql(MemberInfoPageForm pageForm); + + /** + * 新增会员 + * @param user 会员信息 + */ + void addMember(Sys_user user); + /** * 获取会员历史 * @param pageForm diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberStatisticsService.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberStatisticsService.java index e0538561..5e097e30 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberStatisticsService.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/MemberStatisticsService.java @@ -65,7 +65,7 @@ public interface MemberStatisticsService extends BaseService { * @param currentYear * @return */ - List getUnionStatisticsData(String unionId, Integer currentYear); + List getUnionStatisticsData(MemberStatisticsPageForm pageForm); /** * 获取单位统计数据 @@ -73,7 +73,7 @@ public interface MemberStatisticsService extends BaseService { * @param currentYear * @return */ - List getUnitStatisticsData(String unitId, Integer currentYear); + List getUnitStatisticsData(MemberStatisticsPageForm pageForm); /** * 导出统计数据 diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java index 6c31ca9b..5044e440 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java @@ -9,6 +9,7 @@ import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.exception.BaseException; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.base.utils.*; import com.budwk.app.base.utils.easyexcel.EasyExcelUtil; @@ -18,6 +19,9 @@ import com.budwk.app.sys.models.Sys_user_role; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.sys.models.Sys_user; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin; +import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType; +import com.budwk.app.zhgh.staffmanage.member.models.MemberChangeRecord; import com.budwk.app.zhgh.staffmanage.member.models.MemberHistory; import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm; import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService; @@ -41,6 +45,7 @@ import org.nutz.mvc.upload.TempFile; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -113,6 +118,152 @@ public class MemberInfoServiceImpl extends BaseServiceImpl implements return sql; } + @Override + public Sql getMemberInputSql(MemberInfoPageForm pageForm) { + Sql sql = Sqls.create(""" + SELECT + info.id, + info.userId, + info.username, + info.loginname, + info.unitId, + info.unionId, + info.sex, + info.birthday, + info.idCard, + info.nation, + info.political, + info.education, + info.academicDegree, + info.userState, + info.preparedBy, + info.personType, + info.mobile, + info.email, + info.member, + info.welfareMember, + info.retireDate, + info.families, + info.personalData, + info.userAttribute, + info.campus, + info.professionalTitle, + info.aidFundMemberUserType, + info.changeType, + info.changeOrigin, + info.applyDateTime, + info.createdAt, + info.createdBy, + info.updatedAt, + info.updatedBy, + FROM_UNIXTIME(info.createdAt / 1000, '%Y-%m-%d %H:%i:%s') AS createdAtStr, + creator.username AS createdByUsername, + su.name AS unitName, + sui.name AS unionName + FROM + member_change_record info + INNER JOIN `vw_user` u ON u.id = info.userId + LEFT JOIN sys_user creator ON creator.id = info.createdBy + LEFT JOIN sys_unit su ON su.id = info.unitId + LEFT JOIN sys_union sui ON sui.id = su.unionId + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("changeOrigin", "=", "HAND_MOVEMENT"); + pageForm.buildSearch(cnd, "info."); + sql.setCondition(cnd); + return sql; + } + + @Override + @Aop(TransAop.READ_COMMITTED) + public void addMember(Sys_user user) { + if (StrUtil.isBlank(user.getLoginname())) { + throw new BaseException("工号不能为空"); + } + if (StrUtil.isBlank(user.getUsername())) { + throw new BaseException("姓名不能为空"); + } + + Sys_user existUser = dao().fetch(Sys_user.class, Cnd.where("loginname", "=", user.getLoginname())); + if (existUser != null) { + throw new BaseException("该工号已存在"); + } + + Sys_role memberRole = dao().fetch(Sys_role.class, Cnd.where("code", "=", RoleConstant.MEMBER.name())); + Sys_role publicRole = dao().fetch(Sys_role.class, Cnd.where("code", "=", RoleConstant.PUBLIC.name())); + user.setId(R.UU32()); + user.setCreateAt(System.currentTimeMillis()); + user.setLoginCount(0); + user.setDisabled(false); + + if (user.getMember() == null) { + user.setMember(true); + } + if (user.getWelfareMember() == null) { + user.setWelfareMember(false); + } + if (user.getSex() == null) { + user.setSex("男"); + } + + dao().insert(user); + + if (publicRole != null) { + Sys_user_role userRole = new Sys_user_role(); + userRole.setUserId(user.getId()); + userRole.setRoleId(publicRole.getId()); + dao().insert(userRole); + } + if (memberRole != null) { + Sys_user_role userRole = new Sys_user_role(); + userRole.setUserId(user.getId()); + userRole.setRoleId(memberRole.getId()); + dao().insert(userRole); + + if (user.getMemberTime() == null) { + user.setMemberTime(new Date()); + dao().update(user, Cnd.where("id", "=", user.getId())); + } + } + + MemberChangeRecord changeRecord = new MemberChangeRecord(); + changeRecord.setUserId(user.getId()); + changeRecord.setUsername(user.getUsername()); + changeRecord.setLoginname(user.getLoginname()); + changeRecord.setUnitId(user.getUnitId()); + changeRecord.setUnitName(user.getUnit() != null ? user.getUnit().getName() : ""); + changeRecord.setUnionId(user.getUnion() != null ? user.getUnion().getId() : null); + changeRecord.setUnionName(user.getUnion() != null ? user.getUnion().getName() : ""); + changeRecord.setSex(user.getSex()); + changeRecord.setBirthday(user.getBirthday()); + changeRecord.setIdCard(user.getIdCard()); + changeRecord.setNation(user.getNation()); + changeRecord.setPolitical(user.getPolitical()); + changeRecord.setEducation(user.getEducation()); + changeRecord.setAcademicDegree(user.getAcademicDegree()); + changeRecord.setUserState(user.getUserState()); + changeRecord.setPreparedBy(user.getPreparedBy()); + changeRecord.setPersonType(user.getPersonType()); + changeRecord.setMobile(user.getMobile()); + changeRecord.setEmail(user.getEmail()); + changeRecord.setMember(user.getMember()); + changeRecord.setWelfareMember(user.getWelfareMember()); + changeRecord.setRetireDate(user.getRetireDate()); + changeRecord.setFamilies(user.getFamilies()); + changeRecord.setPersonalData(user.getPersonalData()); + changeRecord.setUserAttribute(user.getUserAttribute()); + changeRecord.setCampus(user.getCampus()); + changeRecord.setProfessionalTitle(user.getProfessionalTitle()); + changeRecord.setAidFundMemberUserType(user.getAidFundMemberUserType()); + changeRecord.setChangeType(MemberChangeType.NEW.name()); + changeRecord.setChangeOrigin(MemberChangeOrigin.HAND_MOVEMENT.name()); + changeRecord.setApplyDateTime(new Date()); + + dao().insert(changeRecord); + + } + @Override public Sql getMemberHistorySql(MemberInfoPageForm pageForm) { diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java index e93ca2f9..bbcea506 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java @@ -93,6 +93,8 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement u.personType, u.welfareMember, u.isModelWorker, + u.userAttribute, + u.aidFundMemberUserType, his.id hisId, his.changeTypes, his.changeTime diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java index c68c3c1d..82d5ab49 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java @@ -90,6 +90,8 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple handleField("unitId", pageForm.getUnitId(), reverseSelection, IN_OR_NIN_OP, cnd); handleField("personType", pageForm.getPersonTypes(), reverseSelection, IN_OR_NIN_OP, cnd); handleField("preparedBy", pageForm.getPreparedBys(), reverseSelection, IN_OR_NIN_OP, cnd); + handleField("aidFundMemberUserType", pageForm.getAidFundMemberUserTypes(), reverseSelection, IN_OR_NIN_OP, cnd); + handleField("userAttribute", pageForm.getUserAttributes(), reverseSelection, IN_OR_NIN_OP, cnd); handleField("userState", pageForm.getUserStates(), reverseSelection, IN_OR_NIN_OP, cnd); handleField("sex", pageForm.getSexTypes(), reverseSelection, IN_OR_NIN_OP, cnd); cnd.andEX("sur.roleId", IN_OR_NIN_OP, pageForm.getRoleIds()); @@ -145,6 +147,8 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple u.arrivalAtSchoolDate, u.personType, u.preparedBy, + u.aidFundMemberUserType, + u.userAttribute, u.identityType, u.userState, u.unionName, @@ -309,7 +313,9 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple @Override - public List getUnionStatisticsData(String unionId, Integer currentYear) { + public List getUnionStatisticsData(MemberStatisticsPageForm pageForm) { + String unionId = pageForm.getQueryId(); + Integer currentYear = pageForm.getCurrentYear(); Sql sql = Sqls.create(""" SELECT un.id, @@ -341,6 +347,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear))); // sql.setVar("abbr", new Static("his")); } + cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes()); cnd.groupBy("un.id", "un.unionCode", "un.name"); cnd.asc("un.unionCode"); sql.setCondition(cnd); @@ -348,7 +355,9 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple } @Override - public List getUnitStatisticsData(String unitId, Integer currentYear) { + public List getUnitStatisticsData(MemberStatisticsPageForm pageForm) { + String unitId = pageForm.getQueryId(); + Integer currentYear = pageForm.getCurrentYear(); Sql sql = Sqls.create(""" SELECT un.id, @@ -378,6 +387,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple sql.setVar("table", new Static("member_history")); sql.setVar("yearCnd", new Static(" AND u.`year` = %d".formatted(currentYear))); } + cnd.andEX("u.userAttribute", "in", pageForm.getUserAttributes()); cnd.and("un.unitLevel", "=", 2); cnd.groupBy("un.id", "un.unitcode", "un.name"); cnd.asc("un.unitcode"); diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/commonQuery.js b/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/commonQuery.js index 886faa21..9d57d8cc 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/commonQuery.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/commonQuery.js @@ -30,6 +30,14 @@ const COMMON_QUERY = { + + + + + + `, store, @@ -45,6 +53,8 @@ const COMMON_QUERY = { userStates: [], personTypes: [], preparedBys: [], + aidFundMemberUserType: '', + userAttribute: '', } } }, diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/memberChange.js b/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/memberChange.js index 9414138b..7c9a1634 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/memberChange.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/common/memberChange.js @@ -62,12 +62,12 @@ const MEMBER_CHANGE = { code="USER_ACADEMIC_DEGREE"> - - - - - + + + + + + @@ -439,6 +451,8 @@ const MEMBER_CHANGE = { userState, personType, preparedBy, + userAttribute, + aidFundMemberUserType, idCard, mobile, email, @@ -463,6 +477,8 @@ const MEMBER_CHANGE = { this.$set(this.formData, "userState", userState) this.$set(this.formData, "personType", personType) this.$set(this.formData, "preparedBy", preparedBy) + this.$set(this.formData, "userAttribute", userAttribute) + this.$set(this.formData, "aidFundMemberUserType", aidFundMemberUserType) this.$set(this.formData, "unitName", unit ? unit.name : null) this.$set(this.formData, "unitId", unit ? unit.id : null) this.$set(this.formData, "unionName", union ? union.name : null) diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html index 68b7f55a..a73e50d7 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/manage/index.html @@ -38,6 +38,14 @@ layout("/layouts/platform.html"){ + + + + + + + + 设置会员 + + + + 设置人员分类 + + + + 设置人员属性 + + + + 设置在职状态 + + + + 单位调整 + + @@ -107,8 +140,9 @@ layout("/layouts/platform.html"){ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + @@ -244,10 +513,31 @@ layout("/layouts/platform.html"){ changed: 2, isMember: 1, changeTypes: [], + aidFundMemberUserType: "", + userAttribute: "", }, unions: [], units: [], id: "", + checkUsers: [], + batchEditLoading: false, + batchEditUserAttributeVisible: false, + batchEditMemberVisible: false, + batchEditAidFundTypeVisible: false, + batchEditUserStateVisible: false, + unitMoveVisible: false, + batchFormDataUserAttribute: {}, + batchFormDataMember: {member: false, welfareMember: false}, + batchFormDataAidFundType: {}, + batchFormDataUserState: {}, + unitMoveFormData: { + unitId: "", + unionId: "", + unitName: "", + unionName: "" + }, + unitMoveUnions: [], + unitMoveUnits: [], tableColumns: [ { prop: "loginname", label: "工号", width: 120, fixed: "left"}, { prop: "username", label: "姓名", width: 120, fixed: "left" }, @@ -258,11 +548,13 @@ layout("/layouts/platform.html"){ { prop: "mobile", label: "联系电话", width: 120 }, { prop: "political", label: "政治面貌", width: 120, sortable: true}, { prop: "userState", label: "在职状态", width: 120, sortable: true }, - { prop: "personType", label: "教职工类别", width: 120, sortable: true }, + { prop: "personType", label: "教职工类别", width: 120, sortable: true, checked: 0 }, { prop: "preparedBy", label: "编制类别", width: 120, sortable: true }, { prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 }, { prop: "unionName", label: "所属工会", width: 120, sortable: true }, { prop: "unitName", label: "所属单位", width: 120, sortable: true }, + { prop: "userAttribute", label: "人员属性", width: 120, sortable: true }, + { prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true }, { prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 }, { prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 }, { prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 }, @@ -381,7 +673,161 @@ layout("/layouts/platform.html"){ invertCheck() { const all = this.tableColumns.map(c => c.prop); this.checkedFields = all.filter(p => !this.checkedFields.includes(p)); - } + }, + tableHandleSelectionChange(val) { + this.checkUsers = JSON.parse(JSON.stringify([...val])) + }, + handleClose(done) { + this.$confirm("确认关闭?").then(() => { + done() + this.checkUsers = [] + this.$refs.table.clearSelection() + }).catch(() => {}) + }, + openBatchEditUserAttribute() { + this.batchFormDataUserAttribute = {} + this.batchEditUserAttributeVisible = true + }, + openBatchEditMember() { + this.batchFormDataMember = {member: false, welfareMember: false} + this.batchEditMemberVisible = true + }, + openBatchEditAidFundType() { + this.batchFormDataAidFundType = {} + this.batchEditAidFundTypeVisible = true + }, + openBatchEditUserState() { + this.batchFormDataUserState = {} + this.batchEditUserStateVisible = true + }, + async openUnitMove() { + this.unitMoveFormData = { + unitId: "", + unionId: "", + unitName: "", + unionName: "" + } + this.unitMoveUnits = [] + this.unitMoveVisible = true + const isAdmin = this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"]) + if (isAdmin) { + this.unitMoveUnions = await this.$businessTool.listUnion(this.pageForm.unionId) + } else { + this.unitMoveUnions = await this.$businessTool.listUnion(this.$store.state.user.union.id) + } + }, + async moveUnionsChange(val) { + if (val) { + this.unitMoveUnits = await this.$businessTool.listUnit(val) + const union = this.unitMoveUnions.find(v => v.id === val) + this.$set(this.unitMoveFormData, "unionName", union ? union.name : "") + this.$set(this.unitMoveFormData, "unitId", "") + this.$set(this.unitMoveFormData, "unitName", "") + } else { + this.$set(this.unitMoveFormData, "unitId", "") + this.$set(this.unitMoveFormData, "unitName", "") + this.$set(this.unitMoveFormData, "unionName", "") + this.unitMoveUnits = [] + } + }, + moveUnitChange(val) { + if (val) { + const unit = this.unitMoveUnits.find(v => v.id === val) + this.$set(this.unitMoveFormData, "unitName", unit ? unit.name : "") + } else { + this.$set(this.unitMoveFormData, "unitName", "") + } + }, + async doBatchEditUserAttribute() { + const batch = this.checkUsers.map(v => { + return {id: v.id, userAttribute: v.userAttribute} + }) + this.batchEditLoading = true + const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateUserAttribute", {users: JSON.stringify(batch)}) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.pageData() + this.$refs.table.clearSelection() + this.batchEditUserAttributeVisible = false + this.checkUsers = [] + } else { + this.$message.error(resp.msg) + } + this.batchEditLoading = false + }, + async doBatchEditMember() { + const batch = this.checkUsers.map(v => { + return {id: v.id, member: v.member, welfareMember: v.welfareMember} + }) + this.batchEditLoading = true + const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateMember", {users: JSON.stringify(batch)}) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.pageData() + this.$refs.table.clearSelection() + this.batchEditMemberVisible = false + this.checkUsers = [] + } else { + this.$message.error(resp.msg) + } + this.batchEditLoading = false + }, + async doBatchEditAidFundType() { + const batch = this.checkUsers.map(v => { + return {id: v.id, aidFundMemberUserType: v.aidFundMemberUserType} + }) + this.batchEditLoading = true + const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateAidFundType", {users: JSON.stringify(batch)}) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.pageData() + this.$refs.table.clearSelection() + this.batchEditAidFundTypeVisible = false + this.checkUsers = [] + } else { + this.$message.error(resp.msg) + } + this.batchEditLoading = false + }, + async doBatchEditUserState() { + const batch = this.checkUsers.map(v => { + return {id: v.id, userState: v.userState} + }) + this.batchEditLoading = true + const resp = await this.$axios.post("/platform/member/change/manage/batchUpdateUserState", {users: JSON.stringify(batch)}) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.pageData() + this.$refs.table.clearSelection() + this.batchEditUserStateVisible = false + this.checkUsers = [] + } else { + this.$message.error(resp.msg) + } + this.batchEditLoading = false + }, + async doUnitMove() { + if (!this.unitMoveFormData.unitId) { + this.$message.warning("请选择新单位!") + return + } + const params = { + unitId: this.unitMoveFormData.unitId, + userIds: JSON.stringify(this.checkUsers.map(v => v.id)) + } + this.batchEditLoading = true + const resp = await this.$axios.post("/platform/member/change/manage/unitMove", params) + if (resp.code === 0) { + this.$message.success(resp.msg) + this.pageData() + this.$refs.table.clearSelection() + this.unitMoveVisible = false + this.checkUsers = [] + } else { + this.$message.error(resp.msg) + } + this.batchEditLoading = false + } }, computed: { showColumns() { diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/change/record/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/change/record/index.html index 2d26bdfc..2dfe33b1 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/change/record/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/change/record/index.html @@ -35,6 +35,14 @@ layout("/layouts/platform.html"){ + + + + + + @@ -132,6 +140,16 @@ layout("/layouts/platform.html"){ unions: [], units: [], changeTypeData: [], + pageForm: { + searchKeyword: "", + unionId: "", + unitId: "", + userState: "", + personType: "", + changeType: "", + aidFundMemberUserType: "", + userAttribute: "" + } } }, components: { diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js index d0fc43c0..4f0cb3ef 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js @@ -1,4 +1,4 @@ -const MEMBER_INFO = { +const MEMBER_INFO = { template: /*language=html*/ `
@@ -16,7 +16,7 @@ {{ viewData.idCardType }} - {{ viewData.idcard }} + {{ viewData.idCard }} {{ viewData.mobile }} @@ -64,7 +64,7 @@ {{ viewData.campus }} - {{ viewData.arrivalAtSchoolDate ? $moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD') : null }} + {{ viewData.arrivalAtSchoolDate ? $moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD') : null }} {{ viewData.teachingTime ? $moment(viewData.teachingTime).format('YYYY-MM-DD') : null }} {{ viewData.expectedLeaveSchoolDate ? $moment(viewData.expectedLeaveSchoolDate).format('YYYY-MM-DD') : null }} @@ -82,6 +82,9 @@ {{ viewData.administrativeLevel }} {{ viewData.positionLevel }} {{ viewData.administrativePositionLevel }} + + {{ viewData.aidFundMemberUserType }} + {{ viewData.userAttribute }}
`, @@ -100,4 +103,4 @@ }) } } -} +}; diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js b/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js index 64f84fba..c12d7be6 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/commonQuery.js @@ -45,6 +45,14 @@ const COMMON_QUERY = { + + + + + + `, store, @@ -68,6 +76,8 @@ const COMMON_QUERY = { userStates: [], personTypes: [], preparedBys: [], + aidFundMemberUserType: '', + userAttribute: '', } } }, diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/memberAddForm.js b/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/memberAddForm.js new file mode 100644 index 00000000..a260e9fe --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/common/memberAddForm.js @@ -0,0 +1,348 @@ +const MEMBER_ADD_FORM = { + template: /*language=HTML*/ ` +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 取消 + 提交 +
+
+ `, + store, + dicts: ["USER_NATION", "USER_POLITICAL", "USER_EDUCATION", "USER_ACADEMIC_DEGREE", "USER_CAMPUS", + "USER_STATE", "USER_PREPARED_BY_TYPE", "USER_PERSON_TYPE", "USER_MARRIAGE","AIDFUND_MEMBER_USER_TYPE","USER_ATTRIBUTE"], + data() { + return { + formData: { + loginname: '', + username: '', + sex: '男', + nation: '', + birthday: '', + political: '', + education: '', + academicDegree: '', + position: '', + unitId: '', + unionId: '', + campus: '', + userState: '', + preparedBy: '', + personType: '', + idCard: '', + mobile: '', + email: '', + marriage: '', + arrivalAtSchoolDate: '', + homeAddress: '', + families: [], + personalData: '', + specialty: '', + member: false, + welfareMember: false + }, + formRules: { + loginname: [{ required: true, message: '请输入工号', trigger: 'blur' }], + username: [{ required: true, message: '请输入姓名', trigger: 'blur' }], + sex: [{ required: true, message: '请选择性别', trigger: 'change' }], + idCard: [{ required: true, message: '请输入身份证号码', trigger: 'blur' }], + mobile: [{ required: true, message: '请输入联系电话', trigger: 'blur' }], + unitId: [{ required: true, message: '请选择工作单位', trigger: 'change' }], + unionId: [{ required: true, message: '请选择所属工会', trigger: 'change' }], + userState: [{ required: true, message: '请选择在职状态', trigger: 'change' }] + }, + units: [], + unions: [], + submitLoading: false + } + }, + methods: { + async initUnits() { + if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) { + this.units = await this.$businessTool.listUnit() + this.unions = await this.$businessTool.listUnion() + } else { + this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id) + this.unions = await this.$businessTool.listUnion(this.$store.state.user.union.id) + } + }, + async getUnionName(unitId) { + const unit = this.units.find(u => u.id === unitId) + if (unit && unit.unionId) { + this.formData.unionId = unit.unionId + } + }, + handleSubmit() { + this.$refs.formRef.validate((valid) => { + if (!valid) { + return + } + this.$confirm("您确定要提交吗?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }).then(() => { + const loading = createLoading() + this.$axios.post('/platform/member/info/input/add', this.formData).then(res => { + if (res.code === 0) { + this.$message.success(res.msg) + commonUtil.pjaxPush("/platform/member/info/input") + } + }).finally(() => { + loading.close() + }) + }) + }) + }, + handleCancel() { + this.$refs.formRef.resetFields() + this.formData.families = [] + this.$parent.$parent.close() + } + }, + created() { + this.initUnits() + } +} diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html index b6e569e2..12d49502 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/group/index.html @@ -126,11 +126,13 @@ layout("/layouts/platform.html"){ { prop: "mobile", label: "联系电话", width: 120 }, { prop: "political", label: "政治面貌", width: 120, sortable: true}, { prop: "userState", label: "在职状态", width: 120, sortable: true }, - { prop: "personType", label: "教职工类别", width: 120, sortable: true }, + { prop: "personType", label: "教职工类别", width: 120, sortable: true, checked: 0 }, { prop: "preparedBy", label: "编制类别", width: 120, sortable: true }, { prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 }, { prop: "unionName", label: "所属工会", width: 120, sortable: true }, { prop: "unitName", label: "所属单位", width: 120, sortable: true }, + { prop: "userAttribute", label: "人员属性", width: 120, sortable: true }, + { prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true }, { prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 }, { prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 }, { prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 }, diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/history/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/info/history/index.html index 8fb20627..11577bc7 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/info/history/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/history/index.html @@ -51,9 +51,15 @@ layout("/layouts/platform.html"){ v-model="pageForm.preparedBy" placeholder="请选择编制类别" @change="doSearch" - code="USER_PREPARED_BY_TYPE" + code="USER_PREPARED_BY_TYPE" > + + + + + + @@ -103,13 +109,15 @@ layout("/layouts/platform.html"){ new Vue({ el: "#app", mixins: [initTableMixins], - dicts: ["USER_STATE", "USER_PERSON_TYPE", "MEMBER_CHANGE_TYPE"], + dicts: ["USER_STATE", "USER_PERSON_TYPE", "MEMBER_CHANGE_TYPE", "AIDFUND_MEMBER_USER_TYPE", "USER_ATTRIBUTE"], data() { return { pageForm: { year: new Date().getFullYear() - 1 + "", memberSearchName: "", - memberSearchKeyWord: "" + memberSearchKeyWord: "", + aidFundMemberUserType: "", + userAttribute: "" }, userId: "", unions: [], diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/input/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/info/input/index.html new file mode 100644 index 00000000..c0f455e9 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/input/index.html @@ -0,0 +1,186 @@ + + +
+ + + + + + + + +
+ + + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html index 57e97bf8..b540abc1 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/index.html @@ -158,11 +158,13 @@ layout("/layouts/platform.html"){ { prop: "mobile", label: "联系电话", width: 120 }, { prop: "political", label: "政治面貌", width: 120, sortable: true}, { prop: "userState", label: "在职状态", width: 120, sortable: true }, - { prop: "personType", label: "教职工类别", width: 120, sortable: true }, + { prop: "personType", label: "教职工类别", width: 120, sortable: true, checked: 0 }, { prop: "preparedBy", label: "编制类别", width: 120, sortable: true }, { prop: "postDoctoralJoinDate", label: "进站时间", sortable: true, checked: 0 }, { prop: "unionName", label: "所属工会", width: 120, sortable: true }, { prop: "unitName", label: "所属单位", width: 120, sortable: true }, + { prop: "userAttribute", label: "人员属性", width: 120, sortable: true }, + { prop: "aidFundMemberUserType", label: "人员分类", width: 120, sortable: true }, { prop: "idCardType", label: "证件类型", width: 120, sortable: true, checked: 0 }, { prop: "idCard", label: "证件号码", width: 120, sortable: true, checked: 0 }, { prop: "marriage", label: "婚姻状况", width: 120, sortable: true, checked: 0 }, @@ -201,6 +203,8 @@ layout("/layouts/platform.html"){ pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes) pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes) pageForm.personTypes = JSON.stringify(this.pageForm.personTypes) + pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes) + pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes) pageForm.userStates = JSON.stringify(this.pageForm.userStates) const data = this.tableColumns.filter(item => this.checkedFields.includes(item.prop)).map(item => { return {prop: item.prop, label: item.label} @@ -224,6 +228,8 @@ layout("/layouts/platform.html"){ pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes) pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes) pageForm.personTypes = JSON.stringify(this.pageForm.personTypes) + pageForm.aidFundMemberUserTypes = JSON.stringify(this.pageForm.aidFundMemberUserTypes) + pageForm.userAttributes = JSON.stringify(this.pageForm.userAttributes) pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys) pageForm.memberStatus = JSON.stringify(this.pageForm.memberStatus) pageForm.userStates = JSON.stringify(this.pageForm.userStates) diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js index cdf4234c..d847c6bd 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/comprehensive/queryForm.js @@ -112,6 +112,56 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { + + 人员分类: + + + + + 人员属性: + + + @@ -208,6 +258,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { searchName: "username", personTypes: [], preparedBys: [], + aidFundMemberUserTypes: [], + userAttributes: [], userStates: [], memberStatus: [], year: moment().format("YYYY"), @@ -224,6 +276,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { }, personTypeOptions: [], preparedByOptions: [], + aidFundMemberUserTypeOptions: [], + userAttributeOptions: [], userStateOptions: [], memberStatusOptions: [], unions: [], @@ -315,6 +369,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { this.pageForm.sexTypes = [] this.pageForm.personTypes = [] this.pageForm.preparedBys = [] + this.pageForm.aidFundMemberUserTypes = [] + this.pageForm.userAttributes = [] this.pageForm.memberStatus = [] this.pageForm.userStates = [] this.pageForm.unionId = [] @@ -352,6 +408,12 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = { this.$businessTool.getDictOptions("USER_PREPARED_BY_TYPE").then((data) => { this.preparedByOptions = data }) + this.$businessTool.getDictOptions("AIDFUND_MEMBER_USER_TYPE").then((data) => { + this.aidFundMemberUserTypeOptions = data + }) + this.$businessTool.getDictOptions("USER_ATTRIBUTE").then((data) => { + this.userAttributeOptions = data + }) this.$businessTool.getDictOptions("USER_STATE").then((data) => { this.userStateOptions = data }) diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/summary/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/summary/index.html index ec50c653..8053d492 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/summary/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/summary/index.html @@ -1,6 +1,28 @@ +