package com.jeesite.modules.mes.web; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.DateUtils; 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.mes.entity.MesRepairItems; import com.jeesite.modules.mes.resp.CommonResp; import com.jeesite.modules.mes.service.MesProductRecordService; import com.jeesite.modules.mes.service.MesRepairItemsService; import com.jeesite.modules.mes.util.CommonUitl; 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.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-10-11 */ @Controller @RequestMapping(value = "${adminPath}/mes/mesRepairItems") public class MesRepairItemsController extends BaseController { @Autowired private MesRepairItemsService mesRepairItemsService; @Autowired private MesProductRecordService mesProductRecordService; /** * 获取数据 */ @ModelAttribute public MesRepairItems get(String id, boolean isNewRecord) { return mesRepairItemsService.get(id, isNewRecord); } /** * 查询列表 */ @RequiresPermissions("mes:mesRepairItems:view") @RequestMapping(value = {"list", ""}) public String list(MesRepairItems mesRepairItems, Model model) { model.addAttribute("mesRepairItems", mesRepairItems); return "modules/mes/mesRepairItemsList"; } /** * 查询列表数据 */ @RequiresPermissions("mes:mesRepairItems:view") @RequestMapping(value = "listData") @ResponseBody public Page listData(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) { mesRepairItems.setPage(new Page<>(request, response)); Page page = mesRepairItemsService.findPage(mesRepairItems); return page; } /** * 查看编辑表单 */ @RequiresPermissions("mes:mesRepairItems:view") @RequestMapping(value = "form") public String form(MesRepairItems mesRepairItems, Model model) { model.addAttribute("mesRepairItems", mesRepairItems); return "modules/mes/mesRepairItemsForm"; } /** * 保存数据 */ @RequiresPermissions("mes:mesRepairItems:edit") @PostMapping(value = "save") @ResponseBody public String save(@Validated MesRepairItems mesRepairItems) { mesRepairItemsService.save(mesRepairItems); return renderResult(Global.TRUE, text("保存返修问题清单成功!")); } /** * 停用数据 */ @RequiresPermissions("mes:mesRepairItems:edit") @RequestMapping(value = "disable") @ResponseBody public String disable(MesRepairItems mesRepairItems) { mesRepairItems.setStatus(MesRepairItems.STATUS_DISABLE); mesRepairItemsService.updateStatus(mesRepairItems); return renderResult(Global.TRUE, text("停用返修问题清单成功")); } /** * 启用数据 */ @RequiresPermissions("mes:mesRepairItems:edit") @RequestMapping(value = "enable") @ResponseBody public String enable(MesRepairItems mesRepairItems) { mesRepairItems.setStatus(MesRepairItems.STATUS_NORMAL); mesRepairItemsService.updateStatus(mesRepairItems); return renderResult(Global.TRUE, text("启用返修问题清单成功")); } /** * 删除数据 */ @RequiresPermissions("mes:mesRepairItems:edit") @RequestMapping(value = "delete") @ResponseBody public String delete(MesRepairItems mesRepairItems) { mesRepairItemsService.delete(mesRepairItems); return renderResult(Global.TRUE, text("删除返修问题清单成功!")); } @RequestMapping(value = "all") @ResponseBody public CommonResp all(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) { CommonResp> resp1 = new CommonResp<>(); if(StringUtils.isEmpty(request.getParameter("oprno"))){ resp1.setResult(Global.FALSE); resp1.setMessage("参数错误"); return resp1; } String oprno = CommonUitl.formatOprno(request.getParameter("oprno")); mesRepairItems.setOprno(oprno); List lists = mesRepairItemsService.findList(mesRepairItems); CommonResp> resp = new CommonResp<>(); resp.setData(lists); resp.setResult(Global.TRUE); return resp; } @RequestMapping(value = "allList") @ResponseBody public CommonResp allList(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) { CommonResp> resp1 = new CommonResp<>(); String oprno = request.getParameter("oprno"); String lineSn = request.getParameter("lineSn"); String sn = request.getParameter("sn"); if(StringUtils.isEmpty(oprno)){ resp1.setResult(Global.FALSE); resp1.setMessage("参数错误"); return resp1; } if(StringUtils.isEmpty(lineSn)){ lineSn = mesProductRecordService.resolveLineSnBySn(sn); if(StringUtils.isEmpty(lineSn)){ resp1.setResult(Global.FALSE); resp1.setMessage("无法根据工件号获取产线编号,请传入 lineSn 或有效的 sn"); return resp1; } } List lists = mesRepairItemsService.findEnabledList(sn, oprno, lineSn); for (MesRepairItems mesRepairItem : lists) { mesRepairItem.setTitle(mesRepairItem.getTitle()); } CommonResp> resp = new CommonResp<>(); resp.setData(lists); resp.setResult(Global.TRUE); return resp; } @RequestMapping(value = "allItems") @ResponseBody public CommonResp allItems(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) { CommonResp> resp = new CommonResp<>(); String sn = request.getParameter("sn"); String oprno = request.getParameter("oprno"); String lineSn = request.getParameter("lineSn"); if (StringUtils.isNotEmpty(sn) && StringUtils.isEmpty(lineSn)) { lineSn = mesProductRecordService.resolveLineSnBySn(sn); if (StringUtils.isEmpty(lineSn)) { resp.setResult(Global.FALSE); resp.setMessage("无法根据工件号获取产线编号"); return resp; } } List lists = mesRepairItemsService.findEnabledList(sn, oprno, lineSn); for (MesRepairItems mesRepairItem : lists) { mesRepairItem.setTitle(mesRepairItem.getTitle()); } resp.setData(lists); resp.setResult(Global.TRUE); return resp; } /** * 导出数据 */ @RequestMapping(value = "exportData") public void exportData(MesRepairItems mesDeviceCate, HttpServletResponse response) { List list = mesRepairItemsService.findList(mesDeviceCate); String fileName = " 返修问题清单" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; try(ExcelExport ee = new ExcelExport(" 返修问题清单", MesRepairItems.class)){ ee.setDataList(list).write(response, fileName); } } /** * 下载模板 */ @RequestMapping(value = "importTemplate") public void importTemplate(HttpServletResponse response) { MesRepairItems mesDeviceCate = new MesRepairItems(); List list = ListUtils.newArrayList(mesDeviceCate); String fileName = " 返修问题清单.xlsx"; try(ExcelExport ee = new ExcelExport(" 返修问题清单", MesRepairItems.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(MesRepairItems.class); for (MesRepairItems mesDeviceCheck : list) { try{ ValidatorUtils.validateWithException(mesDeviceCheck); this.save(mesDeviceCheck); 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(); } }