OutboundCheckService.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package com.dk.mdm.service.ivt.outbound;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.dk.common.exception.BaseBusinessException;
  6. import com.dk.common.infrastructure.constant.Constant;
  7. import com.dk.common.infrastructure.enums.ErrorCodeEnum;
  8. import com.dk.common.mapper.BaseMapper;
  9. import com.dk.common.response.ResponseResultUtil;
  10. import com.dk.common.response.ResponseResultVO;
  11. import com.dk.common.service.BaseService;
  12. import com.dk.mdm.infrastructure.convert.ivt.OutboundConvert;
  13. import com.dk.mdm.infrastructure.convert.ivt.OutboundItemConvert;
  14. import com.dk.mdm.mapper.ivt.OutboundItemMapper;
  15. import com.dk.mdm.mapper.ivt.OutboundMapper;
  16. import com.dk.mdm.model.pojo.ivt.Outbound;
  17. import com.dk.mdm.model.pojo.ivt.OutboundItem;
  18. import com.dk.mdm.model.vo.ivt.OutboundItemVO;
  19. import com.dk.mdm.model.vo.ivt.OutboundVO;
  20. import com.dk.mdm.service.common.CommonService;
  21. import com.dk.mdm.service.ivt.inventory.InventoryService;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import java.math.BigDecimal;
  26. import java.util.List;
  27. import java.util.Map;
  28. /**
  29. * @author : 寇珊珊
  30. * @desc : 其他出库业务层
  31. * @date : 2024/3/18 15:33
  32. */
  33. @Service
  34. public class OutboundCheckService extends BaseService<Outbound> {
  35. @Override
  36. public BaseMapper<Outbound> getRepository() {
  37. return outboundMapper;
  38. }
  39. @Autowired
  40. private CommonService commonService;
  41. @Autowired
  42. private OutboundMapper outboundMapper;
  43. @Autowired
  44. private OutboundConvert outboundConvert;
  45. @Autowired
  46. private OutboundItemMapper outboundItemMapper;
  47. @Autowired
  48. private OutboundItemConvert outboundItemConvert;
  49. @Autowired
  50. private InventoryService inventoryService;
  51. /**
  52. * @desc : 其他出库新建
  53. * @date : 2024/3/7 14:13
  54. * @author : 寇珊珊
  55. */
  56. @Transactional(rollbackFor = {Exception.class})
  57. public OutboundVO otherOutboundInsert(Map<String, Object> map) {
  58. //region map转json
  59. JSONObject total = new JSONObject();
  60. JSONArray detail = new JSONArray();
  61. //总单
  62. if (map.get("total") != null) {
  63. total = (JSONObject) JSON.toJSON(map.get("total"));
  64. }
  65. //明细
  66. if (map.get("total") != null) {
  67. detail = (JSONArray) JSON.toJSON(map.get("detail"));
  68. }
  69. OutboundVO outboundVO = new OutboundVO();
  70. outboundVO = total.toJavaObject(OutboundVO.class);
  71. List<OutboundItemVO> outboundItemVOList = detail.toJavaList(OutboundItemVO.class);
  72. outboundVO.setItemList(outboundItemVOList);
  73. //endregion
  74. //region 总单
  75. //获取 id/单号
  76. Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.INVENTORYLOSEOUTBOUND.getName(), false);
  77. outboundVO.setOutId(codeMap.get("outId").toString()).
  78. setOutNo(codeMap.get("outNote").toString());
  79. //todo 出库类型可能是盘亏可能是库位移动 调用的时候传
  80. //出库类型
  81. // outboundVO.setOutType(Constant.OutType.INVENTORY_LOSS.getName());
  82. //已出库
  83. outboundVO.setOutStatus(Constant.OutStatus.YICHUKU.getName());
  84. //出库状态等于已出库 更新合计出库数量/金额 = 出库中数量/出库中金额
  85. outboundVO
  86. .setOutQty(outboundVO.getOutingQty())
  87. .setOutAmt(outboundVO.getOutingAmt())
  88. .setOutingQty(BigDecimal.ZERO)
  89. .setOutingAmt(BigDecimal.ZERO)
  90. ;
  91. //实体转换
  92. Outbound outbound = outboundConvert.convertToPo(outboundVO);
  93. outboundMapper.insert(outbound);
  94. //endregion
  95. //region 明细
  96. //校验明细
  97. if (outboundVO.getItemList().size() == 0) {
  98. throw new BaseBusinessException(ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getCode(),
  99. ErrorCodeEnum.OUTBOUND_ITEM_NOT_EXIST.getMessage());
  100. }
  101. for (OutboundItemVO outboundItemVO : outboundVO.getItemList()) {
  102. //region 将库存需要的参数赋值
  103. outboundItemVO.setInventoryType(Constant.InventoryType.OUTBOUND.getName());
  104. outboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.INVENTORY_LOSS.getValue());
  105. //endregion
  106. //总单id
  107. outboundItemVO.setOutId(outboundVO.getOutId());
  108. //出库类型
  109. outboundItemVO.setOutType(outboundVO.getOutType());
  110. //出库状态等于已出库 更新合计出库数量/金额 = 出库中数量/出库中金额
  111. outboundItemVO
  112. .setOutQty(outboundItemVO.getOutingQty())
  113. .setOutAmt(outboundItemVO.getOutingAmt())
  114. .setOutingQty(BigDecimal.ZERO)
  115. .setOutingAmt(BigDecimal.ZERO)
  116. .setCostPrice(outboundItemVO.getPriceOut())
  117. .setCostAmt(outboundItemVO.getOutQty().multiply(outboundItemVO.getPriceOut()).setScale(2, BigDecimal.ROUND_HALF_UP))
  118. ;
  119. //入库状态
  120. outboundItemVO.setOutStatus(outboundVO.getOutStatus());
  121. //实体转换
  122. OutboundItem outboundItem = outboundItemConvert.convertToPo(outboundItemVO);
  123. outboundItemMapper.insert(outboundItem);
  124. //endregion
  125. }
  126. //endregion
  127. //region 修改库存
  128. // Map<String, Object> invMap = new HashMap<>();
  129. // invMap.put("outDetail",outboundVO.getItemList());
  130. // inventoryService.updateInventoryInformation(invMap);
  131. //endregion
  132. //1.入库需要的值 附上 掉用接口
  133. //2.接收接口返回体
  134. return outboundVO;
  135. }
  136. }