添加枚举、代码更新
This commit is contained in:
@@ -64,6 +64,34 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(result, HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/ispackage")
|
||||
@Log("ACS给WMS请求是否优先包装")
|
||||
@ApiOperation("ACS给WMS请求是否优先包装")
|
||||
public ResponseEntity<Object> ispackage(@RequestBody Map whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.ispackage(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getEmptyVehicle_code")
|
||||
@Log("获取空木托盘号")
|
||||
@ApiOperation("获取空木托盘号")
|
||||
public ResponseEntity<Object> getEmptyVehicle_code(@RequestBody Map whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.getEmptyVehicle_code(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/sureProduceTask")
|
||||
@Log("排产单确认")
|
||||
@ApiOperation("排产单确认")
|
||||
public ResponseEntity<Object> sureProduceTask(@RequestBody Map whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.sureWorkOrder(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getDevicecodeByVehicletype")
|
||||
@Log("根据木托盘类型获取对应所在的点位")
|
||||
@ApiOperation("根据木托盘类型获取对应的点位")
|
||||
public ResponseEntity<Object> getDevicecodeByVehicle_ype(@RequestBody Map whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.getDeviceCodeByVehicleType(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/againApply")
|
||||
@Log("二次申请任务")
|
||||
@ApiOperation("二次申请任务")
|
||||
|
||||
@@ -57,4 +57,33 @@ public interface AcsToWmsService {
|
||||
* @param whereJson
|
||||
*/
|
||||
void manipulatorApply(Map whereJson);
|
||||
|
||||
/**
|
||||
* ACS给WMS请求是否优先包装
|
||||
* @param whereJson
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> ispackage(Map whereJson);
|
||||
|
||||
/**
|
||||
* 获取空木托盘号
|
||||
* @param whereJson
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> getEmptyVehicle_code(Map whereJson);
|
||||
|
||||
/**
|
||||
* 排产单确认
|
||||
* @param whereJson
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> sureWorkOrder(Map whereJson);
|
||||
|
||||
/**
|
||||
* 根据木托盘类型获取对应所在的点位
|
||||
*
|
||||
* @param jsonObject 条件
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
Map<String, Object> getDeviceCodeByVehicleType(Map jsonObject);
|
||||
}
|
||||
|
||||
@@ -4,18 +4,22 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.basedata.service.dto.VehicleDto;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.log.LokiLog;
|
||||
import org.nl.wms.log.LokiLogType;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.manage.WorkOrderEnum;
|
||||
import org.nl.wms.sch.service.TaskService;
|
||||
import org.nl.wms.sch.tasks.callEmpty.FjCallEmptyVehicleTask;
|
||||
import org.nl.wms.sch.tasks.callEmpty.HnCallEmptyVehicleTask;
|
||||
@@ -391,6 +395,169 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
this.apply((JSONObject) jsonObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* ACS给WMS请求是否优先包装
|
||||
*
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map<String, Object> ispackage(Map jsonObject) {
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("托盘条码不能为空!");
|
||||
}
|
||||
// 组盘表
|
||||
JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='" + vehicle_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(vehicleObj)) {
|
||||
throw new BadRequestException("未找到托盘号为'" + vehicle_code + "'的组盘信息!");
|
||||
}
|
||||
// 获取工单
|
||||
String workorder_id = vehicleObj.getString("producetask_id");
|
||||
JSONObject taskObj = WQLObject.getWQLObject("PDM_BD_WorkOrder").query("workorder_id='" + workorder_id + "'").uniqueResult(0);
|
||||
//1代表去出窑,2 是优先包装
|
||||
String is_package = "1";
|
||||
if (StrUtil.equals(taskObj.getString("is_package"), "1")) {
|
||||
is_package = "2";
|
||||
}
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("is_package", is_package);
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取空木托盘号
|
||||
*
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map<String, Object> getEmptyVehicle_code(Map jsonObject) {
|
||||
//获取一个空的托盘号
|
||||
String code = "VEHICCLE_CODE_MTP";
|
||||
String vehicle_type = "03"; // todo
|
||||
WQLObject vehicle_table = WQLObject.getWQLObject("MD_PB_Vehicle");
|
||||
VehicleDto dto = new VehicleDto();
|
||||
dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId());
|
||||
String vehicle_code = CodeUtil.getNewCode(code);
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
dto.setVehicle_code(vehicle_code);
|
||||
dto.setCreate_id(currentUserId);
|
||||
dto.setVehicle_name(vehicle_code);
|
||||
dto.setCreate_name(nickName);
|
||||
dto.setUpdate_optid(currentUserId);
|
||||
dto.setUpdate_optname(nickName);
|
||||
dto.setUpdate_time(now);
|
||||
dto.setCreate_time(now);
|
||||
dto.setVehicle_type(vehicle_type);
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
vehicle_table.insert(json);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("vehicle_code", vehicle_code);
|
||||
returnjo.put("status", HttpStatus.OK.value());
|
||||
//将起点终点确定不下发的任务查出来,将木托盘点位解锁,起点改为扫描点,is_auto_issue 改为1,
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
WQLObject task_Table = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = task_Table.query("task_status='" + TaskStatusEnum.START_AND_POINT.getCode() +"' and is_auto_issue='0'", "create_time desc").uniqueResult(0);
|
||||
String start_point_code = taskObj.getString("point_code1");
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONObject startObj = pointTable.query("point_code ='" + start_point_code + "'").uniqueResult(0);
|
||||
startObj.put("lock_type", "1");
|
||||
pointTable.update(startObj);
|
||||
taskObj.put("point_code1", device_code);
|
||||
taskObj.put("is_auto_issue", "1");
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
task_Table.update(taskObj);
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 排产单确认
|
||||
*
|
||||
* @param jsonObject
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map<String, Object> sureWorkOrder(Map jsonObject) {
|
||||
// 工单编号、设备编号、物料编号、数量、类型
|
||||
String workorder_code = (String) jsonObject.get("workorder_code");
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
String material_code = (String) jsonObject.get("material_code");
|
||||
String qty = String.valueOf(jsonObject.get("qty"));
|
||||
String type = (String) jsonObject.get("type");
|
||||
if (StrUtil.isEmpty(type)) {
|
||||
throw new BadRequestException("类型不能为空!");
|
||||
}
|
||||
WQLObject taskTable = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
JSONObject orderObj = taskTable.query("workorder_code = '" + workorder_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(orderObj)) {
|
||||
throw new BadRequestException("未找到工单号为'" + workorder_code + "'的工单信息!");
|
||||
}
|
||||
JSONObject materialObj = WQLObject.getWQLObject("MD_ME_MaterialBase").query("material_code = '" + material_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(materialObj)) throw new BadRequestException("当前物料不存在!");
|
||||
//1为确认
|
||||
//2为生产中
|
||||
//3为完成
|
||||
if (StrUtil.equals(type, "1")) {
|
||||
if (StrUtil.isEmpty(workorder_code)) {
|
||||
throw new BadRequestException("工单号不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备点位不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(material_code)) {
|
||||
throw new BadRequestException("物料编码不能为空!");
|
||||
}
|
||||
|
||||
if (!StrUtil.equals(materialObj.getString("material_id"), orderObj.getString("material_id"))) {
|
||||
throw new BadRequestException("物料标识不一样!");
|
||||
}
|
||||
orderObj.put("order_status", WorkOrderEnum.ORDER_STATUS_DELIVERED.getCode());
|
||||
|
||||
}
|
||||
if (StrUtil.equals("2", type)) {
|
||||
orderObj.put("producetask_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.getCode());
|
||||
}
|
||||
if (StrUtil.equals("3", type)) {
|
||||
orderObj.put("producetask_status", WorkOrderEnum.ORDER_STATUS_FINISH.getCode());
|
||||
orderObj.put("real_qty", qty);
|
||||
}
|
||||
taskTable.update(orderObj);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务状态反馈成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据木托盘类型获取对应所在的点位
|
||||
*
|
||||
* @param jsonObject 条件
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map<String, Object> getDeviceCodeByVehicleType(Map jsonObject) {
|
||||
String vehicle_type = (String) jsonObject.get("vehicle_type");
|
||||
if (StrUtil.isEmpty(vehicle_type)) {
|
||||
throw new BadRequestException("托盘类型不能为空!");
|
||||
}
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONObject pointObj = point_table.query("vehicle_type='" + vehicle_type + "' and region_code = 'FMQ'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(pointObj)) {
|
||||
throw new BadRequestException("为找到类型为'" + vehicle_type + "' 的设备点位");
|
||||
}
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("device_code", pointObj.getString("point_code"));
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
private JSONObject getProduceInfoByCode(String code) {
|
||||
//根据 设备点位去找生产任务信息
|
||||
//1 根据点位去找设备,去找对应的设备信息
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.nl.wms.sch.manage;
|
||||
|
||||
/**
|
||||
* @author: lyd
|
||||
* @description: 工单枚举
|
||||
* @Date: 2022/11/17
|
||||
*/
|
||||
public enum WorkOrderEnum {
|
||||
// 工单状态
|
||||
ORDER_STATUS_UNPRODUCED("1", "未生产"),
|
||||
ORDER_STATUS_DELIVERED("2", "已下发"),
|
||||
ORDER_STATUS_PRODUCING("3", "生产中"),
|
||||
ORDER_STATUS_STOP("4", "停止"),
|
||||
ORDER_STATUS_FINISH("5", "完成")
|
||||
;
|
||||
private final String code;
|
||||
private final String name;
|
||||
|
||||
WorkOrderEnum(String code, String name) {
|
||||
this.code = code;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -82,7 +83,7 @@ public class SzCallMaterialTask extends AbstractAcsTask {
|
||||
// 物料点
|
||||
JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0);
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
@@ -98,7 +99,7 @@ public class SzCallMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
}
|
||||
|
||||
if ("1".equals(status)) {
|
||||
if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
|
||||
// 更新任务状态为执行中
|
||||
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
@@ -106,7 +107,7 @@ public class SzCallMaterialTask extends AbstractAcsTask {
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
|
||||
@@ -16,8 +16,10 @@ import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -43,13 +45,14 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
|
||||
/**
|
||||
* @param taskObj 代表一条任务对象
|
||||
* @param status 代表wcs任务完成状态: //0:acs,取消,:执行中,2:完成
|
||||
* @param status 代表wcs任务完成状态: //0:acs,取消,1:执行中,2:完成
|
||||
* @return
|
||||
* @discription wcs请求wms任务完成状态反馈接口, 比如agv从a点往b点走。生成任务的时候绑定b的物料信息,任务完成的时候,清除a的物料信息
|
||||
* @author ldjun
|
||||
* @created 2019年4月17日 下午8:51:50
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
@@ -59,7 +62,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
@@ -76,7 +79,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
if ("1".equals(status)) {
|
||||
if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
|
||||
// 更新任务状态为执行中
|
||||
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
@@ -84,7 +87,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
|
||||
// 更改任务状态为完成
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
@@ -95,7 +98,6 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成
|
||||
JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
point_2.put("lock_type", "1");
|
||||
point_2.put("point_status", "2");
|
||||
point_2.put("vehicle_code", jsonTask.getString("vehicle_code"));
|
||||
point_2.put("vehicle_qty", NumberUtil.add(point_2.getString("vehicle_qty"), jsonTask.getString("vehicle_qty")));
|
||||
point_2.put("instorage_time", DateUtil.now());
|
||||
@@ -108,8 +110,6 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
// 起点设置为空位
|
||||
JSONObject point_1 = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
|
||||
point_1.put("point_status", "1");
|
||||
point_1.put("point_status", "1");
|
||||
point_1.put("point_status", "1");
|
||||
pointTab.update(point_1);
|
||||
}
|
||||
}
|
||||
@@ -120,6 +120,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
* @return 返回任务标识
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
// 送到KGTDDW01
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
@@ -151,6 +152,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
|
||||
* @created 2020年6月12日 下午6:01:06
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void findNextPoint() {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user