diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java index 6a7d958..50b1ca8 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/codemaker/SnowflakeIdMaker.java @@ -1,5 +1,16 @@ package cn.estsh.i3plus.pojo.base.codemaker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import sun.management.VMManagement; + +import java.lang.management.ManagementFactory; +import java.lang.management.RuntimeMXBean; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.net.InetAddress; +import java.net.NetworkInterface; + /** * @Description : 使用SnowFlake,生成分布式ID * @Reference : SnowFlake可以保证: @@ -11,13 +22,15 @@ package cn.estsh.i3plus.pojo.base.codemaker; **/ public class SnowflakeIdMaker { + public static final Logger LOGGER = LoggerFactory.getLogger(SnowflakeIdMaker.class); + private long workerId; private long datacenterId; private long sequence = 0L; public SnowflakeIdMaker(){ - this.workerId = 1; - this.datacenterId = 1; + this.workerId = getWorkerMacId(); + this.datacenterId = getDatacenterPid(); this.sequence = 0L; } @@ -89,6 +102,60 @@ public class SnowflakeIdMaker { return timestamp; } + /** + * 使用本机Mac 地址的HashCode 取摸 32 + * @return + */ + private long getWorkerMacId() { + long result; + try { + InetAddress ia; + byte[] mac = null; + //获取本地IP对象 + ia = InetAddress.getLocalHost(); + //获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。 + mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress(); + //下面代码是把mac地址拼装成String + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < mac.length; i++) { + if (i != 0) { + sb.append("-"); + } + //mac[i] & 0xFF 是为了把byte转化为正整数 + String s = Integer.toHexString(mac[i] & 0xFF); + sb.append(s.length() == 1 ? 0 + s : s); + } + + //把字符串所有小写字母改为大写成为正规的mac地址并返回 + result = sb.toString().toUpperCase().hashCode(); + }catch (Exception e){ + e.printStackTrace(); + result = 31; + LOGGER.error("[SnowflakeIdMaker] 获取设备ID错误:{}",e.getMessage()); + } + + result = result + timeGen(); + return result < 0 ? (0 - result) % 32 : result % 32; + } + + private long getDatacenterPid() { + long result; + try { + RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); + Field jvm = runtime.getClass().getDeclaredField("jvm"); + jvm.setAccessible(true); + VMManagement mgmt = (VMManagement) jvm.get(runtime); + Method pidMethod = mgmt.getClass().getDeclaredMethod("getProcessId"); + pidMethod.setAccessible(true); + result = (Integer) pidMethod.invoke(mgmt); + } catch (Exception e) { + result = 31; + } + + result = result + timeGen(); + return result < 0 ? (0 - result) % 32 : result % 32; + } + private long timeGen(){ return System.currentTimeMillis(); } diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockFormEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockFormEnumUtil.java index 2fa0f79..650d294 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockFormEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/BlockFormEnumUtil.java @@ -833,7 +833,7 @@ public class BlockFormEnumUtil { TEXT(200, "TEXT", "文本"), NUMBER(210, "NUMBER", "数字"), PASSWORD(230, "PASSWORD", "密码"), - DATE_TIME(300, "DATE", "日期"), + DATE_TIME(300, "DATE", "日期",SQL_WHERE.BETWEEN), // DATE(300, "DATE", "日期(yyyy-MM-dd)"), // DATE_TIME(310, "DATE_TIME", "时间(yyyy-MM-dd hh:mm:ss)"), // ELEMENT(700, "DICT_SELECT", "元素"), @@ -847,10 +847,22 @@ public class BlockFormEnumUtil { private String code; private String description; - private PROPERTY_CONTROL_TYPE(int value, String code, String description) { + /** + * 默认查询关系 + */ + private SQL_WHERE defaultWhere; + + PROPERTY_CONTROL_TYPE(int value, String code, String description) { + this.value = value; + this.code = code; + this.description = description; + } + + PROPERTY_CONTROL_TYPE(int value, String code, String description, SQL_WHERE defaultWhere) { this.value = value; this.code = code; this.description = description; + this.defaultWhere = defaultWhere; } public int getValue() { @@ -865,6 +877,10 @@ public class BlockFormEnumUtil { return description; } + public SQL_WHERE getDefaultWhere() { + return defaultWhere; + } + public static String valueOfCode(int val) { String tmp = null; for (int i = 0; i < values().length; i++) { @@ -2476,7 +2492,6 @@ public class BlockFormEnumUtil { } public static SQL_WHERE valueOf(int val) { - String tmp = null; for (int i = 0; i < values().length; i++) { if (values()[i].value == val) { return values()[i]; diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java index 7fddd88..b5e6fe6 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java @@ -124,7 +124,7 @@ public class WmsHqlPack { DdlPreparedPack.getStringEqualPack(wmsDocMovementDetails.getPartNo(), "partNo", result); DdlPreparedPack.getStringLikerPack(wmsDocMovementDetails.getDestZoneNo(), "destZoneNo", result); DdlPreparedPack.getStringLikerPack(wmsDocMovementDetails.getDestLocateNo(), "destLocateNo", result); - + DdlPreparedPack.getStringLikerPack(wmsDocMovementDetails.getCreateUser(), "createUser", result); DdlPreparedPack.timeBuilder(wmsDocMovementDetails.getCreateDateTimeStart(), wmsDocMovementDetails.getCreateDateTimeEnd(), "createDatetime", result, true); getStringBuilderPack(wmsDocMovementDetails, result); @@ -165,6 +165,7 @@ public class WmsHqlPack { DdlPreparedPack.getNumEqualPack(wmsDocMovementMaster.getBusiType(), "busiType", packBean); DdlPreparedPack.getNumEqualPack(wmsDocMovementMaster.getOrderStatus(), "orderStatus", packBean); DdlPreparedPack.getStringEqualPack(wmsDocMovementMaster.getCustNo(), "custNo", packBean); + DdlPreparedPack.getStringLikerPack(wmsDocMovementMaster.getCreateUser(),"createUser",packBean); getStringBuilderPack(wmsDocMovementMaster, packBean); @@ -205,7 +206,8 @@ public class WmsHqlPack { DdlPreparedPack.getStringEqualPack(wmsPOMaster.getVendorNo(), "vendorNo", result); DdlPreparedPack.getStringEqualPack(wmsPOMaster.getSrc(), "src", result); DdlPreparedPack.getStringEqualPack(wmsPOMaster.getIsAsn(), "isAsn", result); - + DdlPreparedPack.getStringLikerPack(wmsPOMaster.getCreateUser(), "createUser", result); + DdlPreparedPack.timeBuilder(wmsPOMaster.getCreateDateTimeStart(),wmsPOMaster.getCreateDateTimeEnd(),"createDatetime",result,true); getStringBuilderPack(wmsPOMaster, result); return result; @@ -590,6 +592,8 @@ public class WmsHqlPack { DdlPreparedPack.getStringEqualPack(wmsASNMaster.getVersion(), "version", result); DdlPreparedPack.getStringLikerPack(wmsASNMaster.getSrc(), "src", result); DdlPreparedPack.getStringEqualPack(wmsASNMaster.getPoNo(), "poNo", result); + DdlPreparedPack.getStringLikerPack(wmsASNMaster.getCreateUser(), "createUser", result); + DdlPreparedPack.timeBuilder(wmsASNMaster.getCreateDateTimeStart(),wmsASNMaster.getCreateDateTimeEnd(),"createDatetime",result,true); getStringBuilderPack(wmsASNMaster, result); @@ -620,6 +624,9 @@ public class WmsHqlPack { //单据来源 DdlPreparedPack.getStringEqualPack(wmsShipping.getSrc(), "src", result); + DdlPreparedPack.getStringLikerPack(wmsShipping.getCreateUser(), "createUser", result); + DdlPreparedPack.timeBuilder(wmsShipping.getCreateDateTimeStart(),wmsShipping.getCreateDateTimeEnd(),"createDatetime",result,true); + getStringBuilderPack(wmsShipping, result); getStringBuilderPack(wmsShipping, result); return result; @@ -706,6 +713,8 @@ public class WmsHqlPack { DdlPreparedPack.getStringLikerPack(wmsFGInStock.getCustNo(), "custNo", result); DdlPreparedPack.getStringEqualPack(wmsFGInStock.getShippingFlag(), "shippingFlag", result); DdlPreparedPack.getStringEqualPack(wmsFGInStock.getMfgLogNo(), "mfgLogNo", result); + DdlPreparedPack.getStringLikerPack(wmsFGInStock.getCreateUser(), "createUser", result); + DdlPreparedPack.timeBuilder(wmsFGInStock.getCreateDateTimeStart(),wmsFGInStock.getCreateDateTimeEnd(),"createDatetime",result,true); getStringBuilderPack(wmsFGInStock, result);