作者 Your Name

数据修复脚本

@@ -922,3 +922,65 @@ func (srv StaffAssessServeice) SelectAssessInviteUserV2(param *query.SelectAsses @@ -922,3 +922,65 @@ func (srv StaffAssessServeice) SelectAssessInviteUserV2(param *query.SelectAsses
922 } 922 }
923 return tool_funs.SimpleWrapGridMap(int64(cnt), listData), nil 923 return tool_funs.SimpleWrapGridMap(int64(cnt), listData), nil
924 } 924 }
  925 +
  926 +// 获取未完成的员工评估内容
  927 +// func (srv StaffAssessServeice) getAssessInfoUncompletedV2(transactionContext application.TransactionContext,
  928 +// assess *domain.StaffAssess) ([]*domain.StaffAssessContent, error) {
  929 +// evaluationItemRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{
  930 +// "transactionContext": transactionContext,
  931 +// })
  932 +// var evaluationItemList []*domain.EvaluationItemUsed
  933 +// var err error
  934 +// _, evaluationItemList, err = evaluationItemRepo.Find(map[string]interface{}{
  935 +// "evaluationProjectId": assess.EvaluationProjectId,
  936 +// "nodeId": assess.LinkNodeId,
  937 +// })
  938 +// if err != nil {
  939 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取项目填写内容"+err.Error())
  940 +// }
  941 +// if len(evaluationItemList) == 0 {
  942 +// //如果当前节点没有评估内容,就去 使用自评节点的评估内容
  943 +// _, evaluationItemList, err = evaluationItemRepo.Find(map[string]interface{}{
  944 +// "evaluationProjectId": assess.EvaluationProjectId,
  945 +// "nodeType": domain.LinkNodeSelfAssessment,
  946 +// })
  947 +// if err != nil {
  948 +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取自评项目填写内容"+err.Error())
  949 +// }
  950 +// }
  951 +// var contentList []*domain.StaffAssessContent
  952 +// nowTime := time.Now()
  953 +// for i, v := range evaluationItemList {
  954 +// item := &domain.StaffAssessContent{
  955 +// Id: 0,
  956 +// StaffAssessId: assess.Id,
  957 +// SortBy: i + 1,
  958 +// Category: v.Category,
  959 +// Name: v.Name,
  960 +// PromptTitle: v.PromptTitle,
  961 +// PromptText: v.PromptText,
  962 +// Remark: nil,
  963 +// Value: "",
  964 +// ReteResult: "",
  965 +// CreatedAt: nowTime,
  966 +// Weight: v.Weight,
  967 +// Required: v.Required,
  968 +// UpdatedAt: nowTime,
  969 +// DeletedAt: nil,
  970 +// Rule: v.Rule,
  971 +// }
  972 +// var remarks []domain.AssessContemtRemark
  973 +// for _, vv := range v.EntryItems {
  974 +// ritem := domain.AssessContemtRemark{
  975 +// Title: vv.Title,
  976 +// HintText: vv.HintText,
  977 +// Definition: vv.Definition,
  978 +// RemarkText: "",
  979 +// }
  980 +// remarks = append(remarks, ritem)
  981 +// }
  982 +// item.Remark = remarks
  983 +// contentList = append(contentList, item)
  984 +// }
  985 +// return contentList, nil
  986 +// }
@@ -93,6 +93,10 @@ func (repo *EvaluationItemUsedRepository) Find(queryOptions map[string]interface @@ -93,6 +93,10 @@ func (repo *EvaluationItemUsedRepository) Find(queryOptions map[string]interface
93 query.Where("node_type=?", v) 93 query.Where("node_type=?", v)
94 } 94 }
95 95
  96 + if v, ok := queryOptions["nodeId"]; ok {
  97 + query.Where("node_id=?", v)
  98 + }
  99 +
