| | |
| | | return productionProductMainMapper.listPageProductionProductMainDto(page, productionProductMainDto); |
| | | } |
| | | |
| | | public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList){ |
| | | public BigDecimal getRatio(List<ProductWorkOrder> productWorkOrderList,BigDecimal quantity){ |
| | | // 获取完成数量 |
| | | BigDecimal completeQuantity = productWorkOrderList |
| | | .stream() |
| | | .filter(item -> item.getStatus() == 3) |
| | | .map(ProductWorkOrder::getCompleteQuantity) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // 获取所有数量 |
| | |
| | | .stream() |
| | | .map(ProductWorkOrder::getPlanQuantity) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | // 获取未完成数量 |
| | | BigDecimal unCompleteQuantity = totalQuantity.subtract(completeQuantity); |
| | | if (unCompleteQuantity.compareTo(BigDecimal.ZERO) <= 0) { |
| | | completeQuantity = completeQuantity.add(quantity); // 加上报工数量 |
| | | if (completeQuantity.compareTo(BigDecimal.ZERO) <= 0) { |
| | | return BigDecimal.ZERO; |
| | | } |
| | | // 计算比例 |
| | | return unCompleteQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP); |
| | | return completeQuantity.divide(totalQuantity, 2, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | @Override |
| | |
| | | if(CollectionUtils.isEmpty(productWorkOrderList)){ |
| | | productWorkOrderList = new ArrayList<>(); |
| | | } |
| | | BigDecimal ratio = getRatio(productWorkOrderList); |
| | | BigDecimal ratio = getRatio(productWorkOrderList,dto.getQuantity().subtract(dto.getScrapQty() == null ? BigDecimal.ZERO : dto.getScrapQty())); |
| | | |
| | | //当前具体工序 |
| | | ProductProcess productProcess = productProcessMapper.selectById(productProcessRouteItem.getProcessId()); |
| | |
| | | } |
| | | // 通过比例计算完成数量 |
| | | productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio)); |
| | | if (productWorkOrderList.size() == productProcessRouteItems.size() - 1) { |
| | | //如果是最后一道工序报工之后生产订单完成数量+ |
| | | if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0) { |
| | | productOrder.setCompleteQuantity(productOrder.getQuantity()); |
| | |
| | | // 生产完成入库 |
| | | stockUtils.addStock(productProcessRouteItem.getProductModelId(), productOrder.getCompleteQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId()); |
| | | } |
| | | } |
| | | // if (productWorkOrderList.stream().filter(item -> item.getStatus() == 3).count() == productProcessRouteItems.size() - 1) { |
| | | // |
| | | // } |
| | | productOrderMapper.updateById(productOrder); |
| | | /*添加生产核算*/ |
| | | SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder() |
| | |
| | | } |
| | | |
| | | //判断是否是最后一道工序 |
| | | List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId())); |
| | | if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { |
| | | // List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId())); |
| | | // if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) { |
| | | // |
| | | // } |
| | | ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId()); |
| | | if (productOrder != null) { |
| | | BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity(); |
| | |
| | | if(CollectionUtils.isEmpty(productWorkOrderList)){ |
| | | productWorkOrderList = new ArrayList<>(); |
| | | } |
| | | BigDecimal ratio = getRatio(productWorkOrderList); |
| | | BigDecimal ratio = getRatio(productWorkOrderList,BigDecimal.ZERO); |
| | | productOrder.setCompleteQuantity(productOrder.getQuantity().multiply(ratio)); |
| | | |
| | | productOrder.setEndTime(null); |
| | |
| | | productOrderMapper.updateById(productOrder); |
| | | } else { |
| | | throw new ServiceException("关联的生产订单不存在"); |
| | | } |
| | | } |
| | | //删除质检 |
| | | qualityInspectMapper.selectList( |