437 lines
21 KiB
Java
437 lines
21 KiB
Java
package com.ibeetl.jlw.service;
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.jlw.util.ToolUtils;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.TypeReference;
|
|
import com.ibeetl.admin.core.entity.CoreUser;
|
|
import com.ibeetl.admin.core.service.CoreBaseService;
|
|
import com.ibeetl.admin.core.util.PlatformException;
|
|
import com.ibeetl.admin.core.util.TimeTool;
|
|
import com.ibeetl.admin.core.web.JsonResult;
|
|
import com.ibeetl.admin.core.web.JsonReturnCode;
|
|
import com.ibeetl.jlw.dao.*;
|
|
import com.ibeetl.jlw.entity.*;
|
|
import com.ibeetl.jlw.web.query.TeachingManagementQuery;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
import org.apache.poi.ss.usermodel.Workbook;
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
import org.beetl.sql.core.SqlId;
|
|
import org.beetl.sql.core.engine.PageQuery;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
import java.io.*;
|
|
import java.util.*;
|
|
|
|
import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
|
|
|
|
/**
|
|
* 授课管理 Service
|
|
* 当分布式ID开启后请勿使用insert(*,true)
|
|
*/
|
|
|
|
@Service
|
|
@Transactional
|
|
@Validated
|
|
public class TeachingManagementService extends CoreBaseService<TeachingManagement> {
|
|
|
|
@Autowired
|
|
private TeachingManagementDao teachingManagementDao;
|
|
@Autowired
|
|
private UniversityFacultyDao universityFacultyDao;
|
|
|
|
@Autowired
|
|
private UniversitySystemDao universitySystemDao;
|
|
|
|
public PageQuery<TeachingManagement> queryByCondition(PageQuery query) {
|
|
PageQuery ret = teachingManagementDao.queryByCondition(query);
|
|
queryListAfter(ret.getList());
|
|
return ret;
|
|
}
|
|
|
|
public PageQuery<TeachingManagement> getTeachingManagement(PageQuery query) {
|
|
PageQuery ret = teachingManagementDao.getTeachingManagement(query);
|
|
queryListAfter(ret.getList());
|
|
return ret;
|
|
}
|
|
|
|
public PageQuery<TeachingManagement> queryByConditionQuery(PageQuery query) {
|
|
PageQuery ret = teachingManagementDao.queryByConditionQuery(query);
|
|
queryListAfter(ret.getList());
|
|
return ret;
|
|
}
|
|
|
|
public void deleteByList(List list) {
|
|
String ids = "";
|
|
ToolUtils.deleteNullList(list);
|
|
for (int i = 0; null != list && i < list.size(); i++) {
|
|
ids += list.get(i).toString() + (i == list.size() - 1 ? "" : ",");
|
|
}
|
|
if (StringUtils.isNotBlank(ids)) {
|
|
teachingManagementDao.deleteByIds(ids);
|
|
}
|
|
}
|
|
|
|
public void deleteTeachingManagement(String ids) {
|
|
try {
|
|
teachingManagementDao.deleteTeachingManagementByIds(ids);
|
|
} catch (Exception e) {
|
|
throw new PlatformException("批量删除授课管理失败", e);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 根据教师删除
|
|
* @param teacherInfo
|
|
*/
|
|
public void deleteTeacherInfo(String teacherInfo) {
|
|
try {
|
|
TeachingManagement teachingManagement = new TeachingManagement();
|
|
teachingManagement.setTeacherMergeClassThirdStatus(2);
|
|
teachingManagementDao.getSQLManager().lambdaQuery(TeachingManagement.class)
|
|
.andEq(TeachingManagement::getTeacherInfo,teacherInfo)
|
|
.updateSelective(teachingManagement);
|
|
} catch (Exception e) {
|
|
throw new PlatformException("批量删除授课管理失败", e);
|
|
}
|
|
}
|
|
|
|
|
|
public String addAll(TeachingManagementQuery teachingManagementQuery) {
|
|
String msg = "";
|
|
List<TeachingManagement> teachingManagementList = new ArrayList<>();
|
|
try {
|
|
teachingManagementList = JSON.parseArray(teachingManagementQuery.getTeachingManagementJsonStr(), TeachingManagement.class);
|
|
} catch (Exception e) {
|
|
try {
|
|
teachingManagementList.add(JSONObject.parseObject(teachingManagementQuery.getTeachingManagementJsonStr(), TeachingManagement.class));
|
|
} catch (Exception e1) {
|
|
}
|
|
}
|
|
ToolUtils.deleteNullList(teachingManagementList);
|
|
if (null != teachingManagementList && teachingManagementList.size() > 0) {
|
|
for (int i = 0; i < teachingManagementList.size(); i++) {
|
|
TeachingManagement teachingManagement = teachingManagementList.get(i);
|
|
teachingManagement.setUserId(teachingManagementQuery.getUserId());
|
|
teachingManagement.setOrgId(teachingManagementQuery.getOrgId());
|
|
}
|
|
insertBatch(teachingManagementList);
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
public JsonResult add(TeachingManagementQuery teachingManagementQuery) {
|
|
if (ObjectUtil.isEmpty(teachingManagementQuery.getUniversityFacultyInfo())) {
|
|
return JsonResult.failMessage("请选择所属院系");
|
|
}
|
|
|
|
UniversityFaculty universityFaculty = universityFacultyDao.getSQLManager()
|
|
.lambdaQuery(UniversityFaculty.class)
|
|
.andEq(UniversityFaculty::getUniversityFacultyId, teachingManagementQuery.getUniversityFacultyInfo()).single();
|
|
|
|
if (ObjectUtil.isEmpty(universityFaculty)) {
|
|
return JsonResult.failMessage("查询不到所属院系");
|
|
}
|
|
|
|
if (ObjectUtil.isEmpty(teachingManagementQuery.getUniversitySystemInfo())) {
|
|
return JsonResult.failMessage("请选择所属院系");
|
|
}
|
|
UniversitySystem universitySystem = universitySystemDao.getSQLManager()
|
|
.lambdaQuery(UniversitySystem.class)
|
|
.andEq(UniversitySystem::getUniversitySystemId, teachingManagementQuery.getUniversitySystemInfo()).single();
|
|
|
|
if (ObjectUtil.isEmpty(universitySystem)) {
|
|
return JsonResult.failMessage("查询不到所属院系");
|
|
}
|
|
|
|
List<TeachingManagement> teacherBoundClassList = JSONObject.parseObject(teachingManagementQuery.getTeacherBoundClass(), new TypeReference<List<TeachingManagement>>() {
|
|
});
|
|
|
|
if (CollectionUtil.isEmpty(teacherBoundClassList)) {
|
|
return JsonResult.failMessage("请选择老师绑定班级");
|
|
}
|
|
|
|
List<TeachingManagement> teachingManagementList = new ArrayList<>();
|
|
|
|
for (TeachingManagement teacherBoundClass : teacherBoundClassList) {
|
|
|
|
TeachingManagementQuery query = new TeachingManagementQuery();
|
|
query.setUniversityFacultyInfo(teachingManagementQuery.getUniversityFacultyInfo());
|
|
query.setUniversitySystemInfo(teachingManagementQuery.getUniversitySystemInfo());
|
|
query.setTeacherInfo(teachingManagementQuery.getTeacherInfo());
|
|
query.setSchoolClassInfo(teacherBoundClass.getSchoolClassInfo());
|
|
List<TeachingManagement> valuesByQueryNotWithPermission = teachingManagementDao.getValuesByQueryNotWithPermission(query);
|
|
|
|
if (CollectionUtil.isEmpty(valuesByQueryNotWithPermission)){
|
|
TeachingManagement teachingManagement = new TeachingManagement();
|
|
teachingManagement.setUniversityFacultyInfo(teachingManagementQuery.getUniversityFacultyInfo());
|
|
teachingManagement.setUniversitySystemInfo(teachingManagementQuery.getUniversitySystemInfo());
|
|
teachingManagement.setTeacherInfo(teachingManagementQuery.getTeacherInfo());
|
|
teachingManagement.setSchoolClassInfo(teacherBoundClass.getSchoolClassInfo());
|
|
teachingManagement.setTeacherMergeClassThirdAddTime(new Date());
|
|
teachingManagement.setTeacherMergeClassThirdStatus(1);
|
|
teachingManagement.setOrgId(teachingManagementQuery.getOrgId());
|
|
teachingManagement.setUserId(teachingManagementQuery.getUserId());
|
|
teachingManagementList.add(teachingManagement);
|
|
}
|
|
}
|
|
|
|
if (CollectionUtil.isNotEmpty(teachingManagementList)){
|
|
teachingManagementDao.insertBatch(teachingManagementList);
|
|
}
|
|
|
|
JsonResult jsonResult = new JsonResult();
|
|
jsonResult.setCode(JsonReturnCode.SUCCESS.getCode());
|
|
jsonResult.setMsg("新增成功");
|
|
|
|
// String msg = "";
|
|
// teachingManagementQuery.setTeacherMergeClassThirdAddTime(new Date());
|
|
// TeachingManagement teachingManagement = teachingManagementQuery.pojo();
|
|
// teachingManagementDao.insert(teachingManagement);
|
|
// teachingManagementQuery.setTeacherMergeClassThirdId(teachingManagement.getTeacherMergeClassThirdId());
|
|
// JsonResult jsonResult = new JsonResult();
|
|
// jsonResult.setData(teachingManagement.getTeacherMergeClassThirdId());//自增的ID丢进去
|
|
// jsonResult.setCode(JsonReturnCode.SUCCESS.getCode());
|
|
// jsonResult.setMsg(msg);
|
|
return jsonResult;
|
|
}
|
|
|
|
public String edit(TeachingManagementQuery teachingManagementQuery) {
|
|
|
|
List<TeachingManagement> teacherBoundClassList = JSONObject.parseObject(teachingManagementQuery.getTeacherBoundClass(), new TypeReference<List<TeachingManagement>>() {
|
|
});
|
|
|
|
if (CollectionUtil.isEmpty(teacherBoundClassList)) {
|
|
return "请选择老师绑定班级";
|
|
}
|
|
|
|
for (TeachingManagement management : teacherBoundClassList) {
|
|
|
|
TeachingManagementQuery query = new TeachingManagementQuery();
|
|
query.setUniversityFacultyInfo(teachingManagementQuery.getUniversityFacultyInfo());
|
|
query.setUniversitySystemInfo(teachingManagementQuery.getUniversitySystemInfo());
|
|
query.setTeacherInfo(teachingManagementQuery.getTeacherInfo());
|
|
query.setSchoolClassInfo(management.getSchoolClassInfo());
|
|
List<TeachingManagement> valuesByQueryNotWithPermission = teachingManagementDao.getValuesByQueryNotWithPermission(query);
|
|
|
|
if (CollectionUtil.isEmpty(valuesByQueryNotWithPermission)){
|
|
TeachingManagement addTeachingManagement = new TeachingManagement();
|
|
addTeachingManagement.setUniversityFacultyInfo(teachingManagementQuery.getUniversityFacultyInfo());
|
|
addTeachingManagement.setUniversitySystemInfo(teachingManagementQuery.getUniversitySystemInfo());
|
|
addTeachingManagement.setTeacherInfo(teachingManagementQuery.getTeacherInfo());
|
|
addTeachingManagement.setSchoolClassInfo(management.getSchoolClassInfo());
|
|
addTeachingManagement.setTeacherMergeClassThirdAddTime(new Date());
|
|
addTeachingManagement.setTeacherMergeClassThirdStatus(1);
|
|
addTeachingManagement.setOrgId(teachingManagementQuery.getOrgId());
|
|
addTeachingManagement.setUserId(teachingManagementQuery.getUserId());
|
|
teachingManagementDao.insert(addTeachingManagement);
|
|
}else {
|
|
TeachingManagement updataTeachingManagement = valuesByQueryNotWithPermission.get(0);
|
|
updataTeachingManagement.setTeacherMergeClassThirdStatus(management.getTeacherMergeClassThirdStatus());
|
|
teachingManagementDao.updateById(updataTeachingManagement);
|
|
}
|
|
}
|
|
String msg = "";
|
|
// TeachingManagement teachingManagement = teachingManagementQuery.pojo();
|
|
// teachingManagementDao.updateTemplateById(teachingManagement);
|
|
return msg;
|
|
}
|
|
|
|
public String updateGivenByIds(TeachingManagementQuery teachingManagementQuery) {
|
|
String msg = "";
|
|
if (StringUtils.isNotBlank(teachingManagementQuery.get_given())) {
|
|
boolean flag = teachingManagementDao.updateGivenByIds(teachingManagementQuery) > 0;
|
|
if (!flag) {
|
|
msg = "更新指定参数失败";
|
|
}
|
|
} else {
|
|
msg = "指定参数为空";
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
public List<TeachingManagement> getValues(Object paras) {
|
|
return sqlManager.select(SqlId.of("jlw.teachingManagement.getTeachingManagementValues"), TeachingManagement.class, paras);
|
|
}
|
|
|
|
public List<TeachingManagement> getValuesByQuery(TeachingManagementQuery teachingManagementQuery) {
|
|
return teachingManagementDao.getValuesByQuery(teachingManagementQuery);
|
|
}
|
|
|
|
public List<TeachingManagement> getValuesByQueryNotWithPermission(TeachingManagementQuery teachingManagementQuery) {
|
|
return teachingManagementDao.getValuesByQueryNotWithPermission(teachingManagementQuery);
|
|
}
|
|
|
|
public TeachingManagement getInfo(Long teacherMergeClassThirdId) {
|
|
TeachingManagementQuery teachingManagementQuery = new TeachingManagementQuery();
|
|
teachingManagementQuery.setTeacherMergeClassThirdId(teacherMergeClassThirdId);
|
|
teachingManagementQuery.setTeacherMergeClassThirdStatusPlural("1,2");//需要根据实际情况来
|
|
List<TeachingManagement> list = teachingManagementDao.getValuesByQuery(teachingManagementQuery);
|
|
if (null != list && list.size() > 0) {
|
|
return list.get(0);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public TeachingManagement getInfo(TeachingManagementQuery teachingManagementQuery) {
|
|
List<TeachingManagement> list = teachingManagementDao.getValuesByQuery(teachingManagementQuery);
|
|
if (null != list && list.size() > 0) {
|
|
return list.get(0);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
public JsonResult importTemplate(List<FileEntity> fileEntityList, List<Long> list, CoreUser coreUser) {
|
|
List<String[]> errMsg = new ArrayList<>();
|
|
String msg = "";
|
|
int count = 0;
|
|
Date date = new Date();
|
|
for (int item = 0; null != fileEntityList && item < fileEntityList.size(); item++) {
|
|
FileEntity fileEntity = fileEntityList.get(item);
|
|
if (null != fileEntity) {
|
|
File file = new File(fileEntity.getAbsoluteUrl());
|
|
if (file.exists() && file.isFile() && file.canRead() && ToolUtils.findInSet("xls,xlsx", fileEntity.getFormat())) {
|
|
Workbook wb = null;
|
|
InputStream is = null;
|
|
try {
|
|
is = new FileInputStream(fileEntity.getAbsoluteUrl());
|
|
if ("xls".equals(fileEntity.getFormat())) {
|
|
wb = new HSSFWorkbook(is);
|
|
} else if ("xlsx".equals(fileEntity.getFormat())) {
|
|
wb = new XSSFWorkbook(is);
|
|
}
|
|
} catch (FileNotFoundException e) {
|
|
e.printStackTrace();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
try {
|
|
if (null != is) {
|
|
is.close();
|
|
}
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
if (wb != null) {
|
|
//获取Sheet1
|
|
Sheet sheet = wb.getSheet("Sheet1");
|
|
//获取最大行数
|
|
int rowNum = sheet.getPhysicalNumberOfRows();
|
|
//获取第一行
|
|
Row firstRow = sheet.getRow(0);
|
|
//获取最大列数
|
|
int colNum = firstRow.getPhysicalNumberOfCells();
|
|
|
|
String columns[] = {
|
|
"院系信息",
|
|
"专业信息",
|
|
"教师信息",
|
|
"班级信息,多个逗号隔开",
|
|
"创建时间",
|
|
"状态 1正常 2删除",
|
|
};
|
|
|
|
Map<String, Integer> map = new HashMap<>();//获取需要的表头的列
|
|
|
|
//从第一列找到需要的表头
|
|
for (int i = 0; i < colNum; i++) {
|
|
String cellData = getCellFormatValue(firstRow.getCell(i));
|
|
for (int j = 0; j < columns.length; j++) {
|
|
if (columns[j].equals(cellData)) {
|
|
map.put(columns[j], i);
|
|
}
|
|
}
|
|
}
|
|
|
|
//验证所需要的表头是否全
|
|
Integer flag = 0;
|
|
for (int i = 0; i < columns.length; i++) {
|
|
if (null != map.get(columns[i])) {
|
|
flag++;
|
|
}
|
|
}
|
|
if (flag != columns.length) {
|
|
String str = " ";
|
|
for (int i = 0; i < columns.length; i++) {
|
|
str += "\"" + columns[i] + "\"" + (i == columns.length - 1 ? "" : ", ");
|
|
}
|
|
return JsonResult.failMessage("导入失败,表格表头应包含" + str);
|
|
}
|
|
|
|
for (int i = 1; i < rowNum; i++) {
|
|
Row row = sheet.getRow(i);
|
|
if (null == row) {
|
|
errMsg.add(new String[]{"第" + (i + 1) + "数据为空"});
|
|
continue;
|
|
}
|
|
|
|
String universityFacultyInfo = getCellFormatValue(row.getCell(map.get(columns[0])));
|
|
String universitySystemInfo = getCellFormatValue(row.getCell(map.get(columns[1])));
|
|
String teacherInfo = getCellFormatValue(row.getCell(map.get(columns[2])));
|
|
String schoolClassInfo = getCellFormatValue(row.getCell(map.get(columns[3])));
|
|
String teacherMergeClassThirdAddTime = getCellFormatValue(row.getCell(map.get(columns[4])));
|
|
String teacherMergeClassThirdStatus = getCellFormatValue(row.getCell(map.get(columns[5])));
|
|
//TODO 判断(如重复等复杂判断要额外写)
|
|
if (StringUtils.isBlank(universityFacultyInfo)) {
|
|
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[0]) + 1) + "列,第" + (i + 1) + "行院系信息为空"});
|
|
continue;
|
|
} else if (StringUtils.isBlank(universitySystemInfo)) {
|
|
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[1]) + 1) + "列,第" + (i + 1) + "行专业信息为空"});
|
|
continue;
|
|
} else if (StringUtils.isBlank(teacherInfo)) {
|
|
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[2]) + 1) + "列,第" + (i + 1) + "行教师信息为空"});
|
|
continue;
|
|
} else if (StringUtils.isBlank(schoolClassInfo)) {
|
|
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[3]) + 1) + "列,第" + (i + 1) + "行班级信息,多个逗号隔开为空"});
|
|
continue;
|
|
} else if (StringUtils.isBlank(teacherMergeClassThirdAddTime)) {
|
|
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[4]) + 1) + "列,第" + (i + 1) + "行创建时间为空"});
|
|
continue;
|
|
} else if (StringUtils.isBlank(teacherMergeClassThirdStatus)) {
|
|
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[5]) + 1) + "列,第" + (i + 1) + "行状态 1正常 2删除为空"});
|
|
continue;
|
|
} else {
|
|
//TODO 保存
|
|
TeachingManagement teachingManagement = new TeachingManagement();
|
|
teachingManagement.setUniversityFacultyInfo(universityFacultyInfo);
|
|
teachingManagement.setUniversitySystemInfo(universitySystemInfo);
|
|
teachingManagement.setTeacherInfo(teacherInfo);
|
|
teachingManagement.setSchoolClassInfo(schoolClassInfo);
|
|
teachingManagement.setTeacherMergeClassThirdAddTime(TimeTool.getTime(teacherMergeClassThirdAddTime));
|
|
teachingManagement.setTeacherMergeClassThirdStatus(Integer.parseInt(teacherMergeClassThirdStatus));
|
|
teachingManagement.setUserId(coreUser.getId());
|
|
teachingManagement.setOrgId(coreUser.getOrgId());
|
|
|
|
count++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
JsonResult jsonResult = new JsonResult();
|
|
jsonResult.setCode(count > 0 ? JsonReturnCode.SUCCESS.getCode() : JsonReturnCode.FAIL.getCode());
|
|
jsonResult.setData(errMsg);
|
|
jsonResult.setMsg((count > 0 ? "导入成功,共导入" + count + "条" : "导入失败") + (StringUtils.isNotBlank(msg) ? "<br>" + msg : ""));
|
|
return jsonResult;
|
|
}
|
|
|
|
public List<Map<String, Object>> getExcelValues(TeachingManagementQuery teachingManagementQuery) {
|
|
return teachingManagementDao.getExcelValues(teachingManagementQuery);
|
|
}
|
|
|
|
|
|
}
|