package com.fjhx.purchase.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.fjhx.purchase.entity.arrival.po.ArrivalDetail; import com.fjhx.purchase.entity.purchase.po.Purchase; import com.fjhx.purchase.entity.purchase.po.PurchaseDetail; import com.fjhx.purchase.service.arrival.ArrivalDetailService; import com.fjhx.purchase.service.purchase.PurchaseDetailService; import com.fjhx.purchase.service.purchase.PurchaseService; import com.fjhx.purchase.service.subscribe.SubscribeService; import com.fjhx.wms.entity.ArrivalDetailPo; import com.fjhx.wms.entity.PurchaseDetailPo; import com.fjhx.wms.entity.SubscribeDetailPo; import com.fjhx.wms.entity.stock.po.StockWaitDetails; import com.fjhx.wms.service.PurService; import com.fjhx.wms.service.stock.StockWaitDetailsService; import com.ruoyi.common.utils.wrapper.IWrapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class purServiceImpl implements PurService { @Autowired private PurchaseService purchaseService; @Autowired private PurchaseDetailService purchaseDetailService; @Autowired private ArrivalDetailService arrivalDetailService; @Autowired private StockWaitDetailsService stockWaitDetailsService; @Autowired private SubscribeService subscribeService; /** * 修改采购到货状态 */ @Override public void updatePurchaseArrivalStatus(Long id) { Purchase purchase = purchaseService.getById(id); //修改到货状态 Integer flag = 0; List purchaseDetailsList1 = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getPurchaseId, purchase.getId())); if (ObjectUtil.isNotEmpty(purchaseDetailsList1)) { List purchaseDetailsIds = purchaseDetailsList1.stream().map(PurchaseDetail::getId).collect(Collectors.toList()); List arrivalDetailsList1 = arrivalDetailService.list(q -> q.in(ArrivalDetail::getPurchaseDetailId, purchaseDetailsIds)); if (ObjectUtil.isNotEmpty(arrivalDetailsList1)) { Map> arrivalDetailsMap = arrivalDetailsList1.stream().collect(Collectors.groupingBy(ArrivalDetail::getPurchaseDetailId)); for (PurchaseDetail purchaseDetail : purchaseDetailsList1) { //获取到货明细 List arrivalDetails = arrivalDetailsMap.get(purchaseDetail.getId()); List arrivalIds = arrivalDetails.stream().map(ArrivalDetail::getId).collect(Collectors.toList()); //根据到货明细获取入库明细 List stockWaitDetailsList = stockWaitDetailsService.list(q -> q.in(StockWaitDetails::getBusinessDetailsId, arrivalIds)); BigDecimal count = stockWaitDetailsList.stream() .map(StockWaitDetails::getReceiptQuantity) .reduce(BigDecimal.ZERO, BigDecimal::add); if (count.compareTo(purchaseDetail.getCount()) >= 0) { flag++; } } if (purchaseDetailsList1.size() == flag) { //完全到货 purchase.setArrivalStatus(20); } else { //部分到货 purchase.setArrivalStatus(10); } purchaseService.updateById(purchase); } } } /** * 获取已采购数量 */ @Override public List getPurchaseCountList(IWrapper wrapper){ return purchaseService.getPurchaseCountList(wrapper); } /** * 获取已申购数量 */ @Override public List getSubscribeCountList(IWrapper wrapper) { return subscribeService.getSubscribeCountList(wrapper); } @Override public List getArrivalDetailByIds(List ids) { List list = arrivalDetailService.list(q -> q.in(ArrivalDetail::getId, ids)); List arrivalDetailPos = BeanUtil.copyToList(list, ArrivalDetailPo.class); return arrivalDetailPos; } @Override public List getPurchaseDetailByIds(List ids) { List list = purchaseDetailService.list(q -> q.in(PurchaseDetail::getId, ids)); List purchaseDetailPos = BeanUtil.copyToList(list, PurchaseDetailPo.class); return purchaseDetailPos; } }