no message
parent
5be51acf4e
commit
6fe921f924
|
|
@ -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);
|
||||
|
||||
/**
|
||||
* 根据业务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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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("扫描成功");
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
//记录拣货异常日志
|
||||
|
|
|
|||
Loading…
Reference in New Issue