DataUtil.java 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868
  1. package com.xjrsoft.module.schedule.util;
  2. import cn.hutool.core.util.IdUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import cn.hutool.db.Entity;
  5. import com.google.gson.JsonArray;
  6. import com.google.gson.JsonElement;
  7. import com.google.gson.JsonObject;
  8. import com.google.gson.JsonParser;
  9. import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
  10. import com.xjrsoft.common.utils.SqlRunnerAdapterUtil;
  11. import com.xjrsoft.module.base.entity.*;
  12. import com.xjrsoft.module.organization.entity.Department;
  13. import com.xjrsoft.module.schedule.vo.StudentJianyuekbVo;
  14. import com.xjrsoft.module.teacher.entity.XjrUser;
  15. import lombok.extern.slf4j.Slf4j;
  16. import java.text.SimpleDateFormat;
  17. import java.util.*;
  18. /**
  19. * @author dzx
  20. * @date 2024/1/23
  21. */
  22. @Slf4j
  23. public class DataUtil {
  24. /**
  25. * 推送校区信息
  26. * 此处将班级所属的部门当做校区进行推送
  27. */
  28. public Map<String, String> insertSchoolDistrict(String tableName, Map<String, String> ids) throws Exception {
  29. String sql = "SELECT * FROM " + tableName + " WHERE id IN (" +
  30. "SELECT DISTINCT org_id FROM base_class WHERE delete_mark = 0 " +
  31. ")";
  32. List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, Department.class);
  33. Map<String, String> idMap = new HashMap<>();
  34. JsonParser jsonParser = new JsonParser();
  35. for (Map<String, Object> departmentMap : dataList) {
  36. Department department = SqlRunnerAdapterUtil.convertMapToEntity(departmentMap, Department.class);
  37. String url = ScheduleUtil.apiUrl + "SchoolDistrict/Create";
  38. JsonObject paramJson = new JsonObject();
  39. paramJson.addProperty("name", department.getName());
  40. paramJson.addProperty("not", department.getRemark());
  41. paramJson.addProperty("sort", department.getSortCode());
  42. paramJson.addProperty("shortName", department.getName());
  43. paramJson.addProperty("extendId", department.getId());
  44. long timestamp = System.currentTimeMillis();
  45. String sign = ScheduleUtil.createSign(timestamp);
  46. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  47. if (ids != null && ids.get(department.getId().toString()) != null) {
  48. url = ScheduleUtil.apiUrl + "SchoolDistrict/Update";
  49. paramJson.addProperty("id", ids.get(department.getId().toString()));
  50. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  51. continue;
  52. }
  53. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  54. if (result == null) {
  55. continue;
  56. }
  57. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  58. idMap.put(department.getId().toString(), resultJson.get("data").getAsString());
  59. }
  60. //插入记录表
  61. insertRecord(tableName, idMap);
  62. return idMap;
  63. }
  64. public Map<String, String> insertClass(String tableName, Map<String, String> gradeMap,
  65. Map<String, String> teacherMap, String semesterSerialNo, Map<String, String> ids, Map<String, String> classroomMap) throws Exception {
  66. String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and is_graduate = 1";
  67. List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql);
  68. long timestamp = System.currentTimeMillis();
  69. //生成签名
  70. String sign = ScheduleUtil.createSign(timestamp);
  71. JsonArray semesterSerialNos = new JsonArray();
  72. semesterSerialNos.add(semesterSerialNo);
  73. JsonObject paramJson = new JsonObject();
  74. paramJson.add("semesterSerialNos", semesterSerialNos);
  75. paramJson.addProperty("pageSize", 200);
  76. paramJson.addProperty("pageIndex", 1);
  77. String url = ScheduleUtil.apiUrl + "Class/page";
  78. String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  79. JsonParser parser = new JsonParser();
  80. JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
  81. JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
  82. List<String> jianyueIds = new ArrayList<>();//当前学期已存在的班级
  83. for (JsonElement jsonElement : jsonArray) {
  84. JsonObject object = jsonElement.getAsJsonObject();
  85. jianyueIds.add(object.get("serialNo").getAsString());
  86. }
  87. Map<String, String> idMap = new HashMap<>();
  88. JsonParser jsonParser = new JsonParser();
  89. for (Map<String, Object> baseClassMap : dataList) {
  90. BaseClass baseClass = SqlRunnerAdapterUtil.convertMapToEntity(baseClassMap, BaseClass.class);
  91. url = ScheduleUtil.apiUrl + "class/create";
  92. paramJson = new JsonObject();
  93. if (baseClass.getTeacherId() != null && teacherMap.get(baseClass.getTeacherId().toString()) != null) {
  94. paramJson.addProperty("teacherSerialNo", teacherMap.get(baseClass.getTeacherId().toString()));
  95. }
  96. paramJson.addProperty("name", baseClass.getName());
  97. paramJson.addProperty("semesterSerialNo", semesterSerialNo);
  98. paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getOrgId() + "_" + baseClass.getGradeId().toString()));
  99. paramJson.addProperty("extendId", baseClass.getId());
  100. if (baseClass.getClassroomId() != null && classroomMap.get(baseClass.getClassroomId().toString()) != null) {
  101. paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
  102. }
  103. if (ids != null && ids.get(baseClass.getId().toString()) != null && jianyueIds.contains(ids.get(baseClass.getId().toString()))) {
  104. url = ScheduleUtil.apiUrl + "class/update";
  105. paramJson.addProperty("serialNo", ids.get(baseClass.getId().toString()));
  106. timestamp = System.currentTimeMillis();
  107. //生成签名
  108. sign = ScheduleUtil.createSign(timestamp);
  109. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  110. continue;
  111. }
  112. //获取时间戳
  113. timestamp = System.currentTimeMillis();
  114. //生成签名
  115. sign = ScheduleUtil.createSign(timestamp);
  116. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  117. if (result == null) {
  118. continue;
  119. }
  120. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  121. if (!"".equals(resultJson.get("data").getAsString())) {
  122. idMap.put(baseClass.getId().toString(), resultJson.get("data").getAsString());
  123. }
  124. }
  125. //插入记录表
  126. insertRecord(tableName, idMap);
  127. return idMap;
  128. }
  129. public Map<String, String> insertClassRoom(String tableName, String schoolDistrictId, Map<String, String> ids) throws Exception {
  130. String sql = "SELECT t1.name, t1.capacity AS people_count,t2.name AS location, t1.floor_num AS floor, t1.id AS extendId FROM " + tableName + " t1" +
  131. " INNER JOIN base_office_build t2 ON t1.office_build_id = t2.id" +
  132. " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0";
  133. List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql);
  134. JsonParser jsonParser = new JsonParser();
  135. Map<String, String> idMap = new HashMap<>();
  136. for (Map<String, Object> classroom : dataList) {
  137. String url = ScheduleUtil.apiUrl + "classroom/create";
  138. JsonObject paramJson = new JsonObject();
  139. paramJson.addProperty("schoolDistrictId", schoolDistrictId);
  140. paramJson.addProperty("name", classroom.get("name").toString());
  141. paramJson.addProperty("peopleCount", 50);
  142. paramJson.addProperty("location", classroom.get("location") == null ? "" : classroom.get("location").toString());
  143. paramJson.addProperty("extendId", classroom.get("extendId").toString());
  144. paramJson.addProperty("floor", classroom.get("floor") == null ? 0 : Integer.parseInt(classroom.get("floor").toString()));
  145. //获取时间戳
  146. long timestamp = System.currentTimeMillis();
  147. //生成签名
  148. String sign = ScheduleUtil.createSign(timestamp);
  149. if (ids != null && ids.get(classroom.get("extendId").toString()) != null) {
  150. url = ScheduleUtil.apiUrl + "classroom/update";
  151. paramJson.addProperty("serialNo", ids.get(classroom.get("extendId").toString()));
  152. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  153. continue;
  154. }
  155. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  156. if (result == null) {
  157. continue;
  158. }
  159. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  160. idMap.put(classroom.get("extendId").toString(), resultJson.get("data").getAsString());
  161. }
  162. //插入记录表
  163. insertRecord(tableName, idMap);
  164. return idMap;
  165. }
  166. public Map<String, String> insertStudent(String tableName, Map<String, String> gradeMap, Map<String, String> ids) throws Exception {
  167. String sql = "SELECT t1.id AS register_no, t2.name AS real_name,t3.grade_id AS grade_serial_no," +
  168. " t2.name AS alias,t2.gender,t2.id AS extend_id FROM " + tableName + " t1" +
  169. " INNER JOIN xjr_user t2 ON t1.user_id = t2.id" +
  170. " INNER JOIN base_student_school_roll t3 ON t1.user_id = t3.user_id" +
  171. " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0" +
  172. " AND t1.student_id IS NOT NULL AND t1.student_id != ''" +
  173. " AND t3.archives_status = 'FB2901'";
  174. List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql, StudentJianyuekbVo.class);
  175. JsonParser jsonParser = new JsonParser();
  176. Map<String, String> idMap = new HashMap<>();
  177. for (Map<String, Object> student : dataList) {
  178. String url = ScheduleUtil.apiUrl + "student/create";
  179. JsonObject paramJson = new JsonObject();
  180. paramJson.addProperty("registerNo", student.get("register_no").toString());
  181. String gender = student.get("gender") == null ? "SB10001" : student.get("gender").toString();
  182. if ("SB10001".equals(gender)) {
  183. paramJson.addProperty("gender", 1);
  184. } else if ("SB10002".equals(gender)) {
  185. paramJson.addProperty("gender", 2);
  186. }
  187. paramJson.addProperty("realName", student.get("real_name").toString());
  188. paramJson.addProperty("alias", student.get("alias") == null ? "" : student.get("alias").toString());
  189. paramJson.addProperty("extendId", student.get("extend_id").toString());
  190. paramJson.addProperty("gradeSerialNo", gradeMap.get(student.get("grade_serial_no").toString()));
  191. //获取时间戳
  192. long timestamp = System.currentTimeMillis();
  193. //生成签名
  194. String sign = ScheduleUtil.createSign(timestamp);
  195. if (ids != null && ids.get(student.get("extend_id").toString()) != null) {
  196. paramJson.addProperty("serialNo", ids.get(student.get("extend_id").toString()));
  197. url = ScheduleUtil.apiUrl + "student/update";
  198. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  199. continue;
  200. }
  201. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  202. if (result == null) {
  203. continue;
  204. }
  205. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  206. idMap.put(student.get("extend_id").toString(), resultJson.get("data").getAsString());
  207. }
  208. //插入记录表
  209. insertRecord(tableName, idMap);
  210. return idMap;
  211. }
  212. /**
  213. * 新增教职工
  214. */
  215. public Map<String, String> insertTeacher(String tableName, Map<String, String> ids) throws Exception {
  216. String sql = "select t1.* from xjr_user t1" +
  217. " inner join xjr_user_role_relation t2 on t1.id = t2.user_id" +
  218. " inner join " + tableName + " t3 on t1.id = t3.user_id" +
  219. " where t1.delete_mark = 0 and t2.role_id = 2";
  220. List<Map<String, Object>> xjrUsers = SqlRunnerAdapter.db().selectList(sql, XjrUser.class);
  221. JsonParser jsonParser = new JsonParser();
  222. Map<String, String> idMap = new HashMap<>();
  223. for (Map<String, Object> user : xjrUsers) {
  224. String url = ScheduleUtil.apiUrl + "teacher/create";
  225. JsonObject paramJson = new JsonObject();
  226. paramJson.addProperty("jobNumber", user.get("user_name").toString());
  227. if (user.get("gender") != null) {
  228. if ("SB10001".equals(user.get("gender").toString())) {
  229. paramJson.addProperty("gender", 1);
  230. } else if ("SB10002".equals(user.get("gender").toString())) {
  231. paramJson.addProperty("gender", 2);
  232. }
  233. }
  234. paramJson.addProperty("name", user.get("name").toString());
  235. paramJson.addProperty("alias", user.get("nick_name") == null ? "" : user.get("nick_name").toString());
  236. paramJson.addProperty("extendId", user.get("id").toString());
  237. //获取时间戳
  238. long timestamp = System.currentTimeMillis();
  239. //生成签名
  240. String sign = ScheduleUtil.createSign(timestamp);
  241. if (ids != null && ids.get(user.get("id").toString()) != null) {
  242. url = ScheduleUtil.apiUrl + "teacher/update";
  243. paramJson.addProperty("serialNo", ids.get(user.get("id").toString()));
  244. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  245. continue;
  246. }
  247. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  248. if (result == null) {
  249. continue;
  250. }
  251. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  252. idMap.put(user.get("id").toString(), resultJson.get("data").getAsString());
  253. }
  254. //插入记录表
  255. insertRecord(tableName, idMap);
  256. return idMap;
  257. }
  258. /**
  259. * 新增课程
  260. */
  261. public Map<String, String> insertCourse(String tableName, Map<String, String> ids, Map<String, String> tagMap) throws Exception {
  262. String sql = "select * from " + tableName + " where delete_mark = 0";
  263. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseCourseSubject.class);
  264. Map<String, String> idMap = new HashMap<>();
  265. JsonParser jsonParser = new JsonParser();
  266. for (Map<String, Object> courseSubjectMap : list) {
  267. BaseCourseSubject courseSubject = SqlRunnerAdapterUtil.convertMapToEntity(courseSubjectMap, BaseCourseSubject.class);
  268. String url = ScheduleUtil.apiUrl + "courseclass/Create";
  269. JsonObject paramJson = new JsonObject();
  270. paramJson.addProperty("name", courseSubject.getName());
  271. paramJson.addProperty("code", courseSubject.getCode());
  272. paramJson.addProperty("extendId", courseSubject.getId().toString());
  273. if (courseSubject.getBaseLabelId() != null && tagMap.get(courseSubject.getBaseLabelId().toString()) != null) {
  274. JsonArray jsonArray = new JsonArray();
  275. jsonArray.add(tagMap.get(courseSubject.getBaseLabelId().toString()));
  276. paramJson.add("tagSerialNos", jsonArray);
  277. }
  278. //获取时间戳
  279. long timestamp = System.currentTimeMillis();
  280. //生成签名
  281. String sign = ScheduleUtil.createSign(timestamp);
  282. if (ids != null && ids.get(courseSubject.getId().toString()) != null) {
  283. url = ScheduleUtil.apiUrl + "courseclass/update";
  284. paramJson.addProperty("id", ids.get(courseSubject.getId().toString()));
  285. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  286. continue;
  287. }
  288. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  289. if (result == null) {
  290. continue;
  291. }
  292. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  293. if (StrUtil.isEmpty(resultJson.get("data").getAsString())) {
  294. continue;
  295. }
  296. idMap.put(courseSubject.getId().toString(), resultJson.get("data").getAsString());
  297. }
  298. //插入记录表
  299. insertRecord(tableName, idMap);
  300. return idMap;
  301. }
  302. /**
  303. * 新增学期
  304. */
  305. public Map<String, String>
  306. insertSemester(String tableName, Map<String, String> ids) throws Exception {
  307. String sql = "select * from " + tableName + " where delete_mark = 0 order by start_date desc limit 3";
  308. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseSemester.class);
  309. Map<String, String> idMap = new HashMap<>();
  310. JsonParser jsonParser = new JsonParser();
  311. SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
  312. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  313. String spring = "春";
  314. String autumn = "秋";
  315. for (Map<String, Object> semesterMap : list) {
  316. BaseSemester semester = SqlRunnerAdapterUtil.convertMapToEntity(semesterMap, BaseSemester.class);
  317. String url = ScheduleUtil.apiUrl + "semester/Create";
  318. JsonObject paramJson = new JsonObject();
  319. paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())) - 1);
  320. Integer period = null;
  321. if (semester.getName().contains(spring)) {
  322. period = 2;
  323. } else if (semester.getName().contains(autumn)) {
  324. period = 1;
  325. }
  326. //获取时间戳
  327. long timestamp = System.currentTimeMillis();
  328. //生成签名
  329. String sign = ScheduleUtil.createSign(timestamp);
  330. paramJson.addProperty("period", period);
  331. paramJson.addProperty("startDate", sdf.format(semester.getTeachingStart()));
  332. paramJson.addProperty("endDate", sdf.format(semester.getTeachingEnd()));
  333. paramJson.addProperty("extendId", semester.getId().toString());
  334. if (semester.getStartDate() != null && semester.getTeachingStart() != null && semester.getTeachingEnd().getTime() > timestamp && semester.getTeachingStart().getTime() < timestamp) {
  335. paramJson.addProperty("isCurrent", Boolean.TRUE);
  336. } else if (semester.getStartDate() != null && semester.getTeachingStart() != null && semester.getTeachingEnd().getTime() > timestamp && semester.getTeachingStart().getTime() > timestamp) {
  337. paramJson.addProperty("isCurrent", Boolean.TRUE);
  338. } else {
  339. paramJson.addProperty("isCurrent", Boolean.FALSE);
  340. }
  341. if (ids != null && ids.get(semester.getId().toString()) != null) {
  342. url = ScheduleUtil.apiUrl + "semester/update";
  343. paramJson.addProperty("serialNo", ids.get(semester.getId().toString()));
  344. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  345. continue;
  346. }
  347. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  348. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  349. if (StrUtil.isNotEmpty(resultJson.get("data").getAsString())) {
  350. idMap.put(semester.getId().toString(), resultJson.get("data").getAsString());
  351. }
  352. }
  353. //插入记录表
  354. insertRecord(tableName, idMap);
  355. return idMap;
  356. }
  357. public Map<String, String> insertCourseTag(String tableName, Map<String, String> ids) throws Exception {
  358. String sql = "select * from " + tableName + " where delete_mark = 0" +
  359. " and id in (select distinct base_label_id from base_course_subject where delete_mark = 0)";
  360. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseLabel.class);
  361. String url = ScheduleUtil.apiUrl + "courseclass/tag/create";
  362. JsonParser jsonParser = new JsonParser();
  363. Map<String, String> idMap = new HashMap<>();
  364. for (Map<String, Object> departmentMap : list) {
  365. BaseLabel department = SqlRunnerAdapterUtil.convertMapToEntity(departmentMap, BaseLabel.class);
  366. if (ids != null && ids.get(department.getId().toString()) != null) {
  367. continue;
  368. }
  369. JsonObject paramJson = new JsonObject();
  370. paramJson.addProperty("name", department.getName());
  371. //获取时间戳
  372. long timestamp = System.currentTimeMillis();
  373. //生成签名
  374. String sign = ScheduleUtil.createSign(timestamp);
  375. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  376. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  377. idMap.put(department.getId().toString(), resultJson.get("data").getAsString());
  378. }
  379. //插入记录表
  380. insertRecord(tableName, idMap);
  381. return idMap;
  382. }
  383. /**
  384. * 插入年级
  385. *
  386. * @param tableName 表名字
  387. * @param schoolDistrictMap 校区id
  388. * @param ids 数据库id和jianyue的对应关系
  389. * @return 返回数据库和jianyue的对应关系
  390. */
  391. public Map<String, String> insertGrade(String tableName, Map<String, String> schoolDistrictMap, Map<String, String> ids) throws Exception {
  392. String sql = "select * from " + tableName + " where delete_mark = 0 and status = 1";
  393. List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, BaseGrade.class);
  394. JsonParser jsonParser = new JsonParser();
  395. Map<String, String> idMap = new HashMap<>();
  396. for (String gradeId : schoolDistrictMap.keySet()) {
  397. for (Map<String, Object> baseGradeMap : list) {
  398. BaseGrade baseGrade = SqlRunnerAdapterUtil.convertMapToEntity(baseGradeMap, BaseGrade.class);
  399. String url = ScheduleUtil.apiUrl + "eduyear/create";
  400. JsonObject paramJson = new JsonObject();
  401. paramJson.addProperty("schoolDistrictId", schoolDistrictMap.get(gradeId));
  402. paramJson.addProperty("period", 4);
  403. paramJson.addProperty("startYear", baseGrade.getTitle().replaceAll("年", ""));
  404. paramJson.addProperty("extendId", baseGrade.getId().toString());
  405. paramJson.addProperty("year", 3);
  406. //获取时间戳
  407. long timestamp = System.currentTimeMillis();
  408. //生成签名
  409. String sign = ScheduleUtil.createSign(timestamp);
  410. if (ids != null && ids.get(gradeId + "_" + baseGrade.getId().toString()) != null) {
  411. paramJson.addProperty("serialNo", ids.get(gradeId + "_" + baseGrade.getId().toString()));
  412. url = ScheduleUtil.apiUrl + "eduyear/update";
  413. ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  414. continue;
  415. }
  416. String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
  417. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  418. idMap.put(gradeId + "_" + baseGrade.getId().toString(), resultJson.get("data").getAsString());
  419. }
  420. }
  421. //插入记录表
  422. insertRecord(tableName, idMap);
  423. return idMap;
  424. }
  425. /**
  426. * 查询校区id
  427. */
  428. public JsonArray getSchoolDistrictData() throws Exception {
  429. JsonParser jsonParser = new JsonParser();
  430. String url = ScheduleUtil.apiUrl + "SchoolDistrict/page";
  431. JsonObject jsonObject = new JsonObject();
  432. jsonObject.addProperty("pageSize", "15");
  433. jsonObject.addProperty("pageIndex", "1");
  434. //获取时间戳
  435. long timestamp = System.currentTimeMillis();
  436. //生成签名
  437. String sign = ScheduleUtil.createSign(timestamp);
  438. String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
  439. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  440. JsonArray jsonArray = resultJson.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
  441. JsonArray resultArray = new JsonArray();
  442. for (JsonElement jsonElement : jsonArray) {
  443. JsonObject asJsonObject = jsonElement.getAsJsonObject();
  444. resultArray.add(asJsonObject.get("id").getAsString());
  445. }
  446. return resultArray;
  447. }
  448. /**
  449. * 查询当前学期的id
  450. *
  451. * @return 返回当前学期的id
  452. */
  453. public String getCurrenSemeter() throws Exception {
  454. JsonParser jsonParser = new JsonParser();
  455. String url = ScheduleUtil.apiUrl + "Semester/Page";
  456. JsonObject jsonObject = new JsonObject();
  457. jsonObject.addProperty("pageSize", "15");
  458. jsonObject.addProperty("pageIndex", "1");
  459. //获取时间戳
  460. long timestamp = System.currentTimeMillis();
  461. //生成签名
  462. String sign = ScheduleUtil.createSign(timestamp);
  463. String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
  464. JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
  465. JsonArray jsonArray = resultJson.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
  466. String currentSemeterId = null;
  467. for (JsonElement jsonElement : jsonArray) {
  468. JsonObject asJsonObject = jsonElement.getAsJsonObject();
  469. if (asJsonObject.get("isCurrent").getAsBoolean()) {
  470. currentSemeterId = asJsonObject.get("serialNo").getAsString();
  471. }
  472. }
  473. return currentSemeterId;
  474. }
  475. public JsonArray getScheduleInfoByClass(Map<String, Long> classMap, Date startDate, Date endDate) throws Exception {
  476. JsonParser jsonParser = new JsonParser();
  477. String url = ScheduleUtil.apiUrl + "TimeTable/List";
  478. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  479. JsonArray dataMap = new JsonArray();
  480. for (String classId : classMap.keySet()) {
  481. //获取时间戳
  482. long timestamp = System.currentTimeMillis();
  483. //生成签名
  484. String sign = ScheduleUtil.createSign(timestamp);
  485. JsonObject jsonObject = new JsonObject();
  486. jsonObject.addProperty("classSerialNo", classId);
  487. jsonObject.addProperty("startDate", sdf.format(startDate));
  488. jsonObject.addProperty("endDate", sdf.format(endDate));
  489. String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
  490. JsonObject asJsonObject = jsonParser.parse(result).getAsJsonObject();
  491. dataMap.addAll(asJsonObject.get("data").getAsJsonArray());
  492. }
  493. return dataMap;
  494. }
  495. public JsonArray getScheduleInfoByGrade(String eduYearSerialNo, String startDate, String endDate) throws Exception {
  496. JsonParser jsonParser = new JsonParser();
  497. String url = ScheduleUtil.apiUrl + "TimeTable/List";
  498. //获取时间戳
  499. long timestamp = System.currentTimeMillis();
  500. //生成签名
  501. String sign = ScheduleUtil.createSign(timestamp);
  502. JsonObject jsonObject = new JsonObject();
  503. jsonObject.addProperty("eduYearSerialNo", eduYearSerialNo);
  504. jsonObject.addProperty("startDate", startDate);
  505. jsonObject.addProperty("endDate", endDate);
  506. String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
  507. JsonObject asJsonObject = jsonParser.parse(result).getAsJsonObject();
  508. return asJsonObject.get("data").getAsJsonArray();
  509. }
  510. public JsonArray getScheduleInfoByClass(String classSerialNo, String startDate, String endDate) throws Exception {
  511. JsonParser jsonParser = new JsonParser();
  512. String url = ScheduleUtil.apiUrl + "TimeTable/List";
  513. //获取时间戳
  514. long timestamp = System.currentTimeMillis();
  515. //生成签名
  516. String sign = ScheduleUtil.createSign(timestamp);
  517. JsonObject jsonObject = new JsonObject();
  518. jsonObject.addProperty("classSerialNo", classSerialNo);
  519. jsonObject.addProperty("startDate", startDate);
  520. jsonObject.addProperty("endDate", endDate);
  521. String result = ScheduleUtil.doPost(url, jsonObject.toString(), sign, timestamp);
  522. JsonObject asJsonObject = jsonParser.parse(result).getAsJsonObject();
  523. return asJsonObject.get("data").getAsJsonArray();
  524. }
  525. /**
  526. * @param data 接口数据
  527. * @param classroomMap 教室对应关系
  528. * @param coureseMap 课程对应关系
  529. * @param semesterMap 学期对应关系
  530. * @param teacherMap 教师对应关系
  531. */
  532. public void insertCourseTable(JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
  533. Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap) {
  534. // List<String> sqls = new ArrayList<>();
  535. // Map<Integer, String> week = ScheduleUtil.getWeek();
  536. Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
  537. int count = 1;
  538. for (JsonElement jsonElement : data) {
  539. JsonObject asJsonObject = jsonElement.getAsJsonObject();
  540. long id = System.currentTimeMillis();
  541. JsonArray teachers = asJsonObject.get("teachers").getAsJsonArray();
  542. if (asJsonObject.get("courseClassId").isJsonNull() || coureseMap.get(asJsonObject.get("courseClassId").getAsString()) == null) {
  543. continue;
  544. }
  545. String numberOfDayName = asJsonObject.get("numberOfDayName").getAsString();
  546. Integer timeNumber = 0;//节次
  547. if (!StrUtil.isEmpty(numberOfDayName)) {
  548. timeNumber = Integer.parseInt(numberOfDayName.substring(numberOfDayName.length() - 1));
  549. }
  550. // String updateSql = "update course_table set status = 3 where class_id = " + classMap.get(asJsonObject.get("classSerialNo").getAsString())
  551. // + " and time_period = " + tmePeriod.get(asJsonObject.get("timeOption").getAsInt())
  552. // + " and time_number = " + timeNumber
  553. // + " and weeks = " + asJsonObject.get("dayOfWeek").getAsInt()
  554. // + " and course_id = " + coureseMap.get(asJsonObject.get("courseClassId").getAsString())
  555. // + " and schedule_date = '" + asJsonObject.get("scheduleDate").getAsString() + "'";
  556. String sql = "INSERT INTO course_table(id,base_semester_id,teacher_id,teacher_name,teacher_serial_no,course_id,course_name," +
  557. "class_id, class_name,weeks,weeks_cn,time_period,time_number,site_id,site_name,status," +
  558. "create_date,schedule_date,jianyue_id, start_time, end_time) select " + id + String.format("%04d", count) + ","
  559. + semesterMap.get(asJsonObject.get("semesterSerialNo").getAsString()) + ",";
  560. if (teachers.size() > 0) {
  561. JsonObject teacherJson = teachers.get(0).getAsJsonObject();
  562. // updateSql += " and teacher_id = " + teacherMap.get(teacherJson.get("teacherSerialNo").getAsString());
  563. sql += (teacherMap.get(teacherJson.get("teacherSerialNo").getAsString()) == null ? 0 : teacherMap.get(teacherJson.get("teacherSerialNo").getAsString())) + ","
  564. + "'" + teacherJson.get("name").getAsString() + "',"
  565. + "'" + teacherJson.get("teacherSerialNo").getAsString() + "',";
  566. } else {
  567. sql += "0,'',null,";
  568. }
  569. sql += coureseMap.get(asJsonObject.get("courseClassId").getAsString()) + ","
  570. + "'" + asJsonObject.get("courseClassName").getAsString() + "',"
  571. + classMap.get(asJsonObject.get("classSerialNo").getAsString()) + ","
  572. + "'" + asJsonObject.get("className").getAsString() + "',"
  573. + asJsonObject.get("dayOfWeek").getAsInt() + ","
  574. + "'" + asJsonObject.get("dayOfWeekName").getAsString() + "',"
  575. + tmePeriod.get(asJsonObject.get("timeOption").getAsInt()) + ","
  576. + timeNumber + ","
  577. + (classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString()) == null ? 0 : classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString())) + ","
  578. + "'" + asJsonObject.get("classRoomName").getAsString() + "',1,now(),"
  579. + "'" + asJsonObject.get("scheduleDate").getAsString() + "',"
  580. + "'" + asJsonObject.get("id").getAsString() + "', '" + asJsonObject.get("startTime").getAsString() + "', '" + asJsonObject.get("endTime").getAsString() +"' FROM DUAL"
  581. + " WHERE NOT EXISTS(SELECT 1 FROM course_table WHERE jianyue_id = '" + asJsonObject.get("id").getAsString() + "' and status = 1)";
  582. // sqls.add(updateSql);
  583. // sqls.add(sql);
  584. SqlRunnerAdapter.db().insert(sql);
  585. count++;
  586. }
  587. }
  588. public Set<String> insertCourseTableEntiy(JsonArray data, Map<String, String> classroomMap, Map<String, String> coureseMap,
  589. Map<String, String> semesterMap, Map<String, String> teacherMap, Map<String, String> classMap
  590. , String courseReceiveMsgId, String startDate, String endDate) {
  591. String sql = "SELECT jianyue_id FROM course_table" +
  592. " where schedule_date between '" + startDate + "' and '" + endDate + "'";
  593. List<Map<String, Object>> oldDataList = SqlRunnerAdapter.db().selectList(sql);
  594. Set<String> serialNos = new HashSet<>();
  595. for (Map<String, Object> objectMap : oldDataList) {
  596. serialNos.add(objectMap.get("jianyue_id").toString());
  597. }
  598. Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
  599. String tableName = "course_table";
  600. List<Entity> entityList = new ArrayList();
  601. SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
  602. Set<String> teacherIdList = new HashSet<>();
  603. for (JsonElement jsonElement : data) {
  604. JsonObject asJsonObject = jsonElement.getAsJsonObject();
  605. JsonArray teachers = asJsonObject.get("teachers").getAsJsonArray();
  606. if (asJsonObject.get("courseClassId").isJsonNull() || coureseMap.get(asJsonObject.get("courseClassId").getAsString()) == null) {
  607. continue;
  608. }
  609. if (serialNos.contains(asJsonObject.get("id").getAsString())) {
  610. continue;
  611. }
  612. int timeNumber = asJsonObject.get("numberOfDay").getAsInt();//节次
  613. String classId = classMap.get(asJsonObject.get("classSerialNo").getAsString());
  614. String scheduleDate = asJsonObject.get("scheduleDate").getAsString();
  615. String courseClassId = coureseMap.get(asJsonObject.get("courseClassId").getAsString());
  616. String courseClassName = asJsonObject.get("courseClassName").getAsString();
  617. String siteId = (classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString()) == null ? "0" : classroomMap.get(asJsonObject.get("classRoomSerialNo").getAsString()));
  618. List<String> teacherIds = new ArrayList<>();
  619. List<String> teacherNames = new ArrayList<>();
  620. List<String> teacher_serial_nos = new ArrayList<>();
  621. for (JsonElement teacher : teachers) {
  622. JsonObject teacherJson = teacher.getAsJsonObject();
  623. teacherIds.add(teacherMap.get(teacherJson.get("teacherSerialNo").getAsString()) == null ? "0" : teacherMap.get(teacherJson.get("teacherSerialNo").getAsString()));
  624. teacherNames.add(teacherJson.get("name").getAsString());
  625. teacher_serial_nos.add(teacherJson.get("teacherSerialNo").getAsString());
  626. teacherIdList.add(teacherMap.get(teacherJson.get("teacherSerialNo").getAsString()));
  627. }
  628. String teacherId = "0";
  629. if (!teacherIds.isEmpty()) {
  630. teacherId = teacherIds.toString().replace("[", "").replace("]", "");
  631. }
  632. String teacherName = "";
  633. if (!teacherNames.isEmpty()) {
  634. teacherName = teacherNames.toString().replace("[", "").replace("]", "");
  635. }
  636. String teacher_serial_no = "";
  637. if (!teacher_serial_nos.isEmpty()) {
  638. teacher_serial_no = teacher_serial_nos.toString().replace("[", "").replace("]", "");
  639. }
  640. String keyInfo = teacherId + "_" + classId + "_" + scheduleDate + "_" + courseClassId + "_" + siteId + "_" + timeNumber;
  641. Entity entity = Entity.create(tableName);
  642. entity.set("id", IdUtil.getSnowflakeNextId());
  643. entity.set("base_semester_id", semesterMap.get(asJsonObject.get("semesterSerialNo").getAsString()));
  644. entity.set("teacher_name", teacherName);
  645. entity.set("teacher_serial_no", teacher_serial_no);
  646. entity.set("teacher_id", teacherId);
  647. entity.set("course_id", courseClassId);
  648. entity.set("course_name", courseClassName);
  649. entity.set("class_id", classId);
  650. entity.set("class_name", asJsonObject.get("className").getAsString());
  651. entity.set("weeks", asJsonObject.get("dayOfWeek").getAsInt());
  652. entity.set("weeks_cn", asJsonObject.get("dayOfWeekName").getAsString());
  653. entity.set("time_period", tmePeriod.get(asJsonObject.get("timeOption").getAsInt()));
  654. entity.set("time_number", timeNumber);
  655. entity.set("site_id", siteId);
  656. entity.set("site_name", asJsonObject.get("classRoomName").getAsString());
  657. entity.set("status", 1);
  658. entity.set("create_date", sdf.format(new Date()));
  659. entity.set("schedule_date", scheduleDate);
  660. entity.set("jianyue_id", asJsonObject.get("id").getAsString());
  661. entity.set("key_info", keyInfo);
  662. entity.set("course_receive_msg_id", courseReceiveMsgId);
  663. entityList.add(entity);
  664. }
  665. if (!entityList.isEmpty()) {
  666. SqlRunnerAdapter.db().dynamicInsertBatch(tableName, entityList);
  667. }
  668. return teacherIdList;
  669. }
  670. /**
  671. * 提取课时相关信息
  672. *
  673. * @param data 数据
  674. */
  675. public void insertClassTime(JsonArray data) {
  676. Map<String, JsonObject> infoMap = new HashMap<>();
  677. Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
  678. for (JsonElement jsonElement : data) {
  679. JsonObject asJsonObject = jsonElement.getAsJsonObject();
  680. String numberOfDayName = asJsonObject.get("numberOfDayName").getAsString();
  681. JsonObject json = new JsonObject();
  682. json.add("startTime", asJsonObject.get("startTime"));
  683. json.add("endTime", asJsonObject.get("endTime"));
  684. json.addProperty("tmePeriod", tmePeriod.get(asJsonObject.get("timeOption").getAsInt()));
  685. json.add("numberOfDay", asJsonObject.get("numberOfDay"));
  686. infoMap.put(numberOfDayName, json);
  687. }
  688. int count = 1;
  689. for (String number : infoMap.keySet()) {
  690. JsonObject jsonObject = infoMap.get(number);
  691. int timeNumber = jsonObject.get("numberOfDay").getAsInt();//节次
  692. long id = System.currentTimeMillis();
  693. String sql = "INSERT INTO class_time(id,time_period,number,full_name,short_name,create_date,summer_start_time"
  694. + ",summer_end_time,winter_start_time,winter_end_time) select " + id + String.format("%04d", count) + ","
  695. + jsonObject.get("tmePeriod").getAsInt() + ","
  696. + timeNumber + ","
  697. + "'" + number + "',"
  698. + "'" + number + "',now(),"
  699. + "'" + jsonObject.get("startTime").getAsString() + "',"
  700. + "'" + jsonObject.get("endTime").getAsString() + "',"
  701. + "'" + jsonObject.get("startTime").getAsString() + "',"
  702. + "'" + jsonObject.get("endTime").getAsString() + "' FROM DUAL"
  703. + " WHERE NOT EXISTS(SELECT * FROM class_time WHERE time_period = "
  704. + jsonObject.get("tmePeriod").getAsInt()
  705. + " and number = " + timeNumber + ")";
  706. // sqls.add(sql);
  707. SqlRunnerAdapter.db().insert(sql);
  708. String updSql = "update class_time set" +
  709. " summer_start_time = '" + jsonObject.get("startTime").getAsString() + "'," +
  710. " summer_end_time = '" + jsonObject.get("endTime").getAsString() + "'," +
  711. " winter_start_time = '" + jsonObject.get("startTime").getAsString() + "'," +
  712. " winter_end_time = '" + jsonObject.get("endTime").getAsString() + "'" +
  713. " WHERE time_period = " + jsonObject.get("tmePeriod").getAsInt() + " and number = " + timeNumber;
  714. SqlRunnerAdapter.db().insert(updSql);
  715. count++;
  716. }
  717. }
  718. /**
  719. * 保存节次数据
  720. *
  721. * @param infoMap
  722. */
  723. public void saveClassTime(Map<String, JsonObject> infoMap) {
  724. }
  725. public void syncClass(String tableName, String currenSemeter) throws Exception {
  726. String sql = "select * from base_class where delete_mark = 0 and is_graduate = 1";
  727. List<Map<String, Object>> classList = SqlRunnerAdapter.db().selectList(sql);
  728. Map<String, String> classNameIdMap = new HashMap<>();
  729. for (Map<String, Object> objectMap : classList) {
  730. classNameIdMap.put(objectMap.get("name").toString(), objectMap.get("id").toString());
  731. }
  732. long timestamp = System.currentTimeMillis();
  733. String sign = ScheduleUtil.createSign(timestamp);
  734. String url = ScheduleUtil.apiUrl + "Class/page";
  735. JsonObject pageJson = new JsonObject();
  736. JsonArray semesterSerialNos = new JsonArray();
  737. semesterSerialNos.add(currenSemeter);
  738. JsonObject paramJson = new JsonObject();
  739. paramJson.add("semesterSerialNos", semesterSerialNos);
  740. pageJson.addProperty("pageSize", 2000);
  741. pageJson.addProperty("pageIndex", 1);
  742. JsonParser parser = new JsonParser();
  743. String doPost = ScheduleUtil.doPost(url, pageJson.toString(), sign, timestamp);
  744. JsonArray dataList = parser.parse(doPost).getAsJsonObject().get("data").getAsJsonObject().get("dataList").getAsJsonArray();
  745. for (JsonElement jsonElement : dataList) {
  746. JsonObject object = jsonElement.getAsJsonObject();
  747. if (!object.get("semesterSerialNo").getAsString().equals(currenSemeter)) {
  748. continue;
  749. }
  750. String name = object.get("name").getAsString();
  751. if (!classNameIdMap.containsKey(name)) {
  752. continue;
  753. }
  754. String insertSql = "INSERT INTO jianyue_data(create_date,table_name,source_id,jianyue_id)" +
  755. " select now(), '" + tableName + "', '" + classNameIdMap.get(name) + "', '" + object.get("serialNo").getAsString() + "'" +
  756. " where NOT EXISTS (" +
  757. " SELECT 1 FROM jianyue_data WHERE jianyue_id = '" + object.get("serialNo").getAsString() + "'" +
  758. " );";
  759. SqlRunnerAdapter.db().insert(insertSql);
  760. }
  761. }
  762. /**
  763. * 插入记录表
  764. *
  765. * @param tableName 表名字
  766. * @param idsMap id对应关系
  767. */
  768. public void insertRecord(String tableName, Map<String, String> idsMap) {
  769. if (idsMap.isEmpty()) {
  770. return;
  771. }
  772. // List<String> sqls = new ArrayList<>();
  773. for (String sourceId : idsMap.keySet()) {
  774. String sql = "INSERT INTO jianyue_data(create_date,table_name,source_id,jianyue_id) value(now(),'"
  775. + tableName + "','" + sourceId + "','" + idsMap.get(sourceId) + "')";
  776. // sqls.add(sql);
  777. SqlRunnerAdapter.db().insert(sql);
  778. }
  779. }
  780. }