diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java index d8d70605..7e86e5af 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/chainer/impl/ExecuteDecisionChainer.java @@ -1,27 +1,15 @@ package org.nl.wms.decision_manage.handler.chainer.impl; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.Data; -import org.apache.poi.ss.formula.functions.T; import org.nl.common.domain.exception.BadRequestException; -import org.nl.common.enums.StatusEnum; import org.nl.common.utils.SpringContextHolder; import org.nl.wms.decision_manage.handler.chainer.DecisionerChain; import org.nl.wms.decision_manage.handler.decisioner.Decisioner; -import org.nl.wms.flow_manage.flow.framework.engine.cmd.unify.Command; -import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity; -import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; -import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; -import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; -import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; -import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto; import org.springframework.util.CollectionUtils; -import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /* * @author ZZQ @@ -42,7 +30,7 @@ public class ExecuteDecisionChainer extends DecisionerChain { @Override protected List execute(List transfers) { Map decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class); - List list = new ArrayList(); + List list = transfers; for (String decisionerType : decisionerTypes) { Decisioner decisioner = decisionerMap.get(decisionerType); list = decisioner.handler(transfers, startPatam); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/InventoryRuleHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/InventoryRuleHandler.java new file mode 100644 index 00000000..cf0dd406 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/base/InventoryRuleHandler.java @@ -0,0 +1,96 @@ +package org.nl.wms.decision_manage.handler.decisioner.impl.base; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.enums.StatusEnum; +import org.nl.common.utils.MapOf; +import org.nl.wms.decision_manage.handler.decisioner.Decisioner; +import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; +import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; +import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; +import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.stream.Collectors; + +/* + * @author ZZQ + * @Date 2024/4/6 16:18 + * 入库双叉分配测策略 + */ +@Service("inventory") +public class InventoryRuleHandler extends Decisioner { + + + private static final Map LINK_POINT = MapOf.of("1109", "1110", "1110", "1109"); + + //每个策略的配置信息 + /** + * 出入库明细服务 + */ + @Autowired + private IStIvtStructattrService iStIvtStructattrService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private IStIvtStructattrService stIvtStructattrService; + + /** + * 载具扩展属性服务服务 + */ + + + /** + * 就近放置策略:根据出入库顺序进行判断 + * + * @param list :仓位集合 + * @param param:物料相关信息、出入类型:{ ioType: 出入类型 + * materialId: 物料标识 + * ... + * } + * @return List :仓位集合 + */ + @Override + public List handler(List list, JSONObject param) { + if (CollectionUtils.isEmpty(list)) { + throw new BadRequestException("当前分配策略无可用货位"); + } + String start_point = param.getString("start_point"); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SchBaseTask::getPoint_code1, LINK_POINT.get(start_point)) + .eq(SchBaseTask::getStatus, StatusEnum.FORM_STATUS.code("生成")); + SchBaseTask task = taskService.getOne(lqw); + if (!ObjectUtils.isEmpty(task)) { + String point_code2 = task.getPoint_code2(); + list = getInventory(list, point_code2); + if (!CollectionUtils.isEmpty(list)) { + return list; + } + } + list.sort(Comparator.comparingInt(i -> i.getRow_num() + i.getCol_num() + i.getLayer_num() + i.getBlock_num())); + return list; + } + + + private List getInventory(List list, String point_code2) { + StIvtStructattr structattr = stIvtStructattrService.getOne(new LambdaQueryWrapper().eq(StIvtStructattr::getStruct_code, point_code2).eq(StIvtStructattr::getIs_used, true)); + return Optional.ofNullable(list) + .orElse(new CopyOnWriteArrayList<>()) + .stream() + .filter(stru -> stru.getRow_num().equals(structattr.getRow_num()) && stru.getLayer_num().equals(structattr.getLayer_num())) + .filter(stru -> (stru.getCol_num() / 4 == structattr.getCol_num() / 4) && (((stru.getCol_num() % 4) + (structattr.getCol_num() % 4) == 2) || (stru.getCol_num() % 4) + (structattr.getCol_num() % 4) == 4)) + .collect(Collectors.toList()); + } +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java index 4999b758..d2bc9112 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/DecisionHandler.java @@ -71,6 +71,10 @@ public class DecisionHandler extends TypeHandler map = this.dispense(params, item_json); //更新仓位,更新数据 System.out.println(flow.getForm_type()+"更新明细id"+item_json.getString("id")); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java index ec697193..22165e80 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/io/service/iostor/impl/StIvtIostorinvServiceImpl.java @@ -184,11 +184,10 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl list = iMdPbVehicleMaterService.list(new QueryWrapper() - .select("group_id").in("id", Arrays.asList(vehicles))); iMdPbVehicleMaterService.remove(new QueryWrapper().in("id", Arrays.asList(vehicles))); - List groups = list.stream().map(MdPbVehicleMater::getGroup_id).collect(Collectors.toList()); - iMdGruopDickService.removeByIds(groups); + iMdGruopDickService.remove(new QueryWrapper() + .in("vehicle_code", Arrays.asList(dtl.getVehicle_id().split(","))) + .lt("status", StatusEnum.FORM_STATUS.code("完成"))); iStIvtIostorinvDtlService.update(new UpdateWrapper() .set("update_time", DateUtil.now()) .set("vehicle_code", null) diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzRunnable.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzRunnable.java index 9d2c1cc6..61da5292 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzRunnable.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzRunnable.java @@ -1,21 +1,19 @@ package org.nl.wms.system_manage.service.quartz.utils; import cn.hutool.core.util.StrUtil; -import com.yomahub.tlog.core.thread.TLogInheritableTask; -import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.utils.SpringContextHolder; import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; +import java.util.concurrent.Callable; /** * 执行定时任务 - * * @author / */ @Slf4j -public class QuartzRunnable extends TLogInheritableTask { +public class QuartzRunnable implements Callable { private final Object target; private final Method method; @@ -33,15 +31,14 @@ public class QuartzRunnable extends TLogInheritableTask { } } - - @SneakyThrows @Override - public void runTask() { + public Object call() throws Exception { ReflectionUtils.makeAccessible(method); if (StrUtil.isNotEmpty(params)) { method.invoke(target, params); } else { method.invoke(target); } + return null; } }