rev:修改

This commit is contained in:
2026-03-25 17:15:46 +08:00
parent 39e563ce89
commit 576a8ecc32
7 changed files with 78 additions and 77 deletions

View File

@@ -7,10 +7,11 @@
FROM
st_ivt_structattr attr
<where>
1 = 1
attr.is_used = '1'
and attr.is_delete = '0'
<if test="param.sect_id != null and param.sect_id != ''">
AND
attr.sect_id LIKE #{param.sect_id}
attr.sect_id = #{param.sect_id}
</if>
<if test="param.ext_id != null and param.ext_id != ''">
AND

View File

@@ -45,76 +45,21 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
@Resource
private StructattrMapper structattrMapper;
public List<Structattr> handler1(List<Structattr> list, StrategyStructParam param) {
log.info("---------执行middle入库分配规则---------");
List<Structattr> resuList = new ArrayList<>();
Structattr structattr = list.get(0);
List<Structattr> attrList = iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getSect_id, structattr.getSect_id())
.and(row -> row.isNotNull(Structattr::getStoragevehicle_code)
.ne(Structattr::getStoragevehicle_code, "")
)
);
// 查询此托盘对应的库存信息
List<String> vehicleList = attrList.stream()
.map(Structattr::getStoragevehicle_code)
.distinct()
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(vehicleList)) {
// 为空:查询空的一组可用货位
return this.queryAttrGroup(structattr,param.getExt_id());
}
List<MdPbStoragevehicleext> extList = iMdPbStoragevehicleextService.list(
new QueryWrapper<MdPbStoragevehicleext>().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<Structattr>().lambda()
.eq(Structattr::getStoragevehicle_code, extDaoLike.getStoragevehicle_code())
);
resuList = iStructattrService.list(
new QueryWrapper<Structattr>().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<Structattr> handler(List<Structattr> list, StrategyStructParam param) {
log.info("---------执行middle入库分配规则---------");
List<Structattr> resuList = new ArrayList<>();
if (ObjectUtil.isEmpty(list)) {
throw new BadRequestException("中间站仓位不足!");
}
Structattr structattr = list.get(0);
List<Structattr> attrList = iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getSect_id, structattr.getSect_id())
.eq(Structattr::getIs_used, IOSConstant.ONE)
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.and(row -> row.isNotNull(Structattr::getStoragevehicle_code)
.ne(Structattr::getStoragevehicle_code, "")
)
@@ -163,6 +108,8 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
.eq(Structattr::getSect_id, structattr.getSect_id())
.eq(Structattr::getBlock_num, attr.getBlock_num())
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getIs_used, IOSConstant.ONE)
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
.or().eq(Structattr::getStoragevehicle_code, "")
)
@@ -190,12 +137,15 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
// 查询一组未有货组仓位
List<Structattr> groupBlockList = structattrMapper.queryAttrGroup(MapOf.of("sect_id", structattr.getSect_id(),"ext_id",ext_id));
if (ObjectUtil.isEmpty(groupBlockList)) {
throw new BadRequestException("当前仓位不足");
throw new BadRequestException("当前称重台【"+ext_id+"】对应的仓位不足!");
}
// 根据组查询可用仓位
return iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getSect_id, structattr.getSect_id())
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.eq(Structattr::getIs_used, IOSConstant.ONE)
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getBlock_num, groupBlockList.get(0).getBlock_num())
.orderByAsc(Structattr::getStruct_code)
);
@@ -208,6 +158,9 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
List<Structattr> attrList = iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.eq(Structattr::getIs_used, IOSConstant.ONE)
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.and(row -> row.isNotNull(Structattr::getStoragevehicle_code)
.ne(Structattr::getStoragevehicle_code, "")
)
@@ -250,6 +203,8 @@ public class MiddleRuleHandler extends Decisioner<Structattr, StrategyStructPara
.eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
.eq(Structattr::getBlock_num, attrLikeVehicle.getBlock_num())
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.eq(Structattr::getIs_used, IOSConstant.ONE)
.and(row -> row.isNull(Structattr::getStoragevehicle_code)
.or().eq(Structattr::getStoragevehicle_code, "")
)

