Commit ef2a0e4de0b37d4831c3ab49a2fb1558d11b9d1b

Authored by 胡翰林
1 parent d71ccc60

分析结果操作

@@ -23,9 +23,6 @@ public abstract class BaseController { @@ -23,9 +23,6 @@ public abstract class BaseController {
23 @Value("${ash.errorFilePath}") 23 @Value("${ash.errorFilePath}")
24 public String errorFilePath; 24 public String errorFilePath;
25 25
26 - @Value("${ash.fileDomain}")  
27 - public String fileDomain;  
28 -  
29 /** 26 /**
30 * 生成错误信息excel 27 * 生成错误信息excel
31 * 28 *
@@ -7,11 +7,13 @@ import com.ash.base.JsonResult; @@ -7,11 +7,13 @@ import com.ash.base.JsonResult;
7 import com.ash.base.OptionStatus; 7 import com.ash.base.OptionStatus;
8 import com.ash.base.excelOpt.ExcelErrorMessage; 8 import com.ash.base.excelOpt.ExcelErrorMessage;
9 import com.ash.entity.Case; 9 import com.ash.entity.Case;
  10 +import com.ash.entity.CaseAnalysis;
10 import com.ash.entity.FileData; 11 import com.ash.entity.FileData;
11 import com.ash.enums.AnalysisStatusEnum; 12 import com.ash.enums.AnalysisStatusEnum;
12 import com.ash.enums.FileDataTypeEnum; 13 import com.ash.enums.FileDataTypeEnum;
13 import com.ash.enums.ReviewStatusEnum; 14 import com.ash.enums.ReviewStatusEnum;
14 import com.ash.excelData.CaseExcelData; 15 import com.ash.excelData.CaseExcelData;
  16 +import com.ash.service.CaseAnalysisService;
15 import com.ash.service.CaseService; 17 import com.ash.service.CaseService;
16 import com.ash.service.FileDataService; 18 import com.ash.service.FileDataService;
17 import com.ash.util.UUIDGenerator; 19 import com.ash.util.UUIDGenerator;
@@ -30,6 +32,7 @@ import java.net.URLEncoder; @@ -30,6 +32,7 @@ import java.net.URLEncoder;
30 import java.nio.charset.StandardCharsets; 32 import java.nio.charset.StandardCharsets;
31 import java.util.ArrayList; 33 import java.util.ArrayList;
32 import java.util.List; 34 import java.util.List;
  35 +import java.util.Map;
33 import java.util.Optional; 36 import java.util.Optional;
34 import java.util.stream.Collectors; 37 import java.util.stream.Collectors;
35 38
@@ -44,6 +47,10 @@ public class CaseController extends BaseController { @@ -44,6 +47,10 @@ public class CaseController extends BaseController {
44 @Resource 47 @Resource
45 private FileDataService fileDataService; 48 private FileDataService fileDataService;
46 49
  50 + @Resource
  51 + private CaseAnalysisService caseAnalysisService;
  52 +
  53 +
47 @PostMapping("/save") 54 @PostMapping("/save")
48 public JsonResult save(@RequestBody Case data) { 55 public JsonResult save(@RequestBody Case data) {
49 try { 56 try {
@@ -129,6 +136,12 @@ public class CaseController extends BaseController { @@ -129,6 +136,12 @@ public class CaseController extends BaseController {
129 page.setCurrent(pageNo); 136 page.setCurrent(pageNo);
130 page.setSize(pageSize); 137 page.setSize(pageSize);
131 Page<Case> dataPage = caseService.pageByCondition(params, page); 138 Page<Case> dataPage = caseService.pageByCondition(params, page);
  139 + if (CollectionUtils.isNotEmpty(dataPage.getRecords())) {
  140 + List<String> caseIds = dataPage.getRecords()
  141 + .stream().map(Case::getId).collect(Collectors.toList());
  142 + Map<String, CaseAnalysis> caseAnalysisMap = caseAnalysisService.listByCaseId(caseIds);
  143 + dataPage.getRecords().forEach(e -> e.setAnalysis(caseAnalysisMap.get(e.getId())));
  144 + }
132 145
133 return JsonResult.ok(OptionStatus.OPT_SUCCESS.getName(), dataPage); 146 return JsonResult.ok(OptionStatus.OPT_SUCCESS.getName(), dataPage);
134 147
@@ -174,4 +187,40 @@ public class CaseController extends BaseController { @@ -174,4 +187,40 @@ public class CaseController extends BaseController {
174 public JsonResult reAnalysis() throws IOException { 187 public JsonResult reAnalysis() throws IOException {
175 return JsonResult.ok(); 188 return JsonResult.ok();
176 } 189 }
  190 +
  191 + @PostMapping("/saveAnalysis")
  192 + public JsonResult save(@RequestBody CaseAnalysis analysis) {
  193 + try {
  194 + Boolean success = caseAnalysisService.save(analysis);
  195 + return new JsonResult(success, OptionStatus.OPT_SUCCESS.getName(), null);
  196 + } catch (Exception ex) {
  197 + ex.printStackTrace();
  198 + log.error(ex.getMessage());
  199 + return JsonResult.error(OptionStatus.OPT_ERROR.getName());
  200 + }
  201 + }
  202 +
  203 + @PostMapping("/conformAnalysis")
  204 + public JsonResult conformAnalysis(@RequestBody CaseAnalysis analysis) {
  205 + try {
  206 + Boolean success = caseAnalysisService.conform(analysis);
  207 + return new JsonResult(success, OptionStatus.OPT_SUCCESS.getName(), null);
  208 + } catch (Exception ex) {
  209 + ex.printStackTrace();
  210 + log.error(ex.getMessage());
  211 + return JsonResult.error(OptionStatus.OPT_ERROR.getName());
  212 + }
  213 + }
  214 +
  215 + @PostMapping("/cancelConform")
  216 + public JsonResult cancelConform(@RequestBody CaseAnalysis analysis) {
  217 + try {
  218 + Boolean success = caseAnalysisService.cancelConform(analysis);
  219 + return new JsonResult(success, OptionStatus.OPT_SUCCESS.getName(), null);
  220 + } catch (Exception ex) {
  221 + ex.printStackTrace();
  222 + log.error(ex.getMessage());
  223 + return JsonResult.error(OptionStatus.OPT_ERROR.getName());
  224 + }
  225 + }
177 } 226 }
@@ -8,11 +8,13 @@ import com.ash.base.OptionStatus; @@ -8,11 +8,13 @@ import com.ash.base.OptionStatus;
8 import com.ash.base.excelOpt.ExcelErrorMessage; 8 import com.ash.base.excelOpt.ExcelErrorMessage;
9 import com.ash.entity.FileData; 9 import com.ash.entity.FileData;
10 import com.ash.entity.WarningInstance; 10 import com.ash.entity.WarningInstance;
  11 +import com.ash.entity.WarningInstanceAnalysis;
11 import com.ash.enums.AnalysisStatusEnum; 12 import com.ash.enums.AnalysisStatusEnum;
12 import com.ash.enums.FileDataTypeEnum; 13 import com.ash.enums.FileDataTypeEnum;
13 import com.ash.enums.ReviewStatusEnum; 14 import com.ash.enums.ReviewStatusEnum;
14 import com.ash.excelData.WarningInstanceExcelData; 15 import com.ash.excelData.WarningInstanceExcelData;
15 import com.ash.service.FileDataService; 16 import com.ash.service.FileDataService;
  17 +import com.ash.service.WarningInstanceAnalysisService;
16 import com.ash.service.WarningInstanceService; 18 import com.ash.service.WarningInstanceService;
17 import com.ash.util.UUIDGenerator; 19 import com.ash.util.UUIDGenerator;
18 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 20 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -30,6 +32,7 @@ import java.net.URLEncoder; @@ -30,6 +32,7 @@ import java.net.URLEncoder;
30 import java.nio.charset.StandardCharsets; 32 import java.nio.charset.StandardCharsets;
31 import java.util.ArrayList; 33 import java.util.ArrayList;
32 import java.util.List; 34 import java.util.List;
  35 +import java.util.Map;
33 import java.util.Optional; 36 import java.util.Optional;
34 import java.util.stream.Collectors; 37 import java.util.stream.Collectors;
35 38
@@ -39,6 +42,10 @@ import java.util.stream.Collectors; @@ -39,6 +42,10 @@ import java.util.stream.Collectors;
39 public class WarningInstanceController extends BaseController { 42 public class WarningInstanceController extends BaseController {
40 @Resource 43 @Resource
41 private WarningInstanceService warningInstanceService; 44 private WarningInstanceService warningInstanceService;
  45 +
  46 + @Resource
  47 + private WarningInstanceAnalysisService warningInstanceAnalysisService;
  48 +
42 @Resource 49 @Resource
43 private FileDataService fileDataService; 50 private FileDataService fileDataService;
44 51
@@ -139,6 +146,12 @@ public class WarningInstanceController extends BaseController { @@ -139,6 +146,12 @@ public class WarningInstanceController extends BaseController {
139 page.setCurrent(pageNo); 146 page.setCurrent(pageNo);
140 page.setSize(pageSize); 147 page.setSize(pageSize);
141 Page<WarningInstance> dataPage = warningInstanceService.pageByCondition(params, page); 148 Page<WarningInstance> dataPage = warningInstanceService.pageByCondition(params, page);
  149 + if (CollectionUtils.isNotEmpty(dataPage.getRecords())) {
  150 + List<String> wiIds = dataPage.getRecords()
  151 + .stream().map(WarningInstance::getId).collect(Collectors.toList());
  152 + Map<String, WarningInstanceAnalysis> analysisMap = warningInstanceAnalysisService.listByWiId(wiIds);
  153 + dataPage.getRecords().forEach(e -> e.setAnalysis(analysisMap.get(e.getId())));
  154 + }
142 155
143 return JsonResult.ok(OptionStatus.OPT_SUCCESS.getName(), dataPage); 156 return JsonResult.ok(OptionStatus.OPT_SUCCESS.getName(), dataPage);
144 157
@@ -186,4 +199,41 @@ public class WarningInstanceController extends BaseController { @@ -186,4 +199,41 @@ public class WarningInstanceController extends BaseController {
186 return JsonResult.ok(); 199 return JsonResult.ok();
187 } 200 }
188 201
  202 + @PostMapping("/saveAnalysis")
  203 + public JsonResult save(@RequestBody WarningInstanceAnalysis analysis) {
  204 + try {
  205 + Boolean success = warningInstanceAnalysisService.save(analysis);
  206 + return new JsonResult(success, OptionStatus.OPT_SUCCESS.getName(), null);
  207 + } catch (Exception ex) {
  208 + ex.printStackTrace();
  209 + log.error(ex.getMessage());
  210 + return JsonResult.error(OptionStatus.OPT_ERROR.getName());
  211 + }
  212 + }
  213 +
  214 + @PostMapping("/conformAnalysis")
  215 + public JsonResult conformAnalysis(@RequestBody WarningInstanceAnalysis analysis) {
  216 + try {
  217 + Boolean success = warningInstanceAnalysisService.conform(analysis);
  218 + return new JsonResult(success, OptionStatus.OPT_SUCCESS.getName(), null);
  219 + } catch (Exception ex) {
  220 + ex.printStackTrace();
  221 + log.error(ex.getMessage());
  222 + return JsonResult.error(OptionStatus.OPT_ERROR.getName());
  223 + }
  224 + }
  225 +
  226 + @PostMapping("/cancelConform")
  227 + public JsonResult cancelConform(@RequestBody WarningInstanceAnalysis analysis) {
  228 + try {
  229 + Boolean success = warningInstanceAnalysisService.cancelConform(analysis);
  230 + return new JsonResult(success, OptionStatus.OPT_SUCCESS.getName(), null);
  231 + } catch (Exception ex) {
  232 + ex.printStackTrace();
  233 + log.error(ex.getMessage());
  234 + return JsonResult.error(OptionStatus.OPT_ERROR.getName());
  235 + }
  236 + }
  237 +
  238 +
189 } 239 }
@@ -77,85 +77,12 @@ public class Case extends BaseModel { @@ -77,85 +77,12 @@ public class Case extends BaseModel {
77 private ReviewStatusEnum reviewStatus; 77 private ReviewStatusEnum reviewStatus;
78 78
79 79
80 -  
81 -// 分析数据  
82 - /**  
83 - * 地区  
84 - */  
85 - @TableField(value = "area")  
86 - private String area;  
87 -  
88 - /**  
89 - * 县区  
90 - */  
91 - @TableField(value = "county")  
92 - private String county;  
93 -  
94 -  
95 - /**  
96 - * 涉案总金额  
97 - */  
98 - @TableField(value = "total_amount")  
99 - private Double totalAmount;  
100 -  
101 - /**  
102 - * 案损金额  
103 - */  
104 - @TableField(value = "amount")  
105 - private Double amount;  
106 -  
107 - /**  
108 - * 受害人性别  
109 - */  
110 - @TableField(value = "sex")  
111 - private String sex;  
112 -  
113 - /**  
114 - * 受害人年龄  
115 - */  
116 - @TableField(value = "age")  
117 - private Integer age;  
118 -  
119 - /**  
120 - * 受害人职业  
121 - */  
122 - @TableField(value = "career")  
123 - private String career;  
124 -  
125 - /**  
126 - * 身份证号码  
127 - */  
128 - @TableField(value = "id_card")  
129 - private String idCard;  
130 -  
131 - /**  
132 - * 诈骗类型  
133 - */  
134 - @TableField(value = "fraud_type")  
135 - private String fraudType;  
136 -  
137 - /**  
138 - * 引流方式  
139 - */  
140 - @TableField(value = "rainage_method")  
141 - private String rainageMethod;  
142 -  
143 - /**  
144 - * 引流方式详情  
145 - */  
146 - @TableField(value = "rainage_detail")  
147 - private String rainageDetail;  
148 -  
149 - /**  
150 - * 支付方式  
151 - */  
152 - @TableField(value = "pay_method")  
153 - private String payMethod;  
154 -  
155 -  
156 @Transient 80 @Transient
157 private transient String startTime; 81 private transient String startTime;
158 82
159 @Transient 83 @Transient
160 private transient String endTime; 84 private transient String endTime;
  85 +
  86 + @Transient
  87 + private transient CaseAnalysis analysis;
161 } 88 }
  1 +package com.ash.entity;
  2 +
  3 +import com.ash.base.BaseModel;
  4 +import com.ash.enums.ConformStatusEnum;
  5 +import com.baomidou.mybatisplus.annotation.TableField;
  6 +import com.baomidou.mybatisplus.annotation.TableId;
  7 +import com.baomidou.mybatisplus.annotation.TableName;
  8 +import com.fasterxml.jackson.annotation.JsonInclude;
  9 +import lombok.Data;
  10 +
  11 +@Data
  12 +@TableName(value = "t_ash_case_analysis")
  13 +@JsonInclude(JsonInclude.Include.NON_NULL)
  14 +public class CaseAnalysis extends BaseModel {
  15 +
  16 + @TableId(value = "id")
  17 + private String id;
  18 +
  19 + /**
  20 + * 案件id
  21 + */
  22 + @TableField(value = "case_id")
  23 + private String caseId;
  24 +
  25 + /**
  26 + * 地区
  27 + */
  28 + @TableField(value = "area")
  29 + private String area;
  30 +
  31 + /**
  32 + * 县区
  33 + */
  34 + @TableField(value = "county")
  35 + private String county;
  36 +
  37 +
  38 + /**
  39 + * 涉案总金额
  40 + */
  41 + @TableField(value = "total_amount")
  42 + private Double totalAmount;
  43 +
  44 + /**
  45 + * 案损金额
  46 + */
  47 + @TableField(value = "amount")
  48 + private Double amount;
  49 +
  50 + /**
  51 + * 受害人性别
  52 + */
  53 + @TableField(value = "sex")
  54 + private String sex;
  55 +
  56 + /**
  57 + * 受害人年龄
  58 + */
  59 + @TableField(value = "age")
  60 + private Integer age;
  61 +
  62 + /**
  63 + * 受害人职业
  64 + */
  65 + @TableField(value = "career")
  66 + private String career;
  67 +
  68 + /**
  69 + * 身份证号码
  70 + */
  71 + @TableField(value = "id_card")
  72 + private String idCard;
  73 +
  74 + /**
  75 + * 诈骗类型
  76 + */
  77 + @TableField(value = "fraud_type")
  78 + private String fraudType;
  79 +
  80 + /**
  81 + * 引流方式
  82 + */
  83 + @TableField(value = "rainage_method")
  84 + private String rainageMethod;
  85 +
  86 + /**
  87 + * 引流方式详情
  88 + */
  89 + @TableField(value = "rainage_detail")
  90 + private String rainageDetail;
  91 +
  92 + /**
  93 + * 支付方式
  94 + */
  95 + @TableField(value = "pay_method")
  96 + private String payMethod;
  97 +
  98 + /**
  99 + * 确认状态
  100 + */
  101 + @TableField(value = "conform_status")
  102 + private ConformStatusEnum conformStatus;
  103 +}
