K3OtherStockOutLogic.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.zfire.mall.manager.logic.k3;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.IdWorker;
  4. import com.zfire.mall.manager.bean.admin.AdminUserCom;
  5. import com.zfire.mall.manager.bean.k3.KingDeeOtherStockInAdd;
  6. import com.zfire.mall.manager.bean.k3.KingDeeOtherStockOutAdd;
  7. import com.zfire.mall.manager.bean.k3.KingDeeOtherStockOutDetail;
  8. import com.zfire.mall.manager.enums.ExamineStatusEnum;
  9. import com.zfire.mall.manager.exception.RemoteServiceException;
  10. import com.zfire.mall.manager.logic.common.CommonLogic;
  11. import com.zfire.mall.manager.logic.stock.StockCommonLogic;
  12. import com.zfire.mall.manager.plus.entity.*;
  13. import com.zfire.mall.manager.plus.service.KingDeeOtherStockOutItemService;
  14. import com.zfire.mall.manager.plus.service.KingDeeOtherStockOutService;
  15. import com.zfire.mall.manager.plus.service.StockCorrespondService;
  16. import com.zfire.mall.manager.plus.service.StockService;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.util.CollectionUtils;
  23. import java.util.Date;
  24. import java.util.List;
  25. import java.util.stream.Collectors;
  26. @Service
  27. @Slf4j
  28. public class K3OtherStockOutLogic {
  29. @Autowired
  30. KingDeeOtherStockOutService kingDeeOtherStockOutService;
  31. @Autowired
  32. KingDeeOtherStockOutItemService kingDeeOtherStockOutItemService;
  33. @Autowired
  34. StockService stockService;
  35. @Autowired
  36. StockCommonLogic stockCommonLogic;
  37. @Autowired
  38. StockCorrespondService stockCorrespondService;
  39. @Autowired
  40. CommonLogic commonLogic;
  41. public void add(KingDeeOtherStockOutAdd kingDeeOtherStockOutAdd) {
  42. kingDeeOtherStockOutAdd.setId(IdWorker.getIdStr());
  43. kingDeeOtherStockOutAdd.setBillNo(kingDeeOtherStockOutAdd.getId());
  44. kingDeeOtherStockOutAdd.setForDate(new Date());
  45. kingDeeOtherStockOutAdd.setCancelStatus(ExamineStatusEnum.WAIT.getKey());
  46. kingDeeOtherStockOutAdd.insert();
  47. List<StockCorrespond> list = stockCorrespondService.lambdaQuery().list();
  48. for (KingDeeOtherStockOutItem kingDeeOtherStockOutItem : kingDeeOtherStockOutAdd.getKingDeeOtherStockOutItems()) {
  49. kingDeeOtherStockOutItem.setBillNo(kingDeeOtherStockOutAdd.getId());
  50. if (StringUtils.isEmpty(kingDeeOtherStockOutItem.getStockId()))
  51. throw new RemoteServiceException("仓库空了");
  52. List<StockCorrespond> collect = list.stream().filter(item -> item.getId().equals(kingDeeOtherStockOutItem.getStockId())).collect(Collectors.toList());
  53. if (CollectionUtils.isEmpty(collect))
  54. throw new RemoteServiceException("未找到对应仓库");
  55. StockCorrespond stockCorrespond = collect.get(0);
  56. kingDeeOtherStockOutItem.setStockName(stockCorrespond.getName());
  57. }
  58. kingDeeOtherStockOutItemService.saveBatch(kingDeeOtherStockOutAdd.getKingDeeOtherStockOutItems());
  59. }
  60. public void update(KingDeeOtherStockOutAdd kingDeeOtherStockOutAdd) {
  61. kingDeeOtherStockOutAdd.updateById();
  62. kingDeeOtherStockOutItemService.lambdaUpdate().eq(KingDeeOtherStockOutItem::getBillNo,kingDeeOtherStockOutAdd.getBillNo())
  63. .remove();
  64. for (KingDeeOtherStockOutItem kingDeeOtherStockOutItem : kingDeeOtherStockOutAdd.getKingDeeOtherStockOutItems()) {
  65. kingDeeOtherStockOutItem.setBillNo(kingDeeOtherStockOutAdd.getId());
  66. }
  67. kingDeeOtherStockOutItemService.saveBatch(kingDeeOtherStockOutAdd.getKingDeeOtherStockOutItems());
  68. }
  69. @Transactional(rollbackFor = Exception.class)
  70. public void examine(String billNo, String cancelStatus) {
  71. AdminUserCom adminUser = commonLogic.getAdminUser();
  72. KingDeeOtherStockOut kingDeeOtherStockOut = kingDeeOtherStockOutService.getById(billNo);
  73. kingDeeOtherStockOut.setCancelStatus(cancelStatus);
  74. kingDeeOtherStockOut.setApproveDate(new Date());
  75. kingDeeOtherStockOut.setApproverId(adminUser.getNickName());
  76. kingDeeOtherStockOut.updateById();
  77. if (kingDeeOtherStockOut.getCancelStatus().equals(ExamineStatusEnum.OK.getKey())) {
  78. List<KingDeeOtherStockOutItem> kingDeeOtherStockOutItems = kingDeeOtherStockOutItemService.lambdaQuery()
  79. .eq(KingDeeOtherStockOutItem::getBillNo, billNo).list();
  80. for (KingDeeOtherStockOutItem kingDeeOtherStockOutItem : kingDeeOtherStockOutItems) {
  81. this.stockSub(kingDeeOtherStockOut, kingDeeOtherStockOutItem);
  82. }
  83. }
  84. }
  85. @Transactional(rollbackFor = Exception.class)
  86. public void stockSub(KingDeeOtherStockOut kingDeeOtherStockOut, KingDeeOtherStockOutItem kingDeeOtherStockOutItem) {
  87. Stock stock = stockService.lambdaQuery().eq(Stock::getStockId, kingDeeOtherStockOutItem.getStockId())
  88. .eq(Stock::getMaterialId, kingDeeOtherStockOutItem.getMaterialId()).last("limit 1").one();
  89. if (stock == null)
  90. throw new RemoteServiceException(kingDeeOtherStockOutItem.getMaterialName()+"该物料没有库存,不能退库");
  91. stockCommonLogic.stockAccLog("其他出库减少库存",stock,kingDeeOtherStockOutItem.getQty(),kingDeeOtherStockOutItem.getBillNo(),false,"其他出库单");
  92. stock.setStockQty(stock.getStockQty().subtract(kingDeeOtherStockOutItem.getQty()));
  93. if (stock.getStockQty().doubleValue() < 0)
  94. throw new RemoteServiceException(kingDeeOtherStockOutItem.getMaterialName()+"该物料没有库存,不能退库");
  95. stock.updateById();
  96. }
  97. public KingDeeOtherStockOutDetail detail(String id) {
  98. KingDeeOtherStockOut kingDeeOtherStockOut = kingDeeOtherStockOutService.getById(id);
  99. KingDeeOtherStockOutDetail kingDeeOtherStockOutDetail = BeanUtil.toBean(kingDeeOtherStockOut, KingDeeOtherStockOutDetail.class);
  100. List<KingDeeOtherStockOutItem> kingDeeOtherStockOutItems = kingDeeOtherStockOutItemService.lambdaQuery().eq(KingDeeOtherStockOutItem::getBillNo, id).list();
  101. kingDeeOtherStockOutDetail.setKingDeeOtherStockOutItems(kingDeeOtherStockOutItems);
  102. return kingDeeOtherStockOutDetail;
  103. }
  104. }