Commit 251bf766 by caojingji

Merge remote-tracking branch 'remotes/master/master' into caopeng_bate1

parents 7d616a65 e27defe0
...@@ -298,6 +298,7 @@ public class DzgzController { ...@@ -298,6 +298,7 @@ public class DzgzController {
dzgzTask.setLc(node.getJSONArray("lc").toString()); dzgzTask.setLc(node.getJSONArray("lc").toString());
dzgzTask.setProgress("0"); dzgzTask.setProgress("0");
dzgzTask.setState("QUEUEING"); dzgzTask.setState("QUEUEING");
dzgzTask.setGlxxXxzjbh(KeyUtil.getUniqueKey("GL"));
if(null != user){ if(null != user){
dzgzTask.setFsrJh(user.getUsername()); dzgzTask.setFsrJh(user.getUsername());
dzgzTask.setFsrSfzh(user.getCard_id()); dzgzTask.setFsrSfzh(user.getCard_id());
......
...@@ -8,6 +8,8 @@ import java.util.Date; ...@@ -8,6 +8,8 @@ import java.util.Date;
@Data @Data
public class DzgzTask { public class DzgzTask {
private String cdtlfxzt;//案前踩点案后逃离分析状态 0-未分析完成 1-分析完成
private String glxxXxzjbh;//关联信息信息主键编号---用于判断该任务为普通的电子固证去值还是案前踩点,案后逃离信息取值
private String rwresult;//任务结果 private String rwresult;//任务结果
private String rwsd;//任务时段 0-当天该时段 1-前一天该时段 2-前两天该时段 3-前三天该时段 4-前四天(整天) 5-前五天(整天) 6-后三天(整三天) private String rwsd;//任务时段 0-当天该时段 1-前一天该时段 2-前两天该时段 3-前三天该时段 4-前四天(整天) 5-前五天(整天) 6-后三天(整三天)
private String taskId;//任务编号 private String taskId;//任务编号
......
...@@ -326,4 +326,169 @@ public class DzgzScheduledServer{ ...@@ -326,4 +326,169 @@ public class DzgzScheduledServer{
} }
return list; return list;
} }
/**
* 去除重复数据String
* @param list
* @return
*/
public static List<String> removeDuplicateString(List<String> list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
return list;
}
/**
* 进行案前踩点与案后分析模型的分析
*/
//@Scheduled(initialDelay = 20000,fixedDelay = 180000) //项目启动后延迟1分钟执行,每次执行完后三分钟后再次执行
public void getTaskResult(){
System.out.println("=============AJDZGZ Thread startting ===============");
System.out.println("=============AJDZGZ Thread startting ===============");
System.out.println("=============AJDZGZ Thread startting ===============");
System.out.println("=============AJDZGZ Thread startting ===============");
System.out.println("=============AJDZGZ Thread startting ===============");
System.out.println("=============AJDZGZ Thread startting ===============");
Map map = new HashMap();
map.put("rwsd","1");
map.put("cdtlfxzt","0");
//拿到踩点逃离的数据 拿到所有案件未分析的任务
List<DzgzTask> dzgzList = taskMapper.queryAllAjwfxTask(map);
System.out.println("size:"+dzgzList.size());
//依次拿到所有的数据
if(dzgzList!=null&&dzgzList.size()>0){
for(int i=0;i<dzgzList.size();i++){
//依次拿到所有的数据,进行分析入库
try{
doAjfx(dzgzList.get(i));
}catch (Exception e){
System.out.println("案前踩点、案后逃离分析任务失败!!!");
e.printStackTrace();
}
}
}
}
/**
* 案前踩点、案后逃离分析
* @param dzgzTask
*/
private void doAjfx(DzgzTask dzgzTask) throws Exception{
String glxxXxzjbh = dzgzTask.getGlxxXxzjbh();
//通过关联信息主键编号拿到所有案前踩点、案后逃离的所有任务
Map ajMap = new HashMap();
ajMap.put("glxxXxzjbh",glxxXxzjbh);
ajMap.put("progressZt","0");
List<DzgzTask> ajDzgzList = taskMapper.queryAllAjwfxTask(ajMap);
if(ajDzgzList!=null&&ajDzgzList.size()==7){//该模型共会发送7个任务,必须7个任务都有从网安返回的结果时才进行数据分析
System.out.println("size22222");
//定义模型中7个参数
List<String> dzgzTaskResultListNow = new ArrayList<>();//当天该时段 rwsd-0
List<String> dzgzTaskResultListBefore1 = new ArrayList<>();//前一天该时段 rwsd-1
List<String> dzgzTaskResultListBefore2 = new ArrayList<>();//前二天该时段 rwsd-2
List<String> dzgzTaskResultListBefore3 = new ArrayList<>();//前三天该时段 rwsd-3
List<String> dzgzTaskResultListBefore4 = new ArrayList<>();//前四天该时段 rwsd-4
List<String> dzgzTaskResultListBefore5 = new ArrayList<>();//前五天该时段 rwsd-5
List<String> dzgzTaskResultListAfter3 = new ArrayList<>();//后三天该时段 rwsd-6
for(int i=0;i<ajDzgzList.size();i++){
System.out.println("size33333");
//拿到任务完成状态
DzgzTask task = ajDzgzList.get(i);
String progress = task.getProgress();
String rwsd = task.getRwsd();
String taskId = task.getTaskId();
String result_str = task.getRwresult();
List<String> taskResult = new ArrayList<>();
if("1".equals(progress)){//网安有结果返回且已经全部入库
taskResult = taskResultMapper.getAllImsiResultsByTaskid(taskId);
taskResult = removeDuplicateString(taskResult);
}else{//未存入数据库 但是已经拿到json结果
//解析返回的json结果
if(result_str!=null&&!"".endsWith(result_str.trim())) {
JSONObject result_return = JSONObject.parseObject(result_str);
JSONObject objectData = result_return.getJSONObject("data");
JSONArray jsonArray = objectData.getJSONArray("list");
if (jsonArray != null && jsonArray.size() > 0) {
List<DzgzTaskResult> taskResults = new ArrayList<>();
taskResults = jsonArray.toJavaList(DzgzTaskResult.class);
taskResults = removeDuplicate(taskResults);
for(int t=0;t<taskResults.size();t++){
DzgzTaskResult res = taskResults.get(t);
if("IMSI".equals(res.getObjectTypeName())){
taskResult.add(res.getObjectValue());
}
}
}
}
}
//查询所有的imsi
if("0".equals(rwsd)){
dzgzTaskResultListNow = taskResult;
}else if("1".equals(rwsd)){
dzgzTaskResultListBefore1 = taskResult;
}else if("2".equals(rwsd)){
dzgzTaskResultListBefore2 = taskResult;
}else if("3".equals(rwsd)){
dzgzTaskResultListBefore3 = taskResult;
}else if("4".equals(rwsd)){
dzgzTaskResultListBefore4 = taskResult;
}else if("5".equals(rwsd)){
dzgzTaskResultListBefore5 = taskResult;
}else if("6".equals(rwsd)){
dzgzTaskResultListAfter3 = taskResult;
}
System.out.println("size444444444");
}
System.out.println("当天该时段的imsi数量:"+dzgzTaskResultListNow.size());
System.out.println("前一天该时段的imsi数量:"+dzgzTaskResultListBefore1.size());
System.out.println("前两天该时段的imsi数量:"+dzgzTaskResultListBefore2.size());
System.out.println("前三天该时段的imsi数量:"+dzgzTaskResultListBefore3.size());
System.out.println("前四天的imsi数量:"+dzgzTaskResultListBefore4.size());
System.out.println("前五天的imsi数量:"+dzgzTaskResultListBefore5.size());
System.out.println("后三天的imsi数量:"+dzgzTaskResultListAfter3.size());
//进行案前踩点分析----拿到当天与前1/2/3天重合的数据 这些数据不存在与前4/5天
//先拿不存在前4/5天的,常住人口多余流动人口
Collection notexists=new ArrayList<String>(dzgzTaskResultListNow);//不存在第四、五天的imsi
notexists.removeAll(dzgzTaskResultListBefore4);//去掉第四天和当天重复的imsi,得到嫌疑imsi
System.out.println("存在于当天,不存在前第四天的imsi数量:"+notexists.size());
notexists.removeAll(dzgzTaskResultListBefore5);//嫌疑imsi不能存在第五天,即去掉第五天与嫌疑imsi重合的数据
System.out.println("存在于当天,不存在前第四、五天的imsi数量:"+notexists.size());
//拿到不存在四五天的imsi,该imsi必须存在于前1/2/3天
Collection notexists1 = new ArrayList<String>(dzgzTaskResultListBefore1);
Collection exists1 = new ArrayList<String>(dzgzTaskResultListBefore1);
notexists1.removeAll(notexists);
exists1.removeAll(notexists1);
System.out.println("存在于当天、前一天,不存在前第四、五天的imsi数量:"+exists1.size());
Collection notexists2 = new ArrayList<String>(dzgzTaskResultListBefore2);
Collection exists2 = new ArrayList<String>(dzgzTaskResultListBefore2);
notexists2.removeAll(exists1);
exists2.removeAll(notexists2);
System.out.println("存在于当天、前一天、前两天,不存在前第四、五天的imsi数量:"+exists2.size());
Collection notexists3 = new ArrayList<String>(dzgzTaskResultListBefore3);
Collection aqcdImsi = new ArrayList<String>(dzgzTaskResultListBefore3);//案前踩点可疑imsi
notexists3.removeAll(exists2);
aqcdImsi.removeAll(notexists3);
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
System.out.println("存在于当天、前一天、前两天、前三天,不存在前第四、五天的imsi数量,即案前踩点imsi:"+aqcdImsi);
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
Collection after3 = new ArrayList<String>(dzgzTaskResultListAfter3);
aqcdImsi.removeAll(after3);
System.out.println("案后逃离imsi:"+aqcdImsi);
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
System.out.println("+++++++++++++++++++++++++++++++++++++++++++");
}
}
} }
...@@ -6,6 +6,7 @@ import com.founder.interservice.dzgz.model.DzgzTaskResult; ...@@ -6,6 +6,7 @@ import com.founder.interservice.dzgz.model.DzgzTaskResult;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
import java.util.Map;
@Repository @Repository
public interface DzgzTaskMapper { public interface DzgzTaskMapper {
...@@ -25,4 +26,6 @@ public interface DzgzTaskMapper { ...@@ -25,4 +26,6 @@ public interface DzgzTaskMapper {
int getDzgjResultDetailListTotalCount(DzgzTaskResult dzgzTaskResult) throws Exception; int getDzgjResultDetailListTotalCount(DzgzTaskResult dzgzTaskResult) throws Exception;
List<DzgzTask> queryAllUnFinishTask(); List<DzgzTask> queryAllUnFinishTask();
List<DzgzTask> queryAllAjwfxTask(Map map);
} }
...@@ -20,4 +20,6 @@ public interface DzgzTaskResultMapper { ...@@ -20,4 +20,6 @@ public interface DzgzTaskResultMapper {
int dzgzDetailIsExist(RegionalTaskResultDetail param)throws Exception; int dzgzDetailIsExist(RegionalTaskResultDetail param)throws Exception;
int existsDzgzTaskResult(DzgzTaskResult dzgzTask); int existsDzgzTaskResult(DzgzTaskResult dzgzTask);
List<String> getAllImsiResultsByTaskid(String taskId);
} }
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
INSERT INTO TB_ST_DZGZTASK INSERT INTO TB_ST_DZGZTASK
( (
TASK_ID, TASK_ID,
GLXX_XXZJBH,
RWSD, RWSD,
TASK_NAME, TASK_NAME,
TASK_CASE_ID, TASK_CASE_ID,
...@@ -61,6 +62,12 @@ ...@@ -61,6 +62,12 @@
VALUES VALUES
( (
#{taskId}, #{taskId},
<if test="glxxXxzjbh != null and glxxXxzjbh != ''">
#{glxxXxzjbh},
</if>
<if test="glxxXxzjbh == null || glxxXxzjbh == ''">
null,
</if>
<if test="rwsd != null and rwsd != ''"> <if test="rwsd != null and rwsd != ''">
#{rwsd}, #{rwsd},
</if> </if>
...@@ -295,4 +302,54 @@ ...@@ -295,4 +302,54 @@
FROM TB_ST_DZGZTASK t FROM TB_ST_DZGZTASK t
where t.PROGRESS!='1' where t.PROGRESS!='1'
</select> </select>
<select id="queryAllAjwfxTask" parameterType="java.util.Map" resultType="com.founder.interservice.dzgz.model.DzgzTask">
select
t.TASK_ID as taskId,
t.GLXX_XXZJBH as glxxXxzjbh,
t.RWRESULT as rwresult,
t.RWSD as rwsd,
t.CDTLFXZT as cdtlfxzt,
t.TASK_NAME as taskName,
t.TASK_CASE_ID as taskCaseId,
t.QY_NAME as qyName,
t.LC as lc,
t.PROGRESS as progress,
case when t.STATE = 'QUEUEING' then '排队等待'
when t.STATE = 'STARTING' then '开始运行'
when t.STATE = 'RUNNING' then '执行中'
when t.STATE = 'FINISHED' then '执行完成'
when t.STATE = 'ERROR' then '执行错误'
when t.STATE = 'TIMEOUT' then '执行超时'
else '未发起申请'
end as state,
t.START_TIME as startTime,
t.END_TIME as endTime,
t.FSR_JH as fsrJh,
t.FSR_SFZH fsrSfzh,
t.FSR_XM fsrXm,
t.FSR_LXDH fsrLxdh,
case when t.SPZT = '-1' then '未发起申请'
when t.SPZT = '0' then '审批退回'
when t.SPZT = '0' then '审批成功'
when t.SPZT = '0' then '正在申请'
else '未发起申请'
end as spzt,
t.IP as ip,
t.DJSJ as djsj
FROM TB_ST_DZGZTASK t
where 1=1
<if test="rwsd!=null and rwsd!=''">
and RWSD = #{rwsd}
</if>
<if test="cdtlfxzt!=null and cdtlfxzt!=''">
and CDTLFXZT = #{cdtlfxzt}
</if>
<if test="glxxXxzjbh!=null and glxxXxzjbh!=''">
and GLXX_XXZJBH = #{glxxXxzjbh}
</if>
<if test="progressZt!=null and progressZt!=''">
and PROGRESS in ('1','2')
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -159,4 +159,10 @@ ...@@ -159,4 +159,10 @@
t.OBJECT_VALUE = #{objectValue} t.OBJECT_VALUE = #{objectValue}
</select> </select>
<select id = "getAllImsiResultsByTaskid" parameterType = "String" resultType="String" >
select OBJECT_VALUE as objectValue
from TB_ST_DZGZTASKRESULT
where TASK_ID = #{taskId} and OBJECT_TYPE_NAME = 'IMSI'
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment