| | |
| | | } |
| | | else |
| | | { |
| | | next = serialGen.SERIAL_VALUE; |
| | | //跳过以设置号码结尾的流水号 |
| | | var ignoreList = (rule.SERIAL_IGNORE ?? "").Split(','); |
| | | var isIgnore = false; |
| | | do |
| | | { |
| | | next += rule.SERIAL_INTERVAL; |
| | | foreach (var num in ignoreList) |
| | | { |
| | | isIgnore |= next.ToString().EndsWith(num); |
| | | } |
| | | } while (isIgnore && !ignoreList.IsNullOrEmpty()); |
| | | //流水号重置 |
| | | switch (rule.SERIAL_RESET.GetEnum<BAS_CODE_DTL.SERIAL_RESETs>()) |
| | | { |
| | | case BAS_CODE_DTL.SERIAL_RESETs.Default: |
| | | if (serialGen.SERIAL_VALUE + 1 > rule.SERIAL_MAX) |
| | | if (next > rule.SERIAL_MAX) |
| | | { |
| | | serialGen.SERIAL_VALUE = rule.SERIAL_MIN - 1; |
| | | next = rule.SERIAL_MIN; |
| | | serialGen.SERIAL_DATE = DateTime.Now; |
| | | } |
| | | break; |
| | | case BAS_CODE_DTL.SERIAL_RESETs.Year: |
| | | if (serialGen.SERIAL_DATE.Year != DateTime.Now.Year) |
| | | { |
| | | serialGen.SERIAL_VALUE = rule.SERIAL_MIN - 1; |
| | | next = rule.SERIAL_MIN; |
| | | serialGen.SERIAL_DATE = DateTime.Now; |
| | | } |
| | | break; |
| | | case BAS_CODE_DTL.SERIAL_RESETs.Month: |
| | | if (serialGen.SERIAL_DATE.Month != DateTime.Now.Month) |
| | | { |
| | | serialGen.SERIAL_VALUE = rule.SERIAL_MIN - 1; |
| | | next = rule.SERIAL_MIN; |
| | | serialGen.SERIAL_DATE = DateTime.Now; |
| | | } |
| | | break; |
| | |
| | | if ((serialGen.SERIAL_DATE.Date.DayOfWeek.GetValue() > 0 && DateTime.Now.Date.DayOfWeek.GetValue() == 0) |
| | | || (DateTime.Now.Date - serialGen.SERIAL_DATE.Date).TotalDays >= 7) |
| | | { |
| | | serialGen.SERIAL_VALUE = rule.SERIAL_MIN - 1; |
| | | next = rule.SERIAL_MIN; |
| | | serialGen.SERIAL_DATE = DateTime.Now; |
| | | } |
| | | break; |
| | | case BAS_CODE_DTL.SERIAL_RESETs.Day: |
| | | if (serialGen.SERIAL_DATE.Date != DateTime.Now.Date) |
| | | { |
| | | serialGen.SERIAL_VALUE = rule.SERIAL_MIN - 1; |
| | | next = rule.SERIAL_MIN; |
| | | serialGen.SERIAL_DATE = DateTime.Now; |
| | | } |
| | | break; |
| | | case BAS_CODE_DTL.SERIAL_RESETs.NotReset: |
| | | break; |
| | | } |
| | | |
| | | //流水号取号 |
| | | if (serialGen.SERIAL_VALUE + 1 <= rule.SERIAL_MAX) |
| | | if (next <= rule.SERIAL_MAX) |
| | | { |
| | | serialGen.SERIAL_VALUE++; |
| | | serialGen.SERIAL_VALUE = next; |
| | | serialGen.LAST_GEN_DATE = DateTime.Now; |
| | | serialGen.LAST_HIS_ID = hisID; |
| | | } |
| | |
| | | { |
| | | db.Updateable(serialGen, "system").UpdateColumns(q => new { q.SERIAL_VALUE, q.SERIAL_DATE, q.LAST_GEN_DATE, q.LAST_HIS_ID }).ExecuteCommand(); |
| | | } |
| | | next = serialGen.SERIAL_VALUE; |
| | | //Debug.WriteLine($"{hisID}: {DateTime.Now:HH:mm:ss.fff} > 继续取号成功[{next}],休息1000ms"); |
| | | //Thread.Sleep(1000); |
| | | } |
| | |
| | | } |
| | | else |
| | | { |
| | | var his = new BAS_CODE_HIS(); |
| | | var argsIndex = 0; |
| | | var his = new BAS_CODE_HIS(); |
| | | foreach (var item in rule.Details.OrderBy(q => q.RULE_SEQ)) |
| | | { |
| | | switch (item.DATA_TYPE.GetEnum<BAS_CODE_DTL.DATA_TYPEs>()) |