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/ProductBomService.java | 504 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 362 insertions(+), 142 deletions(-) diff --git a/src/main/java/com/whyc/service/ProductBomService.java b/src/main/java/com/whyc/service/ProductBomService.java index bb81783..d688662 100644 --- a/src/main/java/com/whyc/service/ProductBomService.java +++ b/src/main/java/com/whyc/service/ProductBomService.java @@ -9,24 +9,26 @@ import com.whyc.dto.FileDirPath; import com.whyc.dto.Response; import com.whyc.dto.ZipUtils; -import com.whyc.mapper.ComponentMapper; +import com.whyc.mapper.AttachLockMapper; +import com.whyc.mapper.MaterialMapper; import com.whyc.mapper.ProductBomMapper; +import com.whyc.mapper.ProductMapper; import com.whyc.pojo.*; import com.whyc.util.ActionUtil; import org.apache.poi.hssf.usermodel.*; -import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.ClientAnchor; -import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.IndexedColors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestParam; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; -import java.math.BigDecimal; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.LinkedList; @@ -35,11 +37,19 @@ @Service public class ProductBomService { + @Autowired(required = false) private ProductBomMapper mapper; @Autowired(required = false) - private ComponentMapper cponentMapper; + private MaterialMapper cponentMapper; + + @Autowired(required = false) + private ProductMapper productMapper; + + @Autowired(required = false) + private AttachLockMapper attachLockMapper; + @Autowired private DocLogService logService; //鍥剧焊鍒嗙被妫�绱� @@ -47,63 +57,33 @@ PageHelper.startPage(pageCurr,pageSize); List list=mapper.searchCadDrawer(productBom); PageInfo pageInfo=new PageInfo(list); - return new Response().setII(1,list.size()>0?true:false,pageInfo,"鏁版嵁杩斿洖"); + return new Response().setII(1,list.size()>0,pageInfo,"鏁版嵁杩斿洖"); } - //鍥剧焊鏂囦欢涓嬭浇 - public void downloadCadDrawer(HttpServletRequest req, HttpServletResponse resp, ArrayList<String> pictureUrls) { - String fileDirName = FileDirPath.getFileDirName(); - String rootFace=fileDirName+ File.separator+"downLoad"; - String pictureName=""; - //灏嗛�変腑鐨勬枃浠跺瓨鍏ユ寚瀹氱洰褰曚笅鎵撳寘涓嬭浇 - if(pictureUrls!=null&&pictureUrls.size()>0){ - for (int i=0;i<pictureUrls.size();i++) { - String picUrl=pictureUrls.get(i); - pictureName+=picUrl.substring(picUrl.lastIndexOf("\\")+1)+","; - File sourceFile=new File(fileDirName+ File.separator+picUrl); - copyFile(sourceFile,rootFace); - } - } - String timeStr= ActionUtil.sdfwithFTP.format(new Date()); - try { - File file=new File(rootFace+".zip"); - FileOutputStream forootFace = new FileOutputStream(file); - ZipUtils.toZip(rootFace, forootFace,true); - // 杞爜闃叉涔辩爜 - resp.addHeader("Content-Disposition", "attachment;filename=" - + new String(timeStr.getBytes("UTF-8"), "ISO8859-1") - + ".zip"); - OutputStream out = resp.getOutputStream(); - FileInputStream in = new FileInputStream(rootFace+".zip"); - int len=0; - byte[] buffer =new byte[1024]; - //7. 灏嗙紦鍐插尯涓殑鏁版嵁杈撳嚭 - while ((len=in.read(buffer))>0){ - out.write(buffer,0,len); - } - in.close(); - out.close(); - file.delete();//鍒犻櫎鍘嬬缉鏂囦欢 - ZipUtils.delDir(rootFace); - } catch (FileNotFoundException | UnsupportedEncodingException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } + /* //鍥剧焊鏂囦欢涓嬭浇 + public void downloadCadDrawer(HttpServletRequest req, HttpServletResponse resp, List<ProductBom> boms) { + HSSFWorkbook wb = new HSSFWorkbook(); + //瀛椾綋鏍煎紡-鍔犵矖 + HSSFCellStyle cellStyle = wb.createCellStyle(); + HSSFFont font = wb.createFont(); + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + cellStyle.setFont(font); + //鐢熸垚excel骞跺皢dwg鏂囦欢鏀惧湪鍚屼竴鎶ヤ笅鍘嬬缉 + creatBomExcel(req,resp,boms,wb,"pic"); //璁板綍鏃ュ織 DocUser docUser= ActionUtil.getUser(); - String operationDetail="鍏蜂綋鍥剧焊涓�:"+pictureName.substring(0,pictureName.lastIndexOf(",")); + String operationDetail="鍏蜂綋鍥剧焊涓烘暟閲�:"+boms.size(); String opreationMsg="鎵ц浜嗘枃浠舵墦鍖呬笅杞芥搷浣�"; String terminalIp=req.getRemoteAddr(); logService.recordOperationLog(docUser.getId(),docUser.getName(), UserOperation.TYPE_DOWNLOAD.getType(),new Date(),terminalIp,opreationMsg,operationDetail); - } + }*/ //鏍规嵁瀛愪欢code鑾峰彇鏈�缁堢殑淇℃伅 public Response getBomBySubcode(String scode) { QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("sub_code",scode); wrapper.last("limit 1"); ProductBom productBom=mapper.selectOne(wrapper); - return new Response().setII(1,productBom!=null?true:false,productBom,"杩斿洖鏁版嵁"); + return new Response().setII(1,productBom!=null,productBom,"杩斿洖鏁版嵁"); } /**鑾峰彇浜у搧鐨勪俊鎭�(涓嶅寘鍚瓙鏂�)*/ @@ -117,7 +97,8 @@ @Transactional public void updateNewBom(List<ProductBomHistory> newBomHistoryList) { UpdateWrapper<ProductBom> update = Wrappers.update(); - update.eq("parent_model",newBomHistoryList.get(0).getParentModel()); + //lxw娉ㄩ噴 + //update.eq("parent_model",newBomHistoryList.get(0).getParentModel()); mapper.delete(update); List<ProductBom> newBomList = new LinkedList<>(); @@ -129,10 +110,10 @@ newBom.setFileUrl(newBomHis.getFileUrl()); newBom.setMaterial(newBomHis.getMaterial()); newBom.setNotes(newBomHis.getNotes()); - newBom.setParentCode(newBomHis.getParentCode()); - newBom.setParentModel(newBomHis.getParentModel()); - newBom.setParentName(newBomHis.getParentName()); - newBom.setParentVersion(newBomHis.getParentVersion()); + //newBom.setParentCode(newBomHis.getParentCode()); + //newBom.setParentModel(newBomHis.getParentModel()); + //newBom.setParentName(newBomHis.getParentName()); + //newBom.setParentVersion(newBomHis.getParentVersion()); newBom.setPictureUrl(newBomHis.getPictureUrl()); newBom.setProducer(newBomHis.getProducer()); newBom.setQuantity(newBomHis.getQuantity()); @@ -143,8 +124,8 @@ newBom.setThickness(newBomHis.getThickness()); newBom.setType(newBomHis.getType()); newBom.setUnit(newBomHis.getUnit()); - newBom.setUpUserId(newBomHis.getUpUserId()); - newBom.setVersion(newBomHis.getEVersion()); + //newBom.setUpUserId(newBomHis.getUpUserId()); + //newBom.setVersion(newBomHis.getEVersion()); newBomList.add(newBom); }); @@ -190,13 +171,63 @@ e.printStackTrace(); } } + //鏂囦欢澶圭殑鎷疯礉 + public void copyDir(String sourcePathDir, String newPathDir) { + File start = new File(sourcePathDir); + File end = new File(newPathDir); + if(!start.exists()) { + return; + } + String[] filePath = start.list();//鑾峰彇璇ユ枃浠跺す涓嬬殑鎵�鏈夋枃浠朵互鍙婄洰褰曠殑鍚嶅瓧 + if(!end.exists()) { + end.mkdir(); + } + if(filePath.length>=0){ + for(String temp : filePath) { + //娣诲姞婊¤冻鎯呭喌鐨勬潯浠� + if(new File(sourcePathDir + File.separator + temp ).isFile()) { + //涓烘枃浠跺垯杩涜鎷疯礉 + copyFile(new File(sourcePathDir + File.separator + temp ), newPathDir ); + } + } + } + } + //鏂囦欢澶圭殑鎷疯礉绉婚櫎productId瀵瑰簲鐨勮閿佸畾鐨� + public void copyDirWithOutProductId(String sourcePathDir, String newPathDir,int productId) { + File start = new File(sourcePathDir); + File end = new File(newPathDir); + if(!start.exists()) { + return; + } + String[] filePath = start.list();//鑾峰彇璇ユ枃浠跺す涓嬬殑鎵�鏈夋枃浠朵互鍙婄洰褰曠殑鍚嶅瓧 + if(!end.exists()) { + end.mkdir(); + } + if(filePath.length>=0){ + for(String temp : filePath) { + //娣诲姞婊¤冻鎯呭喌鐨勬潯浠� + if(new File(sourcePathDir + File.separator + temp ).isFile()) { + QueryWrapper wrapper=new QueryWrapper(); + wrapper.eq("product_id",productId); + wrapper.eq("attach_name",temp); + wrapper.eq("lock_flag",1); + wrapper.last("limit 1"); + AttachLock attachLock=attachLockMapper.selectOne(wrapper); + if(attachLock==null){ + //涓烘枃浠跺垯杩涜鎷疯礉 + copyFile(new File(sourcePathDir + File.separator + temp ), newPathDir ); + } + } + } + } + } public void updateUrl(List<ProductBomApproving> fileBomApprovingList) { mapper.updateUrl(fileBomApprovingList); } /** * 鑾峰彇鎵�鏈変骇鍝佷俊鎭�*/ - public Response getAllBom(String parentCode,String parentName,String parentModel, int pageCurr,int pageSize) { + /*public Response getAllBom(String parentCode,String parentName,String parentModel, int pageCurr,int pageSize) { PageHelper.startPage(pageCurr,pageSize); QueryWrapper wrapper=new QueryWrapper(); wrapper.select("distinct parent_code","parent_name","parent_model","version").orderByAsc("id"); @@ -211,93 +242,201 @@ } List list=mapper.selectList(wrapper); PageInfo pageInfo=new PageInfo(list); - return new Response().setII(1,list!=null?true:false,pageInfo,"杩斿洖鏁版嵁"); - } - //浜у搧鎵撳寘涓嬭浇 - public void downloadBom(HttpServletRequest req, HttpServletResponse resp, String parentModel) { + return new Response().setII(1,list!=null,pageInfo,"杩斿洖鏁版嵁"); + }*/ + //浜у搧涓嬭浇(浜у搧id鍜岀増鏈�) + public void downloadProduct(HttpServletRequest req, HttpServletResponse resp, int productId , int version + , @RequestParam String oprateReason, @RequestParam String oprateInfo) { HSSFWorkbook wb = new HSSFWorkbook(); - //瀛椾綋鏍煎紡-鍔犵矖 - HSSFCellStyle cellStyle = wb.createCellStyle(); - HSSFFont font = wb.createFont(); - font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); - cellStyle.setFont(font); + //璇诲彇浜у搧淇℃伅 QueryWrapper wrapper=new QueryWrapper(); - wrapper.eq("parent_model",parentModel); - List<ProductBom> list=mapper.selectList(wrapper); + wrapper.eq("id",productId); + wrapper.eq("version",version); + wrapper.last("limit 1"); + Product product=productMapper.selectOne(wrapper); + //璇诲彇浜у搧鐨勫瓙浠跺拰鍏宠仈鐨勭墿鏂欎俊鎭� + List<ProductBom> list=mapper.getBomAndMaterial(productId,version); + //澶勭悊瀛樺湪鍏宠仈鍏崇郴鐨勭墿鏂� + List<ProductBom> endList=new ArrayList<>(); + list.stream().forEach(bom -> { + bom.setConnFlag(0); + if(bom.getDwgUrl()!=null){ + QueryWrapper qwrapper=new QueryWrapper(); + qwrapper.eq("material_id",bom.getMaterialId()); + qwrapper.eq("attach_name",bom.getDwgUrl().substring(bom.getDwgUrl().lastIndexOf("\\")+1)); + qwrapper.eq("lock_flag",1); + qwrapper.last("limit 1"); + AttachLock attachLock=attachLockMapper.selectOne(qwrapper); + if(attachLock!=null){ + bom.setDwgUrl(""); + } + } + endList.add(bom); + if(bom.getMaterials()!=null&&bom.getMaterials().size()>0){ + for (Material m:bom.getMaterials()) { + //灏嗙墿鏂欏瓨鏀句负涓�涓猙om涓轰笅杞藉仛鍑嗗 + ProductBom copyBom=copyMaterialToBom(m); + endList.add(copyBom); + } + } + }); + //灏嗘病鏈夌鐞咮OM鐨刣wg鏂囦欢鎷疯礉涓嬭浇 + String withOutDwg="doc_file/product"+File.separator+product.getParentModel(); + if(product.getCustomCode()!=null&&!product.getCustomCode().isEmpty()){ + withOutDwg+=File.separator+product.getCustomCode()+File.separator+version; + }else{ + withOutDwg+=File.separator+"standard"+File.separator+version; + } //鐢熸垚excel骞跺皢dwg鏂囦欢鏀惧湪鍚屼竴鎶ヤ笅鍘嬬缉 - creatBomExcel(req,resp,list,wb); - //璁板綍鏃ュ織 - DocUser docUser= ActionUtil.getUser(); - String operationDetail="鍏蜂綋浜у搧姣嶆枡鍨嬪彿涓�:"+parentModel; - String opreationMsg="鎵ц浜嗘渶鏂扮増浜у搧涓嬭浇鎿嶄綔"; - String terminalIp=req.getRemoteAddr(); - logService.recordOperationLog(docUser.getId(),docUser.getName(), UserOperation.TYPE_DOWNLOAD.getType(),new Date(),terminalIp,opreationMsg,operationDetail); + creatBomExcel(req,resp,product,endList,wb,withOutDwg,ActionUtil.sdfwithALL.format(product.getVersionTime()),oprateReason,oprateInfo); } + + //鏍规嵁浜у搧淇℃伅鍒涘缓excel琛ㄦ牸骞跺瓨鏀惧湪鎸囧畾鐩綍 - public void creatBomExcel(HttpServletRequest req, HttpServletResponse resp,List list, HSSFWorkbook wb){ + private void creatBomExcel(HttpServletRequest req, HttpServletResponse resp,Product product,List list, HSSFWorkbook wb,String withOutDwg + , String oprateVersion, @RequestParam String oprateReason, @RequestParam String oprateInfo){ String fileDirName = FileDirPath.getFileDirName(); String rootFace=""; - String pictureName=""; String excelName=""; + String[] titleNames=new String[]{"搴忓垪","姣嶇墿鏂欑紪鐮�","姣嶇墿鏂欏悕绉�","姣嶇墿鏂欏瀷鍙�","绫诲埆","瀛愪欢缂栫爜","瀛愪欢鍚嶇О","瀛愪欢鍨嬪彿" + ,"鍩烘湰鍗曚綅","瀛愪欢鏁伴噺","鐢熶骇鍟�","灏佽绫诲瀷/鏉愯川","鍏冧欢缂栧彿/鏂欏帤","琛ㄩ潰澶勭悊/鐗╂枡璇︽儏","澶囨敞","鍥剧墖"}; + //瀛椾綋鏍煎紡-鍔犵矖 + HSSFCellStyle cellStyle = wb.createCellStyle(); + cellStyle.setFillForegroundColor(IndexedColors.GOLD.getIndex());//娣诲姞鍓嶆櫙鑹�,鍐呭鐪嬬殑娓呮 + cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); + HSSFFont font = wb.createFont(); + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + //font.setColor(HSSFFont.COLOR_RED); + cellStyle.setFont(font); //鍒涘缓鍗曚釜sheet - HSSFSheet sheet = wb.createSheet("bom淇℃伅"); + HSSFSheet sheet = wb.createSheet("浜у搧淇℃伅"); + sheet.setColumnWidth(1,5000); + sheet.setColumnWidth(2,5000); + sheet.setColumnWidth(3,5000); + sheet.setColumnWidth(4,5000); + sheet.setColumnWidth(6,5000); + sheet.setColumnWidth(7,5000); + sheet.setColumnWidth(8,5000); sheet.setColumnWidth(16,6000); sheet.setDefaultRowHeight((short)(1000)); //鍥剧墖鍏冪礌 HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); int rownum = 1; - sheet.createRow(rownum); - sheet.getRow(rownum).createCell(1).setCellValue("搴忓垪"); - sheet.getRow(rownum).createCell(2).setCellValue("姣嶇墿鏂欑紪鐮�"); - sheet.getRow(rownum).createCell(3).setCellValue("姣嶇墿鏂欏悕绉�"); - sheet.getRow(rownum).createCell(4).setCellValue("姣嶇墿鏂欏瀷鍙�"); - sheet.getRow(rownum).createCell(5).setCellValue("绫诲埆"); - sheet.getRow(rownum).createCell(6).setCellValue("瀛愪欢缂栫爜"); - sheet.getRow(rownum).createCell(7).setCellValue("瀛愪欢鍚嶇О"); - sheet.getRow(rownum).createCell(8).setCellValue("瀛愪欢鍨嬪彿"); - sheet.getRow(rownum).createCell(9).setCellValue("鍩烘湰鍗曚綅"); - sheet.getRow(rownum).createCell(10).setCellValue("瀛愪欢鏁伴噺"); - sheet.getRow(rownum).createCell(11).setCellValue("鐢熶骇鍟�"); - sheet.getRow(rownum).createCell(12).setCellValue("灏佽绫诲瀷/鏉愯川"); - sheet.getRow(rownum).createCell(13).setCellValue("鍏冧欢缂栧彿/鏂欏帤"); - sheet.getRow(rownum).createCell(14).setCellValue("琛ㄩ潰澶勭悊/鐗╂枡璇︽儏"); - sheet.getRow(rownum).createCell(15).setCellValue("澶囨敞"); - sheet.getRow(rownum).createCell(16).setCellValue("鍥剧墖"); + HSSFRow row=sheet.createRow(rownum); + HSSFCell cell=row.createCell(0); + if(titleNames.length>0){ + for (int i=0;i<titleNames.length;i++) { + cell=row.createCell(i+1); + cell.setCellValue(titleNames[i]); + } + } + //鏋勫缓excel鍚嶇О鍜屽垱寤烘枃浠跺す + excelName=product.getParentCode()+"_"+product.getParentModel(); + String timeStr= ActionUtil.sdfwithFTP.format(new Date()); + rootFace=fileDirName+File.separator+excelName; + File destfile = new File(rootFace); + if(!destfile.exists()) { + destfile.mkdir(); + } + //灏嗘病鏈夌鐞咮OM鐨刣wg鏂囦欢鎷疯礉涓嬭浇 + withOutDwg=fileDirName+File.separator+withOutDwg; + copyDirWithOutProductId(withOutDwg,rootFace,product.getId()); //灏嗛�変腑鐨勬枃浠跺瓨鍏ユ寚瀹氱洰褰曚笅鎵撳寘涓嬭浇 if(list!=null&&list.size()>0){ for (int i=0;i<list.size();i++) { ProductBom bom= (ProductBom) list.get(i); String dwgUrl=bom.getDwgUrl(); - if(i==0){ - excelName=bom.getParentCode(); - rootFace=fileDirName+File.separator+excelName; - File destfile = new File(rootFace); - if(!destfile.exists()) { - destfile.mkdir(); - } - } if((dwgUrl!=null)&&(!dwgUrl.isEmpty())){ - pictureName+=dwgUrl.substring(dwgUrl.lastIndexOf("\\")+1)+","; File sourceFile=new File(fileDirName+ File.separator+dwgUrl); copyFile(sourceFile,rootFace); } - Row row=sheet.createRow(rownum+i+1); - //row.setHeight((short)(1500)); - sheet.getRow(rownum+i+1).createCell(1).setCellValue(i+1); - sheet.getRow(rownum+i+1).createCell(2).setCellValue(bom.getParentCode()); - sheet.getRow(rownum+i+1).createCell(3).setCellValue(bom.getParentName()); - sheet.getRow(rownum+i+1).createCell(4).setCellValue(bom.getParentModel()); - sheet.getRow(rownum+i+1).createCell(5).setCellValue(bom.getCategory()); - sheet.getRow(rownum+i+1).createCell(6).setCellValue(bom.getSubCode()); - sheet.getRow(rownum+i+1).createCell(7).setCellValue(bom.getSubName()); - sheet.getRow(rownum+i+1).createCell(8).setCellValue(bom.getSubModel()); - sheet.getRow(rownum+i+1).createCell(9).setCellValue(bom.getUnit()==null?"":bom.getUnit()); - sheet.getRow(rownum+i+1).createCell(10).setCellValue(bom.getQuantity()); - sheet.getRow(rownum+i+1).createCell(11).setCellValue(bom.getProducer()==null?"":bom.getProducer()); - sheet.getRow(rownum+i+1).createCell(12).setCellValue(bom.getMaterial()); - sheet.getRow(rownum+i+1).createCell(13).setCellValue(bom.getThickness()); - sheet.getRow(rownum+i+1).createCell(14).setCellValue(bom.getSurfaceDetail()); - sheet.getRow(rownum+i+1).createCell(15).setCellValue(bom.getNotes()); + rownum=rownum+1; + row=sheet.createRow(rownum); + if(bom.getConnFlag()==1){ + cell=row.createCell(0); + cell.setCellValue("鏇挎崲浠�"); + cell.setCellStyle(cellStyle); + + cell=row.createCell(1); + cell.setCellValue(i+1); + cell.setCellStyle(cellStyle); + + cell=row.createCell(2); + cell.setCellValue(product.getParentCode()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(3); + cell.setCellValue(product.getParentName()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(4); + cell.setCellValue(product.getParentModel()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(5); + cell.setCellValue(bom.getCategory()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(6); + cell.setCellValue(bom.getSubCode()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(7); + cell.setCellValue(bom.getSubName()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(8); + cell.setCellValue(bom.getSubModel()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(9); + cell.setCellValue(bom.getUnit()==null?"":bom.getUnit()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(10); + cell.setCellValue(bom.getQuantity()==null?"": bom.getQuantity().toString()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(11); + cell.setCellValue(bom.getProducer()==null?"":bom.getProducer()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(12); + cell.setCellValue(bom.getMaterial()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(12); + cell.setCellValue(bom.getThickness()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(13); + cell.setCellValue(bom.getThickness()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(14); + cell.setCellValue(bom.getSurfaceDetail()); + cell.setCellStyle(cellStyle); + + cell=row.createCell(15); + cell.setCellValue(bom.getNotes()); + cell.setCellStyle(cellStyle); + }else{ + row.createCell(1).setCellValue(i+1); + row.createCell(2).setCellValue(product.getParentCode()); + row.createCell(3).setCellValue(product.getParentName()); + row.createCell(4).setCellValue(product.getParentModel()); + row.createCell(5).setCellValue(bom.getCategory()); + row.createCell(6).setCellValue(bom.getSubCode()); + row.createCell(7).setCellValue(bom.getSubName()); + row.createCell(8).setCellValue(bom.getSubModel()); + row.createCell(9).setCellValue(bom.getUnit()==null?"":bom.getUnit()); + row.createCell(10).setCellValue(bom.getQuantity()==null?"": bom.getQuantity().toString()); + row.createCell(11).setCellValue(bom.getProducer()==null?"":bom.getProducer()); + row.createCell(12).setCellValue(bom.getMaterial()); + row.createCell(13).setCellValue(bom.getThickness()); + row.createCell(14).setCellValue(bom.getSurfaceDetail()); + row.createCell(15).setCellValue(bom.getNotes()); + } if((bom.getPictureUrl()!=null)&&(!bom.getPictureUrl().isEmpty())){ ByteArrayOutputStream byteArrayOut = null; try { @@ -305,7 +444,7 @@ BufferedImage bufferImg = ImageIO.read(new FileInputStream(new File(fileDirName+File.separator+bom.getPictureUrl()))); ImageIO.write(bufferImg, "png", byteArrayOut); //anchor涓昏鐢ㄤ簬璁剧疆鍥剧墖鐨勫睘鎬� - HSSFClientAnchor anchor = new HSSFClientAnchor(50, 20, 1000, 230,(short) 16, rownum+i+1, (short) 16, rownum+i+1); + HSSFClientAnchor anchor = new HSSFClientAnchor(50, 20, 1000, 230,(short) 16, rownum, (short) 16, rownum); anchor.setAnchorType(ClientAnchor.MOVE_AND_RESIZE); //鎻掑叆鍥剧墖 patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); @@ -343,10 +482,12 @@ File file=new File(rootFace+".zip"); FileOutputStream forootFace = new FileOutputStream(file); ZipUtils.toZip(rootFace, forootFace,true); + // 杞爜闃叉涔辩爜 - resp.addHeader("Content-Disposition", "attachment;filename=" + /*resp.addHeader("Content-Disposition", "attachment;filename=" + new String(excelName.getBytes("UTF-8"), "ISO8859-1") - + ".zip"); + + ".zip");*/ + resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode (excelName+".zip", "utf-8")); OutputStream out = resp.getOutputStream(); FileInputStream in = new FileInputStream(rootFace+".zip"); int len=0; @@ -364,28 +505,107 @@ } catch (IOException e) { e.printStackTrace(); } + //璁板綍鏃ュ織 + logService.recordOperationLogDownLoad(ActionUtil.getUser().getId(),ActionUtil.getUser().getName(), UserOperation.TYPE_DOWNLOAD_PRODUCT.getType(),new Date(),req.getRemoteAddr() + ,excelName+".zip",rootFace+".zip",oprateReason,oprateInfo,oprateVersion); } //鏌ヨ鎵�鏈変骇鍝佷腑娌℃湁涓庢寚瀹氭暎瑁呬欢鍏宠仈鐨勫瓙浠� - public Response getAllSubWithOutComponent(int componentId) { - List<ProductBom> list=mapper.getAllSubWithOutComponent(componentId); - return new Response().setII(1,list.size()>0?true:false,list,"杩斿洖鏁版嵁"); + public Response getAllSubWithOutMaterial(int materialId) { + List<ProductBom> list=mapper.getAllSubWithOutMaterial(materialId); + return new Response().setII(1,list.size()>0,list,"杩斿洖鏁版嵁"); } - //鏍规嵁姣嶆枡鍨嬪彿鏌ヨ瀛愪欢淇℃伅鍙婃湁鏈�鏂扮増鏈叧鑱旂殑鏁h浠朵俊鎭� - public Response getSubByComponentProduct(String parentModel) { - List<ProductBom> list=mapper.getSubByComponentProduct(parentModel); + //鏍规嵁姣嶆枡鍨嬪彿鏌ヨ瀛愪欢淇℃伅鍙婃湁鏈�鏂扮増鏈叧鑱旂殑鏁h浠朵俊鎭� + /*public Response getSubByMaterialProduct(String parentModel) { + List<ProductBom> list=mapper.getSubByMaterialProduct(parentModel); //鏌ヨ鍑哄瓨鍦ㄦ浛鎹㈠叧绯诲緱鏁h浠� - ProductBom replaceBom=cponentMapper.getReplaceComponent(parentModel); - //濡傛灉瀛樺湪鏇挎崲鍏崇郴锛屾煡璇㈠嚭鍘熷瓙浠剁殑鍏宠仈鍏崇郴(灏嗗師瀛愪欢鍚嶇О鏀惧湪oldSubName涓�) - if(replaceBom!=null&&!replaceBom.getSubName().isEmpty()) { - //replaceBom琛ㄧず涓烘浛鎹欢 - replaceBom.setReplaceStatus(1); - if (replaceBom.getOldSubName() != null && !replaceBom.getOldSubName().isEmpty()) { - //鏌ヨ鍑哄瓨鍦ㄧ殑鏃х殑鍏宠仈瀛愪欢,杩樿涓庡師BOM鐗堟湰涓�鑷� - List<Component> oldCponent = mapper.getOldComponent(replaceBom.getOldSubName()); - replaceBom.setComponents(oldCponent); - } + List<ProductBom> replaceBoms=cponentMapper.getReplaceMaterial(parentModel); + if(replaceBoms!=null&&replaceBoms.size()>0){ + replaceBoms.stream().forEach(replaceBom->{ + //濡傛灉瀛樺湪鏇挎崲鍏崇郴锛屾煡璇㈠嚭鍘熷瓙浠剁殑鍏宠仈鍏崇郴(灏嗗師瀛愪欢鍚嶇О鏀惧湪oldSubName涓�) + if(replaceBom!=null&&!replaceBom.getSubName().isEmpty()) { + //replaceBom琛ㄧず涓烘浛鎹欢 + replaceBom.setReplaceStatus(1); + if (replaceBom.getOldSubName() != null && !replaceBom.getOldSubName().isEmpty()) { + //鏌ヨ鍑哄瓨鍦ㄧ殑鏃х殑鍏宠仈瀛愪欢,杩樿涓庡師BOM鐗堟湰涓�鑷� + List<Material> oldCponent = mapper.getOldMaterial(replaceBom.getOldSubName()); + replaceBom.setMaterials(oldCponent); + } + } + list.add(replaceBom); + } + ); } - list.add(replaceBom); - return new Response().setII(1,list.size()>0?true:false,list,"杩斿洖鏁版嵁"); + return new Response().setII(1,list.size()>0,list,"杩斿洖鏁版嵁"); + }*/ + //鏍规嵁浜у搧id鏌ヨ瀛愪欢鍙婂叾鍏宠仈鐨勭墿鏂欎俊鎭� + public Response getBomAndMaterial(int productId,int version) { + List<ProductBom> list=mapper.getBomAndMaterial(productId,version); + if(list!=null&&list.size()>0){ + list.stream().forEach(bom -> { + if(bom.getDwgUrl()!=null){ + QueryWrapper wrapper=new QueryWrapper(); + wrapper.eq("material_id",bom.getMaterialId()); + wrapper.eq("attach_name",bom.getDwgUrl().substring(bom.getDwgUrl().lastIndexOf("\\")+1)); + wrapper.last("limit 1"); + AttachLock attachLock=attachLockMapper.selectOne(wrapper); + if(attachLock!=null){ + bom.setDwgUrl(""); + } + } + }); + } + return new Response().setII(1,list.size()>0,list,"杩斿洖鐗╂枡淇℃伅鍙婂叧鑱旂墿鏂�"); + } + + //灏嗙墿鏂欏瓨鏀句负涓�涓猙om涓轰笅杞藉仛鍑嗗 + private ProductBom copyMaterialToBom(Material m) { + ProductBom bom=new ProductBom(); + bom.setType(m.getType()); + //bom.setCategory(m.getCategory()); + bom.setSubCode(m.getSubCode()); + bom.setSubName(m.getSubName()); + bom.setSubModel(m.getSubModel()); + bom.setUnit(m.getUnit()); + //bom.setQuantity(m.getQuantity()); + //bom.setProducer(m.getProducer()); + //bom.setMaterial(m.getMaterial()); + //bom.setThickness(m.getThickness()); + //bom.setSurfaceDetail(m.getSurfaceDetail()); + //bom.setNotes(m.getNotes()); + bom.setPictureUrl(m.getPictureUrl()); + bom.setDwgUrl(m.getDwgUrl()); + bom.setFileUrl(m.getFileUrl()); + bom.setCreateDate(m.getCreateDate()); + bom.setConnFlag(1); + return bom; + } + + public void insertBatch(List<ProductBom> productBomList) { + mapper.insertBatchSomeColumn(productBomList); + } + + public List<ProductBom> getBomByProductId(Integer productId) { + QueryWrapper<ProductBom> query = Wrappers.query(); + query.eq("product_id",productId); + return mapper.selectList(query); + } + + public void deleteByProductId(Integer productId) { + UpdateWrapper<ProductBom> update = Wrappers.update(); + update.eq("product_id",productId); + mapper.delete(update); + } + + public List<ProductBom> getListByCodeAndModelList2(List<ProductBom> bomList) { + return mapper.getListByCodeAndModelList2(bomList); + } + + public List<ProductBom> getEnabledBomListByParentCodeAndCustomCode(String parentCode, String customCode) { + return mapper.getEnabledBomListByParentCodeAndCustomCode(parentCode,customCode); + } + + public void updateMaterialField2Bom() { + List<ProductBom> bomList = mapper.selectListWithMaterialField(); + mapper.updateMaterialField2BomBatch(bomList); } } -- Gitblit v1.9.1