|
|
@ -1622,6 +1622,7 @@ func (impl *BalanceServiceImplement) refreshMpsArticleDemand(isRefresh bool, dat |
|
|
|
if index == 0 { |
|
|
|
for _, articleStock := range data_ArticleStock { |
|
|
|
if articleStock.ArtId == data_ArticleDemand[index].ArtId { |
|
|
|
// FGQty 成品库存
|
|
|
|
data_ArticleDemand[index].OpeningInventory = articleStock.FGQty |
|
|
|
break |
|
|
|
} |
|
|
@ -1630,6 +1631,7 @@ func (impl *BalanceServiceImplement) refreshMpsArticleDemand(isRefresh bool, dat |
|
|
|
|
|
|
|
//最小库存水平
|
|
|
|
MinInventory := 0.0 |
|
|
|
// 通过最小库存覆盖周数 添加后续预测需求
|
|
|
|
for i := 1; i <= int(data_ArticleDemand[index].MinCoverPeriod); i++ { |
|
|
|
now := i + index |
|
|
|
if now < len(data_ArticleDemand) { |
|
|
@ -1667,7 +1669,7 @@ func (impl *BalanceServiceImplement) refreshMpsArticleDemand(isRefresh bool, dat |
|
|
|
//净生产量 = 0
|
|
|
|
//END IF
|
|
|
|
//计算需求
|
|
|
|
|
|
|
|
// 编辑时 在制量不参与预算
|
|
|
|
if !isRefresh { |
|
|
|
if data_ArticleDemand[index].OpeningInventory-data_ArticleDemand[index].NeedQty < data_ArticleDemand[index].MinInventory { |
|
|
|
data_ArticleDemand[index].NetDemandQty = data_ArticleDemand[index].TargetInventory - (data_ArticleDemand[index].OpeningInventory - data_ArticleDemand[index].NeedQty) |
|
|
@ -3492,7 +3494,10 @@ func (impl *BalanceServiceImplement) RefreshBalanceData(user *global.User) error |
|
|
|
|
|
|
|
firstDemandList = append(firstDemandList, firstArticleDemand) |
|
|
|
} |
|
|
|
// 抓销售订单数据 再把销售订单的需求和mds的客户需求聚合在一起
|
|
|
|
// 获取销售订单
|
|
|
|
dao_SalesOrder := dal_base.NewSalesOrderDAO(session, user.PlantNr, user.UserId) |
|
|
|
// DD代表销售订单
|
|
|
|
SalesOrderList, err := dao_SalesOrder.Select([]grmi.Predicate{meta_base.SalesOrder_ProductType.NewPredicate(grmi.Equal, "DD")}, nil) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
@ -3510,14 +3515,14 @@ func (impl *BalanceServiceImplement) RefreshBalanceData(user *global.User) error |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
if resourceId == "" { |
|
|
|
for _, resource := range alldata_ArticleSecondResource { |
|
|
|
if salesOrder.ArtId == resource.ArtId { |
|
|
|
resourceId = resource.SecondaryResourceId |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//if resourceId == "" {
|
|
|
|
// for _, resource := range alldata_ArticleSecondResource {
|
|
|
|
// if salesOrder.ArtId == resource.ArtId {
|
|
|
|
// resourceId = resource.SecondaryResourceId
|
|
|
|
// break
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
if resourceId == "" { |
|
|
|
|
|
|
|
//return grmi.NewBusinessError("缺少物料资源关联关系,物料 :" + salesOrder.ArtId)
|
|
|
@ -3675,11 +3680,11 @@ func (impl *BalanceServiceImplement) RefreshBalanceData(user *global.User) error |
|
|
|
MinCoverPeriodType: "W", |
|
|
|
ResourceId: resourceId, |
|
|
|
} |
|
|
|
|
|
|
|
firstDemandList = append(firstDemandList, firstArticleDemand) |
|
|
|
} |
|
|
|
|
|
|
|
//聚合
|
|
|
|
// map[string-物料ID]map[string-demandKey]model.ArticleDemand
|
|
|
|
keyArtIdMap := make(map[string]map[string]model.ArticleDemand) |
|
|
|
for _, v := range firstDemandList { |
|
|
|
if info, ok := keyArtIdMap[v.ArtId]; ok { |
|
|
@ -3712,6 +3717,9 @@ func (impl *BalanceServiceImplement) RefreshBalanceData(user *global.User) error |
|
|
|
} |
|
|
|
DLQty, ZZQty, DDQty := 0.0, 0.0, 0.0 |
|
|
|
for _, info := range SalesOrderList { |
|
|
|
// DL 独立需求订单
|
|
|
|
// ZZ 在制量
|
|
|
|
// DD销售订单
|
|
|
|
if info.ProductType == "DL" { |
|
|
|
DLQty = info.PlanQty |
|
|
|
} else { |
|
|
@ -3736,11 +3744,12 @@ func (impl *BalanceServiceImplement) RefreshBalanceData(user *global.User) error |
|
|
|
var AddTime time.Time |
|
|
|
ArticleTime := utils.WeekDayMondayZeroTs(beforeList[index].DemandDate.Restore()) |
|
|
|
if isInMap[beforeList[index].ArtId] == 0 { |
|
|
|
// SalesOrderFetchLeadTimeByDay mps配置前置期
|
|
|
|
AddTime = ArticleTime.Add(-time.Duration(mpsSettingOne.SalesOrderFetchLeadTimeByDay*24) * time.Hour) |
|
|
|
fmt.Println(AddTime, Time, ArticleTime) |
|
|
|
isAdd = true |
|
|
|
} |
|
|
|
|
|
|
|
// 第一周的销售订单往前抓一个前置期的需求数据
|
|
|
|
if isAdd && !AddTime.After(OrginTime.Restore()) && !ArticleTime.Before(OrginTime.Restore()) || Time == ArticleTime { |
|
|
|
beforeList[index].IndependentDemandQty += DLQty |
|
|
|
} |
|
|
@ -3973,7 +3982,6 @@ func (impl *BalanceServiceImplement) MpsPlanExport(user *global.User, CustArtSto |
|
|
|
artDescMap[article.ArtId] = article.Descr1 |
|
|
|
} |
|
|
|
// 通过传入的artIdLi 和 demandKeyLi查询所有的物料需求
|
|
|
|
|
|
|
|
articleDemandList, err := daoArticleDemand.Select([]grmi.Predicate{}, nil) |
|
|
|
if err != nil { |
|
|
|
return "", grmi.NewBusinessError("查询物料需求数据失败, 错误:" + err.Error()) |
|
|
|