|
@@ -146,6 +146,12 @@ func (e *Waybill) GetPage(c *dto.WaybillGetPageReq, list *[]model.Waybill, count
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return global.GetFailedErr
|
|
|
}
|
|
|
+ //查询对应药品信息
|
|
|
+ for i, _ := range *list {
|
|
|
+ var drugs []model.Drug
|
|
|
+ e.Orm.Where("drug.waybill_no = ?", (*list)[i].WaybillNo).Find(&drugs)
|
|
|
+ (*list)[i].Drugs = drugs
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
func (e *Waybill) GetUserPage(c *dto.WaybillGetPageReq, list *[]model.Waybill, count *int64, p *actions.DataPermission) error {
|
|
@@ -183,6 +189,12 @@ func (e *Waybill) GetUserPage(c *dto.WaybillGetPageReq, list *[]model.Waybill, c
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return global.GetFailedErr
|
|
|
}
|
|
|
+ //查询对应药品信息
|
|
|
+ for i, _ := range *list {
|
|
|
+ var drugs []model.Drug
|
|
|
+ e.Orm.Where("drug.waybill_no = ?", (*list)[i].WaybillNo).Find(&drugs)
|
|
|
+ (*list)[i].Drugs = drugs
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
func (e *Waybill) GetAppletPage(c *dto.WaybillGetAppletPageReq, list *[]model.Waybill, count *int64, p *actions.DataPermission) error {
|
|
@@ -513,52 +525,23 @@ func (e *Waybill) UpdateStatus(c *dto.UpdateStatusReq, p *actions.DataPermission
|
|
|
}
|
|
|
return global.UpdateFailedErr
|
|
|
}
|
|
|
-
|
|
|
+ //添加确认人信息
|
|
|
+ if waybillModel.Status == model.WaybillStatusAudits {
|
|
|
+ err, sysUser := GetUserProfile(e.Orm, p.UserId)
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db 获取用户信息失败: %s", err)
|
|
|
+ return errors.New("获取用户信息失败")
|
|
|
+ }
|
|
|
+ waybillModel.Confirmer = sysUser.NickName
|
|
|
+ waybillModel.ConfirmerPhone = sysUser.Phone
|
|
|
+ }
|
|
|
waybillModel.Status = c.Status
|
|
|
- err = tx.Table(waybillModel.TableName()).Where("id=?", v).Update("status", c.Status).Error
|
|
|
+ err = tx.Table(waybillModel.TableName()).Where("id=?", v).Updates(&waybillModel).Error
|
|
|
if err != nil {
|
|
|
e.Log.Errorf("db error: %s", err)
|
|
|
return global.UpdateFailedErr
|
|
|
}
|
|
|
- // 查询任务
|
|
|
- //var logistics model.WaybillLogistics
|
|
|
- //err = tx.Model(&logistics).Where("waybill_no = ? and status = ?", waybillModel.WaybillNo, model.WaybillStatusInDeliverys).
|
|
|
- // Last(&logistics).Error
|
|
|
- //if err != nil {
|
|
|
- // if errors.Is(err, gorm.ErrRecordNotFound) {
|
|
|
- // // 添加物流
|
|
|
- // logisticsObj := model.WaybillLogistics{
|
|
|
- // WaybillNo: waybillModel.WaybillNo,
|
|
|
- // Status: waybillModel.Status,
|
|
|
- // ControlBy: model2.ControlBy{
|
|
|
- // CreateBy: p.UserId,
|
|
|
- // },
|
|
|
- // DeptBy: model2.DeptBy{
|
|
|
- // DeptId: p.DeptId,
|
|
|
- // },
|
|
|
- // }
|
|
|
- // err = tx.Create(&logisticsObj).Error
|
|
|
- // if err != nil {
|
|
|
- // e.Log.Errorf("db error: %s", err)
|
|
|
- // return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
- // }
|
|
|
- // } else {
|
|
|
- // e.Log.Errorf("db error: %s", err)
|
|
|
- // return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
- // }
|
|
|
- //}
|
|
|
- //err = tx.Save(&logistics).Error
|
|
|
- //if err != nil {
|
|
|
- // e.Log.Errorf("db error: %s", err)
|
|
|
- // return errors.New(fmt.Sprintf("保存运单物流信息失败:%s", err))
|
|
|
- //}
|
|
|
}
|
|
|
- //err = tx.Save(&waybillModel).Error
|
|
|
- //if err != nil {
|
|
|
- // e.Log.Errorf("db error: %s", err)
|
|
|
- // return global.UpdateFailedErr
|
|
|
- //}
|
|
|
-
|
|
|
return nil
|
|
|
}
|
|
|
|
|
@@ -574,6 +557,11 @@ func (e *Waybill) Delivery(c *dto.WaybillDeliveryReq, p *actions.DataPermission)
|
|
|
tx.Commit()
|
|
|
}
|
|
|
}()
|
|
|
+ var user model.SysUser
|
|
|
+ first := e.Orm.Table(user.TableName()).Where("id = ?", p.UserId).First(&user)
|
|
|
+ if first.Error != nil {
|
|
|
+ return global.GetFailedErr
|
|
|
+ }
|
|
|
|
|
|
if !lib.StrListEqual(c.IceRaftCode, c.OldIceRaftCode) {
|
|
|
// 获取删除的冰排列表
|
|
@@ -603,6 +591,7 @@ func (e *Waybill) Delivery(c *dto.WaybillDeliveryReq, p *actions.DataPermission)
|
|
|
// }
|
|
|
//}
|
|
|
// 获取新增的冰排列表
|
|
|
+ //判断是否可以随时出库冰排
|
|
|
extraData := lib.FindStrListExtraData(c.OldIceRaftCode, c.IceRaftCode)
|
|
|
if len(extraData) > 0 {
|
|
|
for _, code := range extraData {
|
|
@@ -617,22 +606,49 @@ func (e *Waybill) Delivery(c *dto.WaybillDeliveryReq, p *actions.DataPermission)
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- if iceRaft.IceRaftRecord.Status != model.IceRaftRecordStatusWaitUse {
|
|
|
- err = errors.New(fmt.Sprintf("冰排【%s】状态为%s,出库保温箱失败!", code, model.GetIceRaftRecordStatus(iceRaft.IceRaftRecord.Status)))
|
|
|
- return err
|
|
|
+ if !user.Dept.IsOutStorage {
|
|
|
+ if iceRaft.IceRaftRecord.Status != model.IceRaftRecordStatusWaitUse {
|
|
|
+ err = errors.New(fmt.Sprintf("冰排【%s】状态为%s,出库保温箱失败!", code, model.GetIceRaftRecordStatus(iceRaft.IceRaftRecord.Status)))
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ err = tx.Model(&model.IceRaftRecord{}).
|
|
|
+ Where("ice_raft_id = ? and status = ?", iceRaft.Id, model.IceRaftRecordStatusWaitUse).
|
|
|
+ Updates(map[string]interface{}{
|
|
|
+ "status": model.IceRaftRecordStatusUsing,
|
|
|
+ "out_storage_time": time.Now(),
|
|
|
+ "cooler_box_id": c.CoolerBoxId,
|
|
|
+ }).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("冰排【%s】出库失败", iceRaft.Code))
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ err = tx.Model(&model.IceRaftRecord{}).
|
|
|
+ Where("ice_raft_id = ? and status = ?", iceRaft.Id, model.IceRaftRecordStatusFreezing).
|
|
|
+ Or("ice_raft_id = ? and status = ?", iceRaft.Id, model.IceRaftRecordStatusWaitUse).
|
|
|
+ Updates(map[string]interface{}{
|
|
|
+ "status": model.IceRaftRecordStatusUsing,
|
|
|
+ "out_storage_time": time.Now(),
|
|
|
+ "cooler_box_id": c.CoolerBoxId,
|
|
|
+ }).Error
|
|
|
+ if err != nil {
|
|
|
+ e.Log.Errorf("db error: %s", err)
|
|
|
+ return errors.New(fmt.Sprintf("冰排【%s】出库失败", iceRaft.Code))
|
|
|
+ }
|
|
|
}
|
|
|
// 获取冰排记录
|
|
|
- err = tx.Model(&model.IceRaftRecord{}).
|
|
|
- Where("ice_raft_id = ? and status = ?", iceRaft.Id, model.IceRaftRecordStatusWaitUse).
|
|
|
- Updates(map[string]interface{}{
|
|
|
- "status": model.IceRaftRecordStatusUsing,
|
|
|
- "out_storage_time": time.Now(),
|
|
|
- "cooler_box_id": c.CoolerBoxId,
|
|
|
- }).Error
|
|
|
- if err != nil {
|
|
|
- e.Log.Errorf("db error: %s", err)
|
|
|
- return errors.New(fmt.Sprintf("冰排【%s】出库失败", iceRaft.Code))
|
|
|
- }
|
|
|
+ //err = tx.Model(&model.IceRaftRecord{}).
|
|
|
+ // Where("ice_raft_id = ? and status = ?", iceRaft.Id, model.IceRaftRecordStatusWaitUse).
|
|
|
+ // Updates(map[string]interface{}{
|
|
|
+ // "status": model.IceRaftRecordStatusUsing,
|
|
|
+ // "out_storage_time": time.Now(),
|
|
|
+ // "cooler_box_id": c.CoolerBoxId,
|
|
|
+ // }).Error
|
|
|
+ //if err != nil {
|
|
|
+ // e.Log.Errorf("db error: %s", err)
|
|
|
+ // return errors.New(fmt.Sprintf("冰排【%s】出库失败", iceRaft.Code))
|
|
|
+ //}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -647,11 +663,6 @@ func (e *Waybill) Delivery(c *dto.WaybillDeliveryReq, p *actions.DataPermission)
|
|
|
return errors.New("获取保温箱信息失败")
|
|
|
}
|
|
|
}
|
|
|
- var user model.SysUser
|
|
|
- first := e.Orm.Table(user.TableName()).Where("id = ?", p.UserId).First(&user)
|
|
|
- if first.Error != nil {
|
|
|
- return global.GetFailedErr
|
|
|
- }
|
|
|
|
|
|
for _, id := range c.WaybillIds {
|
|
|
|
|
@@ -681,14 +692,6 @@ func (e *Waybill) Delivery(c *dto.WaybillDeliveryReq, p *actions.DataPermission)
|
|
|
waybillModel.IceRaftCode = c.IceRaftCode
|
|
|
if c.Status == model.WaybillStatusInShippeds {
|
|
|
waybillModel.Status = c.Status
|
|
|
- // 查询保温箱信息
|
|
|
- //var coolerBoxModel model.CoolerBox
|
|
|
- //err = e.Orm.Scopes(actions.Permission(coolerBoxModel.TableName(), p)).
|
|
|
- // First(&coolerBoxModel, c.CoolerBoxId).Error
|
|
|
- //if err != nil {
|
|
|
- // e.Log.Errorf("查询保温箱信息失败: %s", err)
|
|
|
- // return errors.New("查询保温箱信息失败")
|
|
|
- //}
|
|
|
var data model.IceRaft
|
|
|
var list []string
|
|
|
err := e.Orm.Model(&data).
|
|
@@ -708,7 +711,7 @@ func (e *Waybill) Delivery(c *dto.WaybillDeliveryReq, p *actions.DataPermission)
|
|
|
var cooler model.CoolerBoxRecord
|
|
|
var count int64
|
|
|
e.Orm.Scopes(actions.Permission(cooler.TableName(), p)).
|
|
|
- First(&cooler).Where("cooler_box_id = ?", coolerBox.Id).Where("status = ?", 1).Count(&count)
|
|
|
+ Where("cooler_box_id = ?", c.CoolerBoxId).Where("status = ?", 1).First(&cooler).Count(&count)
|
|
|
if count == 0 {
|
|
|
cooler.CoolerUseUsers = user.NickName
|
|
|
cooler.HistoryCode = append(cooler.HistoryCode, list...)
|
|
@@ -1712,6 +1715,7 @@ func (e *Waybill) SecondaryDistribution(c *dto.WaybillAssignment, p *actions.Dat
|
|
|
waybil.DeliveryId = waybillModel.DeliveryId
|
|
|
waybil.DeliveryPhone = waybillModel.DeliveryPhone
|
|
|
waybil.OrderTime = model2.Time(time.Now())
|
|
|
+ waybil.IsSecondaryDistribution = false
|
|
|
c.Generate(&waybil)
|
|
|
err = tx.Create(&waybil).Error
|
|
|
if err != nil {
|
|
@@ -1763,5 +1767,18 @@ func (e *Waybill) SecondaryDistribution(c *dto.WaybillAssignment, p *actions.Dat
|
|
|
e.Log.Errorf("更新运单失败: %s", err)
|
|
|
return global.UpdateFailedErr
|
|
|
}
|
|
|
+ // 二次分配订单发送短信
|
|
|
+ ss := sms.NewSMS(conf.ExtConfig.SubMail.Appid, conf.ExtConfig.SubMail.Signature)
|
|
|
+ addr := conf.ExtConfig.Applet.WaybillUrl + url.QueryEscape(lib.AesEncryptCBC(waybil.WaybillNo, lib.AesKey))
|
|
|
+ res, err1 := ss.SmsXSend(waybil.ConsigneeAddressPhone, addr)
|
|
|
+ if err1 != nil || res.Status != sms.SUCCESS {
|
|
|
+ e.Log.Errorf("派单短信发送失败", zap.Any("res", res), zap.Error(err1))
|
|
|
+ err = errors.New("派单短信发送失败,请检查收件人电话是否正确!")
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ waybil.SendLog = model.WaybillSendLog{
|
|
|
+ Phone: waybil.ConsigneeAddressPhone,
|
|
|
+ Content: "【冷链送药追溯平台】您的运单正在派送中,点击查看详情:" + addr,
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|