AmsSaleOrderServiceImpl.java 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.AmsSaleMaterialMapper;
  3. import com.steerinfo.dil.mapper.AmsSaleOrderMapper;
  4. import com.steerinfo.dil.model.AmsSaleMaterial;
  5. import com.steerinfo.dil.model.AmsSaleOrder;
  6. import com.steerinfo.dil.service.IAmsSaleOrderService;
  7. import com.steerinfo.dil.util.DataChange;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import java.math.BigDecimal;
  12. import java.util.Date;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16. /**
  17. * AmsSaleOrder服务实现:
  18. * @author generator
  19. * @version 1.0-SNAPSHORT 2021-10-26 07:26
  20. * 类描述
  21. * 修订历史:
  22. * 日期:2021-10-26
  23. * 作者:generator
  24. * 参考:
  25. * 描述:AmsSaleOrder服务实现
  26. * @see null
  27. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  28. */
  29. @Service(value = "amsSaleOrderService")
  30. public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
  31. @Autowired
  32. private AmsSaleOrderMapper amsSaleOrderMapper;
  33. @Autowired
  34. AmsSaleMaterialMapper amsSaleMaterialMapper;
  35. /**
  36. * 查询销售订单
  37. * @param saleOrderId
  38. * @return
  39. */
  40. @Override
  41. public Map<String, Object> getSaleOrder(BigDecimal saleOrderId) {
  42. List<Map<String,Object>> entries = amsSaleOrderMapper.getMaterialMessages(saleOrderId);
  43. Map<String,Object> head = amsSaleOrderMapper.getSaleOrderMessage(saleOrderId);
  44. for (Map<String, Object> entry : entries) {
  45. BigDecimal qty = null;
  46. BigDecimal materialNumber = (BigDecimal) entry.get("materialNumber");
  47. BigDecimal materialWeight = (BigDecimal) entry.get("materialWeight");
  48. if (materialNumber != null && materialNumber.toString().length() != 0) {
  49. qty = materialNumber;
  50. }
  51. if (materialWeight != null && materialWeight.toString().length() != 0) {
  52. qty = materialWeight;
  53. }
  54. entry.put("qty",qty);
  55. entry.remove("materialNumber");
  56. entry.remove("materialWeight");
  57. }
  58. Map<String,Object> input = new HashMap<>();
  59. input.put("head",head);
  60. input.put("entries",entries);
  61. return input;
  62. }
  63. /**
  64. * 修改销售订单
  65. * @param mapVal
  66. * @return
  67. */
  68. @Transactional
  69. @Override
  70. public int operationSaleOrder(Map<String, Object> mapVal) {
  71. int result = 0;
  72. // 审批状态
  73. String orderStatus = (String) mapVal.get("orderStatus");
  74. // 得到销售订单号
  75. String saleNumber = (String) mapVal.get("saleNumber");
  76. Map<String,Object> map = new HashMap<>();
  77. map.put("saleNumber",saleNumber);
  78. List<AmsSaleOrder> amsSaleOrders = amsSaleOrderMapper.selectByParameters(map);
  79. if (orderStatus.equals("4")) {
  80. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  81. amsSaleOrder.setSaleOrderStatus(new BigDecimal(4));
  82. result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  83. }
  84. else {
  85. // 得到账户余额
  86. String saleAccountBalance = (String) mapVal.get("saleAccountBalance");
  87. // 得到当前订单金额
  88. String saleCurrentOrderAmount = (String) mapVal.get("saleCurrentOrderAmount");
  89. // 得到历史订单金额
  90. String saleHistoricalOrderAmount = (String) mapVal.get("saleHistoricalOrderAmount");
  91. // 得到订单备注
  92. String saleRemark = (String) mapVal.get("saleRemark");
  93. // 得到是否自提
  94. String isSelfMention = (String) mapVal.get("isSelfMention");
  95. // 得到收货单位
  96. String receiveUnit = (String) mapVal.get("receiveUnit");
  97. BigDecimal receiveId = amsSaleOrderMapper.getReceiveId(receiveUnit);
  98. // 得到发货单位
  99. String shipperUnit = (String) mapVal.get("shipperUnit");
  100. BigDecimal shipperId = amsSaleOrderMapper.getShipperId(shipperUnit);
  101. // 得到收款客户
  102. String saleOrderReceiveCustomer = (String) mapVal.get("receiveCustomer");
  103. // 得到物资信息
  104. List<Map<String, Object>> mapList = (List<Map<String, Object>>) mapVal.get("mapList");
  105. // 如果不存在则自己新增(使用金蝶销售订单号)
  106. if (amsSaleOrders.size() == 0) {
  107. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  108. BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderId();
  109. amsSaleOrder.setSaleOrderId(saleOrderId);
  110. amsSaleOrder.setSaleNumber(saleNumber);
  111. amsSaleOrder.setDeleted(new BigDecimal(0));
  112. amsSaleOrder.setInsertTime(new Date());
  113. amsSaleOrder.setUpdateTime(new Date());
  114. amsSaleOrder.setInsertUsername("admin");
  115. amsSaleOrder.setInsertUpdateRemark("金蝶采集销售订单");
  116. amsSaleOrder.setUpdateUsername("admin");
  117. amsSaleOrder.setReceiveId(receiveId);
  118. amsSaleOrder.setShipperId(shipperId);
  119. if (isSelfMention != null) {
  120. if (isSelfMention.equals("CARRY")) {
  121. amsSaleOrder.setSaleOrderIsselfMention("是");
  122. } else {
  123. amsSaleOrder.setSaleOrderIsselfMention("否");
  124. }
  125. }
  126. amsSaleOrder.setSaleOrderTax("13%");
  127. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  128. amsSaleOrder.setSaleRemark(saleRemark);
  129. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  130. amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance));
  131. amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount));
  132. if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) {
  133. amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
  134. }
  135. amsSaleOrder.setSaleOrderStatus(new BigDecimal(2));
  136. // 遍历物资分录,新增销售订单与物资中间表
  137. for (Map<String, Object> materialMap : mapList) {
  138. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  139. BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId();
  140. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  141. amsSaleMaterial.setSaleOrderId(saleOrderId);
  142. // 得到物资编码
  143. String materialCode = (String) materialMap.get("materialCode");
  144. BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
  145. // 得到金蝶分录主键
  146. String easPrimaryId = (String) materialMap.get("easPrimaryId");
  147. // 得到物资数量
  148. String materialNumber = (String) materialMap.get("materialNumber");
  149. // 得到计量单位
  150. String materialUnit = (String) materialMap.get("materialUnit");
  151. amsSaleMaterial.setEasPrimaryId(easPrimaryId);
  152. amsSaleMaterial.setMaterialId(materialId);
  153. amsSaleMaterial.setInsertTime(new Date());
  154. amsSaleMaterial.setInsertUsername("金蝶");
  155. amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
  156. if (materialUnit.equals("件")) {
  157. amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber));
  158. } else {
  159. amsSaleMaterial.setMaterialWeight(new BigDecimal(materialNumber));
  160. }
  161. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  162. }
  163. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  164. } else {
  165. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  166. amsSaleOrder.setSaleNumber(saleNumber);
  167. amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance));
  168. amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount));
  169. if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) {
  170. amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
  171. }
  172. amsSaleOrder.setSaleOrderStatus(new BigDecimal(orderStatus));
  173. for (Map<String, Object> materialMap : mapList) {
  174. // 得到中间表主键id
  175. String saleMaterialId = (String) materialMap.get("saleMaterialId");
  176. // 得到金蝶分录id
  177. String easPrimaryId = (String) materialMap.get("easPrimaryId");
  178. AmsSaleMaterial amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(new BigDecimal(saleMaterialId));
  179. amsSaleMaterial.setEasPrimaryId(easPrimaryId);
  180. result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  181. }
  182. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  183. }
  184. }
  185. return result;
  186. }
  187. }