MesDeviceUrgencyController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. package com.jeesite.modules.mes.web;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.jeesite.common.collect.ListUtils;
  5. import com.jeesite.common.collect.MapUtils;
  6. import com.jeesite.common.config.Global;
  7. import com.jeesite.common.entity.Page;
  8. import com.jeesite.common.lang.DateUtils;
  9. import com.jeesite.common.lang.ObjectUtils;
  10. import com.jeesite.common.lang.StringUtils;
  11. import com.jeesite.common.service.ServiceException;
  12. import com.jeesite.common.utils.excel.ExcelExport;
  13. import com.jeesite.common.utils.excel.ExcelImport;
  14. import com.jeesite.common.utils.excel.annotation.ExcelField;
  15. import com.jeesite.common.validator.ValidatorUtils;
  16. import com.jeesite.common.web.BaseController;
  17. import com.jeesite.modules.file.entity.FileUpload;
  18. import com.jeesite.modules.file.service.FileUploadService;
  19. import com.jeesite.modules.mes.entity.MesDevice;
  20. import com.jeesite.modules.mes.entity.MesDeviceConsumableRecord;
  21. import com.jeesite.modules.mes.entity.MesDeviceState;
  22. import com.jeesite.modules.mes.entity.MesDeviceUrgency;
  23. import com.jeesite.modules.mes.entity.excel.ExcelMesDeviceUrgency;
  24. import com.jeesite.modules.mes.resp.CommonResp;
  25. import com.jeesite.modules.mes.service.MesDeviceService;
  26. import com.jeesite.modules.mes.service.MesDeviceStateService;
  27. import com.jeesite.modules.mes.service.MesDeviceUrgencyService;
  28. import com.jeesite.modules.sys.entity.User;
  29. import com.jeesite.modules.sys.utils.UserUtils;
  30. import org.apache.shiro.authz.annotation.Logical;
  31. import org.apache.shiro.authz.annotation.RequiresPermissions;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.stereotype.Controller;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import org.springframework.ui.Model;
  36. import org.springframework.validation.annotation.Validated;
  37. import org.springframework.web.bind.annotation.ModelAttribute;
  38. import org.springframework.web.bind.annotation.PostMapping;
  39. import org.springframework.web.bind.annotation.RequestMapping;
  40. import org.springframework.web.bind.annotation.ResponseBody;
  41. import org.springframework.web.multipart.MultipartFile;
  42. import javax.annotation.Resource;
  43. import javax.servlet.http.HttpServletRequest;
  44. import javax.servlet.http.HttpServletResponse;
  45. import javax.validation.ConstraintViolation;
  46. import javax.validation.ConstraintViolationException;
  47. import java.util.List;
  48. import java.util.Map;
  49. /**
  50. * 紧急性维修记录Controller
  51. * @author hzd
  52. * @version 2023-08-15
  53. */
  54. @Controller
  55. @RequestMapping(value = "${adminPath}/mes/mesDeviceUrgency")
  56. public class MesDeviceUrgencyController extends BaseController {
  57. @Autowired
  58. private MesDeviceUrgencyService mesDeviceUrgencyService;
  59. @Autowired
  60. private MesDeviceStateService mesDeviceStateService;
  61. @Autowired
  62. private MesDeviceService mesDeviceService;
  63. @Resource
  64. private FileUploadService fileUploadService;
  65. /**
  66. * 获取数据
  67. */
  68. @ModelAttribute
  69. public MesDeviceUrgency get(String id, boolean isNewRecord) {
  70. return mesDeviceUrgencyService.get(id, isNewRecord);
  71. }
  72. /**
  73. * 查询列表
  74. */
  75. @RequiresPermissions("mes:mesDeviceUrgency:view")
  76. @RequestMapping(value = {"list", ""})
  77. public String list(MesDeviceUrgency mesDeviceUrgency, Model model) {
  78. model.addAttribute("mesDeviceUrgency", mesDeviceUrgency);
  79. return "modules/mes/mesDeviceUrgencyList";
  80. }
  81. @RequiresPermissions("mes:mesDeviceUrgency:view")
  82. @RequestMapping(value = {"mylist", ""})
  83. public String mylist(MesDeviceUrgency mesDeviceUrgency, Model model) {
  84. User user = UserUtils.getUser();
  85. mesDeviceUrgency.setUserCode(user.getUserCode());
  86. model.addAttribute("mesDeviceUrgency", mesDeviceUrgency);
  87. return "modules/mes/mesDeviceUrgencyMyList";
  88. }
  89. /**
  90. * 查询列表数据
  91. */
  92. @RequiresPermissions("mes:mesDeviceUrgency:view")
  93. @RequestMapping(value = "listData")
  94. @ResponseBody
  95. public Page<MesDeviceUrgency> listData(MesDeviceUrgency mesDeviceUrgency, HttpServletRequest request, HttpServletResponse response) {
  96. mesDeviceUrgency.setPage(new Page<>(request, response));
  97. Page<MesDeviceUrgency> page = mesDeviceUrgencyService.findPage(mesDeviceUrgency);
  98. return page;
  99. }
  100. /**
  101. * 查看编辑表单
  102. */
  103. @RequiresPermissions("mes:mesDeviceUrgency:view")
  104. @RequestMapping(value = "form")
  105. public String form(MesDeviceUrgency mesDeviceUrgency, Model model) {
  106. User user = UserUtils.getUser();
  107. mesDeviceUrgency.setUserCode(user.getUserCode());
  108. mesDeviceUrgency.setUserName(user.getUserName());
  109. mesDeviceUrgency.setAlarmType("");
  110. if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){
  111. MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId());
  112. if(!ObjectUtils.isEmpty(mesDeviceState)){
  113. mesDeviceUrgency.setAlarmType(mesDeviceState.getContent());
  114. }
  115. }
  116. model.addAttribute("mesDeviceUrgency", mesDeviceUrgency);
  117. return "modules/mes/mesDeviceUrgencyForm";
  118. }
  119. @RequiresPermissions("mes:mesDeviceUrgency:view")
  120. @RequestMapping(value = "myform")
  121. public String myform(MesDeviceUrgency mesDeviceUrgency, Model model) {
  122. User user = UserUtils.getUser();
  123. mesDeviceUrgency.setUserCode(user.getUserCode());
  124. mesDeviceUrgency.setUserName(user.getUserName());
  125. mesDeviceUrgency.setAlarmType("");
  126. if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){
  127. MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId());
  128. if(!ObjectUtils.isEmpty(mesDeviceState)){
  129. mesDeviceUrgency.setAlarmType(mesDeviceState.getContent());
  130. }
  131. }
  132. model.addAttribute("mesDeviceUrgency", mesDeviceUrgency);
  133. return "modules/mes/mesDeviceUrgencyMyForm";
  134. }
  135. /**
  136. * 保存数据
  137. */
  138. @RequiresPermissions(value={"mes:mesDeviceUrgency:edit", "mes:mesDeviceUrgency:api"}, logical= Logical.OR)
  139. @PostMapping(value = "save")
  140. @ResponseBody
  141. public String save(@Validated MesDeviceUrgency mesDeviceUrgency,HttpServletRequest request) {
  142. // 兼容接口
  143. List<MesDeviceConsumableRecord> consumable = JSON.parseArray(request.getParameter("consumable"),MesDeviceConsumableRecord.class);
  144. if(consumable!=null && consumable.size() >0){
  145. for (MesDeviceConsumableRecord mesDeviceConsumableRecord : consumable){
  146. if(StringUtils.isEmpty(mesDeviceConsumableRecord.getConsumableId())){
  147. return renderResult(Global.FALSE, text("参数错误!"));
  148. }
  149. if(mesDeviceConsumableRecord.getNum() <= 0){
  150. return renderResult(Global.FALSE, text("易耗品数量必须大于0!"));
  151. }
  152. }
  153. mesDeviceUrgency.setMesDeviceConsumableRecordList(consumable);
  154. }
  155. if(!StringUtils.isEmpty(mesDeviceUrgency.getDeviceId())){
  156. MesDevice mesDevice = mesDeviceService.get(mesDeviceUrgency.getDeviceId(),false);
  157. if(ObjectUtils.isEmpty(mesDevice)){
  158. return renderResult(Global.FALSE, text("设备不存在!"));
  159. }
  160. mesDeviceUrgency.setOprno(mesDevice.getGw());
  161. mesDeviceUrgency.setCateId(mesDevice.getCateId());
  162. }
  163. if(mesDeviceUrgency.getStartDate() != null && mesDeviceUrgency.getEndDate() != null){
  164. if(mesDeviceUrgency.getStartDate().getTime() >= mesDeviceUrgency.getEndDate().getTime()){
  165. return renderResult(Global.FALSE, text("结束时间必须大于开始时间!"));
  166. }
  167. Integer interval = Math.round((mesDeviceUrgency.getEndDate().getTime() - mesDeviceUrgency.getStartDate().getTime())/1000/60);
  168. mesDeviceUrgency.setInterval(interval);
  169. }
  170. mesDeviceUrgencyService.save(mesDeviceUrgency);
  171. return renderResult(Global.TRUE, text("保存紧急性维修记录成功!"));
  172. }
  173. /**
  174. * 删除数据
  175. */
  176. @RequiresPermissions("mes:mesDeviceUrgency:edit")
  177. @RequestMapping(value = "delete")
  178. @ResponseBody
  179. public String delete(MesDeviceUrgency mesDeviceUrgency) {
  180. mesDeviceUrgencyService.delete(mesDeviceUrgency);
  181. return renderResult(Global.TRUE, text("删除紧急性维修记录成功!"));
  182. }
  183. @RequiresPermissions("mes:mesDeviceUrgency:edit")
  184. @RequestMapping(value = "mydelete")
  185. @ResponseBody
  186. public String mydelete(MesDeviceUrgency mesDeviceUrgency) {
  187. User user = UserUtils.getUser();
  188. if(!user.getUserCode().equals(mesDeviceUrgency.getUserCode())){
  189. renderResult(Global.FALSE, text("无权限删除!"));
  190. }
  191. mesDeviceUrgencyService.delete(mesDeviceUrgency);
  192. return renderResult(Global.TRUE, text("删除紧急性维修记录成功!"));
  193. }
  194. /**
  195. * 查看详情
  196. */
  197. @RequiresPermissions("mes:mesDeviceUrgency:view")
  198. @RequestMapping(value = "info")
  199. public String info(MesDeviceUrgency mesDeviceUrgency, Model model) {
  200. User user = UserUtils.getUser();
  201. mesDeviceUrgency.setUserCode(user.getUserCode());
  202. mesDeviceUrgency.setUserName(user.getUserName());
  203. mesDeviceUrgency.setAlarmType("");
  204. if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){
  205. MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId());
  206. if(!ObjectUtils.isEmpty(mesDeviceState)){
  207. mesDeviceUrgency.setAlarmType(mesDeviceState.getContent());
  208. }
  209. }
  210. model.addAttribute("mesDeviceUrgency", mesDeviceUrgency);
  211. return "modules/mes/mesDeviceUrgencyInfo";
  212. }
  213. /**
  214. * 查询列表数据
  215. */
  216. @RequiresPermissions("mes:mesDeviceUrgency:api")
  217. @RequestMapping(value = "ulist")
  218. @ResponseBody
  219. public CommonResp ulist(MesDeviceUrgency mesDeviceUrgency, HttpServletRequest request, HttpServletResponse response) {
  220. CommonResp<Page> resp = new CommonResp<>();
  221. User user = UserUtils.getUser();
  222. mesDeviceUrgency.setUserCode(user.getUserCode());
  223. mesDeviceUrgency.setPage(new Page<>(request, response));
  224. Page<MesDeviceUrgency> page = mesDeviceUrgencyService.findPage(mesDeviceUrgency);
  225. for (int i=0;i<page.getList().size();i++){
  226. page.getList().get(i).setAlarmType("");
  227. if(!StringUtils.isEmpty(page.getList().get(i).getAlarmId())){
  228. MesDeviceState mesDeviceState2 = mesDeviceStateService.get(page.getList().get(i).getAlarmId());
  229. if(!ObjectUtils.isEmpty(mesDeviceState2)){
  230. page.getList().get(i).setAlarmType(mesDeviceState2.getContent());
  231. }
  232. }
  233. }
  234. resp.setData(page);
  235. resp.setResult(Global.TRUE);
  236. return resp;
  237. }
  238. @RequiresPermissions("mes:mesDeviceUrgency:api")
  239. @RequestMapping(value = "detail")
  240. @ResponseBody
  241. public CommonResp info(MesDeviceUrgency mesDeviceUrgency, HttpServletRequest req) {
  242. String host = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/js";
  243. Map<String, Object> map = MapUtils.newHashMap();
  244. // 获取图片
  245. FileUpload fu = new FileUpload();
  246. fu.setBizKey(mesDeviceUrgency.getId());
  247. fu.setBizType("mesDeviceUrgency_image");
  248. List<FileUpload> imgs = fileUploadService.findList(fu);
  249. List imgList = ListUtils.newArrayList();
  250. if(imgs.size() > 0){
  251. for (FileUpload fi:imgs) {
  252. Map<String, Object> map1 = MapUtils.newHashMap();
  253. map1.put("id",fi.getFileEntity().getFileId());
  254. map1.put("url",host + fi.getFileUrl());
  255. imgList.add(map1);
  256. }
  257. }
  258. map.put("imgs", imgList);
  259. User user = UserUtils.get(mesDeviceUrgency.getUserCode());
  260. mesDeviceUrgency.setUserName(user.getUserName());
  261. mesDeviceUrgency.setAlarmType("");
  262. if(!StringUtils.isEmpty(mesDeviceUrgency.getAlarmId())){
  263. MesDeviceState mesDeviceState = mesDeviceStateService.get(mesDeviceUrgency.getAlarmId());
  264. if(!ObjectUtils.isEmpty(mesDeviceState)){
  265. mesDeviceUrgency.setAlarmType(mesDeviceState.getContent());
  266. }
  267. }
  268. map.put("info", mesDeviceUrgency);
  269. CommonResp<Map<String, Object>> resp = new CommonResp<>();
  270. resp.setData(map);
  271. resp.setResult(Global.TRUE);
  272. return resp;
  273. }
  274. @RequiresPermissions("mes:mesDeviceUrgency:api")
  275. @PostMapping(value = "add")
  276. @ResponseBody
  277. public String add(@Validated MesDeviceUrgency mesDeviceUrgency,HttpServletRequest request) {
  278. User user = UserUtils.getUser();
  279. if(!mesDeviceUrgency.getIsNewRecord() && !mesDeviceUrgency.getUserCode().equals(user.getUserCode())){
  280. return renderResult(Global.FALSE, text("无权限操作!"));
  281. }
  282. mesDeviceUrgency.setUserCode(user.getUserCode());
  283. // 兼容接口
  284. List<MesDeviceConsumableRecord> consumable = JSON.parseArray(request.getParameter("consumable"),MesDeviceConsumableRecord.class);
  285. if(consumable!=null && consumable.size() >0){
  286. for (MesDeviceConsumableRecord mesDeviceConsumableRecord : consumable){
  287. if(StringUtils.isEmpty(mesDeviceConsumableRecord.getConsumableId())){
  288. return renderResult(Global.FALSE, text("参数错误!"));
  289. }
  290. if(mesDeviceConsumableRecord.getNum() <= 0){
  291. return renderResult(Global.FALSE, text("易耗品数量必须大于0!"));
  292. }
  293. }
  294. mesDeviceUrgency.setMesDeviceConsumableRecordList(consumable);
  295. }
  296. if(!StringUtils.isEmpty(mesDeviceUrgency.getDeviceId())){
  297. MesDevice mesDevice = mesDeviceService.get(mesDeviceUrgency.getDeviceId(),false);
  298. if(ObjectUtils.isEmpty(mesDevice)){
  299. return renderResult(Global.FALSE, text("设备不存在!"));
  300. }
  301. mesDeviceUrgency.setOprno(mesDevice.getGw());
  302. mesDeviceUrgency.setCateId(mesDevice.getCateId());
  303. }
  304. if(mesDeviceUrgency.getStartDate() != null && mesDeviceUrgency.getEndDate() != null){
  305. if(mesDeviceUrgency.getStartDate().getTime() >= mesDeviceUrgency.getEndDate().getTime()){
  306. return renderResult(Global.FALSE, text("结束时间必须大于开始时间!"));
  307. }
  308. Integer interval = Math.round((mesDeviceUrgency.getEndDate().getTime() - mesDeviceUrgency.getStartDate().getTime())/1000/60);
  309. mesDeviceUrgency.setInterval(interval);
  310. }
  311. mesDeviceUrgencyService.pdasave(mesDeviceUrgency);
  312. return renderResult(Global.TRUE, text("保存紧急性维修记录成功!"));
  313. }
  314. /**
  315. * 导出数据
  316. */
  317. @RequestMapping(value = "exportData")
  318. public void exportData(MesDeviceUrgency mesDeviceCate, HttpServletResponse response) {
  319. List<MesDeviceUrgency> list = mesDeviceUrgencyService.findList(mesDeviceCate);
  320. String fileName = " 紧急性维修记录" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
  321. try(ExcelExport ee = new ExcelExport(" 紧急性维修记录", MesDeviceUrgency.class)){
  322. ee.setDataList(list).write(response, fileName);
  323. }
  324. }
  325. /**
  326. * 下载模板
  327. */
  328. @RequestMapping(value = "importTemplate")
  329. public void importTemplate(HttpServletResponse response) {
  330. MesDeviceUrgency mesDeviceCate = new MesDeviceUrgency();
  331. List<MesDeviceUrgency> list = ListUtils.newArrayList(mesDeviceCate);
  332. String fileName = " 紧急性维修记录.xlsx";
  333. try(ExcelExport ee = new ExcelExport(" 紧急性维修记录", MesDeviceUrgency.class, ExcelField.Type.IMPORT)){
  334. ee.setDataList(list).write(response, fileName);
  335. }
  336. }
  337. /**
  338. * 导入数据
  339. */
  340. @ResponseBody
  341. @PostMapping(value = "importData")
  342. public String importData(MultipartFile file,HttpServletRequest request) {
  343. try {
  344. String message = importData1(file,request);
  345. return renderResult(Global.TRUE, "posfull:"+message);
  346. } catch (Exception ex) {
  347. return renderResult(Global.FALSE, "posfull:"+ex.getMessage());
  348. }
  349. }
  350. @Transactional
  351. public String importData1(MultipartFile file,HttpServletRequest request) {
  352. if (file == null){
  353. throw new ServiceException(text("请选择导入的数据文件!"));
  354. }
  355. int successNum = 0; int failureNum = 0;
  356. StringBuilder successMsg = new StringBuilder();
  357. StringBuilder failureMsg = new StringBuilder();
  358. try(ExcelImport ei = new ExcelImport(file, 2, 0)){
  359. List<MesDeviceUrgency> list = ei.getDataList(MesDeviceUrgency.class);
  360. for (MesDeviceUrgency mesDeviceCheck : list) {
  361. try{
  362. ValidatorUtils.validateWithException(mesDeviceCheck);
  363. this.save(mesDeviceCheck,request);
  364. successNum++;
  365. successMsg.append("<br/>" + successNum + "、编号 " + mesDeviceCheck.getId() + " 导入成功");
  366. } catch (Exception e) {
  367. failureNum++;
  368. String msg = "<br/>" + failureNum + "、编号 " + mesDeviceCheck.getId() + " 导入失败:";
  369. if (e instanceof ConstraintViolationException){
  370. ConstraintViolationException cve = (ConstraintViolationException)e;
  371. for (ConstraintViolation<?> violation : cve.getConstraintViolations()) {
  372. msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")";
  373. }
  374. }else{
  375. msg += e.getMessage();
  376. }
  377. failureMsg.append(msg);
  378. logger.error(msg, e);
  379. }
  380. }
  381. } catch (Exception e) {
  382. logger.error(e.getMessage(), e);
  383. failureMsg.append(e.getMessage());
  384. return failureMsg.toString();
  385. }
  386. if (failureNum > 0) {
  387. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  388. throw new ServiceException(failureMsg.toString());
  389. }else{
  390. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
  391. }
  392. return successMsg.toString();
  393. }
  394. /**
  395. * 导出数据
  396. */
  397. @RequestMapping(value = "exportData1")
  398. public void exportData1(MesDeviceUrgency mesDeviceCate, HttpServletResponse response) {
  399. List<MesDeviceUrgency> list = mesDeviceUrgencyService.findList(mesDeviceCate);
  400. List<ExcelMesDeviceUrgency> list1= BeanUtil.copyToList(list, ExcelMesDeviceUrgency.class);
  401. String fileName = "我的维修记录" + DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
  402. try(ExcelExport ee = new ExcelExport(" 我的维修记录", ExcelMesDeviceUrgency.class)){
  403. ee.setDataList(list1).write(response, fileName);
  404. }
  405. }
  406. /**
  407. * 下载模板
  408. */
  409. @RequestMapping(value = "importTemplate1")
  410. public void importTemplate1(HttpServletResponse response) {
  411. ExcelMesDeviceUrgency mesDeviceCate = new ExcelMesDeviceUrgency();
  412. List<ExcelMesDeviceUrgency> list = ListUtils.newArrayList(mesDeviceCate);
  413. String fileName = " 紧急性维修记录.xlsx";
  414. try(ExcelExport ee = new ExcelExport(" 紧急性维修记录", ExcelMesDeviceUrgency.class, ExcelField.Type.IMPORT)){
  415. ee.setDataList(list).write(response, fileName);
  416. }
  417. }
  418. /**
  419. * 导入数据
  420. */
  421. @ResponseBody
  422. @PostMapping(value = "importData2")
  423. public String importData2(MultipartFile file,HttpServletRequest request) {
  424. try {
  425. String message = importData3(file,request);
  426. return renderResult(Global.TRUE, "posfull:"+message);
  427. } catch (Exception ex) {
  428. return renderResult(Global.FALSE, "posfull:"+ex.getMessage());
  429. }
  430. }
  431. @Transactional
  432. public String importData3(MultipartFile file,HttpServletRequest request) {
  433. if (file == null){
  434. throw new ServiceException(text("请选择导入的数据文件!"));
  435. }
  436. int successNum = 0; int failureNum = 0;
  437. StringBuilder successMsg = new StringBuilder();
  438. StringBuilder failureMsg = new StringBuilder();
  439. try(ExcelImport ei = new ExcelImport(file, 2, 0)){
  440. List<MesDeviceUrgency> list = ei.getDataList(MesDeviceUrgency.class);
  441. for (MesDeviceUrgency mesDeviceCheck : list) {
  442. try{
  443. ValidatorUtils.validateWithException(mesDeviceCheck);
  444. this.save(mesDeviceCheck,request);
  445. successNum++;
  446. successMsg.append("<br/>" + successNum + "、编号 " + mesDeviceCheck.getId() + " 导入成功");
  447. } catch (Exception e) {
  448. failureNum++;
  449. String msg = "<br/>" + failureNum + "、编号 " + mesDeviceCheck.getId() + " 导入失败:";
  450. if (e instanceof ConstraintViolationException){
  451. ConstraintViolationException cve = (ConstraintViolationException)e;
  452. for (ConstraintViolation<?> violation : cve.getConstraintViolations()) {
  453. msg += Global.getText(violation.getMessage()) + " ("+violation.getPropertyPath()+")";
  454. }
  455. }else{
  456. msg += e.getMessage();
  457. }
  458. failureMsg.append(msg);
  459. logger.error(msg, e);
  460. }
  461. }
  462. } catch (Exception e) {
  463. logger.error(e.getMessage(), e);
  464. failureMsg.append(e.getMessage());
  465. return failureMsg.toString();
  466. }
  467. if (failureNum > 0) {
  468. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  469. throw new ServiceException(failureMsg.toString());
  470. }else{
  471. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
  472. }
  473. return successMsg.toString();
  474. }
  475. }