| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- package com.emato.ccnet.wx.service.impl;
- import com.emato.ccnet.wx.config.Cus;
- import com.emato.ccnet.wx.config.Merchant;
- import com.emato.ccnet.wx.contants.Contants;
- import com.emato.ccnet.wx.dao.entity.ccnet.*;
- import com.emato.ccnet.wx.dao.entity.oms.MerchantPlatform;
- import com.emato.ccnet.wx.dao.mapper.ccnet.CusOrderGoodsMapper;
- import com.emato.ccnet.wx.dao.mapper.ccnet.CusOrderMapper;
- import com.emato.ccnet.wx.dao.mapper.ccnet.CusOrderStatusMapper;
- import com.emato.ccnet.wx.manager.snow.SnowflakeUtil;
- import com.emato.ccnet.wx.service.CusOrderService;
- import com.emato.ccnet.wx.service.OmsMerchantPlatformService;
- import com.emato.ccnet.wx.service.WxOrderGoodsService;
- import com.emato.ccnet.wx.util.DateUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.math.BigDecimal;
- import java.util.*;
- @Service("cusOrderService")
- public class CusOrderServiceImpl implements CusOrderService {
- @Autowired
- private CusOrderMapper cusOrderMapper;
- @Autowired
- private CusOrderGoodsMapper cusOrderGoodsMapper;
- @Autowired
- private CusOrderStatusMapper cusOrderStatusMapper;
- @Autowired
- private WxOrderGoodsService wxOrderGoodsService;
- @Autowired
- private Merchant merchant;
- @Autowired
- private Cus cus;
- @Autowired
- private OmsMerchantPlatformService omsMerchantPlatformService;
- private static final Logger logger = LoggerFactory.getLogger(CusOrderServiceImpl.class);
- @Override
- public CusOrder add(CusOrder record) {
- record.setCreateTime(new Date());
- if(this.cusOrderMapper.insertSelective(record)==1) {
- return record;
- }
- return null;
- }
- @Override
- public boolean delete(String cusOrderSn) {
- return this.cusOrderMapper.deleteByPrimaryKey(cusOrderSn)==1;
- }
- @Override
- public CusOrder update(CusOrder record) {
- if(this.cusOrderMapper.updateByPrimaryKeySelective(record)==1) {
- return record;
- }
- return null;
- }
- @Override
- public CusOrder get(String cusOrderSn) {
- return this.cusOrderMapper.selectByPrimaryKey(cusOrderSn);
- }
- /**
- * 生成报关流水号
- * @return
- */
- public static String getNormalOrderNo() {
- String orderNo = DateUtil.dateToString(new Date(),"yyyyMMddHHmmss");
- return orderNo;
- }
- /**
- * 电子订单初始化
- * @param list
- * @return
- */
- @Override
- public int addCusOrder(List list) {
- //电子订单总表集合
- List<CusOrder> CusOrders = new ArrayList<>();
- List<CusOrder> upCusOrders = new ArrayList<>();
- //电子订单状态表集合
- List<CusOrderStatus> CusOrderStatues = new ArrayList<>();
- List<CusOrderStatus> upCusOrderStatues = new ArrayList<>();
- //电子订单商品表
- List<CusOrderGoods> cusOrderGoodes = new ArrayList<>();
- List<WxOrder> orderBillList = (List<WxOrder>) list;
- for (WxOrder wxOrder : orderBillList) {
- CusOrder bill = cusOrderMapper.findCusOrderByOrderNo(wxOrder.getOrderSn());
- if (bill != null) {
- List<CusOrderGoods> cusOrderGoodsList = cusOrderGoodsMapper.findCusOrderGoodsByCusOrderSn(bill.getCusOrderSn());
- if (cusOrderGoodsList != null && cusOrderGoodsList.size() > 0) {
- if (cusOrderGoodsMapper.deteleByCusOrderSn(bill.getCusOrderSn()) < 0) {
- logger.error("批量删除电子订单商品表记录失败");
- return 0;
- }
- }
- //将订单商品表添加以及将商品价格提取
- List<WxOrderGoods> orderGoodsList = wxOrderGoodsService.getWxOrderGoodsByWxOrderId(wxOrder.getWxOrderId());
- if (orderGoodsList == null || orderGoodsList.size() <= 0){
- logger.error("订单详情为空!");
- return 0;
- }
- BigDecimal goodsValue = new BigDecimal(0);
- int i = 1;
- //电子订单商品表
- for (WxOrderGoods wxOrderGoods:orderGoodsList) {
- CusOrderGoods cusOrderGoods = buildCusOrderGoods(wxOrderGoods, bill.getCusOrderSn(), i);
- i++;
- goodsValue = goodsValue.add(cusOrderGoods.getTotalPrice());
- cusOrderGoodes.add(cusOrderGoods);
- }
- //电子订单表
- CusOrder cusOrder = buildCusOrder(wxOrder, bill.getCusOrderSn(), bill.getOrderSn(), goodsValue);
- if (cusOrder == null) {
- return 0;
- }
- upCusOrders.add(cusOrder);
- //电子订单发送状态
- CusOrderStatus cusOrderStatus = cusOrderStatusMapper.findCusOrderStatusByCusOrderSn(bill.getCusOrderSn());
- cusOrderStatus = buildCusOrderStatus(wxOrder, bill.getCusOrderSn(), bill.getOrderSn(), cusOrderStatus.getCusOrderStatusSn());
- upCusOrderStatues.add(cusOrderStatus);
- } else {
- String cusOrderSn = Contants.WMSH + SnowflakeUtil.getSnowNextId();
- String orderSn = Contants.WM + SnowflakeUtil.getSnowNextId();
- String cusOrderStatusSn = Contants.WMSH+ SnowflakeUtil.getSnowNextId();
- //将订单商品表添加以及将商品价格提取
- //将订单商品表添加以及将商品价格提取
- List<WxOrderGoods> orderGoodsList = wxOrderGoodsService.getWxOrderGoodsByWxOrderId(wxOrder.getWxOrderId());
- if (orderGoodsList == null || orderGoodsList.size() <= 0){
- logger.error("订单详情为空!");
- return 0;
- }
- BigDecimal goodsValue = new BigDecimal(0);
- int i = 1;
- //电子订单商品表
- for (WxOrderGoods wxOrderGoods:orderGoodsList) {
- CusOrderGoods cusOrderGoods = buildCusOrderGoods(wxOrderGoods, cusOrderSn, i);
- i++;
- goodsValue = goodsValue.add(cusOrderGoods.getTotalPrice());
- cusOrderGoodes.add(cusOrderGoods);
- }
- //电子订单表
- CusOrder cusOrder = buildCusOrder(wxOrder, cusOrderSn, orderSn, goodsValue);
- if (cusOrder == null) {
- return 0;
- }
- CusOrders.add(cusOrder);
- //电子订单发送状态
- CusOrderStatus cusOrderStatus = buildCusOrderStatus(wxOrder, cusOrderSn, orderSn, cusOrderStatusSn);
- if (cusOrderStatus == null) {
- return 0;
- }
- CusOrderStatues.add(cusOrderStatus);
- }
- }
- try {
- if (CusOrders.size() > 0 && cusOrderMapper.insertCusOrderItemBatch(CusOrders) <= 0) {
- logger.error("批量插入,电子订单表记录全部失败");
- return 0;
- }
- if (upCusOrders.size() > 0 && cusOrderMapper.updateCusOrderItemBatch(upCusOrders) <= 0) {
- logger.error("批量更新,电子订单表记录全部失败");
- return 0;
- }
- if(cusOrderGoodsMapper.insertCusOrderGoodsItemBatch(cusOrderGoodes) <= 0){
- logger.error("批量插入,电子订单商品表记录全部失败");
- return 0;
- }
- if(CusOrderStatues.size() > 0 && cusOrderStatusMapper.insertCusOrderStatusItemBatch(CusOrderStatues) <= 0){
- logger.error("批量插入,电子订单状态表记录全部失败");
- return 0;
- }
- if(upCusOrderStatues.size() > 0 && cusOrderStatusMapper.updateCusOrderStatusItemBatch(upCusOrderStatues) <= 0){
- logger.error("批量更新,电子订单状态表记录全部失败");
- return 0;
- }
- }catch (Exception e){
- e.printStackTrace();
- return 0;
- }
- return 1;
- }
- /**
- * 记录CusOrderStatus
- * @param wxOrder
- * @param cusOrderSn
- * @param orderSn
- * @return
- */
- private CusOrderStatus buildCusOrderStatus(WxOrder wxOrder, String cusOrderSn, String orderSn, String cusOrderStatusSn) {
- try {
- CusOrderStatus cusOrderStatus = new CusOrderStatus();
- cusOrderStatus.setCusOrderStatusSn(cusOrderStatusSn);
- cusOrderStatus.setCusOrderSn(cusOrderSn);
- cusOrderStatus.setOrderSn(orderSn);
- cusOrderStatus.setMerchOrderSn(wxOrder.getOrderSn());
- cusOrderStatus.setMerchSn(wxOrder.getMerchSn());
- cusOrderStatus.setMerchName(wxOrder.getMerchName());
- cusOrderStatus.setPlatSn(merchant.getPlatSn());
- cusOrderStatus.setPlatName(merchant.getPlatName());
- cusOrderStatus.setThirdPartyMerchCode(wxOrder.getThirdPartyMerchCode());
- // cusOrderStatus.setThirdPartyMerchName(orderBill.getSellerName());
- cusOrderStatus.setSendStatus(Contants.INIT_STATUS);
- cusOrderStatus.setPlatRespStatus(Contants.INIT_STATUS);
- cusOrderStatus.setCusRespStatus(Contants.INIT_STATUS);
- cusOrderStatus.setCipRespStatus(Contants.INIT_STATUS);
- return cusOrderStatus;
- } catch (Exception e) {
- logger.error("初始化电子订单状态表记录失败");
- }
- return null;
- }
- /**
- * 记录CusOrderGoods
- * @param wxOrderGoods
- * @param cusOrderSn
- * @return
- */
- private CusOrderGoods buildCusOrderGoods(WxOrderGoods wxOrderGoods, String cusOrderSn,int i) {
- CusOrderGoods cusOrderGoods = new CusOrderGoods();
- String cusOrderGoodsPaySn = Contants.WMSH+ SnowflakeUtil.getSnowNextId();
- cusOrderGoods.setCusOrderGoodsSn(cusOrderGoodsPaySn);
- cusOrderGoods.setCusOrderSn(cusOrderSn);
- cusOrderGoods.setGnum(i+"");
- cusOrderGoods.setItemNo(wxOrderGoods.getItemNo());
- cusOrderGoods.setItemName(wxOrderGoods.getItemName());
- // cusOrderGoods.setItemDescribe(wmOrderGoods.getContent());
- cusOrderGoods.setBarCode(wxOrderGoods.getBarCode());
- cusOrderGoods.setUnit(wxOrderGoods.getUnit());
- cusOrderGoods.setQty(wxOrderGoods.getQty());
- cusOrderGoods.setPrice(wxOrderGoods.getTaxPrice());
- cusOrderGoods.setTotalPrice(wxOrderGoods.getActuralPrice());
- cusOrderGoods.setCurrency(Contants.CURRENCY);
- cusOrderGoods.setCountry(wxOrderGoods.getCountry());
- cusOrderGoods.setCiqGno(wxOrderGoods.getCiqGno());
- cusOrderGoods.setGcode(wxOrderGoods.getGcode());
- cusOrderGoods.setGmodel(wxOrderGoods.getGmodel());
- cusOrderGoods.setCiqGmodel(wxOrderGoods.getCiqGmodel());
- cusOrderGoods.setBrand(wxOrderGoods.getBrand());
- cusOrderGoods.setCreaterSn(Contants.CREATER_NUMBER);
- cusOrderGoods.setCreateTime(new Date());
- return cusOrderGoods;
- }
- /**
- * 记录CusOrder
- * @param wxOrder
- * @param cusOrderSn
- * @param orderSn
- * @return
- */
- private CusOrder buildCusOrder(WxOrder wxOrder, String cusOrderSn, String orderSn,BigDecimal goodsValue) {
- try {
- CusOrder cusOrder = new CusOrder();
- cusOrder.setCusOrderSn(cusOrderSn);
- cusOrder.setOrderSn(orderSn);
- cusOrder.setMerchOrderSn(wxOrder.getOrderSn());
- cusOrder.setMerchSn(wxOrder.getMerchSn());
- cusOrder.setMerchName(wxOrder.getMerchName());
- cusOrder.setPlatSn(merchant.getPlatSn());
- cusOrder.setPlatName(merchant.getPlatName());
- cusOrder.setThirdPartyMerchCode(wxOrder.getThirdPartyMerchCode());
- cusOrder.setPlaceOrderlTime(wxOrder.getCreateTime());
- cusOrder.setAppType(Contants.APP_STATUS_DECLARE);
- cusOrder.setAppStatus(Contants.APP_STATUS_SEPARETE);
- cusOrder.setAppTime(getNormalOrderNo());
- cusOrder.setOrderNo(wxOrder.getOrderSn());
- cusOrder.setOrderType(Contants.ORDER_TYPE);
- cusOrder.setCurrency(Contants.CURRENCY);
- MerchantPlatform merchantPlatform = omsMerchantPlatformService.getPlatformByMerchSn(wxOrder.getMerchSn());
- if(merchantPlatform == null){
- logger.error("初始化电子订单表记录失败: 商户平台信息为空!");
- return null;
- }
- // cusOrder.setEbpCode(merchant.getMerchantCustomsCode());//电商平台代码
- // cusOrder.setEbpName(merchant.getMerchantCustomsName());//电商平台企业名称
- // cusOrder.setEbcCode(merchant.getMerchantCustomsCode());//电商商户代码
- // cusOrder.setEbcName(merchant.getMerchantCustomsName());//电商商户名称
- cusOrder.setEbpCode(merchantPlatform.getPlatCusCode());//电商平台代码
- cusOrder.setEbpName(merchantPlatform.getPlatCusName());//电商平台企业名称
- cusOrder.setEbcCode(merchantPlatform.getPlatCusCode());//电商商户代码
- cusOrder.setEbcName(merchantPlatform.getPlatCusName());//电商商户名称
- cusOrder.setGoodsValue(goodsValue);
- BigDecimal taxTotal = new BigDecimal(0);
- BigDecimal paid = wxOrder.getActuralPaid();//订单下单总价格
- if(paid != null){
- taxTotal = paid.subtract(goodsValue).setScale(2, BigDecimal.ROUND_HALF_UP);
- }
- cusOrder.setTaxTotal(taxTotal);//待扣税款
- cusOrder.setFreight(wxOrder.getFreight());
- cusOrder.setDiscount(wxOrder.getDiscount());
- cusOrder.setActuralPaid(paid);
- Map<String, Object> wxMap = (Map) cus.getPlay().get("wx");
- cusOrder.setBuyerName(wxOrder.getBuyerName());
- cusOrder.setBuyerIdType(Contants.ID_TYPE);
- cusOrder.setBuyerTelephone(wxOrder.getBuyerTel());
- cusOrder.setBuyeridNumber(wxOrder.getBuyerIdCode());
- cusOrder.setPayCode(wxMap.get("pay-code").toString());
- cusOrder.setPayName(wxMap.get("pay-name").toString());
- cusOrder.setPayTransactionId(wxOrder.getPayNo());
- cusOrder.setConsignee(wxOrder.getConsigneeName());
- cusOrder.setConsigneeTelephone(wxOrder.getConsigneeMob());
- cusOrder.setConsigneeAddress(wxOrder.getConsigneeAddress());
- cusOrder.setBuyerRegNo(wxOrder.getBuyerRegNo());
- cusOrder.setCreateTime(new Date());
- return cusOrder;
- } catch (Exception e) {
- logger.error("初始化电子订单表记录失败");
- }
- return null;
- }
- /**
- * 查找当前ccnet中的所有电子订单
- * @return
- */
- @Override
- public List<CusOrder> findAllCusOrder() {
- return cusOrderMapper.findAllCusOrder();
- }
- }
|