From cf9a5039e6db9d1d5963e3fe1a37d00169ec2ef7 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期三, 25 六月 2025 11:18:22 +0800 Subject: [PATCH] 验收报告修改 --- src/main/java/com/whyc/service/ECRService.java | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 219 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/whyc/service/ECRService.java b/src/main/java/com/whyc/service/ECRService.java index 8f3ff1b..8326d96 100644 --- a/src/main/java/com/whyc/service/ECRService.java +++ b/src/main/java/com/whyc/service/ECRService.java @@ -1,11 +1,19 @@ package com.whyc.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.whyc.dto.FileDirPath; import com.whyc.dto.Response; import com.whyc.mapper.ECRMapper; import com.whyc.pojo.ECR; import com.whyc.util.CommonUtil; import com.whyc.util.DateUtil; +import com.whyc.util.ExcelUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; @@ -15,10 +23,12 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; +import java.util.Calendar; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -45,7 +55,6 @@ } String excelFilePath = excelDir + File.separator + originalFilename.substring(0,originalFilename.lastIndexOf(".")) + "_" + dateUnion +originalFilename.substring(originalFilename.lastIndexOf(".")); String excelHttpUrl = excelFilePath.substring(excelDir.lastIndexOf("doc_file"+ File.separator + "ecr")); - multipartFile.transferTo(new File(excelFilePath)); Workbook workbook = null; workbook = WorkbookFactory.create(inputStream); @@ -54,41 +63,93 @@ Sheet sheet = workbook.getSheetAt(0); List<ECR> ecrList = new LinkedList<>(); ECR ecr = new ECR(); - String numberCellValue = sheet.getRow(1).getCell(5).getStringCellValue(); - String number = numberCellValue.substring(numberCellValue.indexOf("BG")); + Cell numberCell = sheet.getRow(1).getCell(5); + if(numberCell == null || !numberCell.getStringCellValue().contains("ECR缂栧彿")){ + return new Response().set(1,false,"ECR缂栧彿涓嶈兘涓虹┖鎴栧崟鍏冩牸鏍煎紡涓嶈鑼�!"); + } + String numberCellValue = numberCell.getStringCellValue(); + String number = numberCellValue.substring(6).trim(); + if(number.equals("")){ + return new Response().set(1,false,"ECR缂栧彿涓嶈兘涓虹┖!"); + } - String codeCellValue = sheet.getRow(2).getCell(0).getStringCellValue(); + Cell codeCell = sheet.getRow(2).getCell(0); + if(codeCell == null || !codeCell.getStringCellValue().contains("鍙樻洿鏂欏彿")){ + return new Response().set(1,false,"鍙樻洿鏂欏彿涓嶈兘涓虹┖鎴栧崟鍏冩牸鏍煎紡涓嶈鑼�!"); + } + String codeCellValue = codeCell.getStringCellValue(); //鍙樻洿鏂欏彿:xxx String codeStr = codeCellValue.substring(5).trim(); String[] codeSplit; - if(codeStr == null || codeStr.equals("")){ + if(codeStr.equals("")){ return new Response().set(1,false,"鍙樻洿鏂欏彿涓嶈兘涓虹┖!"); }else{ codeSplit = codeStr.split("/"); } - String modelCellValue = sheet.getRow(2).getCell(5).getStringCellValue(); + Cell modelCell = sheet.getRow(2).getCell(5); + if(modelCell == null || !modelCell.getStringCellValue().contains("鍙樻洿鍚嶇О/鍨嬪彿")){ + return new Response().set(1,false,"鍙樻洿鍨嬪彿涓嶈兘涓虹┖鎴栧崟鍏冩牸鏍煎紡涓嶈鑼�!"); + } + String modelCellValue = modelCell.getStringCellValue(); //鍙樻洿鍚嶇О/鍨嬪彿锛歺xx String modelStr = modelCellValue.substring(8).trim(); String[] modelSplit; - if(modelStr == null || modelStr.equals("")){ + if(modelStr.equals("")){ return new Response().set(1,false,"鍙樻洿鍨嬪彿涓嶈兘涓虹┖!"); }else{ modelSplit = modelStr.split("/"); } - String proposeDateCellValue = sheet.getRow(2).getCell(14).getStringCellValue(); + Cell proposeDateCell = sheet.getRow(2).getCell(14); + if(proposeDateCell == null || !proposeDateCell.getStringCellValue().contains("鐢宠鏃ユ湡")){ + return new Response().set(1,false,"鐢宠鏃ユ湡涓嶈兘涓虹┖鎴栧崟鍏冩牸鏍煎紡涓嶈鑼�!"); + } + String proposeDateCellValue = proposeDateCell.getStringCellValue(); //鐢宠鏃ユ湡锛歺xx String proposeDateStr = proposeDateCellValue.substring(5).trim(); - Date proposeDate = DateUtil.YYYY_MM_DD_UNION.parse(proposeDateStr); - - String proposerCellValue = sheet.getRow(2).getCell(22).getStringCellValue(); + if(proposeDateStr.equals("")){ + return new Response().set(1,false,"鐢宠鏃ユ湡涓嶈兘涓虹┖!"); + } + Date proposeDate; + try { + if(proposeDateStr.contains(".")){ + proposeDate = DateUtil.YYYY_MM_DD_UNION2.parse(proposeDateStr); + }else if(proposeDateStr.contains("-")){ + proposeDate = DateUtil.YYYY_MM_DD_UNION3.parse(proposeDateStr); + }else if(proposeDateStr.contains("/")){ + proposeDate = DateUtil.YYYY_MM_DD_UNION4.parse(proposeDateStr); + }else { + proposeDate = DateUtil.YYYY_MM_DD_UNION.parse(proposeDateStr); + } + }catch (ParseException e){ + return new Response().set(1,false,"鐢宠鏃ユ湡鏍煎紡閿欒!"); + } + Cell proposerCell = sheet.getRow(2).getCell(22); + if(proposerCell == null || !proposerCell.getStringCellValue().contains("鐢宠浜�")){ + return new Response().set(1,false,"鐢宠浜轰笉鑳戒负绌烘垨鍗曞厓鏍兼牸寮忎笉瑙勮寖!"); + } + String proposerCellValue = proposerCell.getStringCellValue(); //鐢宠浜猴細xxx String proposer = proposerCellValue.substring(4).trim(); + if(proposer.equals("")){ + return new Response().set(1,false,"鐢宠浜轰笉鑳戒负绌�!"); + } - String parentModel = sheet.getRow(3).getCell(0).getStringCellValue().substring(10).trim(); + Cell parentModelCell = sheet.getRow(3).getCell(0); + if(parentModelCell == null || !parentModelCell.getStringCellValue().contains("鍙樻洿鎵�灞炴満鍨�/绯诲垪")){ + return new Response().set(1,false,"鐗╂枡鎵�灞炲瀷鍙蜂笉鑳戒负绌烘垨鍗曞厓鏍兼牸寮忎笉瑙勮寖!"); + } + String parentModel = parentModelCell.getStringCellValue().substring(10).trim(); + if(parentModel.equals("")){ + return new Response().set(1,false,"鐗╂枡鎵�灞炲瀷鍙蜂笉鑳戒负绌�!"); + } - String changeDescriptionCellValue = sheet.getRow(4).getCell(0).getStringCellValue(); + Cell changeDescriptionCell = sheet.getRow(4).getCell(0); + if(changeDescriptionCell == null || changeDescriptionCell.getStringCellValue().trim().equals("")){ + return new Response().set(1,false,"鍙樻洿鎻忚堪涓嶈兘涓虹┖!"); + } + String changeDescriptionCellValue = changeDescriptionCell.getStringCellValue(); //鐢宠鍙樻洿褰掔被:index浠�16-22,琚�変腑鐨勬爣璇嗕负鈻燚.鍝佽川鏀瑰杽 StringBuilder changeTypeBuilder = new StringBuilder(); @@ -160,6 +221,11 @@ if(solutionCellValue.contains("鈻�")){ String solutionStr = solutionCellValue.split("鈻�")[1]; solution = solutionStr.split("\\.")[1]; + if(solution.contains("鈻�")){ + solution = solution.split("鈻�")[0]; + } + }else{ + return new Response().set(1,false,"澶勭悊鏂瑰紡蹇呴』閫変腑涓�椤�!"); } //鍏堝皢鍏卞悓灞炴�ц祴鍊肩粰鍩虹瀵硅薄 @@ -171,6 +237,11 @@ ecr.setCreateTime(date); ecr.setExcelFile(excelHttpUrl); ecr.setParentModel(parentModel); + + //鏍¢獙鏂欏彿鍜屽瀷鍙峰繀椤绘暟閲忎竴鑷� + if(codeSplit.length!=modelSplit.length){ + return new Response().set(1,false,"鍙樻洿鏂欏彿涓庡瀷鍙峰搴旀暟閲忎笉涓�鑷�!"); + } //璧嬪�肩粰鍏蜂綋瀵硅薄 for (int i = 0; i < codeSplit.length; i++) { ECR ecrTemp = new ECR(); @@ -179,8 +250,143 @@ ecrTemp.setSubModel(modelSplit[i]); ecrList.add(ecrTemp); } + //鎻愪氦涔嬪墠鍏堟牎楠屾祦姘村彿鏄惁瀛樺湪 + QueryWrapper<ECR> query = Wrappers.query(); + query.eq("number",ecrList.get(0).getNumber()).last(" limit 1"); + ECR ecrNumberObj = mapper.selectOne(query); + if(ecrNumberObj!= null) { + return new Response().set(1,false,"ecr缂栧彿宸插瓨鍦�"); + } + //瀛樺偍鎿嶄綔鎵ц + multipartFile.transferTo(new File(excelFilePath)); mapper.insertBatchSomeColumn(ecrList); return new Response().set(1,true,"瀵煎叆瀹屾垚"); } + + public Response ecrImport(ECR ecr) { + List<ECR> ecrList = new LinkedList<>(); + String subCode = ecr.getSubCode(); + String subModel = ecr.getSubModel(); + + //鏍¢獙鏂欏彿鍜屽瀷鍙蜂笉鑳戒负绌� + if(subCode == null ||subCode.isEmpty() + || subModel == null ||subModel.isEmpty()){ + return new Response().set(1,false,"鍙樻洿鏂欏彿鍙婂瀷鍙蜂笉鑳戒负绌�!"); + } + + String[] subCodeSplit = subCode.split("/"); + String[] subModelSplit = subModel.split("/"); + + ecr.setCreateTime(new Date()); + //鏍¢獙鏂欏彿鍜屽瀷鍙峰繀椤绘暟閲忎竴鑷� + if(subCodeSplit.length!=subModelSplit.length){ + return new Response().set(1,false,"鍙樻洿鏂欏彿涓庡瀷鍙峰搴旀暟閲忎笉涓�鑷�!"); + } + for (int i = 0; i < subCodeSplit.length; i++) { + ECR ecrTemp = new ECR(); + BeanUtils.copyProperties(ecr,ecrTemp); + ecrTemp.setSubCode(subCodeSplit[i]); + ecrTemp.setSubModel(subModelSplit[i]); + ecrList.add(ecrTemp); + } + //鎻愪氦涔嬪墠鍏堟牎楠屾祦姘村彿鏄惁瀛樺湪 + QueryWrapper<ECR> query = Wrappers.query(); + query.eq("number",ecrList.get(0).getNumber()).last(" limit 1"); + ECR ecrNumberObj = mapper.selectOne(query); + if(ecrNumberObj!= null) { + return new Response().set(1,false,"ecr缂栧彿宸插瓨鍦�"); + } + mapper.insertBatchSomeColumn(ecrList); + return new Response().set(1,true,"瀵煎叆瀹屾垚"); + } + //鍒嗛〉鏌ヨECR璁板綍 + public Response searchEcr(String number, String subCode, String subModel, Date createTime, Date createTime1, int pageCurr, int pageSize) { + PageHelper.startPage(pageCurr,pageSize); + QueryWrapper wrapper=new QueryWrapper(); + if(number!=null){ + wrapper.like("number",number); + } + if(subCode!=null){ + wrapper.like("sub_code",subCode); + } + if(subModel!=null){ + wrapper.like("sub_model",subModel); + } + wrapper.ge("create_time",createTime); + wrapper.le("create_time",createTime1); + wrapper.orderByDesc("create_time"); + List list=mapper.selectList(wrapper); + PageInfo pageInfo=new PageInfo(list); + return new Response().setII(1,list.size()>0,pageInfo,"鏌ヨECR璁板綍"); + } + + //璇︽儏绉嶅姞涓奅CR淇℃伅锛氭牴鎹畇ubCode/subModel鏌ヨ + public List searchDetailBysub( String subCode, String subModel) { + QueryWrapper wrapper=new QueryWrapper(); + wrapper.like("sub_code",subCode); + wrapper.like("sub_model",subModel); + wrapper.orderByAsc("number"); + List list=mapper.selectList(wrapper); + return list; + } + + public void exportExcel(HttpServletResponse response, List<Integer> ids) { + List<ECR> ecrList; + if(ids == null) { + //鏌ヨ鎵�鏈� + ecrList = mapper.selectList(null); + }else{ + //鏌ヨids鐨勮褰� + QueryWrapper<ECR> query = Wrappers.query(); + query.in("id",ids); + ecrList = mapper.selectList(query); + } + int size = ecrList.size(); + //ECR缂栧彿,鐢宠鏃ユ湡,鐢宠浜�,鍙樻洿鎻忚堪,鍙樻洿鏂欏彿,鍙樻洿鍨嬪彿,鍙樻洿鎵�灞炲瀷鍙�,澶勭悊鏂瑰紡,鍒涘缓鏃堕棿 + String[] title = new String[]{"骞翠唤","ECR缂栧彿","鐢宠鏃ユ湡","鐢宠浜�","鍙樻洿鎻忚堪","鍙樻洿鏂欏彿","鍙樻洿鍨嬪彿","鍙樻洿鎵�灞炲瀷鍙�","澶勭悊鏂瑰紡","鍒涘缓鏃堕棿"}; + String[][] values = new String[size][]; //size琛� + for (int i = 0; i < size; i++) { + values[i] = new String[10]; + ECR ecr = ecrList.get(i); + Date proposeDate = ecr.getProposeDate(); + Calendar instance = Calendar.getInstance(); + instance.setTime(proposeDate); + values[i][0] = String.valueOf(instance.get(Calendar.YEAR)); + values[i][1] = ecr.getNumber(); + values[i][2] = DateUtil.YYYY_MM_DD_UNION.format(proposeDate); + values[i][3] = ecr.getProposer(); + values[i][4] = ecr.getChangeDescription(); + values[i][5] = ecr.getSubCode(); + values[i][6] = ecr.getSubModel(); + values[i][7] = ecr.getParentModel(); + values[i][8] = ecr.getSolution(); + values[i][9] = DateUtil.YYYY_MM_DD_HH_MM_SS.format(ecr.getCreateTime()); + } + String dateFormat = DateUtil.YYYY_MM_DD_HH_MM_SS2.format(new Date()); + ExcelUtil.exportExcel("鍙樻洿璁板綍娓呭崟_"+dateFormat,"娓呭崟",title,values,null,response); + } + //鍒犻櫎ECR璁板綍 + public Response deleteEcr(String number, String filePath) { + if(!(filePath==null||filePath.isEmpty())){ + String fileDirName = FileDirPath.getFileDirName(); + File file = new File(fileDirName+File.separator+filePath); + if(!file.isDirectory()){ + file.delete(); + } + } + //鍒犻櫎琛ㄨ褰� + UpdateWrapper wrapper=new UpdateWrapper(); + wrapper.eq("number",number); + int delFlag=mapper.delete(wrapper); + return new Response().set(1,delFlag>0,"鍒犻櫎ECR"); + } + //鍙嶉涓嬫媺鏌ヨECR璁板綍 + public Response searchEcrInFeedback() { + QueryWrapper wrapper=new QueryWrapper(); + wrapper.select("distinct number"); + wrapper.orderByDesc("create_time"); + List list=mapper.selectList(wrapper); + return new Response().setII(1,list.size()>0,list,"鏌ヨECR璁板綍"); + } } -- Gitblit v1.9.1