Commit 5034f015 by baochunxin

#G:电子教师档案工作量,老师考核

parent f23b67bc
...@@ -287,6 +287,14 @@ public class ExcelUtil<T> ...@@ -287,6 +287,14 @@ public class ExcelUtil<T>
return importExcel(is, 0); return importExcel(is, 0);
} }
public List<T> importExceltoRow(InputStream is,int rownum) throws Exception
{
return importExceltoRow(StringUtils.EMPTY,is, 0,rownum);
}
/** /**
* 对excel表单默认第一个索引名转换成list * 对excel表单默认第一个索引名转换成list
* *
...@@ -298,6 +306,8 @@ public class ExcelUtil<T> ...@@ -298,6 +306,8 @@ public class ExcelUtil<T>
return importExcelNdkh(is, 0); return importExcelNdkh(is, 0);
} }
/** /**
* 对excel表单默认第一个索引名转换成list * 对excel表单默认第一个索引名转换成list
* *
...@@ -322,6 +332,188 @@ public class ExcelUtil<T> ...@@ -322,6 +332,188 @@ public class ExcelUtil<T>
return importExcelNdkh(StringUtils.EMPTY, is, titleNum); return importExcelNdkh(StringUtils.EMPTY, is, titleNum);
} }
/**
* 对excel表单指定表格索引名转换成list
*
* @param sheetName 表格索引名
* @param titleNum 标题占用行数
* @param is 输入流
* @return 转换后集合
*/
public List<T> importExceltoRow(String sheetName, InputStream is, int titleNum,int rownum) throws Exception
{
this.type = Type.IMPORT;
this.wb = WorkbookFactory.create(is);
List<T> list = new ArrayList<T>();
// 如果指定sheet名,则取指定sheet中的内容 否则默认指向第1个sheet
Sheet sheet = StringUtils.isNotEmpty(sheetName) ? wb.getSheet(sheetName) : wb.getSheetAt(0);
if (sheet == null)
{
throw new IOException("文件sheet不存在");
}
boolean isXSSFWorkbook = !(wb instanceof HSSFWorkbook);
Map<String, PictureData> pictures;
if (isXSSFWorkbook)
{
pictures = getSheetPictures07((XSSFSheet) sheet, (XSSFWorkbook) wb);
}
else
{
pictures = getSheetPictures03((HSSFSheet) sheet, (HSSFWorkbook) wb);
}
// 获取最后一个非空行的行下标,比如总行数为n,则返回的为n-1
int rows = sheet.getLastRowNum();
if (rows > 0)
{
// 定义一个map用于存放excel列的序号和field.
Map<String, Integer> cellMap = new HashMap<String, Integer>();
// 获取表头
Row heard = sheet.getRow(titleNum);
for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++)
{
Cell cell = heard.getCell(i);
if (StringUtils.isNotNull(cell))
{
String value = this.getCellValue(heard, i).toString();
cellMap.put(value, i);
}
else
{
cellMap.put(null, i);
}
}
// 有数据时才处理 得到类的所有field.
List<Object[]> fields = this.getFields();
Map<Integer, Object[]> fieldsMap = new HashMap<Integer, Object[]>();
for (Object[] objects : fields)
{
Excel attr = (Excel) objects[1];
Integer column = cellMap.get(attr.name());
if (column != null)
{
fieldsMap.put(column, objects);
}
}
for (int i = titleNum + 1+rownum; i <= rows; i++)
{
// 从第2行开始取数据,默认第一行是表头.
Row row = sheet.getRow(i);
// 判断当前行是否是空行
if (isRowEmpty(row))
{
continue;
}
T entity = null;
for (Map.Entry<Integer, Object[]> entry : fieldsMap.entrySet())
{
Object val = this.getCellValue(row, entry.getKey());
// 如果不存在实例则新建.
entity = (entity == null ? clazz.newInstance() : entity);
// 从map中得到对应列的field.
Field field = (Field) entry.getValue()[0];
Excel attr = (Excel) entry.getValue()[1];
// 取得类型,并根据对象类型设置值.
Class<?> fieldType = field.getType();
if (String.class == fieldType)
{
String s = Convert.toStr(val);
if (StringUtils.endsWith(s, ".0"))
{
val = StringUtils.substringBefore(s, ".0");
}
else
{
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
if (StringUtils.isNotEmpty(dateFormat))
{
val = parseDateToStr(dateFormat, val);
}
else
{
val = Convert.toStr(val);
}
}
}
else if ((Integer.TYPE == fieldType || Integer.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val)))
{
val = Convert.toInt(val);
}
else if ((Long.TYPE == fieldType || Long.class == fieldType) && StringUtils.isNumeric(Convert.toStr(val)))
{
val = Convert.toLong(val);
}
else if (Double.TYPE == fieldType || Double.class == fieldType)
{
val = Convert.toDouble(val);
}
else if (Float.TYPE == fieldType || Float.class == fieldType)
{
val = Convert.toFloat(val);
}
else if (BigDecimal.class == fieldType)
{
val = Convert.toBigDecimal(val);
}
else if (Date.class == fieldType)
{
if (val instanceof String)
{
val = DateUtils.parseDate(val);
}
else if (val instanceof Double)
{
val = DateUtil.getJavaDate((Double) val);
}
}
else if (Boolean.TYPE == fieldType || Boolean.class == fieldType)
{
val = Convert.toBool(val, false);
}
if (StringUtils.isNotNull(fieldType))
{
String propertyName = field.getName();
if (StringUtils.isNotEmpty(attr.targetAttr()))
{
propertyName = field.getName() + "." + attr.targetAttr();
}
else if (StringUtils.isNotEmpty(attr.readConverterExp()))
{
val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
}
else if (StringUtils.isNotEmpty(attr.dictType()))
{
val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator());
}
else if (!attr.handler().equals(ExcelHandlerAdapter.class))
{
val = dataFormatHandlerAdapter(val, attr);
}
else if (ColumnType.IMAGE == attr.cellType() && StringUtils.isNotEmpty(pictures))
{
PictureData image = pictures.get(row.getRowNum() + "_" + entry.getKey());
if (image == null)
{
val = "";
}
else
{
byte[] data = image.getData();
val = FileUtils.writeImportBytes(data);
}
}
ReflectUtils.invokeSetter(entity, propertyName, val);
}
}
list.add(entity);
}
}
return list;
}
/** /**
* 对excel表单指定表格索引名转换成list * 对excel表单指定表格索引名转换成list
* *
......
...@@ -5,22 +5,15 @@ import com.ruoyi.common.core.controller.BaseController; ...@@ -5,22 +5,15 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import yangtz.cs.liu.campus.domain.schoolAnnualAssessment.SchoolAnnualAssessment; import yangtz.cs.liu.campus.domain.schoolAnnualAssessment.SchoolAnnualAssessment;
import yangtz.cs.liu.campus.domain.schoolAnnualAssessment.SchoolAnnualAssessmentExport;
import yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasiclnExport;
import yangtz.cs.liu.campus.service.schoolAnnualAssessment.ISchoolAnnualAssessmentService; import yangtz.cs.liu.campus.service.schoolAnnualAssessment.ISchoolAnnualAssessmentService;
import yangtz.cs.liu.campus.vo.auditorium.SchoolAuditoriumVo;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
......
package yangtz.cs.liu.campus.controller.schoolNewTeacherDzdn;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessment;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentReq;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentVo;
import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolAclassTeacherAssessmentService;
import javax.servlet.http.HttpServletResponse;
/**
* 班主任考核Controller
*
* @author ruoyi
* @date 2023-12-12
*/
@RestController
@RequestMapping("/assessment")
public class SchoolAclassTeacherAssessmentController extends BaseController
{
@Autowired
private ISchoolAclassTeacherAssessmentService schoolAclassTeacherAssessmentService;
private Logger log = LoggerFactory.getLogger(SchoolAworkloadController.class);
/**
* 查询班主任考核列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolAclassTeacherAssessmentReq req)
{
startPage();
List<SchoolAclassTeacherAssessmentVo> list = schoolAclassTeacherAssessmentService.selectSchoolAclassTeacherAssessmentList(req);
return getDataTable(list);
}
/**
* 获取班主任考核详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolAclassTeacherAssessmentService.selectSchoolAclassTeacherAssessmentById(id));
}
/**
* 新增班主任考核
*/
@Log(title = "班主任考核", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SchoolAclassTeacherAssessment schoolAclassTeacherAssessment)
{
return toAjax(schoolAclassTeacherAssessmentService.insertSchoolAclassTeacherAssessment(schoolAclassTeacherAssessment));
}
/**
* 修改班主任考核
*/
@Log(title = "班主任考核", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SchoolAclassTeacherAssessment schoolAclassTeacherAssessment)
{
return toAjax(schoolAclassTeacherAssessmentService.updateSchoolAclassTeacherAssessment(schoolAclassTeacherAssessment));
}
/**
* 删除班主任考核
*/
@Log(title = "班主任考核", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolAclassTeacherAssessmentService.deleteSchoolAclassTeacherAssessmentByIds(ids));
}
/**
* 末班下载
* @param response
* @throws Exception
*/
@PostMapping(value = "/download")
public void downloadFile(HttpServletResponse response) throws Exception {
// 以流的形式下载文件。
try {
//读取文件
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("file/班主任任职导入模板.xlsx");
InputStream fis = new BufferedInputStream(resourceAsStream);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.setHeader("Content-Disposition", "attachment;filename="+java.net.URLEncoder.encode("班主任导入模板.xlsx", "utf-8"));
//response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
response.addHeader("Content-Length", "" + buffer.length);
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException e) {
log.info(e.getMessage());
}
}
/**
* 导入
* @param file
* @return
* @throws Exception
*/
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file) throws Exception {
List<SchoolAclassTeacherAssessment> list = new ArrayList<>();
ExcelUtil<SchoolAclassTeacherAssessment> util = new ExcelUtil<SchoolAclassTeacherAssessment>(SchoolAclassTeacherAssessment.class);
List<SchoolAclassTeacherAssessment> detailList = util.importExceltoRow(file.getInputStream(),1);
//1.导入
boolean b = schoolAclassTeacherAssessmentService.saveBatch(detailList);
return AjaxResult.success();
}
/**
* 导出
* @param
* @return
*/
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolAclassTeacherAssessmentReq req ) throws Exception{
List<SchoolAclassTeacherAssessment> schoolAclassTeacherAssessmentVos = schoolAclassTeacherAssessmentService.selectSchoolList(req);
ExcelUtil<SchoolAclassTeacherAssessment> util = new ExcelUtil<>(SchoolAclassTeacherAssessment.class);
util.exportExcel(response, schoolAclassTeacherAssessmentVos, "老师考核");
}
}
package yangtz.cs.liu.campus.controller.schoolNewTeacherDzdn;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkload;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadExport;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadVo;
import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolAworkloadService;
/**
* 工作量信息Controller
*
* @author ruoyi
* @date 2023-12-11
*/
@RestController
@RequestMapping("/aworkload")
public class SchoolAworkloadController extends BaseController
{
@Autowired
private ISchoolAworkloadService schoolAworkloadService;
private Logger log = LoggerFactory.getLogger(SchoolAworkloadController.class);
/**
* 查询工作量信息列表
*/
@GetMapping("/list")
public TableDataInfo list(SchoolAworkload schoolAworkload)
{
startPage();
List<SchoolAworkloadVo> list = schoolAworkloadService.selectSchoolAworkloadList(schoolAworkload);
return getDataTable(list);
}
/**
* 获取工作量信息详细信息
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(schoolAworkloadService.selectSchoolAworkloadById(id));
}
/**
* 新增工作量信息
*/
@Log(title = "工作量信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SchoolAworkload schoolAworkload)
{
return toAjax(schoolAworkloadService.insertSchoolAworkload(schoolAworkload));
}
/**
* 修改工作量信息
*/
@Log(title = "工作量信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SchoolAworkload schoolAworkload)
{
return toAjax(schoolAworkloadService.updateSchoolAworkload(schoolAworkload));
}
/**
* 删除工作量信息
*/
@Log(title = "工作量信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(schoolAworkloadService.deleteSchoolAworkloadByIds(ids));
}
@PostMapping(value = "/download")
public void downloadFile(HttpServletResponse response) throws Exception {
// 以流的形式下载文件。
try {
//读取文件
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("file/工作量信息导入模板.xlsx");
InputStream fis = new BufferedInputStream(resourceAsStream);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.setHeader("Content-Disposition", "attachment;filename="+java.net.URLEncoder.encode("工作量信息导入模板.xlsx", "utf-8"));
//response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
response.addHeader("Content-Length", "" + buffer.length);
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException e) {
log.info(e.getMessage());
}
}
/**
* 导入
* @param file
* @return
* @throws Exception
*/
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file) throws Exception {
List<SchoolAworkload> list = new ArrayList<>();
ExcelUtil<SchoolAworkloadExport> util = new ExcelUtil<SchoolAworkloadExport>(SchoolAworkloadExport.class);
List<SchoolAworkloadExport> detailList = util.importExceltoRow(file.getInputStream(),1);
//1.导入
for (SchoolAworkloadExport date :detailList){
SchoolAworkload schoolAworkload = new SchoolAworkload();
BeanUtils.copyProperties(date,schoolAworkload);
list.add(schoolAworkload);
}
boolean b = schoolAworkloadService.saveBatch(list);
return AjaxResult.success(b);
}
/**
* 导出
* @param
* @return
*/
@PostMapping("/export")
public void export(HttpServletResponse response, SchoolAworkload schoolAworkload ) throws Exception{
List<SchoolAworkloadExport> schoolAworkloadVos = schoolAworkloadService.selectAworkloadList(schoolAworkload);
ExcelUtil<SchoolAworkloadExport> util = new ExcelUtil<>(SchoolAworkloadExport.class);
util.exportExcel(response, schoolAworkloadVos, "工作量内容");
}
}
package yangtz.cs.liu.campus.controller.teacherFiles; package yangtz.cs.liu.campus.controller.schoolNewTeacherDzdn;
import cn.hutool.extra.spring.SpringUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
...@@ -14,16 +13,12 @@ import org.springframework.beans.BeanUtils; ...@@ -14,16 +13,12 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import yangtz.cs.liu.campus.domain.organization.SchoolOrganizationInfo; import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformation;
import yangtz.cs.liu.campus.domain.schoolEquipment.SchoolEquipmentLedger; import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformationVo;
import yangtz.cs.liu.campus.domain.student.SchoolStudentEvaluate; import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasiclnExport;
import yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasicInformation;
import yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasiclnExport;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFiles;
import yangtz.cs.liu.campus.service.impl.teacherFiles.IdCardNumberUtils; import yangtz.cs.liu.campus.service.impl.teacherFiles.IdCardNumberUtils;
import yangtz.cs.liu.campus.service.teacherFiles.SchoolTeacherBasichlnformationService; import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.SchoolTeacherBasichlnformationService;
import yangtz.cs.liu.campus.vo.schoolClass.SchoolClassDrVo;
import yangtz.cs.liu.wechat.controller.api.WxApiController;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
...@@ -48,9 +43,9 @@ public class SchoolTeacherBasiclnformationController extends BaseController { ...@@ -48,9 +43,9 @@ public class SchoolTeacherBasiclnformationController extends BaseController {
* @return * @return
*/ */
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SchoolTeacherBasicInformation information) throws Exception{ public TableDataInfo list(SchoolTeacherBasicInformationVo information) throws Exception{
startPage(); startPage();
List<SchoolTeacherBasicInformation> list = basichlnformationService.list(information); List<SchoolTeacherBasicInformationVo> list = basichlnformationService.list(information);
return getDataTable(list); return getDataTable(list);
} }
...@@ -59,7 +54,7 @@ public class SchoolTeacherBasiclnformationController extends BaseController { ...@@ -59,7 +54,7 @@ public class SchoolTeacherBasiclnformationController extends BaseController {
*/ */
@GetMapping("/{id}") @GetMapping("/{id}")
public AjaxResult getById(@PathVariable("id") Long id ) throws Exception{ public AjaxResult getById(@PathVariable("id") Long id ) throws Exception{
return AjaxResult.success(basichlnformationService.getById(id)); return AjaxResult.success(basichlnformationService.getByIds(id));
} }
/** /**
...@@ -87,6 +82,7 @@ public class SchoolTeacherBasiclnformationController extends BaseController { ...@@ -87,6 +82,7 @@ public class SchoolTeacherBasiclnformationController extends BaseController {
*/ */
@PutMapping("/update") @PutMapping("/update")
public AjaxResult update(@RequestBody SchoolTeacherBasicInformation information){ public AjaxResult update(@RequestBody SchoolTeacherBasicInformation information){
return AjaxResult.success(basichlnformationService.updateById(information)); return AjaxResult.success(basichlnformationService.updateById(information));
} }
...@@ -160,8 +156,8 @@ public class SchoolTeacherBasiclnformationController extends BaseController { ...@@ -160,8 +156,8 @@ public class SchoolTeacherBasiclnformationController extends BaseController {
* @param * @param
* @return * @return
*/ */
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response,@RequestBody SchoolTeacherBasiclnExport export ) throws Exception{ public void export(HttpServletResponse response, SchoolTeacherBasiclnExport export ) throws Exception{
List<SchoolTeacherBasicInformation> list = new ArrayList<>(); List<SchoolTeacherBasicInformation> list = new ArrayList<>();
List<SchoolTeacherBasiclnExport> exportList = new ArrayList<>(); List<SchoolTeacherBasiclnExport> exportList = new ArrayList<>();
ExcelUtil<SchoolTeacherBasiclnExport> util = new ExcelUtil<>(SchoolTeacherBasiclnExport.class); ExcelUtil<SchoolTeacherBasiclnExport> util = new ExcelUtil<>(SchoolTeacherBasiclnExport.class);
...@@ -217,6 +213,7 @@ public class SchoolTeacherBasiclnformationController extends BaseController { ...@@ -217,6 +213,7 @@ public class SchoolTeacherBasiclnformationController extends BaseController {
.or() .or()
.like(SchoolTeacherBasicInformation::getLastDegree,export.getFirstDegree())); .like(SchoolTeacherBasicInformation::getLastDegree,export.getFirstDegree()));
} }
wrapper.eq(SchoolTeacherBasicInformation::getDelFlag,"0");
//查询出来结果复制 //查询出来结果复制
List<SchoolTeacherBasicInformation> list1 = basichlnformationService.list(wrapper); List<SchoolTeacherBasicInformation> list1 = basichlnformationService.list(wrapper);
list1.forEach(date->{ list1.forEach(date->{
...@@ -227,4 +224,14 @@ public class SchoolTeacherBasiclnformationController extends BaseController { ...@@ -227,4 +224,14 @@ public class SchoolTeacherBasiclnformationController extends BaseController {
util.exportExcel(response, exportList, "教师基本信息"); util.exportExcel(response, exportList, "教师基本信息");
} }
} }
/*
* 批量导入老师照片
* */
@PostMapping("/importTeacherPicture")
public AjaxResult importTeacherPicture(MultipartFile file){
return AjaxResult.success(basichlnformationService.importTeacherPicture(file));
}
} }
...@@ -40,7 +40,6 @@ public class CurriclaStudentVo { ...@@ -40,7 +40,6 @@ public class CurriclaStudentVo {
/** 结束时间 */ /** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime; private Date endTime;
/** /**
* 是否超过选课时间: true超过选课时间,false没有 * 是否超过选课时间: true超过选课时间,false没有
*/ */
......
package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 班主任考核对象 school_aclass_teacher_assessment
*
* @author ruoyi
* @date 2023-12-12
*/
@Data
public class SchoolAclassTeacherAssessment extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键id */
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/** 学期(下拉框) */
@Excel(name = "学期",dictType = "semester_jsdzda")
private String semester;
/** 届别(下拉框) */
@Excel(name = "届别",dictType = "rankda")
private String year;
/** 学年(下拉框) */
@Excel(name = "学年",dictType = "yearda")
private String schoolYear;
/** 年级(下拉框) */
@Excel(name = "年级",dictType = "grade_da")
private String grade;
/** 班级(下拉框) */
@Excel(name = "班级",readConverterExp="1=1,2=2,3=3,4=4,5=5,6=6,7=7,8=8,9=9,10=10,11=11,12=12,13=13,14=14,15=15,16=16,17=17,18=18,19=19,20=20,21=21,22=22,23=23,24=24,25=25,26=26,27=27,28=28,29=29,30=30,31=31,32=32,33=33,34=34,35=35,36=36,37=37,38=38,39=39,40=40")
private String className;
/** 教师姓名 */
@Excel(name = "教师姓名")
private String teacherName;
/** 身份证号 */
@Excel(name = "身份证号")
private String idCard;
/** 德育考核成绩 */
@Excel(name = "德育考核成绩")
private BigDecimal moralEduCheckAchievement;
/** 智育考核成绩 */
@Excel(name = "智育考核成绩")
private BigDecimal intellEduCheckAchievement;
/** 总考核成绩 */
@Excel(name = "总考核成绩")
private BigDecimal totalCheckAchievement;
/** 班级类型(下拉框) */
@Excel(name = "班级类型",dictType = "class_type")
private String classType;
/** 学科(下拉框) */
@Excel(name = "学科",dictType = "teaching_subjects")
private String sub;
/** 备注*/
@Excel(name = "备注")
private String remark;
/** 删除状态 */
private String delFlag;
}
package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
/**
* 请求对象
*
* @author ruoyi
* @date 2023-12-12
*/
@Data
public class SchoolAclassTeacherAssessmentReq extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** 教师姓名 */
private String teacherName;
/** 学年(下拉框) */
private String schoolYear;
/** 届别(下拉框) */
private String year;
/** 学期(下拉框) */
private String semester;
/** 年级(下拉框) */
private String grade;
/** 学科(下拉框) */
private String sub;
/** 班级(下拉框) */
private String className;
/** 班级类型(下拉框) */
private String classType;
/** 德育考核成绩 =*/
private String moralEduCheckAchievement;
//大于
private BigDecimal moralEduCheckAchievementgt;
//大于等于
private BigDecimal moralEduCheckAchievementgtd;
//小于
private BigDecimal moralEduCheckAchievementlt;
//小于等于
private BigDecimal moralEduCheckAchievementltd;
/** 智育考核成绩= */
private String intellEduCheckAchievement;
//大于
private BigDecimal intellEduCheckAchievementgt;
//大于等于
private BigDecimal intellEduCheckAchievementgtd;
//小于
private BigDecimal intellEduCheckAchievementlt;
//小于等于
private BigDecimal intellEduCheckAchievementltd;
/** 删除状态 */
private String delFlag;
}
package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
/**
* 班主任考核对象 school_aclass_teacher_assessment
*
* @author ruoyi
* @date 2023-12-12
*/
@Data
public class SchoolAclassTeacherAssessmentVo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键id */
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/** 学期(下拉框) */
private String semester;
/** 届别(下拉框) */
private String year;
/** 学年(下拉框) */
private String schoolYear;
/** 年级(下拉框) */
private String grade;
/** 班级(下拉框) */
@Excel(name = "班级",readConverterExp="1=1,2=2,3=3,4=4,5=5,6=6,7=7,8=8,9=9,10=10,11=11,12=12,13=13,14=14,15=15,16=16,17=17,18=18,19=19,20=20,21=21,22=22,23=23,24=24,25=25,26=26,27=27,28=28,29=29,30=30,31=31,32=32,33=33,34=34,35=35,36=36,37=37,38=38,39=39,40=40")
private String className;
/** 班级类型(下拉框) */
private String classType;
/** 教师姓名 */
private String teacherName;
/** 学科(下拉框) */
private String sub;
/** 德育考核成绩 */
private BigDecimal moralEduCheckAchievement;
/** 智育考核成绩 */
private BigDecimal intellEduCheckAchievement;
/** 删除状态 */
private String delFlag;
}
package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 工作量信息对象 school_aworkload
*
* @author ruoyi
* @date 2023-12-11
*/
@Data
public class SchoolAworkload extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键id */
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/** 学年(下拉框) */
private String schoolYear;
/** 学期(下拉框) */
private String semester;
/** 届别(下拉框) */
private String year;
/** 年级(下拉框) */
private String grade;
/** 姓名 */
private String name;
/** 学科(下拉框) */
private String sub;
/** 身份证号 */
private String idCard;
/** 聘任岗位(下拉框) */
private String appointmentPost;
/** 聘任职务 */
private String appointmentPosition;
/** 聘任情况(下拉框) */
private String appointmentSituation;
/** 班级 */
private String className;
/** 班级类型 */
private String classType;
/** 早读 */
private Long earlyReading;
/** 正课 */
private Long requiredCourses;
/** 晚自习 */
private Long eveningSelfStudy;
/** 证明人id */
private Long userId;
/** 证明人 */
private String userName;
/** 删除状态 */
private String delFlag;
/**合计*/
private Long amountTo;
}
package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
/**
* 工作量信息对象 school_aworkload
*
* @author ruoyi
* @date 2023-12-11
*/
@Data
public class SchoolAworkloadExport extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** 学年(下拉框) */
@Excel(name = "学年",dictType="yearda")
private String schoolYear;
/** 学期(下拉框) */
@Excel(name = "学期",dictType="semester_jsdzda")
private String semester;
/** 届别(下拉框) */
@Excel(name = "届别",dictType = "rankda")
private String year;
/** 年级(下拉框) */
@Excel(name = "年级",dictType="grade_da")
private String grade;
/** 姓名 */
@Excel(name = "姓名")
private String name;
/** 学科(下拉框) */
@Excel(name = "学科",dictType = "teaching_subjects")
private String sub;
/** 身份证号 */
@Excel(name = "身份证号")
private String idCard;
/** 聘任岗位(下拉框) */
@Excel(name = "聘任岗位",dictType = "appointment_positions")
private String appointmentPost;
/** 聘任职务 */
@Excel(name = "聘任职务")
private String appointmentPosition;
/** 聘任情况(下拉框) */
@Excel(name = "聘任情况",dictType = "appointment_situation")
private String appointmentSituation;
/** 班级 */
@Excel(name = "班级",prompt="多个,中间用英文“,”间隔")
private String className;
/** 班级类型 */
@Excel(name = "班级类型")
private String classType;
/** 早读 */
@Excel(name = "早读")
private Long earlyReading;
/** 正课 */
@Excel(name = "正课")
private Long requiredCourses;
/** 晚自习 */
@Excel(name = "晚自习")
private Long eveningSelfStudy;
/**合计*/
@Excel(name = "合计")
private Long amountTo;
/** 证明人id */
private Long userId;
/** 证明人 */
@Excel(name = "证明人")
private String userName;
@Excel(name = "备注")
private String remark;
/** 删除状态 */
private String delFlag;
}
package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
/**
* 工作量信息对象 school_aworkload
*
* @author ruoyi
* @date 2023-12-11
*/
@Data
public class SchoolAworkloadVo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** 学年(下拉框) */
private String schoolYear;
/** 学期(下拉框) */
private String semester;
/** 届别(下拉框) */
private String year;
/** 年级(下拉框) */
private String grade;
/** 姓名 */
private String name;
/** 学科(下拉框) */
private String sub;
/** 聘任岗位(下拉框) */
private String appointmentPost;
/** 聘任职务 */
private String appointmentPosition;
/** 聘任情况(下拉框) */
private String appointmentSituation;
/** 班级 */
private String className;
/** 班级类型 */
private String classType;
/** 早读 */
private Long earlyReading;
/** 正课 */
private Long requiredCourses;
/** 晚自习 */
private Long eveningSelfStudy;
/**合计*/
private Long amountTo;
/** 证明人id */
private Long userId;
/** 证明人 */
private String userName;
/** 删除状态 */
private String delFlag;
}
package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.core.domain.OurBaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NonNull;
import java.util.Date;
/**
* 教师电子档案 老师基础信息
*/
@Data
public class SchoolTeacherBasicInformation extends BaseEntity {
// @Excel(name = "年级",combo = {"一年级","二年级","三年级"},readConverterExp = "1=一年级,2=二年级,3=三年级")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 姓名
*/
private String name;
/**
* 身份证号
*/
private String idCard;
/**
* 年龄 。动态查询
*/
// private Integer age;
/**
* 性别
*/
private String sex;
/**
* 档案出生日期 (年月)
*/
@JsonFormat(pattern = "yyyy-MM")
private Date fileBirthDate;
/**
* 档案年龄
*/
// private Integer fileAge;
/**
* 出生年月
*/
private String birthDate;
/**
* 籍贯
*/
private String hometown;
/**
* 民族
*/
private String nation;
/**
* 政治面貌(1中共党员、2共青团员、3群众、4民主党派成员、5无党派人士)
*/
private String politicalLandscape;
/**
* 入党时间(年月)
*/
@JsonFormat(pattern = "yyyy-MM")
private Date partyMembershipTime;
/**
* 任教学科(1语文、2数学、3英语、4物理、5化学、6生物、7政治、8历史、9地理、10音乐、11体育、12美术、13技术、14心理、15书法)
*/
private String teachingSubject;
/**
* 现职称(1无、2初级、3中级、4副高、5正高)
*/
private String currentProfessionalTitle;
/**
* 现职称取得资格时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date currentProfessionalTitleTime;
/**
* 现聘职称(1无、2初级、3中级、4副高、5正高)
*/
private String currentHiringProfessionalTitle;
/**
* 现职称聘任时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date currentHiringProfessionalTitleTime;
/**
* 现聘岗位(1专业技术岗、2管理岗、3工勤岗)
*/
private String currentPosition;
/**
* 现岗位等级(见习(三个现聘岗位都有见习这个等级 下拉框联动)、专业技术三级-专业技术十三级、
* 管理五级-管理九级、技术工二级-技术工五级)
*/
private String currentJobLevel;
/**
* 现岗位等级聘任时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date currentJobLevelAppointmentTime;
/**
* 职务
*/
private String duties;
/**
* 教师资格种类
*/
private String teacherQualificationType;
/**
* 教师资格证号码
*/
private String teacherQualificationCertificateNum;
/**
* 参加工作时间
*/
private String workingHours;
/**
* 到二中工作时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date toSecondMiddleSchoolTime;
/**
* 二中工作年龄 动态查询
*/
// private Integer toSecondAge;
/**
* 教龄起算时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lengthOfTeacherTime;
/**
* 工龄起算时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lengthOfServiceTime;
/**
* 工龄年限
*/
// private Integer seniority;
/**
* 在岗情况(1教学岗位、2教辅岗、3后勤岗、4管理岗、5其他岗、6退休、7行政、8内退岗、9待退岗)
*/
private String onDutySituation;
/**
* 在编情况 1在编 2合同制
*/
private String currentSituation;
/**
* 毕业院校1
*/
private String graduationInstitution1;
/**
* 专业1
*/
private String major1;
/**
* 毕业时间1 年月
*/
@JsonFormat(pattern = "yyyy-MM")
private Date graduationTime1;
/**
* 毕业院校2
*/
private String graduationInstitution2;
/**
* 专业2
*/
private String major2;
/**
* 毕业时间2年月
*/
@JsonFormat(pattern = "yyyy-MM")
private Date graduationTime2;
/**
* 毕业院校3
*/
private String graduationInstitution3;
/**
* 专业3
*/
private String major3;
/**
* 毕业时间3 年月
*/
@JsonFormat(pattern = "yyyy-MM")
private Date graduationTime3;
/**
* 第一学历
*/
private String firstDegree;
/**
* 最后学历
*/
private String lastDegree;
/**
* 学位
*/
private String degree;
/**
* 工作经历
*/
private String workExperience;
/**
* 照片名称
*/
private String photoName;
/**
* 照片地址
*/
private String photoUrl;
/**
* 钉钉手机号
*/
private String ddPhone;
//
// /**
// * 出生日期临时查询参数
// */
// private String birthDategt;
// private String birthDategtd;
// private String birthDatelt;
// private String birthDateltd;
//
// /**
// * 参加工作临时查询参数
// */
// private String workingHoursgt;
// private String workingHoursgtd;
// private String workingHourslt;
// private String workingHoursltd;
}
package yangtz.cs.liu.campus.domain.teacherFiles; package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.core.domain.OurBaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.NonNull;
import java.util.Date; import java.util.Date;
...@@ -15,7 +12,7 @@ import java.util.Date; ...@@ -15,7 +12,7 @@ import java.util.Date;
* 教师电子档案 老师基础信息 * 教师电子档案 老师基础信息
*/ */
@Data @Data
public class SchoolTeacherBasicInformation extends BaseEntity { public class SchoolTeacherBasicInformationVo extends BaseEntity {
// @Excel(name = "年级",combo = {"一年级","二年级","三年级"},readConverterExp = "1=一年级,2=二年级,3=三年级") // @Excel(name = "年级",combo = {"一年级","二年级","三年级"},readConverterExp = "1=一年级,2=二年级,3=三年级")
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
......
package yangtz.cs.liu.campus.domain.teacherFiles; package yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import lombok.Data; import lombok.Data;
......
package yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessment;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentReq;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentVo;
import java.util.List;
/**
* 班主任考核Mapper接口
*
* @author ruoyi
* @date 2023-12-12
*/
public interface SchoolAclassTeacherAssessmentMapper extends BaseMapper<SchoolAclassTeacherAssessment>
{
/**
* 查询班主任考核
*
* @param id 班主任考核主键
* @return 班主任考核
*/
public SchoolAclassTeacherAssessment selectSchoolAclassTeacherAssessmentById(Long id);
/**
* 查询班主任考核列表
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 班主任考核集合
*/
public List<SchoolAclassTeacherAssessmentVo> selectSchoolAclassTeacherAssessmentList(SchoolAclassTeacherAssessmentReq req);
public List<SchoolAclassTeacherAssessment> selectSchoolList(SchoolAclassTeacherAssessmentReq req);
/**
* 新增班主任考核
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 结果
*/
public int insertSchoolAclassTeacherAssessment(SchoolAclassTeacherAssessment schoolAclassTeacherAssessment);
/**
* 修改班主任考核
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 结果
*/
public int updateSchoolAclassTeacherAssessment(SchoolAclassTeacherAssessment schoolAclassTeacherAssessment);
/**
* 删除班主任考核
*
* @param id 班主任考核主键
* @return 结果
*/
public int deleteSchoolAclassTeacherAssessmentById(Long id);
/**
* 批量删除班主任考核
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolAclassTeacherAssessmentByIds(Long[] ids);
}
package yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkload;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadExport;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadVo;
import java.util.List;
/**
* 工作量信息Mapper接口
*
* @author ruoyi
* @date 2023-12-11
*/
public interface SchoolAworkloadMapper extends BaseMapper<SchoolAworkload>
{
/**
* 查询工作量信息
*
* @param id 工作量信息主键
* @return 工作量信息
*/
public SchoolAworkload selectSchoolAworkloadById(Long id);
/**
* 查询工作量信息列表
*
* @param schoolAworkload 工作量信息
* @return 工作量信息集合
*/
public List<SchoolAworkloadVo> selectSchoolAworkloadList(SchoolAworkload schoolAworkload);
public List<SchoolAworkloadExport> selectAworkloadList(SchoolAworkload schoolAworkload);
/**
* 新增工作量信息
*
* @param schoolAworkload 工作量信息
* @return 结果
*/
public int insertSchoolAworkload(SchoolAworkload schoolAworkload);
/**
* 修改工作量信息
*
* @param schoolAworkload 工作量信息
* @return 结果
*/
public int updateSchoolAworkload(SchoolAworkload schoolAworkload);
/**
* 删除工作量信息
*
* @param id 工作量信息主键
* @return 结果
*/
public int deleteSchoolAworkloadById(Long id);
/**
* 批量删除工作量信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteSchoolAworkloadByIds(Long[] ids);
}
package yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformation;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformationVo;
import java.util.List;
public interface SchoolTeacherBasichlnformationMapper extends BaseMapper<SchoolTeacherBasicInformation> {
List<SchoolTeacherBasicInformationVo> list(SchoolTeacherBasicInformationVo information);
SchoolTeacherBasicInformationVo selectById(Long id);
int updateInformationById(SchoolTeacherBasicInformation information);
}
package yangtz.cs.liu.campus.mapper.teacherFiles;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasicInformation;
import java.util.List;
public interface SchoolTeacherBasichlnformationMapper extends BaseMapper<SchoolTeacherBasicInformation> {
List<SchoolTeacherBasicInformation> list(SchoolTeacherBasicInformation information);
SchoolTeacherBasicInformation selectById(Long id);
}
package yangtz.cs.liu.campus.service.impl.schoolAnnualAssessment; package yangtz.cs.liu.campus.service.impl.schoolAnnualAssessment;
import cn.hutool.core.io.resource.ClassPathResource;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
...@@ -12,15 +11,12 @@ import org.slf4j.Logger; ...@@ -12,15 +11,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import yangtz.cs.liu.campus.controller.teacherFiles.SchoolTeacherBasiclnformationController;
import yangtz.cs.liu.campus.domain.schoolAnnualAssessment.SchoolAnnualAssessment; import yangtz.cs.liu.campus.domain.schoolAnnualAssessment.SchoolAnnualAssessment;
import yangtz.cs.liu.campus.mapper.schoolAnnualAssessment.SchoolAnnualAssessmentMapper; import yangtz.cs.liu.campus.mapper.schoolAnnualAssessment.SchoolAnnualAssessmentMapper;
import yangtz.cs.liu.campus.service.schoolAnnualAssessment.ISchoolAnnualAssessmentService; import yangtz.cs.liu.campus.service.schoolAnnualAssessment.ISchoolAnnualAssessmentService;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.net.URLEncoder;
import java.util.List; import java.util.List;
/** /**
......
package yangtz.cs.liu.campus.service.impl.schoolNewTeacherDzdn;
import java.math.BigDecimal;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessment;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentReq;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentVo;
import yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentMapper;
import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolAclassTeacherAssessmentService;
/**
* 班主任考核Service业务层处理
*
* @author ruoyi
* @date 2023-12-12
*/
@Service
public class SchoolAclassTeacherAssessmentServiceImpl extends ServiceImpl<SchoolAclassTeacherAssessmentMapper, SchoolAclassTeacherAssessment> implements ISchoolAclassTeacherAssessmentService
{
@Autowired
private SchoolAclassTeacherAssessmentMapper schoolAclassTeacherAssessmentMapper;
/**
* 查询班主任考核
*
* @param id 班主任考核主键
* @return 班主任考核
*/
@Override
public SchoolAclassTeacherAssessment selectSchoolAclassTeacherAssessmentById(Long id)
{
return schoolAclassTeacherAssessmentMapper.selectSchoolAclassTeacherAssessmentById(id);
}
/**
* 查询班主任考核列表
*
* @param
* @return 班主任考核
*/
@Override
public List<SchoolAclassTeacherAssessmentVo> selectSchoolAclassTeacherAssessmentList(SchoolAclassTeacherAssessmentReq req)
{
//查询条件状
// 智育考核成绩
String intellEduCheckAchievement = req.getIntellEduCheckAchievement();
if (StringUtils.isNotEmpty(intellEduCheckAchievement)){
this.symbolConversion(req);
}
//德育考核成绩
String moralEduCheckAchievement = req.getMoralEduCheckAchievement();
if (StringUtils.isNotEmpty(moralEduCheckAchievement)){
this.wordDateConversion(req);
}
return schoolAclassTeacherAssessmentMapper.selectSchoolAclassTeacherAssessmentList(req);
}
@Override
public List<SchoolAclassTeacherAssessment> selectSchoolList(SchoolAclassTeacherAssessmentReq req)
{
//查询条件状
// 智育考核成绩
String intellEduCheckAchievement = req.getIntellEduCheckAchievement();
if (StringUtils.isNotEmpty(intellEduCheckAchievement)){
this.symbolConversion(req);
}
//德育考核成绩
String moralEduCheckAchievement = req.getMoralEduCheckAchievement();
if (StringUtils.isNotEmpty(moralEduCheckAchievement)){
this.wordDateConversion(req);
}
return schoolAclassTeacherAssessmentMapper.selectSchoolList(req);
}
/**
* 新增班主任考核
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 结果
*/
@Override
public int insertSchoolAclassTeacherAssessment(SchoolAclassTeacherAssessment schoolAclassTeacherAssessment)
{
schoolAclassTeacherAssessment.setCreateTime(DateUtils.getNowDate());
return schoolAclassTeacherAssessmentMapper.insertSchoolAclassTeacherAssessment(schoolAclassTeacherAssessment);
}
/**
* 修改班主任考核
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 结果
*/
@Override
public int updateSchoolAclassTeacherAssessment(SchoolAclassTeacherAssessment schoolAclassTeacherAssessment)
{
schoolAclassTeacherAssessment.setUpdateTime(DateUtils.getNowDate());
return schoolAclassTeacherAssessmentMapper.updateSchoolAclassTeacherAssessment(schoolAclassTeacherAssessment);
}
/**
* 批量删除班主任考核
*
* @param ids 需要删除的班主任考核主键
* @return 结果
*/
@Override
public int deleteSchoolAclassTeacherAssessmentByIds(Long[] ids)
{
return schoolAclassTeacherAssessmentMapper.deleteSchoolAclassTeacherAssessmentByIds(ids);
}
/**
* 删除班主任考核信息
*
* @param id 班主任考核主键
* @return 结果
*/
@Override
public int deleteSchoolAclassTeacherAssessmentById(Long id)
{
return schoolAclassTeacherAssessmentMapper.deleteSchoolAclassTeacherAssessmentById(id);
}
/**
* 智育考核成绩
* @param
*/
private void symbolConversion(SchoolAclassTeacherAssessmentReq req){
//智育考核成绩
String intellEduCheckAchievement = req.getIntellEduCheckAchievement();
if (intellEduCheckAchievement.contains(">=")) {
String substring = intellEduCheckAchievement.substring(2, intellEduCheckAchievement.length());
req.setIntellEduCheckAchievementgtd(new BigDecimal(substring));
req.setIntellEduCheckAchievement(null);
} else if (intellEduCheckAchievement.contains("<=")) {
String substring = intellEduCheckAchievement.substring(2, intellEduCheckAchievement.length());
req.setIntellEduCheckAchievementltd(new BigDecimal(substring));
req.setIntellEduCheckAchievement(null);
} else if (intellEduCheckAchievement.contains("<")) {
String substring = intellEduCheckAchievement.substring(1, intellEduCheckAchievement.length());
req.setIntellEduCheckAchievementlt(new BigDecimal(substring));
req.setIntellEduCheckAchievement(null);
} else if (intellEduCheckAchievement.contains(">")) {
String substring = intellEduCheckAchievement.substring(1, intellEduCheckAchievement.length());
req.setIntellEduCheckAchievementgt(new BigDecimal(substring));
req.setIntellEduCheckAchievement(null);
} else if (intellEduCheckAchievement.contains("=")) {
String substring = intellEduCheckAchievement.substring(1, intellEduCheckAchievement.length());
req.setIntellEduCheckAchievement(substring);
}
}
/**
* 参加工作调整
*/
private void wordDateConversion(SchoolAclassTeacherAssessmentReq req) {
String moralEduCheckAchievement = req.getMoralEduCheckAchievement();
if (moralEduCheckAchievement.contains(">=")) {
String substring = moralEduCheckAchievement.substring(2, moralEduCheckAchievement.length());
req.setMoralEduCheckAchievementgtd(new BigDecimal(substring));
req.setMoralEduCheckAchievement(null);
} else if (moralEduCheckAchievement.contains("<=")) {
String substring = moralEduCheckAchievement.substring(2, moralEduCheckAchievement.length());
req.setMoralEduCheckAchievementltd(new BigDecimal(substring));
req.setMoralEduCheckAchievement(null);
} else if (moralEduCheckAchievement.contains("<")) {
String substring = moralEduCheckAchievement.substring(1, moralEduCheckAchievement.length());
req.setMoralEduCheckAchievementlt(new BigDecimal(substring));
req.setMoralEduCheckAchievement(null);
} else if (moralEduCheckAchievement.contains(">")) {
String substring = moralEduCheckAchievement.substring(1, moralEduCheckAchievement.length());
req.setMoralEduCheckAchievementgt(new BigDecimal(substring));
req.setMoralEduCheckAchievement(null);
} else if (moralEduCheckAchievement.contains("=")) {
String substring = moralEduCheckAchievement.substring(1, moralEduCheckAchievement.length());
req.setMoralEduCheckAchievement(substring);
}
}
}
package yangtz.cs.liu.campus.service.impl.schoolNewTeacherDzdn;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkload;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadExport;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadVo;
import yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolAworkloadMapper;
import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolAworkloadService;
/**
* 工作量信息Service业务层处理
*
* @author ruoyi
* @date 2023-12-11
*/
@Service
public class SchoolAworkloadServiceImpl extends ServiceImpl<SchoolAworkloadMapper, SchoolAworkload> implements ISchoolAworkloadService
{
@Autowired
private SchoolAworkloadMapper schoolAworkloadMapper;
/**
* 查询工作量信息
*
* @param id 工作量信息主键
* @return 工作量信息
*/
@Override
public SchoolAworkload selectSchoolAworkloadById(Long id)
{
SchoolAworkload date = schoolAworkloadMapper.selectSchoolAworkloadById(id);
date.setAmountTo(date.getEarlyReading()+date.getRequiredCourses()+date.getEveningSelfStudy());
return date;
}
/**
* 查询工作量信息列表
*
* @param schoolAworkload 工作量信息
* @return 工作量信息
*/
@Override
public List<SchoolAworkloadVo> selectSchoolAworkloadList(SchoolAworkload schoolAworkload)
{
List<SchoolAworkloadVo> schoolAworkloadVos = schoolAworkloadMapper.selectSchoolAworkloadList(schoolAworkload);
//计算合计
for (SchoolAworkloadVo date : schoolAworkloadVos){
date.setAmountTo(date.getEarlyReading()+date.getRequiredCourses()+date.getEveningSelfStudy());
}
return schoolAworkloadVos;
}
@Override
public List<SchoolAworkloadExport> selectAworkloadList(SchoolAworkload schoolAworkload)
{
List<SchoolAworkloadExport> schoolAworkloadVos = schoolAworkloadMapper.selectAworkloadList(schoolAworkload);
//计算合计
for (SchoolAworkloadExport date : schoolAworkloadVos){
date.setAmountTo(date.getEarlyReading()+date.getRequiredCourses()+date.getEveningSelfStudy());
}
return schoolAworkloadVos;
}
/**
* 新增工作量信息
*
* @param schoolAworkload 工作量信息
* @return 结果
*/
@Override
public int insertSchoolAworkload(SchoolAworkload schoolAworkload)
{
schoolAworkload.setCreateTime(DateUtils.getNowDate());
return schoolAworkloadMapper.insertSchoolAworkload(schoolAworkload);
}
/**
* 修改工作量信息
*
* @param schoolAworkload 工作量信息
* @return 结果
*/
@Override
public int updateSchoolAworkload(SchoolAworkload schoolAworkload)
{
schoolAworkload.setUpdateTime(DateUtils.getNowDate());
return schoolAworkloadMapper.updateSchoolAworkload(schoolAworkload);
}
/**
* 批量删除工作量信息
*
* @param ids 需要删除的工作量信息主键
* @return 结果
*/
@Override
public int deleteSchoolAworkloadByIds(Long[] ids)
{
return schoolAworkloadMapper.deleteSchoolAworkloadByIds(ids);
}
/**
* 删除工作量信息信息
*
* @param id 工作量信息主键
* @return 结果
*/
@Override
public int deleteSchoolAworkloadById(Long id)
{
return schoolAworkloadMapper.deleteSchoolAworkloadById(id);
}
}
package yangtz.cs.liu.campus.service.impl.teacherFiles; package yangtz.cs.liu.campus.service.impl.schoolNewTeacherDzdn;
import cn.hutool.poi.excel.ExcelReader; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import cn.hutool.poi.excel.ExcelUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.UnPackeUtil;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.MimeTypeUtils;
import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.mapper.SysDictDataMapper;
import org.apache.poi.ss.usermodel.Cell; import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasicInformation; import org.springframework.web.multipart.commons.CommonsMultipartFile;
import yangtz.cs.liu.campus.mapper.teacherFiles.SchoolTeacherBasichlnformationMapper; import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformation;
import yangtz.cs.liu.campus.service.teacherFiles.SchoolTeacherBasichlnformationService; import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformationVo;
import yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolTeacherBasichlnformationMapper;
import java.io.IOException; import yangtz.cs.liu.campus.service.impl.teacherFiles.IdCardNumberUtils;
import java.io.InputStream; import yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.SchoolTeacherBasichlnformationService;
import java.io.*;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Calendar;
import java.util.Date; import static com.core.constant.CompressType.ZIP_FILE;
import java.util.List;
@Service @Service
public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<SchoolTeacherBasichlnformationMapper, SchoolTeacherBasicInformation> implements SchoolTeacherBasichlnformationService public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<SchoolTeacherBasichlnformationMapper, SchoolTeacherBasicInformation> implements SchoolTeacherBasichlnformationService
...@@ -39,14 +47,14 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo ...@@ -39,14 +47,14 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
@Autowired @Autowired
private SysDictDataMapper dictDataMapper; private SysDictDataMapper dictDataMapper;
@Override @Override
public List<SchoolTeacherBasicInformation> list(SchoolTeacherBasicInformation information) throws Exception { public List<SchoolTeacherBasicInformationVo> list(SchoolTeacherBasicInformationVo information) throws Exception {
//出生日期查询条件转换 //出生日期查询条件转换
this.symbolConversion(information); this.symbolConversion(information);
this.wordDateConversion(information); this.wordDateConversion(information);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String format = sdf.format(new Date()); String format = sdf.format(new Date());
List<SchoolTeacherBasicInformation> list = teacherBasichlnformationMapper.list(information); List<SchoolTeacherBasicInformationVo> list = teacherBasichlnformationMapper.list(information);
for (SchoolTeacherBasicInformation date :list){ for (SchoolTeacherBasicInformationVo date :list){
//1.计算年龄 //1.计算年龄
int ageFromIdCard = IdCardNumberUtils.getAgeFromIdCard(date.getIdCard()); int ageFromIdCard = IdCardNumberUtils.getAgeFromIdCard(date.getIdCard());
date.setAge(ageFromIdCard); date.setAge(ageFromIdCard);
...@@ -63,13 +71,17 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo ...@@ -63,13 +71,17 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
} }
public int updateInformationById(SchoolTeacherBasicInformation information){
return teacherBasichlnformationMapper.updateInformationById(information);
}
@Override @Override
public SchoolTeacherBasicInformation getById(Long id) throws ParseException { public SchoolTeacherBasicInformationVo getByIds(Long id) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
String format = sdf.format(new Date()); String format = sdf.format(new Date());
SchoolTeacherBasicInformation schoolTeacherBasicInformation = teacherBasichlnformationMapper.selectById(id); SchoolTeacherBasicInformationVo schoolTeacherBasicInformation = teacherBasichlnformationMapper.selectById(id);
//1.计算年龄 //1.计算年龄
int ageFromIdCard = IdCardNumberUtils.getAgeFromIdCard(schoolTeacherBasicInformation.getIdCard()); int ageFromIdCard = IdCardNumberUtils.getAgeFromIdCard(schoolTeacherBasicInformation.getIdCard());
schoolTeacherBasicInformation.setAge(ageFromIdCard); schoolTeacherBasicInformation.setAge(ageFromIdCard);
...@@ -402,9 +414,297 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo ...@@ -402,9 +414,297 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
@Override
public String importTeacherPicture(MultipartFile uploadFile) {
StringBuilder failureMsg = new StringBuilder();
/*解压到本地*/
unpack(uploadFile);
/*处理图片并匹配学生并添加到数据库中*/
String os = System.getProperty("os.name");
File file = null;
//Windows操作系统
if (os != null && os.toLowerCase().startsWith("windows")) {
file = new File("C:\\uploadPicture");
} else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
file = new File("/uploadPicture");
}
File[] files = file.listFiles();
judgeFiles(files);
for (File f : files) {
if (StringUtils.isNotNull(f)) {
if (f.isDirectory()) {
File[] files1 = f.listFiles();
if (files1.length == 0 || StringUtils.isNull(files1)) {
throw new ServiceException("压缩包内文件夹里无头像信息,请检查");
}
for (File file1 : files1) {
saveUrlToObject(file1, failureMsg);
file1.delete();
}
f.delete();
continue;
}
//saveUrlToObject(f);
/*将本地的文件删除*/
f.delete();
}
}
String s = "";
if ("".equals(failureMsg.toString())) {
s = "恭喜您,数据已全部导入成功!";
} else {
failureMsg.insert(0, "导入完成,其中不匹配的数据如下:");
s = failureMsg.toString();
}
return s;
}
public void unpack(MultipartFile uploadFile) {
boolean isZipPack = true;
// 解压目录
String packFileStr = "";
String os = System.getProperty("os.name");
File packFile = null;
//Windows操作系统
if (os != null && os.toLowerCase().startsWith("windows")) {
packFileStr = "C:\\uploadPicture";
packFile = new File(packFileStr);
} else if (os != null && os.toLowerCase().startsWith("linux")) {//Linux操作系统
packFileStr = "/uploadPicture";
packFile = new File(packFileStr);
packFile.setWritable(true, false);
}
//不存在则创建
if (!packFile.exists()) {
boolean mkdirs = packFile.mkdirs();
} else {
//存在则删除其中数据
remove(packFile);
}
if (uploadFile == null) {
throw new RuntimeException("请上传文件");
}
String contentType = uploadFile.getContentType();
String filename = uploadFile.getOriginalFilename();
String[] subFileName = filename.split("\\.");
//将压缩包保存在指定路径
String packFilePath = packFileStr + File.separator + filename;
if (judgeIsZip(ZIP_FILE, contentType) || subFileName[1].equals("zip")) {
//zip解压缩处理
}
// else if (RAR_FILE.equals(contentType)) {
// //rar解压缩处理
// isZipPack = false;
// }
else {
throw new RuntimeException("上传的压缩包格式不正确,仅支持zip压缩文件!");
}
File file = new File(packFilePath);
try {
uploadFile.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("压缩文件到:" + packFileStr + " 失败!");
}
if (isZipPack) {
//zip压缩包
UnPackeUtil.unPackZip(file, null, packFileStr);
//删除系统对应文件夹中的zip文件
file.delete();
} else {
//rar压缩包
// RandomAccessFile randomAccessFile = null;
// IInArchive inArchive = null;
//
// randomAccessFile = new RandomAccessFile(packFilePath, "r");
// inArchive = SevenZip.openInArchive(null, new RandomAccessFileInStream(randomAccessFile));
//
// int[] in = new int[inArchive.getNumberOfItems()];
// for (int i = 0; i < in.length; i++) {
// in[i] = i;
// }
// inArchive.extract(in, false, new ExtractCallback(inArchive, "366", packFileStr));
}
//获取压缩包名称
filename = filename.substring(0, filename.lastIndexOf("."));
System.out.println("解压成功,解压目录:" + filename);
//可以根据解压路径、压缩包名称、文件名称,取出对应文件进行操作
}
public File[] judgeFiles(File[] files) {
if (files.length == 0 || StringUtils.isNull(files)) {
throw new ServiceException("压缩包内容为空,请检查,支持的格式为:将老师头像照片放在某一文件夹内,将该文件夹压缩成zip格式的压缩包,然后再上传");
}
//定义需要删除的文件的索引
List<File> files1 = new ArrayList<>();
boolean hasPic = false;
boolean hasFolder = false;
//for (File f : files) {
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
hasFolder = true;
if (files[i].listFiles().length > 0 && StringUtils.isNotNull(files[i].listFiles())) {
files1 = Arrays.asList(files[i].listFiles());
}
for (File file1 : files[i].listFiles()) {
//遍历文件夹,看是否有图片格式的照片
String filename = file1.getName();
String[] split = filename.split("\\.");
if (split.length <= 1) {
throw new ServiceException("请检查压缩包,支持的格式为:将老师头像照片放在某一文件夹内,文件夹内不要嵌套文件夹,也不要有其他无关文件,将该文件夹压缩成zip格式的压缩包,然后再上传");
}
/*判断文件是否是jpg和png*/
if (split[1].equals("jpg") || split[1].equals("png") || split[1].equals("jpeg") || split[1].equals("bmp")) {
hasPic = true;
} else {
//文件夹内不是以上格式的删除掉
file1.delete();
}
}
} else {
//不是文件夹的就删除
files[i].delete();
files[i] = null;
}
}
//判断压缩格式是否合适,是否有文件夹
if (!hasFolder) {
throw new ServiceException("压缩包内无文件夹,请检查,支持的格式为:将老师头像照片放在某一文件夹内,将该文件夹压缩成zip格式的压缩包,然后再上传");
}
//files1为空,说明压缩包内文件夹里无任何文件
if (StringUtils.isNull(files1) || files1.size() == 0) {
throw new ServiceException("压缩包内的文件夹内无文件,请检查,支持的格式为:将老师头像照片放在某一文件夹内,将该文件夹压缩成zip格式的压缩包,然后再上传");
}
//判断文件夹内是否有需要的图片格式
if (!hasPic) {
throw new ServiceException("压缩包内文件夹里没有符合所要求的图片格式的老师头像照片,请检查,支持的图片格式:jpg、 png、 jpeg和bmp,暂不支持其它格式");
}
return files;
}
//删除指定文件夹下的所有内容
public void remove(File file) {
File[] files = file.listFiles();//将file子目录及子文件放进文件数组
if (files != null) {//如果包含文件进行删除操作
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {//删除子文件
files[i].delete();
} else if (files[i].isDirectory()) {//通过递归方法删除子目录的文件
remove(files[i]);
}
files[i].delete();//删除子目录
}
}
}
public boolean judgeIsZip(String[] fileType, String contentType) {
boolean flag = false;
for (String i : fileType) {
if (contentType.equals(i)) {
flag = true;
}
}
return flag;
}
@Transactional(rollbackFor = Exception.class)
public void saveUrlToObject(File f, StringBuilder failureMsg) {
String filename = f.getName();
String[] split = filename.split("\\.");
//可能是身份证号,可能是省学籍号
String idCard = split[0];
/*获取到对应学生的数据 ,先根据身份证查*/
LambdaQueryWrapper<SchoolTeacherBasicInformation> lqw1 = new LambdaQueryWrapper<>();
lqw1.eq(SchoolTeacherBasicInformation::getIdCard, idCard);
List<SchoolTeacherBasicInformation> studentList1 = teacherBasichlnformationMapper.selectList(lqw1);
if (StringUtils.isNull(studentList1) || studentList1.size() == 0) {
failureMsg.append(" 身份证号为" + idCard + "的老师不在,无法为该老师导入图片");
} else {
boolean flag = false;
if (split.length <= 1) {
throw new ServiceException("请检查压缩包,压缩包内不要有文件夹;可将老师照片放到同一文件夹下,文件夹下不要有任何与老师照片无关的文件,将该文件夹压缩上传");
}
/*判断文件是否是jpg和png*/
if (split[1].equals("jpg") || split[1].equals("png") || split[1].equals("jpeg") || split[1].equals("bmp")) {
flag = true;
} else {
//throw new ServiceException("支持jpg、 png、 jpeg和bmp图片上传,暂不支持其它格式");
failureMsg.append(" 身份证号为" + idCard + "的图片格式有误,支持jpg、 png、 jpeg和bmp图片上传,暂不支持其它格式");
}
/*必须存在这个同学 并且 是图片类型才能进行下一步*/
if (studentList1.size() != 0 && flag) {
/*上传图片到服务器,获取地址*/
/*将file文件转为MultipartFile*/
MultipartFile cMultiFile = getMultipartFile(f);
/*上传文件并获取url*/
String url = uploadFile(cMultiFile);
/*将路径添加到数据库中*/
for (SchoolTeacherBasicInformation date:studentList1){
date.setPhotoUrl(url);
date.setPhotoName(idCard);
teacherBasichlnformationMapper.updateById(date);
}
} else {
//不能抛异常,,,否则指定目录下会存在脏数据
//throw new ServiceException("身份证号或省学籍号为" + idCard + "的学生不存在,无法导入图片,请检查");
failureMsg.append(" 身份证为" + idCard + "的老师不存在,无法为该老师导入图片");
}
}
}
/*上传文件*/
public String uploadFile(MultipartFile file) {
try {
// 上传文件路径
String filePath = RuoYiConfig.getAvatarPath();
// 上传并返回新文件名称
String url = FileUploadUtils.upload(filePath, file, MimeTypeUtils.IMAGE_EXTENSION);
//String url = serverConfig.getUrl() + fileName;
//int i = url.indexOf("/profile");
//String substring = url.substring(i);
//System.out.println(substring);
return url;
} catch (Exception e) {
throw new ServiceException("上传异常");
}
}
/*File转为MultipartFile*/
public static MultipartFile getMultipartFile(File file) {
FileItem item = new DiskFileItemFactory().createItem("file"
, MediaType.MULTIPART_FORM_DATA_VALUE
, true
, file.getName());
try (InputStream input = new FileInputStream(file);
OutputStream os = item.getOutputStream()) {
// 流转移
IOUtils.copy(input, os);
} catch (Exception e) {
throw new IllegalArgumentException("Invalid file: " + e, e);
}
return new CommonsMultipartFile(item);
}
//计算年龄 //计算年龄
...@@ -463,7 +763,7 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo ...@@ -463,7 +763,7 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
* 出生年月条件转换 * 出生年月条件转换
* @param information * @param information
*/ */
private void symbolConversion(SchoolTeacherBasicInformation information){ private void symbolConversion(SchoolTeacherBasicInformationVo information){
String birthDate = information.getBirthDate(); String birthDate = information.getBirthDate();
if (StringUtils.isEmpty(birthDate)){ if (StringUtils.isEmpty(birthDate)){
return; return;
...@@ -492,7 +792,7 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo ...@@ -492,7 +792,7 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
* 参加工作调整 * 参加工作调整
*/ */
private void wordDateConversion(SchoolTeacherBasicInformation information){ private void wordDateConversion(SchoolTeacherBasicInformationVo information){
String workingHours = information.getWorkingHours(); String workingHours = information.getWorkingHours();
if (StringUtils.isEmpty(workingHours)){ if (StringUtils.isEmpty(workingHours)){
return; return;
......
package yangtz.cs.liu.campus.service.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessment;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentReq;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentVo;
import java.util.List;
/**
* 班主任考核Service接口
*
* @author ruoyi
* @date 2023-12-12
*/
public interface ISchoolAclassTeacherAssessmentService extends IService<SchoolAclassTeacherAssessment>
{
/**
* 查询班主任考核
*
* @param id 班主任考核主键
* @return 班主任考核
*/
public SchoolAclassTeacherAssessment selectSchoolAclassTeacherAssessmentById(Long id);
/**
* 查询班主任考核列表
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 班主任考核集合
*/
public List<SchoolAclassTeacherAssessmentVo> selectSchoolAclassTeacherAssessmentList(SchoolAclassTeacherAssessmentReq req);
public List<SchoolAclassTeacherAssessment> selectSchoolList(SchoolAclassTeacherAssessmentReq req);
/**
* 新增班主任考核
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 结果
*/
public int insertSchoolAclassTeacherAssessment(SchoolAclassTeacherAssessment schoolAclassTeacherAssessment);
/**
* 修改班主任考核
*
* @param schoolAclassTeacherAssessment 班主任考核
* @return 结果
*/
public int updateSchoolAclassTeacherAssessment(SchoolAclassTeacherAssessment schoolAclassTeacherAssessment);
/**
* 批量删除班主任考核
*
* @param ids 需要删除的班主任考核主键集合
* @return 结果
*/
public int deleteSchoolAclassTeacherAssessmentByIds(Long[] ids);
/**
* 删除班主任考核信息
*
* @param id 班主任考核主键
* @return 结果
*/
public int deleteSchoolAclassTeacherAssessmentById(Long id);
}
package yangtz.cs.liu.campus.service.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkload;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadExport;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadVo;
import java.util.List;
/**
* 工作量信息Service接口
*
* @author ruoyi
* @date 2023-12-11
*/
public interface ISchoolAworkloadService extends IService<SchoolAworkload>
{
/**
* 查询工作量信息
*
* @param id 工作量信息主键
* @return 工作量信息
*/
public SchoolAworkload selectSchoolAworkloadById(Long id);
/**
* 查询工作量信息列表
*
* @param schoolAworkload 工作量信息
* @return 工作量信息集合
*/
public List<SchoolAworkloadVo> selectSchoolAworkloadList(SchoolAworkload schoolAworkload);
//导出列表
public List<SchoolAworkloadExport> selectAworkloadList(SchoolAworkload schoolAworkload);
/**
* 新增工作量信息
*
* @param schoolAworkload 工作量信息
* @return 结果
*/
public int insertSchoolAworkload(SchoolAworkload schoolAworkload);
/**
* 修改工作量信息
*
* @param schoolAworkload 工作量信息
* @return 结果
*/
public int updateSchoolAworkload(SchoolAworkload schoolAworkload);
/**
* 批量删除工作量信息
*
* @param ids 需要删除的工作量信息主键集合
* @return 结果
*/
public int deleteSchoolAworkloadByIds(Long[] ids);
/**
* 删除工作量信息信息
*
* @param id 工作量信息主键
* @return 结果
*/
public int deleteSchoolAworkloadById(Long id);
}
package yangtz.cs.liu.campus.service.teacherFiles; package yangtz.cs.liu.campus.service.schoolNewTeacherDzdn;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasicInformation; import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformation;
import yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformationVo;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException; import java.text.ParseException;
import java.util.List; import java.util.List;
public interface SchoolTeacherBasichlnformationService extends IService<SchoolTeacherBasicInformation> { public interface SchoolTeacherBasichlnformationService extends IService<SchoolTeacherBasicInformation> {
List<SchoolTeacherBasicInformation> list(SchoolTeacherBasicInformation information) throws Exception; List<SchoolTeacherBasicInformationVo> list(SchoolTeacherBasicInformationVo information) throws Exception;
SchoolTeacherBasicInformation getById(Long id) throws ParseException; SchoolTeacherBasicInformationVo getByIds(Long id) throws ParseException;
int updateInformationById(SchoolTeacherBasicInformation information);
/*
* 批量导入学生照片
* */
String importTeacherPicture(MultipartFile file);
List<SchoolTeacherBasicInformation> importExcel(MultipartFile inputStream) throws IOException; List<SchoolTeacherBasicInformation> importExcel(MultipartFile inputStream) throws IOException;
......
...@@ -2,6 +2,8 @@ package yangtz.cs.liu.wechat.controller.courseSelection; ...@@ -2,6 +2,8 @@ package yangtz.cs.liu.wechat.controller.courseSelection;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -38,69 +40,76 @@ public class WxCouresSelection { ...@@ -38,69 +40,76 @@ public class WxCouresSelection {
ICurriculaVariableService iCurriculaVariableService; ICurriculaVariableService iCurriculaVariableService;
/** /**
* 学生选信息查询 * 学生选信息查询
*/ */
@GetMapping("/getCourseInfo/{studentId}/{id}") @GetMapping("/getCourseInfo/{studentId}")
private AjaxResult getCourseInfo(@PathVariable("studentId") Long studentId,@PathVariable("id") Long id) { private AjaxResult getCourseInfo(@PathVariable("studentId") Long studentId) {
List<CurriclaStudentVo> CurriclaStudentVoList = new ArrayList<>();
//查询学生个人选课信息 //查询学生个人选课信息
LambdaQueryWrapper<CurriculaStudent> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<CurriculaStudent> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CurriculaStudent::getStudentId, studentId); wrapper.eq(CurriculaStudent::getStudentId, studentId);
wrapper.eq(CurriculaStudent::getDelFlag, "0"); wrapper.eq(CurriculaStudent::getDelFlag, "0");
wrapper.eq(CurriculaStudent::getCurriculaId, id);
//查询出学生任务信息 //查询出学生任务信息
CurriculaStudent one = iCurriculaStudentService.getOne(wrapper); List<CurriculaStudent> list = iCurriculaStudentService.list(wrapper);
//判断当前学生是否可以选课 //判断当前学生是否可以选课
Boolean flag = false; Boolean flag = false;
Boolean stats = false;
CurriculaVariable byId = null; CurriculaVariable byId = null;
//1.是否有选课任务 //1.是否有选课任务
if (null == one) { if (list.isEmpty()) {
flag = true; flag = true;
} }
//是否在选课时间内 //是否在选课时间内
if (null != one) { if (!list.isEmpty()) {
byId = iCurriculaVariableService.getById(one.getCurriculaId()); for (CurriculaStudent dates :list){
//查询选课信息 byId = iCurriculaVariableService.getById(dates.getCurriculaId());
if (null == byId) { //查询选课信息
return AjaxResult.error("选课主题丢失,请联系管理员"); if (null == byId) {
} return AjaxResult.error("选课主题丢失,请联系管理员");
//设置当前时间 }
Calendar date = Calendar.getInstance();
date.setTime(new Date());
//开始时间
Calendar startDade = Calendar.getInstance();
startDade.setTime(byId.getStartTime());
//结束时间
Calendar endDade = Calendar.getInstance();
endDade.setTime(byId.getEndTime());
//处于开始时间之后,和结束时间之前的判断
if ((date.after(startDade) && date.before(endDade))) {
flag = false;
} else {
flag = true;
}
//判断当前否结束选课
if (date.after(endDade)){
flag=false;
stats = true;
}
}
if (flag) {
return new AjaxResult(2000, "当前没有选课任务");
}
//设置当前时间
Calendar date = Calendar.getInstance();
date.setTime(new Date());
//开始时间
Calendar startDade = Calendar.getInstance();
startDade.setTime(byId.getStartTime());
//结束时间
Calendar endDade = Calendar.getInstance();
endDade.setTime(byId.getEndTime());
//处于开始时间之后,和结束时间之前的判断
if ((date.after(startDade) && date.before(endDade))) {
flag = false;
} else {
flag = true;
}
//判断当前否结束选课
if (date.after(endDade)){
flag=true;
}
//判断当时时间是否选课之后 //判断当时时间是否选课之后
CurriclaStudentVo data = new CurriclaStudentVo(); CurriclaStudentVo data = new CurriclaStudentVo();
//拼接返回对象 //拼接返回对象
BeanUtils.copyProperties(one, data); BeanUtils.copyProperties(dates, data);
BeanUtils.copyProperties(byId, data); BeanUtils.copyProperties(byId, data);
data.setId(one.getId()); data.setId(dates.getId());
data.setFlag(stats); data.setFlag(flag);
return AjaxResult.success(data); CurriclaStudentVoList.add(data);
}
}
return AjaxResult.success(CurriclaStudentVoList);
} }
/** /**
* 学生选课信息查询
*/
@GetMapping("/getStudenCoures/{id}")
public AjaxResult getStudenCoures(@PathVariable("id") Long id){
return AjaxResult.success(iCurriculaStudentService.getById(id));
}
/**
* 学生选课课程展示 * 学生选课课程展示
*/ */
@GetMapping("/getCurriculaSub/{id}") @GetMapping("/getCurriculaSub/{id}")
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentMapper">
<resultMap type="SchoolAclassTeacherAssessment" id="SchoolAclassTeacherAssessmentResult">
<result property="id" column="id" />
<result property="semester" column="semester" />
<result property="year" column="year" />
<result property="schoolYear" column="school_year" />
<result property="grade" column="grade" />
<result property="className" column="class_name" />
<result property="teacherName" column="teacher_name" />
<result property="idCard" column="id_card" />
<result property="moralEduCheckAchievement" column="moral_edu_check_achievement" />
<result property="intellEduCheckAchievement" column="intell_edu_check_achievement" />
<result property="totalCheckAchievement" column="total_check_achievement" />
<result property="classType" column="class_type" />
<result property="sub" column="sub" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectSchoolAclassTeacherAssessmentVo">
select id, semester, year, school_year, grade, class_name, teacher_name, id_card, moral_edu_check_achievement, intell_edu_check_achievement, total_check_achievement, class_type, sub, remark, create_by, create_time, update_by, update_time, del_flag from school_aclass_teacher_assessment
</sql>
<select id="selectSchoolAclassTeacherAssessmentList" parameterType="SchoolAclassTeacherAssessmentReq" resultType="yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAclassTeacherAssessmentVo">
<include refid="selectSchoolAclassTeacherAssessmentVo"/>
where del_flag = 0
<if test="teacherName != null and teacherName != ''"> and teacher_name like concat('%', #{teacherName}, '%')</if>
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="year != null and year != ''"> and year = #{year}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="classType != null and classType != ''"> and class_type = #{classType}</if>
<if test="className != null and className != ''"> and class_name like concat('%', #{className}, '%')</if>
<if test="moralEduCheckAchievement != null and moralEduCheckAchievement != ''"> and moral_edu_check_achievement = #{moralEduCheckAchievement}</if>
<if test="moralEduCheckAchievementgt != null and moralEduCheckAchievementgt != ''"> and moral_edu_check_achievement &gt; #{moralEduCheckAchievementgt}</if>
<if test="moralEduCheckAchievementgtd != null and moralEduCheckAchievementgtd != ''"> and moral_edu_check_achievement &gt;= #{moralEduCheckAchievementgtd}</if>
<if test="moralEduCheckAchievementlt != null and moralEduCheckAchievementlt != ''"> and moral_edu_check_achievement &lt; #{moralEduCheckAchievementlt}</if>
<if test="moralEduCheckAchievementltd != null and moralEduCheckAchievementltd != ''"> and moral_edu_check_achievement &lt;= #{moralEduCheckAchievementltd}</if>
<if test="intellEduCheckAchievement != null and intellEduCheckAchievement != ''"> and intell_edu_check_achievement = #{intellEduCheckAchievement}</if>
<if test="intellEduCheckAchievementgt != null and intellEduCheckAchievementgt != ''"> and intell_edu_check_achievement &gt; #{intellEduCheckAchievementgt}</if>
<if test="intellEduCheckAchievementgtd != null and intellEduCheckAchievementgtd != ''"> and intell_edu_check_achievement &gt;= #{intellEduCheckAchievementgtd}</if>
<if test="intellEduCheckAchievementlt != null and intellEduCheckAchievementlt != ''"> and intell_edu_check_achievement &lt; #{intellEduCheckAchievementlt}</if>
<if test="intellEduCheckAchievementltd != null and intellEduCheckAchievementltd != ''"> and intell_edu_check_achievement &lt;= #{intellEduCheckAchievementltd}</if>
</select>
<select id="selectSchoolList" parameterType="SchoolAclassTeacherAssessmentReq" resultMap="SchoolAclassTeacherAssessmentResult">
<include refid="selectSchoolAclassTeacherAssessmentVo"/>
where del_flag = 0
<if test="teacherName != null and teacherName != ''"> and teacher_name like concat('%', #{teacherName}, '%')</if>
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="year != null and year != ''"> and year = #{year}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="classType != null and classType != ''"> and class_type = #{classType}</if>
<if test="className != null and className != ''"> and class_name like concat('%', #{className}, '%')</if>
<if test="moralEduCheckAchievement != null and moralEduCheckAchievement != ''"> and moral_edu_check_achievement = #{moralEduCheckAchievement}</if>
<if test="moralEduCheckAchievementgt != null and moralEduCheckAchievementgt != ''"> and moral_edu_check_achievement &gt; #{moralEduCheckAchievementgt}</if>
<if test="moralEduCheckAchievementgtd != null and moralEduCheckAchievementgtd != ''"> and moral_edu_check_achievement &gt;= #{moralEduCheckAchievementgtd}</if>
<if test="moralEduCheckAchievementlt != null and moralEduCheckAchievementlt != ''"> and moral_edu_check_achievement &lt; #{moralEduCheckAchievementlt}</if>
<if test="moralEduCheckAchievementltd != null and moralEduCheckAchievementltd != ''"> and moral_edu_check_achievement &lt;= #{moralEduCheckAchievementltd}</if>
<if test="intellEduCheckAchievement != null and intellEduCheckAchievement != ''"> and intell_edu_check_achievement = #{intellEduCheckAchievement}</if>
<if test="intellEduCheckAchievementgt != null and intellEduCheckAchievementgt != ''"> and intell_edu_check_achievement &gt; #{intellEduCheckAchievementgt}</if>
<if test="intellEduCheckAchievementgtd != null and intellEduCheckAchievementgtd != ''"> and intell_edu_check_achievement &gt;= #{intellEduCheckAchievementgtd}</if>
<if test="intellEduCheckAchievementlt != null and intellEduCheckAchievementlt != ''"> and intell_edu_check_achievement &lt; #{intellEduCheckAchievementlt}</if>
<if test="intellEduCheckAchievementltd != null and intellEduCheckAchievementltd != ''"> and intell_edu_check_achievement &lt;= #{intellEduCheckAchievementltd}</if>
</select>
<select id="selectSchoolAclassTeacherAssessmentById" parameterType="Long" resultMap="SchoolAclassTeacherAssessmentResult">
<include refid="selectSchoolAclassTeacherAssessmentVo"/>
where id = #{id} and del_flag = 0
</select>
<insert id="insertSchoolAclassTeacherAssessment" parameterType="SchoolAclassTeacherAssessment" useGeneratedKeys="true" keyProperty="id">
insert into school_aclass_teacher_assessment
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="semester != null">semester,</if>
<if test="year != null">year,</if>
<if test="schoolYear != null">school_year,</if>
<if test="grade != null">grade,</if>
<if test="className != null">class_name,</if>
<if test="teacherName != null">teacher_name,</if>
<if test="idCard != null">id_card,</if>
<if test="moralEduCheckAchievement != null">moral_edu_check_achievement,</if>
<if test="intellEduCheckAchievement != null">intell_edu_check_achievement,</if>
<if test="totalCheckAchievement != null">total_check_achievement,</if>
<if test="classType != null">class_type,</if>
<if test="sub != null">sub,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="semester != null">#{semester},</if>
<if test="year != null">#{year},</if>
<if test="schoolYear != null">#{schoolYear},</if>
<if test="grade != null">#{grade},</if>
<if test="className != null">#{className},</if>
<if test="teacherName != null">#{teacherName},</if>
<if test="idCard != null">#{idCard},</if>
<if test="moralEduCheckAchievement != null">#{moralEduCheckAchievement},</if>
<if test="intellEduCheckAchievement != null">#{intellEduCheckAchievement},</if>
<if test="totalCheckAchievement != null">#{totalCheckAchievement},</if>
<if test="classType != null">#{classType},</if>
<if test="sub != null">#{sub},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolAclassTeacherAssessment" parameterType="SchoolAclassTeacherAssessment">
update school_aclass_teacher_assessment
<trim prefix="SET" suffixOverrides=",">
<if test="semester != null">semester = #{semester},</if>
<if test="year != null">year = #{year},</if>
<if test="schoolYear != null">school_year = #{schoolYear},</if>
<if test="grade != null">grade = #{grade},</if>
<if test="className != null">class_name = #{className},</if>
<if test="teacherName != null">teacher_name = #{teacherName},</if>
<if test="idCard != null">id_card = #{idCard},</if>
<if test="moralEduCheckAchievement != null">moral_edu_check_achievement = #{moralEduCheckAchievement},</if>
<if test="intellEduCheckAchievement != null">intell_edu_check_achievement = #{intellEduCheckAchievement},</if>
<if test="totalCheckAchievement != null">total_check_achievement = #{totalCheckAchievement},</if>
<if test="classType != null">class_type = #{classType},</if>
<if test="sub != null">sub = #{sub},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSchoolAclassTeacherAssessmentById" parameterType="Long">
delete from school_aclass_teacher_assessment where id = #{id}
</delete>
<delete id="deleteSchoolAclassTeacherAssessmentByIds" parameterType="String">
delete from school_aclass_teacher_assessment where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolAworkloadMapper">
<resultMap type="SchoolAworkload" id="SchoolAworkloadResult">
<result property="id" column="id" />
<result property="schoolYear" column="school_year" />
<result property="semester" column="semester" />
<result property="year" column="year" />
<result property="grade" column="grade" />
<result property="name" column="name" />
<result property="sub" column="sub" />
<result property="idCard" column="id_card" />
<result property="appointmentPost" column="appointment_post" />
<result property="appointmentPosition" column="appointment_position" />
<result property="appointmentSituation" column="appointment_situation" />
<result property="className" column="class_name" />
<result property="classType" column="class_type" />
<result property="earlyReading" column="early_reading" />
<result property="requiredCourses" column="required_courses" />
<result property="eveningSelfStudy" column="evening_self_study" />
<result property="userId" column="user_id" />
<result property="userName" column="user_name" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectSchoolAworkloadVo">
select id, school_year, semester, year, grade, name, sub, id_card, appointment_post, appointment_position, appointment_situation, class_name, class_type, early_reading, required_courses, evening_self_study, user_id, user_name, remark, create_by, create_time, update_by, update_time, del_flag from school_aworkload
</sql>
<select id="selectSchoolAworkloadList" parameterType="SchoolAworkload" resultType="yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadVo">
<include refid="selectSchoolAworkloadVo"/>
where del_flag = 0
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="year != null and year != ''"> and year = #{year}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="sub != null and sub != ''"> and sub = #{sub}</if>
<if test="idCard != null and idCard != ''"> and id_card = #{idCard}</if>
<if test="appointmentPost != null and appointmentPost != ''">
and appointment_post like concat('%', #{appointmentPost}, '%')
</if>
<if test="appointmentPosition != null and appointmentPosition != ''"> and appointment_position = #{appointmentPosition}</if>
<if test="appointmentSituation != null and appointmentSituation != ''"> and appointment_situation = #{appointmentSituation}</if>
<if test="className != null and className != ''"> and class_name like concat('%', #{className}, '%')</if>
<if test="classType != null and classType != ''">
and class_type like concat('%', #{classType}, '%')
</if>
<if test="earlyReading != null "> and early_reading = #{earlyReading}</if>
<if test="requiredCourses != null "> and required_courses = #{requiredCourses}</if>
<if test="eveningSelfStudy != null "> and evening_self_study = #{eveningSelfStudy}</if>
<if test="userId != null "> and user_id = #{userId}</if>
<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
</select>
<select id="selectAworkloadList" parameterType="SchoolAworkload" resultType="yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolAworkloadExport">
<include refid="selectSchoolAworkloadVo"/>
where del_flag = 0
<if test="schoolYear != null and schoolYear != ''"> and school_year = #{schoolYear}</if>
<if test="semester != null and semester != ''"> and semester = #{semester}</if>
<if test="year != null and year != ''"> and year = #{year}</if>
<if test="grade != null and grade != ''"> and grade = #{grade}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="sub != null and sub != ''"> and sub = #{sub}</if>
<if test="idCard != null and idCard != ''"> and id_card = #{idCard}</if>
<if test="appointmentPost != null and appointmentPost != ''">
and appointment_post like concat('%', #{appointmentPost}, '%')
</if>
<if test="appointmentPosition != null and appointmentPosition != ''"> and appointment_position = #{appointmentPosition}</if>
<if test="appointmentSituation != null and appointmentSituation != ''"> and appointment_situation = #{appointmentSituation}</if>
<if test="className != null and className != ''"> and class_name like concat('%', #{className}, '%')</if>
<if test="classType != null and classType != ''">
and class_type like concat('%', #{classType}, '%')
</if>
<if test="earlyReading != null "> and early_reading = #{earlyReading}</if>
<if test="requiredCourses != null "> and required_courses = #{requiredCourses}</if>
<if test="eveningSelfStudy != null "> and evening_self_study = #{eveningSelfStudy}</if>
<if test="userId != null "> and user_id = #{userId}</if>
<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
</select>
<select id="selectSchoolAworkloadById" parameterType="Long" resultMap="SchoolAworkloadResult">
<include refid="selectSchoolAworkloadVo"/>
where id = #{id} and del_flag = 0
</select>
<insert id="insertSchoolAworkload" parameterType="SchoolAworkload" useGeneratedKeys="true" keyProperty="id">
insert into school_aworkload
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="schoolYear != null">school_year,</if>
<if test="semester != null">semester,</if>
<if test="year != null">year,</if>
<if test="grade != null">grade,</if>
<if test="name != null">name,</if>
<if test="sub != null">sub,</if>
<if test="idCard != null">id_card,</if>
<if test="appointmentPost != null">appointment_post,</if>
<if test="appointmentPosition != null">appointment_position,</if>
<if test="appointmentSituation != null">appointment_situation,</if>
<if test="className != null">class_name,</if>
<if test="classType != null">class_type,</if>
<if test="earlyReading != null">early_reading,</if>
<if test="requiredCourses != null">required_courses,</if>
<if test="eveningSelfStudy != null">evening_self_study,</if>
<if test="userId != null">user_id,</if>
<if test="userName != null">user_name,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null and delFlag != ''">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="schoolYear != null">#{schoolYear},</if>
<if test="semester != null">#{semester},</if>
<if test="year != null">#{year},</if>
<if test="grade != null">#{grade},</if>
<if test="name != null">#{name},</if>
<if test="sub != null">#{sub},</if>
<if test="idCard != null">#{idCard},</if>
<if test="appointmentPost != null">#{appointmentPost},</if>
<if test="appointmentPosition != null">#{appointmentPosition},</if>
<if test="appointmentSituation != null">#{appointmentSituation},</if>
<if test="className != null">#{className},</if>
<if test="classType != null">#{classType},</if>
<if test="earlyReading != null">#{earlyReading},</if>
<if test="requiredCourses != null">#{requiredCourses},</if>
<if test="eveningSelfStudy != null">#{eveningSelfStudy},</if>
<if test="userId != null">#{userId},</if>
<if test="userName != null">#{userName},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null and delFlag != ''">#{delFlag},</if>
</trim>
</insert>
<update id="updateSchoolAworkload" parameterType="SchoolAworkload">
update school_aworkload
<trim prefix="SET" suffixOverrides=",">
<if test="schoolYear != null">school_year = #{schoolYear},</if>
<if test="semester != null">semester = #{semester},</if>
<if test="year != null">year = #{year},</if>
<if test="grade != null">grade = #{grade},</if>
<if test="name != null">name = #{name},</if>
<if test="sub != null">sub = #{sub},</if>
<if test="idCard != null">id_card = #{idCard},</if>
<if test="appointmentPost != null">appointment_post = #{appointmentPost},</if>
<if test="appointmentPosition != null">appointment_position = #{appointmentPosition},</if>
<if test="appointmentSituation != null">appointment_situation = #{appointmentSituation},</if>
<if test="className != null">class_name = #{className},</if>
<if test="classType != null">class_type = #{classType},</if>
<if test="earlyReading != null">early_reading = #{earlyReading},</if>
<if test="requiredCourses != null">required_courses = #{requiredCourses},</if>
<if test="eveningSelfStudy != null">evening_self_study = #{eveningSelfStudy},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="userName != null">user_name = #{userName},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSchoolAworkloadById" parameterType="Long">
delete from school_aworkload where id = #{id}
</delete>
<delete id="deleteSchoolAworkloadByIds" parameterType="String">
delete from school_aworkload where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yangtz.cs.liu.campus.mapper.teacherFiles.SchoolTeacherBasichlnformationMapper"> <mapper namespace="yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolTeacherBasichlnformationMapper">
<sql id="selectSchoolTeacherBasicInformationVo"> <sql id="selectSchoolTeacherBasicInformationVo">
select id, name, id_card, sex, file_birth_date, birth_date, hometown, nation, political_landscape, party_membership_time, teaching_subject, current_professional_title, current_professional_title_time, current_hiring_professional_title, current_hiring_professional_title_time, current_position, current_job_level, current_job_level_appointment_time, duties, teacher_qualification_type, teacher_qualification_certificate_num, working_hours, to_second_middle_school_time, length_of_teacher_time, length_of_service_time, on_duty_situation, current_situation, graduation_institution1, major1, graduation_time1, graduation_institution2, major2, graduation_time2, graduation_institution3, major3, graduation_time3, first_degree, last_degree, degree, work_experience, remark, photo_name, photo_url, dd_phone, del_flag from school_teacher_basic_information select id, name, id_card, sex, file_birth_date, birth_date, hometown, nation, political_landscape, party_membership_time, teaching_subject, current_professional_title, current_professional_title_time, current_hiring_professional_title, current_hiring_professional_title_time, current_position, current_job_level, current_job_level_appointment_time, duties, teacher_qualification_type, teacher_qualification_certificate_num, working_hours, to_second_middle_school_time, length_of_teacher_time, length_of_service_time, on_duty_situation, current_situation, graduation_institution1, major1, graduation_time1, graduation_institution2, major2, graduation_time2, graduation_institution3, major3, graduation_time3, first_degree, last_degree, degree, work_experience, remark, photo_name, photo_url, dd_phone, del_flag from school_teacher_basic_information
</sql> </sql>
<select id="list" resultType="yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasicInformation" parameterType="yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasicInformation"> <select id="list" resultType="yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformationVo" parameterType="yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformationVo">
SELECT id,name,sex,id_card,file_birth_date,political_landscape,to_second_middle_school_time,current_professional_title,last_degree,on_duty_situation FROM school_teacher_basic_information where del_flag = 0 SELECT id,name,sex,id_card,file_birth_date,political_landscape,to_second_middle_school_time,current_professional_title,last_degree,on_duty_situation FROM school_teacher_basic_information where del_flag = 0
<if test="teachingSubject != null "> and teaching_subject = #{teachingSubject}</if> <if test="teachingSubject != null "> and teaching_subject = #{teachingSubject}</if>
<if test="name != null "> <if test="name != null ">
...@@ -38,10 +38,60 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -38,10 +38,60 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectById" resultType="yangtz.cs.liu.campus.domain.teacherFiles.SchoolTeacherBasicInformation" parameterType="Long"> <select id="selectById" resultType="yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformationVo" parameterType="Long">
<include refid="selectSchoolTeacherBasicInformationVo"/> <include refid="selectSchoolTeacherBasicInformationVo"/>
where id =#{id} where id =#{id} and del_flag = 0
</select> </select>
<update id="updateInformationById" parameterType="SchoolTeacherBasicInformation">
update school_teacher_basic_information
<trim prefix="SET" suffixOverrides=",">
<if test="name != null and name != ''">name = #{name},</if>
<if test="idCard != null and idCard != ''">id_card = #{idCard},</if>
<if test="sex != null">sex = #{sex},</if>
<if test="fileBirthDate != null">file_birth_date = #{fileBirthDate},</if>
<if test="birthDate != null">birth_date = #{birthDate},</if>
<if test="hometown != null">hometown = #{hometown},</if>
<if test="nation != null">nation = #{nation},</if>
<if test="politicalLandscape != null">political_landscape = #{politicalLandscape},</if>
<if test="partyMembershipTime != null">party_membership_time = #{partyMembershipTime},</if>
<if test="teachingSubject != null and teachingSubject != ''">teaching_subject = #{teachingSubject},</if>
<if test="currentProfessionalTitle != null">current_professional_title = #{currentProfessionalTitle},</if>
<if test="currentProfessionalTitleTime != null">current_professional_title_time = #{currentProfessionalTitleTime},</if>
<if test="currentHiringProfessionalTitle != null">current_hiring_professional_title = #{currentHiringProfessionalTitle},</if>
<if test="currentHiringProfessionalTitleTime != null">current_hiring_professional_title_time = #{currentHiringProfessionalTitleTime},</if>
<if test="currentPosition != null">current_position = #{currentPosition},</if>
<if test="currentJobLevel != null">current_job_level = #{currentJobLevel},</if>
<if test="currentJobLevelAppointmentTime != null">current_job_level_appointment_time = #{currentJobLevelAppointmentTime},</if>
<if test="duties != null">duties = #{duties},</if>
<if test="teacherQualificationType != null">teacher_qualification_type = #{teacherQualificationType},</if>
<if test="teacherQualificationCertificateNum != null">teacher_qualification_certificate_num = #{teacherQualificationCertificateNum},</if>
<if test="workingHours != null">working_hours = #{workingHours},</if>
<if test="toSecondMiddleSchoolTime != null">to_second_middle_school_time = #{toSecondMiddleSchoolTime},</if>
<if test="lengthOfTeacherTime != null">length_of_teacher_time = #{lengthOfTeacherTime},</if>
<if test="lengthOfServiceTime != null">length_of_service_time = #{lengthOfServiceTime},</if>
<if test="onDutySituation != null">on_duty_situation = #{onDutySituation},</if>
<if test="currentSituation != null">current_situation = #{currentSituation},</if>
<if test="graduationInstitution1 != null">graduation_institution1 = #{graduationInstitution1},</if>
<if test="major1 != null">major1 = #{major1},</if>
<if test="graduationTime1 != null">graduation_time1 = #{graduationTime1},</if>
<if test="graduationInstitution2 != null">graduation_institution2 = #{graduationInstitution2},</if>
<if test="major2 != null">major2 = #{major2},</if>
<if test="graduationTime2 != null">graduation_time2 = #{graduationTime2},</if>
<if test="graduationInstitution3 != null">graduation_institution3 = #{graduationInstitution3},</if>
<if test="major3 != null">major3 = #{major3},</if>
<if test="graduationTime3 != null">graduation_time3 = #{graduationTime3},</if>
<if test="firstDegree != null">first_degree = #{firstDegree},</if>
<if test="lastDegree != null">last_degree = #{lastDegree},</if>
<if test="degree != null">degree = #{degree},</if>
<if test="workExperience != null">work_experience = #{workExperience},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="photoName != null">photo_name = #{photoName},</if>
<if test="photoUrl != null">photo_url = #{photoUrl},</if>
<if test="ddPhone != null">dd_phone = #{ddPhone},</if>
<if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment