From 059c6a5058295cd93741cf04c0a52a4a53e2c284 Mon Sep 17 00:00:00 2001 From: cuijian <cuijian@xalxzn.com> Date: 星期一, 30 十月 2023 18:29:28 +0800 Subject: [PATCH] 操作证导入功能,创建工种表 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java | 176 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 139 insertions(+), 37 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java index a7628da..8b4c619 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/OperationCertificateController.java @@ -3,6 +3,7 @@ import java.io.UnsupportedEncodingException; import java.io.IOException; import java.net.URLDecoder; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -10,9 +11,20 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.util.DateUtils; -import org.jeecg.modules.eam.entity.OperationCertificateApplyDetail; -import org.jeecg.modules.eam.service.IdentityService; +import org.jeecg.common.util.ImportExcelUtil; +import org.jeecg.modules.eam.entity.*; +import org.jeecg.modules.eam.service.*; +import org.jeecg.modules.eam.vo.OperationCertificateImportVo; +import org.jeecg.modules.system.entity.SysDict; +import org.jeecg.modules.system.entity.SysDictItem; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysDictItemService; +import org.jeecg.modules.system.service.ISysDictService; +import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.service.SysIdentityService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; @@ -24,11 +36,7 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.eam.entity.OperationCertificateDetail; -import org.jeecg.modules.eam.entity.OperationCertificate; import org.jeecg.modules.eam.vo.OperationCertificatePage; -import org.jeecg.modules.eam.service.IOperationCertificateService; -import org.jeecg.modules.eam.service.IOperationCertificateDetailService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -62,6 +70,16 @@ @Autowired private IdentityService identityService; + @Autowired + private ISysUserService userService; + @Autowired + private IEamEquipmentService equipmentService; + @Autowired + private IProfessionService professionService; + @Autowired + private ISysDictService sysDictService; + @Autowired + private ISysDictItemService sysDictItemService; /** * 鍒嗛〉鍒楄〃鏌ヨ @@ -259,37 +277,121 @@ */ //@RequiresPermissions("org.jeecg.modules.mdc:mom_eam_operation_certificate:importExcel") @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); - for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - // 鑾峰彇涓婁紶鏂囦欢瀵硅薄 - MultipartFile file = entity.getValue(); - ImportParams params = new ImportParams(); - params.setTitleRows(2); - params.setHeadRows(1); - params.setNeedSave(true); - try { - List<OperationCertificatePage> list = ExcelImportUtil.importExcel(file.getInputStream(), OperationCertificatePage.class, params); - for (OperationCertificatePage page : list) { - OperationCertificate po = new OperationCertificate(); - BeanUtils.copyProperties(page, po); - operationCertificateService.saveMain(po, page.getOperationCertificateDetailList()); - } - return Result.OK("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁�:" + list.size()); - } catch (Exception e) { - log.error(e.getMessage(),e); - return Result.error("鏂囦欢瀵煎叆澶辫触:"+e.getMessage()); - } finally { - try { - file.getInputStream().close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - return Result.OK("鏂囦欢瀵煎叆澶辫触锛�"); - } + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + // 閿欒淇℃伅 + List<String> errorMessage = new ArrayList<>(); + int successLines = 0, errorLines = 0,totalLines = 0,partSuccessLines = 0; + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { + // 鑾峰彇涓婁紶鏂囦欢瀵硅薄 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setNeedSave(true); + try { + List<OperationCertificateImportVo> list = ExcelImportUtil.importExcel(file.getInputStream(), OperationCertificateImportVo.class, params); + totalLines = list.size(); + for (int i = 0; i < list.size(); i++) { + OperationCertificateImportVo operationCertificateImportVo = list.get(i); + OperationCertificate operationCertificate = new OperationCertificate(); + operationCertificate.setNum(identityService.getNumByTypeAndLength("OperationCertificate",4)); + //鏍规嵁浜哄憳濮撳悕鏌ヨ浜哄憳id + List<SysUser> userList = userService.lambdaQuery().eq(SysUser::getRealname,operationCertificateImportVo.getName().trim()) + .eq(SysUser::getWorkNo,operationCertificateImportVo.getWorkNo().trim()).eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0).list(); + if(CollectionUtils.isEmpty(userList)){ + errorMessage.add("绗�" + (i + 1) + "琛屽鍏ュけ璐�,鍘熷洜:浜哄憳涓嶅瓨鍦ㄦ垨宸ヤ綔璇佸彿涓庝汉鍛樺鍚嶄笉鍖归厤,璇峰厛缁存姢浜哄憳淇℃伅;"); + errorLines++; + continue; + }else{ + operationCertificate.setUserId(userList.get(0).getUsername()); + } + //宸ョ鏌ヨ + Profession profession = professionService.lambdaQuery().eq(Profession::getName,operationCertificateImportVo.getProfession().trim()).eq(Profession::getDelFlag,CommonConstant.DEL_FLAG_0).one(); + if(profession == null){ + Profession profession1 = new Profession(); + profession1.setNum(identityService.getNumByTypeAndLength("Profession",4)); + profession1.setName(operationCertificateImportVo.getProfession().trim()); + professionService.save(profession1); + operationCertificate.setProfession(profession1.getId()); + }else { + operationCertificate.setProfession(profession.getId()); + } + //鎶�鑳界瓑绾у垽鏂� + if(CollectionUtils.isEmpty(sysDictItemService.lambdaQuery().eq(SysDictItem::getDictId,sysDictService.lambdaQuery().eq(SysDict::getDictCode,"technical_level").one().getId()).eq(SysDictItem::getItemText,operationCertificateImportVo.getTechnicalLevel().trim()).list())){ + errorMessage.add("绗�" + (i + 1) + "琛屽鍏ュけ璐�,鍘熷洜:鎶�鑳界瓑绾т笉瀛樺湪,璇峰厛缁存姢鎶�鑳界瓑绾�;"); + errorLines++; + continue; + }else{ + operationCertificate.setTechnicalLevel(sysDictItemService.lambdaQuery().eq(SysDictItem::getDictId,sysDictService.lambdaQuery().eq(SysDict::getDictCode,"technical_level").one().getId()).eq(SysDictItem::getItemText,operationCertificateImportVo.getTechnicalLevel().trim()).one().getItemValue()); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + operationCertificate.setIssueDate(operationCertificateImportVo.getIssueDate()); + operationCertificate.setStartTime(operationCertificateImportVo.getIssueDate()); + Date currentDate = operationCertificateImportVo.getIssueDate(); + Calendar c = Calendar.getInstance(); + c.setTime(currentDate); + c.add(Calendar.YEAR, 1); + currentDate = c.getTime(); + operationCertificate.setEndTime(currentDate); + operationCertificate.setCurrentCycleScore(12); + operationCertificate.setRemark(operationCertificateImportVo.getRemark()); + List<String> equipments = Arrays.asList(operationCertificateImportVo.getEquipmentNum().split("/")); + List<String> equipmentIds = new ArrayList<>(); + int a = 0; + for(int j = 0; j<equipments.size();j++){ + List<Equipment> equipmentList = equipmentService.lambdaQuery().eq(Equipment::getNum,equipments.get(j)).eq(Equipment::getDelFlag,CommonConstant.DEL_FLAG_0).list(); + if(CollectionUtils.isNotEmpty(equipmentList)){ + equipmentIds.add(equipmentList.get(0).getId()); + }else { + errorMessage.add("绗�" + (i + 1) + "琛岀粺涓�缂栧彿涓�"+equipments.get(j)+"鐨勮澶囧鍏ュけ璐�,鍘熷洜:璁惧鍙拌处涓笉瀛樺湪璇ヨ澶�,璇峰厛缁存姢璁惧淇℃伅;"); + a++; + continue; + } + } + if(a == equipments.size()){ + errorLines++; + a = 0; + continue; + }else if(a > 0 && a < equipments.size()){ + partSuccessLines++; + a = 0; + } + if(CollectionUtils.isEmpty(equipmentIds)){ + errorMessage.add("绗�" + (i + 1) + "琛屽鍏ュけ璐�,鍘熷洜:璁惧涓嶅瓨鍦�,璇峰厛缁存姢璁惧淇℃伅;"); + errorLines++; + continue; + }else{ + operationCertificate.setEquipmentIds(equipmentIds.stream().map(String::toString).collect(Collectors.joining(","))); + } + operationCertificate.setStatus("1"); + //鏌ヨ褰撳墠浜哄憳鏄惁宸叉湁鎿嶄綔璇� + List<OperationCertificate> operationCertificateList = operationCertificateService.lambdaQuery().eq(OperationCertificate::getUserId,userList.get(0).getUsername()).eq(OperationCertificate::getDelFlag,CommonConstant.DEL_FLAG_0).list(); + if(CollectionUtils.isEmpty(operationCertificateList)){ + operationCertificateService.save(operationCertificate); + }else { + //灏嗚澶囧鍔犲埌鎿嶄綔璇� + String newEquipmentIds = operationCertificateList.get(0).getEquipmentIds().concat(",").concat(operationCertificate.getEquipmentIds()); + operationCertificate.setId(operationCertificateList.get(0).getId()); + HashSet<String> set = new HashSet<String>(Arrays.asList(newEquipmentIds.split(","))); + operationCertificate.setEquipmentIds(set.stream().collect(Collectors.joining(","))); + operationCertificateService.updateById(operationCertificate); + } + successLines++; + } + } catch (Exception e) { + errorMessage.add("鍙戠敓寮傚父锛�" + e.getMessage()); + log.error(e.getMessage(), e); + return (Result<?>) errorMessage; + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + log.error(e.getMessage(), e); + } + } + } + return ImportExcelUtil.imporReturnOperationCertificate(totalLines,partSuccessLines,errorLines, successLines, errorMessage); + } /** * 閫氳繃涓昏〃ID鏌ヨ * @return -- Gitblit v1.9.3