whycxzp
2024-01-03 d2ba7ed50955701234b1b50ceaf04fe36b86c61d
src/main/java/com/whyc/service/MaterialService.java
@@ -8,10 +8,7 @@
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 +35,9 @@
    @Autowired
    private MaterialHistoryService mhService;
    @Autowired
    private AttachLockService attachLockService;
    //查询所有的散装件信息加设置了替换关系的子件信息
    /*public Response getAllMaterial(String category,String subCode,String subName,String subModel,int pageCurr,int pageSize) {
@@ -222,9 +222,24 @@
        return mapper.getListByCodeAndModelList2(bomList);
    }
    public Material getByCodeAndModel(String subCode, String subModel) {
    /**
     *
     * @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);
    }
@@ -477,6 +492,39 @@
    }
    /**
     * 转移 被复制的附件,到新的物料
     * @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);
        //设置物料对应的fileUrl及物料状态
        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
     */
@@ -628,4 +676,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,"物料推送弹窗使用");
    }
}