Prechádzať zdrojové kódy

1、评价管理维护功能完善
2、移动端答题功能初始化

dzx 1 rok pred
rodič
commit
b19c974a35

+ 58 - 0
src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateWriteController.java

@@ -0,0 +1,58 @@
+package com.xjrsoft.module.evaluate.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
+import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWriteVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/evaluate" + "/evaluatewrite")
+@Api(value = "/evaluate"  + "/evaluatewrite",tags = "移动端评价管理代码")
+@AllArgsConstructor
+public class EvaluateWriteController {
+
+
+    private final IEvaluateManageService evaluateManageService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="评价管理列表(分页)")
+    @SaCheckPermission("evaluatemanage:detail")
+    public RT<PageOutput<EvaluateWritePageVo>> page(@Valid EvaluateWritePageDto dto){
+        Page<EvaluateWritePageVo> page = evaluateManageService.getMobilePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<EvaluateWritePageVo> pageOutput = ConventPage.getPageOutput(page, EvaluateWritePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询评价项信息")
+    @SaCheckPermission("evaluateitem:detail")
+    public RT<EvaluateWriteVo> info(@RequestParam Long id){
+        EvaluateWriteVo evaluateWriteVo = evaluateManageService.getWriteInfo(id);
+        if (evaluateWriteVo == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(evaluateWriteVo);
+    }
+
+
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateWritePageDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 评价结果分页查询入参
+* @Author szs
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvaluateWritePageDto extends PageInput {
+
+    @ApiModelProperty("状态(1:已评分,0:未评分)")
+    private Integer status;
+
+    @ApiModelProperty("登录者id(前端不传,后端传)")
+    private Long loginUserId;
+}

+ 4 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateExecuterMapper.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.evaluate.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -14,4 +15,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface EvaluateExecuterMapper extends MPJBaseMapper<EvaluateExecuter> {
 
+    @Delete("DELETE FROM evaluate_executer WHERE evaluate_manage_id = #{evaluateManageId}")
+    Boolean deleteByEvaluateManageId(Long evaluateManageId);
+
 }

+ 11 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateManageMapper.java

@@ -3,8 +3,10 @@ package com.xjrsoft.module.evaluate.mapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -23,4 +25,13 @@ public interface EvaluateManageMapper extends MPJBaseMapper<EvaluateManage> {
      * @return
      */
     Page<EvaluateManagePageVo> getPage(Page<EvaluateManagePageDto> page, EvaluateManagePageDto dto);
+
+
+    /**
+     * 移动端分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto);
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateObjectMapper.java

@@ -6,6 +6,7 @@ import com.xjrsoft.module.evaluate.entity.EvaluateObject;
 import com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateObjectVo;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -27,4 +28,7 @@ public interface EvaluateObjectMapper extends MPJBaseMapper<EvaluateObject> {
     List<EvaluateObjectListVo> getNewObjectList(@Param("dto") EvaluateObjectListDto dto);
 
     List<EvaluateExecuterVo> getNewExecuterList(@Param("dto") EvaluateObjectListDto dto);
+
+    @Delete("DELETE FROM evaluate_object WHERE evaluate_manage_id = #{evaluateManageId}")
+    Boolean deleteByEvaluateManageId(Long evaluateManageId);
 }

+ 8 - 0
src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateManageService.java

@@ -3,9 +3,12 @@ package com.xjrsoft.module.evaluate.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.entity.EvaluateObject;
 import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWriteVo;
 
 import java.util.List;
 
@@ -56,4 +59,9 @@ public interface IEvaluateManageService extends MPJBaseService<EvaluateManage> {
      */
     Boolean release(Long id);
 
+
+    Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto);
+
+    EvaluateWriteVo getWriteInfo(Long id);
+
 }

+ 13 - 0
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateManageServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
 import com.xjrsoft.module.evaluate.entity.EvaluateItem;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
@@ -19,6 +20,8 @@ import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper;
 import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
 import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWriteVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -99,4 +102,14 @@ public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManage
         return true;
     }
 
+    @Override
+    public Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto) {
+        return null;
+    }
+
+    @Override
+    public EvaluateWriteVo getWriteInfo(Long id) {
+        return null;
+    }
+
 }

+ 4 - 0
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java

@@ -65,6 +65,10 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
         if(manage == null){
            throw new MyException("未查询到信息,evaluateManageId不正确");
         }
