- GetWaybills.

This commit is contained in:
gazebo
2018-10-12 15:59:13 +08:00
parent 3145d371c0
commit a96e0f4d9f
3 changed files with 142 additions and 6 deletions

View File

@@ -19,7 +19,7 @@ const (
defPageSize = 50
)
type tMTWaybillExport struct {
type tWaybillExt struct {
model.Waybill
StoreName string `json:"storeName"`
StoreID int `json:"storeID" orm:"column(store_id)"`
@@ -186,7 +186,7 @@ func (c *OrderManager) ExportMTWaybills(fromDateStr, toDateStr string) (excelCon
toDateStr = fromDateStr
}
toDate := utils.Str2Time(toDateStr).Add(24 * time.Hour)
var waybills []*tMTWaybillExport
var waybills []*tWaybillExt
sql := `
SELECT t1.*, t2.store_name, IF(t2.store_id <> 0, t2.store_id, t2.jx_store_id) store_id
FROM waybill t1
@@ -267,9 +267,25 @@ func (c *OrderManager) GetOrders(fromDateStr, toDateStr string, params map[strin
sqlWhere += ")"
}
if params["vendorID"] != nil {
sqlWhere += " AND t1.vendor_id = ?"
sqlParams = append(sqlParams, params["vendorID"])
if params["vendorIDs"] != nil {
var vendorIDs []int
if err = utils.UnmarshalUseNumber([]byte(params["vendorIDs"].(string)), &vendorIDs); err != nil {
return nil, err
}
if len(vendorIDs) > 0 {
sqlWhere += " AND t1.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDs)) + ")"
sqlParams = append(sqlParams, vendorIDs)
}
}
if params["waybillVendorIDs"] != nil {
var waybillVendorIDs []int
if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil {
return nil, err
}
if len(waybillVendorIDs) > 0 {
sqlWhere += " AND t2.waybill_vendor_id IN (" + dao.GenQuestionMarks(len(waybillVendorIDs)) + ")"
sqlParams = append(sqlParams, waybillVendorIDs)
}
}
if params["storeIDs"] != nil {
var storeIDs []int
@@ -330,3 +346,94 @@ func (c *OrderManager) GetOrders(fromDateStr, toDateStr string, params map[strin
dao.Commit(db)
return pagedInfo, err
}
func (c *OrderManager) GetWaybills(fromDateStr, toDateStr string, params map[string]interface{}) (pagedInfo *model.PagedInfo, err error) {
globals.SugarLogger.Debugf("GetWaybills from:%s to:%s", fromDateStr, toDateStr)
fromDate := utils.Str2Time(fromDateStr)
if toDateStr == "" {
toDateStr = fromDateStr
}
toDate := utils.Str2Time(toDateStr).Add(24 * time.Hour)
pageSize := defPageSize
if params["pageSize"] != nil {
pageSize = params["pageSize"].(int)
if pageSize == 0 {
pageSize = 999999999
}
}
offset := 0
if params["offset"] != nil {
offset = params["offset"].(int)
}
sqlParams := []interface{}{
fromDate,
toDate,
}
sql := `
SELECT SQL_CALC_FOUND_ROWS t1.*, t2.store_name, IF(t2.store_id <> 0, t2.store_id, t2.jx_store_id) store_id
FROM waybill t1
JOIN goods_order t2 ON t1.vendor_order_id = t2.vendor_order_id
WHERE t1.status = 105 AND t1.waybill_created_at >= ? AND t1.waybill_created_at < ?
`
if params["keyword"] != nil {
keyword := params["keyword"].(string)
keywordLike := "%" + keyword + "%"
sql += `
AND (t2.store_name LIKE ? OR t1.vendor_order_id LIKE ?
OR t2.vendor_waybill_id LIKE ? OR t2.courier_name LIKE ? OR t2.courier_mobile LIKE ?
`
sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike)
if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil {
sql += " OR t2.store_id = ? OR t2.jx_store_id = ?"
sqlParams = append(sqlParams, keywordInt64, keywordInt64)
}
sql += ")"
}
if params["waybillVendorIDs"] != nil {
var waybillVendorIDs []int
if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil {
return nil, err
}
if len(waybillVendorIDs) > 0 {
sql += " AND t2.waybill_vendor_id IN (" + dao.GenQuestionMarks(len(waybillVendorIDs)) + ")"
sqlParams = append(sqlParams, waybillVendorIDs)
}
}
if params["statuss"] != nil {
var statuss []int
if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil {
return nil, err
}
if len(statuss) > 0 {
sql += " AND t1.status IN (" + dao.GenQuestionMarks(len(statuss)) + ")"
sqlParams = append(sqlParams, statuss)
}
}
sql += `
ORDER BY t1.id
LIMIT ? OFFSET ?
`
sqlParams = append(sqlParams, pageSize, offset)
var waybills []*tWaybillExt
pagedInfo = &model.PagedInfo{}
db := dao.GetDB()
dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db)
panic(r)
}
}()
if err = dao.GetRows(db, &waybills, sql, sqlParams...); err == nil {
countInfo := &struct{ Ct int }{}
if err = dao.GetRow(db, countInfo, "SELECT FOUND_ROWS() ct"); err == nil {
pagedInfo.TotalCount = countInfo.Ct
pagedInfo.Data = waybills
return pagedInfo, nil
}
}
dao.Commit(db)
return nil, err
}