diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseBean.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseBean.java index 9098f50..6f6fcb2 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseBean.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/bean/BaseBean.java @@ -25,7 +25,7 @@ import java.io.Serializable; @Entity //以子类table为准 @javax.persistence.Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) -@JsonInclude(value = JsonInclude.Include.NON_EMPTY) //""或null属性不参加序列转换 +//@JsonInclude(value = JsonInclude.Include.NON_EMPTY) //""或null属性不参加序列转换 public abstract class BaseBean implements Serializable { private static final long serialVersionUID = 1L; diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java index c219d78..7eacb2d 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/WmsEnumUtil.java @@ -622,6 +622,40 @@ public class WmsEnumUtil { } /** + * 作业任务:作业类型 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum OP_TYPE_CODE { + RC("RC", "收货"), + QC("QC", "质检"), + PICK("PICK", "拣货"), + OUTSTOCK("OUTSTOCK", "出库"), + INSTOCK("INSTOCK", "入库"), + MOVESTOCK("MOVESTOCK", "移库"), + CS("CS", "盘点"); + private String value; + private String description; + + OP_TYPE_CODE(String value, String description) { + this.value = value; + this.description = description; + } + + public String getCode() { + return value; + } + + public String getDescription() { + return description; + } + + public String getValue() { + return value; + } + } + + + /** * 作业任务状态 */ @JsonFormat(shape = JsonFormat.Shape.OBJECT) diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java index 8ac9fdc..6a48fbe 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java @@ -30,6 +30,17 @@ public interface BaseRepository extends JpaReposito T insert(T item); /** + * 新增对象
+ * 注意:如果对象id是long,并且为0,则设为 + * 字符串,并且没有赋值,该方法将自动设置为uuid值 + * @param item + * 持久对象,或者对象集合 + * @param initParam 是否需要初始化值为null的属性, + * @throws Exception + */ + T insert(T item,boolean initParam); + + /** * 更新对象数据 * * @param item diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java index 3024c67..4145076 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java @@ -84,13 +84,18 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public T insert(T item) { - return innerSave(item); + return insert(item,true); + } + + @Override + public T insert(T item, boolean initParam) { + return innerSave(item, initParam); } @Override public S save(S entity) { //复写save方法,若id为0或空则新增,不然则修改 - return (S) innerSave(entity); + return (S) innerSave(entity,true); } @Override @@ -1040,9 +1045,9 @@ public class BaseRepositoryImpl extends SimpleJpaRep * @param item 保存对象 * @return */ - private T innerSave(T item) { + private T innerSave(T item, boolean initParam) { try { - if(item ==null) { + if(item == null) { return null; } Class clazz = item.getClass(); @@ -1066,7 +1071,7 @@ public class BaseRepositoryImpl extends SimpleJpaRep if(idField != null){ Class type = idField.getType(); Object val = idField.get(item); - if((type == long.class || type == Long.class) && (val == null || Long.parseLong(val.toString()) == 0)){ + if(type == Long.class && (val == null || Long.parseLong(val.toString()) == 0)){ // long类型主键,以snowflake为主键 idField.set(item, snowflakeIdMaker.nextId()); } else if(type == String.class && (val==null || "".equals(val))){ @@ -1075,6 +1080,16 @@ public class BaseRepositoryImpl extends SimpleJpaRep } } + //属性值过滤,避免null值 + if(initParam){ + for(Field checkField : clazz.getFields()){ + if(checkField.get(item) == null){ + // 未赋值的属性,进行初始化赋值 + fieldSetInitParam(item, checkField); + } + } + } + entityManager.merge(item); entityManager.flush(); if(idField!=null){ @@ -1088,6 +1103,30 @@ public class BaseRepositoryImpl extends SimpleJpaRep } } + /** + * 对为赋值的属性进行赋值 + * @param field + */ + private void fieldSetInitParam(T item,Field field) { + try { + if (field.getType() == String.class) { + field.set(item, ""); + } else if (field.getType() == Byte.class || field.getType() == Character.class || field.getType() == Integer.class) { + field.set(item, 0); + } else if(field.getType() == Long.class){ + field.set(item, 0L); + } else if(field.getType() == Float.class){ + field.set(item, 0.0f); + } else if(field.getType() == Double.class){ + field.set(item, 0.0d); + } else if(field.getType() == Boolean.class){ + field.set(item, false); + } + } catch (IllegalAccessException e) { + LOGGER.error("自动赋值出错:{}", e.getMessage(), e); + } + } + /************** 部分业务 *************/ private String getNowTime(boolean needSecond) { return needSecond ? getNowTime("yyyy-MM-dd HH:mm:ss") : getNowTime("yyyy-MM-dd HH:mm");