package com.emato.cus.supervise.biz.acqGoodsSeat; import com.emato.cus.supervise.biz.CusData; import com.emato.cus.supervise.constant.EmtRecordTimeEnum; import com.emato.cus.supervise.domainCus.CusAcqGoodsSeat06; import com.emato.cus.supervise.domainOms.OmsCusUnitCode; import com.emato.cus.supervise.mapperOms.OmsCusUnitCodeMapper; import com.emato.cus.supervise.service.cus.CusAcqGoodsSeatService06; import com.google.common.collect.Lists; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.*; import java.util.stream.Collectors; import java.util.List; /** * 库位货物数据 业务 CUS * @author Scott Chen * @version 1.0 * 2017-10-31 12:38 */ @Component public class AcqGoodsOnSeatCusData implements CusData { private static final Logger logger = LoggerFactory.getLogger(AcqGoodsOnSeatCusData.class); @Autowired private CusAcqGoodsSeatService06 cusAcqGoodsSeatService06; @Autowired private OmsCusUnitCodeMapper omsCusUnitCodeMapper; private static final String DATA_TYPE_INFO = "[" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getCode() + "]" + EmtRecordTimeEnum.ACQ_GOODS_ON_SEAT.getName(); @Override public int writeCus(List list) { logger.info("---------- 库位货物数据::写入本次监控数据开始 --------------------"); List cusList = (List) list; // 新增库存list List insertList = new ArrayList<>(); // 修改库存list List updateList = new ArrayList<>(); // 删除库存list List deleteList = new ArrayList<>(); List gUnitNameList = Lists.newArrayList(); cusList.forEach(i -> gUnitNameList.add(i.getgUnit())); // 查询已有库存信息表对应sku数据 List listgoodsSeat = cusAcqGoodsSeatService06.listCusAcqGoodsSeat(cusList); Map exitGoodsSeat = listgoodsSeat.stream().collect(Collectors.toMap(k->k.getSkuNo()+k.getSeatNo(), v->v.getId())); List codeList = omsCusUnitCodeMapper.getOmsCusUnitCodeList(gUnitNameList); Map omsCusUnitCodeMap = codeList.stream().collect(Collectors.toMap(k->k.getgUnitName(), v->v)); for (CusAcqGoodsSeat06 seat:cusList) { OmsCusUnitCode omsProductInfo = omsCusUnitCodeMap.get(seat.getgUnit()); if(omsProductInfo != null) { seat.setgUnit(omsProductInfo.getgUnitCode()); } String key = seat.getSkuNo() + seat.getSeatNo(); if (exitGoodsSeat.containsKey(key)) { if (seat.getgQty().intValue() != 0) { // 存在并且库存不为0, 则更新 updateList.add(seat); } else { // 存在并库存为0,则删除 seat.setId(exitGoodsSeat.get(key)); deleteList.add(seat); } } else { if (seat.getgQty().intValue() != 0) { // 不存在并且库存不为0, 则插入 insertList.add(seat); } } } int insertResult = 0; int updateResult = 0; int deleteResult = 0; if (insertList.size() > 0) { insertResult = cusAcqGoodsSeatService06.addCusAcqGoodsSeat06(insertList); } if (updateList.size() > 0) { updateResult = cusAcqGoodsSeatService06.updateCusAcqGoodsSeat06(updateList); } if (deleteList.size() > 0) { deleteResult = cusAcqGoodsSeatService06.deleteCusAcqGoodsSeat06(deleteList); } logger.info("---【" + DATA_TYPE_INFO + "】写入监控数据:{} 条, 更新监控数据:{}条, 删除监控数据:{}条", insertResult, updateResult, deleteResult); logger.info("---------- 库位货物数据::写入本次监控数据结束 --------------------"); return insertResult + updateResult + deleteResult; } }