From 0976bb887c6c476a500cd21ac2887e0fc7d11b5d Mon Sep 17 00:00:00 2001 From: "DESKTOP-H7A6KL3\\wenzh" Date: Mon, 17 Apr 2023 16:14:58 +0800 Subject: [PATCH] =?UTF-8?q?GFrame3=20=E5=8F=91=E8=BF=90=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=94=B9=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/jit/ShipOrder.service.go | 2 + .../jit/implments/ShipOrder.service.impl.go | 116 ++++++++++++++++++ web/controllers/jit/jit.go | 2 +- 3 files changed, 119 insertions(+), 1 deletion(-) diff --git a/services/jit/ShipOrder.service.go b/services/jit/ShipOrder.service.go index 8a658a3..286c401 100644 --- a/services/jit/ShipOrder.service.go +++ b/services/jit/ShipOrder.service.go @@ -392,6 +392,8 @@ type ShipOrderService interface { ******************************************************************************/ ExportShipOrder(user *global.User, entity *model.ShipOrder) error + NewExportShipOrder(user *global.User, entity *model.ShipOrder) error + ScanCarPackOrders(user *global.User, shipOrderId string, packOrderId string) (bool, string, error) SearchOne(user *global.User, shipOrderId string) (*model.ShipOrder, error) diff --git a/services/jit/implments/ShipOrder.service.impl.go b/services/jit/implments/ShipOrder.service.impl.go index d4dcbbe..3188c6e 100644 --- a/services/jit/implments/ShipOrder.service.impl.go +++ b/services/jit/implments/ShipOrder.service.impl.go @@ -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 +} diff --git a/web/controllers/jit/jit.go b/web/controllers/jit/jit.go index 163622f..0acf9a1 100644 --- a/web/controllers/jit/jit.go +++ b/web/controllers/jit/jit.go @@ -67,7 +67,7 @@ func RegisterRoutes() { // shipOrder 创建特殊发运单 RegisterCreateSpecialShipOrder(shiporder, "/createspecial", serviceOfShipOrder.CreateSpecialShipOrder) //上传发运文件 - RegisterExportShipOrder(shiporder, "/exportshiporder", serviceOfShipOrder.ExportShipOrder) + RegisterExportShipOrder(shiporder, "/exportshiporder", serviceOfShipOrder.NewExportShipOrder) //发运扫描 RegisterScanCarPackOrders(shiporder, "/scancarpack", serviceOfShipOrder.ScanCarPackOrders)