| | |
| | | import com.ruoyi.production.mapper.*; |
| | | import com.ruoyi.production.pojo.*; |
| | | import com.ruoyi.production.service.ProductWorkOrderService; |
| | | import com.ruoyi.quality.mapper.QualityInspectMapper; |
| | | import com.ruoyi.quality.mapper.QualityUnqualifiedMapper; |
| | | import com.ruoyi.quality.pojo.QualityInspect; |
| | | import com.ruoyi.quality.pojo.QualityUnqualified; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Autowired |
| | | private ProductProcessRouteItemMapper productProcessRouteItemMapper; |
| | | @Autowired |
| | | private ProductProcessMapper productProcessMapper; |
| | | @Autowired |
| | | private ProductionProductMainMapper productionProductMainMapper; |
| | | @Autowired |
| | | private ProductionProductOutputMapper productionProductOutputMapper; |
| | | @Autowired |
| | | private QualityUnqualifiedMapper qualityUnqualifiedMapper; |
| | | |
| | | @Value("${file.temp-dir}") |
| | | private String tempDir; |
| | |
| | | public IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) { |
| | | IPage<ProductWorkOrderDto> productWorkOrderDtoIPage = productWorkOrdermapper.pageProductWorkOrder(page, productWorkOrder); |
| | | productWorkOrderDtoIPage.getRecords().forEach(record -> { |
| | | //检查上一个工序是否已报工 |
| | | // 是否能报工: 1. 第一个工序能报工 2. 上一个工序已报工 3. 之前的工序未被隔离 |
| | | Integer currentDragSort = record.getDragSort(); |
| | | if (currentDragSort == null || currentDragSort == 1) { |
| | | record.setIsCanReport(true); |
| | | } else { |
| | | //查找上一个工序 |
| | | ProductProcessRouteItem previousItem = productProcessRouteItemMapper.selectOne( |
| | | Wrappers.<ProductProcessRouteItem>lambdaQuery() |
| | | .eq(ProductProcessRouteItem::getProductRouteId, record.getProductRouteId()) |
| | | .eq(ProductProcessRouteItem::getDragSort, currentDragSort - 1) |
| | | // 上一个工序是否已报工 |
| | | boolean isPreviousReported = productionProductMainMapper.checkPreviousProcessReported( |
| | | record.getProductRouteId(), |
| | | currentDragSort |
| | | ); |
| | | record.setIsCanReport(isPreviousReported); |
| | | |
| | | if (previousItem != null) { |
| | | //检查上一个工序是否有报工记录 |
| | | Long count = productionProductMainMapper.selectCount( |
| | | Wrappers.<ProductionProductMain>lambdaQuery() |
| | | .eq(ProductionProductMain::getProductProcessRouteItemId, previousItem.getId()) |
| | | // 之前的工序是否被隔离 |
| | | if (record.getIsCanReport()) { |
| | | // 查询所有之前的工序(排序号小于当前工序) |
| | | List<ProductProcessRouteItem> previousItems = productProcessRouteItemMapper.selectList( |
| | | Wrappers.<ProductProcessRouteItem>lambdaQuery() |
| | | .eq(ProductProcessRouteItem::getProductRouteId, record.getProductRouteId()) |
| | | .lt(ProductProcessRouteItem::getDragSort, currentDragSort) |
| | | ); |
| | | record.setIsCanReport(count > 0); |
| | | } else { |
| | | record.setIsCanReport(true); |
| | | |
| | | if (CollectionUtils.isNotEmpty(previousItems)) { |
| | | // 提取之前工序的名称列表 |
| | | List<String> previousProcessNames = new ArrayList<>(); |
| | | for (ProductProcessRouteItem item : previousItems) { |
| | | ProductProcess process = productProcessMapper.selectById(item.getProcessId()); |
| | | if (process != null) { |
| | | previousProcessNames.add(process.getName()); |
| | | } |
| | | } |
| | | |
| | | // 检查之前的工序是否有被隔离的不合格记录 |
| | | List<QualityUnqualified> unqualifiedList = qualityUnqualifiedMapper.selectUnqualifiedByProcessNames(previousProcessNames); |
| | | if (CollectionUtils.isNotEmpty(unqualifiedList)) { |
| | | record.setIsCanReport(false); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | return productWorkOrderDtos; |
| | | } |
| | | } |
| | | } |