Yansen 2 years ago
parent
commit
2b9384556f

db/.back_文明创办/文明创办-backup-202312223659.pdma.json → db/.back_文明创办/文明创办-backup-202317194605.pdma.json View File

2
   "name": "文明创办",
2
   "name": "文明创办",
3
   "describe": "文明创办",
3
   "describe": "文明创办",
4
   "avatar": "",
4
   "avatar": "",
5
-  "version": "4.2.0",
5
+  "version": "4.1.4",
6
   "createdTime": "2022-12-12 09:36:12",
6
   "createdTime": "2022-12-12 09:36:12",
7
-  "updatedTime": "2023-1-2 20:52:56",
7
+  "updatedTime": "2023-1-4 09:07:35",
8
   "dbConns": [],
8
   "dbConns": [],
9
   "profile": {
9
   "profile": {
10
     "default": {
10
     "default": {
8108
           "uiHint": "",
8108
           "uiHint": "",
8109
           "id": "FC7B9B05-7D57-4818-8266-F8A4D62DB212"
8109
           "id": "FC7B9B05-7D57-4818-8266-F8A4D62DB212"
8110
         },
8110
         },
8111
+        {
8112
+          "defKey": "msg_type",
8113
+          "defName": "消息类型",
8114
+          "comment": "",
8115
+          "type": "",
8116
+          "len": "",
8117
+          "scale": "",
8118
+          "primaryKey": false,
8119
+          "notNull": false,
8120
+          "autoIncrement": false,
8121
+          "defaultValue": "",
8122
+          "hideInGraph": false,
8123
+          "refDict": "",
8124
+          "extProps": {},
8125
+          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
8126
+          "id": "92ACF22A-5638-4B62-9656-71D9089F7D7E"
8127
+        },
8111
         {
8128
         {
8112
           "defKey": "title",
8129
           "defKey": "title",
8113
           "defName": "消息标题",
8130
           "defName": "消息标题",

db/.back_文明创办/文明创办-backup-202312205256.pdma.json → db/.back_文明创办/文明创办-backup-202317202536.pdma.json View File

2
   "name": "文明创办",
2
   "name": "文明创办",
3
   "describe": "文明创办",
3
   "describe": "文明创办",
4
   "avatar": "",
4
   "avatar": "",
5
-  "version": "4.2.0",
5
+  "version": "4.1.4",
6
   "createdTime": "2022-12-12 09:36:12",
6
   "createdTime": "2022-12-12 09:36:12",
7
-  "updatedTime": "2023-1-2 20:51:00",
7
+  "updatedTime": "2023-1-7 19:46:05",
8
   "dbConns": [],
8
   "dbConns": [],
9
   "profile": {
9
   "profile": {
10
     "default": {
10
     "default": {
7985
       "id": "430EE745-314D-48CE-A20B-ED2C4D79BC92",
7985
       "id": "430EE745-314D-48CE-A20B-ED2C4D79BC92",
7986
       "env": {
7986
       "env": {
7987
         "base": {
7987
         "base": {
7988
-          "nameSpace": "",
7989
-          "codeRoot": ""
7990
-        }
7988
+          "nameSpace": "com.example.civilizedcity",
7989
+          "codeRoot": "TaMessage"
7990
+        },
7991
+        "template": {
7992
+          "JavaMybatisPlus": {
7993
+            "Controller": {
7994
+              "suffix": "controller/{{=it.codeRoot}}Controller.java",
7995
+              "enable": true
7996
+            },
7997
+            "Service": {
7998
+              "suffix": "service/{{=it.codeRoot}}Service.java",
7999
+              "enable": true
8000
+            },
8001
+            "ServiceImpl": {
8002
+              "suffix": "service/impl/{{=it. codeRoot}}ServiceImpl.java",
8003
+              "enable": true
8004
+            },
8005
+            "Mapper": {
8006
+              "suffix": "mapper/{{=it.codeRoot}}Mapper.java",
8007
+              "enable": true
8008
+            },
8009
+            "Mapper.xml": {
8010
+              "suffix": "mapper/{{=it.codeRoot}}Mapper.xml",
8011
+              "enable": true
8012
+            },
8013
+            "Entity": {
8014
+              "suffix": "entity/{{=it.codeRoot}}.java",
8015
+              "enable": true
8016
+            }
8017
+          }
8018
+        },
8019
+        "custom": {}
7991
       },
8020
       },
7992
       "defKey": "ta_message",
8021
       "defKey": "ta_message",
7993
       "defName": "消息通知",
8022
       "defName": "消息通知",
8063
       ],
8092
       ],
8064
       "fields": [
8093
       "fields": [
8065
         {
8094
         {
8066
-          "defKey": "id",
8095
+          "defKey": "msg_id",
8067
           "defName": "ID",
8096
           "defName": "ID",
8068
           "comment": "",
8097
           "comment": "",
8069
           "type": "",
8098
           "type": "",
8079
           "uiHint": "",
8108
           "uiHint": "",
8080
           "id": "FC7B9B05-7D57-4818-8266-F8A4D62DB212"
8109
           "id": "FC7B9B05-7D57-4818-8266-F8A4D62DB212"
8081
         },
8110
         },
8111
+        {
8112
+          "defKey": "msg_type",
8113
+          "defName": "消息类型",
8114
+          "comment": "",
8115
+          "type": "",
8116
+          "len": "",
8117
+          "scale": "",
8118
+          "primaryKey": false,
8119
+          "notNull": false,
8120
+          "autoIncrement": false,
8121
+          "defaultValue": "",
8122
+          "hideInGraph": false,
8123
+          "refDict": "",
8124
+          "extProps": {},
8125
+          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
8126
+          "id": "92ACF22A-5638-4B62-9656-71D9089F7D7E"
8127
+        },
8082
         {
8128
         {
8083
           "defKey": "title",
8129
           "defKey": "title",
8084
           "defName": "消息标题",
8130
           "defName": "消息标题",

+ 35
- 1
db/文明创办.pdma.json View File

4
   "avatar": "",
4
   "avatar": "",
5
   "version": "4.1.4",
5
   "version": "4.1.4",
6
   "createdTime": "2022-12-12 09:36:12",
6
   "createdTime": "2022-12-12 09:36:12",
7
-  "updatedTime": "2023-1-4 09:07:35",
7
+  "updatedTime": "2023-1-7 20:25:36",
8
   "dbConns": [],
8
   "dbConns": [],
9
   "profile": {
9
   "profile": {
10
     "default": {
10
     "default": {
4748
           "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
4748
           "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
4749
           "id": "0EF50BA7-C44F-4D9E-A28D-F94C3D15350F"
4749
           "id": "0EF50BA7-C44F-4D9E-A28D-F94C3D15350F"
4750
         },
4750
         },
4751
+        {
4752
+          "defKey": "loc_score",
4753
+          "defName": "实地测评得分",
4754
+          "comment": "",
4755
+          "type": "DECIMAL",
4756
+          "len": 6,
4757
+          "scale": 2,
4758
+          "primaryKey": false,
4759
+          "notNull": false,
4760
+          "autoIncrement": false,
4761
+          "defaultValue": "",
4762
+          "hideInGraph": false,
4763
+          "refDict": "",
4764
+          "extProps": {},
4765
+          "domain": "",
4766
+          "id": "D4F39D10-19B6-49F6-A398-D9278355E747"
4767
+        },
4768
+        {
4769
+          "defKey": "survey_score",
4770
+          "defName": "调查问卷得分",
4771
+          "comment": "",
4772
+          "type": "DECIMAL",
4773
+          "len": 6,
4774
+          "scale": 2,
4775
+          "primaryKey": false,
4776
+          "notNull": false,
4777
+          "autoIncrement": false,
4778
+          "defaultValue": "",
4779
+          "hideInGraph": false,
4780
+          "refDict": "",
4781
+          "extProps": {},
4782
+          "domain": "",
4783
+          "id": "F2E17D81-03A9-42C4-8DD7-732C8D40DC59"
4784
+        },
4751
         {
4785
         {
4752
           "defKey": "start_date",
4786
           "defKey": "start_date",
4753
           "defName": "开始日期",
4787
           "defName": "开始日期",

+ 4
- 5
src/main/java/com/example/civilizedcity/common/Constants.java View File

8
     public final static int STATUS_READY = 0;
8
     public final static int STATUS_READY = 0;
9
     public final static int STATUS_NORMAL = 1;
9
     public final static int STATUS_NORMAL = 1;
10
 
10
 
11
-
12
-    public final static String CHECK_ITEM_LOC = "loc";  // 实例调研
13
-    public final static String CHECK_ITEM_SURVEY = "survey";  // 问卷调研
14
-
15
-
16
     // 操作员身份
11
     // 操作员身份
17
     // 督察员
12
     // 督察员
18
     public final static String DUTY_INSPECTOR = "inspector";
13
     public final static String DUTY_INSPECTOR = "inspector";
87
     public final static String MESSAGE_TARGET_ISSUE = "issue";
82
     public final static String MESSAGE_TARGET_ISSUE = "issue";
88
     // 申请流程
83
     // 申请流程
89
     public final static String MESSAGE_TARGET_APPLY = "apply";
84
     public final static String MESSAGE_TARGET_APPLY = "apply";
85
+
86
+    // 调查问卷
87
+    public final static String CHECK_OF_LOC = "loc"; // 实地调查
88
+    public final static String CHECK_OF_SURVEY = "survey"; // 调查问卷
90
 }
89
 }

+ 19
- 0
src/main/java/com/example/civilizedcity/controller/TaCheckController.java View File

108
         return ResponseBean.success(taCheck);
108
         return ResponseBean.success(taCheck);
109
     }
109
     }
110
 
110
 
111
+
112
+    /**
113
+     * 计算分数
114
+     *
115
+     * @param id 实例ID
116
+     * @return 实例对象
117
+     */
118
+    @ApiOperation("计算分数")
119
+    @PutMapping("/taCheck/{id}/score")
120
+    public ResponseBean calcScore(@ApiParam("对象ID") @PathVariable String id) throws Exception {
121
+        TaCheck taCheck = taCheckService.getById(id);
122
+        if (null == taCheck || taCheck.getStatus() == Constants.STATUS_DELETE) {
123
+            return ResponseBean.error("未找到模拟测评信息");
124
+        }
125
+
126
+        taCheckService.calcScore(taCheck);
127
+        return ResponseBean.success(taCheck);
128
+    }
129
+
111
     /**
130
     /**
112
      * 通过主键删除数据
131
      * 通过主键删除数据
113
      *
132
      *

+ 2
- 2
src/main/java/com/example/civilizedcity/controller/TaCheckItemController.java View File

67
      private TaCheckItem getByCheckAndType(String checkId, String typeId) {
67
      private TaCheckItem getByCheckAndType(String checkId, String typeId) {
68
          QueryWrapper<TaCheckItem> queryWrapper = new QueryWrapper<>();
68
          QueryWrapper<TaCheckItem> queryWrapper = new QueryWrapper<>();
69
          queryWrapper.eq("check_id", checkId);
69
          queryWrapper.eq("check_id", checkId);
70
-         queryWrapper.eq("item_type", Constants.CHECK_ITEM_LOC); // 只查点位
70
+         queryWrapper.eq("item_type", Constants.CHECK_OF_LOC); // 只查点位
71
          queryWrapper.eq("type_id", typeId);
71
          queryWrapper.eq("type_id", typeId);
72
          queryWrapper.gt("status", Constants.STATUS_DELETE);
72
          queryWrapper.gt("status", Constants.STATUS_DELETE);
73
 
73
 
108
             return ResponseBean.error("测评类型不能为空");
108
             return ResponseBean.error("测评类型不能为空");
109
         }
109
         }
110
 
110
 
111
-        if ("loc".equals(taCheckItem.getItemType()) && StringUtils.isEmpty(taCheckItem.getTypeId())) {
111
+        if (Constants.CHECK_OF_LOC.equals(taCheckItem.getItemType()) && StringUtils.isEmpty(taCheckItem.getTypeId())) {
112
             return ResponseBean.error("测评点位不能为空");
112
             return ResponseBean.error("测评点位不能为空");
113
         }
113
         }
114
 
114
 

+ 6
- 0
src/main/java/com/example/civilizedcity/entity/TaCheck.java View File

33
       /** 总分 */
33
       /** 总分 */
34
       @ApiModelProperty(name = "总分",notes = "")
34
       @ApiModelProperty(name = "总分",notes = "")
35
       private Integer score ;
35
       private Integer score ;
36
+       /** 实地测评得分 */
37
+       @ApiModelProperty(name = "实地测评得分",notes = "")
38
+       private Double locScore ;
39
+       /** 调查问卷得分 */
40
+       @ApiModelProperty(name = "调查问卷得分",notes = "")
41
+       private Double surveyScore ;
36
       /** 开始日期;YYYY-MM-DD */
42
       /** 开始日期;YYYY-MM-DD */
37
       @ApiModelProperty(name = "开始日期",notes = "YYYY-MM-DD")
43
       @ApiModelProperty(name = "开始日期",notes = "YYYY-MM-DD")
38
       private String startDate ;
44
       private String startDate ;

+ 6
- 3
src/main/java/com/example/civilizedcity/mapper/TaCheckAnswerItemMapper.java View File

5
 import org.apache.ibatis.annotations.Param;
5
 import org.apache.ibatis.annotations.Param;
6
 import com.example.civilizedcity.entity.TaCheckAnswerItem;
6
 import com.example.civilizedcity.entity.TaCheckAnswerItem;
7
 
7
 
8
- /**
8
+import java.util.List;
9
+
10
+/**
9
  * 测评作答详情;(ta_check_answer_item)表数据库访问层
11
  * 测评作答详情;(ta_check_answer_item)表数据库访问层
10
  * @author : http://njyunzhi.com
12
  * @author : http://njyunzhi.com
11
  * @date : 2022-12-13
13
  * @date : 2022-12-13
12
  */
14
  */
13
 @Mapper
15
 @Mapper
14
 public interface TaCheckAnswerItemMapper  extends BaseMapper<TaCheckAnswerItem>{
16
 public interface TaCheckAnswerItemMapper  extends BaseMapper<TaCheckAnswerItem>{
15
-    
16
-}
17
+
18
+     List<TaCheckAnswerItem> getListBy(@Param("answerId") String answerId);
19
+ }

+ 9
- 2
src/main/java/com/example/civilizedcity/mapper/TaCheckAnswerMapper.java View File

5
 import org.apache.ibatis.annotations.Param;
5
 import org.apache.ibatis.annotations.Param;
6
 import com.example.civilizedcity.entity.TaCheckAnswer;
6
 import com.example.civilizedcity.entity.TaCheckAnswer;
7
 
7
 
8
- /**
8
+import java.util.List;
9
+
10
+/**
9
  * 测评作答;(ta_check_answer)表数据库访问层
11
  * 测评作答;(ta_check_answer)表数据库访问层
10
  * @author : http://njyunzhi.com
12
  * @author : http://njyunzhi.com
11
  * @date : 2022-12-13
13
  * @date : 2022-12-13
12
  */
14
  */
13
 @Mapper
15
 @Mapper
14
 public interface TaCheckAnswerMapper  extends BaseMapper<TaCheckAnswer>{
16
 public interface TaCheckAnswerMapper  extends BaseMapper<TaCheckAnswer>{
15
-    
17
+
18
+     Integer countByItem(@Param("itemId") String itemId);
19
+
20
+     List<TaCheckAnswer> getListBy(@Param("itemId") String itemId);
21
+
22
+    Double sumScore(@Param("itemId") String itemId, @Param("num") Integer num);
16
 }
23
 }

+ 5
- 1
src/main/java/com/example/civilizedcity/mapper/TaCheckItemMapper.java View File

6
 import org.apache.ibatis.annotations.Param;
6
 import org.apache.ibatis.annotations.Param;
7
 import com.example.civilizedcity.entity.TaCheckItem;
7
 import com.example.civilizedcity.entity.TaCheckItem;
8
 
8
 
9
- /**
9
+import java.util.List;
10
+
11
+/**
10
  * 测评点位;(ta_check_item)表数据库访问层
12
  * 测评点位;(ta_check_item)表数据库访问层
11
  * @author : http://njyunzhi.com
13
  * @author : http://njyunzhi.com
12
  * @date : 2022-12-13
14
  * @date : 2022-12-13
17
      IPage<TaCheckItem> getPageBy(IPage<TaCheckItem> pg, @Param("checkId") String checkId, @Param("itemType") String itemType);
19
      IPage<TaCheckItem> getPageBy(IPage<TaCheckItem> pg, @Param("checkId") String checkId, @Param("itemType") String itemType);
18
 
20
 
19
      int createNewLocItems(@Param("checkId") String checkId);
21
      int createNewLocItems(@Param("checkId") String checkId);
22
+
23
+     List<TaCheckItem> getListBy(@Param("checkId") String checkId, @Param("itemType") String itemType);
20
  }
24
  }

+ 8
- 3
src/main/java/com/example/civilizedcity/mapper/TaCheckItemQuMapper.java View File

5
 import org.apache.ibatis.annotations.Param;
5
 import org.apache.ibatis.annotations.Param;
6
 import com.example.civilizedcity.entity.TaCheckItemQu;
6
 import com.example.civilizedcity.entity.TaCheckItemQu;
7
 
7
 
8
- /**
8
+import java.util.List;
9
+
10
+/**
9
  * 点位问题;(ta_check_item_qu)表数据库访问层
11
  * 点位问题;(ta_check_item_qu)表数据库访问层
10
  * @author : http://njyunzhi.com
12
  * @author : http://njyunzhi.com
11
  * @date : 2022-12-13
13
  * @date : 2022-12-13
12
  */
14
  */
13
 @Mapper
15
 @Mapper
14
 public interface TaCheckItemQuMapper  extends BaseMapper<TaCheckItemQu>{
16
 public interface TaCheckItemQuMapper  extends BaseMapper<TaCheckItemQu>{
15
-    
16
-}
17
+
18
+     Integer countByItem(@Param("itemId") String itemId);
19
+
20
+     List<TaCheckItemQu> getListBy(@Param("itemId") String itemId);
21
+ }

+ 3
- 2
src/main/java/com/example/civilizedcity/service/TaCheckService.java View File

8
  * @date : 2022-12-12
8
  * @date : 2022-12-12
9
  */
9
  */
10
 public interface TaCheckService extends IBaseService<TaCheck> {
10
 public interface TaCheckService extends IBaseService<TaCheck> {
11
-    
12
-}
11
+
12
+     TaCheck calcScore(TaCheck taCheck);
13
+ }

+ 2
- 1
src/main/java/com/example/civilizedcity/service/impl/TaCheckItemServiceImpl.java View File

1
 package com.example.civilizedcity.service.impl;
1
 package com.example.civilizedcity.service.impl;
2
 
2
 
3
 import com.baomidou.mybatisplus.core.metadata.IPage;
3
 import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.example.civilizedcity.common.Constants;
4
 import com.example.civilizedcity.entity.TaCheck;
5
 import com.example.civilizedcity.entity.TaCheck;
5
 import org.springframework.beans.factory.annotation.Autowired;
6
 import org.springframework.beans.factory.annotation.Autowired;
6
 import org.springframework.stereotype.Service;
7
 import org.springframework.stereotype.Service;
29
         // 再创建调查问卷
30
         // 再创建调查问卷
30
         TaCheckItem taCheckItem = new TaCheckItem();
31
         TaCheckItem taCheckItem = new TaCheckItem();
31
         taCheckItem.setCheckId(taCheck.getCheckId());
32
         taCheckItem.setCheckId(taCheck.getCheckId());
32
-        taCheckItem.setItemType("survey");
33
+        taCheckItem.setItemType(Constants.CHECK_OF_SURVEY);
33
         taCheckItem.setName("调查问卷");
34
         taCheckItem.setName("调查问卷");
34
         save(taCheckItem);
35
         save(taCheckItem);
35
     }
36
     }

+ 159
- 4
src/main/java/com/example/civilizedcity/service/impl/TaCheckServiceImpl.java View File

1
 package com.example.civilizedcity.service.impl;
1
 package com.example.civilizedcity.service.impl;
2
 
2
 
3
+import com.example.civilizedcity.common.Constants;
4
+import com.example.civilizedcity.common.StringUtils;
5
+import com.example.civilizedcity.entity.*;
6
+import com.example.civilizedcity.mapper.*;
7
+import org.springframework.beans.factory.annotation.Autowired;
3
 import org.springframework.stereotype.Service;
8
 import org.springframework.stereotype.Service;
4
-import com.example.civilizedcity.entity.TaCheck;
5
-import com.example.civilizedcity.mapper.TaCheckMapper;
6
 import com.example.civilizedcity.service.TaCheckService;
9
 import com.example.civilizedcity.service.TaCheckService;
7
- /**
10
+import org.springframework.transaction.annotation.Transactional;
11
+
12
+import java.util.List;
13
+
14
+/**
8
  * 模拟测评;(ta_mock_check)表服务实现类
15
  * 模拟测评;(ta_mock_check)表服务实现类
16
+ *
9
  * @author : http://www.chiner.pro
17
  * @author : http://www.chiner.pro
10
  * @date : 2022-12-12
18
  * @date : 2022-12-12
11
  */
19
  */
12
 @Service
20
 @Service
13
 public class TaCheckServiceImpl extends BaseServiceImpl<TaCheckMapper, TaCheck> implements TaCheckService {
21
 public class TaCheckServiceImpl extends BaseServiceImpl<TaCheckMapper, TaCheck> implements TaCheckService {
14
-    
22
+
23
+    @Autowired
24
+    TaCheckItemMapper taCheckItemMapper;
25
+
26
+    @Autowired
27
+    TaCheckItemQuMapper taCheckItemQuMapper;
28
+
29
+    @Autowired
30
+    TaCheckAnswerMapper taCheckAnswerMapper;
31
+
32
+    @Autowired
33
+    TaCheckAnswerItemMapper taCheckAnswerItemMapper;
34
+
35
+    @Transactional(rollbackFor = Exception.class)
36
+    @Override
37
+    public TaCheck calcScore(TaCheck taCheck) {
38
+
39
+        // 调查问卷分数
40
+        double surveyScore = calcSurveyScore(taCheck);
41
+
42
+        // 计算点位分数
43
+        double locScore = calcLocScore(taCheck);
44
+
45
+        taCheck.setLocScore(locScore);
46
+        taCheck.setSurveyScore(surveyScore);
47
+
48
+        updateById(taCheck);
49
+
50
+        return taCheck;
51
+    }
52
+
53
+    /**
54
+     * 计算点位分数
55
+     * 计算的前提是, 每份试卷(ta_check_answer)的分数已经计算好了
56
+     * @param taCheck
57
+     * @return
58
+     */
59
+    private double calcLocScore(TaCheck taCheck) {
60
+        List<TaCheckItem> checkItemList = taCheckItemMapper.getListBy(taCheck.getCheckId(), Constants.CHECK_OF_LOC);
61
+        if (null == checkItemList || checkItemList.size() == 0) return 0.0;
62
+
63
+        // 所有问卷得分的和
64
+        double totalScore = 0.0;
65
+        for (TaCheckItem checkItem : checkItemList) {
66
+            Double score = taCheckAnswerMapper.sumScore(checkItem.getItemId(), checkItem.getNum());
67
+            double s = null == score ? 0.0 : score;
68
+            checkItem.setScore(s);
69
+            taCheckItemMapper.updateById(checkItem);
70
+
71
+            totalScore += s;
72
+        }
73
+
74
+        return totalScore;
75
+    }
76
+
77
+    /**
78
+     * 计算调查问卷分数
79
+     * 计算的前提是, 每个题目(ta_check_answer_item)的分数已经计算好了
80
+     * 暂仅支持选择题算法
81
+     * 总分数 = 100 / 问卷分数 / 每份问卷的题数
82
+     * @param taCheck
83
+     * @return
84
+     */
85
+    private double calcSurveyScore(TaCheck taCheck) {
86
+        // 目前的需求, 此处应该只能查询到一条数据
87
+        List<TaCheckItem> checkItemList = taCheckItemMapper.getListBy(taCheck.getCheckId(), Constants.CHECK_OF_SURVEY);
88
+        if (null == checkItemList || checkItemList.size() == 0) return 0.0;
89
+
90
+        // 所有问卷得分的和
91
+        double totalScore = 0.0;
92
+        for (TaCheckItem checkItem : checkItemList) {
93
+            // 问卷份数
94
+            List<TaCheckAnswer> answerList = taCheckAnswerMapper.getListBy(checkItem.getItemId());
95
+            if (answerList == null || answerList.size() == 0) continue;
96
+            int copyNum = answerList.size();
97
+
98
+            // 题目数
99
+            List<TaCheckItemQu> quList = taCheckItemQuMapper.getListBy(checkItem.getItemId());
100
+            if (quList == null || quList.size() == 0) continue;
101
+            int quNum = quList.size();
102
+
103
+            // 每题的最大分数
104
+            double maxStandScore = 100.00 / copyNum / quNum;
105
+
106
+            // 总分
107
+            double score = 0.0;
108
+            for (TaCheckAnswer answer : answerList) {
109
+                // 获取答案列表
110
+                List<TaCheckAnswerItem> answerItemList = taCheckAnswerItemMapper.getListBy(answer.getAnswerId());
111
+                if (null == answerItemList || answerItemList.size() == 0) continue;
112
+
113
+                // 每题得分
114
+                double quScore = 0.0;
115
+                for (TaCheckAnswerItem answerItem : answerItemList) {
116
+                    if (null == answerItem.getScore() || isZero(answerItem.getScore())) {
117
+                        // 如果得分是 0
118
+                        continue;
119
+                    }
120
+
121
+                    // 查询对应的问题
122
+                    TaCheckItemQu qu = getQu(quList, answerItem.getQuId());
123
+                    if (null == qu) continue;   // 找不到对应题目不计算
124
+                    if (null == qu.getMaxScore() || isZero(qu.getMaxScore())) continue; // 题目没有维护最大分数, 不计算
125
+
126
+                    // 计算转换比
127
+                    double ratio = maxStandScore / qu.getMaxScore();
128
+
129
+                    // 当前得分
130
+                    double s = Math.abs(answerItem.getScore()) > qu.getMaxScore() ?  qu.getMaxScore() : answerItem.getScore();
131
+                    if (answerItem.getScore() < 0) {
132
+                        // 在与最大值的比较过程中, 最大值是正数, 有可能改变得分的符号
133
+                        // 所以此处要纠正过来
134
+                        s = 0 - Math.abs(s);
135
+                    }
136
+
137
+                    // 分值
138
+                    quScore += s * ratio;
139
+                }
140
+
141
+                answer.setScore(quScore);
142
+                taCheckAnswerMapper.updateById(answer);
143
+
144
+                // 分值
145
+                score += quScore;
146
+            }
147
+
148
+            checkItem.setScore(score);
149
+            taCheckItemMapper.updateById(checkItem);
150
+
151
+            totalScore += score;
152
+        }
153
+
154
+        return totalScore;
155
+    }
156
+
157
+    private TaCheckItemQu getQu(List<TaCheckItemQu> quList, String quId) {
158
+        for (TaCheckItemQu qu : quList) {
159
+            if (qu.getQuId().equals(quId)) {
160
+                return qu;
161
+            }
162
+        }
163
+
164
+        return null;
165
+    }
166
+
167
+    private boolean isZero(Double d) {
168
+        return Math.abs(d) < 0.0001;
169
+    }
15
 }
170
 }

+ 10
- 1
src/main/resources/mapper/TaCheckAnswerItemMapper.xml View File

2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
 
3
 
4
 <mapper namespace="com.example.civilizedcity.mapper.TaCheckAnswerItemMapper">
4
 <mapper namespace="com.example.civilizedcity.mapper.TaCheckAnswerItemMapper">
5
-    
5
+
6
+    <select id="getListBy" resultType="com.example.civilizedcity.entity.TaCheckAnswerItem">
7
+        SELECT
8
+            *
9
+        FROM
10
+            ta_check_answer_item t
11
+        WHERE
12
+            t.answer_id = #{answerId}
13
+          AND t.`status` &gt; -1
14
+    </select>
6
 </mapper>
15
 </mapper>

+ 31
- 1
src/main/resources/mapper/TaCheckAnswerMapper.xml View File

2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
 
3
 
4
 <mapper namespace="com.example.civilizedcity.mapper.TaCheckAnswerMapper">
4
 <mapper namespace="com.example.civilizedcity.mapper.TaCheckAnswerMapper">
5
-    
5
+
6
+    <select id="countByItem" resultType="java.lang.Integer">
7
+        SELECT
8
+            count( 1 )
9
+        FROM
10
+            ta_check_answer t
11
+        WHERE
12
+            t.item_id = #{itemId}
13
+          AND t.`status` &gt; -1
14
+    </select>
15
+    <select id="getListBy" resultType="com.example.civilizedcity.entity.TaCheckAnswer">
16
+        SELECT
17
+            *
18
+        FROM
19
+            ta_check_answer t
20
+        WHERE
21
+            t.item_id = #{itemId}
22
+          AND t.`status` &gt; -1
23
+    </select>
24
+    <select id="sumScore" resultType="java.lang.Double">
25
+        SELECT
26
+            sum( t.score )
27
+        FROM
28
+            ta_check_answer t
29
+        WHERE
30
+            t.item_id = #{itemId}
31
+          AND t.`status` &gt; - 1
32
+        ORDER BY
33
+            t.create_date ASC
34
+        LIMIT #{num}
35
+    </select>
6
 </mapper>
36
 </mapper>

+ 11
- 0
src/main/resources/mapper/TaCheckItemMapper.xml View File

29
         WHERE
29
         WHERE
30
             t.check_id = #{checkId}
30
             t.check_id = #{checkId}
31
           AND t.item_type = #{itemType}
31
           AND t.item_type = #{itemType}
32
+          AND t.`status` &gt; -1
32
         ORDER BY
33
         ORDER BY
33
         <if test="itemType != null and itemType == 'loc'">
34
         <if test="itemType != null and itemType == 'loc'">
34
             s.sort_no ASC
35
             s.sort_no ASC
37
             t.create_date ASC
38
             t.create_date ASC
38
         </if>
39
         </if>
39
     </select>
40
     </select>
41
+    <select id="getListBy" resultType="com.example.civilizedcity.entity.TaCheckItem">
42
+        SELECT
43
+            t.*
44
+        FROM
45
+            ta_check_item t
46
+        WHERE
47
+            t.check_id = #{checkId}
48
+          AND t.item_type = #{itemType}
49
+          AND t.`status` &gt; -1
50
+    </select>
40
 </mapper>
51
 </mapper>

+ 17
- 1
src/main/resources/mapper/TaCheckItemQuMapper.xml View File

2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
 
3
 
4
 <mapper namespace="com.example.civilizedcity.mapper.TaCheckItemQuMapper">
4
 <mapper namespace="com.example.civilizedcity.mapper.TaCheckItemQuMapper">
5
-    
5
+
6
+    <select id="countByItem" resultType="java.lang.Integer">
7
+        SELECT
8
+            count( 1 )
9
+        FROM
10
+            ta_check_item_qu t
11
+        WHERE
12
+            t.item_id = #{itemId}
13
+    </select>
14
+    <select id="getListBy" resultType="com.example.civilizedcity.entity.TaCheckItemQu">
15
+        SELECT
16
+            *
17
+        FROM
18
+            ta_check_item_qu t
19
+        WHERE
20
+            t.item_id = #{itemId}
21
+    </select>
6
 </mapper>
22
 </mapper>