|
@@ -555,9 +555,22 @@ func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission)
|
|
|
return err
|
|
|
}
|
|
|
if waybillModel.Status == model.WaybillStatusWaitTruck {
|
|
|
+ // 待装车
|
|
|
err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法入库!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
return err
|
|
|
}
|
|
|
+ // 验证时间
|
|
|
+ var logistics model.WaybillLogistics
|
|
|
+ err = e.Orm.Where("waybill_no = ?", waybillNo).Last(&logistics).Error
|
|
|
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ e.Log.Errorf("获取运单日志失败: %s", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if time.Time(logistics.CreatedAt).After(time.Time(c.StartTime)) {
|
|
|
+ err = errors.New(fmt.Sprintf("运单号%s装车时间[%s]与上一阶段时间[%s]冲突,无法入库!", waybillNo, c.StartTime.String(), logistics.CreatedAt.String()))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
var lng, lat string
|
|
|
lng, lat, err = e.GetSite(p.DeptId, warehouse.Sn, c.StartTime.String())
|
|
|
if err != nil {
|
|
@@ -566,6 +579,7 @@ func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission)
|
|
|
}
|
|
|
|
|
|
if waybillModel.Status == model.WaybillStatusTruck {
|
|
|
+ // 已装车
|
|
|
var car model.Car
|
|
|
err = e.Orm.First(&car, waybillModel.CarId).Error
|
|
|
if err != nil {
|
|
@@ -612,7 +626,9 @@ func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission)
|
|
|
return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ if waybillModel.Status == model.WaybillStatusWaitStorage {
|
|
|
+ waybillModel.DeliveryTime = c.StartTime
|
|
|
+ }
|
|
|
waybillModel.Status = model.WaybillStatusStorage
|
|
|
waybillModel.WarehouseId = warehouse.Id
|
|
|
err = tx.Save(&waybillModel).Error
|
|
@@ -715,9 +731,7 @@ func (e *Waybill) WarehouseOut(c *dto.WaybillInOutReq, p *actions.DataPermission
|
|
|
err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法出库!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
return err
|
|
|
}
|
|
|
- if waybillModel.Status == model.WaybillStatusWaitStorage {
|
|
|
- waybillModel.DeliveryTime = c.StartTime
|
|
|
- }
|
|
|
+
|
|
|
waybillModel.Status = model.WaybillStatusStorageOut
|
|
|
waybillModel.WarehouseId = warehouse.Id
|
|
|
err = tx.Save(&waybillModel).Error
|
|
@@ -822,6 +836,19 @@ func (e *Waybill) CarIn(c *dto.WaybillInOutReq, p *actions.DataPermission) error
|
|
|
err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法装车!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
return err
|
|
|
}
|
|
|
+
|
|
|
+ // 验证时间
|
|
|
+ var logistics model.WaybillLogistics
|
|
|
+ err = e.Orm.Where("waybill_no = ?", waybillNo).Last(&logistics).Error
|
|
|
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
+ e.Log.Errorf("获取运单日志失败: %s", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if time.Time(logistics.CreatedAt).After(time.Time(c.StartTime)) {
|
|
|
+ err = errors.New(fmt.Sprintf("运单号%s入库时间[%s]与上一阶段时间[%s]冲突,无法入库!", waybillNo, c.StartTime.String(), logistics.CreatedAt.String()))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
if waybillModel.Status == model.WaybillStatusWaitTruck {
|
|
|
waybillModel.DeliveryTime = c.StartTime
|
|
|
}
|