|
@@ -452,7 +452,7 @@ func (e *Waybill) Delivery(c *dto.WaybillDeliveryReq, p *actions.DataPermission)
|
|
|
return errors.New("获取保温箱信息失败")
|
|
|
}
|
|
|
var user = model.SysUser{}
|
|
|
- // 查询保温箱信息
|
|
|
+ // 查询制单人信息
|
|
|
err = tx.Scopes(actions.Permission(user.TableName(), p)).
|
|
|
Where("id = ?", c.PrintUserId).
|
|
|
First(&user).Error
|
|
@@ -616,7 +616,7 @@ func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission)
|
|
|
err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法入库!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
return err
|
|
|
}
|
|
|
- if waybillModel.Status == model.WaybillStatusWaitTruck {
|
|
|
+ if waybillModel.Status == model.WaybillStatusWaitTruck || waybillModel.Status == model.WaybillStatusWaitVanning {
|
|
|
// 待装车
|
|
|
err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法入库!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
return err
|
|
@@ -629,7 +629,7 @@ func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission)
|
|
|
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()))
|
|
|
+ err = errors.New(fmt.Sprintf("运单号%s入库时间[%s]与上一阶段时间[%s]冲突,无法入库!", waybillNo, c.StartTime.String(), logistics.CreatedAt.String()))
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -640,6 +640,7 @@ func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission)
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
+ // 如果上一个状态为装车,则自动下车
|
|
|
if waybillModel.Status == model.WaybillStatusTruck {
|
|
|
// 已装车
|
|
|
var car model.Car
|
|
@@ -688,6 +689,49 @@ func (e *Waybill) WarehouseIn(c *dto.WaybillInOutReq, p *actions.DataPermission)
|
|
|
return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
}
|
|
|
}
|
|
|
+ // 如果上一个状态为装箱,则自动出箱
|
|
|
+ if waybillModel.Status == model.WaybillStatusVanning {
|
|
|
+ // 添加出箱物流记录
|
|
|
+ Logistics := model.WaybillLogistics{
|
|
|
+ WaybillNo: waybillNo,
|
|
|
+ Status: model.WaybillStatusVanningOut,
|
|
|
+ CoolerBoxId: waybillModel.CoolerBoxId,
|
|
|
+ UserId: waybillModel.PrintUserId,
|
|
|
+ Lng: lng,
|
|
|
+ Lat: lat,
|
|
|
+ ControlBy: model2.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ ModelTime: model2.ModelTime{
|
|
|
+ CreatedAt: c.StartTime,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Create(&Logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询任务
|
|
|
+ var task model.WaybillTask
|
|
|
+ err = tx.Model(&task).Where("waybill_no = ? and cooler_box_id = ?", waybillNo, waybillModel.CoolerBoxId).
|
|
|
+ Last(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ task.EndTime = c.StartTime
|
|
|
+ task.UpdateBy = p.UserId
|
|
|
+ err = tx.Save(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if waybillModel.Status == model.WaybillStatusWaitStorage {
|
|
|
waybillModel.DeliveryTime = c.StartTime
|
|
|
}
|
|
@@ -894,7 +938,7 @@ 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
|
|
|
}
|
|
|
- if waybillModel.Status == model.WaybillStatusWaitStorage {
|
|
|
+ if waybillModel.Status == model.WaybillStatusWaitStorage || waybillModel.Status == model.WaybillStatusWaitVanning {
|
|
|
err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法装车!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
return err
|
|
|
}
|
|
@@ -907,7 +951,7 @@ func (e *Waybill) CarIn(c *dto.WaybillInOutReq, p *actions.DataPermission) error
|
|
|
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()))
|
|
|
+ err = errors.New(fmt.Sprintf("运单号%s装车时间[%s]与上一阶段时间[%s]冲突,无法装车!", waybillNo, c.StartTime.String(), logistics.CreatedAt.String()))
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -970,6 +1014,49 @@ func (e *Waybill) CarIn(c *dto.WaybillInOutReq, p *actions.DataPermission) error
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 如果上一个状态为装箱,则自动出箱
|
|
|
+ if waybillModel.Status == model.WaybillStatusVanning {
|
|
|
+ // 添加出箱物流记录
|
|
|
+ Logistics := model.WaybillLogistics{
|
|
|
+ WaybillNo: waybillNo,
|
|
|
+ Status: model.WaybillStatusVanningOut,
|
|
|
+ CoolerBoxId: waybillModel.CoolerBoxId,
|
|
|
+ UserId: waybillModel.PrintUserId,
|
|
|
+ Lng: lng,
|
|
|
+ Lat: lat,
|
|
|
+ ControlBy: model2.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ ModelTime: model2.ModelTime{
|
|
|
+ CreatedAt: c.StartTime,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Create(&Logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询任务
|
|
|
+ var task model.WaybillTask
|
|
|
+ err = tx.Model(&task).Where("waybill_no = ? and cooler_box_id = ?", waybillNo, waybillModel.CoolerBoxId).
|
|
|
+ Last(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ task.EndTime = c.StartTime
|
|
|
+ task.UpdateBy = p.UserId
|
|
|
+ err = tx.Save(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
waybillModel.Status = model.WaybillStatusTruck
|
|
|
waybillModel.CarId = car.Id
|
|
|
|
|
@@ -1160,13 +1247,14 @@ func (e *Waybill) CoolerBoxIn(c *dto.WaybillCoolerBoxInReq, p *actions.DataPermi
|
|
|
if waybillModel.Status != model.WaybillStatusWaitVanning &&
|
|
|
waybillModel.Status != model.WaybillStatusStorage &&
|
|
|
waybillModel.Status != model.WaybillStatusTruck {
|
|
|
- err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法装箱!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
- return err
|
|
|
+ if !(waybillModel.Status == model.WaybillStatusVanning && waybillModel.PrintUserId != p.UserId) {
|
|
|
+ err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法装箱!", waybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
+ return err
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- // 查询保温箱信息
|
|
|
+ // 查询保温箱信息 有可能先装车再装箱 所以需要选保温箱
|
|
|
var coolerBox = model.CoolerBox{}
|
|
|
- // 查询运单是否存在
|
|
|
err = tx.Scopes(actions.Permission(coolerBox.TableName(), p)).
|
|
|
Where("id = ?", c.CoolerBoxId).
|
|
|
First(&coolerBox).Error
|
|
@@ -1174,6 +1262,18 @@ func (e *Waybill) CoolerBoxIn(c *dto.WaybillCoolerBoxInReq, p *actions.DataPermi
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return errors.New("获取保温箱信息失败")
|
|
|
}
|
|
|
+ if waybillModel.CoolerBoxId > 0 && waybillModel.CoolerBoxId != c.CoolerBoxId {
|
|
|
+ // 扫码装箱 派单的保温箱与当前保温箱不一致
|
|
|
+ err = tx.Model(&waybillModel).Where("waybill_no = ?", waybillNo).
|
|
|
+ Updates(map[string]interface{}{
|
|
|
+ "cooler_box_id": c.CoolerBoxId,
|
|
|
+ "print_user_id": p.UserId,
|
|
|
+ }).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("修改运单关联保温箱失败")
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
// 验证时间
|
|
|
var logistics model.WaybillLogistics
|
|
@@ -1289,6 +1389,49 @@ func (e *Waybill) CoolerBoxIn(c *dto.WaybillCoolerBoxInReq, p *actions.DataPermi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 如果上一个状态为装箱,则自动出箱
|
|
|
+ if waybillModel.Status == model.WaybillStatusVanning {
|
|
|
+ // 添加出箱物流记录
|
|
|
+ Logistics := model.WaybillLogistics{
|
|
|
+ WaybillNo: waybillNo,
|
|
|
+ Status: model.WaybillStatusVanningOut,
|
|
|
+ CoolerBoxId: waybillModel.CoolerBoxId,
|
|
|
+ UserId: waybillModel.PrintUserId,
|
|
|
+ Lng: lng,
|
|
|
+ Lat: lat,
|
|
|
+ ControlBy: model2.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ ModelTime: model2.ModelTime{
|
|
|
+ CreatedAt: c.StartTime,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Create(&Logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询任务
|
|
|
+ var task model.WaybillTask
|
|
|
+ err = tx.Model(&task).Where("waybill_no = ? and cooler_box_id = ?", waybillNo, waybillModel.CoolerBoxId).
|
|
|
+ Last(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ task.EndTime = c.StartTime
|
|
|
+ task.UpdateBy = p.UserId
|
|
|
+ err = tx.Save(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
waybillModel.Status = model.WaybillStatusVanning
|
|
|
waybillModel.CoolerBoxId = coolerBox.Id
|
|
|
waybillModel.DeliveryTime = c.StartTime
|
|
@@ -1373,12 +1516,19 @@ func (e *Waybill) Receipt(c *dto.WaybillReceiptReq, p *actions.DataPermission) e
|
|
|
if waybillModel.Status == model.WaybillStatusReceipt {
|
|
|
return nil
|
|
|
}
|
|
|
+ if waybillModel.Status == model.WaybillStatusWaitDelivery ||
|
|
|
+ waybillModel.Status == model.WaybillStatusWaitTruck ||
|
|
|
+ waybillModel.Status == model.WaybillStatusWaitStorage ||
|
|
|
+ waybillModel.Status == model.WaybillStatusWaitVanning {
|
|
|
+ err = errors.New(fmt.Sprintf("运单号%s状态为%s,无法签收!", c.WaybillNo, model.WaybillStatusMap[waybillModel.Status]))
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
// 保温箱配送 不需要中转
|
|
|
- if waybillModel.CoolerBoxId > 0 {
|
|
|
- // 查询车辆信息
|
|
|
+ if waybillModel.CoolerBoxId > 0 && waybillModel.Status == model.WaybillStatusVanning {
|
|
|
+ // 查询保温箱信息
|
|
|
var coolerBox = model.CoolerBox{}
|
|
|
- // 查询运单是否存在
|
|
|
+ // 查询保温箱是否存在
|
|
|
err = tx.Scopes(actions.Permission(coolerBox.TableName(), p)).
|
|
|
Where("id = ?", waybillModel.CoolerBoxId).
|
|
|
First(&coolerBox).Error
|
|
@@ -1451,7 +1601,7 @@ func (e *Waybill) Receipt(c *dto.WaybillReceiptReq, p *actions.DataPermission) e
|
|
|
WaybillNo: c.WaybillNo,
|
|
|
Status: model.WaybillStatusReceipt,
|
|
|
CoolerBoxId: coolerBox.Id,
|
|
|
- UserId: p.UserId,
|
|
|
+ UserId: waybillModel.PrintUserId,
|
|
|
Lng: lng,
|
|
|
Lat: lat,
|
|
|
ControlBy: model2.ControlBy{
|
|
@@ -1473,55 +1623,81 @@ func (e *Waybill) Receipt(c *dto.WaybillReceiptReq, p *actions.DataPermission) e
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- // 查询车辆信息
|
|
|
- var car = model.Car{}
|
|
|
- // 查询运单是否存在
|
|
|
- err = tx.Scopes(actions.Permission(car.TableName(), p)).
|
|
|
- Where("user_id = ?", p.UserId).
|
|
|
- First(&car).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New("获取车辆信息失败")
|
|
|
- }
|
|
|
+ if waybillModel.Status == model.WaybillStatusTruck {
|
|
|
+ // 查询车辆信息
|
|
|
+ var car = model.Car{}
|
|
|
+ // 查询运单是否存在
|
|
|
+ err = tx.Scopes(actions.Permission(car.TableName(), p)).
|
|
|
+ Where("user_id = ?", p.UserId).
|
|
|
+ First(&car).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("获取车辆信息失败")
|
|
|
+ }
|
|
|
|
|
|
- waybillModel.Status = model.WaybillStatusReceipt
|
|
|
- waybillModel.CarId = car.Id
|
|
|
- waybillModel.ReceiptTime = c.StartTime
|
|
|
- waybillModel.ReceiptImg = c.ReceiptImg
|
|
|
- err = tx.Save(&waybillModel).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("保存运单信息失败:%s", err))
|
|
|
- }
|
|
|
+ waybillModel.Status = model.WaybillStatusReceipt
|
|
|
+ waybillModel.CarId = car.Id
|
|
|
+ waybillModel.ReceiptTime = c.StartTime
|
|
|
+ waybillModel.ReceiptImg = c.ReceiptImg
|
|
|
+ err = tx.Save(&waybillModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单信息失败:%s", err))
|
|
|
+ }
|
|
|
|
|
|
- var lng, lat string
|
|
|
- lng, lat, err = e.GetSite(p.DeptId, car.Sn, c.StartTime.String())
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("获取定位信息失败: %s", err)
|
|
|
- return err
|
|
|
- }
|
|
|
+ var lng, lat string
|
|
|
+ lng, lat, err = e.GetSite(p.DeptId, car.Sn, c.StartTime.String())
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("获取定位信息失败: %s", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
- // 查询任务
|
|
|
- var task model.WaybillTask
|
|
|
- err = tx.Model(&task).Where("waybill_no = ? and car_id = ?", c.WaybillNo, car.Id).
|
|
|
- Last(&task).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
- }
|
|
|
- // 未下车 直接点签收
|
|
|
- if time.Time(task.EndTime).IsZero() {
|
|
|
- task.EndTime = c.StartTime
|
|
|
- task.UpdateBy = p.UserId
|
|
|
- err = tx.Save(&task).Error
|
|
|
+ // 查询任务
|
|
|
+ var task model.WaybillTask
|
|
|
+ err = tx.Model(&task).Where("waybill_no = ? and car_id = ?", c.WaybillNo, car.Id).
|
|
|
+ Last(&task).Error
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
+ return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ // 未下车 直接点签收
|
|
|
+ if time.Time(task.EndTime).IsZero() {
|
|
|
+ task.EndTime = c.StartTime
|
|
|
+ task.UpdateBy = p.UserId
|
|
|
+ err = tx.Save(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ // 添加下车物流记录
|
|
|
+ Logistics := model.WaybillLogistics{
|
|
|
+ WaybillNo: c.WaybillNo,
|
|
|
+ Status: model.WaybillStatusTruckOut,
|
|
|
+ CarId: car.Id,
|
|
|
+ UserId: p.UserId,
|
|
|
+ Lng: lng,
|
|
|
+ Lat: lat,
|
|
|
+ ControlBy: model2.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ ModelTime: model2.ModelTime{
|
|
|
+ CreatedAt: c.StartTime,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Create(&Logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
+ }
|
|
|
}
|
|
|
- // 添加下车物流记录
|
|
|
+
|
|
|
+ // 添加签收记录
|
|
|
Logistics := model.WaybillLogistics{
|
|
|
WaybillNo: c.WaybillNo,
|
|
|
- Status: model.WaybillStatusTruckOut,
|
|
|
+ Status: model.WaybillStatusReceipt,
|
|
|
CarId: car.Id,
|
|
|
UserId: p.UserId,
|
|
|
Lng: lng,
|
|
@@ -1542,29 +1718,100 @@ func (e *Waybill) Receipt(c *dto.WaybillReceiptReq, p *actions.DataPermission) e
|
|
|
return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
}
|
|
|
}
|
|
|
+ if waybillModel.Status == model.WaybillStatusStorage {
|
|
|
+ // 查询车辆信息
|
|
|
+ var warehouse model.Warehouse
|
|
|
+ // 查询运单是否存在
|
|
|
+ err = tx.Scopes(actions.Permission(warehouse.TableName(), p)).
|
|
|
+ Where("user_id = ?", p.UserId).
|
|
|
+ First(&warehouse).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New("获取仓库信息失败")
|
|
|
+ }
|
|
|
|
|
|
- // 添加签收记录
|
|
|
- Logistics := model.WaybillLogistics{
|
|
|
- WaybillNo: c.WaybillNo,
|
|
|
- Status: model.WaybillStatusReceipt,
|
|
|
- CarId: car.Id,
|
|
|
- UserId: p.UserId,
|
|
|
- Lng: lng,
|
|
|
- Lat: lat,
|
|
|
- ControlBy: model2.ControlBy{
|
|
|
- CreateBy: p.UserId,
|
|
|
- },
|
|
|
- DeptBy: model2.DeptBy{
|
|
|
- DeptId: p.DeptId,
|
|
|
- },
|
|
|
- ModelTime: model2.ModelTime{
|
|
|
- CreatedAt: c.StartTime,
|
|
|
- },
|
|
|
- }
|
|
|
- err = tx.Create(&Logistics).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
+ waybillModel.Status = model.WaybillStatusReceipt
|
|
|
+ waybillModel.WarehouseId = warehouse.Id
|
|
|
+ waybillModel.ReceiptTime = c.StartTime
|
|
|
+ waybillModel.ReceiptImg = c.ReceiptImg
|
|
|
+ err = tx.Save(&waybillModel).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单信息失败:%s", err))
|
|
|
+ }
|
|
|
+
|
|
|
+ var lng, lat string
|
|
|
+ lng, lat, err = e.GetSite(p.DeptId, warehouse.Sn, c.StartTime.String())
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("获取定位信息失败: %s", err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询任务
|
|
|
+ var task model.WaybillTask
|
|
|
+ err = tx.Model(&task).Where("waybill_no = ? and warehouse_id = ?", c.WaybillNo, warehouse.Id).
|
|
|
+ Last(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("查询运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ // 未出库 直接点签收
|
|
|
+ if time.Time(task.EndTime).IsZero() {
|
|
|
+ task.EndTime = c.StartTime
|
|
|
+ task.UpdateBy = p.UserId
|
|
|
+ err = tx.Save(&task).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单任务信息失败:%s", err))
|
|
|
+ }
|
|
|
+ // 添加下车物流记录
|
|
|
+ Logistics := model.WaybillLogistics{
|
|
|
+ WaybillNo: c.WaybillNo,
|
|
|
+ Status: model.WaybillStatusTruckOut,
|
|
|
+ WarehouseId: warehouse.Id,
|
|
|
+ UserId: p.UserId,
|
|
|
+ Lng: lng,
|
|
|
+ Lat: lat,
|
|
|
+ ControlBy: model2.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ ModelTime: model2.ModelTime{
|
|
|
+ CreatedAt: c.StartTime,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Create(&Logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加签收记录
|
|
|
+ Logistics := model.WaybillLogistics{
|
|
|
+ WaybillNo: c.WaybillNo,
|
|
|
+ Status: model.WaybillStatusReceipt,
|
|
|
+ WarehouseId: warehouse.Id,
|
|
|
+ UserId: p.UserId,
|
|
|
+ Lng: lng,
|
|
|
+ Lat: lat,
|
|
|
+ ControlBy: model2.ControlBy{
|
|
|
+ CreateBy: p.UserId,
|
|
|
+ },
|
|
|
+ DeptBy: model2.DeptBy{
|
|
|
+ DeptId: p.DeptId,
|
|
|
+ },
|
|
|
+ ModelTime: model2.ModelTime{
|
|
|
+ CreatedAt: c.StartTime,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ err = tx.Create(&Logistics).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return nil
|