package com.zcloud.controller.eduStudy; import com.zcloud.controller.base.BaseController; import com.zcloud.service.eduStudy.*; import com.zcloud.entity.Page; import com.zcloud.entity.PageData; import com.zcloud.entity.TrainingPlanDao; import com.zcloud.service.corp.CorpInfoService; import com.zcloud.service.system.DictionariesService; import com.zcloud.util.*; import fr.opensagres.xdocreport.document.IXDocReport; import fr.opensagres.xdocreport.document.images.FileImageProvider; import fr.opensagres.xdocreport.document.images.IImageProvider; import fr.opensagres.xdocreport.document.registry.XDocReportRegistry; import fr.opensagres.xdocreport.template.IContext; import fr.opensagres.xdocreport.template.TemplateEngineKind; import fr.opensagres.xdocreport.template.formatter.FieldsMetadata; import org.apache.commons.lang3.StringUtils; import org.jfree.data.general.DefaultPieDataset; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * 说明:班级管理 * 作者:luoxiaobao * 时间:2022-05-26 * 官网:www.zcloudchina.com * 官网:www.zcloudchina.com */ @Controller @RequestMapping("/class") public class ClassController extends BaseController { @Autowired private ClassService classService; @Autowired private StudentService studentService; @Autowired private PostPaperService postPaperService; @Resource private DictionariesService dictionariesService; @Resource private CorpInfoService corpInfoService; @Autowired private ClassCurriculumService classCurriculumService; @Autowired private ClassPostService classPostService; @Autowired private InitPageDataUtil initPageDataUtil; @Autowired private StageStudentRelationService stageStudentRelationService; @Autowired private CourseStudyVideoRecordService courseStudyVideoRecordService; /** * @Description: 机构或者企业下得所有班级 * @Author: dearLin * @Date: 2023/6/5/005 14:08 * @Param: [] [] * @Return: java.lang.Object */ @RequestMapping(value = "/getClassAllByCorOrEnt") @ResponseBody public Object getClassAllByCorOrEnt() { PageData pageData = this.getPageData(); // 2 3 是机构 pageData.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); if ("0".equals(Jurisdiction.getIS_MAIN())){ pageData.put("AUTHORITY", Jurisdiction.getUSER_ID()); } List varList = classService.getClassAllByCorOrEnt(pageData); pageData.put("varList", varList); pageData.put("result", "success"); return pageData; } /** * 列表 * * @param page * @throws Exception */ @RequestMapping(value = "/list") @ResponseBody public Object list(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); int classNum = 0; PageData data = new PageData(); //注意数据权限。企业看企业数据,机构看机构数据 pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); data.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); if ("0".equals(Jurisdiction.getIS_MAIN())){ pd.put("USER_ID", Jurisdiction.getUSER_ID()); data.put("USER_ID", Jurisdiction.getUSER_ID()); } classNum = classService.getClassNum(data); String KEYWORDS = pd.getString("KEYWORDS"); //关键词检索条件 if (Tools.notEmpty(KEYWORDS)) pd.put("KEYWORDS", KEYWORDS.trim()); if (StringUtils.isNotBlank(pd.getString("STARTTIME"))) { pd.put("STARTTIME", pd.getString("STARTTIME") + " 00:00:00"); } if (StringUtils.isNotBlank(pd.getString("ENDTIME"))) { pd.put("ENDTIME", pd.getString("ENDTIME") + " 23:59:59"); } if (StringUtils.isNotBlank(pd.getString("OVERSTARTTIME"))) { pd.put("OVERSTARTTIME", pd.getString("OVERSTARTTIME") + " 00:00:00"); } if (StringUtils.isNotBlank(pd.getString("OVERENDTIME"))) { pd.put("OVERENDTIME", pd.getString("OVERENDTIME") + " 23:59:59"); } page.setPd(pd); // 机构首页统计 传参orgcount List varList = classService.list(page); //列出Class列表 int stuNum = studentService.getStuNumByCrop(pd); map.put("varList", varList); map.put("stuNum", stuNum); map.put("clsNum", classNum); map.put("page", page); map.put("result", errInfo); return map; } /** * 列表 * * @param page * @throws Exception */ @RequestMapping(value = "/classForHealthList") @ResponseBody public Object classForHealthList(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); PageData data = new PageData(); pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); if ("0".equals(Jurisdiction.getIS_MAIN())){ pd.put("USER_ID", Jurisdiction.getUSER_ID()); } String KEYWORDS = pd.getString("KEYWORDS"); //关键词检索条件 if (Tools.notEmpty(KEYWORDS)) pd.put("KEYWORDS", KEYWORDS.trim()); page.setPd(pd); List varList = classService.classForHealthList(page); //列出Class列表 map.put("varList", varList); map.put("page", page); map.put("result", errInfo); return map; } @RequestMapping(value = "/strengthenlist") @ResponseBody public Object strengthenlist(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); page.setPd(pd); pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); List varList = classService.listStrengthenClassById(page); //列出Class列表 map.put("varList", varList); map.put("page", page); map.put("result", errInfo); return map; } @RequestMapping(value = "/strengthenstudentlist") @ResponseBody public Object strengthenstudentlist(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); page.setPd(pd); // 机构首页统计 传参orgcount List varList = classService.listStrengthenStudentById(page); //列出Class列表 map.put("varList", varList); map.put("page", page); map.put("result", errInfo); return map; } @RequestMapping(value = "/allstrengthenlist") @ResponseBody public Object allstrengthenlist(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); /*String training_content = pd.getString("TRAINING_CONTENT"); //关键词检索条件 if(Tools.notEmpty(training_content))pd.put("TRAINING_CONTENT", training_content.trim()); pd.put("ENTERPRISE_ID", Jurisdiction.getENTERPRISE_ID());*/ page.setPd(pd); List varList = classService.listallstrengthenlist(page); //列出TrainingPlan列表 map.put("varList", varList); map.put("page", page); map.put("result", errInfo); return map; } @RequestMapping(value = "/personnelstrengthenlist") @ResponseBody public Object personnelstrengthenlist(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); Object USER_ID = pd.get("USER_ID"); if (USER_ID == null) { pd.put("USER_ID", Jurisdiction.getUSER_ID()); } page.setPd(pd); List varList = classService.listStudentStrengthenbyId(page); //列出TrainingPlan列表 map.put("varList", varList); map.put("page", page); map.put("result", errInfo); return map; } /** * 新增 * * @param * @throws Exception */ @RequestMapping(value = "/add") // @RequiresPermissions("class:add") @ResponseBody @Transactional public Object add() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd.put("CLASS_ID", this.get32UUID()); //主键 pd.put("CREATOR", Jurisdiction.getUsername()); //添加人 pd.put("CREATTIME", DateUtil.date2Str(new Date())); //添加时间 pd.put("OPERATOR", Jurisdiction.getUsername()); //修改人 pd.put("OPERATTIME", DateUtil.date2Str(new Date())); //修改时间 pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); //修改时间 pd.put("ISDELETE", "0"); //是否删除(0:有效 1:删除) pd.put("STATE", "0"); // 状态 String code = ""; if (pd.get("TRAINTYPE") != null && Tools.notEmpty(pd.get("TRAINTYPE").toString())) { if ("9cbe83925bbb4d84bc057b5eb5607a53".equals(pd.get("TRAINTYPE").toString())) {// 三岗人员 code = "SGRY_"; } else if ("bd73ea91fdcd4ef38ecd6f45a42f26af".equals(pd.get("TRAINTYPE").toString())) {// 全员培训 code = "QYPX_"; } } // List list = enterpriseService.getContractAll(pd); // List connectDateList = new ArrayList<>(); // if (list.size() > 1) { // SimpleDateFormat formatDay = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String start_date = list.get(0).getString("DEADLINE_START"); // String end_date = list.get(0).getString("DEADLINE_END"); // for (int i = 1; i < list.size(); i++) { // String date1 = list.get(i).getString("DEADLINE_START"); // String date2 = list.get(i).getString("DEADLINE_END"); // // 判断两个时间段是否连接,如果连接则两个时间段拼接 // if (DateUtil.isContinuation(formatDay.parse(date1 + " 00:00:00"), formatDay.parse(end_date + " 00:00:00"))) { // end_date = date2; // //判断是否是最后时间段,如果最后一个时间段,则存一下 // if (i == list.size() - 1) { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", start_date); // datepd.put("DEADLINE_END", end_date); // connectDateList.add(datepd); // } // } else { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", start_date); // datepd.put("DEADLINE_END", end_date); // connectDateList.add(datepd); // //判断是否是最后时间段,如果最后一个时间段没有存进去,则存一下 // if (i == list.size() - 1) { // if (!end_date.equals(date2)) { // PageData datepd_end = new PageData(); // datepd_end.put("DEADLINE_START", date1); // datepd_end.put("DEADLINE_END", date2); // connectDateList.add(datepd_end); // } // } // start_date = date1; // end_date = date2; // } // } // } else { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", list.get(0).getString("DEADLINE_START")); // datepd.put("DEADLINE_END", list.get(0).getString("DEADLINE_END")); // connectDateList.add(datepd); // } // boolean between = false; // for (PageData data : connectDateList) { // LocalDateTime date1 = LocalDateTime.parse(pd.get("START_TIME").toString() + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date2 = LocalDateTime.parse(pd.get("END_TIME").toString() + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date3 = LocalDateTime.parse(data.getString("DEADLINE_START") + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date4 = LocalDateTime.parse(data.getString("DEADLINE_END") + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // if (PaperTextValid.isDuplicateDatePeriod2(date1, date2, date3, date4)) { // // 一旦有一个 包含了 那么就不会重新填写服务期限 // between = true; // } // } // //培训日期要在服务日期内 // if (!between) { // map.put("result", errInfo); // map.put("message", "培训日期要在服务日期内,请重新填写检查培训日期或服务日期!"); // return map; // } pd.put("START_TIME", pd.get("START_TIME") + " 00:00:00"); pd.put("END_TIME", pd.get("END_TIME") + " 23:59:59"); pd.put("CODE", code + DateUtil.getSdfTimesSSS()); pd.put("STATE", "1"); classService.save(pd); map.put("result", errInfo); map.put("CLASS_ID", pd.getString("CLASS_ID")); map.put("ENTERPRISE_ID", pd.getString("ENTERPRISE_ID")); return map; } /** * 修改 * * @param * @throws Exception */ @RequestMapping(value = "/edit") // @RequiresPermissions("class:edit") @ResponseBody @Transactional public Object edit() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); boolean isThreeDuty = false; if (pd.get("TRAINTYPE") != null && Tools.notEmpty(pd.get("TRAINTYPE").toString()) && "9cbe83925bbb4d84bc057b5eb5607a53".equals(pd.get("TRAINTYPE").toString())) { isThreeDuty = true; } pd.put("OPERATOR", Jurisdiction.getUsername()); //修改人 pd.put("OPERATTIME", DateUtil.date2Str(new Date())); //修改时间 pd.put("ISDELETE", "0"); //是否删除(0:有效 1:删除) // PageData indFull = industryTypeService.getIndFull(pd); // String[] industryIds = indFull.getString("FULLID").split(","); // pd.put("INDUSTRY_ALL_NAME", indFull.get("FULLNAME")+"-"+pd.getString("INDUSTRY_END_ID_NAME")); // pd.put("INDUSTRY1", industryIds.length > 0? industryIds[0]:null); // pd.put("INDUSTRY2", industryIds.length > 1? industryIds[1]:null); //通过被培训企业id获取服务日期 // List list = enterpriseService.getContractAll(pd); // List connectDateList = new ArrayList<>(); // if (list.size() > 1) { // SimpleDateFormat formatDay = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String start_date = list.get(0).getString("DEADLINE_START"); // String end_date = list.get(0).getString("DEADLINE_END"); // for (int i = 1; i < list.size(); i++) { // String date1 = list.get(i).getString("DEADLINE_START"); // String date2 = list.get(i).getString("DEADLINE_END"); // // 判断两个时间段是否连接,如果连接则两个时间段拼接 // if (DateUtil.isContinuation(formatDay.parse(date1 + " 00:00:00"), formatDay.parse(end_date + " 00:00:00"))) { // end_date = date2; // //判断是否是最后时间段,如果最后一个时间段,则存一下 // if (i == list.size() - 1) { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", start_date); // datepd.put("DEADLINE_END", end_date); // connectDateList.add(datepd); // } // } else { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", start_date); // datepd.put("DEADLINE_END", end_date); // connectDateList.add(datepd); // //判断是否是最后时间段,如果最后一个时间段没有存进去,则存一下 // if (i == list.size() - 1) { // if (!end_date.equals(date2)) { // PageData datepd_end = new PageData(); // datepd_end.put("DEADLINE_START", date1); // datepd_end.put("DEADLINE_END", date2); // connectDateList.add(datepd_end); // } // } // start_date = date1; // end_date = date2; // } // } // } else { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", list.get(0).getString("DEADLINE_START")); // datepd.put("DEADLINE_END", list.get(0).getString("DEADLINE_END")); // connectDateList.add(datepd); // } // boolean between = false; // String startTime = pd.getString("START_TIME"); // startTime = startTime.replace(" 00:00:00", ""); // startTime = startTime.replace(" 23:59:59", ""); // String endTime = pd.getString("END_TIME"); // endTime = endTime.replace(" 23:59:59", ""); // endTime = endTime.replace(" 00:00:00", ""); // for (PageData data : connectDateList) { // LocalDateTime date1 = LocalDateTime.parse(startTime + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date2 = LocalDateTime.parse(endTime + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date3 = LocalDateTime.parse(data.getString("DEADLINE_START") + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date4 = LocalDateTime.parse(data.getString("DEADLINE_END") + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // if (PaperTextValid.isDuplicateDatePeriod2(date1, date2, date3, date4)) { // between = true; // } // } // //培训日期要在服务日期内 // if (!between) { // map.put("result", errInfo); // map.put("message", "培训日期要在服务日期内,请重新填写检查培训日期或服务日期!"); // return map; // } pd.put("START_TIME", pd.get("START_TIME").toString().length() > 10 ? pd.get("START_TIME") : pd.get("START_TIME") + " 00:00:00"); pd.put("END_TIME", pd.get("END_TIME").toString().length() > 10 ? pd.get("END_TIME") : pd.get("END_TIME") + " 23:59:59"); if ("0".equals(pd.get("EXAMINATION").toString())) { pd.put("NUMBEROFEXAMS", 0); } classService.edit(pd); // 三岗类型删除考试相关信息 if (isThreeDuty) { postPaperService.deleteByClass(pd); } map.put("CLASS_ID", pd.getString("CLASS_ID")); map.put("ENTERPRISE_ID", pd.getString("ENTERPRISE_ID")); map.put("result", errInfo); return map; } /** * 删除 * * @param * @throws Exception */ @RequestMapping(value = "/delete") // @RequiresPermissions("class:del") @ResponseBody public Object delete() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd.put("OPERATOR", Jurisdiction.getUsername()); //修改人 pd.put("OPERATTIME", DateUtil.date2Str(new Date())); //修改时间 classService.delete(pd); map.put("result", errInfo); //返回结果 return map; } /** * 延期 * * @param * @throws Exception */ @RequestMapping(value = "/postpone") @ResponseBody @Transactional public Object postpone() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String endTimeStr = pd.getString("TIME") + " 23:59:59"; Date end_Time = formatter.parse(endTimeStr); pd = classService.findById(pd); Date start_Time = formatter.parse(pd.getString("START_TIME")); Date oldEndTime = formatter.parse(pd.getString("END_TIME")); String oldSTATE = pd.getString("STATE"); // PageData corpenter = corpEnterpriseContactService.findByCorpOrEnter(pd); // Date date; // //通过被培训企业id获取服务日期 // List contractlist = enterpriseService.getContractAll(pd); // List connectDateList = new ArrayList<>(); // if (contractlist.size() > 1) { // SimpleDateFormat formatDay = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // String start_date = contractlist.get(0).getString("DEADLINE_START"); // String end_date = contractlist.get(0).getString("DEADLINE_END"); // for (int i = 1; i < contractlist.size(); i++) { // String date1 = contractlist.get(i).getString("DEADLINE_START"); // String date2 = contractlist.get(i).getString("DEADLINE_END"); // // 判断两个时间段是否连接,如果连接则两个时间段拼接 // if (DateUtil.isContinuation(formatDay.parse(date1 + " 00:00:00"), formatDay.parse(end_date + " 00:00:00"))) { // end_date = date2; // //判断是否是最后时间段,如果最后一个时间段,则存一下 // if (i == contractlist.size() - 1) { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", start_date); // datepd.put("DEADLINE_END", end_date); // connectDateList.add(datepd); // } // } else { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", start_date); // datepd.put("DEADLINE_END", end_date); // connectDateList.add(datepd); // //判断是否是最后时间段,如果最后一个时间段没有存进去,则存一下 // if (i == contractlist.size() - 1) { // if (!end_date.equals(date2)) { // PageData datepd_end = new PageData(); // datepd_end.put("DEADLINE_START", date1); // datepd_end.put("DEADLINE_END", date2); // connectDateList.add(datepd_end); // } // } // start_date = date1; // end_date = date2; // } // } // } else { // PageData datepd = new PageData(); // datepd.put("DEADLINE_START", contractlist.get(0).getString("DEADLINE_START")); // datepd.put("DEADLINE_END", contractlist.get(0).getString("DEADLINE_END")); // connectDateList.add(datepd); // } // boolean between = false; // String startTime = pd.getString("START_TIME"); // startTime = startTime.replace(" 00:00:00", ""); // startTime = startTime.replace(" 23:59:59", ""); // String endTime = endTimeStr; // endTime = endTime.replace(" 23:59:59", ""); // endTime = endTime.replace(" 00:00:00", ""); // for (PageData data : connectDateList) { // LocalDateTime date1 = LocalDateTime.parse(startTime + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date2 = LocalDateTime.parse(endTime + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date3 = LocalDateTime.parse(data.getString("DEADLINE_START") + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // LocalDateTime date4 = LocalDateTime.parse(data.getString("DEADLINE_END") + " 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // if (PaperTextValid.isDuplicateDatePeriod2(date1, date2, date3, date4)) { // between = true; // } // } // //培训日期要在服务日期内 // if (!between) { // errInfo = "success"; // map.put("message", "timeerror"); // map.put("result", errInfo); // return map; // } Date now = new Date(); if (now.before(start_Time)) { pd.put("STATE", "4"); } else if (now.before(end_Time)) { pd.put("STATE", "5"); if (oldEndTime.before(now) && ("6").equals(oldSTATE)) { List list = classService.listStagestudentrelationByClassId(pd); for (PageData pageData : list) { if ("4".equals(pageData.getString("STAGEEXAMSTATE"))) { pageData.put("STAGEEXAMSTATE", "1"); } if ("4".equals(pageData.getString("STUDYSTATE"))) { // 判断是否开始学习 PageData data = new PageData(); PageData stuent = studentService.findById(pageData); data.put("POST_ID", stuent.getString("POST_ID")); data.put("CLASS_ID", pd.getString("CLASS_ID")); data.put("STUDENT_ID", pageData.getString("STUDENT_ID")); List varList = courseStudyVideoRecordService.getAllByuserInfo(data); List creattime = varList.stream().filter(item -> null != item.getString("CREATTIME")).collect(Collectors.toList()); List FINISHTIMES = varList.stream().filter(item -> null != item.getString("FINISHTIME") && !"".equals(item.getString("FINISHTIME"))).collect(Collectors.toList()); if (creattime.size() > 0 && FINISHTIMES.size() != creattime.size()) { pageData.put("STUDYSTATE", "1"); } else { pageData.put("STUDYSTATE", "0"); } } classService.updateStagestudentrelation(pageData); } } } else { pd.put("STATE", "6"); } initPageDataUtil.initEdit(pd); pd.put("NEW_END_TIME", endTimeStr); classService.editState(pd); map.put("result", errInfo); return map; } /** * 班级完成 * * @param * @throws Exception */ @RequestMapping(value = "/finish") @ResponseBody @Transactional public Object finish() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd = classService.findById(pd); boolean isThreeDuty = false; String examination = pd.get("EXAMINATION").toString(); if (pd.get("TRAINTYPE") != null && Tools.notEmpty(pd.get("TRAINTYPE").toString()) && "9cbe83925bbb4d84bc057b5eb5607a53".equals(pd.get("TRAINTYPE").toString())) { isThreeDuty = true; } // 判断有没有学员 int stuNum = studentService.countByClass(pd); if (stuNum < 1) { errInfo = "error"; map.put("result", errInfo); map.put("msg", "未添加学员,请先添加学员"); return map; } // 判断有没有课程 int curNum = classCurriculumService.countByClass(pd); if (curNum < 1) { errInfo = "error"; map.put("result", errInfo); map.put("msg", "未添加课程,请先添加课程"); return map; } // 判断工种有没有关联课程, 全员时。判断有没有考试 List classPostList = classPostService.countCurByClass(pd); StringBuffer msgStr = new StringBuffer(); for (PageData cp : classPostList) { if (Integer.parseInt(cp.get("CURNUM").toString()) <= 0) { msgStr.append("工种:" + cp.get("POST_NAME").toString() + "未关联课程;"); } // 1需要考试 if ("1".equals(pd.get("EXAMINATION").toString())) { if (!isThreeDuty && Integer.parseInt(cp.get("PAPERNUM").toString()) <= 0) { msgStr.append("工种:" + cp.get("POST_NAME").toString() + "未关联考试;"); } } } // 判断每个课程有没有工种 List countCurByClassPost = classPostService.countCurByClassPost(pd); for (PageData cp : countCurByClassPost) { if (Integer.parseInt(cp.get("CURRICULUM_NUM").toString()) <= 0) { msgStr.append("课程:" + cp.get("CURRICULUMNAME").toString() + "未关联工种;"); } } if (msgStr.length() > 0) { errInfo = "error"; map.put("result", errInfo); map.put("msg", msgStr); return map; } SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startTime = formatter.parse(pd.getString("START_TIME")); Date endTime = formatter.parse(pd.getString("END_TIME")); Date now = new Date(); if (now.before(startTime)) { pd.put("STATE", "4"); } else if (now.before(endTime)) { pd.put("STATE", "5"); } else { pd.put("STATE", "6"); } // 给各学员增加stageStudent 表 List stuList = studentService.listByClass(pd); // 开班时,判断机构剩余人次是否充足 PageData peoplecount = corpInfoService.peoplecountlist(pd); int surpluscount = (int) peoplecount.get("PEOPLECOUNT") - Integer.parseInt(peoplecount.get("TRAININGCOUNT").toString()) - stuList.size(); //充值总人次-使用人次-新增学员 if (surpluscount < 0) { map.put("result", "error"); //返回结果 map.put("msg", "人次不足,请及时续费!"); return map; } List paperList = postPaperService.listByClass(pd); Map paperMap = new HashMap(); for (PageData paper : paperList) { paperMap.put(paper.getString("POST_ID"), paper.getString("STAGEEXAMPAPERINPUT_ID")); } for (PageData stu : stuList) { saveStageStudent(stu, paperMap, examination); } initPageDataUtil.initEdit(pd); classService.editState(pd); map.put("result", errInfo); return map; } public void saveStageStudent(PageData pd, Map paperMap, String examination) throws Exception { // 保存班级-学员关系 PageData stageStudent = new PageData(); stageStudent.put("STAGESTUDENTRELATION_ID", this.get32UUID()); initPageDataUtil.initSave(stageStudent); stageStudent.put("USER_ID", pd.get("USER_ID")); PageData c = classService.findById(pd); if ("0".equals(examination)) { // 三岗没有考试 stageStudent.put("STAGEEXAMSTATE", "0"); // 阶段考试状态(0.不考试 1.未开始 2.考试中 3.考试完成 4.未参加) } else {// 全员有考试 stageStudent.put("STAGEEXAMSTATE", "1"); // 阶段考试状态(0.不考试 1.未开始 2.考试中 3.考试完成 4.未参加) } stageStudent.put("STAGEEXAMSCORE", "-1"); stageStudent.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID()); stageStudent.put("COMPLETE_COURSEWARE", "0"); stageStudent.put("COMPLETE_CLASSHOUR", "0"); stageStudent.put("STUDYSTATE", "0"); stageStudent.put("CLASS_ID", pd.get("CLASS_ID")); stageStudent.put("STUDENT_ID", pd.get("STUDENT_ID")); stageStudent.put("STAGEEXAMPAPER_ID", paperMap.get(pd.get("POST_ID"))); stageStudent.put("PAPER_ID", paperMap.get(pd.get("POST_ID"))); stageStudentRelationService.save(stageStudent); } @RequestMapping(value = "/goEdit") // @RequiresPermissions("class:edit") @ResponseBody public Object goEdit() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd = classService.findById(pd); //根据ID读取 pd.put("OFFICIAL_SEAL_PATH", Const.HTTPFILEURL + pd.getString("OFFICIAL_SEAL_PATH")); List POSSESSIONALL = new ArrayList(); if (pd.get("PROVINCE") != null && Tools.notEmpty(pd.get("PROVINCE").toString())) { POSSESSIONALL.add(pd.get("PROVINCE").toString()); } if (pd.get("CITY") != null && Tools.notEmpty(pd.get("CITY").toString())) { POSSESSIONALL.add(pd.get("CITY").toString()); } if (pd.get("COUNTY") != null && Tools.notEmpty(pd.get("COUNTY").toString())) { POSSESSIONALL.add(pd.get("COUNTY").toString()); } if (pd.get("VILLAGE") != null && Tools.notEmpty(pd.get("VILLAGE").toString())) { POSSESSIONALL.add(pd.get("VILLAGE").toString()); } if (pd.get("STREET") != null && Tools.notEmpty(pd.get("STREET").toString())) { POSSESSIONALL.add(pd.get("STREET").toString()); } if (POSSESSIONALL != null && POSSESSIONALL.size() > 0) { pd.put("posOption", initDicTreeByNum(POSSESSIONALL.get(POSSESSIONALL.size() - 1), POSSESSIONALL.size())); } map.put("pd", pd); map.put("result", errInfo); return map; } @RequestMapping(value = "/findById") @ResponseBody public Object findById() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); pd = classService.findById(pd); //根据ID读取 map.put("pd", pd); map.put("result", errInfo); return map; } /** * 初始化数据字典懒加载下拉树(根据编码) * * @param * @return * @throws Exception */ public List initDicTreeByNum(String dictionaries_bianma, int level) throws Exception { PageData dic = new PageData(); dic.put("BIANMA", dictionaries_bianma); dic = dictionariesService.findByBianma(dic); dic.put("value", dic.get("DICTIONARIES_ID")); dic.put("numValue", dic.get("BIANMA")); dic.put("id", dic.get("DICTIONARIES_ID")); dic.put("label", dic.get("NAME")); dic.put("level", level); List industryOption = dictionariesService.getTreeFromBelowHebei(new ArrayList(), dic); return industryOption; } @RequestMapping(value = "/editNumberofexams") @ResponseBody public Object editNumberofexams() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); classService.editNumberofexams(pd); //根据ID读取 map.put("result", errInfo); return map; } /** * 获取效果评估表 * * @return */ @RequestMapping(value = "/getEvaluation") @ResponseBody public Object getEvaluation() throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); PageData pageData = classService.getEvaluation(pd); map.put("pageData", pageData); map.put("result", errInfo); return map; } @RequestMapping("/hs") public void hs(HttpServletResponse response) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); String now = DateUtil.getSdfTimesSSS(); // 表头 PageData pageData = classService.getEvaluation(pd); File file = new File(PathUtil.getProjectpath() + Const.FILEPATHWORDTEMPLATE + "class-estimate.docx"); InputStream mbwj = new FileInputStream(file); //注册xdocreport实例并加载FreeMarker模板引擎 IXDocReport report = XDocReportRegistry.getRegistry().loadReport(mbwj, TemplateEngineKind.Freemarker); //创建xdocreport上下文对象 IContext context = report.createContext(); SimpleDateFormat formatdate = new SimpleDateFormat("yyyy年MM月dd日"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map ratioMap = (Map) pageData.get("ratioMap"); List list1 = new ArrayList<>(); for (String key : ratioMap.keySet()) { TrainingPlanDao trainingPlanDao = new TrainingPlanDao(); trainingPlanDao.setValue1(key); trainingPlanDao.setValue2(ratioMap.get(key).toString()); list1.add(trainingPlanDao); } context.put("list1", list1); List NO_PASS_List = (List) pageData.get("PASS_List"); List list2 = new ArrayList<>(); for (int i = 0; i < NO_PASS_List.size(); i++) { TrainingPlanDao trainingPlanDao = new TrainingPlanDao(); trainingPlanDao.setValue1(String.valueOf(i + 1)); trainingPlanDao.setValue2(NO_PASS_List.get(i).getString("NAME")); trainingPlanDao.setValue3(NO_PASS_List.get(i).getString("USER_ID_CARD")); trainingPlanDao.setValue4(NO_PASS_List.get(i).getString("PHONE")); trainingPlanDao.setValue5(NO_PASS_List.get(i).getString("SEX")); trainingPlanDao.setValue6(NO_PASS_List.get(i).getString("STRENGTHENEXAMSCORE")); list2.add(trainingPlanDao); } context.put("list2", list2); List PASS_List = (List) pageData.get("NO_PASS_List"); List list3 = new ArrayList<>(); for (int i = 0; i < PASS_List.size(); i++) { TrainingPlanDao trainingPlanDao = new TrainingPlanDao(); trainingPlanDao.setValue1(String.valueOf(i + 1)); trainingPlanDao.setValue2(PASS_List.get(i).getString("NAME")); trainingPlanDao.setValue3(PASS_List.get(i).getString("USER_ID_CARD")); trainingPlanDao.setValue4(PASS_List.get(i).getString("PHONE")); trainingPlanDao.setValue5(PASS_List.get(i).getString("SEX")); trainingPlanDao.setValue6(PASS_List.get(i).getString("STRENGTHENEXAMSCORE")); list3.add(trainingPlanDao); } context.put("list3", list3); DefaultPieDataset pds = new DefaultPieDataset(); if (Double.valueOf(pageData.getString("count1")) > 0) { pds.setValue("正确率100%", Double.valueOf(pageData.getString("count1"))); } if (Double.valueOf(pageData.getString("count2")) > 0) { pds.setValue("正确率80%-100%", Double.valueOf(pageData.getString("count2"))); } if (Double.valueOf(pageData.getString("count3")) > 0) { pds.setValue("正确率80%以下", Double.valueOf(pageData.getString("count3"))); } File jpg = new File(PathUtil.getProjectpath() + Const.FILEPATHFILE + "classChart-" + now + ".jpg"); ChartUtil.createPieChart("统计图", pds, PathUtil.getProjectpath() + Const.FILEPATHFILE + "classChart-" + now + ".jpg"); context.put("value1", Tools.notEmpty(pageData.getString("ENTERPRISE_NAME")) ? pageData.getString("ENTERPRISE_NAME") : ""); context.put("value2", Tools.notEmpty(pageData.getString("START_TIME")) ? formatdate.format(formatter.parse(pageData.getString("START_TIME"))) : ""); context.put("value3", Tools.notEmpty(pageData.getString("END_TIME")) ? formatdate.format(formatter.parse(pageData.getString("END_TIME"))) : ""); context.put("value4", Tools.notEmpty(pageData.getString("CLASS_NAME")) ? pageData.getString("CLASS_NAME") : ""); context.put("value5", Tools.notEmpty(pageData.getString("coursewareName")) ? pageData.getString("coursewareName") : ""); context.put("value6", Tools.notEmpty(pageData.get("EXMA_COUNT").toString()) ? pageData.get("EXMA_COUNT").toString() : ""); context.put("value7", Tools.notEmpty(pageData.get("PASS_COUNT").toString()) ? pageData.get("PASS_COUNT").toString() : ""); context.put("value8", Tools.notEmpty(pageData.get("NO_PASS_COUNT").toString()) ? pageData.get("NO_PASS_COUNT").toString() : ""); context.put("value9", Tools.notEmpty(pageData.getString("passRate")) ? pageData.getString("passRate") : ""); context.put("value10", Tools.notEmpty(pageData.getString("error")) ? pageData.getString("error") : ""); context.put("value11", Tools.notEmpty(pageData.getString("errorVideoName")) ? pageData.getString("errorVideoName") : ""); context.put("value12", Tools.notEmpty(pageData.get("STR_EXMA_COUNT").toString()) ? pageData.get("STR_EXMA_COUNT").toString() : ""); context.put("value13", Tools.notEmpty(pageData.get("STR_PASS_COUNT").toString()) ? pageData.get("STR_PASS_COUNT").toString() : ""); FieldsMetadata fm = report.createFieldsMetadata(); //Word模板中的表格数据对应的集合类型 fm.addFieldAsImage("pic"); IImageProvider iImageProvider = new FileImageProvider(jpg, false); context.put("pic", iImageProvider); report.setFieldsMetadata(fm); fm.load("list1", TrainingPlanDao.class, true); fm.load("list2", TrainingPlanDao.class, true); fm.load("list3", TrainingPlanDao.class, true); //Word模板中的表格数据对应的集合类型 FileOutputStream out = new FileOutputStream(new File(PathUtil.getProjectpath() + Const.FILEPATHFILE + "安全生产教育培训动态评估报告-" + now + ".docx")); report.process(context, out); WordToPdfUtil.docToPdf(PathUtil.getProjectpath() + Const.FILEPATHFILE + "安全生产教育培训动态评估报告-" + now + ".docx", PathUtil.getProjectpath() + Const.FILEPATHFILE + "安全生产教育培训动态评估报告-" + now + ".pdf"); FileDownload.fileDownload(response, PathUtil.getProjectpath() + Const.FILEPATHFILE + "安全生产教育培训动态评估报告-" + now + ".pdf", "安全生产教育培训动态评估报告.pdf"); //删除本地word pdf File word = new File(PathUtil.getProjectpath() + Const.FILEPATHFILE + "安全生产教育培训动态评估报告-" + now + ".docx"); word.delete(); jpg.delete(); File pdf = new File(PathUtil.getProjectpath() + Const.FILEPATHFILE + "安全生产教育培训动态评估报告-" + now + ".pdf"); pdf.delete(); } // 班级到期提醒,提前5天弹框警告 @RequestMapping(value = "/notifyMessage") @ResponseBody public Object notifyMessage(Page page) throws Exception { Map map = new HashMap(); String errInfo = "success"; PageData pd = new PageData(); pd = this.getPageData(); page.setPd(pd); StringBuffer stringBuffer = new StringBuffer(); List varList = classService.list(page); // 列出CorpInfo列表 int cnt = 1; boolean firstflag = true; for (int i = 0; i < varList.size(); i++) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String end_time = varList.get(i).getString("END_TIME"); String now_time = format.format(new Date()).toString(); long day = DateUtil.getDaySub(now_time, end_time); //只有培训中的班级有提醒,未申请和培训结束的不需要 if ("5".equals(varList.get(i).getString("STATE"))) { if (day <= 5) { if (firstflag) { stringBuffer.append("

以下班级的课程即将结束,请抓紧时间学习!
"); stringBuffer.append("********************************************

"); firstflag = false; } stringBuffer.append(cnt).append(". ").append(varList.get(i).get("NAME")).append("
"); cnt++; } } } map.put("result", errInfo); map.put("message", stringBuffer.toString()); return map; } }