انسخ رمز الكود كما يلي:
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
/**
* إنشاء فئة أداة الرقم التسلسلي
* @الإصدار V1.0
*@التاريخ: 16-11-2013 5:21:37 مساءً
*/
الرقم التسلسلي للفئة العامة {
عدد السلسلة الثابتة الخاصة = "000"؛
قيمة سلسلة ثابتة خاصة = "20131115"؛
/**
* توليد الرقم التسلسلي
*/
سلسلة ثابتة متزامنة عامة getMoveOrderNo() {
رقم طويل = 0؛
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String nowdate = sdf.format(new Date());
No = Long.parseLong(nowdate);
إذا (!(String.valueOf(No)).equals(dateValue)) {
العد = "000"؛
dateValue = String.valueOf(No);
}
String num = String.valueOf(No);
num += getNo(count);
الأسطوانات = "CB" + الأسطوانات؛
رقم الإرجاع؛
}
/**
* الحصول على الرقم التسلسلي لأمر النقل
*/
سلسلة ثابتة متزامنة عامة getMoveOrderNo(String serialNum) {
String nyr = StringUtils.substring(serialNum, 2, 10); // احصل على سلسلة السنة والشهر واليوم
String countV = StringUtils.substring(serialNum, 10); // احصل على الرقم التسلسلي
إذا (Integer.valueOf(countV) > Integer.valueOf(count)) {
dateValue = nyr;
العد = String.valueOf(countV);
}
إرجاع getMoveOrderNo();
}
/**
* إرجاع عدد الطلبات لليوم +1
*/
سلسلة ثابتة عامة getNo(String s) {
سلسلة رس = س؛
int i = Integer.parseInt(rs);
أنا += 1;
rs = "" + i;
لـ (int j = rs.length(); j < 3; j++) {
rs = "0" + rs;
}
العد = روبية؛
العودة روبية.
}
public static void main(String[] args) {
لـ (int i = 0; i < 10; i++) {
System.out.println(getMoveOrderNo());
}
}
}
ملاحظة: لن يسبب البرنامج أعلاه أي مشاكل إذا كان الخادم يعمل دائمًا بشكل طبيعي. إذا تمت إعادة تشغيل الخادم أو كان هناك أي فشل في العملية وتحتاج الخدمة إلى إعادة التشغيل، فقد يتسبب ذلك في إنشاء أرقام تسلسلية مكررة لضمان التفرد، نحتاج إلى التعاون مع استعلام قاعدة البيانات والاستعلام عن السجل الأخير، ثم إخراج الرقم التسلسلي واستدعاء طريقة getMoveOrderNo(String serialNum) للتأكد من أن الرقم التسلسلي الذي تم إنشاؤه صحيح وفريد من نوعه تحت أي ظرف من الظروف. .