会员整改

This commit is contained in:
=
2026-04-11 16:41:11 +08:00
parent 0902cd4613
commit c121492ce1
28 changed files with 1799 additions and 47 deletions
@@ -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;
@@ -225,4 +225,7 @@ public class View_user {
@Column
private String oldLoginName;
@Column
private String userAttribute;
}
@@ -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<NutMap> 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<NutMap> 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<NutMap> 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<NutMap> 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<String> 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() {
@@ -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
* @nameMemberInfoInputController
* @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());
}
}
}
@@ -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<NutMap> 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<NutMap> 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) {
@@ -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;
}
@@ -41,6 +41,12 @@ public class MemberChangePageForm extends PageForm {
@ApiModelProperty("教职工类别")
private List<String> 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());
}
}
@@ -98,6 +98,18 @@ public class MemberInfoPageForm extends PageForm {
@ApiModelProperty("导出的数据")
private List<Map<String, String>> columns;
@ApiModelProperty("人员分类")
private String aidFundMemberUserType;
@ApiModelProperty("人员分类组")
private List<String> aidFundMemberUserTypes;
@ApiModelProperty("人员属性")
private String userAttribute;
@ApiModelProperty("人员属性组")
private List<String> 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()));
// }
}
}
@@ -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");
}
@@ -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<String> preparedBys;
private List<String> aidFundMemberUserTypes;
private List<String> userAttributes;
private List<String> userStates;
private List<String> memberStatus;
@@ -27,6 +27,19 @@ public interface MemberInfoService extends BaseService<Sys_user> {
*/
Sql getSql(MemberInfoPageForm pageForm);
/**
* 获取查询人员补录Sql(变更表)
* @param pageForm
* @return
*/
Sql getMemberInputSql(MemberInfoPageForm pageForm);
/**
* 新增会员
* @param user 会员信息
*/
void addMember(Sys_user user);
/**
* 获取会员历史
* @param pageForm
@@ -65,7 +65,7 @@ public interface MemberStatisticsService extends BaseService<Sys_user> {
* @param currentYear
* @return
*/
List<NutMap> getUnionStatisticsData(String unionId, Integer currentYear);
List<NutMap> getUnionStatisticsData(MemberStatisticsPageForm pageForm);
/**
* 获取单位统计数据
@@ -73,7 +73,7 @@ public interface MemberStatisticsService extends BaseService<Sys_user> {
* @param currentYear
* @return
*/
List<NutMap> getUnitStatisticsData(String unitId, Integer currentYear);
List<NutMap> getUnitStatisticsData(MemberStatisticsPageForm pageForm);
/**
* 导出统计数据
@@ -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<Sys_user> 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) {
@@ -93,6 +93,8 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
u.personType,
u.welfareMember,
u.isModelWorker,
u.userAttribute,
u.aidFundMemberUserType,
his.id hisId,
his.changeTypes,
his.changeTime
@@ -90,6 +90,8 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl<Sys_user> 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<Sys_user> 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<Sys_user> imple
@Override
public List<NutMap> getUnionStatisticsData(String unionId, Integer currentYear) {
public List<NutMap> 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<Sys_user> 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<Sys_user> imple
}
@Override
public List<NutMap> getUnitStatisticsData(String unitId, Integer currentYear) {
public List<NutMap> 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<Sys_user> 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");