DataUtil.java 44 KB

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