CusOrderImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. package com.emato.ccnet.service.ccent.impl;
  2. import com.emato.ccnet.config.Merchant;
  3. import com.emato.ccnet.contants.Contants;
  4. import com.emato.ccnet.domain.ccnet.CusOrder;
  5. import com.emato.ccnet.domain.ccnet.CusOrderGoods;
  6. import com.emato.ccnet.domain.ccnet.CusOrderStatus;
  7. import com.emato.ccnet.domain.kmall.OrderBill;
  8. import com.emato.ccnet.domain.kmall.OrderGoods;
  9. import com.emato.ccnet.mapper.ccnet.CusOrderGoodsMapper;
  10. import com.emato.ccnet.mapper.ccnet.CusOrderMapper;
  11. import com.emato.ccnet.mapper.ccnet.CusOrderStatusMapper;
  12. import com.emato.ccnet.mapper.kmall.KmallOrderMapper;
  13. import com.emato.ccnet.redis.jedis.cluster.mgt.JedisClusterManager;
  14. import com.emato.ccnet.service.ccent.CusOrderService;
  15. import com.emato.ccnet.snow.SnowflakeUtil;
  16. import com.emato.ccnet.util.DateUtil;
  17. import com.emato.ccnet.util.JacksonUtil;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import java.util.*;
  23. @Service
  24. public class CusOrderImpl implements CusOrderService{
  25. private static final Logger logger = LoggerFactory.getLogger(CusPaymentCollectImpl.class);
  26. @Autowired
  27. private Merchant merchant;
  28. @Autowired
  29. private CusOrderMapper cusOrderMapper;
  30. @Autowired
  31. private CusOrderGoodsMapper cusOrderGoodsMapper;
  32. @Autowired
  33. private CusOrderStatusMapper cusOrderStatusMapper;
  34. @Autowired
  35. private KmallOrderMapper kmallOrderMapper;
  36. /**
  37. * 生成报关流水号
  38. * @return
  39. */
  40. public static String getNormalOrderNo() {
  41. String orderNo = DateUtil.dateToString(new Date(),"yyyyMMddHHmmss");
  42. return orderNo;
  43. }
  44. /**
  45. * 电子订单初始化
  46. * @param list
  47. * @return
  48. */
  49. @Override
  50. public int addCusOrder(List list) {
  51. //电子订单总表集合
  52. List<CusOrder> CusOrders = new ArrayList<>();
  53. //电子订单状态表集合
  54. List<CusOrderStatus> CusOrderStatues = new ArrayList<>();
  55. //支付单数据
  56. List<OrderBill> orderBillList = (List<OrderBill>) list;
  57. List<String> orderList = new ArrayList<>();
  58. for (OrderBill orderBill : orderBillList) {
  59. CusOrder bill = cusOrderMapper.findCusOrderByOrderNo(orderBill.getOrderNo());
  60. String cusOrderSn = Contants.ZWSH + SnowflakeUtil.getSnowNextId();
  61. String orderSn = Contants.ZW +SnowflakeUtil.getSnowNextId();
  62. //电子订单表
  63. CusOrder cusOrder = buildCusOrder(orderBill,cusOrderSn,orderSn);
  64. CusOrders.add(cusOrder);
  65. //插入电子订单商品表
  66. buildCusOrderGoods(orderBill,cusOrderSn);
  67. //电子订单发送状态
  68. CusOrderStatus cusOrderStatus = buildCusOrderStatus(orderBill,cusOrderSn,orderSn);
  69. CusOrderStatues.add(cusOrderStatus);
  70. }
  71. if (cusOrderMapper.insertCusOrderItemBatch(CusOrders) <= 0) {
  72. logger.error("批量插入,电子订单表记录全部失败");
  73. return 0;
  74. }
  75. if(cusOrderStatusMapper.insertCusOrderStatusItemBatch(CusOrderStatues) <= 0){
  76. logger.error("批量插入,电子订单状态表记录全部失败");
  77. return 0;
  78. }
  79. return 1;
  80. }
  81. /**
  82. * 记录CusOrderStatus
  83. * @param orderBill
  84. * @param cusOrderSn
  85. * @param orderSn
  86. * @return
  87. */
  88. private CusOrderStatus buildCusOrderStatus(OrderBill orderBill, String cusOrderSn, String orderSn) {
  89. CusOrderStatus cusOrderStatus = new CusOrderStatus();
  90. String cusOrderStatusPaySn = Contants.ZWSH+ SnowflakeUtil.getSnowNextId();
  91. cusOrderStatus.setCusOrderStatusSn(cusOrderStatusPaySn);
  92. cusOrderStatus.setCusOrderSn(cusOrderSn);
  93. cusOrderStatus.setOrderSn(orderSn);
  94. cusOrderStatus.setMerchOrderSn(orderBill.getOrderNo());
  95. cusOrderStatus.setMerchSn(merchant.getMerchSn());
  96. cusOrderStatus.setMerchName(merchant.getMerchName());
  97. cusOrderStatus.setPlatSn(merchant.getPlatSn());
  98. cusOrderStatus.setPlatName(merchant.getPlatName());
  99. cusOrderStatus.setThirdPartyMerchCode(orderBill.getSellerId());
  100. cusOrderStatus.setThirdPartyMerchName(orderBill.getSellerName());
  101. cusOrderStatus.setSendStatus(Contants.INIT_STATUS);
  102. cusOrderStatus.setPlatRespStatus(Contants.INIT_STATUS);
  103. cusOrderStatus.setCusRespStatus(Contants.INIT_STATUS);
  104. cusOrderStatus.setCipRespStatus(Contants.INIT_STATUS);
  105. return cusOrderStatus;
  106. }
  107. /**
  108. * 记录CusOrderGoods
  109. * @param orderBill
  110. * @param cusOrderSn
  111. * @return
  112. */
  113. private void buildCusOrderGoods(OrderBill orderBill, String cusOrderSn) {
  114. Map<String, Object> resultMap = new HashMap<>();
  115. List<OrderGoods> orderGoodsList = kmallOrderMapper.getOrderGoods(orderBill.getOrderNo());
  116. if (orderGoodsList == null || orderGoodsList.size() <= 0){
  117. logger.error("电子订单为空!");
  118. return;
  119. }
  120. List<CusOrderGoods> CusOrderGoodes = new ArrayList<>();
  121. int i = 1;
  122. for (OrderGoods orderGoods:orderGoodsList){
  123. CusOrderGoods cusOrderGoods = new CusOrderGoods();
  124. try {
  125. //获取缓存中的产品备案数据
  126. final String resultJson = JedisClusterManager.jedisClusterInstance().get(Contants.PD_PRODUCT_RECORD);
  127. resultMap = JacksonUtil.fromStringJson(resultJson, resultMap.getClass());
  128. } catch (Exception e) {
  129. logger.error("获取系统模块中缓存的产品备案数据集异常!");
  130. return;
  131. }
  132. String sku = orderGoods.getGoodsNo();
  133. Map<String, Object> productRecordMap = (Map) resultMap.get(sku);
  134. if(productRecordMap == null){
  135. logger.error("sku不存在异常");
  136. }
  137. String cusOrderGoodsPaySn = Contants.ZWSH+ SnowflakeUtil.getSnowNextId();
  138. cusOrderGoods.setCusOrderGoodsSn(cusOrderGoodsPaySn);
  139. cusOrderGoods.setCusOrderSn(cusOrderSn);
  140. cusOrderGoods.setGnum(i+"");
  141. cusOrderGoods.setItemNo(orderGoods.getGoodsNo());
  142. cusOrderGoods.setItemName(orderGoods.getName());
  143. cusOrderGoods.setItemDescribe(orderGoods.getContent());
  144. cusOrderGoods.setBarCode((String)productRecordMap.get("prodBarcode"));
  145. cusOrderGoods.setUnit((String)productRecordMap.get("unitCode"));
  146. cusOrderGoods.setQty(orderGoods.getGoodsNums());
  147. cusOrderGoods.setPrice(orderGoods.getSellPrice());
  148. cusOrderGoods.setTotalPrice(orderGoods.getSellTotalPice());
  149. cusOrderGoods.setCurrency(Contants.CURRENCY);
  150. cusOrderGoods.setCountry((String)productRecordMap.get("oriCntCode"));
  151. cusOrderGoods.setCiqGno((String)productRecordMap.get("cusRecCode"));
  152. cusOrderGoods.setGcode((String) productRecordMap.get("cusGoodsCode"));
  153. cusOrderGoods.setGmodel((String) productRecordMap.get("cusDeclEle"));
  154. cusOrderGoods.setCiqGmodel((String)productRecordMap.get("ciqProdModel"));
  155. cusOrderGoods.setBrand((String)productRecordMap.get("prodBrand"));
  156. cusOrderGoods.setCreaterSn(Contants.CREATER_NUMBER);
  157. cusOrderGoods.setCreateTime(new Date());
  158. CusOrderGoodes.add(cusOrderGoods);
  159. ++ i;
  160. }
  161. if(cusOrderGoodsMapper.insertCusOrderGoodsItemBatch(CusOrderGoodes) <= 0){
  162. logger.error("批量插入,电子订单商品表记录全部失败");
  163. return;
  164. }
  165. }
  166. /**
  167. * 记录CusOrder
  168. * @param orderBill
  169. * @param cusOrderSn
  170. * @param orderSn
  171. * @return
  172. */
  173. private CusOrder buildCusOrder(OrderBill orderBill, String cusOrderSn, String orderSn) {
  174. CusOrder cusOrder = new CusOrder();
  175. cusOrder.setCusOrderSn(cusOrderSn);
  176. cusOrder.setOrderSn(orderSn);
  177. cusOrder.setMerchOrderSn(orderBill.getOrderNo());
  178. cusOrder.setMerchSn(merchant.getMerchSn());
  179. cusOrder.setMerchName(merchant.getMerchName());
  180. cusOrder.setPlatSn(merchant.getPlatSn());
  181. cusOrder.setPlatName(merchant.getPlatName());
  182. cusOrder.setThirdPartyMerchCode(orderBill.getSellerId());
  183. cusOrder.setThirdPartyMerchName(orderBill.getSellerName());
  184. cusOrder.setPlaceOrderlTime(orderBill.getCreateTime());
  185. cusOrder.setAppType(Contants.APP_STATUS_DECLARE);
  186. cusOrder.setAppStatus(Contants.APP_STATUS_SEPARETE);
  187. cusOrder.setAppTime(getNormalOrderNo());
  188. cusOrder.setOrderNo(orderBill.getOrderNo());
  189. cusOrder.setEbpCode(merchant.getPlatSn());
  190. cusOrder.setEbpName(merchant.getPlatName());
  191. cusOrder.setEbcCode(merchant.getMerchSn());
  192. cusOrder.setEbcName(merchant.getMerchName());
  193. cusOrder.setGoodsValue(orderBill.getRealAmount());
  194. cusOrder.setbuyerIdNumber(orderBill.getUserId());
  195. cusOrder.setBuyerName(orderBill.getTrueName());
  196. cusOrder.setBuyerIdType(orderBill.getIdType());
  197. cusOrder.setbuyerIdNumber(orderBill.getIdCode());
  198. cusOrder.setPayCode(merchant.getMerchantCustomsCode());
  199. cusOrder.setPayName(merchant.getMerchantCustomsName());
  200. cusOrder.setPayTransactionId(orderBill.getTradeNo());
  201. cusOrder.setConsignee(orderBill.getAcceptName());
  202. cusOrder.setConsigneeTelephone(orderBill.getMobile());
  203. cusOrder.setConsigneeAddress(orderBill.getAddress());
  204. cusOrder.setActuralPaid(orderBill.getRealAmount());
  205. cusOrder.setBuyerRegNo(orderBill.getUserId());
  206. return cusOrder;
  207. }
  208. /**
  209. * 查找当前ccnet中的所有电子订单
  210. * @return
  211. */
  212. @Override
  213. public List<CusOrder> findAllCusOrder() {
  214. return cusOrderMapper.findAllCusOrder();
  215. }
  216. /**
  217. * 通过订单号查找电子订单表
  218. * @param orderSn
  219. * @return
  220. */
  221. @Override
  222. public CusOrder findCusOrder(String orderSn) {
  223. return cusOrderMapper.findCusOrderByOrderNo(orderSn);
  224. }
  225. /**
  226. * 更新电子订单表
  227. * @param cusOrder
  228. * @return
  229. */
  230. @Override
  231. public int updateCusOrder(CusOrder cusOrder) {
  232. return cusOrderMapper.updateCusOrder(cusOrder);
  233. }
  234. }