From ac4341ea6b66ae02427d39d35f41d42d78b2eb2e Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 14 二月 2025 10:08:32 +0800 Subject: [PATCH] # --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/LocDetlServiceImpl.java | 152 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 147 insertions(+), 5 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 b24d130..badac6c 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 @@ -4,19 +4,24 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.zy.asrs.wms.asrs.entity.LocDetlField; -import com.zy.asrs.wms.asrs.entity.ViewLocDetl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.entity.param.LocDetlFreezeParam; import com.zy.asrs.wms.asrs.mapper.LocDetlMapper; -import com.zy.asrs.wms.asrs.entity.LocDetl; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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 org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -27,6 +32,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) { @@ -66,7 +75,7 @@ param.add(fieldParam); } - List<Map<String, Object>> list2 = viewLocDetlMapper.getList(matnr, batch, param); + List<Map<String, Object>> list2 = viewLocDetlMapper.getListLike(matnr, batch, param); List<LocDetl> locDetls = new ArrayList<>(); for (Map<String, Object> objectMap : list2) { LocDetl locDetl = JSON.parseObject(JSON.toJSONString(objectMap), LocDetl.class); @@ -84,4 +93,137 @@ } return list; } + + @Override + 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.queryStock(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> map : list) { + LocDetl locDetl = JSON.parseObject(JSON.toJSONString(map), LocDetl.class); + locDetls.add(locDetl); + } + + 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; + } + + if (!sortDirctLoc.contains(one.getId())) { + 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; + } + + @Override + @Transactional + public void locDetlFreeze(LocDetlFreezeParam param) { + if (param == null) { + throw new CoolException("鍙傛暟涓嶈兘涓虹┖"); + } + + if (param.getDetlIds() == null) { + throw new CoolException("搴撳瓨鏄庣粏鍙傛暟涓嶈兘涓虹┖"); + } + + if (param.getFreeze() == null) { + throw new CoolException("鍐荤粨鍙傛暟涓嶈兘涓虹┖"); + } + + List<LocDetl> locDetls = this.listByIds(param.getDetlIds()); + if(locDetls.isEmpty()){ + throw new CoolException("搴撳瓨涓嶅瓨鍦�"); + } + + for (LocDetl locDetl : locDetls) { + locDetl.setFreeze(param.getFreeze()); + locDetl.setUpdateTime(new Date()); + if (!this.updateById(locDetl)) { + throw new CoolException("鏇存柊澶辫触"); + } + } + } + + @Override + public void removeLocDetl(Long locId) { + List<LocDetl> locDetls = this.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, locId)); + for (LocDetl locDetl : locDetls) { + boolean remove = locDetlFieldService.remove(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId())); + if (!remove) { + throw new CoolException("鎵╁睍瀛楁鍒犻櫎澶辫触"); + } + + boolean result = this.removeById(locDetl.getId()); + if (!result) { + throw new CoolException("鏄庣粏鍒犻櫎澶辫触"); + } + } + } } -- Gitblit v1.9.1