AcqGoodsOnSeatCusData.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Component;
  13. import java.util.*;
  14. import java.util.stream.Collectors;
  15. import java.util.List;
  16. /**
  17. * 库位货物数据 业务 CUS
  18. * @author Scott Chen
  19. * @version 1.0
  20. * 2017-10-31 12:38
  21. */
  22. @Component
  23. public class AcqGoodsOnSeatCusData implements CusData {
  24. private static final Logger logger = LoggerFactory.getLogger(AcqGoodsOnSeatCusData.class);
  25. @Autowired
  26. private CusAcqGoodsSeatService06 cusAcqGoodsSeatService06;
  27. @Autowired
  28. private OmsCusUnitCodeMapper omsCusUnitCodeMapper;
  29. private static final String DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getName();
  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. OmsCusUnitCode omsProductInfo = omsCusUnitCodeMap.get(seat.getgUnit());
  49. if(omsProductInfo != null) {
  50. seat.setgUnit(omsProductInfo.getgUnitCode());
  51. }
  52. String key = seat.getSkuNo() + seat.getSeatNo();
  53. if (exitGoodsSeat.containsKey(key)) {
  54. if (seat.getgQty().intValue() != 0) {
  55. // 存在并且库存不为0, 则更新
  56. updateList.add(seat);
  57. } else {
  58. // 存在并库存为0,则删除
  59. seat.setId(exitGoodsSeat.get(key));
  60. deleteList.add(seat);
  61. }
  62. } else {
  63. if (seat.getgQty().intValue() != 0) {
  64. // 不存在并且库存不为0, 则插入
  65. insertList.add(seat);
  66. }
  67. }
  68. }
  69. int insertResult = 0;
  70. int updateResult = 0;
  71. int deleteResult = 0;
  72. if (insertList.size() > 0) {
  73. insertResult = cusAcqGoodsSeatService06.addCusAcqGoodsSeat06(insertList);
  74. }
  75. if (updateList.size() > 0) {
  76. updateResult = cusAcqGoodsSeatService06.updateCusAcqGoodsSeat06(updateList);
  77. }
  78. if (deleteList.size() > 0) {
  79. deleteResult = cusAcqGoodsSeatService06.deleteCusAcqGoodsSeat06(deleteList);
  80. }
  81. logger.info("---【" + DATA_TYPE_INFO + "】写入监控数据:{} 条, 更新监控数据:{}条, 删除监控数据:{}条", insertResult, updateResult, deleteResult);
  82. logger.info("---------- 库位货物数据::写入本次监控数据结束 --------------------");
  83. return insertResult + updateResult + deleteResult;
  84. }
  85. }