AmsSaleOrderServiceImpl.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  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.mapper.RmsConsigneeMapper;
  5. import com.steerinfo.dil.model.AmsSaleMaterial;
  6. import com.steerinfo.dil.model.AmsSaleOrder;
  7. import com.steerinfo.dil.model.RmsConsignee;
  8. import com.steerinfo.dil.service.IAmsSaleOrderService;
  9. import com.steerinfo.dil.util.DataChange;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.math.BigDecimal;
  14. import java.util.Date;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. /**
  19. * AmsSaleOrder服务实现:
  20. * @author generator
  21. * @version 1.0-SNAPSHORT 2021-10-26 07:26
  22. * 类描述
  23. * 修订历史:
  24. * 日期:2021-10-26
  25. * 作者:generator
  26. * 参考:
  27. * 描述:AmsSaleOrder服务实现
  28. * @see null
  29. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  30. */
  31. @Service(value = "amsSaleOrderService")
  32. public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
  33. @Autowired
  34. private AmsSaleOrderMapper amsSaleOrderMapper;
  35. @Autowired
  36. AmsSaleMaterialMapper amsSaleMaterialMapper;
  37. @Autowired
  38. RmsConsigneeMapper rmsConsigneeMapper;
  39. /**
  40. * 查询销售订单
  41. * @param saleOrderId
  42. * @return
  43. */
  44. @Override
  45. public Map<String, Object> getSaleOrder(BigDecimal saleOrderId) {
  46. List<Map<String,Object>> entries = amsSaleOrderMapper.getMaterialMessages(saleOrderId);
  47. Map<String,Object> head = amsSaleOrderMapper.getSaleOrderMessage(saleOrderId);
  48. for (Map<String, Object> entry : entries) {
  49. BigDecimal qty = null;
  50. BigDecimal materialNumber = (BigDecimal) entry.get("materialNumber");
  51. BigDecimal materialWeight = (BigDecimal) entry.get("materialWeight");
  52. if (materialNumber != null && materialNumber.toString().length() != 0) {
  53. qty = materialNumber;
  54. }
  55. if (materialWeight != null && materialWeight.toString().length() != 0) {
  56. qty = materialWeight;
  57. }
  58. entry.put("qty",qty);
  59. entry.remove("materialNumber");
  60. entry.remove("materialWeight");
  61. }
  62. Map<String,Object> input = new HashMap<>();
  63. input.put("head",head);
  64. input.put("entries",entries);
  65. return input;
  66. }
  67. /**
  68. * 修改销售订单
  69. * @param mapVal
  70. * @return
  71. */
  72. @Transactional
  73. @Override
  74. public int operationSaleOrder(Map<String, Object> mapVal) {
  75. int result = 0;
  76. // 审批状态
  77. String orderStatus = (String) mapVal.get("orderStatus");
  78. // 得到销售订单号
  79. String saleNumber = (String) mapVal.get("saleNumber");
  80. Map<String,Object> map = new HashMap<>();
  81. map.put("saleNumber",saleNumber);
  82. // 判断是删除还是非删除
  83. String closeStatus = (String) mapVal.get("closeStatus");
  84. List<AmsSaleOrder> amsSaleOrders = amsSaleOrderMapper.selectByParameters(map);
  85. if (closeStatus.equals("0")) {
  86. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  87. amsSaleOrder.setDeleted(new BigDecimal(1));
  88. result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  89. }
  90. if (orderStatus.equals("4") && closeStatus.equals("1")){
  91. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  92. amsSaleOrder.setSaleOrderStatus(new BigDecimal(4));
  93. amsSaleOrder.setDeleted(new BigDecimal(0));
  94. result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  95. }
  96. if (orderStatus.equals("2") && closeStatus.equals("1")){
  97. // 得到账户余额
  98. String saleAccountBalance = (String) mapVal.get("saleAccountBalance");
  99. // 得到当前订单金额
  100. String saleCurrentOrderAmount = (String) mapVal.get("saleCurrentOrderAmount");
  101. // 得到历史订单金额
  102. String saleHistoricalOrderAmount = (String) mapVal.get("saleHistoricalOrderAmount");
  103. // 得到订单备注
  104. String saleRemark = (String) mapVal.get("saleRemark");
  105. // 得到是否自提
  106. String isSelfMention = (String) mapVal.get("isSelfMention");
  107. // 得到收货单位
  108. String receiveUnit = (String) mapVal.get("receiveUnit");
  109. // 得到收货单位名称
  110. String receiveUnitName = (String) mapVal.get("receiveUnitName");
  111. BigDecimal receiveId = amsSaleOrderMapper.getReceiveId(receiveUnit);
  112. // 如果不存则自己增收获单位
  113. if (receiveId == null) {
  114. RmsConsignee rmsConsignee = new RmsConsignee();
  115. BigDecimal consigneeId = rmsConsigneeMapper.getConsigneeId();
  116. rmsConsignee.setConsigneeId(consigneeId);
  117. rmsConsignee.setConsigneeCode(receiveUnit);
  118. rmsConsignee.setConsigneeCompanyName(receiveUnitName);
  119. rmsConsignee.setDeleted(new BigDecimal(0));
  120. rmsConsignee.setInsertTime(new Date());
  121. rmsConsignee.setInsertUsername("销售订单");
  122. rmsConsignee.setInsertUpdateRemark("通过销售订单自增");
  123. rmsConsigneeMapper.insertSelective(rmsConsignee);
  124. }
  125. // 得到发货单位
  126. String shipperUnit = (String) mapVal.get("shipperUnit");
  127. BigDecimal shipperId = amsSaleOrderMapper.getShipperId(shipperUnit);
  128. // 得到收款客户
  129. String saleOrderReceiveCustomer = (String) mapVal.get("receiveCustomer");
  130. // 得到物资信息
  131. List<Map<String, Object>> mapList = (List<Map<String, Object>>) mapVal.get("mapList");
  132. // 如果不存在则自己新增(使用金蝶销售订单号)
  133. if (amsSaleOrders.size() == 0) {
  134. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  135. BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderId();
  136. amsSaleOrder.setSaleOrderId(saleOrderId);
  137. amsSaleOrder.setSaleNumber(saleNumber);
  138. amsSaleOrder.setDeleted(new BigDecimal(0));
  139. amsSaleOrder.setInsertTime(new Date());
  140. amsSaleOrder.setUpdateTime(new Date());
  141. amsSaleOrder.setInsertUsername("admin");
  142. amsSaleOrder.setInsertUpdateRemark("金蝶采集销售订单");
  143. amsSaleOrder.setUpdateUsername("admin");
  144. amsSaleOrder.setReceiveId(receiveId);
  145. amsSaleOrder.setShipperId(shipperId);
  146. if (shipperUnit.equals("四川达兴能源有限责任公司") && receiveUnitName.equals("四川省达州钢铁集团有限责任公司")) {
  147. amsSaleOrder.setCloseStatus(new BigDecimal(0));
  148. }
  149. if (isSelfMention != null) {
  150. if (isSelfMention.equals("CARRY")) {
  151. amsSaleOrder.setSaleOrderIsselfMention("是");
  152. } else {
  153. amsSaleOrder.setSaleOrderIsselfMention("否");
  154. }
  155. }
  156. amsSaleOrder.setSaleOrderTax("13%");
  157. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  158. amsSaleOrder.setSaleRemark(saleRemark);
  159. amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
  160. amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance));
  161. amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount));
  162. if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) {
  163. amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
  164. }
  165. amsSaleOrder.setSaleOrderStatus(new BigDecimal(2));
  166. // 遍历物资分录,新增销售订单与物资中间表
  167. for (Map<String, Object> materialMap : mapList) {
  168. AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
  169. BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId();
  170. amsSaleMaterial.setSaleMaterialId(saleMaterialId);
  171. amsSaleMaterial.setSaleOrderId(saleOrderId);
  172. // 得到物资编码
  173. String materialCode = (String) materialMap.get("materialCode");
  174. BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
  175. // 得到金蝶分录主键
  176. String easPrimaryId = (String) materialMap.get("easPrimaryId");
  177. // 得到物资数量
  178. String materialNumber = (String) materialMap.get("materialNumber");
  179. // 得到计量单位
  180. String materialUnit = (String) materialMap.get("materialUnit");
  181. amsSaleMaterial.setEasPrimaryId(easPrimaryId);
  182. amsSaleMaterial.setMaterialId(materialId);
  183. amsSaleMaterial.setInsertTime(new Date());
  184. amsSaleMaterial.setInsertUsername("金蝶");
  185. amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
  186. if (materialUnit.equals("件")) {
  187. amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber));
  188. } else {
  189. amsSaleMaterial.setMaterialWeight(new BigDecimal(materialNumber));
  190. }
  191. result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
  192. }
  193. result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  194. } else {
  195. AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
  196. amsSaleOrder.setSaleNumber(saleNumber);
  197. amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance));
  198. amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount));
  199. amsSaleOrder.setSaleRemark(saleRemark);
  200. amsSaleOrder.setDeleted(new BigDecimal(0));
  201. amsSaleOrder.setUpdateTime(new Date());
  202. if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) {
  203. amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
  204. }
  205. amsSaleOrder.setSaleOrderStatus(new BigDecimal(orderStatus));
  206. for (Map<String, Object> materialMap : mapList) {
  207. // 得到中间表主键id
  208. String saleMaterialId = (String) materialMap.get("saleMaterialId");
  209. // 得到金蝶分录id
  210. String easPrimaryId = (String) materialMap.get("easPrimaryId");
  211. Map<String,Object> resultMap = new HashMap<>();
  212. resultMap.put("easPrimaryId",easPrimaryId);
  213. AmsSaleMaterial amsSaleMaterial;
  214. // 如果有物流系统销售订单物资表主键:认定是走物流新增的销售订单(通过物流系统主键进行查询)
  215. if (saleMaterialId != null && (!saleMaterialId.equals("null")) && !saleMaterialId.equals("")) {
  216. amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(new BigDecimal(saleMaterialId));
  217. }
  218. // 否则认定是走金蝶新增的销售订单(通过金蝶分录id进行查询)
  219. else {
  220. List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(resultMap);
  221. amsSaleMaterial = amsSaleMaterials.get(0);
  222. }
  223. // 得到物资编码
  224. String materialCode = (String) materialMap.get("materialCode");
  225. BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
  226. // 得到物资数量
  227. String materialNumber = (String) materialMap.get("materialNumber");
  228. // 得到计量单位
  229. String materialUnit = (String) materialMap.get("materialUnit");
  230. amsSaleMaterial.setEasPrimaryId(easPrimaryId);
  231. amsSaleMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId());
  232. amsSaleMaterial.setMaterialId(materialId);
  233. amsSaleMaterial.setInsertTime(new Date());
  234. amsSaleMaterial.setInsertUsername("金蝶");
  235. amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
  236. if (materialUnit.equals("件")) {
  237. amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber));
  238. } else {
  239. amsSaleMaterial.setMaterialWeight(new BigDecimal(materialNumber));
  240. }
  241. result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
  242. }
  243. result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  244. }
  245. }
  246. return result;
  247. }
  248. }