whyclxw
2025-03-13 ff98efbc32a3c28ea204e4de8c1bef23c089384e
src/main/java/com/whyc/service/MaterialService.java
@@ -5,6 +5,7 @@
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;
@@ -38,6 +39,12 @@
    @Autowired
    private AttachLockService attachLockService;
    @Autowired
    private MailService mailService;
    @Autowired
    private MailUserService mailUserService;
    //查询所有的散装件信息加设置了替换关系的子件信息
    /*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());
        //从materialList中查找 subCode以0120开头的所有物料集合
        List<Material> materialCodeList0120 = materialList.stream().filter(material -> material.getSubCode().startsWith("0120")).collect(Collectors.toList());
        //从materialList中查找 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() + "在文档管理平台"+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() + "在文档管理平台"+now+"上传了0108或0109开头的物料,详细信息如下:\n物料编码:"+subCodeJoin+"\n物料名称:"+subNameJoin+"\n规格型号:"+subModelJoin);
                mailService.sendMail(mailDTO);
            }
        }
        return new Response().set(1,true,"新增完成");
    }
@@ -220,6 +262,10 @@
    public List<Material> getListByCodeAndModelList2(List<ProductBom> bomList) {
        return mapper.getListByCodeAndModelList2(bomList);
    }
    public List<Material> getListByCodeAndModelList3(List<ProductBom> bomList) {
        return mapper.getListByCodeAndModelList3(bomList);
    }
    /**
@@ -260,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);
        //解压文件夹
@@ -424,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);
        /*//解压文件夹,删除原zip文件
        String unPackageDir = dirPath + File.separator + timestamp;
        Zip4jUtil.unPackZip(zipFile, null, unPackageDir);
@@ -487,7 +541,23 @@
        //上传的文件夹转移到正式路径
        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()+"在文档管理平台"+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()+"在文档管理平台"+formattedNow+"上传了附件,详细信息如下:\n物料编码:"+subCode+"\n物料名称:"+materialById.getSubName()+"\n物料型号:"+subModel+"\n附件名称:"+fileNameJoin.toString());
            mailService.sendMail(mailDTO);
        }
        return new Response().set(1,true,"上传完成");
    }
@@ -532,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();
@@ -573,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()+"在文档管理平台"+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()+"在文档管理平台"+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 {