Browse Source

Merge branch 'master' of http://kpt.kptyun.cn:3000/baishaojie/kpt_xdmy

baishaojie 1 year ago
parent
commit
d66bdeb37e

+ 49 - 0
.gitignore

@@ -0,0 +1,49 @@
+# ---> Go
+# Compiled Object files, Static and Dynamic libs (Shared Objects)
+*.o
+*.a
+*.so
+
+# Folders
+_obj
+_test
+
+# Architecture specific extensions/prefixes
+*.[568vq]
+[568vq].out
+
+*.cgo1.go
+*.cgo2.c
+_cgo_defun.c
+_cgo_gotypes.go
+_cgo_export.*
+
+_testmain.go
+
+*.exe
+*.test
+*.prof
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+.idea/
+bin/
+.vscode/
+logger/

+ 0 - 8
.idea/.gitignore

@@ -1,8 +0,0 @@
-# 默认忽略的文件
-/shelf/
-/workspace.xml
-# 基于编辑器的 HTTP 客户端请求
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml

+ 0 - 4
.idea/encodings.xml

@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="Encoding" addBOMForNewFiles="with NO BOM" />
-</project>

+ 0 - 8
.idea/modules.xml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/xdmy.iml" filepath="$PROJECT_DIR$/.idea/xdmy.iml" />
-    </modules>
-  </component>
-</project>

+ 0 - 7
.idea/vcs.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-    <mapping directory="$PROJECT_DIR$/cmd" vcs="Git" />
-  </component>
-</project>

+ 0 - 9
.idea/xdmy.iml

@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
-  <component name="Go" enabled="true" />
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>

+ 0 - 19
.vscode/launch.json

@@ -1,19 +0,0 @@
-{
-    // Use IntelliSense to learn about possible attributes.
-    // Hover to view descriptions of existing attributes.
-    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
-    "version": "0.2.0",
-    "configurations": [
-    
-    
-
-        {
-            "name": "Launch Package",
-            "type": "go",
-            "request": "launch",
-            "mode": "auto",
-            "program": "${fileDirname}",
-            // "args":["--conf","/Users/desire/kptdev/xdmy_mod/cmd/"]
-        }
-    ]
-}

+ 10 - 0
apiserver/model/contract.go

@@ -35,7 +35,13 @@ type BigContract struct {
 	StopTimeTem     time.Time `gorm:"column:stopTimeTem"`
 	WorkflowID      int       `gorm:"column:workflowId"`
 	WorkflowNote    string    `gorm:"column:workflowNote"`
+	IsToSap         int32     `gorm:"IsToSap"`
 }
