|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.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 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.List; | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean updateAnfme(Double anfme, String locNo, String matnr) { | 
|---|
|  |  |  | public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) { | 
|---|
|  |  |  | if (anfme <= 0) { | 
|---|
|  |  |  | return delete(new EntityWrapper<LocDetl>().eq("loc_no", locNo).eq("matnr", matnr)); | 
|---|
|  |  |  | return this.baseMapper.deleteItem(locNo, matnr, batch) > 0; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | int res = baseMapper.updateAnfme(anfme, locNo, matnr); | 
|---|
|  |  |  | return res > 0; | 
|---|
|  |  |  | 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 List<String> getSameDetlToday(String matnr) { | 
|---|
|  |  |  | return this.baseMapper.selectSameDetlToday(matnr); | 
|---|
|  |  |  | 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> getStockStatisDate(Page<LocDetl> page) { | 
|---|
|  |  |  | page.setRecords(baseMapper.getStockStatisDate(page.getCondition())); | 
|---|
|  |  |  | page.setTotal(baseMapper.getStockStatisDateCount(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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|