CalculationWarehouseServiceImpl.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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.TWarehousebillsfees;
  6. import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
  7. import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
  8. import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsfeesMapper;
  9. import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper;
  10. import lombok.AllArgsConstructor;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.stereotype.Component;
  13. import java.math.BigDecimal;
  14. import java.util.List;
  15. import java.util.Objects;
  16. /**
  17. * @author caifc
  18. * @date 2021-11-23 18:52
  19. */
  20. @Slf4j
  21. @Component
  22. @AllArgsConstructor
  23. public class CalculationWarehouseServiceImpl implements CalculationWarehouseService {
  24. private final TWarehousebillsfeesMapper warehousebillsfeesMapper;
  25. private final TWarehousebillsitemsMapper warehousebillsitemsMapper;
  26. /**
  27. * 仓库查询库存总帐
  28. *
  29. * @param warehouseBills 主表数据
  30. * @return 状态
  31. */
  32. @Override
  33. public void calculationBillStatus(TWarehouseBills warehouseBills) {
  34. List<TWarehousebillsitems> warehousebillsitems = warehousebillsitemsMapper.selectItemsStatusByPid(warehouseBills.getfId());
  35. // 如果没有明细则是未xxx
  36. if (CollectionUtils.isEmpty(warehousebillsitems)) {
  37. warehouseBills.setfItemsStatus(1L);
  38. } else {
  39. // 代表有明细数据
  40. long count;
  41. // 判断是否货权转移
  42. if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype())) {
  43. count = warehousebillsitems.stream().filter(item ->
  44. !Objects.equals(item.getfBillstatus(), 6L)
  45. ).count();
  46. } else {
  47. count = warehousebillsitems.stream().filter(item ->
  48. Objects.equals(item.getfBillstatus(), 40L))
  49. .count();
  50. }
  51. // 如果明细中不存在已经操作库存总帐的则判定xx中
  52. if (Objects.equals((long) warehousebillsitems.size(), count)) {
  53. warehouseBills.setfItemsStatus(4L);
  54. } else {
  55. // 最终判定 已经xxx
  56. warehouseBills.setfItemsStatus(2L);
  57. }
  58. }
  59. judgeFeeStatus(warehouseBills);
  60. }
  61. /**
  62. * 仓库计算明细件数、毛重、净重总和
  63. *
  64. * @param warehouseBills 仓库数据
  65. */
  66. @Override
  67. public void calculationWarehouseQuantity(TWarehouseBills warehouseBills) {
  68. TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
  69. warehousebillsitems.setfPid(warehouseBills.getfId());
  70. List<TWarehousebillsitems> warehousebillsitemsList = warehousebillsitemsMapper.selectTWarehousebillsitemsList(warehousebillsitems);
  71. // 存在明细数据
  72. if (CollectionUtils.isNotEmpty(warehousebillsitemsList)) {
  73. Long qty = 0L;
  74. BigDecimal netweight = BigDecimal.ZERO;
  75. BigDecimal grossweight = BigDecimal.ZERO;
  76. Long planQty = 0L;
  77. BigDecimal planNetweight = BigDecimal.ZERO;
  78. BigDecimal planGrossweight = BigDecimal.ZERO;
  79. for (TWarehousebillsitems li : warehousebillsitemsList) {
  80. qty += li.getfQty();
  81. planQty += li.getfPlanqty();
  82. netweight = netweight.add(li.getfNetweight());
  83. planNetweight = planNetweight.add(li.getfPlannetweight());
  84. planGrossweight = planGrossweight.add(li.getfPlangrossweight());
  85. }
  86. warehouseBills.setfPlanqty(planQty);
  87. warehouseBills.setfPlannetweight(planNetweight);
  88. warehouseBills.setfPlangrossweight(planGrossweight);
  89. warehouseBills.setfQty(qty);
  90. warehouseBills.setfNetweight(netweight);
  91. warehouseBills.setfGrossweight(grossweight);
  92. }
  93. }
  94. /**
  95. * 仓库计算费用状态
  96. *
  97. * @param warehouseBills 主表数据
  98. */
  99. @Override
  100. public void calculationFeeStatus(TWarehouseBills warehouseBills) {
  101. judgeFeeStatus(warehouseBills);
  102. }
  103. /**
  104. * 判断修改费用状态
  105. *
  106. * @param warehouseBills 仓库主表
  107. */
  108. private void judgeFeeStatus(TWarehouseBills warehouseBills) {
  109. TWarehousebillsfees fees = new TWarehousebillsfees();
  110. fees.setfPid(warehouseBills.getfId());
  111. List<TWarehousebillsfees> warehousebillsfees = warehousebillsfeesMapper.selectTWarehousebillsfeesList(fees);
  112. if (CollectionUtils.isNotEmpty(warehousebillsfees)) {
  113. long count = warehousebillsfees.stream().filter(fee -> Objects.equals(fee.getfBillstatus(), 6L)).count();
  114. long size = warehousebillsfees.size();
  115. if (Objects.equals(count, size)) {
  116. // 入账数和明细数相等,全部入账
  117. warehouseBills.setfFeeStatus(3L);
  118. } else if (count > 0 && count < size) {
  119. // 入账数 < 明细数,部分入账
  120. warehouseBills.setfFeeStatus(2L);
  121. } else {
  122. // 暂存
  123. warehouseBills.setfFeeStatus(1L);
  124. }
  125. } else {
  126. // 空,不显示状态
  127. warehouseBills.setfFeeStatus(0L);
  128. }
  129. }
  130. }