package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.whyc.mapper.ProductBomApprovingMapper;
|
import com.whyc.mapper.WorksheetLinkMapper;
|
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 java.util.Date;
|
import java.util.LinkedList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class WorksheetLinkService {
|
|
@Resource
|
private WorksheetMainService mainService;
|
|
@Resource
|
private WorksheetLinkMapper linkMapper;
|
|
@Autowired
|
private ProductBomApprovingMapper approvingMapper;
|
|
@Autowired
|
private ProductBomService bomService;
|
|
@Autowired
|
private ProductBomHistoryService historyService;
|
|
@Transactional
|
public void audit(WorksheetLink link) {
|
link.setDealTime(new Date());
|
//更新节点信息
|
linkMapper.updateById(link);
|
if(link.getLinkStatus() == 2){ //驳回
|
//驳回到员工进行处理
|
//查询工单的员工
|
Long createUserId = mainService.getInfoById(link.getMainId()).getCreateUserId();
|
WorksheetLink link2 = new WorksheetLink();
|
link2.setMainId(link.getMainId());
|
link2.setParentId(link.getId());
|
link2.setDealUserId(createUserId);
|
link2.setDealType(0);
|
link2.setDealDesc("工单被经理驳回,驳回信息:"+link.getDealReason());
|
link2.setLinkStatus(0);
|
link2.setEnableArchive(0);
|
link2.setRejectVersion(link.getRejectVersion());
|
linkMapper.insert(link2);
|
//更新主表状态
|
mainService.updateStatusById(link.getMainId(),0);
|
}else{
|
//进入下一节点,总经理审批
|
WorksheetLink link2 = new WorksheetLink();
|
link2.setMainId(link.getMainId());
|
link2.setParentId(link.getId());
|
link2.setDealUserId(link.getNextUser());
|
link2.setDealType(2);
|
link2.setDealDesc("工单被经理审核通过,信息:"+link.getDealReason());
|
link2.setLinkStatus(0);
|
link2.setEnableArchive(1);
|
link2.setRejectVersion(link.getRejectVersion());
|
linkMapper.insert(link2);
|
//更新主表状态
|
mainService.updateStatusById(link.getMainId(),2);
|
}
|
}
|
|
@Transactional
|
public void approve(WorksheetLink link) {
|
link.setDealTime(new Date());
|
//更新节点信息
|
linkMapper.updateById(link);
|
if(link.getLinkStatus() == 2){ //驳回
|
//驳回到员工进行处理
|
//查询工单的员工
|
Long createUserId = mainService.getInfoById(link.getMainId()).getCreateUserId();
|
WorksheetLink link2 = new WorksheetLink();
|
link2.setMainId(link.getMainId());
|
link2.setParentId(link.getId());
|
link2.setDealUserId(createUserId);
|
link2.setDealType(0);
|
link2.setDealDesc("工单被经理驳回,驳回信息:"+link.getDealReason());
|
link2.setLinkStatus(0);
|
link2.setEnableArchive(0);
|
link2.setRejectVersion(link.getRejectVersion());
|
linkMapper.insert(link2);
|
//更新主表状态
|
mainService.updateStatusById(link.getMainId(),0);
|
}else{
|
//审批通过,更新主表状态
|
mainService.updateEndStatusById(link.getMainId(),"完结",5);
|
//将产品文件复制至正式路径
|
QueryWrapper<ProductBomApproving> query = Wrappers.query();
|
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修正,更新到正式表 TODO
|
}
|
}
|
|
/**
|
* 获取节点信息(包含main表)列表
|
* @param id
|
* @return
|
*/
|
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);
|
}
|
}
|