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 8c8894b..d88ee3d 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 @@ -7,10 +7,11 @@ FROM st_ivt_structattr attr - 1 = 1 + attr.is_used = '1' + and attr.is_delete = '0' AND - attr.sect_id LIKE #{param.sect_id} + attr.sect_id = #{param.sect_id} AND 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 143ea8c..da827de 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 @@ -45,76 +45,21 @@ 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入库分配规则---------"); List resuList = new ArrayList<>(); + if (ObjectUtil.isEmpty(list)) { + throw new BadRequestException("中间站仓位不足!"); + } Structattr structattr = list.get(0); List attrList = iStructattrService.list( new QueryWrapper().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 row.isNull(Structattr::getStoragevehicle_code) .or().eq(Structattr::getStoragevehicle_code, "") ) @@ -190,12 +137,15 @@ public class MiddleRuleHandler extends Decisioner 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().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 attrList = iStructattrService.list( new QueryWrapper().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 row.isNull(Structattr::getStoragevehicle_code) .or().eq(Structattr::getStoragevehicle_code, "") ) diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/NotCarToWmsServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/NotCarToWmsServiceImpl.java index efc861e..326389b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/NotCarToWmsServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/NotCarToWmsServiceImpl.java @@ -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()); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToNotCarServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToNotCarServiceImpl.java index 777235b..9574dad 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToNotCarServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToNotCarServiceImpl.java @@ -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)) diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NoCarResponse.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NoCarResponse.java index b2fcc44..056c6f7 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NoCarResponse.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NoCarResponse.java @@ -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; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaNotCarServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaNotCarServiceImpl.java index d7cb9bd..2891c97 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaNotCarServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaNotCarServiceImpl.java @@ -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); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java index 5485654..76c5e03 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java @@ -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 attrList = iStructattrService.list( + new QueryWrapper().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 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();