Bladeren bron

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 9 maanden geleden
bovenliggende
commit
696a4eeceb

+ 2 - 0
src/main/java/com/xjrsoft/module/job/JianyuekbBaseDataTask.java

@@ -102,6 +102,8 @@ public class JianyuekbBaseDataTask {
             tableName = "base_class";
             dataUtil.insertClass(tableName, grade, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
 
+            dataUtil.syncClass(tableName, currenSemeter);
+
             log.info("数据推送完成");
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 2 - 0
src/main/java/com/xjrsoft/module/organization/controller/UserController.java

@@ -219,6 +219,7 @@ public class UserController {
                     .eq(ObjectUtil.isNotNull(dto.getEmployType()), BaseTeacher::getEmployType, dto.getEmployType())
                     .eq(ObjectUtil.isNotNull(dto.getEmployWay()), BaseTeacher::getEmployWay, dto.getEmployWay())
                     .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
+                    .eq(ObjectUtil.isNotNull(dto.getRoleId()), UserRoleRelation::getRoleId, dto.getRoleId())
                     .orderByDesc(User::getId)
                     .select(User::getId)
                     .select("d1.name", UserPageVo::getEmployWay)
@@ -281,6 +282,7 @@ public class UserController {
                             .eq(ObjectUtil.isNotNull(dto.getEmployType()), BaseTeacher::getEmployType, dto.getEmployType())
                             .eq(ObjectUtil.isNotNull(dto.getEmployWay()), BaseTeacher::getEmployWay, dto.getEmployWay())
                             .eq(ObjectUtil.isNotNull(dto.getClassId()), BaseStudentSchoolRoll::getClassId, dto.getClassId())
+                            .eq(ObjectUtil.isNotNull(dto.getRoleId()), UserRoleRelation::getRoleId, dto.getRoleId())
                             .orderByDesc(User::getId)
                             .select(User::getId)
                             .select("d1.name", UserPageVo::getEmployWay)

+ 72 - 13
src/main/java/com/xjrsoft/module/schedule/util/DataUtil.java

@@ -83,12 +83,35 @@ public class DataUtil {
         String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and is_graduate = 1";
         List<Map<String, Object>> dataList = SqlRunnerAdapter.db().selectList(sql);
 
+        long timestamp = System.currentTimeMillis();
+        //生成签名
+        String sign = ScheduleUtil.createSign(timestamp);
+        JsonArray semesterSerialNos = new JsonArray();
+        semesterSerialNos.add(semesterSerialNo);
+        JsonObject paramJson = new JsonObject();
+        paramJson.add("semesterSerialNos", semesterSerialNos);
+        paramJson.addProperty("pageSize", 200);
+        paramJson.addProperty("pageIndex", 1);
+        String url= ScheduleUtil.apiUrl + "Class/page";
+        String doPost = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+
+
+        JsonParser parser = new JsonParser();
+        JsonObject jsonObject = parser.parse(doPost).getAsJsonObject();
+        JsonArray jsonArray = jsonObject.get("data").getAsJsonObject().get("dataList").getAsJsonArray();
+        List<String> jianyueIds  = new ArrayList<>();//当前学期已存在的班级
+        for (JsonElement jsonElement : jsonArray) {
+            JsonObject object = jsonElement.getAsJsonObject();
+            jianyueIds.add(object.get("serialNo").getAsString());
+        }
+
+
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
         for (Map<String, Object> baseClassMap : dataList) {
             BaseClass baseClass = SqlRunnerAdapterUtil.convertMapToEntity(baseClassMap, BaseClass.class);
-            String url  = ScheduleUtil.apiUrl + "class/create";
-            JsonObject paramJson = new JsonObject();
+            url  = ScheduleUtil.apiUrl + "class/create";
+            paramJson = new JsonObject();
             if(baseClass.getTeacherId() != null && teacherMap.get(baseClass.getTeacherId().toString()) != null){
                 paramJson.addProperty("teacherSerialNo", teacherMap.get(baseClass.getTeacherId().toString()));
             }
@@ -100,20 +123,20 @@ public class DataUtil {
             if(baseClass.getClassroomId() != null && classroomMap.get(baseClass.getClassroomId().toString()) != null){
                 paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId().toString()));
             }
-            if(ids != null && ids.get(baseClass.getId().toString()) != null){
+            if(ids != null && ids.get(baseClass.getId().toString()) != null && jianyueIds.contains(ids.get(baseClass.getId().toString()))){
                 url  = ScheduleUtil.apiUrl + "class/update";
                 paramJson.addProperty("serialNo", ids.get(baseClass.getId().toString()));
-                long timestamp = System.currentTimeMillis();
+                timestamp = System.currentTimeMillis();
                 //生成签名
-                String sign = ScheduleUtil.createSign(timestamp);
+                sign = ScheduleUtil.createSign(timestamp);
                 ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
                 continue;
             }
 
             //获取时间戳
-            long timestamp = System.currentTimeMillis();
+            timestamp = System.currentTimeMillis();
             //生成签名
-            String sign = ScheduleUtil.createSign(timestamp);
+            sign = ScheduleUtil.createSign(timestamp);
             String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
             if(result == null){
                 continue;
@@ -633,7 +656,6 @@ public class DataUtil {
         Map<Integer, Integer> tmePeriod = ScheduleUtil.getTmePeriod();
         String tableName = "course_table";
         List<Entity> entityList = new ArrayList();
-        List<String> updateSqlList = new ArrayList();
         SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList("select * from course_table");
         Set<String> serialNos = new HashSet<>();
@@ -711,11 +733,6 @@ public class DataUtil {
         if(!entityList.isEmpty()){
             SqlRunnerAdapter.db().dynamicInsertBatch(tableName, entityList);
         }
-        if(!updateSqlList.isEmpty()){
-            for (String updateSql : updateSqlList) {
-                SqlRunnerAdapter.db().update(updateSql);
-            }
-        }
 
         return teacherIdList;
     }
@@ -779,6 +796,48 @@ public class DataUtil {
 
     }
 
+    public void syncClass(String tableName, String currenSemeter) throws Exception {
+        String sql = "select * from base_class where delete_mark = 0 and is_graduate = 1";
+        List<Map<String, Object>> classList = SqlRunnerAdapter.db().selectList(sql);
+        Map<String, String> classNameIdMap = new HashMap<>();
+        for (Map<String, Object> objectMap : classList) {
+            classNameIdMap.put(objectMap.get("name").toString(), objectMap.get("id").toString());
+        }
+
+        long timestamp = System.currentTimeMillis();
+        String sign = ScheduleUtil.createSign(timestamp);
+        String url  = ScheduleUtil.apiUrl + "Class/page";
+
+        JsonObject pageJson = new JsonObject();
+        JsonArray semesterSerialNos = new JsonArray();
+        semesterSerialNos.add(currenSemeter);
+        JsonObject paramJson = new JsonObject();
+        paramJson.add("semesterSerialNos", semesterSerialNos);
+        pageJson.addProperty("pageSize", 2000);
+        pageJson.addProperty("pageIndex", 1);
+        JsonParser parser = new JsonParser();
+        String doPost = ScheduleUtil.doPost(url, pageJson.toString(), sign, timestamp);
+        JsonArray dataList = parser.parse(doPost).getAsJsonObject().get("data").getAsJsonObject().get("dataList").getAsJsonArray();
+
+        for (JsonElement jsonElement : dataList) {
+            JsonObject object = jsonElement.getAsJsonObject();
+            if(!object.get("semesterSerialNo").getAsString().equals(currenSemeter)){
+                continue;
+            }
+            String name = object.get("name").getAsString();
+            if(!classNameIdMap.containsKey(name)){
+                continue;
+            }
+
+            String insertSql = "INSERT INTO jianyue_data(create_date,table_name,source_id,jianyue_id)" +
+                    " select now(), '" + tableName + "', '" + classNameIdMap.get(name) + "', '" + object.get("serialNo").getAsString() + "'" +
+                    " where NOT EXISTS (" +
+                    " SELECT 1 FROM jianyue_data WHERE jianyue_id = '" + object.get("serialNo").getAsString() + "'" +
+                    " );";
+            SqlRunnerAdapter.db().insert(insertSql);
+        }
+    }
+
 
     /**
      * 插入记录表

+ 22 - 5
src/main/java/com/xjrsoft/module/student/controller/StudentReportRecordController.java

@@ -390,8 +390,10 @@ public class StudentReportRecordController {
             if(dto.getClassId() == null){
                 dto.setClassId(classId);
             }
-            Long planId = planService.getEffectivePlanId(dto.getTeacherId(), dto.getClassId());
-            dto.setStudentReportPlanId(planId);
+            if(dto.getStudentReportPlanId() == null){
+                Long planId = planService.getEffectivePlanId(dto.getTeacherId(), dto.getClassId());
+                dto.setStudentReportPlanId(planId);
+            }
         }
         Page<StudentReportRecordPlanPageVo> planPage = studentReportRecordService.getPlanPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         PageOutput<StudentReportRecordPlanPageVo> pageOutput = ConventPage.getPageOutput(planPage, StudentReportRecordPlanPageVo.class);
@@ -439,8 +441,8 @@ public class StudentReportRecordController {
         StudentReportRecord record = studentReportRecordService.getById(dtoList.get(0).getId());
         StudentReportPlan reportPlan = studentReportPlanService.getById(record.getStudentReportPlanId());
         LocalDateTime now = LocalDateTime.now();
-        if(reportPlan.getStatus() != 1 || !(now.isAfter(reportPlan.getStartTime()) && now.isBefore(reportPlan.getEndTime()))){
-            return RT.error("不在报到时间内,无法报到");
+        if(reportPlan.getStatus() == 0 || now.isBefore(reportPlan.getStartTime()) ){
+            return RT.error("暂未开始,无法报到");
         }
         return RT.ok(studentReportRecordService.allSgin(dtoList));
     }
@@ -457,10 +459,25 @@ public class StudentReportRecordController {
     @ApiOperation(value="导出")
     @SaCheckPermission("studentreportrecord:detail")
     public ResponseEntity<byte[]> exportQuerty(@Valid @RequestBody StudentReportRecordPageDto dto){
+        List<StudentReportRecordExcelVo> dataList = new ArrayList<>();
+
+        List<String> roleList = StpUtil.getRoleList();
+        if(roleList.contains(RoleCodeEnum.TEACHER.getCode()) && roleList.contains(RoleCodeEnum.CLASSTE.getCode())){
+            Long classId = classService.getIdByTeacherId(StpUtil.getLoginIdAsLong());
+            if(ObjectUtil.isNull(classId) && dto.getClassId() == null){
+                ByteArrayOutputStream bot = new ByteArrayOutputStream();
+                EasyExcel.write(bot, StudentReportRecordExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
+                String fileName = "exportQuerty" + ExcelTypeEnum.XLSX.getValue();
+                return RT.fileStream(bot.toByteArray(), fileName);
+            }
+            if(dto.getClassId() == null){
+                dto.setClassId(classId);
+            }
+        }
         List<StudentReportRecordPlanPageVo> planPageList = studentReportRecordService.getPlanPageList(dto);
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        List<StudentReportRecordExcelVo> dataList = new ArrayList<>();
+
         for (StudentReportRecordPlanPageVo pageVo : planPageList) {
             StudentReportRecordExcelVo excelVo = BeanUtil.toBean(pageVo, StudentReportRecordExcelVo.class);
             if(pageVo.getReportTime() != null){

+ 51 - 2
src/test/java/com/xjrsoft/module/job/JianyuekbBaseDataTaskTest.java

@@ -111,8 +111,8 @@ class JianyuekbBaseDataTaskTest {
             sql = "SELECT * FROM base_class WHERE delete_mark = 0" +
                 " and id not in (SELECT source_id FROM jianyue_data WHERE table_name = 'base_class' AND source_id IS NOT NULL)";
 
-            tableName = "base_semester";
-            dataUtil.insertSemester(tableName, dataMap.get(tableName));
+            tableName = "base_class";
+            dataUtil.insertClass(tableName, gradeMap, teacherMap, currenSemeter, dataMap.get(tableName), classroomMap);
         } catch (Exception e) {
         }
     }
@@ -166,6 +166,55 @@ class JianyuekbBaseDataTaskTest {
         SqlRunnerAdapter.db().dynamicInsertBatch(tableName, insertList);
     }
 
+    @Test
+    void deleteClass() throws Exception {
+        long timestamp = System.currentTimeMillis();
+        String sign = ScheduleUtil.createSign(timestamp);
+        String url  = ScheduleUtil.apiUrl + "Class/page";
+
+        DataUtil dataUtil = new DataUtil();
+        String currenSemeter = dataUtil.getCurrenSemeter();
+        JsonObject pageJson = new JsonObject();
+        JsonArray semesterSerialNos = new JsonArray();
+        semesterSerialNos.add(currenSemeter);
+        JsonObject paramJson = new JsonObject();
+        paramJson.add("semesterSerialNos", semesterSerialNos);
+        pageJson.addProperty("pageSize", 2000);
+        pageJson.addProperty("pageIndex", 1);
+        JsonParser parser = new JsonParser();
+        String doPost = ScheduleUtil.doPost(url, pageJson.toString(), sign, timestamp);
+        JsonArray dataList = parser.parse(doPost).getAsJsonObject().get("data").getAsJsonObject().get("dataList").getAsJsonArray();
+        List<String> ids = new ArrayList<>();
+
+        for (JsonElement jsonElement : dataList) {
+            JsonObject object = jsonElement.getAsJsonObject();
+            if(!object.get("semesterSerialNo").getAsString().equals(currenSemeter)){
+                continue;
+            }
+            ids.add(object.get("serialNo").getAsString());
+        }
+
+//        url  = ScheduleUtil.apiUrl + "Class/del";
+//        timestamp = System.currentTimeMillis();
+//        sign = ScheduleUtil.createSign(timestamp);
+//        int maxNum = 100;
+//        int cishu = ids.size() / maxNum + 1;
+//        if(ids.size() < maxNum){
+//            maxNum = ids.size();
+//        }
+//        for (int i = 0; i < cishu; i++){
+//            JsonArray delArray = new JsonArray();
+//            for (int j = 0 + (i * maxNum);  j < maxNum; j ++){
+//                delArray.add(ids.get(j));
+//            }
+//
+//            String delResult = ScheduleUtil.doPost(url, delArray.toString(), sign, timestamp);
+//
+//            System.out.println(delResult);
+//        }
+
+    }
+
     @Test
     void updateGrade() throws Exception {
         String url  = ScheduleUtil.apiUrl + "EduYear/page";