|
@@ -592,6 +592,89 @@ func (e *Waybill) Remove(c *dto.WaybillDeleteReq, p *actions.DataPermission) err
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
+// TransferBox 运单转箱
|
|
|
+func (e *Waybill) TransferBox(c *dto.WaybillTransfer, p *actions.DataPermission) error {
|
|
|
+ var err error
|
|
|
+ tx := e.Orm.Begin()
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ tx.Rollback()
|
|
|
+ } else {
|
|
|
+ tx.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ if c.OldCoolerBoxId == c.NewCoolerBoxId {
|
|
|
+ return errors.New("转箱失败,新保温箱与旧保温箱相同")
|
|
|
+ }
|
|
|
+ //查询运单是否存在
|
|
|
+ var waybillModel []model.Waybill
|
|
|
+ err = tx.Scopes(actions.Permission(model.Waybill{}.TableName(), p)).Where("cooler_box_id = ?", c.OldCoolerBoxId).Where("status = ?", model.WaybillStatusVanning).Find(&waybillModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("该保温箱不存在订单%v %s", c.OldCoolerBoxId, err)
|
|
|
+ return errors.New(fmt.Sprintf("该保温箱不存在订单%v", c.OldCoolerBoxId))
|
|
|
+ }
|
|
|
+ //查询coolerbox是否存在
|
|
|
+ var coolerBox = model.CoolerBox{}
|
|
|
+ err = tx.Scopes(actions.Permission(coolerBox.TableName(), p)).Where("id = ?", c.NewCoolerBoxId).Where("status = ?", 2).First(&coolerBox).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("该保温箱不可使用: %s", err)
|
|
|
+ return errors.New("该保温箱不可使用")
|
|
|
+ }
|
|
|
+ for i, _ := range waybillModel {
|
|
|
+ waybillModel[i].CoolerBoxId = c.NewCoolerBoxId
|
|
|
+ err = tx.Save(&waybillModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("转箱失败: %s", err)
|
|
|
+ return errors.New("转箱失败")
|
|
|
+ }
|
|
|
+ //查询已装箱物流信息
|
|
|
+ var logistics = model.WaybillLogistics{}
|
|
|
+ var logis = model.WaybillLogistics{}
|
|
|
+ err = tx.Scopes(actions.Permission(logistics.TableName(), p)).Where("waybill_no = ?", waybillModel[i].WaybillNo).Where("status = ?", model.WaybillStatusVanning).First(&logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("获取物流信息失败")
|
|
|
+ }
|
|
|
+ //更新物流信息
|
|
|
+ logis.CoolerBoxId = c.NewCoolerBoxId
|
|
|
+ logis.Status = model.WaybillStatusVanning
|
|
|
+ logis.WarehouseId = logistics.WarehouseId
|
|
|
+ logis.CarId = logistics.CarId
|
|
|
+ logis.UserId = logistics.UserId
|
|
|
+ logis.Lng = logistics.Lng
|
|
|
+ logis.Lat = logistics.Lat
|
|
|
+ logis.Address = logistics.Address
|
|
|
+ logis.CreateBy = logistics.CreateBy
|
|
|
+ logis.UpdateBy = p.UserId
|
|
|
+ logis.DeptId = logistics.DeptId
|
|
|
+ logis.WaybillNo = logistics.WaybillNo
|
|
|
+ err = tx.Create(&logis).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("更新物流信息失败")
|
|
|
+ }
|
|
|
+ var waybillTask = model.WaybillTask{}
|
|
|
+ waybillTask.WaybillNo = logistics.WaybillNo
|
|
|
+ waybillTask.UserId = logistics.UserId
|
|
|
+ waybillTask.Sn = coolerBox.Sn
|
|
|
+ waybillTask.StartTime = model2.Time(time.Now())
|
|
|
+ waybillTask.DeptId = logistics.DeptId
|
|
|
+ waybillTask.CoolerBoxId = c.NewCoolerBoxId
|
|
|
+ err = tx.Create(&waybillTask).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("添加任务失败")
|
|
|
+ }
|
|
|
+ //更新旧保温箱结束时间
|
|
|
+ err = tx.Model(model.WaybillTask{}).Where("waybill_no = ?", logistics.WaybillNo).Where("cooler_box_id = ?", c.OldCoolerBoxId).Update("end_time", model2.Time(time.Now())).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("更新运单任务失败")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission) error {
|
|
|
var err error
|
|
|
|
|
@@ -932,7 +1015,7 @@ func (e *Waybill) CarIn(c *dto.WaybillInOutReq, p *actions.DataPermission) error
|
|
|
Where("user_id = ?", p.UserId).
|
|
|
First(&car).Error
|
|
|
if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
+ e.Log.Errorf("获取车辆绑定信息失败: %s", err)
|
|
|
return errors.New("获取车辆绑定信息失败")
|
|
|
}
|
|
|
|
|
@@ -943,7 +1026,7 @@ func (e *Waybill) CarIn(c *dto.WaybillInOutReq, p *actions.DataPermission) error
|
|
|
Where("waybill_no = ?", waybillNo).
|
|
|
First(&waybillModel).Error
|
|
|
if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
+ e.Log.Errorf("运单号不存在: %s", err)
|
|
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
return errors.New(fmt.Sprintf("运单号%s不存在", waybillNo))
|
|
|
}
|