...
|
...
|
@@ -3,10 +3,12 @@ package service |
|
|
import (
|
|
|
"github.com/linmadan/egglib-go/core/application"
|
|
|
"github.com/linmadan/egglib-go/utils/tool_funs"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/adapter"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/evaluation_cycle/command"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/utils"
|
|
|
"strconv"
|
|
|
)
|
|
|
|
|
|
type EvaluationCycleService struct {
|
...
|
...
|
@@ -27,6 +29,7 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf |
|
|
transactionContext.RollbackTransaction()
|
|
|
}()
|
|
|
cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
|
|
|
// 检测名称重复
|
...
|
...
|
@@ -54,16 +57,30 @@ func (rs *EvaluationCycleService) Create(in *command.CreateCycleCommand) (interf |
|
|
CompanyId: in.CompanyId,
|
|
|
CreatorId: in.CreatorId,
|
|
|
KpiCycle: in.KpiCycle,
|
|
|
Templates: templates,
|
|
|
}
|
|
|
rule, err := cycleRepository.Insert(newCycle)
|
|
|
cycle, err := cycleRepository.Insert(newCycle)
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
|
|
|
for i := range templates {
|
|
|
v := templates[i]
|
|
|
cycleTemplate := &domain.EvaluationCycleTemplate{
|
|
|
Id: 0,
|
|
|
Name: v.Name,
|
|
|
Template: v,
|
|
|
CycleId: cycle.Id,
|
|
|
}
|
|
|
_, err := cycleTemplateRepository.Insert(cycleTemplate)
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if err := transactionContext.CommitTransaction(); err != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
|
|
|
}
|
|
|
return rule, nil
|
|
|
return cycle, nil
|
|
|
|
|
|
}
|
|
|
|
...
|
...
|
@@ -77,6 +94,7 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf |
|
|
}()
|
|
|
|
|
|
cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
|
|
|
// 检测名称重复(排除自己)
|
...
|
...
|
@@ -93,19 +111,58 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf |
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
|
|
|
_, templates, err := templateRepository.Find(map[string]interface{}{"companyId": in.CompanyId, "ids": in.TemplateIds})
|
|
|
_, oldCycleTemplates, err := cycleTemplateRepository.Find(map[string]interface{}{"cycleId": cycle.Id}, "template")
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
if len(templates) == 0 {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "模板不存在, 请重新选择")
|
|
|
|
|
|
// 当前周期的所有模板数据
|
|
|
oldTemplateMap := map[int64]*domain.EvaluationCycleTemplate{}
|
|
|
for i := range oldCycleTemplates {
|
|
|
oldTemplateMap[oldCycleTemplates[i].Id] = oldCycleTemplates[i]
|
|
|
}
|
|
|
// 拆离新旧模板Id
|
|
|
newTemplateIds := make([]int64, 0)
|
|
|
for i := range in.TemplateIds {
|
|
|
int64Id, _ := strconv.ParseInt(in.TemplateIds[i], 10, 64)
|
|
|
if _, ok := oldTemplateMap[int64Id]; ok {
|
|
|
delete(oldTemplateMap, int64Id) // 旧模板继续被引用
|
|
|
} else {
|
|
|
newTemplateIds = append(newTemplateIds, int64Id) // 增加新模板ID
|
|
|
}
|
|
|
}
|
|
|
// 旧模板未被引用,则进行删除处理
|
|
|
for k := range oldTemplateMap {
|
|
|
_, err := cycleTemplateRepository.Remove(oldTemplateMap[k])
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
}
|
|
|
// 增加新模板数据
|
|
|
if len(newTemplateIds) > 0 {
|
|
|
_, templates, err := templateRepository.Find(map[string]interface{}{"companyId": cycle.CompanyId, "ids": newTemplateIds})
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
for i := range templates {
|
|
|
v := templates[i]
|
|
|
cycleTemplate := &domain.EvaluationCycleTemplate{
|
|
|
Id: 0,
|
|
|
Name: v.Name,
|
|
|
Template: v,
|
|
|
CycleId: cycle.Id,
|
|
|
}
|
|
|
_, err := cycleTemplateRepository.Insert(cycleTemplate)
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
cycle.Name = in.Name
|
|
|
cycle.TimeStart = in.TimeStart
|
|
|
cycle.TimeEnd = in.TimeEnd
|
|
|
cycle.KpiCycle = in.KpiCycle
|
|
|
cycle.Templates = templates
|
|
|
|
|
|
cycle, err = cycleRepository.Insert(cycle)
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
...
|
...
|
@@ -126,11 +183,28 @@ func (rs *EvaluationCycleService) Get(in *command.GetCycleCommand) (interface{}, |
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
|
|
|
}
|
|
|
cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
|
|
|
cycle, err := cycleRepository.FindOne(map[string]interface{}{"id": in.Id})
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
return cycle, nil
|
|
|
|
|
|
_, cycleTemplates, err := cycleTemplateRepository.Find(map[string]interface{}{"cycleId": cycle.Id}, "template")
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
|
|
|
ctAdapter := &adapter.CycleTemplateAdapter{}
|
|
|
ctAdapter.EvaluationCycle = cycle
|
|
|
for i := range cycleTemplates {
|
|
|
ctAdapter.TemplateSimples = append(ctAdapter.TemplateSimples, &domain.TemplateSimple{
|
|
|
Id: cycleTemplates[i].Id,
|
|
|
Name: cycleTemplates[i].Name,
|
|
|
CreatedAt: cycleTemplates[i].CreatedAt,
|
|
|
})
|
|
|
}
|
|
|
return ctAdapter, nil
|
|
|
}
|
|
|
|
|
|
func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interface{}, error) {
|
...
|
...
|
@@ -143,6 +217,7 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf |
|
|
}()
|
|
|
|
|
|
cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
|
|
|
cycle, err := cycleRepository.FindOne(map[string]interface{}{"id": in.Id})
|
|
|
if err != nil {
|
...
|
...
|
@@ -152,6 +227,11 @@ func (rs *EvaluationCycleService) Remove(in *command.DeleteCycleCommand) (interf |
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
|
|
|
// FIXME 删除周期关联的所有模板... 还需要删除关联的定时内容
|
|
|
if err := cycleTemplateRepository.BatchDeleteByCycleId(cycle.Id); err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
|
|
|
if err := transactionContext.CommitTransaction(); err != nil {
|
|
|
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
|
|
|
}
|
...
|
...
|
@@ -167,8 +247,12 @@ func (rs *EvaluationCycleService) List(in *command.QueryCycleCommand) (interface |
|
|
transactionContext.RollbackTransaction()
|
|
|
}()
|
|
|
cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
|
|
|
inMap := tool_funs.SimpleStructToMap(in)
|
|
|
if len(in.Name) > 0 {
|
|
|
inMap["name"] = "%" + in.Name + "%"
|
|
|
}
|
|
|
// FIXME 总数量是否使用Count获取一个总数量
|
|
|
count, cycles, err := cycleRepository.Find(tool_funs.SimpleStructToMap(in), "templates")
|
|
|
count, cycles, err := cycleRepository.Find(inMap)
|
|
|
if err != nil {
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
...
|
...
|
|