CusOrderImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  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. if(bill == null){
  61. String cusOrderSn = Contants.ZWSH + SnowflakeUtil.getSnowNextId();
  62. String orderSn = Contants.ZW +SnowflakeUtil.getSnowNextId();
  63. //电子订单表
  64. CusOrder cusOrder = buildCusOrder(orderBill,cusOrderSn,orderSn);
  65. CusOrders.add(cusOrder);
  66. //插入电子订单商品表
  67. buildCusOrderGoods(orderBill,cusOrderSn);
  68. //电子订单发送状态
  69. CusOrderStatus cusOrderStatus = buildCusOrderStatus(orderBill,cusOrderSn,orderSn);
  70. CusOrderStatues.add(cusOrderStatus);
  71. }
  72. }
  73. if (cusOrderMapper.insertCusOrderItemBatch(CusOrders) <= 0) {
  74. logger.error("批量插入,电子订单表记录全部失败");
  75. return 0;
  76. }
  77. if(cusOrderStatusMapper.insertCusOrderStatusItemBatch(CusOrderStatues) <= 0){
  78. logger.error("批量插入,电子订单状态表记录全部失败");
  79. return 0;
  80. }
  81. return 1;
  82. }
  83. /**
  84. * 记录CusOrderStatus
  85. * @param orderBill
  86. * @param cusOrderSn
  87. * @param orderSn
  88. * @return
  89. */
  90. private CusOrderStatus buildCusOrderStatus(OrderBill orderBill, String cusOrderSn, String orderSn) {
  91. CusOrderStatus cusOrderStatus = new CusOrderStatus();
  92. String cusOrderStatusPaySn = Contants.ZWSH+ SnowflakeUtil.getSnowNextId();
  93. cusOrderStatus.setCusOrderStatusSn(cusOrderStatusPaySn);
  94. cusOrderStatus.setCusOrderSn(cusOrderSn);
  95. cusOrderStatus.setOrderSn(orderSn);
  96. cusOrderStatus.setMerchOrderSn(orderBill.getOrderNo());
  97. cusOrderStatus.setMerchSn(merchant.getMerchSn());
  98. cusOrderStatus.setMerchName(merchant.getMerchName());
  99. cusOrderStatus.setPlatSn(merchant.getPlatSn());
  100. cusOrderStatus.setPlatName(merchant.getPlatName());
  101. cusOrderStatus.setThirdPartyMerchCode(orderBill.getSellerId());
  102. cusOrderStatus.setThirdPartyMerchName(orderBill.getSellerName());
  103. cusOrderStatus.setSendStatus(Contants.INIT_STATUS);
  104. cusOrderStatus.setPlatRespStatus(Contants.INIT_STATUS);
  105. cusOrderStatus.setCusRespStatus(Contants.INIT_STATUS);
  106. cusOrderStatus.setCipRespStatus(Contants.INIT_STATUS);
  107. return cusOrderStatus;
  108. }
  109. /**
  110. * 记录CusOrderGoods
  111. * @param orderBill
  112. * @param cusOrderSn
  113. * @return
  114. */
  115. private void buildCusOrderGoods(OrderBill orderBill, String cusOrderSn) {
  116. Map<String, Object> resultMap = new HashMap<>();
  117. List<OrderGoods> orderGoodsList = kmallOrderMapper.getOrderGoods(orderBill.getOrderNo());
  118. if (orderGoodsList == null || orderGoodsList.size() <= 0){
  119. logger.error("电子订单为空!");
  120. return;
  121. }
  122. List<CusOrderGoods> CusOrderGoodes = new ArrayList<>();
  123. int i = 1;
  124. for (OrderGoods orderGoods:orderGoodsList){
  125. CusOrderGoods cusOrderGoods = new CusOrderGoods();
  126. try {
  127. //获取缓存中的产品备案数据
  128. final String resultJson = JedisClusterManager.jedisClusterInstance().get(Contants.PD_PRODUCT_RECORD);
  129. resultMap = JacksonUtil.fromStringJson(resultJson, resultMap.getClass());
  130. } catch (Exception e) {
  131. logger.error("获取系统模块中缓存的产品备案数据集异常!");
  132. return;
  133. }
  134. String sku = orderGoods.getGoodsNo();
  135. Map<String, Object> productRecordMap = (Map) resultMap.get(sku);
  136. if(productRecordMap == null){
  137. logger.error("sku不存在异常");
  138. }
  139. String cusOrderGoodsPaySn = Contants.ZWSH+ SnowflakeUtil.getSnowNextId();
  140. cusOrderGoods.setCusOrderGoodsSn(cusOrderGoodsPaySn);
  141. cusOrderGoods.setCusOrderSn(cusOrderSn);
  142. cusOrderGoods.setGnum(i+"");
  143. cusOrderGoods.setItemNo(orderGoods.getGoodsNo());
  144. cusOrderGoods.setItemName(orderGoods.getName());
  145. cusOrderGoods.setItemDescribe(orderGoods.getContent());
  146. cusOrderGoods.setBarCode((String)productRecordMap.get("prodBarcode"));
  147. cusOrderGoods.setUnit((String)productRecordMap.get("unitCode"));
  148. cusOrderGoods.setQty(orderGoods.getGoodsNums());
  149. cusOrderGoods.setPrice(orderGoods.getSellPrice());
  150. cusOrderGoods.setTotalPrice(orderGoods.getSellTotalPice());
  151. cusOrderGoods.setCurrency(Contants.CURRENCY);
  152. cusOrderGoods.setCountry((String)productRecordMap.get("oriCntCode"));
  153. cusOrderGoods.setCiqGno((String)productRecordMap.get("cusRecCode"));
  154. cusOrderGoods.setGcode((String) productRecordMap.get("cusGoodsCode"));
  155. cusOrderGoods.setGmodel((String) productRecordMap.get("cusDeclEle"));
  156. cusOrderGoods.setCiqGmodel((String)productRecordMap.get("ciqProdModel"));
  157. cusOrderGoods.setBrand((String)productRecordMap.get("prodBrand"));
  158. cusOrderGoods.setCreaterSn(Contants.CREATER_NUMBER);
  159. cusOrderGoods.setCreateTime(new Date());
  160. CusOrderGoodes.add(cusOrderGoods);
  161. ++ i;
  162. }
  163. if(cusOrderGoodsMapper.insertCusOrderGoodsItemBatch(CusOrderGoodes) <= 0){
  164. logger.error("批量插入,电子订单商品表记录全部失败");
  165. return;
  166. }
  167. }
  168. /**
  169. * 记录CusOrder
  170. * @param orderBill
  171. * @param cusOrderSn
  172. * @param orderSn
  173. * @return
  174. */
  175. private CusOrder buildCusOrder(OrderBill orderBill, String cusOrderSn, String orderSn) {
  176. CusOrder cusOrder = new CusOrder();
  177. cusOrder.setCusOrderSn(cusOrderSn);
  178. cusOrder.setOrderSn(orderSn);
  179. cusOrder.setMerchOrderSn(orderBill.getOrderNo());
  180. cusOrder.setMerchSn(merchant.getMerchSn());
  181. cusOrder.setMerchName(merchant.getMerchName());
  182. cusOrder.setPlatSn(merchant.getPlatSn());
  183. cusOrder.setPlatName(merchant.getPlatName());
  184. cusOrder.setThirdPartyMerchCode(orderBill.getSellerId());
  185. cusOrder.setThirdPartyMerchName(orderBill.getSellerName());
  186. cusOrder.setPlaceOrderlTime(orderBill.getCreateTime());
  187. cusOrder.setAppType(Contants.APP_STATUS_DECLARE);
  188. cusOrder.setAppStatus(Contants.APP_STATUS_SEPARETE);
  189. cusOrder.setAppTime(getNormalOrderNo());
  190. cusOrder.setOrderNo(orderBill.getOrderNo());
  191. cusOrder.setEbpCode(merchant.getPlatSn());
  192. cusOrder.setEbpName(merchant.getPlatName());
  193. cusOrder.setEbcCode(merchant.getMerchSn());
  194. cusOrder.setEbcName(merchant.getMerchName());
  195. cusOrder.setGoodsValue(orderBill.getRealAmount());
  196. cusOrder.setbuyerIdNumber(orderBill.getUserId());
  197. cusOrder.setBuyerName(orderBill.getTrueName());
  198. cusOrder.setBuyerIdType(orderBill.getIdType());
  199. cusOrder.setbuyerIdNumber(orderBill.getIdCode());
  200. cusOrder.setPayCode(merchant.getMerchantCustomsCode());
  201. cusOrder.setPayName(merchant.getMerchantCustomsName());
  202. cusOrder.setPayTransactionId(orderBill.getTradeNo());
  203. cusOrder.setConsignee(orderBill.getAcceptName());
  204. cusOrder.setConsigneeTelephone(orderBill.getMobile());
  205. cusOrder.setConsigneeAddress(orderBill.getAddress());
  206. cusOrder.setActuralPaid(orderBill.getRealAmount());
  207. cusOrder.setBuyerRegNo(orderBill.getUserId());
  208. return cusOrder;
  209. }
  210. /**
  211. * 查找当前ccnet中的所有电子订单
  212. * @return
  213. */
  214. @Override
  215. public List<CusOrder> findAllCusOrder() {
  216. return cusOrderMapper.findAllCusOrder();
  217. }
  218. /**
  219. * 通过订单号查找电子订单表
  220. * @param orderSn
  221. * @return
  222. */
  223. @Override
  224. public CusOrder findCusOrder(String orderSn) {
  225. return cusOrderMapper.findCusOrderByOrderNo(orderSn);
  226. }
  227. /**
  228. * 更新电子订单表
  229. * @param cusOrder
  230. * @return
  231. */
  232. @Override
  233. public int updateCusOrder(CusOrder cusOrder) {
  234. return cusOrderMapper.updateCusOrder(cusOrder);
  235. }
  236. }