TSifOverviewController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. package com.cpms.project.process.controller;
  2. import com.alibaba.fastjson2.JSON;
  3. import com.cpms.common.annotation.Log;
  4. import com.cpms.common.core.controller.BaseController;
  5. import com.cpms.common.core.domain.AjaxResult;
  6. import com.cpms.common.core.page.TableDataInfo;
  7. import com.cpms.common.enums.BusinessType;
  8. import com.cpms.common.utils.StringUtils;
  9. import com.cpms.common.utils.file.ExcelUtils;
  10. import com.cpms.common.utils.poi.ExcelUtil;
  11. import com.cpms.project.process.domain.TSifOverview;
  12. import com.cpms.project.process.domain.TSifVo;
  13. import com.cpms.project.process.domain.TSisRecord;
  14. import com.cpms.project.process.service.ITSifOverviewService;
  15. import com.cpms.project.process.service.ITSisRecordService;
  16. import org.apache.poi.ss.usermodel.Cell;
  17. import org.apache.poi.ss.usermodel.Row;
  18. import org.apache.poi.ss.usermodel.Sheet;
  19. import org.apache.poi.ss.usermodel.Workbook;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.security.access.prepost.PreAuthorize;
  22. import org.springframework.web.bind.annotation.*;
  23. import org.springframework.web.multipart.MultipartFile;
  24. import javax.servlet.http.HttpServletResponse;
  25. import java.io.IOException;
  26. import java.util.ArrayList;
  27. import java.util.Date;
  28. import java.util.List;
  29. /**
  30. * SIF Overview ListController
  31. *
  32. * @author admin
  33. * @date 2024-05-22
  34. */
  35. @RestController
  36. @RequestMapping("/process/sifList")
  37. public class TSifOverviewController extends BaseController {
  38. @Autowired
  39. private ITSifOverviewService tSifOverviewService;
  40. @Autowired
  41. private ITSisRecordService tSisRecordService;
  42. /**
  43. * 查询SIF Overview List列表
  44. */
  45. @PreAuthorize("@ss.hasPermi('process:sifList:list')")
  46. @GetMapping("/list")
  47. public TableDataInfo list(TSifOverview tSifOverview) {
  48. startPage();
  49. List<TSifVo> list = tSifOverviewService.selectTSifOverviewList(tSifOverview);
  50. return getDataTable(list);
  51. }
  52. /**
  53. * 导出SIF Overview List列表
  54. */
  55. @PreAuthorize("@ss.hasPermi('process:sifList:export')")
  56. @Log(title = "SIF Overview List", businessType = BusinessType.EXPORT)
  57. @PostMapping("/export")
  58. public void export(HttpServletResponse response, TSifOverview tSifOverview) {
  59. List<TSifVo> list = tSifOverviewService.selectTSifOverviewList(tSifOverview);
  60. ExcelUtil<TSifVo> util = new ExcelUtil<TSifVo>(TSifVo.class);
  61. util.exportExcel(response, list, "SIF Overview List数据");
  62. }
  63. /**
  64. * 获取SIF Overview List详细信息
  65. */
  66. @PreAuthorize("@ss.hasPermi('process:sifList:query')")
  67. @GetMapping(value = "/{id}")
  68. public AjaxResult getInfo(@PathVariable("id") Long id) {
  69. TSifOverview tSifOverview = tSifOverviewService.selectTSifOverviewById(id);
  70. TSisRecord tSisRecord = new TSisRecord();
  71. tSisRecord.setSisId(id);
  72. tSifOverview.setRecordList(tSisRecordService.selectTSisRecordList(tSisRecord));
  73. return success(tSifOverview);
  74. }
  75. /**
  76. * 新增SIF Overview List
  77. */
  78. @PreAuthorize("@ss.hasPermi('process:sifList:add')")
  79. @Log(title = "SIF Overview List", businessType = BusinessType.INSERT)
  80. @PostMapping
  81. public AjaxResult add(@RequestBody TSifOverview tSifOverview) {
  82. tSifOverview.setCreaterCode(getUserId().toString());
  83. tSifOverview.setCreatedate(new Date());
  84. tSifOverviewService.insertTSifOverview(tSifOverview);
  85. for (TSisRecord tSisRecord : tSifOverview.getRecordList()) {
  86. tSisRecord.setSisId(tSifOverview.getId());
  87. tSisRecord.setCreaterCode(getUserId().toString());
  88. tSisRecord.setCreatedate(new Date());
  89. tSisRecordService.insertTSisRecord(tSisRecord);
  90. }
  91. return success();
  92. }
  93. /**
  94. * 修改SIF Overview List
  95. */
  96. @PreAuthorize("@ss.hasPermi('process:sifList:edit')")
  97. @Log(title = "SIF Overview List", businessType = BusinessType.UPDATE)
  98. @PutMapping
  99. public AjaxResult edit(@RequestBody TSifOverview tSifOverview) {
  100. tSifOverview.setUpdaterCode(getUserId().toString());
  101. tSifOverview.setUpdatedate(new Date());
  102. for (TSisRecord tSisRecord : tSifOverview.getRecordList()) {
  103. if (tSisRecord.getId() != null) {
  104. tSisRecordService.updateTSisRecord(tSisRecord);
  105. } else {
  106. tSisRecord.setSisId(tSifOverview.getId());
  107. tSisRecord.setCreaterCode(getUserId().toString());
  108. tSisRecord.setCreatedate(new Date());
  109. tSisRecordService.insertTSisRecord(tSisRecord);
  110. }
  111. }
  112. return toAjax(tSifOverviewService.updateTSifOverview(tSifOverview));
  113. }
  114. /**
  115. * 删除SIF Overview List
  116. */
  117. @PreAuthorize("@ss.hasPermi('process:sifList:remove')")
  118. @Log(title = "SIF Overview List", businessType = BusinessType.DELETE)
  119. @DeleteMapping("/{ids}")
  120. public AjaxResult remove(@PathVariable Long[] ids) {
  121. return toAjax(tSifOverviewService.deleteTSifOverviewByIds(ids));
  122. }
  123. @Log(title = "SIF Overview List批量导入", businessType = BusinessType.INSERT)
  124. @PostMapping("/importData")
  125. public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException {
  126. //获取操作人员ID
  127. Long userId = getUserId();
  128. //报错行数统计
  129. List<Integer> failRow = new ArrayList<>();
  130. Workbook workbook = ExcelUtils.getWorkBook(file);
  131. Sheet sheet = workbook.getSheetAt(0);
  132. List<TSifOverview> list = new ArrayList<>();
  133. int rowNum = sheet.getPhysicalNumberOfRows();
  134. int failNumber = 0;
  135. List<TSisRecord> records = null;
  136. for (int i = 1; i < rowNum; i++) {
  137. try {
  138. logger.info("读取行数:" + i);
  139. Row row = sheet.getRow(i);
  140. int cellNum = row.getLastCellNum();
  141. TSifOverview entity = new TSifOverview();
  142. TSisRecord record = new TSisRecord();
  143. boolean flag = false;
  144. for (int j = 0; j < cellNum; j++) {
  145. Cell cell = row.getCell(j);
  146. if (cell == null) {
  147. continue;
  148. }
  149. String cellValue = ExcelUtils.getCellValue(cell);
  150. logger.info("cellValue:" + cellValue);
  151. switch (j) {
  152. case 0:
  153. entity.setSifNo(cellValue);
  154. if (StringUtils.isNotEmpty(cellValue)) {
  155. records = new ArrayList<>();
  156. flag = true;
  157. }
  158. if (StringUtils.isEmpty(cellValue)){
  159. flag = false;
  160. }
  161. break;
  162. case 1:
  163. entity.setPlant(cellValue);
  164. break;
  165. case 2:
  166. entity.setSifTag(cellValue);
  167. break;
  168. case 3:
  169. entity.setDeviation(cellValue);
  170. break;
  171. case 4:
  172. entity.setRiskAnalysis(cellValue);
  173. break;
  174. case 5:
  175. entity.setCauseConsequence(cellValue);
  176. break;
  177. case 6:
  178. entity.setRequiredSil(cellValue);
  179. break;
  180. case 7:
  181. entity.setAcheievedSil(cellValue);
  182. break;
  183. case 8:
  184. entity.setPfdavg(cellValue);
  185. break;
  186. case 9:
  187. record.setSensorTag(cellValue);
  188. break;
  189. case 10:
  190. record.setType(cellValue);
  191. break;
  192. case 11:
  193. record.setService(cellValue);
  194. break;
  195. case 12:
  196. record.setVotingQ(cellValue);
  197. break;
  198. case 13:
  199. record.setCondition(cellValue);
  200. break;
  201. case 14:
  202. record.setMainPti(cellValue);
  203. break;
  204. case 15:
  205. record.setFinalElementTag(cellValue);
  206. break;
  207. case 16:
  208. record.setVotingH(cellValue);
  209. break;
  210. case 17:
  211. record.setAciton(cellValue);
  212. break;
  213. case 18:
  214. entity.setRemarks(cellValue);
  215. break;
  216. case 19:
  217. entity.setVer(cellValue);
  218. break;
  219. case 20:
  220. record.setFilter(cellValue);
  221. break;
  222. }
  223. }
  224. if (records != null) {
  225. records.add(record);
  226. }
  227. if (!flag){
  228. entity = list.get(list.size()-1);
  229. entity.setRecordList(records);
  230. list.remove(list.size()-1);
  231. list.add(entity);
  232. }else {
  233. entity.setRecordList(records);
  234. entity.setCreaterCode(String.valueOf(userId));
  235. logger.info("entity:" + entity);
  236. list.add(entity);
  237. }
  238. } catch (Exception e) {
  239. failNumber++;
  240. logger.info("e:" + JSON.toJSONString(e));
  241. failRow.add(i + 1);
  242. }
  243. }
  244. int successNumber = 0;
  245. int failNum = 0;
  246. for (TSifOverview t : list
  247. ) {
  248. failNum++;
  249. try {
  250. //根据使用证、注册编号、位号,进行数据更新
  251. add(t);
  252. successNumber++;
  253. } catch (Exception e) {
  254. failNumber++;
  255. logger.info("e:" + e);
  256. failRow.add(failNum + 1);
  257. }
  258. }
  259. logger.info("list:" + JSON.toJSONString(list));
  260. logger.info("successNumber:" + successNumber);
  261. logger.info("failNumber:" + failNumber);
  262. logger.info("failRow:" + failRow);
  263. return AjaxResult.success(String.valueOf(successNumber), failRow);
  264. }
  265. }