派生自 projectDept/qhighschool

EricsHu
2022-12-05 068fc7f2e81178e55fa191a13709af64b1a163f6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.qxueyou.scc.evaluate.service.impl;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import com.qxueyou.scc.base.model.Result;
import com.qxueyou.scc.base.service.impl.CommonAppService;
import com.qxueyou.scc.base.util.ClientUtils;
import com.qxueyou.scc.base.util.CollectionUtils;
import com.qxueyou.scc.base.util.TraceUtils;
import com.qxueyou.scc.evaluate.service.IEvaluateTemplateService;
import com.qxueyou.scc.exercise.model.ExerciseGroup;
import com.qxueyou.scc.exercise.model.ExerciseItem;
import com.qxueyou.scc.exercise.model.ExerciseItemScore;
import com.qxueyou.scc.exercise.service.IExerciseService;
import com.qxueyou.scc.school.model.SchEvaluateTemplate;
 
@Service
public class EvaluateTemplateService extends CommonAppService implements IEvaluateTemplateService {
    
    @Autowired
    private IExerciseService exerciseService;
    
    /**
     *  新增评估模板
     */
    public String insertEvaluateTemplate(SchEvaluateTemplate schEvaluateTemplate){
        String evaluateTemplateId = schEvaluateTemplate.getEvaluateTemplateId();
        if(StringUtils.isBlank(evaluateTemplateId)){
            //插入组
            ExerciseGroup obj = exerciseService.insertExerciseGroup(schEvaluateTemplate.getEvaluateTemplateName(),ExerciseGroup.TYPE_EXERCISE_TEACH_EVALUATE);
            if(null != obj){
                //插入评估模板
                SchEvaluateTemplate objTemplate = new SchEvaluateTemplate();
                TraceUtils.setCreateTrace(objTemplate);
                objTemplate.setEvaluateTemplateName(schEvaluateTemplate.getEvaluateTemplateName());
                objTemplate.setGroup_name(obj.getName());
                objTemplate.setTemplateType(schEvaluateTemplate.getTemplateType());
                objTemplate.setEvaluateRangeType(schEvaluateTemplate.getEvaluateRangeType());
                objTemplate.setGroupId(obj.getGroupId());
                objTemplate.setOrgId(ClientUtils.getOrgId());
                objTemplate.setOrgName(ClientUtils.getOrgName());
                save(objTemplate);
                evaluateTemplateId = objTemplate.getEvaluateTemplateId();
            }
        }else{
            SchEvaluateTemplate objSchEvaluateTemplate = this.read(SchEvaluateTemplate.class, evaluateTemplateId);
            TraceUtils.setUpdateTrace(objSchEvaluateTemplate);
            objSchEvaluateTemplate.setEvaluateTemplateName(schEvaluateTemplate.getEvaluateTemplateName());
            objSchEvaluateTemplate.setTemplateType(schEvaluateTemplate.getTemplateType());
            objSchEvaluateTemplate.setEvaluateRangeType(schEvaluateTemplate.getEvaluateRangeType());
            save(objSchEvaluateTemplate);
        }
        
        return evaluateTemplateId;
    }
    
    
    /**
     * 删除评估模板
     * @param ids
     * @param templateId
     * @return
     */
    public Result deleteEvaluateTemplate(String groupId,String templateId){
        Result objResult = null ; 
        if(StringUtils.isNotBlank(groupId)){
            this.deleteExerciseGroup(groupId);
            
            Object[] arrtemplateId = templateId.split(",");
            String hql = "update SchEvaluateTemplate set deleteFlag = true where evaluateTemplateId=?";
            objResult = bulkUpdateInLoop(hql, arrtemplateId);
        }
        
        return objResult;
    }
    
    /**
     * 批量删除ExerciseGroup,删除逻辑:修改评估模板的同时修改习题组和练习题
     * @param groupId 主键,多个id时以","分隔
     * @return
     */
    @Override
    public Result deleteExerciseGroup(String groupId) {
        
        //逻辑删除,只需要修改exercise_group、exercise_item的删除标识即可
        if(StringUtils.isNotBlank(groupId)){
            //需要删除的练习组
            Object[] arrGroupId = groupId.split(",");
        
            String exeGroupHql = " from ExerciseGroup where groupId in (:groupId) ";
            
            Map<String,Object> groupIdMap = new HashMap<String,Object>(1);
            groupIdMap.put("groupId", CollectionUtils.newList(arrGroupId));
            
            List<ExerciseGroup> exeGroupList = this.findByComplexHql(exeGroupHql, groupIdMap, ExerciseGroup.class);
            
            //删除习题组
            if(exeGroupList != null){
                for(ExerciseGroup group : exeGroupList){
                    group.setDeleteFlag(true);
                }
            }
            //20150618:配合前台app,所有修改同时修改group表最后修改时间
            updateGroupUpdateTimeByList(exeGroupList);
            
            String exeItemHql = "select i from ExerciseGroupItemRe g, ExerciseItem i where g.exerciseItemId = i.exerciseId and g.exerciseGroupId in (:groupId)";
            
            List<ExerciseItem> exeItemList = this.findByComplexHql(exeItemHql, groupIdMap, ExerciseItem.class);
            
            //删除习题
            if(exeItemList != null){
                for(ExerciseItem item : exeItemList){
                    item.setDeleteFlag(true);
                }
                saveOrUpdateAll(exeItemList);
            }                            
        }
        
        return new Result(true);
    }
    
    /**
     * 所有练习修改操作需要同时修改group的updateTime
     * @param lstGroup
     */
    private void updateGroupUpdateTimeByList(List<ExerciseGroup> lstGroup){
        if(null != lstGroup && !lstGroup.isEmpty()){
            for( ExerciseGroup obj : lstGroup){
                obj.setUpdateTime(new Date(System.currentTimeMillis()));
            }
            saveOrUpdateAll(lstGroup);
        }
    }
    
    /**
     * 增加评分标准   
     * @param exerciseId
     * @param type
     * @param lstScore
     * @return
     */
    public Result insertExerciseScore(String exerciseId,short type,List<String> lstScore,String scoreAnswer, String exerciseItemScoreId){
        List<ExerciseItemScore> lstItemScore = new ArrayList<ExerciseItemScore>();
        
        return saveOrUpdateAll(lstItemScore);
    }
    
}