DataUtil.java 37 KB

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