Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
dd_school
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangqi
dd_school
Commits
5725ff0c
Commit
5725ff0c
authored
Feb 04, 2024
by
xuwenhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2.4修改
parent
1a62debd
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1293 additions
and
24 deletions
+1293
-24
ruoyi-admin/src/main/resources/application.yml
+26
-21
smart-campus/src/main/java/yangtz/cs/liu/campus/controller/schoolNewTeacherDzdn/SchoolXsyouthTeacherController.java
+267
-0
smart-campus/src/main/java/yangtz/cs/liu/campus/domain/schoolNewTeacherDzdn/ComperhensiveVo.java
+5
-0
smart-campus/src/main/java/yangtz/cs/liu/campus/domain/schoolNewTeacherDzdn/SchoolXsyouthTeacher.java
+97
-0
smart-campus/src/main/java/yangtz/cs/liu/campus/mapper/schoolNewTeacherDzdn/SchoolXsyouthTeacherMapper.java
+64
-0
smart-campus/src/main/java/yangtz/cs/liu/campus/service/impl/schoolNewTeacherDzdn/SchoolAworkloadServiceImpl.java
+1
-1
smart-campus/src/main/java/yangtz/cs/liu/campus/service/impl/schoolNewTeacherDzdn/SchoolTeacherBasichlnformationServicelmpl.java
+44
-2
smart-campus/src/main/java/yangtz/cs/liu/campus/service/impl/schoolNewTeacherDzdn/SchoolXsyouthTeacherServiceImpl.java
+376
-0
smart-campus/src/main/java/yangtz/cs/liu/campus/service/schoolNewTeacherDzdn/ISchoolXsyouthTeacherService.java
+79
-0
smart-campus/src/main/java/yangtz/cs/liu/campus/vo/schoolNewTeacherDzdn/SchoolXsyouthTeacherDrVo.java
+94
-0
smart-campus/src/main/java/yangtz/cs/liu/campus/vo/schoolNewTeacherDzdn/SchoolXsyouthTeacherVo.java
+100
-0
smart-campus/src/main/resources/file/青年教师成长导入模板.xlsx
+0
-0
smart-campus/src/main/resources/mapper/schoolNewTeacherDzdn/SchoolXsyouthTeacherMapper.xml
+140
-0
No files found.
ruoyi-admin/src/main/resources/application.yml
View file @
5725ff0c
...
...
@@ -12,8 +12,8 @@ ruoyi:
profile
:
D:/ruoyi/uploadPath
# profile: /home/ruoyi/uploadPath
#指定上传文件到哪个服务器,读取文件(本地选localhost,测试选47.105.176.202,试运行选10.20.100.201)
serverAddress
:
http://47.105.176.202:5112
# serverAddress: http://47.105.176.202:8137
#
serverAddress: http://47.105.176.202:5112
serverAddress
:
http://47.105.176.202:5131
# serverAddress: http://10.20.100.201:57321
# 获取ip地址开关
addressEnabled
:
false
...
...
@@ -27,6 +27,7 @@ server:
#二中
# port: 11325
port
:
8848
# port: 5131
#学校内网PC端口
# port: 57321
#学校内网公众号端口
...
...
@@ -112,7 +113,7 @@ spring:
# port: 16379
# port: 9121
# 数据库索引
database
:
10
database
:
3
# 密码
# password:
password
:
qianheRedis2021
...
...
@@ -212,17 +213,17 @@ wx:
# redirect-uri: y32025c600.goho.co:10087
dd
:
#
# 本地配置
#
appKey: dingclpf8qoxvinhksyh
#
appSecret: CrlRmzkaFMH00cbipSf3g0nc_xpFGCitTAPA_cphUXg1e-DSX1hFcyVpqgos29r9
#
# 钉钉接口 获取钉钉access_token 的uri
#
access-token-uri: https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret}
#
#企业id
#
corpId: dingaa3937ff8b7dd267f2c783f7214b6d69
#
#应用id
#
agentId: 2730043705
# 本地配置
appKey
:
dingclpf8qoxvinhksyh
appSecret
:
CrlRmzkaFMH00cbipSf3g0nc_xpFGCitTAPA_cphUXg1e-DSX1hFcyVpqgos29r9
# 钉钉接口 获取钉钉access_token 的uri
access-token-uri
:
https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret}
#企业id
corpId
:
dingaa3937ff8b7dd267f2c783f7214b6d69
#应用id
agentId
:
2730043705
# 测试服务器配置
#
# 测试服务器配置
# appKey: ding5cbf7qhd55zun5jg
# appSecret: -er7LnIslFEJ2n8cJY9MdTCKiRDjoCZwQuA2XvU2Hr7fHw-cp_B2ZAhynVifqlL8
# # 钉钉接口 获取钉钉access_token 的uri
...
...
@@ -233,17 +234,21 @@ dd:
# agentId: 2760774127
# 正式配置
appKey
:
dingggqchzyvxm9e6e7v
appSecret
:
ts5hRNjO_o3QNMfEu4pM2dn71YJzw7yalnuh5LztHuCGWqUNjM2lMB1eNCSOlxNN
# 钉钉接口 获取钉钉access_token 的uri
access-token-uri
:
https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret}
#企业id
corpId
:
dingccea40788226c988f2c783f7214b6d69
#应用id
agentId
:
2765311628
#
appKey: dingggqchzyvxm9e6e7v
#
appSecret: ts5hRNjO_o3QNMfEu4pM2dn71YJzw7yalnuh5LztHuCGWqUNjM2lMB1eNCSOlxNN
#
# 钉钉接口 获取钉钉access_token 的uri
#
access-token-uri: https://oapi.dingtalk.com/gettoken?appkey=${dd.appKey}&appsecret=${dd.appSecret}
#
#企业id
#
corpId: dingccea40788226c988f2c783f7214b6d69
#
#应用id
#
agentId: 2765311628
#重定向地址
redirect-uri
:
www.dyzmxx.com
#应用首页地址
message-uri
:
http://47.105.176.202:5113/dd
#PC端首页地址
pc-message-uri
:
http://47.105.176.202:5129/dd
dd_template
:
# 职工请假消息模板
...
...
smart-campus/src/main/java/yangtz/cs/liu/campus/controller/schoolNewTeacherDzdn/SchoolXsyouthTeacherController.java
0 → 100644
View file @
5725ff0c
package
yangtz
.
cs
.
liu
.
campus
.
controller
.
schoolNewTeacherDzdn
;
import
java.io.*
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
javax.servlet.http.HttpServletResponse
;
import
com.ruoyi.common.core.domain.entity.SysDept
;
import
com.ruoyi.common.core.domain.entity.SysRole
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.system.service.ISysDeptService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
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
org.springframework.web.multipart.MultipartFile
;
import
yangtz.cs.liu.campus.domain.schoolAnnualAssessment.SchoolAnnualAssessment
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXsyouthTeacher
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXteachingAchievements
;
import
yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolXsyouthTeacherService
;
import
com.ruoyi.common.utils.poi.ExcelUtil
;
import
com.ruoyi.common.core.page.TableDataInfo
;
import
yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolXteachingAchievementsService
;
import
yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.SchoolTeacherBasichlnformationService
;
import
yangtz.cs.liu.campus.vo.schoolAnnualAssessment.SchoolAnnualAssessmentVo
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherDrVo
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherVo
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXteachingAchievementsVo
;
/**
* 青年教师成长档案Controller
*
* @author ruoyi
* @date 2024-01-29
*/
@Slf4j
@RestController
@RequestMapping
(
"/school/youthTeacher"
)
public
class
SchoolXsyouthTeacherController
extends
BaseController
{
@Autowired
private
ISchoolXsyouthTeacherService
schoolXsyouthTeacherService
;
@Autowired
private
ISysDeptService
sysDeptService
;
@Autowired
private
ISchoolXteachingAchievementsService
schoolXteachingAchievementsService
;
@Autowired
private
SchoolTeacherBasichlnformationService
basichlnformationService
;
/**
* 查询青年教师成长档案列表
*/
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
)
{
//获取当前登陆人信息
SysUser
user
=
SecurityUtils
.
getLoginUser
().
getUser
();
//获取当前登陆人的角色信息
List
<
SysRole
>
roles
=
user
.
getRoles
();
if
(
user
.
isAdmin
())
{
startPage
();
List
<
SchoolXsyouthTeacher
>
list
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
return
getDataTable
(
list
);
}
//全部权限
List
<
SysRole
>
roleList
=
roles
.
stream
().
filter
(
role
->
role
.
getRoleKey
().
equals
(
"jsdzdncj_admin"
)
||
role
.
getRoleKey
().
equals
(
"qnjscz_admin"
)).
collect
(
Collectors
.
toList
());
if
(
roleList
.
size
()
>
0
){
startPage
();
List
<
SchoolXsyouthTeacher
>
list
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
return
getDataTable
(
list
);
}
//部分权限
List
<
SysRole
>
roleList1
=
roles
.
stream
().
filter
(
role
->
role
.
getRoleKey
().
equals
(
"jsdnzj_admin"
)).
collect
(
Collectors
.
toList
());
if
(
roleList1
.
size
()
>
0
){
//教师电子档案中级管理员只能查看本部门及部门以下的数据
//根据用户部门id查询用户部门信息
SysDept
sysDept
=
sysDeptService
.
selectDeptById
(
user
.
getDeptId
());
//获取当前登陆人部门下所有人的手机号
List
<
String
>
userPhones
=
schoolXteachingAchievementsService
.
getUserPhonesByDeptId
(
sysDept
.
getDeptId
());
//根据用户手机号查询用户身份证信息
List
<
String
>
userIdCards
=
basichlnformationService
.
selectIdCardsByDdPhone
(
userPhones
);
if
(
userIdCards
.
size
()
>
0
){
schoolXsyouthTeacherVo
.
setIdCards
(
userIdCards
);
}
startPage
();
List
<
SchoolXsyouthTeacher
>
list
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
return
getDataTable
(
list
);
}
return
getDataTable
(
new
ArrayList
<>());
}
/**
* 下载附件
* @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
());
}
}
/**
* 导入教学成绩
*/
@PostMapping
(
"/importData"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
AjaxResult
importData
(
MultipartFile
file
)
throws
Exception
{
ExcelUtil
<
SchoolXsyouthTeacherDrVo
>
util
=
new
ExcelUtil
<
SchoolXsyouthTeacherDrVo
>(
SchoolXsyouthTeacherDrVo
.
class
);
List
<
SchoolXsyouthTeacherDrVo
>
list
=
util
.
importExcelNdkh
(
file
.
getInputStream
());
//先校验
schoolXsyouthTeacherService
.
checkImport
(
list
);
//数据导入
String
message
=
schoolXsyouthTeacherService
.
importData
(
list
);
return
AjaxResult
.
success
(
message
);
}
/**
* 导出青年教师成长档案列表
*/
@Log
(
title
=
"青年教师成长档案"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
)
{
int
i
=
0
;
//获取当前登陆人信息
SysUser
user
=
SecurityUtils
.
getLoginUser
().
getUser
();
//获取当前登陆人的角色信息
List
<
SysRole
>
roles
=
user
.
getRoles
();
if
(
user
.
isAdmin
())
{
List
<
SchoolXsyouthTeacher
>
list
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
List
<
SchoolXsyouthTeacherVo
>
exportList
=
new
ArrayList
<>();
for
(
SchoolXsyouthTeacher
xsyouthTeacher
:
list
)
{
//转vo
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo1
=
new
SchoolXsyouthTeacherVo
();
BeanUtils
.
copyProperties
(
xsyouthTeacher
,
schoolXsyouthTeacherVo1
);
i
++
;
schoolXsyouthTeacherVo1
.
setXh
(
i
);
exportList
.
add
(
schoolXsyouthTeacherVo1
);
}
ExcelUtil
<
SchoolXsyouthTeacherVo
>
util
=
new
ExcelUtil
<
SchoolXsyouthTeacherVo
>(
SchoolXsyouthTeacherVo
.
class
);
util
.
exportExcel
(
response
,
exportList
,
"青年教师成长档案数据"
);
}
else
{
//全部权限
List
<
SysRole
>
roleList
=
roles
.
stream
().
filter
(
role
->
role
.
getRoleKey
().
equals
(
"jsdzdncj_admin"
)
||
role
.
getRoleKey
().
equals
(
"qnjscz_admin"
)).
collect
(
Collectors
.
toList
());
if
(
roleList
.
size
()
>
0
){
List
<
SchoolXsyouthTeacher
>
list
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
List
<
SchoolXsyouthTeacherVo
>
exportList
=
new
ArrayList
<>();
for
(
SchoolXsyouthTeacher
xsyouthTeacher
:
list
)
{
//转vo
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo1
=
new
SchoolXsyouthTeacherVo
();
BeanUtils
.
copyProperties
(
xsyouthTeacher
,
schoolXsyouthTeacherVo1
);
i
++
;
schoolXsyouthTeacherVo1
.
setXh
(
i
);
exportList
.
add
(
schoolXsyouthTeacherVo1
);
}
ExcelUtil
<
SchoolXsyouthTeacherVo
>
util
=
new
ExcelUtil
<
SchoolXsyouthTeacherVo
>(
SchoolXsyouthTeacherVo
.
class
);
util
.
exportExcel
(
response
,
exportList
,
"青年教师成长档案数据"
);
}
else
{
//部分权限
List
<
SysRole
>
roleList1
=
roles
.
stream
().
filter
(
role
->
role
.
getRoleKey
().
equals
(
"jsdnzj_admin"
)).
collect
(
Collectors
.
toList
());
if
(
roleList1
.
size
()
>
0
){
//教师电子档案中级管理员只能查看本部门及部门以下的数据
//根据用户部门id查询用户部门信息
SysDept
sysDept
=
sysDeptService
.
selectDeptById
(
user
.
getDeptId
());
//获取当前登陆人部门下所有人的手机号
List
<
String
>
userPhones
=
schoolXteachingAchievementsService
.
getUserPhonesByDeptId
(
sysDept
.
getDeptId
());
//根据用户手机号查询用户身份证信息
List
<
String
>
userIdCards
=
basichlnformationService
.
selectIdCardsByDdPhone
(
userPhones
);
if
(
userIdCards
.
size
()
>
0
){
schoolXsyouthTeacherVo
.
setIdCards
(
userIdCards
);
}
List
<
SchoolXsyouthTeacher
>
list
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
List
<
SchoolXsyouthTeacherVo
>
exportList
=
new
ArrayList
<>();
for
(
SchoolXsyouthTeacher
xsyouthTeacher
:
list
)
{
//转vo
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo1
=
new
SchoolXsyouthTeacherVo
();
BeanUtils
.
copyProperties
(
xsyouthTeacher
,
schoolXsyouthTeacherVo1
);
i
++
;
schoolXsyouthTeacherVo1
.
setXh
(
i
);
exportList
.
add
(
schoolXsyouthTeacherVo1
);
}
ExcelUtil
<
SchoolXsyouthTeacherVo
>
util
=
new
ExcelUtil
<
SchoolXsyouthTeacherVo
>(
SchoolXsyouthTeacherVo
.
class
);
util
.
exportExcel
(
response
,
exportList
,
"青年教师成长档案数据"
);
}
else
{
ExcelUtil
<
SchoolXsyouthTeacherVo
>
util
=
new
ExcelUtil
<
SchoolXsyouthTeacherVo
>(
SchoolXsyouthTeacherVo
.
class
);
util
.
exportExcel
(
response
,
new
ArrayList
<>(),
"青年教师成长档案数据"
);
}
}
}
}
/**
* 获取青年教师成长档案详细信息
*/
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
return
AjaxResult
.
success
(
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherById
(
id
));
}
/**
* 新增青年教师成长档案
*/
@Log
(
title
=
"青年教师成长档案"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
public
AjaxResult
add
(
@RequestBody
SchoolXsyouthTeacher
schoolXsyouthTeacher
)
{
return
toAjax
(
schoolXsyouthTeacherService
.
insertSchoolXsyouthTeacher
(
schoolXsyouthTeacher
));
}
/**
* 修改青年教师成长档案
*/
@Log
(
title
=
"青年教师成长档案"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
public
AjaxResult
edit
(
@RequestBody
SchoolXsyouthTeacher
schoolXsyouthTeacher
)
{
return
toAjax
(
schoolXsyouthTeacherService
.
updateSchoolXsyouthTeacher
(
schoolXsyouthTeacher
));
}
/**
* 删除青年教师成长档案
*/
@Log
(
title
=
"青年教师成长档案"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
{
return
toAjax
(
schoolXsyouthTeacherService
.
deleteSchoolXsyouthTeacherByIds
(
ids
));
}
}
smart-campus/src/main/java/yangtz/cs/liu/campus/domain/schoolNewTeacherDzdn/ComperhensiveVo.java
View file @
5725ff0c
...
...
@@ -61,4 +61,9 @@ public class ComperhensiveVo {
*/
private
List
<
SpecialityVo
>
specialityVos
;
/**
* 青年教师成长档案
*/
private
List
<
SchoolXsyouthTeacher
>
schoolXsyouthTeachers
;
}
smart-campus/src/main/java/yangtz/cs/liu/campus/domain/schoolNewTeacherDzdn/SchoolXsyouthTeacher.java
0 → 100644
View file @
5725ff0c
package
yangtz
.
cs
.
liu
.
campus
.
domain
.
schoolNewTeacherDzdn
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
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
;
import
java.util.Date
;
/**
* 青年教师成长档案对象 school_xsyouth_teacher
*
* @author ruoyi
* @date 2024-01-29
*/
@Data
public
class
SchoolXsyouthTeacher
{
private
static
final
long
serialVersionUID
=
1L
;
/** 主键id */
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/** 学年 */
@Excel
(
name
=
"学年"
)
private
String
schoolYear
;
/** 学期 */
@Excel
(
name
=
"学期"
)
private
String
semester
;
/** 届别 */
@Excel
(
name
=
"届别"
)
private
String
year
;
/** 年级 */
@Excel
(
name
=
"年级"
)
private
String
grade
;
/** 学科 */
@Excel
(
name
=
"学科"
)
private
String
sub
;
/** 班级 */
@Excel
(
name
=
"班级"
)
private
String
className
;
/** 姓名 */
@Excel
(
name
=
"姓名"
)
private
String
name
;
/** 身份证号 */
@Excel
(
name
=
"身份证号"
)
private
String
idCard
;
/** 青年教师培养期 */
@Excel
(
name
=
"青年教师培养期"
)
private
String
incubationPeriod
;
/** 师生同考成绩 */
@Excel
(
name
=
"师生同考成绩"
)
private
String
sameExamResults
;
/** 研做高考题情况 */
@Excel
(
name
=
"研做高考题情况"
)
private
String
situation
;
/** 优质课比赛名称 */
@Excel
(
name
=
"优质课比赛名称"
)
private
String
classCompetitionName
;
/** 优质课比赛地址 */
@Excel
(
name
=
"优质课比赛地址"
)
private
String
classCompetitionUrl
;
/** 创建者 */
private
String
createBy
;
/** 创建时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
/** 更新者 */
private
String
updateBy
;
/** 更新时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
/** 删除状态 */
private
String
delFlag
;
}
smart-campus/src/main/java/yangtz/cs/liu/campus/mapper/schoolNewTeacherDzdn/SchoolXsyouthTeacherMapper.java
0 → 100644
View file @
5725ff0c
package
yangtz
.
cs
.
liu
.
campus
.
mapper
.
schoolNewTeacherDzdn
;
import
java.util.List
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXsyouthTeacher
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherVo
;
/**
* 青年教师成长档案Mapper接口
*
* @author ruoyi
* @date 2024-01-29
*/
public
interface
SchoolXsyouthTeacherMapper
extends
BaseMapper
<
SchoolXsyouthTeacher
>
{
/**
* 查询青年教师成长档案
*
* @param id 青年教师成长档案主键
* @return 青年教师成长档案
*/
public
SchoolXsyouthTeacher
selectSchoolXsyouthTeacherById
(
Long
id
);
/**
* 查询青年教师成长档案列表
*
* @param schoolXsyouthTeacherVo 青年教师成长档案
* @return 青年教师成长档案集合
*/
public
List
<
SchoolXsyouthTeacher
>
selectSchoolXsyouthTeacherList
(
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
);
/**
* 新增青年教师成长档案
*
* @param schoolXsyouthTeacher 青年教师成长档案
* @return 结果
*/
public
int
insertSchoolXsyouthTeacher
(
SchoolXsyouthTeacher
schoolXsyouthTeacher
);
/**
* 修改青年教师成长档案
*
* @param schoolXsyouthTeacher 青年教师成长档案
* @return 结果
*/
public
int
updateSchoolXsyouthTeacher
(
SchoolXsyouthTeacher
schoolXsyouthTeacher
);
/**
* 删除青年教师成长档案
*
* @param id 青年教师成长档案主键
* @return 结果
*/
public
int
deleteSchoolXsyouthTeacherById
(
Long
id
);
/**
* 批量删除青年教师成长档案
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public
int
deleteSchoolXsyouthTeacherByIds
(
Long
[]
ids
);
}
smart-campus/src/main/java/yangtz/cs/liu/campus/service/impl/schoolNewTeacherDzdn/SchoolAworkloadServiceImpl.java
View file @
5725ff0c
...
...
@@ -44,7 +44,7 @@ public class SchoolAworkloadServiceImpl extends ServiceImpl<SchoolAworkloadMapp
public
SchoolAworkload
selectSchoolAworkloadById
(
Long
id
)
{
SchoolAworkload
date
=
schoolAworkloadMapper
.
selectSchoolAworkloadById
(
id
);
date
.
setAmountTo
(
date
.
getEarlyReading
().
add
(
date
.
getRequiredCourses
()).
add
(
date
.
getEveningSelfStudy
()));
//
date.setAmountTo(date.getEarlyReading().add(date.getRequiredCourses()).add(date.getEveningSelfStudy()));
return
date
;
}
...
...
smart-campus/src/main/java/yangtz/cs/liu/campus/service/impl/schoolNewTeacherDzdn/SchoolTeacherBasichlnformationServicelmpl.java
View file @
5725ff0c
...
...
@@ -1264,6 +1264,8 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
SchoolXcomprehensiveHonorsServiceImpl
schoolXcomprehensiveHonorsService
;
@Autowired
SchoolXprojectResearchServiceImpl
schoolXprojectResearchService
;
@Autowired
SchoolXsyouthTeacherServiceImpl
schoolXsyouthTeacherService
;
/**
* 综合信息查询
* @param req
...
...
@@ -1332,7 +1334,7 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
// *4.2 教学成绩
SchoolXteachingAchievementsVo
schoolXteachingAchievementsVo
=
new
SchoolXteachingAchievementsVo
();
// schoolXteachingAchievementsVo.setUserId(sysUser.getUserId());
schoolXteachingAchievementsVo
.
setIdCard
(
req
.
getIdCard
());
schoolXteachingAchievementsVo
.
setIdCard
(
basicInformation
.
getIdCard
());
List
<
SchoolXteachingAchievementsVo
>
schoolXteachingAchievementsVos
=
schoolXteachingAchievementsService
.
selectSchoolXteachingAchievementsList
(
schoolXteachingAchievementsVo
);
comperhensiveVo
.
setSchoolXteachingAchievements
(
schoolXteachingAchievementsVos
);
List
<
SpecialityVo
>
specialityVos
=
new
ArrayList
<>();
...
...
@@ -1453,6 +1455,35 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
schoolAnnualAssessment
.
setIdCard
(
basicInformation
.
getIdCard
());
List
<
SchoolAnnualAssessment
>
schoolAnnualAssessments
=
schoolAnnualAssessmentService
.
selectSchoolAnnualAssessmentList
(
schoolAnnualAssessment
);
comperhensiveVo
.
setSchoolAnnualAssessment
(
schoolAnnualAssessments
);
//8 青年教师成长档案
// //判断根据名字还是身份证号查询信息
// if (StringUtils.isNotEmpty(req.getName())){
// List<SchoolXsyouthTeacher> list = new ArrayList<>();
// SchoolXsyouthTeacherVo schoolXsyouthTeacherVo = new SchoolXsyouthTeacherVo();
// schoolXsyouthTeacherVo.setName(req.getName());
// List<SchoolXsyouthTeacher> schoolXsyouthTeachers = schoolXsyouthTeacherService.selectSchoolXsyouthTeacherList(schoolXsyouthTeacherVo);
// SchoolXsyouthTeacher schoolXsyouthTeacher = schoolXsyouthTeachers.get(0);
// list.add(schoolXsyouthTeacher);
// comperhensiveVo.setSchoolXsyouthTeachers(list);
// }else if (StringUtils.isNotEmpty(req.getIdCard())){
// List<SchoolXsyouthTeacher> list = new ArrayList<>();
// SchoolXsyouthTeacherVo schoolXsyouthTeacherVo = new SchoolXsyouthTeacherVo();
// schoolXsyouthTeacherVo.setIdCard(req.getIdCard());
// List<SchoolXsyouthTeacher> schoolXsyouthTeachers = schoolXsyouthTeacherService.selectSchoolXsyouthTeacherList(schoolXsyouthTeacherVo);
// SchoolXsyouthTeacher schoolXsyouthTeacher = schoolXsyouthTeachers.get(0);
// list.add(schoolXsyouthTeacher);
// comperhensiveVo.setSchoolXsyouthTeachers(list);
// }
List
<
SchoolXsyouthTeacher
>
list
=
new
ArrayList
<>();
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
=
new
SchoolXsyouthTeacherVo
();
schoolXsyouthTeacherVo
.
setIdCard
(
basicInformation
.
getIdCard
());
List
<
SchoolXsyouthTeacher
>
schoolXsyouthTeachers
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
if
(
schoolXsyouthTeachers
.
size
()
>
0
){
SchoolXsyouthTeacher
schoolXsyouthTeacher
=
schoolXsyouthTeachers
.
get
(
0
);
list
.
add
(
schoolXsyouthTeacher
);
}
comperhensiveVo
.
setSchoolXsyouthTeachers
(
list
);
return
comperhensiveVo
;
}
public
ComperhensiveVo
comprehensiveByPhoneNumber
(
String
phoneNumber
)
throws
Exception
{
...
...
@@ -1504,7 +1535,7 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
comperhensiveVo
.
setSchoolGkAchievement
(
schoolGkAchievementVos
);
// *4.2 教学成绩
SchoolXteachingAchievementsVo
schoolXteachingAchievementsVo
=
new
SchoolXteachingAchievementsVo
();
schoolXteachingAchievementsVo
.
set
UserId
(
sysUser
.
getUserI
d
());
schoolXteachingAchievementsVo
.
set
IdCard
(
basicInformation
.
getIdCar
d
());
List
<
SchoolXteachingAchievementsVo
>
schoolXteachingAchievementsVos
=
schoolXteachingAchievementsService
.
selectSchoolXteachingAchievementsList
(
schoolXteachingAchievementsVo
);
comperhensiveVo
.
setSchoolXteachingAchievements
(
schoolXteachingAchievementsVos
);
List
<
SpecialityVo
>
specialityVos
=
new
ArrayList
<>();
...
...
@@ -1621,6 +1652,17 @@ public class SchoolTeacherBasichlnformationServicelmpl extends ServiceImpl<Schoo
schoolAnnualAssessment
.
setIdCard
(
basicInformation
.
getIdCard
());
List
<
SchoolAnnualAssessment
>
schoolAnnualAssessments
=
schoolAnnualAssessmentService
.
selectSchoolAnnualAssessmentList
(
schoolAnnualAssessment
);
comperhensiveVo
.
setSchoolAnnualAssessment
(
schoolAnnualAssessments
);
//8 青年教师成长档案
List
<
SchoolXsyouthTeacher
>
list
=
new
ArrayList
<>();
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
=
new
SchoolXsyouthTeacherVo
();
schoolXsyouthTeacherVo
.
setIdCard
(
basicInformation
.
getIdCard
());
List
<
SchoolXsyouthTeacher
>
list1
=
schoolXsyouthTeacherService
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
if
(
list1
.
size
()
>
0
){
SchoolXsyouthTeacher
schoolXsyouthTeacher
=
list1
.
get
(
0
);
list
.
add
(
schoolXsyouthTeacher
);
}
comperhensiveVo
.
setSchoolXsyouthTeachers
(
list
);
return
comperhensiveVo
;
}
}
smart-campus/src/main/java/yangtz/cs/liu/campus/service/impl/schoolNewTeacherDzdn/SchoolXsyouthTeacherServiceImpl.java
0 → 100644
View file @
5725ff0c
package
yangtz
.
cs
.
liu
.
campus
.
service
.
impl
.
schoolNewTeacherDzdn
;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.ruoyi.common.core.domain.entity.SysDictData
;
import
com.ruoyi.common.exception.ServiceException
;
import
com.ruoyi.common.utils.DateUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.system.mapper.SysDictDataMapper
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolTeacherBasicInformation
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXteachingAchievements
;
import
yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolTeacherBasichlnformationMapper
;
import
yangtz.cs.liu.campus.mapper.schoolNewTeacherDzdn.SchoolXsyouthTeacherMapper
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXsyouthTeacher
;
import
yangtz.cs.liu.campus.service.schoolNewTeacherDzdn.ISchoolXsyouthTeacherService
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherDrVo
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherVo
;
/**
* 青年教师成长档案Service业务层处理
*
* @author ruoyi
* @date 2024-01-29
*/
@Service
public
class
SchoolXsyouthTeacherServiceImpl
extends
ServiceImpl
<
SchoolXsyouthTeacherMapper
,
SchoolXsyouthTeacher
>
implements
ISchoolXsyouthTeacherService
{
@Autowired
private
SchoolXsyouthTeacherMapper
schoolXsyouthTeacherMapper
;
@Autowired
private
SysDictDataMapper
sysDictDataMapper
;
@Autowired
private
SchoolTeacherBasichlnformationMapper
schoolTeacherBasichlnformationMapper
;
/**
* 查询青年教师成长档案
*
* @param id 青年教师成长档案主键
* @return 青年教师成长档案
*/
@Override
public
SchoolXsyouthTeacher
selectSchoolXsyouthTeacherById
(
Long
id
)
{
return
schoolXsyouthTeacherMapper
.
selectSchoolXsyouthTeacherById
(
id
);
}
/**
* 查询青年教师成长档案列表
*
* @param schoolXsyouthTeacherVo 青年教师成长档案
* @return 青年教师成长档案
*/
@Override
public
List
<
SchoolXsyouthTeacher
>
selectSchoolXsyouthTeacherList
(
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
)
{
return
schoolXsyouthTeacherMapper
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
}
/**
* 新增青年教师成长档案
*
* @param schoolXsyouthTeacher 青年教师成长档案
* @return 结果
*/
@Override
public
int
insertSchoolXsyouthTeacher
(
SchoolXsyouthTeacher
schoolXsyouthTeacher
)
{
//判断是否重复添加
String
idCard
=
schoolXsyouthTeacher
.
getIdCard
();
// LambdaQueryWrapper<SchoolTeacherBasicInformation> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(SchoolTeacherBasicInformation::getIdCard,idCard);
// SchoolTeacherBasicInformation schoolTeacherBasicInformation = schoolTeacherBasichlnformationMapper.selectOne(wrapper);
// if (!schoolTeacherBasicInformation.getName().equals(schoolXsyouthTeacher.getName())){
// throw new ServiceException("身份证号重复,请重新录入!");
// }
SchoolXsyouthTeacherVo
schoolXsyouthTeacher1
=
new
SchoolXsyouthTeacherVo
();
// schoolXsyouthTeacher1.setName(schoolXsyouthTeacher.getName());
schoolXsyouthTeacher1
.
setIdCard
(
idCard
);
List
<
SchoolXsyouthTeacher
>
schoolXsyouthTeachers
=
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacher1
);
if
(
schoolXsyouthTeachers
.
size
()
>
0
){
throw
new
ServiceException
(
"已存在该教师!"
);
}
//判断青年教师培养期格式是否正确
String
incubationPeriod
=
schoolXsyouthTeacher
.
getIncubationPeriod
();
String
[]
split
=
incubationPeriod
.
split
(
"-"
);
if
(!
incubationPeriod
.
contains
(
"-"
)
||
split
.
length
!=
2
){
throw
new
ServiceException
(
"青年教师培养期输入格式错误!例如:2023-2024"
);
}
if
(!(
split
[
0
].
matches
(
"\\d+"
)
&&
split
[
1
].
matches
(
"\\d+"
))){
throw
new
ServiceException
(
"青年教师培养期输入格式错误!例如:2023-2024"
);
}
else
{
if
(
split
[
0
].
length
()
!=
4
||
split
[
1
].
length
()
!=
4
){
throw
new
ServiceException
(
"青年教师培养期输入格式错误!例如:2023-2024"
);
}
}
//班级输入是否正确
String
className
=
schoolXsyouthTeacher
.
getClassName
();
String
newClassName
=
className
.
replaceAll
(
","
,
","
);
schoolXsyouthTeacher
.
setClassName
(
newClassName
);
schoolXsyouthTeacher
.
setCreateBy
(
SecurityUtils
.
getUsername
());
schoolXsyouthTeacher
.
setCreateTime
(
DateUtils
.
getNowDate
());
return
schoolXsyouthTeacherMapper
.
insertSchoolXsyouthTeacher
(
schoolXsyouthTeacher
);
}
/**
* 修改青年教师成长档案
*
* @param schoolXsyouthTeacher 青年教师成长档案
* @return 结果
*/
@Override
public
int
updateSchoolXsyouthTeacher
(
SchoolXsyouthTeacher
schoolXsyouthTeacher
)
{
//判断是否重复添加
String
idCard
=
schoolXsyouthTeacher
.
getIdCard
();
// LambdaQueryWrapper<SchoolTeacherBasicInformation> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(SchoolTeacherBasicInformation::getIdCard,idCard);
// SchoolTeacherBasicInformation schoolTeacherBasicInformation = schoolTeacherBasichlnformationMapper.selectOne(wrapper);
// if (!schoolTeacherBasicInformation.getName().equals(schoolXsyouthTeacher.getName())){
// throw new ServiceException("身份证号重复,请重新录入!");
// }
SchoolXsyouthTeacherVo
schoolXsyouthTeacher1
=
new
SchoolXsyouthTeacherVo
();
// schoolXsyouthTeacher1.setName(schoolXsyouthTeacher.getName());
schoolXsyouthTeacher1
.
setIdCard
(
idCard
);
List
<
SchoolXsyouthTeacher
>
schoolXsyouthTeachers
=
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacher1
);
if
(
schoolXsyouthTeachers
.
size
()
==
1
){
if
(!
schoolXsyouthTeachers
.
get
(
0
).
getId
().
equals
(
schoolXsyouthTeacher
.
getId
())){
throw
new
ServiceException
(
"已存在该教师!"
);
}
}
else
{
throw
new
ServiceException
(
"系统错误,请联系管理员!"
);
}
//判断青年教师培养期格式是否正确
String
incubationPeriod
=
schoolXsyouthTeacher
.
getIncubationPeriod
();
String
[]
split
=
incubationPeriod
.
split
(
"-"
);
if
(!
incubationPeriod
.
contains
(
"-"
)
||
split
.
length
!=
2
){
throw
new
ServiceException
(
"青年教师培养期输入格式错误!例如:2023-2024"
);
}
if
(!(
split
[
0
].
matches
(
"\\d+"
)
&&
split
[
1
].
matches
(
"\\d+"
))){
throw
new
ServiceException
(
"青年教师培养期输入格式错误!例如:2023-2024"
);
}
else
{
if
(
split
[
0
].
length
()
!=
4
||
split
[
1
].
length
()
!=
4
){
throw
new
ServiceException
(
"青年教师培养期输入格式错误!例如:2023-2024"
);
}
}
//班级输入是否正确
String
className
=
schoolXsyouthTeacher
.
getClassName
();
String
newClassName
=
className
.
replaceAll
(
","
,
","
);
schoolXsyouthTeacher
.
setClassName
(
newClassName
);
schoolXsyouthTeacher
.
setUpdateBy
(
SecurityUtils
.
getUsername
());
schoolXsyouthTeacher
.
setUpdateTime
(
DateUtils
.
getNowDate
());
return
schoolXsyouthTeacherMapper
.
updateSchoolXsyouthTeacher
(
schoolXsyouthTeacher
);
}
/**
* 批量删除青年教师成长档案
*
* @param ids 需要删除的青年教师成长档案主键
* @return 结果
*/
@Override
public
int
deleteSchoolXsyouthTeacherByIds
(
Long
[]
ids
)
{
return
schoolXsyouthTeacherMapper
.
deleteSchoolXsyouthTeacherByIds
(
ids
);
}
/**
* 删除青年教师成长档案信息
*
* @param id 青年教师成长档案主键
* @return 结果
*/
@Override
public
int
deleteSchoolXsyouthTeacherById
(
Long
id
)
{
return
schoolXsyouthTeacherMapper
.
deleteSchoolXsyouthTeacherById
(
id
);
}
/**
* 校验数据
* @param list
*/
@Override
public
void
checkImport
(
List
<
SchoolXsyouthTeacherDrVo
>
list
)
{
//检验是否为空
if
(
StringUtils
.
isNull
(
list
)
||
list
.
size
()
==
0
)
{
throw
new
ServiceException
(
"导入数据不能为空"
);
}
//查询学期字典键值
List
<
SysDictData
>
semester
=
sysDictDataMapper
.
selectDictDataByType
(
"semester_jsdzda"
);
//查询年级字典键值
List
<
SysDictData
>
grade
=
sysDictDataMapper
.
selectDictDataByType
(
"grade_da"
);
//查询学科字典键值
List
<
SysDictData
>
sub
=
sysDictDataMapper
.
selectDictDataByType
(
"sub_dzdn"
);
// 准备记录日志数据
int
failureNum
=
0
;
StringBuilder
failureMsg
=
new
StringBuilder
();
for
(
SchoolXsyouthTeacherDrVo
schoolXsyouthTeacherDrVo
:
list
)
{
if
(
StringUtils
.
isNull
(
schoolXsyouthTeacherDrVo
.
getSchoolYear
()))
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学年为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getSemester
()))
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学期为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getYear
())){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、届别为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getGrade
())){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、年级为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getSub
())){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学科为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getClassName
())){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、班级为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getName
())){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、姓名为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getIdCard
())){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、身份证号为空,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
schoolXsyouthTeacherDrVo
.
getIncubationPeriod
())){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、青年教师培养期为空,请您重新输入! "
);
}
else
{
//判断是否身份证号是否存在
String
idCard
=
schoolXsyouthTeacherDrVo
.
getIdCard
();
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
=
new
SchoolXsyouthTeacherVo
();
schoolXsyouthTeacherVo
.
setIdCard
(
idCard
);
List
<
SchoolXsyouthTeacher
>
schoolXsyouthTeachers
=
schoolXsyouthTeacherMapper
.
selectSchoolXsyouthTeacherList
(
schoolXsyouthTeacherVo
);
if
(
schoolXsyouthTeachers
.
size
()
>
0
){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、身份证号为"
+
idCard
+
"的教师已存在,请您重新输入! "
);
}
else
{
//判断学年输入是否正确
String
schoolYear
=
schoolXsyouthTeacherDrVo
.
getSchoolYear
();
if
(!
schoolYear
.
contains
(
"-"
)){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学年输入格式错误,请您重新输入! "
);
}
else
{
String
[]
split
=
schoolYear
.
split
(
"-"
);
if
(
split
.
length
!=
2
){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学年输入格式错误,请您重新输入! "
);
}
else
if
(!(
split
[
0
].
matches
(
"\\d+"
)
&&
split
[
1
].
matches
(
"\\d+"
))){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学年输入格式错误,请您重新输入! "
);
}
else
{
//判断学期是否正确
String
semester1
=
""
;
for
(
SysDictData
sysDictData
:
semester
)
{
if
(
schoolXsyouthTeacherDrVo
.
getSemester
().
equals
(
sysDictData
.
getDictLabel
())){
semester1
=
sysDictData
.
getDictValue
();
}
}
if
(
StringUtils
.
isEmpty
(
semester1
)){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学期输入错误,请您重新输入! "
);
}
else
{
schoolXsyouthTeacherDrVo
.
setSemester
(
semester1
);
//判断届别是否正确
if
(!
schoolXsyouthTeacherDrVo
.
getYear
().
matches
(
"\\d+"
)){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、届别输入错误,请您重新输入! "
);
}
else
{
//判断年级是否正确
String
grade1
=
""
;
for
(
SysDictData
sysDictData
:
grade
)
{
if
(
schoolXsyouthTeacherDrVo
.
getGrade
().
equals
(
sysDictData
.
getDictLabel
())){
grade1
=
sysDictData
.
getDictValue
();
}
}
//判断学科是否正确
String
sub1
=
""
;
for
(
SysDictData
sysDictData
:
sub
)
{
if
(
schoolXsyouthTeacherDrVo
.
getSub
().
equals
(
sysDictData
.
getDictLabel
())){
sub1
=
sysDictData
.
getDictValue
();
}
}
if
(
StringUtils
.
isEmpty
(
grade1
)){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、年级输入错误,请您重新输入! "
);
}
else
if
(
StringUtils
.
isEmpty
(
sub1
)){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、学科输入错误,请您重新输入! "
);
}
else
{
schoolXsyouthTeacherDrVo
.
setGrade
(
grade1
);
schoolXsyouthTeacherDrVo
.
setSub
(
sub1
);
//判断班级是否正确
String
className
=
schoolXsyouthTeacherDrVo
.
getClassName
();
//将所有中文逗号替换成英文逗号
String
newClassName
=
className
.
replaceAll
(
","
,
","
);
String
[]
spl
=
newClassName
.
split
(
","
);
for
(
int
i
=
0
;
i
<
spl
.
length
;
i
++)
{
if
(!
spl
[
i
].
matches
(
"\\d+"
)){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、班级输入错误,请您重新输入! "
);
break
;
}
}
schoolXsyouthTeacherDrVo
.
setClassName
(
newClassName
);
//校验前十七位是否为数字
for
(
int
i
=
0
;
i
<
17
;
i
++)
{
if
(!
Character
.
isDigit
(
schoolXsyouthTeacherDrVo
.
getIdCard
().
charAt
(
i
))){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、身份证号输入错误,请您重新输入! "
);
break
;
}
}
//判断青年教师培养期输入是否正确
String
incubationPeriod
=
schoolXsyouthTeacherDrVo
.
getIncubationPeriod
();
if
(!
incubationPeriod
.
contains
(
"-"
)){
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、青年教师培养期输入格式错误,请您重新输入! "
);
}
else
{
String
[]
split1
=
incubationPeriod
.
split
(
"-"
);
if
(
split1
.
length
!=
2
)
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、青年教师培养期输入格式错误,请您重新输入! "
);
}
else
if
(!(
split1
[
0
].
matches
(
"\\d+"
)
&&
split1
[
1
].
matches
(
"\\d+"
)))
{
failureNum
++;
failureMsg
.
append
(
"<br/>"
+
failureNum
+
"、青年教师培养期输入格式错误,请您重新输入! "
);
}
}
}
}
}
}
}
}
}
}
if
(
failureNum
>
0
)
{
failureMsg
.
insert
(
0
,
"很抱歉,导入失败!共"
+
failureNum
+
"条数据格式不正确,错误如下:"
);
throw
new
ServiceException
(
failureMsg
.
toString
());
}
}
/**
* 导入数据
* @param list
* @return
*/
@Override
public
String
importData
(
List
<
SchoolXsyouthTeacherDrVo
>
list
)
{
StringBuilder
successMsg
=
new
StringBuilder
();
//批量导入年度考核数据
List
<
SchoolXsyouthTeacher
>
list1
=
new
ArrayList
<>();
for
(
SchoolXsyouthTeacherDrVo
schoolXsyouthTeacherDrVo
:
list
)
{
//转实体对象
SchoolXsyouthTeacher
schoolXsyouthTeacher
=
new
SchoolXsyouthTeacher
();
BeanUtils
.
copyProperties
(
schoolXsyouthTeacherDrVo
,
schoolXsyouthTeacher
);
list1
.
add
(
schoolXsyouthTeacher
);
}
boolean
b
=
saveBatch
(
list1
);
if
(!
b
){
throw
new
ServiceException
(
"导入失败"
);
}
successMsg
.
insert
(
0
,
"恭喜您,数据已导入成功!"
);
return
successMsg
.
toString
();
}
}
smart-campus/src/main/java/yangtz/cs/liu/campus/service/schoolNewTeacherDzdn/ISchoolXsyouthTeacherService.java
0 → 100644
View file @
5725ff0c
package
yangtz
.
cs
.
liu
.
campus
.
service
.
schoolNewTeacherDzdn
;
import
java.util.List
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXsyouthTeacher
;
import
yangtz.cs.liu.campus.domain.schoolNewTeacherDzdn.SchoolXteachingAchievements
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherDrVo
;
import
yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherVo
;
/**
* 青年教师成长档案Service接口
*
* @author ruoyi
* @date 2024-01-29
*/
public
interface
ISchoolXsyouthTeacherService
extends
IService
<
SchoolXsyouthTeacher
>
{
/**
* 查询青年教师成长档案
*
* @param id 青年教师成长档案主键
* @return 青年教师成长档案
*/
public
SchoolXsyouthTeacher
selectSchoolXsyouthTeacherById
(
Long
id
);
/**
* 查询青年教师成长档案列表
*
* @param schoolXsyouthTeacherVo 青年教师成长档案
* @return 青年教师成长档案集合
*/
public
List
<
SchoolXsyouthTeacher
>
selectSchoolXsyouthTeacherList
(
SchoolXsyouthTeacherVo
schoolXsyouthTeacherVo
);
/**
* 新增青年教师成长档案
*
* @param schoolXsyouthTeacher 青年教师成长档案
* @return 结果
*/
public
int
insertSchoolXsyouthTeacher
(
SchoolXsyouthTeacher
schoolXsyouthTeacher
);
/**
* 修改青年教师成长档案
*
* @param schoolXsyouthTeacher 青年教师成长档案
* @return 结果
*/
public
int
updateSchoolXsyouthTeacher
(
SchoolXsyouthTeacher
schoolXsyouthTeacher
);
/**
* 批量删除青年教师成长档案
*
* @param ids 需要删除的青年教师成长档案主键集合
* @return 结果
*/
public
int
deleteSchoolXsyouthTeacherByIds
(
Long
[]
ids
);
/**
* 删除青年教师成长档案信息
*
* @param id 青年教师成长档案主键
* @return 结果
*/
public
int
deleteSchoolXsyouthTeacherById
(
Long
id
);
/**
* 校验数据
* @param list
*/
void
checkImport
(
List
<
SchoolXsyouthTeacherDrVo
>
list
);
/**
* 数据导入
* @param list
* @return
*/
String
importData
(
List
<
SchoolXsyouthTeacherDrVo
>
list
);
}
smart-campus/src/main/java/yangtz/cs/liu/campus/vo/schoolNewTeacherDzdn/SchoolXsyouthTeacherDrVo.java
0 → 100644
View file @
5725ff0c
package
yangtz
.
cs
.
liu
.
campus
.
vo
.
schoolNewTeacherDzdn
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.ruoyi.common.annotation.Excel
;
import
lombok.Data
;
import
java.util.Date
;
/**
* 青年教师成长档案对象 school_xsyouth_teacher
*
* @author ruoyi
* @date 2024-01-29
*/
@Data
public
class
SchoolXsyouthTeacherDrVo
{
/** 主键id */
private
Long
id
;
/** 学年 */
@Excel
(
name
=
"学年"
)
private
String
schoolYear
;
/** 学期 */
@Excel
(
name
=
"学期"
)
private
String
semester
;
/** 届别 */
@Excel
(
name
=
"届别"
)
private
String
year
;
/** 年级 */
@Excel
(
name
=
"年级"
)
private
String
grade
;
/** 学科 */
@Excel
(
name
=
"学科"
)
private
String
sub
;
/** 班级 */
@Excel
(
name
=
"班级"
)
private
String
className
;
/** 姓名 */
@Excel
(
name
=
"姓名"
)
private
String
name
;
/** 身份证号 */
@Excel
(
name
=
"身份证号"
)
private
String
idCard
;
/** 青年教师培养期 */
@Excel
(
name
=
"青年教师培养期"
)
private
String
incubationPeriod
;
/** 师生同考成绩 */
@Excel
(
name
=
"师生同考成绩"
)
private
String
sameExamResults
;
/** 研做高考题情况 */
@Excel
(
name
=
"研做高考题情况"
)
private
String
situation
;
/** 优质课比赛名称 */
private
String
classCompetitionName
;
/** 优质课比赛地址 */
private
String
classCompetitionUrl
;
/** 创建者 */
private
String
createBy
;
/** 创建时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
/** 更新者 */
private
String
updateBy
;
/** 更新时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
/** 删除状态 */
private
String
delFlag
;
/** 开始时间 */
private
String
startTime
;
/** 结束时间 */
private
String
endTime
;
}
smart-campus/src/main/java/yangtz/cs/liu/campus/vo/schoolNewTeacherDzdn/SchoolXsyouthTeacherVo.java
0 → 100644
View file @
5725ff0c
package
yangtz
.
cs
.
liu
.
campus
.
vo
.
schoolNewTeacherDzdn
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.ruoyi.common.annotation.Excel
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
/**
* 青年教师成长档案对象 school_xsyouth_teacher
*
* @author ruoyi
* @date 2024-01-29
*/
@Data
public
class
SchoolXsyouthTeacherVo
{
private
Integer
xh
;
/** 主键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
=
"学科"
,
dictType
=
"sub_dzdn"
)
private
String
sub
;
/** 班级 */
@Excel
(
name
=
"班级"
)
private
String
className
;
/** 姓名 */
@Excel
(
name
=
"姓名"
)
private
String
name
;
/** 身份证号 */
@Excel
(
name
=
"身份证号"
)
private
String
idCard
;
/** 身份证号 */
private
List
<
String
>
idCards
;
/** 青年教师培养期 */
@Excel
(
name
=
"青年教师培养期"
)
private
String
incubationPeriod
;
/** 师生同考成绩 */
@Excel
(
name
=
"师生同考成绩"
)
private
String
sameExamResults
;
/** 研做高考题情况 */
@Excel
(
name
=
"研做高考题情况"
)
private
String
situation
;
/** 优质课比赛名称 */
private
String
classCompetitionName
;
/** 优质课比赛地址 */
private
String
classCompetitionUrl
;
/** 创建者 */
private
String
createBy
;
/** 创建时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
createTime
;
/** 更新者 */
private
String
updateBy
;
/** 更新时间 */
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
updateTime
;
/** 删除状态 */
private
String
delFlag
;
/** 开始时间 */
private
String
startTime
;
/** 结束时间 */
private
String
endTime
;
}
smart-campus/src/main/resources/file/青年教师成长导入模板.xlsx
0 → 100644
View file @
5725ff0c
File added
smart-campus/src/main/resources/mapper/schoolNewTeacherDzdn/SchoolXsyouthTeacherMapper.xml
0 → 100644
View file @
5725ff0c
<?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.SchoolXsyouthTeacherMapper"
>
<resultMap
type=
"SchoolXsyouthTeacher"
id=
"SchoolXsyouthTeacherResult"
>
<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=
"sub"
column=
"sub"
/>
<result
property=
"className"
column=
"class_name"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"idCard"
column=
"id_card"
/>
<result
property=
"incubationPeriod"
column=
"incubation_period"
/>
<result
property=
"sameExamResults"
column=
"same_exam_results"
/>
<result
property=
"situation"
column=
"situation"
/>
<result
property=
"classCompetitionName"
column=
"class_competition_name"
/>
<result
property=
"classCompetitionUrl"
column=
"class_competition_url"
/>
<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=
"selectSchoolXsyouthTeacherVo"
>
select id, school_year, semester, year, grade, sub, class_name, name, id_card, incubation_period, same_exam_results, situation, class_competition_name, class_competition_url, create_by, create_time, update_by, update_time, del_flag from school_xsyouth_teacher
</sql>
<select
id=
"selectSchoolXsyouthTeacherList"
parameterType=
"yangtz.cs.liu.campus.vo.schoolNewTeacherDzdn.SchoolXsyouthTeacherVo"
resultMap=
"SchoolXsyouthTeacherResult"
>
<include
refid=
"selectSchoolXsyouthTeacherVo"
/>
<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=
"sub != null and sub != ''"
>
and sub = #{sub}
</if>
<if
test=
"className != null and className != ''"
>
and class_name like concat('%', #{className}, '%')
</if>
<if
test=
"name != null and name != ''"
>
and name like concat('%', #{name}, '%')
</if>
<if
test=
"idCard != null and idCard != ''"
>
and id_card = #{idCard}
</if>
<if
test=
"incubationPeriod != null and incubationPeriod != ''"
>
and incubation_period = #{incubationPeriod}
</if>
<if
test=
"sameExamResults != null and sameExamResults != ''"
>
and same_exam_results = #{sameExamResults}
</if>
<if
test=
"situation != null and situation != ''"
>
and situation = #{situation}
</if>
<if
test=
"startTime != null and startTime != ''"
>
and SUBSTR(incubation_period,1,4)
>
= #{startTime}
</if>
<if
test=
"endTime != null and endTime != ''"
>
and SUBSTR(incubation_period,6,4)
<
= #{endTime}
</if>
<if
test=
"idCards != null"
>
and id_card in
<foreach
item=
"idCard"
collection=
"idCards"
open=
"("
separator=
","
close=
")"
>
#{idCard}
</foreach>
</if>
</where>
</select>
<select
id=
"selectSchoolXsyouthTeacherById"
parameterType=
"Long"
resultMap=
"SchoolXsyouthTeacherResult"
>
<include
refid=
"selectSchoolXsyouthTeacherVo"
/>
where id = #{id}
</select>
<insert
id=
"insertSchoolXsyouthTeacher"
parameterType=
"SchoolXsyouthTeacher"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into school_xsyouth_teacher
<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=
"sub != null"
>
sub,
</if>
<if
test=
"className != null"
>
class_name,
</if>
<if
test=
"name != null"
>
name,
</if>
<if
test=
"idCard != null"
>
id_card,
</if>
<if
test=
"incubationPeriod != null"
>
incubation_period,
</if>
<if
test=
"sameExamResults != null"
>
same_exam_results,
</if>
<if
test=
"situation != null"
>
situation,
</if>
<if
test=
"classCompetitionName != null"
>
class_competition_name,
</if>
<if
test=
"classCompetitionUrl != null"
>
class_competition_url,
</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>
</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=
"sub != null"
>
#{sub},
</if>
<if
test=
"className != null"
>
#{className},
</if>
<if
test=
"name != null"
>
#{name},
</if>
<if
test=
"idCard != null"
>
#{idCard},
</if>
<if
test=
"incubationPeriod != null"
>
#{incubationPeriod},
</if>
<if
test=
"sameExamResults != null"
>
#{sameExamResults},
</if>
<if
test=
"situation != null"
>
#{situation},
</if>
<if
test=
"classCompetitionName != null"
>
#{classCompetitionName},
</if>
<if
test=
"classCompetitionUrl != null"
>
#{classCompetitionUrl},
</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>
</trim>
</insert>
<update
id=
"updateSchoolXsyouthTeacher"
parameterType=
"SchoolXsyouthTeacher"
>
update school_xsyouth_teacher
<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=
"sub != null"
>
sub = #{sub},
</if>
<if
test=
"className != null"
>
class_name = #{className},
</if>
<if
test=
"name != null"
>
name = #{name},
</if>
<if
test=
"idCard != null"
>
id_card = #{idCard},
</if>
<if
test=
"incubationPeriod != null"
>
incubation_period = #{incubationPeriod},
</if>
<if
test=
"sameExamResults != null"
>
same_exam_results = #{sameExamResults},
</if>
<if
test=
"situation != null"
>
situation = #{situation},
</if>
<if
test=
"classCompetitionName != null"
>
class_competition_name = #{classCompetitionName},
</if>
<if
test=
"classCompetitionUrl != null"
>
class_competition_url = #{classCompetitionUrl},
</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>
</trim>
where id = #{id}
</update>
<update
id=
"deleteSchoolXsyouthTeacherById"
parameterType=
"Long"
>
update school_xsyouth_teacher set del_flag = '0' where id = #{id}
</update>
<update
id=
"deleteSchoolXsyouthTeacherByIds"
parameterType=
"String"
>
update school_xsyouth_teacher set del_flag = '1' where id in
<foreach
item=
"id"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
</update>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment