| | |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.StaDescService; |
| | | import com.zy.asrs.utils.Utils; |
| | | 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; |
| | | import java.util.*; |
| | | |
| | | @Service("locDetlService") |
| | | public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) { |
| | | public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, String containerCode, String csoCode, String isoCode) { |
| | | if (anfme <= 0) { |
| | | return this.baseMapper.deleteItem(locNo, matnr, batch) > 0; |
| | | return this.baseMapper.deleteItem(locNo, matnr, batch, containerCode, csoCode, isoCode) > 0; |
| | | } else { |
| | | return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0; |
| | | return baseMapper.updateAnfme(anfme, locNo, matnr, batch, containerCode, csoCode, isoCode) > 0; |
| | | } |
| | | } |
| | | |
| | |
| | | @Override |
| | | public List<String> getSameDetl(String matnr) { |
| | | return this.baseMapper.selectSameDetl(matnr); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getSameLevDetl(String matnr, Integer lev) { |
| | | return this.baseMapper.selectSameLevDetl(matnr, lev); |
| | | } |
| | | |
| | | @Override |
| | |
| | | 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; |
| | | } |
| | | |
| | | Set<LocDetl> resort = resort(locDetlList); |
| | | |
| | | for (LocDetl locDetl : resort) { |
| | | |
| | | 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); |
| | | |
| | | //用于显示工作明细档的订单号 |
| | | String orderNoWrkDtel = Utils.getOrderNo(orderNo,anfme); |
| | | //更新订单数量 |
| | | orderNo = Utils.orderMergeUpdate(orderNo,anfme); |
| | | |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNoWrkDtel, anfme); |
| | | |
| | | List<Integer> outSite = basDevpService.getAvailableOutSite(101); |
| | | List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103); |
| | | pickOutSite.forEach(site -> { |
| | | if(!outSite.contains(site)){ |
| | | outSite.add(site); |
| | | } |
| | | }); |
| | | |
| | | locDto.setStaNos(outSite); |
| | | locDto.setCsocode(csocode); |
| | |
| | | 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) { |
| | | Set<LocDetl> resort = resort(locDetlList); |
| | | for (LocDetl locDetl : resort) { |
| | | //判断当前库位货物是否F在库 |
| | | LocMast locMast = locMastService.selectById(locDetl.getLocNo()); |
| | | if(!"F".equals(locMast.getLocSts())){ |
| | |
| | | return this.baseMapper.selectLocNo(matnr); |
| | | } |
| | | |
| | | public Set<String> selectLocNos(String matnr) { |
| | | |
| | | Wrapper<LocDetl> wrapper = new EntityWrapper<LocDetl>().eq("matnr", matnr); |
| | | //Utils.confirmOnlyMat(wrapper,matnr,batch,csocode,isocode); |
| | | List<LocDetl> locDetls = this.selectList(wrapper); |
| | | |
| | | Set<String> locNos = new HashSet<>(); |
| | | locDetls.forEach(locDetl -> { |
| | | locNos.add(locDetl.getLocNo()); |
| | | }); |
| | | |
| | | return locNos; |
| | | |
| | | } |
| | | |
| | | public LocDetl selectByContainerCode(String containerCode) { |
| | | return this.selectOne(new EntityWrapper<LocDetl>().eq("supp_code",containerCode)); |
| | | } |
| | | |
| | | @Override |
| | | public List<LocDetl> selectByLocWithoutContainer(String locNo) { |
| | | return this.selectList(new EntityWrapper<LocDetl>().eq("loc_no", locNo) |
| | | .andNew().eq("supp_code", "").or().isNull("supp_code")); |
| | | } |
| | | |
| | | @Override |
| | | public int updateStockFreeze(String matnr, String locNo, Integer stockFreeze) { |
| | | return this.baseMapper.updateStockFreeze(matnr, locNo, stockFreeze); |
| | |
| | | if(Cools.isEmpty(condition)){ |
| | | wrapper.andNew().eq(column,"").or().isNull(column); |
| | | }else { |
| | | wrapper.eq(column,condition); |
| | | wrapper.andNew().eq(column,condition); |
| | | } |
| | | } |
| | | |
| | | //根据深浅库位进行重新排序 |
| | | private Set<LocDetl> resort(List<LocDetl> locDetls){ |
| | | Set<LocDetl> locDetlsResort = new LinkedHashSet<>(); |
| | | |
| | | for(LocDetl locDetl : locDetls){ |
| | | LocMast locMast = locMastService.selectById(locDetl.getLocNo()); |
| | | if(!"F".equals(locMast.getLocSts())){ |
| | | continue; |
| | | } |
| | | |
| | | List<String> groupOuterLoc = Utils.getGroupOuterLoc(locDetl.getLocNo()); |
| | | |
| | | if(Cools.isEmpty(groupOuterLoc)){ |
| | | locDetlsResort.add(locDetl); |
| | | }else { |
| | | groupOuterLoc.add(locDetl.getLocNo()); |
| | | //如果是深库位,则先找外侧的库位 |
| | | for (String locNo : groupOuterLoc){ |
| | | LocMast locMastOuter = locMastService.selectById(locNo); |
| | | //外侧如果是拣料,则内测不允许出 |
| | | if("P".equals(locMastOuter.getLocSts()) || "Q".equals(locMastOuter.getLocSts()) || "S".equals(locMastOuter.getLocSts())){ |
| | | break; |
| | | } |
| | | |
| | | if(!"F".equals(locMastOuter.getLocSts())){ |
| | | continue; |
| | | } |
| | | locDetlsResort.addAll(this.selectByLocNo(locNo)); |
| | | |
| | | } |
| | | } |
| | | } |
| | | return locDetlsResort; |
| | | } |
| | | } |