package com.aps.core.service.impl;
|
|
import java.math.BigDecimal;
|
import java.util.Hashtable;
|
import java.util.List;
|
import java.util.Optional;
|
import java.util.stream.Collectors;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.aps.common.core.utils.DateUtils;
|
import com.aps.common.security.utils.SecurityUtils;
|
import com.aps.core.domain.ApsPlateStandardRequire;
|
import com.aps.core.domain.ApsPlateStandardRequireError;
|
import com.aps.core.domain.ApsStandardProcessRouteHeader;
|
import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper;
|
import com.aps.core.mapper.ApsStandardProcessRouteHeaderMapper;
|
import jakarta.annotation.Resource;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.aps.core.mapper.ApsStandardProcessRouteLineMapper;
|
import com.aps.core.domain.ApsStandardProcessRouteLine;
|
import com.aps.core.service.IApsStandardProcessRouteLineService;
|
|
/**
|
* 标准工艺路线LineService业务层处理
|
*
|
* @author zhl
|
* @date 2025-05-06
|
*/
|
@Service
|
public class ApsStandardProcessRouteLineServiceImpl implements IApsStandardProcessRouteLineService
|
{
|
@Autowired
|
private ApsStandardProcessRouteLineMapper apsStandardProcessRouteLineMapper;
|
@Resource
|
ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper;
|
@Resource
|
ApsPlateStandardRequireErrorMapper requireErrorMapper;
|
/**
|
* 查询标准工艺路线Line
|
*
|
* @param id 标准工艺路线Line主键
|
* @return 标准工艺路线Line
|
*/
|
@Override
|
public ApsStandardProcessRouteLine selectApsStandardProcessRouteLineById(Long id)
|
{
|
return apsStandardProcessRouteLineMapper.selectApsStandardProcessRouteLineById(id);
|
}
|
|
/**
|
* 查询标准工艺路线Line列表
|
*
|
* @param apsStandardProcessRouteLine 标准工艺路线Line
|
* @return 标准工艺路线Line
|
*/
|
@Override
|
public List<ApsStandardProcessRouteLine> selectApsStandardProcessRouteLineList(ApsStandardProcessRouteLine apsStandardProcessRouteLine)
|
{
|
return apsStandardProcessRouteLineMapper.selectApsStandardProcessRouteLineList(apsStandardProcessRouteLine);
|
}
|
|
/**
|
* 新增标准工艺路线Line
|
*
|
* @param apsStandardProcessRouteLine 标准工艺路线Line
|
* @return 结果
|
*/
|
@Override
|
public int insertApsStandardProcessRouteLine(ApsStandardProcessRouteLine apsStandardProcessRouteLine)
|
{
|
apsStandardProcessRouteLine.setCreateTime(DateUtils.getNowDate());
|
return apsStandardProcessRouteLineMapper.insertApsStandardProcessRouteLine(apsStandardProcessRouteLine);
|
}
|
|
/**
|
* 修改标准工艺路线Line
|
*
|
* @param apsStandardProcessRouteLine 标准工艺路线Line
|
* @return 结果
|
*/
|
@Override
|
public int updateApsStandardProcessRouteLine(ApsStandardProcessRouteLine apsStandardProcessRouteLine)
|
{
|
apsStandardProcessRouteLine.setUpdateTime(DateUtils.getNowDate());
|
return apsStandardProcessRouteLineMapper.updateApsStandardProcessRouteLine(apsStandardProcessRouteLine);
|
}
|
|
/**
|
* 批量删除标准工艺路线Line
|
*
|
* @param ids 需要删除的标准工艺路线Line主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsStandardProcessRouteLineByIds(Long[] ids)
|
{
|
return apsStandardProcessRouteLineMapper.deleteApsStandardProcessRouteLineByIds(ids);
|
}
|
|
/**
|
* 删除标准工艺路线Line信息
|
*
|
* @param id 标准工艺路线Line主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsStandardProcessRouteLineById(Long id)
|
{
|
return apsStandardProcessRouteLineMapper.deleteApsStandardProcessRouteLineById(id);
|
}
|
/**
|
* 根据料号 查询工艺路线 及其下的工序,计算工艺路线总工时
|
* @param require 需求信息
|
* @return 工艺路线总工时
|
*/
|
@Override
|
public ApsStandardProcessRouteLine getRouteLineTotalTime(ApsPlateStandardRequire require) {
|
// 初始化总工时为0
|
BigDecimal totalRouteTime = BigDecimal.ZERO;
|
//工厂
|
String plant=require.getOrgCode();
|
// 物料号
|
String itemNumber=require.getBomLineCode();
|
long routId=0L;
|
ApsStandardProcessRouteLine ret=new ApsStandardProcessRouteLine();
|
ret.setRouteId(String.valueOf(routId));
|
ret.setRouteTime(BigDecimal.ZERO);
|
// 查询标准工艺路线头部信息
|
Optional<ApsStandardProcessRouteHeader> firstProcessRoute = standardProcessRouteHeaderMapper.queryStandardProcessRouteHeaderByPlantAndItemCode(plant, itemNumber).stream().findFirst();
|
if (firstProcessRoute.isPresent()) {
|
ApsStandardProcessRouteHeader routeHeader = firstProcessRoute.get();
|
// 构建工艺路线行参数对象
|
ApsStandardProcessRouteLine routeLineParam =new ApsStandardProcessRouteLine();
|
routeLineParam.setRouteId(routeHeader.getRouteId());
|
// 查询标准工艺路线行信息
|
BigDecimal standardTime = apsStandardProcessRouteLineMapper.selectTotalStandTime(routeHeader.getRouteId()).getStandardTime();
|
totalRouteTime =standardTime.multiply(require.getNetRequirement());
|
ret.setRouteTime(totalRouteTime);
|
ret.setRouteId(routeHeader.getRouteId());
|
}else {
|
saveRequireError(require,"标准工艺路线不存在");
|
}
|
// 返回总工时
|
return ret;
|
}
|
|
private void saveRequireError(ApsPlateStandardRequire require,String message) {
|
ApsPlateStandardRequireError data = ApsPlateStandardRequireError.builder()
|
.id(IdUtil.getSnowflakeNextId())
|
.requireId(require.getId())
|
.batchNumber(require.getBatchNumber())
|
.docNum(require.getDocNum())
|
.itemNum(require.getBomLineCode())
|
.orgCode(require.getOrgCode())
|
.message(message)
|
.delFlag("0")
|
.build();
|
data.setCreateBy(SecurityUtils.getUsername());
|
data.setCreateTime(DateUtils.getNowDate());
|
requireErrorMapper.insertApsPlateStandardRequireError(data);
|
}
|
}
|