+        //清空原有数据
+        evaluateObjectMapper.deleteByEvaluateManageId(manage.getId());
+        evaluateExecuterMapper.deleteByEvaluateManageId(manage.getId());
+        //保存新数据
         Date createDate = new Date();
         long createUserId = StpUtil.getLoginIdAsLong();
         for (AddEvaluateObjectDto objectDto : dto.getObjectList()) {

+ 47 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateWritePageVo.java

@@ -0,0 +1,47 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 评价管理分页列表出参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateWritePageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private String id;
+    /**
+    * 评价类型-中文
+    */
+    @ApiModelProperty("评价类型-中文")
+    private String evaluateTypeCn;
+    /**
+    * 评价名称
+    */
+    @ApiModelProperty("评价名称")
+    private String name;
+
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("题目数量")
+    private Integer itemCount;
+
+}

+ 42 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateWriteVo.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 评价管理分页列表出参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateWriteVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private String id;
+    /**
+    * 评价名称
+    */
+    @ApiModelProperty("评价名称")
+    private String name;
+
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("题目数量")
+    private Integer itemCount;
+
+}

+ 16 - 1
src/main/resources/mapper/evaluate/EvaluateManageMapper.xml

@@ -36,6 +36,21 @@
         SELECT IFNULL(MAX(sort_code),1) FROM evaluate_manage WHERE delete_mark = 0
     </select>
 
-    <select id="getRoomClassCount" resultType="com.xjrsoft.module.room.vo.RoomClassCountVo">
+    <select id="getMobilePage" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo">
+        select t2.id, t2.name,t4.name as evaluate_type_cn,t2.start_time,t2.end_time
+        from evaluate_executer t1
+        left join evaluate_manage t2 on t2.id = t1.evaluate_manage_id
+        left join evaluate_template t3 on t3.id = t2.evaluate_template_id
+        left join xjr_dictionary_detail t4 on t4.code = t3.evaluate_type and t4.item_id = 1746831039385366530
+        where t1.delete_mark = 0 and t2.delete_mark = 0
+        and t1.status = #{dto.status} and t1.user_id = #{dto.loginUserId}
+    </select>
+    <select id="getWriteInfo" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateWriteVo">
+        select t1.id, t1.name,t1.start_time,t1.end_time,
+        (SELECT COUNT(*) FROM evaluate_manage_item WHERE enabled_mark = 0 AND evaluate_item_id = t1.id) AS item_count
+        from evaluate_manage t1
+        left join evaluate_template t2 on t2.id = t1.evaluate_template_id
+        where t1.delete_mark = 0
+        and t1.status = #{id}
     </select>
 </mapper>

+ 1 - 1
src/main/resources/mapper/textbook/TextbookMapper.xml

@@ -129,7 +129,7 @@
         order by t1.sort_code
     </select>
     <select id="issueList" resultType="com.xjrsoft.module.textbook.vo.TextbookIssueRecordListVo">
-        SELECT t1.create_date AS issue_date, t2.name AS issue_user, t1.issue_number, t6.name AS issue_mode, t1.remark
+        SELECT t1.create_date AS issue_date, t2.name AS issue_user, t1.issue_number, t6.name AS issue_mode
         FROM textbook_issue_record t1
                  LEFT JOIN xjr_user t2 ON t1.create_user_id = t2.id
                  LEFT JOIN wf_textbook_claim_item t3 ON t1.data_item_id = t3.id

+ 366 - 30
src/test/java/com/xjrsoft/xjrsoftboot/ScheduleFlowTest.java

@@ -1,19 +1,71 @@
 package com.xjrsoft.xjrsoftboot;
 
 import cn.dev33.satoken.secure.SaSecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.XjrSoftApplication;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.module.base.entity.BaseCourseSubject;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.base.mapper.BaseClassroomMapper;
