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 ee1bb78..fe5c480 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 @@ -242,6 +242,16 @@ public class Sys_user extends BaseModel implements Serializable { @Default(value = "0") private Boolean member; + @Column + @Comment("会员入会日期") + @ColDefine(type = ColType.DATETIME) + private Date memberJoinTime; + + @Column + @Comment("会员离会日期") + @ColDefine(type = ColType.DATETIME) + private Date memberLeaveTime; + @Column @Comment("是否福利会员") @ColDefine(type = ColType.BOOLEAN) diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java index a25e88c..7546266 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysDataUserAllUpdateServiceImpl.java @@ -228,6 +228,14 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService // 修改现有用户 u.setId(user.getId()); + // 本人电话、身份证不覆盖 + if (StrUtil.isNotBlank(user.getMobile())) { + u.setMobile(null); + } + if (StrUtil.isNotBlank(user.getIdCard())) { + u.setIdCard(null); + } + // 检查会员资格 boolean shouldBeMember = checkMembershipEligibility( source.getUserState(), @@ -236,10 +244,6 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService user ); - if(user.getLoginname().equals("45066")){ - System.out.println(".."); - } - // 更新会员状态 boolean currentIsMember = user.getMember() != null && user.getMember(); 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 f1570a5..2a7aa9b 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 @@ -170,4 +170,8 @@ public class View_user { @Column private Date postDoctoralJoinDate; + + private Date memberJoinTime; + + private Date memberLeaveTime; } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/school/MemberSchoolUnionManageController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/school/MemberSchoolUnionManageController.java index 1727a3f..1f89c70 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/school/MemberSchoolUnionManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/school/MemberSchoolUnionManageController.java @@ -1,18 +1,31 @@ package com.budwk.app.zhgh.staffmanage.member.controller.school; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.bean.BeanUtil; import com.budwk.app.base.annotation.RepeatSubmit; import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.constant.BpmProcessConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; +import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum; +import com.budwk.app.bpm.models.BpmProcessInstance; +import com.budwk.app.bpm.models.BpmProcessTask; +import com.budwk.app.bpm.param.BpmTaskApprovalParam; +import com.budwk.app.bpm.service.BpmService; +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.models.MemberApplyRecord; import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm; import com.budwk.app.zhgh.staffmanage.member.service.MemberManageService; 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.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.Lang; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; @@ -20,6 +33,7 @@ import org.nutz.mvc.annotation.Param; import javax.validation.Valid; import java.util.List; +import java.util.Map; /** * @version 1.0 @@ -34,6 +48,10 @@ import java.util.List; @Ok("json") public class MemberSchoolUnionManageController { + @Inject + private Dao dao; + @Inject + private BpmService bpmService; @Inject private MemberManageService memberManageService; @@ -70,6 +88,7 @@ public class MemberSchoolUnionManageController { @At @RepeatSubmit + @Aop(TransAop.READ_COMMITTED) @SaCheckPermission("member.branchUnion.manage.list") @SLog(tag = "校工会管理-会员管理", type = "MemberBranchManageList", msg = "校工会普通变更") public Result generalMemberChange(@Param("record") MemberApplyRecord record, @Param("approvalRemark") String approvalRemark){ @@ -77,13 +96,35 @@ public class MemberSchoolUnionManageController { try { // 校验是否有变更的字段 List changeInfoList = memberManageService.compareMemberChangeInfo(record); - // 存储变更的类型 - List changeTypeList = memberManageService.compareMemberChangeType(changeInfoList, record); - record.setChangeTypes(changeTypeList); - record.setChangeOrigin(MemberChangeOrigin.SCHOOL_UNION.name()); - record.setRemark(approvalRemark); - memberManageService.insert(record); - memberManageService.compareMemberChangeInfoAndUpdateUser(record); + + if (Lang.isNotEmpty(changeInfoList)) { + // 存储变更的类型 + List changeTypeList = memberManageService.compareMemberChangeType(changeInfoList, record); + record.setChangeTypes(changeTypeList); + record.setChangeOrigin(MemberChangeOrigin.SCHOOL_UNION.name()); + record.setRemark(approvalRemark); + memberManageService.insert(record); + + // 开启流程,留痕 + bpmService.startSubmitProcessInstance(BpmProcessConstant.MEMBER_BRANCH_UNION_CHANGE.name(), + "【会员分工会变更】" +record.getUsername(), record.getId(), + List.of(SecurityUtil.getUserLoginname()), null); + // 然后完成申请流程 + BpmProcessInstance committeeInstance = dao.fetch(BpmProcessInstance.class, Cnd.where("processInstanceBusinessId", "=", record.getId())); + BpmProcessTask committeeTask = dao.fetch(BpmProcessTask.class, Cnd.where(BpmProcessTask::getProcessInstanceId, "=", committeeInstance.getId()) + .desc(BpmProcessTask::getCreatedAt)); + BpmTaskApprovalParam committeeParam = new BpmTaskApprovalParam(); + committeeParam.setProcessInstanceId(committeeInstance.getId()); + committeeParam.setProcessInstanceBusinessId(record.getId()); + committeeParam.setProcessInstanceTaskId(committeeTask.getId()); + committeeParam.setBpmTaskApprovalType(BpmTaskApprovalTypeEnum.PASS.name()); + committeeParam.setBpmTaskApprovalTypeEnum(BpmTaskApprovalTypeEnum.PASS); + committeeParam.setApprovalOpinion("校工会会审核通过"); + bpmService.completeTask(committeeParam.getProcessInstanceTaskId(), committeeParam.getBpmTaskApprovalTypeEnum(), null, null); + + // 更新用户信息 + memberManageService.compareMemberChangeInfoAndUpdateUser(record); + } return Result.success(); } catch (Exception e) { e.printStackTrace(); 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 860d8b4..9f6d84f 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 @@ -1,6 +1,8 @@ package com.budwk.app.zhgh.staffmanage.member.param.pageform; import com.budwk.app.base.param.PageForm; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -13,50 +15,86 @@ import java.util.List; * @Date 2024/8/8 14:49 * @注释 */ -@EqualsAndHashCode(callSuper = true) @Data +@ApiModel("会员综合查询") +@EqualsAndHashCode(callSuper = true) public class MemberStatisticsPageForm extends PageForm { + @ApiModelProperty(value = "是否有单位") private String isUnit; + @ApiModelProperty(value = "是否有工会") private String isUnion; + @ApiModelProperty(value = "查询类型") private String searchType; + @ApiModelProperty(value = "开始时间(生日)") private String startDate; + @ApiModelProperty(value = "结束时间(生日)") private String endDate; + @ApiModelProperty(value = "查询年份") private Integer year; + @ApiModelProperty(value = "查询月份") + private Integer month; + + @ApiModelProperty(value = "查询工会id") private List unionId; + @ApiModelProperty(value = "查询单位id") private List unitId; + @ApiModelProperty(value = "查询工会组id") private List unionGroupId; + @ApiModelProperty(value = "查询人员类型") private List personTypes; + @ApiModelProperty(value = "查询编制类型") private List preparedBys; + @ApiModelProperty(value = "查询在职状态") private List userStates; + @ApiModelProperty(value = "查询会员状态") private List memberStatus; + @ApiModelProperty(value = "查询校区") private String campus; + @ApiModelProperty(value = "查询会员类型") private List memberTypes; + @ApiModelProperty(value = "查询性别") private List sexTypes; + @ApiModelProperty(value = "查询角色") private List roleIds; + @ApiModelProperty(value = "查询年龄") private List age; + @ApiModelProperty(value = "是否反选") private Boolean reverseSelection; + @ApiModelProperty(value = "会员查询名称") private String memberSearchName; + @ApiModelProperty(value = "会员查询关键字") private String memberSearchKeyWord; + @ApiModelProperty(value = "开始加入时间(会员)") + private String startJoinDate; + + @ApiModelProperty(value = "结束加入时间(会员)") + private String endJoinDate; + + @ApiModelProperty(value = "开始离会时间(会员)") + private String startLeaveDate; + + @ApiModelProperty(value = "结束离会时间(会员)") + private String endLeaveDate; } 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 10a0641..7009c45 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 @@ -60,7 +60,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple cnd.orderBy(pageForm.getPageOrderName(), pageForm.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC"); } - if (Lang.isNotEmpty(pageForm.getAge()) && !"0".equals(pageForm.getAge().get(0)) && !"0".equals(pageForm.getAge().get(1))) { + if (Lang.isNotEmpty(pageForm.getAge()) && !"0".equals(pageForm.getAge().get(1))) { if (reverseSelection) { cnd.andNot("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", "between", pageForm.getAge().toArray()); } else { @@ -76,6 +76,22 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple } } + if (StrUtil.isAllNotBlank(pageForm.getStartJoinDate(), pageForm.getEndJoinDate())) { + if (reverseSelection) { + cnd.andNot("DATE(u.memberJoinTime)", "between", new String[]{pageForm.getStartJoinDate(), pageForm.getEndJoinDate()}); + } else { + cnd.and("DATE(u.memberJoinTime)", "between", new String[]{pageForm.getStartJoinDate(), pageForm.getEndJoinDate()}); + } + } + + if (StrUtil.isAllNotBlank(pageForm.getStartLeaveDate(), pageForm.getEndLeaveDate())) { + if (reverseSelection) { + cnd.andNot("DATE(u.memberLeaveTime)", "between", new String[]{pageForm.getStartLeaveDate(), pageForm.getEndLeaveDate()}); + } else { + cnd.and("DATE(u.memberLeaveTime)", "between", new String[]{pageForm.getStartLeaveDate(), pageForm.getEndLeaveDate()}); + } + } + if (Strings.isNotBlank(pageForm.getStartDate()) && Strings.isBlank(pageForm.getEndDate())) { cnd.and("DATE(u.birthday)", GE_OR_NGE_OP, pageForm.getStartDate()); } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/specialstaff/controller/SpecialStaffManageController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/specialstaff/controller/SpecialStaffManageController.java index 29f8cc4..157ffc6 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/specialstaff/controller/SpecialStaffManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/specialstaff/controller/SpecialStaffManageController.java @@ -156,7 +156,7 @@ public class SpecialStaffManageController { select id,username,loginname,unitId,unitName,unionId,unionName from `vw_user` $condition limit 0,10 """); Cnd cnd = Cnd.NEW(); - cnd.where("id", "not in", "(select userId from special_staff)"); + cnd.and("id", "not in", "(select userId from special_staff)"); if (StrUtil.isNotBlank(keyWord)) { SqlExpressionGroup seg = new SqlExpressionGroup(); seg.orLike("username", keyWord); diff --git a/src/main/resources/views/platform/zhgh/dayofficework/evaluation/apply/apply.js b/src/main/resources/views/platform/zhgh/dayofficework/evaluation/apply/apply.js index cdcf634..8467cb5 100644 --- a/src/main/resources/views/platform/zhgh/dayofficework/evaluation/apply/apply.js +++ b/src/main/resources/views/platform/zhgh/dayofficework/evaluation/apply/apply.js @@ -2,7 +2,7 @@ const apply_component = { template: /*language=HTML*/ ` -