Commit 20017caf LN

Merge remote-tracking branch 'origin/master'

2 个父辈 a0f3dd11 c3c25073
...@@ -19,6 +19,10 @@ import java.util.Locale; ...@@ -19,6 +19,10 @@ import java.util.Locale;
@Data @Data
public class ResultBean<T> { public class ResultBean<T> {
public static ResultBean newErrorResult(int code, String msg) {
return newErrorResult(code, "", msg);
}
public static ResultBean newErrorResult(int code, String msgKey, String msg ) { public static ResultBean newErrorResult(int code, String msgKey, String msg ) {
return newErrorResult(code, msgKey, msg, new String[]{},true); return newErrorResult(code, msgKey, msg, new String[]{},true);
} }
......
...@@ -17,4 +17,6 @@ public interface IBarcodeManager extends IBaseManager<Barcode> { ...@@ -17,4 +17,6 @@ public interface IBarcodeManager extends IBaseManager<Barcode> {
void download(List<Barcode> list, HttpServletResponse response) throws IOException; void download(List<Barcode> list, HttpServletResponse response) throws IOException;
void deleteBarcodes(Set<String> ids); void deleteBarcodes(Set<String> ids);
Barcode findOneByLockName(String lockName);
} }
...@@ -96,6 +96,11 @@ public class BarcodeManagerImpl implements IBarcodeManager { ...@@ -96,6 +96,11 @@ public class BarcodeManagerImpl implements IBarcodeManager {
} }
@Override @Override
public Barcode findOneByLockName(String lockName) {
return barcodeDao.findOne(new Query(Criteria.where("lockName").is(lockName)));
}
@Override
public Barcode saveBarcode(Barcode resources) { public Barcode saveBarcode(Barcode resources) {
validateSave(resources); validateSave(resources);
......
...@@ -63,7 +63,7 @@ public class NLPHBShelfHandler extends BaseDeviceHandler { ...@@ -63,7 +63,7 @@ public class NLPHBShelfHandler extends BaseDeviceHandler {
String rgb = queueTask.getLightColor(); String rgb = queueTask.getLightColor();
ORDER_COLOR color = ORDER_COLOR.fromRgb(rgb); ORDER_COLOR color = ORDER_COLOR.fromRgb(rgb);
if (color == null) { if (color == null) {
color = ORDER_COLOR.BLUE; color = ORDER_COLOR.YELLOW;
} }
queueTask.setLightColor(color.getRgb()); queueTask.setLightColor(color.getRgb());
queueTask.setStatus(OP_STATUS.EXECUTING.name()); queueTask.setStatus(OP_STATUS.EXECUTING.name());
......
...@@ -40,7 +40,7 @@ public enum ORDER_COLOR { ...@@ -40,7 +40,7 @@ public enum ORDER_COLOR {
//LIGHTBLUE("8470FF"), //LIGHTBLUE("8470FF"),
//INDIANRED("8B3A3A"), //INDIANRED("8B3A3A"),
//DARKGREEN("556B2F"), //DARKGREEN("556B2F"),
RED("FF0000"), //RED("FF0000"),
YELLOW("FFFF00"), YELLOW("FFFF00"),
//ORANGE("FFA500"), //ORANGE("FFA500"),
WHITE("FFFFFF") WHITE("FFFFFF")
......
...@@ -246,7 +246,7 @@ public class HaoboApi extends BaseSmfApiListener { ...@@ -246,7 +246,7 @@ public class HaoboApi extends BaseSmfApiListener {
hbColorMap.put(ORDER_COLOR.CYAN.name(), 6); hbColorMap.put(ORDER_COLOR.CYAN.name(), 6);
hbColorMap.put(ORDER_COLOR.FIREBRICK.name(), 5); hbColorMap.put(ORDER_COLOR.FIREBRICK.name(), 5);
hbColorMap.put(ORDER_COLOR.FIREBRICK.name(), 2); hbColorMap.put(ORDER_COLOR.FIREBRICK.name(), 2);
hbColorMap.put(ORDER_COLOR.RED.name(), 1); //hbColorMap.put(ORDER_COLOR.RED.name(), 1);
hbColorMap.put(ORDER_COLOR.YELLOW.name(), 4); hbColorMap.put(ORDER_COLOR.YELLOW.name(), 4);
hbColorMap.put(ORDER_COLOR.WHITE.name(), 7); hbColorMap.put(ORDER_COLOR.WHITE.name(), 7);
......
package com.neotel.smfcore.custom.so1374.bean;
import lombok.Data;
/**
* 入库/退货请求实体类 (PokaNon INBOUND/RETURN Request)
* 对应I/F 定義表的字段规范
*/
@Data // Lombok注解,自动生成getter/setter/toString/equals/hashCode
public class PokaNonInboundReturnRequest {
/**
* PokaNon交易ID(幂等键)
* 类型:string | 必填:Y
* 示例:POKANON-INB-20260124-000123
*/
private String clientTxnId;
/**
* 客户编码(Panasonic可能固定)
* 类型:string | 必填:Y
* 示例:PANASONIC
*/
private String customerCode;
/**
* 操作类型:INBOUND(新品入库) / RETURN(退货重新入库)
* 类型:string | 必填:Y
* 示例:INBOUND
*/
private String operation;
/**
* 操作人员信息
* 类型:object | 必填:Y(子字段operatorId必填)
*/
private Operator operator;
/**
* 物料信息
* 类型:object | 必填:Y(核心子字段必填)
*/
private Material material;
/**
* 库位信息
* 类型:object | 必填:Y(子字段locationId必填)
*/
private Location location;
/**
* 标签信息
* 类型:object | 必填:N
*/
private Label label;
/**
* 客户端时间戳(审计用)
* 类型:string | 必填:N
* 格式:YYYY-MM-DD HH:mm:ss
* 示例:2026-01-24 10:12:30
*/
private String timestamp;
/**
* 操作人员子实体
*/
@Data
public static class Operator {
/**
* 操作人员ID
* 类型:string | 必填:Y
* 示例:U001
*/
private String operatorId;
}
/**
* 物料子实体
*/
@Data
public static class Material {
/**
* PokaNon序列号(标签序列号)
* 类型:string | 必填:Y
* 示例:ID-2026012400001-001
*/
private String serial;
/**
* 主物料编号(建议必填)
* 类型:string | 必填:Y*
* 示例:GLOBAL-PN-001
*/
private String partNo;
/**
* 制造商物料编号
* 类型:string | 必填:N
* 示例:ABC-123
*/
private String makerPartNo;
/**
* 内部批次号(如有)
* 类型:string | 必填:N
* 示例:LOT202601
*/
private String lotNo;
/**
* 制造商批次号
* 类型:string | 必填:N
* 示例:MLOT-5566
*/
private String makerLot;
/**
* 实际入库数量(已确认)
* 类型:number | 必填:Y
* 示例:500
*/
private Integer qty;
/**
* 计量单位
* 类型:string | 必填:N
* 示例:PCS
*/
private String uom;
/**
* 接收日期
* 类型:date | 必填:N
* 格式:YYYY-MM-DD
* 示例:2026-01-24
*/
private String receiveDate; // 用String避免日期序列化问题,也可改用LocalDate
/**
* 有效期
* 类型:date | 必填:N
* 格式:YYYY-MM-DD
* 示例:2027-01-31
*/
private String expireDate; // 同上
}
/**
* 库位子实体
*/
@Data
public static class Location {
/**
* SMF库位地址(扫描的QR文本)
* 类型:string | 必填:Y
* 示例:R01-S03
*/
private String locationId;
/**
* 库位类型(固定字面量,避免混淆)
* 类型:string | 必填:N
* 示例:SMF_ADDRESS
*/
private String locationType;
}
/**
* 标签子实体
*/
@Data
public static class Label {
/**
* 原始标签QR文本(可选存储/校验)
* 类型:string | 必填:N
* 示例:(raw QR text)
*/
private String fullCode;
/**
* QR标签上打印的数量(参考用)
* 类型:number | 必填:N
* 示例:500
*/
private Integer qrQty;
}
}
\ No newline at end of file \ No newline at end of file
...@@ -471,3 +471,4 @@ smfcore.pos.merge.notAdjacent=\u8BF7\u9009\u62E9\u76F8\u90BB\u7684\u5E93\u4F4D\u ...@@ -471,3 +471,4 @@ smfcore.pos.merge.notAdjacent=\u8BF7\u9009\u62E9\u76F8\u90BB\u7684\u5E93\u4F4D\u
smfcore.pos.split.notNull=\u5E93\u4F4D\u4E0D\u80FD\u4E3A\u7A7A smfcore.pos.split.notNull=\u5E93\u4F4D\u4E0D\u80FD\u4E3A\u7A7A
smfcore.pos.split.notMergePos=\u5E93\u4F4D[{0}]\u672A\u5408\u5E76,\u4E0D\u80FD\u62C6\u5206 smfcore.pos.split.notMergePos=\u5E93\u4F4D[{0}]\u672A\u5408\u5E76,\u4E0D\u80FD\u62C6\u5206
smfcore.pos.split.hasMaterial=\u5E93\u4F4D[{0}]\u6709\u7269\u6599,\u4E0D\u80FD\u62C6\u5206 smfcore.pos.split.hasMaterial=\u5E93\u4F4D[{0}]\u6709\u7269\u6599,\u4E0D\u80FD\u62C6\u5206
smfcore.selectDevice=\u5408\u5E76\u5E93\u4F4D
...@@ -461,3 +461,4 @@ smfcore.pos.merge.notAdjacent=W\u00E4hlen Sie benachbarte Lagerpositionen zum Zu ...@@ -461,3 +461,4 @@ smfcore.pos.merge.notAdjacent=W\u00E4hlen Sie benachbarte Lagerpositionen zum Zu
smfcore.pos.split.notNull=Lagerposition darf nicht leer sein smfcore.pos.split.notNull=Lagerposition darf nicht leer sein
smfcore.pos.split.notMergePos=Lagerposition [{0}] wurde nicht zusammengef\u00FChrt und kann nicht aufgeteilt werden smfcore.pos.split.notMergePos=Lagerposition [{0}] wurde nicht zusammengef\u00FChrt und kann nicht aufgeteilt werden
smfcore.pos.split.hasMaterial=Lagerposition [{0}] enth\u00E4lt Materialien und kann nicht aufgeteilt werden smfcore.pos.split.hasMaterial=Lagerposition [{0}] enth\u00E4lt Materialien und kann nicht aufgeteilt werden
smfcore.selectDevice=Speicherplatz zusammenf\u00FChren
...@@ -462,3 +462,4 @@ smfcore.pos.merge.notAdjacent=Please select adjacent storage positions to merge ...@@ -462,3 +462,4 @@ smfcore.pos.merge.notAdjacent=Please select adjacent storage positions to merge
smfcore.pos.split.notNull=Storage position cannot be empty smfcore.pos.split.notNull=Storage position cannot be empty
smfcore.pos.split.notMergePos=Storage position [{0}] has not been merged and cannot be split smfcore.pos.split.notMergePos=Storage position [{0}] has not been merged and cannot be split
smfcore.pos.split.hasMaterial=Storage position [{0}] contains materials and cannot be split smfcore.pos.split.hasMaterial=Storage position [{0}] contains materials and cannot be split
smfcore.selectDevice=Merge Storage Location
...@@ -461,3 +461,4 @@ smfcore.pos.merge.notAdjacent=Veuillez s\u00E9lectionner des emplacements de sto ...@@ -461,3 +461,4 @@ smfcore.pos.merge.notAdjacent=Veuillez s\u00E9lectionner des emplacements de sto
smfcore.pos.split.notNull=L'emplacement de stockage ne peut pas \u00EAtre vide smfcore.pos.split.notNull=L'emplacement de stockage ne peut pas \u00EAtre vide
smfcore.pos.split.notMergePos=L'emplacement de stockage [{0}] n'a pas \u00E9t\u00E9 fusionn\u00E9 et ne peut pas \u00EAtre divis\u00E9 smfcore.pos.split.notMergePos=L'emplacement de stockage [{0}] n'a pas \u00E9t\u00E9 fusionn\u00E9 et ne peut pas \u00EAtre divis\u00E9
smfcore.pos.split.hasMaterial=L'emplacement de stockage [{0}] contient des mati\u00E8res et ne peut pas \u00EAtre divis\u00E9 smfcore.pos.split.hasMaterial=L'emplacement de stockage [{0}] contient des mati\u00E8res et ne peut pas \u00EAtre divis\u00E9
smfcore.selectDevice=Fusionner l'emplacement de stockage
...@@ -458,3 +458,4 @@ smfcore.pos.merge.notAdjacent=\u96A3\u63A5\u3059\u308B\u68DA\u4F4D\u7F6E\u3092\u ...@@ -458,3 +458,4 @@ smfcore.pos.merge.notAdjacent=\u96A3\u63A5\u3059\u308B\u68DA\u4F4D\u7F6E\u3092\u
smfcore.pos.split.notNull=\u68DA\u4F4D\u7F6E\u3092\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 smfcore.pos.split.notNull=\u68DA\u4F4D\u7F6E\u3092\u7A7A\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
smfcore.pos.split.notMergePos=\u68DA\u4F4D\u7F6E[{0}]\u306F\u7D71\u5408\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u5206\u5272\u3067\u304D\u307E\u305B\u3093 smfcore.pos.split.notMergePos=\u68DA\u4F4D\u7F6E[{0}]\u306F\u7D71\u5408\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u5206\u5272\u3067\u304D\u307E\u305B\u3093
smfcore.pos.split.hasMaterial=\u68DA\u4F4D\u7F6E[{0}]\u306B\u8CC7\u6750\u304C\u3042\u308B\u305F\u3081\u3001\u5206\u5272\u3067\u304D\u307E\u305B\u3093 smfcore.pos.split.hasMaterial=\u68DA\u4F4D\u7F6E[{0}]\u306B\u8CC7\u6750\u304C\u3042\u308B\u305F\u3081\u3001\u5206\u5272\u3067\u304D\u307E\u305B\u3093
smfcore.selectDevice=\u4FDD\u7BA1\u5834\u6240\u3092\u7D71\u5408
...@@ -458,3 +458,4 @@ smfcore.pos.merge.notAdjacent=\u8BF7\u9009\u62E9\u76F8\u90BB\u7684\u5E93\u4F4D\u ...@@ -458,3 +458,4 @@ smfcore.pos.merge.notAdjacent=\u8BF7\u9009\u62E9\u76F8\u90BB\u7684\u5E93\u4F4D\u
smfcore.pos.split.notNull=\u5E93\u4F4D\u4E0D\u80FD\u4E3A\u7A7A smfcore.pos.split.notNull=\u5E93\u4F4D\u4E0D\u80FD\u4E3A\u7A7A
smfcore.pos.split.notMergePos=\u5E93\u4F4D[{0}]\u672A\u5408\u5E76,\u4E0D\u80FD\u62C6\u5206 smfcore.pos.split.notMergePos=\u5E93\u4F4D[{0}]\u672A\u5408\u5E76,\u4E0D\u80FD\u62C6\u5206
smfcore.pos.split.hasMaterial=\u5E93\u4F4D[{0}]\u6709\u7269\u6599,\u4E0D\u80FD\u62C6\u5206 smfcore.pos.split.hasMaterial=\u5E93\u4F4D[{0}]\u6709\u7269\u6599,\u4E0D\u80FD\u62C6\u5206
smfcore.selectDevice=\u5408\u5E76\u5E93\u4F4D
...@@ -458,3 +458,4 @@ smfcore.pos.merge.notAdjacent=\u8ACB\u9078\u64C7\u76F8\u9130\u7684\u5EAB\u4F4D\u ...@@ -458,3 +458,4 @@ smfcore.pos.merge.notAdjacent=\u8ACB\u9078\u64C7\u76F8\u9130\u7684\u5EAB\u4F4D\u
smfcore.pos.split.notNull=\u5EAB\u4F4D\u4E0D\u80FD\u70BA\u7A7A smfcore.pos.split.notNull=\u5EAB\u4F4D\u4E0D\u80FD\u70BA\u7A7A
smfcore.pos.split.notMergePos=\u5EAB\u4F4D[{0}]\u672A\u5408\u4F75,\u4E0D\u80FD\u62C6\u5206 smfcore.pos.split.notMergePos=\u5EAB\u4F4D[{0}]\u672A\u5408\u4F75,\u4E0D\u80FD\u62C6\u5206
smfcore.pos.split.hasMaterial=\u5EAB\u4F4D[{0}]\u6709\u7269\u6599,\u4E0D\u80FD\u62C6\u5206 smfcore.pos.split.hasMaterial=\u5EAB\u4F4D[{0}]\u6709\u7269\u6599,\u4E0D\u80FD\u62C6\u5206
smfcore.selectDevice=\u5408\u4F75\u5EAB\u4F4D
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!