2/13 虚拟槽位bug优化1.0

dev_fifo_z
wangwei 5 months ago
parent edea7945a0
commit 3ec2a73b91

@ -254,5 +254,9 @@ public class SysWorkplaceQueueService extends ServiceImpl<SysWorkplaceQueueMappe
return sortedRespList; return sortedRespList;
} }
public String selectMaxCodeByLayerCode(String layerCode) {
return sysWorkplaceQueueMapper.selectMaxCode(layerCode);
}
} }

@ -26,6 +26,7 @@ import com.glxp.api.service.collect.IoSplitFifoInvRelService;
import com.glxp.api.service.thrsys.SysWorkplacePutRelService; import com.glxp.api.service.thrsys.SysWorkplacePutRelService;
import com.glxp.api.util.IntUtil; import com.glxp.api.util.IntUtil;
import org.apache.xpath.operations.Bool; import org.apache.xpath.operations.Bool;
import org.aspectj.weaver.ast.Var;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -145,6 +146,7 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
.enableRemind(false) .enableRemind(false)
.invRemindCount(0) .invRemindCount(0)
.workPlaceQueueCode(orderEntity.getWorkPlaceQueueCode() == null ? setQueueCode(ioSplitFifoCodeEntity.getWorkPlaceCode(), orderEntity.getCreateUser()) : orderEntity.getWorkPlaceQueueCode()).build(); .workPlaceQueueCode(orderEntity.getWorkPlaceQueueCode() == null ? setQueueCode(ioSplitFifoCodeEntity.getWorkPlaceCode(), orderEntity.getCreateUser()) : orderEntity.getWorkPlaceQueueCode()).build();
// setQueueCode 如果根据槽位上货那就设置orderEntity.getWorkPlaceQueueCode() 如果没有根据槽位上货那就设置一个虚拟槽位
// if (isOnlyInv) { // if (isOnlyInv) {
// splitFifoInv.setBusType(ioSplitFifoCodeEntity.getBusType()); // splitFifoInv.setBusType(ioSplitFifoCodeEntity.getBusType());
// } // }
@ -181,23 +183,19 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
if (queues.size() == 0) { if (queues.size() == 0) {
throw new JsonException(500, "请增加取货槽"); throw new JsonException(500, "请增加取货槽");
} }
// 直接根据 workPlaceCode 增加一个槽位
SysWorkplaceQueue workplaceQueue = queues.get(0); SysWorkplaceQueue workplaceQueue = queues.get(0);
// 使用流来过滤掉匹配的元素 // // 使用流来过滤掉匹配的元素
List<SysWorkplaceQueue> filteredQueues = queues.stream() // List<SysWorkplaceQueue> filteredQueues = queues.stream()
.filter(queue -> { // .filter(queue -> {
IoSplitFifoInv one = getOne( // IoSplitFifoInv one = getOne(
new LambdaQueryWrapper<IoSplitFifoInv>() // new LambdaQueryWrapper<IoSplitFifoInv>()
.eq(IoSplitFifoInv::getWorkPlaceQueueCode, queue.getCode()) // .eq(IoSplitFifoInv::getWorkPlaceQueueCode, queue.getCode())
); // );
return one == null; // 只保留那些没有匹配的槽位 // return one == null; // 只保留那些没有匹配的槽位
}) // })
.sorted((queue1, queue2) -> queue1.getCode().compareTo(queue2.getCode())) // .sorted((queue1, queue2) -> queue1.getCode().compareTo(queue2.getCode()))
.collect(Collectors.toList()); // .collect(Collectors.toList());
if (filteredQueues.size() > 0) {
//还有剩余的槽位 可分配
SysWorkplaceQueue sysWorkplaceQueue = filteredQueues.get(0);
return sysWorkplaceQueue.getCode();
} else {
//增加一个槽位 //增加一个槽位
SysWorkplaceLayer layer = sysWorkplaceLayerService.getOne(new LambdaQueryWrapper<SysWorkplaceLayer>().eq(SysWorkplaceLayer::getCode, workplaceQueue.getLayerCode())); SysWorkplaceLayer layer = sysWorkplaceLayerService.getOne(new LambdaQueryWrapper<SysWorkplaceLayer>().eq(SysWorkplaceLayer::getCode, workplaceQueue.getLayerCode()));
SysWorkplaceLayerRequest sysWorkplaceLayerRequest = new SysWorkplaceLayerRequest(); SysWorkplaceLayerRequest sysWorkplaceLayerRequest = new SysWorkplaceLayerRequest();
@ -206,8 +204,8 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
sysWorkplaceLayerRequest.setWorkPlaceIdFk(workPlaceCode); sysWorkplaceLayerRequest.setWorkPlaceIdFk(workPlaceCode);
sysWorkplaceLayerRequest.setQueueNum(layer.getQueueNum() + 1); sysWorkplaceLayerRequest.setQueueNum(layer.getQueueNum() + 1);
sysWorkplaceLayerService.addSysWorkplaceLayer(sysWorkplaceLayerRequest, Long.valueOf(userId)); sysWorkplaceLayerService.addSysWorkplaceLayer(sysWorkplaceLayerRequest, Long.valueOf(userId));
} String queueCode = sysWorkplaceQueueService.selectMaxCodeByLayerCode(workplaceQueue.getLayerCode());
return setQueueCode(workPlaceCode, userId); return queueCode;
} }
@Resource @Resource

Loading…
Cancel
Save