|
@@ -8,10 +8,8 @@ import (
|
|
|
"cold-delivery/common/global"
|
|
|
"cold-delivery/common/lib"
|
|
|
model2 "cold-delivery/common/model"
|
|
|
- "database/sql"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
- "math"
|
|
|
"sort"
|
|
|
"strings"
|
|
|
"time"
|
|
@@ -33,7 +31,7 @@ func (e *IceRaft) GetPage(c *dto.IceRaftGetPageReq, list *[]model.IceRaft, count
|
|
|
err = e.Orm.Model(&data).
|
|
|
Scopes(
|
|
|
actions.Permission(data.TableName(), p),
|
|
|
- ).Order("ice_raft.sort asc").
|
|
|
+ ).Order("ice_raft.sort desc").
|
|
|
Find(list).Limit(-1).Offset(-1).
|
|
|
Count(count).Error
|
|
|
} else {
|
|
@@ -42,7 +40,7 @@ func (e *IceRaft) GetPage(c *dto.IceRaftGetPageReq, list *[]model.IceRaft, count
|
|
|
cDto.MakeCondition(c.GetNeedSearch()),
|
|
|
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
|
|
|
actions.Permission(data.TableName(), p),
|
|
|
- ).Order("ice_raft.sort asc").
|
|
|
+ ).Order("ice_raft.sort desc").
|
|
|
Find(list).Limit(-1).Offset(-1).
|
|
|
Count(count).Error
|
|
|
}
|
|
@@ -157,9 +155,6 @@ func (e *IceRaft) GetRecordPage(c *dto.IceRaftGetNewestRecordPageReq, list *[]mo
|
|
|
// (*list)[i].IceRaftRecord.CoolingTime = sprintf
|
|
|
// }
|
|
|
//}
|
|
|
- for i := range *list {
|
|
|
- (*list)[i].IceRaftRecord.ForColdTimeActual = math.Floor((*list)[i].IceRaftRecord.ForColdTimeActual)
|
|
|
- }
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return global.GetFailedErr
|
|
@@ -386,60 +381,50 @@ func (e *IceRaft) InStorage(c *dto.IceRaftInStorageReq, p *actions.DataPermissio
|
|
|
err = errors.New(fmt.Sprintf("冰排【%s】状态为%s,入库失败!", code, model.GetIceRaftRecordStatus(iceRaftModel.IceRaftRecord.Status)))
|
|
|
return err
|
|
|
}
|
|
|
- if iceRaftModel.IceRaftRecord.Status == model.IceRaftRecordReleasedInTheCold || iceRaftModel.IceRaftRecord.Status == model.IceRaftRecordReleasedInTheColdEnd {
|
|
|
- err = tx.Model(&model.IceRaftRecord{}).Where("ice_raft_id = ?", iceRaftModel.Id).
|
|
|
- Where("status = ?", model.IceRaftRecordReleasedInTheCold).
|
|
|
- Or("status = ?", model.IceRaftRecordReleasedInTheColdEnd).Updates(map[string]interface{}{
|
|
|
- "status": model.IceRaftRecordStatusFreezing,
|
|
|
- "out_storage_time": sql.NullTime{Valid: false},
|
|
|
- "in_storage_time": model2.Time(time.Now()),
|
|
|
- "freeze_duration": 0,
|
|
|
+
|
|
|
+ // 更新冰排记录状态 使用中 -> 已完成
|
|
|
+ err = tx.Model(&model.IceRaftRecord{}).
|
|
|
+ Where("ice_raft_id = ? and status = ?", iceRaftModel.Id, model.IceRaftRecordStatusUsing).
|
|
|
+ Updates(map[string]interface{}{
|
|
|
+ "status": model.IceRaftRecordStatusFinish,
|
|
|
+ "return_date": model2.Time(time.Now()),
|
|
|
}).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db 添加冰排记录失败: %s", err)
|
|
|
- return errors.New("添加冰排记录失败")
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 更新冰排记录状态 使用中 -> 已完成
|
|
|
- err = tx.Model(&model.IceRaftRecord{}).
|
|
|
- Where("ice_raft_id = ? and status = ?", iceRaftModel.Id, model.IceRaftRecordStatusUsing).
|
|
|
- Updates(map[string]interface{}{
|
|
|
- "status": model.IceRaftRecordStatusFinish,
|
|
|
- "return_date": model2.Time(time.Now()),
|
|
|
- }).Error
|
|
|
-
|
|
|
- // 添加冰排记录
|
|
|
- var iceRaftRecordModel = model.IceRaftRecord{
|
|
|
- IceLockerId: iceLockerModel.Id,
|
|
|
- IceRaftId: iceRaftModel.Id,
|
|
|
- Status: model.IceRaftRecordStatusFreezing,
|
|
|
- Label: iceRaftModel.Label,
|
|
|
- Code: code,
|
|
|
- InStorageTime: model2.Time(time.Now()),
|
|
|
- Sort: iceRaftModel.Sort,
|
|
|
- ForColdTime: iceRaftModel.ForColdTime,
|
|
|
- DeptBy: model2.DeptBy{
|
|
|
- DeptId: p.DeptId,
|
|
|
- },
|
|
|
- }
|
|
|
- iceRaftRecordModel.FreezeClaim = append(iceRaftRecordModel.FreezeClaim, iceRaftModel.FreezeClaim...)
|
|
|
- err = tx.Create(&iceRaftRecordModel).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New("添加冰排记录失败")
|
|
|
- }
|
|
|
- // 更新冰排使用记录
|
|
|
- err = tx.Model(&iceRaftModel).
|
|
|
- Where("id = ?", iceRaftModel.Id).
|
|
|
- Updates(map[string]interface{}{
|
|
|
- "ice_raft_record_id": iceRaftRecordModel.Id,
|
|
|
- }).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New("关联冰排记录失败")
|
|
|
- }
|
|
|
+
|
|
|
+ // 添加冰排记录
|
|
|
+ var iceRaftRecordModel = model.IceRaftRecord{
|
|
|
+ IceLockerId: iceLockerModel.Id,
|
|
|
+ IceRaftId: iceRaftModel.Id,
|
|
|
+ Status: model.IceRaftRecordStatusFreezing,
|
|
|
+ Label: iceRaftModel.Label,
|
|
|
+ Code: code,
|
|
|
+ InStorageTime: model2.Time(time.Now()),
|
|
|
+ Sort: iceRaftModel.Sort,
|
|
|
+ ForColdTime: iceRaftModel.ForColdTime,
|
|
|
+ //FreezeClaim: iceRaftModel.FreezeClaim,
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ iceRaftRecordModel.FreezeClaim = append(iceRaftRecordModel.FreezeClaim, iceRaftModel.FreezeClaim...)
|
|
|
+ err = tx.Create(&iceRaftRecordModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("添加冰排记录失败")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新冰排使用记录
|
|
|
+ err = tx.Model(&iceRaftModel).
|
|
|
+ Where("id = ?", iceRaftModel.Id).
|
|
|
+ Updates(map[string]interface{}{
|
|
|
+ "ice_raft_record_id": iceRaftRecordModel.Id,
|
|
|
+ }).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("关联冰排记录失败")
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
return nil
|
|
|
}
|
|
|
func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermission) error {
|
|
@@ -487,7 +472,7 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
First(&iceRaftModel).Error
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New("获取冰排信息失败,请检查该冰排是否存在")
|
|
|
+ return errors.New("获取冰排信息失败")
|
|
|
}
|
|
|
|
|
|
if iceRaftModel.Status != model.IceRaftStatusNormal {
|
|
@@ -528,8 +513,18 @@ 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 inTime.Add(time.Duration(iceRaftRecordModel.FreezeClaim[0] * float64(time.Hour))).After(time.Now()) {
|
|
|
+ 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
|
|
@@ -537,9 +532,9 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
//判断冰排释冷要求是否为0,如果不为零,则判断是否达到释冷时长,否则不允许出库
|
|
|
if sysUser.Dept.IsIceReleaseCold && iceRaftModel.ForColdTime != 0 {
|
|
|
if len(iceRaftRecordModel.StartIceColdTime.String()) != 0 {
|
|
|
- start := iceRaftRecordModel.StartIceColdTime.Local()
|
|
|
- if start.Add(time.Duration(iceRaftModel.ForColdTime * float64(time.Hour))).After(time.Now()) {
|
|
|
- err = errors.New(fmt.Sprintf("冰排【%s】未达到释冷时长【%v】小时,禁止出库", code, iceRaftModel.ForColdTime))
|
|
|
+ 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 {
|
|
@@ -608,9 +603,9 @@ func (e *IceRaft) OutStorage(c *dto.IceRaftOutStorageReq, p *actions.DataPermiss
|
|
|
}
|
|
|
}
|
|
|
if sysUser.Dept.IsCoolerReleaseCold && coolerBoxModel.ForColdCoolerTime != 0 {
|
|
|
- start := coolerBoxRecordModel.CoolerBoxStarTime.Local()
|
|
|
- if start.Add(time.Duration(coolerBoxModel.ForColdCoolerTime * float64(time.Hour))).After(time.Now()) {
|
|
|
- err = errors.New(fmt.Sprintf("保温箱未达到预冷时长【%v】小时,禁止装箱", coolerBoxModel.ForColdCoolerTime))
|
|
|
+ start, err := time.Parse("2006-01-02 15:04:05", coolerBoxRecordModel.CoolerBoxStarTime.String())
|
|
|
+ if start.Add(time.Hour * time.Duration(coolerBoxModel.ForColdCoolerTime)).After(time.Now()) {
|
|
|
+ err = errors.New(fmt.Sprintf("保温箱未达到释冷时长【%v】分钟,禁止装箱", coolerBoxModel.ForColdCoolerTime))
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
@@ -693,87 +688,6 @@ func (e *IceRaft) BindCookerBox(c *dto.BindCoolerBox, p *actions.DataPermission)
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
-
|
|
|
-// GetCoolerBoxBindCieRaft 获取保温箱可绑定冰排
|
|
|
-func (e *IceRaft) GetCoolerBoxBindCieRaft(c *dto.GetCoolerBoxByIceRaft, p *actions.DataPermission, list *[]string) error {
|
|
|
- var err error
|
|
|
-
|
|
|
- tx := e.Orm.Begin()
|
|
|
- defer func() {
|
|
|
- if err != nil {
|
|
|
- tx.Rollback()
|
|
|
- } else {
|
|
|
- tx.Commit()
|
|
|
- }
|
|
|
- }()
|
|
|
- // 查询保温箱信息
|
|
|
- var coolerBoxModel model.CoolerBox
|
|
|
- err = e.Orm.Scopes(actions.Permission(coolerBoxModel.TableName(), p)).Where("id =?", c.Id).
|
|
|
- First(&coolerBoxModel).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New("获取保温箱信息失败")
|
|
|
- }
|
|
|
- if coolerBoxModel.Status != model.CoolerBoxStatusNormal {
|
|
|
- err = errors.New("保温箱状态不可用")
|
|
|
- return err
|
|
|
- }
|
|
|
- if len(coolerBoxModel.BindIceRaftId) > 0 {
|
|
|
- for _, code := range coolerBoxModel.BindIceRaftId {
|
|
|
- // 查询冰排是否存在
|
|
|
- var iceRaftModel model.IceRaftRecord
|
|
|
- err = e.Orm.Scopes(actions.Permission(iceRaftModel.TableName(), p)).
|
|
|
- Where("code = ?", code).Where("status = ?", model.IceRaftRecordStatusWaitUse).
|
|
|
- First(&iceRaftModel).Error
|
|
|
- if err != nil {
|
|
|
- if errors.Is(gorm.ErrRecordNotFound, err) {
|
|
|
- return nil
|
|
|
- }
|
|
|
- e.Log.Errorf("获取冰排信息失败: %s", err)
|
|
|
- return errors.New("获取冰排信息失败")
|
|
|
- }
|
|
|
- *list = append(*list, iceRaftModel.Code)
|
|
|
- }
|
|
|
- } else {
|
|
|
- var iceRaftModel []model.IceRaftRecord
|
|
|
- err = e.Orm.Scopes(actions.Permission(model.IceRaftRecord{}.TableName(), p)).
|
|
|
- Where("status = ?", model.IceRaftRecordStatusWaitUse).Find(&iceRaftModel).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("获取冰排信息失败: %s", err)
|
|
|
- return errors.New("获取冰排信息失败")
|
|
|
- }
|
|
|
- for _, v := range iceRaftModel {
|
|
|
- *list = append(*list, v.Code)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return nil
|
|
|
-}
|
|
|
-func (e *IceRaft) GetCoolerIceRaft(p *actions.DataPermission, list *[]model.IceRaft) error {
|
|
|
- var err error
|
|
|
-
|
|
|
- tx := e.Orm.Begin()
|
|
|
- defer func() {
|
|
|
- if err != nil {
|
|
|
- tx.Rollback()
|
|
|
- } else {
|
|
|
- tx.Commit()
|
|
|
- }
|
|
|
- }()
|
|
|
- // 查询保温箱信息
|
|
|
- var data model.IceRaft
|
|
|
- err = e.Orm.Model(&data).
|
|
|
- Scopes(
|
|
|
- actions.Permission(data.TableName(), p)).
|
|
|
- Where("ice_raft.status = '2'").
|
|
|
- Joins("left join ice_raft_record on ice_raft.ice_raft_record_id = ice_raft_record.id").
|
|
|
- Where("ice_raft_record.`status` IS NULL").
|
|
|
- Preload("IceRaftRecord.IceLocker").
|
|
|
- Preload("IceRaftRecord.CoolerBox").
|
|
|
- Preload("IceRaftRecord").
|
|
|
- Find(list).Limit(-1).Offset(-1).Error
|
|
|
- return nil
|
|
|
-}
|
|
|
func (e *IceRaft) UnBindCookerBox(c *dto.UnBindCoolerBox, p *actions.DataPermission) error {
|
|
|
var err error
|
|
|
|
|
@@ -843,7 +757,7 @@ func (e *IceRaft) IsOutStorage(c *dto.IceOutStorageReq, p *actions.DataPermissio
|
|
|
var str string
|
|
|
msg := make([]string, 0)
|
|
|
sussce := make([]string, 0)
|
|
|
- FreezeDuration := make([]float64, 0)
|
|
|
+ FreezeDuration := make([]int, 0)
|
|
|
// 获取冰排记录
|
|
|
for _, v := range c.Code {
|
|
|
var iceRaftRecordModel model.IceRaftRecord
|
|
@@ -858,7 +772,6 @@ func (e *IceRaft) IsOutStorage(c *dto.IceOutStorageReq, p *actions.DataPermissio
|
|
|
Where("status != ?", 0).
|
|
|
Where("status = ?", model.IceRaftRecordStatusWaitUse).
|
|
|
Or("status=?", model.IceRaftRecordStatusUsing).
|
|
|
- Or("status=?", model.IceRaftRecordReleasedInTheColdEnd).
|
|
|
First(&iceRaftRecordModel).Error
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
@@ -885,9 +798,9 @@ func (e *IceRaft) IsOutStorage(c *dto.IceOutStorageReq, p *actions.DataPermissio
|
|
|
return iceRaftRecordModel.FreezeClaim[i] < iceRaftRecordModel.FreezeClaim[j]
|
|
|
})
|
|
|
for _, vs := range iceRaftRecordModel.FreezeClaim {
|
|
|
- if inTime.Add(time.Duration(vs * float64(time.Hour))).After(time.Now()) {
|
|
|
+ if inTime.Add(time.Hour * time.Duration(vs)).After(time.Now()) {
|
|
|
hour := iceRaftRecordModel.FreezeDuration / 60
|
|
|
- minutes := int(iceRaftRecordModel.FreezeDuration) % 60
|
|
|
+ minutes := iceRaftRecordModel.FreezeDuration % 60
|
|
|
str = fmt.Sprintf("冰排编号【%s】未达到冷冻时长【%v】小时,已达到冷冻时长【%v】小时【%v】分钟,是否继续出库", v, vs, hour, minutes)
|
|
|
sussce = append(sussce, v)
|
|
|
FreezeDuration = append(FreezeDuration, iceRaftRecordModel.FreezeDuration)
|
|
@@ -901,7 +814,7 @@ func (e *IceRaft) IsOutStorage(c *dto.IceOutStorageReq, p *actions.DataPermissio
|
|
|
sort.Slice(FreezeDuration, func(i, j int) bool {
|
|
|
return FreezeDuration[i] < FreezeDuration[j]
|
|
|
})
|
|
|
- str = fmt.Sprintf("冰排%v未达到冷冻要求,已达到冷冻时长【%v】小时【%v】分钟", sussce, FreezeDuration[0]/60, int(FreezeDuration[0])%60)
|
|
|
+ str = fmt.Sprintf("冰排%v未达到冷冻要求,已达到冷冻时长【%v】小时【%v】分钟", sussce, FreezeDuration[0]/60, FreezeDuration[0]%60)
|
|
|
}
|
|
|
return nil, str
|
|
|
}
|
|
@@ -1028,7 +941,7 @@ func (e *IceRaftRecord) Remove(c *dto.IceRaftRecordDeleteReq, p *actions.DataPer
|
|
|
return global.DeleteFailedErr
|
|
|
}
|
|
|
|
|
|
- db := tx.Unscoped().Delete(&iceRaftRecordModel)
|
|
|
+ db := tx.Delete(&iceRaftRecordModel)
|
|
|
|
|
|
if err = db.Error; err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
@@ -1138,10 +1051,6 @@ func (e *IceRaftRecord) StartForCold(c *dto.IceStartbleForColfTimReq, p *actions
|
|
|
err = errors.New(fmt.Sprintf("冰排【%s】已释冷!", iceRaftRecordModel.Code))
|
|
|
return err
|
|
|
}
|
|
|
- if iceRaftRecordModel.Status != model.IceRaftRecordStatusWaitUse {
|
|
|
- err = errors.New(fmt.Sprintf("冰排【%s】状态为【%v】不可释冷!", iceRaftRecordModel.Code, model.GetIceRaftRecordStatus(iceRaftRecordModel.Status)))
|
|
|
- return err
|
|
|
- }
|
|
|
|
|
|
inTime := iceRaftRecordModel.InStorageTime.Local()
|
|
|
sort.Slice(iceRaftRecordModel.FreezeClaim, func(i, j int) bool {
|