MesDeviceCateController.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  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.service.ServiceException;
  7. import com.jeesite.common.utils.excel.ExcelExport;
  8. import com.jeesite.common.utils.excel.ExcelImport;
  9. import com.jeesite.common.utils.excel.annotation.ExcelField;
  10. import com.jeesite.common.validator.ValidatorUtils;
  11. import com.jeesite.common.web.BaseController;
  12. import com.jeesite.modules.mes.entity.MesDeviceCate;
  13. import com.jeesite.modules.mes.service.MesDeviceCateService;
  14. import org.apache.shiro.authz.annotation.RequiresPermissions;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Controller;
  17. import org.springframework.transaction.annotation.Transactional;
  18. import org.springframework.ui.Model;
  19. import org.springframework.validation.annotation.Validated;
  20. import org.springframework.web.bind.annotation.ModelAttribute;
  21. import org.springframework.web.bind.annotation.PostMapping;
  22. import org.springframework.web.bind.annotation.RequestMapping;
  23. import org.springframework.web.bind.annotation.ResponseBody;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpServletResponse;
  27. import javax.validation.ConstraintViolation;
  28. import javax.validation.ConstraintViolationException;
  29. import java.util.List;
  30. /**
  31. * 设备分类Controller
  32. * @author wst
  33. * @version 2023-07-20
  34. */
  35. @Controller
  36. @RequestMapping(value = "${adminPath}/mes/mesDeviceCate")
  37. public class MesDeviceCateController extends BaseController {
  38. @Autowired
  39. private MesDeviceCateService mesDeviceCateService;
  40. /**
  41. * 获取数据
  42. */
  43. @ModelAttribute
  44. public MesDeviceCate get(String id, boolean isNewRecord) {
  45. return mesDeviceCateService.get(id, isNewRecord);
  46. }
  47. /**
  48. * 查询列表
  49. */
  50. @RequiresPermissions("mes:mesDeviceCate:view")
  51. @RequestMapping(value = {"list", ""})
  52. public String list(MesDeviceCate mesDeviceCate, Model model) {
  53. model.addAttribute("mesDeviceCate", mesDeviceCate);
  54. return "modules/mes/mesDeviceCateList";
  55. }
  56. /**
  57. * 查询列表数据
  58. */
  59. @RequiresPermissions("mes:mesDeviceCate:view")
  60. @RequestMapping(value = "listData")
  61. @ResponseBody
  62. public Page<MesDeviceCate> listData(MesDeviceCate mesDeviceCate, HttpServletRequest request, HttpServletResponse response) {
  63. mesDeviceCate.setPage(new Page<>(request, response));
  64. Page<MesDeviceCate> page = mesDeviceCateService.findPage(mesDeviceCate);
  65. return page;
  66. }
  67. /**
  68. * 查看编辑表单
  69. */
  70. @RequiresPermissions("mes:mesDeviceCate:view")
  71. @RequestMapping(value = "form")
  72. public String form(MesDeviceCate mesDeviceCate, Model model) {
  73. model.addAttribute("mesDeviceCate", mesDeviceCate);
  74. return "modules/mes/mesDeviceCateForm";
  75. }
  76. /**
  77. * 保存数据
  78. */
  79. @RequiresPermissions("mes:mesDeviceCate:edit")
  80. @PostMapping(value = "save")
  81. @ResponseBody
  82. public String save(@Validated MesDeviceCate mesDeviceCate) {
  83. mesDeviceCateService.save(mesDeviceCate);
  84. return renderResult(Global.TRUE, text("保存设备分类成功!"));
  85. }
  86. /**
  87. * 停用数据
  88. */
  89. @RequiresPermissions("mes:mesDeviceCate:edit")
  90. @RequestMapping(value = "disable")
  91. @ResponseBody
  92. public String disable(MesDeviceCate mesDeviceCate) {
  93. mesDeviceCate.setStatus(MesDeviceCate.STATUS_DISABLE);
  94. mesDeviceCateService.updateStatus(mesDeviceCate);
  95. return renderResult(Global.TRUE, text("停用设备分类成功"));
  96. }
  97. /**
  98. * 启用数据
  99. */
  100. @RequiresPermissions("mes:mesDeviceCate:edit")
  101. @RequestMapping(value = "enable")
  102. @ResponseBody
  103. public String enable(MesDeviceCate mesDeviceCate) {
  104. mesDeviceCate.setStatus(MesDeviceCate.STATUS_NORMAL);
  105. mesDeviceCateService.updateStatus(mesDeviceCate);
  106. return renderResult(Global.TRUE, text("启用设备分类成功"));
  107. }
  108. /**
  109. * 删除数据
  110. */
  111. @RequiresPermissions("mes:mesDeviceCate:edit")
  112. @RequestMapping(value = "delete")
  113. @ResponseBody
  114. public String delete(MesDeviceCate mesDeviceCate) {
  115. mesDeviceCateService.delete(mesDeviceCate);
  116. return renderResult(Global.TRUE, text("删除设备分类成功!"));
  117. }
  118. /**
  119. * 导出数据
  120. */
  121. @RequestMapping(value = "exportData")
  122. public void exportData(MesDeviceCate mesDeviceCate, HttpServletResponse response) {
  123. List<MesDeviceCate> list = mesDeviceCateService.findList(mesDeviceCate);
  124. String fileName = "设备分类" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
  125. try(ExcelExport ee = new ExcelExport("设备分类", MesDeviceCate.class)){
  126. ee.setDataList(list).write(response, fileName);
  127. }
  128. }
  129. /**
  130. * 下载模板
  131. */
  132. @RequestMapping(value = "importTemplate")
  133. public void importTemplate(HttpServletResponse response) {
  134. MesDeviceCate mesDeviceCate = new MesDeviceCate();
  135. List<MesDeviceCate> list = ListUtils.newArrayList(mesDeviceCate);
  136. String fileName = "设备分类.xlsx";
  137. try(ExcelExport ee = new ExcelExport("设备分类", MesDeviceCate.class, ExcelField.Type.IMPORT)){
  138. ee.setDataList(list).write(response, fileName);
  139. }
  140. }
  141. /**
  142. * 导入数据
  143. */
  144. @ResponseBody
  145. @PostMapping(value = "importData")
  146. public String importData(MultipartFile file) {
  147. try {
  148. String message = importData1(file);
  149. return renderResult(Global.TRUE, "posfull:"+message);
  150. } catch (Exception ex) {
  151. return renderResult(Global.FALSE, "posfull:"+ex.getMessage());
  152. }
  153. }
  154. @Transactional
  155. public String importData1(MultipartFile file) {
  156. if (file == null){
  157. throw new ServiceException(text("请选择导入的数据文件!"));
  158. }
  159. int successNum = 0; int failureNum = 0;
  160. StringBuilder successMsg = new StringBuilder();
  161. StringBuilder failureMsg = new StringBuilder();
  162. try(ExcelImport ei = new ExcelImport(file, 2, 0)){
  163. List<MesDeviceCate> list = ei.getDataList(MesDeviceCate.class);
  164. for (MesDeviceCate mesDeviceCheck : list) {
  165. try{
  166. ValidatorUtils.validateWithException(mesDeviceCheck);
  167. this.save(mesDeviceCheck);
  168. successNum++;
  169. successMsg.append("<br/>" + successNum + "、编号 " + mesDeviceCheck.getId() + " 导入成功");
  170. } catch (Exception e) {
  171. failureNum++;
  172. String msg = "<br/>" + failureNum + "、编号 " + mesDeviceCheck.getId() + " 导入失败:";
  173. if (e instanceof ConstraintViolationException){
  174. ConstraintViolationException cve = (ConstraintViolationException)e;
  175. for (ConstraintViolation<?> violation : cve.getConstraintViolations()) {
  176. msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")";
  177. }
  178. }else{
  179. msg += e.getMessage();
  180. }
  181. failureMsg.append(msg);
  182. logger.error(msg, e);
  183. }
  184. }
  185. } catch (Exception e) {
  186. logger.error(e.getMessage(), e);
  187. failureMsg.append(e.getMessage());
  188. return failureMsg.toString();
  189. }
  190. if (failureNum > 0) {
  191. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  192. throw new ServiceException(failureMsg.toString());
  193. }else{
  194. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
  195. }
  196. return successMsg.toString();
  197. }
  198. }