Browse Source

Update:入库/装车验证提交时间

zoie 10 months ago
parent
commit
bdf05599de
1 changed files with 31 additions and 4 deletions
  1. 31 4
      app/admin/service/waybill.go

+ 31 - 4
app/admin/service/waybill.go

@@ -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
 		}