MesMaterialInspectController.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.jeesite.modules.mes.web;
  2. import java.net.URLEncoder;
  3. import java.nio.charset.StandardCharsets;
  4. import java.util.List;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.apache.shiro.authz.annotation.RequiresPermissions;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.ui.Model;
  12. import org.springframework.validation.annotation.Validated;
  13. import org.springframework.web.bind.annotation.ModelAttribute;
  14. import org.springframework.web.bind.annotation.PostMapping;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.ResponseBody;
  17. import com.jeesite.common.config.Global;
  18. import com.jeesite.common.entity.Page;
  19. import com.jeesite.common.lang.DateUtils;
  20. import com.jeesite.common.utils.excel.ExcelExport;
  21. import com.jeesite.common.web.BaseController;
  22. import com.jeesite.modules.mes.entity.MesMaterialInspect;
  23. import com.jeesite.modules.mes.service.MesMaterialInspectExportService;
  24. import com.jeesite.modules.mes.service.MesMaterialInspectService;
  25. /**
  26. * 来料送检单(PC 列表 / 编辑 / PDF)。数据由现有 PDA 来料报检 submit 自动生成。
  27. */
  28. @Controller
  29. @RequestMapping(value = "${adminPath}/mes/mesMaterialInspect")
  30. public class MesMaterialInspectController extends BaseController {
  31. @Autowired
  32. private MesMaterialInspectService mesMaterialInspectService;
  33. @Autowired
  34. private MesMaterialInspectExportService mesMaterialInspectExportService;
  35. @ModelAttribute
  36. public MesMaterialInspect get(String id, boolean isNewRecord) {
  37. return mesMaterialInspectService.get(id, isNewRecord);
  38. }
  39. @RequiresPermissions("mes:mesMaterialInspect:view")
  40. @RequestMapping(value = { "list", "" })
  41. public String list(MesMaterialInspect mesMaterialInspect, Model model) {
  42. model.addAttribute("mesMaterialInspect", mesMaterialInspect);
  43. return "modules/mes/mesMaterialInspectList";
  44. }
  45. @RequiresPermissions("mes:mesMaterialInspect:view")
  46. @RequestMapping(value = "listData")
  47. @ResponseBody
  48. public Page<MesMaterialInspect> listData(MesMaterialInspect mesMaterialInspect,
  49. HttpServletRequest request, HttpServletResponse response) {
  50. mesMaterialInspect.setPage(new Page<>(request, response));
  51. return mesMaterialInspectService.findPage(mesMaterialInspect);
  52. }
  53. @RequiresPermissions("mes:mesMaterialInspect:view")
  54. @RequestMapping(value = "form")
  55. public String form(MesMaterialInspect mesMaterialInspect, Model model) {
  56. model.addAttribute("mesMaterialInspect", mesMaterialInspect);
  57. return "modules/mes/mesMaterialInspectForm";
  58. }
  59. @RequiresPermissions("mes:mesMaterialInspect:edit")
  60. @PostMapping(value = "save")
  61. @ResponseBody
  62. public String save(@Validated MesMaterialInspect mesMaterialInspect) {
  63. mesMaterialInspectService.save(mesMaterialInspect);
  64. return renderResult(Global.TRUE, text("保存来料送检单成功!"));
  65. }
  66. @RequiresPermissions("mes:mesMaterialInspect:edit")
  67. @RequestMapping(value = "delete")
  68. @ResponseBody
  69. public String delete(MesMaterialInspect mesMaterialInspect) {
  70. mesMaterialInspectService.delete(mesMaterialInspect);
  71. return renderResult(Global.TRUE, text("删除来料送检单成功!"));
  72. }
  73. @RequiresPermissions("mes:mesMaterialInspect:view")
  74. @RequestMapping(value = "exportData")
  75. public void exportData(MesMaterialInspect mesMaterialInspect, HttpServletResponse response) {
  76. List<MesMaterialInspect> list = mesMaterialInspectService.findList(mesMaterialInspect);
  77. String fileName = "来料送检单" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
  78. try (ExcelExport ee = new ExcelExport("来料送检单", MesMaterialInspect.class)) {
  79. ee.setDataList(list).write(response, fileName);
  80. }
  81. }
  82. /**
  83. * 按行导出送检单 PDF(版式对齐 Excel 模板)
  84. */
  85. @RequiresPermissions("mes:mesMaterialInspect:view")
  86. @RequestMapping(value = "exportInspectPdf")
  87. public void exportInspectPdf(String id, HttpServletResponse response) throws Exception {
  88. if (StringUtils.isBlank(id)) {
  89. response.setContentType("text/plain;charset=UTF-8");
  90. response.getWriter().write("参数错误");
  91. return;
  92. }
  93. MesMaterialInspect row = mesMaterialInspectService.get(new MesMaterialInspect(id));
  94. if (row == null || StringUtils.isBlank(row.getSn())) {
  95. response.setContentType("text/plain;charset=UTF-8");
  96. response.getWriter().write("数据不完整,无法导出");
  97. return;
  98. }
  99. byte[] pdf = mesMaterialInspectExportService.exportPdf(row);
  100. String name = "来料送检单_" + StringUtils.defaultIfBlank(row.getPoNo(), "NA")
  101. + "_" + StringUtils.defaultIfBlank(row.getBatchNo(), "NA") + ".pdf";
  102. String encoded = URLEncoder.encode(name, StandardCharsets.UTF_8.name()).replace("+", "%20");
  103. response.setContentType("application/pdf");
  104. response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encoded);
  105. response.setContentLength(pdf.length);
  106. response.getOutputStream().write(pdf);
  107. response.getOutputStream().flush();
  108. }
  109. }