You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1643 lines
65 KiB
1643 lines
65 KiB
package com.dsideal.newUniversityExamination.selectcourse.service;
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.dsideal.newUniversityExamination.selectcourse.bean.SecurityAES;
|
|
import com.dsideal.newUniversityExamination.selectcourse.model.*;
|
|
import com.dsideal.newUniversityExamination.util.*;
|
|
import com.jfinal.plugin.activerecord.Page;
|
|
import com.jfinal.plugin.activerecord.Record;
|
|
import com.jfinal.upload.UploadFile;
|
|
import org.apache.poi.hssf.usermodel.*;
|
|
|
|
import java.io.*;
|
|
import java.text.ParseException;
|
|
import java.util.*;
|
|
|
|
|
|
public class TaskService {
|
|
|
|
public static final TaskService service = new TaskService();
|
|
|
|
|
|
/**
|
|
* @Description: 新增和班级排课任务
|
|
* @author :周明升
|
|
* @date: 2018-12-3 下午1:45:24
|
|
* @return: String
|
|
* @throws
|
|
*/
|
|
public JSONObject saveTask(String taskId,String taskName,String curriculumPlanId,String bureauId,String isOrdinary,String calculateType
|
|
,String classJson){
|
|
JSONObject returnJson = new JSONObject();
|
|
boolean success = false ;
|
|
/*校验名称*/
|
|
int length=taskName.length();
|
|
if(length>20){
|
|
returnJson.put("success", success);
|
|
returnJson.put("info", "名字超出范围");
|
|
return returnJson;
|
|
}
|
|
boolean flag = TaskModel.dao.checkTaskNames(taskName, bureauId, taskId);
|
|
if(flag){
|
|
returnJson.put("success", success);
|
|
returnJson.put("info", "排课任务名称重复!");
|
|
return returnJson;
|
|
}
|
|
/*拼接参数*/
|
|
Record record = new Record();
|
|
record.set("task_name", taskName);
|
|
record.set("curriculum_plan_id", curriculumPlanId);
|
|
record.set("bureau_id", bureauId);
|
|
record.set("is_ordinary", isOrdinary);
|
|
record.set("calculate_type", calculateType);
|
|
/*新增*/
|
|
if(COMMON.isEmpty(taskId)){
|
|
success = TaskModel.dao.saveTask(record);
|
|
String newTaskId = String.valueOf(record.get("id"));
|
|
/*保存排课任务对应的班级*/
|
|
saveTaskClass( newTaskId,calculateType,classJson);
|
|
/*保存排课任务班级对应课时*/
|
|
saveTaskclassTime(newTaskId,classJson,curriculumPlanId, bureauId,calculateType,-1);
|
|
}else{
|
|
/*更新*/
|
|
record.set("task_id", taskId);
|
|
success = TaskModel.dao.updateTask(record);
|
|
//int i = record.get("task_id");
|
|
updateTaskClass(taskId, classJson,curriculumPlanId, bureauId,calculateType);
|
|
}
|
|
return SelectCourseBaseService.service.returnJsonResult(success);
|
|
}
|
|
/**
|
|
* @Description: 保存排课任务对应的班级
|
|
* @author :周明升
|
|
* @date: 2018-12-3 上午11:23:17
|
|
* @return: void
|
|
* @throws
|
|
*/
|
|
private void saveTaskClass(String taskId,String calculateType ,String classJson){
|
|
/*保存排课任务新的班级*/
|
|
List<Record> batchList = new ArrayList<>();
|
|
JSONObject json = new JSONObject();
|
|
if(!COMMON.isEmpty(classJson)){
|
|
json = JSONObject.parseObject(classJson);
|
|
JSONArray jsonArray = json.getJSONArray("class_list");
|
|
if(!COMMON.isEmpty(jsonArray)){
|
|
List<Record> list = ToolsUtil.JSONArray2List(jsonArray);
|
|
batchList = getSaveTaskClassList(taskId, calculateType,list);
|
|
}
|
|
}
|
|
TaskModel.dao.batchSaveTaskClass(batchList);
|
|
}
|
|
private List<Record> getSaveTaskClassList(String taskId,String calculateType ,List<Record> list){
|
|
List<Record> batchList = new ArrayList<>();
|
|
for (Record record : list) {
|
|
Record batchObj = new Record();
|
|
batchObj.set("task_id", taskId);
|
|
batchObj.set("class_id", record.get("class_id"));
|
|
batchObj.set("class_name", record.get("class_name"));
|
|
batchObj.set("class_type", record.get("class_type"));
|
|
batchObj.set("course", record.get("course"));
|
|
batchObj.set("course_type", record.get("course_type"));
|
|
batchObj.set("classtype_teaching", record.get("classtype_teaching"));
|
|
//当定二走一 选考走班的时候 默认一个分组
|
|
String groupId = String.valueOf(record.get("group_id"));
|
|
String classType = String.valueOf(record.get("class_type"));
|
|
if("1".equals(calculateType)&&"0".equals(classType)){
|
|
groupId = "1" ;
|
|
}
|
|
batchObj.set("group_id", groupId);
|
|
batchObj.set("base_class_type", record.get("base_class_type"));
|
|
batchList.add(batchObj);
|
|
}
|
|
return batchList ;
|
|
}
|
|
/**
|
|
* @param calculateType
|
|
* @param bureauId
|
|
* @param curriculumPlanId
|
|
* @Description: 更新排课任务对应的班级
|
|
* @author :周明升
|
|
* @date: 2019-1-7 上午9:20:36
|
|
* @return: void
|
|
* @throws
|
|
*/
|
|
private void updateTaskClass(String taskId,String classJson, String curriculumPlanId, String bureauId, String calculateType){
|
|
JSONObject json = new JSONObject();
|
|
/*获取之前的排课任务班级*/
|
|
List<Record> classList = TaskModel.dao.getClassListByTaskId(taskId, "");
|
|
//要 删除的班级
|
|
List<Record> delClassList = new ArrayList<>();
|
|
// 要新增的班级
|
|
List<Record> addClassList = new ArrayList<>();
|
|
if(!COMMON.isEmpty(classJson)){
|
|
json = JSONObject.parseObject(classJson);
|
|
JSONArray jsonArray = json.getJSONArray("class_list");
|
|
if(!COMMON.isEmpty(jsonArray)){
|
|
List<Record> list = ToolsUtil.JSONArray2List(jsonArray);
|
|
Map<String, List<Record>> map = checkDelClassList(list, classList);
|
|
delClassList = map.get("del");
|
|
addClassList = map.get("add");
|
|
}
|
|
}
|
|
/*删除任务流里 相关的班级*/
|
|
delTaskFlowRelatedClass(taskId, delClassList);
|
|
/*新增班级课时*/
|
|
JSONObject classTimeJson = new JSONObject();
|
|
classTimeJson.put("class_list", COMMON.convertListRecord2(addClassList));
|
|
String classTimeStr = classTimeJson.toJSONString() ;
|
|
saveTaskclassTime(taskId,classTimeStr , curriculumPlanId, bureauId, calculateType,0);
|
|
saveTaskClass(taskId, calculateType,classTimeStr);
|
|
}
|
|
/**
|
|
* @Description: 获取班级规则
|
|
* @author :周明升
|
|
* @date: 2019-1-7 上午11:04:38
|
|
* @return: Map<String,JSONObject>
|
|
* @throws
|
|
*/
|
|
private Map<String, JSONObject> getClassRuleList(String taskId){
|
|
JSONObject classRuleJSon = CoursetableRulesService.service.getLockClassJson(taskId, 1, 999);
|
|
JSONArray lockClassList = classRuleJSon.getJSONArray("lock_class_list");
|
|
Map<String, JSONObject> map = new HashMap<>();
|
|
for(int i = 0 ; i < lockClassList.size() ; i++){
|
|
JSONObject json = lockClassList.getJSONObject(i);
|
|
String classId = String.valueOf(json.get("class_id"));
|
|
map.put(classId, json);
|
|
}
|
|
return map ;
|
|
}
|
|
private Map<String, List<String> > getmergingMap(String taskId ,String typeSecondary){
|
|
Map<String, List<String> > mergingMap = new HashMap<>();
|
|
JSONObject mergingJson = CoursetableRulesService.service.getClassMergingJsonBySubject(typeSecondary, taskId, "", 1, 999);
|
|
JSONArray mergingArray = mergingJson.getJSONArray("class_merging_list");
|
|
for(int i = 0 ; i < mergingArray.size();i++){
|
|
JSONObject json = mergingArray.getJSONObject(i);
|
|
String regulationId = String.valueOf(json.get("regulation_id"));
|
|
JSONArray classArray = json.getJSONArray("classes_list");
|
|
for(int j = 0 ; j < classArray.size() ; j++){
|
|
JSONObject classObj = classArray.getJSONObject(j);
|
|
String classId = String.valueOf(classObj.get("class_id"));
|
|
List<String> regulationList = mergingMap.get(classId);
|
|
if(COMMON.isEmpty(regulationList)){
|
|
regulationList = new ArrayList<>();
|
|
}
|
|
regulationList.add(regulationId);
|
|
mergingMap.put(classId, regulationList);
|
|
}
|
|
}
|
|
return mergingMap ;
|
|
}
|
|
|
|
/**
|
|
* @Description: 删除任务流里 相关的班级信息
|
|
* @author :周明升
|
|
* @date: 2019-1-7 上午9:44:06
|
|
* @return: void
|
|
*/
|
|
private void delTaskFlowRelatedClass(String taskId,List<Record> delClassList){
|
|
/*获取班级规则lISt*/
|
|
Map<String, JSONObject> map = getClassRuleList(taskId);
|
|
/*获取合班 */
|
|
Map<String, List<String> > mergingHeMapHe = getmergingMap(taskId, "41");
|
|
/*分层走班详情*/
|
|
Map<String, List<String> > mergingHeMapFen = getmergingMap(taskId, "42");
|
|
/*新合班*/
|
|
Map<String,String> advancedLayeredMap = CoursetableRulesService.service.getAdvancedLayeredMap(Integer.parseInt(taskId),43,9999,1);
|
|
for(Record record : delClassList){
|
|
String classId = String.valueOf(record.get("class_id"));
|
|
String classType = String.valueOf(record.get("class_type"));
|
|
/*删除班级课时*/
|
|
TaskModel.dao.deleteTaskclassTime(taskId,classId,classType);
|
|
/*删除班级的任课计划*/
|
|
TeachPlanModel.dao.delTeacherGoclass(taskId, classId, classType, "");
|
|
/*删除班级设置的教室*/
|
|
TaskClassRoomModel.dao.delClassRoom(taskId, "", classId, classType);
|
|
if("2".equals(classType)){
|
|
/*删除班级不授课规则*/
|
|
if(!COMMON.isEmpty(map.get(classId))){
|
|
JSONObject json = map.get(classId);
|
|
String regulationId = String.valueOf(json.get("regulation_id"));
|
|
CoursetableRulesService.service.deleteRegulation(taskId, regulationId, "2", "11");
|
|
}
|
|
/*删除走班*/
|
|
if(!COMMON.isEmpty(mergingHeMapHe.get(classId))){
|
|
List<String> regulationList = mergingHeMapHe.get(classId);
|
|
for(String regulationId : regulationList){
|
|
CoursetableRulesService.service.deleteRegulation(taskId, regulationId, "4", "41");
|
|
}
|
|
}
|
|
/*合班规则*/
|
|
if(!COMMON.isEmpty(mergingHeMapFen.get(classId))){
|
|
List<String> regulationList = mergingHeMapFen.get(classId);
|
|
for(String regulationId : regulationList){
|
|
CoursetableRulesService.service.deleteRegulation(taskId, regulationId, "4", "42");
|
|
}
|
|
}
|
|
/*新合班*/
|
|
if(!COMMON.isEmpty(advancedLayeredMap.get(classId))){
|
|
String regulationId = advancedLayeredMap.get(classId) ;
|
|
CoursetableRulesService.service.deleteRegulation(taskId, regulationId, "4", "43");
|
|
|
|
}
|
|
/*删除预排课*/
|
|
PreScheduleTimetableService.service.deleteCourseTableposition(taskId, classId, "", "", "");
|
|
}
|
|
/*删除课表*/
|
|
CourseSelectTimeModel.dao.delCourseTable(taskId, classId, classType);
|
|
/*删除课时*/
|
|
TaskModel.dao.deleteTaskclassTime(taskId, classId, classType);
|
|
/*删除绑定班级*/
|
|
TaskModel.dao.deleteTaskClass(taskId, classId,classType);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @Description: 获取要删除的班级 排课任务下
|
|
* @author :周明升
|
|
* @date: 2019-1-7 上午9:42:27
|
|
* @return: List<Record>
|
|
* @throws
|
|
*/
|
|
private Map<String, List<Record>> checkDelClassList( List<Record> list,List<Record> classList ){
|
|
Map<String, List<Record>> Map = new HashMap<>();
|
|
List<Record> newAddLsit = new ArrayList<>();
|
|
List<Record> delClassList = new ArrayList<>();
|
|
/*新的班级列表*/
|
|
newAddLsit = getAddaListThanbList(list, classList, "class_id","class_type");
|
|
delClassList = getAddaListThanbList(classList,list , "class_id","class_type");
|
|
Map.put("add", newAddLsit);
|
|
Map.put("del", delClassList);
|
|
return Map ;
|
|
}
|
|
/**
|
|
* @Description: 计算列表aList相对于bList的增加的情况
|
|
* @author :周明升
|
|
* @date: 2019-1-8 上午8:41:16
|
|
* @return: List<Record>
|
|
* @throws
|
|
*/
|
|
public List<Record> getAddaListThanbList(List<Record> aList, List<Record> bList,String element1 ,String element2){
|
|
List<Record> reduceaList = new ArrayList<Record>();
|
|
for (int i = 0; i < aList.size(); i++){
|
|
if(!myListContains(bList, aList.get(i), element1 , element2)){
|
|
reduceaList.add(aList.get(i));
|
|
}
|
|
}
|
|
return reduceaList;
|
|
}
|
|
|
|
private boolean myListContains(List<Record> sourceList, Record Record,String element1 ,String element2) {
|
|
if (COMMON.isEmpty(sourceList) ||COMMON.isEmpty(Record) ){
|
|
return false;
|
|
}
|
|
for (Record tip : sourceList){
|
|
if(ToolsUtil.equal(tip,Record,element1,element1)&&ToolsUtil.equal(tip,Record,element2,element2)){
|
|
return true ;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
/**
|
|
* @Description: 保存排课任务班级课时
|
|
* @author :周明升
|
|
* @date: 2018-12-3 下午1:45:43
|
|
* @return: void
|
|
* @throws
|
|
*/
|
|
private void saveTaskclassTime(String taskId,String classJson,String curriculumPlanId,String bureauId,String calculateType,int startInt){
|
|
List<Record> batchList = new ArrayList<>();
|
|
/*获取课程计划基础课程时间*/
|
|
List<Record> subjectList = new ArrayList<>();
|
|
/*走班课时*/
|
|
List<Record> zouSubjectList = new ArrayList<>();
|
|
JSONObject subjectJson= CurriculumPlanService.service.getSubjectTimeList(curriculumPlanId, "");
|
|
JSONArray baseSubjectArray = subjectJson.getJSONArray("base_subject_list");
|
|
JSONArray subjectArray = subjectJson.getJSONArray("subject_list");
|
|
if(!COMMON.isEmpty(subjectArray)){
|
|
zouSubjectList = ToolsUtil.JSONArray2List(subjectArray);
|
|
}
|
|
if(!COMMON.isEmpty(baseSubjectArray)){
|
|
subjectList = ToolsUtil.JSONArray2List(baseSubjectArray);
|
|
}
|
|
JSONObject json = JSONObject.parseObject(classJson);
|
|
JSONArray jsonArray = json.getJSONArray("class_list");
|
|
for(int i = startInt ;i < jsonArray.size() ;i++){
|
|
String classType = "2";
|
|
JSONObject jsonOb = new JSONObject();
|
|
String [] courseArray = {};
|
|
if(-1 != i){
|
|
jsonOb = (JSONObject) jsonArray.get(i);
|
|
classType = String.valueOf(jsonOb.get("class_type"));
|
|
String course = String.valueOf(jsonOb.get("course"));
|
|
if(!COMMON.isEmpty(course)&&!"0".equals(course)){
|
|
courseArray = course.split("\\|");
|
|
}
|
|
}
|
|
if("2".equals(classType)){
|
|
addBatchClassTimeXz(batchList, subjectList, zouSubjectList, taskId, calculateType,jsonOb,courseArray,i);
|
|
}else{
|
|
addBatchClassTimejx(batchList, zouSubjectList, taskId, jsonOb,courseArray);
|
|
}
|
|
}
|
|
/*保存课时*/
|
|
TaskModel.dao.batchSaveTaskclassTime(batchList);
|
|
}
|
|
|
|
/**
|
|
* @Description: 根据学校,学段,学年 获取班级列表
|
|
* @author :周明升
|
|
* @date: 2018-12-3 下午2:06:58
|
|
* @return: void
|
|
* @throws
|
|
*/
|
|
public String getClassList(int bureauId,int stageId,int year,int classType,int calculateType){
|
|
JSONObject returnJson = new JSONObject();
|
|
List<Record> resultList = new ArrayList<>();
|
|
int type = 2 == classType ?1:2;
|
|
JSONArray classArray = BorrowUtil.getClassInfoByType(bureauId,stageId,year,type);
|
|
if(!COMMON.isEmpty(classArray)){
|
|
for(int i=0;i<classArray.size();i++){
|
|
Record record = new Record();
|
|
JSONObject jsonOb = classArray.getJSONObject(i) ;
|
|
int classtypeTeaching = jsonOb.getIntValue("classtype_teaching") ;
|
|
record.set("class_id", jsonOb.get("class_id"));
|
|
record.set("base_class_type",jsonOb.getIntValue("class_type"));
|
|
record.set("class_name", jsonOb.get("class_name"));
|
|
record.set("stu_count", jsonOb.get("stu_count"));
|
|
record.set("course", COMMON.isEmpty(jsonOb.get("course"))?"0":jsonOb.get("course"));
|
|
String course = record.get("course");
|
|
if("0".equals(course)){
|
|
record.set("course_type",0);
|
|
}else{
|
|
int courseType = ToolsUtil.getSubCount_2(course, "|");
|
|
record.set("course_type",courseType+1);
|
|
}
|
|
record.set("classtype_teaching",classtypeTeaching);
|
|
Object groupObj = jsonOb.get("group_id");
|
|
record.set("group_id",COMMON.isEmpty(groupObj)?0:Integer.parseInt(String.valueOf(groupObj)));
|
|
record.set("class_type", classType);
|
|
/*行政班 */
|
|
if(2 == classType){
|
|
int courseType = record.get("course_type");
|
|
if(1 == calculateType && courseType != 2){
|
|
continue;
|
|
}else if(0 ==calculateType && courseType != 3){
|
|
continue;
|
|
}else{
|
|
resultList.add(record);
|
|
}
|
|
}else{
|
|
if(0 == classType && 0 == classtypeTeaching){
|
|
resultList.add(record);
|
|
}else if (1 == classType && 1 == classtypeTeaching){
|
|
resultList.add(record);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
returnJson.put("list", COMMON.convertListRecord2(resultList));
|
|
returnJson.put("success", true);
|
|
returnJson.put("info",Constant.SUCCESS_INFO);
|
|
return returnJson.toJSONString();
|
|
}
|
|
|
|
public JSONObject getClassTimeList(String taskId,String classType,String calculateType,String year,String bureauId,String stageId,String xqId){
|
|
JSONArray array = new JSONArray();
|
|
JSONObject returnJson = new JSONObject();
|
|
List<Record> resultList = new ArrayList<>();
|
|
/*课时安排*/
|
|
JSONObject dayJson = getWeek(year, bureauId, stageId,xqId);
|
|
int week = dayJson.getIntValue("week_of_class_count");
|
|
int day = dayJson.getIntValue("afternoon_of_class_count")+dayJson.getIntValue("morning_of_class_count")+dayJson.getIntValue("morning_study_count")+dayJson.getIntValue("night_study_count");
|
|
int allSection = week*day ;
|
|
/*获取行政班班级列表*/
|
|
List<Record> list = TaskModel.dao.getClassListByTaskId(taskId, classType);
|
|
/*获取行政班课时*/
|
|
List<Record> timeList = TaskModel.dao.getClassTimeList(taskId,"",classType,"","");
|
|
/*获取选考 学考最大课时*/
|
|
List<Record> allList = new ArrayList<>();
|
|
for(Record record : timeList){
|
|
String classId = String.valueOf(record.get("class_id"));
|
|
if("-1".equals(classId)){
|
|
allList.add(record);
|
|
}
|
|
}
|
|
Record allRecord =getMaxTime(allList,taskId,allSection,calculateType);
|
|
resultList.add(allRecord);
|
|
int max = allRecord.get("max");
|
|
for(int i = 0 ;i< list.size() ; i++){
|
|
Record record = list.get(i);
|
|
String classId = String.valueOf(record.get("class_id"));
|
|
List<Record> subjectList = new ArrayList<>();
|
|
int surInt = 0 ;
|
|
for(Record timeObj : timeList){
|
|
String classIdObj = String.valueOf(timeObj.get("class_id"));
|
|
if(classId.equals(classIdObj)){
|
|
Record recordOb = new Record();
|
|
recordOb.set("task_id", taskId);
|
|
recordOb.set("class_id", timeObj.get("class_id"));
|
|
recordOb.set("class_type", timeObj.get("class_type"));
|
|
recordOb.set("subject_id", timeObj.get("subject_id"));
|
|
recordOb.set("subject_name", timeObj.get("subject_name"));
|
|
recordOb.set("times", timeObj.get("times"));
|
|
recordOb.set("times_xue", COMMON.isEmpty(timeObj.get("times_xue"))?"":timeObj.get("times_xue"));
|
|
recordOb.set("edit", timeObj.get("edit"));
|
|
int edit = timeObj.get("edit");
|
|
if(1==edit){
|
|
int times = timeObj.get("times") ;
|
|
surInt += times;
|
|
}
|
|
subjectList.add(recordOb);
|
|
array.add(ToolsUtil.Record2Object(recordOb));
|
|
}
|
|
}
|
|
record.set("use_times", surInt);
|
|
record.set("max", max);
|
|
record.set("subject_list", COMMON.convertListRecord2(subjectList));
|
|
resultList.add(record);
|
|
}
|
|
returnJson.put("success", true);
|
|
returnJson.put("info", Constant.SUCCESS_INFO);
|
|
returnJson.put("list", COMMON.convertListRecord2(resultList));
|
|
return returnJson;
|
|
}
|
|
/**
|
|
* @Description: 批量改变课时
|
|
* @author :周明升
|
|
* @date: 2018-12-4 上午9:44:50
|
|
* @return: String
|
|
* @throws
|
|
*/
|
|
public JSONObject updateTaskClassTime(String taskId,String timeList,String classType){
|
|
JSONObject returnJson = new JSONObject();
|
|
/*获取原班级课时*/
|
|
List<Record> classTimeList = TaskModel.dao.getClassTimeList(taskId, "", classType,"","");
|
|
Map<String, Integer> map = new HashMap<String, Integer>();
|
|
for(Record record : classTimeList){
|
|
int classId = record.get("class_id");
|
|
int subjectId = record.get("subject_id");
|
|
int times = record.get("times");
|
|
String key = ""+classId+subjectId ;
|
|
map.put(key, times);
|
|
}
|
|
/*要修改的班级课时*/
|
|
JSONArray allArray = new JSONArray();
|
|
JSONArray jsonArray = JSONArray.parseArray(timeList);
|
|
for(int i = 0 ; i < jsonArray.size() ;i++){
|
|
JSONObject timeOb = jsonArray.getJSONObject(i);
|
|
JSONArray subjectArray = timeOb.getJSONArray("subject_list");
|
|
allArray.addAll(subjectArray);
|
|
}
|
|
List<Record> batchList = ToolsUtil.JSONArray2List(allArray);
|
|
for(Record record : batchList){
|
|
String classId = String.valueOf(record.get("class_id"));
|
|
String subjectId = String.valueOf(record.get("subject_id")) ;
|
|
String key = classId+subjectId;
|
|
int times = record.get("times");
|
|
if(!COMMON.isEmpty(map.get(key))&×!= map.get(key)){
|
|
/*删除教师任课计划*/
|
|
TeachPlanModel.dao.delTeacherGoclass(taskId, classId,classType,subjectId);
|
|
/*删除预排课*/
|
|
PreScheduleTimetableService.service.deleteCourseTableposition(taskId, classId,subjectId, "", "");
|
|
}
|
|
if(COMMON.isEmpty(record.get("times_xue"))){
|
|
record.set("times_xue", null);
|
|
}
|
|
}
|
|
/*保存基础排课课时*/
|
|
TaskModel.dao.batchUpdateTaskclassTime(batchList);
|
|
returnJson.put("success", true);
|
|
returnJson.put("info", Constant.SUCCESS_INFO);
|
|
return returnJson;
|
|
}
|
|
|
|
public JSONObject getTaskList(Record record){
|
|
JSONObject returnJson = new JSONObject();
|
|
Page<Record> pageRecord = TaskModel.dao.getTaskList(record);
|
|
returnJson.put("curriculumPlanList", COMMON.convertListRecord2(pageRecord.getList()));
|
|
returnJson.put("pageNumber", pageRecord.getPageNumber());
|
|
returnJson.put("pageSize", pageRecord.getPageSize());
|
|
returnJson.put("totalPage", pageRecord.getTotalPage());
|
|
returnJson.put("totalRow", pageRecord.getTotalRow());
|
|
returnJson.put("success", true);
|
|
return returnJson;
|
|
}
|
|
|
|
public JSONObject getTaskInfoById(String taskId){
|
|
JSONObject returnJson = new JSONObject();
|
|
/*获取排课任务详细信息*/
|
|
Record record = new Record().set("task_id", taskId).set("pageSize", 1).set("pageNumber", 1);
|
|
Page<Record> pageRecord = TaskModel.dao.getTaskList(record);
|
|
List<Record> list = pageRecord.getList();
|
|
if(!COMMON.isEmpty(list)){
|
|
record = list.get(0);
|
|
}
|
|
/*获取班级列表*/
|
|
List<Record> xingList = new ArrayList<>();
|
|
List<Record> xuanList = new ArrayList<>();
|
|
List<Record> xueList = new ArrayList<>();
|
|
List<Record> classList = TaskModel.dao.getClassListByTaskId(taskId,"");
|
|
Object [] classListArray = {xuanList,xueList,xingList};
|
|
/*检验 当前排课任务的班级 是否还存在 (基础数据)*/
|
|
addClassList(record, classListArray, classList);
|
|
String grade = String.valueOf(record.get("grade"));
|
|
JSONObject json = checkClassIdsRelease(classList, grade);
|
|
boolean isEdit = json.getBooleanValue("success");
|
|
record.set("edit", isEdit);
|
|
returnJson.put("task_info", ToolsUtil.Record2Object(record));
|
|
returnJson.put("xing_list", COMMON.convertListRecord2(xingList));
|
|
returnJson.put("xue_list", COMMON.convertListRecord2(xueList));
|
|
returnJson.put("xuan_list", COMMON.convertListRecord2(xuanList));
|
|
returnJson.put("list", COMMON.convertListRecord2(classList));
|
|
returnJson.put("success", true);
|
|
returnJson.put("info",Constant.SUCCESS_INFO);
|
|
return returnJson;
|
|
}
|
|
private JSONObject checkClassIdsRelease(List<Record> classList,String grade){
|
|
String classIds = ToolsUtil.getIds(classList, "class_id");
|
|
String classTypes = ToolsUtil.getIds(classList, "base_class_type");
|
|
JSONObject json = MergeCourseTableService.service.checkClassIdsRelease(grade, classIds, classTypes);
|
|
return json ;
|
|
}
|
|
|
|
private void addClassList(Record record , Object [] classListArray ,List<Record> classList){
|
|
int [] classArray = {0,1,2};
|
|
for (int i = 0; i < classArray.length; i++) {
|
|
/*获取基础数据班级*/
|
|
int baseClassType = classArray[i];
|
|
for(Record recordOb : classList){
|
|
int classType = recordOb.get("class_type");
|
|
if(baseClassType == classType){
|
|
@SuppressWarnings("unchecked")
|
|
List<Record> classListObj = (List<Record>) classListArray[i];
|
|
classListObj.add(recordOb);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
public String getTimeTableClassInfoByTaskId(String taskId,String classType) {
|
|
List<Record> list = TaskModel.dao.getClassListByTaskId(taskId, classType);
|
|
return COMMON.convert2JsonStr(list);
|
|
}
|
|
|
|
public JSONObject getWeek(String year, String bureauId, String stageId,String xqId) {
|
|
JSONObject returnJson = new JSONObject();
|
|
returnJson.put("success", false);
|
|
JSONObject json = CourseSelectTimeService.service.getCoursetableTime(bureauId, year, stageId,xqId);
|
|
if(!COMMON.isEmpty(json)){
|
|
returnJson = json.getJSONObject("classInfo");
|
|
returnJson.put("success", true);
|
|
}
|
|
return returnJson ;
|
|
}
|
|
|
|
public JSONObject setTaskTime(String taskId, String timeJson) {
|
|
JSONObject returnJson = new JSONObject();
|
|
/*删除走班课时*/
|
|
TaskModel.dao.delTaskTimes(taskId);
|
|
JSONObject json = JSONObject.parseObject(timeJson);
|
|
JSONArray jsonArray = json.getJSONArray("time_list");
|
|
List<Record> batchList = new ArrayList<>();
|
|
for(int i = 0; i< jsonArray.size() ;i++){
|
|
JSONObject jsonOb = jsonArray.getJSONObject(i);
|
|
Record record = ToolsUtil.Object2Record(jsonOb);
|
|
String day = String.valueOf(record.get("day"));
|
|
String section = String.valueOf(record.get("section"));
|
|
record.set("task_id", taskId);
|
|
batchList.add(record);
|
|
/*删除预排课*/
|
|
PreScheduleTimetableService.service.deleteCourseTableposition(taskId, "", "", day, section);
|
|
}
|
|
/*插入走班课节*/
|
|
TaskModel.dao.insertTaskTime(batchList);
|
|
returnJson.put("success", true);
|
|
returnJson.put("info", "保存成功");
|
|
return returnJson ;
|
|
}
|
|
public JSONObject getTaskTime(String taskId) {
|
|
JSONObject returnJson = new JSONObject();
|
|
List<Record> list = TaskModel.dao.getTaskTimeList(taskId,"");
|
|
List<Record> timeList = new ArrayList<>();
|
|
List<Record> timeXueList = new ArrayList<>();
|
|
for(Record record :list){
|
|
int type = record.get("type");
|
|
switch (type) {
|
|
case 0:
|
|
timeList.add(record);
|
|
break;
|
|
case 1:
|
|
timeXueList.add(record);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
returnJson.put("success", true);
|
|
returnJson.put("timeStr", COMMON.convertListRecord2(timeList));
|
|
returnJson.put("timeStrXue", COMMON.convertListRecord2(timeXueList));
|
|
returnJson.put("info", Constant.SUCCESS_INFO);
|
|
return returnJson;
|
|
}
|
|
public JSONObject delTask(String taskId) {
|
|
JSONObject returnJson = new JSONObject();
|
|
/*删除排课任务*/
|
|
boolean flag = TaskModel.dao.delTask(taskId);
|
|
/*删除排课任务对应的班级*/
|
|
TaskModel.dao.deleteTaskClass(taskId,"","");
|
|
/*删除排课任务班级对应的课时*/
|
|
TaskModel.dao.deleteTaskclassTime(taskId,"","");
|
|
/*删除教师任课计划*/
|
|
TeachPlanModel.dao.delTeacherGoclass(taskId,"","","");
|
|
/*删除设置教室*/
|
|
TaskClassRoomModel.dao.delClassRoom(taskId, "","","");
|
|
/*删除规则*/
|
|
CourseTableRulesModel.dao.delAllRules(taskId);
|
|
/*删除预排课*/
|
|
PreScheduleTimetableService.service.deleteCourseTableposition(taskId, "","", "", "");
|
|
/*删除课表*/
|
|
CourseSelectTimeModel.dao.delCourseTable(taskId,"","");
|
|
//删除排课日志
|
|
TaskModel.dao.delTaskLog(taskId);
|
|
//删除排课优先级
|
|
CourseTableRulesModel.dao.delRegulationPriority(taskId);
|
|
//删除操作记录
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperationExtend(taskId,Constant.TYPE_TASK);
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperation(taskId,Constant.TYPE_TASK);
|
|
returnJson.put("success", flag);
|
|
if(flag){
|
|
returnJson.put("info", "删除成功");
|
|
}else{
|
|
returnJson.put("info", "删除失败");
|
|
}
|
|
return returnJson;
|
|
}
|
|
public JSONObject getTaskByTaskId(String taskId) {
|
|
JSONObject returnJson = new JSONObject();
|
|
/*获取排课任务详细信息*/
|
|
Record record = new Record().set("task_id", taskId).set("pageSize", 1).set("pageNumber", 1);
|
|
Page<Record> pageRecord = TaskModel.dao.getTaskList(record);
|
|
List<Record> list = pageRecord.getList();
|
|
if(!COMMON.isEmpty(list)){
|
|
record = list.get(0);
|
|
}
|
|
returnJson.put("success", true);
|
|
returnJson.put("task_info", COMMON.convertRecord2Json2(record));
|
|
returnJson.put("info", "查询成功");
|
|
return returnJson;
|
|
}
|
|
public JSONObject getTimesByTaskId(String taskId, String calculateType) {
|
|
JSONObject returnJson = new JSONObject();
|
|
/*获取选考 学考最大课时*/
|
|
List<Record> allList = TaskModel.dao.getClassTimeList(taskId,"-1","2","","");
|
|
Record allRecord =getMaxTime(allList,taskId,40,calculateType);
|
|
int maxTimes = allRecord.get("maxTimes");
|
|
int maxTimesChoice =allRecord.get("maxTimesChoice");
|
|
JSONArray jsonArray = new JSONArray();
|
|
/*是否存在学考和选考班级-------------根据分组来确定课时*/
|
|
// JSONObject classJson = getClassGroupList(taskId, "1");
|
|
// JSONArray xuanArray = classJson.getJSONArray("xuan_list");
|
|
// JSONArray xueArray = classJson.getJSONArray("xue_list");
|
|
// /*选考班级类型*/
|
|
// for(int i = 0 ; i < xuanArray.size()-1 ; i ++){
|
|
// JSONObject groupJson = new JSONObject();
|
|
// JSONObject json = xuanArray.getJSONObject(i);
|
|
// JSONArray array = json.getJSONArray("data");
|
|
// int type = Integer.parseInt(String.valueOf(json.get("type")));
|
|
// int invalid = 1 ;//无效的 分组
|
|
// if("1".equals(calculateType)){
|
|
// maxTimes = maxXuan ;
|
|
// if(0 ==i ){ // 定二走一 有效
|
|
// invalid = 0 ;
|
|
// }
|
|
// }else if (!COMMON.isEmpty(array)){
|
|
// maxTimes += maxXuan ; //不为空的时候 是有效分组
|
|
// invalid = 0 ;
|
|
// }
|
|
// groupJson = superpositionTime(invalid, type, maxXuan); //无效的 分组
|
|
// jsonArray.add(groupJson);
|
|
// }
|
|
// /*学考班级类型*/
|
|
// for(int i = 0 ; i < xueArray.size() -1; i ++){
|
|
// JSONObject json = xueArray.getJSONObject(i);
|
|
// JSONArray array = json.getJSONArray("data");
|
|
// int type = Integer.parseInt(String.valueOf(json.get("type")));
|
|
// int invalid = 1 ;//无效的 分组
|
|
// if (!COMMON.isEmpty(array)){
|
|
// maxTimesChoice += maxXue ;
|
|
// invalid = 0 ;
|
|
// }
|
|
// JSONObject groupJson = superpositionTime(invalid, type+3, maxXue);
|
|
// jsonArray.add(groupJson);
|
|
// }
|
|
returnJson.put("success", true);
|
|
returnJson.put("maxTimes", maxTimes);
|
|
returnJson.put("maxTimesChoice", maxTimesChoice);
|
|
returnJson.put("list", jsonArray);
|
|
returnJson.put("info", "查询成功");
|
|
return returnJson;
|
|
}
|
|
/**
|
|
* @Description: 以后会用到
|
|
* @author :周明升
|
|
* @date: 2019-1-14 下午3:34:02
|
|
* @return: JSONObject
|
|
* @throws
|
|
*/
|
|
@SuppressWarnings("unused")
|
|
private JSONObject superpositionTime(int invalid ,int groupId,int maxOb){
|
|
JSONObject json = new JSONObject();
|
|
json.put("group_id", groupId);
|
|
json.put("times", maxOb);
|
|
json.put("invalid", invalid);
|
|
return json ;
|
|
}
|
|
public List<Record> getTaskTimeTable(String taskId,String type) {
|
|
List<Record> list = new ArrayList<>();
|
|
List<Record> timeList = TaskModel.dao.getTaskTimeList(taskId,type);
|
|
if(!COMMON.isEmpty(timeList)){
|
|
Record record = timeList.get(0);
|
|
String str = String.valueOf(record.get("time_table")) ;
|
|
String timeStr = str.substring(1, str.length()-1);
|
|
String [] strArray=timeStr.split(",");
|
|
if(!COMMON.isEmpty(strArray)){
|
|
for(String strObj :strArray){
|
|
String day = strObj.substring(0, 1);
|
|
String section = strObj.substring(1, strObj.length());
|
|
Record recod = new Record().set("day", day).set("section", section);
|
|
list.add(recod);
|
|
}
|
|
}
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/*获取班级分组列表*/
|
|
public JSONObject getClassGroupList(String taskId,String classType) {
|
|
JSONObject returnJson = new JSONObject();
|
|
List<Record> xuanList = new ArrayList<>();
|
|
List<Record> xueList = new ArrayList<>();
|
|
List<Record> group1 = new ArrayList<>();
|
|
List<Record> group2 = new ArrayList<>();
|
|
List<Record> group3 = new ArrayList<>();
|
|
List<Record> group4 = new ArrayList<>();
|
|
List<Record> group5 = new ArrayList<>();
|
|
List<Record> group6 = new ArrayList<>();
|
|
List<Record> list = TaskModel.dao.getClassListByTaskId(taskId, classType);
|
|
for(Record record : list ){
|
|
String classTypeOb = String.valueOf(record.get("class_type"));
|
|
int groupId = record.get("group_id");
|
|
if("0".equals(classTypeOb)&&groupId==0){
|
|
groupId = -1 ;
|
|
}
|
|
switch (groupId) {
|
|
case 1:group1.add(record);
|
|
break;
|
|
case 2:group2.add(record);
|
|
break;
|
|
case 3:group3.add(record);
|
|
break;
|
|
case 4:group4.add(record);
|
|
break;
|
|
case 5:group5.add(record);
|
|
break;
|
|
case 6:group6.add(record);
|
|
break;
|
|
case 0:xueList.add(record);
|
|
break;
|
|
case -1:xuanList.add(record);
|
|
break;
|
|
default: xuanList.add(record);
|
|
break;
|
|
}
|
|
}
|
|
String [] infos = {"第一组","第二组","第三组","待分组班级"};
|
|
Object [] array = {group1,group2,group3,xuanList};
|
|
|
|
String [] xinfos = {"第一组","第二组","第三组","待分组班级"};
|
|
Object [] xarray = {group4,group5,group6,xueList};
|
|
|
|
List<Record> xuanGroupList = getGroupClassList(array, infos);
|
|
List<Record> xueGroupList = getGroupClassList(xarray, xinfos);
|
|
returnJson.put("xuan_list", COMMON.convertListRecord2(xuanGroupList));
|
|
returnJson.put("xue_list", COMMON.convertListRecord2(xueGroupList));
|
|
returnJson.put("success", Constant.SUCCESS_INFO);
|
|
return returnJson;
|
|
}
|
|
@SuppressWarnings("unchecked")
|
|
private List<Record> getGroupClassList(Object [] array,String [] infos){
|
|
List<Record> resultList = new ArrayList<>();
|
|
for (int i = 0; i < array.length; i++) {
|
|
Record record = new Record();
|
|
record.set("info", infos[i]);
|
|
record.set("type", i+1);
|
|
record.set("data", COMMON.convertListRecord2((List<Record>)array[i]));
|
|
resultList.add(record);
|
|
}
|
|
return resultList ;
|
|
}
|
|
|
|
|
|
|
|
public JSONObject saveClassGroup(String taskId, String classStr) {
|
|
JSONObject returnJson = new JSONObject();
|
|
List<Record> resultList = new ArrayList<>();
|
|
/*获取原班级的groupId*/
|
|
List<Record> classList = TaskModel.dao.getClassListByTaskId(taskId,"0,1");
|
|
Map<String, Record> map = ToolsUtil.list2Map(classList, "class_id");
|
|
/*要保存的groupId*/
|
|
JSONArray jsonArray = JSONArray.parseArray(classStr);
|
|
for(int i = 0 ;i< jsonArray.size() ;i++){
|
|
Record obj = new Record();
|
|
JSONObject jsonOb = jsonArray.getJSONObject(i);
|
|
String classId = String.valueOf(jsonOb.get("class_id"));
|
|
String classType = String.valueOf(jsonOb.get("class_type"));
|
|
String baseClassType = String.valueOf(jsonOb.get("base_class_type"));
|
|
String course = String.valueOf(jsonOb.get("course"));
|
|
String groupId = String.valueOf(jsonOb.get("group_id"));
|
|
Record record = map.get(classId);
|
|
String groupobj = String.valueOf(record.get("group_id"));
|
|
/*如果groupId 改变了*/
|
|
if(!groupId.equals(groupobj)&&!"-1".equals(groupobj)){
|
|
/*删除教师任课计划*/
|
|
TeachPlanModel.dao.delTeacherGoclass(taskId,classId,classType,course);
|
|
/*删除教室*/
|
|
TaskClassRoomModel.dao.delClassRoom(taskId, "",classId,classType);
|
|
/*删除预排课*/
|
|
PreScheduleTimetableService.service.deleteCourseTableposition(taskId, classId,course, "", "");
|
|
}
|
|
obj.set("task_id", taskId);
|
|
obj.set("class_id", classId);
|
|
obj.set("class_name", jsonOb.get("class_name"));
|
|
obj.set("class_type", classType);
|
|
obj.set("course", jsonOb.get("course"));
|
|
obj.set("course_type", jsonOb.get("course_type"));
|
|
obj.set("group_id", groupId);
|
|
obj.set("base_class_type", baseClassType);
|
|
resultList.add(obj);
|
|
}
|
|
/*更新班级group_id*/
|
|
TaskModel.dao.batchUpdateTaskClass(resultList);
|
|
returnJson.put("info", Constant.SUCCESS_INFO);
|
|
returnJson.put("success",Constant.TRUE);
|
|
return returnJson;
|
|
}
|
|
|
|
private Record getMaxTime(List<Record> list,String taskId,int allSection,String calculateType){
|
|
Record returnRecord = new Record();
|
|
returnRecord.set("class_id", -1).set("class_name", "课时").set("class_type", 2).set("course", "0");
|
|
List<Record> subjectList = new ArrayList<>();
|
|
int maxXuan = 0 ;
|
|
int maxXue = 0 ;
|
|
int surInt = 0 ;
|
|
for(Record record : list){
|
|
Record recordOb = new Record();
|
|
recordOb.set("task_id", taskId);
|
|
recordOb.set("class_id", record.get("class_id"));
|
|
recordOb.set("class_type", record.get("class_type"));
|
|
recordOb.set("subject_id", record.get("subject_id"));
|
|
recordOb.set("subject_name", record.get("subject_name"));
|
|
recordOb.set("times", record.get("times"));
|
|
recordOb.set("times_xue", COMMON.isEmpty(record.get("times_xue"))?"":record.get("times_xue"));
|
|
recordOb.set("edit", record.get("edit"));
|
|
if(!COMMON.isEmpty(record.get("times_xue"))){
|
|
int times = record.get("times");
|
|
int timesXue = record.get("times_xue");
|
|
maxXuan = maxXuan > times ? maxXuan:times;
|
|
maxXue = maxXue > timesXue ? maxXue:timesXue;
|
|
}else{
|
|
int edit = record.get("edit");
|
|
if(1==edit){
|
|
int times = record.get("times") ;
|
|
surInt += times;
|
|
}
|
|
}
|
|
subjectList.add(recordOb);
|
|
}
|
|
int max = allSection ;
|
|
int maxTimes = 0 ;
|
|
int maxTimesChoice = 0;
|
|
if("0".equals(calculateType)){
|
|
//优先三科
|
|
maxTimesChoice = maxXue*3 ;
|
|
}else if ("1".equals(calculateType)){
|
|
maxTimes = maxXuan ;
|
|
maxTimesChoice = maxXue*3 ;
|
|
}else if ("2".equals(calculateType)){
|
|
maxTimes = maxXuan*3 ;
|
|
maxTimesChoice = maxXue*3 ;
|
|
}
|
|
List<Record> xueList = TaskModel.dao.getClassListByTaskId(taskId, "1");//是否存在学考班级
|
|
if(COMMON.isEmpty(xueList)){
|
|
maxTimesChoice = 0 ;
|
|
}
|
|
max = allSection - maxTimes - maxTimesChoice ;
|
|
returnRecord.set("subject_list",COMMON.convertListRecord2(subjectList));
|
|
returnRecord.set("max_xuan", maxXuan);
|
|
returnRecord.set("max_xue", maxXue);
|
|
returnRecord.set("max", max);
|
|
returnRecord.set("use_times", surInt);
|
|
returnRecord.set("maxTimes", maxTimes);
|
|
returnRecord.set("maxTimesChoice", maxTimesChoice);
|
|
return returnRecord;
|
|
}
|
|
private void addBatchClassTimeXz(List<Record> batchList,List<Record> subjectList,List<Record> zouSubjectList,String taskId,String calculateType,JSONObject jsonOb,String [] courseArray,int i ){
|
|
for(Record subjectRecord : subjectList ){
|
|
Record recordOb = new Record();
|
|
recordOb.set("task_id", taskId);
|
|
recordOb.set("class_id", COMMON.isEmpty(jsonOb.get("class_id"))?-1:jsonOb.get("class_id"));
|
|
recordOb.set("class_type",2);
|
|
recordOb.set("subject_id", subjectRecord.get("subject_id"));
|
|
recordOb.set("times", subjectRecord.get("times"));
|
|
recordOb.set("edit", 1);
|
|
batchList.add(recordOb);
|
|
}
|
|
/*走班课程*/
|
|
for(Record subjectRecord : zouSubjectList ){
|
|
Record recordOb = new Record();
|
|
String subjectId = String.valueOf(subjectRecord.get("subject_id"));
|
|
recordOb.set("task_id", taskId);
|
|
recordOb.set("class_id", COMMON.isEmpty(jsonOb.get("class_id"))?-1:jsonOb.get("class_id"));
|
|
recordOb.set("class_type",2);
|
|
recordOb.set("subject_id", subjectRecord.get("subject_id"));
|
|
if(-1==i){
|
|
/*class_id = -1*/
|
|
recordOb.set("times", subjectRecord.get("times"));
|
|
recordOb.set("times_xue", subjectRecord.get("times_choice"));
|
|
recordOb.set("edit", 1);
|
|
}else if(ToolsUtil.arrayIncludeStr(courseArray, subjectId)&&!"2".equals(calculateType)){
|
|
recordOb.set("times", subjectRecord.get("times"));
|
|
recordOb.set("edit", 1);
|
|
}else{
|
|
recordOb.set("times", 0);
|
|
recordOb.set("edit", 0);
|
|
}
|
|
batchList.add(recordOb);
|
|
}
|
|
}
|
|
private void addBatchClassTimejx(List<Record> batchList,List<Record> zouSubjectList,String taskId,JSONObject jsonOb,String [] courseArray){
|
|
/*走班课程*/
|
|
for(Record subjectRecord : zouSubjectList ){
|
|
Record recordOb = new Record();
|
|
String subjectId = String.valueOf(subjectRecord.get("subject_id"));
|
|
recordOb.set("task_id", taskId);
|
|
recordOb.set("class_id", COMMON.isEmpty(jsonOb.get("class_id"))?-1:jsonOb.get("class_id"));
|
|
recordOb.set("class_type",jsonOb.get("class_type"));
|
|
recordOb.set("subject_id", subjectRecord.get("subject_id"));
|
|
if(ToolsUtil.arrayIncludeStr(courseArray, subjectId)){
|
|
String classType = String.valueOf(jsonOb.get("class_type"));
|
|
if("0".equals(classType)){
|
|
recordOb.set("times", subjectRecord.get("times"));
|
|
}else if("1".equals(classType)){
|
|
recordOb.set("times", subjectRecord.get("times_choice"));
|
|
}
|
|
recordOb.set("edit", 1);
|
|
batchList.add(recordOb);
|
|
break ;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description 排课任务发布
|
|
* @author Mr.zms
|
|
* @date 2019/5/15
|
|
* @return com.alibaba.fastjson.JSONObject
|
|
*/
|
|
public JSONObject saveTaskYearXq(Record record,String uuid ) {
|
|
boolean flag = false ;
|
|
record.set("uuid", uuid);
|
|
String bureauId = String.valueOf(record.get("bureau_id"));
|
|
String stageId = String.valueOf(record.get("stage_id"));
|
|
String year = String.valueOf(record.get("year"));
|
|
String xqId = String.valueOf(record.get("xq_id"));
|
|
String taskId = String.valueOf(record.get("task_id"));
|
|
//获取时间
|
|
Record dateRecord = CourseSelectTimeModel.dao.getCourseTableTime(bureauId,year,stageId,xqId);
|
|
int endWeek= dateRecord.getInt("week");
|
|
int startWeek = getReleaseWeek(dateRecord);
|
|
startWeek = startWeek==-1?1:(startWeek+1);
|
|
//插入结果表数据
|
|
if(!"0".equals(taskId)){
|
|
//单条发布
|
|
TaskModel.dao.insertTimetableRelease(uuid, taskId,"t_select_course_task_timetable");
|
|
TaskModel.dao.insertReleaseWeekByTaskId(taskId,uuid,startWeek,endWeek);
|
|
}else{
|
|
//获取 发布后的taskIds
|
|
Record records = MergeCourseTableModel.dao.getTimetableTaskIdsBypersonId("", uuid);
|
|
if(!COMMON.isEmpty(records)){
|
|
taskId = String.valueOf(records.get("task_id_ob"));
|
|
}
|
|
//合并发布
|
|
TaskModel.dao.insertTimetableRelease(uuid, "","t_select_course_task_timetable_merge");
|
|
TaskModel.dao.insertReleaseWeekByTaskId("",uuid,startWeek,endWeek);
|
|
MergeCourseTableModel.dao.delTimetableMerge(uuid);
|
|
MergeCourseTableModel.dao.delTimetableRoom(uuid, "", "");
|
|
}
|
|
|
|
//删除操作记录
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperationExtend(taskId,Constant.TYPE_TASK);
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperation(taskId,Constant.TYPE_TASK);
|
|
//发布课表的 课时 插入t_select_week_of_class_uuid
|
|
saveWeekOfClassUuid(uuid, bureauId, year, stageId,xqId);
|
|
// 新合班规则保存
|
|
//TaskModel.dao.saveClassMergingStudent(uuid,taskId);
|
|
saveClassMergingStudent(uuid,taskId,startWeek,endWeek);
|
|
//查询之前的发布记录
|
|
List<Record> taskList = TaskModel.dao.getTaskYearXq(bureauId, xqId, year, stageId);
|
|
if(COMMON.isEmpty(taskList)){
|
|
flag = TaskModel.dao.saveTaskYearXq(record);
|
|
}else{
|
|
Record recordTask = taskList.get(0);
|
|
//获取之前发布的uuid
|
|
String uuidOther = recordTask.get("uuid");
|
|
//调代课任务- 无效
|
|
updateAdjustRecord2invalid(record);
|
|
//更新发布记录表
|
|
record.set("id", String.valueOf(recordTask.get("id")));
|
|
flag=TaskModel.dao.updateTaskYearXq(record);
|
|
//取已经发布的 状态改成未发布
|
|
String taskIds = TaskModel.dao.getTaskIdsFromTimetableRelease(uuidOther);
|
|
if(!COMMON.isEmpty(taskIds)){
|
|
TaskModel.dao.updateTaskisRelease(0,taskIds);
|
|
}
|
|
/*删除之前的发布的课表数据*/
|
|
TaskModel.dao.delTimeTableRelease(uuidOther);
|
|
/*删除课表对应的课时*/
|
|
TaskModel.dao.delWeekOfClassUuid(uuidOther);
|
|
/*删除之前调课的课表*/
|
|
TaskModel.dao.delReleaseCourseTableBetweenWeek(uuidOther,String.valueOf(startWeek),String.valueOf(endWeek));
|
|
//原来的课表uuid刷新
|
|
TaskModel.dao.updateReleaseWeekUuid(uuid,uuidOther);
|
|
//删除之前高级合班学生数据
|
|
TaskModel.dao.delMergingStudent(uuidOther,startWeek,endWeek);
|
|
}
|
|
//排课任务 改成 发布状态
|
|
TaskModel.dao.updateTaskisRelease(1,taskId);
|
|
return SelectCourseBaseService.service.returnJsonResult(flag);
|
|
}
|
|
|
|
private void saveClassMergingStudent(String uuid ,String taskId,int startWeek,int endWeek){
|
|
TaskModel.dao.saveClassMergingStudent(uuid,taskId,startWeek,endWeek);
|
|
}
|
|
/**
|
|
* @description 更新调代课任务 变成无效
|
|
* @author Mr.zms
|
|
* @date 2019/9/3
|
|
* @return void
|
|
*/
|
|
private void updateAdjustRecord2invalid(Record record){
|
|
int bureauId = Integer.parseInt(String.valueOf(record.get("bureau_id")));
|
|
String stageId = String.valueOf(record.get("stage_id"));
|
|
String year = String.valueOf(record.get("year"));
|
|
String xqId = String.valueOf(record.get("xq_id"));
|
|
Page<Record> page = TimetableAdjustModel.DAO.getTimetableAdjustRecordList(-1,bureauId,-1,-1,9999, 1);
|
|
List<Record> list = page.getList();
|
|
List<String> idList = new ArrayList<>();
|
|
//遍历调代课任务
|
|
for (Record record1 : list) {
|
|
// 只有发布当前学期 才生效
|
|
String xqId1 = String.valueOf(record1.get("xq_id"));
|
|
if(!xqId.equals(xqId1)){
|
|
continue;
|
|
}
|
|
String id = String.valueOf(record1.get("id"));
|
|
// 如果学段为空 变成无效
|
|
if(COMMON.isEmpty(record1.get("stage_id"))){
|
|
idList.add(id);
|
|
continue;
|
|
}
|
|
// 学段相等
|
|
String stageId1 = String.valueOf(record1.get("stage_id"));
|
|
if(stageId.equals(stageId1)){
|
|
//如果学年为空 变成无效
|
|
if(COMMON.isEmpty(record1.get("year"))){
|
|
idList.add(id);
|
|
continue;
|
|
}
|
|
// 如果学年相等 变成无效
|
|
String year1 = String.valueOf(record1.get("year"));
|
|
if(year.equals(year1)){
|
|
idList.add(id);
|
|
}
|
|
}
|
|
}
|
|
if(!COMMON.isEmpty(idList)){
|
|
String [] strArr = new String[idList.size()];
|
|
idList.toArray(strArr);
|
|
String ids = ToolsUtil.getIds(strArr);
|
|
TimetableAdjustModel.DAO.updateAdjustRecord(ids,"","4","1,2");
|
|
//删除调课操作记录
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperationExtend(ids,Constant.TYPE_ADJUST);
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperation(ids,Constant.TYPE_ADJUST);
|
|
//删除代课操作记录
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperationExtend(ids,Constant.TYPE_ABSENT);
|
|
TimetableAdjustModel.DAO.delTimetableAdjustOperation(ids,Constant.TYPE_ABSENT);
|
|
}
|
|
}
|
|
/**
|
|
* @description 获取当前周
|
|
* @author Mr.zms
|
|
* @date 2019/8/12
|
|
* @return int
|
|
*/
|
|
public int getReleaseWeek(Record record ){
|
|
if(COMMON.isEmpty(record.get("start_date"))){
|
|
return -1 ;
|
|
}
|
|
int startWeek = -1 ;
|
|
try {
|
|
//开始日期
|
|
Date startDay = DateUtils.parse(String.valueOf(record.get("start_date")),DateUtils.FORMAT_YEAR_MONTH_DAY);
|
|
Date monday = DateUtils.getDateOfWeekDay(startDay,1);
|
|
Date endDay = DateUtils.getDateOfWeekDay(new Date(),1);
|
|
//当前日期的周1 - 开学日期的周1
|
|
float datDiff = DateUtils.dayDiff(endDay,monday);
|
|
if(datDiff >= 0 ){
|
|
//获取当前周
|
|
startWeek = (int)(datDiff/7)+1;
|
|
}
|
|
} catch (ParseException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return startWeek ;
|
|
}
|
|
|
|
public void saveWeekOfClassUuid(String uuid,String bureauId,String year,String stageId,String xqId){
|
|
Record courseTime = CourseSelectTimeModel.dao.getCourseTableTime(bureauId,year,stageId,xqId);
|
|
Record recordTime = new Record().set("uuid", uuid).set("week_of_class_count", courseTime.get("week_of_class_count"))
|
|
.set("morning_of_class_count", courseTime.get("morning_of_class_count"))
|
|
.set("afternoon_of_class_count", courseTime.get("afternoon_of_class_count"))
|
|
.set("start_date", courseTime.get("start_date"))
|
|
.set("week", courseTime.get("week")).set("morning_study_count",courseTime.get("morning_study_count")).set("night_study_count",courseTime.get("night_study_count"));
|
|
TaskModel.dao.saveWeekOfClassUuid(recordTime);
|
|
}
|
|
public JSONObject checkStartStudyTask(String taskId, String calculateType) {
|
|
JSONObject returnJson = new JSONObject();
|
|
JSONObject taskJson = TaskService.service.getTaskByTaskId(taskId);
|
|
JSONObject taskInfo = taskJson.getJSONObject("task_info");
|
|
JSONObject bean = taskInfo.getJSONObject("bean");
|
|
boolean flag = true ;
|
|
returnJson.put("success", true);
|
|
returnJson.put("info", "成功");
|
|
//校验课时安排
|
|
if(!checkStartTaskTime(bean)){
|
|
returnJson.put("info", "当前排课任务未设置课时安排。");
|
|
returnJson.put("success", flag);
|
|
}
|
|
/*验证排课任务是否是进行中*/
|
|
flag = checkStartTaskStatus(bean);
|
|
if(!flag){
|
|
returnJson.put("info", "当前排课任务进行中,不允许开启排课。");
|
|
returnJson.put("success", flag);
|
|
}
|
|
/*如果是普通排课 暂时不校验*/
|
|
if("4".equals(calculateType)){
|
|
return returnJson ;
|
|
}
|
|
/*校验走班课时*/
|
|
flag = checkStartTaskTime( taskId, calculateType);
|
|
if(!flag){
|
|
returnJson.put("info", "走班课时为空,不允许开启排课。");
|
|
returnJson.put("success", flag);
|
|
return returnJson ;
|
|
}
|
|
/*校验是否有带分组*/
|
|
flag = checkStartTaskClass(taskId, calculateType);
|
|
if(!flag){
|
|
returnJson.put("info", "存在待分组班级,不允许开启排课。");
|
|
returnJson.put("success", flag);
|
|
}
|
|
return returnJson;
|
|
}
|
|
/**
|
|
* @Description: 校验排课任务 走班课时
|
|
* @author :周明升
|
|
* @date: 2019-1-17 下午3:53:25
|
|
* @return: boolean
|
|
* @throws
|
|
*/
|
|
private boolean checkStartTaskTime(String taskId,String calculateType){
|
|
boolean flag = true ;
|
|
List<Record> timeList = TaskModel.dao.getTaskTimeList(taskId,"");
|
|
JSONObject timeJson = getTimesByTaskId(taskId, calculateType);
|
|
int time = Integer.parseInt(String.valueOf(timeJson.get("maxTimes")));
|
|
int choice = Integer.parseInt(String.valueOf(timeJson.get("maxTimesChoice")));
|
|
int allTime = time + choice ;
|
|
if(COMMON.isEmpty(timeList)&&0 != allTime){
|
|
flag = false ;
|
|
}
|
|
return flag ;
|
|
}
|
|
/**
|
|
* @Description: 校验排课任务 班级分组
|
|
* @author :周明升
|
|
* @date: 2019-1-17 下午3:53:44
|
|
* @return: boolean
|
|
* @throws
|
|
*/
|
|
private boolean checkStartTaskClass(String taskId,String calculateType){
|
|
boolean flag = true ;
|
|
/*校验是否有带分组*/
|
|
String classType = "1" ; //默认学考
|
|
if("2".equals(calculateType)){
|
|
classType = "0,1";
|
|
}else if("5".equals(calculateType)){// 这个是 定四走二
|
|
return flag ;
|
|
}
|
|
List<Record> classList = TaskModel.dao.getClassListByTaskId(taskId, classType);
|
|
for(Record record : classList){
|
|
String groupId = String.valueOf(record.get("group_id"));
|
|
if("0".equals(groupId)){
|
|
flag = false ;
|
|
return flag ;
|
|
}
|
|
}
|
|
return flag ;
|
|
}
|
|
private boolean checkStartTaskStatus(JSONObject bean){
|
|
/*验证排课任务是否是进行中*/
|
|
int status = bean.getIntValue("status");
|
|
if(1 == status ){
|
|
return false;
|
|
}
|
|
return true ;
|
|
}
|
|
private boolean checkStartTaskTime(JSONObject bean){
|
|
String bureauId = String.valueOf(bean.get("bureau_id"));
|
|
String year = String.valueOf(bean.get("grade"));
|
|
String stageId = String.valueOf(bean.get("stage_id"));
|
|
String xqId = String.valueOf(bean.get("xq_id"));
|
|
Record weekOb = CourseSelectTimeModel.dao.getCourseTableTime(bureauId, year, stageId,xqId);
|
|
if(COMMON.isEmpty(weekOb)){
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
/**
|
|
* @Description: 获取发布后的班级列表
|
|
* @author :周明升
|
|
* @date: 2019-1-18 上午10:05:08
|
|
* @return: JSONObject
|
|
* @throws
|
|
*/
|
|
public JSONObject getReleasePlanClassList(String planId,String bureauId,String stageId,String year,String calculateType) {
|
|
JSONObject returnJson = new JSONObject();
|
|
List<Record> classList = TaskModel.dao.getReleasePlanClassList(planId);
|
|
List<Record> xingList = new ArrayList<>();
|
|
List<Record> xuanList = new ArrayList<>();
|
|
List<Record> xueList = new ArrayList<>();
|
|
Object [] classListArray = {xuanList,xueList,xingList};
|
|
/*检验 当前排课任务的班级 是否还存在 (基础数据)*/
|
|
addTaskClassByPlan(bureauId,stageId,year, calculateType,classListArray, classList);
|
|
int sumLength = classList.size();
|
|
int legth = xingList.size() + xuanList.size() + xueList.size();
|
|
if(sumLength != legth||sumLength == 0){
|
|
returnJson.put("info", "该选科计划下基础数据信息已发生变动,不可选择!");
|
|
returnJson.put("success", false);
|
|
return returnJson ;
|
|
}
|
|
returnJson.put("xing_list", COMMON.convertListRecord2(xingList));
|
|
returnJson.put("xue_list", COMMON.convertListRecord2(xueList));
|
|
returnJson.put("xuan_list", COMMON.convertListRecord2(xuanList));
|
|
returnJson.put("info", "查询成功");
|
|
returnJson.put("success", true);
|
|
return returnJson;
|
|
}
|
|
private void addTaskClassByPlan(String bureauId, String stageId, String year,String calculateType,
|
|
Object[] classListArray, List<Record> classList) {
|
|
int [] classArray = {0,1,2};
|
|
for (int i = 0; i < classArray.length; i++) {
|
|
/*获取基础数据班级*/
|
|
int baseClassType = classArray[i];
|
|
String strXing = getClassList(Integer.parseInt(bureauId), Integer.parseInt(stageId), Integer.parseInt(year), baseClassType, Integer.parseInt(calculateType));
|
|
JSONArray xingJsonArray = JSONObject.parseObject(strXing).getJSONArray("list");
|
|
List<Record> xingclassList = ToolsUtil.JSONArray2List(xingJsonArray);
|
|
for(Record record : xingclassList){
|
|
String classId = String.valueOf(record.get("class_id"));
|
|
int baseClassTypeNew = Integer.parseInt(String.valueOf(record.get("base_class_type")));
|
|
for(Record classOb : classList){
|
|
int classType = Integer.parseInt(String.valueOf(classOb.get("class_type")));
|
|
String classIdob = String.valueOf(classOb.get("class_id"));
|
|
if(baseClassTypeNew == classType&&classId.equals(classIdob)){
|
|
@SuppressWarnings("unchecked")
|
|
List<Record> classListObj = (List<Record>) classListArray[i];
|
|
classListObj.add(classOb);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description 获取班级的走班课程
|
|
* @author Mr.zms
|
|
* @date 2019/4/15
|
|
* @return com.alibaba.fastjson.JSONObject
|
|
*/
|
|
public JSONObject getClassGoCourse(String taskId, String classId,String classType) {
|
|
JSONObject returnJson = new JSONObject();
|
|
/*获取行政班课时*/
|
|
List<Record> timeList = TaskModel.dao.getClassTimeList(taskId,classId,classType,"","1");
|
|
returnJson.put("success",true);
|
|
returnJson.put("list",COMMON.convertListRecord2(timeList));
|
|
return returnJson ;
|
|
}
|
|
|
|
public HSSFWorkbook exportClassTimeExcel(String taskId,String classType) {
|
|
HSSFWorkbook wb = new HSSFWorkbook();
|
|
HSSFSheet sheet = wb.createSheet("课程课时");
|
|
sheet.protectSheet("edit");
|
|
HSSFCellStyle unLockCellStyle = wb.createCellStyle();
|
|
unLockCellStyle.setLocked(false);
|
|
//获取行政班班级列表
|
|
Record recordOb = new Record().set("class_id",-1).set("class_name","班级\\课程");
|
|
List<Record> list = TaskModel.dao.getClassListByTaskId(taskId, classType);
|
|
list.add(0,recordOb);
|
|
//获取行政班课时
|
|
List<Record> timeList = TaskModel.dao.getClassTimeList(taskId,"",classType,"","");
|
|
Map<String,Record> map = getClassSubjectTimeMap(timeList);
|
|
List<Record> subjectList = TaskModel.dao.getClassTimeList(taskId,"-1",classType,"","1");
|
|
for (int i = 0; i < list.size(); i++) {
|
|
Record record = list.get(i);
|
|
HSSFRow row = sheet.createRow(i);
|
|
String classId = String.valueOf(record.get("class_id"));
|
|
String className = String.valueOf(record.get("class_name"));
|
|
HSSFCell headCell = row.createCell(0);
|
|
headCell.setCellValue(className);
|
|
for (int i1 = 0; i1 <subjectList.size(); i1++) {
|
|
Record subject = subjectList.get(i1);
|
|
String subjectId = String.valueOf(subject.get("subject_id"));
|
|
String key = classId+"|"+subjectId;
|
|
HSSFCell cell = row.createCell(i1+1);
|
|
if("-1".equals(classId)){
|
|
String subjectName = String.valueOf(subjectList.get(i1).get("subject_name"));
|
|
cell.setCellValue(subjectName);
|
|
}else{
|
|
if(!COMMON.isEmpty( map.get(key))){
|
|
Record record1 = map.get(key);
|
|
int times = record1.get("times");
|
|
int edit =record1.get("edit");
|
|
if(1==edit){
|
|
cell.setCellValue(times);
|
|
cell.setCellStyle(unLockCellStyle);
|
|
}else {
|
|
cell.setCellValue("-");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return wb;
|
|
}
|
|
|
|
Map<String,Record> getClassSubjectTimeMap(List<Record> timeList){
|
|
Map<String,Record> map = new HashMap<>();
|
|
for (Record record : timeList) {
|
|
String key = record.get("class_id")+"|"+record.get("subject_id");
|
|
|
|
map.put(key,record);
|
|
}
|
|
return map ;
|
|
}
|
|
|
|
/**
|
|
* @description 导入班级课时Excel
|
|
* @author Mr.zms
|
|
* @date 2019/6/25
|
|
* @return com.alibaba.fastjson.JSONObject
|
|
*/
|
|
public JSONObject importClassTimeExcel(int taskId, UploadFile file) {
|
|
//校验文件
|
|
JSONObject returnJson = FileUtil.CheckUploadFileObject(file.getSaveDirectory() + File.separator + file.getFileName());
|
|
if(!returnJson.getBooleanValue("success")){
|
|
return returnJson ;
|
|
}
|
|
HSSFWorkbook wb = null;
|
|
try {
|
|
wb = new HSSFWorkbook(new FileInputStream(file.getSaveDirectory() + File.separator + file.getFileName()));
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
//检验模板 是否为空
|
|
if(COMMON.isEmpty(wb)){
|
|
return SelectCourseBaseService.service.failedResult("导入模板为空");
|
|
}
|
|
//校验模板是否正确
|
|
HSSFSheet sheet = wb.getSheetAt(0);
|
|
String sheetName = sheet.getSheetName();
|
|
int rowNum=sheet.getLastRowNum();
|
|
if(!"课程课时".equals(sheetName)||rowNum<2){
|
|
return SelectCourseBaseService.service.failedResult("导入模板错误");
|
|
}
|
|
String uuid = COMMON.getGuid();
|
|
//检验和插入临时表
|
|
if(!checkAndInsertClassTime(sheet,uuid,taskId)){
|
|
return SelectCourseBaseService.service.failedResult("导入模板错误");
|
|
}
|
|
//删除临时表数据的record
|
|
Record delRecord = new Record().set("field_1",uuid).set("field_2",taskId);
|
|
//处理临时数据 获取正确的数据
|
|
List<Record> batchClassList = processingData(uuid,taskId);
|
|
if(COMMON.isEmpty(batchClassList)){
|
|
CurriculumPlanModel.dao.delImportTeacherTime(delRecord);
|
|
return SelectCourseBaseService.service.failedResult("导入模板不存在合格的班级课时");
|
|
}
|
|
//批量更新行政班班级课时
|
|
TaskModel.dao.batchUpdateTaskclassTime(batchClassList);
|
|
// 删除临时表数据
|
|
CurriculumPlanModel.dao.delImportTeacherTime(delRecord);
|
|
returnJson.put("success",Constant.TRUE);
|
|
returnJson.put("info","导入成功");
|
|
return returnJson ;
|
|
}
|
|
|
|
/**
|
|
* @description 处理临时表数据
|
|
* @author Mr.zms
|
|
* @date 2019/6/25
|
|
* @return java.util.List<com.jfinal.plugin.activerecord.Record>
|
|
*/
|
|
private List<Record> processingData(String uuid, int taskId) {
|
|
//获取临时数据
|
|
List<Record> list = TaskModel.dao.getImportClassTime(uuid,taskId);
|
|
//处理模板里的数据,课时是否是数字
|
|
List<Record> batchPersonList = new ArrayList<>();
|
|
for (Record record1 : list) {
|
|
String times = String.valueOf(record1.get("times"));
|
|
if(!COMMON.isEmpty(times)&&SelectCourseBaseService.service.isNumeric(times)){
|
|
record1.set("times",(int)Double.parseDouble(times));
|
|
batchPersonList.add(record1);
|
|
}
|
|
}
|
|
return batchPersonList ;
|
|
}
|
|
|
|
/**
|
|
* @description 检验和插入临时表
|
|
* @author Mr.zms
|
|
* @date 2019/6/25
|
|
* @return boolean
|
|
*/
|
|
boolean checkAndInsertClassTime(HSSFSheet sheet,String uuid, int taskId) {
|
|
//获取 学科列表
|
|
List<Record> subjectList = TaskModel.dao.getClassTimeList(String.valueOf(taskId),"-1","2","","1");
|
|
//校验学科是否 一一对应
|
|
HSSFRow subjectRow = sheet.getRow(0);
|
|
for (int i = 0; i < subjectList.size(); i++) {
|
|
HSSFCell cell = subjectRow.getCell(i+1);
|
|
if(COMMON.isEmpty(cell)){
|
|
return false;
|
|
}else {
|
|
String subjectName = cell.toString();
|
|
String compareSubjectName = subjectList.get(i).get("subject_name");
|
|
if(!subjectName.equals(compareSubjectName)){
|
|
return false ;
|
|
}
|
|
}
|
|
}
|
|
//获取班级列表
|
|
List<Record> list = TaskModel.dao.getClassListByTaskId(String.valueOf(taskId), "2");
|
|
//校验班级是否 --对应
|
|
for (int i = 0; i < list.size(); i++) {
|
|
HSSFRow classRow = sheet.getRow(i+1);
|
|
if(COMMON.isEmpty(classRow)){
|
|
return false;
|
|
}
|
|
HSSFCell cell = classRow.getCell(0);
|
|
if(COMMON.isEmpty(cell)){
|
|
return false;
|
|
}
|
|
String className = classRow.getCell(0).toString();
|
|
String compareClassName = list.get(i).get("class_name");
|
|
if(!className.equals(compareClassName)){
|
|
return false ;
|
|
}
|
|
}
|
|
//整理数据
|
|
List<Record> batchList = new ArrayList<>();
|
|
for (int i = 0; i < list.size(); i++) {
|
|
HSSFRow row = sheet.getRow(i+1);
|
|
String classId = String.valueOf(list.get(i).get("class_id"));
|
|
for (int i1 = 0; i1 < subjectList.size(); i1++) {
|
|
HSSFCell cell = row.getCell(i1+1);
|
|
if(COMMON.isEmpty(cell)){
|
|
continue;
|
|
}
|
|
String cellString = cell.toString();
|
|
cellString = cellString.replaceAll(" ","");
|
|
String subjectId = String.valueOf(subjectList.get(i1).get("subject_id"));
|
|
Record record = new Record().set("field_1",uuid).set("field_2",taskId);
|
|
record.set("field_3",classId).set("field_4","2").set("field_5",subjectId).set("field_6",cellString);
|
|
batchList.add(record);
|
|
}
|
|
}
|
|
//插入临时表
|
|
CurriculumPlanModel.dao.batchImportExcel(batchList,6);
|
|
return true ;
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getStepYearTeacherInfo(String taskIds, int personId) {
|
|
List<Record> list = TaskModel.dao.getStepYearTeacherInfo(taskIds,personId);
|
|
return COMMON.convert2JsonStr(list);
|
|
}
|
|
|
|
public JSONObject getStepYearTaskList(String taskId, Record record) {
|
|
JSONObject returnJson = new JSONObject();
|
|
Page<Record> pageRecord = TaskModel.dao.getTaskList(record);
|
|
List<Record> list = pageRecord.getList();
|
|
for (Record record1 : list) {
|
|
String compareTaskId = String.valueOf(record1.get("task_id"));
|
|
if(taskId.equals(compareTaskId)){
|
|
list.remove(record1);
|
|
break;
|
|
}
|
|
}
|
|
returnJson.put("list", COMMON.convertListRecord2(list));
|
|
returnJson.put("success",Constant.TRUE);
|
|
return returnJson;
|
|
}
|
|
|
|
public JSONObject getStepYearTaskListByTaskId(String taskId) {
|
|
List<Record> list = TaskModel.dao.getStepYearTaskListByTaskId(taskId);
|
|
JSONObject returnJson = new JSONObject();
|
|
returnJson.put("success",true);
|
|
returnJson.put("list",COMMON.convertListRecord2(list));
|
|
return returnJson;
|
|
}
|
|
public String getStepYearTaskIds(String taskId){
|
|
List<Record> list = TaskModel.dao.getStepYearTaskListByTaskId(taskId);
|
|
Record record = new Record().set("task_id",taskId);
|
|
list.add(record);
|
|
return ToolsUtil.getIds(list,"task_id");
|
|
}
|
|
public Record getMaxDayJson(String taskId){
|
|
String taskIds = getStepYearTaskIds(taskId);
|
|
return TaskModel.dao.getMaxCourseClassInfo(taskIds);
|
|
}
|
|
|
|
public String downCourseTableBak(String taskId) {
|
|
List<Record> list = TaskModel.dao.getCourseTableList(taskId);
|
|
JSONObject jsonObject = new JSONObject();
|
|
jsonObject.put("task_id",taskId);
|
|
jsonObject.put("list",COMMON.convertListRecord2(list));
|
|
String str = jsonObject.toJSONString() ;
|
|
return SecurityAES.encrypt(str);
|
|
}
|
|
public String getBakName(String taskId){
|
|
Record record = new Record().set("task_id", taskId).set("pageSize", 1).set("pageNumber", 1);
|
|
Page<Record> pageRecord = TaskModel.dao.getTaskList(record);
|
|
List<Record> list = pageRecord.getList();
|
|
if(!COMMON.isEmpty(list)){
|
|
record = list.get(0);
|
|
}
|
|
String taskName = record.get("task_name");
|
|
String dataStr = DateUtils.getDateTime(DateUtils.FORMAT_FULL,new Date());
|
|
return taskName+"时间"+dataStr+".ds";
|
|
}
|
|
|
|
public JSONObject importCourseTableBak(String taskId ,UploadFile file) {
|
|
//校验文件
|
|
JSONObject returnJson = FileUtil.CheckUploadFileObject(file.getSaveDirectory() + File.separator + file.getFileName());
|
|
if(!returnJson.getBooleanValue("success")){
|
|
return returnJson ;
|
|
}
|
|
File filename = new File(file.getSaveDirectory() + File.separator + file.getFileName());
|
|
InputStreamReader reader = null;
|
|
try {
|
|
reader = new InputStreamReader(new FileInputStream(filename));
|
|
// 建立一个对象,它把文件内容转成计算机能读懂的语言
|
|
BufferedReader br = new BufferedReader(reader);
|
|
String line = "";
|
|
line = br.readLine();
|
|
String str = SecurityAES.decrypt(line);
|
|
if(COMMON.isEmpty(str)){
|
|
return SelectCourseBaseService.service.failedResult("导入错误备份文件");
|
|
}
|
|
JSONObject jsonObject = JSONObject.parseObject(str);
|
|
String compareTaskId = String.valueOf(jsonObject.get("task_id"));
|
|
if(!taskId.equals(compareTaskId)){
|
|
return SelectCourseBaseService.service.failedResult("导入的备份文件不是当前排课任务");
|
|
}
|
|
JSONArray jsonArray = jsonObject.getJSONArray("list");
|
|
List<Record> list = ToolsUtil.JSONArray2List(jsonArray);
|
|
//删除课表
|
|
CourseSelectTimeModel.dao.delCourseTable(taskId,"","");
|
|
CourseSelectTimeModel.dao.batchTaskTimeTable(list);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
return SelectCourseBaseService.service.failedResult("导入错误备份文件");
|
|
}
|
|
returnJson.put("success",true);
|
|
returnJson.put("info","导入成功");
|
|
return returnJson;
|
|
}
|
|
}
|