This commit is contained in:
那些花儿
2025-09-19 17:07:35 +08:00
parent 9b4b8769bd
commit 4a4066e275
15 changed files with 407 additions and 72 deletions
+97 -34
View File
@@ -5,8 +5,6 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
@@ -17,22 +15,17 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.utils.PwdUtil;
import com.budwk.app.sys.enums.SysDataUpdateMode;
import com.budwk.app.sys.models.*;
import com.budwk.app.sys.models.Sys_dict;
import com.budwk.app.sys.models.Sys_unit;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.sys.param.SysDataUserUpdateParam;
import com.budwk.app.sys.services.SysDictService;
import com.budwk.app.sys.services.SysUnitService;
import com.budwk.app.sys.services.SysUserService;
import com.budwk.app.sys.services.impl.SysDataUserAllUpdateServiceImpl;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.nutz.boot.test.junit4.NbJUnit4Runner;
@@ -41,22 +34,14 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import org.nutz.lang.Files;
import org.nutz.lang.Lang;
import org.nutz.lang.random.R;
import org.nutz.lang.util.NutMap;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;
@IocBean
@RunWith(NbJUnit4Runner.class)
@@ -206,19 +191,19 @@ public class JugTest {
} while (skip < totalCount);
Files.write(new File("C:\\Users\\administrator\\Desktop\\博士后.txt"),allUsers);
Files.write(new File("C:\\Users\\administrator\\Desktop\\博士后.txt"), allUsers);
System.out.println(allUsers.size());
}
@Test
public void userPwd(){
public void userPwd() {
List<Sys_user> users = dao.query(Sys_user.class, Cnd.NEW());
String pwd = "1";
for (Sys_user user : users) {
user.setSalt(R.UU32());
user.setPassword(PwdUtil.getPassword(pwd, user.getSalt()));
}
dao.update(users,"password|salt");
dao.update(users, "password|salt");
}
@Inject
@@ -234,7 +219,7 @@ public class JugTest {
}
@Test
public void bsh(){
public void bsh() {
List<String> bsh = new ArrayList<>();
bsh.add("91036");
bsh.add("91035");
@@ -315,9 +300,9 @@ public class JugTest {
List<Sys_user> users = dao.query(Sys_user.class, Cnd.where(Sys_user::getLoginname, "in", bsh));
for (Sys_user user : users){
for (Sys_user user : users) {
user.setMember(true);
dao.update(users,"member");
dao.update(users, "member");
Sys_user_role user_role = new Sys_user_role();
user_role.setUserId(user.getId());
@@ -326,11 +311,89 @@ public class JugTest {
}
}
@Test
public void test0001() {
SysDataUserUpdateParam param = new SysDataUserUpdateParam();
param.setPullTime("2025-06-20 15:21:16");
param.setUpdateMode(SysDataUpdateMode.ALL.name());
sysDataUserUpdateService.update(param);
}
// 中国大陆手机号正则表达式
private static final String MOBILE_REGEX = "^1[3-9]\\d{9}$";
private static final Pattern MOBILE_PATTERN = Pattern.compile(MOBILE_REGEX);
/**
* 验证手机号格式
*/
private boolean isValidMobile(String mobile) {
if (StrUtil.isBlank(mobile)) {
return false;
}
return MOBILE_PATTERN.matcher(mobile.trim()).matches();
}
@Test
public void importWelfareMobile() {
try {
File file = new File("C:\\Users\\jug\\Desktop\\副本2025年南师大端午发放清单0915.xlsx");
ImportParams params = new ImportParams();
List<User> list = ExcelImportUtil.importExcel(file, User.class, params);
int successCount = 0;
int failCount = 0;
for (User user : list) {
String sjh = user.getSjh();
String loginname = user.getGh();
// 验证手机号是否正确
if (isValidMobile(sjh) && StringUtils.isNotBlank(loginname)) {
try {
// 更新数据库
int result = dao.update(Sys_user.class,
Chain.make("welfareMobile", sjh),
Cnd.where("loginname", "=", loginname));
if (result > 0) {
successCount++;
System.out.println("更新成功:工号=" + loginname + ", 手机号=" + sjh);
} else {
failCount++;
System.out.println("更新失败(未找到匹配记录):工号=" + loginname);
}
} catch (Exception e) {
failCount++;
System.out.println("数据库更新异常:工号=" + loginname + ", 错误:" + e.getMessage());
}
} else {
failCount++;
System.out.println("手机号格式无效或工号为空:工号=" + loginname + ", 手机号=" + sjh);
}
}
System.out.println("导入完成!成功:" + successCount + "条,失败:" + failCount + "");
} catch (Exception e) {
System.err.println("导入Excel文件时发生异常:" + e.getMessage());
e.printStackTrace();
}
}
@Data
public static class User {
@Excel(name = "工号")
private String gh;
@Excel(name = "手机号码")
private String sjh;
}
}