@@ -152,4 +152,7 @@ public class WarningInstance extends BaseModel { @@ -152,4 +152,7 @@ public class WarningInstance extends BaseModel {
152 152
153 @Transient 153 @Transient
154 private transient String endTime; 154 private transient String endTime;
  155 +
  156 + @Transient
  157 + private transient WarningInstanceAnalysis analysis;
155 } 158 }
1 package com.ash.entity; 1 package com.ash.entity;
2 2
3 import com.ash.base.BaseModel; 3 import com.ash.base.BaseModel;
  4 +import com.ash.enums.ConformStatusEnum;
4 import com.baomidou.mybatisplus.annotation.TableField; 5 import com.baomidou.mybatisplus.annotation.TableField;
5 import com.baomidou.mybatisplus.annotation.TableId; 6 import com.baomidou.mybatisplus.annotation.TableId;
6 import com.baomidou.mybatisplus.annotation.TableName; 7 import com.baomidou.mybatisplus.annotation.TableName;
  8 +import com.fasterxml.jackson.annotation.JsonInclude;
  9 +import com.github.yulichang.common.support.func.S;
7 import lombok.Data; 10 import lombok.Data;
8 11
9 @Data 12 @Data
  13 +@JsonInclude(JsonInclude.Include.NON_NULL)
