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<ManufacturingOrderSnGenerateMapper, ManufacturingOrderSnGenerate> implements ManufacturingOrderSnGenerateService {
|
|
@Override
|
public IPage<ManufacturingOrderSnGenerateDTO> getTaskDetailPage(Page page, String customerName, String customerOrderNo, Long operationId) {
|
return this.baseMapper.getTaskDetailPage(page, customerName, customerOrderNo, operationId);
|
}
|
|
@Override
|
public IPage<ManufacturingOrderSnGenerateDTO> getTaskDetailPageByWorkstation(Page page, Long mpsId, List<Long> 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<Long> ids, Boolean produceStatus, String sn) {
|
for (Long id : ids) {
|
ManufacturingOrderSnGenerate generate = this.baseMapper.selectById(id);
|
if (generate != null) {
|
UpdateWrapper<ManufacturingOrderSnGenerate> 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<Long> idList, Boolean isReproduce) {
|
if (isReproduce) {
|
UpdateWrapper<ManufacturingOrderSnGenerate> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.lambda().set(ManufacturingOrderSnGenerate::getSn, null)
|
.set(ManufacturingOrderSnGenerate::getProduceStatus, false)
|
.in(ManufacturingOrderSnGenerate::getId, idList);
|
this.update(updateWrapper);
|
} else {
|
UpdateWrapper<ManufacturingOrderSnGenerate> 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<ManufacturingOrderSnGenerate> 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.<ManufacturingOrderSnGenerate>lambdaQuery().eq(ManufacturingOrderSnGenerate::getOriginalSn, snGenerate.getSn()));
|
if (count > 0) {
|
this.update(Wrappers.<ManufacturingOrderSnGenerate>lambdaUpdate()
|
.set(ManufacturingOrderSnGenerate::getSn, snGenerate.getSn())
|
.eq(ManufacturingOrderSnGenerate::getId, snGenerate.getId()));
|
} else {
|
throw new RuntimeException("不能编辑成未存在的SN");
|
}
|
}
|
}
|
}
|
return true;
|
}
|
|
@Override
|
public List<Operation> getOperationInfo(Long mpsId) {
|
return this.baseMapper.getOperationInfo(mpsId);
|
}
|
|
@Override
|
public void updateProduceStatusBySn(String outBatchNo, Boolean produceStatus, String sn) {
|
List<ManufacturingOrderSnGenerate> generateList = this.baseMapper.selectList(Wrappers.<ManufacturingOrderSnGenerate>lambdaQuery()
|
.eq(ManufacturingOrderSnGenerate::getSn, outBatchNo));
|
if (CollectionUtil.isNotEmpty(generateList)) {
|
for (ManufacturingOrderSnGenerate generate : generateList) {
|
UpdateWrapper<ManufacturingOrderSnGenerate> 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);
|
}
|
}
|
}
|
}
|