package com.emato.cus.supervise.biz.acqGoodsSeat; import com.emato.cus.supervise.biz.DataConversion; import com.emato.cus.supervise.biz.EmsClassConversion; import com.emato.cus.supervise.constant.Dict; 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.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * @author zengjunlin * @version 1.0 * 2018-02-03 16:55 */ @Component public class AcqGoodsOnSeatDataConversion implements DataConversion{ private final static Logger logger = LoggerFactory.getLogger(AcqGoodsOnSeatDataConversion.class); /** * 库位货物 * * @param params * @return */ @Override public List conversion(Map params) { logger.info("库位货物开始转换oms,wms 组装cus数据==========================="); List wmsList = (List) params.get("wmsList"); List omsList = (List) params.get("omsList"); final Map omsMerchInfoMap = omsList.stream().collect(Collectors.toMap(k -> k.getMerchSn() + "_" + k.getEmsClassType(), v -> v)); List productInfoList = (List) params.get("productInfoList"); final Map omsProductInfoMap = new HashMap<>(); //final Map omsProductInfoMap = productInfoList.stream().collect(Collectors.toMap(k->k.getSkuNo(), v->v)); for (int i = 0, len = productInfoList.size(); i < len; i++) { if (omsProductInfoMap.containsKey(productInfoList.get(i).getSkuNo())) { continue; } else { omsProductInfoMap.put(productInfoList.get(i).getSkuNo(), productInfoList.get(i)); } } List cusAcqGoodsSeat06List = Lists.newArrayList(); for (int i = 0; i < wmsList.size(); i++) { try{ WmsAcqGoodsOnSeat wmsAcqGoodsOnSeat = wmsList.get(i); if (wmsAcqGoodsOnSeat.getSeatNo() == null) { logger.debug("sku:{}, 库位为空", wmsAcqGoodsOnSeat.getSkuNo()); continue; } // 库位向账册分类转换 String emsClassType = EmsClassConversion.convertBySeatNo(wmsAcqGoodsOnSeat.getSeatNo()); // 拼接商户账册分类 String merchEmsType = wmsAcqGoodsOnSeat.getMerchSn() + "_" + emsClassType; if (!omsMerchInfoMap.containsKey(merchEmsType)) { logger.error("当前转换的商户账册分类为: {}, WMS传回的商户在OMS中无此账册分类", merchEmsType); continue; } OmsMerchInfo omsMerchInfo = omsMerchInfoMap.get(merchEmsType); String wmssku = wmsAcqGoodsOnSeat.getSkuNo(); OmsProductInfo omsProductInfo = omsProductInfoMap.get(wmssku); if (null == omsProductInfo) { logger.error("wms库位sku:{},但在oms产品备案信息中查不到该sku", wmssku); continue; } String osku = omsProductInfo.getSkuNo(); if (StringUtils.isBlank(osku)) { logger.error("当前转换的sku为: {}, 对应的产品备案数据异常", osku); continue; } //logger.debug("当前转换的sku为: {}", omsProductInfo.getSkuNo()); CusAcqGoodsSeat06 cusAcqGoodsSeat06 = new CusAcqGoodsSeat06(); cusAcqGoodsSeat06.setId(wmsAcqGoodsOnSeat.getId()); cusAcqGoodsSeat06.setSeatNo(wmsAcqGoodsOnSeat.getSeatNo()); cusAcqGoodsSeat06.setGoodsName(wmsAcqGoodsOnSeat.getGoodsName()); cusAcqGoodsSeat06.setCodeTs(omsProductInfo.getCodeTs()); cusAcqGoodsSeat06.setFormNoDec(wmsAcqGoodsOnSeat.getFormNoDec()); cusAcqGoodsSeat06.setFormNo(wmsAcqGoodsOnSeat.getFormNo()); cusAcqGoodsSeat06.setSkuNo(wmsAcqGoodsOnSeat.getSkuNo()); cusAcqGoodsSeat06.setGoodsId(wmsAcqGoodsOnSeat.getGoodsId()); cusAcqGoodsSeat06.setgUnit(wmsAcqGoodsOnSeat.getgUnit()); cusAcqGoodsSeat06.setgQty(wmsAcqGoodsOnSeat.getgQty()); cusAcqGoodsSeat06.setLegalQty(omsProductInfo.getLegalQty()); cusAcqGoodsSeat06.setLegalUnit(omsProductInfo.getLegalUnit()); cusAcqGoodsSeat06.setGoodsModel(omsProductInfo.getGoodsModel()); cusAcqGoodsSeat06.setLocalEmsNo(omsMerchInfo.getCusEmsNo()); // TODO: 2018/5/8 此处存在问题:如wms的商户编号数据与oms的商户编号数据不统一,则会报空指针异常 cusAcqGoodsSeat06.setOwnerCode(omsMerchInfo.getOwnerCode()); cusAcqGoodsSeat06.setOwnerName(omsMerchInfo.getOwnerName()); cusAcqGoodsSeat06.setStoreCompanyName(Dict.storeCompanyName); cusAcqGoodsSeat06.setStoreUscCode(Dict.storeUscCode); cusAcqGoodsSeat06.setStoreCustomsCode(Dict.storeCustomsCode); if (Dict.storeCodeMap.containsKey(wmsAcqGoodsOnSeat.getStoreCode())) { cusAcqGoodsSeat06.setStoreCode(Dict.storeCodeMap.get(wmsAcqGoodsOnSeat.getStoreCode())); } else { cusAcqGoodsSeat06.setStoreCode(Dict.storeCodeMap.get("Others")); } cusAcqGoodsSeat06.setCreateTime(LocalDateTime.now()); cusAcqGoodsSeat06.setCreaterSn(Dict.operater); cusAcqGoodsSeat06.setModerSn(Dict.operater); cusAcqGoodsSeat06.setModTime(LocalDateTime.now()); cusAcqGoodsSeat06List.add(cusAcqGoodsSeat06); }catch (Exception e){ logger.error("库位货物组装cus数据系统异常", e); }finally { continue; } } logger.info("库位货物组装转换oms,wms 组装cus数据结束==========================="); return cusAcqGoodsSeat06List; } }