package com.wgcloud.controller; import com.github.pagehelper.PageInfo; import com.wgcloud.entity.InspectionTask; import com.wgcloud.entity.TaskInfo; import com.wgcloud.service.InspectionTaskService; import com.wgcloud.service.LogInfoService; import com.wgcloud.service.TaskInfoService; import com.wgcloud.service.WorkLoggingService; import com.wgcloud.util.DateUtil; import com.wgcloud.util.PageUtil; import com.wgcloud.util.staticvar.StaticKeys; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.*; /** * @author kdq * @version 1.0.0 * @ClassName InspectionTaskController.java * @Description TODO * @createTime 2023年02月16日 14:22:00 */ @Controller @RequestMapping("/inspectionTask") public class InspectionTaskController { private static final Logger logger = LoggerFactory.getLogger(InspectionTaskController.class); @Resource private InspectionTaskService inspectionTaskService; @Resource private LogInfoService logInfoService; @Resource private WorkLoggingService workLoggingService; @Resource private TaskInfoService taskInfoService; /** * 根据条件查询设备列表 * * @param model * @param request * @return */ @RequestMapping(value = "list") public String failureList(InspectionTask inspectionTask, Model model, HttpServletRequest request) { Map params = new HashMap(); try { StringBuffer url = new StringBuffer(); // if (!StringUtils.isEmpty(InspectionTask.getOldDeviceName())) { // url.append("&oldDeviceName=").append(InspectionTask.getOldDeviceName()); // } PageInfo pageInfo = inspectionTaskService.selectByParams(params, inspectionTask.getPage(), inspectionTask.getPageSize()); PageUtil.initPageNumber(pageInfo, model); model.addAttribute("pageUrl", "/inspectionTask/list?1=1" + url.toString()); model.addAttribute("page", pageInfo); model.addAttribute("inspectionTask", inspectionTask); }catch (Exception e){ logger.error("查询设备更换列表错误", e); logInfoService.save("查询资产信息错误", e.toString(), StaticKeys.LOG_XTCZ); } return "instask/tasklist"; } @RequestMapping(value = "save") public String saveInspectionTask(InspectionTask inspectionTask, Model model, HttpServletRequest request) { try { if (StringUtils.isEmpty(inspectionTask.getId())) { inspectionTaskService.save(inspectionTask); inspectionTaskService.saveLog(request, StaticKeys.LOG_ADD, inspectionTask); workLoggingService.save(inspectionTask); long l = subDaysByDate2(inspectionTask.getStartDate(), inspectionTask.getEndDate()); if(l>0){ for (long i = 0; i < l; i++) { TaskInfo taskInfo = new TaskInfo(); taskInfo.setTaskId(inspectionTask.getId()); if(i == 0){ taskInfo.setTaskDate(inspectionTask.getStartDate()); }else { String s = daysAgoOrAfter(inspectionTask.getStartDate(), new Long(i).intValue()); taskInfo.setTaskDate(s); } taskInfo.setIsOk(0); taskInfoService.save(taskInfo); } } } else { inspectionTaskService.updateById(inspectionTask); inspectionTaskService.saveLog(request, StaticKeys.LOG_UPDATE, inspectionTask); workLoggingService.update(inspectionTask); } } catch (Exception e) { logger.error("保存设备更换数据错误", e); logInfoService.save("保存设备更换数据错误", e.toString(), StaticKeys.LOG_XTCZ); } return "redirect:/inspectionTask/list"; } @RequestMapping(value = "save2") public String save2(TaskInfo taskInfo) { try { taskInfoService.updateById(taskInfo); } catch (Exception e) { logger.error("修改任务详情错误", e); logInfoService.save("修改任务详情错误", e.toString(), StaticKeys.LOG_XTCZ); } return "redirect:/inspectionTask/detail?id="+taskInfo.getTaskId(); } /** * 添加 * * @param model * @param request * @return */ @RequestMapping(value = "edit") public String edit(Model model, HttpServletRequest request) { String errorMsg = "添加设备"; String id = request.getParameter("id"); InspectionTask inspectionTask = new InspectionTask(); try { if (StringUtils.isEmpty(id)) { model.addAttribute("inspectionTask", inspectionTask); return "instask/add"; } inspectionTask = inspectionTaskService.selectById(id); model.addAttribute("inspectionTask", inspectionTask); } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "instask/add"; } /** * 添加 * * @param model * @param request * @return */ @RequestMapping(value = "edit2") public String edit2(Model model, HttpServletRequest request) { String errorMsg = "修改任务详情"; String id = request.getParameter("id"); TaskInfo taskInfo = new TaskInfo(); try { if (StringUtils.isEmpty(id)) { model.addAttribute("taskInfo", taskInfo); return "instask/infoedit"; } taskInfo = taskInfoService.selectById(id); model.addAttribute("taskInfo", taskInfo); } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "instask/infoedit"; } /** * 查看该应用统计图 * * @param model * @param request * @return */ @RequestMapping(value = "view") public String viewChart(Model model, HttpServletRequest request) { String errorMsg = "查看设备更换错误"; String id = request.getParameter("id"); InspectionTask inspectionTask = new InspectionTask(); try { inspectionTask = inspectionTaskService.selectById(id); model.addAttribute("inspectionTask", inspectionTask); } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "instask/view"; } /** * 删除设备 * * @param * @param model * @param request * @param redirectAttributes * @return */ @RequestMapping(value = "del") public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) { String errorMsg = "删除更换设备错误"; InspectionTask inspectionTask = new InspectionTask(); try { if (!StringUtils.isEmpty(request.getParameter("id"))) { String[] ids = request.getParameter("id").split(","); for (String id : ids) { inspectionTask = inspectionTaskService.selectById(id); inspectionTaskService.saveLog(request, StaticKeys.LOG_DEL, inspectionTask); } inspectionTaskService.deleteById(ids); } } catch (Exception e) { logger.error(errorMsg, e); logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ); } return "redirect:/inspectionTask/list"; } /** * 查看任务详情 * * @param model * @param request * @return */ @RequestMapping(value = "detail") public String detail(Model model, HttpServletRequest request) { try { String id = request.getParameter("id"); List allByTaskId = taskInfoService.getAllByTaskId(id); model.addAttribute("taskInfos", allByTaskId); }catch (Exception e){ logger.error("查询任务详情错误", e); logInfoService.save("查询任务详情错误", e.toString(), StaticKeys.LOG_XTCZ); } return "instask/taskinfo"; } /** * 获取两个日期相差的天数 方法二 * * @param startDate 开始日期的字符串 * @param endDate 结束日期的字符串 * @return 相差天数,如果解析失败则返回-1 **/ private long subDaysByDate2(String startDate, String endDate) { long sub; try { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate start = LocalDate.parse(startDate, dateTimeFormatter); LocalDate end = LocalDate.parse(endDate, dateTimeFormatter); sub = end.toEpochDay() - start.toEpochDay(); } catch (DateTimeParseException e) { sub = -1; } return sub; } private String daysAgoOrAfter(String startDate,int amount){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d = new Date(); try { d= sdf.parse(startDate); } catch (ParseException e) { e.printStackTrace(); } Calendar mon = Calendar.getInstance(); mon.setTime(d); mon.add(Calendar.DATE,amount); Date time = mon.getTime(); String format = sdf.format(time); return format; } }