/**
* Excel到入老师信息
*/
@SuppressWarnings("unchecked")
public String readExcel(){
try {
InputStream in = new FileInputStream(excelFile);
List<TeacherView> lists=null;
Map<String,String> teaMap=new HashMap<String, String>();
teaMap.put("schId", schID);
//读取学校的老师信息
final List<TeacherView> teaList=teacherService.queryTeacherAllSchool(teaMap);
final List<Subjects> subList = subjectService.selectSubjectList(Integer.parseInt(schID));//根据学校读取科目
final Map<String,String> telMap=new HashMap<String, String>();
final Map<String,String> nameMap=new HashMap<String, String>();
final Map<String,String> classAndSub=new HashMap<String, String>();
Map<String, Object> resultMap=LoadXLS.load(in,3,new LoadXLSCallBack<TeacherView>(){
@Override
public TeacherView getObject(List<String> list) {
int gbnum=0;
TeacherView tv=new TeacherView();
String teacherName=list.get(1).trim();//老师姓名
String mobile=list.get(2).trim();//电话
String roleName=list.get(3).trim();//角色名称
String sex=list.get(4).trim();//性别
String address=list.get(5);
if(address!=null && address!=""){
address=address.trim();
}
String classInfo=list.get(6);//班级
if(classInfo!=null && classInfo!=""){
classInfo=classInfo.trim();
}
String subInfo=list.get(7);//科目
if(subInfo!=null && subInfo!=""){
subInfo=subInfo.trim();
}
String errorMsg="";
if(teacherName.length()<1){
errorMsg+="老师名称不能为空,";
}else{
if(telMap.get(teacherName)==null){
telMap.put(teacherName, teacherName);
Map<String,Object> map=new HashMap<String, Object>();
map.put("teacherName", teacherName);
int teacherrow=teacherService.teacherNameIsExist(map);
if(teacherrow==-1){
errorMsg+="老师姓名已存在,";
}else{
tv.setTeacherName(teacherName);
}
}else{
errorMsg+="导入数据中老师姓名已存在,";
}
}
if(mobile.length()<1){
errorMsg+="电话不能为空,";
}else{
//获取电话号码 判断电话号码是否合法
// Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[-9]))\\d{8}$");
// Matcher m = p.matcher(mobile);
if(!AllUtils.isMobileNO(mobile)){
errorMsg+="电话号码格式错误,";
}
//if(telMap.get(mobile)==null && nameMap.get(teacherName)==null){
if(telMap.containsKey(mobile) && nameMap.containsKey(teacherName)){
errorMsg+="老师姓名和电话存在重复,";
}else{
telMap.put(mobile, mobile);
telMap.put(teacherName, teacherName);
if(teaList!=null && teaList.size()>0){
for (TeacherView t:teaList) {
if(t!=null){
if(mobile.equals(t.getMobile()) && teacherName.equals(t.getTeacherName())){
errorMsg+="老师已存在,";
break;
}
}
}
}
}
}
if(roleName.length()<1){
errorMsg+="角色名称不能为空,";
}else{
int roleID = teacherService.getRoleIdByName(roleName);
if (roleID == 0) {
errorMsg+="角色名称错误,";
}else{
tv.setRoleId(roleID+"");
tv.setRoleName(roleName);//角色名称
//如果是年级组长则判断年级是否存在
/*System.out.println(roleName);
if("年级组长".equals(roleName)){
if(!classInfo.isEmpty()){
for (GradeBaseInfo gb:gradeList) {
if(gb!=null){
if(gb.getGradeName()==classInfo){
tv.setGradeId(gb.getId()+"");
break;
}
}
}
if(tv.getGradeId()==null || tv.getGradeId()==""){
errorMsg+="年级不存在,";
}
}
}*/
}
}
if(sex.length()<1){
errorMsg+="性别不能为空,";
}else{
//获取性别 判断性别是否合法
if(!("男".equals(sex) || "女".equals(sex))){
errorMsg+="性别错误,";
}
}
/**
* 判断科目
*/
boolean bool=false;
String subID="";
if(subInfo!=null && subInfo.length()>0){
for (Subjects subjects : subList) {
if(subjects!=null){
if(subjects.getSubjectname().equals(subInfo)){
bool=true;
tv.setSub(subjects.getSubjectID().toString());
subID=subjects.getSubjectID().toString();
break;
}else{
bool=false;
}
}
}
}
//判断科目是否存在
if(bool==false && subID!=""){
errorMsg+="科目不存在,";
}
if(!classInfo.isEmpty() && subID.isEmpty()){
errorMsg+="科目不能为空,";
}
if(classInfo.isEmpty() && !subID.isEmpty()){
errorMsg+="班级不能为空,";
}
//判断班级是否存在
String classIds="";
if(!classInfo.isEmpty()){
//String className=teacherView
int index = classInfo.replace(",", ",").indexOf(",");
// 如果在导入的Excel中一个老师管辖多个班级,“三(1),三(2)”这样的情况,对班级进行分割判断,然后添加
if (index > 0) {
String[] str =classInfo.replace(",", ",").split(",");
for (int j = 0; j < str.length; j++) {
Map<String,Object> classMap=new HashMap<String, Object>();
String className=str[j];
className=className.replace("(", "(");
className=className.replace(")", ")");
classMap.put("className", className);
classMap.put("schId", schID);
// 根据班级名称和学校ID,去查找班级信息
try {
ClassBaseInfo cbs = classBaseService.selectClassBaseByName(classMap);
if(cbs==null){
errorMsg+="班级名称错误,";
}else{
if(cbs.getId()!=null){
classIds+=cbs.getId()+",";
if(subID!="" && subID!=null){
if(classAndSub.containsKey((subID+cbs.getId()))){
errorMsg+="班级科目绑定重复,";
}
classAndSub.put((subID+cbs.getId()), (subID+cbs.getId()));
}
}
}
} catch (Exception e) {
}
}
}
// 当一个老师只管理一个班级的时候
if (index == -1) {
try {
Map<String,Object> classMap=new HashMap<String, Object>();
classInfo=classInfo.replace("(", "(");
classInfo=classInfo.replace(")", ")");
classMap.put("className",classInfo);
classMap.put("schId",schID);
//查找班级的名称是否存在
ClassBaseInfo cbs = classBaseService.selectClassBaseByName(classMap);
if (cbs== null) {
errorMsg+="班级名称错误,";
}else{
if(cbs.getId()!=null){
classIds+=cbs.getId()+",";
if(subID!="" && subID!=null){
if(classAndSub.containsKey((subID+cbs.getId()))){
errorMsg+="班级科目绑定重复,";
}
classAndSub.put((subID+cbs.getId()), (subID+cbs.getId()));
}
}
}
} catch (Exception e) {
}
}
}
//去除最后,读取班级集合
if(classIds!="" && classIds!=null){
classIds=classIds.substring(0,classIds.length()-1);
}
//数据库老师名存在性判断
//去除最后,
if(errorMsg!="" && errorMsg!=null){
errorMsg=errorMsg.substring(0,errorMsg.length()-1);
}
tv.setMobile(mobile);
tv.setRoleName(roleName);
tv.setSex(sex);
tv.setAddress(address);
tv.setOwnerClass(classInfo);
tv.setSchId(Integer.parseInt(schID));
tv.setErrMsg(errorMsg);
tv.setClassIds(classIds);
return tv;
}
@Override
public int getColumnSize() {
return 8;
}
@Override
public String[] getHeadColumn() {
// TODO Auto-generated method stub
return new String[]{"序号","姓名","手机号码","角色","性别","住址","管辖
雕_零
- 粉丝: 0
- 资源: 4
最新资源
- 基于LSTM-AdaBoost长短期记忆网络结合AdaBoost多输入单输出回归预测 python代码 1.输入多个特征,输出单个变量,多变量回归预测; 2.data为数据集,excel数据,前6列
- 基于JavaScript/TypeScript的鸿蒙OS Next系统图片压缩相册&相机应用源码
- 基于JavaScript与多语言结合的房屋中介系统设计源码
- 基于matlab实现改进的人工势场法,apf算法进行路径规划,通过改进斥力函数和引入模拟 火算法,克服局部极小值和目标不可达问题 并附送未改进的apf算法,可做改进与未改进的效果比对使用,如图,未改
- 08背靠背变器,PQ-QV控制,有名值,simulink仿真模型,2022b版本 ①其他模型看我主页,都是个人搭建,无团队 ②变器额定容量为2MW,额定线电压为690V,直流侧电压1250V,机侧PQ
- 基于C#与PHP的ICEPOS开源收银系统设计源码
- 风储调频,风调频,同步机调频 有视频,有文献 simulink风储调频,风电分风速调频,有低中高三个风速段,风储联合调频,改善系统频率 高风速情况下,由于释放的转子动能大,所以系统频率变化大,可以
- 基于Bootstrap的Emlog5.3.x后台YEadmin自适应模版设计源码
- 基于C语言的2024年单片机原理及应用实验设计源码
- 基于微信小程序的健身协会活动预约与管理设计源码
- 基于OpenHorizon的跨平台文件管理设计源码
- 基于Vue+TypeScript的游客服务系统客户端设计源码
- 基于C#和ActiveReports的WinForms报表设计源码
- 基于Java与HTML技术的豆瓣数据爬虫与动态展示设计源码
- 基于HAR Editor和Tornado Server的HTTP请求定时任务自动执行框架设计源码
- 基于fpga实现千兆以太网通信,纯Verilog代码,接口为rgmii,已经在开发版上验证过,支持udp和arp协议
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