Files
FT546MWS/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java
2026-07-24 08:51:42 +08:00

276 lines
11 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.ruoyi.api.controller;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.domain.ErpProduct;
import com.ruoyi.api.domain.ReMaterialParam;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.api.service.IToWmsService;
import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.BasProduct.service.IBasProductService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.device.agv.domain.AgvContainerTask;
import com.ruoyi.device.agv.service.IAgvContainerTaskService;
import com.ruoyi.job.mydojob.domain.MydoJob;
import com.ruoyi.job.mydojob.mapper.MydoJobMapper;
import com.ruoyi.log.domain.RequestLog;
import com.ruoyi.log.service.IRequestLogService;
import com.ruoyi.out.outStockout.domain.OutStockoutVo;
import com.ruoyi.out.outStockout.service.IOutStockoutService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* 作业统计 Controller
*/
@RestController
@RequestMapping("/api2wms")
public class ToWmsApiController {
@Autowired
private IToWmsService toWmsService;
@Autowired
private IRequestLogService requestLogService;
@Autowired
private IOutStockoutService outStockoutService;
@Autowired
private IBasProductService basProductService;
@Autowired
private MydoJobMapper mapper;
@Autowired
private IAgvContainerTaskService agvContainerTaskService;
/**
* 入库请求生成作业
*/
@PostMapping("/requestEnterByTrayCode")
public AjaxResult requestEnterByTrayCode(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCode(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "入库任务创建请求", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
// 入库分货位
@PostMapping("/sendCargoSpace")
public AjaxResult sendCargoSpace(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTaskNo(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "入库请求分配货位", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
// 出库到位更新LED显示屏
@PostMapping("/updateLed")
public AjaxResult updateLed(@RequestBody RequestEnter requestEnter) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_task_no", requestEnter.getTaskNo());
map.put("v_code", requestEnter.getDeviceCode());
mapper.updateLed(map);
return AjaxResult.success();
}
// 线体报警更新报警信息
@PostMapping("/updateLedError")
public AjaxResult updateLedError(@RequestBody RequestEnter requestEnter) {
HashMap<String, Object> map = new HashMap<>();
map.put("v_code", requestEnter.getDeviceCode());
map.put("v_error_code", requestEnter.getErrorCode());
mapper.updateLedError(map);
return AjaxResult.success();
}
/**
* 请求补码作业
*/
@RequestMapping("/requestByNoTrayCode")
public AjaxResult requestByNoTrayCode(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.selectMydoJobByEntranceId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "请求补码作业", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 获取入库作业
*/
@RequestMapping("/requestEnterByTrayCodeAndEntranceId")
public AjaxResult requestEnterByTrayCodeAndEntranceId(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCodeAndEntranceId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "获取入库作业", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 入库、出库 任务完成回传
* Map<String, String>
* "wmsType": "任务类型" 1-入库 2-出库 3-agv搬运,
* taskNo:出库 入库任务号
* trayCode:托盘码
* positionCode1:起点
* positionCode2:终点
* containerCode:容器编码
*/
@PostMapping("/jobFinish")
public AjaxResult jobFinish(@RequestBody WmsJobRequest wmsJobRequest) {
AjaxResult ajaxResult = toWmsService.jobFinish(wmsJobRequest);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobRequest), "jobFinish", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 放货有货,重新分配货位
*/
@PostMapping("/reAssign")
public AjaxResult reAssign(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWmsService.reAssign(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "reAssign", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 取货无货,重新分配物料
*/
@PostMapping("/reMaterial")
public AjaxResult reMaterial(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWmsService.reMaterial(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "reMaterial", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 出库单据保存
*
* @param outStockoutVo
* @return
*/
@Log(title = "出库主单保存", businessType = BusinessType.OTHER)
@PostMapping("/saveOutBill")
@ResponseBody
public AjaxResult saveBill(@RequestBody OutStockoutVo outStockoutVo) {
String stockOutId = outStockoutService.saveBill(outStockoutVo);
AjaxResult ajaxResult = AjaxResult.success(stockOutId);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(outStockoutVo), "出库单据保存", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 接收物料
*/
@Log(title = "接收物料", businessType = BusinessType.INSERT)
@PutMapping("/receiveProduct")
public AjaxResult receiveProduct(@RequestBody ErpProduct erpProduct) {
AjaxResult ajaxResult = toWmsService.receiveProduct(erpProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(erpProduct), "接收物料", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 修改物料管理
*/
@Log(title = "修改物料管理", businessType = BusinessType.UPDATE)
@PutMapping("/updateProduct")
public AjaxResult updateProduct(@RequestBody ErpProduct erpProduct) {
AjaxResult ajaxResult = toWmsService.updateProduct(erpProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(erpProduct), "修改物料管理", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 作废物料
*/
@Log(title = "作废物料", businessType = BusinessType.UPDATE)
@PutMapping("/InvalidProduct")
public AjaxResult InvalidProduct(@RequestBody ErpProduct erpProduct) {
AjaxResult ajaxResult = toWmsService.InvalidProduct(erpProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(erpProduct), "作废物料", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 请求AGV执行队列
*/
// @Log(title = "请求未下发的AGV执行队列", businessType = BusinessType.OTHER)
@RequestMapping("/queryAgvQuene")
public AjaxResult queryAgvQuene() {
AgvContainerTask agvContainerTask = new AgvContainerTask();
agvContainerTask.setStatus("0");
List<AgvContainerTask> agvContainerTasks = agvContainerTaskService.selectAgvContainerTaskList(agvContainerTask);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(""), "请求未下发的AGV执行队列", AjaxResult.success(agvContainerTasks));
requestLogService.insertRequestLog(requestLog);
if (agvContainerTasks != null && agvContainerTasks.size() > 0) {
for (AgvContainerTask containerTask : agvContainerTasks) {
containerTask.setStatus("1");
agvContainerTaskService.updateAgvContainerTask(containerTask);
}
return AjaxResult.success(agvContainerTasks.get(0));
} else {
return AjaxResult.error("无队列");
}
}
/**
* 请求AGV执行队列
*/
@Log(title = "完成AGV执行队列", businessType = BusinessType.UPDATE)
@RequestMapping("/finishAgvQuene")
public AjaxResult finishAgvQuene(@RequestBody JSONObject jsonObject) {
String order = (String) jsonObject.get("order");
agvContainerTaskService.deleteAgvJobByOrder(order);
return AjaxResult.success();
}
@Log(title = "自动生成Agv搬运队列到线边", businessType = BusinessType.INSERT)
@PutMapping("/insertAgvQuene")
public AjaxResult insertAgvQuene(@RequestBody WmsJobRequest wmsJobRequest) {
String taskNo = wmsJobRequest.getTaskNo();// 到位任务号
String code = wmsJobRequest.getCode();// 线体号
AgvContainerTask agvContainerTask = new AgvContainerTask();
agvContainerTask.setTaskNo(taskNo);
List<AgvContainerTask> agvContainerTasks = agvContainerTaskService.selectAgvContainerTaskList(agvContainerTask);
if (Objects.isNull(agvContainerTasks)) {
MydoJob mydoJob = new MydoJob();
mydoJob.setTaskNo(taskNo);
List<MydoJob> mydoJobs = mapper.selectMydoJobList(mydoJob);
AgvContainerTask agvContainerTask1 = new AgvContainerTask();
agvContainerTask1.setContainer(UUID.randomUUID().toString());
agvContainerTask1.setTaskNo(taskNo);
agvContainerTask1.setStartPoint(code);
agvContainerTask1.setEndPoint(mydoJobs.get(0).getEndPoint());//TODO 需要修改
agvContainerTask1.setSpare2(mydoJobs.get(0).getTrayCode());
// 10缓存区到线边 11立库到线边 12 立库到缓存区 13 缓存到立库
agvContainerTask1.setSpare1("11");
agvContainerTask1.setStatus("0");
agvContainerTaskService.insertAgvContainerTask(agvContainerTask1);
}
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobRequest), "自动生成Agv搬运队列到线边", AjaxResult.success());
requestLogService.insertRequestLog(requestLog);
return AjaxResult.success();
}
}