package com.ruoyi.production.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.pojo.BaseParam;
import com.ruoyi.basic.service.BaseParamService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.production.dto.ProcessRouteItemParamDto;
import com.ruoyi.production.mapper.ProcessRouteItemParamMapper;
import com.ruoyi.production.pojo.ProcessRouteItemParam;
import com.ruoyi.production.service.ProcessRouteItemParamService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
/**
*
* 工艺路线工序参数实例 ServiceImpl
*
*
* @author deslrey
* @version 1.0
* @since 2026/03/16 11:11
*/
@Slf4j
@Service
public class ProcessRouteItemParamServiceImpl extends ServiceImpl implements ProcessRouteItemParamService {
@Autowired
private BaseParamService baseParamService;
@Override
public IPage pageList(Page page, ProcessRouteItemParam param) {
return baseMapper.selectParamPage(page, param);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean initParams(Long routeItemId, Long processId) {
Long tenantId = SecurityUtils.getLoginUser().getTenantId();
if (tenantId == null) {
tenantId = 208L;
}
return baseMapper.insertFromProcessTemplate(routeItemId, processId, tenantId) > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void saveParam(ProcessRouteItemParam param) {
if (param == null) {
throw new ServiceException("新增失败,参数不能为空");
}
if (param.getRouteItemId() == null || param.getParamId() == null) {
throw new ServiceException("关联工序ID和参数项ID不能为空");
}
Long tenantId = SecurityUtils.getLoginUser().getTenantId();
Long count = baseMapper.selectCount(Wrappers.lambdaQuery()
.eq(ProcessRouteItemParam::getRouteItemId, param.getRouteItemId())
.eq(ProcessRouteItemParam::getParamId, param.getParamId())
.eq(ProcessRouteItemParam::getTenantId, tenantId));
if (count > 0) {
throw new ServiceException("该工序已存在此参数项,请勿重复添加");
}
BaseParam baseParam = baseParamService.getById(param.getParamId());
if (baseParam == null) {
throw new ServiceException("新增失败,改基础参数不存在");
}
Integer maxSort = baseMapper.selectMaxSortByRouteItemId(param.getRouteItemId());
param.setId(null);
param.setProcessParamId(null);
param.setSort(maxSort);
param.setCreateTime(LocalDateTime.now());
param.setTenantId(tenantId);
this.save(param);
}
}