diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/PassRCLHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/PassRCLHandler.java new file mode 100644 index 00000000..3e6ce407 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/decision_manage/handler/decisioner/impl/diy/PassRCLHandler.java @@ -0,0 +1,77 @@ +package org.nl.wms.decision_manage.handler.decisioner.impl.diy; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.ListOf; +import org.nl.common.utils.MapOf; +import org.nl.wms.decision_manage.handler.decisioner.Decisioner; +import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; +import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr2; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.*; +import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * 手动过滤XYZ排信息 + * {"y":[1,2,3,104,103,102]} + */ +//@Service("passRCL") +@Slf4j +public class PassRCLHandler extends Decisioner { + //现场1/4排深位 + @Override + public List handler(List list, JSONObject param) { + String configParam = this.strategyConfig.getParam(); + JSONObject jsonP = JSONObject.parseObject(configParam); + List x = jsonP.getObject("x", List.class); + List y = jsonP.getObject("y", List.class); + List z = jsonP.getObject("z", List.class); + Stream stream = list.stream(); + if (!CollectionUtils.isEmpty(x)){ + stream = stream.filter(stIvtStructattr -> !x.contains(stIvtStructattr.getRow_num())); + } + if (!CollectionUtils.isEmpty(y)){ + stream = stream.filter(stIvtStructattr -> !y.contains(stIvtStructattr.getCol_num())); + } + if (!CollectionUtils.isEmpty(z)){ + stream = stream.filter(stIvtStructattr -> !z.contains(stIvtStructattr.getLayer_num())); + } + List collect = stream.collect(Collectors.toList()); + log.info("手动过滤XYZ排信息策略过滤数量:"+(list.size()-collect.size())); + return collect; + } + public static void main(String[] args) { + List list = new ArrayList<>(); + for (int i =0;i<10;i++){ + StIvtStructattr2 structattr = new StIvtStructattr2(); + structattr.setRow_num(new Random().nextInt(2)+1); + structattr.setCol_num(new Random().nextInt(10)+1); + structattr.setLayer_num(new Random().nextInt(2)+1); + list.add(structattr); + } + System.out.println(list); + String configParam = "{\"z\":[2]}"; + JSONObject jsonP = JSONObject.parseObject(configParam); + List x = jsonP.getObject("x", List.class); + List y = jsonP.getObject("y", List.class); + List z = jsonP.getObject("z", List.class); + Stream stream = list.stream(); + if (!CollectionUtils.isEmpty(x)){ + stream = stream.filter(stIvtStructattr -> !x.contains(stIvtStructattr.getRow_num())); + } + if (!CollectionUtils.isEmpty(y)){ + stream = stream.filter(stIvtStructattr -> !y.contains(stIvtStructattr.getCol_num())); + } + if (!CollectionUtils.isEmpty(z)){ + stream = stream.filter(stIvtStructattr -> !z.contains(stIvtStructattr.getLayer_num())); + } + List collect = stream.collect(Collectors.toList()); + System.out.println(collect); + } +} diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StIvtStructattr2.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StIvtStructattr2.java new file mode 100644 index 00000000..6a10c968 --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/struct/service/dao/StIvtStructattr2.java @@ -0,0 +1,48 @@ +package org.nl.wms.stor_manage.struct.service.dao; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 仓位属性表 + *

+ * + * @author generator + * @since 2024-04-08 + */ +@Data +public class StIvtStructattr2 implements Serializable { + + + /** + * 排 + */ + private Integer row_num; + + /** + * 列 + */ + private Integer col_num; + + /** + * 层 + */ + private Integer layer_num; + + @Override + public String toString() { + return "位{" + + "排=" + row_num + + ", 层=" + layer_num + + ", 列=" + col_num + + + '}'; + } +}