package cn.iocoder.yudao.module.mes.service.qc.pendinginspect;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils;
|
import cn.iocoder.yudao.module.mes.controller.admin.qc.pendinginspect.vo.MesQcPendingInspectPageReqVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.qc.pendinginspect.vo.MesQcPendingInspectRespVO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.qc.pendinginspect.MesQcPendingInspectMapper;
|
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
|
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesLineMapper;
|
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import jakarta.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
import org.springframework.validation.annotation.Validated;
|
|
/**
|
* MES 待检任务 Service 实现类
|
*/
|
@Service
|
@Validated
|
public class MesQcPendingInspectServiceImpl implements MesQcPendingInspectService {
|
|
@Resource
|
private MesQcPendingInspectMapper pendingInspectMapper;
|
@Resource
|
private MesProWorkOrderService workOrderService;
|
@Resource
|
private MesWmReturnSalesLineMapper returnSalesLineMapper;
|
@Resource
|
private MesWmBatchService batchService;
|
|
@Override
|
public PageResult<MesQcPendingInspectRespVO> getPendingInspectPage(MesQcPendingInspectPageReqVO pageReqVO) {
|
// 分页查询
|
IPage<MesQcPendingInspectRespVO> page = MyBatisUtils.buildPage(pageReqVO);
|
pendingInspectMapper.selectQcPendingPage(page,
|
pageReqVO.getSourceDocCode(), pageReqVO.getQcType(), pageReqVO.getItemId());
|
var orderIds = page.getRecords().stream().map(MesQcPendingInspectRespVO::getWorkOrderId)
|
.filter(java.util.Objects::nonNull).collect(java.util.stream.Collectors.toSet());
|
if (!orderIds.isEmpty()) {
|
var orders = workOrderService.getWorkOrderMap(orderIds);
|
page.getRecords().forEach(row -> {
|
var order = row.getWorkOrderId() == null ? null : orders.get(row.getWorkOrderId());
|
if (order != null) row.setReelNo(order.getReelNo());
|
});
|
}
|
var returnLineIds = page.getRecords().stream()
|
.filter(row -> java.util.Objects.equals(row.getSourceDocType(), MesBizTypeConstants.WM_RETURN_SALES))
|
.map(MesQcPendingInspectRespVO::getSourceLineId).filter(java.util.Objects::nonNull)
|
.collect(java.util.stream.Collectors.toSet());
|
if (!returnLineIds.isEmpty()) {
|
var lines = returnSalesLineMapper.selectBatchIds(returnLineIds);
|
var lineMap = lines.stream().collect(java.util.stream.Collectors.toMap(MesWmReturnSalesLineDO::getId, line -> line));
|
var batchIds = lines.stream().map(MesWmReturnSalesLineDO::getBatchId)
|
.filter(java.util.Objects::nonNull).collect(java.util.stream.Collectors.toSet());
|
var batches = batchIds.isEmpty() ? java.util.Map.<Long, cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO>of()
|
: batchService.getBatchMap(batchIds);
|
page.getRecords().forEach(row -> {
|
if (!java.util.Objects.equals(row.getSourceDocType(), MesBizTypeConstants.WM_RETURN_SALES)) return;
|
var line = lineMap.get(row.getSourceLineId());
|
var batch = line == null || line.getBatchId() == null ? null : batches.get(line.getBatchId());
|
if (batch != null) row.setReelNo(batch.getReelNo());
|
});
|
}
|
// 返回结果
|
return new PageResult<>(page.getRecords(), page.getTotal());
|
}
|
|
}
|