|
|
@ -2417,3 +2417,119 @@ func (impl *ShipOrderServiceImplement) SearchOne(user *global.User, shipOrderId |
|
|
|
result.ShipOrderItemLstLi = items |
|
|
|
return result, nil |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* 上传excel,生成发运消息(新版) |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
func (impl *ShipOrderServiceImplement) NewExportShipOrder(user *global.User, entity *model.ShipOrder) error { |
|
|
|
|
|
|
|
grmi.Log(user, "/services/jit/implments/ShipOrder.service.impl.go", "InsertOneShipOrder", "插入一个ShipOrder") |
|
|
|
|
|
|
|
engine := db.Eloquent.Master() |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
dao := dal.NewShipOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
output, err := xlsx.FileToSlice("web/" + entity.TemplateFile) |
|
|
|
if err != nil { |
|
|
|
return fmt.Errorf("读取文件失败") |
|
|
|
} |
|
|
|
var shipOrderItemlst []model.ShipOrderItemLst |
|
|
|
var shipOrderStatus model.ShipOrderStatus |
|
|
|
var articleId []string |
|
|
|
if len(output) < 1 { |
|
|
|
return fmt.Errorf("文件格式错误") |
|
|
|
} |
|
|
|
pos := 0 |
|
|
|
for rowIndex, row := range output[0] { |
|
|
|
if len(row) < 2 { |
|
|
|
return fmt.Errorf("文件格式无法解析") |
|
|
|
} |
|
|
|
if rowIndex == 0 { |
|
|
|
entity.ShipOrderId = row[0] |
|
|
|
} |
|
|
|
if rowIndex >= 2 { |
|
|
|
planQty := 0 |
|
|
|
orderQty := 0 |
|
|
|
if i, err := strconv.ParseInt(row[1], 10, 64); err == nil { |
|
|
|
orderQty = int(i) |
|
|
|
} |
|
|
|
if i, err := strconv.ParseInt(row[1], 10, 64); err == nil { |
|
|
|
planQty = int(i) |
|
|
|
} |
|
|
|
info := model.ShipOrderItemLst{ |
|
|
|
ShipOrderId: entity.ShipOrderId, |
|
|
|
ItemId: row[0], |
|
|
|
PartId: row[0], |
|
|
|
PlanQty: planQty, |
|
|
|
OrderQty: orderQty, |
|
|
|
ShortShipToggle: false, |
|
|
|
} |
|
|
|
info.Pos = (pos + 1) |
|
|
|
pos++ |
|
|
|
articleId = append(articleId, info.ItemId) |
|
|
|
shipOrderItemlst = append(shipOrderItemlst, info) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
//记录状态信息
|
|
|
|
shipOrderStatus.Status = baseModel.WO_STATUS_PLANNED |
|
|
|
shipOrderStatus.ShipOrderId = entity.ShipOrderId |
|
|
|
//判断文件是否导入
|
|
|
|
record, err := dao.SelectOne(entity.ShipOrderId) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
if record != nil { |
|
|
|
return grmi.NewBusinessError("已经存在相同主键的记录!") |
|
|
|
} |
|
|
|
//查询article是否存在
|
|
|
|
articleDao := baseDal.NewArticleDAO(session, user.PlantNr, user.UserId) |
|
|
|
articleList, err := articleDao.SelectWhere(articleId) |
|
|
|
articleMap := make(map[string]baseModel.Article) |
|
|
|
for _, v := range articleList { |
|
|
|
articleMap[v.ArtId] = v |
|
|
|
} |
|
|
|
allTal := 0 |
|
|
|
for k, v := range shipOrderItemlst { |
|
|
|
shipOrderItemlst[k].Status = baseModel.WO_STATUS_PLANNED |
|
|
|
val, ok := articleMap[v.ItemId] |
|
|
|
if ok { |
|
|
|
shipOrderItemlst[k].ItemType = "inside" |
|
|
|
shipOrderItemlst[k].PartName = val.Descr1 |
|
|
|
shipOrderItemlst[k].ShipValidateToggle = true |
|
|
|
allTal += v.PlanQty |
|
|
|
} else { |
|
|
|
if v.ItemType == "" { |
|
|
|
shipOrderItemlst[k].ItemType = "external" |
|
|
|
} |
|
|
|
shipOrderItemlst[k].ShipValidateToggle = false |
|
|
|
} |
|
|
|
} |
|
|
|
entity.PlanQty = allTal |
|
|
|
entity.ShipType = baseModel.SP_TYPE_OUTER |
|
|
|
session.Begin() |
|
|
|
|
|
|
|
//插入明细表
|
|
|
|
itemListDao := dal.NewShipOrderItemLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
statusDao := dal.NewShipOrderStatusDAO(session, user.PlantNr, user.UserId) |
|
|
|
err = itemListDao.Insert(&shipOrderItemlst) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return err |
|
|
|
} |
|
|
|
err = dao.InsertOne(entity) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return err |
|
|
|
} |
|
|
|
err = statusDao.InsertOne(&shipOrderStatus) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return err |
|
|
|
} |
|
|
|
//记录状态
|
|
|
|
session.Commit() |
|
|
|
return nil |
|
|
|
} |