diff --git a/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java b/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java index b876def..17929c2 100644 --- a/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java +++ b/src/main/java/com/huaheng/api/wcs/controller/EmptyContainerController.java @@ -130,8 +130,7 @@ public class EmptyContainerController extends BaseController { String warehouseCode = manyEmptyDomain.getWarehouseCode(); String area = manyEmptyDomain.getArea(); String roadWay = manyEmptyDomain.getRoadWay(); - List<String> roadWays = new ArrayList<>(); - roadWays.add(roadWay); + List<String> roadWays = Arrays.asList(roadWay.split(",")); String value = configService.getKey(QuantityConstant.RULE_ALLOCATION); String height = manyEmptyDomain.getHeight(); if (StringUtils.isEmpty(value)) { diff --git a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java index 9ce7c50..c111d2e 100644 --- a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java @@ -37,10 +37,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -130,8 +127,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { int high = location.getHigh(); String area = location.getArea(); String roadWay = location.getRoadway(); - List<String> roadWays = new ArrayList<>(); - roadWays.add(roadWay); + List<String> roadWays = Arrays.asList(roadWay.split(",")); String containerCode = taskHeader.getContainerCode(); List<TaskDetail> taskDetailList = taskDetailService.findByTaskId(taskHeader.getId()); String materialAreaCode = null; diff --git a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java index 5d5663b..7847d16 100644 --- a/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/warecellAllocation/WarecellAllocationServiceImpl.java @@ -48,9 +48,7 @@ import org.springframework.transaction.annotation.Transactional; import com.huaheng.api.wcs.domain.WcsTask; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service @@ -150,6 +148,30 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService if(taskHeader == null) { return AjaxResult.error("分配库位时,根据任务号没有找到任务"); } + Integer taskType = taskHeader.getTaskType(); + if(taskType.equals(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)||taskType.equals(QuantityConstant.TASK_TYPE_SORTINGSHIPMENT)||taskType.equals(QuantityConstant.TASK_TYPE_VIEW)||taskType.equals(QuantityConstant.TASK_TYPE_CYCLECOUNT)){ + Location location = locationService.getLocationByCode(taskHeader.getFromLocation()); + Integer high = location.getHigh(); + String locationType = location.getLocationType(); + String r=""; + if(roadWay.size()<2){ + r=roadWay.get(0).toString(); + }else { + Map<String,Integer> hashMap = new HashMap(); + for (String way : roadWay) { + LambdaQueryWrapper<Location> locationLambdaQ = Wrappers.lambdaQuery(); + locationLambdaQ.eq(Location::getRoadway,way) + .ne(Location::getContainerCode,"") + .eq(Location::getHigh, high) + .in(Location::getLocationType,locationType) + .eq(Location::getStatus,QuantityConstant.STATUS_LOCATION_EMPTY);; + List<Location> locations = locationService.list(locationLambdaQ); + hashMap.put(way.toString(),locations.size()); + } + r = this.getValueAsc(hashMap); + } + return new AjaxResult().setData(Integer.valueOf(r)).setCode(200); + } if (taskHeader.getStatus() == QuantityConstant.TASK_STATUS_COMPLETED) { return AjaxResult.error("任务已经完成,不能再分库位"); } @@ -423,4 +445,17 @@ public class WarecellAllocationServiceImpl implements WarecellAllocationService return AjaxResult.success(destinationArea); } + public String getValueAsc(Map<String,Integer> map){ + Comparator<Map.Entry<String,Integer>> valueComparator = new Comparator<Map.Entry<String, Integer>>() { + @Override + public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { + return o1.getValue()-o2.getValue(); + } + }; + + List<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet()); + Collections.sort(list,valueComparator); + return list.get(0).getKey(); + } + } \ No newline at end of file diff --git a/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java b/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java index cf60626..57ca06b 100644 --- a/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java +++ b/src/main/java/com/huaheng/pc/config/location/service/LocationServiceImpl.java @@ -442,14 +442,13 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i /** * 根据库位编码查询库位信息 * - * @param code + * @param * @return */ @Override public Location getLocationByCode(String locationCode) { LambdaQueryWrapper<Location> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(Location::getCode, locationCode); - queryWrapper.eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode()); return getOne(queryWrapper); } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java index 95691da..0639823 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java @@ -91,9 +91,9 @@ public class TransferTaskService { if (taskHeaderService.getUncompleteTaskInNear(desLocation) > 0) { return AjaxResult.error("目标库位:" + desLocationCode + "旁边存在任务,请完成任务以后再分配"); } - if(!sourceLocation.getRoadway().equals(desLocation.getRoadway())) { - return AjaxResult.error("目标库位和源库位不在同一个巷道"); - } +// if(!sourceLocation.getRoadway().equals(desLocation.getRoadway())) { +// return AjaxResult.error("目标库位和源库位不在同一个巷道"); +// } if(!sourceLocation.getHigh().equals(desLocation.getHigh())) { return AjaxResult.error("目标库位和源库位高度不一样"); diff --git a/src/main/resources/mybatis/config/LocationMapper.xml b/src/main/resources/mybatis/config/LocationMapper.xml index 8a4fea0..5c833ae 100644 --- a/src/main/resources/mybatis/config/LocationMapper.xml +++ b/src/main/resources/mybatis/config/LocationMapper.xml @@ -174,7 +174,7 @@ <select id="selectModelByHg" resultType="com.huaheng.pc.config.location.domain.Location"> select * from location where locationType='L' and containerCode ='' and status='empty' and roadWay = #{roadWay} and high=#{heght} - order by rowFlag desc,iColumn asc,iLayer asc limit 1 + order by rowFlag desc,iLayer asc,iColumn asc limit 1 </select> @@ -186,7 +186,7 @@ <foreach item="item" index="index" collection="codes" open="(" separator="," close=")"> #{item} </foreach> - order by rowFlag desc,iColumn asc,iLayer asc limit 1 + order by rowFlag desc,iLayer asc,iColumn asc limit 1 </select> </mapper> \ No newline at end of file