From fe944cec89e5b43d3c29a53001010e9b9f9a6904 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Mon, 14 Jul 2025 09:27:19 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E7=95=8C=E9=9D=A2=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E6=89=8B=E6=8C=81=E5=87=BA=E5=85=A5=E5=BA=93=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/MdPbStoragevehicleextMapper.xml | 1 + .../service/dao/mapper/StructattrMapper.xml | 2 + .../org/nl/wms/ext/enums/EXTConstant.java | 5 + .../org/nl/wms/ext/enums/ResultAcsStatus.java | 38 ++- .../java/org/nl/wms/ext/util/NotifyUtil.java | 1 + .../gateway/controller/GateWayController.java | 12 +- .../nl/wms/gateway/dto/FeedBackTaskDto.java | 52 ++++ .../org/nl/wms/gateway/dto/RcsResponse.java | 13 + .../wms/gateway/service/IGateWayService.java | 3 + .../service/impl/GateWayServiceImpl.java | 73 ++++- .../controller/PdaIosOutController.java | 5 +- .../service/impl/PdaIosInServiceImpl.java | 23 +- .../service/impl/PdaIosOutServiceImpl.java | 56 ++-- .../controller/PdaSchPointController.java | 1 - .../service/PdaSchPointService.java | 1 - .../service/impl/PdaSchTaskServiceImpl.java | 3 +- .../wms/sch_manage/enums/PointStatusEnum.java | 29 -- .../nl/wms/sch_manage/enums/StatusEnum.java | 32 +-- .../org/nl/wms/sch_manage/enums/TaskEnum.java | 42 --- .../sch_manage/service/dao/SchBaseTask.java | 2 +- .../service/impl/SchBasePointServiceImpl.java | 4 +- .../sch_manage/service/util/AcsTaskDto.java | 3 +- .../util/{tasks => }/TaskOrderDetail.java | 2 +- .../service/util/tasks/BackInTask.java | 4 +- .../service/util/tasks/MoveTask.java | 6 +- .../service/util/tasks/PdaPointTask.java | 7 +- .../service/util/tasks/StInTask.java | 3 +- .../service/util/tasks/StOutTask.java | 4 +- .../service/util/tasks/VehicleInTask.java | 33 ++- .../service/util/tasks/VehicleOutTask.java | 3 +- .../warehouse_management/enums/IOSEnum.java | 4 +- .../service/impl/OutBillServiceImpl.java | 18 +- .../impl/StIvtMoveinvdtlServiceImpl.java | 4 +- .../service/util/UpdateIvtUtils.java | 52 +++- .../main/resources/config/application-dev.yml | 2 +- .../resources/config/application-prod.yml | 139 +++++++++ .../src/main/resources/config/application.yml | 4 +- .../src/main/resources/log/ErpToWms.xml | 28 -- .../src/main/resources/logback-spring.xml | 72 +++-- nladmin-ui/.env.development | 2 +- nladmin-ui/.env.production | 4 +- nladmin-ui/src/views/wms/sch/point/index.vue | 270 ++++++++++++------ nladmin-ui/src/views/wms/sch/task/index.vue | 4 +- 43 files changed, 752 insertions(+), 314 deletions(-) create mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/FeedBackTaskDto.java delete mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/PointStatusEnum.java delete mode 100644 nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskEnum.java rename nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/{tasks => }/TaskOrderDetail.java (86%) create mode 100644 nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml delete mode 100644 nladmin-system/nlsso-server/src/main/resources/log/ErpToWms.xml diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml index 74f1465..8067845 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml @@ -80,6 +80,7 @@ INNER JOIN md_me_materialbase mater ON mater.material_id = ext.material_id 1 = 1 + AND ext.status = '02' AND attr.stor_id = #{param.stor_id} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml index f8213bb..27bb00e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml @@ -7,6 +7,7 @@ gro.frozen_qty, gro.create_time, gro.qty_unit_name, + gro.qty_unit_id, gro.material_id, gro.pcsn, gro.group_id, @@ -60,6 +61,7 @@ gro.frozen_qty, gro.create_time, gro.qty_unit_name, + gro.qty_unit_id, gro.material_id, gro.pcsn, gro.group_id, diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java index 528550b..764134f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/EXTConstant.java @@ -21,4 +21,9 @@ public class EXTConstant { * ACS下发任务接口地址 */ public final static String SEND_TASK_ACS_API = "api/wms/task"; + + /** + * RCS下发任务接口地址 + */ + public final static String SEND_TASK_RCS_API = "ics/taskOrder/addTask"; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/ResultAcsStatus.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/ResultAcsStatus.java index 1c71a32..95ebbc4 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/ResultAcsStatus.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/enums/ResultAcsStatus.java @@ -9,14 +9,39 @@ package org.nl.wms.ext.enums; * @since 2025-06-09 */ public enum ResultAcsStatus { + /** * 执行中 */ - EXECUTING("1", "执行中", "执行中"), + CANCEL("3", "取消", "取消"), + + + /** + * 发送失败 + */ + SEND_FAIL("5", "发送失败", "发送失败"), + /** + * 执行中 + */ + EXECUTING("6", "执行中", "执行中"), + /** + * 执行失败 + */ + EXECUTE_FAIL("7", "执行失败", "执行失败"), /** * 完成 */ - FINISHED("2", "完成", "完成"); + FINISHED("8", "完成", "完成"), + + /** + * 已下发 + */ + ISSUE("9", "已下发", "已下发"), + + /** + * 等待确认 + */ + WAIT_CONFIRM("10", "等待确认", "等待确认"); ResultAcsStatus(String code, String name, String desc) { @@ -24,7 +49,14 @@ public enum ResultAcsStatus { this.name = name; this.desc = desc; } - + public static ResultAcsStatus fromCode(String code) { + for (ResultAcsStatus value : values()) { + if (value.code.equals(code)) { + return value; + } + } + return null; + } private String code; private String name; private String desc; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NotifyUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NotifyUtil.java index e57cfb8..0e95d6b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NotifyUtil.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NotifyUtil.java @@ -28,6 +28,7 @@ public class NotifyUtil { if (IOSConstant.IS_DELETE_NO.equals(connectValue)) { log.info("未连接系统,跳过下发!"); } + log.info("下发ACS任务开始下发,api:{}下发参数为:-------------------{}", api, param); String url = getParam(sysParamService, systemType) + api; try { String response = HttpRequest.post(url).body(String.valueOf(param)).execute().body(); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/controller/GateWayController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/controller/GateWayController.java index f326f5d..598a7b7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/controller/GateWayController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/controller/GateWayController.java @@ -2,6 +2,7 @@ package org.nl.wms.gateway.controller; import cn.dev33.satoken.annotation.SaIgnore; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; +import org.nl.wms.gateway.dto.FeedBackTaskDto; import org.nl.wms.gateway.dto.InteracteDto; import org.nl.wms.gateway.service.IGateWayService; import org.springframework.http.HttpStatus; @@ -27,10 +28,19 @@ public class GateWayController { @Resource private IGateWayService gateWayService; - @PostMapping("/apply") + @PostMapping("/apply1") @SaIgnore @Log("外层服务请求wms") public ResponseEntity apply(@RequestBody InteracteDto form) { return new ResponseEntity<>(TableDataInfo.buildJson(gateWayService.apply(form)),HttpStatus.OK); } + + + @PostMapping("/apply") + @Log(value = "RCS给WMS反馈任务状态") + @SaIgnore + public ResponseEntity receiveTaskStatus(@RequestBody FeedBackTaskDto param) { + return new ResponseEntity<>(gateWayService.receiveTaskStatus(param), HttpStatus.OK); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/FeedBackTaskDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/FeedBackTaskDto.java new file mode 100644 index 0000000..f2747cd --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/FeedBackTaskDto.java @@ -0,0 +1,52 @@ +package org.nl.wms.gateway.dto; + +import lombok.Data; +import java.io.Serializable; + +@Data +public class FeedBackTaskDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** 货位号 */ + private String storageNum; + + /** 子任务状态 */ + private String subTaskStatus; + + /** 订单ID */ + private String orderId; + + /** 设备编码 */ + private String deviceCode; + + /** 模型流程编码 */ + private String modelProcessCode; + + /** 子任务类型ID */ + private String subTaskTypeId; + + /** 子任务ID */ + private String subTaskId; + + /** 设备编号 */ + private String deviceNum; + + /** 二维码内容 */ + private String qrContent; + + /** 子任务序号 */ + private String subTaskSeq; + + /** ICS任务单明细ID */ + private String icsTaskOrderDetailId; + + /** 状态码 */ + private Integer status; + + /** 错误描述 */ + private String errorDesc; + + /** 货架当前位置 */ + private String shelfCurrPosition; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/RcsResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/RcsResponse.java index 023808e..e4b2d54 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/RcsResponse.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/dto/RcsResponse.java @@ -3,6 +3,7 @@ package org.nl.wms.gateway.dto; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpStatus; import lombok.Data; +import org.nl.wms.ext.service.util.AcsResponse; /** * @Author: gbx @@ -43,5 +44,17 @@ public class RcsResponse { return result; } + /** + * 请求成功 + * @return RcsResponse + */ + public static RcsResponse requestOk() { + RcsResponse result = new RcsResponse(); + result.setCode(HttpStatus.HTTP_OK); + result.setDesc("请求成功"); + result.setResponseDate(DateUtil.now()); + return result; + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/IGateWayService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/IGateWayService.java index 28e4791..484832d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/IGateWayService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/IGateWayService.java @@ -2,6 +2,7 @@ package org.nl.wms.gateway.service; import com.alibaba.fastjson.JSONObject; import org.nl.wms.ext.service.util.AcsResponse; +import org.nl.wms.gateway.dto.FeedBackTaskDto; import org.nl.wms.gateway.dto.InteracteDto; import org.nl.wms.gateway.dto.RcsResponse; import org.springframework.stereotype.Service; @@ -26,6 +27,8 @@ public interface IGateWayService { JSONObject apply(InteracteDto param); + RcsResponse receiveTaskStatus(FeedBackTaskDto param); + /** * 下发Rcs任务 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java index 8c1a89d..3b3274a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/impl/GateWayServiceImpl.java @@ -5,26 +5,36 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.RedissonUtils; import org.nl.system.enums.SysParamConstant; import org.nl.wms.ext.enums.EXTConstant; +import org.nl.wms.ext.enums.ResultAcsStatus; import org.nl.wms.ext.util.NotifyUtil; +import org.nl.wms.gateway.dto.FeedBackTaskDto; import org.nl.wms.gateway.dto.InteracteDto; import org.nl.wms.gateway.dto.RcsResponse; import org.nl.wms.gateway.service.IGateWayService; +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.AbstractTask; +import org.nl.wms.sch_manage.service.util.TaskFactory; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; /** @@ -38,6 +48,10 @@ import java.util.concurrent.atomic.AtomicReference; public class GateWayServiceImpl implements IGateWayService { + @Autowired + private TaskFactory taskFactory; + @Autowired + private RedissonClient redissonClient; @Resource private Map applyTaskMap; @Autowired @@ -122,8 +136,65 @@ public class GateWayServiceImpl implements IGateWayService { */ @Override public RcsResponse renotifyRcs(List list) { - return NotifyUtil.apiNotify(EXTConstant.SEND_TASK_ACS_API, SysParamConstant.IS_CONNECT_RCS, SysParamConstant.RCS_URL, list, RcsResponse.class); + return NotifyUtil.apiNotify(EXTConstant.SEND_TASK_RCS_API, SysParamConstant.IS_CONNECT_RCS, SysParamConstant.RCS_URL, list, RcsResponse.class); } + @Override + @Transactional(rollbackFor = Exception.class) + @SneakyThrows + public RcsResponse receiveTaskStatus(FeedBackTaskDto param) { + //返回处理失败的任务 + String orderId = param.getOrderId(); + RLock lock = redissonClient.getLock(orderId); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBaseTask taskObj = iSchBaseTaskService.getByCode(orderId); + // rcs反馈的任务类型 + String rcsTaskStatus = param.getStatus().toString(); + ResultAcsStatus rcsStatusEnum = ResultAcsStatus.fromCode(rcsTaskStatus); + if (rcsStatusEnum == null) { + throw new BadRequestException("反馈的任务状态码不受支持: " + rcsTaskStatus); + } + TaskStatus status; + switch (rcsStatusEnum) { + case EXECUTING: + status = TaskStatus.EXECUTING; + break; + case FINISHED: + status = TaskStatus.FINISHED; + break; + case CANCEL: + status = TaskStatus.CANCELED; + break; + case SEND_FAIL: + status = TaskStatus.UNFINISHED; + break; + case EXECUTE_FAIL: + status = TaskStatus.UNFINISHED; + break; + case ISSUE: + status = TaskStatus.ISSUED; + break; + case WAIT_CONFIRM: + status = TaskStatus.CREATED; + break; + default: + throw new BadRequestException("反馈的任务状态码不受支持: " + rcsStatusEnum.getName()); + } + // 根据配置编码执行相关配置内的方法 + AbstractTask task = taskFactory.getTask(taskObj.getConfig_code()); + task.updateTaskStatus(taskObj.getTask_code(), status); + + } else { + throw new BadRequestException("任务编号为:" + orderId + "的任务正在执行逻辑处理中!"); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } + return RcsResponse.requestOk(); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java index a13da30..696d157 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java @@ -48,7 +48,6 @@ public class PdaIosOutController { @PostMapping("/getMaterialDtl") @Log("物料出库获取物料库存") public ResponseEntity getMaterialDtl(@RequestBody JSONObject whereJson) { - assertNotBlankJson(whereJson, "请求参数不能为空", "search"); return new ResponseEntity<>(pdaIosOutService.getMaterialDtl(whereJson), HttpStatus.OK); } @@ -62,7 +61,7 @@ public class PdaIosOutController { @PostMapping("/materialConfirm") @Log("线边库物料出库确认") public ResponseEntity materialConfirm(@RequestBody JSONObject whereJson) { - assertNotBlankJson(whereJson, "请求参数不能为空", "sect_id", "siteCode", "group_id"); + assertNotBlankJson(whereJson, "请求参数不能为空", "sect_id", "siteCode"); RedissonUtils.lock(() -> { pdaIosOutService.materialConfirm(whereJson); }, "materialConfirm" + whereJson.getString("group_id"), null); @@ -87,7 +86,7 @@ public class PdaIosOutController { * 货架与站点绑定或解绑 */ @PostMapping("bindOrUnbind") - @Log("货架与站点绑定或解绑") + @Log("绑定或解绑") public ResponseEntity bindOrUnbind(@RequestBody JSONObject whereJson) { assertNotBlankJson(whereJson, "请求参数不能为空", "siteCode", "shelfCode", "mode"); RedissonUtils.lock(() -> { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java index e69e708..d7ebf29 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java @@ -23,7 +23,6 @@ import org.nl.wms.basedata_manage.service.dto.MaterialQuery; import org.nl.wms.pda.ios_manage.service.PdaIosInService; import org.nl.wms.pda.util.PdaResponse; import org.nl.wms.sch_manage.enums.StatusEnum; -import org.nl.wms.sch_manage.enums.TaskEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseRegionService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; @@ -39,6 +38,7 @@ import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; +import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -104,7 +104,11 @@ public class PdaIosInServiceImpl implements PdaIosInService { */ @Autowired private ISchBasePointService iSchBasePointService; - + /** + * 更新库存工具类 + */ + @Autowired + private UpdateIvtUtils updateIvtUtils; /** * 仓库服务 @@ -292,6 +296,8 @@ public class PdaIosInServiceImpl implements PdaIosInService { @Override @Transactional public PdaResponse confirmReturnMaterial(JSONObject whereJson) { + //校验仓库 + Sectattr sectDao = updateIvtUtils.checkVehicleType(whereJson.getString("sect_id"),whereJson.getString("storagevehicle_code")); //校验回库起点 SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getVehicle_code, whereJson.getString("storagevehicle_code"))); if (ObjectUtil.isEmpty(schBasePoint)) { @@ -301,9 +307,6 @@ public class PdaIosInServiceImpl implements PdaIosInService { whereJson.put("site_code",schBasePoint.getPoint_code()); whereJson.put("config_code", IOSConstant.BACK_IN_TASK); whereJson.put("vehicle_code", whereJson.getString("storagevehicle_code")); - whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1")); - // 查询库区 - Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id")); whereJson.put("stor_id", sectDao.getStor_id()); whereJson.put("sect_code", sectDao.getSect_code()); //入库分配 @@ -375,8 +378,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { @Override @Transactional public PdaResponse confirmIn(JSONObject whereJson) { - // 查询库区 - Sectattr sectDao = iSectattrService.getById(whereJson.getString("sect_id")); + Sectattr sectDao = updateIvtUtils.checkVehicleType(whereJson.getString("sect_id"),whereJson.getString("vehicle_code")); whereJson.put("stor_id", sectDao.getStor_id()); whereJson.put("sect_code", sectDao.getSect_code()); //物料组盘入库 @@ -408,20 +410,21 @@ public class PdaIosInServiceImpl implements PdaIosInService { //空载具入库 whereJson.put("qty", 1); whereJson.put("pcsn", whereJson.getString("material_id")); - String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : StatusEnum.VEHICLE_TYPE.code("空料箱"); + String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : "2".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空料箱") : StatusEnum.VEHICLE_TYPE.code("空货架"); whereJson.put("material_id", materialCode); //组盘 groupPlate(whereJson); // 生成空载具入库任务 whereJson.put("config_code", IOSConstant.VEHICLE_IN_TASK); - whereJson.put("vehicle_code", whereJson.getString("vehicle_code")); - whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1")); + whereJson.put("storagevehicle_code", whereJson.getString("vehicle_code")); //入库分配 divStructNoBills(whereJson); } return PdaResponse.requestOk(); } + + /** * 组织入库插入数据 * @param whereJson { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java index a4acfd2..fd6d560 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java @@ -26,7 +26,6 @@ import org.nl.wms.basedata_manage.service.dto.StrategyStructParam; import org.nl.wms.pda.ios_manage.service.PdaIosOutService; import org.nl.wms.pda.util.PdaResponse; import org.nl.wms.sch_manage.enums.StatusEnum; -import org.nl.wms.sch_manage.enums.TaskEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.util.AbstractTask; @@ -201,23 +200,20 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { @Override @Transactional public PdaResponse materialConfirm(JSONObject whereJson) { - //创建出库单/明细/分配 - GroupPlate plateDao = mdPbGroupplateMapper.selectOne( - new LambdaQueryWrapper() - .eq(GroupPlate::getGroup_id, whereJson.getString("group_id"))); + JSONObject json = whereJson.getJSONObject("obj"); Structattr sectDao = iStructattrService.getOne(new LambdaQueryWrapper() - .eq(Structattr::getStruct_code, whereJson.getString("struct_code"))); - MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(plateDao.getMaterial_id()); + .eq(Structattr::getStruct_code, json.getString("struct_code"))); + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(json.getString("material_id")); whereJson.put("material_id", materDao.getMaterial_id()); whereJson.put("material_code", materDao.getMaterial_code()); whereJson.put("store_id", sectDao.getStor_id()); whereJson.put("store_code", sectDao.getStor_code()); whereJson.put("store_name", sectDao.getStor_name()); whereJson.put("sec", sectDao.getSect_id()); - whereJson.put("qty", plateDao.getQty()); - whereJson.put("pcsn", plateDao.getPcsn()); - whereJson.put("unit_id", plateDao.getQty_unit_id()); - whereJson.put("unit_name", plateDao.getQty_unit_name()); + whereJson.put("qty", json.getString("qty")); + whereJson.put("pcsn", json.getString("pcsn")); + whereJson.put("unit_id", json.getString("qty_unit_id")); + whereJson.put("unit_name", json.getString("qty_unit_name")); //创建出库单据 String disId = createOutBills(whereJson); //锁定货位 @@ -229,9 +225,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { JSONObject taskForm = new JSONObject(); taskForm.put("task_type", "STOutTask"); taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); - taskForm.put("PickingLocation", whereJson.getString("struct_code")); + taskForm.put("PickingLocation", json.getString("struct_code")); taskForm.put("PlacedLocation", whereJson.getString("siteCode")); - taskForm.put("vehicle_code", whereJson.getString("storagevehicle_code")); + taskForm.put("vehicle_code", json.getString("storagevehicle_code")); StOutTask stOutTask = SpringContextHolder.getBean("STOutTask"); String taskId = stOutTask.create(taskForm); //更新任务id @@ -241,8 +237,8 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { ); //更新组盘记录表 mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class) - .set(GroupPlate::getFrozen_qty, plateDao.getQty()) - .eq(GroupPlate::getGroup_id, whereJson.getString("group_id")) + .set(GroupPlate::getFrozen_qty, json.getString("qty")) + .eq(GroupPlate::getGroup_id, json.getString("group_id")) ); return PdaResponse.requestOk(); } @@ -464,10 +460,8 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { if (ObjectUtils.isNotEmpty(cxPointLists)) { throw new BadRequestException("该货架正在执行输送任务,状态为锁定,请等任务完成再做绑定或解绑!"); } - //更新点位 - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() - .eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode")); - if ("1" .equals(whereJson.getString("mode"))) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + if (IOSEnum.BIND_OR_UNBIND.code("绑定").equals(whereJson.getString("mode"))) { if (StringUtils.isNotBlank(sitePoint.getVehicle_code())) { throw new BadRequestException("当前站点已绑定货架:" + sitePoint.getVehicle_code() + ",请先解绑:" + sitePoint.getVehicle_code()); } @@ -476,13 +470,29 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { if (shelfPoint != null) { throw new BadRequestException("当前货架已绑定在站点:" + sitePoint.getPoint_code() + ",请先解绑。"); } + //绑定库存 + GroupPlate plateDao = mdPbGroupplateMapper.selectOne( + new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("shelfCode")).eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘"))); + if (plateDao != null) { + plateDao.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("入库")); + mdPbGroupplateMapper.updateById(plateDao); + } wrapper.set(SchBasePoint::getVehicle_code, whereJson.getString("shelfCode")) - .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货")); + .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货")) + .eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode")); } else { + if (StringUtils.isNotBlank(sitePoint.getParent_point_code())) { + List sitePointList = iSchBasePointService.list(new LambdaQueryWrapper().eq(SchBasePoint::getParent_point_code, sitePoint.getParent_point_code()).eq(SchBasePoint::getIs_used, true)); + wrapper.in(SchBasePoint::getPoint_code, sitePointList); + } else { + wrapper.eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode")); + } wrapper.set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货")); } wrapper.set(SchBasePoint::getUpdate_time, DateUtil.now()) + .set(SchBasePoint::getIs_has_workder, BaseDataEnum.IS_YES_NOT.code("否")) .set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName()); iSchBasePointService.update(wrapper); return PdaResponse.requestOk(); @@ -514,6 +524,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { if ("1".equals(whereJson.getString("type"))) { BigDecimal qty = groupPlate.getQty().subtract(groupPlate.getFrozen_qty()).abs(); updateWrapper.set(GroupPlate::getQty, qty).set(GroupPlate::getFrozen_qty, 0); + if (qty.compareTo(BigDecimal.ZERO) == 0) { + updateWrapper.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")); + } } else { //强制确认 updateWrapper.set(GroupPlate::getQty, 0).set(GroupPlate::getFrozen_qty, 0); @@ -525,7 +538,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { .eq(GroupPlate::getGroup_id, whereJson.getString("group_id")); //更新组盘记录表 mdPbGroupplateMapper.update(new GroupPlate(), updateWrapper); - //库存绑定到出库点。 + //库存绑定到出库点 iSchBasePointService.update(new SchBasePoint(), new LambdaUpdateWrapper<>(SchBasePoint.class) .set(SchBasePoint::getVehicle_code, groupPlate.getStoragevehicle_code()) .set(SchBasePoint::getIos_id, BaseDataEnum.IS_YES_NOT.code("是")) @@ -564,7 +577,6 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { task.put("point_code1", schBasePoint.getPoint_code()); task.put("point_code2", pointCode); task.put("vehicle_code", whereJson.getString("storagevehicle_code")); - task.put("Priority", TaskEnum.ACS_PRIORITY.code("1")); pdaPointTask.create(task); // 更新起点绑定id iSchBasePointService.update( diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/controller/PdaSchPointController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/controller/PdaSchPointController.java index b8b3e0b..3d624fc 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/controller/PdaSchPointController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/controller/PdaSchPointController.java @@ -47,7 +47,6 @@ public class PdaSchPointController { } @PostMapping("/dissect") - @Log("绑定") @SaIgnore public ResponseEntity dissect(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(pdaSchPointService.dissect(whereJson), HttpStatus.OK); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/PdaSchPointService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/PdaSchPointService.java index 86b527b..d478560 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/PdaSchPointService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/PdaSchPointService.java @@ -36,7 +36,6 @@ public interface PdaSchPointService extends IService { PdaResponse binding(JSONObject whereJson); /** - * 绑定 * @param whereJson { * point_code: 点位编码 * point_name: 点位名称 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/impl/PdaSchTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/impl/PdaSchTaskServiceImpl.java index 08d75ce..4ee0e0b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/impl/PdaSchTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/sch_manage/service/impl/PdaSchTaskServiceImpl.java @@ -12,7 +12,7 @@ import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.ext.service.util.AcsResponse; import org.nl.wms.pda.sch_manage.service.PdaSchTaskService; import org.nl.wms.pda.util.PdaResponse; -import org.nl.wms.sch_manage.enums.TaskEnum; +import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; @@ -78,7 +78,6 @@ public class PdaSchTaskServiceImpl extends ServiceImpl code; - - public String code(String desc) { - String code = this.getCode().get(desc); - if (StringUtils.isNotEmpty(code)) { - return code; - } - throw new BadRequestException(this.name() + "对应类型" + desc + "未定义"); - } - - public String check(String code) { - for (Map.Entry entry : this.getCode().entrySet()) - if (entry.getValue().equals("code")) { - return entry.getValue(); - } - throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); - } -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java index 57c2b5a..7c9b4df 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java @@ -103,7 +103,7 @@ public class SchBaseTask implements Serializable { private String create_id; - private String priority; + private Integer priority; private String create_name; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index ed07c86..9bef0de 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -16,7 +16,6 @@ import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; -import org.nl.wms.sch_manage.enums.PointStatusEnum; import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; @@ -27,6 +26,7 @@ import org.nl.wms.sch_manage.service.dao.mapper.SchBaseRegionMapper; import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper; import org.nl.wms.sch_manage.service.dto.SchBasePointQuery; import org.nl.wms.sch_manage.service.util.PointUtils; +import org.nl.wms.warehouse_management.enums.IOSEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -137,7 +137,7 @@ public class SchBasePointServiceImpl extends ServiceImpl().lambda() + iSchBasePointService.update(new UpdateWrapper().lambda() .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) .set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getIos_id, null) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java index 4319469..2ae604d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java @@ -58,10 +58,11 @@ public class StInTask extends AbstractTask { task.setConfig_code(json.getString("task_type")); task.setPoint_code1(json.getString("PickingLocation")); task.setPoint_code2(json.getString("PlacedLocation")); + task.setVehicle_type(json.getString("vehicle_type")); task.setVehicle_code(json.getString("vehicle_code")); task.setGroup_id(json.getString("group_id")); task.setRequest_param(json.toString()); - task.setPriority(json.getString("Priority")); + task.setAcs_trace_id(json.getString("acs_task_type")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java index 77c0360..96cb6f7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java @@ -8,6 +8,7 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; import org.nl.config.IdUtil; import org.nl.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; @@ -57,9 +58,10 @@ public class StOutTask extends AbstractTask { task.setPoint_code1(json.getString("PickingLocation")); task.setPoint_code2(json.getString("PlacedLocation")); task.setVehicle_code(json.getString("vehicle_code")); + task.setVehicle_type(json.getString("vehicle_type")); task.setGroup_id(json.getString("group_id")); task.setRequest_param(json.toString()); - task.setPriority(json.getString("Priority")); + task.setAcs_trace_id(json.getString("acs_task_type")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java index 70bb465..1e12b12 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleInTask.java @@ -3,6 +3,7 @@ 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.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; @@ -19,6 +20,9 @@ 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.IOSEnum; +import org.nl.wms.warehouse_management.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_management.service.dao.GroupPlate; +import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -32,6 +36,11 @@ import org.springframework.transaction.annotation.Transactional; @Component(value = "VehicleInTask") @TaskType("VehicleInTask") public class VehicleInTask extends AbstractTask { + /** + * 组盘记录 + */ + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; /** * 任务服务类 @@ -67,8 +76,9 @@ public class VehicleInTask extends AbstractTask { task.setPoint_code1(json.getString("point_code1")); task.setPoint_code2(json.getString("point_code2")); task.setVehicle_code(json.getString("vehicle_code")); + task.setVehicle_type(json.getString("vehicle_type")); task.setRequest_param(json.toString()); - task.setPriority(json.getString("Priority")); + task.setAcs_trace_id(json.getString("acs_task_type")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); @@ -79,7 +89,6 @@ public class VehicleInTask extends AbstractTask { @Override public AcsTaskDto sendAcsParam(String taskId) { SchBaseTask taskDao = taskService.getById(taskId); - // 组织下发给acs的数据 AcsTaskDto acsTaskDto = new AcsTaskDto(); acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); @@ -146,17 +155,23 @@ public class VehicleInTask extends AbstractTask { // 更新终点 iStructattrService.update( new UpdateWrapper().lambda() - .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) - .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) - .set(Structattr::getTaskdtl_id, null) - .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) + .set(Structattr::getTaskdtl_id, null) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) ); // 更新起点 iSchBasePointService.update( new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) - .set(SchBasePoint::getVehicle_code, null) - .set(SchBasePoint::getIos_id, null) + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + .set(SchBasePoint::getVehicle_code, null) + .set(SchBasePoint::getIos_id, null) + ); + // 更新库存 + iMdPbGroupplateService.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class) + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) + .eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code()) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) ); // 更新任务 taskObj.setRemark("已完成"); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleOutTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleOutTask.java index b077c84..9dfe940 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleOutTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/VehicleOutTask.java @@ -58,9 +58,10 @@ public class VehicleOutTask extends AbstractTask { task.setPoint_code1(json.getString("PickingLocation")); task.setPoint_code2(json.getString("PlacedLocation")); task.setVehicle_code(json.getString("vehicle_code")); + task.setVehicle_type(json.getString("vehicle_type")); task.setGroup_id(json.getString("group_id")); task.setRequest_param(json.toString()); - task.setPriority(json.getString("Priority")); + task.setAcs_trace_id(json.getString("acs_task_type")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java index b10c599..b8f49b3 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java @@ -42,7 +42,9 @@ public enum IOSEnum { )), // 点位状态 - POINT_STATUS(MapOf.of("无货", "0", "有货", "1" )), + POINT_STATUS(MapOf.of("无货", "0", "有货", "1", "空载具", "2" )), + // 绑定操作 + BIND_OR_UNBIND(MapOf.of("解绑", "0", "绑定", "1" )), // 单据创建类型 CREATE_MODE(MapOf.of("PC产生", "1", "终端产生", "2", "外部接口产生", "3")), diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java index a5c3022..993cfec 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -28,6 +29,7 @@ import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto; 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; @@ -61,8 +63,12 @@ import java.util.stream.Collectors; * 2025/5/29 */ @Service -public class OutBillServiceImpl extends ServiceImpl implements IOutBillService { - +public class OutBillServiceImpl extends ServiceImpl implements IOutBillService { + /** + * 点位服务 + */ + @Autowired + private ISchBasePointService iSchBasePointService; @Resource private IOStorInvMapper ioStorInvMapper; @@ -1212,6 +1218,14 @@ public class OutBillServiceImpl extends ServiceImpl i finish_map.put("inv_id", null); finish_map.put("inv_code", null); iStructattrService.updateStatusByCode("1", finish_map); + // 更新终点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, task.getPoint_code2()) + .set(SchBasePoint::getVehicle_code, task.getVehicle_code()) + .set(SchBasePoint::getIos_id, null) + .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货")) + ); if (StringUtils.isBlank(task.getHandle_status())) { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java index 1e9abbd..17dc06d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java @@ -12,9 +12,8 @@ import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.Structattr; -import org.nl.wms.sch_manage.enums.TaskEnum; +import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.service.ISchBaseTaskService; -import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.util.tasks.MoveTask; import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; @@ -90,7 +89,6 @@ public class StIvtMoveinvdtlServiceImpl extends ServiceImpl().lambda().eq(MdPbStoragevehicleinfo::getStoragevehicle_code, where.getString("vehicle_code"))); + String acsTaskType = StatusEnum.ACS_TASK_TYPE.getR(mdPbStoragevehicleinfo.getStoragevehicle_type()); + where.put("acs_task_type", acsTaskType); + where.put("vehicle_type", mdPbStoragevehicleinfo.getStoragevehicle_type()); } /** @@ -334,11 +352,10 @@ public class UpdateIvtUtils { public String sendRcsParam(SchBaseTask taskDao) { AcsTaskDto acsTaskDto = new AcsTaskDto(); - acsTaskDto.setModelProcessCode(taskDao.getVehicle_type()); + acsTaskDto.setModelProcessCode(taskDao.getAcs_trace_id()); acsTaskDto.setOrderId(taskDao.getTask_code()); acsTaskDto.setFromSystem("WMS"); acsTaskDto.setPriority(taskDao.getPriority()); - acsTaskDto.setShelfNumber(taskDao.getVehicle_code()); TaskOrderDetail detail = new TaskOrderDetail(); detail.setTaskPath(taskDao.getPoint_code2() + "," + taskDao.getPoint_code1()); detail.setShelfNumber(taskDao.getVehicle_code()); @@ -350,7 +367,26 @@ public class UpdateIvtUtils { List detailList = new ArrayList<>(); detailList.add(detail); acsTaskDto.setTaskOrderDetail(detailList); - return JSON.toJSONString(acsTaskDto, true); + return JSON.toJSONString(acsTaskDto, true); } + /** + * 校验仓库是否允许该载具类型出入库 + */ + public Sectattr checkVehicleType(String sectId, String vehicleCode) { + //查询载具 + MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getOne(new QueryWrapper().lambda().eq(MdPbStoragevehicleinfo::getStoragevehicle_code, vehicleCode)); + String vehicleType = mdPbStoragevehicleinfo.getStoragevehicle_type(); + // 查询库区 + Sectattr sectDao = iSectattrService.getById(sectId); + String vehicleTypeList = sectDao.getExt_id(); + if (StringUtils.isBlank(vehicleTypeList)) { + throw new BadRequestException("库区:【" + sectDao.getSect_code() + "】未配置允许的载具类型!"); + } + List allowedVehicleTypes = Arrays.asList(vehicleTypeList.split(",")); + if (!allowedVehicleTypes.contains(vehicleType)) { + throw new BadRequestException("该载具类型【" + mdPbStoragevehicleinfo.getStoragevehicle_name() + "】不在仓库【"+sectDao.getSect_name()+"】的出入库范围内!"); + } + return sectDao; + } } diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 6af346c..b1cacc2 100644 --- a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -9,7 +9,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://${DB_HOST:192.168.81.251}:${DB_PORT:3306}/${DB_NAME:wms_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false # url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml b/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml new file mode 100644 index 0000000..09f6184 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml @@ -0,0 +1,139 @@ +server: + port: 8011 +#配置数据源 +spring: + main: + allow-bean-definition-overriding: true + allow-circular-references: true + datasource: + druid: + db-type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3302}/${DB_NAME:wms_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + # url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms_oulun}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + username: ${DB_USER:root} + password: ${DB_PWD:Noble123456.} + # 初始连接数 + initial-size: 15 + # 最小连接数 + min-idle: 25 + # 最大连接数 + max-active: 40 + # 是否自动回收超时连接 + remove-abandoned: true + # 超时时间(以秒数为单位) + remove-abandoned-timeout: 180 + # 获取连接超时时间 + max-wait: 9000 + # 连接有效性检测时间 + time-between-eviction-runs-millis: 20000 + # 连接在池中最小生存的时间 + min-evictable-idle-time-millis: 300000 + # 连接在池中最大生存的时间 + max-evictable-idle-time-millis: 900000 + # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除 + test-while-idle: true + # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个 + test-on-borrow: false + # 是否在归还到池中前进行检验 + test-on-return: false + # 检测连接是否有效 + validation-query: select 1 from dual + # 配置监控统计 + webStatFilter: + enabled: true + stat-view-servlet: + enabled: true + url-pattern: /druid/* + reset-enable: false + allow: 127.0.0.1 + filters: + DruidFilter,stat + log-abandoned: false + keep-alive: true + keep-alive-between-time-millis: 20000 + + redis: + #数据库索引 + database: ${REDIS_DB:1} + #host: ${REDIS_HOST:127.0.0.1} + host: ${REDIS_HOST:localhost} + port: ${REDIS_PORT:6379} + password: ${REDIS_PWD:} + #连接超时时间 + timeout: 5000 + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 + +# 登录相关配置 +login: + # 登录缓存 + cache-enable: true + # 是否限制单用户登录 + single-login: false + # 验证码 + login-code: + # 验证码类型配置 查看 LoginProperties 类 + code-type: arithmetic + # 登录图形验证码有效时间/分钟 + expiration: 2 + # 验证码高度 + width: 111 + # 验证码宽度 + heigth: 36 + # 内容长度 + length: 2 + # 字体名称,为空则使用默认字体 + font-name: + # 字体大小 + font-size: 25 + +#jwt +jwt: + header: Authorization + # 令牌前缀 + token-start-with: Bearer + # 必须使用最少88位的Base64对该令牌进行编码 + base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= + # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html + token-validity-in-seconds: 14400000 + # 在线用户key + online-key: online-token- + # 验证码 + code-key: code-key- + # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 + detect: 1800000 + # 续期时间范围,默认1小时,单位毫秒 + renew: 3600000 + +sa-token: + # token 名称 (同时也是cookie名称) + token-name: Authorization + # token 有效期,单位s 默认30天, -1代表永不过期 + timeout: 2592000 + # token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒 + activity-timeout: -1 + # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) + is-concurrent: true + # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) + is-share: false + # token风格 + token-style: random-128 + # 是否输出操作日志 + is-log: false + jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq + # token 前缀 + token-prefix: + is-read-cookie: false + is-print: false +lucene: + index: + path: D:\lms\lucene\index diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/nladmin-system/nlsso-server/src/main/resources/config/application.yml index 1d52e5e..289acb1 100644 --- a/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -13,7 +13,7 @@ spring: profiles: active: dev jackson: - time-zone: GMT+8 + time-zone: GMT+8730 885 969 data: redis: repositories: @@ -61,7 +61,7 @@ file: avatarMaxSize: 5 logging: file: - path: D:\log\beian\lms + path: D:\log\wms config: classpath:logback-spring.xml # sa-token白名单配置 security: diff --git a/nladmin-system/nlsso-server/src/main/resources/log/ErpToWms.xml b/nladmin-system/nlsso-server/src/main/resources/log/ErpToWms.xml deleted file mode 100644 index 3d60c0e..0000000 --- a/nladmin-system/nlsso-server/src/main/resources/log/ErpToWms.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - ${LOG_HOME}/ErpToWms/%d{yyyy-MM-dd}.%i.log - - 15 - - 200MB - - 2GB - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - ${log.charset} - - - - - - - - diff --git a/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index c949b1a..e94db65 100644 --- a/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -33,33 +33,12 @@ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - - - - ${LOG_HOME}/ErpLog/%d{yyyy-MM-dd}.%i.log - - 7 - - 100MB - - 20GB - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - - 2 500 - - 2 - 500 - - @@ -102,39 +81,86 @@ + - s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + diff --git a/nladmin-ui/.env.development b/nladmin-ui/.env.development index 6372089..e37a9a4 100644 --- a/nladmin-ui/.env.development +++ b/nladmin-ui/.env.development @@ -2,7 +2,7 @@ ENV = 'development' # 接口地址 VUE_APP_BASE_API = 'http://localhost:8011' -VUE_APP_WS_API = 'ws://localhost:801' +VUE_APP_WS_API = 'ws://localhost:8011' # 是否启用 babel-plugin-dynamic-import-node插件 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/nladmin-ui/.env.production b/nladmin-ui/.env.production index 8d06dfb..4ce9728 100644 --- a/nladmin-ui/.env.production +++ b/nladmin-ui/.env.production @@ -2,6 +2,6 @@ ENV = 'production' # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http -VUE_APP_BASE_API = 'http://10.93.41.201:8011' +VUE_APP_BASE_API = 'http://localhost:8011' # 如果接口是 http 形式, wss 需要改为 ws -VUE_APP_WS_API = 'ws://10.93.41.201:8010' +VUE_APP_WS_API = 'ws://localhost:8011' diff --git a/nladmin-ui/src/views/wms/sch/point/index.vue b/nladmin-ui/src/views/wms/sch/point/index.vue index 6314e8e..1225a0e 100644 --- a/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/nladmin-ui/src/views/wms/sch/point/index.vue @@ -37,12 +37,12 @@ - - - - - + + + + + + + + + + + + + + + + - + > @@ -109,7 +108,7 @@ - + - - + + @@ -198,7 +210,7 @@ - + - - - - - - + > + + + + + + + + + + + + + + + - + @@ -241,8 +252,8 @@ v-for="item in dict.vehicle_type" :key="item.value" :label="item.label" - :value="item.value"> - + :value="item.value" + /> @@ -251,18 +262,32 @@ v-for="item in dict.vehicle_type" :key="item.value" :label="item.label" - :value="item.value"> - + :value="item.value" + /> - + - {{ item.label }} + + {{ item.label }} + - {{ item.label }} + + {{ item.label }} + @@ -274,56 +299,133 @@ - + - + - - - - - - - + + + + + - - + + - - - - - - - - + + + + + + + + - + - + @@ -395,7 +497,7 @@ const defaultForm = { } export default { name: 'Point', - dicts: ['vehicle_type', 'TrueOrFalse'], + dicts: ['vehicle_type', 'point_status', 'TrueOrFalse'], components: { PointDialog, ViewDialog, pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { diff --git a/nladmin-ui/src/views/wms/sch/task/index.vue b/nladmin-ui/src/views/wms/sch/task/index.vue index 3b74d1f..bcfdeae 100644 --- a/nladmin-ui/src/views/wms/sch/task/index.vue +++ b/nladmin-ui/src/views/wms/sch/task/index.vue @@ -200,7 +200,7 @@ --> @@ -299,7 +299,7 @@ const defaultForm = { } export default { name: 'Task', - dicts: ['vehicle_type', 'create_mode', 'finished_type'], + dicts: ['storagevehicle_type', 'create_mode', 'finished_type'], components: { pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() {