rev:修改
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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, "")
|
||||
)
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user