diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-public/pom.xml b/casic-public/pom.xml index 87393ab..328da3d 100644 --- a/casic-public/pom.xml +++ b/casic-public/pom.xml @@ -27,7 +27,11 @@ casic-admin-support ${admin.version} - + + commons-httpclient + commons-httpclient + 3.1 + io.swagger swagger-annotations diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-public/pom.xml b/casic-public/pom.xml index 87393ab..328da3d 100644 --- a/casic-public/pom.xml +++ b/casic-public/pom.xml @@ -27,7 +27,11 @@ casic-admin-support ${admin.version} - + + commons-httpclient + commons-httpclient + 3.1 + io.swagger swagger-annotations diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 5df59f4..44a88ce 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -26,10 +26,6 @@ String ALARM_OFF = "0"; //报警 String ALARM_NO= "1"; - //投票支持 - String VOTE_APPROVE = "1"; - //投票反对 - String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; @@ -57,5 +53,11 @@ //数据异常 String DATA_EXCEPTION= "0"; + //处置类型 + String PROCESS_TYPE= "0"; + //确认类型 + String CONFIRM_TYPE= "1"; + //不需要处置 + String IS_PROCESS= "0"; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-public/pom.xml b/casic-public/pom.xml index 87393ab..328da3d 100644 --- a/casic-public/pom.xml +++ b/casic-public/pom.xml @@ -27,7 +27,11 @@ casic-admin-support ${admin.version} - + + commons-httpclient + commons-httpclient + 3.1 + io.swagger swagger-annotations diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 5df59f4..44a88ce 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -26,10 +26,6 @@ String ALARM_OFF = "0"; //报警 String ALARM_NO= "1"; - //投票支持 - String VOTE_APPROVE = "1"; - //投票反对 - String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; @@ -57,5 +53,11 @@ //数据异常 String DATA_EXCEPTION= "0"; + //处置类型 + String PROCESS_TYPE= "0"; + //确认类型 + String CONFIRM_TYPE= "1"; + //不需要处置 + String IS_PROCESS= "0"; } diff --git a/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java new file mode 100644 index 0000000..b81381d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java @@ -0,0 +1,138 @@ +package com.casic.missiles.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + /** + * ���� post������ʱ���Ӧ�ò����ݴ��ݲ�����ͬ���ز�ͬ���
+ */ + public static String post(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", + "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); +// method.addRequestHeader("J-WSSE", JWSSE); + // method.setEntity(new StringEntity(jsonParam.toString(), + // Charset.forName("UTF-8"))); + + // method.setRequestHeader(entry.getKey(), entry.getValue()); + // method.setRequestHeader("Accept-Charset", "UTF-8"); + // } + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * post�ύ�� + */ + public static String postForm(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// + method.addRequestHeader("Accept", "application/json"); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); +// return method.getResponseBodyAsString(); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } + return null; + } + + /** + * ���� get���� + */ + @SuppressWarnings("deprecation") + public static String get(String uri) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + GetMethod method = new GetMethod(uri); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + public static void main(String[] args) throws Exception { + // try { + // System.out + // .println(HTTP + // .get("http://v.juhe.cn/sms/send?mobile=13691291634&tpl_id=42731&tpl_value=%23username%23%3D%E4%BD%99%E4%BD%B3%E5%BB%BA%26%23startTime%23%3D2017-08-15+14%3A30%26%23endTime%23%3D2017-08-15+17%3A00&dtype=json&key=302dc9a8655b1de25b1e1258db99f4ea")); + // } catch (Exception e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // + // String uri = "http://wrs.tunnel.qydev.com/ga_webservice/zdryPort"; + // + // String xml = + // "" + // + "" + // + "" + // + "" + // + " " + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "" + ""; + // Map headers = new HashMap(); + // // headers.put("Content-Type", "text/xml;utf-8"); +// String uri = "http://22.192.40.34:8080/qlimg/imgserver/uploadBase64"; +// String body = "data:image/png," +// + Img.img2base64("d:/111.png"); +// String re = HTTP.post(uri, body); +// System.out.println(re); + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-public/pom.xml b/casic-public/pom.xml index 87393ab..328da3d 100644 --- a/casic-public/pom.xml +++ b/casic-public/pom.xml @@ -27,7 +27,11 @@ casic-admin-support ${admin.version} - + + commons-httpclient + commons-httpclient + 3.1 + io.swagger swagger-annotations diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 5df59f4..44a88ce 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -26,10 +26,6 @@ String ALARM_OFF = "0"; //报警 String ALARM_NO= "1"; - //投票支持 - String VOTE_APPROVE = "1"; - //投票反对 - String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; @@ -57,5 +53,11 @@ //数据异常 String DATA_EXCEPTION= "0"; + //处置类型 + String PROCESS_TYPE= "0"; + //确认类型 + String CONFIRM_TYPE= "1"; + //不需要处置 + String IS_PROCESS= "0"; } diff --git a/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java new file mode 100644 index 0000000..b81381d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java @@ -0,0 +1,138 @@ +package com.casic.missiles.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + /** + * ���� post������ʱ���Ӧ�ò����ݴ��ݲ�����ͬ���ز�ͬ���
+ */ + public static String post(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", + "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); +// method.addRequestHeader("J-WSSE", JWSSE); + // method.setEntity(new StringEntity(jsonParam.toString(), + // Charset.forName("UTF-8"))); + + // method.setRequestHeader(entry.getKey(), entry.getValue()); + // method.setRequestHeader("Accept-Charset", "UTF-8"); + // } + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * post�ύ�� + */ + public static String postForm(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// + method.addRequestHeader("Accept", "application/json"); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); +// return method.getResponseBodyAsString(); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } + return null; + } + + /** + * ���� get���� + */ + @SuppressWarnings("deprecation") + public static String get(String uri) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + GetMethod method = new GetMethod(uri); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + public static void main(String[] args) throws Exception { + // try { + // System.out + // .println(HTTP + // .get("http://v.juhe.cn/sms/send?mobile=13691291634&tpl_id=42731&tpl_value=%23username%23%3D%E4%BD%99%E4%BD%B3%E5%BB%BA%26%23startTime%23%3D2017-08-15+14%3A30%26%23endTime%23%3D2017-08-15+17%3A00&dtype=json&key=302dc9a8655b1de25b1e1258db99f4ea")); + // } catch (Exception e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // + // String uri = "http://wrs.tunnel.qydev.com/ga_webservice/zdryPort"; + // + // String xml = + // "" + // + "" + // + "" + // + "" + // + " " + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "" + ""; + // Map headers = new HashMap(); + // // headers.put("Content-Type", "text/xml;utf-8"); +// String uri = "http://22.192.40.34:8080/qlimg/imgserver/uploadBase64"; +// String body = "data:image/png," +// + Img.img2base64("d:/111.png"); +// String re = HTTP.post(uri, body); +// System.out.println(re); + } +} diff --git a/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java new file mode 100644 index 0000000..1f1e3b1 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java @@ -0,0 +1,135 @@ +/* + * Copyright Notice: + * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. + * + * Warning: This computer software sourcecode is protected by copyright law + * and international treaties. Unauthorized reproduction or distribution + * of this sourcecode, or any portion of it, may result in severe civil and + * criminal penalties, and will be prosecuted to the maximum extent + * possible under the law. + */ + +package com.casic.missiles.util; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import java.io.IOException; + +public class JsonUtil { + + private static ObjectMapper objectMapper; + + static { + objectMapper = new ObjectMapper(); + + // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + + // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + /** + * Convert Object to JsonString + * + * @param jsonObj + * @return + */ + public static String jsonObj2Sting(Object jsonObj) { + String jsonString = null; + + try { + jsonString = objectMapper.writeValueAsString(jsonObj); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonString; + } + + /** + * Convert JsonString to Simple Object + * + * @param jsonString + * @param cls + * @return + */ + public static T jsonString2SimpleObj(String jsonString, Class cls) { + T jsonObj = null; + + try { + jsonObj = objectMapper.readValue(jsonString, cls); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonObj; + } + + /** + * Method that will convert object to the ObjectNode. + * + * the source data; if null, will return null. + * @return the ObjectNode data after converted. + */ + public static ObjectNode convertObject2ObjectNode(T object) + throws Exception { + if (null == object) { + return null; + } + + ObjectNode objectNode = null; + + if (object instanceof String) { + objectNode = convertJsonStringToObject((String) object, + ObjectNode.class); + } else { + objectNode = convertValue(object, ObjectNode.class); + } + + return objectNode; + } + + /** + * Method that will convert the json string to destination by the type(cls). + * + * @param jsonString + * the source json string; if null, will return null. + * @param cls + * the destination data type. + * @return + */ + public static T convertJsonStringToObject(String jsonString, + Class cls) throws Exception { + if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { + return null; + } + + try { + T object = objectMapper.readValue(jsonString, cls); + return object; + } catch (Exception e) { + throw new Exception(e); + } + } + + /** + * Method that will convert from given value into instance of given value + * type. + * + * @param fromValue + * @param toValueType + * @return + */ + private static T convertValue(Object fromValue, Class toValueType) + throws Exception { + try { + return objectMapper.convertValue(fromValue, toValueType); + } catch (IllegalArgumentException e) { + throw new Exception(e); + } + } +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-public/pom.xml b/casic-public/pom.xml index 87393ab..328da3d 100644 --- a/casic-public/pom.xml +++ b/casic-public/pom.xml @@ -27,7 +27,11 @@ casic-admin-support ${admin.version} - + + commons-httpclient + commons-httpclient + 3.1 + io.swagger swagger-annotations diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 5df59f4..44a88ce 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -26,10 +26,6 @@ String ALARM_OFF = "0"; //报警 String ALARM_NO= "1"; - //投票支持 - String VOTE_APPROVE = "1"; - //投票反对 - String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; @@ -57,5 +53,11 @@ //数据异常 String DATA_EXCEPTION= "0"; + //处置类型 + String PROCESS_TYPE= "0"; + //确认类型 + String CONFIRM_TYPE= "1"; + //不需要处置 + String IS_PROCESS= "0"; } diff --git a/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java new file mode 100644 index 0000000..b81381d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java @@ -0,0 +1,138 @@ +package com.casic.missiles.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + /** + * ���� post������ʱ���Ӧ�ò����ݴ��ݲ�����ͬ���ز�ͬ���
+ */ + public static String post(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", + "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); +// method.addRequestHeader("J-WSSE", JWSSE); + // method.setEntity(new StringEntity(jsonParam.toString(), + // Charset.forName("UTF-8"))); + + // method.setRequestHeader(entry.getKey(), entry.getValue()); + // method.setRequestHeader("Accept-Charset", "UTF-8"); + // } + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * post�ύ�� + */ + public static String postForm(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// + method.addRequestHeader("Accept", "application/json"); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); +// return method.getResponseBodyAsString(); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } + return null; + } + + /** + * ���� get���� + */ + @SuppressWarnings("deprecation") + public static String get(String uri) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + GetMethod method = new GetMethod(uri); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + public static void main(String[] args) throws Exception { + // try { + // System.out + // .println(HTTP + // .get("http://v.juhe.cn/sms/send?mobile=13691291634&tpl_id=42731&tpl_value=%23username%23%3D%E4%BD%99%E4%BD%B3%E5%BB%BA%26%23startTime%23%3D2017-08-15+14%3A30%26%23endTime%23%3D2017-08-15+17%3A00&dtype=json&key=302dc9a8655b1de25b1e1258db99f4ea")); + // } catch (Exception e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // + // String uri = "http://wrs.tunnel.qydev.com/ga_webservice/zdryPort"; + // + // String xml = + // "" + // + "" + // + "" + // + "" + // + " " + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "" + ""; + // Map headers = new HashMap(); + // // headers.put("Content-Type", "text/xml;utf-8"); +// String uri = "http://22.192.40.34:8080/qlimg/imgserver/uploadBase64"; +// String body = "data:image/png," +// + Img.img2base64("d:/111.png"); +// String re = HTTP.post(uri, body); +// System.out.println(re); + } +} diff --git a/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java new file mode 100644 index 0000000..1f1e3b1 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java @@ -0,0 +1,135 @@ +/* + * Copyright Notice: + * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. + * + * Warning: This computer software sourcecode is protected by copyright law + * and international treaties. Unauthorized reproduction or distribution + * of this sourcecode, or any portion of it, may result in severe civil and + * criminal penalties, and will be prosecuted to the maximum extent + * possible under the law. + */ + +package com.casic.missiles.util; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import java.io.IOException; + +public class JsonUtil { + + private static ObjectMapper objectMapper; + + static { + objectMapper = new ObjectMapper(); + + // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + + // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + /** + * Convert Object to JsonString + * + * @param jsonObj + * @return + */ + public static String jsonObj2Sting(Object jsonObj) { + String jsonString = null; + + try { + jsonString = objectMapper.writeValueAsString(jsonObj); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonString; + } + + /** + * Convert JsonString to Simple Object + * + * @param jsonString + * @param cls + * @return + */ + public static T jsonString2SimpleObj(String jsonString, Class cls) { + T jsonObj = null; + + try { + jsonObj = objectMapper.readValue(jsonString, cls); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonObj; + } + + /** + * Method that will convert object to the ObjectNode. + * + * the source data; if null, will return null. + * @return the ObjectNode data after converted. + */ + public static ObjectNode convertObject2ObjectNode(T object) + throws Exception { + if (null == object) { + return null; + } + + ObjectNode objectNode = null; + + if (object instanceof String) { + objectNode = convertJsonStringToObject((String) object, + ObjectNode.class); + } else { + objectNode = convertValue(object, ObjectNode.class); + } + + return objectNode; + } + + /** + * Method that will convert the json string to destination by the type(cls). + * + * @param jsonString + * the source json string; if null, will return null. + * @param cls + * the destination data type. + * @return + */ + public static T convertJsonStringToObject(String jsonString, + Class cls) throws Exception { + if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { + return null; + } + + try { + T object = objectMapper.readValue(jsonString, cls); + return object; + } catch (Exception e) { + throw new Exception(e); + } + } + + /** + * Method that will convert from given value into instance of given value + * type. + * + * @param fromValue + * @param toValueType + * @return + */ + private static T convertValue(Object fromValue, Class toValueType) + throws Exception { + try { + return objectMapper.convertValue(fromValue, toValueType); + } catch (IllegalArgumentException e) { + throw new Exception(e); + } + } +} diff --git a/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java new file mode 100644 index 0000000..57f626d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java @@ -0,0 +1,68 @@ +package com.casic.missiles.util; + + +import cn.hutool.core.util.StrUtil; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static java.util.regex.Pattern.*; + +/** + * Created by test203 on 2019/5/23. + */ +public class RegUtil{ + + + public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 + + Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); +// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + public static boolean isNumOrLetter(String str) {// 判断字母或数字 + + Pattern pattern = compile("^\\w+$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + + public static boolean isIp(String str) {// 判断iP + if (StrUtil.isBlank(str)) { + return false; + } + + Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + public static boolean isPort(String str) {// 判断端口号 + if (StrUtil.isBlank(str)) { + return false; + } + Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + + public static boolean isInteger(String str) {// 判断整数 + if (StrUtil.isBlank(str)) { + return false; + } + Pattern pattern = compile("^[1-9]\\d*$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-public/pom.xml b/casic-public/pom.xml index 87393ab..328da3d 100644 --- a/casic-public/pom.xml +++ b/casic-public/pom.xml @@ -27,7 +27,11 @@ casic-admin-support ${admin.version} - + + commons-httpclient + commons-httpclient + 3.1 + io.swagger swagger-annotations diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 5df59f4..44a88ce 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -26,10 +26,6 @@ String ALARM_OFF = "0"; //报警 String ALARM_NO= "1"; - //投票支持 - String VOTE_APPROVE = "1"; - //投票反对 - String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; @@ -57,5 +53,11 @@ //数据异常 String DATA_EXCEPTION= "0"; + //处置类型 + String PROCESS_TYPE= "0"; + //确认类型 + String CONFIRM_TYPE= "1"; + //不需要处置 + String IS_PROCESS= "0"; } diff --git a/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java new file mode 100644 index 0000000..b81381d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java @@ -0,0 +1,138 @@ +package com.casic.missiles.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + /** + * ���� post������ʱ���Ӧ�ò����ݴ��ݲ�����ͬ���ز�ͬ���
+ */ + public static String post(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", + "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); +// method.addRequestHeader("J-WSSE", JWSSE); + // method.setEntity(new StringEntity(jsonParam.toString(), + // Charset.forName("UTF-8"))); + + // method.setRequestHeader(entry.getKey(), entry.getValue()); + // method.setRequestHeader("Accept-Charset", "UTF-8"); + // } + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * post�ύ�� + */ + public static String postForm(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// + method.addRequestHeader("Accept", "application/json"); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); +// return method.getResponseBodyAsString(); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } + return null; + } + + /** + * ���� get���� + */ + @SuppressWarnings("deprecation") + public static String get(String uri) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + GetMethod method = new GetMethod(uri); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + public static void main(String[] args) throws Exception { + // try { + // System.out + // .println(HTTP + // .get("http://v.juhe.cn/sms/send?mobile=13691291634&tpl_id=42731&tpl_value=%23username%23%3D%E4%BD%99%E4%BD%B3%E5%BB%BA%26%23startTime%23%3D2017-08-15+14%3A30%26%23endTime%23%3D2017-08-15+17%3A00&dtype=json&key=302dc9a8655b1de25b1e1258db99f4ea")); + // } catch (Exception e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // + // String uri = "http://wrs.tunnel.qydev.com/ga_webservice/zdryPort"; + // + // String xml = + // "" + // + "" + // + "" + // + "" + // + " " + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "" + ""; + // Map headers = new HashMap(); + // // headers.put("Content-Type", "text/xml;utf-8"); +// String uri = "http://22.192.40.34:8080/qlimg/imgserver/uploadBase64"; +// String body = "data:image/png," +// + Img.img2base64("d:/111.png"); +// String re = HTTP.post(uri, body); +// System.out.println(re); + } +} diff --git a/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java new file mode 100644 index 0000000..1f1e3b1 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java @@ -0,0 +1,135 @@ +/* + * Copyright Notice: + * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. + * + * Warning: This computer software sourcecode is protected by copyright law + * and international treaties. Unauthorized reproduction or distribution + * of this sourcecode, or any portion of it, may result in severe civil and + * criminal penalties, and will be prosecuted to the maximum extent + * possible under the law. + */ + +package com.casic.missiles.util; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import java.io.IOException; + +public class JsonUtil { + + private static ObjectMapper objectMapper; + + static { + objectMapper = new ObjectMapper(); + + // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + + // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + /** + * Convert Object to JsonString + * + * @param jsonObj + * @return + */ + public static String jsonObj2Sting(Object jsonObj) { + String jsonString = null; + + try { + jsonString = objectMapper.writeValueAsString(jsonObj); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonString; + } + + /** + * Convert JsonString to Simple Object + * + * @param jsonString + * @param cls + * @return + */ + public static T jsonString2SimpleObj(String jsonString, Class cls) { + T jsonObj = null; + + try { + jsonObj = objectMapper.readValue(jsonString, cls); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonObj; + } + + /** + * Method that will convert object to the ObjectNode. + * + * the source data; if null, will return null. + * @return the ObjectNode data after converted. + */ + public static ObjectNode convertObject2ObjectNode(T object) + throws Exception { + if (null == object) { + return null; + } + + ObjectNode objectNode = null; + + if (object instanceof String) { + objectNode = convertJsonStringToObject((String) object, + ObjectNode.class); + } else { + objectNode = convertValue(object, ObjectNode.class); + } + + return objectNode; + } + + /** + * Method that will convert the json string to destination by the type(cls). + * + * @param jsonString + * the source json string; if null, will return null. + * @param cls + * the destination data type. + * @return + */ + public static T convertJsonStringToObject(String jsonString, + Class cls) throws Exception { + if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { + return null; + } + + try { + T object = objectMapper.readValue(jsonString, cls); + return object; + } catch (Exception e) { + throw new Exception(e); + } + } + + /** + * Method that will convert from given value into instance of given value + * type. + * + * @param fromValue + * @param toValueType + * @return + */ + private static T convertValue(Object fromValue, Class toValueType) + throws Exception { + try { + return objectMapper.convertValue(fromValue, toValueType); + } catch (IllegalArgumentException e) { + throw new Exception(e); + } + } +} diff --git a/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java new file mode 100644 index 0000000..57f626d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java @@ -0,0 +1,68 @@ +package com.casic.missiles.util; + + +import cn.hutool.core.util.StrUtil; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static java.util.regex.Pattern.*; + +/** + * Created by test203 on 2019/5/23. + */ +public class RegUtil{ + + + public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 + + Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); +// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + public static boolean isNumOrLetter(String str) {// 判断字母或数字 + + Pattern pattern = compile("^\\w+$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + + public static boolean isIp(String str) {// 判断iP + if (StrUtil.isBlank(str)) { + return false; + } + + Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + public static boolean isPort(String str) {// 判断端口号 + if (StrUtil.isBlank(str)) { + return false; + } + Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + + public static boolean isInteger(String str) {// 判断整数 + if (StrUtil.isBlank(str)) { + return false; + } + Pattern pattern = compile("^[1-9]\\d*$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java index 80cb223..30f67f3 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java @@ -1,17 +1,20 @@ package com.casic.missiles.modular.appOther.controller; +import com.alibaba.fastjson.JSON; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.Map; @Api(tags = "北燃流程处置app对接模块") +@Slf4j @RequiredArgsConstructor @RestController @RequestMapping("/api") @@ -23,8 +26,14 @@ @PostMapping("/receiveProcessResult") @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { - //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + + try { + log.info("收到app报警处置消息--->"+ JSON.toJSONString(resultParams)); + iAlarmRecordsService.processAppContent(resultParams); + }catch (Exception e){ + e.printStackTrace(); + } + return ResponseData.success(); } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java index c73fd6f..84581f2 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/AlarmRecordsMapper.java @@ -32,7 +32,7 @@ Page historyListPage(Page page, @Param("request") AlarmRecordDTO request, @Param("dataScope") DataScope dataScope,@Param("deptIdStr") String deptIdStr); - AlarmRecords view(@Param("id") Long id); + Map view(@Param("id") Long id); void updateCell(@Param("devCode") String devCode,@Param("onLineStatus") String onLineStatus, @Param("cell") String cell); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java index 307c921..1ad006f 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/ApprovalLogMapper.java @@ -28,6 +28,10 @@ List> getListByAlarmId(@Param("alarmId") Long alarmId); + @Select("SELECT al.DESCN FROM `approval_log` al where al.ALARM_ID= #{alarmId} and al.APPROVAL_STATUS = #{processStatus} order by TS DESC LIMIT 1") + String getMsg(@Param("alarmId") Long alarmId,@Param("processStatus") String processStatus); + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java index 0a226de..bd8cd46 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/RemindLogMapper.java @@ -1,8 +1,11 @@ package com.casic.missiles.modular.alarm.dao; +import com.casic.missiles.modular.alarm.dto.AppRequestDTO; import com.casic.missiles.modular.alarm.entity.RemindLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; /** *

