package cn.iocoder.yudao.module.mes.service.pro.process; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.param.MesProProcessParamSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessParamDO; import cn.iocoder.yudao.module.mes.dal.mysql.pro.process.MesProProcessParamMapper; import cn.iocoder.yudao.module.mes.service.pd.processparam.MesPdProcessParamService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * MES 工序-工艺参数绑定 Service 实现类 * * @author 超级管理员 */ @Service @Validated public class MesProProcessParamServiceImpl implements MesProProcessParamService { @Resource private MesProProcessParamMapper processParamMapper; @Resource private MesProProcessService processService; @Resource private MesPdProcessParamService pdProcessParamService; @Override public List getProcessParamListByProcessId(Long processId) { return processParamMapper.selectListByProcessId(processId); } @Override public List getProcessParamListByProcessIds(Collection processIds) { if (CollUtil.isEmpty(processIds)) { return new ArrayList<>(); } return processParamMapper.selectListByProcessIds(processIds); } @Override public List getProcessParamListByParamId(Long processParamId) { return processParamMapper.selectListByProcessParamId(processParamId); } @Override @Transactional(rollbackFor = Exception.class) public void updateProcessParams(Long processId, List items) { // 1. 校验工序存在 processService.validateProcessExists(processId); // 2. 校验工艺参数存在 if (CollUtil.isNotEmpty(items)) { for (MesProProcessParamSaveReqVO.Item item : items) { pdProcessParamService.validateProcessParamExists(item.getProcessParamId()); } } // 3. 全量覆盖:先删旧绑定,再插入新绑定 processParamMapper.deleteByProcessId(processId); if (CollUtil.isEmpty(items)) { return; } List list = new ArrayList<>(items.size()); for (int i = 0; i < items.size(); i++) { MesProProcessParamSaveReqVO.Item item = items.get(i); list.add(MesProProcessParamDO.builder() .processId(processId) .processParamId(item.getProcessParamId()) .required(Boolean.TRUE.equals(item.getRequired())) .sort(item.getSort() != null ? item.getSort() : i + 1) .remark(item.getRemark()) .build()); } processParamMapper.insertBatch(list); } @Override public void deleteByParamId(Long processParamId) { processParamMapper.deleteByProcessParamId(processParamId); } }