Browse Source

更新(当前uat环境)

feature_PlanLog
yehongyang 2 years ago
parent
commit
6335883a60
1 changed files with 65 additions and 33 deletions
  1. +65
    -33
      services/ap/implments/CustDemandVerHead.service.impl.go

+ 65
- 33
services/ap/implments/CustDemandVerHead.service.impl.go View File

@ -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 {


Loading…
Cancel
Save