From 5f213087bd5aaf2be60b306402944f8e4c3636d1 Mon Sep 17 00:00:00 2001 From: cuijian <cuijian@xalxzn.com> Date: 星期二, 14 十一月 2023 13:49:39 +0800 Subject: [PATCH] 设备点检标准导入功能 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DailyInspectionStandardController.java | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 201 insertions(+), 15 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DailyInspectionStandardController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DailyInspectionStandardController.java index 1c26d74..f4115e5 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DailyInspectionStandardController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/DailyInspectionStandardController.java @@ -2,32 +2,39 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.modules.eam.entity.DailyInspectionStandard; -import org.jeecg.modules.eam.entity.DailyInspectionStandardDetail; -import org.jeecg.modules.eam.service.IDailyInspectionStandardDetailService; -import org.jeecg.modules.eam.service.IDailyInspectionStandardService; -import org.jeecg.modules.eam.service.IEamEquipmentService; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.ImportExcelUtil; +import org.jeecg.modules.eam.entity.*; +import org.jeecg.modules.eam.service.*; +import org.jeecg.modules.eam.vo.InspectionStandardImportVo; +import org.jeecgframework.poi.excel.entity.ImportParams; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; import java.math.BigDecimal; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @Description: mom_eam_inspection_project @@ -48,6 +55,15 @@ @Autowired private IDailyInspectionStandardDetailService dailyInspectionStandardDetailService; + + @Autowired + private IdentityService identityService; + + @Autowired + private IInspectionProjectService inspectionProjectService; + + @Autowired + private IInspectionCycleService inspectionCycleService; /** * 鍒嗛〉鍒楄〃鏌ヨ * @@ -94,8 +110,8 @@ */ @GetMapping("findInspectionStandardList") public Result<?> findInspectionStandardList(@RequestParam("pageNo") Integer pageNo, - @RequestParam("pageSize") Integer pageSize, - @RequestParam Map<String, Object> params) { + @RequestParam("pageSize") Integer pageSize, + @RequestParam Map<String, Object> params) { IPage<Map<String, Object>> inspectionStandardList = dailyInspectionStandardService.findInspectionStandardList(pageNo, pageSize, params); return Result.ok(inspectionStandardList); } @@ -240,8 +256,178 @@ * @return */ @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, DailyInspectionStandard.class); + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal(); + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + // 閿欒淇℃伅 + List<String> errorMessage = new ArrayList<>(); + int successLines = 0, errorLines = 0; + //a = 1寮�濮嬭鍙栫偣妫�椤圭洰锛沚 = 1寮�濮嬭鍙栧懆淇濆吇椤圭洰锛沜 = 1璇ヨ澶囧鍏ヤ俊鎭瓨鍦ㄩ敊璇紱projectColumnIndex鐐规椤圭洰鎵�鍦ㄥ垪锛沵aintenanceColumnIndex鍛ㄤ繚鍏婚」鐩墍鍦ㄥ垪 + int a = 0,b = 0,c = 0,projectColumnIndex = -1,maintenanceColumnIndex = 0; + String dailyInspectionStandardId = null; + String equipmentNum = null; + DailyInspectionStandard dailyInspectionStandard = new DailyInspectionStandard(); + List<DailyInspectionStandardDetail> dailyInspectionStandardDetailList = new ArrayList<>(); + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setNeedSave(true); + try { + InputStream fis = file.getInputStream(); + Workbook workbook = new XSSFWorkbook(fis); + int sheets = workbook.getNumberOfSheets(); + //鍒ゆ柇鐐规鍛ㄦ湡鏄惁瀛樺湪 + InspectionCycle dayInspectionCycle = inspectionCycleService.lambdaQuery().eq(InspectionCycle::getName,"1鏃�").eq(InspectionCycle::getVersionStatus,"2").one(); + InspectionCycle weekInspectionCycle = inspectionCycleService.lambdaQuery().eq(InspectionCycle::getName,"1鍛�").eq(InspectionCycle::getVersionStatus,"2").one(); + if(dayInspectionCycle == null || weekInspectionCycle == null){ + c = 1; + errorMessage.add("鐐规鍛ㄦ湡涓嶅瓨鍦紝璇峰厛缁存姢鐐规鍛ㄦ湡"); + errorLines++; + }else{ + for(int i = 0;i < sheets;i++){ + Sheet sheet = workbook.getSheetAt(i); + for (Row row : sheet) { + // 閬嶅巻姣忎竴涓崟鍏冩牸 + for (Cell cell : row) { + // 澶勭悊鍗曞厓鏍兼暟鎹紝渚嬪杈撳嚭鍗曞厓鏍肩殑鍊� + if("STRING".equals(cell.getCellType().toString())|| "BLANK".equals(cell.getCellType().toString())){ + //鐐规鍛ㄦ湡瀛樺湪锛屽垽鏂澶囩粺涓�缂栫爜鏄惁瀛樺湪 + if(cell.getStringCellValue().contains("璁惧鍚嶇О锛�")){ + String[] tybh1 = cell.getStringCellValue().split("缁熶竴缂栧彿锛�"); + String[] tybh2 = tybh1[1].split("骞�"); + equipmentNum = tybh2[0].trim().substring(0,tybh2[0].trim().length()-4).trim(); + /*String year = tybh2[0].trim().substring(tybh2[0].trim().length()-4,tybh2[0].trim().length()).trim(); + String[] month1 = tybh2[1].split("鏈�"); + String month = month1[0].trim(); + String[] unit1 = cell.getStringCellValue().split("鍗曚綅锛�"); + String unit = unit1[1].trim();*/ + Equipment equipment = equipmentService.lambdaQuery().eq(Equipment::getNum,equipmentNum).eq(Equipment::getDelFlag, CommonConstant.DEL_FLAG_0).one(); + if(equipment == null){ + c = 1; + errorMessage.add("sheet椤典负"+sheet.getSheetName()+"锛岃澶囩粺涓�缂栫爜涓�"+ equipmentNum + "鐨勬暟鎹鍏ュけ璐�,鍘熷洜:璁惧涓嶅瓨鍦紝璇峰厛缁存姢璁惧鍙拌处锛�"); + errorLines++; + }else { + List<DailyInspectionStandard> dailyInspectionStandardList = dailyInspectionStandardService.lambdaQuery().eq(DailyInspectionStandard::getEquipmentId,equipment.getId()) + .eq(DailyInspectionStandard::getVersionStatus,"2").eq(DailyInspectionStandard::getDelFlag,CommonConstant.DEL_FLAG_0).list(); + if(CollectionUtils.isNotEmpty(dailyInspectionStandardList)){ + c = 1; + errorMessage.add("sheet椤典负"+sheet.getSheetName()+"锛岃澶囩粺涓�缂栫爜涓�"+ equipmentNum + "鐨勬暟鎹鍏ュけ璐�,鍘熷洜:璇ヨ澶囧凡缁忓瓨鍦ㄧ偣妫�鏍囧噯锛�"); + errorLines++; + }else { + c = 0; + dailyInspectionStandard.setNum(identityService.getNumByTypeAndLength("DailylnspectionStandard",4)); + dailyInspectionStandard.setVersionStatus("2"); + dailyInspectionStandard.setVersion("1.0"); + dailyInspectionStandard.setAssignMode("1"); + dailyInspectionStandard.setEquipmentId(equipment.getId()); + //dailyInspectionStandardService.save(dailyInspectionStandard); + //dailyInspectionStandardId = dailyInspectionStandard.getId(); + } + } + break; + } + //璁惧缁熶竴缂栫爜瀛樺湪锛屽垽鏂偣妫�椤圭洰鏄惁瀛樺湪 + if(c == 0){ + System.out.print(cell.getStringCellValue() + "\t"); + if(cell.getStringCellValue().contains("鐐规椤圭洰")){ + a = 1; + projectColumnIndex = cell.getColumnIndex(); + break; + } + if(cell.getStringCellValue().contains("缁存姢璐d换浜虹瀛�")){ + a = 0; + } + if(projectColumnIndex == cell.getColumnIndex() && a == 1){ + DailyInspectionStandardDetail dailyInspectionStandardDetail = new DailyInspectionStandardDetail(); + dailyInspectionStandardDetail.setDailyInspectionStandardId(dailyInspectionStandardId); + String dayInspectionProjectName = row.getCell(projectColumnIndex).toString(); + String standard = row.getCell(projectColumnIndex+1).toString(); + //鏌ヨ鐐瑰嚮椤圭洰锛屽鏋滄病鏈夋柊澧炵偣妫�椤圭洰 + if(StringUtils.isNotBlank(dayInspectionProjectName)){ + List<InspectionProject> inspectionProjectList = inspectionProjectService.lambdaQuery().eq(InspectionProject::getName,dayInspectionProjectName).eq(InspectionProject::getDelFlag,CommonConstant.DEL_FLAG_0).list(); + if(CollectionUtils.isEmpty(inspectionProjectList)){ + InspectionProject inspectionProject = new InspectionProject(); + inspectionProject.setNum(identityService.getNumByTypeAndLength("InspectionProject",4)); + inspectionProject.setName(dayInspectionProjectName); + inspectionProject.setDetectionStandard(standard); + inspectionProjectService.save(inspectionProject); + dailyInspectionStandardDetail.setInspectionProjectId(inspectionProject.getId()); + dailyInspectionStandardDetail.setInspectionCycleId(dayInspectionCycle.getId()); + dailyInspectionStandardDetailList.add(dailyInspectionStandardDetail); +// c = 1; +// errorMessage.add("sheet椤典负"+sheet.getSheetName()+"锛岃澶囩粺涓�缂栫爜涓�"+ equipmentNum + "鐨勬暟鎹鍏ュけ璐�,鍘熷洜:鐐规椤圭洰涓嶅瓨鍦紝璇峰厛缁存姢鐐规椤圭洰锛�"); +// errorLines++; + }else { + dailyInspectionStandardDetail.setInspectionProjectId(inspectionProjectList.get(0).getId()); + dailyInspectionStandardDetail.setInspectionCycleId(dayInspectionCycle.getId()); + dailyInspectionStandardDetailList.add(dailyInspectionStandardDetail); + //dailyInspectionStandardDetailService.save(dailyInspectionStandardDetail); + } + } + break; + } + if(cell.getStringCellValue().contains("鍛ㄤ繚鍏婚」鐩�")){ + b = 1; + maintenanceColumnIndex = cell.getColumnIndex(); + break; + } + if(cell.getStringCellValue().contains("鍛ㄤ繚鍏绘搷浣滆�呮墽琛�")){ + b = 0; + dailyInspectionStandardService.save(dailyInspectionStandard); + for(DailyInspectionStandardDetail dailyInspectionStandardDetail : dailyInspectionStandardDetailList){ + dailyInspectionStandardDetail.setDailyInspectionStandardId(dailyInspectionStandard.getId()); + } + dailyInspectionStandardDetailService.saveBatch(dailyInspectionStandardDetailList); + successLines++; + dailyInspectionStandard = null; + dailyInspectionStandardDetailList.clear(); + } + if(b == 1 && c == 0 && maintenanceColumnIndex == cell.getColumnIndex()){ + DailyInspectionStandardDetail dailyInspectionStandardDetail = new DailyInspectionStandardDetail(); + dailyInspectionStandardDetail.setDailyInspectionStandardId(dailyInspectionStandardId); + String weekInspectionProjectName = row.getCell(maintenanceColumnIndex).toString(); + String inspectionStandardName = row.getCell(maintenanceColumnIndex+1).toString(); + if(StringUtils.isNotBlank(weekInspectionProjectName)){ + List<InspectionProject> inspectionProjectList = inspectionProjectService.lambdaQuery().eq(InspectionProject::getName,weekInspectionProjectName).eq(InspectionProject::getDelFlag,CommonConstant.DEL_FLAG_0).list(); + if(CollectionUtils.isEmpty(inspectionProjectList)){ + InspectionProject inspectionProject = new InspectionProject(); + inspectionProject.setNum(identityService.getNumByTypeAndLength("InspectionProject",4)); + inspectionProject.setName(weekInspectionProjectName); + inspectionProject.setDetectionStandard(inspectionStandardName); + inspectionProjectService.save(inspectionProject); + dailyInspectionStandardDetail.setInspectionProjectId(inspectionProject.getId()); + dailyInspectionStandardDetail.setInspectionCycleId(weekInspectionCycle.getId()); + dailyInspectionStandardDetailList.add(dailyInspectionStandardDetail); +// c = 1; +// errorMessage.add("sheet椤典负"+sheet.getSheetName()+"锛岃鏁颁负锛�"+row.getRowNum()+"锛岃澶囩粺涓�缂栫爜涓�"+ equipmentNum + "鐨勬暟鎹鍏ュけ璐�,鍘熷洜:鐐规椤圭洰涓嶅瓨鍦紝璇峰厛缁存姢鐐规椤圭洰锛�"); +// errorLines++; + }else { + + dailyInspectionStandardDetail.setInspectionProjectId(inspectionProjectList.get(0).getId()); + dailyInspectionStandardDetail.setInspectionCycleId(weekInspectionCycle.getId()); + dailyInspectionStandardDetailList.add(dailyInspectionStandardDetail); + //dailyInspectionStandardDetailService.save(dailyInspectionStandardDetail); + } + } + break; + } + } + }/*else if("NUMERIC".equals(cell.getCellType().toString())){ + System.out.print(cell.getNumericCellValue() + "\t"); + } +*/ + } + System.out.println(); + } + } + } + + } catch (IOException e) { + e.printStackTrace(); + } + } + return ImportExcelUtil.imporReturnRes(errorLines, successLines, errorMessage); } /** @@ -250,8 +436,8 @@ */ @GetMapping("getDepartByEquipment") public Result<?> getDepartByEquipment(@RequestParam("pageNo") Integer pageNo, - @RequestParam("pageSize") Integer pageSize, - @RequestParam Map<String, Object> params) { + @RequestParam("pageSize") Integer pageSize, + @RequestParam Map<String, Object> params) { IPage<Map<String, Object>> departByEquipment = dailyInspectionStandardService.getDepartByEquipment(pageNo, pageSize, params); return Result.ok(departByEquipment); } -- Gitblit v1.9.3