10 @TableName(value = "t_ash_warning_instance_analysis") 14 @TableName(value = "t_ash_warning_instance_analysis")
11 public class WarningInstanceAnalysis extends BaseModel { 15 public class WarningInstanceAnalysis extends BaseModel {
12 @TableId(value = "id") 16 @TableId(value = "id")
13 private String id; 17 private String id;
14 18
  19 +
  20 + /**
  21 + * 警情id
  22 + */
  23 + @TableField(value = "wi_id")
  24 + private String wiId;
  25 +
15 /** 26 /**
16 * 地区 27 * 地区
17 */ 28 */
@@ -48,4 +59,10 @@ public class WarningInstanceAnalysis extends BaseModel { @@ -48,4 +59,10 @@ public class WarningInstanceAnalysis extends BaseModel {
48 @TableField(value = "pay_method") 59 @TableField(value = "pay_method")
49 private String payMethod; 60 private String payMethod;
50 61
  62 + /**
  63 + * 确认状态
  64 + */
  65 + @TableField(value = "conform_status")
  66 + private ConformStatusEnum conformStatus;
  67 +
51 } 68 }
  1 +package com.ash.entity.dao;
  2 +
  3 +import com.ash.entity.CaseAnalysis;
  4 +import com.github.yulichang.base.MPJBaseMapper;
  5 +import org.apache.ibatis.annotations.Mapper;
  6 +import org.springframework.stereotype.Repository;
  7 +
  8 +@Mapper
  9 +@Repository
  10 +public interface CaseAnalysisMapper extends CommonBaseMapper<CaseAnalysis>, MPJBaseMapper<CaseAnalysis> {
  11 +}
  1 +package com.ash.enums;
  2 +
  3 +public enum ConformStatusEnum {
  4 + CONFIRMED("已确认"),
  5 + UNCONFIRMED("未确认"),
  6 + ;
  7 +
  8 +
  9 + private final String text;
  10 +
  11 + private ConformStatusEnum(String text) {
  12 + this.text = text;
  13 + }
  14 +
  15 + public String getText() {
  16 + return text;
  17 + }
  18 +}
  1 +package com.ash.service;
  2 +
  3 +import com.ash.base.AshErrorCode;
  4 +import com.ash.base.AshException;
  5 +import com.ash.entity.Case;
  6 +import com.ash.entity.CaseAnalysis;
  7 +import com.ash.entity.dao.CaseAnalysisMapper;
  8 +import com.ash.enums.ConformStatusEnum;
  9 +import com.ash.enums.ReviewStatusEnum;
  10 +import com.ash.util.UUIDGenerator;
  11 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  13 +import lombok.extern.slf4j.Slf4j;
  14 +import org.apache.commons.collections.CollectionUtils;
  15 +import org.apache.commons.lang3.StringUtils;
  16 +import org.springframework.stereotype.Service;
  17 +import org.springframework.transaction.annotation.Transactional;
  18 +
  19 +import javax.annotation.Resource;
  20 +import java.util.HashMap;
  21 +import java.util.List;
  22 +import java.util.Map;
  23 +import java.util.function.Function;
  24 +import java.util.stream.Collectors;
  25 +
  26 +@Slf4j
  27 +@Service
  28 +public class CaseAnalysisService {
  29 +
  30 + @Resource
  31 + private CaseAnalysisMapper caseAnalysisMapper;
  32 +
  33 + @Resource
  34 + private CaseService caseService;
  35 +
  36 + public static Map<String, String> codeAreaMap = new HashMap<>();
  37 +
  38 + static {
  39 + codeAreaMap.put("A3401", "合肥");
  40 + codeAreaMap.put("A3402", "芜湖");
  41 + codeAreaMap.put("A3403", "蚌埠");
  42 + codeAreaMap.put("A3404", "淮南");
  43 + codeAreaMap.put("A3405", "马鞍山");
  44 + codeAreaMap.put("A3406", "淮北");
  45 + codeAreaMap.put("A3407", "铜陵");
  46 + codeAreaMap.put("A3408", "安庆");
  47 + codeAreaMap.put("A3410", "黄山");
  48 + codeAreaMap.put("A3411", "滁州");
  49 + codeAreaMap.put("A3412", "阜阳");
  50 + codeAreaMap.put("A3413", "宿州");
  51 + codeAreaMap.put("A3415", "六安");
  52 + codeAreaMap.put("A3416", "亳州");
  53 + codeAreaMap.put("A3417", "池州");
  54 + codeAreaMap.put("A3418", "宣城");
  55 + }
  56 +
  57 + public Boolean save(CaseAnalysis data) {
  58 + String uuid = UUIDGenerator.uuid();
  59 + data.setId(uuid);
  60 + if (data.getConformStatus() == null) {
  61 + data.setConformStatus(ConformStatusEnum.UNCONFIRMED);
  62 + }
  63 +
  64 + if (StringUtils.isBlank(data.getCaseId())) {
  65 + throw new AshException(AshErrorCode.ILLEGAL_PARAM, "caseId is empty!");
  66 + }
  67 +
  68 + Case caseInfo = caseService.load(data.getCaseId());
  69 + setArea(caseInfo.getCode(), data);
  70 +
  71 + int insert = caseAnalysisMapper.insert(data);
  72 + return insert > 0;
  73 + }
  74 +
  75 + public CaseAnalysis load(String id) {
  76 + return caseAnalysisMapper.selectById(id);
  77 + }
  78 +
  79 + public void update(CaseAnalysis data) {
  80 + String id = data.getId();
  81 + if (StringUtils.isBlank(id)) {
  82 + throw new AshException(AshErrorCode.ILLEGAL_PARAM, "id is empty!");
  83 + }
  84 + CaseAnalysis oldData = caseAnalysisMapper.selectById(id);
  85 + if (oldData == null) {
  86 + throw new AshException(AshErrorCode.DATA_NOT_EXIST);
  87 + }
  88 +
  89 + Case caseInfo = caseService.load(data.getCaseId());
  90 + setArea(caseInfo.getCode(), data);
  91 +
  92 + caseAnalysisMapper.updateById(data);
  93 + }
  94 +
  95 + private void setArea(String caseCode, CaseAnalysis data) {
  96 + if (data != null && StringUtils.isNotBlank(caseCode) && caseCode.length() >= 4) {
  97 + String area = codeAreaMap.get(caseCode.substring(0, 5));
  98 + if (StringUtils.isNotBlank(area)) {
  99 + data.setArea(area);
  100 + } else {
  101 + data.setArea("未知");
  102 + }
  103 + }
  104 + }
  105 +
  106 + public Map<String, CaseAnalysis> listByCaseId(List<String> caseIds) {
  107 + QueryWrapper<CaseAnalysis> queryWrapper = new QueryWrapper<>();
  108 + LambdaQueryWrapper<CaseAnalysis> lambda = queryWrapper.lambda();
  109 + lambda.in(CaseAnalysis::getCaseId, caseIds);
  110 + List<CaseAnalysis> warningInstanceAnalyses = caseAnalysisMapper.selectList(queryWrapper);
  111 + if (CollectionUtils.isNotEmpty(warningInstanceAnalyses)) {
  112 + return warningInstanceAnalyses.stream()
  113 + .collect(Collectors.toMap(CaseAnalysis::getCaseId, Function.identity()));
  114 + }
  115 + return new HashMap<>();
  116 + }
  117 +
  118 + @Transactional
  119 + public Boolean conform(CaseAnalysis data) {
  120 + Boolean result = true;
  121 + data.setConformStatus(ConformStatusEnum.CONFIRMED);
  122 + update(data);
  123 + Case caseInfo = caseService.load(data.getCaseId());
  124 + caseInfo.setReviewStatus(ReviewStatusEnum.AUDITED);
  125 + caseService.update(caseInfo);
  126 + return result;
  127 + }
  128 +
  129 +
  130 + @Transactional
  131 + public Boolean cancelConform(CaseAnalysis data) {
  132 + Boolean result = true;
  133 + CaseAnalysis wa = load(data.getId());
  134 + wa.setConformStatus(ConformStatusEnum.UNCONFIRMED);
  135 + update(wa);
  136 + Case caseInfo = caseService.load(wa.getCaseId());
  137 + caseInfo.setReviewStatus(ReviewStatusEnum.UNAUDITED);
  138 + caseService.update(caseInfo);
  139 + return result;
  140 + }
  141 +}
@@ -8,6 +8,7 @@ import com.ash.base.AshException; @@ -8,6 +8,7 @@ import com.ash.base.AshException;
8 import com.ash.base.BaseModel; 8 import com.ash.base.BaseModel;
9 import com.ash.base.excelOpt.ExcelErrorMessage; 9 import com.ash.base.excelOpt.ExcelErrorMessage;
10 import com.ash.entity.Case; 10 import com.ash.entity.Case;
  11 +import com.ash.entity.CaseAnalysis;
11 import com.ash.entity.dao.CaseMapper; 12 import com.ash.entity.dao.CaseMapper;
12 import com.ash.excelData.CaseExcelData; 13 import com.ash.excelData.CaseExcelData;
13 import com.ash.listener.CaseExcelListener; 14 import com.ash.listener.CaseExcelListener;
@@ -37,46 +38,19 @@ public class CaseService { @@ -37,46 +38,19 @@ public class CaseService {
37 @Resource 38 @Resource
38 private CaseMapper caseMapper; 39 private CaseMapper caseMapper;
39 40
40 - public static Map<String, String> codeAreaMap = new HashMap<>();  
41 -  
42 - static {  
43 - codeAreaMap.put("A3401", "合肥");  
44 - codeAreaMap.put("A3402", "芜湖");  
45 - codeAreaMap.put("A3403", "蚌埠");  
46 - codeAreaMap.put("A3404", "淮南");  
47 - codeAreaMap.put("A3405", "马鞍山");  
48 - codeAreaMap.put("A3406", "淮北");  
49 - codeAreaMap.put("A3407", "铜陵");  
50 - codeAreaMap.put("A3408", "安庆");  
51 - codeAreaMap.put("A3410", "黄山");  
52 - codeAreaMap.put("A3411", "滁州");  
53 - codeAreaMap.put("A3412", "阜阳");  
54 - codeAreaMap.put("A3413", "宿州");  
55 - codeAreaMap.put("A3415", "六安");  
56 - codeAreaMap.put("A3416", "亳州");  
57 - codeAreaMap.put("A3417", "池州");  
58 - codeAreaMap.put("A3418", "宣城");  
59 - }  
60 -  
61 public Boolean save(Case data) { 41 public Boolean save(Case data) {
62 String uuid = UUIDGenerator.uuid(); 42 String uuid = UUIDGenerator.uuid();
63 data.setId(uuid); 43 data.setId(uuid);
64 - setArea(data);  
65 int insert = caseMapper.insert(data); 44 int insert = caseMapper.insert(data);
66 return insert > 0; 45 return insert > 0;
67 } 46 }
68 47
69 - private void setArea(Case data) {  
70 - if (data != null && StringUtils.isNotBlank(data.getCode()) && data.getCode().length() >= 4) {  
71 - String area = codeAreaMap.get(data.getCode().substring(0, 5));  
72 - if (StringUtils.isNotBlank(area)) {  
73 - data.setArea(area);  
74 - } else {  
75 - data.setArea("未知");  
76 - }  
77 - } 48 + public Case load(String id) {
  49 + return caseMapper.selectById(id);
78 } 50 }
79 51
  52 +
  53 +
80 public Boolean saveAll(List<Case> dataList) { 54 public Boolean saveAll(List<Case> dataList) {
81 if (CollectionUtils.isEmpty(dataList)) { 55 if (CollectionUtils.isEmpty(dataList)) {
82 throw new AshException(AshErrorCode.ILLEGAL_PARAM, "dataList is empty!"); 56 throw new AshException(AshErrorCode.ILLEGAL_PARAM, "dataList is empty!");
@@ -97,7 +71,6 @@ public class CaseService { @@ -97,7 +71,6 @@ public class CaseService {
97 sub.forEach(t -> { 71 sub.forEach(t -> {
98 String uuid = UUIDGenerator.uuid(); 72 String uuid = UUIDGenerator.uuid();
99 t.setId(uuid); 73 t.setId(uuid);
100 - setArea(t);  
101 }); 74 });
102 try { 75 try {
103 Integer result = caseMapper.insertBatchSomeColumn(sub); 76 Integer result = caseMapper.insertBatchSomeColumn(sub);
@@ -122,7 +95,6 @@ public class CaseService { @@ -122,7 +95,6 @@ public class CaseService {
122 throw new AshException(AshErrorCode.DATA_NOT_EXIST); 95 throw new AshException(AshErrorCode.DATA_NOT_EXIST);
123 } 96 }
124 97
125 - setArea(data);  
126 int result = caseMapper.updateById(data); 98 int result = caseMapper.updateById(data);
127 return result > 0; 99 return result > 0;
128 } 100 }
@@ -15,11 +15,10 @@ public class FileDataService { @@ -15,11 +15,10 @@ public class FileDataService {
15 @Resource 15 @Resource
16 private FileDataMapper fileDataMapper; 16 private FileDataMapper fileDataMapper;
17 17
18 - public Boolean save(FileData data) { 18 + public void save(FileData data) {
19 String uuid = UUIDGenerator.uuid(); 19 String uuid = UUIDGenerator.uuid();
20 data.setId(uuid); 20 data.setId(uuid);
21 int insert = fileDataMapper.insert(data); 21 int insert = fileDataMapper.insert(data);
22 - return insert > 0;  
23 } 22 }
24 23
25 public FileData load(String id) { 24 public FileData load(String id) {
  1 +package com.ash.service;
  2 +
  3 +import com.ash.base.AshErrorCode;
  4 +import com.ash.base.AshException;
  5 +import com.ash.entity.WarningInstance;
  6 +import com.ash.entity.WarningInstanceAnalysis;
  7 +import com.ash.entity.dao.WarningInstanceAnalysisMapper;
  8 +import com.ash.enums.ConformStatusEnum;
  9 +import com.ash.enums.ReviewStatusEnum;
  10 +import com.ash.util.UUIDGenerator;
  11 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  12 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  13 +import lombok.extern.slf4j.Slf4j;
  14 +import org.apache.commons.collections.CollectionUtils;
  15 +import org.apache.commons.lang3.StringUtils;
  16 +import org.springframework.stereotype.Service;
  17 +import org.springframework.transaction.annotation.Transactional;
  18 +
  19 +import javax.annotation.Resource;
  20 +import java.util.HashMap;
  21 +import java.util.List;
  22 +import java.util.Map;
  23 +import java.util.function.Function;
  24 +import java.util.stream.Collectors;
  25 +
  26 +@Slf4j
  27 +@Service
  28 +public class WarningInstanceAnalysisService {
  29 +
  30 + @Resource
  31 + private WarningInstanceAnalysisMapper warningInstanceAnalysisMapper;
  32 +
  33 + @Resource
  34 + private WarningInstanceService warningInstanceService;
  35 +
  36 + public Boolean save(WarningInstanceAnalysis data) {
  37 + String uuid = UUIDGenerator.uuid();
  38 + data.setId(uuid);
  39 + if (data.getConformStatus() == null) {
  40 + data.setConformStatus(ConformStatusEnum.UNCONFIRMED);
  41 + }
  42 + int insert = warningInstanceAnalysisMapper.insert(data);
  43 + return insert > 0;
  44 + }
  45 +
  46 + public WarningInstanceAnalysis load(String id) {
  47 + return warningInstanceAnalysisMapper.selectById(id);
  48 + }
  49 +
  50 + public void update(WarningInstanceAnalysis data) {
  51 + String id = data.getId();
  52 + if (StringUtils.isBlank(id)) {
  53 + throw new AshException(AshErrorCode.ILLEGAL_PARAM, "id is empty!");
  54 + }
  55 + WarningInstanceAnalysis oldData = warningInstanceAnalysisMapper.selectById(id);
  56 + if (oldData == null) {
  57 + throw new AshException(AshErrorCode.DATA_NOT_EXIST);
  58 + }
  59 +
  60 + int result = warningInstanceAnalysisMapper.updateById(data);
  61 + }
  62 +
  63 + public Map<String, WarningInstanceAnalysis> listByWiId(List<String> wiIds) {
  64 + QueryWrapper<WarningInstanceAnalysis> queryWrapper = new QueryWrapper<>();
  65 + LambdaQueryWrapper<WarningInstanceAnalysis> lambda = queryWrapper.lambda();
  66 + lambda.in(WarningInstanceAnalysis::getWiId, wiIds);
  67 + List<WarningInstanceAnalysis> warningInstanceAnalyses = warningInstanceAnalysisMapper.selectList(queryWrapper);
  68 + if (CollectionUtils.isNotEmpty(warningInstanceAnalyses)) {
  69 + return warningInstanceAnalyses.stream()
  70 + .collect(Collectors.toMap(WarningInstanceAnalysis::getWiId, Function.identity()));
  71 + }
  72 + return new HashMap<>();
  73 + }
  74 +
  75 + @Transactional
  76 + public Boolean conform(WarningInstanceAnalysis data) {
  77 + Boolean result = true;
  78 + data.setConformStatus(ConformStatusEnum.CONFIRMED);
  79 + update(data);
  80 + WarningInstance wi = warningInstanceService.load(data.getWiId());
  81 + wi.setReviewStatus(ReviewStatusEnum.AUDITED);
  82 + warningInstanceService.update(wi);
  83 + return result;
  84 + }
  85 +
  86 +
  87 + @Transactional
  88 + public Boolean cancelConform(WarningInstanceAnalysis data) {
  89 + Boolean result = true;
  90 + WarningInstanceAnalysis wa = load(data.getId());
  91 + wa.setConformStatus(ConformStatusEnum.UNCONFIRMED);
  92 + update(wa);
  93 + WarningInstance wi = warningInstanceService.load(wa.getWiId());
  94 + wi.setReviewStatus(ReviewStatusEnum.UNAUDITED);
  95 + warningInstanceService.update(wi);
  96 + return result;
  97 + }
  98 +
  99 +}
@@ -41,6 +41,10 @@ public class WarningInstanceService { @@ -41,6 +41,10 @@ public class WarningInstanceService {
41 return insert > 0; 41 return insert > 0;
42 } 42 }
43 43
  44 + public WarningInstance load(String id) {
  45 + return warningInstanceMapper.selectById(id);
  46 + }
  47 +
44 public Boolean saveAll(List<WarningInstance> dataList) { 48 public Boolean saveAll(List<WarningInstance> dataList) {
45 if (CollectionUtils.isEmpty(dataList)) { 49 if (CollectionUtils.isEmpty(dataList)) {
46 throw new AshException(AshErrorCode.ILLEGAL_PARAM, "dataList is empty!"); 50 throw new AshException(AshErrorCode.ILLEGAL_PARAM, "dataList is empty!");
@@ -36,4 +36,3 @@ logging: @@ -36,4 +36,3 @@ logging:
36 ash: 36 ash:
37 # errorFilePath: D:/data/errorData 37 # errorFilePath: D:/data/errorData
38 errorFilePath: /web/errorData 38 errorFilePath: /web/errorData
39 - fileDomain: http://localhost/file  
@@ -29,6 +29,26 @@ create table `t_ash_warning_instance` @@ -29,6 +29,26 @@ create table `t_ash_warning_instance`
29 primary key (id) 29 primary key (id)
30 ) comment = '警情列表' ENGINE = InnoDB; 30 ) comment = '警情列表' ENGINE = InnoDB;
31 31
  32 +create table `t_ash_warning_instance_analysis`
  33 +(
  34 + id varchar(32) not null,
  35 + wi_id varchar(32),
  36 + area varchar(50),
  37 + amount double,
  38 + sex varchar(50),
  39 + career varchar(50),
  40 + rainage_method varchar(50),
  41 + pay_method varchar(50),
  42 + conform_status varchar(50) DEFAULT 'UNCONFIRMED',
  43 + create_time timestamp null,
  44 + create_by varchar(32),
  45 + last_modify_time timestamp null,
  46 + last_modify_by varchar(32),
  47 + primary key (id)
  48 +) comment = '警情分析结果' ENGINE = InnoDB;
  49 +
  50 +create index i_wia_wi on t_ash_warning_instance_analysis(wi_id);
  51 +
32 create table `t_ash_case` 52 create table `t_ash_case`
33 ( 53 (
34 id varchar(32) not null, 54 id varchar(32) not null,
@@ -60,6 +80,31 @@ create table `t_ash_case` @@ -60,6 +80,31 @@ create table `t_ash_case`
60 primary key (id) 80 primary key (id)
61 ) comment = '案件列表' ENGINE = InnoDB; 81 ) comment = '案件列表' ENGINE = InnoDB;
62 82
  83 +create table `t_ash_case_analysis`
  84 +(
  85 + id varchar(32) not null,
  86 + case_id varchar(50),
  87 + area varchar(50),
  88 + county varchar(50),
  89 + total_amount double,
  90 + amount double,
  91 + sex varchar(50),
  92 + age int,
  93 + career varchar(50),
  94 + id_card varchar(50),
  95 + fraud_type varchar(50),
  96 + rainage_method varchar(50),
  97 + rainage_detail varchar(500),
  98 + pay_method varchar(50),
  99 + conform_status varchar(50) DEFAULT 'UNCONFIRMED',
  100 + create_time timestamp null,
  101 + create_by varchar(32),
  102 + last_modify_time timestamp null,
  103 + last_modify_by varchar(32),
  104 + primary key (id)
  105 +) comment = '案件分析结果' ENGINE = InnoDB;
  106 +
  107 +create index i_case_ci on t_ash_case_analysis(case_id);
63 108
64 create table `t_ash_file_data` 109 create table `t_ash_file_data`
65 ( 110 (