MesRepairItemsController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. package com.jeesite.modules.mes.web;
  2. import com.jeesite.common.collect.ListUtils;
  3. import com.jeesite.common.config.Global;
  4. import com.jeesite.common.entity.Page;
  5. import com.jeesite.common.lang.DateUtils;
  6. import com.jeesite.common.lang.StringUtils;
  7. import com.jeesite.common.service.ServiceException;
  8. import com.jeesite.common.utils.excel.ExcelExport;
  9. import com.jeesite.common.utils.excel.ExcelImport;
  10. import com.jeesite.common.utils.excel.annotation.ExcelField;
  11. import com.jeesite.common.validator.ValidatorUtils;
  12. import com.jeesite.common.web.BaseController;
  13. import com.jeesite.modules.mes.entity.MesRepairItems;
  14. import com.jeesite.modules.mes.resp.CommonResp;
  15. import com.jeesite.modules.mes.service.MesProductRecordService;
  16. import com.jeesite.modules.mes.service.MesRepairItemsService;
  17. import com.jeesite.modules.mes.util.CommonUitl;
  18. import org.apache.shiro.authz.annotation.RequiresPermissions;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Controller;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.ui.Model;
  23. import org.springframework.validation.annotation.Validated;
  24. import org.springframework.web.bind.annotation.ModelAttribute;
  25. import org.springframework.web.bind.annotation.PostMapping;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.ResponseBody;
  28. import org.springframework.web.multipart.MultipartFile;
  29. import javax.servlet.http.HttpServletRequest;
  30. import javax.servlet.http.HttpServletResponse;
  31. import javax.validation.ConstraintViolation;
  32. import javax.validation.ConstraintViolationException;
  33. import java.util.List;
  34. import java.util.Map;
  35. /**
  36. * 返修问题清单Controller
  37. * @author hzd
  38. * @version 2023-10-11
  39. */
  40. @Controller
  41. @RequestMapping(value = "${adminPath}/mes/mesRepairItems")
  42. public class MesRepairItemsController extends BaseController {
  43. @Autowired
  44. private MesRepairItemsService mesRepairItemsService;
  45. @Autowired
  46. private MesProductRecordService mesProductRecordService;
  47. /**
  48. * 获取数据
  49. */
  50. @ModelAttribute
  51. public MesRepairItems get(String id, boolean isNewRecord) {
  52. return mesRepairItemsService.get(id, isNewRecord);
  53. }
  54. /**
  55. * 查询列表
  56. */
  57. @RequiresPermissions("mes:mesRepairItems:view")
  58. @RequestMapping(value = {"list", ""})
  59. public String list(MesRepairItems mesRepairItems, Model model) {
  60. model.addAttribute("mesRepairItems", mesRepairItems);
  61. return "modules/mes/mesRepairItemsList";
  62. }
  63. /**
  64. * 查询列表数据
  65. */
  66. @RequiresPermissions("mes:mesRepairItems:view")
  67. @RequestMapping(value = "listData")
  68. @ResponseBody
  69. public Page<MesRepairItems> listData(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) {
  70. mesRepairItems.setPage(new Page<>(request, response));
  71. Page<MesRepairItems> page = mesRepairItemsService.findPage(mesRepairItems);
  72. return page;
  73. }
  74. /**
  75. * 查看编辑表单
  76. */
  77. @RequiresPermissions("mes:mesRepairItems:view")
  78. @RequestMapping(value = "form")
  79. public String form(MesRepairItems mesRepairItems, Model model) {
  80. model.addAttribute("mesRepairItems", mesRepairItems);
  81. return "modules/mes/mesRepairItemsForm";
  82. }
  83. /**
  84. * 保存数据
  85. */
  86. @RequiresPermissions("mes:mesRepairItems:edit")
  87. @PostMapping(value = "save")
  88. @ResponseBody
  89. public String save(@Validated MesRepairItems mesRepairItems) {
  90. mesRepairItemsService.save(mesRepairItems);
  91. return renderResult(Global.TRUE, text("保存返修问题清单成功!"));
  92. }
  93. /**
  94. * 停用数据
  95. */
  96. @RequiresPermissions("mes:mesRepairItems:edit")
  97. @RequestMapping(value = "disable")
  98. @ResponseBody
  99. public String disable(MesRepairItems mesRepairItems) {
  100. mesRepairItems.setStatus(MesRepairItems.STATUS_DISABLE);
  101. mesRepairItemsService.updateStatus(mesRepairItems);
  102. return renderResult(Global.TRUE, text("停用返修问题清单成功"));
  103. }
  104. /**
  105. * 启用数据
  106. */
  107. @RequiresPermissions("mes:mesRepairItems:edit")
  108. @RequestMapping(value = "enable")
  109. @ResponseBody
  110. public String enable(MesRepairItems mesRepairItems) {
  111. mesRepairItems.setStatus(MesRepairItems.STATUS_NORMAL);
  112. mesRepairItemsService.updateStatus(mesRepairItems);
  113. return renderResult(Global.TRUE, text("启用返修问题清单成功"));
  114. }
  115. /**
  116. * 删除数据
  117. */
  118. @RequiresPermissions("mes:mesRepairItems:edit")
  119. @RequestMapping(value = "delete")
  120. @ResponseBody
  121. public String delete(MesRepairItems mesRepairItems) {
  122. mesRepairItemsService.delete(mesRepairItems);
  123. return renderResult(Global.TRUE, text("删除返修问题清单成功!"));
  124. }
  125. @RequestMapping(value = "all")
  126. @ResponseBody
  127. public CommonResp all(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) {
  128. CommonResp<Map<String, Object>> resp1 = new CommonResp<>();
  129. if(StringUtils.isEmpty(request.getParameter("oprno"))){
  130. resp1.setResult(Global.FALSE);
  131. resp1.setMessage("参数错误");
  132. return resp1;
  133. }
  134. String oprno = CommonUitl.formatOprno(request.getParameter("oprno"));
  135. mesRepairItems.setOprno(oprno);
  136. List<MesRepairItems> lists = mesRepairItemsService.findList(mesRepairItems);
  137. CommonResp<List<MesRepairItems>> resp = new CommonResp<>();
  138. resp.setData(lists);
  139. resp.setResult(Global.TRUE);
  140. return resp;
  141. }
  142. @RequestMapping(value = "allList")
  143. @ResponseBody
  144. public CommonResp allList(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) {
  145. CommonResp<Map<String, Object>> resp1 = new CommonResp<>();
  146. String oprno = request.getParameter("oprno");
  147. String lineSn = request.getParameter("lineSn");
  148. String sn = request.getParameter("sn");
  149. if(StringUtils.isEmpty(oprno)){
  150. resp1.setResult(Global.FALSE);
  151. resp1.setMessage("参数错误");
  152. return resp1;
  153. }
  154. if(StringUtils.isEmpty(lineSn)){
  155. lineSn = mesProductRecordService.resolveLineSnBySn(sn);
  156. if(StringUtils.isEmpty(lineSn)){
  157. resp1.setResult(Global.FALSE);
  158. resp1.setMessage("无法根据工件号获取产线编号,请传入 lineSn 或有效的 sn");
  159. return resp1;
  160. }
  161. }
  162. List<MesRepairItems> lists = mesRepairItemsService.findEnabledList(sn, oprno, lineSn);
  163. for (MesRepairItems mesRepairItem : lists) {
  164. mesRepairItem.setTitle(mesRepairItem.getTitle());
  165. }
  166. CommonResp<List<MesRepairItems>> resp = new CommonResp<>();
  167. resp.setData(lists);
  168. resp.setResult(Global.TRUE);
  169. return resp;
  170. }
  171. @RequestMapping(value = "allItems")
  172. @ResponseBody
  173. public CommonResp allItems(MesRepairItems mesRepairItems, HttpServletRequest request, HttpServletResponse response) {
  174. CommonResp<List<MesRepairItems>> resp = new CommonResp<>();
  175. String sn = request.getParameter("sn");
  176. String oprno = request.getParameter("oprno");
  177. String lineSn = request.getParameter("lineSn");
  178. if (StringUtils.isNotEmpty(sn) && StringUtils.isEmpty(lineSn)) {
  179. lineSn = mesProductRecordService.resolveLineSnBySn(sn);
  180. if (StringUtils.isEmpty(lineSn)) {
  181. resp.setResult(Global.FALSE);
  182. resp.setMessage("无法根据工件号获取产线编号");
  183. return resp;
  184. }
  185. }
  186. List<MesRepairItems> lists = mesRepairItemsService.findEnabledList(sn, oprno, lineSn);
  187. for (MesRepairItems mesRepairItem : lists) {
  188. mesRepairItem.setTitle(mesRepairItem.getTitle());
  189. }
  190. resp.setData(lists);
  191. resp.setResult(Global.TRUE);
  192. return resp;
  193. }
  194. /**
  195. * 导出数据
  196. */
  197. @RequestMapping(value = "exportData")
  198. public void exportData(MesRepairItems mesDeviceCate, HttpServletResponse response) {
  199. List<MesRepairItems> list = mesRepairItemsService.findList(mesDeviceCate);
  200. String fileName = " 返修问题清单" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
  201. try(ExcelExport ee = new ExcelExport(" 返修问题清单", MesRepairItems.class)){
  202. ee.setDataList(list).write(response, fileName);
  203. }
  204. }
  205. /**
  206. * 下载模板
  207. */
  208. @RequestMapping(value = "importTemplate")
  209. public void importTemplate(HttpServletResponse response) {
  210. MesRepairItems mesDeviceCate = new MesRepairItems();
  211. List<MesRepairItems> list = ListUtils.newArrayList(mesDeviceCate);
  212. String fileName = " 返修问题清单.xlsx";
  213. try(ExcelExport ee = new ExcelExport(" 返修问题清单", MesRepairItems.class, ExcelField.Type.IMPORT)){
  214. ee.setDataList(list).write(response, fileName);
  215. }
  216. }
  217. /**
  218. * 导入数据
  219. */
  220. @ResponseBody
  221. @PostMapping(value = "importData")
  222. public String importData(MultipartFile file, HttpServletRequest request) {
  223. try {
  224. String message = importData1(file,request);
  225. return renderResult(Global.TRUE, "posfull:"+message);
  226. } catch (Exception ex) {
  227. return renderResult(Global.FALSE, "posfull:"+ex.getMessage());
  228. }
  229. }
  230. @Transactional
  231. public String importData1(MultipartFile file,HttpServletRequest request) {
  232. if (file == null){
  233. throw new ServiceException(text("请选择导入的数据文件!"));
  234. }
  235. int successNum = 0; int failureNum = 0;
  236. StringBuilder successMsg = new StringBuilder();
  237. StringBuilder failureMsg = new StringBuilder();
  238. try(ExcelImport ei = new ExcelImport(file, 2, 0)){
  239. List<MesRepairItems> list = ei.getDataList(MesRepairItems.class);
  240. for (MesRepairItems mesDeviceCheck : list) {
  241. try{
  242. ValidatorUtils.validateWithException(mesDeviceCheck);
  243. this.save(mesDeviceCheck);
  244. successNum++;
  245. successMsg.append("<br/>" + successNum + "、编号 " + mesDeviceCheck.getId() + " 导入成功");
  246. } catch (Exception e) {
  247. failureNum++;
  248. String msg = "<br/>" + failureNum + "、编号 " + mesDeviceCheck.getId() + " 导入失败:";
  249. if (e instanceof ConstraintViolationException){
  250. ConstraintViolationException cve = (ConstraintViolationException)e;
  251. for (ConstraintViolation<?> violation : cve.getConstraintViolations()) {
  252. msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")";
  253. }
  254. }else{
  255. msg += e.getMessage();
  256. }
  257. failureMsg.append(msg);
  258. logger.error(msg, e);
  259. }
  260. }
  261. } catch (Exception e) {
  262. logger.error(e.getMessage(), e);
  263. failureMsg.append(e.getMessage());
  264. return failureMsg.toString();
  265. }
  266. if (failureNum > 0) {
  267. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  268. throw new ServiceException(failureMsg.toString());
  269. }else{
  270. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
  271. }
  272. return successMsg.toString();
  273. }
  274. }