package com.emato.cus.supervise.biz.acqGoodsSeat; import com.emato.cus.supervise.biz.CusWmsTask; import com.emato.cus.supervise.biz.OmsDataImpl; import com.emato.cus.supervise.constant.EmtRecordTimeEnum; import com.emato.cus.supervise.domain.WmsAcqGoodsOnSeat; import com.emato.cus.supervise.domainCus.CusAcqGoodsSeat06; import com.emato.cus.supervise.domainOms.OmsMerchInfo; import com.emato.cus.supervise.domainOms.OmsProductInfo; import com.emato.cus.supervise.domainOmsShop.OmsShopAcqGoodsSeat; import com.emato.cus.supervise.util.GsonUtil; import com.emato.cus.supervise.util.LocalDateTimeUtils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * 库位货物数据 业务 * @author zengjunlin * @version 1.0 * 2018-02-03 16:21 */ @Component public class AcqGoodsSeatBiz implements CusWmsTask { private static final Logger logger = LoggerFactory.getLogger(AcqGoodsSeatBiz.class); @Autowired private AcqGoodsOnSeatRecordTime acqGoodsOnSeatRecordTime; @Autowired private AcqGoodsOnSeatWmsData acqGoodsOnSeatWmsData; @Autowired private AcqGoodsOnSeatCusData acqGoodsOnSeatCusData; @Autowired private AcqGoodsOnSeatDataConversion acqGoodsOnSeatDataConversion; @Autowired private OmsDataImpl omsDataImpl; @Autowired private AcqGoodsOnSeatOmsShopData acqGoodsOnSeatOmsShopData; @Autowired private AcqGoodsOnSeatOmsShopDataConversion acqGoodsOnSeatOmsShopDataConversion; @Autowired private AcqGoodsOnSeatOmsShopCusData acqGoodsOnSeatOmsShopCusData; private static final String DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getName() + ",[" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getName(); private static final String WMS_DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getName(); private static final String SHOP_DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getName(); /** * 任务入口 */ @Override public void task() { // 获取扫描时间 String oldThisTime = acqGoodsOnSeatRecordTime.getEmtRecordTime(); if (StringUtils.isBlank(oldThisTime)) { logger.info("--- 【" + DATA_TYPE_INFO + "】未获取到本次扫描时间, 本次扫描提前结束!!!"); //下次扫描时间 acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN), LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN)); return; } // 扫描WMS 数据 List wmsList = acqGoodsOnSeatWmsData.getWmsData(oldThisTime); // 执行wms相关操作 boolean wmsOp = true; if (wmsList == null || wmsList.size() == 0) { logger.info("--- 【" + WMS_DATA_TYPE_INFO + "】获取到本次扫描数据为空, 不执行写数据操作."); // 不执行WMS相关操作 wmsOp = false; //下次扫描时间 /*acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN), oldThisTime); return;*/ } // req_20200430001 oms门店库存海关监管 List omsShopList = acqGoodsOnSeatOmsShopData.getOmsShopData(oldThisTime); boolean omsShopOp = true; if (omsShopList == null || omsShopList.size() == 0) { logger.info("--- 【" + SHOP_DATA_TYPE_INFO + "】获取到本次扫描数据为空, 不执行写数据操作."); omsShopOp = false; } if (!wmsOp && !omsShopOp) { logger.info("--- 【" + DATA_TYPE_INFO + "】获取到本次扫描数据为空, 不执行写数据操作, 提前结束"); //下次扫描时间 acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN), oldThisTime); return; } if (wmsOp) { operateWms(wmsList, oldThisTime); } if (omsShopOp) { operateOmsShop(omsShopList, oldThisTime); } // 更新扫描时间 boolean bl = acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN), oldThisTime); } /** * 写入WMS数据 * @param wmsList * @param oldThisTime */ private void operateWms(List wmsList, String oldThisTime) { List merchSnList = Lists.newArrayList(); wmsList.forEach(i -> merchSnList.add(i.getMerchSn())); // 查询oms系统数据。 List omsList = omsDataImpl.getOmsMerchInfoData(merchSnList); if (omsList == null || omsList.isEmpty()) { logger.error("oms扫描到的数据" + GsonUtil.toJson(wmsList)); logger.info("--- 【" + WMS_DATA_TYPE_INFO + "】获取到本次扫描OMS数据为空, 不执行写数据操作, 本次扫描提前结束!!!"); //下次扫描时间 acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN), oldThisTime); return; } List skuList = Lists.newArrayList(); wmsList.forEach(i -> skuList.add(i.getSkuNo())); List productList = omsDataImpl.getOmsProductData(skuList); if (productList == null || productList.isEmpty()) { logger.error("oms扫描到的产品数据" + GsonUtil.toJson(productList)); logger.info("--- 【" + DATA_TYPE_INFO + "】获取到本次扫描OMS数据为空, 不执行写数据操作, 本次扫描提前结束!!!"); //下次扫描时间 acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN), oldThisTime); return; } Map params = Maps.newHashMap(); params.put("wmsList", wmsList); params.put("omsList", omsList); params.put("productInfoList", productList); List cusList = acqGoodsOnSeatDataConversion.conversion(params); // 写CUS 数据 int res = acqGoodsOnSeatCusData.writeCus(cusList); } /** * 写入OMS shop * @param omsShopList * @param oldThisTim */ private void operateOmsShop(List omsShopList, String oldThisTim) { Map params = Maps.newHashMap(); params.put("omsShopList",omsShopList); //将oms shop数据转换cus List cusList = acqGoodsOnSeatOmsShopDataConversion.conversion(params); // 写CUS 数据 int res = acqGoodsOnSeatOmsShopCusData.writeCus(cusList); } }