diff --git a/meta/ap/CustDemandVerHead.meta.go b/meta/ap/CustDemandVerHead.meta.go index 25f52cf..ecd2df7 100644 --- a/meta/ap/CustDemandVerHead.meta.go +++ b/meta/ap/CustDemandVerHead.meta.go @@ -37,7 +37,7 @@ var CustDemandVerHead_LastUser = grmi.NewField("LastUser", "[AP_CustDemandVerHea var CustDemandVerHead_CreateTime = grmi.NewField("CreateTime", "[AP_CustDemandVerHead].CreateTime", "createtime", grmi.TypeDateTime) var CustDemandVerHead_CreateYear = grmi.NewField("CreateYear", "[AP_CustDemandVerHead].CreateYear", "createyear", grmi.TypeString) var CustDemandVerHead_CreateWeek = grmi.NewField("CreateWeek", "[AP_CustDemandVerHead].CreateWeek", "createweek", grmi.TypeString) -var CustDemandVerHead_PublishId = grmi.NewField("PublishId", "[AP_CustDemandVerHead].PublishId", "publishid", grmi.TypeInt) +var CustDemandVerHead_PublishId = grmi.NewField("PublishId", "[AP_CustDemandVerHead].PublishId", "publishid", grmi.TypeString) var CustDemandVerHead_PublishNumber = grmi.NewField("PublishNumber", "[AP_CustDemandVerHead].PublishNumber", "publishnumber", grmi.TypeString) var CustDemandVerHead_PublishStatus = grmi.NewField("PublishStatus", "[AP_CustDemandVerHead].PublishStatus", "PublishStatus", grmi.TypeInt) diff --git a/models/ap/CustDemandVerHead.model.go b/models/ap/CustDemandVerHead.model.go index 65123d5..57ae5e1 100644 --- a/models/ap/CustDemandVerHead.model.go +++ b/models/ap/CustDemandVerHead.model.go @@ -45,7 +45,7 @@ type CustDemandVerHead struct { CreateWeek int `xorm:"int 'CreateWeek'" json:"AP_CustDemandVerHead-CreateWeek"` CreateModeDescr string `xorm:"-" json:"AP_CustDemandVerHead-CreateModeDescr"` Valid bool `xorm:"-" json:"AP_CustDemandVerHead-Valid"` - PublishId int `xorm:"int 'PublishId'" json:"AP_CustDemandVerHead-PublishId"` + PublishId string `xorm:"string 'PublishId'" json:"AP_CustDemandVerHead-PublishId"` PublishNumber string `xorm:"nvarchar(255) 'PublishNumber'" json:"AP_CustDemandVerHead-PublishNumber"` PublishStatus int `xorm:"int 'PublishStatus'" json:"AP_CustDemandVerHead-PublishStatus"` } @@ -85,6 +85,7 @@ type CustomerItem struct { CustomerId string `json:"CustomerId" xorm:"-"` Version string `json:"Version" xorm:"-"` ArtId string `json:"ArtId" xorm:"-"` + FUseOrgNo string `json:"FUseOrgNo" xorm:"-"` Item map[string]int `json:"Item" xorm:"-"` SortKeys []string `json:"SortKeys" xorm:"-"` CustDemandVerDetail map[string]CustDemandVerDetail `json:"CustDemandVerDetail" xorm:"-"` diff --git a/services/ap/implments/CustArtlst.service.impl.go b/services/ap/implments/CustArtlst.service.impl.go index 034ec21..bd1f7a8 100644 --- a/services/ap/implments/CustArtlst.service.impl.go +++ b/services/ap/implments/CustArtlst.service.impl.go @@ -626,6 +626,8 @@ func (impl *CustArtlstServiceImplement) ImportCustArtlst(FieldKeysStr string, li oneData.PlantNr = model_base.PlantNr oneData.CustomerId = _custInfo.CustomerId oneData.ArtId = artInfo.ArtId + oneData.Descr1 = artInfo.Descr1 + oneData.Descr2 = artInfo.Descr2 oneData.Descr1 = utils.ValueToString(v["FCustMatName"], "") err = dao.InsertOne(oneData) if err != nil { diff --git a/services/ap/implments/CustDemandVerHead.service.impl.go b/services/ap/implments/CustDemandVerHead.service.impl.go index 4e8196e..ce70258 100644 --- a/services/ap/implments/CustDemandVerHead.service.impl.go +++ b/services/ap/implments/CustDemandVerHead.service.impl.go @@ -355,10 +355,15 @@ func (impl *CustDemandVerHeadServiceImplement) SelectOne(user *global.User, cust result.CreateModeDescr = mInfo.Descr //构建数组 var sortArtKeys []string - artMap := make(map[string][]model.CustDemandVerDetail) + artMap := make(map[string]map[string][]model.CustDemandVerDetail) for _, v := range list { key := v.ArtId - artMap[key] = append(artMap[key], v) + if _info, ok := artMap[key]; ok { + _info[v.FUseOrgNo] = append(_info[v.FUseOrgNo], v) + } else { + artMap[key] = make(map[string][]model.CustDemandVerDetail) + artMap[key][v.FUseOrgNo] = append(artMap[key][v.FUseOrgNo], v) + } } for key, _ := range artMap { sortArtKeys = append(sortArtKeys, key) @@ -374,22 +379,25 @@ func (impl *CustDemandVerHeadServiceImplement) SelectOne(user *global.User, cust for _, artId := range sortArtKeys { artInfo, ok := artMap[artId] if ok { - one := model.CustomerItem{} - one.ArtId = artId - one.CustomerId = result.CustomerId - one.Version = result.VersionId - item := make(map[string]int) - for _, vv := range artInfo { - dateTime := vv.DemandDate.Restore() - key := utils.TimeFormat(dateTime, "yyyy-MM-dd") - item[key] = utils.ValueToInt(vv.DemandQty, 0) - detail[key] = vv - SortKeys = append(SortKeys, key) + for fUseOrgNo, _info := range artInfo { + one := model.CustomerItem{} + one.ArtId = artId + one.FUseOrgNo = fUseOrgNo + one.CustomerId = result.CustomerId + one.Version = result.VersionId + item := make(map[string]int) + for _, vv := range _info { + dateTime := vv.DemandDate.Restore() + key := utils.TimeFormat(dateTime, "yyyy-MM-dd") + item[key] = utils.ValueToInt(vv.DemandQty, 0) + detail[key] = vv + SortKeys = append(SortKeys, key) + } + one.Item = item + one.CustDemandVerDetail = detail + one.SortKeys = SortKeys + temData = append(temData, one) } - one.Item = item - one.CustDemandVerDetail = detail - one.SortKeys = SortKeys - temData = append(temData, one) } } } else if mInfo.DemandStartDateMode == "W" { @@ -397,44 +405,49 @@ func (impl *CustDemandVerHeadServiceImplement) SelectOne(user *global.User, cust for _, artId := range sortArtKeys { artInfo, ok := artMap[artId] if ok { - one := model.CustomerItem{} - one.ArtId = artId - one.CustomerId = result.CustomerId - one.Version = result.VersionId - item := make(map[string]int) - for _, vv := range artInfo { - key := utils.ValueToString(vv.DemandYear, "") + "." + utils.ValueToString(vv.DemandWeek, "") - item[key] = utils.ValueToInt(vv.DemandQty, 0) - SortKeys = append(SortKeys, key) - detail[key] = vv + for fUseOrgNo, _info := range artInfo { + one := model.CustomerItem{} + one.ArtId = artId + one.FUseOrgNo = fUseOrgNo + one.CustomerId = result.CustomerId + one.Version = result.VersionId + item := make(map[string]int) + for _, vv := range _info { + key := utils.ValueToString(vv.DemandYear, "") + "." + utils.ValueToString(vv.DemandWeek, "") + item[key] = utils.ValueToInt(vv.DemandQty, 0) + SortKeys = append(SortKeys, key) + detail[key] = vv + } + one.Item = item + one.CustDemandVerDetail = detail + one.SortKeys = SortKeys + temData = append(temData, one) } - one.Item = item - one.CustDemandVerDetail = detail - one.SortKeys = SortKeys - temData = append(temData, one) } - } } else if mInfo.DemandStartDateMode == "M" { //按照周处理 for _, artId := range sortArtKeys { artInfo, ok := artMap[artId] if ok { - one := model.CustomerItem{} - one.ArtId = artId - one.CustomerId = result.CustomerId - one.Version = result.VersionId - item := make(map[string]int) - for _, vv := range artInfo { - key := utils.ValueToString(vv.DemandYear, "") + "." + utils.ValueToString(vv.DemandMonth, "") - item[key] = utils.ValueToInt(vv.DemandQty, 0) - SortKeys = append(SortKeys, key) - detail[key] = vv + for fUseOrgNo, _info := range artInfo { + one := model.CustomerItem{} + one.ArtId = artId + one.FUseOrgNo = fUseOrgNo + one.CustomerId = result.CustomerId + one.Version = result.VersionId + item := make(map[string]int) + for _, vv := range _info { + key := utils.ValueToString(vv.DemandYear, "") + "." + utils.ValueToString(vv.DemandMonth, "") + item[key] = utils.ValueToInt(vv.DemandQty, 0) + SortKeys = append(SortKeys, key) + detail[key] = vv + } + one.Item = item + one.CustDemandVerDetail = detail + one.SortKeys = SortKeys + temData = append(temData, one) } - one.Item = item - one.CustDemandVerDetail = detail - one.SortKeys = SortKeys - temData = append(temData, one) } } } else { @@ -495,6 +508,10 @@ func (impl *CustDemandVerHeadServiceImplement) UpdateOne(user *global.User, enti if mInfo.DemandStartDateMode == "D" { //按照日期处理 for _, detail := range entity.CustomerItem { + fUseOrgNo := detail.FUseOrgNo + if fUseOrgNo == "" { + fUseOrgNo = utils.K3Obj.FUseOrgNo + } //查询物料数据是否维护 artInfo, err := artListDao.SelectOne(entity.CustomerId, detail.ArtId) if err != nil { @@ -505,10 +522,6 @@ func (impl *CustDemandVerHeadServiceImplement) UpdateOne(user *global.User, enti } for demandDate, qty := range detail.Item { val, ok := detail.CustDemandVerDetail[demandDate] - fUseOrgNo := val.FUseOrgNo - if fUseOrgNo == "" { - fUseOrgNo = utils.K3Obj.FUseOrgNo - } if ok { one := model.CustDemandVerDetail{} one.ArtId = detail.ArtId @@ -528,6 +541,10 @@ func (impl *CustDemandVerHeadServiceImplement) UpdateOne(user *global.User, enti } else if mInfo.DemandStartDateMode == "W" { //按照周处理 for _, detail := range entity.CustomerItem { + fUseOrgNo := detail.FUseOrgNo + if fUseOrgNo == "" { + fUseOrgNo = utils.K3Obj.FUseOrgNo + } //查询物料数据是否维护 artInfo, err := artListDao.SelectOne(entity.CustomerId, detail.ArtId) if err != nil { @@ -538,10 +555,6 @@ func (impl *CustDemandVerHeadServiceImplement) UpdateOne(user *global.User, enti } for demandWeek, qty := range detail.Item { val, ok := detail.CustDemandVerDetail[demandWeek] - fUseOrgNo := val.FUseOrgNo - if fUseOrgNo == "" { - fUseOrgNo = utils.K3Obj.FUseOrgNo - } if ok { one := model.CustDemandVerDetail{} one.ArtId = detail.ArtId @@ -562,6 +575,10 @@ func (impl *CustDemandVerHeadServiceImplement) UpdateOne(user *global.User, enti //按照周处理 for _, detail := range entity.CustomerItem { + fUseOrgNo := detail.FUseOrgNo + if fUseOrgNo == "" { + fUseOrgNo = utils.K3Obj.FUseOrgNo + } //查询物料数据是否维护 artInfo, err := artListDao.SelectOne(entity.CustomerId, detail.ArtId) if err != nil { @@ -572,10 +589,6 @@ func (impl *CustDemandVerHeadServiceImplement) UpdateOne(user *global.User, enti } for demandMonth, qty := range detail.Item { val, ok := detail.CustDemandVerDetail[demandMonth] - fUseOrgNo := val.FUseOrgNo - if fUseOrgNo == "" { - fUseOrgNo = utils.K3Obj.FUseOrgNo - } if ok { one := model.CustDemandVerDetail{} one.ArtId = detail.ArtId @@ -1138,7 +1151,8 @@ func (impl *CustDemandVerHeadServiceImplement) IssueGlobalVersion(user *global.U //查询物料 articleDao := basedal.NewArticleDAO(session, user.PlantNr, user.UserId) articleMap := make(map[string]baseModel.Article) - var request []pln_forecast.FEntity + //要区分组织 + request := make(map[string][]pln_forecast.FEntity) for _, v := range detailList { startDate := v.DemandDate.Restore() _week := startDate.Weekday() @@ -1160,9 +1174,13 @@ func (impl *CustDemandVerHeadServiceImplement) IssueGlobalVersion(user *global.U _article = *_info articleMap[v.ArtId] = _article } - request = append(request, pln_forecast.FEntity{ + FUseOrgNo := v.FUseOrgNo + if FUseOrgNo == "" { + FUseOrgNo = utils.K3Obj.FUseOrgNo + } + request[FUseOrgNo] = append(request[FUseOrgNo], pln_forecast.FEntity{ FSupplyOrgID: _struct.FNumber{ - FNumber: utils.K3Obj.FUseOrgNo, + FNumber: FUseOrgNo, }, FCustID: _struct.FNumber{ FNumber: entity.CustomerId, @@ -1183,33 +1201,45 @@ func (impl *CustDemandVerHeadServiceImplement) IssueGlobalVersion(user *global.U FAVERATYPE: "W", FAveraCycle: 1, FStockOrgID: _struct.FNumber{ - FNumber: utils.K3Obj.FUseOrgNo, + FNumber: FUseOrgNo, }, FOwnerTypeID: "BD_Customer", FOwnerID: _struct.FNumber{ - FNumber: utils.K3Obj.FUseOrgNo, + FNumber: FUseOrgNo, }, FReserveType: "1", FIsMRP: false, }) } - //发布对应版本 - response, err := utilService.PlnForecastInit().SaveForecast(pln_forecast.PlnForecastSave{ - FForeOrgID: _struct.FNumber{ - FNumber: utils.K3Obj.FUseOrgNo, - }, - FBillTypeID: _struct.FNumber{ - FNumber: "YCD01_SYS", - }, - FDate: utils.TimeFormat(time.Now(), utils.SysTimeform), - FEntity: request, - }) - if err != nil { - return err + //发布不同组织的对应版本 + ResultId := "" + ResultNumber := "" + for k, v := range request { + response, err := utilService.PlnForecastInit().SaveForecast(pln_forecast.PlnForecastSave{ + FForeOrgID: _struct.FNumber{ + FNumber: k, + }, + FBillTypeID: _struct.FNumber{ + FNumber: "YCD01_SYS", + }, + FDate: utils.TimeFormat(time.Now(), utils.SysTimeform), + FEntity: v, + }) + if err != nil { + return err + } + if ResultId != "" { + ResultId += "," + } + if ResultNumber != "" { + ResultNumber += "," + } + ResultId += utils.ValueToString(response.Result.ID, "") + ResultNumber += response.Result.Number } - entity.PublishId = response.Result.ID - entity.PublishNumber = response.Result.Number + entity.PublishId = ResultId + entity.PublishNumber = ResultNumber entity.PublishStatus = baseModel.STATUS_INT_YES err = dao.IssueGlobalVersion(entity) if err != nil { @@ -1302,6 +1332,7 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus continue } ArtId := strings.TrimSpace(utils.ValueToString(row[3], "")) + FUseOrgNo := strings.TrimSpace(utils.ValueToString(row[4], "")) //查询物料数据是否维护 artInfo, err := artListDao.SelectOne(customerId, ArtId) if err != nil { @@ -1314,12 +1345,11 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus var temDemandDate time.Time for kkk, vvv := range row { //当列>=4开始记录零件 - if kkk >= 4 { + if kkk >= 5 { //根据k的数值,映射数据 val, ok := tem[kkk] //判断值是否存在 if ok { - if temLen >= lenData { continue } @@ -1342,6 +1372,7 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus one.CustomerId = customerId one.VersionId = versionId one.Status = 0 + one.FUseOrgNo = FUseOrgNo one.DemandQty = float64(utils.ValueToInt(vvv, 0)) one.DemandWeek = week one.DemandDate = grmi.Date(weekDate.AddDate(0, 0, dayLen)) @@ -1351,7 +1382,6 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus temDemandDate = weekDate.AddDate(0, 0, dayLen) temLen++ - } } @@ -1365,6 +1395,7 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus week := utils.WeekByDate(weekDate) one := model.CustDemandVerDetail{} one.ArtId = ArtId + one.FUseOrgNo = FUseOrgNo one.CustomerId = customerId one.VersionId = versionId one.Status = 0 @@ -1454,6 +1485,7 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, if utils.ValueIsEmpty(strings.TrimSpace(ArtId)) { return grmi.NewBusinessError("Excel物料主数据没有维护!") } + FUseOrgNo := strings.TrimSpace(utils.ValueToString(row[5], "")) versionId := strings.TrimSpace(utils.ValueToString(row[0], "")) if utils.ValueIsEmpty(strings.TrimSpace(versionId)) { return grmi.NewBusinessError("Excel缺少版本信息!") @@ -1499,7 +1531,7 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, var temDemandDate time.Time for kkk, vvv := range row { //当列>=5开始记录零件 - if kkk >= 5 { + if kkk >= 6 { //根据k的数值,映射数据 val, ok := tem[kkk] //判断值是否存在 @@ -1527,6 +1559,7 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, one.CustomerId = customerId one.VersionId = versionId one.Status = 0 + one.FUseOrgNo = FUseOrgNo one.DemandQty = float64(utils.ValueToInt(vvv, 0)) one.DemandWeek = week one.DemandDate = grmi.Date(weekDate.AddDate(0, 0, dayLen)) @@ -1553,6 +1586,7 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, one.CustomerId = customerId one.VersionId = versionId one.Status = 0 + one.FUseOrgNo = FUseOrgNo one.DemandQty = 0 one.DemandWeek = week one.DemandDate = grmi.Date(weekDate) diff --git a/services/base/implments/Article.service.impl.go b/services/base/implments/Article.service.impl.go index e00eeb3..e08f9d4 100644 --- a/services/base/implments/Article.service.impl.go +++ b/services/base/implments/Article.service.impl.go @@ -340,6 +340,10 @@ func (impl *ArticleServiceImplement) ImportArticle(_list [][]interface{}) { _info.Planner = utils.ValueToString(v[16], "") isUp = true } + if _info.Descr2 != utils.ValueToString(v[14], "") { + _info.Descr2 = utils.ValueToString(v[14], "") + isUp = true + } if isUp { _ = dao.UpdateOne(_info) } @@ -349,6 +353,7 @@ func (impl *ArticleServiceImplement) ImportArticle(_list [][]interface{}) { PlantNr: model.PlantNr, ArtId: utils.ValueToString(v[3], ""), Descr1: utils.ValueToString(v[2], ""), + Descr2: utils.ValueToString(v[14], ""), ArtSpec1: utils.ValueToString(v[9], ""), ArtSpec2: utils.ValueToString(v[10], ""), ArtSpec3: utils.ValueToString(v[11], ""), diff --git a/utils/k3cloud.go b/utils/k3cloud.go index 937f439..c526a59 100644 --- a/utils/k3cloud.go +++ b/utils/k3cloud.go @@ -103,6 +103,20 @@ func (K3config *K3config) SaveApi(formId string, saveData request.SaveRequest) ( return &response, nil } +//批量保存 +func (K3config *K3config) BatchSaveApi(formId string, saveData request.SaveRequest) (*response.K3ResponseStruct, error) { + formParams := util.CreateBusinessPostData(formId, util.Struct2Map(saveData)) + res, err := K3config.GetSession().PostJson(K3config.CloudUrl+util.BATCHSAVE_API, formParams) + if err != nil { + return nil, err + } + response := response.K3ResponseToStruct(res) + if !response.Result.ResponseStatus.IsSuccess { + return nil, fmt.Errorf("%s", response.Result.ResponseStatus.Errors) + } + return &response, nil +} + func (K3config *K3config) BillCloseApi(formId string, saveData request.CloseRequest) (*response.K3ResponseStruct, error) { formParams := util.CreateClosePostData(formId, util.Struct2Map(saveData)) res, err := K3config.GetSession().PostJson(K3config.CloudUrl+util.BILLCLOSE_API, formParams) diff --git a/utils/k3cloud/struct/request/save.go b/utils/k3cloud/struct/request/save.go index 80b245a..347615b 100644 --- a/utils/k3cloud/struct/request/save.go +++ b/utils/k3cloud/struct/request/save.go @@ -14,3 +14,18 @@ type SaveRequest struct { IsAutoSubmitAndAudit bool `json:"IsAutoSubmitAndAudit"` Model interface{} `json:"Model"` } + +type BatchSaveRequest struct { + Creator string `json:"Creator"` + NeedUpDateFields interface{} `json:"NeedUpDateFields"` + NeedReturnFields interface{} `json:"NeedReturnFields"` + IsDeleteEntry bool `json:"IsDeleteEntry"` + SubSystemID string `json:"SubSystemId"` + IsVerifyBaseDataField bool `json:"IsVerifyBaseDataField"` + IsEntryBatchFill bool `json:"IsEntryBatchFill"` + ValidateFlag bool `json:"ValidateFlag"` + NumberSearch bool `json:"NumberSearch"` + InterationFlags string `json:"InterationFlags"` + IsAutoSubmitAndAudit bool `json:"IsAutoSubmitAndAudit"` + Model []interface{} `json:"Model"` +}