|  |  | 
 |  |  |  | 
 |  |  | 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.utils.Utils; | 
 |  |  | import com.zy.common.model.QueryStockPreDo; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | @Service("locDetlService") | 
 |  |  | public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService { | 
 |  |  |  | 
 |  |  |     @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, null, null) > 0; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, String manu, String memo) { | 
 |  |  |         if (anfme <= 0) { | 
 |  |  |             return this.baseMapper.deleteItem(locNo, matnr, batch) > 0; | 
 |  |  |         } else { | 
 |  |  |             return baseMapper.updateAnfme(anfme, locNo, matnr, batch, manu, memo) > 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 Page<LocDetl> getStockStatis2(Page<LocDetl> page) { | 
 |  |  |         page.setRecords(baseMapper.getStockStatis2(page.getCondition())); | 
 |  |  |         page.setTotal(baseMapper.getStockStatisCount(page.getCondition())); | 
 |  |  |         return page; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Page<LocDetl> getStockStatisOut(Page<LocDetl> page) { | 
 |  |  |         page.setRecords(baseMapper.getStockStatisOut(page.getCondition())); | 
 |  |  |         page.setTotal(baseMapper.getStockStatisOutCount(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, batch); | 
 |  |  |         for (QueryStockPreDo preDo : preDos) { | 
 |  |  |             List<LocDetl> locDetls = this.baseMapper.queryStock(matnr, batch, preDo.getNo(), preDo.getOrderBy(), preDo.getBay()); | 
 |  |  |             result.addAll(locDetls); | 
 |  |  |         } | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @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(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 通过物料代码获取库存总数量 | 
 |  |  |      * @param matnr | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public Double selectSumByMatnr(String matnr) { | 
 |  |  |         Double aDouble = this.baseMapper.selectSumByMatnr(matnr); | 
 |  |  |         if (aDouble == null) { | 
 |  |  |             return 0.0; | 
 |  |  |         }else { | 
 |  |  |             return aDouble; | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<LocDetl> selectGroupPage(Map<String, Object> param, Integer curr, Integer limit) { | 
 |  |  |         return this.baseMapper.selectGroupPage(param); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<LocDetl> selectByLocNo(String locNo) { | 
 |  |  |         return this.baseMapper.selectByLocNo(locNo); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<LocDetl> selectByLocNosAndMatnr(List<String> locNos, String matnr) { | 
 |  |  |         return this.baseMapper.selectByLocNosAndMatnr(locNos, matnr); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @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> findHighAreaByMatnr(String matnr) { | 
 |  |  |         return this.baseMapper.findAreaByMatnr(matnr, 2); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<LocDetl> findSingleAreaByMatnr(String matnr) { | 
 |  |  |         ArrayList<LocDetl> list = new ArrayList<>(); | 
 |  |  |         List<LocDetl> locDetls = this.baseMapper.findAreaByMatnr(matnr, 1); | 
 |  |  |  | 
 |  |  |         //将查出来的数据进行排序。1-3,8-11,15-18row需要颠倒顺序 | 
 |  |  |         for (LocDetl locDetl : locDetls) { | 
 |  |  |             if (list.contains(locDetl)) { | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             String locNo = locDetl.getLocNo(); | 
 |  |  |             List<String> outerSingleLoc = Utils.getGroupLoc(locNo); | 
 |  |  |             List<LocMast> locMasts = locMastService.selectByLocNos(outerSingleLoc); | 
 |  |  |             int locRow = Utils.getRow(locNo); | 
 |  |  |             if (locRow >= 1 && locRow <= 3 | 
 |  |  |                     || locRow >= 8 && locRow <= 11 | 
 |  |  |                     || locRow >= 15 && locRow <= 18) { | 
 |  |  |                 Collections.reverse(locMasts); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             for (LocMast locMast : locMasts) { | 
 |  |  |                 if (!locMast.getLocSts().equals("F")) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (locMast.getLocType2() != 1) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 for (LocDetl detl : this.baseMapper.selectByLocNo(locMast.getLocNo())) { | 
 |  |  |                     if (detl.getMatnr().equals(locDetl.getMatnr())) { | 
 |  |  |                         if (!list.contains(detl)) { | 
 |  |  |                             list.add(detl); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         return list; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<LocDetl> findLowAreaByMatnr(String matnr) { | 
 |  |  |         return this.baseMapper.findAreaByMatnr(matnr, 3); | 
 |  |  |     } | 
 |  |  | } |