From 11b3ac7e9f6bc9144ddd7a5261cf69796f38d7b3 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期六, 07 九月 2024 13:51:31 +0800 Subject: [PATCH] # --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java | 110 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 91 insertions(+), 19 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java index 7a13a1a..d477f27 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java @@ -5,23 +5,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.zy.asrs.wms.asrs.entity.LocDetl; -import com.zy.asrs.wms.asrs.entity.LocDetlField; -import com.zy.asrs.wms.asrs.entity.ViewLocDetl; +import com.zy.asrs.framework.exception.CoolException; +import com.zy.asrs.wms.asrs.entity.*; +import com.zy.asrs.wms.asrs.entity.enums.LocStsType; import com.zy.asrs.wms.asrs.entity.param.FieldParam; import com.zy.asrs.wms.asrs.entity.param.FieldSortParam; import com.zy.asrs.wms.asrs.mapper.LocDetlMapper; import com.zy.asrs.wms.asrs.mapper.ViewLocDetlMapper; +import com.zy.asrs.wms.asrs.service.LanewayRuleService; import com.zy.asrs.wms.asrs.service.LocDetlFieldService; import com.zy.asrs.wms.asrs.service.LocDetlService; +import com.zy.asrs.wms.asrs.service.LocService; import com.zy.asrs.wms.common.domain.BaseParam; import com.zy.asrs.wms.common.domain.PageParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; @Service("locDetlService") public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService { @@ -30,6 +30,10 @@ private ViewLocDetlMapper viewLocDetlMapper; @Autowired private LocDetlFieldService locDetlFieldService; + @Autowired + private LocService locService; + @Autowired + private LanewayRuleService lanewayRuleService; @Override public PageParam<ViewLocDetl, BaseParam> getPage(PageParam<ViewLocDetl, BaseParam> pageParam, QueryWrapper<ViewLocDetl> buildWrapper) { @@ -88,22 +92,90 @@ return list; } - /** - * 鏍规嵁鍑哄簱鏉′欢鏌ヨ绗﹀悎鐨勫簱瀛� - * @param param 鏌ヨ鏉′欢 - * @param sortParam 鎺掑簭瀛楁 - * @return - */ @Override - public List<LocDetl> listSuitableMat( List<FieldParam> param, List<FieldSortParam> sortParam) { - List<Map<String, Object>> stock = viewLocDetlMapper.listSuitableMat(param, sortParam); + public List<LocDetl> queryStock(String matnr, String batch, List<FieldParam> param) { + return queryStock(matnr, batch, param, null); + } + + @Override + public List<LocDetl> queryStock(String matnr, String batch, List<FieldParam> param, List<FieldSortParam> sortParam) { + List<Map<String, Object>> list = viewLocDetlMapper.getList(matnr, batch, param, sortParam); + List<LocDetl> locDetlsSort = resortDetls(list); + return locDetlsSort; + } + + private List<LocDetl> resortDetls(List<Map<String, Object>> list) { List<LocDetl> locDetls = new ArrayList<>(); - for (Map<String, Object> objectMap : stock) { - LocDetl detl = JSON.parseObject(JSON.toJSONString(objectMap), LocDetl.class); - detl.syncFieldMap(objectMap); - locDetls.add(detl); + + for (Map<String, Object> map : list) { + LocDetl locDetl = JSON.parseObject(JSON.toJSONString(map), LocDetl.class); + locDetls.add(locDetl); } - return locDetls; + + locDetls = parseLocDetl(locDetls); + + List<Long> sortDirctLoc = new ArrayList<>(); + HashMap<Long, List<LocDetl>> sortMap = new HashMap<>(); + for (LocDetl locDetl : locDetls) { + List<LocDetl> detls = sortMap.get(locDetl.getLocId()); + if (detls == null) { + detls = new ArrayList<>(); + detls.add(locDetl); + sortMap.put(locDetl.getLocId(), detls); + }else { + detls.add(locDetl); + sortMap.put(locDetl.getLocId(), detls); + } + + Loc loc = locService.getById(locDetl.getLocId()); + if (loc == null) { + continue; + } + + if(!loc.getLocStsId().equals(LocStsType.F.val())){ + continue; + } + + //鑾峰彇搴撲綅鎵�鍦ㄥ贩閬� + LanewayRule lanewayRule = lanewayRuleService.getLaneByLoc(loc); + if(lanewayRule == null) { + throw new CoolException("搴撲綅鏈厤缃贩閬�"); + } + + //鑾峰彇搴撲綅鏂瑰悜 + List<Integer> direction = null; + if (lanewayRule.getLaneX$().contains(loc.getRow1())) { + direction = lanewayRule.getLaneX$(); + }else { + direction = lanewayRule.getLaneY$(); + } + Collections.reverse(direction); + + for (Integer row : direction) { + Loc one = locService.getOne(new LambdaQueryWrapper<Loc>() + .eq(Loc::getRow1, row) + .eq(Loc::getBay1, loc.getBay1()) + .eq(Loc::getLev1, loc.getLev1())); + if (one == null) { + continue; + } + + sortDirctLoc.add(one.getId()); + } + } + + List<LocDetl> sortDirctDetls = new ArrayList<>(); + + for (Long locId : sortDirctLoc) { + List<LocDetl> detls = sortMap.get(locId); + if(detls == null) { + continue; + } + + sortDirctDetls.addAll(detls); + } + + return sortDirctDetls; } } -- Gitblit v1.9.1