Browse Source

课程表导入功能

chenw 6 years ago
parent
commit
a13e920033

+ 13 - 3
applications/school/school-dto/src/main/java/com/usoftchina/smartschool/school/dto/CurriculumDTO.java

@@ -41,7 +41,7 @@ public class CurriculumDTO implements Serializable {
     /**
      * 创建人名称
      */
-    private Long creatorName;
+    private String creatorName;
     /**
      * 创建日期
      */
@@ -51,6 +51,16 @@ public class CurriculumDTO implements Serializable {
      */
     private String clazzId;
 
+    private String status;
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
     public String getClazzId() {
         return clazzId;
     }
@@ -115,11 +125,11 @@ public class CurriculumDTO implements Serializable {
         this.weekNum = weekNum;
     }
 
-    public Long getCreatorName() {
+    public String getCreatorName() {
         return creatorName;
     }
 
-    public void setCreatorName(Long creatorName) {
+    public void setCreatorName(String creatorName) {
         this.creatorName = creatorName;
     }
 

+ 7 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/controller/CurriculumController.java

@@ -35,7 +35,7 @@ public class CurriculumController {
     }
 
     @PostMapping("/save")
-    public Result save(CurriculumFormDTO curriculumFormDTO){
+    public Result save(@RequestBody CurriculumFormDTO curriculumFormDTO){
         return Result.success(curriculumService.save(curriculumFormDTO));
     }
 
@@ -51,4 +51,10 @@ public class CurriculumController {
         return Result.success();
     }
 
+    //导入保存至列表
+    @PostMapping("/saveToFormal")
+    public Result saveToFormal(Integer id, boolean update) {
+        curriculumService.saveToFormal(id, update);
+        return Result.success();
+    }
 }

+ 7 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/CurriculumService.java

@@ -49,4 +49,11 @@ public interface CurriculumService {
      * @param id
      */
     void deleteDetail(Long id);
+
+    /**
+     * 导入保存至列表
+     * @param id
+     * @param update
+     */
+    void saveToFormal(Integer id, boolean update);
 }

+ 70 - 3
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/CurriculumServiceImpl.java

@@ -9,16 +9,20 @@ import com.usoftchina.smartschool.school.basic.service.CurriculumService;
 import com.usoftchina.smartschool.school.dto.*;
 import com.usoftchina.smartschool.school.exception.BizExceptionCode;
 import com.usoftchina.smartschool.school.mapper.CurriculumMapper;
+import com.usoftchina.smartschool.school.mapper.DataImportMapper;
 import com.usoftchina.smartschool.school.mapper.SysClazzMapper;
+import com.usoftchina.smartschool.school.mapper.SysGradeMapper;
+import com.usoftchina.smartschool.school.po.DataImportDetail;
 import com.usoftchina.smartschool.school.po.SubjectDO;
 import com.usoftchina.smartschool.school.wxschool.utils.ObjectUtils;
 import com.usoftchina.smartschool.school.wxschool.utils.StringUtils;
 import com.usoftchina.smartschool.utils.CollectionUtils;
+import com.usoftchina.smartschool.utils.JsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.Map.Entry;
 
 /**
  * @Description 课程表
@@ -30,7 +34,12 @@ public class CurriculumServiceImpl implements CurriculumService {
 
     @Autowired
     private CurriculumMapper curriculumMapper;
-
+    @Autowired
+    private DataImportMapper dataImportMapper;
+    @Autowired
+    private SysGradeMapper sysGradeMapper;
+    @Autowired
+    private SysClazzMapper sysClazzMapper;
 
     @Override
     public PageInfo<CurriculumListDTO> selectAll(PageRequest page, ListReqDTO listReqDTO) {
@@ -123,6 +132,8 @@ public class CurriculumServiceImpl implements CurriculumService {
         //查询课表科目信息
         List<SubjectDO> subjectDOList = curriculumMapper.selectSubject(BaseContextHolder.getSchoolId());
         if (null != main.getId() && 0 != main.getId()){
+            main.setCreateTime(new Date());
+            main.setCreatorName(BaseContextHolder.getUserName());
             //保存主表
             curriculumMapper.insertSelective(main);
             Long mId = main.getId();
@@ -173,4 +184,60 @@ public class CurriculumServiceImpl implements CurriculumService {
     public void deleteDetail(Long id) {
         curriculumMapper.deleteDetail(id);
     }
+
+    @Override
+    public void saveToFormal(Integer id, boolean update){
+        if (null == id || "0".equals(id)) {
+            return;
+        }
+        Long schoolId = BaseContextHolder.getSchoolId();
+        List<DataImportDetail> details = dataImportMapper.selectDataById(id);
+        List<CurriculumDTO> mainList = new ArrayList<CurriculumDTO>();
+        if (!CollectionUtils.isEmpty(details)){
+            Map<String, List<DataImportDetail>> datas = CollectionUtils.groupBy(details, DataImportDetail::getDd_codevalue);
+            Iterator<Entry<String, List<DataImportDetail>>> it = datas.entrySet().iterator();
+            while (it.hasNext()) {
+                Entry<String, List<DataImportDetail>> entry = it.next();
+                String key = entry.getKey();
+                //校验课程班级格式是否符合: 年级#班级
+                if (StringUtils.isEmpty(key) || !key.contains("#")){
+                    throw new BizException(BizExceptionCode.USELESS_DATA);
+                }
+                String[] keys = key.split("#");
+                String grade = keys[0], clazz = keys[1];
+                Long gradeId = sysGradeMapper.selectByName(grade, schoolId).getGrade_id();
+                Long clazzId = sysClazzMapper.selectByName(clazz, gradeId).getClazz_id();
+                List<DataImportDetail> dataImportDetailList = entry.getValue();
+                if (dataImportDetailList.size() > 0) {
+                    for (DataImportDetail dataImportDetail : dataImportDetailList) {
+                        DataImportDetail singleDataImportDetail = dataImportMapper.selectMainBycode(key, id, schoolId);
+                        CurriculumDTO curriculumDTO = JsonUtils.fromJsonString(singleDataImportDetail.getDd_maindata(), CurriculumDTO.class);
+                        List<CurriculumDetailDTO> curriculumDetailDTOList = JsonUtils.fromJsonArray(dataImportDetail.getDd_detaildata(), CurriculumDetailDTO.class);
+                        //更新数据,将中文转换成ID
+                        curriculumDTO.setStatus("1");
+                        curriculumDTO.setCreateTime(new Date());
+                        curriculumDTO.setClazzId(String.valueOf(clazzId));
+                        //插入主表数据
+                        curriculumMapper.insertSelective(curriculumDTO);
+                        Long mainId = curriculumDTO.getId();
+                        //插入明细表数据
+                        //1. 替换课程名称为ID
+                        List<SubjectDO> subjectDOList = curriculumMapper.selectSubject(schoolId);
+                        for (SubjectDO subjectDO : subjectDOList){
+                            curriculumDetailDTOList.forEach(curriculumDetailDTO -> {
+                                curriculumDetailDTO.setmId(mainId);
+                                curriculumDetailDTO.setStatus(1);
+                                curriculumDetailDTO.setSchoolId(schoolId.intValue());
+                                curriculumDetailDTO.setClazzId(clazzId.intValue());
+                                convertToId(curriculumDetailDTO, subjectDO);
+                            });
+                        }
+                        //2. 插入
+                        curriculumMapper.insertDetailSelective(curriculumDetailDTOList);
+                    }
+                }
+            }
+        }
+        dataImportMapper.updateDataImport(id);
+    }
 }

+ 3 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/SysClazzMapper.java

@@ -3,6 +3,7 @@ package com.usoftchina.smartschool.school.mapper;
 import com.usoftchina.smartschool.school.po.SysClazz;
 import com.usoftchina.smartschool.school.po.TeacherDetail;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -23,4 +24,6 @@ public interface SysClazzMapper {
     List<SysClazz> selectBygrade(Long id);
 
     List<TeacherDetail> selectTeacher(Long id);
+
+    SysClazz selectByName(@Param("name") String name, @Param("gradeId") Long gradeId);
 }

+ 1 - 0
applications/school/school-server/src/main/resources/mapper/CurriculumMapper.xml

@@ -29,6 +29,7 @@
     <result column="mcur_weeknum" property="weekNum" jdbcType="INTEGER" />
     <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
     <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="mcur_status" property="status" jdbcType="VARCHAR" />
     <!--<result column="school_id" property="" jdbcType="VARCHAR" />
     <result column="clazz_id" property="" jdbcType="VARCHAR" />-->
   </resultMap>

+ 4 - 0
applications/school/school-server/src/main/resources/mapper/SysClazzMapper.xml

@@ -103,6 +103,10 @@
     select * from sys_clazz where grade_id = #{id}
   </select>
 
+  <select id="selectByName" resultMap="BaseResultMap">
+    select * from sys_clazz where grade_id = #{gradeId} and clazz_name = #{name}
+  </select>
+
   <resultMap id="teacherMap" type="com.usoftchina.smartschool.school.po.TeacherDetail" >
     <result column="teacher" property="teacher" jdbcType="VARCHAR" />
     <result column="grade" property="grade" jdbcType="VARCHAR" />