package zy.cloud.wms.manager.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import zy.cloud.wms.common.config.CodeCoolException; import zy.cloud.wms.common.model.MatnrDto; import zy.cloud.wms.manager.entity.LocDetl; import zy.cloud.wms.manager.entity.Mat; import zy.cloud.wms.manager.entity.Prior; import zy.cloud.wms.manager.entity.param.StockTransferParam; import zy.cloud.wms.manager.mapper.LocDetlMapper; import zy.cloud.wms.manager.service.LocDetlService; import zy.cloud.wms.manager.service.MatService; import zy.cloud.wms.manager.service.PriorService; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @Service("locDetlService") public class LocDetlServiceImpl extends ServiceImpl implements LocDetlService { @Autowired private MatService matService; @Autowired private PriorService priorService; @Override public Page getPage(Page page) { page.setRecords(baseMapper.listByPage(page.getCondition())); page.setTotal(baseMapper.listByPageCount(page.getCondition())); return page; } @Override public LocDetl getLocDetl(Long nodeId, String matnr) { return this.baseMapper.selectByLocNoAndMatnr(nodeId, matnr); } @Override public List findOfSort(String matnr) { List result = new ArrayList<>(); List locDetls = this.baseMapper.selectByPrior(matnr, null); if (!Cools.isEmpty(locDetls)) { result.addAll(locDetls); } List nodeIds = locDetls.stream().map(LocDetl::getNodeId).distinct().collect(Collectors.toList()); List locDetls1 = this.selectList(new EntityWrapper().eq("matnr", matnr).eq("status", 1).orderBy("create_time")); for (LocDetl locDetl : locDetls1) { if (!nodeIds.contains(locDetl.getNodeId())) { result.add(locDetl); } } return result; } @Override public void checkLocDetlCount(List dtos) { StringBuilder errorMsg = new StringBuilder(); boolean error = false; for (MatnrDto dto : dtos) { Double count = Optional.ofNullable(baseMapper.selectCountByMatnr(dto.getMatnr())).orElse(0.0D); if (count < dto.getCount()) { if (!error) { error = true; } Mat mat = matService.selectByMatnr(dto.getMatnr()); errorMsg.append(mat == null ? dto.getMatnr() : mat.getMaktx()).append("库存不足,缺货数量:").append(dto.getCount() - count).append("
"); } } if (error) { throw new CodeCoolException("20001-" + errorMsg.toString()); } } @Override public List checkLocDetlCountOfRes(List dtos) { boolean asrs = false; List params = new ArrayList<>(); for (MatnrDto dto : dtos) { Double count = Optional.ofNullable(baseMapper.selectCountByMatnr(dto.getMatnr())).orElse(0.0D); if (count < dto.getCount()) { if (!asrs) { asrs = true; } StockTransferParam param = new StockTransferParam(); param.setMatnr(dto.getMatnr()); param.setAnfme(dto.getCount() - count); param.setTotal(dto.getCount()); params.add(param); } } return params; } @Override public Boolean reduceStock(Long nodeId, String matnr, Double anfme) { return this.baseMapper.reduceStock(nodeId, matnr, anfme)>0; } @Override public Boolean incrementStock(Long nodeId, String matnr, Double anfme) { return this.baseMapper.incrementStock(nodeId, matnr, anfme)>0; } @Override public Boolean removeStock(Long nodeId, String matnr) { return this.baseMapper.removeStock(nodeId, matnr)>0; } @Override public Boolean isPrior(Long nodeId, String matnr) { return priorService.selectCount(new EntityWrapper().eq("matnr", matnr).eq("node_id", nodeId).eq("status", 1))>0; } @Override public List getLocDetlStatis() { return this.baseMapper.getLocDetlStatis(); } @Override public Double selectCountByMatnr(String matnr) { return this.baseMapper.selectCountByMatnr(matnr); } @Override public List findByNodeUuid(String uuid) { return this.baseMapper.selectByNodeUuid(uuid); } @Override public Page getStockStatis(Page page) { page.setRecords(baseMapper.getStockStatis(page.getCondition())); page.setTotal(baseMapper.getStockStatisCount(page.getCondition())); return page; } @Override public List getStockStatisExcel() { return this.baseMapper.getStockStatisExcel(); } @Override public Double getStockByDocType34(String matnr) { return this.baseMapper.getStockByDocType34(matnr); } }