AcqGoodsOnSeatCusData.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package com.emato.cus.supervise.biz.acqGoodsSeat;
  2. import com.emato.cus.supervise.biz.CusData;
  3. import com.emato.cus.supervise.constant.EmtRecordTimeEnum;
  4. import com.emato.cus.supervise.domainCus.CusAcqGoodsSeat06;
  5. import com.emato.cus.supervise.domainOms.OmsCusUnitCode;
  6. import com.emato.cus.supervise.mapperOms.OmsCusUnitCodeMapper;
  7. import com.emato.cus.supervise.service.cus.CusAcqGoodsSeatService06;
  8. import com.google.common.collect.Lists;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Component;
  14. import java.util.*;
  15. import java.util.stream.Collectors;
  16. import java.util.List;
  17. /**
  18. * 库位货物数据 业务 CUS
  19. * @author Scott Chen
  20. * @version 1.0
  21. * 2017-10-31 12:38
  22. */
  23. @Component
  24. public class AcqGoodsOnSeatCusData implements CusData {
  25. private static final Logger logger = LoggerFactory.getLogger(AcqGoodsOnSeatCusData.class);
  26. @Autowired
  27. private CusAcqGoodsSeatService06 cusAcqGoodsSeatService06;
  28. @Autowired
  29. private OmsCusUnitCodeMapper omsCusUnitCodeMapper;
  30. @Override
  31. public int writeCus(List<?> list) {
  32. logger.info("---------- 库位货物数据::写入本次监控数据开始 --------------------");
  33. List<CusAcqGoodsSeat06> cusList = (List<CusAcqGoodsSeat06>) list;
  34. // 新增库存list
  35. List<CusAcqGoodsSeat06> insertList = new ArrayList<>();
  36. // 修改库存list
  37. List<CusAcqGoodsSeat06> updateList = new ArrayList<>();
  38. // 删除库存list
  39. List<CusAcqGoodsSeat06> deleteList = new ArrayList<>();
  40. List<String> gUnitNameList = Lists.newArrayList();
  41. cusList.forEach(i -> gUnitNameList.add(i.getgUnit()));
  42. // 查询已有库存信息表对应sku数据
  43. List<CusAcqGoodsSeat06> listgoodsSeat = cusAcqGoodsSeatService06.listCusAcqGoodsSeat(cusList);
  44. Map<String, String> exitGoodsSeat = listgoodsSeat.stream().collect(Collectors.toMap(k->k.getSkuNo() + "_" + k.getSeatNo(), v->v.getId()));
  45. List<OmsCusUnitCode> codeList = omsCusUnitCodeMapper.getOmsCusUnitCodeList(gUnitNameList);
  46. Map<String,OmsCusUnitCode> omsCusUnitCodeMap = codeList.stream().collect(Collectors.toMap(k->k.getgUnitName(), v->v));
  47. for (CusAcqGoodsSeat06 seat:cusList) {
  48. if (seat.getgQty() == null) {
  49. seat.setgQty(0.0);
  50. }
  51. OmsCusUnitCode omsProductInfo = omsCusUnitCodeMap.get(seat.getgUnit());
  52. if(omsProductInfo != null) {
  53. seat.setgUnit(omsProductInfo.getgUnitCode());
  54. }
  55. String key = seat.getSkuNo() + "_" + seat.getSeatNo();
  56. if (exitGoodsSeat.containsKey(key)) {
  57. if (seat.getgQty().intValue() != 0) {
  58. // 存在并且库存不为0, 则更新
  59. updateList.add(seat);
  60. } else {
  61. // 释放库位
  62. // 存在并库存为0,则删除
  63. seat.setId(exitGoodsSeat.get(key));
  64. deleteList.add(seat);
  65. }
  66. } else {
  67. if (seat.getgQty().intValue() != 0) {
  68. // 不存在并且库存不为0, 则插入
  69. insertList.add(seat);
  70. }
  71. }
  72. }
  73. int insertResult = 0;
  74. int updateResult = 0;
  75. int deleteResult = 0;
  76. if (insertList.size() > 0) {
  77. insertResult = cusAcqGoodsSeatService06.addCusAcqGoodsSeat06(insertList);
  78. }
  79. if (updateList.size() > 0) {
  80. updateResult = cusAcqGoodsSeatService06.updateCusAcqGoodsSeat06(updateList);
  81. }
  82. if (deleteList.size() > 0) {
  83. deleteResult = cusAcqGoodsSeatService06.deleteCusAcqGoodsSeat06(deleteList);
  84. }
  85. logger.info("--- 库位货物数据, 写入监控数据:{} 条, 更新监控数据:{}条, 删除监控数据:{}条", insertResult, updateResult, deleteResult);
  86. logger.info("---------- 库位货物数据::写入本次监控数据结束 --------------------");
  87. return insertResult + updateResult + deleteResult;
  88. }
  89. }