no message

main
HUOJIN\92525 2025-12-23 15:04:26 +08:00
parent 5be51acf4e
commit 6fe921f924
7 changed files with 114 additions and 31 deletions

View File

@ -58,4 +58,12 @@ public interface AgvTaskMapper extends BaseMapper<AgvTask> {
*/
@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);
/**
* IDAGV
*
* @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);
}

View File

@ -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;

View File

@ -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<String> scanTray(@RequestBody @Valid ScanTrayRequest scanTrayRequest) {
iConveyorLineService.scanTray(scanTrayRequest);
return Result.OK("扫描成功");

View File

@ -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<String> 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<String> 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<String> receiveBack(@RequestParam(name = "id", required = true) Long id) {
if (id == null) {
return Result.error("请选择需要回传的入库单");
}
try {
Asn asn = asnService.getById(id);
List<AsnDetail> 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());
}
}
}

View File

@ -132,6 +132,9 @@ public class ReceiveBackProcessor {
asn.setStatus(AsnStatusEnum.CLOSED.getValue());
List<AsnDetail> 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);
}

View File

@ -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<String> 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<String> 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<Long,Pick> pickMap = new HashMap<>();
pickMap.put(id,pick);
List<PickDetail> pickDetails = pickDetailService.selectByMainId(id);
Map<Long,PickDetail> pickDetailMap = pickDetails. stream().collect(Collectors.toMap(PickDetail::getId, PickDetail -> PickDetail));
List<Task> 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());
}
}
}

View File

@ -84,16 +84,17 @@ public class PickProcessor {
List<Point> 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<Long, PickDetail> pickDetailUpdateMap, List<Task> updateToTask, List<Inventory> deleteToInventory, Map<Long, Inventory> inventoryUpdateMap, List<Stock> updateToStock, List<Point> 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);
//记录拣货异常日志