purServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.fjhx.purchase.service;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
  5. import com.fjhx.purchase.entity.purchase.po.Purchase;
  6. import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
  7. import com.fjhx.purchase.service.arrival.ArrivalDetailService;
  8. import com.fjhx.purchase.service.purchase.PurchaseDetailService;
  9. import com.fjhx.purchase.service.purchase.PurchaseService;
  10. import com.fjhx.purchase.service.subscribe.SubscribeService;
  11. import com.fjhx.wms.entity.ArrivalDetailPo;
  12. import com.fjhx.wms.entity.PurchaseDetailPo;
  13. import com.fjhx.wms.entity.SubscribeDetailPo;
  14. import com.fjhx.wms.entity.stock.po.StockWaitDetails;
  15. import com.fjhx.wms.service.PurService;
  16. import com.fjhx.wms.service.stock.StockWaitDetailsService;
  17. import com.ruoyi.common.utils.wrapper.IWrapper;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import java.math.BigDecimal;
  21. import java.util.List;
  22. import java.util.Map;
  23. import java.util.stream.Collectors;
  24. @Service
  25. public class purServiceImpl implements PurService {
  26. @Autowired
  27. private PurchaseService purchaseService;
  28. @Autowired
  29. private PurchaseDetailService purchaseDetailService;
  30. @Autowired
  31. private ArrivalDetailService arrivalDetailService;
  32. @Autowired
  33. private StockWaitDetailsService stockWaitDetailsService;
  34. @Autowired
  35. private SubscribeService subscribeService;
  36. /**
  37. * 修改采购到货状态
  38. */
  39. @Override
  40. public void updatePurchaseArrivalStatus(Long id) {
  41. Purchase purchase = purchaseService.getById(id);
  42. //修改到货状态
  43. Integer flag = 0;
  44. List<PurchaseDetail> purchaseDetailsList1 = purchaseDetailService.list(q -> q.eq(PurchaseDetail::getPurchaseId, purchase.getId()));
  45. if (ObjectUtil.isNotEmpty(purchaseDetailsList1)) {
  46. List<Long> purchaseDetailsIds = purchaseDetailsList1.stream().map(PurchaseDetail::getId).collect(Collectors.toList());
  47. List<ArrivalDetail> arrivalDetailsList1 = arrivalDetailService.list(q -> q.in(ArrivalDetail::getPurchaseDetailId, purchaseDetailsIds));
  48. if (ObjectUtil.isNotEmpty(arrivalDetailsList1)) {
  49. Map<Long, List<ArrivalDetail>> arrivalDetailsMap = arrivalDetailsList1.stream().collect(Collectors.groupingBy(ArrivalDetail::getPurchaseDetailId));
  50. for (PurchaseDetail purchaseDetail : purchaseDetailsList1) {
  51. //获取到货明细
  52. List<ArrivalDetail> arrivalDetails = arrivalDetailsMap.get(purchaseDetail.getId());
  53. List<Long> arrivalIds = arrivalDetails.stream().map(ArrivalDetail::getId).collect(Collectors.toList());
  54. //根据到货明细获取入库明细
  55. List<StockWaitDetails> stockWaitDetailsList = stockWaitDetailsService.list(q -> q.in(StockWaitDetails::getBusinessDetailsId, arrivalIds));
  56. BigDecimal count = stockWaitDetailsList.stream()
  57. .map(StockWaitDetails::getReceiptQuantity)
  58. .reduce(BigDecimal.ZERO, BigDecimal::add);
  59. if (count.compareTo(purchaseDetail.getCount()) >= 0) {
  60. flag++;
  61. }
  62. }
  63. if (purchaseDetailsList1.size() == flag) {
  64. //完全到货
  65. purchase.setArrivalStatus(20);
  66. } else {
  67. //部分到货
  68. purchase.setArrivalStatus(10);
  69. }
  70. purchaseService.updateById(purchase);
  71. }
  72. }
  73. }
  74. /**
  75. * 获取已采购数量
  76. */
  77. @Override
  78. public List<PurchaseDetailPo> getPurchaseCountList(IWrapper<Object> wrapper){
  79. return purchaseService.getPurchaseCountList(wrapper);
  80. }
  81. /**
  82. * 获取已申购数量
  83. */
  84. @Override
  85. public List<SubscribeDetailPo> getSubscribeCountList(IWrapper<Object> wrapper) {
  86. return subscribeService.getSubscribeCountList(wrapper);
  87. }
  88. @Override
  89. public List<ArrivalDetailPo> getArrivalDetailByIds(List<Long> ids) {
  90. List<ArrivalDetail> list = arrivalDetailService.list(q -> q.in(ArrivalDetail::getId, ids));
  91. List<ArrivalDetailPo> arrivalDetailPos = BeanUtil.copyToList(list, ArrivalDetailPo.class);
  92. return arrivalDetailPos;
  93. }
  94. @Override
  95. public List<PurchaseDetailPo> getPurchaseDetailByIds(List<Long> ids) {
  96. List<PurchaseDetail> list = purchaseDetailService.list(q -> q.in(PurchaseDetail::getId, ids));
  97. List<PurchaseDetailPo> purchaseDetailPos = BeanUtil.copyToList(list, PurchaseDetailPo.class);
  98. return purchaseDetailPos;
  99. }
  100. }