276 lines
11 KiB
Java
276 lines
11 KiB
Java
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();
|
||
}
|
||
|
||
|
||
}
|