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 |  193 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 181 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/whyc/service/MaterialService.java b/src/main/java/com/whyc/service/MaterialService.java
index 40ffa17..30bc030 100644
--- a/src/main/java/com/whyc/service/MaterialService.java
+++ b/src/main/java/com/whyc/service/MaterialService.java
@@ -5,13 +5,11 @@
 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.MaterialHistory;
-import com.whyc.pojo.ProductBom;
+import com.whyc.pojo.*;
 import com.whyc.util.DateUtil;
 import com.whyc.util.*;
 import org.apache.commons.codec.binary.Base64;
@@ -38,6 +36,15 @@
 
     @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) {
@@ -211,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,"鏂板瀹屾垚");
     }
 
@@ -222,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);
     }
 
@@ -245,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帇鏂囦欢澶�
@@ -409,28 +473,33 @@
     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() + "-"+ material.getSubCode() + "-" + subModel;
-        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + 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);
@@ -472,6 +541,55 @@
         //涓婁紶鐨勬枃浠跺す杞Щ鍒版寮忚矾寰�
         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,"涓婁紶瀹屾垚");
     }
@@ -484,15 +602,17 @@
     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 + material.getSubCode() + "-" + subModel;
-        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getSubCode() + "-" + 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();
@@ -525,6 +645,23 @@
         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 {
@@ -628,4 +765,36 @@
         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