0108、0109开头的物料BOM清单上传的时候覆盖之前相同编码的物料,保留之前的附件及附件状态
4个文件已修改
51 ■■■■■ 已修改文件
src/main/java/com/whyc/pojo/AttachLock.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AttachLockService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/MaterialService.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/ProductService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/AttachLock.java
@@ -16,7 +16,7 @@
@TableName("tb_attach_lock")
@ApiModel(value="AttachLock", description="")
public class AttachLock implements Serializable {
    private int id;
    private Integer id;
    private int materialId;
    @TableField(exist = false)
src/main/java/com/whyc/service/AttachLockService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.dto.Response;
import com.whyc.mapper.AttachLockMapper;
import com.whyc.pojo.AttachLock;
@@ -63,4 +64,18 @@
        });
        return new Response().set(1,true,"");
    }
    public void getAndInsert(Integer materialIdInDB, Integer materialId) {
        QueryWrapper<AttachLock> query = Wrappers.query();
        query.eq("material_id",materialIdInDB).eq("lock_flag",1).eq("product_id",0);
        List<AttachLock> attachLocksInDB = mapper.selectList(query);
        attachLocksInDB.forEach(attachLock -> {
            attachLock.setId(null);
            attachLock.setMaterialId(materialId);
        });
        if(attachLocksInDB.size()!=0) {
            mapper.insertBatchSomeColumn(attachLocksInDB);
        }
    }
}
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) {
@@ -493,33 +493,33 @@
    /**
     * 转移 被复制的附件,到新的物料
     * @param fileUrlDir 被复制的附件路径,例如:doc_file\material\8468-0109000512-SHIDA-2455-OLD-ZX_A01
     * @param materialDB .fileUrl 被复制的附件路径,例如:doc_file\material\8468-0109000512-SHIDA-2455-OLD-ZX_A01
     * @param material 新的物料
     * @return 返回被追加文件的文件夹路径
     */
    @Transactional
    public Response transferCopiedAttachment(String fileUrlDir, Material material) throws IOException {
    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);
        boolean dirFileExist = true;
        if(!dirFile.exists()){
            dirFile.mkdirs();
            dirFileExist = false;
        }
        FileUtil.copyDirectory(new File(CommonUtil.getProjectDir() + File.separator + fileUrlDir),dirFile);
        if(!dirFileExist){
            //路径不存在,说明是首次上传,设置物料对应的fileUrl
            Material temp = new Material();
            temp.setId(material.getId());
            temp.setFileUrl(dirPathDB);
            mapper.updateById(temp);
        }
        //设置物料对应的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,"上传完成");
    }
src/main/java/com/whyc/service/ProductService.java
@@ -1068,14 +1068,14 @@
                materialHistoryService.addBatch(materialHistoryList);
            }
            //如果新上传的bom中存在0108、0109开头的物料,(肯定会被识别成新物料,之前的操作已经被插入到表中)
            // 在数据库存在相同的物料编码存在且不同的物料型号,则将数据库最新的物料的附件复制一份,填充到新的物料表中
            // 在数据库存在相同的物料编码存在且不同的物料型号,则将数据库最新的物料的附件复制一份并状态同步,填充到新的物料表中
            for (Material material : newMaterialList) { //新物料
                String subCode = material.getSubCode();
                String subModel = material.getSubModel();
                if(subCode.startsWith("0108") || subCode.startsWith("0109")){
                    Material materialWithSameCodeLatest = mService.getByCodeAndModel(subCode, subModel, false);
                    //附件转移并设置
                    mService.transferCopiedAttachment(materialWithSameCodeLatest.getFileUrl(),material);
                    mService.transferCopiedAttachment(materialWithSameCodeLatest,material);
                }
            }