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 ") @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); 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; package org.cpte.modules.base.controller;
import java.util.Arrays; 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.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator; 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.entity.Item;
import org.cpte.modules.base.service.IItemService; import org.cpte.modules.base.service.IItemService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; 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.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; 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 org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import org.jeecg.common.aspect.annotation.AutoLog; 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 io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.cpte.modules.conveyorLine.request.ScanTrayRequest; import org.cpte.modules.conveyorLine.request.ScanTrayRequest;
import org.cpte.modules.conveyorLine.service.IConveyorLineService; import org.cpte.modules.conveyorLine.service.IConveyorLineService;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
@ -30,6 +31,7 @@ public class ConveyorLineController {
@AutoLog(value = "输送线扫描") @AutoLog(value = "输送线扫描")
@Operation(summary = "输送线-扫描托盘") @Operation(summary = "输送线-扫描托盘")
@PostMapping(value = "/scanTray") @PostMapping(value = "/scanTray")
@RequiresPermissions("conveyorLine:data_asn:scanTray")
public Result<String> scanTray(@RequestBody @Valid ScanTrayRequest scanTrayRequest) { public Result<String> scanTray(@RequestBody @Valid ScanTrayRequest scanTrayRequest) {
iConveyorLineService.scanTray(scanTrayRequest); iConveyorLineService.scanTray(scanTrayRequest);
return Result.OK("扫描成功"); return Result.OK("扫描成功");

View File

@ -5,11 +5,21 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; 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.constant.GeneralConstant;
import org.cpte.modules.receive.service.processor.ReceiveBackProcessor;
import org.cpte.modules.serialNumber.AsnSerialNumberRule; 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.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ExportParams;
@ -52,12 +62,18 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
@RequestMapping("/receive/asn") @RequestMapping("/receive/asn")
@Slf4j @Slf4j
public class AsnController { public class AsnController {
@Autowired
private AgvTaskMapper agvTaskMapper;
@Autowired
private StockMapper stockMapper;
@Autowired @Autowired
private IAsnService asnService; private IAsnService asnService;
@Autowired @Autowired
private IAsnDetailService asnDetailService; private IAsnDetailService asnDetailService;
@Autowired @Autowired
private AsnSerialNumberRule asnSerialNumberRule; private ITesAgvService tesAgvService;
@Autowired
private ReceiveBackProcessor receiveBackProcessor;
/** /**
* *
@ -92,8 +108,6 @@ public class AsnController {
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody AsnPage asnPage) { public Result<String> add(@RequestBody AsnPage asnPage) {
Asn asn = new Asn(); Asn asn = new Asn();
String orderNo = asnSerialNumberRule.generateSerialNumber(GeneralConstant.ASN_ORDER_NO);
asn.setOrderNo(orderNo);
BeanUtils.copyProperties(asnPage, asn); BeanUtils.copyProperties(asnPage, asn);
asnService.saveMain(asn, asnPage.getAsnDetailList()); asnService.saveMain(asn, asnPage.getAsnDetailList());
return Result.OK("添加成功!"); return Result.OK("添加成功!");
@ -265,6 +279,49 @@ public class AsnController {
return Result.OK("文件导入失败!"); 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()); asn.setStatus(AsnStatusEnum.CLOSED.getValue());
List<AsnDetail> asnDetails = asnDetailMapper.selectByMainId(asn.getId()); List<AsnDetail> asnDetails = asnDetailMapper.selectByMainId(asn.getId());
for (AsnDetail asnDetail : asnDetails) { for (AsnDetail asnDetail : asnDetails) {
if(AsnStatusEnum.CLOSED.getValue().equals(asnDetail.getStatus())){
continue;
}
asnDetail.setStatus(AsnStatusEnum.CLOSED.getValue()); asnDetail.setStatus(AsnStatusEnum.CLOSED.getValue());
updateToAsnDetail.add(asnDetail); updateToAsnDetail.add(asnDetail);
} }

View File

@ -8,11 +8,18 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.cpte.modules.base.entity.Stock;
import org.cpte.modules.constant.GeneralConstant; 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.serialNumber.PickSerialNumberRule;
import org.cpte.modules.shipping.entity.Task; import org.cpte.modules.shipping.entity.Task;
import org.cpte.modules.shipping.mapper.TaskMapper; import org.cpte.modules.shipping.mapper.TaskMapper;
import org.cpte.modules.shipping.service.ITaskService; 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.jeecg.common.system.query.QueryRuleEnum;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@ -65,7 +72,8 @@ public class PickController {
@Autowired @Autowired
private ITaskService taskService; private ITaskService taskService;
@Autowired @Autowired
private PickSerialNumberRule pickSerialNumberRule; private PickBackProcessor pickBackProcessor;
/** /**
* *
@ -101,8 +109,6 @@ public class PickController {
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody PickPage pickPage) { public Result<String> add(@RequestBody PickPage pickPage) {
Pick pick = new Pick(); Pick pick = new Pick();
String orderNo = pickSerialNumberRule.generateSerialNumber(GeneralConstant.PICK_ORDER_NO);
pick.setOrderNo(orderNo);
BeanUtils.copyProperties(pickPage, pick); BeanUtils.copyProperties(pickPage, pick);
pickService.saveMain(pick, pickPage.getPickDetailList()); pickService.saveMain(pick, pickPage.getPickDetailList());
return Result.OK("添加成功!"); return Result.OK("添加成功!");
@ -347,4 +353,30 @@ public class PickController {
return Result.error("拣货异常:" + e.getMessage()); 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

@ -89,11 +89,12 @@ public class PickProcessor {
//4.批量操作 //4.批量操作
pickDetailService.batchOperationPick(deleteToInventory, pickDetailUpdateMap, updateToTask, updateToStock, updateToPoint); pickDetailService.batchOperationPick(deleteToInventory, pickDetailUpdateMap, updateToTask, updateToStock, updateToPoint);
//5.刷新出库单 //5.回传
pickBackProcessor.pickBack(data, updateToTask);
//6.刷新出库单
refreshData(data); refreshData(data);
//6.回传
pickBackProcessor.pickBack(data, updateToTask);
} }
/** /**