diff --git a/dao/base/Article.dao.go b/dao/base/Article.dao.go index d6f9d1a..506e756 100644 --- a/dao/base/Article.dao.go +++ b/dao/base/Article.dao.go @@ -253,6 +253,21 @@ type ArticleDAO interface { * ******************************************************************************/ SelectArtData(artId string, opotionId string) ([]model.Article, error) + /****************************************************************************** + * + * @Function Name : SelectOneByFMaterialId + *----------------------------------------------------------------------------- + * + * @Description : 根据FMaterialId查询数据 + * + * @Return Value : 执行时发生的错误 + * + * @Author : 代码生成器创建 + * + * @Date : 2021-08-20 11:11:05 + * + ******************************************************************************/ + SelectOneByFMaterialId(FMaterialId string) (data *model.Article,err error) } /****************************************************************************** diff --git a/dao/base/Customer.dao.go b/dao/base/Customer.dao.go index 0606007..fa56d90 100644 --- a/dao/base/Customer.dao.go +++ b/dao/base/Customer.dao.go @@ -238,6 +238,25 @@ type CustomerDAO interface { * ******************************************************************************/ SelectTree(CustomerIds []string) ([]model.Customer, error) + /****************************************************************************** + * + * @Function Name : SelectOne + *----------------------------------------------------------------------------- + * + * @Description : 查找指定键的Customer + * + * @Function Parameters : 主键 + * + * @Return Value : 查找到的Customer + * + * @Return Value : 执行时发生的错误 + * + * @Author : 代码生成器创建 + * + * @Date : 2021-08-20 11:11:05 + * + ******************************************************************************/ + SelectOneByFcustId(string) (*model.Customer, error) } /****************************************************************************** diff --git a/dao/base/implments/Article.dao.impl.go b/dao/base/implments/Article.dao.impl.go index fac1dc2..cd6523f 100644 --- a/dao/base/implments/Article.dao.impl.go +++ b/dao/base/implments/Article.dao.impl.go @@ -366,3 +366,23 @@ func (impl *ArticleDAOImplement) SelectArtData(artId string, opotionId string) ( } return data, nil } + +/****************************************************************************** + * + * @Reference leit.com/LAPP_SZDQ_BACKEND/dao/base/CustomerDAO.SelectOneByFMaterialId + * + ******************************************************************************/ +func (impl *ArticleDAOImplement) SelectOneByFMaterialId(FMaterialId string) (data *model.Article,err error) { + + session := impl.session.Table(impl.meta.TableName) + + session.Where("PlantNr = ? and FMaterialId = ?", impl.plantNr, FMaterialId) + ok,err := session.Get(&data) + if err != nil { + return nil, grmi.NewDataBaseError(err) + } + if !ok { + return nil, nil + } + return data, nil +} \ No newline at end of file diff --git a/dao/base/implments/Customer.dao.impl.go b/dao/base/implments/Customer.dao.impl.go index dda95d8..7c57768 100644 --- a/dao/base/implments/Customer.dao.impl.go +++ b/dao/base/implments/Customer.dao.impl.go @@ -326,3 +326,25 @@ func (impl *CustomerDAOImplement) SelectTree(CustomerIds []string) ([]model.Cust } return data, nil } + + +/****************************************************************************** + * + * @Reference leit.com/LAPP_SZDQ_BACKEND/dao/base/CustomerDAO.SelectOneByFcustId + * + ******************************************************************************/ +func (impl *CustomerDAOImplement) SelectOneByFcustId(fcustId string) (data *model.Customer,err error) { + + session := impl.session.Table(impl.meta.TableName) + + session.Where("PlantNr = ? and FcustId = ?", impl.plantNr, fcustId) + session = session.OrderBy(meta.Customer_PlantNr.ColumnName) + ok,err := session.Get(&data) + if err != nil { + return nil, grmi.NewDataBaseError(err) + } + if !ok { + return nil, nil + } + return data, nil +} \ No newline at end of file diff --git a/services/ap/CustArtlst.service.go b/services/ap/CustArtlst.service.go index badf477..35a831b 100644 --- a/services/ap/CustArtlst.service.go +++ b/services/ap/CustArtlst.service.go @@ -206,6 +206,25 @@ type CustArtlstService interface { Update(*global.User, *[]model.CustArtlst) error Search(*global.User, map[string]string) ([]model_base.CustomerLable, error) + /****************************************************************************** + * + * @Function Name : ImportCustArtlst + *----------------------------------------------------------------------------- + * + * @Description : 导入客户物料对应表 + * + * @Function Parameters : 当前访问人员信息 + * + * @Function Parameters : 需要修改的CustArtlst列表 + * + * @Return Value : 执行时发生的错误 + * + * @Author : 代码生成器创建 + * + * @Date : 2021-08-20 11:11:05 + * + ******************************************************************************/ + ImportCustArtlst(string, [][]interface{}) error } /****************************************************************************** diff --git a/services/ap/CustDemandVerHead.service.go b/services/ap/CustDemandVerHead.service.go index abe6fe2..4ba1e4e 100644 --- a/services/ap/CustDemandVerHead.service.go +++ b/services/ap/CustDemandVerHead.service.go @@ -399,6 +399,25 @@ type CustDemandVerHeadService interface { SelectVersionList(*global.User, map[string]string) ([]string, error) SelectVersionCustomerList(*global.User, map[string]string) ([]model.VersionCustomer, error) + /****************************************************************************** + * + * @Function Name : ImportDeviationAnalysis + *----------------------------------------------------------------------------- + * + * @Description : 多版本比较导出 + * + * @Function Parameters : customerId 客户编号 + * + * @Function Parameters : versionId 版本号 + * + * @Return Value : 执行时发生的错误 + * + * @Author : 代码生成器创建 + * + * @Date : 2021-08-20 11:11:05 + * + ******************************************************************************/ + ImportDeviationAnalysis(user *global.User, searchType string, customerId string, versionId string) (*model.CustomerDeviation, error) } /****************************************************************************** diff --git a/services/ap/implments/CustArtlst.service.impl.go b/services/ap/implments/CustArtlst.service.impl.go index f261713..0245a6f 100644 --- a/services/ap/implments/CustArtlst.service.impl.go +++ b/services/ap/implments/CustArtlst.service.impl.go @@ -3,6 +3,7 @@ package implments import ( + "errors" dal "leit.com/LAPP_CHEERSSON_BACKEND/dao/ap" dal_base "leit.com/LAPP_CHEERSSON_BACKEND/dao/base" "leit.com/LAPP_CHEERSSON_BACKEND/db" @@ -12,7 +13,9 @@ import ( meta_base "leit.com/LAPP_CHEERSSON_BACKEND/meta/base" model "leit.com/LAPP_CHEERSSON_BACKEND/models/ap" model_base "leit.com/LAPP_CHEERSSON_BACKEND/models/base" + "leit.com/LAPP_CHEERSSON_BACKEND/utils" utilService "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/service" + "strings" ) /****************************************************************************** @@ -565,3 +568,85 @@ func (impl *CustArtlstServiceImplement) CustArtStockErp(user *global.User, urlPa } var alldata_CustArtlstDemo []model.CustArtlstDemo + +/****************************************************************************** + * + * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/ap/CustDemandVerHeadService.ImportCustArtlst + * + ******************************************************************************/ +func (impl *CustArtlstServiceImplement) ImportCustArtlst(FieldKeysStr string, listData [][]interface{}) error { + + engine := db.Eloquent.Master() + session := engine.NewSession() + defer func() { //在panic前声明defer,能捕获异常 + if err := recover(); err != nil { + session.Rollback() + + } + }() + _ = session.Begin() + defer session.Close() + + dao := dal.NewCustArtlstDAO(session, model_base.PlantNr, "System") + custDao := dal_base.NewCustomerDAO(session, model_base.PlantNr, "System") + artDao := dal_base.NewArticleDAO(session, model_base.PlantNr, "System") + FieldKeys := strings.Split(FieldKeysStr, ",") + if len(listData) == 0 { + return errors.New("同步数据为空!") + } + //第一步,先处理数据,按照客户分类 + resultMap := make(map[string][]map[string]interface{}) + for _, valData := range listData { + valMap := make(map[string]interface{}) + for k, val := range valData { + key := FieldKeys[k] + valMap[key] = val + } + resultKey := utils.ValueToString(valMap["FCustomerId"], "") + resultMap[resultKey] = append(resultMap[resultKey], valMap) + + } + + for customerId, vals := range resultMap { + //查询客户信息 + custInfo, err := custDao.SelectOneByFcustId(customerId) + if err != nil { + return err + } + if custInfo == nil { + return errors.New("客户信息不存在!") + } + //第二步,删除客户维护关系 + err = dao.DeleteWhere([]grmi.Predicate{meta.CustArtlst_CustomerId.NewPredicate(grmi.Equal, custInfo.CustomerId)}) + if err != nil { + return err + } + + //第三步,添加客户物料 + for _, v := range vals { + status := utils.ValueToString(v["FDocumentStatus"], "") + if status != "C" { + continue + } + artInfo, err := artDao.SelectOneByFMaterialId(utils.ValueToString(v["FMaterialId"], "")) + if err != nil { + return err + } + if artInfo == nil { + return errors.New("物料信息不存在!") + } + oneData := new(model.CustArtlst) + oneData.PlantNr = model_base.PlantNr + oneData.CustomerId = custInfo.CustomerId + oneData.ArtId = artInfo.ArtId + oneData.Descr1 = utils.ValueToString(v["FCustMatName"], "") + err = dao.InsertOne(oneData) + if err != nil { + return err + } + } + } + + session.Commit() + return nil +} \ No newline at end of file diff --git a/services/ap/implments/CustDemandVerHead.service.impl.go b/services/ap/implments/CustDemandVerHead.service.impl.go index 3a8a86a..98cac83 100644 --- a/services/ap/implments/CustDemandVerHead.service.impl.go +++ b/services/ap/implments/CustDemandVerHead.service.impl.go @@ -2037,3 +2037,256 @@ func (impl *CustDemandVerHeadServiceImplement) ExportCompareVersionInfoByArtcle( err = file.Save(excelfile) return filename, nil } + +/****************************************************************************** + * + * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/ap/CustDemandVerHeadService.ImportDeviationAnalysis + * + ******************************************************************************/ +func (impl *CustDemandVerHeadServiceImplement) ImportDeviationAnalysis(user *global.User, searchType string, customerId string, versionId string) (*model.CustomerDeviation, error) { + + grmi.Log(user, "/services/ap/implments/CustDemandVerHead.service.impl.go", "CompareVersion", "多版本比较") + + engine := db.Eloquent.Master() + session := engine.NewSession() + defer session.Close() + detailDao := dal.NewCustDemandVerDetailDAO(session, user.PlantNr, user.UserId) + custDao := basedal.NewCustomerDAO(session, user.PlantNr, user.UserId) + artListDao := dal.NewCustArtlstDAO(session, user.PlantNr, user.UserId) + result := new(model.CustomerDeviation) + data := make([]model.CustomerDeviationDetailItem, 0) + perData := model.PerCustomerDeviationDetailItem{} + var versionIds []string + if len(versionId) > 0 { + versionIds = strings.Split(strings.TrimSpace(versionId), ",") + } + if len(versionIds) == 0 { + return nil, grmi.NewBusinessError("版本不存在!") + } + + mDao := dal.NewCustDemandModelDAO(session, user.PlantNr, user.UserId) + tolDao := dal.NewDemandToleranceModelDAO(session, user.PlantNr, user.UserId) + record, err := custDao.SelectOne(customerId) + if err != nil { + return nil, err + } + if record == nil { + return nil, grmi.NewBusinessError("不存在指定记录!") + } + //第一步:查询对应的模型 + mInfo, err := mDao.SelectOne(record.DemandModelId) + if err != nil { + return nil, err + } + //查询变差类型 + tInfo, err := tolDao.SelectOneByCustomerId(record.CustomerId) + if err != nil { + return nil, err + } + if tInfo == nil { + return nil, grmi.NewBusinessError("偏差模型不能为空!") + } + //数据长度:保存多少周的数据 + lenData := mInfo.DemandWeeks + //第一步:根据时间模型,计算当前周的起始位置 + //计算当天是周几, + year, month, day := time.Now().Date() + firstWeek := utils.ZellerFunction2Week(uint16(year), uint16(month), uint16(day)) + dayLen := mInfo.WeekDemandDay - firstWeek + nowDate := utils.TimeFormat(time.Now().AddDate(0, 0, dayLen), "yyyy-MM-dd") + + //查询客户对应的物料主数据 + artIds, err := artListDao.Select([]grmi.Predicate{meta.CustArtlst_CustomerId.NewPredicate(grmi.Equal, customerId)}, nil) + if err != nil { + return nil, err + } + for _, info := range artIds { + detailData, err := detailDao.SelectDeviation(customerId, versionIds, info.ArtId, nowDate) + if err != nil { + return nil, err + } + //第二步:按照条件收索,构建数组 + mapDetailData := make(map[string][]model.CustDemandVerDetail) + //1.先按版本分类 + for _, v := range detailData { + key := v.CustomerId + "_" + v.VersionId + mapDetailData[key] = append(mapDetailData[key], v) + } + if len(versionIds) == 1 && searchType == "seq" { + //第二步: 查询对应的需求数量,如果长度不够,用0补齐 + for k, details := range mapDetailData { + temLen := 0 + var allWeeks []string + var temDemandDate time.Time + info := strings.Split(k, "_") + one := model.CustomerDeviationDetailItem{} + one.CustomerId = info[0] + one.VersionId = info[1] + one.PeriodOnPeriodUpperLimit = tInfo.PeriodOnPeriodUpperLimit + one.PeriodOverPeriodLowerLimit = tInfo.PeriodOverPeriodLowerLimit + + perOne := model.PerCustomerDeviationDetailItem{} + perOne.CustomerId = info[0] + perOne.VersionId = info[1] + perOne.PeriodOnPeriodUpperLimit = tInfo.PeriodOnPeriodUpperLimit + perOne.PeriodOverPeriodLowerLimit = tInfo.PeriodOverPeriodLowerLimit + + mapWeeks := make(map[string]int) + for _, vv := range details { + if temLen > lenData { + continue + } + key := utils.ValueToString(vv.DemandYear, "") + "." + utils.ValueToString(vv.DemandWeek, "") + val, ok := mapWeeks[key] + if !ok { + temLen++ + mapWeeks[key] = utils.ValueToInt(vv.DemandQty, 0) + allWeeks = append(allWeeks, key) + } else { + mapWeeks[key] = val + utils.ValueToInt(vv.DemandQty, 0) + } + weekDate, err := time.Parse("2006-01-02", vv.DemandDate.ToString()) + if err != nil { + return nil, err + } + temDemandDate = weekDate + } + + //不足的周,用空位补齐 + lenInfo := lenData - temLen + if lenInfo > 0 { + for k := 0; k < lenInfo; k++ { + weekDate := temDemandDate.AddDate(0, 0, 7*(k+1)) + year, _, _ := weekDate.Date() + week := utils.WeekByDate(weekDate) + key := utils.ValueToString(year, "") + "." + utils.ValueToString(week, "") + allWeeks = append(allWeeks, key) + } + } + pevNum := 0 + items := make(map[string]int, 0) + peritems := make(map[string]float64, 0) + //排序 + sort.Strings(allWeeks) + for kkk, vvv := range allWeeks { + key := vvv + val, ok := mapWeeks[key] + if ok { + if kkk == 0 { + pevNum = val + } + items[key] = val + if pevNum == 0 { + peritems[key] = 0 + } else { + num := (float64(val) - float64(pevNum)) / float64(pevNum) + peritems[key] = utils.Decimal(num*100, 2) + } + pevNum = val + } else { + items[key] = 0 + peritems[key] = 0 + pevNum = 0 + } + } + one.Item = items + one.SortKeys = allWeeks + data = append(data, one) + perOne.Item = peritems + perOne.SortKeys = allWeeks + perData = perOne + } + } else { + if len(versionIds) != 2 { + return result, errors.New("请选择两个版本比较!") + } + //第二步: 查询对应的需求数量,如果长度不够,用0补齐 + for k, details := range mapDetailData { + temLen := 0 + var allWeeks []string + var temDemandDate time.Time + info := strings.Split(k, "_") + one := model.CustomerDeviationDetailItem{} + one.CustomerId = info[0] + one.VersionId = info[1] + one.PeriodOnPeriodUpperLimit = tInfo.PeriodOnPeriodUpperLimit + one.PeriodOverPeriodLowerLimit = tInfo.PeriodOverPeriodLowerLimit + + mapWeeks := make(map[string]int) + for _, vv := range details { + if temLen > lenData { + continue + } + key := utils.ValueToString(vv.DemandYear, "") + "." + utils.ValueToString(vv.DemandWeek, "") + val, ok := mapWeeks[key] + if !ok { + temLen++ + mapWeeks[key] = utils.ValueToInt(vv.DemandQty, 0) + allWeeks = append(allWeeks, key) + } else { + mapWeeks[key] = val + utils.ValueToInt(vv.DemandQty, 0) + } + weekDate, err := time.Parse("2006-01-02", vv.DemandDate.ToString()) + if err != nil { + return nil, err + } + temDemandDate = weekDate + } + + //不足的周,用空位补齐 + lenInfo := lenData - temLen + if lenInfo > 0 { + for k := 0; k < lenInfo; k++ { + weekDate := temDemandDate.AddDate(0, 0, 7*(k+1)) + year, _, _ := weekDate.Date() + week := utils.WeekByDate(weekDate) + key := utils.ValueToString(year, "") + "." + utils.ValueToString(week, "") + allWeeks = append(allWeeks, key) + } + } + items := make(map[string]int, 0) + //排序 + sort.Strings(allWeeks) + for _, vvv := range allWeeks { + key := vvv + val, ok := mapWeeks[key] + if ok { + items[key] = val + } else { + items[key] = 0 + } + } + one.Item = items + one.SortKeys = allWeeks + data = append(data, one) + } + perData.SortKeys = data[0].SortKeys + perData.PeriodOverPeriodLowerLimit = data[0].PeriodOverPeriodLowerLimit + perData.PeriodOnPeriodUpperLimit = data[0].PeriodOnPeriodUpperLimit + + itemMap1 := data[0].Item + itemMap2 := data[1].Item + ItemMap := make(map[string]float64) + for _, vvvv := range perData.SortKeys { + key := vvvv + val1, ok1 := itemMap1[key] + + val2, ok2 := itemMap2[key] + if !ok1 || !ok2 { + ItemMap[key] = 0 + } + if val1 == 0 { + ItemMap[key] = 0 + } else { + num := (float64(val2) - float64(val1)) / float64(val1) + ItemMap[key] = utils.Decimal(num*100, 2) + } + } + perData.Item = ItemMap + } + } + + result.CustomerDeviationDetailItem = data + result.PerCustomerDeviationDetailItem = append(result.PerCustomerDeviationDetailItem, perData) + return result, nil +} diff --git a/services/me/Project.service.go b/services/me/Project.service.go index 0aad09c..e6e6a54 100644 --- a/services/me/Project.service.go +++ b/services/me/Project.service.go @@ -195,6 +195,25 @@ type ProjectService interface { * ******************************************************************************/ Update(*global.User, *[]model.Project) error + /****************************************************************************** + * + * @Function Name : ImportProject + *----------------------------------------------------------------------------- + * + * @Description : 同步项目 + * + * @Function Parameters : 当前访问人员信息 + * + * @Function Parameters : 需要修改的Project列表 + * + * @Return Value : 执行时发生的错误 + * + * @Author : 代码生成器创建 + * + * @Date : 2021-10-08 09:45:06 + * + ******************************************************************************/ + ImportProject(FieldKeysStr string, listData [][]interface{}) error } /****************************************************************************** diff --git a/services/me/implments/Project.service.impl.go b/services/me/implments/Project.service.impl.go index 9258fa0..e80769b 100644 --- a/services/me/implments/Project.service.impl.go +++ b/services/me/implments/Project.service.impl.go @@ -3,12 +3,16 @@ package implments import ( + "errors" dal "leit.com/LAPP_CHEERSSON_BACKEND/dao/me" "leit.com/LAPP_CHEERSSON_BACKEND/db" "leit.com/LAPP_CHEERSSON_BACKEND/global" "leit.com/LAPP_CHEERSSON_BACKEND/grmi" meta "leit.com/LAPP_CHEERSSON_BACKEND/meta/me" + model_base "leit.com/LAPP_CHEERSSON_BACKEND/models/base" model "leit.com/LAPP_CHEERSSON_BACKEND/models/me" + "leit.com/LAPP_CHEERSSON_BACKEND/utils" + "strings" ) /****************************************************************************** @@ -336,3 +340,59 @@ func (impl *ProjectServiceImplement) Update(user *global.User, entities *[]model } return nil } +/****************************************************************************** + * + * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/ap/CustDemandVerHeadService.ImportProject + * + ******************************************************************************/ +func (impl *ProjectServiceImplement) ImportProject(FieldKeysStr string, listData [][]interface{}) error { + + engine := db.Eloquent.Master() + session := engine.NewSession() + defer func() { //在panic前声明defer,能捕获异常 + if err := recover(); err != nil { + session.Rollback() + + } + }() + _ = session.Begin() + defer session.Close() + + dao := dal.NewProjectDAO(session, model_base.PlantNr, "System") + + FieldKeys := strings.Split(FieldKeysStr, ",") + if len(listData) == 0 { + return errors.New("同步数据为空!") + } + //第一步,先处理数据,按照客户分类 + for _, valData := range listData { + valMap := make(map[string]interface{}) + for k, val := range valData { + key := FieldKeys[k] + valMap[key] = val + } + projectId := utils.ValueToString(valMap["FNumber"],"") + //第二步,删除客户维护关系 + err := dao.DeleteWhere([]grmi.Predicate{meta.Project_ProjectId.NewPredicate(grmi.Equal, projectId)}) + if err != nil { + return err + } + status := utils.ValueToString(valMap["FDocumentStatus"], "") + if status != "C"{ + continue + } + //第三步,添加客户物料 + oneData := new(model.Project) + oneData.PlantNr = model_base.PlantNr + oneData.ProjectId = projectId + oneData.Descr = utils.ValueToString(valMap["FName"], "") + err = dao.InsertOne(oneData) + if err != nil { + return err + } + + } + + session.Commit() + return nil +} \ No newline at end of file diff --git a/task/k3cloud.go b/task/k3cloud.go index ecc2b3c..41d8e63 100644 --- a/task/k3cloud.go +++ b/task/k3cloud.go @@ -3,6 +3,7 @@ package task import ( svr "leit.com/LAPP_CHEERSSON_BACKEND/services/base" svrMe "leit.com/LAPP_CHEERSSON_BACKEND/services/me" + svrAp "leit.com/LAPP_CHEERSSON_BACKEND/services/ap" "leit.com/LAPP_CHEERSSON_BACKEND/utils" utilService "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/service" "math" @@ -19,6 +20,8 @@ var serviceOfBomList = svrMe.NewBomLstService() var serviceOfCustomer = svr.NewCustomerService() var serviceOfSaleOrder = svr.NewSalesOrderService() var serviceOfStdef = svr.NewStdefService() +var serviceOfCustArtlst = svrAp.NewCustArtlstService() +var serviceOfProject = svrMe.NewProjectService() func TaskInit() { utils.K3configTestInit() @@ -110,7 +113,19 @@ func importMaterialGroupSearch() { } return } +//客户物料对应表 +func importCustomerMaterialSearch() { + svrCust := utilService.CustomerMaterialInit() + response := svrCust.CustomerMaterialSearch("", "") + serviceOfCustArtlst.ImportCustArtlst(svrCust.FieldKeys, response) +} +//客户物料对应表 +func ImportProjectSearch() { + svrProject := utilService.ProjectInit() + response := svrProject.ProjectSearch("", "") + serviceOfProject.ImportProject(svrProject.FieldKeys, response) +} //DaysBetweenDates 返回前后两个日期共包含多少天 func DaysBetweenDates(startDate, endDate time.Time) int { return int(math.Floor(math.Abs(endDate.Sub(startDate).Hours()/24))) + 1 diff --git a/utils/k3cloud/service/cust_material.go b/utils/k3cloud/service/cust_material.go new file mode 100644 index 0000000..c4cb9bb --- /dev/null +++ b/utils/k3cloud/service/cust_material.go @@ -0,0 +1,58 @@ +package service + +import ( + "leit.com/LAPP_CHEERSSON_BACKEND/utils" + request2 "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/struct/request" +) + +type CustomerMaterialService struct { + *utils.K3config + FormID string + FieldKeys string + FUseOrgKey string +} + +func CustomerMaterialInit() *CustomerMaterialService { + cust := &CustomerMaterialService{ + K3config: utils.K3Obj, + FormID: "SAL_CustMatMapping", + FieldKeys: "FBillNo,FDocumentStatus,FCustomerId,FName,FIsOldVersion,FIsMultiple,FCustMatNo,FMaterialId,FCustMatName,FEffective", + FUseOrgKey: "", + } + return cust +} + +//客户物料对应表 +func (_this *CustomerMaterialService) CustomerMaterialSearch(FilterString, OrderString string) [][]interface{} { + var data [][]interface{} + if FilterString != "" { + FilterString = _this.FUseOrgKey + " And " + FilterString + } else { + FilterString = _this.FUseOrgKey + } + request := request2.SearchRequest{ + Formid: _this.FormID, + FieldKeys: _this.FieldKeys, + FilterString: FilterString, + OrderString: OrderString, + TopRowCount: 0, + StartRow: 0, + Limit: 1000, + } + + for true { + response, err := _this.SearchApi(_this.FormID, request) + if err != nil { + return data + } + for _, v := range response { + data = append(data, v) + } + if len(response) == request.Limit { + request.StartRow = request.StartRow + request.Limit + } else { + break + } + } + return data +} diff --git a/utils/k3cloud/service/me_project.go b/utils/k3cloud/service/me_project.go new file mode 100644 index 0000000..9d13b90 --- /dev/null +++ b/utils/k3cloud/service/me_project.go @@ -0,0 +1,57 @@ +package service + +import ( + "leit.com/LAPP_CHEERSSON_BACKEND/utils" + utils2 "leit.com/LAPP_CHEERSSON_BACKEND/utils" + request2 "leit.com/LAPP_CHEERSSON_BACKEND/utils/k3cloud/struct/request" +) + +type ProjectService struct { + *utils.K3config + FormID string + FieldKeys string + FUseOrgKey string +} + +func ProjectInit() *ProjectService { + cust := &ProjectService{ + K3config: utils2.K3Obj, + FormID: "PLM_STD_PRJ_WORKCALTEMP", + FieldKeys: "FDocumentStatus,FForbidStatus,FName,FNumber,FDescription", + } + return cust +} + +func (_this *ProjectService) ProjectSearch(FilterString, OrderString string) [][]interface{} { + var data [][]interface{} + if FilterString != "" { + FilterString = _this.FUseOrgKey + " And " + FilterString + } else { + FilterString = _this.FUseOrgKey + } + request := request2.SearchRequest{ + Formid: _this.FormID, + FieldKeys: _this.FieldKeys, + FilterString: FilterString, + OrderString: OrderString, + TopRowCount: 0, + StartRow: 0, + Limit: 1000, + } + + for true { + response, err := _this.SearchApi(_this.FormID, request) + if err != nil { + return data + } + for _, v := range response { + data = append(data, v) + } + if len(response) == request.Limit { + request.StartRow = request.StartRow + request.Limit + } else { + break + } + } + return data +} \ No newline at end of file