Commit 03e586e2 zshaohui

1.更新料口状态接口增加

2.修改料口状态查询接口
1 个父辈 a14c682b
package com.neotel.smfcore.core.device.bean;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class XlcBoxDoorStatus {
/**
* 料口编号,1,2口为料箱出入口,3,4口为料串出入口
*/
private int doorIndex;
/**
* 料口状态
*/
private int status;
/**
* true=有料箱/料串, false=无料箱/料串
*/
private boolean hasContainer;
/**
* 需求单号, 当状态为NEED_OUT时使用
*/
private String hSerial;
}
package com.neotel.smfcore.core.device.enums;
import com.neotel.smfcore.common.enums.RequestMethodEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum DoorStatus {
/**
* 空闲
*/
IDLE(1),
/**
* 入库中
*/
LOADING(2),
/**
* 出库中
*/
UNLOADING(3),
/**
* 需要空料串出库
*/
NEED_EMPTY(4),
/**
* 满料串需要取走
*/
NEED_OUT(5);
/**
* Request 类型
*/
private final int status;
public static DoorStatus find(int status) {
for (DoorStatus value : DoorStatus.values()) {
if (status == value.getStatus()) {
return value;
}
}
return null;
}
}
...@@ -2,22 +2,20 @@ package com.neotel.smfcore.core.device.handler.impl; ...@@ -2,22 +2,20 @@ package com.neotel.smfcore.core.device.handler.impl;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StorageConstants; import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.bean.BoxStatusBean; import com.neotel.smfcore.core.device.bean.BoxStatusBean;
import com.neotel.smfcore.core.device.bean.NLShelfOperateBean;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.bean.XlcBoxDoorStatus;
import com.neotel.smfcore.core.device.enums.BOX_STATUS; import com.neotel.smfcore.core.device.enums.BOX_STATUS;
import com.neotel.smfcore.core.device.enums.DoorStatus;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.rest.dto.XLCPosBarcodeDto; import com.neotel.smfcore.core.device.rest.dto.XLCPosBarcodeDto;
import com.neotel.smfcore.core.device.rest.dto.XLCPosDetailDto; import com.neotel.smfcore.core.device.rest.dto.XLCPosDetailDto;
import com.neotel.smfcore.core.storage.enums.DeviceType; import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.rest.dto.CheckOutDto;
import com.neotel.smfcore.core.storage.rest.dto.StoragePosDto;
import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper; import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
import com.neotel.smfcore.core.storage.rest.query.StoragePosQueryCriteria; import com.neotel.smfcore.core.storage.rest.query.StoragePosQueryCriteria;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
...@@ -28,16 +26,18 @@ import io.swagger.annotations.Api; ...@@ -28,16 +26,18 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
//北京方仓 //北京方仓
...@@ -51,6 +51,7 @@ public class XLCBoxHandler extends BaseDeviceHandler { ...@@ -51,6 +51,7 @@ public class XLCBoxHandler extends BaseDeviceHandler {
@Autowired @Autowired
private StoragePosMapper storagePosMapper; private StoragePosMapper storagePosMapper;
/** /**
* 当前出入库操作的库位(key为cid, value为当前执行的任务) * 当前出入库操作的库位(key为cid, value为当前执行的任务)
*/ */
...@@ -58,6 +59,11 @@ public class XLCBoxHandler extends BaseDeviceHandler { ...@@ -58,6 +59,11 @@ public class XLCBoxHandler extends BaseDeviceHandler {
/** /**
* 料口状态信息(key为料口id,value为料口状态)
*/
private static Map<Integer,XlcBoxDoorStatus> xlcBoxDoorMap = new ConcurrentHashMap<>();
/**
* 获取当前正在执行的任务 * 获取当前正在执行的任务
*/ */
public DataLog getCurrentTask(String cid){ public DataLog getCurrentTask(String cid){
...@@ -65,6 +71,28 @@ public class XLCBoxHandler extends BaseDeviceHandler { ...@@ -65,6 +71,28 @@ public class XLCBoxHandler extends BaseDeviceHandler {
} }
/**
* 获取全部料口状态
*/
public static Collection<XlcBoxDoorStatus> getAllXlcBoxDoorStatus(){
return xlcBoxDoorMap.values();
}
@ApiOperation("更新料口状态")
@PostMapping("/api/xlc/updateDoorInfo")
public ResultBean updateDoorInfo(@RequestBody XlcBoxDoorStatus doorStatus) {
log.info("料口状态更新:"+ JsonUtil.toJsonStr(doorStatus));
if (doorStatus.getStatus() == DoorStatus.NEED_OUT.getStatus()) {
if (Strings.isNullOrEmpty(doorStatus.getHSerial())) {
return ResultBean.newErrorResult(-2, "smfcore.valueCanotNull", "需求单号不能为空:{}", new String[]{"hSerial"});
}
}
xlcBoxDoorMap.put(doorStatus.getDoorIndex(), doorStatus);
return ResultBean.newOkResult("ok");
}
@ApiOperation("XLC方仓容量详情") @ApiOperation("XLC方仓容量详情")
@GetMapping("/api/boxkanban/xlcDetails") @GetMapping("/api/boxkanban/xlcDetails")
@PreAuthorize("@el.check('boxkanban:info')") @PreAuthorize("@el.check('boxkanban:info')")
......
...@@ -10,6 +10,9 @@ import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; ...@@ -10,6 +10,9 @@ import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.bean.BoxStatusBean; import com.neotel.smfcore.core.device.bean.BoxStatusBean;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.bean.XlcBoxDoorStatus;
import com.neotel.smfcore.core.device.enums.DoorStatus;
import com.neotel.smfcore.core.device.handler.impl.XLCBoxHandler;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager; import com.neotel.smfcore.core.order.service.manager.ILiteOrderItemManager;
...@@ -227,34 +230,16 @@ public class NeotelController { ...@@ -227,34 +230,16 @@ public class NeotelController {
@ApiOperation("6.6 料口状态查询") @ApiOperation("6.6 料口状态查询")
@AnonymousPostMapping("/doorInfo") @AnonymousPostMapping("/doorInfo")
public ResultBean doorInfo() { public ResultBean doorInfo() {
String result = " [\n" + Collection<XlcBoxDoorStatus> allXlcBoxDoorStatus = XLCBoxHandler.getAllXlcBoxDoorStatus();
" {\n" + List<Map<String,Object>> results = new ArrayList<>();
" \"doorIndex\": 1,\n" + for (XlcBoxDoorStatus xlcBoxDoorStatus : allXlcBoxDoorStatus) {
" \"status\": \"IDLE\",\n" + Map<String,Object> resultMap = new HashMap<>();
" \"hasContainer\": false,\n" + resultMap.put("doorIndex",xlcBoxDoorStatus.getDoorIndex());
" \"hSerial\": \"\"\n" + resultMap.put("status", DoorStatus.find(xlcBoxDoorStatus.getDoorStatus()));
" },\n" + resultMap.put("hasContainer",xlcBoxDoorStatus.isHasContainer());
" {\n" + resultMap.put("hSerial",xlcBoxDoorStatus.getHSerial());
" \"doorIndex\": 2,\n" + results.add(resultMap);
" \"status\": \"IDLE\",\n" + }
" \"hasContainer\": true,\n" +
" \"hSerial\": \"00001\"\n" +
" },\n" +
" {\n" +
" \"doorIndex\": 3,\n" +
" \"status\": \"NEED_EMPTY\",\n" +
" \"hasContainer\": false,\n" +
" \"hSerial\": \"\"\n" +
" },\n" +
" {\n" +
" \"doorIndex\": 4,\n" +
" \"status\": \"NEED_OUT\",\n" +
" \"hasContainer\": true,\n" +
" \"hSerial\": \"00002\"\n" +
" }\n" +
" ]";
List<Map> results = JsonUtil.toList(result, Map.class);
return ResultBean.newOkResult(results); return ResultBean.newOkResult(results);
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!