package com.qianwen.smartman.modules.trace.service.impl; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qianwen.core.log.exception.ServiceException; import com.qianwen.core.mp.base.BaseServiceImpl; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.smartman.modules.trace.convert.TraceFlowSettingsConvert; import com.qianwen.smartman.modules.trace.convert.TraceRelatedWorkstationConvert; import com.qianwen.smartman.modules.trace.entity.TraceFlowSettings; import com.qianwen.smartman.modules.trace.entity.TraceRelatedWorkstation; import com.qianwen.smartman.modules.trace.enums.FlowTypeEnum; import com.qianwen.smartman.modules.trace.enums.TriggerEndFlowStyleEnum; import com.qianwen.smartman.modules.trace.mapper.TraceFlowSettingsMapper; import com.qianwen.smartman.modules.trace.mapper.TraceRelatedWorkstationMapper; import com.qianwen.smartman.modules.trace.service.ITraceFlowSettingsService; import com.qianwen.smartman.modules.trace.service.ITraceRelatedWorkstationService; import com.qianwen.smartman.modules.trace.vo.TraceFlowSettingsVO; import com.qianwen.smartman.modules.trace.vo.TraceFlowSettingsWorkstationVO; import com.qianwen.smartman.modules.trace.vo.TraceRelatedWorkstationVO; @Service /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/trace/service/impl/TraceFlowSettingsServiceImpl.class */ public class TraceFlowSettingsServiceImpl extends BaseServiceImpl implements ITraceFlowSettingsService { private final ITraceRelatedWorkstationService traceRelatedWorkstationService; private final TraceRelatedWorkstationMapper traceRelatedWorkstationMapper; private final Long CURRENT_FLOW = 1L; public TraceFlowSettingsServiceImpl(final ITraceRelatedWorkstationService traceRelatedWorkstationService, final TraceRelatedWorkstationMapper traceRelatedWorkstationMapper) { this.traceRelatedWorkstationService = traceRelatedWorkstationService; this.traceRelatedWorkstationMapper = traceRelatedWorkstationMapper; } @Override // org.springblade.modules.trace.service.ITraceFlowSettingsService @Transactional(rollbackFor = {Exception.class}) public TraceFlowSettingsWorkstationVO save(TraceFlowSettingsWorkstationVO traceFlowSettingsWorkstationVO) { List traceRelatedWorkstationVOList = new ArrayList<>(); TraceFlowSettingsVO traceFlowSettingsVO = traceFlowSettingsWorkstationVO.getTraceFlowSettingsVO(); TraceFlowSettings traceFlowSettings = TraceFlowSettingsConvert.INSTANCE.convert(traceFlowSettingsVO); if (Func.isEmpty(traceFlowSettingsVO.getId())) { Integer maxSeq = list(Wrappers.lambdaQuery() .ne(Func.isNotEmpty(traceFlowSettingsVO.getId()), TraceFlowSettings::getId, traceFlowSettingsVO.getId()) .eq(TraceFlowSettings::getWorkstationGroupId, traceFlowSettingsVO.getWorkstationGroupId())).stream().map(TraceFlowSettings::getFlowSeq).max(Integer::compare).orElse(-1); /* Integer maxSeq = (Integer) list((Wrapper) Wrappers.lambdaQuery().ne(Func.isNotEmpty(traceFlowSettingsVO.getId()), (v0) -> { return v0.getId(); }, traceFlowSettingsVO.getId()).eq((v0) -> { return v0.getWorkstationGroupId(); }, traceFlowSettingsVO.getWorkstationGroupId())).stream().map((v0) -> { return v0.getFlowSeq(); }).max((v0, v1) -> { return Integer.compare(v0, v1); }).orElse(-1);*/ traceFlowSettings.setFlowSeq(Integer.valueOf(maxSeq.intValue() + 1)); } checkSetting(traceFlowSettingsVO); saveOrUpdate(traceFlowSettings); if (this.CURRENT_FLOW.equals(traceFlowSettingsVO.getQualityMakerFlowId())) { traceFlowSettings.setQualityMakerFlowId(traceFlowSettings.getId()); updateById(traceFlowSettings); } TraceFlowSettingsVO traceFlowSettingsVOReturn = TraceFlowSettingsConvert.INSTANCE.convert(traceFlowSettings); List traceRelatedWorkstationVOS = traceFlowSettingsWorkstationVO.getTraceRelatedWorkstationVOList(); this.traceRelatedWorkstationService.remove(Wrappers.lambdaQuery().eq(TraceRelatedWorkstation::getTraceFlowSettingId, traceFlowSettingsVOReturn.getId())); /* this.traceRelatedWorkstationService.remove((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getTraceFlowSettingId(); }, traceFlowSettingsVOReturn.getId()));*/ if (Func.isNotEmpty(traceRelatedWorkstationVOS)) { List traceRelatedWorkstations = TraceRelatedWorkstationConvert.INSTANCE.convertVo(traceRelatedWorkstationVOS); checkRelatedWorkstation(traceRelatedWorkstations); traceRelatedWorkstations.forEach(traceRelatedWorkstation -> { traceRelatedWorkstation.setTraceFlowSettingId(traceFlowSettingsVOReturn.getId()); }); this.traceRelatedWorkstationService.saveOrUpdateBatch(traceRelatedWorkstations); traceRelatedWorkstationVOList = TraceRelatedWorkstationConvert.INSTANCE.convert(traceRelatedWorkstations); } TraceFlowSettingsWorkstationVO traceFlowSettingsWorkstationVOReturn = new TraceFlowSettingsWorkstationVO(); traceFlowSettingsWorkstationVOReturn.setTraceFlowSettingsVO(traceFlowSettingsVOReturn); traceFlowSettingsWorkstationVOReturn.setTraceRelatedWorkstationVOList(traceRelatedWorkstationVOList); return traceFlowSettingsWorkstationVOReturn; } @Override // org.springblade.modules.trace.service.ITraceFlowSettingsService public IPage page(Long groupId, Query query) { return ((TraceFlowSettingsMapper) this.baseMapper).page(Condition.getPage(query), groupId); } @Override // org.springblade.modules.trace.service.ITraceFlowSettingsService public TraceFlowSettingsWorkstationVO detail(Long id) { TraceFlowSettingsVO traceFlowSettingsVO = ((TraceFlowSettingsMapper) this.baseMapper).detail(id); List traceRelatedWorkstationVOList = this.traceRelatedWorkstationMapper.listBySettingId(id); TraceFlowSettingsWorkstationVO traceFlowSettingsWorkstationVO = new TraceFlowSettingsWorkstationVO(); traceFlowSettingsWorkstationVO.setTraceFlowSettingsVO(traceFlowSettingsVO); traceFlowSettingsWorkstationVO.setTraceRelatedWorkstationVOList(traceRelatedWorkstationVOList); return traceFlowSettingsWorkstationVO; } @Override // org.springblade.modules.trace.service.ITraceFlowSettingsService public Boolean changeSort(List traceFlowSettingsVOList) { List collect = traceFlowSettingsVOList.stream().map(t -> { TraceFlowSettings traceFlowSettings = (TraceFlowSettings) getById(t.getId()); traceFlowSettings.setFlowSeq(t.getFlowSeq()); return traceFlowSettings; }).collect(Collectors.toList()); return Boolean.valueOf(updateBatchById(collect)); } @Override // org.springblade.modules.trace.service.ITraceFlowSettingsService @Transactional(rollbackFor = {Exception.class}) public boolean remove(List ids) { List idList = Func.toLongList(ids); idList.forEach(id -> { long count = count(Wrappers.lambdaQuery().eq(TraceFlowSettings::getQualityMakerFlowId, id).ne(TraceFlowSettings::getId, id)); /* long count = count((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getQualityMakerFlowId(); }, id)).ne((v0) -> { return v0.getId(); }, id));*/ if (count > 0) { throw new ServiceException(MessageUtils.message("cps.traceFlowSettings.ids.have.been.bound", new Object[0])); } }); removeByIds(idList); this.traceRelatedWorkstationService.remove(Wrappers.lambdaQuery().in(TraceRelatedWorkstation::getTraceFlowSettingId, idList)); /* this.traceRelatedWorkstationService.remove((Wrapper) Wrappers.lambdaQuery().in((v0) -> { return v0.getTraceFlowSettingId(); }, idList));*/ return true; } public void checkSetting(TraceFlowSettingsVO traceFlowSettingsVO) { Long id = traceFlowSettingsVO.getId(); long count = count(Wrappers.lambdaQuery() .ne(Func.isNotEmpty(id), TraceFlowSettings::getId, id) .eq(TraceFlowSettings::getCode, traceFlowSettingsVO.getCode())); /* long count = count((Wrapper) Wrappers.lambdaQuery().ne(Func.isNotEmpty(id), (v0) -> { return v0.getId(); }, id).eq((v0) -> { return v0.getCode(); }, traceFlowSettingsVO.getCode()));*/ if (count > 0) { throw new ServiceException(MessageUtils.message("cps.traceFlowSettings.code.already.exists", new Object[0])); } if (FlowTypeEnum.ONLINE_STATION.getCode().equals(traceFlowSettingsVO.getFlowType()) && !TriggerEndFlowStyleEnum.SELF_FLOW.getCode().equals(traceFlowSettingsVO.getTriggerEndFlowStyle())) { throw new ServiceException(MessageUtils.message("cps.trace.flow.settings.only.this.flow", new Object[0])); } List flowSeqs = list(Wrappers.lambdaQuery() .ne(Func.isNotEmpty(traceFlowSettingsVO.getId()), TraceFlowSettings::getId, traceFlowSettingsVO.getId()) .eq(TraceFlowSettings::getWorkstationGroupId, traceFlowSettingsVO.getWorkstationGroupId())) .stream().map(TraceFlowSettings::getFlowSeq).filter(Func::isNotEmpty).collect(Collectors.toList()); /* List flowSeqs = (List) list((Wrapper) Wrappers.lambdaQuery().ne(Func.isNotEmpty(traceFlowSettingsVO.getId()), (v0) -> { return v0.getId(); }, traceFlowSettingsVO.getId()).eq((v0) -> { return v0.getWorkstationGroupId(); }, traceFlowSettingsVO.getWorkstationGroupId())).stream().map((v0) -> { return v0.getFlowSeq(); }).filter((v0) -> { return Func.isNotEmpty(v0); }).collect(Collectors.toList());*/ if (flowSeqs.contains(traceFlowSettingsVO.getFlowSeq())) { throw new ServiceException(MessageUtils.message("cps.traceFlowSettings.flowSeq.already.exists", new Object[0])); } } public void checkRelatedWorkstation(List traceRelatedWorkstations) { Map> collect = traceRelatedWorkstations.stream().collect(Collectors.groupingBy(t -> { return (t.getWorkstationId().longValue() + t.getWorkbenchId().longValue()) + t.getMachiningPosition(); })); collect.forEach((key, list) -> { if (list.size() > 1) { throw new ServiceException(MessageUtils.message("cps.relatedWorkstation.already.exists", new Object[0])); } }); } }