diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml
index a9d9f9d..c148fa2 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml
@@ -124,6 +124,7 @@
attr.stor_name,
attr.sect_name,
attr.lock_type,
+ attr.block_num,
mater.material_id,
mater.material_code,
mater.material_name,
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml
index ef3c191..8c8894b 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml
@@ -12,6 +12,10 @@
AND
attr.sect_id LIKE #{param.sect_id}
+
+ AND
+ attr.ext_id = #{param.ext_id}
+
GROUP BY
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java
index 6b56174..af62324 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java
@@ -45,6 +45,10 @@ public class StrategyStructParam {
* 载具编码
*/
private String storagevehicle_code;
+ /**
+ * 对应称重平台
+ */
+ private String ext_id;
/**
* 载具明细:混料的话则是数组
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java
index 10c6c7b..143ea8c 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/decisioner/impl/base/MiddleRuleHandler.java
@@ -1,6 +1,7 @@
package org.nl.wms.decision_manage.service.decisioner.impl.base;
import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
@@ -13,6 +14,7 @@ import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper;
import org.nl.wms.basedata_manage.service.dto.StrategyMater;
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
import org.nl.wms.decision_manage.service.decisioner.Decisioner;
+import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.springframework.stereotype.Service;
@@ -20,6 +22,7 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
*
@@ -42,6 +45,67 @@ public class MiddleRuleHandler extends Decisioner handler1(List list, StrategyStructParam param) {
+ log.info("---------执行middle入库分配规则---------");
+ List resuList = new ArrayList<>();
+
+ Structattr structattr = list.get(0);
+ List attrList = iStructattrService.list(
+ new QueryWrapper().lambda()
+ .eq(Structattr::getSect_id, structattr.getSect_id())
+ .and(row -> row.isNotNull(Structattr::getStoragevehicle_code)
+ .ne(Structattr::getStoragevehicle_code, "")
+ )
+ );
+ // 查询此托盘对应的库存信息
+ List vehicleList = attrList.stream()
+ .map(Structattr::getStoragevehicle_code)
+ .distinct()
+ .collect(Collectors.toList());
+
+ if (ObjectUtil.isEmpty(vehicleList)) {
+ // 为空:查询空的一组可用货位
+ return this.queryAttrGroup(structattr,param.getExt_id());
+ }
+
+ List extList = iMdPbStoragevehicleextService.list(
+ new QueryWrapper().lambda()
+ .in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleList)
+ );
+
+ // 不为空:判断是否有相同物料批次的库存
+ StrategyMater strategyMater = param.getStrategyMaters().get(0);
+ MdPbStoragevehicleext extDaoLike = extList.stream()
+ .filter(row -> row.getMaterial_id().equals(strategyMater.getMaterial_id())
+ && row.getPcsn().equals(strategyMater.getPcsn())
+ ).findFirst().orElse(null);
+
+ if (ObjectUtil.isEmpty(extDaoLike)) {
+ // 为空:查询空的一组可用货位
+ return this.queryAttrGroup(structattr,param.getExt_id());
+ }
+ // 不为空查询此组空位
+ Structattr attrLikeVehicle = iStructattrService.getOne(
+ new QueryWrapper().lambda()
+ .eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code())
+ );
+ resuList = iStructattrService.list(
+ new QueryWrapper().lambda()
+ .eq(Structattr::getSect_id, structattr.getSect_id())
+ .eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num())
+ .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
+ .and(row -> row.isNull(Structattr::getStoragevehicle_code)
+ .or().eq(Structattr::getStoragevehicle_code, "")
+ )
+ .orderByAsc(Structattr::getStruct_code)
+ );
+ if (ObjectUtil.isEmpty(resuList)) {
+ return this.queryAttrGroup(structattr, param.getExt_id());
+ }
+ return resuList;
+
+ }
+
@Override
public List handler(List list, StrategyStructParam param) {
log.info("---------执行middle入库分配规则---------");
@@ -63,7 +127,7 @@ public class MiddleRuleHandler extends Decisioner extList = iMdPbStoragevehicleextService.list(
@@ -73,32 +137,44 @@ public class MiddleRuleHandler extends Decisioner extDaoLikeList = extList.stream()
.filter(row -> row.getMaterial_id().equals(strategyMater.getMaterial_id())
&& row.getPcsn().equals(strategyMater.getPcsn())
- ).findFirst().orElse(null);
+ ).collect(Collectors.toList());
- if (ObjectUtil.isEmpty(extDaoLike)) {
+ if (ObjectUtil.isEmpty(extDaoLikeList)) {
// 为空:查询空的一组可用货位
- return this.queryAttrGroup(structattr);
+ return this.queryAttrGroup(structattr,param.getExt_id());
}
- // 不为空查询此组空位
- Structattr attrLikeVehicle = iStructattrService.getOne(
+ // 查询所属仓位
+ List vehicleInfo = extDaoLikeList.stream()
+ .map(MdPbStoragevehicleext::getStoragevehicle_code)
+ .distinct()
+ .collect(Collectors.toList());
+ List attrListInfo = iStructattrService.list(
new QueryWrapper().lambda()
- .eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code())
- );
- resuList = iStructattrService.list(
- new QueryWrapper().lambda()
- .eq(Structattr::getSect_id, structattr.getSect_id())
- .eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num())
- .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
- .and(row -> row.isNull(Structattr::getStoragevehicle_code)
- .or().eq(Structattr::getStoragevehicle_code, "")
- )
- .orderByAsc(Structattr::getStruct_code)
+ .in(Structattr::getStoragevehicle_code, vehicleInfo)
);
+
+ for (Structattr attr : attrListInfo) {
+ // 不为空查询此组空位
+ resuList = iStructattrService.list(
+ new QueryWrapper().lambda()
+ .eq(Structattr::getSect_id, structattr.getSect_id())
+ .eq(Structattr::getBlock_num, attr.getBlock_num())
+ .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
+ .and(row -> row.isNull(Structattr::getStoragevehicle_code)
+ .or().eq(Structattr::getStoragevehicle_code, "")
+ )
+ .orderByAsc(Structattr::getStruct_code)
+ );
+ if (ObjectUtil.isNotEmpty(resuList)) {
+ break;
+ }
+ }
+
if (ObjectUtil.isEmpty(resuList)) {
- return this.queryAttrGroup(structattr);
+ return this.queryAttrGroup(structattr, param.getExt_id());
}
return resuList;
@@ -110,9 +186,9 @@ public class MiddleRuleHandler extends Decisioner
*/
- public List queryAttrGroup(Structattr structattr) {
+ public List queryAttrGroup(Structattr structattr, String ext_id) {
// 查询一组未有货组仓位
- List groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", structattr.getSect_id()));
+ List groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", structattr.getSect_id(),"ext_id",ext_id));
if (ObjectUtil.isEmpty(groupBlockList)) {
throw new BadRequestException("当前组仓位不足!");
}
@@ -125,4 +201,66 @@ public class MiddleRuleHandler extends Decisioner attrList = iStructattrService.list(
+ new QueryWrapper().lambda()
+ .eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
+ .and(row -> row.isNotNull(Structattr::getStoragevehicle_code)
+ .ne(Structattr::getStoragevehicle_code, "")
+ )
+ );
+ // 查询此托盘对应的库存信息
+ List vehicleList = attrList.stream()
+ .map(Structattr::getStoragevehicle_code)
+ .distinct()
+ .collect(Collectors.toList());
+
+ if (ObjectUtil.isEmpty(vehicleList)) {
+ // 为空:
+ return null;
+ }
+
+ List extList = iMdPbStoragevehicleextService.list(
+ new QueryWrapper().lambda()
+ .in(MdPbStoragevehicleext::getStoragevehicle_code, vehicleList)
+ );
+
+ // 不为空:判断是否有相同物料批次的库存
+ MdPbStoragevehicleext extDaoLike = extList.stream()
+ .filter(row -> row.getMaterial_id().equals(material_id)
+ && row.getPcsn().equals(pcsn)
+ ).findFirst().orElse(null);
+
+ if (ObjectUtil.isEmpty(extDaoLike)) {
+ // 为空:
+ return null;
+ }
+
+ // 不为空查询此组空位
+ Structattr attrLikeVehicle = iStructattrService.getOne(
+ new QueryWrapper().lambda()
+ .eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code())
+ );
+
+ List attrListRest = iStructattrService.list(
+ new QueryWrapper().lambda()
+ .eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
+ .eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num())
+ .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
+ .and(row -> row.isNull(Structattr::getStoragevehicle_code)
+ .or().eq(Structattr::getStoragevehicle_code, "")
+ )
+ .orderByAsc(Structattr::getStruct_code)
+ );
+
+ if (ObjectUtil.isEmpty(attrListRest)) {
+ return null;
+ }
+
+ return attrListRest.get(0);
+ }
+
}
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java
index 00e4ad0..03416eb 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java
@@ -25,7 +25,7 @@ public class EXTConstant {
/**
* ACS下发 取放货确认
*/
- public final static String CONFIRM_AGV_ACS_API = "api/wms/confirmAgv";
+ public final static String CONFIRM_AGV_ACS_API = "api/wms/isGetPut";
/**
* ACS下发 获取称重信息
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java
index 6eeb8e6..1f3cbb4 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToAcsService.java
@@ -41,9 +41,8 @@ public interface WmsToAcsService {
/**
* 确认取放货
* @param whereJson {
- * task_type: 1-取货确认 2- 放货确认
- * task_code: 任务号
- * point_code: 点位编码
+ * type: 1-取货完成 2- 放货完成
+ * device_code: 点位编码
* }
* @return AcsResponse
*/
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java
index 633b97f..91a6ccb 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToAcsServiceImpl.java
@@ -41,6 +41,5 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
@Override
public AcsResponse confirmAgv(JSONObject whereJson) {
return AcsUtil.notifyAcs(EXTConstant.CONFIRM_AGV_ACS_API, whereJson);
-
}
}
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java
index 558a76b..2474e9b 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java
@@ -39,6 +39,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.SecondaryPackagingService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
+import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.sch_manage.service.util.tasks.PalletOutTask;
@@ -121,6 +122,8 @@ public class PdaProductionServiceImpl implements PdaProductionService {
private SecondaryPackagingService secondaryPackagingService;
@Resource
private SectMaterialCheck sectMaterialCheck;
+ @Resource
+ private SchBasePointMapper schBasePointMapper;
@Override
public PdaResponse getGroupInfo(JSONObject param) {
// search;
@@ -662,10 +665,13 @@ public class PdaProductionServiceImpl implements PdaProductionService {
JSONObject divObj = defaultPdaBuildParam.buildManuaOutBuckDivData(param, ioStorInvDtlDto);
outBillService.manualDiv(divObj);
}
- // 找一个没任务的称重位
- List czws = pointService.getCanUsePointByRegion("ZJZ01");
+
+ // 根据仓位定位到出到哪个称重位
+ String end_code = structattr.getExt_id();
+ List czws = schBasePointMapper.getCanUsePointByCode(end_code);
+// List czws = pointService.getCanUsePointByRegion("ZJZ01");
if (czws.isEmpty()) {
- throw new BadRequestException("找不到中间站的称重位!");
+ throw new BadRequestException("当前称重位【"+end_code+"】有任务在执行");
}
// 3 创建任务
JSONObject jsonMst = defaultPdaBuildParam.buildOutAllSetData(czws.get(0), invId);
@@ -763,6 +769,7 @@ public class PdaProductionServiceImpl implements PdaProductionService {
String invId = rawAssistIStorService.insertDtl(invObj);
// 2 调用分配
Map divObj = defaultPdaBuildParam.buildDivStructData(param2, sectattr, invId, true);
+ divObj.put("ext_id", startPoint.getPoint_code());
rawAssistIStorService.divStruct(divObj);
// 3 创建任务
Map jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId);
diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java
index 93344cb..94b33ef 100644
--- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java
+++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java
@@ -76,14 +76,14 @@ public class SchBasePointController {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
- @Log("确认取货")
+ @Log("取货完成")
@PostMapping("/getConfirm")
public ResponseEntity