package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.result.StockVo; import com.zy.asrs.mapper.LocDetlMapper; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.StaDescService; import com.zy.common.model.LocDto; import com.zy.common.model.QueryStockPreDo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Set; @Service("locDetlService") public class LocDetlServiceImpl extends ServiceImpl implements LocDetlService { @Autowired private StaDescService staDescService; @Autowired private LocMastService locMastService; @Override public Page getStockOut(Page page) { page.setRecords(baseMapper.getStockOutPage(page.getCondition())); page.setTotal(baseMapper.getStockOutPageCount(page.getCondition())); return page; } @Override public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) { if (anfme <= 0) { return this.baseMapper.deleteItem(locNo, matnr, batch) > 0; } else { return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0; } } @Override public boolean updateLocNo(String newLocNo, String oldLocNo) { return baseMapper.updateLocNo(newLocNo, oldLocNo) > 0; } @Override public List getSameDetl(String matnr) { return this.baseMapper.selectSameDetl(matnr); } @Override public List getSameDetlToday(String matnr, Integer start, Integer end) { return this.baseMapper.selectSameDetlToday(matnr, start, end); } @Override public Page getStockStatis(Page page) { page.setRecords(baseMapper.getStockStatis(page.getCondition())); page.setTotal(baseMapper.getStockStatisCount(page.getCondition())); return page; } @Override public Double getSumAnfme(String matnr) { return this.baseMapper.selectSumAnfmeByMatnr(matnr); } @Override public List selectPakoutByRule(String matnr) { return this.baseMapper.selectPakoutByRule(matnr); } @Override public List getAsrsLocDetl(String matnr) { return this.baseMapper.getAsrsLocDetl(matnr); } @Override public Integer countLocNoNum(String locNo) { return this.baseMapper.countLocNoNum(locNo); } @Override public List queryStock(String matnr, String batch, String orderNo, Set locNos) { List result = new ArrayList<>(); List preDos = this.baseMapper.queryStockPre(matnr); for (QueryStockPreDo preDo : preDos) { List locDetls = this.baseMapper.queryStock(matnr, preDo.getNo(), preDo.getOrderBy(), preDo.getBay()); result.addAll(locDetls); } return result; } //出库 public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List locDtoList, double issued, String csocode, String isoseq) { Wrapper wrapper = new EntityWrapper().eq("matnr", matnr).orderBy("modi_time"); wapperSetCondition(wrapper,"batch",batch); wapperSetCondition(wrapper,"three_code",csocode); wapperSetCondition(wrapper,"dead_time",isoseq); // if(Cools.isEmpty(batch)){ // wrapper.isNull("batch"); // }else { // wrapper.eq("batch",batch); // } List locDetlList = this.selectList(wrapper); for (LocDetl locDetl : locDetlList) { //判断当前库位货物是否F在库 LocMast locMast = locMastService.selectById(locDetl.getLocNo()); if(!"F".equals(locMast.getLocSts())){ continue; } if (issued > 0) { double anfme = locDetl.getAnfme(); int ioType = anfme > issued ? 103 : 101; anfme = anfme > issued ? issued : anfme; LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNo, anfme); List staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType); locDto.setStaNos(staNos); locDto.setCsocode(csocode); locDto.setIsoseq(isoseq); locDto.setContainerCode(locDetl.getSuppCode()); locDtoList.add(locDto); // 剩余待出数量递减 issued = issued - locDetl.getAnfme(); } } return issued; } @Override public Double queryStockAnfme(String matnr, String batch) { return this.baseMapper.queryStockAnfme(matnr, batch); } @Override public List queryStockTotal() { return this.baseMapper.queryStockTotal(); } /** * 获取库存总数 * @return */ @Override public Integer sum() { return this.baseMapper.sum(); } @Override public List unreason() { return this.baseMapper.unreason(); } @Override public LocDetl selectItem(String locNo, String matnr, String batch,String suppCode) { return this.baseMapper.selectItem(locNo, matnr, batch,suppCode); } @Override public List searchByLike(String orderNo, String matnr, String maktx, String specs, String locNo) { if (Cools.isEmpty(orderNo) && Cools.isEmpty(matnr) && Cools.isEmpty(maktx) && Cools.isEmpty(specs) && Cools.isEmpty(locNo)) { return new ArrayList(); } return this.baseMapper.searchByLike(orderNo, matnr, maktx, specs, locNo); } @Override public List selectByLocNo(String locNo) { return this.baseMapper.selectByLocNo(locNo); } @Override public List selectLocNo(String matnr) { return this.baseMapper.selectLocNo(matnr); } @Override public int updateStockFreeze(String matnr, String locNo, Integer stockFreeze) { return this.baseMapper.updateStockFreeze(matnr, locNo, stockFreeze); } private void wapperSetCondition(Wrapper wrapper,String column, String condition){ if(Cools.isEmpty(condition)){ wrapper.andNew().eq(column,"").or().isNull(column); }else { wrapper.eq(column,condition); } } }