@@ -15,4 +18,26 @@ @Mapper public interface RemindLogMapper extends BaseMapper { + + RemindLog getRemindLogByAlarmId(@Param("alarmId") Long alarmId); + + @Select("WITH alarm_temp AS ( SELECT ALARM_TYPE_ID,devcode,LEDGER_CODE,LEDGER_NUMBER,ALARM_LEVEL " + + "FROM alarm_records ar WHERE ar.id = #{alarmId} ) SELECT " + + "bdt.TYPE_NAME AS devType, " + + "ay.ALARM_TYPE AS alarmType, " + + "bv.lngGaode AS lng, " + + "bv.latGaode AS lat, " + + "ac.alarm_level as alarmLevel " + + "FROM " + + " alarm_temp ap " + + " LEFT JOIN alarm_type ay ON ay.id = ap.ALARM_TYPE_ID " + + " LEFT JOIN bus_device bd ON bd.devcode = ap.devcode " + + " AND bd.valid > 0 " + + " LEFT JOIN base_device_type bdt ON bdt.id = bd.DEVICE_TYPE " + + " LEFT JOIN bus_ledger_all_view bv ON bv.ledgerCode = ap.LEDGER_CODE " + + " AND bv.tagNumber = ap.LEDGER_NUMBER " + + " left join alarm_level_control ac on ac.id=ap.ALARM_LEVEL " + + " LIMIT 1") + AppRequestDTO getAppRequestDTO(@Param("alarmId") Long alarmId); + } diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml index 4fa4e01..24a0eec 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/AlarmRecordsMapper.xml @@ -239,7 +239,7 @@ ORDER BY rd.ALARM_TIME DESC - SELECT rd.*, bt.TYPE_NAME AS devTypeName, @@ -250,7 +250,8 @@ lr.latGaode, lr.manageType, sd.full_name AS deptName, - lr.propertyOwner + lr.propertyOwner, + ay.ALARM_CATEGORY as alarmCategory FROM alarm_records rd LEFT JOIN bus_device bd ON rd.DEVCODE = bd.DEVCODE @@ -262,6 +263,7 @@ AND bl.VALID = 1 AND lr.VALID = 1 LEFT JOIN sys_dept sd ON sd.id = lr.DEPTID + LEFT JOIN alarm_type ay on ay.id=rd.ALARM_TYPE_ID WHERE rd.STATUS = 1 and rd.ID=#{id} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml index 9671f37..dff5374 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dao/mapping/RemindLogMapper.xml @@ -15,7 +15,18 @@ - ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT, CREATE_USER, CREATE_TIME + ID, ALARM_ID, REMIND_PERSON, TELEPHONE, REMIND_CONTENT,REMIND_COUNT, CREATE_USER, CREATE_TIME + + + + + diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java new file mode 100644 index 0000000..5f5c27b --- /dev/null +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/dto/AppRequestDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.alarm.dto; + +import lombok.Data; + +@Data +public class AppRequestDTO { + + + private String devType; + private String alarmType; + private String lng; + private String lat; + private String alarmLevel; + + +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java index 3573fd5..6ea19f4 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/entity/RemindLog.java @@ -52,6 +52,13 @@ @TableField("REMIND_CONTENT") private String remindContent; + + @ApiModelProperty("提醒次数") + @TableField("REMIND_COUNT") + private int remindCount; + + + @ApiModelProperty("创建人") @TableField("CREATE_USER") private String createUser; diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java index 8a7c9d3..b1c1ee8 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/IAlarmRecordsService.java @@ -32,7 +32,7 @@ Page deviceAlarmHistoryListPage(Page page, AlarmRecordDTO request, DataScope dataScope); - AlarmRecords view(Long id,String exceptionType); + Map view(Long id,String exceptionType); boolean suspend(SuspendDTO suspendDTO); @@ -44,7 +44,7 @@ List changeProcessStatus(List ids); - boolean processByApp(Map resultParams); + boolean processAppContent(Map resultParams); List> nodeDetail(Long alarmId); diff --git a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java index 4563049..6f4521b 100644 --- a/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java +++ b/casic-alarm/src/main/java/com/casic/missiles/modular/alarm/service/impl/AlarmRecordsServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -27,10 +28,13 @@ import com.casic.missiles.modular.alarm.entity.SuspendLog; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.model.User; import com.casic.missiles.util.CommonUtil; +import com.casic.missiles.util.HttpClientUtils; import com.casic.missiles.util.PoolConfig; import com.casic.missiles.util.WebSocket; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -58,7 +62,10 @@ private final AbstractDeptService abstractDeptService; private final AbstractDictService abstractDictService; private final WebSocket webSocket; - private PoolConfig threadPoolTaskExecutor; + private final PoolConfig threadPoolTaskExecutor; + + @Value("${casic.brAppUrl}") + private String brAppUrl; @Override public Page pageList(Page page, AlarmRecordDTO request, DataScope dataScope) { @@ -137,13 +144,15 @@ * @return */ @Override - public AlarmRecords view(Long id, String exceptionType) { - AlarmRecords alarmRecords = this.baseMapper.view(id); + public Map view(Long id, String exceptionType) { + Map resultMap = this.baseMapper.view(id); //若状态为未读时,改为已读 - if (ApprovalStatusEnum.UNREAD.getCode().equals(alarmRecords.getProcessStatus())) { + if (ApprovalStatusEnum.UNREAD.getCode().equals(resultMap.get("PROCESS_STATUS").toString())) { String processStatus = DictEnum.DATA_EXCEPTION.equals(exceptionType) ? ApprovalStatusEnum.READ.getCode() : ApprovalStatusEnum.UNPROCESS.getCode(); //1、更新报警状态 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setId(id); alarmRecords.setProcessStatus(processStatus); updateById(alarmRecords); //2、写入流程日志 @@ -152,10 +161,21 @@ user != null ? user.getName() : "", processStatus, user != null ? user.getId() : null)); } - alarmRecords.setProcessStatusName(ApprovalStatusEnum.getValue(alarmRecords.getProcessStatus())); + resultMap.put("alarmCategory", abstractDictService.getDictNameByCode("alarmCategory", resultMap.get("alarmCategory").toString())); + resultMap.put("processStatusName", ApprovalStatusEnum.getValue(resultMap.get("PROCESS_STATUS").toString())); //0:自有,1:自管 - alarmRecords.setManageType(DictEnum.MANAGE_TYPE.equals(alarmRecords.getManageType()) ? "自有" : "自管"); - return alarmRecords; + resultMap.put("manageType", DictEnum.MANAGE_TYPE.equals(resultMap.get("manageType").toString()) ? "自有" : "自管"); + + //设置确认个处置内容 + resultMap.put("processContent", "未处置"); + resultMap.put("confirmContent", "未确认"); + String processStatus = resultMap.get("PROCESS_STATUS").toString(); + if (ApprovalStatusEnum.CONFIRMED.equals(processStatus) || ApprovalStatusEnum.UNPROCESS.equals(processStatus)) { + resultMap.put("confirmContent", approvalLogMapper.getMsg(id, processStatus)); + } else if (ApprovalStatusEnum.PROCESSED.equals(processStatus)) { + resultMap.put("processContent", approvalLogMapper.getMsg(id, processStatus)); + } + return resultMap; } @Transactional @@ -204,31 +224,63 @@ } - @Transactional @Override public boolean remind(RemindDTO remindDTO) { - //toDo:1、提醒app推送,需要对接 - //2、更新报警表流程状态 + //判断是否提醒 + RemindLog remindLog = remindLogMapper.getRemindLogByAlarmId(remindDTO.getAlarmId()); + AppRequestDTO appRequestDTO = remindLogMapper.getAppRequestDTO(remindDTO.getAlarmId()); AlarmRecords alarmRecords = this.getById(remindDTO.getAlarmId()); - alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); - alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); - this.baseMapper.updateById(alarmRecords); - //3、写入流程日志 - AuthUser user = permissionContext.getAuthService().getLoginUser(); - approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", - user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), - user != null ? user.getId() : null)); - //4、写入提醒日志表 - return remindLogMapper.insert(RemindLog.builder() - .alarmId(remindDTO.getAlarmId()) - .remindContent(remindDTO.getRemindContent()) - .remindPerson(remindDTO.getRemindPerson()) - .telephone(remindDTO.getTelephone()) - .remindPersonId(user != null ? user.getId() : null) - .remindPerson(user != null ? user.getName() : "").build()) - > 0 ? true : false; + //1、提醒app推送 + threadPoolTaskExecutor.taskExecutor().execute(new Runnable() { + @Override + public void run() { + //toDO:获取责任人原始id + sendMsg(alarmRecords, appRequestDTO, remindLog == null ? 1 : remindLog.getRemindCount() + 1, remindDTO.getRemindPersonId()); + } + }); + if (null != remindLog) { + remindLog.setRemindCount(remindLog.getRemindCount() + 1); + return remindLogMapper.updateById(remindLog) > 0 ? true : false; + } else { + //1、更新报警表流程状态 + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setProcessStatus(ApprovalStatusEnum.UNCONFIRM.getCode()); + this.baseMapper.updateById(alarmRecords); + //2、写入流程日志 + AuthUser user = permissionContext.getAuthService().getLoginUser(); + approvalLogMapper.insert(new ApprovalLog(remindDTO.getAlarmId(), "1", + user != null ? user.getName() : "", ApprovalStatusEnum.UNCONFIRM.getCode(), + user != null ? user.getId() : null)); + + //3、写入提醒日志表 + return remindLogMapper.insert(RemindLog.builder() + .alarmId(remindDTO.getAlarmId()) + .remindContent(remindDTO.getRemindContent()) + .remindPerson(remindDTO.getRemindPerson()) + .telephone(remindDTO.getTelephone()) + .remindPersonId(user != null ? user.getId() : null) + .remindPerson(user != null ? user.getName() : "").build()) + > 0 ? true : false; + } + } + + public void sendMsg(AlarmRecords alarmRecords, AppRequestDTO appRequestDTO, int count, Long processorId) { + Map parasMap = new HashMap<>(); + parasMap.put("alarmId", alarmRecords.getId()); + parasMap.put("alarmType", appRequestDTO.getAlarmType()); + parasMap.put("alarmLevel", appRequestDTO.getAlarmLevel()); + parasMap.put("alarmTime", alarmRecords.getAlarmTime()); + parasMap.put("devType", appRequestDTO.getDevType()); + parasMap.put("devcode", alarmRecords.getDevcode()); + parasMap.put("tagNumber", alarmRecords.getLedgerCode()); + parasMap.put("position", alarmRecords.getPosition()); + parasMap.put("lng", appRequestDTO.getLng()); + parasMap.put("lat", appRequestDTO.getLat()); + parasMap.put("processorId", processorId); + parasMap.put("remindTimes", count); + HttpClientUtils.post(brAppUrl, JSON.toJSONString(parasMap)); } @Override @@ -273,9 +325,44 @@ return this.baseMapper.viewPlace(requestDTO); } + /** + * app报警处置返回结果处理 + * + * @param resultParams + * @return + */ @Override - public boolean processByApp(Map resultParams) { - return false; + public boolean processAppContent(Map resultParams) { + String alarmId = resultParams.get("alarmId").toString(); + String msgType = resultParams.get("msgType").toString(); + String isAlarm = resultParams.get("isAlarm").toString(); + String isProcess = resultParams.get("isProcess").toString(); + String processStatus = resultParams.get("processStatus").toString(); + String processorId = resultParams.get("processorId").toString(); + String processContent = resultParams.get("processContent").toString(); + String processTime = resultParams.get("processTime").toString(); + //若为处置类型 todo:判断空 + AlarmRecords alarmRecords = new AlarmRecords(); + alarmRecords.setPreProcessStatus(alarmRecords.getProcessStatus()); + alarmRecords.setRealAlarm(isAlarm); + alarmRecords.setProcessTime(DateUtil.parseDateTime(processTime)); + if (DictEnum.PROCESS_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(ApprovalStatusEnum.PROCESSED.getCode()); + this.baseMapper.updateById(alarmRecords); + } else if (DictEnum.CONFIRM_TYPE.equals(msgType)) { + alarmRecords.setProcessStatus(DictEnum.REAL_ALARM.equals(isAlarm) && DictEnum.IS_PROCESS.equals(isProcess) ? + ApprovalStatusEnum.CONFIRMED.getCode() : + ApprovalStatusEnum.UNPROCESS.getCode()); + this.baseMapper.updateById(alarmRecords); + } + //2、写入流程日志 + User user = permissionContext.getUserService().getById(Long.valueOf(processorId)); + approvalLogMapper.insert(new ApprovalLog(Long.valueOf(alarmId), "1", + user != null ? user.getName() : "", + alarmRecords.getProcessStatus(), + user != null ? user.getId() : null, + processContent)); + return true; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java index 8d46b1c..4b919dd 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppController.java @@ -23,7 +23,7 @@ @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + return ResponseData.success(iAlarmRecordsService.processAppContent(resultParams)); } diff --git a/casic-device/pom.xml b/casic-device/pom.xml index 7609d3c..cccd7b1 100644 --- a/casic-device/pom.xml +++ b/casic-device/pom.xml @@ -25,11 +25,6 @@ casic-admin-support ${admin.version} - - com.casic - casic-http - ${extension.version} - diff --git a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java b/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java deleted file mode 100644 index 0edc933..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/HttpsUtil.java +++ /dev/null @@ -1,368 +0,0 @@ -package com.casic.missiles.util; - -import com.casic.missiles.config.properties.CasicProperties; -import com.casic.missiles.core.util.SpringContextHolder; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.NameValuePair; -import org.apache.http.client.HttpClient; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.*; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.conn.ClientConnectionManager; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.conn.scheme.SchemeRegistry; -import org.apache.http.conn.ssl.SSLSocketFactory; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -//import org.apache.http.entity.mime.MultipartEntityBuilder; -//import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.message.BasicNameValuePair; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; -import java.security.KeyStore; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -@SuppressWarnings("deprecation") -public class HttpsUtil extends DefaultHttpClient { - public final static String HTTPGET = "GET"; - - public final static String HTTPPUT = "PUT"; - - public final static String HTTPPOST = "POST"; - - public final static String HTTPDELETE = "DELETE"; - - public final static String HTTPACCEPT = "Accept"; - - public final static String CONTENT_LENGTH = "Content-Length"; - - public final static String CHARSET_UTF8 = "UTF-8"; - - private static HttpClient httpClient; - - //Paths of certificates. - public static String SELFCERTPATH = "cert/outgoing.CertwithKey.pkcs12"; - public static String TRUSTCAPATH = "cert/ca.jks"; - - //Password of certificates. - public static String SELFCERTPWD = "IoM@1234"; - public static String TRUSTCAPWD = "Huawei@123"; - - /** - * Two-Way Authentication In the two-way authentication, the client needs: 1 - * Import your own certificate for server verification; 2 Import the CA - * certificate of the server, and use the CA certificate to verify the - * certificate sent by the server; 3 Set the domain name to not verify - * (Non-commercial IoT platform, no use domain name access.) - * */ - public void initSSLConfigForTwoWay() throws Exception { - //读取配置文件里绝对路径 - CasicProperties gunsProperties = SpringContextHolder.getBean(CasicProperties.class); - String demo_base_Path = gunsProperties.getFileUploadPath(); - // 1 Import your own certificate - - String selfcertpath = demo_base_Path + SELFCERTPATH; - String trustcapath = demo_base_Path + TRUSTCAPATH; - System.out.println("=============="); - System.out.println(selfcertpath); - System.out.println(trustcapath); - - KeyStore selfCert = KeyStore.getInstance("pkcs12"); - - //调试文件路径代码 - File testFile = new File(selfcertpath); - if(!testFile .exists()) { - System.out.println("https验证文件不存在"); - } - selfCert.load(new FileInputStream(selfcertpath), SELFCERTPWD.toCharArray()); - KeyManagerFactory kmf = KeyManagerFactory.getInstance("sunx509"); - kmf.init(selfCert, SELFCERTPWD.toCharArray()); - - // 2 Import the CA certificate of the server, - KeyStore caCert = KeyStore.getInstance("jks"); - caCert.load(new FileInputStream(trustcapath), TRUSTCAPWD.toCharArray()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - tmf.init(caCert); - - SSLContext sc = SSLContext.getInstance("TLS"); - sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - - // 3 Set the domain name to not verify - // (Non-commercial IoT platform, no use domain name access generally.) - SSLSocketFactory ssf = new SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - - // If the platform has already applied for a domain name which matches - // the domain name in the certificate information, the certificate - // domain name check can be enabled (open by default) - // SSLSocketFactory ssf = new SSLSocketFactory(sc); - - ClientConnectionManager ccm = this.getConnectionManager(); - SchemeRegistry sr = ccm.getSchemeRegistry(); - sr.register(new Scheme("https", 8743, ssf)); - - httpClient = new DefaultHttpClient(ccm); - } - - /** - * One-Way Authentication In the One-way authentication, the client needs: 1 - * Import the CA certificate of the server, and use the CA certificate to - * verify the certificate sent by the server; 2 Set the domain name to not - * verify (Non-commercial IoT platform, no use domain name access.) - * */ - /* - * public void initSSLConfigForOneWay() throws Exception { - * - * // 1 Import the CA certificate of the server, KeyStore caCert = - * KeyStore.getInstance("jks"); caCert.load(new - * FileInputStream(TRUSTCAPATH), TRUSTCAPWD.toCharArray()); - * TrustManagerFactory tmf = TrustManagerFactory.getInstance("sunx509"); - * tmf.init(caCert); - * - * SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, - * tmf.getTrustManagers(), null); - * - * // 2 Set the domain name to not verify // (Non-commercial IoT platform, - * no use domain name access generally.) SSLSocketFactory ssf = new - * SSLSocketFactory(sc, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); - * - * //If the platform has already applied for a domain name which matches the - * domain name in the certificate information, the certificate //domain name - * check can be enabled (open by default) // SSLSocketFactory ssf = new - * SSLSocketFactory(sc); - * - * ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry - * sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 8743, - * ssf)); - * - * httpClient = new DefaultHttpClient(ccm); } - */ - - public HttpResponse doPostJson(String url, Map headerMap, - String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostMultipartFile(String url, Map headerMap, File file) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - -// FileBody fileBody = new FileBody(file); -// // Content-Type:multipart/form-data; boundary=----WebKitFormBoundarypJTQXMOZ3dLEzJ4b -// HttpEntity reqEntity = (HttpEntity) MultipartEntityBuilder.create().addPart("file", fileBody).build(); -// request.setEntity(reqEntity); - - return (StreamClosedHttpResponse) executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, Map headerMap, String content) { - HttpPost request = new HttpPost(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPostJsonGetStatusLine(String url, String content) { - HttpPost request = new HttpPost(url); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private List paramsConverter(Map params) { - List nvps = new LinkedList(); - Set> paramsSet = params.entrySet(); - for (Map.Entry paramEntry : paramsSet) { - nvps.add(new BasicNameValuePair(paramEntry.getKey(), paramEntry.getValue())); - } - - return nvps; - } - - - public StreamClosedHttpResponse doPostFormUrlEncodedGetStatusLine(String url, Map formParams) throws Exception { - HttpPost request = new HttpPost(url); - - request.setEntity(new UrlEncodedFormEntity(paramsConverter(formParams))); - - HttpResponse response = executeHttpRequest(request); - if (null == response) { - System.out.println("The response body is null."); - throw new Exception(); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doPutJson(String url, Map headerMap, - String content) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - request.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON)); - - return executeHttpRequest(request); - } - - public HttpResponse doPut(String url, Map headerMap) { - HttpPut request = new HttpPut(url); - addRequestHeader(request, headerMap); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doPutJsonGetStatusLine(String url, Map headerMap, String content) { - HttpResponse response = doPutJson(url, headerMap, content); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public StreamClosedHttpResponse doPutGetStatusLine(String url, Map headerMap) { - HttpResponse response = doPut(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doGetWithParas(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpGet request = new HttpGet(); - addRequestHeader(request, headerMap); - - URIBuilder builder; - try { - builder = new URIBuilder(url); - } catch (URISyntaxException e) { - System.out.printf("URISyntaxException: {}", e); - throw new Exception(e); - - } - - if (queryParams != null && !queryParams.isEmpty()) { - builder.setParameters(paramsConverter(queryParams)); - } - request.setURI(builder.build()); - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doGetWithParasGetStatusLine(String url, - Map queryParams, Map headerMap) - throws Exception { - HttpResponse response = doGetWithParas(url, queryParams, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - public HttpResponse doDelete(String url, Map headerMap) { - HttpDelete request = new HttpDelete(url); - addRequestHeader(request, headerMap); - - - return executeHttpRequest(request); - } - - public StreamClosedHttpResponse doDeleteGetStatusLine(String url, - Map headerMap) { - HttpResponse response = doDelete(url, headerMap); - if (null == response) { - System.out.println("The response body is null."); - } - - return (StreamClosedHttpResponse) response; - } - - private static void addRequestHeader(HttpUriRequest request, - Map headerMap) { - if (headerMap == null) { - return; - } - - for (String headerName : headerMap.keySet()) { - if (CONTENT_LENGTH.equalsIgnoreCase(headerName)) { - continue; - } - - String headerValue = headerMap.get(headerName); - request.addHeader(headerName, headerValue); - } - } - - private HttpResponse executeHttpRequest(HttpUriRequest request) { - HttpResponse response = null; - - try { - response = httpClient.execute(request); - } catch (Exception e) { - System.out.println("executeHttpRequest failed."); - } finally { - try { - response = new StreamClosedHttpResponse(response); - } catch (IOException e) { - System.out.println("IOException: " + e.getMessage()); - } - } - - return response; - } - - public String getHttpResponseBody(HttpResponse response) - throws UnsupportedOperationException, IOException { - if (response == null) { - return null; - } - - String body = null; - - if (response instanceof StreamClosedHttpResponse) { - body = ((StreamClosedHttpResponse) response).getContent(); - } else { - HttpEntity entity = response.getEntity(); - if (entity != null && entity.isStreaming()) { - String encoding = entity.getContentEncoding() != null ? entity - .getContentEncoding().getValue() : null; - body = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - } - - return body; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java deleted file mode 100644 index 1f1e3b1..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/JsonUtil.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ - -package com.casic.missiles.util; - -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.node.ObjectNode; - -import java.io.IOException; - -public class JsonUtil { - - private static ObjectMapper objectMapper; - - static { - objectMapper = new ObjectMapper(); - - // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 - objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - - // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - } - - /** - * Convert Object to JsonString - * - * @param jsonObj - * @return - */ - public static String jsonObj2Sting(Object jsonObj) { - String jsonString = null; - - try { - jsonString = objectMapper.writeValueAsString(jsonObj); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonString; - } - - /** - * Convert JsonString to Simple Object - * - * @param jsonString - * @param cls - * @return - */ - public static T jsonString2SimpleObj(String jsonString, Class cls) { - T jsonObj = null; - - try { - jsonObj = objectMapper.readValue(jsonString, cls); - } catch (IOException e) { - System.out.printf("pasre json Object[{}] to string failed.",jsonString); - } - - return jsonObj; - } - - /** - * Method that will convert object to the ObjectNode. - * - * the source data; if null, will return null. - * @return the ObjectNode data after converted. - */ - public static ObjectNode convertObject2ObjectNode(T object) - throws Exception { - if (null == object) { - return null; - } - - ObjectNode objectNode = null; - - if (object instanceof String) { - objectNode = convertJsonStringToObject((String) object, - ObjectNode.class); - } else { - objectNode = convertValue(object, ObjectNode.class); - } - - return objectNode; - } - - /** - * Method that will convert the json string to destination by the type(cls). - * - * @param jsonString - * the source json string; if null, will return null. - * @param cls - * the destination data type. - * @return - */ - public static T convertJsonStringToObject(String jsonString, - Class cls) throws Exception { - if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { - return null; - } - - try { - T object = objectMapper.readValue(jsonString, cls); - return object; - } catch (Exception e) { - throw new Exception(e); - } - } - - /** - * Method that will convert from given value into instance of given value - * type. - * - * @param fromValue - * @param toValueType - * @return - */ - private static T convertValue(Object fromValue, Class toValueType) - throws Exception { - try { - return objectMapper.convertValue(fromValue, toValueType); - } catch (IllegalArgumentException e) { - throw new Exception(e); - } - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java deleted file mode 100644 index 57f626d..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/RegUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.missiles.util; - - -import cn.hutool.core.util.StrUtil; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static java.util.regex.Pattern.*; - -/** - * Created by test203 on 2019/5/23. - */ -public class RegUtil{ - - - public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 - - Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); -// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isNumOrLetter(String str) {// 判断字母或数字 - - Pattern pattern = compile("^\\w+$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isIp(String str) {// 判断iP - if (StrUtil.isBlank(str)) { - return false; - } - - Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - public static boolean isPort(String str) {// 判断端口号 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - - public static boolean isInteger(String str) {// 判断整数 - if (StrUtil.isBlank(str)) { - return false; - } - Pattern pattern = compile("^[1-9]\\d*$"); - Matcher match = pattern.matcher(str); - return match.matches(); - - } - - -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java b/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java deleted file mode 100644 index 0587b35..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamClosedHttpResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import org.apache.http.*; -import org.apache.http.params.HttpParams; - -import java.io.IOException; -import java.util.Locale; - -@SuppressWarnings("deprecation") -public class StreamClosedHttpResponse implements HttpResponse -{ - private final HttpResponse original; - - private final String content; - - public StreamClosedHttpResponse(final HttpResponse original) - throws UnsupportedOperationException, IOException - { - this.original = original; - - HttpEntity entity = original.getEntity(); - if (entity != null && entity.isStreaming()) - { - String encoding = entity.getContentEncoding() != null - ? entity.getContentEncoding().getValue() : null; - content = StreamUtil.inputStream2String(entity.getContent(), - encoding); - } - else - { - content = null; - } - } - - @Override - public StatusLine getStatusLine() - { - return original.getStatusLine(); - } - - @Override - public void setStatusLine(final StatusLine statusline) - { - original.setStatusLine(statusline); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code) - { - original.setStatusLine(ver, code); - } - - @Override - public void setStatusLine(final ProtocolVersion ver, final int code, - final String reason) - { - original.setStatusLine(ver, code, reason); - } - - @Override - public void setStatusCode(final int code) throws IllegalStateException - { - original.setStatusCode(code); - } - - @Override - public void setReasonPhrase(final String reason) - throws IllegalStateException - { - original.setReasonPhrase(reason); - } - - @Override - public HttpEntity getEntity() - { - return original.getEntity(); - } - - @Override - public void setEntity(final HttpEntity entity) - { - original.setEntity(entity); - } - - @Override - public Locale getLocale() - { - return original.getLocale(); - } - - @Override - public void setLocale(final Locale loc) - { - original.setLocale(loc); - } - - @Override - public ProtocolVersion getProtocolVersion() - { - return original.getProtocolVersion(); - } - - @Override - public boolean containsHeader(final String name) - { - return original.containsHeader(name); - } - - @Override - public Header[] getHeaders(final String name) - { - return original.getHeaders(name); - } - - @Override - public Header getFirstHeader(final String name) - { - return original.getFirstHeader(name); - } - - @Override - public Header getLastHeader(final String name) - { - return original.getLastHeader(name); - } - - @Override - public Header[] getAllHeaders() - { - return original.getAllHeaders(); - } - - @Override - public void addHeader(final Header header) - { - original.addHeader(header); - } - - @Override - public void addHeader(final String name, final String value) - { - original.addHeader(name, value); - } - - @Override - public void setHeader(final Header header) - { - original.setHeader(header); - } - - @Override - public void setHeader(final String name, final String value) - { - original.setHeader(name, value); - } - - @Override - public void setHeaders(final Header[] headers) - { - original.setHeaders(headers); - } - - @Override - public void removeHeader(final Header header) - { - original.removeHeader(header); - } - - @Override - public void removeHeaders(final String name) - { - original.removeHeaders(name); - } - - @Override - public HeaderIterator headerIterator() - { - return original.headerIterator(); - } - - @Override - public HeaderIterator headerIterator(final String name) - { - return original.headerIterator(name); - } - - @Override - public String toString() - { - final StringBuilder sb = new StringBuilder("HttpResponseProxy{"); - sb.append(original); - sb.append('}'); - return sb.toString(); - } - - @Override - @Deprecated - public HttpParams getParams() - { - return original.getParams(); - } - - @Override - @Deprecated - public void setParams(final HttpParams params) - { - original.setParams(params); - } - - public String getContent() - { - return content; - } -} diff --git a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java b/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java deleted file mode 100644 index 732a474..0000000 --- a/casic-device/src/main/java/com/casic/missiles/util/StreamUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright Notice: - * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. - * - * Warning: This computer software sourcecode is protected by copyright law - * and international treaties. Unauthorized reproduction or distribution - * of this sourcecode, or any portion of it, may result in severe civil and - * criminal penalties, and will be prosecuted to the maximum extent - * possible under the law. - */ -package com.casic.missiles.util; - -import java.io.Closeable; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - - -public class StreamUtil { - - - private static final String DEFAULT_ENCODING = "utf-8"; - - public static String inputStream2String(InputStream in, String charsetName) { - if (in == null) { - return null; - } - - InputStreamReader inReader = null; - - try { - if (null == charsetName || charsetName.equalsIgnoreCase("") == true) { - inReader = new InputStreamReader(in, DEFAULT_ENCODING); - } else { - inReader = new InputStreamReader(in, charsetName); - } - - int readLen = 0; - char[] buffer = new char[1024]; - StringBuffer strBuf = new StringBuffer(); - while ((readLen = inReader.read(buffer)) != -1) { - strBuf.append(buffer, 0, readLen); - } - - return strBuf.toString(); - } catch (IOException e) { - System.out.println(e); - } finally { - closeStream(inReader); - } - - return null; - } - - public static void closeStream(Closeable closeable) { - if (closeable != null) { - try { - closeable.close(); - } catch (IOException e) { - System.out.println(e); - } - } - } -} diff --git a/casic-public/pom.xml b/casic-public/pom.xml index 87393ab..328da3d 100644 --- a/casic-public/pom.xml +++ b/casic-public/pom.xml @@ -27,7 +27,11 @@ casic-admin-support ${admin.version} - + + commons-httpclient + commons-httpclient + 3.1 + io.swagger swagger-annotations diff --git a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java index 5df59f4..44a88ce 100644 --- a/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java +++ b/casic-public/src/main/java/com/casic/missiles/enums/DictEnum.java @@ -26,10 +26,6 @@ String ALARM_OFF = "0"; //报警 String ALARM_NO= "1"; - //投票支持 - String VOTE_APPROVE = "1"; - //投票反对 - String VOTE_AGAINST = "0"; String ALARM_PREFIX = "XJBJ"; @@ -57,5 +53,11 @@ //数据异常 String DATA_EXCEPTION= "0"; + //处置类型 + String PROCESS_TYPE= "0"; + //确认类型 + String CONFIRM_TYPE= "1"; + //不需要处置 + String IS_PROCESS= "0"; } diff --git a/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java new file mode 100644 index 0000000..b81381d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/HttpClientUtils.java @@ -0,0 +1,138 @@ +package com.casic.missiles.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; + +import java.io.IOException; + +public class HttpClientUtils { + + /** + * ���� post������ʱ���Ӧ�ò����ݴ��ݲ�����ͬ���ز�ͬ���
+ */ + public static String post(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + // for (Map.Entry entry : headers.entrySet()) { + method.addRequestHeader("Content-type", + "application/json; charset=utf-8"); + method.addRequestHeader("Accept", "application/json"); +// method.addRequestHeader("J-WSSE", JWSSE); + // method.setEntity(new StringEntity(jsonParam.toString(), + // Charset.forName("UTF-8"))); + + // method.setRequestHeader(entry.getKey(), entry.getValue()); + // method.setRequestHeader("Accept-Charset", "UTF-8"); + // } + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + /** + * post�ύ�� + */ + public static String postForm(String uri, String body) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + PostMethod method = new PostMethod(uri); + method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// + method.addRequestHeader("Accept", "application/json"); + method.setRequestBody(body); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return new String(method.getResponseBody(), "UTF-8"); +// return method.getResponseBodyAsString(); + // return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return e.getMessage(); + } + return null; + } + + /** + * ���� get���� + */ + @SuppressWarnings("deprecation") + public static String get(String uri) { + HttpClient client = new HttpClient(); + client.setTimeout(6000); + GetMethod method = new GetMethod(uri); + try { + int statusCode = client.executeMethod(method); + if (statusCode == HttpStatus.SC_OK) { + return method.getResponseBodyAsString(); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return null; + } + + public static void main(String[] args) throws Exception { + // try { + // System.out + // .println(HTTP + // .get("http://v.juhe.cn/sms/send?mobile=13691291634&tpl_id=42731&tpl_value=%23username%23%3D%E4%BD%99%E4%BD%B3%E5%BB%BA%26%23startTime%23%3D2017-08-15+14%3A30%26%23endTime%23%3D2017-08-15+17%3A00&dtype=json&key=302dc9a8655b1de25b1e1258db99f4ea")); + // } catch (Exception e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // } + // + // String uri = "http://wrs.tunnel.qydev.com/ga_webservice/zdryPort"; + // + // String xml = + // "" + // + "" + // + "" + // + "" + // + " " + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "1" + // + "" + // + "" + ""; + // Map headers = new HashMap(); + // // headers.put("Content-Type", "text/xml;utf-8"); +// String uri = "http://22.192.40.34:8080/qlimg/imgserver/uploadBase64"; +// String body = "data:image/png," +// + Img.img2base64("d:/111.png"); +// String re = HTTP.post(uri, body); +// System.out.println(re); + } +} diff --git a/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java new file mode 100644 index 0000000..1f1e3b1 --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/JsonUtil.java @@ -0,0 +1,135 @@ +/* + * Copyright Notice: + * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. + * + * Warning: This computer software sourcecode is protected by copyright law + * and international treaties. Unauthorized reproduction or distribution + * of this sourcecode, or any portion of it, may result in severe civil and + * criminal penalties, and will be prosecuted to the maximum extent + * possible under the law. + */ + +package com.casic.missiles.util; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import java.io.IOException; + +public class JsonUtil { + + private static ObjectMapper objectMapper; + + static { + objectMapper = new ObjectMapper(); + + // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + + // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + } + + /** + * Convert Object to JsonString + * + * @param jsonObj + * @return + */ + public static String jsonObj2Sting(Object jsonObj) { + String jsonString = null; + + try { + jsonString = objectMapper.writeValueAsString(jsonObj); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonString; + } + + /** + * Convert JsonString to Simple Object + * + * @param jsonString + * @param cls + * @return + */ + public static T jsonString2SimpleObj(String jsonString, Class cls) { + T jsonObj = null; + + try { + jsonObj = objectMapper.readValue(jsonString, cls); + } catch (IOException e) { + System.out.printf("pasre json Object[{}] to string failed.",jsonString); + } + + return jsonObj; + } + + /** + * Method that will convert object to the ObjectNode. + * + * the source data; if null, will return null. + * @return the ObjectNode data after converted. + */ + public static ObjectNode convertObject2ObjectNode(T object) + throws Exception { + if (null == object) { + return null; + } + + ObjectNode objectNode = null; + + if (object instanceof String) { + objectNode = convertJsonStringToObject((String) object, + ObjectNode.class); + } else { + objectNode = convertValue(object, ObjectNode.class); + } + + return objectNode; + } + + /** + * Method that will convert the json string to destination by the type(cls). + * + * @param jsonString + * the source json string; if null, will return null. + * @param cls + * the destination data type. + * @return + */ + public static T convertJsonStringToObject(String jsonString, + Class cls) throws Exception { + if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { + return null; + } + + try { + T object = objectMapper.readValue(jsonString, cls); + return object; + } catch (Exception e) { + throw new Exception(e); + } + } + + /** + * Method that will convert from given value into instance of given value + * type. + * + * @param fromValue + * @param toValueType + * @return + */ + private static T convertValue(Object fromValue, Class toValueType) + throws Exception { + try { + return objectMapper.convertValue(fromValue, toValueType); + } catch (IllegalArgumentException e) { + throw new Exception(e); + } + } +} diff --git a/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java b/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java new file mode 100644 index 0000000..57f626d --- /dev/null +++ b/casic-public/src/main/java/com/casic/missiles/util/RegUtil.java @@ -0,0 +1,68 @@ +package com.casic.missiles.util; + + +import cn.hutool.core.util.StrUtil; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static java.util.regex.Pattern.*; + +/** + * Created by test203 on 2019/5/23. + */ +public class RegUtil{ + + + public static boolean isDecimal2(String str) {// 判断小数点后2位的数字的正则表达式 + + Pattern pattern = compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$"); +// Pattern pattern = Pattern.compile("^\\\\d{0,8}\\\\.{0,1}(\\\\d{1,2})?$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + public static boolean isNumOrLetter(String str) {// 判断字母或数字 + + Pattern pattern = compile("^\\w+$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + + public static boolean isIp(String str) {// 判断iP + if (StrUtil.isBlank(str)) { + return false; + } + + Pattern pattern = compile("([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + public static boolean isPort(String str) {// 判断端口号 + if (StrUtil.isBlank(str)) { + return false; + } + Pattern pattern = compile("^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]{1}|6553[0-5])$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + + public static boolean isInteger(String str) {// 判断整数 + if (StrUtil.isBlank(str)) { + return false; + } + Pattern pattern = compile("^[1-9]\\d*$"); + Matcher match = pattern.matcher(str); + return match.matches(); + + } + + +} diff --git a/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java b/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java index 80cb223..30f67f3 100644 --- a/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java +++ b/casic-rest-api/src/main/java/com/casic/missiles/modular/appOther/controller/ApiController.java @@ -1,17 +1,20 @@ package com.casic.missiles.modular.appOther.controller; +import com.alibaba.fastjson.JSON; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.modular.alarm.service.IAlarmRecordsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.Map; @Api(tags = "北燃流程处置app对接模块") +@Slf4j @RequiredArgsConstructor @RestController @RequestMapping("/api") @@ -23,8 +26,14 @@ @PostMapping("/receiveProcessResult") @ResponseBody public Object getProcessResult(@RequestBody Map resultParams) { - //todo:协议待定 - return ResponseData.success(iAlarmRecordsService.processByApp(resultParams)); + + try { + log.info("收到app报警处置消息--->"+ JSON.toJSONString(resultParams)); + iAlarmRecordsService.processAppContent(resultParams); + }catch (Exception e){ + e.printStackTrace(); + } + return ResponseData.success(); } diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 610f947..90f5725 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -24,6 +24,7 @@ db: init: enable: false + brAppUrl: http://127.0.0.1:8083/api/receiveProcessResult logging: level: root: info