|
|
@@ -1,5 +1,6 @@
|
|
|
package com.chkj.pdata.task;
|
|
|
|
|
|
+import com.chkj.pdata.entity.MemAddReturn;
|
|
|
import com.chkj.pdata.entity.MemReturnFromWeixin;
|
|
|
import com.chkj.pdata.entity.MemberEntity;
|
|
|
import com.chkj.pdata.util.DBUtils;
|
|
|
@@ -7,6 +8,7 @@ import com.chkj.pdata.util.FileUtil;
|
|
|
import com.chkj.pdata.util.HttpRequestUtils;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.google.gson.Gson;
|
|
|
import org.json.JSONArray;
|
|
|
import org.json.JSONObject;
|
|
|
import org.springframework.http.HttpEntity;
|
|
|
@@ -31,36 +33,92 @@ public class PushMember {
|
|
|
* 推送成员任务
|
|
|
*/
|
|
|
public void pushMember_task() {
|
|
|
+ String strGte2020 = " AND ((m_identity_type=1 AND CAST(SUBSTRING(m_card_number, 1, 4) AS UNSIGNED) >= 2020) OR m_identity_type=2) " +
|
|
|
+ " AND m_college IS NOT NULL " +
|
|
|
+ " AND m_id_card NOT LIKE '0000%' " +
|
|
|
+ " AND m_class IS NOT NULL ";
|
|
|
// 推送任务
|
|
|
+ String action = "新增 --> ";
|
|
|
try {
|
|
|
+ // AND m_card_number NOT IN ('P07061','P07062','P07063')
|
|
|
+ String sadd = myWriter.readFromFile("add");
|
|
|
+ String cds = "";
|
|
|
+ if (!"".equals(sadd)) {
|
|
|
+ cds = " AND m_card_number NOT IN (" + sadd + ") ";
|
|
|
+ }
|
|
|
+ cds += strGte2020;
|
|
|
+ // 查询没有推送的记录
|
|
|
+ String selectSql = "SELECT * FROM member WHERE m_status = 0 " + cds + " LIMIT 100";
|
|
|
// 获取没有推送的记录
|
|
|
- List<MemberEntity> members = getMembers();
|
|
|
+ List<MemberEntity> members = getMembers(selectSql);
|
|
|
+ if (members.size() > 0) {
|
|
|
+ // 获取 access_token
|
|
|
+ String access_token = bakMember.getAccessToken();
|
|
|
+
|
|
|
+ if (!"".equals(access_token)) {
|
|
|
+ // 推送成员信息
|
|
|
+ pushMember(members, access_token, action);
|
|
|
+ } else {
|
|
|
+ if (!myWriter.containsStringInFile("none", "推送新增【member】获取 access_token 失败!", action)) {
|
|
|
+ myWriter.writeToFile("推送新增【member】获取 access_token 失败!", "abnormal");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (!myWriter.containsStringInFile("none", "没有要推送新增的记录", action)) {
|
|
|
+ myWriter.writeToFile("没有要推送新增的记录!", "none");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ if (!myWriter.containsStringInFile("none", action + e.getMessage(), action)) {
|
|
|
+ myWriter.writeToFile(action + e.getMessage(), "abnormal");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ action = "更新 --> ";
|
|
|
+ // 推送修改任务
|
|
|
+ try {
|
|
|
+ // AND m_card_number NOT IN ('P07061','P07062','P07063')
|
|
|
+ String supdate = myWriter.readFromFile("update");
|
|
|
+ String cds = "";
|
|
|
+ if (!"".equals(supdate)) {
|
|
|
+ cds = " AND m_card_number NOT IN (" + supdate + ") ";
|
|
|
+ }
|
|
|
+ cds += strGte2020;
|
|
|
+ // 查询没有推送的记录
|
|
|
+ String selectSql = "SELECT * FROM member WHERE (m_update_at > m_status_time OR m_status_time IS NULL) " + cds + " LIMIT 100";
|
|
|
+// String selectSql = "SELECT * FROM member WHERE m_grade = '2023' and m_status !=7 and m_building is not NULL and m_in_out_school=1 LIMIT 100";
|
|
|
+ // 获取有修改的记录
|
|
|
+ List<MemberEntity> members = getMembers(selectSql);
|
|
|
if (members.size() > 0) {
|
|
|
// 获取 access_token
|
|
|
String access_token = bakMember.getAccessToken();
|
|
|
|
|
|
if (!"".equals(access_token)) {
|
|
|
// 推送成员信息
|
|
|
- pushMember(members, access_token);
|
|
|
+ pushMember(members, access_token, action);
|
|
|
} else {
|
|
|
- myWriter.writeToFile("推送【member】获取 access_token 失败!", "abnormal");
|
|
|
+ if (!myWriter.containsStringInFile("abnormal", "推送更新【member】获取 access_token 失败!", action)) {
|
|
|
+ myWriter.writeToFile("推送更新【member】获取 access_token 失败!", "abnormal");
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
- if (!myWriter.readFromFile("none")) myWriter.writeToFile("没有要推送的记录!", "none");
|
|
|
+ if (!myWriter.containsStringInFile("none", "没有要推送更新的记录", action)) {
|
|
|
+ myWriter.writeToFile("没有要推送更新的记录!", "none");
|
|
|
+ }
|
|
|
}
|
|
|
} catch (JsonProcessingException e) {
|
|
|
- myWriter.writeToFile(e.getMessage(), "abnormal");
|
|
|
+ if (!myWriter.containsStringInFile("none", action + e.getMessage(), action)) {
|
|
|
+ myWriter.writeToFile(action + e.getMessage(), "abnormal");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 查询表,找出没有推送的记录
|
|
|
+ * 查询表,找出没有推送的记录 或 有修改的记录
|
|
|
*
|
|
|
* @return 成员记录集
|
|
|
*/
|
|
|
- private List<MemberEntity> getMembers() {
|
|
|
- // 查询没有推送的记录
|
|
|
- String selectSql = "SELECT * FROM member where m_status = 0 limit 100";
|
|
|
+ private List<MemberEntity> getMembers(String selectSql) {
|
|
|
// 返回查询的成员列表
|
|
|
return DBUtils.queryAll(selectSql);
|
|
|
}
|
|
|
@@ -121,9 +179,13 @@ public class PushMember {
|
|
|
ResponseEntity<String> response = restTemplate.postForEntity(URL + "?access_token=" + access_token, request, String.class);
|
|
|
// System.out.println(response.getBody());
|
|
|
// 写入日志文件
|
|
|
- myWriter.writeToFile(response.toString(), "delMember");
|
|
|
+ if (!myWriter.containsStringInFile("abnormal", response.toString(), "")) {
|
|
|
+ myWriter.writeToFile(response.toString(), "delMember");
|
|
|
+ }
|
|
|
} catch (JsonProcessingException e) {
|
|
|
- myWriter.writeToFile(e.getMessage(), "abnormal");
|
|
|
+ if (!myWriter.containsStringInFile("abnormal", e.getMessage(), "")) {
|
|
|
+ myWriter.writeToFile(e.getMessage(), "abnormal");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -134,341 +196,390 @@ public class PushMember {
|
|
|
* @param access_token access_token
|
|
|
* @throws JsonProcessingException 异常
|
|
|
*/
|
|
|
- private void pushMember(List<MemberEntity> members, String access_token) throws JsonProcessingException {
|
|
|
+ private void pushMember(List<MemberEntity> members, String access_token, String action) throws JsonProcessingException {
|
|
|
// 创建用户接口
|
|
|
final String URL = BaseURL + "user/manage/create?access_token=" + access_token;
|
|
|
// 循环每个成员,检查成员是否存在
|
|
|
for (MemberEntity member : members) {
|
|
|
+ System.out.println(member.getMcardNumber());
|
|
|
// 学工号 或 姓名 为空,则不处理
|
|
|
if (member.getMcardNumber() == null || member.getMname() == null || member.getMidCard() == null) {
|
|
|
- setLocalTable("该【学工号】或【姓名】或【身份证号】为空", member);
|
|
|
+ setLocalTable(action + "该【学工号】或【姓名】或【身份证号】为空", member);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
if (member.getMcardNumber().equals(member.getMidCard())) {
|
|
|
- setLocalTable("【姓名】和【身份证号】相同", member);
|
|
|
+ setLocalTable(action + "【姓名】和【身份证号】相同", member);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- sb.append("该成员");
|
|
|
- boolean bool = checkMember(member, access_token, "card_number") && checkMember(member, access_token, "id_card");
|
|
|
- if (bool) {
|
|
|
- sb.append("【学工号】或【身份证号】");
|
|
|
- }
|
|
|
- sb.append("微校不存在,");
|
|
|
+// StringBuilder sb = new StringBuilder();
|
|
|
+// sb.append(action).append("该成员");
|
|
|
+// boolean bool = checkMember(member, access_token, "card_number") && checkMember(member, access_token, "id_card");
|
|
|
+// if (bool) {
|
|
|
+// sb.append("【学工号】或【身份证号】");
|
|
|
+// }
|
|
|
+// sb.append("微校不存在,");
|
|
|
+// if (bool) {
|
|
|
+// if (!myWriter.containsStringInFile("abnormal", sb + member.getMcardNumber(), action)) {
|
|
|
+// myWriter.writeToFile(sb + member.getMcardNumber(), "abnormal");
|
|
|
+// }
|
|
|
+// } else { // 存在该成员
|
|
|
+// // 标记为1已存在
|
|
|
+// int updateCount = updateLocalTable(1, member);
|
|
|
+// if (updateCount > 0) {
|
|
|
+// myWriter.writeToFile(action + "成员已存在,m_status已标记为1,m_status_time为标记时间,以后不再推送," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
+// } else {
|
|
|
+// myWriter.writeToFile(action + "成员已存在,m_status 和 m_status_time标记失败," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
- // 不存在该成员,则推送
|
|
|
- if (bool) {
|
|
|
- myWriter.writeToFile(sb + member.getMcardNumber(), "abnormal");
|
|
|
- // 查询参数
|
|
|
- Map<String, String> queryParams = new HashMap<>();
|
|
|
- // 请求参数
|
|
|
- Map<String, String> requestBody = new HashMap<>();
|
|
|
- // 学工号
|
|
|
- String cardNumber = member.getMcardNumber();
|
|
|
- // 如果是数字开头的
|
|
|
- if (Character.isDigit(cardNumber.charAt(0))) {
|
|
|
- // 如果是学生,14位学号,取前4位,则为年份,2021级之后学工号用身份证号填充
|
|
|
- if (cardNumber.length() == 14) {
|
|
|
- if (Integer.parseInt(cardNumber.substring(0, 4)) >= 2021) {
|
|
|
- // 2021级及之后的学生,用【身份证号】作为【学工号】
|
|
|
- requestBody.put("card_number", member.getMidCard());
|
|
|
- } else {
|
|
|
- // 2021级之前的学生,用【学号】为【学工号】
|
|
|
- requestBody.put("card_number", member.getMcardNumber());
|
|
|
- }
|
|
|
+ // 查询参数
|
|
|
+ Map<String, String> queryParams = new HashMap<>();
|
|
|
+ // 请求参数
|
|
|
+ Map<String, String> requestBody = new HashMap<>();
|
|
|
+ // 学工号
|
|
|
+ String cardNumber = member.getMcardNumber();
|
|
|
+ // 如果是数字开头的
|
|
|
+ if (Character.isDigit(cardNumber.charAt(0))) {
|
|
|
+ // 如果是学生,14位学号,取前4位,则为年份,2021级之后学工号用身份证号填充
|
|
|
+ if (cardNumber.length() == 14) {
|
|
|
+ if (Integer.parseInt(cardNumber.substring(0, 4)) >= 2021) {
|
|
|
+ // 2021级及之后的学生,用【身份证号】作为【学工号】
|
|
|
+ requestBody.put("card_number", member.getMidCard());
|
|
|
} else {
|
|
|
- // 教职工,【工号】作为【学工号】
|
|
|
+ // 2021级之前的学生,用【学号】为【学工号】
|
|
|
requestBody.put("card_number", member.getMcardNumber());
|
|
|
}
|
|
|
- } else if (Character.isLetter(cardNumber.charAt(0))) {
|
|
|
- // 如果是字母开头的,教职工(外聘等),【工号】作为【学工号】
|
|
|
- requestBody.put("card_number", member.getMcardNumber());
|
|
|
} else {
|
|
|
- // 既不是数字开头,也不是字母开头,记录到日志,待人工处理
|
|
|
- setLocalTable("该学工号特殊,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
+ // 教职工,【工号】作为【学工号】
|
|
|
+ requestBody.put("card_number", member.getMcardNumber());
|
|
|
}
|
|
|
- // 编号 serial_number
|
|
|
- requestBody.put("serial_number", requestBody.get("card_number"));
|
|
|
- // 姓名
|
|
|
- requestBody.put("name", member.getMname());
|
|
|
- // 年级
|
|
|
- if (member.getMgrade() != null) requestBody.put("grade", member.getMgrade());
|
|
|
- // 学院名称
|
|
|
- String college = member.getMcollege();
|
|
|
- if (college != null) requestBody.put("college", college);
|
|
|
- // 系的名称(学校数据库推送的数据中没有系,但对应微校的是专业,所有忽略)
|
|
|
+ } else if (Character.isLetter(cardNumber.charAt(0))) {
|
|
|
+ // 如果是字母开头的,教职工(外聘等),【工号】作为【学工号】
|
|
|
+ requestBody.put("card_number", member.getMcardNumber());
|
|
|
+ } else {
|
|
|
+ // 既不是数字开头,也不是字母开头,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该学工号特殊,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 编号 serial_number
|
|
|
+ requestBody.put("serial_number", requestBody.get("card_number"));
|
|
|
+ // 姓名
|
|
|
+ requestBody.put("name", member.getMname());
|
|
|
+ // 年级
|
|
|
+ if (member.getMgrade() != null) requestBody.put("grade", member.getMgrade());
|
|
|
+ // 学院名称
|
|
|
+ String college = member.getMcollege();
|
|
|
+ if (college != null) requestBody.put("college", college);
|
|
|
+ // 系的名称(学校数据库推送的数据中没有系,但对应微校的是专业,所以忽略)
|
|
|
// if (member.getMprofession() != null) {
|
|
|
// requestBody.put("profession", member.getMprofession());
|
|
|
// }
|
|
|
- // 班级
|
|
|
- if (member.getMclass() != null) requestBody.put("class", member.getMclass());
|
|
|
- // 身份类型
|
|
|
- String identityType = member.getMidentityType();
|
|
|
- if (identityType != null) {
|
|
|
- if ("1".equals(identityType)) requestBody.put("identity_type", "学生");
|
|
|
- else if ("2".equals(identityType)) requestBody.put("identity_type", "教职工");
|
|
|
- else {
|
|
|
- // 既不是1,也不是2,记录到日志,待人工处理
|
|
|
- setLocalTable("该身份既不是1,也不是2,需要人工进行判别,此处跳过", member);
|
|
|
+ // 班级
|
|
|
+ if (member.getMclass() != null) requestBody.put("class", member.getMclass());
|
|
|
+ // 身份类型
|
|
|
+ String identityType = member.getMidentityType();
|
|
|
+ if (identityType != null) {
|
|
|
+ if ("1".equals(identityType)) {
|
|
|
+ if ("1".equals(member.getMinOutSchool())) {
|
|
|
+ requestBody.put("identity_type", "学生");
|
|
|
+ } else if ("0".equals(member.getMinOutSchool())) {
|
|
|
+ requestBody.put("identity_type", "校友");
|
|
|
+ } else {
|
|
|
+ setLocalTable(action + "是否毕业:既不是1,也不是0,需要人工进行判别,此处跳过", member);
|
|
|
continue;
|
|
|
}
|
|
|
+ } else if ("2".equals(identityType)) {
|
|
|
+ if ("1".equals(member.getMinOutSchool())) {
|
|
|
+ requestBody.put("identity_type", "教职工");
|
|
|
+ } else if ("0".equals(member.getMinOutSchool())) {
|
|
|
+ requestBody.put("identity_type", "临时人员");
|
|
|
+ } else {
|
|
|
+ setLocalTable(action + "是否离职:既不是1,也不是0,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 1是学生,2是教职工:既不是1,也不是2,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该身份既不是1,也不是2,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // null,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该身份为【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 组织架构:根据身份类型判断如下
|
|
|
+ // 1 学生:南昌交通学院/学生/学院/年级/专业/班级
|
|
|
+ // 2 教职工:南昌交通学院/教职工/所在部门
|
|
|
+ StringBuilder org = new StringBuilder();
|
|
|
+ org.append("南昌交通学院");
|
|
|
+ if ("1".equals(identityType)) { // 学生
|
|
|
+ if (member.getMinOutSchool() != null) {
|
|
|
+ // 非 null, 1在校 0毕业
|
|
|
+ org.append("1".equals(member.getMinOutSchool()) ? "/学生" : "/校友");
|
|
|
} else {
|
|
|
// null,记录到日志,待人工处理
|
|
|
- setLocalTable("该身份为【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ setLocalTable(action + "该学生在校/离校【null】,需要人工进行判别,此处跳过", member);
|
|
|
continue;
|
|
|
}
|
|
|
- // 组织架构:根据身份类型判断如下
|
|
|
- // 1 学生:南昌交通学院/学生/学院/年级/专业/班级
|
|
|
- // 2 教职工:南昌交通学院/教职工/所在部门
|
|
|
- StringBuilder org = new StringBuilder();
|
|
|
- org.append("南昌交通学院");
|
|
|
- if ("1".equals(identityType)) { // 学生
|
|
|
- if (member.getMinOutSchool() != null)
|
|
|
- // 非 null, 1在校 0毕业
|
|
|
- org.append("1".equals(member.getMinOutSchool()) ? "/学生" : "/校友");
|
|
|
- else {
|
|
|
- // null,记录到日志,待人工处理
|
|
|
- setLocalTable("该学生在校/离校【null】,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 学院,非空加上学院
|
|
|
- if (college != null) org.append("/").append(college);
|
|
|
- else {
|
|
|
- // null,记录到日志,待人工处理
|
|
|
- setLocalTable("该学生学院【null】,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 年级,非空加上年级
|
|
|
- if (member.getMgrade() != null) org.append("/").append(member.getMgrade());
|
|
|
- else {
|
|
|
- // null,记录到日志,待人工处理
|
|
|
- setLocalTable("该学生年级【null】,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 专业,非空加上专业
|
|
|
- if (member.getMmajor() != null) {
|
|
|
- org.append("/").append(member.getMmajor());
|
|
|
- requestBody.put("profession", member.getMmajor());
|
|
|
- } else {
|
|
|
- // null,记录到日志,待人工处理
|
|
|
- setLocalTable("该学生专业【null】,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 班级,非空加上班级
|
|
|
- if (member.getMclass() != null) org.append("/").append(member.getMclass());
|
|
|
- else {
|
|
|
- // null,记录到日志,待人工处理
|
|
|
- setLocalTable("该学生班级【null】,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 设置组织结构
|
|
|
- requestBody.put("organization", org.toString());
|
|
|
- } else { // 教职工
|
|
|
- if (member.getMinOutSchool() != null)
|
|
|
- // 非 null, 1在职 0离线
|
|
|
- if ("1".equals(member.getMinOutSchool())) org.append("/教职工");
|
|
|
- else {
|
|
|
- // 0,记录到日志,待人工处理
|
|
|
- // setLocalTable("该教职工【已离职】,需要人工进行判别,此处跳过", member);
|
|
|
- // 标记为4已离职
|
|
|
- int updateCount = updateLocalTable(4, member);
|
|
|
- if (updateCount > 0) {
|
|
|
- myWriter.writeToFile("该教职工【已离职】,m_status已标记为4,m_status_time为标记时间,以后不再推送," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
- } else {
|
|
|
- myWriter.writeToFile("该教职工【已离职】,m_status 和 m_status_time标记失败," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
- }
|
|
|
- continue;
|
|
|
- }
|
|
|
- else {
|
|
|
- // null,记录到日志,待人工处理
|
|
|
- setLocalTable("该教职工在职/离职为【null】,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 学院,非null 就加上学院,否则
|
|
|
- if (college != null) org.append("/").append(college);
|
|
|
- else {
|
|
|
- // null,记录到日志,待人工处理
|
|
|
- setLocalTable("该教职工学院【null】,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 设置组织结构
|
|
|
- requestBody.put("organization", org.toString());
|
|
|
+ // 学院,非空加上学院
|
|
|
+ if (college != null) org.append("/").append(college);
|
|
|
+ else {
|
|
|
+ // null,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该学生学院【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 年级,非空加上年级
|
|
|
+ if (member.getMgrade() != null) org.append("/").append(member.getMgrade());
|
|
|
+ else {
|
|
|
+ // null,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该学生年级【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
}
|
|
|
- // 身份名称
|
|
|
- if (member.getMidentityTitle() != null) {
|
|
|
- requestBody.put("identity_title", member.getMidentityTitle());
|
|
|
+ // 专业,非空加上专业
|
|
|
+ if (member.getMmajor() != null) {
|
|
|
+ org.append("/").append(member.getMmajor());
|
|
|
+ requestBody.put("profession", member.getMmajor());
|
|
|
} else {
|
|
|
- // 班级以“(专)”结尾
|
|
|
- if (member.getMclass() != null) if (member.getMclass().endsWith("(专)")) {
|
|
|
- requestBody.put("school_period", "专科生");
|
|
|
- } else if (member.getMeducational() != null) { // 学制,4-5年的是大专以上,也就是大学,其他不推此字段
|
|
|
- if (Integer.parseInt(member.getMeducational()) >= 4) {
|
|
|
- requestBody.put("school_period", "本科生");
|
|
|
- } else if (Integer.parseInt(member.getMeducational()) <= 3) {
|
|
|
- requestBody.put("school_period", "专科生");
|
|
|
- }
|
|
|
- }
|
|
|
+ // null,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该学生专业【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
}
|
|
|
- // 证件类型
|
|
|
- if ("身份证".equals(member.getMcardType())) requestBody.put("card_type", "1");
|
|
|
- else requestBody.put("card_type", member.getMcardType());
|
|
|
- // 证件号
|
|
|
- String idCard = member.getMidCard();
|
|
|
- if (idCard != null) {
|
|
|
- if (idCard.startsWith("0000000") || idCard.trim().length() != 18) {
|
|
|
- // 非法证件号,记录到日志,待人工处理
|
|
|
- setLocalTable("该证件号非法,需要人工进行判别,此处跳过", member);
|
|
|
- continue;
|
|
|
- } else {
|
|
|
- requestBody.put("id_card", idCard);
|
|
|
- }
|
|
|
+ // 班级,非空加上班级
|
|
|
+ if (member.getMclass() != null) org.append("/").append(member.getMclass());
|
|
|
+ else {
|
|
|
+ // null,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该学生班级【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 设置组织结构
|
|
|
+ requestBody.put("organization", org.toString());
|
|
|
+ } else { // 教职工
|
|
|
+ if (member.getMinOutSchool() != null) {
|
|
|
+ // 非 null, 1在职 0离线
|
|
|
+ org.append("1".equals(member.getMinOutSchool()) ? "/教职工" : "/教职工/离职员工");
|
|
|
+// if ("1".equals(member.getMinOutSchool())) {
|
|
|
+// org.append("/教职工");
|
|
|
+// } else {
|
|
|
+// // 0,记录到日志,待人工处理
|
|
|
+// // setLocalTable("该教职工【已离职】,需要人工进行判别,此处跳过", member);
|
|
|
+// // 标记为4已离职
|
|
|
+// int updateCount = updateLocalTable(4, member);
|
|
|
+// if (updateCount > 0) {
|
|
|
+// myWriter.writeToFile(action + "该教职工【已离职】,m_status已标记为4,m_status_time为标记时间,以后不再推送," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
+// } else {
|
|
|
+// myWriter.writeToFile(action + "该教职工【已离职】,m_status 和 m_status_time标记失败," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
+// }
|
|
|
+// continue;
|
|
|
+// }
|
|
|
} else {
|
|
|
- // 非法证件号,记录到日志,待人工处理
|
|
|
- setLocalTable("该证件号【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ // null,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该教职工在职/离职字段为【null】,需要人工进行判别,此处跳过", member);
|
|
|
continue;
|
|
|
}
|
|
|
- // 性别,1男 2女
|
|
|
- String gender = member.getMgender();
|
|
|
- if (gender != null) {
|
|
|
- if ("1".equals(gender)) {
|
|
|
- requestBody.put("gender", "男");
|
|
|
- } else if ("2".equals(gender)) {
|
|
|
- requestBody.put("gender", "女");
|
|
|
- }
|
|
|
+ // 学院,非null 就加上学院,否则
|
|
|
+ if (college != null) {
|
|
|
+ org.append("/").append(college);
|
|
|
+// if ("1".equals(member.getMinOutSchool())) {
|
|
|
+// org.append("/").append(college);
|
|
|
+// }
|
|
|
} else {
|
|
|
- // 根据身份证号判别性别
|
|
|
- char genderCode = idCard.charAt(16); //获取第17位字符,下标从0开始
|
|
|
- if (genderCode % 2 == 0) {
|
|
|
- requestBody.put("gender", "女");
|
|
|
- } else {
|
|
|
- requestBody.put("gender", "男");
|
|
|
+ // null,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该教职工学院【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 设置组织结构
|
|
|
+ requestBody.put("organization", org.toString());
|
|
|
+ }
|
|
|
+ // 身份名称
|
|
|
+ if (member.getMidentityTitle() != null) {
|
|
|
+ requestBody.put("identity_title", member.getMidentityTitle());
|
|
|
+ } else {
|
|
|
+ // 班级以“(专)”结尾
|
|
|
+ if (member.getMclass() != null) if (member.getMclass().endsWith("(专)")) {
|
|
|
+ requestBody.put("school_period", "专科生");
|
|
|
+ } else if (member.getMeducational() != null) { // 学制,4-5年的是大专以上,也就是大学,其他不推此字段
|
|
|
+ if (Integer.parseInt(member.getMeducational()) >= 4) {
|
|
|
+ requestBody.put("school_period", "本科生");
|
|
|
+ } else if (Integer.parseInt(member.getMeducational()) <= 3) {
|
|
|
+ requestBody.put("school_period", "专科生");
|
|
|
}
|
|
|
}
|
|
|
- // 国家
|
|
|
- if (member.getMcountry() != null) requestBody.put("country", member.getMcountry());
|
|
|
- else requestBody.put("country", "CHN");
|
|
|
- // 员工正常
|
|
|
- // requestBody.put("staff_status", "正常");
|
|
|
- // 手机号不推送
|
|
|
- // requestBody.put("telephone", members.get(0).getMtelephone());
|
|
|
- // 校区
|
|
|
- String building = member.getMbuilding();
|
|
|
- int build = 0;
|
|
|
- if (member.getMcampus() != null) {
|
|
|
- requestBody.put("campus", member.getMcampus());
|
|
|
+ }
|
|
|
+ // 证件类型
|
|
|
+ if ("身份证".equals(member.getMcardType())) requestBody.put("card_type", "1");
|
|
|
+ else requestBody.put("card_type", member.getMcardType());
|
|
|
+ // 证件号
|
|
|
+ String idCard = member.getMidCard();
|
|
|
+ if (idCard != null) {
|
|
|
+ if (idCard.startsWith("0000000") || idCard.trim().length() != 18) {
|
|
|
+ // 非法证件号,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该证件号非法,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ } else {
|
|
|
+ requestBody.put("id_card", idCard);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 非法证件号,记录到日志,待人工处理
|
|
|
+ setLocalTable(action + "该证件号【null】,需要人工进行判别,此处跳过", member);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 性别,1男 2女
|
|
|
+ String gender = member.getMgender();
|
|
|
+ if (gender != null) {
|
|
|
+ if ("1".equals(gender)) {
|
|
|
+ requestBody.put("gender", "男");
|
|
|
+ } else if ("2".equals(gender)) {
|
|
|
+ requestBody.put("gender", "女");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 根据身份证号判别性别
|
|
|
+ char genderCode = idCard.charAt(16); //获取第17位字符,下标从0开始
|
|
|
+ if (genderCode % 2 == 0) {
|
|
|
+ requestBody.put("gender", "女");
|
|
|
} else {
|
|
|
- if (building != null) {
|
|
|
- if (building.toLowerCase().startsWith("m")) {
|
|
|
- build = Integer.parseInt(building.substring(1));
|
|
|
- requestBody.put("campus", "墨轩湖校区");
|
|
|
+ requestBody.put("gender", "男");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 国家
|
|
|
+ if (member.getMcountry() != null) requestBody.put("country", member.getMcountry());
|
|
|
+ else requestBody.put("country", "CHN");
|
|
|
+ // 员工正常
|
|
|
+ // requestBody.put("staff_status", "正常");
|
|
|
+ // 手机号不推送
|
|
|
+ // requestBody.put("telephone", members.get(0).getMtelephone());
|
|
|
+ // 校区
|
|
|
+ String building = member.getMbuilding();
|
|
|
+ int build = 0;
|
|
|
+ String build_str = "";
|
|
|
+ if (member.getMcampus() != null) {
|
|
|
+ requestBody.put("campus", member.getMcampus());
|
|
|
+ } else {
|
|
|
+ if (building != null) {
|
|
|
+ if (building.toLowerCase().startsWith("m")) {
|
|
|
+ build = Integer.parseInt(building.replaceAll("[^0-9]", ""));
|
|
|
+ requestBody.put("campus", "墨轩湖校区");
|
|
|
+ } else {
|
|
|
+ if (building.toLowerCase().startsWith("jg") || building.toLowerCase().startsWith("zjl")) {
|
|
|
+ build_str = building;
|
|
|
} else {
|
|
|
- build = Integer.parseInt(building);
|
|
|
- requestBody.put("campus", "黄家湖校区");
|
|
|
+ build_str = String.valueOf(Integer.parseInt(building));
|
|
|
}
|
|
|
+ requestBody.put("campus", "黄家湖校区");
|
|
|
}
|
|
|
}
|
|
|
- // 工作单位、宿舍号
|
|
|
- // 如果是学生,14位学号也是学生
|
|
|
- if ("1".equals(identityType) || (Character.isDigit(cardNumber.charAt(0)) && cardNumber.length() == 14)) { // 学生
|
|
|
- // 工作单位
|
|
|
- if (member.getMemployer() != null) requestBody.put("employer", member.getMemployer());
|
|
|
- else requestBody.put("employer", "南昌交通学院");
|
|
|
+ }
|
|
|
+ // 工作单位、宿舍号
|
|
|
+ // 如果是学生,14位学号也是学生
|
|
|
+ if ("1".equals(identityType) || (Character.isDigit(cardNumber.charAt(0)) && cardNumber.length() == 14)) { // 学生
|
|
|
+ // 工作单位
|
|
|
+ if (member.getMemployer() != null) requestBody.put("employer", member.getMemployer());
|
|
|
+ else requestBody.put("employer", "南昌交通学院");
|
|
|
|
|
|
- // 宿舍号 = 楼栋 + 宿舍
|
|
|
- StringBuilder drom = new StringBuilder();
|
|
|
- if (building != null) drom.append(build).append("栋");
|
|
|
+ // 宿舍号 = 楼栋 + 宿舍
|
|
|
+ StringBuilder drom = new StringBuilder();
|
|
|
+ if (building != null) {
|
|
|
+ if (!build_str.equals("")) {
|
|
|
+ drom.append(build_str).append("-");
|
|
|
+ } else {
|
|
|
+ drom.append(build).append("栋");
|
|
|
+ }
|
|
|
if (member.getMdormNumber() != null) drom.append(member.getMdormNumber());
|
|
|
- if (!"".contentEquals(drom)) {
|
|
|
+ if (!"".contentEquals(drom.toString())) {
|
|
|
requestBody.put("dorm_number", drom.toString());
|
|
|
}
|
|
|
- } else { // 教职工
|
|
|
- // 工作单位
|
|
|
- if (member.getMemployer() != null) requestBody.put("employer", member.getMemployer());
|
|
|
- else requestBody.put("employer", college);
|
|
|
- }
|
|
|
- // 备注
|
|
|
- StringBuilder remark = new StringBuilder();
|
|
|
- remark.append(member.getMcardNumber());
|
|
|
- if (member.getMremark() != null) remark.append("|").append(member.getMremark());
|
|
|
- requestBody.put("remark", remark.toString());
|
|
|
- // 物理芯片号
|
|
|
- if (member.getMphysicalChipNumber() != null)
|
|
|
- requestBody.put("physical_chip_number", member.getMphysicalChipNumber());
|
|
|
- // 物理卡号
|
|
|
- if (member.getMphysicalCardNumber() != null) {
|
|
|
- requestBody.put("physical_card_number", member.getMphysicalCardNumber());
|
|
|
- requestBody.put("physical_card_status", "正常");
|
|
|
}
|
|
|
- // 邮箱
|
|
|
- if (member.getMemail() != null) requestBody.put("email", member.getMemail());
|
|
|
- // 有效时间
|
|
|
- if (member.getMexpireAt() != null) requestBody.put("expire_at", String.valueOf(member.getMexpireAt()));
|
|
|
- // qq
|
|
|
- if (member.getMqq() != null) requestBody.put("qq", member.getMqq());
|
|
|
- // 名族
|
|
|
- if (member.getMnation() != null) requestBody.put("nation", member.getMnation());
|
|
|
- // 户籍
|
|
|
- if (member.getMoriginPlace() != null) requestBody.put("origin_place", member.getMoriginPlace());
|
|
|
- // 毕业院校
|
|
|
- if (member.getMgraduatedSchool() != null)
|
|
|
- requestBody.put("graduated_school", member.getMgraduatedSchool());
|
|
|
- // 住址
|
|
|
- if (member.getMaddress() != null) requestBody.put("address", member.getMaddress());
|
|
|
- // 学段
|
|
|
- if (member.getMschoolPeriod() != null) {
|
|
|
- requestBody.put("school_period", member.getMschoolPeriod());
|
|
|
- } else {
|
|
|
- // 学制,3-5年的是大专以上,也就是大学,其他不推此字段
|
|
|
- if (member.getMeducational() != null) {
|
|
|
- if (Integer.parseInt(member.getMeducational()) >= 3) {
|
|
|
- requestBody.put("school_period", "大学");
|
|
|
+ } else { // 教职工
|
|
|
+ // 工作单位
|
|
|
+ if (member.getMemployer() != null) requestBody.put("employer", member.getMemployer());
|
|
|
+ else requestBody.put("employer", college);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 备注
|
|
|
+ StringBuilder remark = new StringBuilder();
|
|
|
+ remark.append(member.getMcardNumber());
|
|
|
+ if (member.getMremark() != null) remark.append("|").append(member.getMremark());
|
|
|
+ requestBody.put("remark", remark.toString());
|
|
|
+ // 物理芯片号
|
|
|
+ if (member.getMphysicalChipNumber() != null)
|
|
|
+ requestBody.put("physical_chip_number", member.getMphysicalChipNumber());
|
|
|
+ // 物理卡号
|
|
|
+ if (member.getMphysicalCardNumber() != null) {
|
|
|
+ requestBody.put("physical_card_number", member.getMphysicalCardNumber());
|
|
|
+ requestBody.put("physical_card_status", "正常");
|
|
|
+ }
|
|
|
+ // 邮箱
|
|
|
+ if (member.getMemail() != null) requestBody.put("email", member.getMemail());
|
|
|
+ // 有效时间
|
|
|
+ if (member.getMexpireAt() != null) requestBody.put("expire_at", String.valueOf(member.getMexpireAt()));
|
|
|
+ // qq
|
|
|
+ if (member.getMqq() != null) requestBody.put("qq", member.getMqq());
|
|
|
+ // 名族
|
|
|
+ if (member.getMnation() != null) requestBody.put("nation", member.getMnation());
|
|
|
+ // 户籍
|
|
|
+ if (member.getMoriginPlace() != null) requestBody.put("origin_place", member.getMoriginPlace());
|
|
|
+ // 毕业院校
|
|
|
+ if (member.getMgraduatedSchool() != null)
|
|
|
+ requestBody.put("graduated_school", member.getMgraduatedSchool());
|
|
|
+ // 住址
|
|
|
+ if (member.getMaddress() != null) requestBody.put("address", member.getMaddress());
|
|
|
+ // 学段
|
|
|
+ if (member.getMschoolPeriod() != null) {
|
|
|
+ requestBody.put("school_period", member.getMschoolPeriod());
|
|
|
+ } else {
|
|
|
+ // 学制,3-5年的是大专以上,也就是大学,其他不推此字段
|
|
|
+ if (member.getMeducational() != null) {
|
|
|
+ if (Integer.parseInt(member.getMeducational()) >= 3) {
|
|
|
+ requestBody.put("school_period", "大学");
|
|
|
// } else {
|
|
|
// requestBody.put("school_period", "高职");
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
- // 入学年份
|
|
|
- if (member.getMregisterYear() != null) requestBody.put("register_year", member.getMregisterYear());
|
|
|
- // ===============================================================================
|
|
|
- // 调用创建用户接口,执行推送
|
|
|
- ResponseEntity<String> stringResponseEntity = HttpRequestUtils.httpPost(URL, requestBody, queryParams);
|
|
|
- System.out.println(stringResponseEntity);
|
|
|
- // 判断是否返回null
|
|
|
- if (stringResponseEntity == null) {
|
|
|
- return;
|
|
|
- }
|
|
|
- // 获取响应体
|
|
|
- String body = stringResponseEntity.getBody();
|
|
|
- // 获取响应码
|
|
|
- String code = stringResponseEntity.getStatusCode().toString();
|
|
|
- // 判断响应码是否是成功
|
|
|
- if (code.contains("200") && code.contains("OK")) {
|
|
|
- // 标记为2已推送
|
|
|
- int updateCount = updateLocalTable(2, member);
|
|
|
- if (updateCount > 0) {
|
|
|
- if (cardNumber.length() == 14 && Integer.parseInt(cardNumber.substring(0, 4)) >= 2021) {
|
|
|
- myWriter.writeToFile("成员推送成功," + member.getMidCard() + "|" + member.getMname() + "|" + member.getMmajor() + "|" + member.getMidCard(), "ok");
|
|
|
- } else {
|
|
|
- myWriter.writeToFile("成员推送成功," + cardNumber + "|" + member.getMname() + "|" + member.getMmajor() + "|" + member.getMidCard(), "ok");
|
|
|
- }
|
|
|
- } else {
|
|
|
- myWriter.writeToFile("成员推送失败," + member.getMcardNumber() + "|" + member.getMidCard(), "");
|
|
|
- }
|
|
|
+ }
|
|
|
+ // 入学年份
|
|
|
+ if (member.getMregisterYear() != null) {
|
|
|
+ requestBody.put("register_year", member.getMregisterYear());
|
|
|
+ }
|
|
|
+ if (action.equals("更新 --> ")) {
|
|
|
+ // 只需要更新编号
|
|
|
+ requestBody.put("serial_number", member.getMcardNumber());
|
|
|
+ }
|
|
|
+ // ===============================================================================
|
|
|
+ // 调用创建用户接口,执行推送
|
|
|
+ ResponseEntity<String> stringResponseEntity = HttpRequestUtils.httpPost(URL, requestBody, queryParams);
|
|
|
+ // 判断是否返回null
|
|
|
+ if (stringResponseEntity == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 获取响应体
|
|
|
+ String body = stringResponseEntity.getBody();
|
|
|
+ Gson gson = new Gson();
|
|
|
+ MemAddReturn bodyObject = gson.fromJson(body, MemAddReturn.class);
|
|
|
+ // 获取响应码
|
|
|
+ String code = stringResponseEntity.getStatusCode().toString();
|
|
|
+ // 判断响应码是否是成功
|
|
|
+ if (bodyObject.getErrcode() == 0 && bodyObject.getErrmsg().equals("success")) {
|
|
|
+ int status;
|
|
|
+ if (action.equals("更新 --> ")) {
|
|
|
+ status = 7;
|
|
|
} else {
|
|
|
- myWriter.writeToFile("错误状态码," + code.split(" ")[0], "");
|
|
|
- myWriter.writeToFile("错误信息," + body, "");
|
|
|
+ status = 2;
|
|
|
}
|
|
|
- } else { // 存在该成员
|
|
|
- // 标记为1已存在
|
|
|
- int updateCount = updateLocalTable(1, member);
|
|
|
+ // 标记为已推送
|
|
|
+ int updateCount = updateLocalTable(status, member);
|
|
|
if (updateCount > 0) {
|
|
|
- myWriter.writeToFile("成员已存在,m_status已标记为1,m_status_time为标记时间,以后不再推送," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
+// if (cardNumber.length() == 14 && Integer.parseInt(cardNumber.substring(0, 4)) >= 2021) {
|
|
|
+// myWriter.writeToFile(action + "成员推送成功," + member.getMidCard() + "|" + member.getMname() + "|" + requestBody.get("organization") + "|" + member.getMidCard(), "ok");
|
|
|
+// } else {
|
|
|
+ myWriter.writeToFile(action + "成员推送成功," + cardNumber + "|" + member.getMname() + "|" + requestBody.get("organization") + "|" + member.getMidCard(), "ok");
|
|
|
+// }
|
|
|
} else {
|
|
|
- myWriter.writeToFile("成员已存在,m_status 和 m_status_time标记失败," + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "");
|
|
|
+ myWriter.writeToFile(action + "成员推送失败," + member.getMcardNumber() + "|" + member.getMidCard(), "");
|
|
|
}
|
|
|
+ } else {
|
|
|
+ myWriter.writeToFile(action + "错误状态码," + code.split(" ")[0], "");
|
|
|
+ myWriter.writeToFile(action + "错误信息," + body, "");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -584,15 +695,25 @@ public class PushMember {
|
|
|
// 不能标记为3,因为经过测试后台数据不是一次到位,比如有的card_number到了,但是学院没有到,造成以后都没有推送
|
|
|
if ("超级管理员".equals(member.getMname()) || member.getMcardNumber().toLowerCase().contains("admin")) {
|
|
|
int updateCount = updateLocalTable(6, member);
|
|
|
- if (updateCount > 0)
|
|
|
- myWriter.writeToFile(cause + ",m_status已标记为6,m_status_time为标记时间,人工处理后再推送,"
|
|
|
- + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "abnormal");
|
|
|
- else
|
|
|
- myWriter.writeToFile(cause + ",m_status已标记为6 和 m_status_time为标记时间 失败,"
|
|
|
- + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard(), "abnormal");
|
|
|
+ if (updateCount > 0) {
|
|
|
+ String tempStr = ",m_status已标记为6,m_status_time为标记时间,人工处理后再推送,"
|
|
|
+ + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard();
|
|
|
+ if (!myWriter.containsStringInFile("abnormal", tempStr, cause)) {
|
|
|
+ myWriter.writeToFile(cause + tempStr, "abnormal");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ String tempStr = ",m_status已标记为6 和 m_status_time为标记时间 失败,"
|
|
|
+ + member.getMcardNumber() + "|" + member.getMname() + "|" + member.getMidCard();
|
|
|
+ if (!myWriter.containsStringInFile("abnormal", tempStr, cause)) {
|
|
|
+ myWriter.writeToFile(cause + tempStr, "abnormal");
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
- myWriter.writeToFile(cause + ",m_status暂时不需要标记,," + member.getMcardNumber()
|
|
|
- + "|" + member.getMname() + "|" + member.getMidCard(), "abnormal");
|
|
|
+ String tempStr = ",m_status暂时不需要标记,," + member.getMcardNumber() + "|" +
|
|
|
+ member.getMname() + "|" + member.getMidCard();
|
|
|
+ if (!myWriter.containsStringInFile("abnormal", tempStr, cause)) {
|
|
|
+ myWriter.writeToFile(cause + tempStr, "abnormal");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|