CalculationWarehouseServiceImpl.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.ruoyi.warehouseBusiness.component.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  3. import com.ruoyi.warehouseBusiness.component.CalculationWarehouseService;
  4. import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
  5. import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
  6. import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
  7. import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper;
  8. import lombok.AllArgsConstructor;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.stereotype.Component;
  11. import java.math.BigDecimal;
  12. import java.util.List;
  13. import java.util.Objects;
  14. /**
  15. * @author caifc
  16. * @date 2021-11-23 18:52
  17. */
  18. @Slf4j
  19. @Component
  20. @AllArgsConstructor
  21. public class CalculationWarehouseServiceImpl implements CalculationWarehouseService {
  22. private final TWarehousebillsitemsMapper warehousebillsitemsMapper;
  23. /**
  24. * 仓库查询库存总帐
  25. *
  26. * @param warehouseBills 主表数据
  27. * @return 状态
  28. */
  29. @Override
  30. public void calculationBillStatus(TWarehouseBills warehouseBills) {
  31. List<TWarehousebillsitems> warehousebillsitems = warehousebillsitemsMapper.selectItemsStatusByPid(warehouseBills.getfId());
  32. // 如果没有明细则是未xxx
  33. if (CollectionUtils.isEmpty(warehousebillsitems)) {
  34. warehouseBills.setfItemsStatus(1L);
  35. } else {
  36. // 代表有明细数据
  37. long count;
  38. // 判断是否货权转移
  39. if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype())) {
  40. count = warehousebillsitems.stream().filter(item ->
  41. !Objects.equals(item.getfBillstatus(), 6L)
  42. ).count();
  43. } else {
  44. count = warehousebillsitems.stream().filter(item ->
  45. Objects.equals(item.getfBillstatus(), 40L))
  46. .count();
  47. }
  48. // 如果明细中不存在已经操作库存总帐的则判定xx中
  49. if (Objects.equals((long) warehousebillsitems.size(), count)) {
  50. warehouseBills.setfItemsStatus(4L);
  51. } else {
  52. // 最终判定 已经xxx
  53. warehouseBills.setfItemsStatus(2L);
  54. }
  55. }
  56. }
  57. /**
  58. * 仓库计算明细件数、毛重、净重总和
  59. *
  60. * @param warehouseBills 仓库数据
  61. */
  62. @Override
  63. public void calculationWarehouseQuantity(TWarehouseBills warehouseBills) {
  64. TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
  65. warehousebillsitems.setfPid(warehouseBills.getfId());
  66. List<TWarehousebillsitems> warehousebillsitemsList = warehousebillsitemsMapper.selectTWarehousebillsitemsList(warehousebillsitems);
  67. // 存在明细数据
  68. if (CollectionUtils.isNotEmpty(warehousebillsitemsList)) {
  69. Long qty = 0L;
  70. BigDecimal netweight = BigDecimal.ZERO;
  71. BigDecimal grossweight = BigDecimal.ZERO;
  72. Long planQty = 0L;
  73. BigDecimal planNetweight = BigDecimal.ZERO;
  74. BigDecimal planGrossweight = BigDecimal.ZERO;
  75. for (TWarehousebillsitems li : warehousebillsitemsList) {
  76. qty += li.getfQty();
  77. planQty += li.getfPlanqty();
  78. netweight = netweight.add(li.getfNetweight());
  79. planNetweight = planNetweight.add(li.getfPlannetweight());
  80. planGrossweight = planGrossweight.add(li.getfPlangrossweight());
  81. }
  82. warehouseBills.setfPlanqty(planQty);
  83. warehouseBills.setfPlannetweight(planNetweight);
  84. warehouseBills.setfPlangrossweight(planGrossweight);
  85. warehouseBills.setfQty(qty);
  86. warehouseBills.setfNetweight(netweight);
  87. warehouseBills.setfGrossweight(grossweight);
  88. }
  89. }
  90. }