package com.jeesite.modules.mes.web; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.collect.MapUtils; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.DateUtils; import com.jeesite.common.lang.ObjectUtils; import com.jeesite.common.lang.StringUtils; import com.jeesite.common.service.ServiceException; import com.jeesite.common.utils.excel.ExcelExport; import com.jeesite.common.utils.excel.ExcelImport; import com.jeesite.common.utils.excel.annotation.ExcelField; import com.jeesite.common.validator.ValidatorUtils; import com.jeesite.common.web.BaseController; import com.jeesite.modules.file.entity.FileUpload; import com.jeesite.modules.file.service.FileUploadService; import com.jeesite.modules.mes.entity.MesDevice; import com.jeesite.modules.mes.entity.MesDeviceConsumableRecord; import com.jeesite.modules.mes.entity.MesDeviceState; import com.jeesite.modules.mes.entity.MesDeviceUrgency; import com.jeesite.modules.mes.entity.excel.ExcelMesDeviceUrgency; import com.jeesite.modules.mes.resp.CommonResp; import com.jeesite.modules.mes.service.MesDeviceService; import com.jeesite.modules.mes.service.MesDeviceStateService; import com.jeesite.modules.mes.service.MesDeviceUrgencyService; import com.jeesite.modules.sys.entity.User; import com.jeesite.modules.sys.utils.UserUtils; import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import java.util.List; import java.util.Map; /** * 紧急性维修记录Controller * @author hzd * @version 2023-08-15 */ @Controller @RequestMapping(value = "${adminPath}/mes/mesDeviceUrgency") public class MesDeviceUrgencyController extends BaseController { @Autowired private MesDeviceUrgencyService mesDeviceUrgencyService; @Autowired private MesDeviceStateService mesDeviceStateService; @Autowired private MesDeviceService mesDeviceService; @Resource private FileUploadService fileUploadService; /** * 获取数据 */ @ModelAttribute public MesDeviceUrgency get(String id, boolean isNewRecord) { return mesDeviceUrgencyService.get(id, isNewRecord); } /** * 查询列表 */ @RequiresPermissions("mes:mesDeviceUrgency:view") @RequestMapping(value = {"list", ""}) public String list(MesDeviceUrgency mesDeviceUrgency, Model model) { model.addAttribute("mesDeviceUrgency", mesDeviceUrgency); return "modules/mes/mesDeviceUrgencyList"; } @RequiresPermissions("mes:mesDeviceUrgency:view") @RequestMapping(value = {"mylist", ""}) public String mylist(MesDeviceUrgency mesDeviceUrgency, Model model) { User user = UserUtils.getUser(); mesDeviceUrgency.setUserCode(user.getUserCode()); model.addAttribute("mesDeviceUrgency", mesDeviceUrgency); return "modules/mes/mesDeviceUrgencyMyList"; } /** * 查询列表数据 */ @RequiresPermissions("mes:mesDeviceUrgency:view") @RequestMapping(value = "listData") @ResponseBody public Page listData(MesDeviceUrgency mesDeviceUrgency, HttpServletRequest request, HttpServletResponse response) { mesDeviceUrgency.setPage(new Page<>(request, response)); Page page = mesDeviceUrgencyService.findPage(mesDeviceUrgency); return page; } /** * 查看编辑表单 */ @RequiresPermissions("mes:mesDeviceUrgency:view") @RequestMapping(value = "form") public String form(MesDeviceUrgency mesDeviceUrgency, Model model) { User user = UserUtils.getUser(); mesDeviceUrgency.setUserCode(user.getUserCode()); mesDeviceUrgency.setUserName(user.getUserName()); mesDeviceUrgency.setAlarmType(""); if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){ MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId()); if(!ObjectUtils.isEmpty(mesDeviceState)){ mesDeviceUrgency.setAlarmType(mesDeviceState.getContent()); } } model.addAttribute("mesDeviceUrgency", mesDeviceUrgency); return "modules/mes/mesDeviceUrgencyForm"; } @RequiresPermissions("mes:mesDeviceUrgency:view") @RequestMapping(value = "myform") public String myform(MesDeviceUrgency mesDeviceUrgency, Model model) { User user = UserUtils.getUser(); mesDeviceUrgency.setUserCode(user.getUserCode()); mesDeviceUrgency.setUserName(user.getUserName()); mesDeviceUrgency.setAlarmType(""); if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){ MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId()); if(!ObjectUtils.isEmpty(mesDeviceState)){ mesDeviceUrgency.setAlarmType(mesDeviceState.getContent()); } } model.addAttribute("mesDeviceUrgency", mesDeviceUrgency); return "modules/mes/mesDeviceUrgencyMyForm"; } /** * 保存数据 */ @RequiresPermissions(value={"mes:mesDeviceUrgency:edit", "mes:mesDeviceUrgency:api"}, logical= Logical.OR) @PostMapping(value = "save") @ResponseBody public String save(@Validated MesDeviceUrgency mesDeviceUrgency,HttpServletRequest request) { // 兼容接口 List consumable = JSON.parseArray(request.getParameter("consumable"),MesDeviceConsumableRecord.class); if(consumable!=null && consumable.size() >0){ for (MesDeviceConsumableRecord mesDeviceConsumableRecord : consumable){ if(StringUtils.isEmpty(mesDeviceConsumableRecord.getConsumableId())){ return renderResult(Global.FALSE, text("参数错误!")); } if(mesDeviceConsumableRecord.getNum() <= 0){ return renderResult(Global.FALSE, text("易耗品数量必须大于0!")); } } mesDeviceUrgency.setMesDeviceConsumableRecordList(consumable); } if(!StringUtils.isEmpty(mesDeviceUrgency.getDeviceId())){ MesDevice mesDevice = mesDeviceService.get(mesDeviceUrgency.getDeviceId(),false); if(ObjectUtils.isEmpty(mesDevice)){ return renderResult(Global.FALSE, text("设备不存在!")); } mesDeviceUrgency.setOprno(mesDevice.getGw()); mesDeviceUrgency.setCateId(mesDevice.getCateId()); } if(mesDeviceUrgency.getStartDate() != null && mesDeviceUrgency.getEndDate() != null){ if(mesDeviceUrgency.getStartDate().getTime() >= mesDeviceUrgency.getEndDate().getTime()){ return renderResult(Global.FALSE, text("结束时间必须大于开始时间!")); } Integer interval = Math.round((mesDeviceUrgency.getEndDate().getTime() - mesDeviceUrgency.getStartDate().getTime())/1000/60); mesDeviceUrgency.setInterval(interval); } mesDeviceUrgencyService.save(mesDeviceUrgency); return renderResult(Global.TRUE, text("保存紧急性维修记录成功!")); } /** * 删除数据 */ @RequiresPermissions("mes:mesDeviceUrgency:edit") @RequestMapping(value = "delete") @ResponseBody public String delete(MesDeviceUrgency mesDeviceUrgency) { mesDeviceUrgencyService.delete(mesDeviceUrgency); return renderResult(Global.TRUE, text("删除紧急性维修记录成功!")); } @RequiresPermissions("mes:mesDeviceUrgency:edit") @RequestMapping(value = "mydelete") @ResponseBody public String mydelete(MesDeviceUrgency mesDeviceUrgency) { User user = UserUtils.getUser(); if(!user.getUserCode().equals(mesDeviceUrgency.getUserCode())){ renderResult(Global.FALSE, text("无权限删除!")); } mesDeviceUrgencyService.delete(mesDeviceUrgency); return renderResult(Global.TRUE, text("删除紧急性维修记录成功!")); } /** * 查看详情 */ @RequiresPermissions("mes:mesDeviceUrgency:view") @RequestMapping(value = "info") public String info(MesDeviceUrgency mesDeviceUrgency, Model model) { User user = UserUtils.getUser(); mesDeviceUrgency.setUserCode(user.getUserCode()); mesDeviceUrgency.setUserName(user.getUserName()); mesDeviceUrgency.setAlarmType(""); if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){ MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId()); if(!ObjectUtils.isEmpty(mesDeviceState)){ mesDeviceUrgency.setAlarmType(mesDeviceState.getContent()); } } model.addAttribute("mesDeviceUrgency", mesDeviceUrgency); return "modules/mes/mesDeviceUrgencyInfo"; } /** * 查询列表数据 */ @RequiresPermissions("mes:mesDeviceUrgency:api") @RequestMapping(value = "ulist") @ResponseBody public CommonResp ulist(MesDeviceUrgency mesDeviceUrgency, HttpServletRequest request, HttpServletResponse response) { CommonResp resp = new CommonResp<>(); User user = UserUtils.getUser(); mesDeviceUrgency.setUserCode(user.getUserCode()); mesDeviceUrgency.setPage(new Page<>(request, response)); Page page = mesDeviceUrgencyService.findPage(mesDeviceUrgency); for (int i=0;i map = MapUtils.newHashMap(); // 获取图片 FileUpload fu = new FileUpload(); fu.setBizKey(mesDeviceUrgency.getId()); fu.setBizType("mesDeviceUrgency_image"); List imgs = fileUploadService.findList(fu); List imgList = ListUtils.newArrayList(); if(imgs.size() > 0){ for (FileUpload fi:imgs) { Map map1 = MapUtils.newHashMap(); map1.put("id",fi.getFileEntity().getFileId()); map1.put("url",host + fi.getFileUrl()); imgList.add(map1); } } map.put("imgs", imgList); User user = UserUtils.get(mesDeviceUrgency.getUserCode()); mesDeviceUrgency.setUserName(user.getUserName()); mesDeviceUrgency.setAlarmType(""); if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){ MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId()); if(!ObjectUtils.isEmpty(mesDeviceState)){ mesDeviceUrgency.setAlarmType(mesDeviceState.getContent()); } } map.put("info", mesDeviceUrgency); CommonResp> resp = new CommonResp<>(); resp.setData(map); resp.setResult(Global.TRUE); return resp; } @RequiresPermissions("mes:mesDeviceUrgency:api") @PostMapping(value = "add") @ResponseBody public String add(@Validated MesDeviceUrgency mesDeviceUrgency,HttpServletRequest request) { User user = UserUtils.getUser(); if(!mesDeviceUrgency.getIsNewRecord() && !mesDeviceUrgency.getUserCode().equals(user.getUserCode())){ return renderResult(Global.FALSE, text("无权限操作!")); } mesDeviceUrgency.setUserCode(user.getUserCode()); // 兼容接口 List consumable = JSON.parseArray(request.getParameter("consumable"),MesDeviceConsumableRecord.class); if(consumable!=null && consumable.size() >0){ for (MesDeviceConsumableRecord mesDeviceConsumableRecord : consumable){ if(StringUtils.isEmpty(mesDeviceConsumableRecord.getConsumableId())){ return renderResult(Global.FALSE, text("参数错误!")); } if(mesDeviceConsumableRecord.getNum() <= 0){ return renderResult(Global.FALSE, text("易耗品数量必须大于0!")); } } mesDeviceUrgency.setMesDeviceConsumableRecordList(consumable); } if(!StringUtils.isEmpty(mesDeviceUrgency.getDeviceId())){ MesDevice mesDevice = mesDeviceService.get(mesDeviceUrgency.getDeviceId(),false); if(ObjectUtils.isEmpty(mesDevice)){ return renderResult(Global.FALSE, text("设备不存在!")); } mesDeviceUrgency.setOprno(mesDevice.getGw()); mesDeviceUrgency.setCateId(mesDevice.getCateId()); } if(mesDeviceUrgency.getStartDate() != null && mesDeviceUrgency.getEndDate() != null){ if(mesDeviceUrgency.getStartDate().getTime() >= mesDeviceUrgency.getEndDate().getTime()){ return renderResult(Global.FALSE, text("结束时间必须大于开始时间!")); } Integer interval = Math.round((mesDeviceUrgency.getEndDate().getTime() - mesDeviceUrgency.getStartDate().getTime())/1000/60); mesDeviceUrgency.setInterval(interval); } mesDeviceUrgencyService.pdasave(mesDeviceUrgency); return renderResult(Global.TRUE, text("保存紧急性维修记录成功!")); } /** * 导出数据 */ @RequestMapping(value = "exportData") public void exportData(MesDeviceUrgency mesDeviceCate, HttpServletResponse response) { List list = mesDeviceUrgencyService.findList(mesDeviceCate); String fileName = " 紧急性维修记录" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; try(ExcelExport ee = new ExcelExport(" 紧急性维修记录", MesDeviceUrgency.class)){ ee.setDataList(list).write(response, fileName); } } /** * 下载模板 */ @RequestMapping(value = "importTemplate") public void importTemplate(HttpServletResponse response) { MesDeviceUrgency mesDeviceCate = new MesDeviceUrgency(); List list = ListUtils.newArrayList(mesDeviceCate); String fileName = " 紧急性维修记录.xlsx"; try(ExcelExport ee = new ExcelExport(" 紧急性维修记录", MesDeviceUrgency.class, ExcelField.Type.IMPORT)){ ee.setDataList(list).write(response, fileName); } } /** * 导入数据 */ @ResponseBody @PostMapping(value = "importData") public String importData(MultipartFile file,HttpServletRequest request) { try { String message = importData1(file,request); return renderResult(Global.TRUE, "posfull:"+message); } catch (Exception ex) { return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); } } @Transactional public String importData1(MultipartFile file,HttpServletRequest request) { if (file == null){ throw new ServiceException(text("请选择导入的数据文件!")); } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); try(ExcelImport ei = new ExcelImport(file, 2, 0)){ List list = ei.getDataList(MesDeviceUrgency.class); for (MesDeviceUrgency mesDeviceCheck : list) { try{ ValidatorUtils.validateWithException(mesDeviceCheck); this.save(mesDeviceCheck,request); successNum++; successMsg.append("
" + successNum + "、编号 " + mesDeviceCheck.getId() + " 导入成功"); } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、编号 " + mesDeviceCheck.getId() + " 导入失败:"; if (e instanceof ConstraintViolationException){ ConstraintViolationException cve = (ConstraintViolationException)e; for (ConstraintViolation violation : cve.getConstraintViolations()) { msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; } }else{ msg += e.getMessage(); } failureMsg.append(msg); logger.error(msg, e); } } } catch (Exception e) { logger.error(e.getMessage(), e); failureMsg.append(e.getMessage()); return failureMsg.toString(); } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); }else{ successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); } return successMsg.toString(); } /** * 导出数据 */ @RequestMapping(value = "exportData1") public void exportData1(MesDeviceUrgency mesDeviceCate, HttpServletResponse response) { List list = mesDeviceUrgencyService.findList(mesDeviceCate); List list1= BeanUtil.copyToList(list, ExcelMesDeviceUrgency.class); String fileName = "我的维修记录" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; try(ExcelExport ee = new ExcelExport(" 我的维修记录", ExcelMesDeviceUrgency.class)){ ee.setDataList(list1).write(response, fileName); } } /** * 下载模板 */ @RequestMapping(value = "importTemplate1") public void importTemplate1(HttpServletResponse response) { ExcelMesDeviceUrgency mesDeviceCate = new ExcelMesDeviceUrgency(); List list = ListUtils.newArrayList(mesDeviceCate); String fileName = " 紧急性维修记录.xlsx"; try(ExcelExport ee = new ExcelExport(" 紧急性维修记录", ExcelMesDeviceUrgency.class, ExcelField.Type.IMPORT)){ ee.setDataList(list).write(response, fileName); } } /** * 导入数据 */ @ResponseBody @PostMapping(value = "importData2") public String importData2(MultipartFile file,HttpServletRequest request) { try { String message = importData3(file,request); return renderResult(Global.TRUE, "posfull:"+message); } catch (Exception ex) { return renderResult(Global.FALSE, "posfull:"+ex.getMessage()); } } @Transactional public String importData3(MultipartFile file,HttpServletRequest request) { if (file == null){ throw new ServiceException(text("请选择导入的数据文件!")); } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); try(ExcelImport ei = new ExcelImport(file, 2, 0)){ List list = ei.getDataList(MesDeviceUrgency.class); for (MesDeviceUrgency mesDeviceCheck : list) { try{ ValidatorUtils.validateWithException(mesDeviceCheck); this.save(mesDeviceCheck,request); successNum++; successMsg.append("
" + successNum + "、编号 " + mesDeviceCheck.getId() + " 导入成功"); } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、编号 " + mesDeviceCheck.getId() + " 导入失败:"; if (e instanceof ConstraintViolationException){ ConstraintViolationException cve = (ConstraintViolationException)e; for (ConstraintViolation violation : cve.getConstraintViolations()) { msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")"; } }else{ msg += e.getMessage(); } failureMsg.append(msg); logger.error(msg, e); } } } catch (Exception e) { logger.error(e.getMessage(), e); failureMsg.append(e.getMessage()); return failureMsg.toString(); } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); }else{ successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); } return successMsg.toString(); } }