This commit is contained in:
那些花儿
2025-06-13 17:41:22 +08:00
parent 1f763c6f5f
commit 96a9b8aa27
26 changed files with 1154 additions and 522 deletions
+11 -98
View File
@@ -14,6 +14,7 @@ import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.utils.PwdUtil;
import com.budwk.app.sys.models.Sys_dict;
import com.budwk.app.sys.models.Sys_unit;
import com.budwk.app.sys.models.Sys_user;
@@ -94,104 +95,6 @@ public class JugTest {
dao.fastInsert(units);
}
@Test
public void t0002() {
String appId = "1926887238437818370";
String secret = "32df31fcf4fc43f9a647ee1f47134f36";
List<Sys_user_source> allUsers = new ArrayList<>();
int skip = 0;
int totalCount = 0;
boolean firstRequest = true;
do {
long ts = System.currentTimeMillis();
String sign = Base64.encode(DigestUtil.md5Hex(appId + secret + ts, CharsetUtil.CHARSET_UTF_8));
HttpRequest httpRequest = HttpUtil.createPost("https://sjzcpt.nnu.edu.cn/cdsp/data-api/v2/DS0026");
httpRequest.header("Content-Type", "application/json");
httpRequest.header("appId", appId);
httpRequest.header("timestamp", String.valueOf(ts));
httpRequest.header("sign", sign);
HashMap<String, Object> reqBody = new HashMap<>();
reqBody.put("$count", true);
reqBody.put("$skip", skip);
reqBody.put("$top", 1000);
httpRequest.body(JSONUtil.toJsonStr(reqBody));
String resBody = httpRequest.execute().body();
JSONObject entries = JSONUtil.parseObj(resBody);
if (firstRequest) {
totalCount = entries.getInt("@odata.count", 0);
firstRequest = false;
}
JSONArray value = entries.getJSONArray("value");
if (!value.isEmpty()) {
List<Sys_user_source> list = value.stream().map(v -> {
JSONObject jsonObject = (JSONObject) v;
Sys_user_source sysUser = new Sys_user_source();
sysUser.setLoginname(jsonObject.getStr("zgh"));
sysUser.setUsername(jsonObject.getStr("xm"));
sysUser.setSex(jsonObject.getStr("xbmc"));
sysUser.setBirthday(jsonObject.getDate("csrq"));
sysUser.setNativePlace(jsonObject.getStr("jgmc"));
sysUser.setNationality(jsonObject.getStr("gjdqmc"));
sysUser.setNation(jsonObject.getStr("mzmc"));
sysUser.setIdCardType(jsonObject.getStr("sfzjlxmc"));
sysUser.setIdCard(jsonObject.getStr("sfzjh"));
sysUser.setPolitical(jsonObject.getStr("zzmmmc"));
sysUser.setUnitName(jsonObject.getStr("dwmc"));
sysUser.setUnitId(jsonObject.getStr("dwdm"));
sysUser.setUserState(jsonObject.getStr("jzgdqztmc"));
sysUser.setEmploymentType(jsonObject.getStr("yrfsmc"));
sysUser.setEducation(jsonObject.getStr("zgxlmc"));
sysUser.setAcademicDegree(jsonObject.getStr("zgxwmc"));
sysUser.setMobile(jsonObject.getStr("sjh"));
sysUser.setStaffCategory(jsonObject.getStr("jzglbmc"));
sysUser.setJoinPartyDate(jsonObject.getDate("rdsj"));
sysUser.setTechnicalTitle(jsonObject.getStr("zyjszwmc"));
sysUser.setTechnicalTitleLevel(jsonObject.getStr("zyjszwjbmc"));
sysUser.setPosition(jsonObject.getStr("gbzw"));
sysUser.setPositionLevel(jsonObject.getStr("gbzwjbmc"));
sysUser.setEmployeeLevel(jsonObject.getStr("zydjmc"));
sysUser.setArrivalAtSchoolDate(jsonObject.getDate("lxny"));
sysUser.setRetireDate(jsonObject.getDate("yjtxrq"));
sysUser.setIdentityType(jsonObject.getStr("grsfmc"));
return sysUser;
}).toList();
allUsers.addAll(list);
skip += list.size();
} else {
break;
}
} while (skip < totalCount);
System.out.println(1);
// dao.insert(allUsers);
}
@Test
public void t003() {
String s = """
@@ -303,7 +206,17 @@ public class JugTest {
} while (skip < totalCount);
System.out.println(allUsers.size());
}
@Test
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");
}
@@ -0,0 +1,186 @@
package com.budwk.app;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_source;
import com.budwk.app.zhgh.welfare.model.WelfareList;
import com.budwk.app.zhgh.welfare.model.WelfareProjectSubjectOption;
import com.budwk.app.zhgh.welfare.model.WelfareUserSelection;
import com.budwk.app.zhgh.welfare.service.WelfareProjectService;
import lombok.Data;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.nutz.boot.test.junit4.NbJUnit4Runner;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@IocBean
@RunWith(NbJUnit4Runner.class)
public class WelfareTest {
@Inject
private Dao dao;
@Inject
private WelfareProjectService welfareService;
@Test
public void importSelectUser() {
List<SelectUser> list = ExcelImportUtil.importExcel(new File("C:\\Users\\jug\\Desktop\\新建文件夹 (2)\\蛋糕汇总表.xlsx"), SelectUser.class, new ImportParams());
// 福利id
String welfareId = "6b6b438811044d7180b76facaebbe2f3";
// 福利名单
Sql sql = Sqls.create("""
SELECT
u.id,
u.username AS userName,
u.loginname AS loginName,
u.mobile
FROM
`welfare_list` t1
LEFT JOIN sys_user u ON u.id = t1.userId
WHERE
t1.projectId = @projectId
group by u.loginname
""");
sql.setParam("projectId", welfareId);
List<NutMap> welfareLists = welfareService.listMap(sql);
List<String> loginNames = welfareLists.stream().map(v -> v.getString("loginName")).toList();
Map<String, NutMap> loginNameMap = welfareLists.stream().collect(Collectors.toMap(v -> v.getString("loginName"), v -> v));
// 筛选出本次导入的
List<SelectUser> thisList = list.stream().filter(v -> StrUtil.isNotBlank(v.getLoginName()) && loginNames.contains(v.getLoginName()))
.peek(v -> v.setLoginName(v.getLoginName().trim()))
.toList();
System.out.println(thisList.size());
// 福利选项
List<WelfareProjectSubjectOption> options = dao.query(WelfareProjectSubjectOption.class, Cnd.where(WelfareProjectSubjectOption::getWelfareId, "=", welfareId));
List<WelfareUserSelection> selections = thisList.stream().map(v -> {
WelfareUserSelection welfareUserSelection = new WelfareUserSelection();
welfareUserSelection.setSelectTime(new Date());
welfareUserSelection.setSelectUserId(loginNameMap.get(v.getLoginName()).getString("id"));
welfareUserSelection.setSelectNum(1);
if (StrUtil.isNotBlank(v.getMobile())) {
welfareUserSelection.setMobile(v.getMobile());
} else {
welfareUserSelection.setMobile(loginNameMap.get(v.getLoginName()).getString("mobile"));
}
welfareUserSelection.setWelfareId(welfareId);
String optionId = options.stream().filter(option -> option.getOptionName().equals(v.getOptionName())).findFirst().map(option -> option.getId()).orElse(null);
welfareUserSelection.setSelectOptionId(optionId);
return welfareUserSelection;
}).toList();
dao.insert(selections);
}
@Test
public void deleteUser() {
List<SelectUser> list = ExcelImportUtil.importExcel(new File("C:\\Users\\jug\\Desktop\\新建文件夹 (2)\\蛋糕汇总表.xlsx"), SelectUser.class, new ImportParams());
List<String> loginNames = list.stream().map(v -> v.getLoginName()).toList();
Sql sql = Sqls.create("select id from sys_user where loginname in (@loginname)");
sql.setParam("loginname", loginNames);
sql.setCallback(Sqls.callback.strList());
dao.execute(sql);
List<String> ids = sql.getList(String.class);
List<WelfareList> welfareLists = dao.query(WelfareList.class, Cnd.NEW());
List<String> welfareUserIds = welfareLists.stream().map(v -> v.getUserId()).toList();
List<String> list1 = welfareUserIds.stream().filter(v -> !ids.contains(v)).toList();
System.out.println(list1.size());
//dao.clear(WelfareList.class, Cnd.where("userId", "not in", ids.stream().map(v -> v.getString("id")).toList()));
}
@Data
public static class SelectUser {
@Excel(name = "工号")
private String loginName;
@Excel(name = "姓名")
private String userName;
@Excel(name = "手机号码")
private String mobile;
@Excel(name = "选择物品")
private String optionName;
@Excel(name = "出生日期", importFormat = "yyyy-MM-dd", exportFormat = "yyyy-MM-dd")
private Date birthday;
}
@Test
public void fixData() throws IOException {
List<Sys_user_source> users = dao.query(Sys_user_source.class, Cnd.NEW().groupBy(Sys_user::getLoginname));
Map<String, Date> userMap = users.stream().filter(v -> v.getBirthday() != null).collect(Collectors.toMap(v -> v.getLoginname(), v -> v.getBirthday()));
List<SelectUser> allList = ExcelImportUtil.importExcel(new File("C:\\Users\\jug\\Desktop\\南京师范蛋糕卡\\蛋糕汇总表2.xlsx"), SelectUser.class, new ImportParams());
for (SelectUser selectUser : allList) {
if (userMap.containsKey(selectUser.getLoginName())) {
selectUser.setBirthday(userMap.get(selectUser.getLoginName()));
}
}
Workbook workbook = ExcelExportUtil.exportExcel(
new ExportParams("修改后数据", "Sheet1"),
SelectUser.class,
allList
);
FileOutputStream fos = new FileOutputStream("C:\\Users\\jug\\Desktop\\南京师范蛋糕卡\\匹配上生日.xlsx");
workbook.write(fos);
fos.close();
workbook.close();
}
@Test
public void importUser() {
List<SelectUser> allList = ExcelImportUtil.importExcel(new File("C:\\Users\\jug\\Desktop\\南京师范蛋糕卡\\匹配上生日.xlsx"), SelectUser.class, new ImportParams());
List<SelectUser> list = allList.stream().filter(v -> StrUtil.isNotBlank(v.getLoginName())).toList();
// 福利id
String welfareId = "a93b1694e41f49f3b9e6364e36bf48cd";
// 找出月份等于1、2、3的
// list.stream().filter(v -> v.getBirthday().getMonth() + 1 <= 3).map(v -> {
// WelfareList welfareList = new WelfareList();
// welfareList.setProjectId(welfareId);
//
//
//
// })
}
}