package com.chinaztt.mes.plan.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 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.chinaztt.mes.plan.dto.ManufacturingOrderSnGenerateDTO; import com.chinaztt.mes.plan.entity.ManufacturingOrderSnGenerate; import com.chinaztt.mes.plan.mapper.ManufacturingOrderSnGenerateMapper; import com.chinaztt.mes.plan.service.ManufacturingOrderSnGenerateService; import com.chinaztt.mes.technology.entity.Operation; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; /** * @Description: * @Author: shz * @Date: 2023/3/14 18:14 */ @AllArgsConstructor @Transactional(rollbackFor = Exception.class) @Service public class ManufacturingOrderSnGenerateServiceImpl extends ServiceImpl implements ManufacturingOrderSnGenerateService { @Override public IPage getTaskDetailPage(Page page, String customerName, String customerOrderNo, Long operationId) { return this.baseMapper.getTaskDetailPage(page, customerName, customerOrderNo, operationId); } @Override public IPage getTaskDetailPageByWorkstation(Page page, Long mpsId, List operationIds, Long operationTaskId, Boolean produceStatus) { Long moId = null; if (CollectionUtil.isNotEmpty(operationIds)) { operationTaskId = null; } else { if (operationTaskId == null) { return new Page<>(); } ManufacturingOrderSnGenerateDTO generateDTO = this.baseMapper.getJoinDocBomRoutingIdByOperationTaskId(operationTaskId); operationIds = Arrays.asList(generateDTO.getOperationId()); moId = generateDTO.getMoId(); } return this.baseMapper.getTaskDetailPageByWorkstation(page, mpsId, operationIds, moId, produceStatus); } @Override public void updateProduceStatus(List ids, Boolean produceStatus, String sn) { for (Long id : ids) { ManufacturingOrderSnGenerate generate = this.baseMapper.selectById(id); if (generate != null) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); if (generate.getIsGenerateSn()) { updateWrapper.lambda().set(ManufacturingOrderSnGenerate::getProduceStatus, produceStatus) .eq(ManufacturingOrderSnGenerate::getId, id) .eq(ManufacturingOrderSnGenerate::getProduceStatus, !produceStatus); } else { updateWrapper.lambda() .set(ManufacturingOrderSnGenerate::getSn, sn) .set(ManufacturingOrderSnGenerate::getOriginalSn, sn) .set(ManufacturingOrderSnGenerate::getProduceStatus, produceStatus) .eq(ManufacturingOrderSnGenerate::getId, id) .eq(ManufacturingOrderSnGenerate::getProduceStatus, !produceStatus); } this.update(updateWrapper); } } } @Override public boolean resetSn(List idList, Boolean isReproduce) { if (isReproduce) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().set(ManufacturingOrderSnGenerate::getSn, null) .set(ManufacturingOrderSnGenerate::getProduceStatus, false) .in(ManufacturingOrderSnGenerate::getId, idList); this.update(updateWrapper); } else { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().set(ManufacturingOrderSnGenerate::getSn, null) .set(ManufacturingOrderSnGenerate::getProduceStatus, true) .in(ManufacturingOrderSnGenerate::getId, idList); this.update(updateWrapper); } return true; } @Override public boolean updateSn(List generateList) { if (CollectionUtil.isNotEmpty(generateList)) { for (ManufacturingOrderSnGenerate snGenerate : generateList) { if (StrUtil.isBlank(snGenerate.getSn())) { throw new RuntimeException("SN不能为空"); } ManufacturingOrderSnGenerate generate = this.getById(snGenerate.getId()); if (generate != null) { if (generate.getSn() != null) { throw new RuntimeException("未进行重置操作,不能修改SN"); } int count = this.count(Wrappers.lambdaQuery().eq(ManufacturingOrderSnGenerate::getOriginalSn, snGenerate.getSn())); if (count > 0) { this.update(Wrappers.lambdaUpdate() .set(ManufacturingOrderSnGenerate::getSn, snGenerate.getSn()) .eq(ManufacturingOrderSnGenerate::getId, snGenerate.getId())); } else { throw new RuntimeException("不能编辑成未存在的SN"); } } } } return true; } @Override public List getOperationInfo(Long mpsId) { return this.baseMapper.getOperationInfo(mpsId); } @Override public void updateProduceStatusBySn(String outBatchNo, Boolean produceStatus, String sn) { List generateList = this.baseMapper.selectList(Wrappers.lambdaQuery() .eq(ManufacturingOrderSnGenerate::getSn, outBatchNo)); if (CollectionUtil.isNotEmpty(generateList)) { for (ManufacturingOrderSnGenerate generate : generateList) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); if (generate.getIsGenerateSn()) { updateWrapper.lambda().set(ManufacturingOrderSnGenerate::getProduceStatus, produceStatus) .eq(ManufacturingOrderSnGenerate::getId, generate.getId()) .eq(ManufacturingOrderSnGenerate::getProduceStatus, !produceStatus); } else { updateWrapper.lambda() .set(ManufacturingOrderSnGenerate::getSn, sn) .set(ManufacturingOrderSnGenerate::getProduceStatus, produceStatus) .eq(ManufacturingOrderSnGenerate::getId, generate.getId()) .eq(ManufacturingOrderSnGenerate::getProduceStatus, !produceStatus); } this.update(updateWrapper); } } } }