whycxzp
2024-01-03 d2ba7ed50955701234b1b50ceaf04fe36b86c61d
src/main/java/com/whyc/service/MaterialService.java
@@ -8,9 +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.ProductBom;
import com.whyc.pojo.*;
import com.whyc.util.DateUtil;
import com.whyc.util.*;
import org.apache.commons.codec.binary.Base64;
@@ -34,6 +32,13 @@
public class MaterialService {
    @Autowired(required = false)
    private MaterialMapper mapper;
    @Autowired
    private MaterialHistoryService mhService;
    @Autowired
    private AttachLockService attachLockService;
    //查询所有的散装件信息加设置了替换关系的子件信息
    /*public Response getAllMaterial(String category,String subCode,String subName,String subModel,int pageCurr,int pageSize) {
        PageHelper.startPage(pageCurr,pageSize);
@@ -75,6 +80,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,"查询所有物料(分页,模糊查询)");
    }
@@ -190,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);
    }
@@ -378,8 +425,10 @@
        List<String> currentFileList = new LinkedList<>();
        List<String> uploadingFileList = new LinkedList<>();
        String dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + material.getSubModel();
        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + material.getSubModel();
        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);
        Date now = new Date();
@@ -443,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
     */
@@ -450,9 +532,10 @@
    public Response updatePicOrDwg(MultipartFile multipartFile, Material material) throws IOException {
        List<String> currentFileList = new LinkedList<>();
        List<String> uploadingFileList = new LinkedList<>();
        String dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getId() + "-" + material.getSubCode() + "-" + material.getSubModel();
        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-" + material.getSubCode() + "-" + material.getSubModel();
        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;
        File dirFile = new File(dirPath);
        Date now = new Date();
@@ -470,14 +553,25 @@
        multipartFile.transferTo(zipFile);
        //路径不存在,说明是首次上传,设置物料对应的fileUrl
        //同时在物料历史里面添加记录
        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);
        return new Response().set(1, true, "上传完成");
    }
@@ -576,4 +670,42 @@
        }
        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,"物料推送弹窗使用");
    }
}