+import com.xjrsoft.module.base.service.IBaseCourseSubjectService;
+import com.xjrsoft.module.base.service.IBaseGradeService;
+import com.xjrsoft.module.base.service.IBaseSemesterService;
+import com.xjrsoft.module.schedule.vo.ClassroomJianyuekbVo;
+import com.xjrsoft.module.schedule.vo.StudentJianyuekbVo;
+import com.xjrsoft.module.student.mapper.BaseStudentMapper;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
 import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 // 简约课表测试
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = XjrSoftApplication.class)
 public class ScheduleFlowTest {
 
     public static final String ALGORITHM = "HmacSHA256";
+    public static final String apiUrl = "https://live.jianyuekb.com/api/v1/ScheduleFlowV2/OpenApi/";
+    @Autowired
+    private IBaseGradeService baseGradeService;
+    @Autowired
+    private IBaseSemesterService baseSemesterService;
+    
+    @Autowired
+    private IBaseCourseSubjectService baseCourseSubjectService;
+
+    @Autowired
+    private XjrUserMapper xjrUserMapper;
+
+    @Autowired
+    private BaseStudentMapper baseStudentMapper;
+    @Autowired
+    private BaseClassroomMapper baseClassroomMapper;
+
+
 
     public static String calculateHMac(String key, String data) throws Exception {
         Mac sha256_HMAC = Mac.getInstance(ALGORITHM);
@@ -60,41 +112,315 @@ public class ScheduleFlowTest {
     public void ScheduleFlowTest() throws Exception {
         long timestamp = System.currentTimeMillis();
 
-        String password = "";
+        String md5Str = SaSecureUtil.md5("Jh&NAbn6Rm#p@6ZZ" + timestamp);
 
-        String md5Str = SaSecureUtil.md5("Jh&NAbn6Rm#p@6ZZ1703240909745");
+        String sign = calculateHMac("UUFM5TID45X", md5Str);
+        //查询校区id
+        String schoolDistrictId = insertSchoolDistrictData(sign, timestamp);
+        System.out.println("schoolDistrictId:" + schoolDistrictId);
+//        //新增年级,并返回添加好的年级id
+//        Map<Long, String> gradeMap = insertGrade(sign, timestamp, schoolDistrictId);
+        //新增年级,并返回添加好的年级id
+        insertSemester(sign, timestamp);
+        //新增课程
+//        insertCourse(sign, timestamp);
+        //新增教师
+//        insertTeacher(sign, timestamp);
 
-        System.out.println(md5Str);
+//        insertStudent(sign, timestamp, gradeMap);
 
-        String sign = calculateHMac("UUFM5TID45X", md5Str);
+//        insertClassRoom(sign, timestamp,schoolDistrictId);
 
-        System.out.println(sign);
+    }
 
+    List<String> insertClass(String sign, Long timestamp, String schoolDistrictId) throws InterruptedException {
+        List<ClassroomJianyuekbVo> dataList = baseClassroomMapper.getJianyueList();
+        String url  = apiUrl + "class/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
 
-//        long timestamp = System.currentTimeMillis();
-//
-//        String password = "";
-//
-//        String md5Str = SaSecureUtil.md5(String.format("Jh&NAbn6Rm#p@6ZZ%d", timestamp));
-//
-//        System.out.println(md5Str);
-//
-//        String sign = calculateHMac("a7dbed0dfc70ebd92934cf9292de8749e9af01a2405217be881f9e77f6ba5320", md5Str);
-//
-//        System.out.println(sign);
-
-//        System.out.println(calculateHMac("a7dbed0dfc70ebd92934cf9292de8749e9af01a2405217be881f9e77f6ba5320", md5Str));
-//
-//        Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
-//        SecretKeySpec secret_key = new SecretKeySpec("a7dbed0dfc70ebd92934cf9292de8749e9af01a2405217be881f9e77f6ba5320".getBytes(), "HmacSHA256");
-//        sha256_HMAC.init(secret_key);
-//        byte[] bytes = sha256_HMAC.doFinal(md5Str.getBytes());
-//        String hash = byteArrayToHexString(bytes);
-//        System.out.println(hash);
+        String findUrl = apiUrl + "class/page";
 
+        for (ClassroomJianyuekbVo classroom : dataList) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("schoolDistrictId", schoolDistrictId);
+            paramJson.addProperty("name", classroom.getName());
 
+//            paramJson.addProperty("peopleCount", classroom.getPeopleCount());
+//            paramJson.addProperty("location", classroom.getLocation());
+            paramJson.addProperty("peopleCount", 50);
+            paramJson.addProperty("location", "无");
+            paramJson.addProperty("extendId", classroom.getExtendId());
+            paramJson.addProperty("floor", classroom.getFloor());
+//            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+//            if(findResult != null){
+//                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+//                JsonObject data = resultJson.get("data").getAsJsonObject();
+//                if(data.get("total").getAsInt() != 0){
+//                    //调用update
+//                }
+//            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
     }
 
+    List<String> insertClassRoom(String sign, Long timestamp, String schoolDistrictId) throws InterruptedException {
+        List<ClassroomJianyuekbVo> dataList = baseClassroomMapper.getJianyueList();
+        String url  = apiUrl + "classroom/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+
+        String findUrl = apiUrl + "ClassRoom/page";
+
+        for (ClassroomJianyuekbVo classroom : dataList) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("schoolDistrictId", schoolDistrictId);
+            paramJson.addProperty("name", classroom.getName());
+
+//            paramJson.addProperty("peopleCount", classroom.getPeopleCount());
+//            paramJson.addProperty("location", classroom.getLocation());
+            paramJson.addProperty("peopleCount", 50);
+            paramJson.addProperty("location", "无");
+            paramJson.addProperty("extendId", classroom.getExtendId());
+            paramJson.addProperty("floor", classroom.getFloor());
+//            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+//            if(findResult != null){
+//                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+//                JsonObject data = resultJson.get("data").getAsJsonObject();
+//                if(data.get("total").getAsInt() != 0){
+//                    //调用update
+//                }
+//            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
+    }
+
+    List<String> insertStudent(String sign, Long timestamp, Map<Long, String> gradeMap) throws InterruptedException {
+
+        List<StudentJianyuekbVo> dataList = baseStudentMapper.getJianyueStudentList();
+        String url  = apiUrl + "student/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+
+        String findUrl = apiUrl + "Student/page";
+
+        for (StudentJianyuekbVo student : dataList) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("registerNo", student.getRegisterNo());
+            paramJson.addProperty("gender", student.getGender());
+
+            paramJson.addProperty("realName", student.getRealName());
+            paramJson.addProperty("alias", student.getAlias());
+            paramJson.addProperty("extendId", student.getExtendId());
+            paramJson.addProperty("gradeSerialNo", gradeMap.get(student.getGradeSerialNo()));
+//            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+//            if(findResult != null){
+//                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+//                JsonObject data = resultJson.get("data").getAsJsonObject();
+//                if(data.get("total").getAsInt() != 0){
+//                    //调用update
+//                }
+//            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
+    }
+
+    List<String> insertTeacher(String sign, Long timestamp) throws InterruptedException {
+        List<XjrUser> xjrUsers = xjrUserMapper.selectJoinList(
+            XjrUser.class, new MPJLambdaWrapper<XjrUser>()
+            .innerJoin("xjr_user_role_relation t2 on t.id = t2.user_id")
+            .eq("t2.role_id", 2)
+        );
+        String url  = apiUrl + "teacher/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+
+        String findUrl = apiUrl + "/Teacher/Page";
+
+        for (XjrUser user : xjrUsers) {
+            Thread.sleep(1000);
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("jobNumber", user.getUserName());
+            paramJson.addProperty("gender", user.getGender());
+
+            String name = user.getName().substring(0, 1) + user.getUserName();
+            paramJson.addProperty("name", name);
+            paramJson.addProperty("alias", name);
+            paramJson.addProperty("extendId", user.getId().toString());
+            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+            if(findResult != null){
+                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+                JsonObject data = resultJson.get("data").getAsJsonObject();
+                if(data.get("total").getAsInt() != 0){
+                    //调用update
+                }
+            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
+    }
+
+    List<String> insertCourse(String sign, Long timestamp){
+        List<BaseCourseSubject> list = baseCourseSubjectService.list(
+                new QueryWrapper<BaseCourseSubject>().lambda()
+                        .eq(BaseCourseSubject::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        String url  = apiUrl + "courseclass/Create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+        for (BaseCourseSubject courseSubject : list) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("name", courseSubject.getName() + courseSubject.getCode());
+            paramJson.addProperty("code", courseSubject.getCode());
+            paramJson.addProperty("extendId", courseSubject.getId().toString());
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println("result is null, paramJson: " + paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            if(resultJson.get("code").getAsInt() == -1){
+                System.out.println("paramJson: " + paramJson.toString() + ", 返回结果:" + result);
+            }
+            idList.add(resultJson.get("data").getAsString());
+        }
+
+        return idList;
+    }
+
+
+
+    List<String> insertSemester(String sign, Long timestamp){
+        List<BaseSemester> list = baseSemesterService.list(
+            new QueryWrapper<BaseSemester>().lambda()
+            .eq(BaseSemester::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        String url  = apiUrl + "semester/Create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+        SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String spring = "春";
+        String autumn = "秋";
+
+        for (BaseSemester semester : list) {
+            JsonObject paramJson = new JsonObject();
+
+            paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())));
+            Integer period = null;
+            if(semester.getName().contains(String.valueOf(spring))){
+                period = 1;
+            }else if(semester.getName().contains(autumn)){
+                period = 2;
+            }
+            paramJson.addProperty("period", period);
+            paramJson.addProperty("startDate", sdf.format(semester.getStartDate()));
+            paramJson.addProperty("endDate", sdf.format(semester.getEndDate()));
+            paramJson.addProperty("extendId", semester.getId().toString());
+
+            if(semester.getStartDate() != null && semester.getEndDate() != null && semester.getEndDate().getTime() > timestamp && semester.getStartDate().getTime() < timestamp){
+                paramJson.addProperty("isCurrent", Boolean.TRUE);
+            }else{
+                paramJson.addProperty("isCurrent", Boolean.FALSE);
+            }
+            System.out.println(paramJson.toString());
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+
+        return idList;
+    }
+
+    /**
+     *  由于简约中校区中的本部不能删除,如果没有多的校区,就只查询本部的id即可
+     * @param sign 签名
+     * @param timestamp 时间戳
+     * @return 返回添加好的校区id
+     */
+    String insertSchoolDistrictData(String sign, Long timestamp){
+        JsonParser jsonParser = new JsonParser();
+//        String url  = apiUrl + "SchoolDistrict/Create";
+//        JsonObject jsonObject = new JsonObject();
+//        jsonObject.addProperty("name", "test1");
+//        jsonObject.addProperty("shortName", "本部112");
+//        jsonObject.addProperty("note", "本部211");
+//        jsonObject.addProperty("sort", "2");
+//        String result = doPost(url, jsonObject.toString(), sign, timestamp);
+//        JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+        String url  = apiUrl + "SchoolDistrict/page";
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("keyword", "本部");
+        jsonObject.addProperty("pageSize", "15");
+        jsonObject.addProperty("pageIndex", "1");
+        String result = doPost(url, jsonObject.toString(), sign, timestamp);
+        JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+        String id = resultJson.get("data").getAsJsonObject().get("dataList").getAsJsonArray().get(0).getAsJsonObject().get("id").getAsString();
+        return id;
+    }
+
+    Map<Long, String> insertGrade(String sign, Long timestamp, String schoolDistrictId){
+        List<BaseGrade> list = baseGradeService.list(
+            new QueryWrapper<BaseGrade>().lambda()
+            .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        String url = apiUrl + "eduyear/create";
+        JsonParser jsonParser = new JsonParser();
+        Map<Long, String> idMap = new HashMap<>();
+        for (BaseGrade baseGrade : list) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("schoolDistrictId", schoolDistrictId);
+            paramJson.addProperty("period", 4);
+            paramJson.addProperty("startYear", baseGrade.getTitle().replaceAll("年", ""));
+            paramJson.addProperty("extendId", baseGrade.getId().toString());
+            paramJson.addProperty("year", 3);
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+            idMap.put(baseGrade.getId(), resultJson.get("data").getAsString());
+        }
+
+        return idMap;
+    }
+
+
+
     public static String doGet(String httpurl) throws Exception {
         long timestamp = System.currentTimeMillis();
 
@@ -168,16 +494,20 @@ public class ScheduleFlowTest {
         return result;
     }
 
-    public static String doPost(String httpUrl, String param) {
+    public static String doPost(String httpUrl, String param, String sign, Long timestamp) {
         HttpURLConnection connection = null;
         InputStream is = null;
         OutputStream os = null;
         BufferedReader br = null;
         String result = null;
+        OutputStreamWriter writer = null;
         try {
             URL url = new URL(httpUrl);
             // 通过远程url连接对象打开连接
             connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestProperty("schoolId","UUFM5TID45X");
+            connection.setRequestProperty("sign",sign);
+            connection.setRequestProperty("timestamp",String.format("%d",timestamp));
             // 设置连接请求方式
             connection.setRequestMethod("POST");
             // 设置连接主机服务器超时时间:15000毫秒
@@ -192,10 +522,16 @@ public class ScheduleFlowTest {
             connection.setRequestProperty("Content-Type", "application/json");
             // 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
 //            connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
+            writer = new OutputStreamWriter(connection.getOutputStream(),"UTF-8");
+            //body参数放这里
+            writer.write(param);
+            writer.flush();
+
+            writer.close();
             // 通过连接对象获取一个输出流
-            os = connection.getOutputStream();
-            // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
-            os.write(param.getBytes());
+//            os = connection.getOutputStream();
+//            // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
+//            os.write(param.getBytes());
             // 通过连接对象获取一个输入流,向远程读取
             if (connection.getResponseCode() == 200) {
                 is = connection.getInputStream();

+ 6 - 0
src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java

@@ -166,4 +166,10 @@ public class StrTest {
         }
         return dateList;
     }
+
+    @Test
+    void test22(){
+        String name = "2023年秋季";
+        System.out.println(name.contains("秋季"));
+    }
 }