AcqGoodsSeatBiz.java 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package com.emato.cus.supervise.biz.acqGoodsSeat;
  2. import com.emato.cus.supervise.biz.CusWmsTask;
  3. import com.emato.cus.supervise.biz.OmsDataImpl;
  4. import com.emato.cus.supervise.constant.EmtRecordTimeEnum;
  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.emato.cus.supervise.domainOmsShop.OmsShopAcqGoodsSeat;
  10. import com.emato.cus.supervise.util.GsonUtil;
  11. import com.emato.cus.supervise.util.LocalDateTimeUtils;
  12. import com.google.common.collect.Lists;
  13. import com.google.common.collect.Maps;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Component;
  19. import java.util.List;
  20. import java.util.Map;
  21. /**
  22. * 库位货物数据 业务
  23. * @author zengjunlin
  24. * @version 1.0
  25. * 2018-02-03 16:21
  26. */
  27. @Component
  28. public class AcqGoodsSeatBiz implements CusWmsTask {
  29. private static final Logger logger = LoggerFactory.getLogger(AcqGoodsSeatBiz.class);
  30. @Autowired
  31. private AcqGoodsOnSeatRecordTime acqGoodsOnSeatRecordTime;
  32. @Autowired
  33. private AcqGoodsOnSeatWmsData acqGoodsOnSeatWmsData;
  34. @Autowired
  35. private AcqGoodsOnSeatCusData acqGoodsOnSeatCusData;
  36. @Autowired
  37. private AcqGoodsOnSeatDataConversion acqGoodsOnSeatDataConversion;
  38. @Autowired
  39. private OmsDataImpl omsDataImpl;
  40. @Autowired
  41. private AcqGoodsOnSeatOmsShopData acqGoodsOnSeatOmsShopData;
  42. @Autowired
  43. private AcqGoodsOnSeatOmsShopDataConversion acqGoodsOnSeatOmsShopDataConversion;
  44. @Autowired
  45. private AcqGoodsOnSeatOmsShopCusData acqGoodsOnSeatOmsShopCusData;
  46. private static final String DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getName()
  47. + ",[" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getName();
  48. private static final String WMS_DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getName();
  49. private static final String SHOP_DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.OMS_SHOP_ACQ_GOODS_ON_SEAT.getName();
  50. /**
  51. * 任务入口
  52. */
  53. @Override
  54. public void task() {
  55. // 获取扫描时间
  56. String oldThisTime = acqGoodsOnSeatRecordTime.getEmtRecordTime();
  57. if (StringUtils.isBlank(oldThisTime)) {
  58. logger.info("--- 【" + DATA_TYPE_INFO + "】未获取到本次扫描时间, 本次扫描提前结束!!!");
  59. //下次扫描时间
  60. acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN),
  61. LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN));
  62. return;
  63. }
  64. // 扫描WMS 数据
  65. List<WmsAcqGoodsOnSeat> wmsList = acqGoodsOnSeatWmsData.getWmsData(oldThisTime);
  66. // 执行wms相关操作
  67. boolean wmsOp = true;
  68. if (wmsList == null || wmsList.size() == 0) {
  69. logger.info("--- 【" + WMS_DATA_TYPE_INFO + "】获取到本次扫描数据为空, 不执行写数据操作.");
  70. // 不执行WMS相关操作
  71. wmsOp = false;
  72. //下次扫描时间
  73. /*acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN),
  74. oldThisTime);
  75. return;*/
  76. }
  77. // req_20200430001 oms门店库存海关监管
  78. List<OmsShopAcqGoodsSeat> omsShopList = acqGoodsOnSeatOmsShopData.getOmsShopData(oldThisTime);
  79. boolean omsShopOp = true;
  80. if (omsShopList == null || omsShopList.size() == 0) {
  81. logger.info("--- 【" + SHOP_DATA_TYPE_INFO + "】获取到本次扫描数据为空, 不执行写数据操作.");
  82. omsShopOp = false;
  83. }
  84. if (!wmsOp && !omsShopOp) {
  85. logger.info("--- 【" + DATA_TYPE_INFO + "】获取到本次扫描数据为空, 不执行写数据操作, 提前结束");
  86. //下次扫描时间
  87. acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN),
  88. oldThisTime);
  89. return;
  90. }
  91. if (wmsOp) {
  92. operateWms(wmsList, oldThisTime);
  93. }
  94. if (omsShopOp) {
  95. operateOmsShop(omsShopList, oldThisTime);
  96. }
  97. // 更新扫描时间
  98. boolean bl = acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN),
  99. oldThisTime);
  100. }
  101. /**
  102. * 写入WMS数据
  103. * @param wmsList
  104. * @param oldThisTime
  105. */
  106. private void operateWms(List<WmsAcqGoodsOnSeat> wmsList, String oldThisTime) {
  107. List<String> merchSnList = Lists.newArrayList();
  108. wmsList.forEach(i -> merchSnList.add(i.getMerchSn()));
  109. // 查询oms系统数据。
  110. List<OmsMerchInfo> omsList = omsDataImpl.getOmsMerchInfoData(merchSnList);
  111. if (omsList == null || omsList.isEmpty()) {
  112. logger.error("oms扫描到的数据" + GsonUtil.toJson(wmsList));
  113. logger.info("--- 【" + WMS_DATA_TYPE_INFO + "】获取到本次扫描OMS数据为空, 不执行写数据操作, 本次扫描提前结束!!!");
  114. //下次扫描时间
  115. acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN),
  116. oldThisTime);
  117. return;
  118. }
  119. List<String> skuList = Lists.newArrayList();
  120. wmsList.forEach(i -> skuList.add(i.getSkuNo()));
  121. List<OmsProductInfo> productList = omsDataImpl.getOmsProductData(skuList);
  122. if (productList == null || productList.isEmpty()) {
  123. logger.error("oms扫描到的产品数据" + GsonUtil.toJson(productList));
  124. logger.info("--- 【" + DATA_TYPE_INFO + "】获取到本次扫描OMS数据为空, 不执行写数据操作, 本次扫描提前结束!!!");
  125. //下次扫描时间
  126. acqGoodsOnSeatRecordTime.updateWmsRecordTime(LocalDateTimeUtils.formatNow(LocalDateTimeUtils.DATA_TIME_HYPHEN),
  127. oldThisTime);
  128. return;
  129. }
  130. Map params = Maps.newHashMap();
  131. params.put("wmsList", wmsList);
  132. params.put("omsList", omsList);
  133. params.put("productInfoList", productList);
  134. List cusList = acqGoodsOnSeatDataConversion.conversion(params);
  135. // 写CUS 数据
  136. int res = acqGoodsOnSeatCusData.writeCus(cusList);
  137. }
  138. /**
  139. * 写入OMS shop
  140. * @param omsShopList
  141. * @param oldThisTim
  142. */
  143. private void operateOmsShop(List<OmsShopAcqGoodsSeat> omsShopList, String oldThisTim) {
  144. Map params = Maps.newHashMap();
  145. params.put("omsShopList",omsShopList);
  146. //将oms shop数据转换cus
  147. List<CusAcqGoodsSeat06> cusList = acqGoodsOnSeatOmsShopDataConversion.conversion(params);
  148. // 写CUS 数据
  149. int res = acqGoodsOnSeatOmsShopCusData.writeCus(cusList);
  150. }
  151. }