package com.jeesite.modules.mes.web; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jeesite.common.lang.StringUtils; import com.jeesite.modules.mes.entity.MesShift; import com.jeesite.modules.mes.service.MesShiftService; import com.jeesite.modules.mes.util.CommonUitl; import com.jeesite.modules.mes.util.CopyUtil; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import com.jeesite.common.config.Global; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.DateUtils; import com.jeesite.common.utils.excel.ExcelExport; import com.jeesite.common.utils.excel.annotation.ExcelField.Type; import org.springframework.web.multipart.MultipartFile; import com.jeesite.common.web.BaseController; import com.jeesite.modules.mes.entity.MesProcessCheckGz; import com.jeesite.modules.mes.service.MesProcessCheckGzService; /** * 工装点检记录表Controller * @author mes * @version 2024-05-17 */ @Controller @RequestMapping(value = "${adminPath}/mes/mesProcessCheckGz") public class MesProcessCheckGzController extends BaseController { @Autowired private MesShiftService mesShiftService; @Autowired private MesProcessCheckGzService mesProcessCheckGzService; /** * 获取数据 */ @ModelAttribute public MesProcessCheckGz get(String id, boolean isNewRecord) { return mesProcessCheckGzService.get(id, isNewRecord); } /** * 查询列表 */ @RequiresPermissions("mes:mesProcessCheckGz:view") @RequestMapping(value = {"list", ""}) public String list(MesProcessCheckGz mesProcessCheckGz, Model model) { model.addAttribute("mesProcessCheckGz", mesProcessCheckGz); return "modules/mes/mesProcessCheckGzList"; } /** * 查询列表数据 */ @RequiresPermissions("mes:mesProcessCheckGz:view") @RequestMapping(value = "listData") @ResponseBody public Page listData(MesProcessCheckGz mesProcessCheckGz, HttpServletRequest request, HttpServletResponse response) { mesProcessCheckGz.setPage(new Page<>(request, response)); Page page = mesProcessCheckGzService.findPage(mesProcessCheckGz); return page; } /** * 查看编辑表单 */ @RequiresPermissions("mes:mesProcessCheckGz:view") @RequestMapping(value = "form") public String form(MesProcessCheckGz mesProcessCheckGz, Model model) { model.addAttribute("mesProcessCheckGz", mesProcessCheckGz); return "modules/mes/mesProcessCheckGzForm"; } /** * 保存数据 */ @RequiresPermissions("mes:mesProcessCheckGz:edit") @PostMapping(value = "save") @ResponseBody public String save(@Validated MesProcessCheckGz mesProcessCheckGz) { mesProcessCheckGzService.save(mesProcessCheckGz); return renderResult(Global.TRUE, text("保存工装点检记录成功!")); } /** * 导出数据 */ @RequiresPermissions("mes:mesProcessCheckGz:view") @RequestMapping(value = "exportData") public void exportData(MesProcessCheckGz mesProcessCheckGz, HttpServletResponse response) { List list = mesProcessCheckGzService.findList(mesProcessCheckGz); String fileName = "工装点检记录表" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; try(ExcelExport ee = new ExcelExport("工装点检记录", MesProcessCheckGz.class)){ ee.setDataList(list).write(response, fileName); } } /** * 下载模板 */ @RequiresPermissions("mes:mesProcessCheckGz:view") @RequestMapping(value = "importTemplate") public void importTemplate(HttpServletResponse response) { MesProcessCheckGz mesProcessCheckGz = new MesProcessCheckGz(); List list = ListUtils.newArrayList(mesProcessCheckGz); String fileName = "工装点检记录表模板.xlsx"; try(ExcelExport ee = new ExcelExport("工装点检记录", MesProcessCheckGz.class, Type.IMPORT)){ ee.setDataList(list).write(response, fileName); } } /** * 导入数据 */ @ResponseBody @RequiresPermissions("mes:mesProcessCheckGz:edit") @PostMapping(value = "importData") public String importData(MultipartFile file) { try { String message = mesProcessCheckGzService.importData(file); return renderResult(Global.TRUE, "posfull:"+message); } catch (Exception ex) { return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); } } /** * 删除数据 */ @RequiresPermissions("mes:mesProcessCheckGz:edit") @RequestMapping(value = "delete") @ResponseBody public String delete(MesProcessCheckGz mesProcessCheckGz) { mesProcessCheckGzService.delete(mesProcessCheckGz); return renderResult(Global.TRUE, text("删除工装点检记录成功!")); } @PostMapping(value = "submit") @ResponseBody public String submit(@RequestBody MesProcessCheckGz mesProcessCheckGz) { if (mesProcessCheckGz == null|| StringUtils.isEmpty(mesProcessCheckGz.getOprno())||StringUtils.isEmpty(mesProcessCheckGz.getLineSn())) { return renderResult(Global.FALSE, "工装点检记录信息不完整,请重试!"); } MesShift mesShift = new MesShift(); mesShift.setStatus("0"); List shifts = mesShiftService.findList(mesShift); String shiftId = ""; // 今天 Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String currentDate = formatter.format(date); Long curTime = date.getTime(); // 明天 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, 1); Date tomorrow = calendar.getTime(); String tomorrowDate = formatter.format(tomorrow); // 昨天 Calendar calendar2 = Calendar.getInstance(); calendar2.setTime(date); calendar2.add(Calendar.DATE, -1); Date yesrow = calendar2.getTime(); String yesDate = formatter.format(yesrow); MesShift mesShift2 = new MesShift(); List lists = new ArrayList<>(); // 昨天 for(MesShift mesShift1:shifts){ String st = yesDate+" "+mesShift1.getStart(); String et = mesShift1.getNext() == 1?currentDate+" "+mesShift1.getEnd():yesDate+" "+mesShift1.getEnd(); Long curSt = CommonUitl.convertDateStringToTimestamp(st,"yyyy-MM-dd HH:mm"); Long curEt = CommonUitl.convertDateStringToTimestamp(et,"yyyy-MM-dd HH:mm"); mesShift1.setCurSt(curSt); mesShift1.setCurEt(curEt); lists.add(mesShift1); } // 今天 for(MesShift mesShift1:shifts){ String st = currentDate+" "+mesShift1.getStart(); String et = mesShift1.getNext() == 1?tomorrowDate+" "+mesShift1.getEnd():currentDate+" "+mesShift1.getEnd(); Long curSt = CommonUitl.convertDateStringToTimestamp(st,"yyyy-MM-dd HH:mm"); Long curEt = CommonUitl.convertDateStringToTimestamp(et,"yyyy-MM-dd HH:mm"); mesShift1.setCurSt(curSt); mesShift1.setCurEt(curEt); lists.add(mesShift1); } List sortlists = lists.stream().sorted(Comparator.comparing(MesShift::getCurSt)).collect(Collectors.toList()); for(MesShift mesShift1:sortlists){ if(curTime >= mesShift1.getCurSt() && curTime <= mesShift1.getCurEt()){ mesShift2 = CopyUtil.copy(mesShift1,MesShift.class); break; }else{ if(curTime - mesShift1.getCurSt() < 0){ mesShift2 = CopyUtil.copy(mesShift1,MesShift.class); } } } shiftId = mesShift2.getId(); mesProcessCheckGz.setShift(shiftId); mesProcessCheckGzService.save(mesProcessCheckGz); return renderResult(Global.TRUE, text("操作成功!")); } }