| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package services
- import (
- "easydo-echo_win7/models"
- "fmt"
- "time"
- "github.com/jmoiron/sqlx"
- )
- func GetFlowNo(flow_type string, tenant_id string, conn ...*sqlx.Tx) (string, error) {
- flow_no := new(models.FlowNo)
- flow_no.Type = &flow_type
- flow_no.TenantId = &tenant_id
- if len(conn) > 0 {
- tx := conn[0]
- err := JdbcClient.GetJdbcModel(flow_no, tx)
- if err != nil {
- return "", fmt.Errorf("SQL执行失败: %v", err)
- }
- } else {
- err := JdbcClient.GetJdbcModel(flow_no)
- if err != nil {
- return "", fmt.Errorf("SQL执行失败: %v", err)
- }
- }
- // 获取当前时间
- now := time.Now()
- // 格式化日期
- currDate := now.Format("2006-01-02")
- currDate2 := now.Format("20060102")
- var no string
- // 判断是否需要重置序列号(新的一天)
- if flow_no.CurrDate == nil || len(*flow_no.CurrDate) == 0 || (len(*flow_no.CurrDate) > 0 && *flow_no.CurrDate != currDate) {
- flow_no.CurrDate = &currDate
- *flow_no.CurrSeq = 1
- } else {
- *flow_no.CurrSeq = *flow_no.CurrSeq + 1
- }
- // 生成流水号
- if len(*flow_no.CurrDate) == 0 {
- // 没有日期的情况,使用6位序列号
- currSeq := fmt.Sprintf("%06d", *flow_no.CurrSeq)
- no = *flow_no.Prefix + currSeq
- } else {
- // 有日期的情况,使用5位序列号
- currSeq := fmt.Sprintf("%05d", *flow_no.CurrSeq)
- no = *flow_no.Prefix + currDate2 + currSeq
- }
- flow_no.CurrNo = &no
- paramMap := map[string]interface{}{
- "type": flow_type,
- }
- if len(conn) > 0 {
- tx := conn[0]
- err := JdbcClient.JdbcUpdate(flow_no, paramMap, tx)
- if err != nil {
- return "", fmt.Errorf("SQL执行失败: %v", err)
- }
- } else {
- err := JdbcClient.JdbcUpdate(flow_no, paramMap)
- if err != nil {
- return "", fmt.Errorf("SQL执行失败: %v", err)
- }
- }
- return no, nil
- }
|