From ce2220dc83580a77aa4d0b8f7803765281a49066 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 10 Mar 2026 18:02:24 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A=E6=97=A0=E4=BA=BA=E8=BD=A6?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/mapper/MdMeMaterialbaseMapper.java | 11 + .../dao/mapper/MdMeMaterialbaseMapper.xml | 31 ++ .../ext/controller/NotCarToWmsController.java | 7 - .../ext/controller/WmsToNotCarController.java | 8 +- .../wms/ext/service/NotCarToWmsService.java | 15 - .../wms/ext/service/WmsToNotCarService.java | 10 +- .../service/impl/NotCarToWmsServiceImpl.java | 153 ++++---- .../service/impl/WmsToNotCarServiceImpl.java | 8 +- .../controller/PdaNotCarController.java | 73 ++-- .../service/PdaNotCarService.java | 119 ++++-- .../service/impl/PdaNotCarServiceImpl.java | 360 ++++++++++++------ .../java/org/nl/wms/pda/util/PDAEnum.java | 3 + .../sch_manage/service/dao/SchBasePoint.java | 2 + .../dao/mapper/SchBasePointMapper.java | 7 +- .../service/dao/mapper/SchBasePointMapper.xml | 16 +- .../service/util/tasks/NoCarBackCpTask.java | 35 +- .../service/util/tasks/NoCarInstallTask.java | 218 ----------- .../service/util/tasks/NoCarUnloadTask.java | 90 ++--- .../util/tasks/PdaNotCarUnloadTask.java | 191 ---------- .../enums/IOSConstant.java | 30 ++ 20 files changed, 608 insertions(+), 779 deletions(-) delete mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarInstallTask.java delete mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaNotCarUnloadTask.java diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.java index f860c4e..89147ce 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.pda.util.PdaResponse; import java.util.List; import java.util.Map; @@ -48,4 +49,14 @@ public interface MdMeMaterialbaseMapper extends BaseMapper { * @return List */ List pdaQueryMaterialInfo(@Param("param") JSONObject whereJson); + + /** + * 手持 - 仓库送料 - 查询列表信息(二级页面) + * @param whereJson { + * class_code: 物料类别 + * material_code: 关键字 + * } + * @return List + */ + List pdaMaterialInfo(@Param("param") JSONObject whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.xml index 273a39e..41eeb72 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdMeMaterialbaseMapper.xml @@ -73,4 +73,35 @@ ORDER BY mater.update_time Desc + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/NotCarToWmsController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/NotCarToWmsController.java index e0920a6..9ee96ff 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/NotCarToWmsController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/NotCarToWmsController.java @@ -29,13 +29,6 @@ public class NotCarToWmsController { @Autowired private NotCarToWmsService notCarToWmsService; - @PostMapping("/sendTask") - @Log(value = "无人车给下发WMS搬运任务") - @SaIgnore - public ResponseEntity sendTask(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(notCarToWmsService.sendTask(whereJson), HttpStatus.OK); - } - @PostMapping("/arrive") @Log(value = "无人车到达") @SaIgnore diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/WmsToNotCarController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/WmsToNotCarController.java index aa12045..3f4c9dd 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/WmsToNotCarController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/controller/WmsToNotCarController.java @@ -29,11 +29,11 @@ public class WmsToNotCarController { @Autowired private WmsToNotCarService wmsToNotCarService; - @PostMapping("/resultUnloadTask") - @Log(value = "卸货任务完成反馈") + @PostMapping("/isGoBack") + @Log(value = "是否有成品配送") @SaIgnore - public ResponseEntity resultUnloadTask(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(wmsToNotCarService.resultUnloadTask(whereJson), HttpStatus.OK); + public ResponseEntity isGoBack(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(wmsToNotCarService.isGoBack(whereJson), HttpStatus.OK); } @PostMapping("/callNotCat") diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/NotCarToWmsService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/NotCarToWmsService.java index bc1fdf1..0e4813a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/NotCarToWmsService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/NotCarToWmsService.java @@ -13,21 +13,6 @@ import org.nl.wms.ext.util.NoCarResponse; */ public interface NotCarToWmsService { - /** - * 无人车给下发WMS搬运任务 - * - * @param whereJson { - * "id": “111” 唯一标识id - * "item": [ - * { - * "point_code": "WRCCB01" 卸货点位 - * } - * ] - * } - * @return NoCarResponse - */ - NoCarResponse sendTask(JSONObject whereJson); - /** * 无人车到达 * diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToNotCarService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToNotCarService.java index 7d0d96e..1837571 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToNotCarService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToNotCarService.java @@ -14,20 +14,20 @@ import org.nl.wms.ext.util.NoCarResponse; public interface WmsToNotCarService { /** - * 卸货任务完成反馈 + * 是否有成品配送 * * @param whereJson { * "requestType": "WCS_118", * "accessId": "1", * "requestId": "唯一标识", * "data": { - * "id":”111“ - * "to_command":"1" + * "taskNo":”111“ + * "isGoback":"1" 0-有 1-没有 * } * } * @return BaseResponse */ - NoCarResponse resultUnloadTask(JSONObject whereJson); + NoCarResponse isGoBack(JSONObject whereJson); /** * 呼叫无人车 @@ -40,7 +40,7 @@ public interface WmsToNotCarService { * "detail": [ * { * "taskNo": "TASK00000001", 唯一标识 - * "taskType": "MV", 任务类型(固定) + * "taskType": "MMV", 任务类型(固定) * "taskDate": "2023-03-13 12:00:00", 任务时间 * "taskState": "00", 任务状态 00:创建 * "priority": "1", 优先级 - 1-最高,2-普通+,3-普通,4-普通-,5-最低 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 cc413e0..efc861e 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 @@ -1,24 +1,27 @@ package org.nl.wms.ext.service.impl; -import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.config.IdUtil; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.ext.service.NotCarToWmsService; import org.nl.wms.ext.util.NoCarResponse; -import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.pda.general_management.service.PdaNotCarService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; -import org.nl.wms.sch_manage.service.util.tasks.NoCarUnloadTask; +import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; +import org.nl.wms.sch_manage.service.util.tasks.NoCarBackCpTask; import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @@ -43,16 +46,22 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService { private RedissonClient redissonClient; /** - * 点位服务 + * 点位mapper */ @Resource - private ISchBasePointService iSchBasePointService; + private SchBasePointMapper schBasePointMapper; /** - * 无人车卸货任务类 + * 无人车手持服务类 */ @Resource - private NoCarUnloadTask noCarUnloadTask; + private PdaNotCarService pdaNotCarService; + + /** + * 无人车装货任务类 + */ + @Resource + private NoCarBackCpTask noCarBackCpTask; /** * 系统参数服务 @@ -61,67 +70,7 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService { private ISysParamService iSysParamService; @Override - @SneakyThrows - public NoCarResponse sendTask(JSONObject whereJson) { - log.info("无人车下发搬运任务输入参数:{}", whereJson); - RLock lock = redissonClient.getLock("lock:sendTask"); - boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); - try { - if (tryLock) { - String id = whereJson.getString("id"); - List itemList = whereJson.getJSONArray("item").toJavaList(JSONObject.class); - // 数据校验 - if (ObjectUtil.isEmpty(id)) { - log.info("无人车下发搬运任务输出参数:{}", NoCarResponse.requestError("唯一标识不能为空!").toString()); - return NoCarResponse.requestError("唯一标识不能为空!"); - } - if (ObjectUtil.isEmpty(itemList)) { - log.info("无人车下发搬运任务输出参数:{}", NoCarResponse.requestError("卸货点位不能为空!").toString()); - return NoCarResponse.requestError("卸货点位不能为空!"); - } - // 查询【无人车卸货缓存区】是否有空位 - List pointList = iSchBasePointService.list( - new QueryWrapper().lambda() - .eq(SchBasePoint::getRegion_code, IOSEnum.SECT_CODE.code("无人车卸货缓存1区")) - .eq(SchBasePoint::getPoint_status, IOSConstant.ONE) - .eq(SchBasePoint::getIs_used, IOSConstant.ONE) - .and(row -> row.isNull(SchBasePoint::getIng_task_code) - .or().eq(SchBasePoint::getIng_task_code, "") - ) - ); - if (ObjectUtil.isEmpty(pointList)) { - log.info("无人车下发搬运任务输出参数:{}", NoCarResponse.requestError("当前卸货缓存点位没有空位!").toString()); - return NoCarResponse.requestError("当前卸货缓存点位没有空位!"); - } - if (itemList.size() > pointList.size()) { - log.info("无人车下发搬运任务输出参数:{}", NoCarResponse.requestError("当前卸货缓存点位空位不够用!当前可用点位为【" + pointList.size() + "】").toString()); - return NoCarResponse.requestError("当前卸货缓存点位空位不够用!当前可用点位为【" + pointList.size() + "】"); - } - - for (int i = 0; i < itemList.size(); i++) { - JSONObject json = itemList.get(i); - SchBasePoint schBasePoint = pointList.get(i); - // 准备任务参数 - JSONObject jsonTask = new JSONObject(); - jsonTask.put("point_code1", json.getString("point_code")); - jsonTask.put("point_code2", schBasePoint.getPoint_code()); - jsonTask.put("contact_task", id); - noCarUnloadTask.create(jsonTask); - } - } else { - log.info("无人车下发搬运任务输出参数:{}", NoCarResponse.requestError("当前任务正在执行中,请稍后在试...").toString()); - return NoCarResponse.requestError("当前任务正在执行中,请稍后在试..."); - } - } finally { - if (tryLock) { - lock.unlock(); - } - } - log.info("无人车下发搬运任务输出参数:{}", NoCarResponse.responseOk().toString()); - return NoCarResponse.responseOk(); - } - - @Override + @Transactional @SneakyThrows public NoCarResponse arrive(JSONObject whereJson) { log.info("无人车到达输入参数:{}", whereJson); @@ -138,11 +87,18 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService { if (!taskNo.equals(sysParamService.getValue())) { return NoCarResponse.requestError("任务号与呼叫时不一致!"); } - // 更新值为1 - sysParamService.setRemark(IOSConstant.ONE); - iSysParamService.updateById(sysParamService); + // 判断到达点位系统参数类型 + Param sysParam = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE"); + String value = sysParam.getValue(); + if (value.equals(IOSConstant.ONE)) { + // 1.下发车间卸货任务 + unLoadSend(); + } else if (value.equals(IOSConstant.TWO)) { + // 2.下发车间装货任务 + loading(); + } + } - // 前往点位 } else { log.info("无人车到达输出参数:{}", NoCarResponse.requestError("当前任务正在执行中,请稍后在试...").toString()); return NoCarResponse.requestError("当前任务正在执行中,请稍后在试..."); @@ -155,4 +111,57 @@ public class NotCarToWmsServiceImpl implements NotCarToWmsService { log.info("无人车到达输出参数:{}", NoCarResponse.responseOk().toString()); return NoCarResponse.responseOk(); } + + /** + * 创建卸货任务 + */ + private void unLoadSend() { + // 查询 无人车有货点位 + List rows = schBasePointMapper.queryNotCarPoint(); + JSONObject param = new JSONObject(); + param.put("rows", rows); + // 调用手持卸货 + pdaNotCarService.unload(param); + } + + /** + * 创建装货任务 + */ + private void loading() { + // 查询成品库存 + List pointIvtList = schBasePointMapper.selectList( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, "CPQ01") + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + .eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) + .orderByDesc(SchBasePoint::getOut_order_seq) + .last("LIMIT 3") + ); + // 查询无人车点位 + List pointList = schBasePointMapper.selectList( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, IOSConstant.WRC01) + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + .eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) + ); + + if (pointList.size() < pointIvtList.size()) { + throw new BadRequestException("无人车空位异常!当前需求空位【" + pointIvtList.size() + "】"); + } + + String task_group_id = IdUtil.getStringId(); + for (int i = 0; i < pointIvtList.size(); i++) { + SchBasePoint jsonIvt = pointIvtList.get(i); + SchBasePoint pointDao = pointList.get(i); + + JSONObject jsonTask = new JSONObject(); + jsonTask.put("point_code1", jsonIvt.getPoint_code()); + jsonTask.put("point_code2", pointDao.getPoint_code()); + jsonTask.put("task_group_id", task_group_id); + jsonTask.put("material_id", jsonIvt.getMaterial_id()); + jsonTask.put("material_qty", jsonIvt.getMaterial_qty()); + noCarBackCpTask.create(jsonTask); + } + + } } 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 555bd58..4bccfcd 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 @@ -26,8 +26,8 @@ import org.springframework.stereotype.Service; public class WmsToNotCarServiceImpl implements WmsToNotCarService { @Override - public NoCarResponse resultUnloadTask(JSONObject param) { - log.info("下发无人车接口resultUnloadTask的输入参数为:-------------------" + param.toString()); + public NoCarResponse isGoBack(JSONObject param) { + log.info("下发无人车接口isGoBack的输入参数为:-------------------" + param.toString()); // 返回参数 NoCarResponse resultCar; @@ -48,7 +48,7 @@ public class WmsToNotCarServiceImpl implements WmsToNotCarService { return NoCarResponse.requestError("系统参数表中:" + SysParamConstant.CAR_URL + "不存在"); } - String url = acsUrlParam.getValue() + "openapi/callback/externalTaskCallback"; + String url = acsUrlParam.getValue() + "openapi/callback/isGoBack"; try { String resultMsg = HttpRequest.post(url) .body(String.valueOf(param)) @@ -56,7 +56,7 @@ public class WmsToNotCarServiceImpl implements WmsToNotCarService { // 格式转换 JSONObject result = JSONObject.parseObject(resultMsg); resultCar = JSONObject.toJavaObject(result, NoCarResponse.class); - log.info("下发无人车接口resultUnloadTask的输出参数为:-------------------" + resultMsg); + log.info("下发无人车接口isGoBack的输出参数为:-------------------" + resultMsg); } catch (Exception e) { //网络不通 String msg = e.getMessage(); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaNotCarController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaNotCarController.java index ef1a497..ad00aad 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaNotCarController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaNotCarController.java @@ -32,25 +32,11 @@ public class PdaNotCarController { @Autowired private PdaNotCarService notCarService; - @PostMapping("/queryXhRegion") - @Log("无人车卸货 - 查询卸货区下拉框") + @PostMapping("/queryNotCarPoint") + @Log("无人车卸货 - 查询无人车点位信息") @SaIgnore - public ResponseEntity queryXhRegion() { - return new ResponseEntity<>(notCarService.queryXhRegion(), HttpStatus.OK); - } - - @PostMapping("/queryEndRegion") - @Log("无人车卸货 - 查询目的区域下拉框") - @SaIgnore - public ResponseEntity queryEndRegion() { - return new ResponseEntity<>(notCarService.queryEndRegion(), HttpStatus.OK); - } - - @PostMapping("/queryRegionPoint") - @Log("无人车卸货 - 查询区域点位信息") - @SaIgnore - public ResponseEntity queryRegionPoint(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(notCarService.queryRegionPoint(whereJson), HttpStatus.OK); + public ResponseEntity queryNotCarPoint() { + return new ResponseEntity<>(notCarService.queryNotCarPoint(), HttpStatus.OK); } @PostMapping("/unload") @@ -60,13 +46,6 @@ public class PdaNotCarController { return new ResponseEntity<>(notCarService.unload(whereJson), HttpStatus.OK); } - @PostMapping("/waiting") - @Log("无人车卸货 - 等待") - @SaIgnore - public ResponseEntity waiting(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(notCarService.waiting(whereJson), HttpStatus.OK); - } - @PostMapping("/back") @Log("无人车卸货 - 回库") @SaIgnore @@ -74,15 +53,8 @@ public class PdaNotCarController { return new ResponseEntity<>(notCarService.back(whereJson), HttpStatus.OK); } - @PostMapping("/queryZhRegion") - @Log("无人车装货 - 查询装货区下拉框") - @SaIgnore - public ResponseEntity queryZhRegion() { - return new ResponseEntity<>(notCarService.queryZhRegion(), HttpStatus.OK); - } - @PostMapping("/queryZhPoint") - @Log("无人车装货 - 查询装货区下的点位") + @Log("无人车装货 - 二级页面查询(物料维护)") @SaIgnore public ResponseEntity queryZhPoint(JSONObject whereJson) { return new ResponseEntity<>(notCarService.queryZhPoint(whereJson), HttpStatus.OK); @@ -109,5 +81,40 @@ public class PdaNotCarController { return new ResponseEntity<>(notCarService.installConfirm(), HttpStatus.OK); } + @PostMapping("/queryCarPoint") + @Log("仓库送料 - 查询无人车点位下拉框(二级页面)") + @SaIgnore + public ResponseEntity queryCarPoint() { + return new ResponseEntity<>(notCarService.queryCarPoint(), HttpStatus.OK); + } + + @PostMapping("/queryClassType") + @Log("仓库送料 - 查询物料类别下拉框(二级页面)") + @SaIgnore + public ResponseEntity queryClassType() { + return new ResponseEntity<>(notCarService.queryClassType(), HttpStatus.OK); + } + + @PostMapping("/queryMaterialInfo") + @Log("仓库送料 - 查询列表信息(二级页面)") + @SaIgnore + public ResponseEntity queryMaterialInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(notCarService.queryMaterialInfo(whereJson), HttpStatus.OK); + } + + @PostMapping("/callCarIos") + @Log("仓库送料 - 呼叫无人车") + @SaIgnore + public ResponseEntity callCarIos(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(notCarService.callCarIos(whereJson), HttpStatus.OK); + } + + @PostMapping("/sendTask") + @Log("仓库送料 - 确认送料") + @SaIgnore + public ResponseEntity sendTask(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(notCarService.sendTask(whereJson), HttpStatus.OK); + } + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaNotCarService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaNotCarService.java index 30e0cd2..defc123 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaNotCarService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaNotCarService.java @@ -14,28 +14,11 @@ import org.nl.wms.pda.util.PdaResponse; public interface PdaNotCarService { /** - * 无人车卸货 - 查询卸货区下拉框 + * 无人车卸货 - 查询无人车点位信息 * * @return PdaResponse */ - PdaResponse queryXhRegion(); - - /** - * 无人车卸货 - 查询目的区域下拉框 - * - * @return PdaResponse - */ - PdaResponse queryEndRegion(); - - /** - * 无人车卸货 - 查询区域点位信息 - * - * @param whereJson { - * region_code: 区域编码 - * } - * @return PdaResponse - */ - PdaResponse queryRegionPoint(JSONObject whereJson); + PdaResponse queryNotCarPoint(); /** * 无人车卸货 - 卸货 @@ -48,16 +31,6 @@ public interface PdaNotCarService { */ PdaResponse unload(JSONObject whereJson); - /** - * 无人车卸货 - 等待 - * - * @param whereJson { - *

- * } - * @return PdaResponse - */ - PdaResponse waiting(JSONObject whereJson); - /** * 无人车卸货 - 回库 * @@ -68,44 +41,110 @@ public interface PdaNotCarService { */ PdaResponse back(JSONObject whereJson); - /** - * 无人车装货 - 查询装货区下拉框 - * @return PdaResponse - */ - PdaResponse queryZhRegion(); - /** * 无人车装货 - 查询装货区下的点位 + * * @param whereJson { - * region_code: 区域编码 - * } + * point_code: 货位编码 + * } * @return PdaResponse */ PdaResponse queryZhPoint(JSONObject whereJson); /** * 无人车装货 - 呼叫无人车 + * * @param whereJson { - * region_code: 区域编码 * rows: [明细] - * } + * } * @return PdaResponse */ PdaResponse callCar(JSONObject whereJson); /** * 无人车装货 - 装货 + * * @param whereJson { * region_code: 区域编码 * rows: [明细] - * } + * } * @return PdaResponse */ PdaResponse install(JSONObject whereJson); /** * 无人车装货 - 装货完成 + * * @return PdaResponse */ PdaResponse installConfirm(); + + /** + * 查询无人车点位下拉框(二级页面) + * + * @return PdaResponse + */ + PdaResponse queryCarPoint(); + + /** + * 查询物料类别下拉框(二级页面) + * + * @return PdaResponse + */ + PdaResponse queryClassType(); + + /** + * 查询列表信息(二级页面) + * + * @param whereJson { + * class_code: 物料类别 + * material_code: 关键字 + * } + * @return PdaResponse + */ + PdaResponse queryMaterialInfo(JSONObject whereJson); + + /** + * 仓库送料 - 呼叫无人车 + * + * @param whereJson { + *

+ * } + * @return PdaResponse + */ + PdaResponse callCarIos(JSONObject whereJson); + + /** + * 仓库送料 - 确认送料 + * + * @param whereJson { + * rows: 列表明细 + * } + * @return PdaResponse + */ + PdaResponse sendTask(JSONObject whereJson); + + /** + * 公共 - 呼叫无人车 + * + * @param whereJson { + * point_code: 无人车对接点 + * } + */ + void publicCallCar(JSONObject whereJson); + + /** + * 公共 - 是否有成品配送 + * + * @param whereJson { + * isGoback: 0-有成品 1-无成品 + * } + */ + void publicIsGoBack(JSONObject whereJson); + + /** + * 公共 - 装货任务完成 + */ + void publicLoadingConfirm(); + } 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 b262c1a..52ce818 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 @@ -1,24 +1,24 @@ package org.nl.wms.pda.general_management.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.config.IdUtil; import org.nl.config.SpringContextHolder; -import org.nl.system.enums.SysParamConstant; import org.nl.system.service.param.ISysParamService; 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.pda.general_management.service.PdaNotCarService; +import org.nl.wms.pda.util.PDAEnum; import org.nl.wms.pda.util.PdaResponse; -import org.nl.wms.sch_manage.service.ISchBaseRegionService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; -import org.nl.wms.sch_manage.service.dao.SchBaseRegion; import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; -import org.nl.wms.sch_manage.service.util.tasks.NoCarInstallTask; -import org.nl.wms.sch_manage.service.util.tasks.PdaNotCarUnloadTask; +import org.nl.wms.sch_manage.service.util.tasks.NoCarBackCpTask; +import org.nl.wms.sch_manage.service.util.tasks.NoCarUnloadTask; import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; import org.springframework.stereotype.Service; @@ -26,7 +26,10 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** *

@@ -40,10 +43,10 @@ import java.util.List; public class PdaNotCarServiceImpl implements PdaNotCarService { /** - * 区域服务 + * 无人车装货任务类 */ @Resource - private ISchBaseRegionService iSchBaseRegionService; + private NoCarBackCpTask noCarBackCpTask; /** * 点位mapper @@ -55,7 +58,7 @@ public class PdaNotCarServiceImpl implements PdaNotCarService { * 无人车卸货任务类 */ @Resource - private PdaNotCarUnloadTask pdaNotCarUnloadTask; + private NoCarUnloadTask noCarUnloadTask; /** * wms调用无人车系统服务 @@ -70,87 +73,245 @@ public class PdaNotCarServiceImpl implements PdaNotCarService { private ISysParamService iSysParamService; /** - * 无人车装货任务服务 + * 物料信息mapper */ @Resource - private NoCarInstallTask noCarInstallTask; + private MdMeMaterialbaseMapper mdMeMaterialbaseMapper; @Override - public PdaResponse queryXhRegion() { - List list = iSchBaseRegionService.list( - new QueryWrapper().lambda() - .in(SchBaseRegion::getRegion_code, IOSEnum.REGION_CODE.code("无人车对接区(拆包)"), - IOSEnum.REGION_CODE.code("无人车对接区(成品)") - ) - ); - - return PdaResponse.requestParamOk(list); - } - - @Override - public PdaResponse queryEndRegion() { - List list = iSchBaseRegionService.list( - new QueryWrapper().lambda() - .in(SchBaseRegion::getRegion_code, IOSEnum.REGION_CODE.code("无人车卸货缓存区")) - ); - - return PdaResponse.requestParamOk(list); - } - - @Override - public PdaResponse queryRegionPoint(JSONObject whereJson) { - return PdaResponse.requestParamOk(schBasePointMapper.queryRegionPoint(whereJson)); + public PdaResponse queryNotCarPoint() { + return PdaResponse.requestParamOk(schBasePointMapper.queryNotCarPoint()); } @Override @Transactional public PdaResponse unload(JSONObject whereJson) { List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); - // 查询可用点位 - List pointList = divPoint(rows.size(), whereJson.getString("region_code")); + + String task_group_id = IdUtil.getStringId(); for (int i = 0; i < rows.size(); i++) { JSONObject json = rows.get(i); JSONObject jsonTask = new JSONObject(); jsonTask.put("point_code1", json.getString("point_code")); - jsonTask.put("point_code2", pointList.get(i).getPoint_code()); - jsonTask.put("material_id", json.getString("class_code")); - pdaNotCarUnloadTask.create(jsonTask); + // 根据物料类型查询目的点位 + List pointList = new ArrayList<>(); + if (json.getString("class_code").equals(IOSConstant.WBC001)) { + // 查询存放外包材区域 + pointList = schBasePointMapper.getNoTaskPointByRegionAndType(IOSConstant.AGVDJ01, IOSConstant.ONE, IOSConstant.ONE); + } else { + // 查询无人车卸货缓存区域 + pointList = schBasePointMapper.getNoTaskPointByRegionAndType(IOSConstant.WXHHC01, IOSConstant.ONE, IOSConstant.ONE); + } + if (ObjectUtil.isEmpty(pointList)) { + throw new BadRequestException("卸货点位无空位可用!"); + } + // 按照入库顺序进行排序 + pointList = pointList.stream() + .sorted(Comparator.comparing(SchBasePoint::getIn_order_seq)) + .collect(Collectors.toList()); + + jsonTask.put("point_code2", pointList.get(0).getPoint_code()); + jsonTask.put("material_id", json.getString("material_id")); + jsonTask.put("material_qty", json.getString("material_qty")); + jsonTask.put("task_group_id", task_group_id); + noCarUnloadTask.create(jsonTask); } return PdaResponse.requestOk(); } - @Override - @Transactional - public PdaResponse waiting(JSONObject whereJson) { - return PdaResponse.requestOk(); - } - @Override @Transactional public PdaResponse back(JSONObject whereJson) { + JSONObject param = new JSONObject(); + param.put("isGoback", IOSConstant.ONE); + this.publicIsGoBack(param); return PdaResponse.requestOk(); } - @Override - public PdaResponse queryZhRegion() { - return null; - } - @Override public PdaResponse queryZhPoint(JSONObject whereJson) { - // 查询此区域下的空位 - List pointList = schBasePointMapper.selectList( - new QueryWrapper().lambda() - .eq(SchBasePoint::getRegion_code, whereJson.getString("region_code")) - .eq(SchBasePoint::getIs_used, IOSConstant.ONE) - .eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) - ); + List pointList = schBasePointMapper.getNoTaskPointByRegionAndType("CPQ01", IOSConstant.ONE, IOSConstant.TWO); + if (ObjectUtil.isNotEmpty(whereJson.getString("point_code"))) { + pointList = pointList.stream() + .filter(row -> row.getPoint_code().equals(whereJson.getString("point_code"))) + .collect(Collectors.toList()); + } + pointList = pointList.stream() + .sorted(Comparator.comparing(SchBasePoint::getOut_order_seq)) + .collect(Collectors.toList()); return PdaResponse.requestParamOk(pointList); } @Override @Transactional public PdaResponse callCar(JSONObject whereJson) { + whereJson.put("point_code", IOSConstant.WRC_POINT02); + this.publicCallCar(whereJson); + // 更新到达点位系统参数 + Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE"); + sysParamService.setValue(IOSConstant.ZERO); + iSysParamService.updateById(sysParamService); + return PdaResponse.requestOk(); + } + + @Override + @Transactional + public PdaResponse install(JSONObject whereJson) { + // 查询成品库存 + List pointIvtList = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); + if (pointIvtList.size() > 3) { + throw new BadRequestException("不能超过3条任务!"); + } + // 查询无人车点位 + List pointList = schBasePointMapper.selectList( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, IOSConstant.WRC01) + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + .eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) + ); + + if (pointList.size() < pointIvtList.size()) { + throw new BadRequestException("无人车空位异常!当前需求空位【" + pointIvtList.size() + "】"); + } + + // 任务组id + String task_group_id = IdUtil.getStringId(); + for (int i = 0; i < pointIvtList.size(); i++) { + JSONObject jsonIvt = pointIvtList.get(i); + SchBasePoint pointDao = pointList.get(i); + + JSONObject jsonTask = new JSONObject(); + jsonTask.put("point_code1", jsonIvt.getString("point_code")); + jsonTask.put("point_code2", pointDao.getPoint_code()); + jsonTask.put("task_group_id", task_group_id); + jsonTask.put("material_id", jsonIvt.getString("material_id")); + jsonTask.put("material_qty", jsonIvt.getString("material_qty")); + noCarBackCpTask.create(jsonTask); + } + return PdaResponse.requestOk(); + } + + @Override + public PdaResponse installConfirm() { + this.publicLoadingConfirm(); + return PdaResponse.requestOk(); + } + + @Override + public PdaResponse queryCarPoint() { + List pointList = schBasePointMapper.selectList( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, IOSConstant.WRC01) + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + ); + List resultList = new ArrayList<>(); + pointList.forEach(item -> { + JSONObject json = new JSONObject(); + json.put("text", item.getPoint_code()); + json.put("value", item.getPoint_code()); + resultList.add(json); + }); + return PdaResponse.requestParamOk(resultList); + } + + @Override + public PdaResponse queryClassType() { + return PdaResponse.requestParamOk(PDAEnum.CLASS_TYPE.getDict()); + } + + @Override + public PdaResponse queryMaterialInfo(JSONObject whereJson) { + return PdaResponse.requestParamOk(mdMeMaterialbaseMapper.pdaMaterialInfo(whereJson)); + } + + @Override + @Transactional + public PdaResponse callCarIos(JSONObject whereJson) { + whereJson.put("point_code", IOSConstant.WRC_POINT01); + this.publicCallCar(whereJson); + // 更新到达点位系统参数 + Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE"); + sysParamService.setValue(IOSConstant.ZERO); + iSysParamService.updateById(sysParamService); + return PdaResponse.requestOk(); + } + + @Override + @Transactional + public PdaResponse sendTask(JSONObject whereJson) { + List pointList = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); + // ---------------校验组盘--------------- + // 根据点位分组 + Map> pointMapList = pointList.stream() + .collect(Collectors.groupingBy(obj -> obj.getString("point_code"))); + // 外包位 + int wbClass = 0; + // 无人车卸货缓存 + int materialClass = 0; + + // 只有其他类型的物料可以有多条数据 + String flag = "YL001,FL001,WBC001,NBC001"; + for (String point : pointMapList.keySet()) { + List list = pointMapList.get(point); + // 查询点位信息 + SchBasePoint schBasePoint = schBasePointMapper.selectById(point); + schBasePoint.setPoint_status(IOSEnum.POINT_STATUS.code("有箱有料")); + schBasePoint.setMaterial_id(list.get(0).getString("material_id")); + + boolean is_class = list.stream() + .anyMatch(row -> flag.contains(row.getString("class_code"))); + if (is_class) { + // 不是其他类型物料类型:判断是否是一种相同物料 + boolean is_like = list.stream() + .allMatch(row -> row.getString("material_code").equals(list.get(0).getString("material_code"))); + if (!is_like) { + // 不相同:报错 + throw new BadRequestException("当前点位【" + point + "】存在不相同物料,请处理!"); + } + schBasePoint.setMaterial_qty(list.get(0).getString("qty")); + // 更新需要用到的货位数量 + if (list.get(0).getString("class_code").equals(IOSConstant.WBC001)) { + wbClass += 1; + } else { + materialClass += 1; + } + } else { + // 其他类型物料 - 合计数量 + double qty = list.stream() + .map(row -> row.getDoubleValue("qty")) + .reduce(Double::sum).orElse(0.0); + schBasePoint.setMaterial_qty(String.valueOf(qty)); + // 更新需要用到的货位数量 + materialClass = +1; + } + // 更新点位信息 + schBasePointMapper.updateById(schBasePoint); + } + // ---------------校验车间空位--------------- + if (wbClass > 0) { + // 查询外包材空位 + List wbPointList = schBasePointMapper.getNoTaskPointByRegionAndType(IOSConstant.WBC001, IOSConstant.ONE, IOSConstant.ONE); + if (wbClass > wbPointList.size()) { + throw new BadRequestException("存放外包材空位不足,当前需要空位【" + wbClass + "】当前已有空位【" + wbPointList.size() + "】"); + } + } + if (materialClass > 0) { + List xhPointList = schBasePointMapper.getNoTaskPointByRegionAndType(IOSConstant.WXHHC01, IOSConstant.ONE, IOSConstant.ONE); + if (materialClass > xhPointList.size()) { + throw new BadRequestException("卸货缓存区空位不足,当前需要空位【" + materialClass + "】当前已有空位【" + xhPointList.size() + "】"); + } + } + // ---------------下发无人车装货完成反馈--------------- + this.publicLoadingConfirm(); + // 更新已到达点位系统参数:1-下发车间卸货任务 + Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE"); + sysParamService.setValue(IOSConstant.ONE); + iSysParamService.updateById(sysParamService); + return PdaResponse.requestOk(); + } + + @Override + public void publicCallCar(JSONObject whereJson) { // 根据区域找对应的无人车对接点 String taskNo = IdUtil.getStringId(); // 将任务号存在系统中 @@ -167,83 +328,48 @@ public class PdaNotCarServiceImpl implements PdaNotCarService { List detail = new ArrayList<>(); JSONObject json = new JSONObject(); json.put("taskNo", taskNo); - json.put("taskType", "MV"); + json.put("taskType", "MMV"); json.put("taskDate", DateUtil.now()); json.put("taskState", "00"); json.put("priority", IOSConstant.ONE); - json.put("wareCode", "W02"); + json.put("wareCode", "W01"); // 目标点位 - json.put("toLoc", ""); - // 地图 - json.put("udf02", ""); + json.put("toLoc", whereJson.getString("point_code")); detail.add(json); data.put("detail", detail); param.put("data", data); // 呼叫无人车 wmsToNotCarService.callNotCat(param); - return PdaResponse.requestOk(); } @Override - @Transactional - public PdaResponse install(JSONObject whereJson) { - // 判断无人车是否到位 + public void publicIsGoBack(JSONObject whereJson) { + JSONObject param = new JSONObject(); + param.put("requestType", "WCS_118"); + param.put("accessId", IOSConstant.ONE); + param.put("requestId", IdUtil.getStringId()); + + JSONObject data = new JSONObject(); Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK"); - if (!sysParamService.getRemark().equals(IOSConstant.ONE)) { - throw new BadRequestException("无人车未到位!"); - } - // 查询无人车上的点位 - // 创建装货任务 - List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); - if (rows.size() > 2) { - throw new BadRequestException("选择物料不能大于2条!"); - } - for (int i = 0; i < rows.size(); i++) { - JSONObject json = rows.get(i); - JSONObject task = new JSONObject(); - task.put("point_code1", json.getString("point_code")); - task.put("point_code2", ""); - task.put("contact_task", sysParamService.getValue()); - noCarInstallTask.create(task); - } - return PdaResponse.requestOk(); + data.put("taskNo", sysParamService.getValue()); + data.put("isGoback", whereJson.getString("isGoback")); + param.put("data", data); + // 是否有成品配送 + wmsToNotCarService.isGoBack(param); } @Override - public PdaResponse installConfirm() { - // 判断无人车是否到位 + public void publicLoadingConfirm() { + JSONObject param = new JSONObject(); + param.put("requestType", "WCS_110"); + param.put("accessId", IOSConstant.ONE); + param.put("requestId", IdUtil.getStringId()); + + JSONObject data = new JSONObject(); Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK"); - sysParamService.setRemark(IOSConstant.ZERO); - iSysParamService.updateById(sysParamService); - - // 调用无人装货任务类 - noCarInstallTask.backParam(sysParamService.getValue()); - return PdaResponse.requestOk(); - } - - /** - * 根据数量找到对应可用点位 - * - * @param size 数量 - * @param region_code 区域编码 - * @return List - */ - private List divPoint(int size, String region_code) { - List pointList = schBasePointMapper.selectList( - new QueryWrapper().lambda() - .eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) - .eq(SchBasePoint::getRegion_code, region_code) - .eq(SchBasePoint::getIs_used, IOSConstant.ONE) - .and(row -> row.isNull(SchBasePoint::getIng_task_code) - .or().eq(SchBasePoint::getIng_task_code, "") - ) - .orderByAsc(SchBasePoint::getPoint_code) - ); - - if (pointList.size() < size) { - throw new BadRequestException("当前区域空位不够,当前区域剩余空位【" + pointList.size() + "】"); - } - return pointList; + data.put("taskNo", sysParamService.getValue()); + param.put("data", data); + wmsToNotCarService.continueTask(param); } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PDAEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PDAEnum.java index 4ee35ef..3c71ee1 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PDAEnum.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PDAEnum.java @@ -40,6 +40,9 @@ public enum PDAEnum { // 运送类型 TASK_TYPE(MapOf.of("小料箱", "1", "大料箱或其他", "2")), + // 物料类别 + CLASS_TYPE(MapOf.of("原料", "YL001", "辅料", "FL001", "内包材", "NBC001", "外包材", "WBC001", "其他", "OTHER01")), + ; private Map code; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java index df81151..7b0cd10 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java @@ -131,6 +131,8 @@ public class SchBasePoint implements Serializable { // 入库库区 private String in_sect; + private String material_id; + @TableField(exist = false) private List can_vehicle_types; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java index 655f55a..f54630c 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.java @@ -60,13 +60,10 @@ public interface SchBasePointMapper extends BaseMapper { List getCanUsePointByRegion(String regionCode); /** - * 无人车卸货 - 查询区域点位信息 - * @param whereJson { - * region_code: 区域编码 - * } + * 无人车卸货 - 查询无人车点位信息 * @return PdaResponse */ - List queryRegionPoint(@Param("param") JSONObject whereJson); + List queryNotCarPoint(); /** * 手持功能 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml index dc862b2..5601422 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml @@ -124,21 +124,21 @@ OR t.point_code2 = p.point_code )) - SELECT point.*, + mater.material_code, + mater.material_name, class.class_code, class.class_name FROM sch_base_point point - LEFT JOIN md_pb_classstandard class ON point.can_material_type = class.class_code + LEFT JOIN md_me_materialbase mater ON point.material_id = mater.material_id + LEFT JOIN md_pb_classstandard class ON mater.material_type_id = class.class_id - IFNULL(point.can_material_type, '') != '' - - AND - point.region_code = #{param.region_code} - - + IFNULL(point.material_id, '') != '' + AND point.point_status != '1' + AND point.region_code = 'WRC01' diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarBackCpTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarBackCpTask.java index f4a05d7..6eafdfe 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarBackCpTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarBackCpTask.java @@ -9,6 +9,11 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; import org.nl.config.IdUtil; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; +import org.nl.system.service.param.dao.Param; +import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.pda.general_management.service.PdaNotCarService; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; @@ -20,9 +25,6 @@ import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.sch_manage.service.util.TaskType; import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; -import org.nl.wms.warehouse_management.service.IStIvtMoveinvService; -import org.nl.wms.warehouse_management.service.IStIvtMoveinvdtlService; -import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -55,10 +57,16 @@ public class NoCarBackCpTask extends AbstractTask { private ISchBasePointService iSchBasePointService; /** - * 无人车卸货任务类 + * 无人车对接服务 */ @Resource - private NoCarUnloadTask noCarUnloadTask; + private PdaNotCarService pdaNotCarService; + + /** + * 系统参数服务 + */ + @Resource + private ISysParamService iSysParamService; @Override public String create(JSONObject json) { @@ -69,10 +77,11 @@ public class NoCarBackCpTask extends AbstractTask { task.setConfig_code(NoCarBackCpTask.class.getSimpleName()); task.setPoint_code1(json.getString("point_code1")); task.setPoint_code2(json.getString("point_code2")); - task.setGroup_id(json.getString("group_id")); + task.setMaterial_id(json.getString("material_id")); + task.setMaterial_qty(json.getBigDecimal("material_qty")); task.setRequest_param(json.toString()); task.setPriority(json.getString("Priority")); - task.setContact_task(json.getString("contact_task")); + task.setTask_group_id(json.getString("task_group_id")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); @@ -156,9 +165,9 @@ public class NoCarBackCpTask extends AbstractTask { // 更新起点 iSchBasePointService.update( new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) .set(SchBasePoint::getVehicle_code, "") .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) - .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) .set(SchBasePoint::getIng_task_code, "") ); @@ -170,13 +179,17 @@ public class NoCarBackCpTask extends AbstractTask { // 判断任务是否全部完成 List list = taskService.list( new QueryWrapper().lambda() - .eq(SchBaseTask::getContact_task, taskObj.getContact_task()) + .eq(SchBaseTask::getTask_group_id, taskObj.getTask_group_id()) .eq(SchBaseTask::getIs_delete, IOSConstant.ZERO) .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) ); if (ObjectUtil.isEmpty(list)) { - // 通知卸货完成回库 - noCarUnloadTask.resultNoCar(taskObj.getContact_task()); + // 通知装货完成回库 + pdaNotCarService.publicLoadingConfirm(); + // 获取系统参数:无人车到达点位处理 + Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE"); + sysParamService.setValue(IOSConstant.ZERO); + iSysParamService.updateById(sysParamService); } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarInstallTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarInstallTask.java deleted file mode 100644 index 30e0891..0000000 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarInstallTask.java +++ /dev/null @@ -1,218 +0,0 @@ -package org.nl.wms.sch_manage.service.util.tasks; - -import cn.hutool.core.date.DateUtil; -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.nl.common.exception.BadRequestException; -import org.nl.common.utils.CodeUtil; -import org.nl.common.utils.SecurityUtils; -import org.nl.config.IdUtil; -import org.nl.config.SpringContextHolder; -import org.nl.system.service.param.ISysParamService; -import org.nl.system.service.param.dao.Param; -import org.nl.system.service.param.impl.SysParamServiceImpl; -import org.nl.wms.ext.service.WmsToNotCarService; -import org.nl.wms.sch_manage.enums.TaskStatus; -import org.nl.wms.sch_manage.service.ISchBasePointService; -import org.nl.wms.sch_manage.service.ISchBaseTaskService; -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.util.ACSTaskTypeEnum; -import org.nl.wms.sch_manage.service.util.AbstractTask; -import org.nl.wms.sch_manage.service.util.AcsTaskDto; -import org.nl.wms.sch_manage.service.util.TaskType; -import org.nl.wms.warehouse_management.enums.IOSConstant; -import org.nl.wms.warehouse_management.enums.IOSEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.util.List; - -/** - *

- * 无人车装货任务类 - *

- * - * @author Liuxy - * @since 2026-02-06 - */ -@Component(value = "NoCarInstallTask") -@TaskType("NoCarInstallTask") -public class NoCarInstallTask extends AbstractTask { - - /** - * 任务服务类 - */ - @Autowired - private ISchBaseTaskService taskService; - - /** - * 点位服务 - */ - @Resource - private ISchBasePointService iSchBasePointService; - - /** - * 系统参数服务 - */ - @Resource - private ISysParamService iSysParamService; - - /** - * wms调用无人车服务 - */ - @Resource - private WmsToNotCarService wmsToNotCarService; - - @Override - public String create(JSONObject json) { - SchBaseTask task = new SchBaseTask(); - task.setTask_id(IdUtil.getStringId()); - task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); - task.setTask_status(TaskStatus.CREATE.getCode()); - task.setConfig_code(NoCarInstallTask.class.getSimpleName()); - task.setPoint_code1(json.getString("point_code1")); - task.setPoint_code2(json.getString("point_code2")); - task.setGroup_id(json.getString("group_id")); - task.setRequest_param(json.toString()); - task.setPriority(json.getString("Priority")); - task.setContact_task(json.getString("contact_task")); - task.setCreate_id(SecurityUtils.getCurrentUserId()); - task.setCreate_name(SecurityUtils.getCurrentNickName()); - task.setCreate_time(DateUtil.now()); - taskService.save(task); - - // 下发任务 - this.sendTaskOne(task.getTask_id()); - return task.getTask_id(); - } - - @Override - public AcsTaskDto sendAcsParam(String taskId) { - SchBaseTask taskDao = taskService.getById(taskId); - - // 组织下发给acs的数据 - AcsTaskDto acsTaskDto = new AcsTaskDto(); - acsTaskDto.setExt_task_id(taskDao.getTask_id()); - acsTaskDto.setTask_code(taskDao.getTask_code()); - acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); - acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); - acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); - acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode()); - - acsTaskDto.setPriority(IOSConstant.ONE); - acsTaskDto.setAgv_system_type(IOSConstant.TWO); - - return acsTaskDto; - } - - @Override - @Transactional - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException("该任务已完成!"); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException("该任务已取消!"); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { - this.finishTask(taskObj); - } - if (status.equals(TaskStatus.CANCELED)) { - this.cancelTask(taskObj); - } - } - - @Override - @Transactional - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("该任务不存在"); - } - this.finishTask(taskObj); - } - - @Override - @Transactional - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("该任务不存在"); - } - this.cancelTask(taskObj); - } - - @Override - public void taskConfirm(String task_code) { - } - - @Transactional - public void finishTask(SchBaseTask taskObj) { - // 更新起点 - iSchBasePointService.update( - new UpdateWrapper().lambda() - .set(SchBasePoint::getVehicle_code, "") - .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) - .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) - .set(SchBasePoint::getIng_task_code, "") - ); - - // 更新任务状态 - taskObj.setRemark("已完成"); - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskService.updateById(taskObj); - - // 判断任务是否全部完成 - List list = taskService.list( - new QueryWrapper().lambda() - .eq(SchBaseTask::getContact_task, taskObj.getContact_task()) - .eq(SchBaseTask::getIs_delete, IOSConstant.ZERO) - .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) - ); - if (ObjectUtil.isEmpty(list)) { - // 更新系统参数为0 - Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("NO_CAR_TASK"); - sysParamService.setRemark(IOSConstant.ZERO); - iSysParamService.updateById(sysParamService); - // 通知装货完成回库 - this.backParam(taskObj.getContact_task()); - } - } - - @Transactional - public void cancelTask(SchBaseTask taskObj) { - // 更新任务状态 - taskObj.setRemark("已取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskService.updateById(taskObj); - } - - /** - * 装货完成 - */ - public void backParam(String taskNo) { - JSONObject param = new JSONObject(); - param.put("requestType", "WCS_110"); - param.put("accessId", IOSConstant.ONE); - param.put("requestId", IdUtil.getStringId()); - - JSONObject data = new JSONObject(); - data.put("taskNo", taskNo); - param.put("data", data); - // 调用服务 - wmsToNotCarService.continueTask(param); - } -} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarUnloadTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarUnloadTask.java index 9973d61..f5ecfe0 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarUnloadTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/NoCarUnloadTask.java @@ -9,7 +9,11 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; import org.nl.config.IdUtil; -import org.nl.wms.ext.service.WmsToNotCarService; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; +import org.nl.system.service.param.dao.Param; +import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.pda.general_management.service.PdaNotCarService; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; @@ -53,16 +57,16 @@ public class NoCarUnloadTask extends AbstractTask { private ISchBasePointService iSchBasePointService; /** - * wms调用无人车服务 + * 手持无人车服务 */ @Resource - private WmsToNotCarService wmsToNotCarService; + private PdaNotCarService pdaNotCarService; /** - * 无人车卸货回库带成品任务类 + * 系统参数服务 */ @Resource - private NoCarBackCpTask noCarBackCpTask; + private ISysParamService iSysParamService; @Override public String create(JSONObject json) { @@ -75,21 +79,16 @@ public class NoCarUnloadTask extends AbstractTask { task.setPoint_code2(json.getString("point_code2")); task.setVehicle_code(json.getString("vehicle_code")); task.setMaterial_id(json.getString("material_id")); + task.setTask_group_id(json.getString("task_group_id")); task.setMaterial_qty(json.getBigDecimal("material_qty")); task.setRequest_param(json.toString()); task.setPriority(json.getString("Priority")); - task.setContact_task(json.getString("contact_task")); task.setRemark(json.getString("remark")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); taskService.save(task); - // 更新终点任务号 - SchBasePoint pointDao = iSchBasePointService.getById(task.getPoint_code2()); - pointDao.setIng_task_code(task.getTask_id()); - iSchBasePointService.updateById(pointDao); - // 下发任务 this.sendTaskOne(task.getTask_id()); return task.getTask_id(); @@ -178,14 +177,15 @@ public class NoCarUnloadTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) .set(SchBasePoint::getVehicle_code, "") .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) - .set(SchBasePoint::getIng_task_code, "") + .set(SchBasePoint::getMaterial_id, "") ); // 更新终点 iSchBasePointService.update( new UpdateWrapper().lambda() .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) - .set(SchBasePoint::getIng_task_code, "") + .set(SchBasePoint::getMaterial_id, taskObj.getMaterial_id()) + .set(SchBasePoint::getMaterial_qty, taskObj.getMaterial_qty()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) ); // 更新任务 @@ -196,33 +196,45 @@ public class NoCarUnloadTask extends AbstractTask { // 判断卸货任务是否全部完成 List list = taskService.list( new QueryWrapper().lambda() - .eq(SchBaseTask::getContact_task, taskObj.getContact_task()) + .eq(SchBaseTask::getTask_group_id, taskObj.getTask_group_id()) .eq(SchBaseTask::getIs_delete, IOSConstant.ZERO) .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) ); if (ObjectUtil.isEmpty(list)) { - // 判断成品区是否有货,有就生成任务 + // 判断成品区是否有货 List pointList = iSchBasePointService.list( new QueryWrapper().lambda() .eq(SchBasePoint::getRegion_code, "CPQ01") .eq(SchBasePoint::getIs_used, IOSConstant.ONE) .eq(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) - .last("LIMIT 2") + .orderByDesc(SchBasePoint::getOut_order_seq) + .last("LIMIT 3") ); - if (ObjectUtil.isNotEmpty(pointList)) { - // 创建装货任务 - for (SchBasePoint dao : pointList) { - JSONObject taskParam = new JSONObject(); - taskParam.put("point_code1", dao.getPoint_code()); - taskParam.put("point_code2", "成品对接点"); - taskParam.put("contact_task", taskObj.getContact_task()); - noCarBackCpTask.create(taskParam); - } - } else { - // 调用无人车卸货完成 - this.resultNoCar(taskObj.getContact_task()); - } + // 获取系统参数:无人车到达点位处理 + Param sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_ARRIVE"); + + JSONObject isGoBackParam = new JSONObject(); + if (ObjectUtil.isNotEmpty(pointList)) { + // 更新系统参数到达参数 + sysParamService.setValue(IOSConstant.TWO); + iSysParamService.updateById(sysParamService); + // 返回有成品配送 + isGoBackParam.put("isGoback", IOSConstant.ZERO); + pdaNotCarService.publicIsGoBack(isGoBackParam); + // 呼叫无人车 + JSONObject param = new JSONObject(); + param.put("point_code", IOSConstant.WRC_POINT02); + pdaNotCarService.publicCallCar(param); + + } else { + // 返回没有成品配送 + isGoBackParam.put("isGoback", IOSConstant.ONE); + pdaNotCarService.publicIsGoBack(isGoBackParam); + // 更新系统参数到达参数 + sysParamService.setValue(IOSConstant.ZERO); + iSysParamService.updateById(sysParamService); + } } } @@ -232,36 +244,16 @@ public class NoCarUnloadTask extends AbstractTask { iSchBasePointService.update( new UpdateWrapper().lambda() .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) - .set(SchBasePoint::getIng_task_code, "") ); // 更新终点 iSchBasePointService.update( new UpdateWrapper().lambda() .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) - .set(SchBasePoint::getIng_task_code, "") ); // 更新任务 taskObj.setRemark("已取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskService.updateById(taskObj); } - - /** - * 卸货任务完成反馈 - * - * @param id 无人车下发任务标识 - */ - public void resultNoCar(String id) { - JSONObject param = new JSONObject(); - param.put("requestType", "WCS_118"); - param.put("accessId", IOSConstant.ONE); - param.put("requestId", IdUtil.getStringId()); - - JSONObject data = new JSONObject(); - data.put("id", id); - data.put("to_command", IOSConstant.TWO); - param.put("data", data); - wmsToNotCarService.resultUnloadTask(param); - } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaNotCarUnloadTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaNotCarUnloadTask.java deleted file mode 100644 index e831662..0000000 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaNotCarUnloadTask.java +++ /dev/null @@ -1,191 +0,0 @@ -package org.nl.wms.sch_manage.service.util.tasks; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.CodeUtil; -import org.nl.common.utils.SecurityUtils; -import org.nl.config.IdUtil; -import org.nl.wms.sch_manage.enums.TaskStatus; -import org.nl.wms.sch_manage.service.ISchBasePointService; -import org.nl.wms.sch_manage.service.ISchBaseTaskService; -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.util.ACSTaskTypeEnum; -import org.nl.wms.sch_manage.service.util.AbstractTask; -import org.nl.wms.sch_manage.service.util.AcsTaskDto; -import org.nl.wms.sch_manage.service.util.TaskType; -import org.nl.wms.warehouse_management.enums.IOSConstant; -import org.nl.wms.warehouse_management.enums.IOSEnum; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; - -/** - *

- * 无人车卸货任务类 - *

- * - * @author Liuxy - * @since 2026-01-06 - */ -@Component(value = "PdaNotCarUnloadTask") -@TaskType("PdaNotCarUnloadTask") -public class PdaNotCarUnloadTask extends AbstractTask { - - /** - * 任务服务类 - */ - @Autowired - private ISchBaseTaskService taskService; - - /** - * 点位服务 - */ - @Resource - private ISchBasePointService iSchBasePointService; - - @Override - public String create(JSONObject json) { - SchBaseTask task = new SchBaseTask(); - task.setTask_id(IdUtil.getStringId()); - task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); - task.setTask_status(TaskStatus.CREATE.getCode()); - task.setConfig_code(PdaNotCarUnloadTask.class.getSimpleName()); - task.setPoint_code1(json.getString("point_code1")); - task.setPoint_code2(json.getString("point_code2")); - task.setVehicle_code(json.getString("vehicle_code")); - task.setMaterial_id(json.getString("material_id")); - task.setMaterial_qty(json.getBigDecimal("material_qty")); - task.setRequest_param(json.toString()); - task.setPriority(json.getString("Priority")); - task.setRemark(json.getString("remark")); - task.setCreate_id(SecurityUtils.getCurrentUserId()); - task.setCreate_name(SecurityUtils.getCurrentNickName()); - task.setCreate_time(DateUtil.now()); - taskService.save(task); - - // 下发任务 - this.sendTaskOne(task.getTask_id()); - return task.getTask_id(); - } - - @Override - public AcsTaskDto sendAcsParam(String taskId) { - SchBaseTask taskDao = taskService.getById(taskId); - - // 组织下发给acs的数据 - AcsTaskDto acsTaskDto = new AcsTaskDto(); - acsTaskDto.setExt_task_id(taskDao.getTask_id()); - acsTaskDto.setTask_code(taskDao.getTask_code()); - acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); - acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); - acsTaskDto.setPriority(taskDao.getPriority()); - acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); - - acsTaskDto.setVehicle_type(IOSConstant.ONE); - acsTaskDto.setTask_type(ACSTaskTypeEnum.AGV_TASK.getCode()); - - acsTaskDto.setPriority(IOSConstant.ONE); - acsTaskDto.setAgv_system_type(IOSConstant.TWO); - - return acsTaskDto; - } - - @Override - @Transactional - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getByCode(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException("该任务已完成!"); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException("该任务已取消!"); - } - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { - // 更新明细状态 - this.executingTask(taskObj); - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - taskService.updateById(taskObj); - } - if (status.equals(TaskStatus.FINISHED)) { - this.finishTask(taskObj); - } - if (status.equals(TaskStatus.CANCELED)) { - this.cancelTask(taskObj); - } - } - - @Override - @Transactional - public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("该任务不存在"); - } - this.finishTask(taskObj); - } - - @Override - @Transactional - public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getByCode(task_code); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("该任务不存在"); - } - if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) { - throw new BadRequestException("只能取消生成中的任务!"); - } - this.cancelTask(taskObj); - } - - @Override - public void taskConfirm(String task_code) { - } - - @Transactional - public void finishTask(SchBaseTask taskObj) { - // 更新起点 - iSchBasePointService.update( - new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) - .set(SchBasePoint::getVehicle_code, "") - .set(SchBasePoint::getCan_material_type, "") - .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) - ); - // 更新终点 - iSchBasePointService.update( - new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) - .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) - .set(SchBasePoint::getCan_material_type, taskObj.getMaterial_id()) - .set(SchBasePoint::getIng_task_code, "") - .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) - ); - // 更新任务 - taskObj.setRemark("已完成"); - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskService.updateById(taskObj); - } - - @Transactional - public void cancelTask(SchBaseTask taskObj) { - // 更新终点 - iSchBasePointService.update( - new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) - .set(SchBasePoint::getIng_task_code, "") - ); - // 更新任务 - taskObj.setRemark("已取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskService.updateById(taskObj); - } -} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java index bf1efc4..aefece7 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java @@ -122,4 +122,34 @@ public class IOSConstant { */ public final static String CL001 = "CL001"; + /** + * 分类编码:外包材 + */ + public final static String WBC001 = "WBC001"; + + /** + * 点位区域:外包材储存区 + */ + public final static String AGVDJ01 = "AGVDJ01"; + + /** + * 点位区域:无人车卸货缓存区 + */ + public final static String WXHHC01 = "WXHHC01"; + + /** + * 点位区域:无人车运货区 + */ + public final static String WRC01 = "WRC01"; + + /** + * 无人车对接点:仓库 + */ + public final static String WRC_POINT01 = "WRC01"; + + /** + * 无人车对接点:车间 + */ + public final static String WRC_POINT02 = "WRC02"; + }