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/MaterialService.java |  505 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 483 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/whyc/service/MaterialService.java b/src/main/java/com/whyc/service/MaterialService.java
index 7fed8db..30bc030 100644
--- a/src/main/java/com/whyc/service/MaterialService.java
+++ b/src/main/java/com/whyc/service/MaterialService.java
@@ -5,37 +5,47 @@
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.whyc.dto.FileDirPath;
+import com.whyc.dto.MailDTO;
+import com.whyc.dto.MaterialCheckDTO;
 import com.whyc.dto.Response;
 import com.whyc.mapper.MaterialMapper;
-import com.whyc.pojo.DocUser;
-import com.whyc.pojo.Material;
-import com.whyc.pojo.ProductBom;
-import com.whyc.util.ActionUtil;
-import com.whyc.util.CommonUtil;
-import com.whyc.util.FileUtil;
-import com.whyc.util.Zip4jUtil;
+import com.whyc.pojo.*;
+import com.whyc.util.DateUtil;
+import com.whyc.util.*;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.FileCopyUtils;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
 public class MaterialService {
     @Autowired(required = false)
     private MaterialMapper mapper;
+
+    @Autowired
+    private MaterialHistoryService mhService;
+
+    @Autowired
+    private AttachLockService attachLockService;
+
+    @Autowired
+    private MailService mailService;
+
+    @Autowired
+    private MailUserService mailUserService;
+
     //鏌ヨ鎵�鏈夌殑鏁h浠朵俊鎭姞璁剧疆浜嗘浛鎹㈠叧绯荤殑瀛愪欢淇℃伅
     /*public Response getAllMaterial(String category,String subCode,String subName,String subModel,int pageCurr,int pageSize) {
         PageHelper.startPage(pageCurr,pageSize);
@@ -77,6 +87,33 @@
     public Response getMaterialLimit(String subCode, String subName, String subModel, int pageCurr, int pageSize) {
         PageHelper.startPage(pageCurr,pageSize);
         List<Material> list=mapper.getMaterialLimit(subCode,subName,subModel);
+        String fileDirName = FileDirPath.getFileDirName();
+        int flag=0;
+        // 杩斿洖鏄惁瀛樺湪闄勪欢
+        if(list!=null&&list.size()>0){
+            for (Material m:list) {
+                if(m.getFileUrl()!=null&&!m.getFileUrl().isEmpty()){
+                    File file = new File(fileDirName+File.separator+m.getFileUrl());
+                    if(!file.exists()) {
+                        flag=0;
+                    }else{
+                        String[] fileNames = file.list();//鑾峰彇璇ユ枃浠跺す涓嬬殑鎵�鏈夋枃浠朵互鍙婄洰褰曠殑鍚嶅瓧
+                        List attachFileList=new ArrayList();
+                        if(fileNames.length>0){
+                            flag=1;
+                            for (int i=0;i<fileNames.length;i++){
+                                if(!fileNames[i].contains("-dwg.pdf")&&!fileNames[i].contains("-doc.pdf"))
+                                    attachFileList.add(fileNames[i]);
+                            }
+                        }else{
+                            flag=0;
+                        }
+                        m.setAttachFileList(attachFileList);
+                    }
+                }
+                m.setHasAttachFlag(flag);
+            }
+        }
         PageInfo pageInfo=new PageInfo(list);
         return new Response().setII(1,list.size()>0,pageInfo,"鏌ヨ鎵�鏈夌墿鏂�(鍒嗛〉锛屾ā绯婃煡璇�)");
     }
@@ -181,6 +218,41 @@
             material.setFileUrl(null);
         });
         mapper.insertBatchSomeColumn(materialList);
+        /*0120寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍚存禋銆侀檲鍗撱�佺唺瀹舵澃銆侀挶闀滃厓銆佹柤濂�
+          0108銆�0109寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍠昏壋銆佽鎴愩�佺唺蹇楀钩銆佸彾鑳滆摑 */
+        List<String> materialCodeList = materialList.stream().map(Material::getSubCode).collect(Collectors.toList());
+        //浠巑aterialList涓煡鎵� subCode浠�0120寮�澶寸殑鎵�鏈夌墿鏂欓泦鍚�
+        List<Material> materialCodeList0120 = materialList.stream().filter(material -> material.getSubCode().startsWith("0120")).collect(Collectors.toList());
+        //浠巑aterialList涓煡鎵� subCode浠�0108鎴�0109寮�澶寸殑鎵�鏈夌墿鏂欓泦鍚�
+        List<Material> materialCodeList0809 = materialList.stream().filter(material -> material.getSubCode().startsWith("0108") || material.getSubCode().startsWith("0109")).collect(Collectors.toList());
+
+        //濡傛灉瀛樺湪,鍒欏垱寤洪偖浠跺璞�
+        if(materialCodeList0120.size()>0 || materialCodeList0809.size()>0) {
+            DocUser user = ActionUtil.getUser();
+            MailDTO mailDTO = new MailDTO();
+            String now = DateUtil.YYYY_MM_DD_HH_MM_SS.format(new Date());
+            mailDTO.setTitle("銆愮墿鏂欎笂浼犳彁閱掋��");
+            if(materialCodeList0120.size()>0){
+                String subCodeJoin = materialCodeList0120.stream().map(Material::getSubCode).collect(Collectors.joining(","));
+                String subNameJoin = materialCodeList0120.stream().map(Material::getSubName).collect(Collectors.joining(","));
+                String subModelJoin = materialCodeList0120.stream().map(Material::getSubModel).collect(Collectors.joining(","));
+
+                List<MailUser> mailUserList = mailUserService.getMailUserList(5);
+                mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList()));
+                mailDTO.setContent(user.getName() + "鍦ㄦ枃妗g鐞嗗钩鍙�"+now+"涓婁紶浜�0120寮�澶寸殑鐗╂枡,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCodeJoin+"\n鐗╂枡鍚嶇О:"+subNameJoin+"\n瑙勬牸鍨嬪彿:"+subModelJoin);
+                mailService.sendMail(mailDTO);
+            }
+            if (materialCodeList0809.size()>0) {
+                String subCodeJoin = materialCodeList0809.stream().map(Material::getSubCode).collect(Collectors.joining(","));
+                String subNameJoin = materialCodeList0809.stream().map(Material::getSubName).collect(Collectors.joining(","));
+                String subModelJoin = materialCodeList0809.stream().map(Material::getSubModel).collect(Collectors.joining(","));
+
+                List<MailUser> mailUserList = mailUserService.getMailUserList(6);
+                mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList()));
+                mailDTO.setContent(user.getName() + "鍦ㄦ枃妗g鐞嗗钩鍙�"+now+"涓婁紶浜�0108鎴�0109寮�澶寸殑鐗╂枡,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCodeJoin+"\n鐗╂枡鍚嶇О:"+subNameJoin+"\n瑙勬牸鍨嬪彿:"+subModelJoin);
+                mailService.sendMail(mailDTO);
+            }
+        }
         return new Response().set(1,true,"鏂板瀹屾垚");
     }
 
