Yansen 2 년 전
부모
커밋
bf2ebd68e8

db/.back_文明创办/文明创办-backup-202324212508.pdma.json → db/.back_文明创办/文明创办-backup-2023212194146.pdma.json 파일 보기

@@ -4,7 +4,7 @@
4 4
   "avatar": "",
5 5
   "version": "4.1.4",
6 6
   "createdTime": "2022-12-12 09:36:12",
7
-  "updatedTime": "2023-2-3 15:17:53",
7
+  "updatedTime": "2023-2-12 19:41:01",
8 8
   "dbConns": [],
9 9
   "profile": {
10 10
     "default": {
@@ -1221,6 +1221,23 @@
1221 1221
           "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
1222 1222
           "id": "D1C0A2CD-89DB-44DF-918F-EA536E39761F"
1223 1223
         },
1224
+        {
1225
+          "defKey": "is_from_wx",
1226
+          "defName": "是否微信端添加",
1227
+          "comment": "",
1228
+          "type": "",
1229
+          "len": "",
1230
+          "scale": "",
1231
+          "primaryKey": false,
1232
+          "notNull": false,
1233
+          "autoIncrement": false,
1234
+          "defaultValue": "0",
1235
+          "hideInGraph": false,
1236
+          "refDict": "",
1237
+          "extProps": {},
1238
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
1239
+          "id": "FDA26255-02A6-4AD5-AA2C-B8C410548D44"
1240
+        },
1224 1241
         {
1225 1242
           "defKey": "create_user",
1226 1243
           "defName": "创建人",
@@ -6503,7 +6520,7 @@
6503 6520
         {
6504 6521
           "defKey": "qu_id",
6505 6522
           "defName": "问题ID",
6506
-          "comment": "来源点位问题",
6523
+          "comment": "来源项目问题",
6507 6524
           "type": "",
6508 6525
           "len": "",
6509 6526
           "scale": "",
@@ -6811,9 +6828,26 @@
6811 6828
           "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
6812 6829
           "id": "BF4E109D-9F8C-4E39-8803-A88E5A347AF3"
6813 6830
         },
6831
+        {
6832
+          "defKey": "community_name",
6833
+          "defName": "社区名称",
6834
+          "comment": "",
6835
+          "type": "",
6836
+          "len": "",
6837
+          "scale": "",
6838
+          "primaryKey": false,
6839
+          "notNull": false,
6840
+          "autoIncrement": false,
6841
+          "defaultValue": "",
6842
+          "hideInGraph": false,
6843
+          "refDict": "",
6844
+          "extProps": {},
6845
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
6846
+          "id": "B5CFBE96-9810-4B5D-9A21-F8664F16A45C"
6847
+        },
6814 6848
         {
6815 6849
           "defKey": "name",
6816
-          "defName": "具体(小区)名称",
6850
+          "defName": "名称",
6817 6851
           "comment": "",
6818 6852
           "type": "",
6819 6853
           "len": "",
@@ -6847,7 +6881,7 @@
6847 6881
         },
6848 6882
         {
6849 6883
           "defKey": "addr",
6850
-          "defName": "定位描述",
6884
+          "defName": "定位描述(小区)名称",
6851 6885
           "comment": "",
6852 6886
           "type": "",
6853 6887
           "len": "",
@@ -6862,6 +6896,40 @@
6862 6896
           "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
6863 6897
           "id": "31758145-9BDD-4A20-904B-E70372F394E1"
6864 6898
         },
6899
+        {
6900
+          "defKey": "sex",
6901
+          "defName": "性别",
6902
+          "comment": "",
6903
+          "type": "VARCHAR",
6904
+          "len": 32,
6905
+          "scale": "",
6906
+          "primaryKey": false,
6907
+          "notNull": false,
6908
+          "autoIncrement": false,
6909
+          "defaultValue": "",
6910
+          "hideInGraph": false,
6911
+          "refDict": "",
6912
+          "extProps": {},
6913
+          "domain": "",
6914
+          "id": "18C56DEF-A828-486A-941B-A4167F5AB0BE"
6915
+        },
6916
+        {
6917
+          "defKey": "age",
6918
+          "defName": "年龄段",
6919
+          "comment": "",
6920
+          "type": "VARCHAR",
6921
+          "len": 64,
6922
+          "scale": "",
6923
+          "primaryKey": false,
6924
+          "notNull": false,
6925
+          "autoIncrement": false,
6926
+          "defaultValue": "",
6927
+          "hideInGraph": false,
6928
+          "refDict": "",
6929
+          "extProps": {},
6930
+          "domain": "",
6931
+          "id": "005ABCD0-A5E8-4F3B-87C9-3C90087A368F"
6932
+        },
6865 6933
         {
6866 6934
           "defKey": "score",
6867 6935
           "defName": "得分",
@@ -6930,6 +6998,23 @@
6930 6998
           "uiHint": "",
6931 6999
           "id": "D7BCB5EA-301A-4B0C-8DD2-F74C4CBFF3F3"
6932 7000
         },
7001
+        {
7002
+          "defKey": "user_name",
7003
+          "defName": "作答人名称",
7004
+          "comment": "",
7005
+          "type": "",
7006
+          "len": "",
7007
+          "scale": "",
7008
+          "primaryKey": false,
7009
+          "notNull": false,
7010
+          "autoIncrement": false,
7011
+          "defaultValue": "",
7012
+          "hideInGraph": false,
7013
+          "refDict": "",
7014
+          "extProps": {},
7015
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
7016
+          "id": "9EEC2EA3-0210-4385-8864-2AF7A5038727"
7017
+        },
6933 7018
         {
6934 7019
           "defKey": "create_date",
6935 7020
           "defName": "作答时间",
@@ -8611,6 +8696,40 @@
8611 8696
           "uiHint": "",
8612 8697
           "id": "219A66C3-6D3F-4F1E-A572-9E5294556142"
8613 8698
         },
8699
+        {
8700
+          "defKey": "loc_id",
8701
+          "defName": "点位ID",
8702
+          "comment": "",
8703
+          "type": "",
8704
+          "len": "",
8705
+          "scale": "",
8706
+          "primaryKey": false,
8707
+          "notNull": false,
8708
+          "autoIncrement": false,
8709
+          "defaultValue": "",
8710
+          "hideInGraph": false,
8711
+          "refDict": "",
8712
+          "extProps": {},
8713
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
8714
+          "id": "B93801A5-158E-41EC-9CC9-F2E586414C2A"
8715
+        },
8716
+        {
8717
+          "defKey": "loc_name",
8718
+          "defName": "点位名称",
8719
+          "comment": "",
8720
+          "type": "",
8721
+          "len": "",
8722
+          "scale": "",
8723
+          "primaryKey": false,
8724
+          "notNull": false,
8725
+          "autoIncrement": false,
8726
+          "defaultValue": "",
8727
+          "hideInGraph": false,
8728
+          "refDict": "",
8729
+          "extProps": {},
8730
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
8731
+          "id": "49BF27B0-A3B7-4D25-8B62-871DC3C7D4C0"
8732
+        },
8614 8733
         {
8615 8734
           "defKey": "content",
8616 8735
           "defName": "测评标准",

+ 55
- 4
db/文明创办.pdma.json 파일 보기

@@ -4,7 +4,7 @@
4 4
   "avatar": "",
5 5
   "version": "4.1.4",
6 6
   "createdTime": "2022-12-12 09:36:12",
7
-  "updatedTime": "2023-2-6 11:32:38",
7
+  "updatedTime": "2023-2-12 19:41:46",
8 8
   "dbConns": [],
9 9
   "profile": {
10 10
     "default": {
@@ -1221,6 +1221,23 @@
1221 1221
           "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
1222 1222
           "id": "D1C0A2CD-89DB-44DF-918F-EA536E39761F"
1223 1223
         },
1224
+        {
1225
+          "defKey": "is_from_wx",
1226
+          "defName": "是否微信端添加",
1227
+          "comment": "",
1228
+          "type": "",
1229
+          "len": "",
1230
+          "scale": "",
1231
+          "primaryKey": false,
1232
+          "notNull": false,
1233
+          "autoIncrement": false,
1234
+          "defaultValue": "0",
1235
+          "hideInGraph": false,
1236
+          "refDict": "",
1237
+          "extProps": {},
1238
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
1239
+          "id": "FDA26255-02A6-4AD5-AA2C-B8C410548D44"
1240
+        },
1224 1241
         {
1225 1242
           "defKey": "create_user",
1226 1243
           "defName": "创建人",
@@ -6503,7 +6520,7 @@
6503 6520
         {
6504 6521
           "defKey": "qu_id",
6505 6522
           "defName": "问题ID",
6506
-          "comment": "来源点位问题",
6523
+          "comment": "来源项目问题",
6507 6524
           "type": "",
6508 6525
           "len": "",
6509 6526
           "scale": "",
@@ -6811,9 +6828,26 @@
6811 6828
           "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
6812 6829
           "id": "BF4E109D-9F8C-4E39-8803-A88E5A347AF3"
6813 6830
         },
6831
+        {
6832
+          "defKey": "community_name",
6833
+          "defName": "社区名称",
6834
+          "comment": "",
6835
+          "type": "",
6836
+          "len": "",
6837
+          "scale": "",
6838
+          "primaryKey": false,
6839
+          "notNull": false,
6840
+          "autoIncrement": false,
6841
+          "defaultValue": "",
6842
+          "hideInGraph": false,
6843
+          "refDict": "",
6844
+          "extProps": {},
6845
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
6846
+          "id": "B5CFBE96-9810-4B5D-9A21-F8664F16A45C"
6847
+        },
6814 6848
         {
6815 6849
           "defKey": "name",
6816
-          "defName": "具体(小区)名称",
6850
+          "defName": "名称",
6817 6851
           "comment": "",
6818 6852
           "type": "",
6819 6853
           "len": "",
@@ -6847,7 +6881,7 @@
6847 6881
         },
6848 6882
         {
6849 6883
           "defKey": "addr",
6850
-          "defName": "定位描述",
6884
+          "defName": "定位描述(小区)名称",
6851 6885
           "comment": "",
6852 6886
           "type": "",
6853 6887
           "len": "",
@@ -6964,6 +6998,23 @@
6964 6998
           "uiHint": "",
6965 6999
           "id": "D7BCB5EA-301A-4B0C-8DD2-F74C4CBFF3F3"
6966 7000
         },
7001
+        {
7002
+          "defKey": "user_name",
7003
+          "defName": "作答人名称",
7004
+          "comment": "",
7005
+          "type": "",
7006
+          "len": "",
7007
+          "scale": "",
7008
+          "primaryKey": false,
7009
+          "notNull": false,
7010
+          "autoIncrement": false,
7011
+          "defaultValue": "",
7012
+          "hideInGraph": false,
7013
+          "refDict": "",
7014
+          "extProps": {},
7015
+          "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6",
7016
+          "id": "9EEC2EA3-0210-4385-8864-2AF7A5038727"
7017
+        },
6967 7018
         {
6968 7019
           "defKey": "create_date",
6969 7020
           "defName": "作答时间",

+ 103
- 0
src/main/java/com/example/civilizedcity/controller/SysUserController.java 파일 보기

@@ -7,6 +7,7 @@ import com.example.civilizedcity.common.BaseController;
7 7
 import com.example.civilizedcity.common.Constants;
8 8
 import com.example.civilizedcity.common.ResponseBean;
9 9
 
10
+import java.time.LocalDateTime;
10 11
 import java.util.HashMap;
11 12
 import java.util.List;
12 13
 import java.util.Map;
@@ -17,6 +18,7 @@ import com.example.civilizedcity.entity.SysRole;
17 18
 import com.example.civilizedcity.service.SysResourceService;
18 19
 import com.example.civilizedcity.service.SysRoleService;
19 20
 import com.example.civilizedcity.service.SysUserDutyService;
21
+import com.example.civilizedcity.vo.ChangePassword;
20 22
 import io.swagger.annotations.Api;
21 23
 import io.swagger.annotations.ApiOperation;
22 24
 import io.swagger.annotations.ApiParam;
@@ -116,6 +118,29 @@ public class SysUserController extends BaseController {
116 118
         return ResponseBean.success(result);
117 119
     }
118 120
 
121
+    /**
122
+     * 小程序端分页查询
123
+     *
124
+     * @param pageNum  当前页码
125
+     * @param pageSize 每页条数
126
+     * @return 查询结果
127
+     */
128
+    @ApiOperation("小程序端分页查询")
129
+    @GetMapping("/ma/sysUser")
130
+    public ResponseBean maList(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
131
+                             @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) throws Exception {
132
+
133
+        IPage<SysUser> pg = new Page<>(pageNum, pageSize);
134
+        QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
135
+        queryWrapper.eq("org_id", currentUser().getOrgId());
136
+        queryWrapper.eq("is_from_wx", 1);
137
+        queryWrapper.gt("status", Constants.STATUS_DELETE);
138
+        queryWrapper.orderByDesc("create_date");
139
+        IPage<SysUser> result = sysUserService.page(pg, queryWrapper);
140
+
141
+        return ResponseBean.success(result);
142
+    }
143
+
119 144
     /**
120 145
      * 新增数据
121 146
      *
@@ -133,6 +158,42 @@ public class SysUserController extends BaseController {
133 158
         return ResponseBean.success(sysUser);
134 159
     }
135 160
 
161
+
162
+    /**
163
+     * 小程序端新增数据
164
+     *
165
+     * @param sysUser 实例对象
166
+     * @return 实例对象
167
+     */
168
+    @ApiOperation("小程序端新增数据")
169
+    @PostMapping("/ma/sysUser")
170
+    public ResponseBean addMa(@ApiParam("对象实体") @RequestBody SysUser sysUser) throws Exception {
171
+        if (StringUtils.isEmpty(sysUser.getPhone())) {
172
+            return ResponseBean.error("请填写手机号");
173
+        }
174
+        if (StringUtils.isEmpty(sysUser.getName())) {
175
+            return ResponseBean.error("请填写名称");
176
+        }
177
+
178
+        SysUser user = currentUser();
179
+
180
+        SysUser origin = sysUserService.getByPhone(sysUser.getPhone(), user.getOrgId());
181
+        if (null != origin) {
182
+            if (StringUtils.isNotEmpty(sysUser.getUserId()) && !sysUser.getUserId().equals(origin.getUserId())) {
183
+                return ResponseBean.error("当前人员已存在");
184
+            }
185
+
186
+            sysUser.setUserId(origin.getUserId());
187
+            if (Constants.STATUS_DELETE == sysUser.getStatus()) {
188
+                // 如果这个人被删除了, 则重置为正常状态
189
+                sysUser.setStatus(Constants.STATUS_NORMAL);
190
+            }
191
+        }
192
+
193
+        sysUserService.createMaUser(sysUser, user);
194
+        return ResponseBean.success(sysUser);
195
+    }
196
+
136 197
     /**
137 198
      * 更新数据
138 199
      *
@@ -165,6 +226,24 @@ public class SysUserController extends BaseController {
165 226
 //        return ResponseBean.success(sysUser);
166 227
 //    }
167 228
 
229
+
230
+    @PutMapping("/ma/sysUser/change-password")
231
+    @ApiOperation(value="小程序端修改密码", notes = "修改密码", httpMethod = "PUT", response = ResponseBean.class)
232
+    public ResponseBean changePassword(@ApiParam("修改密码参数") @RequestBody ChangePassword param) throws Exception {
233
+        if (StringUtils.isEmpty(param.getOriginPassword()) || StringUtils.isEmpty(param.getNewPassword())) {
234
+            return ResponseBean.error("原始密码或新密码不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
235
+        }
236
+
237
+        SysUser user = currentUser();
238
+
239
+        boolean isOk = sysUserService.changePassword(user, param);
240
+        if (!isOk) {
241
+            ResponseBean.error("修改失败, 请重试", ResponseBean.ERROR_UNAVAILABLE);
242
+        }
243
+
244
+        return ResponseBean.success("密码修改成功");
245
+    }
246
+
168 247
     /**
169 248
      * 通过主键删除数据
170 249
      *
@@ -177,4 +256,28 @@ public class SysUserController extends BaseController {
177 256
         sysUserService.removeLogicById(id);
178 257
         return ResponseBean.success("success");
179 258
     }
259
+
260
+    /**
261
+     * 小程序端通过主键删除数据
262
+     *
263
+     * @param userId 主键
264
+     * @return 是否成功
265
+     */
266
+    @ApiOperation("小程序端通过主键删除数据")
267
+    @DeleteMapping("/ma/sysUser/{id}")
268
+    public ResponseBean deleteMaById(@ApiParam("对象ID") @PathVariable String id) throws Exception {
269
+
270
+        SysUser user = sysUserService.getById(id);
271
+        if (null == user || Constants.STATUS_DELETE == user.getStatus()) {
272
+            return ResponseBean.error("人员不存在");
273
+        }
274
+
275
+        SysUser sysUser = currentUser();
276
+        if (!sysUser.getOrgId().equals(user.getOrgId())) {
277
+            return ResponseBean.error("暂无权限");
278
+        }
279
+
280
+        sysUserService.removeLogicById(id);
281
+        return ResponseBean.success("success");
282
+    }
180 283
 }

+ 57
- 9
src/main/java/com/example/civilizedcity/controller/TaCheckAnswerController.java 파일 보기

@@ -4,8 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 4
 import com.baomidou.mybatisplus.core.metadata.IPage;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.example.civilizedcity.common.BaseController;
7
+import com.example.civilizedcity.common.Constants;
8
+import com.example.civilizedcity.common.ExcelUtils;
7 9
 import com.example.civilizedcity.common.ResponseBean;
8 10
 import java.util.List;
11
+
12
+import com.example.civilizedcity.vo.CheckLocAnswer;
13
+import com.example.civilizedcity.vo.CheckSurveyAnswer;
9 14
 import io.swagger.annotations.Api;
10 15
 import io.swagger.annotations.ApiOperation;
11 16
 import io.swagger.annotations.ApiParam;
@@ -14,7 +19,9 @@ import org.springframework.web.bind.annotation.*;
14 19
 import com.example.civilizedcity.entity.TaCheckAnswer;
15 20
 import com.example.civilizedcity.service.TaCheckAnswerService;
16 21
 
17
- /**
22
+import javax.servlet.http.HttpServletResponse;
23
+
24
+/**
18 25
  * 测评作答;(ta_check_answer)表控制层
19 26
  * @author : http://njyunzhi.com
20 27
  * @date : 2022-12-13
@@ -49,15 +56,56 @@ public class TaCheckAnswerController extends BaseController {
49 56
     @ApiOperation("分页查询")
50 57
     @GetMapping("/taCheckAnswer")
51 58
     public ResponseBean list(@ApiParam("页码") @RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
52
-                            @ApiParam("单页数据量") @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize) throws Exception {
53
-        
54
-        IPage<TaCheckAnswer> pg = new Page<>(pageNum, pageSize);
55
-        // QueryWrapper<TaCheckAnswer> queryWrapper = new QueryWrapper<>();
56
-        // queryWrapper.orderByDesc("create_date");
57
-        IPage<TaCheckAnswer> result = taCheckAnswerService.page(pg);
58
-        
59
-        return ResponseBean.success(result);
59
+                            @ApiParam("单页数据量") @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
60
+                             @ApiParam("答卷类型") @RequestParam(value ="itemType", defaultValue = "loc") String itemType,
61
+                             @ApiParam("测评ID") @RequestParam(value ="checkId", required = false) String checkId,
62
+                             @ApiParam("点位ID") @RequestParam(value ="typeId", required = false) String typeId,
63
+                             @ApiParam("社区") @RequestParam(value ="communityName", required = false) String communityName,
64
+                             @ApiParam("答卷类型") @RequestParam(value ="addr", required = false) String addr) throws Exception {
65
+
66
+        if (Constants.CHECK_OF_LOC.equals(itemType)) {
67
+            IPage<CheckLocAnswer> pg = new Page<>(pageNum, pageSize);
68
+            IPage<CheckLocAnswer> result = taCheckAnswerService.getLocPageBy(pg, checkId, typeId);
69
+            return ResponseBean.success(result);
70
+        }
71
+
72
+        if (Constants.CHECK_OF_SURVEY.equals(itemType)) {
73
+            IPage<CheckSurveyAnswer> pg = new Page<>(pageNum, pageSize);
74
+            IPage<CheckSurveyAnswer> result = taCheckAnswerService.getSurveyPageBy(pg, checkId, communityName, addr);
75
+            return ResponseBean.success(result);
76
+        }
77
+
78
+        return ResponseBean.error("非法的答卷类型");
60 79
     }
80
+
81
+     /**
82
+      * 导出
83
+      *
84
+      * @return 查询结果
85
+      */
86
+     @ApiOperation("导出")
87
+     @GetMapping("/taCheckAnswer/export")
88
+     public ResponseBean export(@ApiParam("答卷类型") @RequestParam(value ="itemType", defaultValue = "loc") String itemType,
89
+                                @ApiParam("测评ID") @RequestParam(value ="checkId", required = false) String checkId,
90
+                                @ApiParam("点位ID") @RequestParam(value ="typeId", required = false) String typeId,
91
+                                @ApiParam("社区") @RequestParam(value ="communityName", required = false) String communityName,
92
+                                @ApiParam("答卷类型") @RequestParam(value ="addr", required = false) String addr,
93
+                                HttpServletResponse response) throws Exception {
94
+
95
+         if (Constants.CHECK_OF_LOC.equals(itemType)) {
96
+             List<CheckLocAnswer> result = taCheckAnswerService.getLocListBy(checkId, typeId);
97
+             ExcelUtils.flush(response, CheckLocAnswer.class, result, "实地测评答案明细");
98
+             return null;
99
+         }
100
+
101
+         if (Constants.CHECK_OF_SURVEY.equals(itemType)) {
102
+             List<CheckSurveyAnswer> result = taCheckAnswerService.getSurveyListBy(checkId, communityName, addr);
103
+             ExcelUtils.flush(response, CheckSurveyAnswer.class, result, "调查问卷答案明细");
104
+             return null;
105
+         }
106
+
107
+         return ResponseBean.error("非法的答卷类型");
108
+     }
61 109
     
62 110
     /** 
63 111
      * 新增数据

+ 1
- 0
src/main/java/com/example/civilizedcity/controller/TaCheckItemController.java 파일 보기

@@ -260,6 +260,7 @@ public class TaCheckItemController extends BaseController {
260 260
         taCheckAnswer.setStatus(Constants.STATUS_NORMAL);
261 261
         taCheckAnswer.setOrgId(sysUser.getOrgId());
262 262
         taCheckAnswer.setCreateUser(sysUser.getUserId());
263
+        taCheckAnswer.setUserName(sysUser.getName());
263 264
         taCheckAnswer.setCreateDate(LocalDateTime.now());
264 265
 
265 266
         taCheckItemService.answer(taCheckItem, taCheckAnswer, sysUser);

+ 32
- 0
src/main/java/com/example/civilizedcity/controller/TaIssueApplyController.java 파일 보기

@@ -55,6 +55,38 @@ public class TaIssueApplyController extends BaseController {
55 55
     public ResponseBean queryById(@ApiParam("对象ID") @PathVariable Integer id) throws Exception {
56 56
         return ResponseBean.success(taIssueApplyService.getById(id));
57 57
     }
58
+
59
+
60
+    /**
61
+     * 获取申请条数
62
+     *
63
+     * @param state 申请状态 0, 未审批, 1 已审批
64
+     * @return 实例对象
65
+     */
66
+    @ApiOperation("获取申请条数")
67
+    @GetMapping("/taIssueApply/nums")
68
+    public ResponseBean countApply(@ApiParam("申请状态") @RequestParam(value = "state", defaultValue = "0") Integer state,
69
+                                   @ApiParam("申请类型") @RequestParam(value = "applyType", required = false) String applyType) throws Exception {
70
+
71
+        SysUser sysUser = currentUser();
72
+        boolean isManager = isManager(sysUser);
73
+        long num = 0;
74
+
75
+        QueryWrapper<TaIssueApply> queryWrapper = new QueryWrapper<>();
76
+        queryWrapper.eq(StringUtils.isNotEmpty(applyType), "apply_type", applyType);
77
+        queryWrapper.eq(!isManager, "org_id", sysUser.getOrgId());
78
+
79
+        if (0 == state) {
80
+            queryWrapper.isNull("verify_date");
81
+        } else {
82
+            queryWrapper.isNotNull("verify_date");
83
+        }
84
+
85
+        num = taIssueApplyService.count(queryWrapper);
86
+
87
+        return ResponseBean.success(num);
88
+    }
89
+
58 90
     /**
59 91
      * 通过ISSUE_ID查询单条数据
60 92
      *

+ 3
- 0
src/main/java/com/example/civilizedcity/entity/SysUser.java 파일 보기

@@ -48,6 +48,9 @@ public class SysUser implements Serializable,Cloneable{
48 48
      /** 是否系统用户 */
49 49
      @ApiModelProperty(name = "是否系统用户",notes = "")
50 50
      private Boolean isUser ;
51
+     /** 是否系统用户 */
52
+     @ApiModelProperty(name = "是否微信端添加",notes = "")
53
+     private Boolean isFromWx ;
51 54
     /** 状态 */
52 55
     @ApiModelProperty(name = "状态",notes = "")
53 56
     private Integer status ;

+ 6
- 0
src/main/java/com/example/civilizedcity/entity/TaCheckAnswer.java 파일 보기

@@ -47,6 +47,9 @@ public class TaCheckAnswer implements Serializable,Cloneable{
47 47
     /** 定位描述 - 小区 */
48 48
     @ApiModelProperty(name = "定位描述 - 小区",notes = "")
49 49
     private String addr ;
50
+     /** 社区名称 */
51
+     @ApiModelProperty(name = "社区名称",notes = "")
52
+     private String communityName ;
50 53
      /** 性别 */
51 54
      @ApiModelProperty(name = "性别",notes = "")
52 55
      private String sex ;
@@ -65,6 +68,9 @@ public class TaCheckAnswer implements Serializable,Cloneable{
65 68
     /** 作答人 */
66 69
     @ApiModelProperty(name = "作答人",notes = "")
67 70
     private String createUser ;
71
+     /** 作答人名称 */
72
+     @ApiModelProperty(name = "作答人名称",notes = "")
73
+     private String userName ;
68 74
     /** 作答时间 */
69 75
     @ApiModelProperty(name = "作答时间",notes = "")
70 76
     private LocalDateTime createDate ;

+ 19
- 0
src/main/java/com/example/civilizedcity/mapper/TaCheckAnswerMapper.java 파일 보기

@@ -1,6 +1,9 @@
1 1
 package com.example.civilizedcity.mapper;
2 2
 
3 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.example.civilizedcity.vo.CheckLocAnswer;
6
+import com.example.civilizedcity.vo.CheckSurveyAnswer;
4 7
 import org.apache.ibatis.annotations.Mapper;
5 8
 import org.apache.ibatis.annotations.Param;
6 9
 import com.example.civilizedcity.entity.TaCheckAnswer;
@@ -25,4 +28,20 @@ public interface TaCheckAnswerMapper extends BaseMapper<TaCheckAnswer> {
25 28
     int getCountByUser(@Param("itemId") String itemId, @Param("userId") String userId);
26 29
 
27 30
     List<TaCheckAnswer> getByUser(@Param("itemId") String itemId, @Param("userId") String userId);
31
+
32
+    IPage<CheckLocAnswer> getLocPageBy(IPage<CheckLocAnswer> pg,
33
+                                       @Param("checkId") String checkId,
34
+                                       @Param("typeId") String typeId);
35
+
36
+    List<CheckLocAnswer> getLocListBy(@Param("checkId") String checkId,
37
+                                      @Param("typeId") String typeId);
38
+
39
+    IPage<CheckSurveyAnswer> getSurveyPageBy(IPage<CheckSurveyAnswer> pg,
40
+                                             @Param("checkId") String checkId,
41
+                                             @Param("communityName") String communityName,
42
+                                             @Param("addr") String addr);
43
+
44
+    List<CheckSurveyAnswer> getSurveyListBy(@Param("checkId") String checkId,
45
+                                            @Param("communityName") String communityName,
46
+                                            @Param("addr") String addr);
28 47
 }

+ 4
- 0
src/main/java/com/example/civilizedcity/service/SysUserService.java 파일 보기

@@ -23,4 +23,8 @@ public interface SysUserService extends IBaseService<SysUser> {
23 23
     List<String> getRoleList(String userId);
24 24
 
25 25
     List<String> getPermissionList(String userId);
26
+
27
+    SysUser getByPhone(String phone, String orgId);
28
+
29
+    void createMaUser(SysUser sysUser, SysUser currentUser);
26 30
 }

+ 11
- 0
src/main/java/com/example/civilizedcity/service/TaCheckAnswerService.java 파일 보기

@@ -1,7 +1,10 @@
1 1
 package com.example.civilizedcity.service;
2 2
 
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
3 4
 import com.baomidou.mybatisplus.extension.service.IService;
4 5
 import com.example.civilizedcity.entity.TaCheckAnswer;
6
+import com.example.civilizedcity.vo.CheckLocAnswer;
7
+import com.example.civilizedcity.vo.CheckSurveyAnswer;
5 8
 
6 9
 import java.util.List;
7 10
 
@@ -18,4 +21,12 @@ public interface TaCheckAnswerService extends IBaseService<TaCheckAnswer> {
18 21
     int countByItem(String itemId);
19 22
 
20 23
     List<TaCheckAnswer> getByUser(String itemId, String userId);
24
+
25
+    IPage<CheckLocAnswer> getLocPageBy(IPage<CheckLocAnswer> pg, String checkId, String typeId);
26
+
27
+    List<CheckLocAnswer> getLocListBy(String checkId, String typeId);
28
+
29
+    IPage<CheckSurveyAnswer> getSurveyPageBy(IPage<CheckSurveyAnswer> pg, String checkId, String communityName, String addr);
30
+
31
+    List<CheckSurveyAnswer> getSurveyListBy(String checkId, String communityName, String addr);
21 32
 }

+ 60
- 2
src/main/java/com/example/civilizedcity/service/impl/SysUserServiceImpl.java 파일 보기

@@ -1,5 +1,6 @@
1 1
 package com.example.civilizedcity.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.example.civilizedcity.common.Constants;
4 5
 import com.example.civilizedcity.common.EncryptUtils;
5 6
 import com.example.civilizedcity.common.StringUtils;
@@ -10,6 +11,7 @@ import com.example.civilizedcity.mapper.SysUserRoleMapper;
10 11
 import com.example.civilizedcity.vo.ChangePassword;
11 12
 import com.example.civilizedcity.vo.LoginParam;
12 13
 import org.springframework.beans.factory.annotation.Autowired;
14
+import org.springframework.beans.factory.annotation.Value;
13 15
 import org.springframework.stereotype.Service;
14 16
 import com.example.civilizedcity.mapper.SysUserMapper;
15 17
 import com.example.civilizedcity.service.SysUserService;
@@ -37,6 +39,8 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
37 39
     @Autowired
38 40
     SysUserDutyMapper sysUserDutyMapper;
39 41
 
42
+    String defaultPwd = "123456";
43
+
40 44
     @Override
41 45
     public SysUser login(LoginParam loginParm) throws Exception {
42 46
         SysLogin sysLogin = sysLoginMapper.getByAccount(loginParm.getAccount());
@@ -146,6 +150,12 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
146 150
         }
147 151
 
148 152
         // 身份表
153
+        mergeDuty(sysUser);
154
+
155
+        return true;
156
+    }
157
+
158
+    private void mergeDuty(SysUser sysUser) {
149 159
         List<String> dutyList = sysUser.getDutyList();
150 160
         if (null == dutyList || dutyList.size() == 0) {
151 161
             sysUserDutyMapper.deleteByMap(new HashMap<String, Object>() {{
@@ -171,8 +181,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
171 181
             // 去除垃圾数据
172 182
             sysUserDutyMapper.deleteNotIn(sysUser.getUserId(), idList);
173 183
         }
174
-
175
-        return true;
176 184
     }
177 185
 
178 186
     @Override
@@ -185,6 +193,56 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser>
185 193
         return sysUserDutyMapper.getListByUser(userId);
186 194
     }
187 195
 
196
+    @Override
197
+    public SysUser getByPhone(String phone, String orgId) {
198
+        QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
199
+        queryWrapper.eq("phone", phone);
200
+        queryWrapper.eq("org_id", orgId);
201
+        queryWrapper.last("limit 1");
202
+
203
+        return getOne(queryWrapper);
204
+    }
205
+
206
+    @Override
207
+    public void createMaUser(SysUser sysUser, SysUser currentUser) {
208
+
209
+        LocalDateTime now = LocalDateTime.now();
210
+
211
+        sysUser.setIsUser(true);
212
+        sysUser.setOrgId(currentUser.getOrgId());
213
+        sysUser.setIsFromWx(true);
214
+
215
+        if (StringUtils.isEmpty(sysUser.getUserId())) {
216
+            sysUser.setCreateUser(currentUser.getUserId());
217
+            sysUser.setCreateDate(now);
218
+
219
+            save(sysUser);
220
+        } else {
221
+            updateById(sysUser);
222
+        }
223
+
224
+        // 登录账户
225
+        SysLogin sysLogin = sysLoginMapper.getByAccount(sysUser.getPhone());
226
+        if (null == sysLogin) {
227
+            sysLogin = new SysLogin();
228
+
229
+            sysLogin.setAccount(sysUser.getPhone());
230
+            sysLogin.setPassword(EncryptUtils.md5(EncryptUtils.md5(defaultPwd), sysUser.getUserId()));
231
+            sysLogin.setUserId(sysUser.getUserId());
232
+            sysLogin.setStatus(Constants.STATUS_NORMAL);
233
+            sysLogin.setCreateDate(now);
234
+            sysLoginMapper.insert(sysLogin);
235
+        }
236
+
237
+        // 身份表
238
+        if (null == sysUser.getDutyList() || sysUser.getDutyList().size() == 0) {
239
+            sysUser.setDutyList(new ArrayList<String>(){{
240
+                add(Constants.DUTY_ORG_USER);
241
+            }});
242
+        }
243
+        mergeDuty(sysUser);
244
+    }
245
+
188 246
     boolean checkPassword(String src, String targ, String salt) {
189 247
         String newPass = EncryptUtils.md5(src, salt);
190 248
         return targ.equals(newPass);

+ 23
- 0
src/main/java/com/example/civilizedcity/service/impl/TaCheckAnswerServiceImpl.java 파일 보기

@@ -1,5 +1,8 @@
1 1
 package com.example.civilizedcity.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.example.civilizedcity.vo.CheckLocAnswer;
5
+import com.example.civilizedcity.vo.CheckSurveyAnswer;
3 6
 import org.springframework.beans.factory.annotation.Autowired;
4 7
 import org.springframework.stereotype.Service;
5 8
 import com.example.civilizedcity.entity.TaCheckAnswer;
@@ -31,4 +34,24 @@ public class TaCheckAnswerServiceImpl extends BaseServiceImpl<TaCheckAnswerMappe
31 34
     public List<TaCheckAnswer> getByUser(String itemId, String userId) {
32 35
         return baseMapper.getByUser(itemId, userId);
33 36
     }
37
+
38
+    @Override
39
+    public IPage<CheckLocAnswer> getLocPageBy(IPage<CheckLocAnswer> pg, String checkId, String typeId) {
40
+        return baseMapper.getLocPageBy(pg, checkId, typeId);
41
+    }
42
+
43
+    @Override
44
+    public List<CheckLocAnswer> getLocListBy(String checkId, String typeId) {
45
+        return baseMapper.getLocListBy(checkId, typeId);
46
+    }
47
+
48
+    @Override
49
+    public IPage<CheckSurveyAnswer> getSurveyPageBy(IPage<CheckSurveyAnswer> pg, String checkId, String communityName, String addr) {
50
+        return baseMapper.getSurveyPageBy(pg, checkId, communityName, addr);
51
+    }
52
+
53
+    @Override
54
+    public List<CheckSurveyAnswer> getSurveyListBy(String checkId, String communityName, String addr) {
55
+        return baseMapper.getSurveyListBy(checkId, communityName, addr);
56
+    }
34 57
 }

+ 70
- 0
src/main/java/com/example/civilizedcity/vo/CheckLocAnswer.java 파일 보기

@@ -0,0 +1,70 @@
1
+package com.example.civilizedcity.vo;
2
+
3
+import com.alibaba.excel.annotation.ExcelIgnore;
4
+import com.alibaba.excel.annotation.ExcelProperty;
5
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
6
+import io.swagger.annotations.ApiModel;
7
+import io.swagger.annotations.ApiModelProperty;
8
+import lombok.Data;
9
+
10
+import java.time.LocalDateTime;
11
+
12
+@Data
13
+@ApiModel("实地测评答案")
14
+public class CheckLocAnswer {
15
+
16
+    @ExcelIgnore
17
+    @ApiModelProperty("作答详情ID")
18
+    private String answerItemId;
19
+
20
+    @ExcelIgnore
21
+    @ApiModelProperty("作答ID")
22
+    private String answerId;
23
+
24
+    @ExcelIgnore
25
+    @ApiModelProperty("测评项目ID")
26
+    private String checkItemId;
27
+
28
+    @ExcelIgnore
29
+    @ApiModelProperty("点位ID")
30
+    private String typeId;
31
+
32
+    @ColumnWidth(20)
33
+    @ExcelProperty(value = "点位名称", index = 1)
34
+    @ApiModelProperty("点位名称")
35
+    private String typeName;
36
+
37
+    @ExcelIgnore
38
+    @ApiModelProperty("测评ID")
39
+    private String checkId;
40
+
41
+    @ColumnWidth(30)
42
+    @ExcelProperty(value = "测评名称", index = 0)
43
+    @ApiModelProperty("测评名称")
44
+    private String checkTitle;
45
+
46
+    @ColumnWidth(50)
47
+    @ExcelProperty(value = "问题", index = 2)
48
+    @ApiModelProperty("问题")
49
+    private String quTitle;
50
+
51
+    @ColumnWidth(20)
52
+    @ExcelProperty(value = "答案", index = 3)
53
+    @ApiModelProperty("答案")
54
+    private String answer;
55
+
56
+    @ColumnWidth(60)
57
+    @ExcelProperty(value = "详细地址", index = 4)
58
+    @ApiModelProperty("详细地址")
59
+    private String addr;
60
+
61
+    @ColumnWidth(20)
62
+    @ExcelProperty(value = "作答人", index = 5)
63
+    @ApiModelProperty("作答人")
64
+    private String userName;
65
+
66
+    @ColumnWidth(30)
67
+    @ExcelProperty(value = "作答时间", index = 6)
68
+    @ApiModelProperty("作答时间")
69
+    private LocalDateTime createDate;
70
+}

+ 76
- 0
src/main/java/com/example/civilizedcity/vo/CheckSurveyAnswer.java 파일 보기

@@ -0,0 +1,76 @@
1
+package com.example.civilizedcity.vo;
2
+
3
+import com.alibaba.excel.annotation.ExcelIgnore;
4
+import com.alibaba.excel.annotation.ExcelProperty;
5
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
6
+import io.swagger.annotations.ApiModel;
7
+import io.swagger.annotations.ApiModelProperty;
8
+import lombok.Data;
9
+
10
+import java.time.LocalDateTime;
11
+
12
+@Data
13
+@ApiModel("调查问卷答案")
14
+public class CheckSurveyAnswer {
15
+
16
+    @ExcelIgnore
17
+    @ApiModelProperty("作答详情ID")
18
+    private String answerItemId;
19
+
20
+    @ExcelIgnore
21
+    @ApiModelProperty("作答ID")
22
+    private String answerId;
23
+
24
+    @ExcelIgnore
25
+    @ApiModelProperty("测评项目ID")
26
+    private String checkItemId;
27
+
28
+    @ColumnWidth(30)
29
+    @ExcelProperty(value = "社区名称", index = 1)
30
+    @ApiModelProperty("社区名称")
31
+    private String communityName;
32
+
33
+    @ColumnWidth(30)
34
+    @ExcelProperty(value = "小区名称", index = 2)
35
+    @ApiModelProperty("小区名称")
36
+    private String addr;
37
+
38
+    @ExcelIgnore
39
+    @ApiModelProperty("测评ID")
40
+    private String checkId;
41
+
42
+    @ColumnWidth(30)
43
+    @ExcelProperty(value = "测评名称", index = 0)
44
+    @ApiModelProperty("测评名称")
45
+    private String checkTitle;
46
+
47
+    @ColumnWidth(50)
48
+    @ExcelProperty(value = "问题", index = 3)
49
+    @ApiModelProperty("问题")
50
+    private String quTitle;
51
+
52
+    @ColumnWidth(20)
53
+    @ExcelProperty(value = "答案", index = 4)
54
+    @ApiModelProperty("答案")
55
+    private String answer;
56
+
57
+    @ColumnWidth(20)
58
+    @ExcelProperty(value = "作答人", index = 5)
59
+    @ApiModelProperty("作答人")
60
+    private String userName;
61
+
62
+    @ColumnWidth(30)
63
+    @ExcelProperty(value = "作答时间", index = 6)
64
+    @ApiModelProperty("作答时间")
65
+    private LocalDateTime createDate;
66
+
67
+    @ColumnWidth(30)
68
+    @ExcelProperty(value = "受访者年龄段", index = 7)
69
+    @ApiModelProperty("受访者年龄段")
70
+    private String sex;
71
+
72
+    @ColumnWidth(30)
73
+    @ExcelProperty(value = "受访者年龄段", index = 8)
74
+    @ApiModelProperty("受访者年龄段")
75
+    private String age;
76
+}

+ 88
- 0
src/main/resources/mapper/TaCheckAnswerMapper.xml 파일 보기

@@ -53,4 +53,92 @@
53 53
           AND t.create_user = #{userId}
54 54
           AND t.`status` &gt; -1
55 55
     </select>
56
+
57
+    <sql id="getLocAnswers">
58
+        SELECT
59
+            t.item_id AS answer_item_id,
60
+            t.answer_id,
61
+            m.item_id AS check_item_id,
62
+            m.type_id,
63
+            m.`name` AS type_name,
64
+            n.check_id,
65
+            n.title AS check_title,
66
+            qu.title AS qu_title,
67
+            IF(qu.qu_type = 'fill', t.answer,  an.answer) as answer,
68
+            s.addr,
69
+            s.user_name,
70
+            s.create_date
71
+        FROM
72
+            ta_check_answer_item t
73
+            INNER JOIN ta_check_answer s ON t.answer_id = s.answer_id
74
+            INNER JOIN ta_check_item m ON s.item_id = m.item_id
75
+            INNER JOIN ta_check n ON m.check_id = n.check_id
76
+            INNER JOIN ta_check_item_qu qu ON t.qu_id = qu.qu_id
77
+            LEFT JOIN ta_check_item_an an ON t.qu_id = an.qu_id
78
+            AND t.answer_code = an.answer_code
79
+        WHERE
80
+            m.item_type = 'loc'
81
+            AND t.`status` = 1
82
+            <if test="checkId != null and checkId != ''">
83
+                AND n.check_id = #{checkId}
84
+            </if>
85
+            <if test="typeId != null and typeId != ''">
86
+                AND m.type_id = #{typeId}
87
+            </if>
88
+        ORDER BY
89
+            s.create_date ASC
90
+    </sql>
91
+
92
+    <select id="getLocPageBy" resultType="com.example.civilizedcity.vo.CheckLocAnswer">
93
+        <include refid="getLocAnswers"></include>
94
+    </select>
95
+    <select id="getLocListBy" resultType="com.example.civilizedcity.vo.CheckLocAnswer">
96
+        <include refid="getLocAnswers"></include>
97
+    </select>
98
+
99
+    <sql id="getSurveyAnswers">
100
+        SELECT
101
+            t.item_id AS answer_item_id,
102
+            t.answer_id,
103
+            m.item_id AS check_item_id,
104
+            n.check_id,
105
+            n.title AS check_title,
106
+            qu.title AS qu_title,
107
+            IF( qu.qu_type = 'fill', t.answer, an.answer ) AS answer,
108
+            s.addr,
109
+            s.user_name,
110
+            s.create_date,
111
+            IF( s.sex = '0', '女', IF( s.sex = '1', '男', '-')) AS sex,
112
+            s.age,
113
+            s.community_name
114
+        FROM
115
+            ta_check_answer_item t
116
+                INNER JOIN ta_check_answer s ON t.answer_id = s.answer_id
117
+                INNER JOIN ta_check_item m ON s.item_id = m.item_id
118
+                INNER JOIN ta_check n ON m.check_id = n.check_id
119
+                INNER JOIN ta_check_item_qu qu ON t.qu_id = qu.qu_id
120
+                LEFT JOIN ta_check_item_an an ON t.qu_id = an.qu_id
121
+                AND t.answer_code = an.answer_code
122
+        WHERE
123
+            m.item_type = 'survey'
124
+          AND t.`status` = 1
125
+        <if test="checkId != null and checkId != ''">
126
+            AND n.check_id = #{checkId}
127
+        </if>
128
+        <if test="communityName != null and communityName != ''">
129
+          AND s.community_name LIKE CONCAT( #{communityName}, '%' )
130
+        </if>
131
+        <if test="addr != null and addr != ''">
132
+          AND s.addr LIKE CONCAT( #{addr}, '%' )
133
+        </if>
134
+        ORDER BY
135
+            s.create_date ASC
136
+    </sql>
137
+
138
+    <select id="getSurveyPageBy" resultType="com.example.civilizedcity.vo.CheckSurveyAnswer">
139
+        <include refid="getSurveyAnswers"></include>
140
+    </select>
141
+    <select id="getSurveyListBy" resultType="com.example.civilizedcity.vo.CheckSurveyAnswer">
142
+        <include refid="getSurveyAnswers"></include>
143
+    </select>
56 144
 </mapper>