From 6fe921f924cc1b818189f263d88bd9d308e387f2 Mon Sep 17 00:00:00 2001 From: "HUOJIN\\92525" Date: Tue, 23 Dec 2025 15:04:26 +0800 Subject: [PATCH] no message --- .../modules/agvTask/mapper/AgvTaskMapper.java | 8 +++ .../base/controller/ItemController.java | 20 ------ .../controller/ConveyorLineController.java | 2 + .../receive/controller/AsnController.java | 63 ++++++++++++++++++- .../processor/ReceiveBackProcessor.java | 3 + .../shipping/controller/PickController.java | 38 ++++++++++- .../service/processor/PickProcessor.java | 11 ++-- 7 files changed, 114 insertions(+), 31 deletions(-) diff --git a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/agvTask/mapper/AgvTaskMapper.java b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/agvTask/mapper/AgvTaskMapper.java index bb4d3e6..97dec8d 100644 --- a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/agvTask/mapper/AgvTaskMapper.java +++ b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/agvTask/mapper/AgvTaskMapper.java @@ -58,4 +58,12 @@ public interface AgvTaskMapper extends BaseMapper { */ @Select(value = "select * from data_agv_task where end_code = #{endCode} and type='OUTBOUND' and status = 4 and agv_vendor = 'TES' order by create_time desc limit 1 ") AgvTask queryByLastEndCode(@Param("endCode") String endCode); + + /** + * 根据业务ID查询AGV任务 + * + * @param businessId 业务ID + */ + @Select(value = "select * from data_agv_task where business_detail_id = #{businessId} and type='INBOUND' and agv_vendor = 'TES' ") + AgvTask queryByBusinessId(@Param("businessId") Long businessId); } diff --git a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/base/controller/ItemController.java b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/base/controller/ItemController.java index 70a1d3f..7308f8e 100644 --- a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/base/controller/ItemController.java +++ b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/base/controller/ItemController.java @@ -1,41 +1,21 @@ package org.cpte.modules.base.controller; import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; - import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.common.system.query.QueryRuleEnum; -import org.jeecg.common.util.oConvertUtils; import org.cpte.modules.base.entity.Item; import org.cpte.modules.base.service.IItemService; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; - -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.def.NormalExcelConstants; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; -import com.alibaba.fastjson.JSON; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import org.jeecg.common.aspect.annotation.AutoLog; diff --git a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/conveyorLine/controller/ConveyorLineController.java b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/conveyorLine/controller/ConveyorLineController.java index 9e4946e..2ceed7e 100644 --- a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/conveyorLine/controller/ConveyorLineController.java +++ b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/conveyorLine/controller/ConveyorLineController.java @@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; import org.cpte.modules.conveyorLine.request.ScanTrayRequest; import org.cpte.modules.conveyorLine.service.IConveyorLineService; import org.jeecg.common.api.vo.Result; @@ -30,6 +31,7 @@ public class ConveyorLineController { @AutoLog(value = "输送线扫描") @Operation(summary = "输送线-扫描托盘") @PostMapping(value = "/scanTray") + @RequiresPermissions("conveyorLine:data_asn:scanTray") public Result scanTray(@RequestBody @Valid ScanTrayRequest scanTrayRequest) { iConveyorLineService.scanTray(scanTrayRequest); return Result.OK("扫描成功"); diff --git a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/controller/AsnController.java b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/controller/AsnController.java index 1622b70..13b3b30 100644 --- a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/controller/AsnController.java +++ b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/controller/AsnController.java @@ -5,11 +5,21 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; + import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.StringUtils; +import org.cpte.modules.agvTask.entity.AgvTask; +import org.cpte.modules.agvTask.mapper.AgvTaskMapper; +import org.cpte.modules.base.entity.Stock; +import org.cpte.modules.base.mapper.StockMapper; import org.cpte.modules.constant.GeneralConstant; +import org.cpte.modules.receive.service.processor.ReceiveBackProcessor; import org.cpte.modules.serialNumber.AsnSerialNumberRule; +import org.cpte.modules.shipping.entity.Task; +import org.cpte.modules.tesAgv.request.TesCallbackRequest; +import org.cpte.modules.tesAgv.service.ITesAgvService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -52,12 +62,18 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; @RequestMapping("/receive/asn") @Slf4j public class AsnController { + @Autowired + private AgvTaskMapper agvTaskMapper; + @Autowired + private StockMapper stockMapper; @Autowired private IAsnService asnService; @Autowired private IAsnDetailService asnDetailService; @Autowired - private AsnSerialNumberRule asnSerialNumberRule; + private ITesAgvService tesAgvService; + @Autowired + private ReceiveBackProcessor receiveBackProcessor; /** * 分页列表查询 @@ -92,8 +108,6 @@ public class AsnController { @PostMapping(value = "/add") public Result add(@RequestBody AsnPage asnPage) { Asn asn = new Asn(); - String orderNo = asnSerialNumberRule.generateSerialNumber(GeneralConstant.ASN_ORDER_NO); - asn.setOrderNo(orderNo); BeanUtils.copyProperties(asnPage, asn); asnService.saveMain(asn, asnPage.getAsnDetailList()); return Result.OK("添加成功!"); @@ -265,6 +279,49 @@ public class AsnController { return Result.OK("文件导入失败!"); } + @AutoLog(value = "收货") + @Operation(summary = "收货") + @RequiresPermissions("receive:data_asn:receiveAsn") + @GetMapping(value = "/receiveAsn") + public Result receiveAsn(@RequestParam(name = "id", required = true) Long id) { + if (id == null) { + return Result.error("请选择需要收货的入库单"); + } + try { + //手工完成收货,相当于Tes到达目标库位,上报任务完成即可收货。 + AgvTask agvTask = agvTaskMapper.queryByBusinessId(id); + if (agvTask == null) { + return Result.error("【" + id + "】任务不存在"); + } + TesCallbackRequest tesCallbackRequest = new TesCallbackRequest(); + TesCallbackRequest.Content content = new TesCallbackRequest.Content(); + content.setBizID(String.valueOf(agvTask.getId())); + content.setStatus(4); + tesCallbackRequest.setContent(content); + tesAgvService.callBackTask(tesCallbackRequest); + return Result.OK("收货成功"); + } catch (Exception e) { + return Result.error("收货异常:" + e.getMessage()); + } + } + @AutoLog(value = "入库回传") + @Operation(summary = "入库回传") + @RequiresPermissions("receive:data_asn:receiveBack") + @GetMapping(value = "/receiveBack") + public Result receiveBack(@RequestParam(name = "id", required = true) Long id) { + if (id == null) { + return Result.error("请选择需要回传的入库单"); + } + try { + Asn asn = asnService.getById(id); + List asnDetails = asnDetailService.selectByMainId(id); + Stock stock = stockMapper.selectById(asnDetails.get(0).getStockId()); + receiveBackProcessor.receiveBack(asn, stock); + return Result.OK("回传成功"); + } catch (Exception e) { + return Result.error("回传异常:" + e.getMessage()); + } + } } diff --git a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/service/processor/ReceiveBackProcessor.java b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/service/processor/ReceiveBackProcessor.java index 064d5c4..fe5d4f7 100644 --- a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/service/processor/ReceiveBackProcessor.java +++ b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/receive/service/processor/ReceiveBackProcessor.java @@ -132,6 +132,9 @@ public class ReceiveBackProcessor { asn.setStatus(AsnStatusEnum.CLOSED.getValue()); List asnDetails = asnDetailMapper.selectByMainId(asn.getId()); for (AsnDetail asnDetail : asnDetails) { + if(AsnStatusEnum.CLOSED.getValue().equals(asnDetail.getStatus())){ + continue; + } asnDetail.setStatus(AsnStatusEnum.CLOSED.getValue()); updateToAsnDetail.add(asnDetail); } diff --git a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/controller/PickController.java b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/controller/PickController.java index 5466527..812f628 100644 --- a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/controller/PickController.java +++ b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/controller/PickController.java @@ -8,11 +8,18 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; +import org.cpte.modules.base.entity.Stock; import org.cpte.modules.constant.GeneralConstant; +import org.cpte.modules.receive.entity.Asn; +import org.cpte.modules.receive.entity.AsnDetail; +import org.cpte.modules.receive.service.processor.ReceiveBackProcessor; import org.cpte.modules.serialNumber.PickSerialNumberRule; import org.cpte.modules.shipping.entity.Task; import org.cpte.modules.shipping.mapper.TaskMapper; import org.cpte.modules.shipping.service.ITaskService; +import org.cpte.modules.shipping.service.processor.PickBackProcessor; +import org.cpte.modules.shipping.service.processor.PickProcessor; +import org.cpte.modules.shipping.vo.PickData; import org.jeecg.common.system.query.QueryRuleEnum; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; @@ -65,7 +72,8 @@ public class PickController { @Autowired private ITaskService taskService; @Autowired - private PickSerialNumberRule pickSerialNumberRule; + private PickBackProcessor pickBackProcessor; + /** * 分页列表查询 @@ -101,8 +109,6 @@ public class PickController { @PostMapping(value = "/add") public Result add(@RequestBody PickPage pickPage) { Pick pick = new Pick(); - String orderNo = pickSerialNumberRule.generateSerialNumber(GeneralConstant.PICK_ORDER_NO); - pick.setOrderNo(orderNo); BeanUtils.copyProperties(pickPage, pick); pickService.saveMain(pick, pickPage.getPickDetailList()); return Result.OK("添加成功!"); @@ -347,4 +353,30 @@ public class PickController { return Result.error("拣货异常:" + e.getMessage()); } } + + @AutoLog(value = "出库回传") + @Operation(summary = "出库回传") + @RequiresPermissions("shipping:data_pick:pickBack") + @GetMapping(value = "/pickBack") + public Result pickBack(@RequestParam(name = "id", required = true) Long id) { + if (id == null) { + return Result.error("请选择需要回传的出库单"); + } + try { + PickData data=new PickData(); + Pick pick = pickService.getById(id); + Map pickMap = new HashMap<>(); + pickMap.put(id,pick); + List pickDetails = pickDetailService.selectByMainId(id); + Map pickDetailMap = pickDetails. stream().collect(Collectors.toMap(PickDetail::getId, PickDetail -> PickDetail)); + List tasks = taskMapper.queryTaskByMainId(id); + data.setPickMap(pickMap); + data.setPickDetailMap(pickDetailMap); + pickBackProcessor.pickBack(data,tasks); + pickDetailService.refreshPick(pick, pickDetailService.selectByMainId(id)); + return Result.OK("回传成功"); + } catch (Exception e) { + return Result.error("回传异常:" + e.getMessage()); + } + } } diff --git a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/service/processor/PickProcessor.java b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/service/processor/PickProcessor.java index 57947e4..d7bea86 100644 --- a/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/service/processor/PickProcessor.java +++ b/cpte-boot-module/cpte-module-wms/src/main/java/org/cpte/modules/shipping/service/processor/PickProcessor.java @@ -84,16 +84,17 @@ public class PickProcessor { List updateToPoint = new ArrayList<>(); //3.拣货 - pickTask(data, pickDetailUpdateMap, updateToTask, deleteToInventory,inventoryUpdateMap, updateToStock, updateToPoint); + pickTask(data, pickDetailUpdateMap, updateToTask, deleteToInventory, inventoryUpdateMap, updateToStock, updateToPoint); //4.批量操作 pickDetailService.batchOperationPick(deleteToInventory, pickDetailUpdateMap, updateToTask, updateToStock, updateToPoint); - //5.刷新出库单 + //5.回传 + pickBackProcessor.pickBack(data, updateToTask); + + //6.刷新出库单 refreshData(data); - //6.回传 - pickBackProcessor.pickBack(data, updateToTask); } /** @@ -141,7 +142,7 @@ public class PickProcessor { private void pickTask(PickData data, Map pickDetailUpdateMap, List updateToTask, List deleteToInventory, Map inventoryUpdateMap, List updateToStock, List updateToPoint) { for (Task task : data.getTasks()) { try { - processorTaskLock(data, task, pickDetailUpdateMap, updateToTask, deleteToInventory, inventoryUpdateMap,updateToStock, updateToPoint); + processorTaskLock(data, task, pickDetailUpdateMap, updateToTask, deleteToInventory, inventoryUpdateMap, updateToStock, updateToPoint); } catch (Exception e) { log.error("拣货异常", e); //记录拣货异常日志