+
+func (b *BigContract) TableName() string {
+	return "bigcontract"
+}
+
 type Contract struct {
 	ID            int     `gorm:"column:id"`
 	BigID         int     `gorm:"column:bigId"`
@@ -56,3 +62,7 @@ type Contract struct {
 	Specification string  `gorm:"column:specification"`
 	Unit          string  `gorm:"column:unit"`
 }
+
+func (c *Contract) TableName() string {
+	return "contract"
+}

+ 5 - 0
apiserver/model/http/order.go

@@ -110,3 +110,8 @@ type ManaulReq struct {
 	Id        float64 `json:"id"`
 	Pastureid string  `json:"pastureid"`
 }
+
+type SapContractReq struct {
+	*Dest `json:"DEST"`
+	DATA  *ContractDataToASP `json:"DATA"`
+}

+ 31 - 0
apiserver/model/http/sap.go

@@ -27,6 +27,19 @@ type SapRespMsg struct {
 	EqNumber    string `json:"EXT03"`
 }
 
+type SapContractResp struct {
+	Dest `json:"DEST"`
+	Data SapContractRespMsg `json:"DATA"`
+}
+
+type SapContractRespMsg struct {
+	HMSGR struct {
+		MSGTY string `json:"MSGTY"`
+		MSGTX string `json:"MSGTX"`
+		EXT01 string `json:"EXT01"`
+	} `json:"HMSGR"`
+}
+
 var SapAuth *http.Auth
 
 type SapQueryReq struct {
@@ -56,3 +69,21 @@ type SrmResp struct {
 	Code    string `json:"code"`
 	Message string `json:"message"`
 }
+
+type ContractDataToASP struct {
+	MATNR string `json:"MATNR "` // 物料编码
+	LIFNR string `json:"LIFNR"`  // 供应商编码
+	EKORG string `json:"EKORG"`  // 采购组织
+	WERKS string `json:"WERKS"`  // 工厂
+	NETPR string `json:"NETPR"`  // 净价
+	WAERS string `json:"WAERS"`  // 货币
+	BPRME string `json:"BPRME"`  // 订单价格单位
+	PEINH string `json:"PEINH"`  // 订单价格
+	MWSKZ string `json:"MWSKZ"`  // 税代码
+	EKGRP string `json:"EKGRP"`  // 采购组
+	DATAB string `json:"DATAB"`  // 生效起始时间
+	DATBI string `json:"DATBI"`  // 生效结束时间
+	LOEKZ string `json:"LOEKZ"`  // 删除标识
+	ESOKZ string `json:"ESOKZ"`
+	MEINS string `json:"MEINS"` // 订单价格单位
+}

+ 11 - 0
apiserver/model/pasture.go

@@ -32,3 +32,14 @@ type Pasture struct {
 	// PurchasingGroup      string `gorm:"column:purchasing_group"` //采购组
 	// CompanyName   string `gorm:"column:companyName"`
 }
+
+type PastureBigcontract struct {
+	ID            int `gorm:"column:id" json:"id"`
+	PastureId     int `gorm:"column:pasture_id" json:"pasture_id"`
+	BigcontractId int `gorm:"column:bigcontract_id" json:"bigcontract_id"`
+	Enable        int `gorm:"column:enable" json:"enable"`
+}
+
+func (p *PastureBigcontract) TableName() string {
+	return "pasture_bigcontract"
+}

+ 3 - 1
apiserver/routers/api/db.go

@@ -5,7 +5,6 @@ import (
 	"encoding/json"
 	"fmt"
 	"io/ioutil"
-	"kpt.xdmy/apiserver/service"
 	"log"
 	"math"
 	"net/http"
@@ -16,6 +15,8 @@ import (
 	"strings"
 	"time"
 
+	"kpt.xdmy/apiserver/service"
+
 	"github.com/360EntSecGroup-Skylar/excelize"
 	"github.com/jmoiron/sqlx"
 	"github.com/pkg/errors"
@@ -135,6 +136,7 @@ func TestData(c *gin.Context) {
 	appG.Response(http.StatusOK, e.SUCCESS, "你录入的名字是:"+sqlstr+";token:"+token)
 }
 
+// GetDataByName
 // @Summary   根据APISQL表中SQL执行得到数据集
 // @Tags GetDataByName
 // @Accept json

+ 9 - 7
apiserver/routers/restful/sql_utils.go

@@ -435,7 +435,7 @@ func QueryByMap(sqlstr string, offset, count int, params []interface{}) (interfa
 	return data, nil
 }
 
-// func QueryByMapT(sqlstr string, offset, count int, params []interface{}, tx *sqlx.Tx) (interface{}, error) {
+// QueryByMapT (sqlstr string, offset, count int, params []interface{}, tx *sqlx.Tx) (interface{}, error) {
 func QueryByMapT(sqlstr string, offset, count int, params []interface{}) (interface{}, error) {
 	if err := sqlCheckParam(sqlstr); err != nil {
 		return 0, err
@@ -1196,7 +1196,8 @@ func MapStrList(sql string, param ...interface{}) ([]map[string]string, error) {
 	return ress, nil
 }
 
-// func MapInterList(sql string, param ...interface{}) ([]map[string]interface{}, error) {
+// MapInterList
+//func MapInterList(sql string, param ...interface{}) ([]map[string]interface{}, error) {
 // 	ress := make([]map[string]interface{}, 0, 0)
 // 	rows, err := Dbs.Queryx(sql, param...)
 // 	if err != nil {
@@ -1232,9 +1233,15 @@ func MapStrList(sql string, param ...interface{}) ([]map[string]string, error) {
 // 	}()
 // 	return ress, nil
 // }
+
 func MapInterList(sql string, param ...interface{}) ([]map[string]interface{}, error) {
 	ress := make([]map[string]interface{}, 0, 0)
 	rows, err := Dbs.Queryx(sql, param...)
+	defer func() {
+		if err = rows.Close(); err != nil {
+			log.Default().Printf("sqlx row  close:%v", err)
+		}
+	}()
 	if err != nil {
 		log.Default().Printf("MapInterList Queryx: %v", err)
 		return ress, err
@@ -1263,11 +1270,6 @@ func MapInterList(sql string, param ...interface{}) ([]map[string]interface{}, e
 		}
 		ress = append(ress, m)
 	}
-	defer func() {
-		if err := rows.Close(); err != nil {
-			log.Default().Printf("sqlx row  close:%v", err)
-		}
-	}()
 	return ress, nil
 }
 

+ 173 - 0
apiserver/service/contract.go

@@ -0,0 +1,173 @@
+package service
+
+import (
+	"fmt"
+	"strings"
+	"sync"
+	"time"
+
+	log "github.com/sirupsen/logrus"
+	"kpt.xdmy/apiserver/model"
+	"kpt.xdmy/apiserver/model/http"
+)
+
+const (
+	ContractToAspUrl    = "http://192.168.61.117/SAPQ0/SRM/MM018/PurchaseInfo"
+	ContractToAspDestID = "EQMAN"
+	ContractToAspBussTp = "MM018"
+	ContractLimit       = 10
+)
+
+var (
+	ContractCodeMap = make(map[string][]*model.PastureBigcontract, 0)
+	sapContractReq  = &http.SapContractReq{
+		Dest: &http.Dest{
+			DestID: ContractToAspDestID,
+			BussTp: ContractToAspBussTp,
+			Url:    ContractToAspUrl,
+		},
+		DATA: &http.ContractDataToASP{},
+	}
+	loc, _ = time.LoadLocation("Local")
+)
+
+type ContractInfo struct {
+	PastureBigContract *model.PastureBigcontract // 牧场和合同关联表
+	Contract           []*model.Contract         // 合同子表
+	Provider           *model.Provider           // 供应商
+	Pasture            *model.Pasture            // 牧场
+}
+
+// GetBigContractData 获取主合同信息
+func GetBigContractData() []*model.BigContract {
+	bigContractData := make([]*model.BigContract, ContractLimit)
+	if err := s.d.DB.Where("isToSap = ?", 0).Limit(ContractLimit).Find(&bigContractData).Debug().Error; err != nil {
+		log.Errorf("AutoContractToASP Error:%v", err)
+	}
+	return bigContractData
+}
+
+func GetPastureBigContract(contractCode string) ([]*model.PastureBigcontract, error) {
+	pastureBigContract := make([]*model.PastureBigcontract, 0)
+	SQL := fmt.Sprintf("SELECT * FROM pasture_bigcontract WHERE bigcontract_id IN (SELECT id FROM bigcontract WHERE contractCode LIKE '%s' AND enable = 1)", contractCode)
+	if err := s.d.DB.Raw(SQL).Find(&pastureBigContract).Error; err != nil {
+		return nil, err
+	}
+
+	return pastureBigContract, nil
+}
+
+// GetContractInfo 获取合同相关信息
+func GetContractInfo(bigContract *model.BigContract, pastureBigContract *model.PastureBigcontract) *ContractInfo {
+	wg := sync.WaitGroup{}
+	wg.Add(3)
+	contractInfo := &ContractInfo{}
+	// 获取牧场数据合同数据
+	go func() {
+		pasture := &model.Pasture{
+			ID: pastureBigContract.PastureId,
+		}
+		if err := s.d.DB.First(pasture).Error; err != nil {
+			log.Errorf("AutoContractToASP Pasture Err:%v,bigContractData:%v", err, bigContract)
+		}
+		contractInfo.Pasture = pasture
+		wg.Done()
+	}()
+
+	// 获取合同子表数据
+	go func() {
+		contract := make([]*model.Contract, 0)
+		if err := s.d.DB.Where("bigId = ?", bigContract.ID).Find(&contract).Error; err != nil {
+			log.Errorf("AutoContractToASP contract Err:%v,bigContractData:%v", err, bigContract)
+		}
+		contractInfo.Contract = contract
+		wg.Done()
+	}()
+
+	// 获取供应商数据
+	go func() {
+		provider := &model.Provider{
+			ID: bigContract.ProviderID,
+		}
+		if err := s.d.DB.First(provider).Error; err != nil {
+			log.Errorf("AutoContractToASP Provider Err:%v,bigContractData:%v", err, bigContract)
+		}
+		contractInfo.Provider = provider
+		wg.Done()
+	}()
+	wg.Wait()
+	return contractInfo
+}
+
+// AutoContractToASP 合同信息自动同步到ASP
+func AutoContractToASP() {
+	bigContractData := GetBigContractData()
+	for _, bigContract := range bigContractData {
+		contractCode := bigContract.ContractCode
+		if strings.Contains(bigContract.ContractCode, "-") {
+			contractCodeSlice := strings.Split(bigContract.ContractCode, "-")
+			contractCode = contractCodeSlice[0]
+		}
+		if _, ok := ContractCodeMap[contractCode]; ok {
+			continue
+		}
+		pastureBigContractSlice, err := GetPastureBigContract(contractCode)
+		if err != nil {
+			log.Errorf("AutoContractToASP pastureBigContractSlice Err:%v", err)
+			continue
+		}
+		for _, pastureBigContract := range pastureBigContractSlice {
+			// 获取合同相关数据集合
+			contractInfo := GetContractInfo(bigContract, pastureBigContract)
+			if len(contractInfo.Contract) == 0 || pastureBigContract.PastureId == 18 {
+				continue
+			}
+			// 发送数据至SAP
+			PushContractDataToSAP(bigContract, contractInfo)
+			ContractCodeMap[contractCode] = append(ContractCodeMap[contractCode], pastureBigContract)
+		}
+		if err = s.d.DB.Model(bigContract).Where("id = ?", bigContract.ID).Update("isToSap", 1).Error; err != nil {
+			log.Errorf("AutoContractToASP SQLUpdate Error:%v", err)
+		}
+	}
+	log.Info("AutoContractToASP Success")
+}
+
+// PushContractDataToSAP 同步数据给SAP
+func PushContractDataToSAP(bigContract *model.BigContract, contractInfo *ContractInfo) {
+	for _, contract := range contractInfo.Contract {
+		LOEKZ := ""
+		if contract.Enable == 0 {
+			LOEKZ = "X"
+		}
+		startTime, _ := time.ParseInLocation(time.RFC3339, bigContract.StartTime, loc)
+		stopTime, _ := time.ParseInLocation(time.RFC3339, bigContract.StopTime, loc)
+
+		contractDataToASP := &http.ContractDataToASP{
+			MATNR: contract.PartCode,
+			LIFNR: contractInfo.Provider.SapCode,
+			EKORG: contractInfo.Pasture.ParchaseOrganization,
+			WERKS: contractInfo.Pasture.FactoryCode,
+			WAERS: "CNY",
+			PEINH: fmt.Sprintf("%f", contract.Price),
+			NETPR: fmt.Sprintf("%f", contract.Price),
+			MWSKZ: "J0",
+			EKGRP: contractInfo.Pasture.PurchasingGroup,
+			DATAB: startTime.Format("20060102"),
+			DATBI: stopTime.Format("20060102"),
+			LOEKZ: LOEKZ,
+			ESOKZ: fmt.Sprintf("%d", contract.IsZeroStock),
+			MEINS: contract.Unit,
+		}
+		sapContractReq.DATA = contractDataToASP
+
+		rp := &http.SapContractResp{}
+		if err := s.SyncSap(sapContractReq, rp, sapContractReq); err != nil {
+			log.Errorf("AutoContractToASP SyncSap Err:%v contract:%v", err, contract)
+			continue
+		}
+		if rp.Dest.Status != "S" {
+			log.Errorf("AutoContractToASP SyncSap Error:%v,contract:%v", rp, contract)
+		}
+	}
+}

+ 10 - 4
apiserver/service/job.go

@@ -17,10 +17,10 @@ func SapJobInit() {
 	spec := fmt.Sprintf("@every %v", duetimecst.Sub(duetimecst1))
 	c := cron.New()
 	c.AddFunc(spec, func() {
-		AutoSapOrderJob()
-		AutoSrmOrderJob()
-		AutoSapReturnOrderJob()
-		AutoSrmReturnOrderJob()
+		//AutoSapOrderJob()
+		//AutoSrmOrderJob()
+		//AutoSapReturnOrderJob()
+		//AutoSrmReturnOrderJob()
 	})
 	c.Start()
 	/*
@@ -104,6 +104,12 @@ func SapJobInit() {
 		//}
 
 	})
+
+	//timeLocalSub, _ := time.ParseInLocation("15:04:05", "00:01:00", time.Local)
+	//timeLocal, _ := time.ParseInLocation("15:04:05", "00:00:00", time.Local)
+	//c1.AddFunc(fmt.Sprintf("@every %v", timeLocalSub.Sub(timeLocal)), func() {
+	//	AutoContractToASP()
+	//})
 	c1.Start()
 }
 

+ 6 - 8
apiserver/service/order.go

@@ -3,17 +3,15 @@ package service
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/jmoiron/sqlx"
-	"kpt.xdmy/apiserver/config"
 	"strconv"
 	"strings"
 	"time"
 
-	"github.com/pkg/errors"
-
 	_ "github.com/go-sql-driver/mysql"
-
+	"github.com/jmoiron/sqlx"
+	"github.com/pkg/errors"
 	log "github.com/sirupsen/logrus"
+	"kpt.xdmy/apiserver/config"
 	"kpt.xdmy/apiserver/model"
 	"kpt.xdmy/apiserver/model/http"
 	"kpt.xdmy/pkg/util"
@@ -60,7 +58,7 @@ func (s *Service) PurchaseOrder(p interface{}) {
 	}
 }
 
-// 定时(每分钟 一次)读取未同步的采购订单,同步到sap
+// AutoSapOrderJob 定时(每分钟 一次)读取未同步的采购订单,同步到sap
 // 同步失败的采购订单,变更状态,改为手动同步
 // 状态(sapStatus):0,未同步;1,成功;2,失败
 func AutoSapOrderJob() {
@@ -489,7 +487,7 @@ func SrmOrder(p *model.BigBuyDetail, IsReturn string) {
 	}
 }
 
-// 定时(每分钟 一次)读取未同步的采购订单,同步到sap
+// AutoSapReturnOrderJob 定时(每分钟 一次)读取未同步的采购订单,同步到sap
 // 同步失败的采购订单,变更状态,改为手动同步
 // 状态(sapStatus):0,未同步;1,成功;2,失败
 func AutoSapReturnOrderJob() {
@@ -530,7 +528,7 @@ WHERE
 	}
 }
 
-// 发送采购订单到sap
+// SapReturnOrder 发送采购订单到sap
 func SapReturnOrder(p *model.BigRefunddetail, dflag string) (error, string) {
 	r := new(http.SapOrderReq)
 	rp := new(http.OrderResp)

+ 2 - 2
cmd/conf/app.ini

@@ -71,8 +71,8 @@ EasUrl = http://60.174.151.11:6888
 
 
 [database]
-; ####DsnDsn = eq:Xdmy@1234@tcp(192.168.61.42:3306)/eq?charset=utf8&parseTime=True&loc=Local
-DsnDsn = root:kepaiteng!QAZ@tcp(222.73.129.15:31306)/eq230508?charset=utf8&parseTime=True&loc=Local
+; DsnDsn = eq:Xdmy@1234@tcp(192.168.61.42:3306)/eq?charset=utf8&parseTime=True&loc=Local
+DsnDsn = root:kepaiteng!QAZ@tcp(222.73.129.15:31306)/eq230328?charset=utf8&parseTime=True&loc=Local
 ; ####DsnDsn = eq:Xdmy@1234@tcp(192.168.63.42:3306)/eq?charset=utf8&parseTime=True&loc=Local
 ; ####DsnDsn = root:root@tcp(127.0.0.1:3309)/test?charset=utf8&parseTime=True&loc=Local
 ; ####DsnDsn = root:root@tcp(192.168.1.93:3326)/eqdev?charset=utf8&parseTime=True&loc=Local

+ 1 - 1
cmd/conf/conf.toml

@@ -1,6 +1,6 @@
 [db]
 #dsn = "root:root@tcp(127.0.0.1:3309)/test?charset=utf8&parseTime=True&loc=Local"
-dsn = "root:kepaiteng!QAZ@tcp(222.73.129.15:31306)/eq230508?charset=utf8&parseTime=True&loc=Local"
+dsn = "root:kepaiteng!QAZ@tcp(222.73.129.15:31306)/eq230328?charset=utf8&parseTime=True&loc=Local"
 #dsn = "eq:Xdmy@1234@tcp(192.168.61.42:3306)/eq?charset=utf8&parseTime=True&loc=Local"
 #dsn = "eq:Xdmy@1234@tcp(192.168.63.42:3306)/eq?charset=utf8&parseTime=True&loc=Local"
 #dsn = "root:root@tcp(192.168.1.93:3326)/eqdev?charset=utf8&parseTime=True&loc=Local"

+ 1 - 0
cmd/main.go

@@ -8,6 +8,7 @@ import (
 	"net/http"
 	"os"
 	"strings"
+
 	// logrus "github.com/sirupsen/logrus"
 
 	"github.com/kardianos/service"

+ 1 - 23
go.mod

@@ -43,28 +43,6 @@ require (
 	github.com/xuri/excelize/v2 v2.6.1
 	gorm.io/driver/mysql v1.3.5
 	gorm.io/gorm v1.25.0
+	
 )
 
-require (
-	github.com/denisenkom/go-mssqldb v0.12.3 // indirect
-	github.com/faabiosr/cachego v0.17.0 // indirect
-	github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect
-	github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect
-	github.com/facebookgo/structtag v0.0.0-20150214074306-217e25fb9691 // indirect
-	github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect
-	github.com/fastwego/dingding v1.0.0-beta.4 // indirect
-	github.com/go-openapi/spec v0.20.6 // indirect
-	github.com/go-openapi/swag v0.21.1 // indirect
-	github.com/go-playground/validator/v10 v10.11.0 // indirect
-	github.com/lib/pq v1.10.2 // indirect
-	github.com/liyue201/goqr v0.0.0-20200803022322-df443203d4ea // indirect
-	github.com/mailru/easyjson v0.7.7 // indirect
-	github.com/makiuchi-d/gozxing v0.1.1 // indirect
-	github.com/mattn/go-isatty v0.0.18 // indirect
-	github.com/pelletier/go-toml/v2 v2.0.2 // indirect
-	github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect
-	github.com/swaggo/gin-swagger v1.5.3
-	golang.org/x/crypto v0.8.0 // indirect
-	golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
-	gorm.io/driver/sqlserver v1.4.3 // indirect
-)

+ 9 - 36
go.sum

@@ -2,12 +2,9 @@ github.com/360EntSecGroup-Skylar/excelize v1.4.1 h1:l55mJb6rkkaUzOpSsgEeKYtS6/0g
 github.com/360EntSecGroup-Skylar/excelize v1.4.1/go.mod h1:vnax29X2usfl7HHkBrX5EvSCJcmH3dT9luvxzu8iGAE=
 github.com/Anderson-Lu/gofasion v0.0.0-20190530065914-6a05b679ee48 h1:Y0um3nHCQDleEpQzahJAkT8mvKTlLqvjoIqZYIAJgAw=
 github.com/Anderson-Lu/gofasion v0.0.0-20190530065914-6a05b679ee48/go.mod h1:nJfnu9e1b/lczgULa3laeoUzeadR3ylEgYj8zpXO+Wc=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
 github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1/go.mod h1:gLa1CL2RNE4s7M3yopJ/p0iq5DdY6Yv5ZUt9MTRZOQM=
-github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
 github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
 github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
@@ -56,8 +53,6 @@ github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76/go.mod h1:vYwsqCOLxGii
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw=
-github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo=
 github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
 github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko=
@@ -157,8 +152,9 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
 github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -199,8 +195,6 @@ github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVY
 github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
-github.com/k0kubun/pp/v3 v3.1.0 h1:ifxtqJkRZhw3h554/z/8zm6AAbyO4LLKDlA5eV+9O8Q=
-github.com/k0kubun/pp/v3 v3.1.0/go.mod h1:vIrP5CF0n78pKHm2Ku6GVerpZBJvscg48WepUYEk2gw=
 github.com/k0kubun/pp/v3 v3.2.0 h1:h33hNTZ9nVFNP3u2Fsgz8JXiF5JINoZfFq4SvKJwNcs=
 github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapdz1EwA=
 github.com/kardianos/service v1.2.1 h1:AYndMsehS+ywIS6RB9KOlcXzteWUzxgMgBymJD7+BYk=
@@ -210,8 +204,9 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
 github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -231,13 +226,8 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/makiuchi-d/gozxing v0.1.1 h1:xxqijhoedi+/lZlhINteGbywIrewVdVv2wl9r5O9S1I=
-github.com/makiuchi-d/gozxing v0.1.1/go.mod h1:eRIHbOjX7QWxLIDJoQuMLhuXg9LAuw6znsUtRkNw9DU=
-github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
-github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
 github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
@@ -286,7 +276,6 @@ github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZO
 github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=
 github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI=
 github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
-github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
 github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ=
 github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
 github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -317,8 +306,9 @@ github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfm
 github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E=
 github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
 github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
 github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
+github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
 github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg=
@@ -353,7 +343,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
 github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
 github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a h1:kAe4YSu0O0UFn1DowNo2MY5p6xzqtJ/wQ7LZynSvGaY=
 github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a/go.mod h1:lKJPbtWzJ9JhsTN1k1gZgleJWY/cqq0psdoMmaThG3w=
 github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE=
 github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg=
@@ -398,7 +387,6 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@@ -408,15 +396,12 @@ golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0
 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU=
-golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
 golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
 golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
 golang.org/x/image v0.0.0-20220413100746-70e8d0d3baa9 h1:LRtI4W37N+KFebI/qV0OFiLUv4GLOWeEW5hn/KEJvxE=
 golang.org/x/image v0.0.0-20220413100746-70e8d0d3baa9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8=
 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
@@ -433,15 +418,12 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/
 golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
-golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
-golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
-golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
 golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
@@ -480,7 +462,6 @@ golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -489,8 +470,6 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
-golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
@@ -498,7 +477,6 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
 golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -507,8 +485,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
@@ -518,17 +494,13 @@ golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgw
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
 golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
-golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM=
 golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
@@ -536,8 +508,9 @@ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miE
 google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
 google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
 google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/bsm/ratelimit.v1 v1.0.0-20160220154919-db14e161995a/go.mod h1:KF9sEfUPAXdG8Oev9e99iLGnl2uJMjc5B+4y3O7x610=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -550,6 +523,7 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
 gopkg.in/mgo.v2 v2.0.0-20160818020120-3f83fa500528/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
+gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU=
 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=
 gopkg.in/redis.v4 v4.2.4/go.mod h1:8KREHdypkCEojGKQcjMqAODMICIVwZAONWq8RowTITA=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
@@ -572,7 +546,6 @@ gorm.io/driver/mysql v1.3.5 h1:iWBTVW/8Ij5AG4e0G/zqzaJblYkBI1VIL1LG2HUGsvY=
 gorm.io/driver/mysql v1.3.5/go.mod h1:sSIebwZAVPiT+27jK9HIwvsqOGKx3YMPmrA3mBJR10c=
 gorm.io/driver/sqlserver v1.4.3 h1:ji91Zb/zS7NWrMRJBfoM9C0gyxCSh9anQoJApqEkiV8=
 gorm.io/driver/sqlserver v1.4.3/go.mod h1:6ytXpaVImPf267JVRZ74Hn+gZaBRUX/HkvYx+3aS+78=
-gorm.io/gorm v1.23.8 h1:h8sGJ+biDgBA1AD1Ha9gFCx7h8npU7AsLdlkX0n2TpE=
 gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
 gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA=
 gorm.io/gorm v1.25.0 h1:+KtYtb2roDz14EQe4bla8CbQlmb9dN3VejSai3lprfU=

+ 3 - 0
migration/v0001_alter_contract.sql

@@ -0,0 +1,3 @@
+ALTER TABLE `bigcontract`
+    ADD COLUMN `isToSap` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否同步至asp 0 未同步 1 已同步' ,
+    ADD INDEX idx_is_to_sap (`isToSap`);

+ 2 - 2
pkg/setting/setting.go

@@ -144,8 +144,8 @@ func Setup(dir string) {
 	}
 	cfg, err = ini.Load(CurrentPath + "conf/app.ini")
 	if err != nil {
-		log.Fatalf("setting.Setup, fail to parse 'conf/app.ini': %s", CurrentPath)
-		log.Fatalf("setting.Setup, fail to parse 'conf/app.ini': %v", err)
+		log.Fatalf("setting.Setup, fail to parse 'conf/app.ini' CurrentPath: %s,Err: %v", CurrentPath, err)
+		panic(err)
 	}
 	DatabaseSetting.ShowXormlog = false
 	DatabaseSetting.ShowGetSqllog = false