package com.ruoyi.project.ehs.controller; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.alibaba.fastjson.JSON; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.file.ExcelUtils; import com.ruoyi.project.plant.domain.TStaffmgr; import com.ruoyi.project.plant.service.ITStaffmgrService; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysDictData; import com.ruoyi.project.system.service.ISysDeptService; import com.ruoyi.project.system.service.ISysDictTypeService; import org.apache.poi.ss.usermodel.*; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.project.ehs.domain.TMsds; import com.ruoyi.project.ehs.service.ITMsdsService; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.web.page.TableDataInfo; import org.springframework.web.multipart.MultipartFile; /** * MSDS管理Controller * * @author ruoyi * @date 2020-12-09 */ @RestController @RequestMapping("/ehs/msds") public class TMsdsController extends BaseController { @Autowired private ITMsdsService tMsdsService; @Autowired private ISysDictTypeService iSysDictTypeService; @Autowired private ISysDeptService iSysDeptService; @Autowired private ITStaffmgrService tStaffmgrService; /** * 查询MSDS管理列表 */ @PreAuthorize("@ss.hasPermi('ehs:msds:list')") @GetMapping("/list") public TableDataInfo list(TMsds tMsds) { startPage(); List list = tMsdsService.selectTMsdsList(tMsds); return getDataTable(list); } /** * 导出MSDS管理列表 */ @PreAuthorize("@ss.hasPermi('ehs:msds:export')") @Log(title = "MSDS管理", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(TMsds tMsds) { List list = tMsdsService.selectTMsdsList(tMsds); ExcelUtil util = new ExcelUtil(TMsds.class); return util.exportExcel(list, "msds"); } /** * 获取MSDS管理详细信息 */ @PreAuthorize("@ss.hasPermi('ehs:msds:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(tMsdsService.selectTMsdsById(id)); } /** * 新增MSDS管理 */ @PreAuthorize("@ss.hasPermi('ehs:msds:add')") @Log(title = "MSDS管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody TMsds tMsds) { tMsds.setCreaterCode(getUserId().toString()); return toAjax(tMsdsService.insertTMsds(tMsds)); } /** * 修改MSDS管理 */ @PreAuthorize("@ss.hasPermi('ehs:msds:edit')") @Log(title = "MSDS管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody TMsds tMsds) { tMsds.setUpdaterCode(getUserId().toString()); tMsds.setUpdatedate(new Date()); return toAjax(tMsdsService.updateTMsds(tMsds)); } /** * 删除MSDS管理 */ @PreAuthorize("@ss.hasPermi('ehs:msds:remove')") @Log(title = "MSDS管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(tMsdsService.deleteTMsdsByIds(ids)); } /** * 批量导入MSDS管理 */ @PreAuthorize("@ss.hasPermi('ehs:msds:add')") @Log(title = "MSDS管理", businessType = BusinessType.INSERT) @PostMapping("/importData") public AjaxResult importData(@RequestParam("file") MultipartFile file) throws IOException { //获取操作人员ID Long userId = getUserId(); //报错行数统计 List failRow =new ArrayList(); Workbook workbook = ExcelUtils.getWorkBook(file); Sheet sheet = workbook.getSheetAt(0); List list = new ArrayList(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //字典查询 List plant = iSysDictTypeService.selectDictDataByType("PLANT_DIVIDE"); List productCategory = iSysDictTypeService.selectDictDataByType("PRODUCT_CATEGORY"); List hazardPhrases = iSysDictTypeService.selectDictDataByType("HAZARD_PHRASES"); List cmr = iSysDictTypeService.selectDictDataByType("CMR"); List ghsPictogram = iSysDictTypeService.selectDictDataByType("GHS_PICTOGRAM"); List workArea = iSysDictTypeService.selectDictDataByType("WORK_AREA"); List reviewState = iSysDictTypeService.selectDictDataByType("REVIEW_STATE"); //部门查询 List dept = iSysDeptService.selectDeptList(new SysDept()); //人员查询 List staffmgrs = tStaffmgrService.selectTStaffmgrList(new TStaffmgr()); int rowNum = sheet.getPhysicalNumberOfRows(); int failNumber = 0; for (int i = 1; i < rowNum; i++) { try { logger.info("读取行数:" + i); Row row = sheet.getRow(i); int cellNum = row.getPhysicalNumberOfCells(); TMsds entity = new TMsds(); for (int j = 0; j < cellNum; j++) { Cell cell = row.getCell(j); cell.setCellType(CellType.STRING); String cellValue = ExcelUtils.getCellValue(cell); logger.info("cellValue:" + cellValue); if (j == 0) { entity.setItem(Long.parseLong(cellValue));//ITEM } else if (j == 1) { for (SysDictData p : productCategory) { if (p.getDictLabel().equals(cellValue.trim())) { entity.setProductcategory(p.getDictValue());//产品类别 } } } else if (j == 2) { entity.setEnName(cellValue);//英文名称 } else if (j == 3) { entity.setCnName(cellValue);//中文名称 } else if (j == 4) { entity.setCasNo(cellValue);//CAS号 } else if (j == 5) { if (!cellValue.equals("")) { String[] hazard = cellValue.split(","); String hazardNo = ""; int m = 0; for (String h : hazard) { for (SysDictData p : hazardPhrases) { if (p.getDictLabel().equals(h)) { if (m == 0) { hazardNo = p.getDictValue(); }else { hazardNo = hazardNo + "," + p.getDictValue(); } } } m++; } entity.setHazardPhrases(hazardNo);//危险警句 } } else if (j == 6) { if (!cellValue.equals("")) { String[] cmrSplit = cellValue.split(","); String cmrdNo = ""; int m = 0; for (String choose : cmrSplit) { for (SysDictData c : cmr) { if (c.getDictLabel().equals(choose)) { if (m == 0) { cmrdNo = c.getDictValue(); }else { cmrdNo = cmrdNo + "," + c.getDictValue(); } } } m++; } entity.setCmr(cmrdNo);//是否三致物 } } else if (j == 7) { if (!cellValue.equals("")) { String[] ghs = cellValue.split(","); String ghsNo = ""; int m = 0; for (String choose : ghs) { for (SysDictData p : ghsPictogram) { if (p.getDictLabel().equals(choose)) { if (m == 0) { ghsNo = p.getDictValue(); }else { ghsNo = ghsNo + "," + p.getDictValue(); } } } m++; } entity.setGhsPictogram(ghsNo);//GHS符号 } } else if (j == 8) { entity.setHoldup(cellValue);//保存量 } else if (j == 9) { if (!cellValue.equals("")) { String[] area = cellValue.split(","); String areaNo = ""; int m = 0; for (String choose : area) { for (SysDictData w : workArea) { if (w.getDictLabel().equals(choose)) { if (m == 0) { areaNo = w.getDictValue(); }else { areaNo = areaNo + "," + w.getDictValue(); } } } m++; } entity.setWorkArea(areaNo);//工作区域 } } else if (j == 10) { entity.setForm(cellValue);//形态 } else if (j == 11) { entity.setExplosionLimit(cellValue);//爆炸极限 } else if (j == 12) { entity.setMeltingPoint(cellValue);//熔点 } else if (j == 13) { entity.setBoilingPoint(cellValue);//沸点 } else if (j == 14) { entity.setDensity(cellValue);//密度/分子量 } else if (j == 15) { entity.setPurity(cellValue);//组成及纯度 } else if (j == 16) { entity.setResponsibleCompany(cellValue);//归属单位 } else if (j == 17) { if (cellValue.length() > 3) { entity.setIssueTime(new SimpleDateFormat(DateUtils.getDateFormat(cellValue)).parse(cellValue));//出版日期 } } else if (j == 18) { entity.setVersion(cellValue);//版次 } else if (j == 20) { for (TStaffmgr s : staffmgrs) { if (s.getStaffid().equals(cellValue.trim())) { entity.setReviewer(s.getStaffid());//回顾人 } } } else if (j == 21) { if (cellValue.length() > 3) { entity.setReviewdate(new SimpleDateFormat(DateUtils.getDateFormat(cellValue)).parse(cellValue));//回顾日期 } } else if (j == 22) { for (SysDictData r : reviewState) { if (r.getDictLabel().equals(cellValue.trim())) { entity.setReviewState(r.getDictValue());//回顾状态 } } } else if (j == 23) { if (cellValue.length() > 3) { entity.setNextReviewdate(new SimpleDateFormat(DateUtils.getDateFormat(cellValue)).parse(cellValue));//下次回顾日期 } } else if (j == 24) { entity.setRemarks(cellValue);//备注 } else if (j == 25) { for (SysDept d : dept) { if (d.getDeptName().equals(cellValue.trim())) { entity.setDeptId(d.getDeptId());//部门编号 } } } } entity.setCreaterCode(userId.toString()); logger.info("entity:" + entity); list.add(entity); }catch (Exception e){ failNumber++; failRow.add(i+1); } } int successNumber = 0; int failNum = 0; for (TMsds t : list ) { failNum++; try { tMsdsService.insertTMsds(t); successNumber++; }catch (Exception e){ failNumber++; failRow.add(failNum+1); } } logger.info("list:" + JSON.toJSONString(list)); logger.info("successNumber:" +String.valueOf(successNumber)); logger.info("failNumber:" +String.valueOf(failNumber)); logger.info("failRow:" +String.valueOf(failRow)); return AjaxResult.success(String.valueOf(successNumber), failRow); } }