| | |
| | | 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<LocDetlMapper, LocDetl> implements LocDetlService { |
| | | |
| | | @Autowired |
| | | private StaDescService staDescService; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | |
| | | @Override |
| | | public Page<LocDetl> getStockOut(Page<LocDetl> page) { |
| | | page.setRecords(baseMapper.getStockOutPage(page.getCurrent(), page.getSize(), page.getCondition())); |
| | | page.setTotal(baseMapper.getStockOutPageCount()); |
| | | 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<String> getSameDetl(String matnr) { |
| | | return this.baseMapper.selectSameDetl(matnr); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getSameDetlToday(String matnr, Integer start, Integer end) { |
| | | return this.baseMapper.selectSameDetlToday(matnr, start, end); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public Page<LocDetl> getStockStatis(Page<LocDetl> 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<LocDetl> selectPakoutByRule(String matnr) { |
| | | return this.baseMapper.selectPakoutByRule(matnr); |
| | | } |
| | | |
| | | @Override |
| | | public List<LocDetl> getAsrsLocDetl(String matnr) { |
| | | return this.baseMapper.getAsrsLocDetl(matnr); |
| | | } |
| | | |
| | | @Override |
| | | public Integer countLocNoNum(String locNo) { |
| | | return this.baseMapper.countLocNoNum(locNo); |
| | | } |
| | | |
| | | @Override |
| | | public List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos) { |
| | | List<LocDetl> result = new ArrayList<>(); |
| | | List<QueryStockPreDo> preDos = this.baseMapper.queryStockPre(matnr); |
| | | for (QueryStockPreDo preDo : preDos) { |
| | | List<LocDetl> 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<LocDto> locDtoList, double issued, String csocode, String isoseq) { |
| | | Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>().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<LocDetl> 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<Integer> 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<StockVo> queryStockTotal() { |
| | | return this.baseMapper.queryStockTotal(); |
| | | } |
| | | |
| | | /** |
| | | * 获取库存总数 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Integer sum() { |
| | | |
| | | return this.baseMapper.sum(); |
| | | } |
| | | |
| | | @Override |
| | | public List<LocDetl> unreason() { |
| | | return this.baseMapper.unreason(); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public LocDetl selectItem(String locNo, String matnr, String batch) { |
| | | return this.baseMapper.selectItem(locNo, matnr, batch); |
| | | } |
| | | |
| | | @Override |
| | | public List<LocDetl> 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<LocDetl>(); |
| | | } |
| | | return this.baseMapper.searchByLike(orderNo, matnr, maktx, specs, locNo); |
| | | } |
| | | |
| | | @Override |
| | | public List<LocDetl> selectByLocNo(String locNo) { |
| | | return this.baseMapper.selectByLocNo(locNo); |
| | | } |
| | | |
| | | @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.isNull(column); |
| | | }else { |
| | | wrapper.eq(column,condition); |
| | | } |
| | | } |
| | | } |