From e04781108e51566a09e95d3d9cf97aa6b611d4ac Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Tue, 9 Dec 2025 14:24:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9B=B4=E6=8E=A5=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IStructattrService.java | 1 + .../service/impl/StructattrServiceImpl.java | 11 +++ .../controller/PdaProductionController.java | 12 +++ ...oller.java => PdaWarehouseController.java} | 18 ++--- .../service/PdaBuildParamService.java | 5 +- .../service/PdaProductionService.java | 9 +++ ...tService.java => PdaWarehouseService.java} | 6 +- .../impl/DefaultPdaBuildParamService.java | 17 +++- .../impl/PdaProductionServiceImpl.java | 78 +++++++++++++++++- ...Impl.java => PdaWarehouseServiceImpl.java} | 80 +++++++++++++------ .../service/ISchBasePointService.java | 2 + .../service/impl/SchBasePointServiceImpl.java | 7 ++ .../service/util/tasks/TabletingInTask.java | 2 +- .../warehouse_management/enums/IOSEnum.java | 3 +- .../impl/RawAssistIStorServiceImpl.java | 1 + 15 files changed, 201 insertions(+), 51 deletions(-) rename wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/{PdaPreTreatmentController.java => PdaWarehouseController.java} (65%) rename wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/{PdaPreTreatmentService.java => PdaWarehouseService.java} (67%) rename wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/{PdaPreTreatmentServiceImpl.java => PdaWarehouseServiceImpl.java} (58%) diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java index c16dcb9..4b0c886 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java @@ -124,4 +124,5 @@ public interface IStructattrService extends IService { */ List outBoundSectDiv(StrategyStructParam param); + List getByVehicleCode(String search, boolean flag); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index 5bd10d4..654416c 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -426,4 +426,15 @@ public class StructattrServiceImpl extends ServiceImpl getByVehicleCode(String search, boolean flag) { + LambdaQueryWrapper query = new QueryWrapper().lambda() + .eq(Structattr::getIs_used, IOSConstant.IS_DELETE_YES) + .eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO) + .eq(Structattr::getStruct_code, search) + .eq(flag, Structattr::getIs_emptyvehicle, "1"); + return this.list(query); + } + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaProductionController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaProductionController.java index e1d90b1..8741376 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaProductionController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaProductionController.java @@ -99,4 +99,16 @@ public class PdaProductionController { public ResponseEntity productionLine(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(pdaProductionService.productionLine(whereJson), HttpStatus.OK); } + @PostMapping("/receivedIn") + @Log("生产下料-收货入库") + @SaIgnore + public ResponseEntity receivedIn(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaProductionService.receivedIn(whereJson), HttpStatus.OK); + } + @PostMapping("/getVehicleInfo") + @Log("生产下料-收货入库") + @SaIgnore + public ResponseEntity getVehicleInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaProductionService.getVehicleInfo(whereJson), HttpStatus.OK); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaPreTreatmentController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaWarehouseController.java similarity index 65% rename from wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaPreTreatmentController.java rename to wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaWarehouseController.java index 7ffe09e..2a3ae2a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaPreTreatmentController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaWarehouseController.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; -import org.nl.wms.pda.general_management.service.PdaPreTreatmentService; +import org.nl.wms.pda.general_management.service.PdaWarehouseService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -16,29 +16,29 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** - * 预处理功能 + * 仓库管理 * @Author: lyd * @Date: 2025/11/25 */ @RestController @RequiredArgsConstructor -@RequestMapping("/api/pdaPreTreatment") +@RequestMapping("/api/pdaWarehouse") @Slf4j -public class PdaPreTreatmentController { +public class PdaWarehouseController { @Resource - private PdaPreTreatmentService pdaPreTreatmentService; + private PdaWarehouseService pdaWarehouseService; @PostMapping("/getPalletAssembly") - @Log("原辅料入库(直接入库)-获取组袋信息") + @Log("直接入库 - 获取组袋信息") @SaIgnore public ResponseEntity getPalletAssembly(@RequestBody JSONObject param) { - return new ResponseEntity<>(pdaPreTreatmentService.getPalletAssembly(param), HttpStatus.OK); + return new ResponseEntity<>(pdaWarehouseService.getPalletAssembly(param), HttpStatus.OK); } @PostMapping("/confirmPalletAssemblyIn") - @Log("原辅料入库(直接入库)-入库") + @Log("直接入库 - 入库") @SaIgnore public ResponseEntity confirmPalletAssemblyIn(@RequestBody JSONObject param) { - return new ResponseEntity<>(pdaPreTreatmentService.confirmPalletAssemblyIn(param), HttpStatus.OK); + return new ResponseEntity<>(pdaWarehouseService.confirmPalletAssemblyIn(param), HttpStatus.OK); } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java index 3fae090..80e3b64 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaBuildParamService.java @@ -2,6 +2,7 @@ package org.nl.wms.pda.general_management.service; import com.alibaba.fastjson.JSONObject; import org.nl.wms.basedata_manage.service.dao.Sectattr; +import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import java.util.Map; @@ -17,7 +18,7 @@ public interface PdaBuildParamService { * @param param * @param startPoint */ - void doGroupPallet(JSONObject param, SchBasePoint startPoint); + void doGroupPallet(JSONObject param, String vehicleCode); /** * 构建创建任务参数 @@ -34,7 +35,7 @@ public interface PdaBuildParamService { * @param invId * @return */ - Map buildDivStructData(JSONObject param, Sectattr sect, String invId); + Map buildDivStructData(JSONObject param, Sectattr sect, String invId, boolean checked); /** * 构建创建入库单参数 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaProductionService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaProductionService.java index 5d96b19..4891cf5 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaProductionService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaProductionService.java @@ -69,4 +69,13 @@ public interface PdaProductionService { PdaResponse getGroupBucketInfo(JSONObject param); PdaResponse productionLine(JSONObject param); + + /** + * 收货入库 + * @param param + * @return + */ + PdaResponse receivedIn(JSONObject param); + + PdaResponse getVehicleInfo(JSONObject param); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaPreTreatmentService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaWarehouseService.java similarity index 67% rename from wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaPreTreatmentService.java rename to wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaWarehouseService.java index f6c0896..17428ff 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaPreTreatmentService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaWarehouseService.java @@ -1,17 +1,13 @@ package org.nl.wms.pda.general_management.service; import com.alibaba.fastjson.JSONObject; -import org.nl.wms.basedata_manage.service.dao.Sectattr; import org.nl.wms.pda.util.PdaResponse; -import org.nl.wms.sch_manage.service.dao.SchBasePoint; - -import java.util.Map; /** * @Author: lyd * @Date: 2025/11/25 */ -public interface PdaPreTreatmentService { +public interface PdaWarehouseService { PdaResponse getPalletAssembly(JSONObject param); /** diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java index 8cd0796..b82ee1b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/DefaultPdaBuildParamService.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.wms.basedata_manage.service.dao.Sectattr; +import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.pda.general_management.service.PdaBuildParamService; import org.nl.wms.pda.general_management.service.PdaCommonService; import org.nl.wms.pda.general_management.service.dto.AssemblyPalletParam; @@ -48,7 +49,7 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService { private IRawAssistIStorService rawAssistIStorService; @Override - public void doGroupPallet(JSONObject param, SchBasePoint startPoint) { + public void doGroupPallet(JSONObject param, String vehicleCode) { JSONArray rows = param.getJSONArray("rows"); List bagCode = rows .stream() @@ -59,7 +60,7 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService { .in(GroupPlate::getBag_code, bagCode) .eq(GroupPlate::getStatus, "0")); AssemblyPalletParam palletParam = new AssemblyPalletParam(); - palletParam.setVehicle_code(startPoint.getVehicle_code()); + palletParam.setVehicle_code(vehicleCode); palletParam.setGroup_plates(list); pdaCommonService.confirmPalletAssembly(palletParam); } @@ -85,7 +86,7 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService { } @Override - public Map buildDivStructData(JSONObject param, Sectattr sect, String invId) { + public Map buildDivStructData(JSONObject param, Sectattr sect, String invId, boolean checked) { Map divObj = new HashMap<>(); divObj.put("sect_id", sect.getSect_id()); divObj.put("sect_code", param.getString("sect_code")); @@ -93,9 +94,17 @@ public class DefaultPdaBuildParamService implements PdaBuildParamService { divObj.put("struct_id", param.getString("struct_id")); divObj.put("struct_name", param.getString("struct_name")); divObj.put("struct_code", param.getString("struct_code")); - divObj.put("checked", true); + divObj.put("checked", checked); List ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper() .eq(IOStorInvDis::getIostorinv_id, invId)); + for (IOStorInvDis ioStorInvDi : ioStorInvDis) { + ioStorInvDi.setSect_id(sect.getSect_id()); + ioStorInvDi.setSect_code(param.getString("sect_code")); + ioStorInvDi.setSect_name(param.getString("sect_name")); + ioStorInvDi.setStruct_id(param.getString("struct_id")); + ioStorInvDi.setStruct_code(param.getString("struct_name")); + ioStorInvDi.setStruct_name(param.getString("struct_code")); + } if (ioStorInvDis.size() == 0) { throw new BadRequestException("分配明细不存在!"); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java index d1696eb..e9c228a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaProductionServiceImpl.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; @@ -16,7 +17,7 @@ import org.nl.wms.basedata_manage.service.ISectattrService; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; import org.nl.wms.basedata_manage.service.dao.Sectattr; import org.nl.wms.pda.general_management.service.PdaBuildParamService; -import org.nl.wms.pda.general_management.service.PdaPreTreatmentService; +import org.nl.wms.pda.general_management.service.PdaWarehouseService; import org.nl.wms.pda.general_management.service.PdaProductionService; import org.nl.wms.pda.util.PdaResponse; import org.nl.wms.sch_manage.service.ISchBasePointService; @@ -32,6 +33,8 @@ import org.nl.wms.warehouse_management.service.IOutBillService; import org.nl.wms.warehouse_management.service.IRawAssistIStorService; import org.nl.wms.warehouse_management.service.VehicleInService; import org.nl.wms.warehouse_management.service.dao.GroupPlate; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +43,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; import static org.nl.common.utils.ValidationUtil.*; @@ -55,7 +59,7 @@ public class PdaProductionServiceImpl implements PdaProductionService { @Resource private ISchBasePointService pointService; @Resource - private PdaPreTreatmentService pdaPreTreatmentService; + private PdaWarehouseService pdaWarehouseService; @Resource private ISectattrService sectattrService; @Resource @@ -78,6 +82,8 @@ public class PdaProductionServiceImpl implements PdaProductionService { private IMdPdGroupbucketService groupbucketService; @Resource private TaskFactory taskFactory; + @Resource + private RedissonClient redissonClient; @Override public PdaResponse getGroupInfo(JSONObject param) { // search; @@ -250,7 +256,7 @@ public class PdaProductionServiceImpl implements PdaProductionService { Map invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr); String invId = rawAssistIStorService.insertDtl(invObj); // 2 调用分配 - Map divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId); + Map divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true); rawAssistIStorService.divStruct(divObj); // 3 创建任务 Map jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId); @@ -322,4 +328,70 @@ public class PdaProductionServiceImpl implements PdaProductionService { task.create(param); return PdaResponse.requestOk(); } + + @SneakyThrows + @Override + public PdaResponse receivedIn(JSONObject param) { + log.info("拆包缓冲间确认入库:{}", param); + RLock lock = redissonClient.getLock("lock:confirmPalletAssemblyIn"); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + // param:point_code(点位), vehicle_code, sect_code,rows + String search = param.getString("point_code"); + String sect_code = param.getString("sect_code"); + if (ObjectUtil.isEmpty(search)) { + throw new BadRequestException("请输入点位编码!"); + } + SchBasePoint startPoint = pointService.getByPointCode(search, true); + if (ObjectUtil.isEmpty(startPoint)) { + throw new BadRequestException("输入的点位不存在或者点位已被禁用, 请检查输入点位是否正确或是否被禁用!"); + } + if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) { + throw new BadRequestException("点位载具号为空!"); + } + if (ObjectUtil.isEmpty(sect_code)) { + throw new BadRequestException("请选择入库库区!"); + } + Sectattr sectattr = sectattrService.findByCode(sect_code, true); + if (ObjectUtil.isEmpty(sectattr)) { + throw new BadRequestException("库区不存在或者被禁用!"); + } + // 判断任务是否创建 + List tasks = taskService.getTaskByQuery(new LambdaQueryWrapper() + .eq(SchBaseTask::getPoint_code1, search)); + if (tasks.size() > 0) { + throw new BadRequestException("该点位已创建过任务!"); + } + param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("原辅料入库")); + // 1 创建入库单、明细、分配明细 + Map invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr); + String invId = rawAssistIStorService.insertDtl(invObj); + // 2 调用分配 + Map divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true); + rawAssistIStorService.divStruct(divObj); + // 3 创建任务 + Map jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId); + rawAssistIStorService.divPoint(jsonMst); + } else { + throw new BadRequestException("速度太快啦,稍后再试..."); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } + return PdaResponse.requestOk(); + } + + @Override + public PdaResponse getVehicleInfo(JSONObject param) { + // search; + String search = param.getString("vehicle_code").trim(); + if (ObjectUtil.isEmpty(search)) { + throw new BadRequestException("载具不存在!"); + } + List res = groupplateService.getPalletViewByVehicleCode(search); + return PdaResponse.requestParamOk(res); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaPreTreatmentServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaWarehouseServiceImpl.java similarity index 58% rename from wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaPreTreatmentServiceImpl.java rename to wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaWarehouseServiceImpl.java index 1eb78ff..554046e 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaPreTreatmentServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaWarehouseServiceImpl.java @@ -3,13 +3,17 @@ package org.nl.wms.pda.general_management.service.impl; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; +import org.nl.config.MapOf; import org.nl.wms.basedata_manage.service.ISectattrService; +import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.Sectattr; +import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.pda.general_management.service.PdaBuildParamService; -import org.nl.wms.pda.general_management.service.PdaPreTreatmentService; +import org.nl.wms.pda.general_management.service.PdaWarehouseService; import org.nl.wms.pda.util.PdaResponse; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; @@ -23,9 +27,11 @@ import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @Author: lyd @@ -33,7 +39,7 @@ import java.util.concurrent.TimeUnit; */ @Slf4j @Service -public class PdaPreTreatmentServiceImpl implements PdaPreTreatmentService { +public class PdaWarehouseServiceImpl implements PdaWarehouseService { @Resource private ISchBasePointService pointService; @Resource @@ -48,6 +54,9 @@ public class PdaPreTreatmentServiceImpl implements PdaPreTreatmentService { private ISchBaseTaskService taskService; @Resource private PdaBuildParamService defaultPdaBuildParam; + @Resource + private IStructattrService structattrService; + @Override public PdaResponse getPalletAssembly(JSONObject param) { String search = param.getString("search"); @@ -64,49 +73,68 @@ public class PdaPreTreatmentServiceImpl implements PdaPreTreatmentService { @SneakyThrows @Override public PdaResponse confirmPalletAssemblyIn(JSONObject param) { - log.info("拆包缓冲间确认入库:{}", param); + log.info("直接入库:{}", param); RLock lock = redissonClient.getLock("lock:confirmPalletAssemblyIn"); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { - // param:search(点位), rows + // param:search(仓位/载具号), rows String search = param.getString("search"); + String pointCode; + String vehicleCode; if (ObjectUtil.isEmpty(search)) { - throw new BadRequestException("请输入点位编码!"); + throw new BadRequestException("请输入点位/载具编码!"); } - SchBasePoint startPoint = pointService.getByPointCode(search, true); - if (ObjectUtil.isEmpty(startPoint)) { - throw new BadRequestException("输入的点位不存在或者点位已被禁用, 请检查输入点位是否正确或是否被禁用!"); + Structattr startStruct = structattrService.getByCode(search); + if (ObjectUtil.isEmpty(startStruct)) { + vehicleCode = search; + List points = structattrService.getByVehicleCode(search, true); + if (points.size() != 1) { + throw new BadRequestException(points.size() > 1 + ? "该托盘号绑定在多个点位" + points.stream().map(Structattr::getStruct_code).collect(Collectors.toList()) + ",请检查!" + : "该托盘号未绑定到点位或者点位被禁用或者点位以上锁,请检查!"); + } + startStruct = points.get(0); + pointCode = startStruct.getStruct_code(); + } else { + pointCode = search; + vehicleCode = startStruct.getStoragevehicle_code(); } - if (ObjectUtil.isEmpty(startPoint.getVehicle_code())) { + if (ObjectUtil.isEmpty(vehicleCode)) { throw new BadRequestException("点位载具号为空!"); } - if (ObjectUtil.isEmpty(startPoint.getIn_sect())) { - throw new BadRequestException("该点位未配置入库库区,请到点位管理配置!"); - } - Sectattr sectattr = sectattrService.findByCode(startPoint.getIn_sect(), true); - if (ObjectUtil.isEmpty(sectattr)) { - throw new BadRequestException("库区不存在或者被禁用!"); - } // 判断任务是否创建 List tasks = taskService.getTaskByQuery(new LambdaQueryWrapper() - .eq(SchBaseTask::getPoint_code1, search)); + .eq(SchBaseTask::getPoint_code1, pointCode)); if (tasks.size() > 0) { throw new BadRequestException("该点位已创建过任务!"); } + Sectattr sectattr = sectattrService.findByCode(startStruct.getSect_code(), true); + if (ObjectUtil.isEmpty(sectattr)) { + throw new BadRequestException("库区不存在或者被禁用!"); + } + // 点位释放 + structattrService.update(new LambdaUpdateWrapper() + .set(Structattr::getStoragevehicle_code, "") + .set(Structattr::getIs_emptyvehicle, "0") + .eq(Structattr::getStruct_code, startStruct.getStruct_code())); // 0 组盘 - defaultPdaBuildParam.doGroupPallet(param, startPoint); - param.put("vehicle_code", startPoint.getVehicle_code()); - param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("原辅料入库")); + defaultPdaBuildParam.doGroupPallet(param, vehicleCode); + param.put("bill_type", IOSEnum.IN_BILL_TYPE.code("直接入库")); + param.put("vehicle_code", vehicleCode); // 1 创建入库单、明细、分配明细 - Map invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr); + Map invObj = defaultPdaBuildParam.doBuildInvObj(param, null, sectattr); String invId = rawAssistIStorService.insertDtl(invObj); - // 2 调用分配 - Map divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId); + // 2 调用指定分配 + param.put("sect_code", startStruct.getSect_code()); + param.put("sect_name", startStruct.getSect_name()); + param.put("struct_id", startStruct.getStruct_id()); + param.put("struct_name", startStruct.getStruct_name()); + param.put("struct_code", startStruct.getStruct_code()); + Map divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, false); rawAssistIStorService.divStruct(divObj); - // 3 创建任务 - Map jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId); - rawAssistIStorService.divPoint(jsonMst); + // 3、强制确认 + rawAssistIStorService.confirm(MapOf.of("iostorinv_id", invId)); } else { throw new BadRequestException("速度太快啦,稍后再试..."); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java index 0df962a..fa67040 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java @@ -139,4 +139,6 @@ public interface ISchBasePointService extends IService { * @return */ List getCanUsePointByRegion(String regionCode); + + List getByVehicleCode(String search); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index 47e73f4..b4a7417 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -322,4 +322,11 @@ public class SchBasePointServiceImpl extends ServiceImpl getCanUsePointByRegion(String regionCode) { return this.baseMapper.getCanUsePointByRegion(regionCode); } + + @Override + public List getByVehicleCode(String search) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(SchBasePoint::getVehicle_code, search); + return list(lam); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java index 536d249..f1bbfc4 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/TabletingInTask.java @@ -185,7 +185,7 @@ public class TabletingInTask extends AbstractTask { Map invObj = defaultPdaBuildParam.doBuildInvObj(param, startPoint, sectattr); String invId = rawAssistIStorService.insertDtl(invObj); // 2 调用分配 - Map divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId); + Map divObj = defaultPdaBuildParam.buildDivStructData(param, sectattr, invId, true); rawAssistIStorService.divStruct(divObj); // 3 创建任务 Map jsonMst = defaultPdaBuildParam.buildTaskData(startPoint, invId); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java index d7c45e2..6c14763 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java @@ -34,7 +34,8 @@ public enum IOSEnum { IN_BILL_TYPE(MapOf.of( "手工入库", "0009", "原辅料入库", "0001", "剩料回库", "0002", - "中间站入库", "0003" + "中间站入库", "0003", + "直接入库", "0004" )), // 出库业务类型 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java index 68f4419..d7de378 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java @@ -665,6 +665,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl