|
@@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.excel.BasicStudentImportDto;
|
|
|
+import com.qmth.distributed.print.business.bean.params.BasicCampusParams;
|
|
|
import com.qmth.distributed.print.business.bean.dto.TaskPrintClassDto;
|
|
|
import com.qmth.distributed.print.business.bean.params.BasicStudentParams;
|
|
|
import com.qmth.distributed.print.business.bean.result.BasicStudentResult;
|
|
|
+import com.qmth.distributed.print.business.entity.BasicCampus;
|
|
|
import com.qmth.distributed.print.business.entity.BasicStudent;
|
|
|
import com.qmth.distributed.print.business.mapper.BasicStudentMapper;
|
|
|
import com.qmth.distributed.print.business.service.BasicCampusService;
|
|
@@ -17,14 +20,14 @@ import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.teachcloud.common.service.TeachcloudCommonService;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
+import org.checkerframework.checker.units.qual.A;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.LinkedMultiValueMap;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -66,57 +69,12 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public Long saveBasicStudent(BasicStudentParams basicStudentParams) {
|
|
|
- // 权限参数
|
|
|
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
- Long schoolId = sysUser.getSchoolId();
|
|
|
- Long id = basicStudentParams.getId();
|
|
|
- // 普通参数
|
|
|
- String studentName = basicStudentParams.getStudentName();
|
|
|
- String studentCode = basicStudentParams.getStudentCode();
|
|
|
- String phoneNumber = basicStudentParams.getPhoneNumber();
|
|
|
- Long campusId = basicStudentParams.getCampusId();
|
|
|
- if (Objects.isNull(basicCampusService.getById(campusId))){
|
|
|
- throw ExceptionResultEnum.ERROR.exception("所选校区不存在");
|
|
|
- }
|
|
|
- String clazz = basicStudentParams.getClazz();
|
|
|
-
|
|
|
- // 检验学号在学校的唯一性
|
|
|
- BasicStudent check = this.getOne(new QueryWrapper<BasicStudent>().lambda()
|
|
|
- .eq(BasicStudent::getSchoolId,schoolId)
|
|
|
- .eq(BasicStudent::getStudentCode,studentCode)
|
|
|
- .eq(BasicStudent::getEnable,true));
|
|
|
- if (Objects.nonNull(check)){
|
|
|
- if (!check.getId().equals(id)){
|
|
|
- throw ExceptionResultEnum.ERROR.exception("学生编号【" + studentCode + "】重复");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 组装基础参数
|
|
|
- BasicStudent basicStudent = new BasicStudent();
|
|
|
- basicStudent.setStudentCode(studentCode);
|
|
|
- basicStudent.setStudentName(studentName);
|
|
|
- basicStudent.setPhoneNumber(phoneNumber);
|
|
|
- basicStudent.setCampusId(campusId);
|
|
|
- basicStudent.setClazz(clazz);
|
|
|
- basicStudent.setOrgId(sysUser.getOrgId());
|
|
|
- basicStudent.setSchoolId(schoolId);
|
|
|
-
|
|
|
- // 保存
|
|
|
- if (Objects.isNull(id)){
|
|
|
- // id为空 -> 新增
|
|
|
- // 获取分布式id
|
|
|
- id = SystemConstant.getDbUuid();
|
|
|
- basicStudent.setId(id);
|
|
|
- basicStudent.setCreateId(sysUser.getId());
|
|
|
- this.save(basicStudent);
|
|
|
- }else {
|
|
|
- // id不为空 -> 更新
|
|
|
- basicStudent.setId(id);
|
|
|
- basicStudent.setUpdateId(sysUser.getId());
|
|
|
- this.updateById(basicStudent);
|
|
|
- }
|
|
|
- return id;
|
|
|
+ public Long saveBasicStudent(BasicStudentParams basicStudentParams,SysUser sysUser) {
|
|
|
+ List<BasicStudentParams> basicStudentParamsList = new ArrayList<>();
|
|
|
+ basicStudentParamsList.add(basicStudentParams);
|
|
|
+ BasicStudent basicStudent = this.editEntityHelp(basicStudentParamsList,sysUser).get(0);
|
|
|
+ this.updateById(basicStudent);
|
|
|
+ return basicStudent.getId();
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -134,4 +92,139 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
|
|
|
.in(BasicStudent::getId,idList);
|
|
|
return this.update(updateWrapper);
|
|
|
}
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
|
|
|
+ SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
|
|
|
+ Long schoolId = sysUser.getSchoolId();
|
|
|
+
|
|
|
+ List<BasicStudentParams> addBasicStudentParamsList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < finalList.size(); i++) {
|
|
|
+ LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
|
|
|
+ List<Object> basicStudentImportDtoList = excelMap.get(i);
|
|
|
+ List<BasicStudentImportDto> datasource = Collections.singletonList((BasicStudentImportDto) excelMap.get(i));
|
|
|
+ // TODO: 2021/7/16 校验datasource集合的正确性
|
|
|
+ System.out.println("datasource:\n" + datasource);
|
|
|
+
|
|
|
+ // 新校区名称集合
|
|
|
+ Set<String> newCampusNameSet = datasource.stream().map(BasicStudentImportDto::getCampusName).collect(Collectors.toSet());
|
|
|
+ // 旧校区集合
|
|
|
+ List<BasicCampus> basicCampusList = basicCampusService.list(new QueryWrapper<BasicCampus>().lambda().eq(BasicCampus::getEnable,true).eq(BasicCampus::getSchoolId,schoolId));
|
|
|
+ Set<String> oldCampusNameSet = basicCampusList.stream().map(BasicCampus::getCampusName).collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 需要新增的校区集合
|
|
|
+ Set<String> addCampusNameSet = newCampusNameSet.stream().filter(e -> !oldCampusNameSet.contains(e)).collect(Collectors.toSet());
|
|
|
+ List<BasicCampus> addBasicCampusList = new ArrayList<>();
|
|
|
+ for (String campusName : addCampusNameSet) {
|
|
|
+ BasicCampus basicCampus = new BasicCampus();
|
|
|
+ Long id = SystemConstant.getDbUuid();
|
|
|
+ basicCampus.setSchoolId(schoolId);
|
|
|
+ basicCampus.setCampusName(campusName);
|
|
|
+ basicCampus.setId(id);
|
|
|
+ basicCampus.setCampusCode(String.valueOf(id));
|
|
|
+ basicCampus.setEnable(true);
|
|
|
+ basicCampus.setCreateId(sysUser.getId());
|
|
|
+ addBasicCampusList.add(basicCampus);
|
|
|
+ }
|
|
|
+ // 批量新增校区
|
|
|
+ basicCampusService.saveBatch(addBasicCampusList);
|
|
|
+
|
|
|
+ for (int y = 0; y < Objects.requireNonNull(basicStudentImportDtoList).size(); y++) {
|
|
|
+ BasicStudentImportDto basicStudentImportDto = (BasicStudentImportDto) basicStudentImportDtoList.get(y);
|
|
|
+
|
|
|
+ // 取值
|
|
|
+ String studentName = basicStudentImportDto.getStudentName();
|
|
|
+ String studentCode = basicStudentImportDto.getStudentCode();
|
|
|
+ String phoneNumber = basicStudentImportDto.getPhoneNumber();
|
|
|
+ String campusName = basicStudentImportDto.getCampusName();
|
|
|
+ String clazz = basicStudentImportDto.getClazz();
|
|
|
+
|
|
|
+
|
|
|
+ BasicStudentParams basicStudentParams = new BasicStudentParams();
|
|
|
+ basicStudentParams.setCampusId(basicCampusService.getOne(new QueryWrapper<BasicCampus>().lambda()
|
|
|
+ .eq(BasicCampus::getSchoolId,schoolId)
|
|
|
+ .eq(BasicCampus::getCampusName,campusName)
|
|
|
+ .eq(BasicCampus::getEnable,true))
|
|
|
+ .getId());
|
|
|
+ basicStudentParams.setStudentName(studentName);
|
|
|
+ basicStudentParams.setStudentCode(studentCode);
|
|
|
+ basicStudentParams.setPhoneNumber(phoneNumber);
|
|
|
+ basicStudentParams.setClazz(clazz);
|
|
|
+
|
|
|
+ BasicStudent tmp = this.getOne(new QueryWrapper<BasicStudent>().lambda()
|
|
|
+ .eq(BasicStudent::getSchoolId,sysUser.getSchoolId())
|
|
|
+ .eq(BasicStudent::getEnable,true)
|
|
|
+ .eq(BasicStudent::getStudentCode,studentCode));
|
|
|
+ if (Objects.nonNull(tmp)){
|
|
|
+ basicStudentParams.setId(tmp.getId());
|
|
|
+ }
|
|
|
+ addBasicStudentParamsList.add(basicStudentParams);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<BasicStudent> basicStudentList = this.editEntityHelp(addBasicStudentParamsList,sysUser);
|
|
|
+ this.updateBatchById(basicStudentList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 学生保存助手方法(应对学生保存和导入批量保存)
|
|
|
+ * @param basicStudentParamsList 学生参数
|
|
|
+ * @param sysUser 操作人
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ private List<BasicStudent> editEntityHelp(List<BasicStudentParams> basicStudentParamsList,SysUser sysUser){
|
|
|
+ Long schoolId = sysUser.getSchoolId();
|
|
|
+ List<BasicStudent> editEntityList = new ArrayList<>();
|
|
|
+ for (BasicStudentParams basicStudentParams : basicStudentParamsList) {
|
|
|
+ // 普通参数
|
|
|
+ String studentName = basicStudentParams.getStudentName();
|
|
|
+ String studentCode = basicStudentParams.getStudentCode();
|
|
|
+ String phoneNumber = basicStudentParams.getPhoneNumber();
|
|
|
+ Long campusId = basicStudentParams.getCampusId();
|
|
|
+ if (Objects.isNull(basicCampusService.getById(campusId))){
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("所选校区不存在");
|
|
|
+ }
|
|
|
+ String clazz = basicStudentParams.getClazz();
|
|
|
+ Long id = basicStudentParams.getId();
|
|
|
+
|
|
|
+ // 检验学号在学校的唯一性
|
|
|
+ BasicStudent check = this.getOne(new QueryWrapper<BasicStudent>().lambda()
|
|
|
+ .eq(BasicStudent::getSchoolId,schoolId)
|
|
|
+ .eq(BasicStudent::getStudentCode,studentCode)
|
|
|
+ .eq(BasicStudent::getEnable,true));
|
|
|
+ if (Objects.nonNull(check)){
|
|
|
+ if (!check.getId().equals(id)){
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("学生编号【" + studentCode + "】重复");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 组装基础参数
|
|
|
+ BasicStudent basicStudent = new BasicStudent();
|
|
|
+ basicStudent.setStudentCode(studentCode);
|
|
|
+ basicStudent.setStudentName(studentName);
|
|
|
+ basicStudent.setPhoneNumber(phoneNumber);
|
|
|
+ basicStudent.setCampusId(campusId);
|
|
|
+ basicStudent.setClazz(clazz);
|
|
|
+ basicStudent.setOrgId(sysUser.getOrgId());
|
|
|
+ basicStudent.setSchoolId(schoolId);
|
|
|
+
|
|
|
+ // 保存
|
|
|
+ if (Objects.isNull(id)){
|
|
|
+ // id为空 -> 新增
|
|
|
+ // 获取分布式id
|
|
|
+ id = SystemConstant.getDbUuid();
|
|
|
+ basicStudent.setId(id);
|
|
|
+ basicStudent.setCreateId(sysUser.getId());
|
|
|
+ }else {
|
|
|
+ // id不为空 -> 更新
|
|
|
+ basicStudent.setId(id);
|
|
|
+ basicStudent.setUpdateId(sysUser.getId());
|
|
|
+ }
|
|
|
+ editEntityList.add(basicStudent);
|
|
|
+ }
|
|
|
+ return editEntityList;
|
|
|
+ }
|
|
|
}
|