package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.result.FindLocNoAttributeVo; import com.zy.asrs.mapper.WrkMastLogMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.InboundCameraCaptureService; import com.zy.asrs.service.WrkMastService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; @Slf4j @Service("wrkMastService") public class WrkMastServiceImpl extends ServiceImpl implements WrkMastService { @Autowired private WrkMastLogMapper wrkMastLogMapper; @Override public int getWorkingMast(Integer devpNo) { return selectCount(new EntityWrapper().eq("source_sta_no", devpNo).in("wrk_sts", 1, 6)); } @Override public List selectToBeCompleteData() { return this.baseMapper.selectToBeCompleteData(); } @Override public List selectToBeHistoryData() { return this.baseMapper.selectToBeHistoryData(); } @Override public List selectPendingInboundCameraCapture() { return this.baseMapper.selectPendingInboundCameraCapture( InboundCameraCaptureService.CAPTURE_PENDING, InboundCameraCaptureService.CAPTURE_RUNNING); } @Override public boolean updateMemoIfCurrent(Integer wrkNo, String current, String next) { return this.baseMapper.updateMemoIfCurrent(wrkNo, current, next) > 0; } @Override public WrkMast selectByBarcode(String barcode) { List wrkMasts = this.selectList(new EntityWrapper().eq("barcode", barcode)); if (Cools.isEmpty(wrkMasts)) { return null; } return wrkMasts.get(0); } @Override public int getStoreCount(Integer crnNo) { return selectCount(new EntityWrapper().eq("crn_no", crnNo) .last(" and (wrk_sts in (1,2) or (wrk_sts=3 and wrk_no in (select wrk_no from asr_bas_devp)))")); } @Override public int selectWrkMastBareBoardStaNo(Integer ioType,Integer staNo) { return this.baseMapper.selectWrkMastBareBoardStaNo(ioType,staNo); } @Override public List selectWrkMastWrkDetl(Integer ioType, FindLocNoAttributeVo findLocNoAttributeVo, Integer crnNo) { return this.baseMapper.selectWrkMastWrkDetl(ioType,findLocNoAttributeVo.getMatnr(),findLocNoAttributeVo.getBatch(),findLocNoAttributeVo.getBrand() ,findLocNoAttributeVo.getStandby1(),findLocNoAttributeVo.getStandby2(),findLocNoAttributeVo.getStandby3() ,findLocNoAttributeVo.getBoxType1(),findLocNoAttributeVo.getBoxType2(),findLocNoAttributeVo.getBoxType3() ,crnNo); } @Override public WrkMast selectWrkMast(Integer workNo, String barcode) { return this.baseMapper.selectWrkMast(workNo, barcode); } @Override public int outboundSeqMaxContiguousPlt(String userNo, String batchSeq) { List fromMast = baseMapper.listOutboundPltTypesByUserNo(userNo, batchSeq); List fromLog = wrkMastLogMapper.listOutboundPltTypesByUserNo(userNo, batchSeq); Set filled = new HashSet<>(); addPositivePlt(fromMast, filled); addPositivePlt(fromLog, filled); int h = 0; while (filled.contains(h + 1)) { h++; } return h; } @Override public Date firstInboundCreateTimeByTrainNo(String trainNo) { if (Cools.isEmpty(trainNo)) { return null; } Date fromMast = baseMapper.selectFirstInboundCreateTimeByTrainNo(trainNo); Date fromLog = wrkMastLogMapper.selectFirstInboundCreateTimeByTrainNo(trainNo); if (fromMast == null) { return fromLog; } if (fromLog == null) { return fromMast; } return fromMast.before(fromLog) ? fromMast : fromLog; } @Override public int finishedInboundPalletCountByTrainNo(String trainNo) { if (Cools.isEmpty(trainNo)) { return 0; } Set wrkNos = new HashSet<>(); addPositiveWrkNos(baseMapper.listFinishedInboundWrkNosByTrainNo(trainNo), wrkNos); addPositiveWrkNos(wrkMastLogMapper.listFinishedInboundWrkNosByTrainNo(trainNo), wrkNos); return wrkNos.size(); } private static void addPositivePlt(List list, Set target) { if (list == null) { return; } for (Integer p : list) { if (p != null && p > 0) { target.add(p); } } } private static void addPositiveWrkNos(List list, Set target) { if (list == null) { return; } for (Integer wrkNo : list) { if (wrkNo != null && wrkNo > 0) { target.add(wrkNo); } } } }