// Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved. 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" ) /****************************************************************************** * * @Description : Project的默认查询条件 * * @Author : 代码生成器创建 * * @Date : 2021-10-08 09:45:06 * ******************************************************************************/ var DefaultConditionOfProject = grmi.NewCondition( map[string]grmi.ConditionItem{ meta.Project_ProjectId.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectId, grmi.Equal, true), meta.Project_Descr.UrlParameterName: grmi.NewConditionItem(meta.Project_Descr, grmi.Equal, false), meta.Project_CustomerId.UrlParameterName: grmi.NewConditionItem(meta.Project_CustomerId, grmi.Equal, false), meta.Project_SOP.UrlParameterName: grmi.NewConditionItem(meta.Project_SOP, grmi.Approximate, false), meta.Project_EOP.UrlParameterName: grmi.NewConditionItem(meta.Project_EOP, grmi.Approximate, false), meta.Project_ProjectDate1.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate1, grmi.Approximate, false), meta.Project_ProjectDate2.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate2, grmi.Approximate, false), meta.Project_ProjectDate3.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate3, grmi.Approximate, false), meta.Project_ProjectDate4.UrlParameterName: grmi.NewConditionItem(meta.Project_ProjectDate4, grmi.Approximate, false), meta.Project_AlertDaysBeforeEOP.UrlParameterName: grmi.NewConditionItem(meta.Project_AlertDaysBeforeEOP, grmi.Equal, false), meta.Project_CtrlPara1.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlPara1, grmi.Equal, false), meta.Project_CtrlPara2.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlPara2, grmi.Equal, false), meta.Project_CtrlStr1.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlStr1, grmi.Equal, false), meta.Project_CtrlStr2.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlStr2, grmi.Equal, false), meta.Project_CtrlTime1.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlTime1, grmi.Approximate, false), meta.Project_CtrlTime2.UrlParameterName: grmi.NewConditionItem(meta.Project_CtrlTime2, grmi.Approximate, false), meta.Project_LastModify.UrlParameterName: grmi.NewConditionItem(meta.Project_LastModify, grmi.Approximate, false), meta.Project_LastUser.UrlParameterName: grmi.NewConditionItem(meta.Project_LastUser, grmi.Equal, false), meta.Project_CreateTime.UrlParameterName: grmi.NewConditionItem(meta.Project_CreateTime, grmi.Approximate, false), }, nil, ) /****************************************************************************** * * @Description : Project的默认分页查询条件 * * @Author : 代码生成器创建 * * @Date : 2021-10-08 09:45:06 * ******************************************************************************/ var DefaultConditionOfProjectAndPaging = grmi.NewCondition( DefaultConditionOfProject.Items, grmi.NewPaging(), ) /****************************************************************************** * * @Struct Name : ProjectServiceImplement *----------------------------------------------------------------------------- * * @Description : Project的服务实现 * * @Author : 代码生成器创建 * * @Date : 2021-10-08 09:45:06 * ******************************************************************************/ type ProjectServiceImplement struct { } /****************************************************************************** * * @Function Name : NewProjectDAOImplement *----------------------------------------------------------------------------- * * @Description : 创建一个ProjectDAOImplement实例 * * @Return Value : ProjectDAOImplement实例 * * @Author : 代码生成器创建 * * @Date : 2021-10-08 09:45:06 * ******************************************************************************/ func NewProjectServiceImplement() *ProjectServiceImplement { return &ProjectServiceImplement{} } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.InsertOne * ******************************************************************************/ func (impl *ProjectServiceImplement) InsertOne(user *global.User, entity *model.Project) error { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "InsertOneProject", "插入一个Project") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) record, err := dao.SelectOne(entity.ProjectId) if err != nil { return err } if record != nil { return grmi.NewBusinessError("已经存在相同主键的记录!") } err = dao.InsertOne(entity) if err != nil { return err } return nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.DeleteOne * ******************************************************************************/ func (impl *ProjectServiceImplement) DeleteOne(user *global.User, projectId string) error { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "DeleteOneProject", "删除一个Project") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) record, err := dao.SelectOne(projectId) if err != nil { return err } if record == nil { return grmi.NewBusinessError("不存在指定记录!") } err = dao.DeleteOne(projectId) if err != nil { return err } return nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.SelectOne * ******************************************************************************/ func (impl *ProjectServiceImplement) SelectOne(user *global.User, projectId string) (*model.Project, error) { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "SelectOneProject", "查询一个Project") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) result, err := dao.SelectOne(projectId) if err != nil { return nil, err } return result, nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.UpdateOne * ******************************************************************************/ func (impl *ProjectServiceImplement) UpdateOne(user *global.User, entity *model.Project) error { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "UpdateOneProject", "修改一个Project") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) record, err := dao.SelectOne(entity.ProjectId) if err != nil { return err } if record == nil { return grmi.NewBusinessError("不存在指定记录!") } err = dao.UpdateOne(entity) if err != nil { return err } return nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Insert * ******************************************************************************/ func (impl *ProjectServiceImplement) Insert(user *global.User, entities *[]model.Project) error { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "InsertProject", "插入多个Project") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) for _, entity := range *entities { record, err := dao.SelectOne(entity.ProjectId) if err != nil { return err } if record != nil { return grmi.NewBusinessError("已经存在相同主键的记录!") } } err := dao.Insert(entities) if err != nil { return err } return nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Delete * ******************************************************************************/ func (impl *ProjectServiceImplement) Delete(user *global.User, entities *[]model.Project) error { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "DeleteProject", "删除多个Project") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) for _, entity := range *entities { record, err := dao.SelectOne(entity.ProjectId) if err != nil { return err } if record == nil { return grmi.NewBusinessError("不存在指定记录!") } } err := dao.Delete(entities) if err != nil { return err } return nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Select * ******************************************************************************/ func (impl *ProjectServiceImplement) Select(user *global.User, urlParameters map[string]string) ([]model.Project, error) { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "SelectProject", "查询Project") condition := DefaultConditionOfProjectAndPaging engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() predicates, err := condition.BuildPredicates(urlParameters) if err != nil { return nil, err } dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) result, err := dao.Select(predicates, condition.OrderByFields) if err != nil { return nil, err } return result, nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.SelectAndPaging * ******************************************************************************/ func (impl *ProjectServiceImplement) SelectAndPaging(user *global.User, urlParameters map[string]string) (grmi.PagingResult, error) { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "SelectProject", "查询Project") condition := DefaultConditionOfProjectAndPaging engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() predicates, err := condition.BuildPredicates(urlParameters) if err != nil { return grmi.EmptyPagingResult, err } dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) condition.Fill(urlParameters) result, err := dao.SelectAndPaging(condition.Paging, predicates, condition.OrderByFields) if err != nil { return grmi.EmptyPagingResult, err } return result, nil } /****************************************************************************** * * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/ProjectService.Update * ******************************************************************************/ func (impl *ProjectServiceImplement) Update(user *global.User, entities *[]model.Project) error { grmi.Log(user, "/services/me/implments/Project.service.impl.go", "UpdateProject", "修改多个Project") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() dao := dal.NewProjectDAO(session, user.PlantNr, user.UserId) for _, entity := range *entities { record, err := dao.SelectOne(entity.ProjectId) if err != nil { return err } if record == nil { return grmi.NewBusinessError("不存在指定记录!") } } err := dao.Update(entities) if err != nil { return err } 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 }