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