InboundCheckService.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.dk.mdm.service.ivt.inbound;
  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.InboundConvert;
  13. import com.dk.mdm.infrastructure.convert.ivt.InboundItemConvert;
  14. import com.dk.mdm.mapper.ivt.InboundItemMapper;
  15. import com.dk.mdm.mapper.ivt.InboundMapper;
  16. import com.dk.mdm.model.pojo.ivt.Inbound;
  17. import com.dk.mdm.model.pojo.ivt.InboundItem;
  18. import com.dk.mdm.model.vo.ivt.InboundItemVO;
  19. import com.dk.mdm.model.vo.ivt.InboundVO;
  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.HashMap;
  27. import java.util.List;
  28. import java.util.Map;
  29. /**
  30. * @desc : 盘盈入库业务层
  31. * @date : 2024/3/7 14:11
  32. * @author : 寇珊珊
  33. */
  34. @Service
  35. public class InboundCheckService extends BaseService<Inbound> {
  36. @Override
  37. public BaseMapper<Inbound> getRepository() {
  38. return inboundMapper;
  39. }
  40. @Autowired
  41. private InboundMapper inboundMapper;
  42. @Autowired
  43. private InboundConvert inboundConvert;
  44. @Autowired
  45. private InboundItemMapper inboundItemMapper;
  46. @Autowired
  47. private InboundItemConvert inboundItemConvert;
  48. @Autowired
  49. private CommonService commonService;
  50. @Autowired
  51. private InventoryService inventoryService;
  52. /**
  53. * @desc : 盘盈入库新建
  54. * @date : 2024/3/7 14:13
  55. * 入库中数量/金额 已入库数量/金额 由调用方传入
  56. * @author : 寇珊珊
  57. */
  58. @Transactional(rollbackFor = {Exception.class})
  59. public ResponseResultVO<?> checkInboundInsert(Map<String, Object> map) {
  60. //region map转json
  61. JSONObject total = new JSONObject();
  62. JSONArray detail = new JSONArray();
  63. //总单
  64. if (map.get("total") != null) {
  65. total = (JSONObject) JSON.toJSON(map.get("total"));
  66. }
  67. //明细
  68. if (map.get("total") != null) {
  69. detail = (JSONArray) JSON.toJSON(map.get("detail"));
  70. }
  71. InboundVO inboundVO = new InboundVO();
  72. inboundVO = total.toJavaObject(InboundVO.class);
  73. List<InboundItemVO> inboundItemVOList = detail.toJavaList(InboundItemVO.class);
  74. inboundVO.setItemList(inboundItemVOList);
  75. //endregion
  76. //region 总单
  77. //获取 id/单号
  78. Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.INVENTORYPROFITINBOUND.getName(), false);
  79. inboundVO.setIntoId(codeMap.get("outId").toString()).
  80. setIntoNo(codeMap.get("outNote").toString());
  81. //入库类型
  82. inboundVO.setIntoType(Constant.IntoType.PROFIT.getName());
  83. //已入库
  84. inboundVO.setIntoStatus(Constant.IntoStatus.YIRUKU.getName());
  85. //入库状态等于已入库 更新合计入库数量/金额 = 入库中数量/入库中金额
  86. inboundVO.setIntoQty(inboundVO.getIntoingQty())
  87. .setIntoAmt(inboundVO.getIntoingAmt())
  88. .setIntoingQty(BigDecimal.ZERO)
  89. .setIntoingAmt(BigDecimal.ZERO)
  90. ;
  91. //实体转换
  92. Inbound inbound = inboundConvert.convertToPo(inboundVO);
  93. inboundMapper.insert(inbound);
  94. //endregion
  95. //region 明细
  96. //校验明细
  97. if (inboundVO.getItemList().size() == 0) {
  98. throw new BaseBusinessException(ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getCode(),
  99. ErrorCodeEnum.INBOUND_ITEM_NOT_EXIST.getMessage());
  100. }
  101. for (InboundItemVO inboundItemVO : inboundVO.getItemList()) {
  102. //region 将库存需要的参数赋值
  103. inboundItemVO.setInventoryType(Constant.InventoryType.INBOUND.getName());
  104. inboundItemVO.setInventoryDocCode(Constant.InventoryDocCode.INVENTORY_PROFIT.getValue());
  105. //endregion
  106. //总单id
  107. inboundItemVO.setIntoId(inboundVO.getIntoId());
  108. //入库类型
  109. inboundItemVO.setIntoType(inboundVO.getIntoType());
  110. //入库状态等于已入库 更新合计入库数量/金额 = 入库中数量/入库中金额
  111. inboundItemVO
  112. .setIntoQty(inboundItemVO.getIntoingQty())
  113. .setIntoAmt(inboundItemVO.getIntoingAmt())
  114. .setIntoingQty(BigDecimal.ZERO)
  115. .setIntoingAmt(BigDecimal.ZERO)
  116. .setCostPrice(inboundItemVO.getPriceInto())
  117. .setCostAmt(inboundItemVO.getIntoQty().multiply(inboundItemVO.getPriceInto()).setScale(2, BigDecimal.ROUND_HALF_UP))
  118. ;
  119. //入库状态
  120. inboundItemVO.setIntoStatus(inboundVO.getIntoStatus());
  121. //实体转换
  122. InboundItem inboundItem = inboundItemConvert.convertToPo(inboundItemVO);
  123. inboundItemMapper.insert(inboundItem);
  124. //endregion
  125. }
  126. //endregion
  127. //region 修改库存
  128. // Map<String, Object> invMap = new HashMap<>();
  129. // invMap.put("intoDetail", inboundVO.getItemList());
  130. // inventoryService.updateInventoryInformation(invMap);
  131. //endregion
  132. return ResponseResultUtil.success(inboundVO);
  133. }
  134. }