123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- 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.CcnetContants;
- 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.*;
- import com.emato.ccnet.wx.manager.redis.jedis.cluster.mgt.JedisClusterManager;
- import com.emato.ccnet.wx.manager.snow.SnowflakeUtil;
- import com.emato.ccnet.wx.service.CusWaybillService;
- import com.emato.ccnet.wx.service.OmsMerchantPlatformService;
- import com.emato.ccnet.wx.util.jackson.JacksonUtil;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- @Service("cusWaybillService")
- public class CusWaybillServiceImpl implements CusWaybillService {
- @Autowired
- private CusWaybillMapper cusWaybillMapper;
- @Autowired
- private CusWaybillGoodsMapper cusWaybillGoodsMapper;
- @Autowired
- private CusWaybillStatusMapper cusWaybillStatusMapper;
- @Autowired
- private Merchant merchant;
- @Autowired
- private Cus cus;
- @Autowired
- private WxOrderMapper wxOrderMapper;
- @Autowired
- private WxOrderGoodsMapper wxOrderGoodsMapper;
- @Autowired
- private OmsMerchantPlatformService omsMerchantPlatformService;
- private static final Logger logger = LoggerFactory.getLogger(CusWaybillServiceImpl.class);
- @Override
- public CusWaybill add(CusWaybill record) {
- record.setCreateTime(new Date());
- if(this.cusWaybillMapper.insertSelective(record)==1) {
- return record;
- }
- return null;
- }
- @Override
- public boolean delete(String cusWaybillSn) {
- return this.cusWaybillMapper.deleteByPrimaryKey(cusWaybillSn)==1;
- }
- @Override
- public CusWaybill update(CusWaybill record) {
- if(this.cusWaybillMapper.updateByPrimaryKeySelective(record)==1) {
- return record;
- }
- return null;
- }
- @Override
- public CusWaybill get(String cusWaybillSn) {
- return this.cusWaybillMapper.selectByPrimaryKey(cusWaybillSn);
- }
- /**
- * 查询海关运单
- * @return
- */
- @Override
- public List<CusWaybill> findAllCusWaybill() {
- return cusWaybillMapper.findAllCusWaybill();
- }
- @Override
- public CusWaybill getCusWaybillByMerchOrderSn(String merchOrderSn) {
- return cusWaybillMapper.getCusWaybillByMerchOrderSn(merchOrderSn);
- }
- /**
- * 运单初始化
- * @param list
- * @return
- */
- @Override
- public int addCusWaybill(List list) {
- //海关运单集合
- List<CusWaybill> cusWaybills = new ArrayList<>();
- List<CusWaybill> upCusWaybills = new ArrayList<>();
- //海关运单状态表集合
- List<CusWaybillStatus> cusWaybillStatues = new ArrayList<>();
- List<CusWaybillStatus> upCusWaybillStatues = new ArrayList<>();
- //运单数据
- List<WxOrder> wayBillList = (List<WxOrder>) list;
- for(WxOrder wxOrder:wayBillList){
- CusWaybill waybill = cusWaybillMapper.findCusWaybillByOrderSn(wxOrder.getOrderSn());
- if (waybill != null) {
- List<CusWaybillGoods> cusWaybillGoodsList = cusWaybillGoodsMapper.findCusWaybillGoodsByCusWaybillSn(waybill.getCusWaybillSn());
- if (cusWaybillGoodsList != null && cusWaybillGoodsList.size() > 0) {
- if (cusWaybillGoodsMapper.deteleByCusWaybillSn(waybill.getCusWaybillSn()) < 0) {
- logger.error("批量删除电子订单商品表记录失败");
- return 0;
- }
- }
- CusWaybill cusWaybill = buildCusWaybill(wxOrder, waybill.getCusWaybillSn());
- if (cusWaybill == null) {
- return 0;
- }
- upCusWaybills.add(cusWaybill);
- //插入电子订单商品表
- if (buildCusWaybillGoods(wxOrder, waybill.getCusWaybillSn()) == 0) {
- return 0;
- }
- CusWaybillStatus cusWaybillStatus = cusWaybillStatusMapper.findCusWaybillStatusByCusWaybillSn(waybill.getCusWaybillSn());
- cusWaybillStatus = buildCusWaybillStatus(wxOrder, waybill.getCusWaybillSn(), cusWaybillStatus.getCusWaybillStatusSn());
- upCusWaybillStatues.add(cusWaybillStatus);
- } else {
- String cusWaybillSn = Contants.WMSH + SnowflakeUtil.getSnowNextId();
- String cusWaybillStatusSn = Contants.WMSH + SnowflakeUtil.getSnowNextId();
- //海关运单
- CusWaybill cusWaybill = buildCusWaybill(wxOrder,cusWaybillSn);
- if (cusWaybill == null) {
- return 0;
- }
- cusWaybills.add(cusWaybill);
- //海关运单商品
- if (buildCusWaybillGoods(wxOrder, cusWaybillSn) == 0) {
- return 0;
- }
- //海关运单状态
- CusWaybillStatus cusWaybillStatus = buildCusWaybillStatus(wxOrder, cusWaybillSn, cusWaybillStatusSn);
- if (cusWaybillStatus == null) {
- return 0;
- }
- cusWaybillStatues.add(cusWaybillStatus);
- }
- }
- //批量插入海关运单
- if(cusWaybills.size() > 0 && cusWaybillMapper.insertCusWaybillItemBatch(cusWaybills) <= 0){
- logger.error("批量插入,海关运单记录全部失败");
- return 0;
- }
- if(upCusWaybills.size() > 0 && cusWaybillMapper.updateCusWaybillItemBatch(upCusWaybills) <= 0){
- logger.error("批量更新,海关运单记录全部失败");
- return 0;
- }
- //批量插入海关运单状态
- if(cusWaybillStatues.size() > 0 && cusWaybillStatusMapper.insertCusWaybillStatusItemBatch(cusWaybillStatues) <= 0){
- logger.error("批量插入,海关运单状态记录全部失败");
- return 0;
- }
- if(upCusWaybillStatues.size() > 0 && cusWaybillStatusMapper.updateCusWaybillStatusItemBatch(upCusWaybillStatues) <= 0){
- logger.error("批量更新,海关运单状态记录全部失败");
- return 0;
- }
- return 1;
- }
- /**
- * 组装CusWaybillStatus
- * @param wxOrder
- * @param cusWaybillSn
- * @return
- */
- private CusWaybillStatus buildCusWaybillStatus(WxOrder wxOrder, String cusWaybillSn, String cusWaybillStatusSn) {
- try {
- CusWaybillStatus cusWaybillStatus = new CusWaybillStatus();
- cusWaybillStatus.setCusWaybillStatusSn(cusWaybillStatusSn);
- cusWaybillStatus.setCusWaybillSn(cusWaybillSn);
- cusWaybillStatus.setMerchOrderType(Contants.MERCH_WAY_TYPE);
- cusWaybillStatus.setMerchOrderSn(wxOrder.getOrderSn());
- cusWaybillStatus.setMerchSn(wxOrder.getMerchSn());
- cusWaybillStatus.setMerchName(wxOrder.getMerchName());
- cusWaybillStatus.setPlatSn(merchant.getPlatSn());
- cusWaybillStatus.setPlatName(merchant.getPlatName());
- cusWaybillStatus.setThirdPartyMerchCode(wxOrder.getThirdPartyMerchCode());
- cusWaybillStatus.setSendStatus(Contants.INIT_STATUS);
- cusWaybillStatus.setRespStatus(Contants.INIT_STATUS);
- cusWaybillStatus.setCreaterSn(Contants.CREATER_NUMBER);
- cusWaybillStatus.setCreateTime(new Date());
- return cusWaybillStatus;
- } catch (Exception e) {
- logger.error("初始化海关运单状态记录失败");
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 组装CusWaybillGoods
- * @param wxOrder
- * @param cusWaybillSn
- * @return
- */
- private int buildCusWaybillGoods(WxOrder wxOrder, String cusWaybillSn) {
- List<WxOrderGoods> orderGoodsList = wxOrderGoodsMapper.getWxOrderGoodsByWxOrderId(wxOrder.getWxOrderId());
- if (orderGoodsList == null || orderGoodsList.size() <= 0){
- logger.error("订单详情为空!");
- return 0;
- }
- //海关运单商品集合
- List<CusWaybillGoods> cusWaybillGoodes = new ArrayList<>();
- for (WxOrderGoods wxOrderGoods:orderGoodsList) {
- CusWaybillGoods cusWaybillGoods = new CusWaybillGoods();
- String cusWaybillGoodsSn = Contants.WMSH + SnowflakeUtil.getSnowNextId();
- cusWaybillGoods.setCusWaybillGoodsSn(cusWaybillGoodsSn);
- cusWaybillGoods.setCusWaybillSn(cusWaybillSn);
- cusWaybillGoods.setMerchOrderSn(wxOrder.getOrderSn());
- cusWaybillGoods.setSku(wxOrderGoods.getItemNo());
- cusWaybillGoods.setBuyUnitPrice(wxOrderGoods.getPrice());
- cusWaybillGoods.setBuyQty(wxOrderGoods.getQty());
- cusWaybillGoods.setCreaterSn(Contants.CREATER_NUMBER);
- cusWaybillGoods.setCreateTime(new Date());
- cusWaybillGoodes.add(cusWaybillGoods);
- }
- //批量插入海关运单商品
- if(cusWaybillGoodsMapper.insertCusWaybillGoodsItemBatch(cusWaybillGoodes) <= 0){
- logger.error("批量插入,海关运单商品记录全部失败");
- return 0;
- }
- return 1;
- }
- private boolean isMuniCipality(String cityName) {
- Map<String, String> muniMap = new HashMap<>();
- muniMap.put("北京市", "北京市");
- muniMap.put("天津市", "天津市");
- muniMap.put("重庆市", "重庆市");
- muniMap.put("上海市", "上海市");
- if (muniMap.containsKey(cityName)) {
- return true;
- }
- return false;
- }
- /**
- * 组装CusWaybill
- * @param wxOrder
- * @param cusWaybillSn
- * @return
- */
- private CusWaybill buildCusWaybill(WxOrder wxOrder, String cusWaybillSn) {
- try {
- CusWaybill cusWaybill = new CusWaybill();
- cusWaybill.setCusWaybillSn(cusWaybillSn);
- cusWaybill.setMerchOrderId(wxOrder.getOrderSn());
- cusWaybill.setMerchSn(wxOrder.getMerchSn());
- cusWaybill.setShopId(wxOrder.getShopId());
- cusWaybill.setMerchName(wxOrder.getMerchName());
- cusWaybill.setPlatSn(merchant.getPlatSn());
- cusWaybill.setPlatName(merchant.getPlatName());
- cusWaybill.setThirdPartyMerchCode(wxOrder.getThirdPartyMerchCode());
- cusWaybill.setThirdPartyMerchName(wxOrder.getThirdPartyMerchName());
- cusWaybill.setPlaceOrderlTime(wxOrder.getCreateTime());
- // 订购人
- cusWaybill.setBuyerName(wxOrder.getBuyerName());
- cusWaybill.setBuyerTel(wxOrder.getBuyerTel());
- cusWaybill.setBuyerIdType(Contants.ID_TYPE);
- cusWaybill.setBuyerIdCode(wxOrder.getBuyerIdCode());
- // 支付人
- cusWaybill.setPayerName(wxOrder.getPayerName());
- cusWaybill.setPayerIdCode(wxOrder.getPayerIdCode());
- cusWaybill.setPayerMob(wxOrder.getPayerMob());
- cusWaybill.setPayerIdType(Contants.ID_TYPE);
- // 收货人
- cusWaybill.setConsigneeIdType(Contants.ID_TYPE);
- cusWaybill.setConsigneeIdCode(wxOrder.getConsigneeIdCode());
- cusWaybill.setConsigneeName(wxOrder.getConsigneeName());
- cusWaybill.setConsigneeMob(wxOrder.getConsigneeMob());
- // 快递
- cusWaybill.setExprType(cus.getWaybill().get("exprType"));
- if (!CcnetContants.wsFlag.item_10.getItem().equals(wxOrder.getWsFlag())) {
- cusWaybill.setExprCompId(cus.getWaybill().get("exprComrId"));
- } else {
- cusWaybill.setExprCompId("emato");
- }
- // 发送ws路径标识
- cusWaybill.setWsFlag(wxOrder.getWsFlag());
- // 地址
- cusWaybill.setConsigneeCountryCode(wxOrder.getConsigneeCountryCode());
- cusWaybill.setConsigneeProvince(wxOrder.getConsigneeProvince());
- cusWaybill.setConsigneeProvinceCode(wxOrder.getConsigneeProvinceCode());
- cusWaybill.setConsigneeCity(wxOrder.getConsigneeCity());
- cusWaybill.setConsigneeCityCode(wxOrder.getConsigneeCityCode());
- cusWaybill.setConsigneeDistrict(wxOrder.getConsigneeDistrict());
- cusWaybill.setConsigneeDistrictCode(wxOrder.getConsigneeDistrictCode());
- cusWaybill.setConsigneeAddress(wxOrder.getConsigneeAddress());
- cusWaybill.setConsigneeZipCode(wxOrder.getConsigneeZipCode());
- if (wxOrder.getConsigneeZipCode() == null || wxOrder.getConsigneeZipCode() == "") {
- cusWaybill.setConsigneeZipCode("888888");
- }
- MerchantPlatform merchantPlatform = omsMerchantPlatformService.getPlatformByMerchSn(wxOrder.getMerchSn());
- if(merchantPlatform == null){
- logger.error("初始化电子订单表记录失败: 商户平台信息为空!");
- return null;
- }
- cusWaybill.setPayEntCusCode(merchantPlatform.getPlatCusCode());
- cusWaybill.setPayNo(wxOrder.getPayNo());
- cusWaybill.setActuralPaid(wxOrder.getActuralPaid());
- cusWaybill.setPayTime(wxOrder.getPayTime());
- cusWaybill.setBuyerBillTime(wxOrder.getBuyerBillTime());
- cusWaybill.setBuyerPayCheck(wxOrder.getBuyerPayCheck());
- cusWaybill.setCreaterSn(Contants.CREATER_NUMBER);
- cusWaybill.setCreateTime(new Date());
- cusWaybill.setExField(wxOrder.getExField());
- return cusWaybill;
- } catch (Exception e) {
- logger.error("初始化海关运单记录失败");
- e.printStackTrace();
- }
- return null;
- }
- }
|