|
|
@ -19,10 +19,12 @@ import ( |
|
|
|
model "leit.com/LAPP_CHEERSSON_BACKEND/models/ap" |
|
|
|
baseModel "leit.com/LAPP_CHEERSSON_BACKEND/models/base" |
|
|
|
commonModel "leit.com/LAPP_CHEERSSON_BACKEND/models/common" |
|
|
|
"leit.com/LAPP_CHEERSSON_BACKEND/models/me" |
|
|
|
"leit.com/LAPP_CHEERSSON_BACKEND/utils" |
|
|
|
utilService "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/service" |
|
|
|
_struct "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/struct" |
|
|
|
"leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/struct/pln_forecast" |
|
|
|
"leit.com/LAPP_CHEERSSON_BACKEND/web/middleware/glog" |
|
|
|
"sort" |
|
|
|
"strings" |
|
|
|
"time" |
|
|
@ -1150,7 +1152,7 @@ func (impl *CustDemandVerHeadServiceImplement) SelectData(user *global.User, url |
|
|
|
return grmi.PagingResult{}, err |
|
|
|
} |
|
|
|
if _user == nil { |
|
|
|
userMap[v.LastUser] = v.LastUser |
|
|
|
userMap[v.LastUser] = _user.LastUser |
|
|
|
} else { |
|
|
|
userMap[v.LastUser] = _user.Name |
|
|
|
} |
|
|
@ -1724,10 +1726,12 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus |
|
|
|
tem := make(map[int]string) |
|
|
|
_nowTime := time.Now() |
|
|
|
_, year1, _ := utils.WeekByDate(_nowTime) |
|
|
|
var cols int |
|
|
|
for k, row := range rows { |
|
|
|
if k == 0 { |
|
|
|
//记录日期,并且与k关联起来
|
|
|
|
for kk, vv := range row { |
|
|
|
|
|
|
|
if kk >= 6 { |
|
|
|
if kk == 6 { |
|
|
|
//判断第一周是否是大于当前周
|
|
|
@ -1738,6 +1742,9 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus |
|
|
|
return fmt.Errorf("不能导入当前年之前的预测") |
|
|
|
} |
|
|
|
} |
|
|
|
if strings.TrimSpace(vv) != "" { |
|
|
|
cols = kk |
|
|
|
} |
|
|
|
tem[kk] = utils.ValueToString(vv, "") |
|
|
|
} |
|
|
|
} |
|
|
@ -1768,7 +1775,7 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus |
|
|
|
continue |
|
|
|
} |
|
|
|
//当列>=6开始记录零件
|
|
|
|
if kkk >= 6 { |
|
|
|
if kkk >= 6 && kkk <= cols { |
|
|
|
//根据k的数值,映射数据
|
|
|
|
val, ok := tem[kkk] |
|
|
|
//判断值是否存在
|
|
|
@ -1796,7 +1803,8 @@ func (impl *CustDemandVerHeadServiceImplement) ImportFile(user *global.User, cus |
|
|
|
one.VersionId = versionId |
|
|
|
one.Status = baseModel.STATUS_INT_NO |
|
|
|
one.FUseOrgNo = FUseOrgNo |
|
|
|
one.DemandQty = float64(utils.ValueToInt(vvv, 0)) |
|
|
|
qty := strings.TrimSpace(strings.ReplaceAll(vvv, ",", "")) |
|
|
|
one.DemandQty = float64(utils.ValueToInt(qty, 0)) |
|
|
|
one.DemandWeek = week |
|
|
|
one.DemandDate = grmi.Date(weekDate.AddDate(0, 0, dayLen)) |
|
|
|
one.DemandYear = year |
|
|
@ -1927,27 +1935,20 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, |
|
|
|
statusMap[ArtId][customerId] = 1 |
|
|
|
} |
|
|
|
} |
|
|
|
_nowTime := time.Now() |
|
|
|
_, year, _ := utils.WeekByDate(_nowTime) |
|
|
|
|
|
|
|
var cols int |
|
|
|
for k, row := range rows { |
|
|
|
if k == 0 { |
|
|
|
//记录日期,并且与k关联起来
|
|
|
|
for kk, vv := range row { |
|
|
|
if kk >= 6 { |
|
|
|
if kk == 6 { |
|
|
|
//判断第一周是否是大于当前周
|
|
|
|
var timeLayoutStr = "01-02-06" |
|
|
|
st, _ := time.Parse(timeLayoutStr, vv) |
|
|
|
_, _year, _ := utils.WeekByDate(st) |
|
|
|
if _year < year { |
|
|
|
return fmt.Errorf("不能导入当前年之前的预测") |
|
|
|
} |
|
|
|
} |
|
|
|
if kk >= 6 && strings.TrimSpace(vv) != "" { |
|
|
|
cols = kk |
|
|
|
tem[kk] = utils.ValueToString(vv, "") |
|
|
|
} |
|
|
|
} |
|
|
|
continue |
|
|
|
} |
|
|
|
glog.InfoExtln("批量导入日志", "cols:", cols) |
|
|
|
ArtId := strings.TrimSpace(utils.ValueToString(row[5], "")) |
|
|
|
//判断物料bom是否需要维护
|
|
|
|
if _, ok := articleMap[ArtId]; !ok { |
|
|
@ -2027,9 +2028,7 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, |
|
|
|
|
|
|
|
createWeek, createYear, _ := utils.WeekByDate(weekDate) |
|
|
|
versionId := utils.ValueToString(createYear, "") + "." + utils.ValueToString(createWeek, "") |
|
|
|
if createYear < year { |
|
|
|
return fmt.Errorf("不能导入当前年之前的预测") |
|
|
|
} |
|
|
|
|
|
|
|
custInfo, err := custDao.SelectOne(customerId) |
|
|
|
if err != nil { |
|
|
|
errInfo := new(model.ErrorDatalst) |
|
|
@ -2081,13 +2080,12 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, |
|
|
|
continue |
|
|
|
} |
|
|
|
if artInfo == nil { |
|
|
|
//不报错自动维护客户物料关系
|
|
|
|
//errInfo := new(model.ErrorDatalst)
|
|
|
|
//errInfo.ErrorInfo = fmt.Sprintf("客户%s物料号%s没有维护!", custInfo.CustomerId, ArtId)
|
|
|
|
//errInfo.ErrorType = "BulkImportFile"
|
|
|
|
//errInfo.ErrorStatus = "ok"
|
|
|
|
//errInfo.TargetSource = savePath
|
|
|
|
//_ = errDao.InsertOne(errInfo)
|
|
|
|
errInfo := new(model.ErrorDatalst) |
|
|
|
errInfo.ErrorInfo = fmt.Sprintf("客户%s物料号%s没有维护!", custInfo.CustomerId, ArtId) |
|
|
|
errInfo.ErrorType = "BulkImportFile" |
|
|
|
errInfo.ErrorStatus = "ok" |
|
|
|
errInfo.TargetSource = savePath |
|
|
|
_ = errDao.InsertOne(errInfo) |
|
|
|
//插入客户物料维护关系
|
|
|
|
if val, ok := articleMap[ArtId]; ok { |
|
|
|
//插入客户物料维护关系
|
|
|
@ -2134,7 +2132,7 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, |
|
|
|
} |
|
|
|
for kkk, vvv := range row { |
|
|
|
//当列>=5开始记录零件
|
|
|
|
if kkk >= 6 { |
|
|
|
if kkk >= 6 && kkk <= cols { |
|
|
|
//根据k的数值,映射数据
|
|
|
|
val, ok := tem[kkk] |
|
|
|
//判断值是否存在
|
|
|
@ -2163,7 +2161,8 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, |
|
|
|
one.VersionId = versionId |
|
|
|
one.Status = 0 |
|
|
|
one.FUseOrgNo = FUseOrgNo |
|
|
|
one.DemandQty = float64(utils.ValueToInt(vvv, 0)) |
|
|
|
qty := strings.TrimSpace(strings.ReplaceAll(vvv, ",", "")) |
|
|
|
one.DemandQty = float64(utils.ValueToInt(qty, 0)) |
|
|
|
one.DemandWeek = week |
|
|
|
one.DemandDate = grmi.Date(weekDate.AddDate(0, 0, dayLen)) |
|
|
|
one.DemandYear = year |
|
|
@ -2271,7 +2270,7 @@ func (impl *CustDemandVerHeadServiceImplement) BulkImportFile(user *global.User, |
|
|
|
err = detailDao.InsertOne(&oneDetail) |
|
|
|
if err != nil { |
|
|
|
session.Rollback() |
|
|
|
return errors.New("添加客户版本详情信息失败:" + err.Error()) |
|
|
|
return errors.New("添加客户版本详情信息失败") |
|
|
|
} |
|
|
|
} |
|
|
|
session.Commit() |
|
|
@ -2661,10 +2660,10 @@ func (impl *CustDemandVerHeadServiceImplement) CompareVersionInfoByArtcle(user * |
|
|
|
if len(bomlst) == 0 { |
|
|
|
return nil, grmi.NewBusinessError("原材料不存在!") |
|
|
|
} |
|
|
|
//计算成品物料和原材料之间的换算关系
|
|
|
|
var artIds []string |
|
|
|
artMap := make(map[string]float64, 0) |
|
|
|
for _, v := range bomlst { |
|
|
|
key := v.FmatNr |
|
|
|
bomlstNum := v.CmatQty |
|
|
|
if bomlstNum < 1 { |
|
|
|
bomlstNum = 1 |
|
|
@ -2673,10 +2672,16 @@ func (impl *CustDemandVerHeadServiceImplement) CompareVersionInfoByArtcle(user * |
|
|
|
if bomlstFNum < 1 { |
|
|
|
bomlstFNum = 1 |
|
|
|
} |
|
|
|
artMap[key] = bomlstNum / bomlstFNum |
|
|
|
artIds = append(artIds, v.FmatNr) |
|
|
|
} |
|
|
|
|
|
|
|
bomFloat := bomlstNum / bomlstFNum |
|
|
|
//递归
|
|
|
|
key, bomFloat, err := impl.DiGuiSearch(user, v, bomFloat) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
artMap[key] = bomFloat |
|
|
|
artIds = append(artIds, key) |
|
|
|
} |
|
|
|
if len(version) > 0 { |
|
|
|
//数据长度:保存多少周的数据
|
|
|
|
detailData, err := detailDao.SelectDeviationByVersion(version, artIds) |
|
|
@ -2781,6 +2786,33 @@ func (impl *CustDemandVerHeadServiceImplement) CompareVersionInfoByArtcle(user * |
|
|
|
|
|
|
|
return dataInfo, nil |
|
|
|
} |
|
|
|
func (impl *CustDemandVerHeadServiceImplement) DiGuiSearch(user *global.User, bomlst me.BomLst, bomFloat float64) (string, float64, error) { |
|
|
|
if bomlst.FmatNr != bomlst.BomId { |
|
|
|
engine := db.Eloquent.Master() |
|
|
|
session := engine.NewSession() |
|
|
|
defer session.Close() |
|
|
|
meDao := meDal.NewBomLstDAO(session, user.PlantNr, user.UserId) |
|
|
|
bomInfo, err := meDao.SelectOneByFArtId(bomlst.BomId, bomlst.FmatNr) |
|
|
|
if err != nil { |
|
|
|
return "", 0, err |
|
|
|
} |
|
|
|
bomlstNum := bomInfo.CmatQty |
|
|
|
if bomlstNum < 1 { |
|
|
|
bomlstNum = 1 |
|
|
|
} |
|
|
|
bomlstFNum := bomInfo.FmatQty |
|
|
|
if bomlstFNum < 1 { |
|
|
|
bomlstFNum = 1 |
|
|
|
} |
|
|
|
bomFloat = bomFloat * (bomlstNum / bomlstFNum) |
|
|
|
if bomInfo.FmatNr == bomInfo.BomId { |
|
|
|
return bomInfo.FmatNr, bomFloat, nil |
|
|
|
} |
|
|
|
//递归
|
|
|
|
impl.DiGuiSearch(user, bomInfo, bomFloat) |
|
|
|
} |
|
|
|
return bomlst.FmatNr, bomFloat, nil |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
@ -3817,7 +3849,7 @@ func (impl *CustDemandVerHeadServiceImplement) SelectOneByCustTask(user *global. |
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/ap/CustDemandVerHeadService.IssueGlobalAllVersion |
|
|
|
* 全局发布使用版本 |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
func (impl *CustDemandVerHeadServiceImplement) IssueGlobalAllVersion(user *global.User) error { |
|
|
|
|
|
|
|