View File

@@ -78,26 +78,29 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService {
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
JSONObject data = whereJson.getJSONObject("data");
JSONObject request = whereJson.getJSONObject("request");
JSONObject data = request.getJSONObject("data");
String statusType = data.getString("statusType");
if (statusType.equals(IOSConstant.ZERO)) {
// 判断任务号是否一致
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
// 任务号
String taskNo = data.getString("taskNo");
// 到达点位
String locationId = data.getString("locationId");
if (!taskNo.equals(sysParamService.getValue())) {
return NoCarResponse.requestError("任务号与呼叫时不一致!");
}
// 判断到达点位系统参数类型
Param sysParam = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE");
String value = sysParam.getValue();
if (value.equals(IOSConstant.ONE)) {
if (value.equals(IOSConstant.ONE) && locationId.contains(IOSConstant.WRC_POINT02)) {
// 1.下发车间卸货任务
unLoadSend();
} else if (value.equals(IOSConstant.TWO)) {
} else if (value.equals(IOSConstant.TWO) && locationId.contains(IOSConstant.WRC_POINT02)) {
// 2.下发车间装货任务
loading();
}
}
} else {
log.info("无人车到达输出参数:{}", NoCarResponse.requestError("当前任务正在执行中,请稍后在试...").toString());

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.methods.HttpPost;
import org.nl.config.SpringContextHolder;
import org.nl.system.enums.SysParamConstant;
import org.nl.system.service.param.dao.Param;
@@ -53,7 +54,7 @@ public class WmsToNotCarServiceImpl implements WmsToNotCarService {
String url = acsUrlParam.getValue() + "openapi/callback/isGoBack";
try {
String resultMsg = HttpRequest.post(url)
.header("appkey", appKey.getString("appKey"))
.header("appkey", appKey.getString("appkey"))
.header("timestamp", appKey.getString("timestamp"))
.header("sign", appKey.getString("sign"))
.body(String.valueOf(param))
@@ -98,7 +99,7 @@ public class WmsToNotCarServiceImpl implements WmsToNotCarService {
String url = acsUrlParam.getValue() + "openapi/wcs/task";
try {
String resultMsg = HttpRequest.post(url)
.header("appkey", appKey.getString("appKey"))
.header("appkey", appKey.getString("appkey"))
.header("timestamp", appKey.getString("timestamp"))
.header("sign", appKey.getString("sign"))
.body(String.valueOf(param))
@@ -143,7 +144,7 @@ public class WmsToNotCarServiceImpl implements WmsToNotCarService {
String url = acsUrlParam.getValue() + "openapi/task/continueTask";
try {
String resultMsg = HttpRequest.post(url)
.header("appkey", appKey.getString("appKey"))
.header("appkey", appKey.getString("appkey"))
.header("timestamp", appKey.getString("timestamp"))
.header("sign", appKey.getString("sign"))
.body(String.valueOf(param))

View File

@@ -50,6 +50,7 @@ public class NoCarResponse implements Serializable {
response.setMsg("请求成功");
response.setCode(HttpStatus.HTTP_OK);
response.setMessage("请求成功");
response.setSuccess(true);
return response;
}
@@ -59,6 +60,7 @@ public class NoCarResponse implements Serializable {
response.setCode(HttpStatus.HTTP_OK);
response.setMsg(message);
response.setMessage(message);
response.setSuccess(true);
return response;
}
@@ -68,6 +70,7 @@ public class NoCarResponse implements Serializable {
response.setCode(HttpStatus.HTTP_BAD_REQUEST);
response.setMsg(message);
response.setMessage(message);
response.setSuccess(false);
return response;
}

View File

@@ -12,6 +12,7 @@ import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper;
import org.nl.wms.ext.service.WmsToNotCarService;
import org.nl.wms.ext.util.NoCarResponse;
import org.nl.wms.pda.general_management.service.PdaNotCarService;
import org.nl.wms.pda.util.PDAEnum;
import org.nl.wms.pda.util.PdaResponse;
@@ -363,8 +364,15 @@ public class PdaNotCarServiceImpl implements PdaNotCarService {
detail.add(json);
data.put("detail", detail);
param.put("data", data);
// 呼叫无人车
wmsToNotCarService.callNotCat(param);
try {
// 呼叫无人车
NoCarResponse noCarResponse = wmsToNotCarService.callNotCat(param);
if (noCarResponse.getCode() != 200) {
throw new BadRequestException("下发无人车任务失败"+noCarResponse.getMsg());
}
} catch (Exception ignored) {
throw new BadRequestException(ignored.getMessage());
}
}
@Override
@@ -377,7 +385,7 @@ public class PdaNotCarServiceImpl implements PdaNotCarService {
JSONObject data = new JSONObject();
Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK");
data.put("taskNo", sysParamService.getValue());
data.put("isGoback", whereJson.getString("isGoback"));
data.put("isGoback", whereJson.getIntValue("isGoback"));
param.put("data", data);
// 是否有成品配送
wmsToNotCarService.isGoBack(param);

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.collections4.Put;
import org.nl.common.exception.BadRequestException;
@@ -13,6 +14,7 @@ import org.nl.config.IdUtil;
import org.nl.config.SpringContextHolder;
import org.nl.wms.basedata_manage.service.IMdPdGroupbucketService;
import org.nl.wms.basedata_manage.service.ISectattrService;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Sectattr;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.decision_manage.service.decisioner.impl.base.MiddleRuleHandler;
@@ -69,6 +71,8 @@ public class TabletingInTask extends AbstractTask {
private WmsToAcsService wmsToAcsService;
@Resource
private SchBasePointMapper schBasePointMapper;
@Resource
private IStructattrService iStructattrService;
/**
* 桶记录服务
@@ -84,6 +88,21 @@ public class TabletingInTask extends AbstractTask {
if (bucket.size() == 0) {
throw new BadRequestException("该载具未存在组桶信息,请先组桶!");
}
// 查询中间站是否有空位
List<Structattr> attrList = iStructattrService.list(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("中间站库区"))
.eq(Structattr::getIs_delete, IOSConstant.ZERO)
.eq(Structattr::getIs_used, IOSConstant.ONE)
.eq(Structattr::getLock_type, IOSConstant.ZERO)
.and(row -> row.isNull(Structattr::getStoragevehicle_code).or()
.eq(Structattr::getStoragevehicle_code, "")
)
);
if (ObjectUtil.isEmpty(attrList)) {
throw new BadRequestException("中间站仓位不足!");
}
JSONObject jsonObject = bucket.get(0);
List<SchBasePoint> czws = new ArrayList<>();
// 查询中间站是否有相同物料、批次仓位
@@ -94,8 +113,19 @@ public class TabletingInTask extends AbstractTask {
MiddleRuleHandler bean = SpringContextHolder.getBean(MiddleRuleHandler.class);
Structattr attr = bean.isLikeMaterial(jsonObject1);
if (ObjectUtil.isEmpty(attr)) {
// 找一个没任务的称重位
czws = pointService.getCanUsePointByRegion("ZJZ01");
// 判断
boolean czjt01 = attrList.stream()
.anyMatch(row -> row.getExt_id().equals("CZJT01"));
boolean czjt02 = attrList.stream()
.anyMatch(row -> row.getExt_id().equals("CZJT02"));
if (czjt01 && czjt02) {
// 找一个没任务的称重位
czws = pointService.getCanUsePointByRegion("ZJZ01");
} else if (czjt01) {
czws = schBasePointMapper.getCanUsePointByCode("CZJT01");
} else if (czjt02) {
czws = schBasePointMapper.getCanUsePointByCode("CZJT02");
}
} else {
czws = schBasePointMapper.getCanUsePointByCode(attr.getExt_id());
if (czws.size() == 0) {
@@ -104,7 +134,7 @@ public class TabletingInTask extends AbstractTask {
}
if (czws.size() == 0) {
throw new BadRequestException("找不到中间站的称重位!");
throw new BadRequestException("找不到中间站的称重位或正在进行任务!");
}
SchBasePoint point = czws.get(0);
SchBaseTask task = new SchBaseTask();