@@ -192,9 +264,28 @@
         return mapper.getListByCodeAndModelList2(bomList);
     }
 
-    public Material getByCodeAndModel(String subCode, String subModel) {
+    public List<Material> getListByCodeAndModelList3(List<ProductBom> bomList) {
+        return mapper.getListByCodeAndModelList3(bomList);
+    }
+
+    /**
+     *
+     * @param subCode 鐗╂枡缂栫爜
+     * @param subModel 鐗╂枡鍨嬪彿
+     * @param equalSubModel 鏄惁绛変簬鐗╂枡鍨嬪彿,鐢ㄤ簬绛変簬鐗╂枡鍨嬪彿 鎴栬�� 鎺掗櫎鐗╂枡鍨嬪彿骞朵笖瀛樺湪闄勪欢
+     * @return
+     */
+    public Material getByCodeAndModel(String subCode, String subModel, boolean equalSubModel) {
         QueryWrapper<Material> query = Wrappers.query();
-        query.eq("sub_code",subCode).eq("sub_model",subModel).last(" limit 1");
+        query.eq("sub_code",subCode);
+        if(equalSubModel) {
+            query.eq("sub_model", subModel);
+        }else{
+            query.ne("sub_model", subModel);
+            query.isNotNull("file_url");
+        }
+        query.orderByDesc("id");
+        query.last(" limit 1");
         return mapper.selectOne(query);
     }
 
@@ -215,8 +306,11 @@
         File parentFile = new File(filePath);
         String originalFilename = file.getOriginalFilename();
         File zipFile = new File(filePath+File.separator+ originalFilename);
-        if(!zipFile.exists()){
+        /*if(!zipFile.exists()){
             zipFile.mkdirs();
+        }*/
+        if (!parentFile.exists()) {
+            parentFile.mkdirs();
         }
         file.transferTo(zipFile);
         //瑙e帇鏂囦欢澶�
@@ -271,15 +365,15 @@
                         cellValue = cell.getStringCellValue();
 
                         switch (m){
-                            case 2:{material.setCategory(cellValue);}break;
+                            //case 2:{material.setCategory(cellValue);}break;
                             case 3:{material.setSubCode(cellValue);}break;
                             case 4:{material.setSubName(cellValue);}break;
                             case 5:{material.setSubModel(cellValue);}break;
-                            case 6:{material.setMaterial(cellValue);}break;
-                            case 7:{material.setThickness(cellValue);}break;
+                            //case 6:{material.setMaterial(cellValue);}break;
+                            //case 7:{material.setThickness(cellValue);}break;
                             //case 8:{material.setProducer(cellValue);}break;
-                            case 9:{material.setSurfaceDetail(cellValue);}break;
-                            case 10:{material.setNotes(cellValue);}break;
+                            //case 9:{material.setSurfaceDetail(cellValue);}break;
+                            //case 10:{material.setNotes(cellValue);}break;
                             case 11:{
                                 //鍥剧墖浠�1寮�濮�,0鏄痽c logo
                                 PictureData pictureData = allPictures.get(l - 7);
@@ -305,6 +399,19 @@
                 return response.set(1,false,"鎷掔粷瑙f瀽,excel鏂囦欢涓褰曞寘鍚悕绉颁负绌虹殑璁板綍");
             }
         }
+        //杩藉姞鐗╂枡瑙勮寖鏍¢獙 鏆傛椂鍘婚櫎鏍¢獙
+        /*List<MaterialCheckDTO> checkList = list.stream().map(material -> {
+            MaterialCheckDTO dto = new MaterialCheckDTO();
+            dto.setNum(material.getId());
+            dto.setSubCode(material.getSubCode());
+            dto.setSubName(material.getSubName());
+            dto.setSubModel(material.getSubModel());
+            return dto;
+        }).collect(Collectors.toList());
+        List<MaterialCheckDTO> irregularList = CommonUtil.checkFormat(checkList);
+        if(irregularList.size()>0){
+            return new Response().setII(1,false,irregularList,"鍚嶇О鎴栧瀷鍙峰懡鍚嶄笉瑙勮寖");
+        }*/
         return response.setII(1,true,list,filePath);
     }
     //鏍规嵁鐗╂枡id鏌ヨ杩斿洖闄勪欢鏂囦欢澶逛笅鎵�鏈夌殑鏂囦欢鍒楄〃
@@ -336,4 +443,358 @@
         List list=mapper.getMaterialVersion(subModel);
         return new Response().setII(1,list.size()>0,list,"鐗╂枡鍘嗗彶鐗堟湰鏁版嵁杩斿洖");
     }