96 if v, ok := queryOptions["evaluatorId"]; ok { 100 if v, ok := queryOptions["evaluatorId"]; ok {
97 query.Where("evaluator_id=?", v) 101 query.Where("evaluator_id=?", v)
98 } 102 }
  1 +-- 数据修复
  2 +-- 需备份 evaluation_item_used 表数据
  3 +
  4 +WITH t1 AS (
  5 + SELECT
  6 + evaluation_project.company_id,
  7 + evaluation_project.id AS project_id,
  8 + jsonb_array_elements(evaluation_project."template" #> '{linkNodes}') AS nodes
  9 + FROM
  10 + evaluation_project
  11 + WHERE evaluation_project."template" #> '{linkNodes}'<>'null'
  12 + ORDER BY
  13 + id
  14 +),
  15 +t2 AS (
  16 + SELECT
  17 + t1.company_id,
  18 + t1.project_id,
  19 + t1.nodes ->> 'id' AS node_id,
  20 + t1.nodes ->> 'type' AS node_type,
  21 + jsonb_array_elements(t1.nodes #> '{nodeContents}') AS node_contents
  22 + FROM
  23 + t1
  24 + WHERE t1.nodes #> '{nodeContents}'<>'null'
  25 + ),
  26 +t3 AS(
  27 + SELECT
  28 + t2.company_id,
  29 + t2.project_id,
  30 + cast(t2.node_id AS int8) AS node_id,
  31 + cast(t2.node_type AS int8) AS node_type,
  32 + t2.node_contents ->> 'category' AS "category",
  33 + t2.node_contents ->> 'name' AS "name",
  34 + cast(t2.node_contents ->> 'ruleId' AS int8) AS "rule_id"
  35 + FROM
  36 + t2
  37 +),
  38 +t4 as (
  39 + SELECT
  40 + t3.project_id,
  41 + t3.node_type,
  42 + t3."category",
  43 + t3."name",
  44 + row_to_json( "evaluation_rule".*) as "rule",
  45 + "evaluation_rule"."type" as rule_type
  46 + FROM t3
  47 + join "evaluation_rule" on t3.rule_id= "evaluation_rule".id
  48 +),
  49 +t5 as (
  50 + SELECT
  51 + evaluation_item_used."id",
  52 + evaluation_item_used.evaluation_project_id,
  53 + evaluation_item_used.node_type,
  54 + evaluation_item_used.category,
  55 + evaluation_item_used."name"
  56 + FROM evaluation_item_used
  57 + WHERE "rule"='{}' or "rule" ISNULL
  58 +),
  59 +t6 as (
  60 + SELECT t5."id" ,
  61 + t4."rule",
  62 + t4.rule_type
  63 + FROM t5 ,t4
  64 + WHERE t5.evaluation_project_id=t4.project_id
  65 + and t5.node_type=t4.node_type
  66 + and t5.category=t4.category
  67 + and t5."name"=t4."name"
  68 +)
  69 +update evaluation_item_used
  70 +set "rule"=t6."rule",
  71 +rule_type=t6."rule_type"
  72 +FROM t6
  73 +WHERE evaluation_item_used."id"=t6."id"
  74 +;
  75 +
  76 +-- 修复数据
  77 +
  78 +with t1 as
  79 +( SELECT
  80 +evaluation_rule.id::TEXT,
  81 +evaluation_rule."name",
  82 +evaluation_rule.remark,
  83 +evaluation_rule.company_id::TEXT as "companyId",
  84 +evaluation_rule.creator_id::TEXT as "creatorId",
  85 +evaluation_rule."type",
  86 +evaluation_rule.rating,
  87 +evaluation_rule.score,
  88 +evaluation_rule.sys_type as "sysType"
  89 +FROM evaluation_rule
  90 +),
  91 +t2 as (
  92 +SELECT t1.id, row_to_json(t1.*) as row_j FROM t1
  93 +),
  94 +t3 as (
  95 +SELECT evaluation_item_used.id, t2.row_j
  96 +FROM evaluation_item_used
  97 +join t2 on t2.id= evaluation_item_used."rule"->>'id'
  98 +WHERE evaluation_item_used."rule"->'companyId' ISNULL
  99 +and evaluation_item_used."rule"->'id' is not null
  100 +)
  101 +update evaluation_item_used
  102 +SET "rule"=t3.row_j
  103 +FROM t3
  104 +WHERE evaluation_item_used.id = t3.id
  105 +;