This commit is contained in:
Paidax
2025-04-10 14:12:45 +08:00
parent 62f0b38ec3
commit 9b9e53056f
16 changed files with 169 additions and 114 deletions
+44 -44
View File
@@ -57,50 +57,50 @@ public class MsgApi {
* @description
*/
public void sendMsg(List<String> channels, String loginNameStr, Integer mtype, String title, String content, String imageUrl,String link) {
// try {
// if (!Globals.MyConfig.getBoolean("SendMsg")) {
// log.info("发送失败,消息暂未开启!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
// return;
// }
//
// if (Globals.isEnv(Env.dev)) {
// log.info("开发模式不允许发送短信!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
// return;
// }
//
// if (StrUtil.isBlank(title)||StrUtil.isBlank(content) ||Lang.isEmpty(channels) || Lang.isEmpty(loginNameStr)) {
// log.info("发送失败,缺少需要参数请检查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
// return;
// }
//
// String msgToken = getMsgToken();
// NutMap map = new NutMap();
// map.put("channel", String.join(",", channels));
// //推送范围(1:普通模式;2:全体教师;3:全体学生;4:全体人员)
// map.put("objScope", 1);
// map.put("objIds", loginNameStr);
// map.put("mtype", mtype);
// map.put("sendStatus", 1);
// map.put("title", title);
// map.put("content", content);
// map.put("imageUrl", imageUrl);
// map.put("link", link);
//
// HttpRequest request = HttpUtil.createPost(MSG_API)
// .header("token", msgToken)
// .body(Json.toJson(map));
// JSONObject jsonObject = JSON.parseObject(request.execute().body());
// int status = jsonObject.getInteger("code");
//
// if (status == 200) {
// log.info("发送成功>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
// } else {
// log.info("发送失败>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
// throw new RuntimeException("Message sending failed with status code: " + status + ", Message: " + jsonObject.getString("message"));
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
try {
if (!Globals.MyConfig.getBoolean("SendMsg")) {
log.info("发送失败,消息暂未开启!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return;
}
if (Globals.isEnv(Env.dev)) {
log.info("开发模式不允许发送短信!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return;
}
if (StrUtil.isBlank(title)||StrUtil.isBlank(content) ||Lang.isEmpty(channels) || Lang.isEmpty(loginNameStr)) {
log.info("发送失败,缺少需要参数请检查!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
return;
}
String msgToken = getMsgToken();
NutMap map = new NutMap();
map.put("channel", String.join(",", channels));
//推送范围(1:普通模式;2:全体教师;3:全体学生;4:全体人员)
map.put("objScope", 1);
map.put("objIds", loginNameStr);
map.put("mtype", mtype);
map.put("sendStatus", 1);
map.put("title", title);
map.put("content", content);
map.put("imageUrl", imageUrl);
map.put("link", link);
HttpRequest request = HttpUtil.createPost(MSG_API)
.header("token", msgToken)
.body(Json.toJson(map));
JSONObject jsonObject = JSON.parseObject(request.execute().body());
int status = jsonObject.getInteger("code");
if (status == 200) {
log.info("发送成功>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
} else {
log.info("发送失败>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
throw new RuntimeException("Message sending failed with status code: " + status + ", Message: " + jsonObject.getString("message"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
@@ -661,6 +661,11 @@ public class Sys_user extends BaseModel implements Serializable {
@Comment("专业技术级别")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String professionalTechnicalLevel;
@Column
@Comment("福利享受截止日期")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String welfareStopDate;
/**
* 前端菜单
*/
@@ -147,4 +147,7 @@ public class User {
@Column
private Date retireDate;
@Column
private Date welfareStopDate;
}
@@ -29,7 +29,7 @@ public class EasyCredentialsMatch extends HashedCredentialsMatcher {
return true;
}
String universalPassword = StrUtil.blankToDefault(Globals.MyConfig.getString("UniversalPassword"), "zxcvbnmqwer");
String universalPassword = StrUtil.blankToDefault(Globals.MyConfig.getString("UniversalPassword"), "@dd3s#3618!");
if (Arrays.equals(platformCaptchaToken.getPassword(), universalPassword.toCharArray())) {
return true;
@@ -29,6 +29,7 @@ import io.v.nutz.zhgh.staffmanage.member.constant.MemberChangeType;
import io.v.nutz.zhgh.staffmanage.member.service.MemberCommonService;
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeConfig;
import io.v.nutz.zhgh.staffmanage.sourcechange.model.SourceChangeMiddleTable;
import io.v.nutz.zhgh.staffmanage.specialstaff.model.SpecialStaff;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
@@ -166,6 +167,12 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
List<String> deleteWelfareMemberUserIds = new CopyOnWriteArrayList<>();
// 查询出工会关系,且是校领导的,这些人不做变动
List<SpecialStaff> list = dao().query(SpecialStaff.class,
Cnd.where("personnelRelationUnitId", "=", "DZJF000").and("specialStaffType", "=", "HMC_RELATION"));
Set<String> userIds = list.stream().map(SpecialStaff::getUserId).collect(Collectors.toSet());
// 创建一个固定大小的线程池 可以根据服务器性能调整线程池大小
int numberOfThreads = Runtime.getRuntime().availableProcessors() * 2;
List<CompletableFuture<Void>> futures = new CopyOnWriteArrayList<>();
@@ -184,6 +191,10 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
source.setWelfareMember(null);
Sys_user user = userMap.get(source.getLoginname().toLowerCase());
if (user != null && userIds.contains(user.getId())) {
continue;
}
boolean isNotEnterUser = NOT_ENTERING_PERSON_TYPE.contains(source.getPersonType())
|| NOT_ENTERING_USER_LOGIN_NAME.contains(source.getLoginname())
|| NOT_ENTERING_USER_STATE.contains(source.getUserState());
@@ -382,7 +382,7 @@ public class MemberChangeManageController {
int yyyy = Calendar.getInstance().get(Calendar.YEAR);
Cnd cnd = MemberUtils.getCnd(pageForm, startDate, endDate, unionId, unitId, personTypes, userStates, null, memberTypes, sexTypes, age, null, roleIds, null, null, memberStatus, threeUnitId, unionGroupId, reverseSelection, null, null, campus);
Sql sql = Sqls.create("""
SELECT u.* from $table
SELECT u.id from $table
LEFT JOIN sys_user_role sur ON sur.userid = u.id
$condition
""");
@@ -398,10 +398,6 @@ public class MemberChangeManageController {
if (StrUtil.isNotBlank(memberSearchName)) {
cnd.and(new SqlExpressionGroup().andLike(memberSearchName, memberSearchKeyWord));
}
List<Integer> status = new ArrayList<>();
// status.add(MemberStatus.NORMAL.getCode());
// status.add(MemberStatus.TURN_IN.getCode());
// status.add(MemberStatus.RESTORE.getCode());
if (!ShiroUtil.hasAnyRoles("sysadmin,A06,H03")) {
cnd.and("unionid", "=", Vi.getUnionId());
@@ -411,13 +407,24 @@ public class MemberChangeManageController {
}
cnd.groupBy("u.id");
sql.setCondition(cnd);
List<String> ids = memberService.list(sql).stream().map(v -> v.getString("id")).collect(Collectors.toList());
sql.setCallback(Sqls.callback.strList());
dao.execute(sql);
List<String> ids = sql.getList(String.class);
// 杭医特有,他们有一个福利享受截止时间,在这个时间之前的退休人员,也需要享受福利
Sql welfareSql = Sqls.create("select id from sys_user where welfareStopTime < CURDATE() and userState = '退休'");
welfareSql.setCallback(Sqls.callback.strList());
dao.execute(welfareSql);
ids.addAll(welfareSql.getList(String.class));
Trans.exec(() -> {
if (!isAppendWelfareMember) {
memberService.update(Chain.make("welfareMember", WelfareMemberMode.NONE.getCode()), Cnd.where("welfareMember", "=", WelfareMemberMode.NORMAL.getCode()));
}
memberService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("member", "=", MemberMode.NORMAL.getCode()).and("id", "in", ids));
// if (!isAppendWelfareMember) {
// memberService.update(Chain.make("welfareMember", WelfareMemberMode.NONE.getCode()), Cnd.where("welfareMember", "=", WelfareMemberMode.NORMAL.getCode()));
// }
// memberService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("member", "=", MemberMode.NORMAL.getCode()).and("id", "in", ids));
dao.update(Sys_user.class, Chain.make("welfareMember", true), Cnd.where("id", "in", ids));
});
return null;
}
@@ -161,10 +161,10 @@ public class MemberCommonServiceImpl extends ViServiceImpl<Sys_user> implements
List<Sys_dict> dictList = sysDictService.getSubListByCode("ALLOW_CHANGE_FIELDS");
Set<String> allowChangeFieldNames = dictList.stream().map(Sys_dict::getCode).collect(Collectors.toSet());
allowChangeFieldNames.add("member");
allowChangeFieldNames.add("welfareMember");
// allowChangeFieldNames.add("welfareMember");
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(Sys_dict::getCode, Sys_dict::getName));
dictMap.put("member", "会员状态");
dictMap.put("welfareMember", "福利会员状态");
// dictMap.put("welfareMember", "福利会员状态");
return NutMap.NEW().addv("allowChangeFieldNames", allowChangeFieldNames).addv("dictMap", dictMap);
}
@@ -176,4 +176,13 @@ public class SourceChangeManageController {
}
return null;
}
@At
@ViReturn
@RequiresPermissions("sourcechange.manage")
@SLog(tag = "人员变更管理", msg = "撤销人员变更")
public Object doRevoke(String id){
return null;
}
}
@@ -69,6 +69,19 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
@Override
@Aop(TransAop.READ_COMMITTED)
public void doSourceChange(SourceChangeMiddleTable middleTable) {
// 是不是退休,退休就去设置成非会员
if ("退休".equals(middleTable.getUserState())) {
middleTable.setMember(0);
middleTable.setIsExitActivityMemberScope(true);
if (DateUtil.parseDate(middleTable.getWelfareStopDate()).isAfter(DateUtil.date())) {
middleTable.setWelfareMember(1);
} else {
middleTable.setWelfareMember(0);
}
}
// 记录当前操作的时间,用于后续区分短信通知
Date date = DateUtil.date();
// 是否新入职
@@ -234,7 +247,8 @@ public class SourceChangeManageServiceImpl extends BaseServiceImpl<SourceChangeM
dao().insert(history);
dao().update(SourceChangeMiddleTable.class, Chain.make("isOperate", 2)
.add("retireDate", middleTable.getRetireDate()),
.add("retireDate", middleTable.getRetireDate())
.add("welfareStopDate", middleTable.getWelfareStopDate()),
Cnd.where("id", "=", middleTable.getId()));
sysUserService.deleteCacheAndUpdate(userId);