package com.jeesite.modules.mes.web; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; 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.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.jeesite.common.config.Global; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.DateUtils; import com.jeesite.common.utils.excel.ExcelExport; import com.jeesite.common.web.BaseController; import com.jeesite.modules.mes.entity.MesMaterialInspect; import com.jeesite.modules.mes.service.MesMaterialInspectExportService; import com.jeesite.modules.mes.service.MesMaterialInspectService; /** * 来料送检单(PC 列表 / 编辑 / PDF)。数据由现有 PDA 来料报检 submit 自动生成。 */ @Controller @RequestMapping(value = "${adminPath}/mes/mesMaterialInspect") public class MesMaterialInspectController extends BaseController { @Autowired private MesMaterialInspectService mesMaterialInspectService; @Autowired private MesMaterialInspectExportService mesMaterialInspectExportService; @ModelAttribute public MesMaterialInspect get(String id, boolean isNewRecord) { return mesMaterialInspectService.get(id, isNewRecord); } @RequiresPermissions("mes:mesMaterialInspect:view") @RequestMapping(value = { "list", "" }) public String list(MesMaterialInspect mesMaterialInspect, Model model) { model.addAttribute("mesMaterialInspect", mesMaterialInspect); return "modules/mes/mesMaterialInspectList"; } @RequiresPermissions("mes:mesMaterialInspect:view") @RequestMapping(value = "listData") @ResponseBody public Page listData(MesMaterialInspect mesMaterialInspect, HttpServletRequest request, HttpServletResponse response) { mesMaterialInspect.setPage(new Page<>(request, response)); return mesMaterialInspectService.findPage(mesMaterialInspect); } @RequiresPermissions("mes:mesMaterialInspect:view") @RequestMapping(value = "form") public String form(MesMaterialInspect mesMaterialInspect, Model model) { model.addAttribute("mesMaterialInspect", mesMaterialInspect); return "modules/mes/mesMaterialInspectForm"; } @RequiresPermissions("mes:mesMaterialInspect:edit") @PostMapping(value = "save") @ResponseBody public String save(@Validated MesMaterialInspect mesMaterialInspect) { mesMaterialInspectService.save(mesMaterialInspect); return renderResult(Global.TRUE, text("保存来料送检单成功!")); } @RequiresPermissions("mes:mesMaterialInspect:edit") @RequestMapping(value = "delete") @ResponseBody public String delete(MesMaterialInspect mesMaterialInspect) { mesMaterialInspectService.delete(mesMaterialInspect); return renderResult(Global.TRUE, text("删除来料送检单成功!")); } @RequiresPermissions("mes:mesMaterialInspect:view") @RequestMapping(value = "exportData") public void exportData(MesMaterialInspect mesMaterialInspect, HttpServletResponse response) { List list = mesMaterialInspectService.findList(mesMaterialInspect); String fileName = "来料送检单" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx"; try (ExcelExport ee = new ExcelExport("来料送检单", MesMaterialInspect.class)) { ee.setDataList(list).write(response, fileName); } } /** * 按行导出送检单 PDF(版式对齐 Excel 模板) */ @RequiresPermissions("mes:mesMaterialInspect:view") @RequestMapping(value = "exportInspectPdf") public void exportInspectPdf(String id, HttpServletResponse response) throws Exception { if (StringUtils.isBlank(id)) { response.setContentType("text/plain;charset=UTF-8"); response.getWriter().write("参数错误"); return; } MesMaterialInspect row = mesMaterialInspectService.get(new MesMaterialInspect(id)); if (row == null || StringUtils.isBlank(row.getSn())) { response.setContentType("text/plain;charset=UTF-8"); response.getWriter().write("数据不完整,无法导出"); return; } byte[] pdf = mesMaterialInspectExportService.exportPdf(row); String name = "来料送检单_" + StringUtils.defaultIfBlank(row.getPoNo(), "NA") + "_" + StringUtils.defaultIfBlank(row.getBatchNo(), "NA") + ".pdf"; String encoded = URLEncoder.encode(name, StandardCharsets.UTF_8.name()).replace("+", "%20"); response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encoded); response.setContentLength(pdf.length); response.getOutputStream().write(pdf); response.getOutputStream().flush(); } }