|
@@ -6,13 +6,16 @@ import (
|
|
|
"cold-delivery/common/actions"
|
|
|
cDto "cold-delivery/common/dto"
|
|
|
"cold-delivery/common/global"
|
|
|
+ "cold-delivery/common/lib"
|
|
|
model2 "cold-delivery/common/model"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
- "gogs.baozhida.cn/zoie/OAuth-core/service"
|
|
|
- "gorm.io/gorm"
|
|
|
"sort"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
+
|
|
|
+ "gogs.baozhida.cn/zoie/OAuth-core/service"
|
|
|
+ "gorm.io/gorm"
|
|
|
)
|
|
|
|
|
|
type IceRaft struct {
|
|
@@ -41,15 +44,6 @@ func (e *IceRaft) GetPage(c *dto.IceRaftGetPageReq, list *[]model.IceRaft, count
|
|
|
Find(list).Limit(-1).Offset(-1).
|
|
|
Count(count).Error
|
|
|
}
|
|
|
- for i, _ := range *list {
|
|
|
- if (*list)[i].BindCoolerBox != 0 {
|
|
|
- err = e.Orm.Model(&model.CoolerBox{}).Select("name").Where("id = ?", (*list)[i].BindCoolerBox).First(&(*list)[i].CoolerBoxName).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return global.GetFailedErr
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return global.GetFailedErr
|
|
@@ -71,7 +65,7 @@ func IceRaftNameRecordStatusScopes(status string) func(db *gorm.DB) *gorm.DB {
|
|
|
func IceRaftNameRecordIceLockerScopes(status string) func(db *gorm.DB) *gorm.DB {
|
|
|
return func(db *gorm.DB) *gorm.DB {
|
|
|
if len(status) == 0 {
|
|
|
- return db.Where("ice_raft_record.status = 1 or ice_raft_record.status =2")
|
|
|
+ return db.Where("ice_raft_record.status = 1 or ice_raft_record.status =2 or ice_raft_record.status =5 or ice_raft_record.status =6")
|
|
|
}
|
|
|
if status == "0" {
|
|
|
return db.Where("ice_raft_record.status is null")
|
|
@@ -150,17 +144,17 @@ func (e *IceRaft) GetRecordPage(c *dto.IceRaftGetNewestRecordPageReq, list *[]mo
|
|
|
Find(list).Limit(-1).Offset(-1).
|
|
|
Count(count).Error
|
|
|
}
|
|
|
- for i, _ := range *list {
|
|
|
- if (*list)[i].IceRaftRecord.IsSuitableForCold == 1 {
|
|
|
- start, _ := time.Parse("2006-01-02 15:04:05", (*list)[i].IceRaftRecord.StartIceColdTime.String())
|
|
|
- end, _ := time.Parse("2006-01-02 15:04:05", (*list)[i].IceRaftRecord.EndForColdTime.String())
|
|
|
- sub := end.Sub(start)
|
|
|
- hours := sub.Hours()
|
|
|
- minutes := int(sub.Minutes()) % 60
|
|
|
- sprintf := fmt.Sprintf("%vh%dm\n", hours, minutes)
|
|
|
- (*list)[i].IceRaftRecord.CoolingTime = sprintf
|
|
|
- }
|
|
|
- }
|
|
|
+ //for i, _ := range *list {
|
|
|
+ // if (*list)[i].IceRaftRecord.IsSuitableForCold == 1 && len((*list)[i].IceRaftRecord.StartIceColdTime.String()) != 0 {
|
|
|
+ // start, _ := time.Parse("2006-01-02 15:04:05", (*list)[i].IceRaftRecord.StartIceColdTime.String())
|
|
|
+ // end, _ := time.Parse("2006-01-02 15:04:05", (*list)[i].IceRaftRecord.EndForColdTime.String())
|
|
|
+ // sub := end.Sub(start)
|
|
|
+ // hours := sub.Hours()
|
|
|
+ // minutes := int(sub.Minutes()) % 60
|
|
|
+ // sprintf := fmt.Sprintf("%vh%dm\n", hours, minutes)
|
|
|
+ // (*list)[i].IceRaftRecord.CoolingTime = sprintf
|
|
|
+ // }
|
|
|
+ //}
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return global.GetFailedErr
|
|
@@ -456,13 +450,14 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
err = errors.New("保温箱状态异常")
|
|
|
return err
|
|
|
}
|
|
|
- var user model.SysUser
|
|
|
- falseIce := make([]string, 0)
|
|
|
- first := e.Orm.Model(&model.SysUser{}).Where("id = ?", p.UserId).First(&user)
|
|
|
- if first.Error != nil {
|
|
|
- err = errors.New("获取用户信息失败")
|
|
|
- return err
|
|
|
+ if len(coolerBoxModel.BindIceRaftId) != 0 {
|
|
|
+ is := lib.StrListEqual(coolerBoxModel.BindIceRaftId, c.Code)
|
|
|
+ if !is {
|
|
|
+ err = errors.New("保温箱已绑定冰排,禁止出库")
|
|
|
+ return err
|
|
|
+ }
|
|
|
}
|
|
|
+ falseIce := make([]string, 0)
|
|
|
err, sysUser := GetUserProfile(e.Orm, p.UserId)
|
|
|
if err != nil {
|
|
|
err = errors.New("获取用户信息失败")
|
|
@@ -485,12 +480,21 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- //判断冰排绑定,当冰排绑定和需要绑定的保温箱id不一致时禁止冰排出库装箱
|
|
|
- if iceRaftModel.BindCoolerBox != 0 && iceRaftModel.BindCoolerBox != coolerBoxModel.Id {
|
|
|
- err = errors.New(fmt.Sprintf("冰排【%s】绑定的保温箱id为%d,当前保温箱id为%d,禁止出库!", code, iceRaftModel.BindCoolerBox, c.CoolerBoxId))
|
|
|
+ var iceRaftSuccess []string
|
|
|
+ var iceRaftErr []string
|
|
|
+ if len(iceRaftModel.BindCoolerBox) != 0 {
|
|
|
+ for _, v := range iceRaftModel.BindCoolerBox {
|
|
|
+ if v == coolerBoxModel.Id {
|
|
|
+ iceRaftSuccess = append(iceRaftSuccess, code)
|
|
|
+ } else {
|
|
|
+ iceRaftErr = append(iceRaftErr, fmt.Sprintf("冰排【%s】已绑定保温箱【%v】,禁止出库!", code, iceRaftModel.CoolerBoxName))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(iceRaftErr) != 0 && len(iceRaftSuccess) == 0 {
|
|
|
+ err = errors.New(strings.Join(iceRaftErr, " "))
|
|
|
return err
|
|
|
}
|
|
|
-
|
|
|
// 获取冰排记录
|
|
|
var iceRaftRecordModel model.IceRaftRecord
|
|
|
err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
|
|
@@ -500,7 +504,7 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return errors.New("获取冰排记录失败,请确认冰排是否入库!")
|
|
|
}
|
|
|
- if len(iceRaftRecordModel.OutStorageTime.String()) > 0 {
|
|
|
+ if len(iceRaftRecordModel.OutStorageTime.String()) > 0 && iceRaftRecordModel.Status == model.IceRaftRecordStatusUsing {
|
|
|
err = errors.New(fmt.Sprintf("冰排【%s】已出库,禁止出库!", code))
|
|
|
return err
|
|
|
}
|
|
@@ -509,21 +513,32 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
sort.Slice(iceRaftRecordModel.FreezeClaim, func(i, j int) bool {
|
|
|
return iceRaftRecordModel.FreezeClaim[i] < iceRaftRecordModel.FreezeClaim[j]
|
|
|
})
|
|
|
-
|
|
|
- if sysUser.Dept.IsOutStorage {
|
|
|
- for _, v := range iceRaftRecordModel.FreezeClaim {
|
|
|
- if inTime.Add(time.Hour * time.Duration(v)).After(time.Now()) {
|
|
|
- str := fmt.Sprintf("冰排【%s】未达到冷冻时长【%v】,禁止出库", code, v)
|
|
|
- err = errors.New(str)
|
|
|
- return err
|
|
|
- }
|
|
|
- }
|
|
|
+ fmt.Println("冷冻要求====================", iceRaftRecordModel.FreezeClaim)
|
|
|
+
|
|
|
+ //if sysUser.Dept.IsOutStorage {
|
|
|
+ // for _, v := range iceRaftRecordModel.FreezeClaim {
|
|
|
+ // if inTime.Add(time.Hour * time.Duration(v)).After(time.Now()) {
|
|
|
+ // str := fmt.Sprintf("冰排【%s】未达到冷冻时长【%v】,禁止出库", code, v)
|
|
|
+ // err = errors.New(str)
|
|
|
+ // return err
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ if inTime.Add(time.Hour * time.Duration(iceRaftRecordModel.FreezeClaim[0])).After(time.Now()) {
|
|
|
+ str := fmt.Sprintf("冰排【%s】未达到冷冻时长【%v】,禁止出库", code, iceRaftRecordModel.FreezeClaim[0])
|
|
|
+ err = errors.New(str)
|
|
|
+ return err
|
|
|
}
|
|
|
//判断冰排释冷要求是否为0,如果不为零,则判断是否达到释冷时长,否则不允许出库
|
|
|
- if sysUser.Dept.IsIceReleaseCold && iceRaftRecordModel.ForColdTime != 0 {
|
|
|
- start, err := time.Parse("2006-01-02 15:04:05", iceRaftRecordModel.StartIceColdTime.String())
|
|
|
- if start.Add(time.Minute * time.Duration(iceRaftRecordModel.ForColdTime)).After(time.Now()) {
|
|
|
- err = errors.New(fmt.Sprintf("冰排【%s】未达到释冷时长【%v】,禁止出库", code, iceRaftRecordModel.ForColdTime))
|
|
|
+ if sysUser.Dept.IsIceReleaseCold && iceRaftModel.ForColdTime != 0 {
|
|
|
+ if len(iceRaftRecordModel.StartIceColdTime.String()) != 0 {
|
|
|
+ start, err := time.Parse("2006-01-02 15:04:05", iceRaftRecordModel.StartIceColdTime.String())
|
|
|
+ if start.Add(time.Hour * time.Duration(iceRaftRecordModel.ForColdTime)).After(time.Now()) {
|
|
|
+ err = errors.New(fmt.Sprintf("冰排【%s】未达到释冷时长【%v】小时,禁止出库", code, iceRaftRecordModel.ForColdTime))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ err = errors.New(fmt.Sprintf("冰排【%s】还未开始释冷,请先释冷再出库!!!", code))
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
@@ -531,10 +546,10 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
iceRaftRecordModel.Status = model.IceRaftRecordStatusUsing
|
|
|
iceRaftRecordModel.CoolerBoxId = coolerBoxModel.Id
|
|
|
iceRaftRecordModel.OutStorageTime = model2.Time(time.Now())
|
|
|
- iceRaftRecordModel.IceUseUsers = user.NickName
|
|
|
+ iceRaftRecordModel.IceUseUsers = sysUser.NickName
|
|
|
iceRaftRecordModel.IceUseTime = model2.Time(time.Now())
|
|
|
iceRaftRecordModel.IceRaftId = iceRaftModel.Id
|
|
|
- if user.Dept.IsIceReleaseCold {
|
|
|
+ if sysUser.Dept.IsIceReleaseCold {
|
|
|
iceRaftRecordModel.IsSuitableForCold = 1
|
|
|
iceRaftRecordModel.SuitableForCold = iceRaftModel.SuitableForCold
|
|
|
iceRaftRecordModel.EndForColdTime = model2.Time(time.Now())
|
|
@@ -569,7 +584,7 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
cooler.DeptId = p.DeptId
|
|
|
cooler.Name = coolerBoxModel.Name
|
|
|
cooler.HistoryCode = append(cooler.HistoryCode, c.Code...)
|
|
|
- cooler.CoolerUseUsers = user.NickName
|
|
|
+ cooler.CoolerUseUsers = sysUser.NickName
|
|
|
cooler.ForColdCoolerTime = coolerBoxModel.ForColdCoolerTime
|
|
|
//查询是否有正在使用中的保温箱记录
|
|
|
var count int64
|
|
@@ -589,11 +604,17 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
}
|
|
|
if sysUser.Dept.IsCoolerReleaseCold && coolerBoxModel.ForColdCoolerTime != 0 {
|
|
|
start, err := time.Parse("2006-01-02 15:04:05", coolerBoxRecordModel.CoolerBoxStarTime.String())
|
|
|
- if start.Add(time.Minute * time.Duration(coolerBoxModel.ForColdCoolerTime)).After(time.Now()) {
|
|
|
+ if start.Add(time.Hour * time.Duration(coolerBoxModel.ForColdCoolerTime)).After(time.Now()) {
|
|
|
err = errors.New(fmt.Sprintf("保温箱未达到释冷时长【%v】分钟,禁止装箱", coolerBoxModel.ForColdCoolerTime))
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
|
+ //更新保温箱状态为使用中 2
|
|
|
+ err = e.Orm.Table(model.CoolerBox{}.TableName()).Where("id =?", coolerBoxModel.Id).Update("use_status", "2").Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("更新保温箱状态失败: %s", err)
|
|
|
+ return errors.New("更新保温箱状态失败")
|
|
|
+ }
|
|
|
//如果有正在使用中的保温箱记录,就更新
|
|
|
if count > 0 {
|
|
|
err = tx.Where("id = ?", coolerBoxRecordModel.Id).Updates(&cooler).Error
|
|
@@ -606,7 +627,7 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
}
|
|
|
|
|
|
// BindCookerBox 冰排绑定保温箱
|
|
|
-func (e *IceRaft) BindCookerBox(c *dto.IceRaftOutStorageReq, p *actions.DataPermission) error {
|
|
|
+func (e *IceRaft) BindCookerBox(c *dto.BindCoolerBox, p *actions.DataPermission) error {
|
|
|
var err error
|
|
|
|
|
|
tx := e.Orm.Begin()
|
|
@@ -618,51 +639,115 @@ func (e *IceRaft) BindCookerBox(c *dto.IceRaftOutStorageReq, p *actions.DataPerm
|
|
|
}
|
|
|
}()
|
|
|
// 查询保温箱信息
|
|
|
- var coolerBoxModel model.CoolerBox
|
|
|
- err = e.Orm.Scopes(actions.Permission(coolerBoxModel.TableName(), p)).
|
|
|
- First(&coolerBoxModel, c.CoolerBoxId).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New("获取保温箱信息失败")
|
|
|
- }
|
|
|
- if coolerBoxModel.Status != model.CoolerBoxStatusNormal {
|
|
|
- err = errors.New("保温箱状态异常")
|
|
|
- return err
|
|
|
- }
|
|
|
- for _, code := range c.Code {
|
|
|
- // 查询冰排是否存在
|
|
|
- var iceRaftModel model.IceRaft
|
|
|
- err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
|
|
|
- Where("code = ?", code).
|
|
|
- Preload("IceRaftRecord").
|
|
|
- First(&iceRaftModel).Error
|
|
|
+ for _, v := range c.CoolerBoxId {
|
|
|
+ var coolerBoxModel model.CoolerBox
|
|
|
+ err = e.Orm.Scopes(actions.Permission(coolerBoxModel.TableName(), p)).Where("id =?", v).
|
|
|
+ First(&coolerBoxModel).Error
|
|
|
if err != nil {
|
|
|
- e.Log.Errorf("获取冰排信息失败: %s", err)
|
|
|
- return errors.New("获取冰排信息失败")
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("获取保温箱信息失败")
|
|
|
}
|
|
|
-
|
|
|
- if iceRaftModel.Status != model.IceRaftStatusNormal {
|
|
|
- err = errors.New(fmt.Sprintf("冰排【%s】状态异常", code))
|
|
|
+ if coolerBoxModel.Status != model.CoolerBoxStatusNormal {
|
|
|
+ err = errors.New("保温箱状态不可用")
|
|
|
return err
|
|
|
}
|
|
|
- if iceRaftModel.BindCoolerBox != 0 {
|
|
|
- err = tx.Model(&coolerBoxModel).Where("id =?", iceRaftModel.BindCoolerBox).Update("bind_ice_raft_id", "").Error
|
|
|
- err = errors.New("更新绑定失败")
|
|
|
- return err
|
|
|
+ for _, code := range c.Code {
|
|
|
+ // 查询冰排是否存在
|
|
|
+ var iceRaftModel model.IceRaft
|
|
|
+ err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
|
|
|
+ Where("code = ?", code).
|
|
|
+ Preload("IceRaftRecord").
|
|
|
+ First(&iceRaftModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("获取冰排信息失败: %s", err)
|
|
|
+ return errors.New("获取冰排信息失败")
|
|
|
+ }
|
|
|
+
|
|
|
+ if iceRaftModel.Status != model.IceRaftStatusNormal {
|
|
|
+ err = errors.New(fmt.Sprintf("冰排【%s】状态异常", code))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ iceRaftModel.CoolerBoxName = append(iceRaftModel.CoolerBoxName, coolerBoxModel.Name)
|
|
|
+ iceRaftModel.BindCoolerBox = append(iceRaftModel.BindCoolerBox, coolerBoxModel.Id)
|
|
|
+ iceRaftModel.CoolerBoxName = cDto.UniqueSlice(iceRaftModel.CoolerBoxName)
|
|
|
+ iceRaftModel.BindCoolerBox = cDto.UniqueSliceInt(iceRaftModel.BindCoolerBox)
|
|
|
+
|
|
|
+ err = e.Orm.Model(&iceRaftModel).Where("id =?", iceRaftModel.Id).Update("bind_cooler_box", iceRaftModel.BindCoolerBox).Update("cooler_box_name", iceRaftModel.CoolerBoxName).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("绑定保温箱失败: %s", err)
|
|
|
+ return errors.New("绑定保温箱失败")
|
|
|
+ }
|
|
|
+ coolerBoxModel.BindIceRaftId = append(coolerBoxModel.BindIceRaftId, code)
|
|
|
+ coolerBoxModel.BindIceRaftId = cDto.UniqueSlice(coolerBoxModel.BindIceRaftId)
|
|
|
+ err = e.Orm.Model(&coolerBoxModel).Where("id =?", coolerBoxModel.Id).Update("bind_ice_raft_id", coolerBoxModel.BindIceRaftId).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("绑定保温箱失败: %s", err)
|
|
|
+ return errors.New("绑定保温箱失败")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+func (e *IceRaft) UnBindCookerBox(c *dto.UnBindCoolerBox, p *actions.DataPermission) error {
|
|
|
+ var err error
|
|
|
+
|
|
|
+ tx := e.Orm.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ } else {
|
|
|
+ tx.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ // 查询冰排是否存在
|
|
|
+ var iceRaftModel model.IceRaft
|
|
|
+ err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
|
|
|
+ Where("code = ?", c.Code).
|
|
|
+ Preload("IceRaftRecord").
|
|
|
+ First(&iceRaftModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("获取冰排信息失败: %s", err)
|
|
|
+ return errors.New("获取冰排信息失败")
|
|
|
+ }
|
|
|
+ for _, v := range iceRaftModel.BindCoolerBox {
|
|
|
+ var coolerBoxModel model.CoolerBox
|
|
|
+ err = e.Orm.Scopes(actions.Permission(coolerBoxModel.TableName(), p)).Where("id =?", v).First(&coolerBoxModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("获取保温箱信息失败: %s", err)
|
|
|
+ return errors.New("获取保温箱信息失败")
|
|
|
}
|
|
|
- err = tx.Model(&iceRaftModel).Where("id =?", iceRaftModel.Id).Update("bind_cooler_box", coolerBoxModel.Id).Error
|
|
|
+ coolerBoxModel.BindIceRaftId = cDto.RemoveValue(coolerBoxModel.BindIceRaftId, c.Code)
|
|
|
+ err = e.Orm.Model(&coolerBoxModel).Where("id =?", coolerBoxModel.Id).Update("bind_ice_raft_id", coolerBoxModel.BindIceRaftId).Error
|
|
|
if err != nil {
|
|
|
- e.Log.Errorf("绑定保温箱失败: %s", err)
|
|
|
- return errors.New("绑定保温箱失败")
|
|
|
+ e.Log.Errorf("解绑保温箱失败: %s", err)
|
|
|
+ return errors.New("解绑保温箱失败")
|
|
|
}
|
|
|
- coolerBoxModel.BindIceRaftId = append(coolerBoxModel.BindIceRaftId, code)
|
|
|
+ }
|
|
|
+ iceRaftModel.CoolerBoxName = []string{}
|
|
|
+ iceRaftModel.BindCoolerBox = []int{}
|
|
|
+ for _, v := range c.CoolerBoxId {
|
|
|
+ var coolerBoxModel model.CoolerBox
|
|
|
+ err = e.Orm.Scopes(actions.Permission(coolerBoxModel.TableName(), p)).Where("id =?", v).First(&coolerBoxModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("获取保温箱信息失败: %s", err)
|
|
|
+ return errors.New("获取保温箱信息失败")
|
|
|
+ }
|
|
|
+ iceRaftModel.CoolerBoxName = append(iceRaftModel.CoolerBoxName, coolerBoxModel.Name)
|
|
|
+ iceRaftModel.BindCoolerBox = append(iceRaftModel.BindCoolerBox, coolerBoxModel.Id)
|
|
|
+
|
|
|
+ coolerBoxModel.BindIceRaftId = append(coolerBoxModel.BindIceRaftId, c.Code)
|
|
|
coolerBoxModel.BindIceRaftId = cDto.UniqueSlice(coolerBoxModel.BindIceRaftId)
|
|
|
- err = tx.Model(&coolerBoxModel).Where("id =?", coolerBoxModel.Id).Update("bind_ice_raft_id", coolerBoxModel.BindIceRaftId).Error
|
|
|
+ err = e.Orm.Model(&coolerBoxModel).Where("id =?", coolerBoxModel.Id).Update("bind_ice_raft_id", coolerBoxModel.BindIceRaftId).Error
|
|
|
if err != nil {
|
|
|
- e.Log.Errorf("绑定保温箱失败: %s", err)
|
|
|
- return errors.New("绑定保温箱失败")
|
|
|
+ e.Log.Errorf("修改保温箱失败: %s", err)
|
|
|
+ return errors.New("修改保温箱失败")
|
|
|
}
|
|
|
}
|
|
|
+ err = e.Orm.Model(&iceRaftModel).Where("id =?", iceRaftModel.Id).Update("bind_cooler_box", iceRaftModel.BindCoolerBox).Update("cooler_box_name", iceRaftModel.CoolerBoxName).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("绑定保温箱失败: %s", err)
|
|
|
+ return errors.New("绑定保温箱失败")
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
|
|
@@ -678,12 +763,13 @@ func (e *IceRaft) IsOutStorage(c *dto.IceOutStorageReq, p *actions.DataPermissio
|
|
|
var iceRaftRecordModel model.IceRaftRecord
|
|
|
err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
|
|
|
Where("code = ?", v).
|
|
|
- Where("status = ?", model.IceRaftRecordStatusFreezing).
|
|
|
+ Where("status = ?", model.IceRaftRecordStatusFreezing).Where("status != ?", 0).
|
|
|
First(&iceRaftRecordModel).Error
|
|
|
if err != nil {
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
err = e.Orm.Scopes(actions.Permission(iceRaftRecordModel.TableName(), p)).
|
|
|
Where("code = ?", v).
|
|
|
+ Where("status != ?", 0).
|
|
|
Where("status = ?", model.IceRaftRecordStatusWaitUse).
|
|
|
Or("status=?", model.IceRaftRecordStatusUsing).
|
|
|
First(&iceRaftRecordModel).Error
|
|
@@ -960,6 +1046,25 @@ func (e *IceRaftRecord) StartForCold(c *dto.IceStartbleForColfTimReq, p *actions
|
|
|
if err != nil {
|
|
|
return global.GetFailedErr
|
|
|
}
|
|
|
+ // 获取冰排记录
|
|
|
+ if iceRaftRecordModel.Status == model.IceRaftRecordReleasedInTheCold || iceRaftRecordModel.Status == model.IceRaftRecordReleasedInTheColdEnd {
|
|
|
+ err = errors.New(fmt.Sprintf("冰排【%s】已释冷!", iceRaftRecordModel.Code))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ inTime := iceRaftRecordModel.InStorageTime.Local()
|
|
|
+ sort.Slice(iceRaftRecordModel.FreezeClaim, func(i, j int) bool {
|
|
|
+ return iceRaftRecordModel.FreezeClaim[i] < iceRaftRecordModel.FreezeClaim[j]
|
|
|
+ })
|
|
|
+ if user.Dept.IsOutStorage {
|
|
|
+ for _, vs := range iceRaftRecordModel.FreezeClaim {
|
|
|
+ if inTime.Add(time.Hour * time.Duration(vs)).After(time.Now()) {
|
|
|
+ str := fmt.Sprintf("冰排【%s】未达到冷冻时长【%v】,禁止出库", iceRaftRecordModel.Code, vs)
|
|
|
+ err = errors.New(str)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
iceRaftRecordModel.StartIceColdTime = model2.Time(time.Now())
|
|
|
iceRaftRecordModel.Status = model.IceRaftRecordReleasedInTheCold //释冷中
|
|
|
iceRaftRecordModel.IceColdUsers = user.NickName
|