longyvfengyun
2022-07-28 3260a06c24c3624bdcb25110fd86f38a7a563cf8
src/main/java/com/whyc/service/WorksheetLinkService.java
@@ -4,18 +4,16 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.mapper.ProductBomApprovingMapper;
import com.whyc.mapper.WorksheetLinkMapper;
import com.whyc.pojo.ProductBomApproving;
import com.whyc.pojo.WorksheetLink;
import com.whyc.util.CommonUtil;
import org.aspectj.util.FileUtil;
import com.whyc.pojo.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.naming.CommunicationException;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class WorksheetLinkService {
@@ -29,6 +27,11 @@
    @Autowired
    private ProductBomApprovingMapper approvingMapper;
    @Autowired
    private ProductBomService bomService;
    @Autowired
    private ProductBomHistoryService historyService;
    @Transactional
    public void audit(WorksheetLink link) {
@@ -47,6 +50,7 @@
            link2.setDealDesc("工单被经理驳回,驳回信息:"+link.getDealReason());
            link2.setLinkStatus(0);
            link2.setEnableArchive(0);
            link2.setRejectVersion(link.getRejectVersion());
            linkMapper.insert(link2);
            //更新主表状态
            mainService.updateStatusById(link.getMainId(),0);
@@ -60,6 +64,7 @@
            link2.setDealDesc("工单被经理审核通过,信息:"+link.getDealReason());
            link2.setLinkStatus(0);
            link2.setEnableArchive(1);
            link2.setRejectVersion(link.getRejectVersion());
            linkMapper.insert(link2);
            //更新主表状态
            mainService.updateStatusById(link.getMainId(),2);
@@ -83,6 +88,7 @@
            link2.setDealDesc("工单被经理驳回,驳回信息:"+link.getDealReason());
            link2.setLinkStatus(0);
            link2.setEnableArchive(0);
            link2.setRejectVersion(link.getRejectVersion());
            linkMapper.insert(link2);
            //更新主表状态
            mainService.updateStatusById(link.getMainId(),0);
@@ -94,11 +100,80 @@
            query.eq("main_id",link.getMainId());
            List<ProductBomApproving> approvingList = approvingMapper.selectList(query);
            //增加->增加部件(增加记录,同时所有eVersion+1)
            //修改->修改部件图纸,修改部件非图纸(增加记录,同时修改非原部件的所有eVersion+1)
            //删除? TODO 需要约定逻辑
            //查询部件最新的版本号
            ProductBom product = bomService.getProduct(approvingList.get(0).getParentModel());
            int currentVersion = -1;
            if(product!=null){
                currentVersion = product.getVersion();
            }
            Integer nextVersion = currentVersion+1;
            //更新到product_bom_history,增加进去的需要sVersion和eVersion一致
            //增加所有部件,排查出相关的原部件,非也是更新
            List<ProductBomHistory> currentHistoryList = historyService.getListByParentModel(approvingList.get(0).getParentModel(),currentVersion);
            List<String> currentSubNameList = currentHistoryList.stream().map(ProductBomHistory::getSubName).collect(Collectors.toList());
            List<ProductBomHistory> newHistoryList = new LinkedList<>();
            approvingList.forEach(approvingBom->{
                if(currentSubNameList.contains(approvingBom.getSubName())){
                    approvingBom.setVersion(1);
                }else{
                    approvingBom.setVersion(0);
                }
                //转化为productBomHistory
                ProductBomHistory his = new ProductBomHistory();
                his.setCategory(approvingBom.getCategory());
                his.setCreateDate(approvingBom.getCreateDate());
                his.setDwgUrl(approvingBom.getDwgUrl());
                his.setEVersion(nextVersion);
                his.setFileUrl(approvingBom.getFileUrl());
                his.setMaterial(approvingBom.getMaterial());
                his.setNotes(approvingBom.getNotes());
                his.setParentCode(approvingBom.getParentCode());
                his.setParentModel(approvingBom.getParentModel());
                his.setParentName(approvingBom.getParentName());
                his.setParentVersion(approvingBom.getParentVersion());
                his.setPictureUrl(approvingBom.getPictureUrl());
                his.setProducer(approvingBom.getProducer());
                his.setQuantity(approvingBom.getQuantity());
                his.setSubCode(approvingBom.getSubCode());
                his.setSubModel(approvingBom.getSubModel());
                his.setSubName(approvingBom.getSubName());
                his.setSurfaceDetail(approvingBom.getSurfaceDetail());
                his.setSVersion(nextVersion);
                his.setThickness(approvingBom.getThickness());
                his.setType(approvingBom.getType());
                his.setUnit(approvingBom.getUnit());
                his.setUpdateDate(approvingBom.getUpdateDate());
                his.setUpUser(approvingBom.getUpUser());
                newHistoryList.add(his);
            });
            //本次审核中子件被修改的子件集合
            List<String> approvingUpdateSubNameList = approvingList.stream().filter(approvingBom -> approvingBom.getVersion() == 1).map(ProductBomApproving::getSubName).collect(Collectors.toList());
            historyService.addBatch(newHistoryList);
            /*更新产品的当前版本,更新到最新的版本*/
            //当前版本的所有bom的eVersion更新,排除被修改的子件
            List<ProductBomHistory> newVersionCurrentHistoryList = currentHistoryList.stream()
                    .filter(currentHistory -> !approvingUpdateSubNameList.contains(currentHistory.getSubName()))
                    .collect(Collectors.toList());
            newVersionCurrentHistoryList.forEach(history->{history.setEVersion(nextVersion);});
            historyService.updateVersionBatch(newVersionCurrentHistoryList);
            /*更新到product_bom*/
            //查询新的版本
            List<ProductBomHistory> newBomList = historyService.getListByParentModel(approvingList.get(0).getParentModel(), nextVersion);
            bomService.updateNewBom(newBomList);
            /*String projectDir = CommonUtil.getProjectDir();
            FileUtil.copyDir()*/
            //将产品bom表的url修正,更新到正式表
            //将产品bom表的url修正,更新到正式表 TODO
        }
    }
@@ -110,4 +185,28 @@
    public List<WorksheetLink> getInfoList(Long id) {
        return linkMapper.getInfoList(id);
    }
    /**
     *
     * @param userId 总经理对应的userId
     * @param statusExp 0:未审批,1:已审批(包含状态值1,2)
     * @return
     */
    public List<WorksheetMain> getInfoList2(Long userId, int statusExp) {
        return linkMapper.getInfoList2(userId,statusExp);
    }
    /**
     *
     * @param userId 总经理对应的userId
     * @param statusExp 0:未审批,1:已审批(包含状态值1,2)
     * @return
     */
    public List<WorksheetMain> getInfoList3(Long userId, int statusExp) {
        return linkMapper.getInfoList3(userId,statusExp);
    }
    public DocUser getApprovingUser(Integer mainId) {
        return linkMapper.getApprovingUser(mainId);
    }
}