+    //鏍规嵁鐗╂枡id鏌ヨ鐗╂枡淇℃伅
+    public Response getMaterialById(int materialId) {
+        Material material=mapper.getMaterialById(materialId);
+        String fileDirName = FileDirPath.getFileDirName();
+        List list=new ArrayList();
+        if(material.getFileUrl()!=null&&!material.getFileUrl().isEmpty()){
+            File file = new File(fileDirName+File.separator+material.getFileUrl());
+            if(file.exists()) {
+                String[] fileNames = file.list();//鑾峰彇璇ユ枃浠跺す涓嬬殑鎵�鏈夋枃浠朵互鍙婄洰褰曠殑鍚嶅瓧
+                if(fileNames.length>0){
+                    for (int i=0;i<fileNames.length;i++){
+                        if(!fileNames[i].contains("-dwg.pdf")&&!fileNames[i].contains("-doc.pdf"))
+                            list.add(material.getFileUrl()+File.separator+fileNames[i]);
+                    }
+                }
+
+            }
+        }
+        return new Response().setIII(1,material!=null,material,list,"鐗╂枡鍘嗗彶鐗堟湰鏁版嵁杩斿洖");
+    }
+
+    /**
+     * @param multipartFileList 琚拷鍔犵殑闄勪欢,zip闆嗗悎
+     * @param material
+     * @return 杩斿洖琚拷鍔犳枃浠剁殑鏂囦欢澶硅矾寰�
+     */
+    @Transactional
+    public Response addAttachment(List<MultipartFile> multipartFileList, Material material) throws IOException {
+        List<String> currentFileList = new LinkedList<>();
+        List<String> uploadingFileList = new LinkedList<>();
+        String subCode = material.getSubCode();
+        String subModel = material.getSubModel();
+        subModel = MaterialSpecialCharUtil.transfer(subModel);
+        String dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getId() + "-"+ subCode + "-" + subModel;
+        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-"+ subCode + "-" + subModel;
+        File dirFile = new File(dirPath);
+
+        Date now = new Date();
+        //long timestamp = now.getTime();
+        String formattedTimestamp = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(now);
+        String formattedNow = DateUtil.YYYY_MM_DD_HH_MM_SS.format(now);
+
+        boolean dirFileExist = true;
+        if(!dirFile.exists()){
+            dirFile.mkdirs();
+            dirFileExist = false;
+        }
+        StringBuilder fileNameJoin = new StringBuilder();
+        for (int i = 0; i < multipartFileList.size(); i++) {
+            MultipartFile multipartFile = multipartFileList.get(i);
+            String originalFilename = multipartFile.getOriginalFilename();
+            fileNameJoin.append(originalFilename).append(",");
+            File zipFile = new File(dirPath + File.separator + originalFilename.substring(0,originalFilename.lastIndexOf(".")) + "_" + formattedTimestamp + originalFilename.substring(originalFilename.lastIndexOf(".")));
+            multipartFile.transferTo(zipFile);
+        }
+        //fileNameJoin鍘婚櫎鏈�鍚庝竴涓厓绱�
+        fileNameJoin.deleteCharAt(fileNameJoin.length()-1);
+        /*//瑙e帇鏂囦欢澶�,鍒犻櫎鍘焭ip鏂囦欢
+        String unPackageDir = dirPath + File.separator + timestamp;
+        Zip4jUtil.unPackZip(zipFile, null, unPackageDir);
+        File unPackageFile = new File(unPackageDir);
+        File[] unPackageFileList = unPackageFile.listFiles();
+        zipFile.delete();
+        for (int i = 0; i < unPackageFileList.length; i++) {
+            File tempFile = unPackageFileList[i];
+            if(tempFile.isDirectory()){
+                FileUtil.deleteFile(unPackageFile);
+                if(!dirFileExist){
+                    FileUtil.deleteFile(dirFile);
+                }
+                return new Response().set(1,false,"鎷掔粷涓婁紶:涓婁紶鐨勫帇缂╁寘瀛樺湪鏂囦欢澶�");
+            }
+        }*/
+
+        if(!dirFileExist){
+            //璺緞涓嶅瓨鍦�,璇存槑鏄娆′笂浼�,璁剧疆鐗╂枡瀵瑰簲鐨刦ileUrl
+            Material temp = new Material();
+            temp.setId(material.getId());
+            temp.setFileUrl(dirPathDB);
+            mapper.updateById(temp);
+        }/*else{
+            //鏌ヨ璺緞涓嬬幇鏈夌殑鎵�鏈夋枃浠�
+            String[] fileArr = dirFile.list();
+            currentFileList = Arrays.asList(fileArr);
+        }*/
+
+        /*//鏌ヨ鏂颁笂浼犵殑鏂囦欢璺緞
+        String[] unPackageFileArr = unPackageFile.list();
+        uploadingFileList = Arrays.asList(unPackageFileArr);
+        for (String uploadingFile : uploadingFileList){
+            if(currentFileList.contains(uploadingFile)){
+                new File(unPackageDir + File.separator + uploadingFile)
+                        .renameTo(new File(unPackageDir + File.separator  + uploadingFile.substring(0,uploadingFile.lastIndexOf(".")) + "_" + formattedTimestamp + uploadingFile.substring(uploadingFile.lastIndexOf("."))));
+            }
+        }
+        //涓婁紶鐨勬枃浠跺す杞Щ鍒版寮忚矾寰�
+        org.aspectj.util.FileUtil.copyDir(unPackageFile,dirFile);
+        FileUtil.deleteFile(unPackageFile);*/
+        /*0120寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍚存禋銆侀檲鍗撱�佺唺瀹舵澃銆侀挶闀滃厓銆佹柤濂�
+          0108銆�0109寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍠昏壋銆佽鎴愩�佺唺蹇楀钩銆佸彾鑳滆摑 */
+        MailDTO mailDTO = new MailDTO();
+        DocUser user = ActionUtil.getUser();
+        Material materialById = mapper.getMaterialById(material.getId());
+        mailDTO.setTitle("銆愰檮浠舵洿鏂版彁閱掋��");
+        if(subCode.startsWith("0120")){
+            List<MailUser> mailUserList = mailUserService.getMailUserList(5);
+            mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList()));
+            mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗛檮浠�,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n闄勪欢鍚嶇О:"+fileNameJoin.toString());
+            mailService.sendMail(mailDTO);
+        }else if (subCode.startsWith("0108")|| subCode.startsWith("0109")){
+            List<MailUser> mailUserList = mailUserService.getMailUserList(6);
+            mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList()));
+            mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗛檮浠�,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n闄勪欢鍚嶇О:"+fileNameJoin.toString());
+            mailService.sendMail(mailDTO);
+        }
+        return new Response().set(1,true,"涓婁紶瀹屾垚");
+    }
+
+    /**
+     * 杞Щ 琚鍒剁殑闄勪欢,鍒版柊鐨勭墿鏂�
+     * @param materialDB .fileUrl 琚鍒剁殑闄勪欢璺緞,渚嬪:doc_file\material\8468-0109000512-SHIDA-2455-OLD-ZX_A01
+     * @param material 鏂扮殑鐗╂枡
+     * @return 杩斿洖琚拷鍔犳枃浠剁殑鏂囦欢澶硅矾寰�
+     */
+    @Transactional
+    public Response transferCopiedAttachment(Material materialDB, Material material) throws IOException {
+        String fileUrlDir = materialDB.getFileUrl();
+        String subModel = material.getSubModel();
+        subModel = MaterialSpecialCharUtil.transfer(subModel);
+        String dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + subModel;
+        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + subModel;
+        File dirFile = new File(dirPath);
+
+        if(!dirFile.exists()){
+
+            dirFile.mkdirs();
+        }
+        FileUtil.copyDirectory(new File(CommonUtil.getProjectDir() + File.separator + fileUrlDir),dirFile);
+
+        //璁剧疆鐗╂枡瀵瑰簲鐨刦ileUrl鍙婄墿鏂欑姸鎬�
+        Material temp = new Material();
+        temp.setId(material.getId());
+        temp.setFileUrl(dirPathDB);
+        mapper.updateById(temp);
+
+        attachLockService.getAndInsert(materialDB.getId(),material.getId());
+
+
+        return new Response().set(1,true,"涓婁紶瀹屾垚");
+    }
+
+    /**
+     * @param multipartFile 鏇存柊鐨勫浘绾告垨鍥剧墖
+     * @param material
+     */
+    @Transactional
+    public Response updatePicOrDwg(MultipartFile multipartFile, Material material) throws IOException {
+        List<String> currentFileList = new LinkedList<>();
+        List<String> uploadingFileList = new LinkedList<>();
+        String subCode = material.getSubCode();
+        String subModel = material.getSubModel();
+        subModel = MaterialSpecialCharUtil.transfer(subModel);
+        String dirPathDB = "doc_file" + File.separator + "material" + File.separator + subCode + "-" + subModel;
+        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + subCode + "-" + subModel;
+        File dirFile = new File(dirPath);
+
+        Date now = new Date();
+        //long timestamp = now.getTime();
+        String formattedTimestamp = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(now);
+        String formattedNow = DateUtil.YYYY_MM_DD_HH_MM_SS.format(now);
+
+        if (!dirFile.exists()) {
+            dirFile.mkdirs();
+        }
+
+        String originalFilename = multipartFile.getOriginalFilename();
+        String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
+        String fileFullName = File.separator + originalFilename.substring(0, originalFilename.lastIndexOf(".")) + "_" + formattedTimestamp + originalFilename.substring(originalFilename.lastIndexOf("."));
+        File zipFile = new File(dirPath + fileFullName);
+        multipartFile.transferTo(zipFile);
+
+        //璺緞涓嶅瓨鍦�,璇存槑鏄娆′笂浼�,璁剧疆鐗╂枡瀵瑰簲鐨刦ileUrl
+        //鍚屾椂鍦ㄧ墿鏂欏巻鍙查噷闈㈡坊鍔犺褰�
+        Material temp = new Material();
+        MaterialHistory mh = new MaterialHistory();
+
+        temp.setId(material.getId());
+        mh.setProductId(-1);
+        mh.setMaterialId(material.getId());
+        int userId = ActionUtil.getUser().getId().intValue();
+        mh.setUpUserId(userId);
+        mh.setCreateTime(now);
+        if(fileSuffix.equals("dwg")){
+            temp.setDwgUrl(dirPathDB + fileFullName);
+            mh.setDwgUrl(dirPathDB + fileFullName);
+        }else {
+            temp.setPictureUrl(dirPathDB + fileFullName);
+            mh.setPictureUrl(dirPathDB + fileFullName);
+        }
+        mapper.updateById(temp);
+        mhService.insert(mh);
+
+        /*0120寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍚存禋銆侀檲鍗撱�佺唺瀹舵澃銆侀挶闀滃厓銆佹柤濂�
+          0108銆�0109寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍠昏壋銆佽鎴愩�佺唺蹇楀钩銆佸彾鑳滆摑 */
+        Material materialById = mapper.getMaterialById(material.getId());
+        MailDTO mailDTO = new MailDTO();
+        DocUser user = ActionUtil.getUser();
+        mailDTO.setTitle("銆愬浘绾稿浘鐗囨洿鏂版彁閱掋��");
+        if(subCode.startsWith("0120")){
+            List<MailUser> mailUserList = mailUserService.getMailUserList(5);
+            mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList()));
+            mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗗浘绾告垨鍥剧墖,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n鍥剧焊鍥剧墖鍚嶇О:"+originalFilename);
+            mailService.sendMail(mailDTO);
+        }else if (subCode.startsWith("0108")|| subCode.startsWith("0109")){
+            List<MailUser> mailUserList = mailUserService.getMailUserList(6);
+            mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList()));
+            mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗗浘绾告垨鍥剧墖,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n鍥剧焊鍥剧墖鍚嶇О:"+originalFilename);
+            mailService.sendMail(mailDTO);
+        }
+        return new Response().set(1, true, "涓婁紶瀹屾垚");
+    }
+    public Response dwgCompare(int materialId, int materialId2) throws IOException {
+        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        HttpServletResponse response = servletRequestAttributes.getResponse();
+
+        //鑾峰彇鍚勮嚜鐗╂枡鐨勫浘绾�
+        String dwgUrl = mapper.selectById(materialId).getDwgUrl();
+        String dwgUrl2 = mapper.selectById(materialId2).getDwgUrl();
+        if(dwgUrl == null || dwgUrl2 == null){
+            return new Response().set(1,false,"鏃犳硶瀵规瘮,鎵�閫夌墿鏂欒嚦灏戞湁1涓笉瀛樺湪鍥剧焊");
+        }
+        String dwgFileStr = CommonUtil.getProjectDir() + File.separator + dwgUrl;
+        String dwgFileStr2 = CommonUtil.getProjectDir() + File.separator + dwgUrl2;
+
+        String absoluteDwgPngPath = dwgFileStr.substring(0,dwgFileStr.lastIndexOf("."))+"-dwg.png";
+        String absoluteDwgPngPath2 = dwgFileStr2.substring(0,dwgFileStr2.lastIndexOf("."))+"-dwg.png";
+        if(!new File(absoluteDwgPngPath).exists()){
+            DwgToPngUtil.dwg2png(new File(dwgFileStr));
+        }
+        if(!new File(absoluteDwgPngPath2).exists()) {
+            DwgToPngUtil.dwg2png(new File(dwgFileStr2));
+        }
+
+        ByteArrayOutputStream stream = ImageDiff.compareImages(absoluteDwgPngPath, absoluteDwgPngPath2);
+        return new Response().setII(1,true, Base64.encodeBase64String(stream.toByteArray()),null);
+        //String fileName = "name.png";
+        //OutputStream toClient = null;
+        //try {
+        //    response.setContentType("application/octet-stream");
+        //    response.setHeader("Content-Disposition","attachment;filename=" + fileName);
+        //    response.addHeader("Pragma", "no-cache");
+        //    response.addHeader("Cache-Control", "no-cache");
+        //    toClient = response.getOutputStream();
+        //    stream.writeTo(toClient);
+        //    //toClient.write(stream.toByteArray());
+        //    toClient.flush();
+        //    toClient.close();
+        //} catch (IOException e) {
+        //    e.printStackTrace();
+        //}
+        //
+        //
+        //return null;
+    }
+
+    public void updateDwgUrlAndPicUrl(List<Material> materialUpdateList) {
+        mapper.updateDwgUrlAndPicUrl(materialUpdateList);
+    }
+
+    public List<Material> getSameSubCodeAndModel(List<ProductBom> bomList) {
+        return mapper.getSameSubCodeAndModel(bomList);
+    }
+
+    public void checkNaming(InputStream inputStream, HttpServletResponse response) throws IOException, InvalidFormatException {
+        List<MaterialCheckDTO> checkList = new LinkedList<>();
+        Workbook workbook = null;
+        workbook = WorkbookFactory.create(inputStream);
+        inputStream.close();
+        //鍙栫涓�涓猻heet琛�
+        Sheet sheet = workbook.getSheetAt(0);
+        int lastRowNum = sheet.getLastRowNum();
+        for (int i = 1; i <= lastRowNum; i++) {
+            System.out.println(i);
+            //浠庣浜岃寮�濮�
+            Row row = sheet.getRow(i);
+            Cell cell = row.getCell(0);
+            cell.setCellType(CellType.STRING);
+            String code = cell.getStringCellValue();
+            String name = row.getCell(1).getStringCellValue();
+            Cell cell2 = row.getCell(2);
+            cell2.setCellType(CellType.STRING);
+            String model = cell2.getStringCellValue();
+
+            MaterialCheckDTO dto = new MaterialCheckDTO();
+            dto.setNum(i);
+            dto.setSubName(name);
+            dto.setSubCode(code);
+            dto.setSubModel(model);
+            checkList.add(dto);
+        }
+        List<MaterialCheckDTO> materialCheckDTOS = CommonUtil.checkFormat(checkList);
+        int size = materialCheckDTOS.size();
+        //ECR缂栧彿,鐢宠鏃ユ湡,鐢宠浜�,鍙樻洿鎻忚堪,鍙樻洿鏂欏彿,鍙樻洿鍨嬪彿,鍙樻洿鎵�灞炲瀷鍙�,澶勭悊鏂瑰紡,鍒涘缓鏃堕棿
+        String[] title = new String[]{"搴忓彿","鐗╂枡缂栫爜","鐗╂枡鍚嶇О","瑙勬牸鍨嬪彿","涓嶈鑼冨師鍥�"};
+        String[][] values = new String[size][]; //size琛�
+        for (int i = 0; i < size; i++) {
+            values[i] = new String[5];
+            MaterialCheckDTO dto = materialCheckDTOS.get(i);
+            values[i][0] = dto.getNum().toString();
+            values[i][1] = dto.getSubCode();
+            values[i][2] = dto.getSubName();
+            values[i][3] = dto.getSubModel();
+            values[i][4] = dto.getIrregularDesc();
+        }
+        ExcelUtil.exportExcel("娓呭崟","鐗╂枡",title,values,null,response);
+    }
+
+    public Material getLastByCode(String code) {
+        QueryWrapper<Material> query = Wrappers.query();
+        query.eq("sub_code",code).orderByDesc("id").last(" limit 1");
+        return mapper.selectOne(query);
+    }
+    //鐗╂枡鎺ㄩ�佸脊绐椾娇鐢�
+    public Response getMaterialDialog(String subCode, String subName, String subModel) {
+        List<Material> list=mapper.getMaterialLimit(subCode,subName,subModel);
+        String fileDirName = FileDirPath.getFileDirName();
+        int flag=0;
+        Material m=new Material();
+        // 杩斿洖鏄惁瀛樺湪闄勪欢
+        if(list!=null&&list.size()>0){
+                m=list.get(list.size()-1);
+                if(m.getFileUrl()!=null&&!m.getFileUrl().isEmpty()){
+                    File file = new File(fileDirName+File.separator+m.getFileUrl());
+                    if(!file.exists()) {
+                        flag=0;
+                    }else{
+                        String[] fileNames = file.list();//鑾峰彇璇ユ枃浠跺す涓嬬殑鎵�鏈夋枃浠朵互鍙婄洰褰曠殑鍚嶅瓧
+                        List attachFileList=new ArrayList();
+                        if(fileNames.length>0){
+                            flag=1;
+                            for (int i=0;i<fileNames.length;i++){
+                                if(!fileNames[i].contains("-dwg.pdf")&&!fileNames[i].contains("-doc.pdf"))
+                                    attachFileList.add(fileNames[i]);
+                            }
+                        }else{
+                            flag=0;
+                        }
+                        m.setAttachFileList(attachFileList);
+                    }
+                }
+                m.setHasAttachFlag(flag);
+            }
+        return new Response().setII(1,m!=null,m,"鐗╂枡鎺ㄩ�佸脊绐椾娇鐢�");
+    }
 }

--
Gitblit v1.9.1