AcqGoodsOnSeatDataConversion.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.emato.cus.supervise.biz.acqGoodsSeat;
  2. import com.emato.cus.supervise.biz.DataConversion;
  3. import com.emato.cus.supervise.biz.EmsClassConversion;
  4. import com.emato.cus.supervise.constant.Dict;
  5. import com.emato.cus.supervise.domain.WmsAcqGoodsOnSeat;
  6. import com.emato.cus.supervise.domainCus.CusAcqGoodsSeat06;
  7. import com.emato.cus.supervise.domainOms.OmsMerchInfo;
  8. import com.emato.cus.supervise.domainOms.OmsProductInfo;
  9. import com.google.common.collect.Lists;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.stereotype.Component;
  14. import java.time.LocalDateTime;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.stream.Collectors;
  19. /**
  20. * @author zengjunlin
  21. * @version 1.0
  22. * 2018-02-03 16:55
  23. */
  24. @Component
  25. public class AcqGoodsOnSeatDataConversion implements DataConversion{
  26. private final static Logger logger = LoggerFactory.getLogger(AcqGoodsOnSeatDataConversion.class);
  27. /**
  28. * 库位货物
  29. *
  30. * @param params
  31. * @return
  32. */
  33. @Override
  34. public List conversion(Map params) {
  35. logger.info("库位货物开始转换oms,wms 组装cus数据===========================");
  36. List<WmsAcqGoodsOnSeat> wmsList = (List<WmsAcqGoodsOnSeat>) params.get("wmsList");
  37. List<OmsMerchInfo> omsList = (List<OmsMerchInfo>) params.get("omsList");
  38. final Map<String, OmsMerchInfo> omsMerchInfoMap = omsList.stream().collect(Collectors.toMap(k -> k.getMerchSn() + "_" + k.getEmsClassType(), v -> v));
  39. List<OmsProductInfo> productInfoList = (List<OmsProductInfo>) params.get("productInfoList");
  40. final Map<String,OmsProductInfo> omsProductInfoMap = new HashMap<>();
  41. //final Map<String,OmsProductInfo> omsProductInfoMap = productInfoList.stream().collect(Collectors.toMap(k->k.getSkuNo(), v->v));
  42. for (int i = 0, len = productInfoList.size(); i < len; i++) {
  43. if (omsProductInfoMap.containsKey(productInfoList.get(i).getSkuNo())) {
  44. continue;
  45. } else {
  46. omsProductInfoMap.put(productInfoList.get(i).getSkuNo(), productInfoList.get(i));
  47. }
  48. }
  49. List<CusAcqGoodsSeat06> cusAcqGoodsSeat06List = Lists.newArrayList();
  50. for (int i = 0; i < wmsList.size(); i++) {
  51. try{
  52. WmsAcqGoodsOnSeat wmsAcqGoodsOnSeat = wmsList.get(i);
  53. if (wmsAcqGoodsOnSeat.getSeatNo() == null) {
  54. logger.debug("sku:{}, 库位为空", wmsAcqGoodsOnSeat.getSkuNo());
  55. continue;
  56. }
  57. // 库位向账册分类转换
  58. String emsClassType = EmsClassConversion.convertBySeatNo(wmsAcqGoodsOnSeat.getSeatNo());
  59. // 拼接商户账册分类
  60. String merchEmsType = wmsAcqGoodsOnSeat.getMerchSn() + "_" + emsClassType;
  61. if (!omsMerchInfoMap.containsKey(merchEmsType)) {
  62. logger.error("当前转换的商户账册分类为: {}, WMS传回的商户在OMS中无此账册分类", merchEmsType);
  63. continue;
  64. }
  65. OmsMerchInfo omsMerchInfo = omsMerchInfoMap.get(merchEmsType);
  66. String wmssku = wmsAcqGoodsOnSeat.getSkuNo();
  67. OmsProductInfo omsProductInfo = omsProductInfoMap.get(wmssku);
  68. if (null == omsProductInfo) {
  69. logger.error("wms库位sku:{},但在oms产品备案信息中查不到该sku", wmssku);
  70. continue;
  71. }
  72. String osku = omsProductInfo.getSkuNo();
  73. if (StringUtils.isBlank(osku)) {
  74. logger.error("当前转换的sku为: {}, 对应的产品备案数据异常", osku);
  75. continue;
  76. }
  77. //logger.debug("当前转换的sku为: {}", omsProductInfo.getSkuNo());
  78. CusAcqGoodsSeat06 cusAcqGoodsSeat06 = new CusAcqGoodsSeat06();
  79. cusAcqGoodsSeat06.setId(wmsAcqGoodsOnSeat.getId());
  80. cusAcqGoodsSeat06.setSeatNo(wmsAcqGoodsOnSeat.getSeatNo());
  81. cusAcqGoodsSeat06.setGoodsName(wmsAcqGoodsOnSeat.getGoodsName());
  82. cusAcqGoodsSeat06.setCodeTs(omsProductInfo.getCodeTs());
  83. cusAcqGoodsSeat06.setFormNoDec(wmsAcqGoodsOnSeat.getFormNoDec());
  84. cusAcqGoodsSeat06.setFormNo(wmsAcqGoodsOnSeat.getFormNo());
  85. cusAcqGoodsSeat06.setSkuNo(wmsAcqGoodsOnSeat.getSkuNo());
  86. cusAcqGoodsSeat06.setGoodsId(wmsAcqGoodsOnSeat.getGoodsId());
  87. cusAcqGoodsSeat06.setgUnit(wmsAcqGoodsOnSeat.getgUnit());
  88. cusAcqGoodsSeat06.setgQty(wmsAcqGoodsOnSeat.getgQty());
  89. cusAcqGoodsSeat06.setLegalQty(omsProductInfo.getLegalQty());
  90. cusAcqGoodsSeat06.setLegalUnit(omsProductInfo.getLegalUnit());
  91. cusAcqGoodsSeat06.setGoodsModel(omsProductInfo.getGoodsModel());
  92. cusAcqGoodsSeat06.setLocalEmsNo(omsMerchInfo.getCusEmsNo());
  93. // TODO: 2018/5/8 此处存在问题:如wms的商户编号数据与oms的商户编号数据不统一,则会报空指针异常
  94. cusAcqGoodsSeat06.setOwnerCode(omsMerchInfo.getOwnerCode());
  95. cusAcqGoodsSeat06.setOwnerName(omsMerchInfo.getOwnerName());
  96. cusAcqGoodsSeat06.setStoreCompanyName(Dict.storeCompanyName);
  97. cusAcqGoodsSeat06.setStoreUscCode(Dict.storeUscCode);
  98. cusAcqGoodsSeat06.setStoreCustomsCode(Dict.storeCustomsCode);
  99. if (Dict.storeCodeMap.containsKey(wmsAcqGoodsOnSeat.getStoreCode())) {
  100. cusAcqGoodsSeat06.setStoreCode(Dict.storeCodeMap.get(wmsAcqGoodsOnSeat.getStoreCode()));
  101. } else {
  102. cusAcqGoodsSeat06.setStoreCode(Dict.storeCodeMap.get("Others"));
  103. }
  104. cusAcqGoodsSeat06.setCreateTime(LocalDateTime.now());
  105. cusAcqGoodsSeat06.setCreaterSn(Dict.operater);
  106. cusAcqGoodsSeat06.setModerSn(Dict.operater);
  107. cusAcqGoodsSeat06.setModTime(LocalDateTime.now());
  108. cusAcqGoodsSeat06List.add(cusAcqGoodsSeat06);
  109. }catch (Exception e){
  110. logger.error("库位货物组装cus数据系统异常", e);
  111. }finally {
  112. continue;
  113. }
  114. }
  115. logger.info("库位货物组装转换oms,wms 组装cus数据结束===========================");
  116. return cusAcqGoodsSeat06List;
  117. }
  118. }