Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
13284bdc
Commit
13284bdc
authored
Nov 17, 2021
by
chenhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交力量调派任务发送
parent
592489d7
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1444 additions
and
710 deletions
+1444
-710
DynamicFormInstanceMapper.java
...t/module/common/api/mapper/DynamicFormInstanceMapper.java
+32
-6
DynamicFormInstanceMapper.xml
...i/src/main/resources/mapper/DynamicFormInstanceMapper.xml
+292
-19
AlertCallePowerTransferRo.java
...os/boot/module/jcs/api/dto/AlertCallePowerTransferRo.java
+5
-9
AlertBusinessTypeEnum.java
...amos/boot/module/jcs/api/enums/AlertBusinessTypeEnum.java
+1
-0
AlertStageEnums.java
...ejoin/amos/boot/module/jcs/api/enums/AlertStageEnums.java
+13
-2
FirefightersServiceImpl.java
...dule/common/biz/service/impl/FirefightersServiceImpl.java
+3
-2
OrgUsrServiceImpl.java
...oot/module/common/biz/service/impl/OrgUsrServiceImpl.java
+20
-1
PowerTransferAction.java
.../boot/module/jcs/biz/rule/action/PowerTransferAction.java
+15
-8
AlertSubmittedServiceImpl.java
...odule/jcs/biz/service/impl/AlertSubmittedServiceImpl.java
+1041
-639
FireTeamServiceImpl.java
...boot/module/jcs/biz/service/impl/FireTeamServiceImpl.java
+1
-0
PowerTransferServiceImpl.java
...module/jcs/biz/service/impl/PowerTransferServiceImpl.java
+13
-14
RuleAlertCalledService.java
...t/module/jcs/biz/service/impl/RuleAlertCalledService.java
+8
-10
No files found.
amos-boot-module/amos-boot-module-api/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/mapper/DynamicFormInstanceMapper.java
View file @
13284bdc
...
...
@@ -106,13 +106,39 @@ public interface DynamicFormInstanceMapper extends BaseMapper<DynamicFormInstanc
@Param
(
"endTime"
)
String
endTime
);
/**
* 值班表中 【值班排班】中特定部门的特定日期值班员;
* @param dutyDate
* @param departmentName eg:急救科、消救部
* @return
*/
List
<
Map
<
String
,
Object
>>
getDutyPersonByTeamIdAndCarId
(
String
carIdName
,
String
teamIdName
,
String
userIdName
,
String
dutyDate
,
String
groupCode
,
String
carId
,
String
teamId
);
String
departmentName
);
/**
* 值班表中 【120急救排班】该急救站的当日值班员
* @param dutyDate
* @param firstAidId
* @return
*/
List
<
Map
<
String
,
Object
>>
getDutyPersonByTeamIdAndAirId
(
String
dutyDate
,
String
firstAidId
);
/**
* 机场单位的人员中,部门 ”人员职务“ 不为空的人员,不包括下级部门的人员
* @param departmentName eg: 急救科、 消救部
* @param PositionType : eg 岗位为:支队长、副支队长、党支部副书记、支队长助理、指挥员、;
* @return
*/
List
<
Map
<
String
,
Object
>>
getFireRescueDepartmentStaff
(
String
departmentName
,
List
<
String
>
positionType
);
List
<
Map
<
String
,
Object
>>
getDutyFirePerson
(
String
dutyDate
,
String
groupCode
);
Map
<
String
,
Object
>
getCurentCarIsUserPhone
(
long
carId
);
List
<
Map
<
String
,
Object
>>
getOrgPersonTelphone
(
List
<
Map
<
String
,
Object
>>
companyIds
);
}
amos-boot-module/amos-boot-module-api/amos-boot-module-common-api/src/main/resources/mapper/DynamicFormInstanceMapper.xml
View file @
13284bdc
...
...
@@ -260,42 +260,315 @@
order by instanceId desc
</select>
<select
id=
"getDutyPersonByTeamIdAndCarId"
resultType=
"java.util.Map"
>
SELECT
userId
SELECT
cfir.telephone AS mobilePhone,
hh.userId AS userId,
cou.biz_org_name AS userName,
cou.amos_org_id AS amosId
FROM
(
SELECT
MAX(
userId,
instance_id
FROM
(
SELECT
MAX(
CASE
WHEN cbd.field_code = 'deptName' THEN
cbd.field_value
END
) AS deptName,
MAX(
CASE
WHEN cbd.field_code = 'userId' THEN
cbd.field_value
END
) AS userId,
cbd.instance_id
FROM
cb_dynamic_form_instance cbd
LEFT JOIN cb_duty_person_shift cps ON cbd.instance_id = cps.instance_id
WHERE
cps.duty_date = #{dutyDate}
AND cps.is_delete = FALSE
AND cbd.group_code = 'dutyPerson'
GROUP BY
cbd.instance_id
) ss
WHERE
ss.deptName = #{departmentName}
) hh
LEFT JOIN cb_org_usr cou ON hh.userId = cou.sequence_nbr
LEFT JOIN (
SELECT
MAX(
CASE
WHEN cfi.field_code = 'telephone' THEN
cfi.field_value
END
) AS telephone,
cfi.instance_id
FROM
cb_dynamic_form_instance cfi
) cfir ON cfir.instance_id = hh.userId
</select>
<select
id=
"getDutyPersonByTeamIdAndAirId"
resultType=
"java.util.Map"
>
SELECT
cfir.telephone AS mobilePhone,
hh.userId AS userId,
cou.biz_org_name AS userName,
cou.amos_org_id AS amosId
FROM
(
SELECT
userId
FROM
(
SELECT
MAX(
CASE
WHEN cbd.field_code = 'userId' THEN
cbd.field_value
END
) AS userId,
MAX(
CASE
WHEN cbd.field_code = 'firstAidId' THEN
cbd.field_value
END
) AS firstAidId,
cbd.instance_id
FROM
cb_dynamic_form_instance cbd
LEFT JOIN cb_duty_person_shift cps ON cbd.instance_id = cps.instance_id
WHERE
cps.duty_date = #{dutyDate}
AND cps.is_delete = FALSE
AND cbd.group_code = 'dutyFirstAid'
GROUP BY
cbd.instance_id
) ss
WHERE
ss.firstAidId = #{firstAidId}
) hh
LEFT JOIN cb_org_usr cou ON hh.userId = cou.sequence_nbr
LEFT JOIN (
SELECT
MAX(
CASE
WHEN cfi.field_code = 'telephone' THEN
cfi.field_value
END
) AS telephone,
cfi.instance_id
FROM
cb_dynamic_form_instance cfi
) cfir ON cfir.instance_id = hh.userId
</select>
<select
id =
"getFireRescueDepartmentStaff"
resultType=
"java.util.Map"
>
SELECT
dd.telephone AS mobilePhone,
cour.sequence_nbr AS userId,
cour.biz_org_name AS userName,
cour.amos_org_id AS amosId
FROM
(
SELECT
Max(
CASE
WHEN cbd.field_code =
#{carIdName}
THEN
WHEN cbd.field_code =
'administrativePositionCode'
THEN
cbd.field_value
END
) AS
#{carIdName}
,
M
AX
(
) AS
administrativePositionCode
,
M
ax
(
CASE
WHEN cbd.field_code =
#{teamIdName}
THEN
WHEN cbd.field_code =
'telephone'
THEN
cbd.field_value
END
) AS
#{teamIdName}
,
M
AX
(
) AS
telephone
,
M
ax
(
CASE
WHEN cbd.field_code =
#{userIdName}
THEN
cbd.field_value
WHEN cbd.field_code =
'stateCode'
THEN
cbd.field_value
_label
END
) AS
#{userIdName}
,
) AS
stateCode
,
cbd.instance_id
FROM
cb_dynamic_form_instance cbd
LEFT JOIN cb_duty_person_shift cps ON cbd.instance_id = cps.instance_id
WHERE
cps.duty_date = #{dutyDate}
AND cps.is_delete = FALSE
AND cbd.group_code = #{groupCode}
GROUP BY
cbd.instance_id IN (
SELECT
cou.sequence_nbr
FROM
cb_org_usr cou
WHERE
cou.parent_id = (
SELECT
sequence_nbr
FROM
cb_org_usr
WHERE
biz_org_name = #{departmentName}
)
AND cou.biz_org_type = 'PERSON'
) group by cbd.instance_id
) dd
LEFT JOIN cb_org_usr cour ON dd.instance_id = cour.sequence_nbr
WHERE
<if
test=
"positionType == null "
>
dd.administrativePositionCode IS NOT NULL
</if>
<if
test=
"positionType != null"
>
dd.administrativePositionCode in
<foreach
collection=
"positionType"
item=
"item"
separator=
","
open=
"("
close=
")"
index=
""
>
#{item, jdbcType=NUMERIC}
</foreach>
</if>
</select>
<select
id =
"getDutyFirePerson"
resultType=
"java.util.Map"
>
SELECT
dd.telephone AS mobilePhone
FROM
(
SELECT
Max(
CASE
WHEN cbd.field_code = 'telephone' THEN
cbd.field_value
END
) AS telephone,
cbd.instance_id
FROM
cb_dynamic_form_instance cbd
WHERE
cbd.instance_id IN (
SELECT
userId
FROM
(
SELECT
MAX(
CASE
WHEN cbd.field_code = 'deptId' THEN
cbd.field_value
END
) AS deptId,
MAX(
CASE
WHEN cbd.field_code = 'userId' THEN
cbd.field_value
END
) AS userId,
cbd.instance_id
FROM
cb_dynamic_form_instance cbd
LEFT JOIN cb_duty_person_shift cps ON cbd.instance_id = cps.instance_id
WHERE
cps.duty_date = #{dutyDate}
AND cps.is_delete = FALSE
AND cbd.group_code = #{groupCode}
GROUP BY
cbd.instance_id
) ss
WHERE
ss.deptId IN (
SELECT
sequence_nbr
FROM
cb_org_usr
WHERE
biz_org_name = '消防救援保障部'
AND biz_org_type = 'COMPANY'
)
)
) dd
</select>
<select
id=
'getCurentCarIsUserPhone'
resultType=
"java.util.Map"
>
SELECT
ss.telephone AS mobilePhone,
cou.sequence_nbr AS userId,
cou.biz_org_name AS userName,
cou.amos_org_id AS amosId
FROM
(
SELECT
field_value as telephone
,instance_id
FROM
cb_dynamic_form_instance
WHERE
group_code = '246'
AND instance_id = (
SELECT
sequence_nbr
FROM
cb_org_usr
WHERE
amos_org_id = (
SELECT
amos_user_id
FROM
jc_user_car
WHERE
car_id = #{carId}
)
) and field_code='telephone'
) ss
LEFT JOIN cb_org_usr cou ON ss.instance_id = cou.sequence_nbr
</select>
<select
id=
'getOrgPersonTelphone'
resultType=
"java.util.Map"
>
SELECT
dd.telephone AS mobilePhone
FROM
(
SELECT
Max(
CASE
WHEN cbd.field_code = 'administrativePositionCode' THEN
cbd.field_value_label
END
) AS administrativePositionCode,
Max(
CASE
WHEN cbd.field_code = 'telephone' THEN
cbd.field_value
END
) AS telephone,
Max(
CASE
WHEN cbd.field_code = 'stateCode' THEN
cbd.field_value_label
END
) AS stateCode,
cbd.instance_id
FROM
cb_dynamic_form_instance cbd
WHERE
cbd.instance_id IN (
SELECT
cou.sequence_nbr
FROM
cb_org_usr cou
WHERE
cou.parent_id in
<foreach
item=
"item"
collection=
"companyIds"
separator=
","
open=
"("
close=
")"
index=
""
>
#{item.departmentId, jdbcType=NUMERIC}
</foreach>
AND cou.biz_org_type = 'PERSON'
)group by cbd.instance_id
) dd
WHERE
ss.carId = #{carId}
AND ss.teamId = #{teamId}
dd.administrativePositionCode IS NOT NULL
</select>
</mapper>
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/dto/AlertCallePowerTransferRo.java
View file @
13284bdc
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
dto
;
import
java.io.Serializable
;
import
com.yeejoin.amos.component.rule.Label
;
import
com.yeejoin.amos.component.rule.RuleFact
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
/**
*
* <pre>
...
...
@@ -20,16 +20,12 @@ import java.util.List;
@Data
@RuleFact
(
value
=
"调派信息"
,
project
=
"西咸机场119调派规则"
)
public
class
AlertCallePowerTransferRo
implements
Serializable
{
/**
* <pre>
*
* </pre>
*/
private
static
final
long
serialVersionUID
=
4735920511849348360
L
;
private
static
final
long
serialVersionUID
=
9053208791780047768
L
;
/**
* 通用属性
...
...
@@ -86,7 +82,7 @@ public class AlertCallePowerTransferRo implements Serializable{
private
String
contactPhone
;
@ApiModelProperty
(
value
=
"调派单位资源列表"
)
private
List
<
PowerTransferCompanyDto
>
company
;
private
String
company
;
@ApiModelProperty
(
value
=
"调派类型队伍"
)
private
String
powerTransType
;
...
...
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/enums/AlertBusinessTypeEnum.java
View file @
13284bdc
...
...
@@ -23,6 +23,7 @@ public enum AlertBusinessTypeEnum {
警情初报
(
"reportAlert"
,
"297"
,
"297"
,
""
,
"警情初报"
),
警情续报
(
"followReportAlert"
,
"313"
,
"313"
,
"SMS_JCS_0006"
,
"警情续报"
),
非警情确认
(
"notAlert"
,
"314"
,
"314"
,
"SMS_JCS_0008"
,
"非警情确认"
),
力量调派
(
"powerTransfer"
,
"316"
,
"316"
,
"SMS_JCS_DP"
,
"力量调派"
),
警情结案
(
"endAlert"
,
"315"
,
"315"
,
"SMS_JCS_0009"
,
"警情结案"
);
private
String
key
;
...
...
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/enums/AlertStageEnums.java
View file @
13284bdc
...
...
@@ -28,7 +28,7 @@ public enum AlertStageEnums {
RG
(
"226"
,
"人工上报"
),
DJ
(
"228"
,
"对讲呼入"
),
JK
(
"388"
,
"监控中心报警"
),
JK
(
"388"
,
"监控中心报警"
),
//也是监控大队
DH
(
"389"
,
"电话报警"
),
...
...
@@ -41,7 +41,18 @@ public enum AlertStageEnums {
ZZZD
(
"116"
,
"企(事)业单位专职消防救援支队"
),
YWDD
(
"117"
,
"企(事)业单位义务消防救援大队"
),
YLJY
(
"830"
,
"企(事)业单位医疗救援队(站)"
),
JKDD
(
"118"
,
"企(事)业单位监控大队"
);
DD
(
"DD"
,
"所属大队"
),
JJZ
(
"JJZ"
,
"急救站"
),
ZD
(
"ZD"
,
"消防支队"
),
XJ
(
"XJ"
,
"消救部"
),
ZH
(
"ZH"
,
"应急指挥科"
),
BD
(
"BD"
,
"调派车辆指定人"
),
监控大队
(
"JK"
,
"监控大队"
),
onDuty
(
"onDuty"
,
"值班单位"
),
fireBrigade
(
"fireBrigade"
,
"岗位名称,规则配置"
),
airportUnit
(
"airportUnit"
,
"人员职务规则配置"
),
flag
(
"flag"
,
"值班单位"
),
JKDD
(
"6"
,
"企(事)业单位监控大队"
);
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/service/impl/FirefightersServiceImpl.java
View file @
13284bdc
...
...
@@ -12,7 +12,6 @@ import org.typroject.tyboot.core.rdbms.service.BaseService;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl
;
import
com.yeejoin.amos.boot.biz.common.utils.Menu
;
...
...
@@ -146,7 +145,9 @@ public class FirefightersServiceImpl extends BaseService<FirefightersDto, Firefi
*/
public
List
<
Map
<
String
,
Object
>>
getDetailByTeamIdAndJobTitle
(
Long
teamId
,
List
<
String
>
jobTitleArray
)
{
LambdaQueryWrapper
<
Firefighters
>
wrapper
=
new
LambdaQueryWrapper
<
Firefighters
>();
wrapper
.
in
(
Firefighters:
:
getJobTitle
,
jobTitleArray
);
if
(
jobTitleArray
!=
null
&&
jobTitleArray
.
size
()>
0
)
{
wrapper
.
in
(
Firefighters:
:
getJobTitleCode
,
jobTitleArray
);
}
wrapper
.
eq
(
Firefighters:
:
getIsDelete
,
false
);
wrapper
.
eq
(
Firefighters:
:
getFireTeamId
,
teamId
);
wrapper
.
select
(
Firefighters:
:
getMobilePhone
);
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/service/impl/OrgUsrServiceImpl.java
View file @
13284bdc
...
...
@@ -66,6 +66,7 @@ import com.yeejoin.amos.boot.module.common.api.entity.OrgUsr;
import
com.yeejoin.amos.boot.module.common.api.enums.OrgPersonEnum
;
import
com.yeejoin.amos.boot.module.common.api.enums.UserRolesEnum
;
import
com.yeejoin.amos.boot.module.common.api.enums.UserUnitTypeEnum
;
import
com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper
;
import
com.yeejoin.amos.boot.module.common.api.mapper.OrgUsrMapper
;
import
com.yeejoin.amos.boot.module.common.api.service.IMaintenanceCompanyService
;
import
com.yeejoin.amos.boot.module.common.api.service.IOrgUsrService
;
...
...
@@ -74,6 +75,8 @@ import com.yeejoin.amos.feign.privilege.Privilege;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
com.yeejoin.amos.feign.privilege.model.RoleModel
;
import
ch.qos.logback.core.joran.conditional.IfAction
;
/**
* 机构/部门/人员表 服务实现类
*
...
...
@@ -112,6 +115,9 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
FireStationServiceImpl
fireStationServiceImpl
;
@Value
(
"${jcs.company.topic.add}"
)
private
String
airportAddTopic
;
@Autowired
DynamicFormInstanceMapper
dynamicFormInstanceMapper
;
public
static
List
<
OrgMenuDto
>
buildTreeParallel
(
List
<
OrgUsr
>
list
)
{
...
...
@@ -1864,5 +1870,18 @@ public class OrgUsrServiceImpl extends BaseService<OrgUsrDto, OrgUsr, OrgUsrMapp
return
orgUsrMapper
.
queryCompanyId
(
bizOrgName
);
}
public
List
<
Map
<
String
,
Object
>>
getuserDetail
(
Long
departmentId
,
List
<
Map
<
String
,
Object
>>
resulLists
){
OrgUsr
resulList
=
this
.
baseMapper
.
selectById
(
departmentId
);
if
(
resulList
.
getParentId
()!=
null
)
{
Map
<
String
,
Object
>
resultMap
=
new
HashMap
<
String
,
Object
>();
resultMap
.
put
(
"departmentId"
,
resulList
.
getSequenceNbr
());
resulLists
.
add
(
resultMap
);
return
getuserDetail
(
Long
.
parseLong
(
resulList
.
getParentId
()),
resulLists
);
}
else
{
return
resulLists
;
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/rule/action/PowerTransferAction.java
View file @
13284bdc
...
...
@@ -8,6 +8,8 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCallePowerTransferRo
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum
;
import
com.yeejoin.amos.boot.module.jcs.biz.service.impl.AlertSubmittedServiceImpl
;
import
com.yeejoin.amos.component.rule.RuleActionBean
;
import
com.yeejoin.amos.component.rule.RuleMethod
;
...
...
@@ -44,14 +46,19 @@ public class PowerTransferAction {
* @param object 模板内容对象
* @throws Exception 异常
*/
@RuleMethod
(
methodLabel
=
"短信报送"
,
project
=
"西咸机场119接处警规则"
)
@SuppressWarnings
(
"rawtypes"
)
@RuleMethod
(
methodLabel
=
"短信报送"
,
project
=
"西咸机场119接处警规则"
)
public
void
sendcmd
(
String
smsCode
,
String
sendType
,
List
sendIds
,
Object
object
)
throws
Exception
{
// alertSubmittedService.ruleCallbackAction(smsCode, sendIds, object);
System
.
out
.
println
(
"8796w39879873298798"
);
if
(
object
instanceof
AlertCallePowerTransferRo
)
{
AlertCallePowerTransferRo
calledRo
=
(
AlertCallePowerTransferRo
)
object
;
calledRo
.
getPowerTransType
();
if
(
FireBrigadeTypeEnum
.
专职消防队
.
getKey
().
equals
(
calledRo
.
getPowerTransType
()))
{
alertSubmittedService
.
ruleCallbackActionForPowerTransferForCar
(
smsCode
,
sendIds
,
object
);
//消防车辆
}
else
if
(
FireBrigadeTypeEnum
.
医疗救援队
.
getKey
().
equals
(
calledRo
.
getPowerTransType
()))
{
alertSubmittedService
.
ruleCallbackActionForPowerTransferForAid
(
smsCode
,
sendIds
,
object
);
//120急救站
}
else
if
(
FireBrigadeTypeEnum
.
监控大队
.
getKey
().
equals
(
calledRo
.
getPowerTransType
()))
{
alertSubmittedService
.
ruleCallbackActionForPowerTransferForSurvBrigade
(
smsCode
,
sendIds
,
object
);
//监控大队
}
}
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/AlertSubmittedServiceImpl.java
View file @
13284bdc
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
import
static
org
.
hamcrest
.
CoreMatchers
.
nullValue
;
import
java.lang.reflect.Field
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
...
...
@@ -14,18 +18,20 @@ import java.util.Set;
import
java.util.stream.Collectors
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.eclipse.paho.client.mqttv3.MqttPersistenceException
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.foundation.utils.StringUtil
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONException
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
...
...
@@ -33,14 +39,19 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.google.common.collect.Lists
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl
;
import
com.yeejoin.amos.boot.biz.common.utils.DateUtils
;
import
com.yeejoin.amos.boot.biz.common.utils.EnumsUtils
;
import
com.yeejoin.amos.boot.biz.common.utils.RedisUtils
;
import
com.yeejoin.amos.boot.module.common.api.dto.FirefightersDto
;
import
com.yeejoin.amos.boot.module.common.api.dto.FormValue
;
import
com.yeejoin.amos.boot.module.common.api.entity.FireTeam
;
import
com.yeejoin.amos.boot.module.common.api.feign.EquipFeignClient
;
import
com.yeejoin.amos.boot.module.common.api.mapper.DynamicFormInstanceMapper
;
import
com.yeejoin.amos.boot.module.common.api.service.IDutyPersonService
;
import
com.yeejoin.amos.boot.module.common.api.service.IFireTeamService
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.FirefightersServiceImpl
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.OrgUsrServiceImpl
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCallePowerTransferRo
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledFormDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledObjsDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledRo
;
...
...
@@ -51,12 +62,12 @@ import com.yeejoin.amos.boot.module.jcs.api.dto.AlertSubmittedZHDto;
import
com.yeejoin.amos.boot.module.jcs.api.dto.CarStatusInfoDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.InstructionsZHDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyResourcesDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyZHDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.SchedulingReportingDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.TemplateDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.TemplateExtendDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.AlertSubmitted
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.AlertSubmittedObject
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.Template
;
...
...
@@ -72,32 +83,6 @@ import com.yeejoin.amos.boot.module.jcs.api.service.IAlertSubmittedObjectService
import
com.yeejoin.amos.boot.module.jcs.api.service.IAlertSubmittedService
;
import
com.yeejoin.amos.boot.module.jcs.biz.rule.action.AlertCalledAction
;
import
com.yeejoin.amos.component.rule.config.RuleConfig
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.eclipse.paho.client.mqttv3.MqttException
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
java.lang.reflect.Field
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* 警情报送记录 服务实现类
...
...
@@ -106,445 +91,457 @@ import java.util.stream.Collectors;
* @date 2021-06-17
*/
@Service
public
class
AlertSubmittedServiceImpl
extends
BaseService
<
AlertSubmittedDto
,
AlertSubmitted
,
AlertSubmittedMapper
>
implements
IAlertSubmittedService
{
@Autowired
IAlertSubmittedObjectService
iAlertSubmittedObjectService
;
@Autowired
AlertSubmittedObjectServiceImpl
alertSubmittedObjectServiceImpl
;
@Autowired
AlertCalledServiceImpl
alertCalledService
;
@Autowired
DataDictionaryServiceImpl
dataDictionaryService
;
@Autowired
TemplateServiceImpl
templateService
;
@Autowired
PowerTransferServiceImpl
powerTransferService
;
@Autowired
RuleAlertCalledService
ruleAlertCalledService
;
@Autowired
AlertCalledAction
alertCalledAction
;
@Autowired
OrgUsrServiceImpl
orgUsrService
;
@Autowired
private
RedisUtils
redisUtils
;
@Autowired
private
FirefightersServiceImpl
firefightersService
;
@Autowired
OrgUsrServiceImpl
iOrgUsrService
;
@Autowired
IDutyPersonService
iDutyPersonService
;
@Autowired
private
EmqKeeper
emqKeeper
;
@Value
(
"${mqtt.topic.alert.reporting}"
)
private
String
topic
;
@Value
(
"${mqtt.topic.command.power.deployment}"
)
private
String
powertopic
;
@Autowired
EquipFeignClient
equipFeignClient
;
@Autowired
PowerTransferCompanyResourcesServiceImpl
powerTransferCompanyResourcesService
;
@Autowired
AlertSubmittedMapper
alertSubmittedMapper
;
@Autowired
PowerTransferCompanyMapper
powerTransferCompanyMapper
;
@Override
public
SchedulingReportingDto
listSchedulingByParam
(
AlertSubmittedDto
queryParam
)
{
SchedulingReportingDto
schedulingReportingDto
=
new
SchedulingReportingDto
();
List
<
AlertSubmittedExtDto
>
alertSubmittedExtDtoList
=
this
.
baseMapper
.
listSchedulingByParam
(
queryParam
);
schedulingReportingDto
.
setSchedulingReportingList
(
alertSubmittedExtDtoList
);
Map
<
String
,
List
<
AlertSubmittedExtDto
>>
groupMap
=
alertSubmittedExtDtoList
.
stream
().
collect
(
Collectors
.
groupingBy
(
AlertSubmittedExtDto:
:
getSubmissionMethodCode
));
int
phoneSize
=
0
;
int
smsSize
=
0
;
if
(
ObjectUtils
.
isNotEmpty
(
groupMap
.
get
(
SubmissionMethodEnum
.
PHONE
.
getCode
())))
{
phoneSize
=
groupMap
.
get
(
SubmissionMethodEnum
.
PHONE
.
getCode
()).
size
();
}
if
(
ObjectUtils
.
isNotEmpty
(
groupMap
.
get
(
SubmissionMethodEnum
.
SMS
.
getCode
())))
{
smsSize
=
groupMap
.
get
(
SubmissionMethodEnum
.
SMS
.
getCode
()).
size
();
}
String
extraInfo
=
String
.
format
(
"已调度电话%s起,短信%d批"
,
phoneSize
,
smsSize
);
schedulingReportingDto
.
setExtraInfo
(
extraInfo
);
return
schedulingReportingDto
;
}
@Override
public
SchedulingReportingDto
listReportingByParam
(
AlertSubmittedDto
queryParam
)
{
SchedulingReportingDto
schedulingReportingDto
=
new
SchedulingReportingDto
();
List
<
AlertSubmittedExtDto
>
alertSubmittedExtDtoList
=
this
.
baseMapper
.
listReportingByParam
(
queryParam
);
if
(
ObjectUtils
.
isNotEmpty
(
alertSubmittedExtDtoList
))
{
// 组装额外信息
String
_extraInfo
=
"报送给%s、%s"
;
alertSubmittedExtDtoList
.
forEach
(
alertSubmittedExtDto
->
{
try
{
alertSubmittedExtDto
.
setExtraInfo
(
String
.
format
(
_extraInfo
,
alertSubmittedExtDto
.
getCompanyName
(),
alertSubmittedExtDto
.
getUserName
()));
TemplateExtendDto
template
=
templateService
.
getByType
(
alertSubmittedExtDto
.
getBusinessTypeCode
());
String
richContent
=
template
.
getRichContent
();
alertSubmittedExtDto
.
setSubmissionContentValue
(
JSONObject
.
parseObject
(
alertSubmittedExtDto
.
getSubmissionContent
()));
alertSubmittedExtDto
.
setSubmissionContent
(
richContent
);
}
catch
(
JSONException
e
)
{
alertSubmittedExtDto
.
setSubmissionContentValue
(
alertSubmittedExtDto
.
getSubmitContent
());
}
});
schedulingReportingDto
.
setSchedulingReportingList
(
alertSubmittedExtDtoList
);
String
extraInfo
=
String
.
format
(
"已报送%d条"
,
alertSubmittedExtDtoList
.
size
());
schedulingReportingDto
.
setExtraInfo
(
extraInfo
);
}
return
schedulingReportingDto
;
}
@Override
public
Boolean
save
(
AlertSubmittedDto
alertSubmittedDto
,
String
userName
)
throws
Exception
{
try
{
Map
<
String
,
String
>
map
=
saveAlertSubmitted
(
alertSubmittedDto
,
userName
);
// 组装规则入参
AlertCalled
alertCalled
=
alertCalledService
.
getById
(
alertSubmittedDto
.
getAlertCalledId
());
AlertCalledObjsDto
alertCalledVo
=
(
AlertCalledObjsDto
)
alertCalledService
.
selectAlertCalledByIdNoRedisNew
(
alertCalled
.
getSequenceNbr
());
alertCalledVo
.
setAlertCalled
(
alertCalled
);
// 调用规则
ruleAlertCalledService
.
fireAlertCalledRule
(
alertCalledVo
,
map
.
get
(
"alertWay"
),
map
.
get
(
"mobiles"
));
//通知实战指挥页面发送mqtt 默认发送 String 类型 0, 新警情 1 警情状态变化
emqKeeper
.
getMqttClient
().
publish
(
powertopic
,
"0"
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
true
);
}
catch
(
MqttException
e
)
{
throw
new
RuntimeException
();
}
return
true
;
}
/**
* 规则回调
*/
public
void
ruleCallbackAction
(
String
smsCode
,
List
<
Map
<
String
,
Object
>>
sendIds
,
Object
object
)
throws
Exception
{
// 获取报送对象列表
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
=
Lists
.
newArrayList
();
Set
<
String
>
mobiles
=
new
HashSet
<>();
HashMap
<
String
,
String
>
smsParams
=
new
HashMap
<>();
String
alertCalledId
=
null
;
List
<
Map
<
String
,
Object
>>
orgUsers
=
new
LinkedList
<>();
String
sCode
=
""
;
String
alertWay
=
""
;
if
(
object
instanceof
AlertCalledRo
)
{
AlertCalledRo
calledRo
=
(
AlertCalledRo
)
object
;
String
alertSubmittedId
=
calledRo
.
getAlertSubmittedId
();
alertCalledId
=
calledRo
.
getSequenceNbr
();
String
alertTypeCode
=
calledRo
.
getAlertTypeCode
();
alertWay
=
calledRo
.
getAlertWay
();
String
unitInvolved
=
calledRo
.
getUnitInvolved
();
// 警情续报 警情结案,非警情确认选择人员电话号码
String
ids
=
calledRo
.
getIds
();
if
(!
ValidationUtil
.
isEmpty
(
ids
))
{
List
<
String
>
ls
=
Arrays
.
asList
(
ids
.
split
(
","
));
ls
.
stream
().
forEach
(
e
->
mobiles
.
add
(
e
));
}
// 获取报送规则
sendIds
.
stream
().
forEach
(
e
->{
// 一般火灾 // 航空器救援
if
(
alertTypeCode
.
equals
(
AlertStageEnums
.
YBHZ
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
HKJY
.
getCode
()))
{
if
(
e
.
containsKey
(
"onDuty"
))
{
// 当日值班人员:获值班表中包括消救部、综合办公室、消防支队、应急指挥科的值班人员。
List
<
Map
<
String
,
Object
>>
mapList
=
iDutyPersonService
.
queryByCompanyId
();
orgUsers
.
addAll
(
mapList
);
}
if
(
e
.
containsKey
(
"fireBrigade"
))
{
// 根据人员岗位:班组长、队长、通讯员; 消防队伍--消防人员 中,对应岗位的人员
List
<
FirefightersDto
>
fireBrigade
=
firefightersService
.
queryById
(
e
.
get
(
"fireBrigade"
).
toString
().
split
(
","
));
fireBrigade
.
stream
().
forEach
(
f
->{
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"telephone"
,
f
.
getMobilePhone
());
map
.
put
(
"sequenceNbr"
,
f
.
getSequenceNbr
());
map
.
put
(
"bizOrgName"
,
f
.
getName
());
orgUsers
.
add
(
map
);
});
}
if
(
e
.
containsKey
(
"airportUnit"
))
{
// 根据人员职务:干部&领导 机场单位 模块 消防急救保障部中,“人员职务”不为空的人员
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
"消防救援部"
);
orgUsers
.
addAll
(
mapList
);
}
// 安运部
if
(
e
.
get
(
"type"
).
toString
().
equals
(
"AY"
))
{
if
(
e
.
containsKey
(
"airportPost"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
"安运部"
);
orgUsers
.
addAll
(
mapList
);
}
}
// 事发单位
if
(
e
.
get
(
"type"
).
toString
().
equals
(
"SF"
))
{
if
(
e
.
containsKey
(
"airportPost"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
unitInvolved
);
orgUsers
.
addAll
(
mapList
);
}
}
}
// 突发事件救援 // 漏油现场安全保障 // 专机保障 // 其他
if
(
alertTypeCode
.
equals
(
AlertStageEnums
.
HKJY
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
LYXC
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
ZJBZ
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
QTJQ
.
getCode
()))
{
if
(
e
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iDutyPersonService
.
queryByCompanyNew
(
"消防支队"
);
orgUsers
.
addAll
(
mapList
);
}
}
// 120急救
if
(
alertTypeCode
.
equals
(
AlertStageEnums
.
JJJQ
.
getCode
()))
{
if
(
e
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iDutyPersonService
.
queryByCompanyNew
(
"急救科"
);
orgUsers
.
addAll
(
mapList
);
}
if
(
e
.
containsKey
(
"airportUnit"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
"急救科"
);
orgUsers
.
addAll
(
mapList
);
}
}
});
// 警情初报 续报 结案
// 1.保存警情记录主表
AlertSubmitted
alertSubmitted
=
new
AlertSubmitted
();
alertSubmitted
.
setAlertCalledId
(
Long
.
valueOf
(
calledRo
.
getSequenceNbr
()));
// 保存初报细分类型(一般火灾、航空器救援等)
alertSubmitted
.
setBusinessTypeCode
(
calledRo
.
getAlertTypeCode
());
// 警情初报 --- 续报 结案
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情初报
.
getCode
()))
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
警情初报
.
getName
());
}
else
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情续报
.
getCode
()))
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
警情续报
.
getName
());
sCode
=
"SMS_JCS_XB"
;
}
else
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情结案
.
getCode
()))
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
警情结案
.
getName
());
sCode
=
"SMS_JCS_JA"
;
}
else
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
非警情确认
.
getName
());
sCode
=
"SMS_JCS_QR"
;
}
Optional
<
SubmissionMethodEnum
>
submissionMethodEnum
=
Optional
.
of
(
SubmissionMethodEnum
.
SMS
);
alertSubmitted
.
setSubmissionMethodCode
(
submissionMethodEnum
.
get
().
getCode
());
alertSubmitted
.
setSubmissionMethod
(
submissionMethodEnum
.
get
().
getName
());
Optional
<
AlertSchedulingTypeEnum
>
alertSchedulingTypeEnum
=
Optional
.
of
(
AlertSchedulingTypeEnum
.
融合调度
);
alertSubmitted
.
setSchedulingTypeCode
(
alertSchedulingTypeEnum
.
get
().
getCode
());
alertSubmitted
.
setSchedulingType
(
alertSchedulingTypeEnum
.
get
().
getName
());
alertSubmitted
.
setSubmissionContent
(
JSONObject
.
toJSONString
(
objectToMap
(
calledRo
)));
public
class
AlertSubmittedServiceImpl
extends
BaseService
<
AlertSubmittedDto
,
AlertSubmitted
,
AlertSubmittedMapper
>
implements
IAlertSubmittedService
{
@Autowired
IAlertSubmittedObjectService
iAlertSubmittedObjectService
;
@Autowired
AlertSubmittedObjectServiceImpl
alertSubmittedObjectServiceImpl
;
@Autowired
AlertCalledServiceImpl
alertCalledService
;
@Autowired
DataDictionaryServiceImpl
dataDictionaryService
;
@Autowired
TemplateServiceImpl
templateService
;
@Autowired
PowerTransferServiceImpl
powerTransferService
;
@Autowired
RuleAlertCalledService
ruleAlertCalledService
;
@Autowired
AlertCalledAction
alertCalledAction
;
@Autowired
OrgUsrServiceImpl
orgUsrService
;
@Autowired
private
RedisUtils
redisUtils
;
@Autowired
private
FirefightersServiceImpl
firefightersService
;
@Autowired
OrgUsrServiceImpl
iOrgUsrService
;
@Autowired
IDutyPersonService
iDutyPersonService
;
@Autowired
private
EmqKeeper
emqKeeper
;
@Value
(
"${mqtt.topic.alert.reporting}"
)
private
String
topic
;
@Value
(
"${mqtt.topic.command.power.deployment}"
)
private
String
powertopic
;
@Autowired
EquipFeignClient
equipFeignClient
;
@Autowired
PowerTransferCompanyResourcesServiceImpl
powerTransferCompanyResourcesService
;
@Autowired
AlertSubmittedMapper
alertSubmittedMapper
;
@Autowired
PowerTransferCompanyMapper
powerTransferCompanyMapper
;
@Autowired
DynamicFormInstanceMapper
dynamicFormInstanceMapper
;
@Autowired
FireTeamServiceImpl
fireTeamServiceImpl
;
@Autowired
IFireTeamService
fireTeamService
;
@Override
public
SchedulingReportingDto
listSchedulingByParam
(
AlertSubmittedDto
queryParam
)
{
SchedulingReportingDto
schedulingReportingDto
=
new
SchedulingReportingDto
();
List
<
AlertSubmittedExtDto
>
alertSubmittedExtDtoList
=
this
.
baseMapper
.
listSchedulingByParam
(
queryParam
);
schedulingReportingDto
.
setSchedulingReportingList
(
alertSubmittedExtDtoList
);
Map
<
String
,
List
<
AlertSubmittedExtDto
>>
groupMap
=
alertSubmittedExtDtoList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
AlertSubmittedExtDto:
:
getSubmissionMethodCode
));
int
phoneSize
=
0
;
int
smsSize
=
0
;
if
(
ObjectUtils
.
isNotEmpty
(
groupMap
.
get
(
SubmissionMethodEnum
.
PHONE
.
getCode
())))
{
phoneSize
=
groupMap
.
get
(
SubmissionMethodEnum
.
PHONE
.
getCode
()).
size
();
}
if
(
ObjectUtils
.
isNotEmpty
(
groupMap
.
get
(
SubmissionMethodEnum
.
SMS
.
getCode
())))
{
smsSize
=
groupMap
.
get
(
SubmissionMethodEnum
.
SMS
.
getCode
()).
size
();
}
String
extraInfo
=
String
.
format
(
"已调度电话%s起,短信%d批"
,
phoneSize
,
smsSize
);
schedulingReportingDto
.
setExtraInfo
(
extraInfo
);
return
schedulingReportingDto
;
}
@Override
public
SchedulingReportingDto
listReportingByParam
(
AlertSubmittedDto
queryParam
)
{
SchedulingReportingDto
schedulingReportingDto
=
new
SchedulingReportingDto
();
List
<
AlertSubmittedExtDto
>
alertSubmittedExtDtoList
=
this
.
baseMapper
.
listReportingByParam
(
queryParam
);
if
(
ObjectUtils
.
isNotEmpty
(
alertSubmittedExtDtoList
))
{
// 组装额外信息
String
_extraInfo
=
"报送给%s、%s"
;
alertSubmittedExtDtoList
.
forEach
(
alertSubmittedExtDto
->
{
try
{
alertSubmittedExtDto
.
setExtraInfo
(
String
.
format
(
_extraInfo
,
alertSubmittedExtDto
.
getCompanyName
(),
alertSubmittedExtDto
.
getUserName
()));
TemplateExtendDto
template
=
templateService
.
getByType
(
alertSubmittedExtDto
.
getBusinessTypeCode
());
String
richContent
=
template
.
getRichContent
();
alertSubmittedExtDto
.
setSubmissionContentValue
(
JSONObject
.
parseObject
(
alertSubmittedExtDto
.
getSubmissionContent
()));
alertSubmittedExtDto
.
setSubmissionContent
(
richContent
);
}
catch
(
JSONException
e
)
{
alertSubmittedExtDto
.
setSubmissionContentValue
(
alertSubmittedExtDto
.
getSubmitContent
());
}
});
schedulingReportingDto
.
setSchedulingReportingList
(
alertSubmittedExtDtoList
);
String
extraInfo
=
String
.
format
(
"已报送%d条"
,
alertSubmittedExtDtoList
.
size
());
schedulingReportingDto
.
setExtraInfo
(
extraInfo
);
}
return
schedulingReportingDto
;
}
@Override
public
Boolean
save
(
AlertSubmittedDto
alertSubmittedDto
,
String
userName
)
throws
Exception
{
try
{
Map
<
String
,
String
>
map
=
saveAlertSubmitted
(
alertSubmittedDto
,
userName
);
// 组装规则入参
AlertCalled
alertCalled
=
alertCalledService
.
getById
(
alertSubmittedDto
.
getAlertCalledId
());
AlertCalledObjsDto
alertCalledVo
=
(
AlertCalledObjsDto
)
alertCalledService
.
selectAlertCalledByIdNoRedisNew
(
alertCalled
.
getSequenceNbr
());
alertCalledVo
.
setAlertCalled
(
alertCalled
);
// 调用规则
ruleAlertCalledService
.
fireAlertCalledRule
(
alertCalledVo
,
map
.
get
(
"alertWay"
),
map
.
get
(
"mobiles"
));
// 通知实战指挥页面发送mqtt 默认发送 String 类型 0, 新警情 1 警情状态变化
emqKeeper
.
getMqttClient
().
publish
(
powertopic
,
"0"
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
true
);
}
catch
(
MqttException
e
)
{
throw
new
RuntimeException
();
}
return
true
;
}
/**
* 规则回调
*/
public
void
ruleCallbackAction
(
String
smsCode
,
List
<
Map
<
String
,
Object
>>
sendIds
,
Object
object
)
throws
Exception
{
// 获取报送对象列表
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
=
Lists
.
newArrayList
();
Set
<
String
>
mobiles
=
new
HashSet
<>();
HashMap
<
String
,
String
>
smsParams
=
new
HashMap
<>();
String
alertCalledId
=
null
;
List
<
Map
<
String
,
Object
>>
orgUsers
=
new
LinkedList
<>();
String
sCode
=
""
;
String
alertWay
=
""
;
if
(
object
instanceof
AlertCalledRo
)
{
AlertCalledRo
calledRo
=
(
AlertCalledRo
)
object
;
String
alertSubmittedId
=
calledRo
.
getAlertSubmittedId
();
alertCalledId
=
calledRo
.
getSequenceNbr
();
String
alertTypeCode
=
calledRo
.
getAlertTypeCode
();
alertWay
=
calledRo
.
getAlertWay
();
String
unitInvolved
=
calledRo
.
getUnitInvolved
();
// 警情续报 警情结案,非警情确认选择人员电话号码
String
ids
=
calledRo
.
getIds
();
if
(!
ValidationUtil
.
isEmpty
(
ids
))
{
List
<
String
>
ls
=
Arrays
.
asList
(
ids
.
split
(
","
));
ls
.
stream
().
forEach
(
e
->
mobiles
.
add
(
e
));
}
// 获取报送规则
sendIds
.
stream
().
forEach
(
e
->
{
// 一般火灾 // 航空器救援
if
(
alertTypeCode
.
equals
(
AlertStageEnums
.
YBHZ
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
HKJY
.
getCode
()))
{
if
(
e
.
containsKey
(
"onDuty"
))
{
// 当日值班人员:获值班表中包括消救部、综合办公室、消防支队、应急指挥科的值班人员。
List
<
Map
<
String
,
Object
>>
mapList
=
iDutyPersonService
.
queryByCompanyId
();
orgUsers
.
addAll
(
mapList
);
}
if
(
e
.
containsKey
(
"fireBrigade"
))
{
// 根据人员岗位:班组长、队长、通讯员; 消防队伍--消防人员 中,对应岗位的人员
List
<
FirefightersDto
>
fireBrigade
=
firefightersService
.
queryById
(
e
.
get
(
"fireBrigade"
).
toString
().
split
(
","
));
fireBrigade
.
stream
().
forEach
(
f
->
{
HashMap
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"telephone"
,
f
.
getMobilePhone
());
map
.
put
(
"sequenceNbr"
,
f
.
getSequenceNbr
());
map
.
put
(
"bizOrgName"
,
f
.
getName
());
orgUsers
.
add
(
map
);
});
}
if
(
e
.
containsKey
(
"airportUnit"
))
{
// 根据人员职务:干部&领导 机场单位 模块 消防急救保障部中,“人员职务”不为空的人员
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
"消防救援部"
);
orgUsers
.
addAll
(
mapList
);
}
// 安运部
if
(
e
.
get
(
"type"
).
toString
().
equals
(
"AY"
))
{
if
(
e
.
containsKey
(
"airportPost"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
"安运部"
);
orgUsers
.
addAll
(
mapList
);
}
}
// 事发单位
if
(
e
.
get
(
"type"
).
toString
().
equals
(
"SF"
))
{
if
(
e
.
containsKey
(
"airportPost"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
unitInvolved
);
orgUsers
.
addAll
(
mapList
);
}
}
}
// 突发事件救援 // 漏油现场安全保障 // 专机保障 // 其他
if
(
alertTypeCode
.
equals
(
AlertStageEnums
.
HKJY
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
LYXC
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
ZJBZ
.
getCode
())
||
alertTypeCode
.
equals
(
AlertStageEnums
.
QTJQ
.
getCode
()))
{
if
(
e
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iDutyPersonService
.
queryByCompanyNew
(
"消防支队"
);
orgUsers
.
addAll
(
mapList
);
}
}
// 120急救
if
(
alertTypeCode
.
equals
(
AlertStageEnums
.
JJJQ
.
getCode
()))
{
if
(
e
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iDutyPersonService
.
queryByCompanyNew
(
"急救科"
);
orgUsers
.
addAll
(
mapList
);
}
if
(
e
.
containsKey
(
"airportUnit"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
iOrgUsrService
.
queryCompanyId
(
"急救科"
);
orgUsers
.
addAll
(
mapList
);
}
}
});
// 警情初报 续报 结案
// 1.保存警情记录主表
AlertSubmitted
alertSubmitted
=
new
AlertSubmitted
();
alertSubmitted
.
setAlertCalledId
(
Long
.
valueOf
(
calledRo
.
getSequenceNbr
()));
// 保存初报细分类型(一般火灾、航空器救援等)
alertSubmitted
.
setBusinessTypeCode
(
calledRo
.
getAlertTypeCode
());
// 警情初报 --- 续报 结案
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情初报
.
getCode
()))
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
警情初报
.
getName
());
}
else
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情续报
.
getCode
()))
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
警情续报
.
getName
());
sCode
=
"SMS_JCS_XB"
;
}
else
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情结案
.
getCode
()))
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
警情结案
.
getName
());
sCode
=
"SMS_JCS_JA"
;
}
else
{
alertSubmitted
.
setBusinessType
(
AlertBusinessTypeEnum
.
非警情确认
.
getName
());
sCode
=
"SMS_JCS_QR"
;
}
Optional
<
SubmissionMethodEnum
>
submissionMethodEnum
=
Optional
.
of
(
SubmissionMethodEnum
.
SMS
);
alertSubmitted
.
setSubmissionMethodCode
(
submissionMethodEnum
.
get
().
getCode
());
alertSubmitted
.
setSubmissionMethod
(
submissionMethodEnum
.
get
().
getName
());
Optional
<
AlertSchedulingTypeEnum
>
alertSchedulingTypeEnum
=
Optional
.
of
(
AlertSchedulingTypeEnum
.
融合调度
);
alertSubmitted
.
setSchedulingTypeCode
(
alertSchedulingTypeEnum
.
get
().
getCode
());
alertSubmitted
.
setSchedulingType
(
alertSchedulingTypeEnum
.
get
().
getName
());
alertSubmitted
.
setSubmissionContent
(
JSONObject
.
toJSONString
(
objectToMap
(
calledRo
)));
// String token = RequestContext.getToken();
// ReginParams reginParams = JSONObject.parseObject(.get(RedisredisUtilsKey.buildReginKey(RequestContext.getExeUserId(),token)).toString(),
// ReginParams.class);
// alertSubmitted.setRecUserName(reginParams.getUserModel().getUserName());
// alertSubmitted.setSender(reginParams.getUserModel().getUserName());
alertSubmitted
.
setUpdateTime
(
new
Date
());
alertSubmitted
.
setSubmissionTime
(
new
Date
());
this
.
baseMapper
.
insert
(
alertSubmitted
);
alertSubmittedId
=
alertSubmitted
.
getSequenceNbr
().
toString
();
Optional
<
AlertBusinessTypeEnum
>
alertBusinessTypeEnum
=
EnumsUtils
.
getEnumObject
(
AlertBusinessTypeEnum
.
class
,
e
->
e
.
getCode
().
equals
(
calledRo
.
getAlertTypeCode
()));
smsCode
=
alertBusinessTypeEnum
.
get
().
getSms_code
();
// 组装人员信息
for
(
Map
<
String
,
Object
>
orgUser
:
orgUsers
)
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
Long
.
parseLong
(
alertSubmittedId
));
alertSubmittedObject
.
setType
(
false
);
alertSubmitted
.
setUpdateTime
(
new
Date
());
alertSubmitted
.
setSubmissionTime
(
new
Date
());
this
.
baseMapper
.
insert
(
alertSubmitted
);
alertSubmittedId
=
alertSubmitted
.
getSequenceNbr
().
toString
();
Optional
<
AlertBusinessTypeEnum
>
alertBusinessTypeEnum
=
EnumsUtils
.
getEnumObject
(
AlertBusinessTypeEnum
.
class
,
e
->
e
.
getCode
().
equals
(
calledRo
.
getAlertTypeCode
()));
smsCode
=
alertBusinessTypeEnum
.
get
().
getSms_code
();
// 组装人员信息
for
(
Map
<
String
,
Object
>
orgUser
:
orgUsers
)
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
Long
.
parseLong
(
alertSubmittedId
));
alertSubmittedObject
.
setType
(
false
);
// alertSubmittedObject.setCompanyId(Long.valueOf((String) orgUser.get("parentId")));
// alertSubmittedObject.setCompanyName((String) orgUser.get("parenName"));
alertSubmittedObject
.
setUserId
(
Long
.
valueOf
(
String
.
valueOf
(
orgUser
.
get
(
"sequenceNbr"
))));
alertSubmittedObject
.
setUserName
((
String
)
orgUser
.
get
(
"bizOrgName"
));
if
(!
ValidationUtil
.
isEmpty
(
orgUser
.
get
(
"telephone"
)))
{
mobiles
.
add
((
String
)
orgUser
.
get
(
"telephone"
));
alertSubmittedObject
.
setUserPhone
((
String
)
orgUser
.
get
(
"telephone"
));
}
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
}
// 组装报送内容
smsParams
.
put
(
"callTimeStr"
,
calledRo
.
getCallTimeStr
());
smsParams
.
put
(
"address"
,
calledRo
.
getAddress
());
smsParams
.
put
(
"fireLocation"
,
calledRo
.
getFireLocation
());
smsParams
.
put
(
"burningMaterial"
,
calledRo
.
getBurningMaterial
());
smsParams
.
put
(
"fireSituation"
,
calledRo
.
getFireSituation
());
smsParams
.
put
(
"trappedNum"
,
calledRo
.
getTrappedNum
());
smsParams
.
put
(
"casualtiesNum"
,
calledRo
.
getCasualtiesNum
());
smsParams
.
put
(
"dangerousExplosives"
,
calledRo
.
getDangerousExplosives
());
smsParams
.
put
(
"companyName"
,
calledRo
.
getCompanyName
());
smsParams
.
put
(
"contactUser"
,
calledRo
.
getContactUser
());
smsParams
.
put
(
"contactPhone"
,
calledRo
.
getContactPhone
());
smsParams
.
put
(
"replaceContent"
,
calledRo
.
getReplaceContent
());
smsParams
.
put
(
"alertType"
,
calledRo
.
getAlertType
());
smsParams
.
put
(
"feedback"
,
calledRo
.
getFeedback
());
}
// 短信报送对象
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectList
);
// 发送任务消息
// 组织短信内容
// 调用短信发送接口
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情初报
.
getCode
()))
{
alertCalledAction
.
sendAlertCalleCmd
(
smsCode
,
mobiles
,
smsParams
);
}
else
{
alertCalledAction
.
sendAlertCalleCmd
(
sCode
,
mobiles
,
smsParams
);
}
emqKeeper
.
getMqttClient
().
publish
(
topic
,
alertCalledId
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
false
);
}
/**
* 短信报送
*
* @param alertSubmittedDto 警情信息
* @param userName 用户名
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Map
<
String
,
String
>
saveAlertSubmitted
(
AlertSubmittedDto
alertSubmittedDto
,
String
userName
)
{
Long
alertSubmittedId
=
alertSubmittedDto
.
getSequenceNbr
();
String
alertWay
=
""
;
Map
<
String
,
String
>
map
=
new
HashMap
<>();
Set
<
String
>
mobiles
=
new
HashSet
<>();
if
(
alertSubmittedId
==
null
)
{
// 1.保存警情记录主表
AlertSubmitted
alertSubmitted
=
new
AlertSubmitted
();
String
bussTypeCode
;
alertSubmitted
.
setAlertCalledId
(
alertSubmittedDto
.
getAlertCalledId
());
// 任务 4174 日常值班---融合调度----短信模版中的内容用户可以全部删除掉,按照自定义内容重新录入发送内容 by litw 2021年10月27日
if
(
"316"
.
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertSubmitted
.
setBusinessTypeCode
(
AlertBusinessTypeEnum
.
警情续报
.
getCode
());
bussTypeCode
=
AlertBusinessTypeEnum
.
警情续报
.
getCode
();
}
else
{
alertSubmitted
.
setBusinessTypeCode
(
alertSubmittedDto
.
getBusinessTypeCode
());
bussTypeCode
=
alertSubmittedDto
.
getBusinessTypeCode
();
}
Optional
<
AlertBusinessTypeEnum
>
businessTypeEnum
=
EnumsUtils
.
getEnumObject
(
AlertBusinessTypeEnum
.
class
,
e
->
e
.
getCode
().
equals
(
bussTypeCode
));
alertSubmitted
.
setBusinessType
(
businessTypeEnum
.
get
().
getName
());
alertSubmitted
.
setCallLogId
(
alertSubmittedDto
.
getCallLogId
());
alertSubmitted
.
setSubmissionMethodCode
(
alertSubmittedDto
.
getSubmissionMethodCode
());
Optional
<
SubmissionMethodEnum
>
submissionMethodEnum
=
EnumsUtils
.
getEnumObject
(
SubmissionMethodEnum
.
class
,
e
->
e
.
getCode
().
equals
(
alertSubmittedDto
.
getSubmissionMethodCode
()));
alertSubmitted
.
setSubmissionMethod
(
submissionMethodEnum
.
get
().
getName
());
Optional
<
AlertSchedulingTypeEnum
>
alertSchedulingTypeEnum
=
EnumsUtils
.
getEnumObject
(
AlertSchedulingTypeEnum
.
class
,
e
->
e
.
getCode
().
equals
(
alertSubmittedDto
.
getSchedulingTypeCode
()));
alertSubmitted
.
setSchedulingTypeCode
(
alertSubmittedDto
.
getSchedulingTypeCode
());
alertSubmitted
.
setSchedulingType
(
alertSchedulingTypeEnum
.
get
().
getName
());
// 任务 4174 日常值班---融合调度----短信模版中的内容用户可以全部删除掉,按照自定义内容重新录入发送内容 by litw 2021年10月27日
if
(
"316"
.
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
alertSubmittedDto
.
getSubmitContent
().
toJSONString
());
alertSubmitted
.
setSubmissionContent
(
jsonObject
.
get
(
"custom"
).
toString
());
}
else
{
alertSubmitted
.
setBusinessTypeCode
(
alertSubmittedDto
.
getBusinessTypeCode
());
alertSubmitted
.
setSubmissionContent
(
alertSubmittedDto
.
getSubmitContent
().
toJSONString
());
}
alertSubmitted
.
setSender
(
userName
);
alertSubmitted
.
setRecUserName
(
userName
);
alertSubmitted
.
setUpdateTime
(
new
Date
());
alertSubmitted
.
setSubmissionTime
(
new
Date
());
this
.
baseMapper
.
insert
(
alertSubmitted
);
alertSubmittedId
=
alertSubmitted
.
getSequenceNbr
();
}
// 2.保存任务表
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
=
Lists
.
newArrayList
();
Long
finalAlertSubmittedId
=
alertSubmittedId
;
// 报送给单位
if
(
AlertSubmitTypeEnum
.
Org
.
getKey
().
equals
(
alertSubmittedDto
.
getType
()))
{
alertSubmittedDto
.
getSubmitCompanyList
().
forEach
(
company
->
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
finalAlertSubmittedId
);
alertSubmittedObject
.
setType
(
true
);
alertSubmittedObject
.
setCompanyId
(
company
.
getCompanyId
());
alertSubmittedObject
.
setCompanyName
(
company
.
getCompanyName
());
alertSubmittedObject
.
setRecUserName
(
userName
);
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
});
}
else
{
// 报送给个人
alertSubmittedDto
.
getSubmitCompanyList
().
forEach
(
company
->
{
company
.
getPersonList
().
forEach
(
person
->
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
finalAlertSubmittedId
);
alertSubmittedObject
.
setType
(
false
);
alertSubmittedObject
.
setCompanyId
(
company
.
getCompanyId
());
alertSubmittedObject
.
setCompanyName
(
company
.
getCompanyName
());
alertSubmittedObject
.
setUserId
(
person
.
getPersonId
());
alertSubmittedObject
.
setUserName
(
person
.
getPersonName
());
alertSubmittedObject
.
setUserPhone
(
person
.
getPersonPhone
());
alertSubmittedObject
.
setRecUserName
(
userName
);
if
(!
ValidationUtil
.
isEmpty
(
person
.
getPersonPhone
()))
{
mobiles
.
add
(
person
.
getPersonPhone
());
}
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
});
});
}
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectList
);
// 3.更新警情状态
alertCalledService
.
updateAlertCalled
(
alertSubmittedDto
.
getAlertCalledId
(),
alertSubmittedDto
.
getBusinessTypeCode
());
// 警情续报
if
(
AlertBusinessTypeEnum
.
警情续报
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertWay
=
AlertBusinessTypeEnum
.
警情续报
.
getCode
();
}
if
(
AlertBusinessTypeEnum
.
警情结案
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertWay
=
AlertBusinessTypeEnum
.
警情结案
.
getCode
();
}
if
(
AlertBusinessTypeEnum
.
非警情确认
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertWay
=
AlertBusinessTypeEnum
.
非警情确认
.
getCode
();
}
if
(
AlertBusinessTypeEnum
.
警情结案
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
())
||
AlertBusinessTypeEnum
.
非警情确认
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
// 查询本次警情调派的车辆
List
<
String
>
transferCarIdList
=
powerTransferService
.
queryTransferCarIdsByAlertCalledId
(
alertSubmittedDto
.
getAlertCalledId
());
List
<
Object
>
carStatusInfoDtoList
=
Lists
.
newArrayList
();
if
(!
ValidationUtil
.
isEmpty
(
transferCarIdList
))
{
transferCarIdList
.
forEach
(
carId
->
{
CarStatusInfoDto
carStatusInfo
=
new
CarStatusInfoDto
();
carStatusInfo
.
setSequenceNbr
(
carId
);
carStatusInfo
.
setStatus
(
FireCarStatusEnum
.
执勤
.
getCode
());
carStatusInfoDtoList
.
add
(
carStatusInfo
);
});
}
//修改调派车辆任务
powerTransferCompanyResourcesService
.
updateByAlertCalledId
(
alertSubmittedDto
.
getAlertCalledId
());
// 更新所有车辆状态为执勤
equipFeignClient
.
updateCarStatus
(
carStatusInfoDtoList
);
alertSubmittedObject
.
setUserId
(
Long
.
valueOf
(
String
.
valueOf
(
orgUser
.
get
(
"sequenceNbr"
))));
alertSubmittedObject
.
setUserName
((
String
)
orgUser
.
get
(
"bizOrgName"
));
if
(!
ValidationUtil
.
isEmpty
(
orgUser
.
get
(
"telephone"
)))
{
mobiles
.
add
((
String
)
orgUser
.
get
(
"telephone"
));
alertSubmittedObject
.
setUserPhone
((
String
)
orgUser
.
get
(
"telephone"
));
}
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
}
// 组装报送内容
smsParams
.
put
(
"callTimeStr"
,
calledRo
.
getCallTimeStr
());
smsParams
.
put
(
"address"
,
calledRo
.
getAddress
());
smsParams
.
put
(
"fireLocation"
,
calledRo
.
getFireLocation
());
smsParams
.
put
(
"burningMaterial"
,
calledRo
.
getBurningMaterial
());
smsParams
.
put
(
"fireSituation"
,
calledRo
.
getFireSituation
());
smsParams
.
put
(
"trappedNum"
,
calledRo
.
getTrappedNum
());
smsParams
.
put
(
"casualtiesNum"
,
calledRo
.
getCasualtiesNum
());
smsParams
.
put
(
"dangerousExplosives"
,
calledRo
.
getDangerousExplosives
());
smsParams
.
put
(
"companyName"
,
calledRo
.
getCompanyName
());
smsParams
.
put
(
"contactUser"
,
calledRo
.
getContactUser
());
smsParams
.
put
(
"contactPhone"
,
calledRo
.
getContactPhone
());
smsParams
.
put
(
"replaceContent"
,
calledRo
.
getReplaceContent
());
smsParams
.
put
(
"alertType"
,
calledRo
.
getAlertType
());
smsParams
.
put
(
"feedback"
,
calledRo
.
getFeedback
());
}
// 短信报送对象
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectList
);
// 发送任务消息
// 组织短信内容
// 调用短信发送接口
if
(
alertWay
.
equals
(
AlertBusinessTypeEnum
.
警情初报
.
getCode
()))
{
alertCalledAction
.
sendAlertCalleCmd
(
smsCode
,
mobiles
,
smsParams
);
}
else
{
alertCalledAction
.
sendAlertCalleCmd
(
sCode
,
mobiles
,
smsParams
);
}
emqKeeper
.
getMqttClient
().
publish
(
topic
,
alertCalledId
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
false
);
}
/**
* 短信报送
*
* @param alertSubmittedDto 警情信息
* @param userName 用户名
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
Map
<
String
,
String
>
saveAlertSubmitted
(
AlertSubmittedDto
alertSubmittedDto
,
String
userName
)
{
Long
alertSubmittedId
=
alertSubmittedDto
.
getSequenceNbr
();
String
alertWay
=
""
;
Map
<
String
,
String
>
map
=
new
HashMap
<>();
Set
<
String
>
mobiles
=
new
HashSet
<>();
if
(
alertSubmittedId
==
null
)
{
// 1.保存警情记录主表
AlertSubmitted
alertSubmitted
=
new
AlertSubmitted
();
String
bussTypeCode
;
alertSubmitted
.
setAlertCalledId
(
alertSubmittedDto
.
getAlertCalledId
());
// 任务 4174 日常值班---融合调度----短信模版中的内容用户可以全部删除掉,按照自定义内容重新录入发送内容 by litw 2021年10月27日
if
(
"316"
.
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertSubmitted
.
setBusinessTypeCode
(
AlertBusinessTypeEnum
.
警情续报
.
getCode
());
bussTypeCode
=
AlertBusinessTypeEnum
.
警情续报
.
getCode
();
}
else
{
alertSubmitted
.
setBusinessTypeCode
(
alertSubmittedDto
.
getBusinessTypeCode
());
bussTypeCode
=
alertSubmittedDto
.
getBusinessTypeCode
();
}
Optional
<
AlertBusinessTypeEnum
>
businessTypeEnum
=
EnumsUtils
.
getEnumObject
(
AlertBusinessTypeEnum
.
class
,
e
->
e
.
getCode
().
equals
(
bussTypeCode
));
alertSubmitted
.
setBusinessType
(
businessTypeEnum
.
get
().
getName
());
alertSubmitted
.
setCallLogId
(
alertSubmittedDto
.
getCallLogId
());
alertSubmitted
.
setSubmissionMethodCode
(
alertSubmittedDto
.
getSubmissionMethodCode
());
Optional
<
SubmissionMethodEnum
>
submissionMethodEnum
=
EnumsUtils
.
getEnumObject
(
SubmissionMethodEnum
.
class
,
e
->
e
.
getCode
().
equals
(
alertSubmittedDto
.
getSubmissionMethodCode
()));
alertSubmitted
.
setSubmissionMethod
(
submissionMethodEnum
.
get
().
getName
());
Optional
<
AlertSchedulingTypeEnum
>
alertSchedulingTypeEnum
=
EnumsUtils
.
getEnumObject
(
AlertSchedulingTypeEnum
.
class
,
e
->
e
.
getCode
().
equals
(
alertSubmittedDto
.
getSchedulingTypeCode
()));
alertSubmitted
.
setSchedulingTypeCode
(
alertSubmittedDto
.
getSchedulingTypeCode
());
alertSubmitted
.
setSchedulingType
(
alertSchedulingTypeEnum
.
get
().
getName
());
// 任务 4174 日常值班---融合调度----短信模版中的内容用户可以全部删除掉,按照自定义内容重新录入发送内容 by litw 2021年10月27日
if
(
"316"
.
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
JSONObject
jsonObject
=
JSON
.
parseObject
(
alertSubmittedDto
.
getSubmitContent
().
toJSONString
());
alertSubmitted
.
setSubmissionContent
(
jsonObject
.
get
(
"custom"
).
toString
());
}
else
{
alertSubmitted
.
setBusinessTypeCode
(
alertSubmittedDto
.
getBusinessTypeCode
());
alertSubmitted
.
setSubmissionContent
(
alertSubmittedDto
.
getSubmitContent
().
toJSONString
());
}
alertSubmitted
.
setSender
(
userName
);
alertSubmitted
.
setRecUserName
(
userName
);
alertSubmitted
.
setUpdateTime
(
new
Date
());
alertSubmitted
.
setSubmissionTime
(
new
Date
());
this
.
baseMapper
.
insert
(
alertSubmitted
);
alertSubmittedId
=
alertSubmitted
.
getSequenceNbr
();
}
// 2.保存任务表
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
=
Lists
.
newArrayList
();
Long
finalAlertSubmittedId
=
alertSubmittedId
;
// 报送给单位
if
(
AlertSubmitTypeEnum
.
Org
.
getKey
().
equals
(
alertSubmittedDto
.
getType
()))
{
alertSubmittedDto
.
getSubmitCompanyList
().
forEach
(
company
->
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
finalAlertSubmittedId
);
alertSubmittedObject
.
setType
(
true
);
alertSubmittedObject
.
setCompanyId
(
company
.
getCompanyId
());
alertSubmittedObject
.
setCompanyName
(
company
.
getCompanyName
());
alertSubmittedObject
.
setRecUserName
(
userName
);
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
});
}
else
{
// 报送给个人
alertSubmittedDto
.
getSubmitCompanyList
().
forEach
(
company
->
{
company
.
getPersonList
().
forEach
(
person
->
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
finalAlertSubmittedId
);
alertSubmittedObject
.
setType
(
false
);
alertSubmittedObject
.
setCompanyId
(
company
.
getCompanyId
());
alertSubmittedObject
.
setCompanyName
(
company
.
getCompanyName
());
alertSubmittedObject
.
setUserId
(
person
.
getPersonId
());
alertSubmittedObject
.
setUserName
(
person
.
getPersonName
());
alertSubmittedObject
.
setUserPhone
(
person
.
getPersonPhone
());
alertSubmittedObject
.
setRecUserName
(
userName
);
if
(!
ValidationUtil
.
isEmpty
(
person
.
getPersonPhone
()))
{
mobiles
.
add
(
person
.
getPersonPhone
());
}
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
});
});
}
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectList
);
// 3.更新警情状态
alertCalledService
.
updateAlertCalled
(
alertSubmittedDto
.
getAlertCalledId
(),
alertSubmittedDto
.
getBusinessTypeCode
());
// 警情续报
if
(
AlertBusinessTypeEnum
.
警情续报
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertWay
=
AlertBusinessTypeEnum
.
警情续报
.
getCode
();
}
if
(
AlertBusinessTypeEnum
.
警情结案
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertWay
=
AlertBusinessTypeEnum
.
警情结案
.
getCode
();
}
if
(
AlertBusinessTypeEnum
.
非警情确认
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
alertWay
=
AlertBusinessTypeEnum
.
非警情确认
.
getCode
();
}
if
(
AlertBusinessTypeEnum
.
警情结案
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
())
||
AlertBusinessTypeEnum
.
非警情确认
.
getCode
().
equals
(
alertSubmittedDto
.
getBusinessTypeCode
()))
{
// 查询本次警情调派的车辆
List
<
String
>
transferCarIdList
=
powerTransferService
.
queryTransferCarIdsByAlertCalledId
(
alertSubmittedDto
.
getAlertCalledId
());
List
<
Object
>
carStatusInfoDtoList
=
Lists
.
newArrayList
();
if
(!
ValidationUtil
.
isEmpty
(
transferCarIdList
))
{
transferCarIdList
.
forEach
(
carId
->
{
CarStatusInfoDto
carStatusInfo
=
new
CarStatusInfoDto
();
carStatusInfo
.
setSequenceNbr
(
carId
);
carStatusInfo
.
setStatus
(
FireCarStatusEnum
.
执勤
.
getCode
());
carStatusInfoDtoList
.
add
(
carStatusInfo
);
});
}
// 修改调派车辆任务
powerTransferCompanyResourcesService
.
updateByAlertCalledId
(
alertSubmittedDto
.
getAlertCalledId
());
// 更新所有车辆状态为执勤
equipFeignClient
.
updateCarStatus
(
carStatusInfoDtoList
);
// //跟车辆状态
// powerTransferCompanyResourcesService.update(new UpdateWrapper<PowerTransferCompanyResources>().eq("resources_id", transferCarIdList).set("status", FireCarStatusEnum.返队.getCode()));
}
}
// 4.发送任务消息
// 4.1组织短信内容
// 4.发送任务消息
// 4.1组织短信内容
// HashMap<String, String> smsParams = new HashMap<>();
// JSONObject submitContent = alertSubmittedDto.getSubmitContent();
// if(!"316".equals(alertSubmittedDto.getBusinessTypeCode())) {
...
...
@@ -553,189 +550,594 @@ public class AlertSubmittedServiceImpl extends BaseService<AlertSubmittedDto, Al
// smsParams.put("companyName", submitContent.get("companyName").toString());
// }
// 4.2调用短信发送接口
// alertCalledAction.sendAlertCalleCmd(smsCode, mobiles, smsParams);
// 4.2调用短信发送接口
// alertCalledAction.sendAlertCalleCmd(smsCode, mobiles, smsParams);
map
.
put
(
"alertWay"
,
alertWay
);
map
.
put
(
"mobiles"
,
StringUtils
.
join
(
mobiles
,
","
));
return
map
;
}
/**
* 短信报送对象
*
* @param alertSubmittedObjectList 报送对象列表
* @param smsCode 短信模板code
* @param mobiles 电话号码列表
* @param smsParams 报送内容
*/
public
void
saveAlertSubmittedObject
(
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
,
String
smsCode
,
Set
<
String
>
mobiles
,
HashMap
<
String
,
String
>
smsParams
)
{
map
.
put
(
"alertWay"
,
alertWay
);
map
.
put
(
"mobiles"
,
StringUtils
.
join
(
mobiles
,
","
));
return
map
;
}
/**
* 短信报送对象
*
* @param alertSubmittedObjectList 报送对象列表
* @param smsCode 短信模板code
* @param mobiles 电话号码列表
* @param smsParams 报送内容
*/
public
void
saveAlertSubmittedObject
(
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
,
String
smsCode
,
Set
<
String
>
mobiles
,
HashMap
<
String
,
String
>
smsParams
)
{
// alertSubmittedObjectServiceImpl.saveBatch(alertSubmittedObjectList);
// 发送任务消息
// 组织短信内容
// 调用短信发送接口
alertCalledAction
.
sendAlertCalleCmd
(
smsCode
,
mobiles
,
smsParams
);
}
public
void
getAlertSubmittedContent
(
Long
alertCalledId
,
ArrayList
<
TemplateDto
>
templateDtos
,
String
companyName
)
throws
IllegalAccessException
{
AlertCalled
alertCalled
=
alertCalledService
.
getById
(
alertCalledId
);
Map
<
String
,
Object
>
map
=
objectToMap
(
alertCalled
);
map
.
put
(
"companyName"
,
companyName
);
// 获取模板内容
List
<
DataDictionary
>
dataDictionaries
=
dataDictionaryService
.
list
(
new
QueryWrapper
<
DataDictionary
>().
eq
(
"type"
,
"JQBSLX"
));
for
(
DataDictionary
dataDictionary
:
dataDictionaries
)
{
Template
template
=
templateService
.
getOne
(
new
QueryWrapper
<
Template
>().
eq
(
"type_code"
,
dataDictionary
.
getCode
()).
eq
(
"format"
,
true
));
List
<
PowerTransferCompanyDto
>
lastPowerTransferCompany
;
if
(
"警情续报"
.
equals
(
template
.
getType
())
&&
(
lastPowerTransferCompany
=
powerTransferService
.
getLastPowerTransferCompany
(
alertCalledId
))
.
size
()
>
0
)
{
map
.
put
(
"businessType"
,
template
.
getType
());
// 获取力量调派内容
StringBuilder
companyNames
=
new
StringBuilder
();
StringBuilder
resourcesInfo
=
new
StringBuilder
();
for
(
PowerTransferCompanyDto
powerTransferCompanyDto
:
lastPowerTransferCompany
)
{
companyNames
.
append
(
powerTransferCompanyDto
.
getCompanyName
()).
append
(
"、"
);
resourcesInfo
.
append
(
powerTransferCompanyDto
.
getType
())
.
append
(
powerTransferCompanyDto
.
getResourcesCount
()).
append
(
"辆、"
);
}
map
.
put
(
"companyNames"
,
companyNames
.
deleteCharAt
(
companyNames
.
length
()
-
1
).
toString
());
map
.
put
(
"resourcesInfo"
,
resourcesInfo
.
deleteCharAt
(
resourcesInfo
.
length
()
-
1
).
toString
());
map
.
put
(
"transferTime"
,
lastPowerTransferCompany
.
get
(
0
).
getRecDate
());
}
TemplateDto
templateDto
=
new
TemplateDto
();
BeanUtils
.
copyProperties
(
template
,
templateDto
);
templateDto
.
setData
(
map
);
templateDtos
.
add
(
templateDto
);
}
}
@Override
public
AlertSubmittedSMSDto
getSchedulingContent
(
Long
id
)
{
return
this
.
baseMapper
.
getSchedulingContent
(
id
);
}
@Override
public
List
<
InstructionsZHDto
>
getInstructionsZHDtoList
(
Long
id
)
{
List
<
InstructionsZHDto
>
listInstructionsZHDto
=
new
ArrayList
<>();
// 获取调派记录
List
<
PowerTransferCompanyZHDto
>
listPowerTransferCompanyZHDto
=
powerTransferCompanyMapper
.
listPowerTransferCompanyZHDto
(
id
);
listPowerTransferCompanyZHDto
.
stream
().
forEach
(
PowerTransferCompanyZHDto
->
{
String
content
=
""
;
if
(
PowerTransferCompanyZHDto
.
getIsDistributionAgencies
())
{
content
=
"调派"
+
PowerTransferCompanyZHDto
.
getCompanyName
()
+
"前往"
+
PowerTransferCompanyZHDto
.
getAddress
();
}
else
{
content
=
"调派"
+
PowerTransferCompanyZHDto
.
getCompanyName
()
+
PowerTransferCompanyZHDto
.
getSubmissionContent
()
+
"前往"
+
PowerTransferCompanyZHDto
.
getAddress
();
}
InstructionsZHDto
instruct
=
new
InstructionsZHDto
(
PowerTransferCompanyZHDto
.
getSequenceNbr
(),
PowerTransferCompanyZHDto
.
getDispatchType
(),
PowerTransferCompanyZHDto
.
getRecDate
(),
content
,
null
);
listInstructionsZHDto
.
add
(
instruct
);
});
// 获取融合调度信息
List
<
AlertSubmittedZHDto
>
listAlertSubmittedZHDto
=
alertSubmittedMapper
.
listAlertSubmittedZHDto
(
id
);
listAlertSubmittedZHDto
.
stream
().
forEach
(
AlertSubmittedZHDto
->
{
JSONObject
js
=
JSONObject
.
parseObject
(
AlertSubmittedZHDto
.
getSubmissionContent
());
String
content
=
""
;
switch
(
AlertSubmittedZHDto
.
getBusinessType
())
{
case
"警情初报"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
js
.
getString
(
"address"
)
+
"发生"
+
js
.
getString
(
"alertType"
);
break
;
case
"警情续报"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
"现场被困人数:"
+
js
.
getString
(
"trappedNum"
)
+
"人伤亡人数:"
+
js
.
getString
(
"casualtiesNum"
)
+
"人。"
;
break
;
case
"非警情确认"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
"此警情现场确认为假警情。"
;
break
;
case
"警情结案"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
"此警情已完场警情处置,警情已结案。"
;
break
;
default
:
break
;
}
InstructionsZHDto
instruct
=
new
InstructionsZHDto
(
AlertSubmittedZHDto
.
getSequenceNbr
(),
AlertSubmittedZHDto
.
getBusinessType
(),
AlertSubmittedZHDto
.
getSubmissionTime
(),
content
,
null
);
listInstructionsZHDto
.
add
(
instruct
);
});
// 获取归并得警情信息
LambdaQueryWrapper
<
AlertCalled
>
queryWrapper
=
new
LambdaQueryWrapper
();
queryWrapper
.
eq
(
AlertCalled:
:
getFatherAlert
,
id
);
List
<
AlertCalled
>
alertCalleds
=
alertCalledService
.
getBaseMapper
().
selectList
(
queryWrapper
);
alertCalleds
.
stream
().
forEach
(
e
->
{
AlertSubmittedZHDto
alertSubmittedZHDto
=
new
AlertSubmittedZHDto
();
AlertCalledFormDto
alertCalledFormDto
=
(
AlertCalledFormDto
)
alertCalledService
.
selectAlertCalledByIdNoRedis
(
e
.
getSequenceNbr
());
alertSubmittedZHDto
.
setAlertCalledFormDto
(
alertCalledFormDto
);
alertSubmittedZHDto
.
setSequenceNbr
(
e
.
getSequenceNbr
());
alertSubmittedZHDto
.
setBusinessType
(
"警情归并"
);
alertSubmittedZHDto
.
setSubmissionTime
(
alertCalledFormDto
.
getAlertCalled
().
getCallTime
());
alertSubmittedZHDto
.
setCompanyName
(
alertCalledFormDto
.
getAlertCalled
().
getCompanyName
());
alertSubmittedZHDto
.
setUserName
(
alertCalledFormDto
.
getAlertCalled
().
getRecUserName
());
InstructionsZHDto
instruct
=
new
InstructionsZHDto
(
alertSubmittedZHDto
.
getSequenceNbr
(),
alertSubmittedZHDto
.
getBusinessType
(),
alertSubmittedZHDto
.
getSubmissionTime
(),
null
,
alertSubmittedZHDto
.
getAlertCalledFormDto
());
listInstructionsZHDto
.
add
(
instruct
);
});
// 排序时间倒序
/* Bug 2613 修改排序 按照发送时间排序 2021-09-01 陈召 开始 */
Collections
.
sort
(
listInstructionsZHDto
,
new
Comparator
<
InstructionsZHDto
>()
{
@Override
public
int
compare
(
InstructionsZHDto
o1
,
InstructionsZHDto
o2
)
{
long
i
=
o2
.
getSubmissionTime
().
getTime
()
-
o1
.
getSubmissionTime
().
getTime
();
if
(
i
==
0
)
{
return
(
int
)
(
o2
.
getSubmissionTime
().
getTime
()
-
o1
.
getSubmissionTime
().
getTime
());
}
return
(
int
)
i
;
}
});
/* Bug 2613 修改排序 按照发送时间排序 2021-09-01 陈召 结束 */
return
listInstructionsZHDto
;
}
/**
* 将Object对象里面的属性和值转化成Map对象
*
* @param obj 源对象
* @return 转化结果
* @throws IllegalAccessException IllegalAccessException
*/
@SuppressWarnings
(
"unchecked"
)
public
static
Map
<
String
,
Object
>
objectToMap
(
Object
obj
)
throws
IllegalAccessException
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Class
<?>
clazz
=
obj
.
getClass
();
Field
[]
fields
=
clazz
.
getDeclaredFields
();
for
(
Field
field
:
fields
)
{
field
.
setAccessible
(
true
);
String
fieldName
=
field
.
getName
();
if
(
"dynamicFormAlert"
.
equalsIgnoreCase
(
fieldName
))
{
List
<
FormValue
>
dynamicFormAlert
=
(
List
<
FormValue
>)
field
.
get
(
obj
);
for
(
FormValue
formValue
:
dynamicFormAlert
)
{
map
.
put
(
formValue
.
getLabel
(),
formValue
.
getValue
());
}
}
else
{
Object
value
=
field
.
get
(
obj
);
map
.
put
(
fieldName
,
value
);
}
}
return
map
;
}
@SuppressWarnings
(
"unchecked"
)
public
void
ruleCallbackActionForPowerTransferForCar
(
String
smsCode
,
List
sendIds
,
Object
object
)
throws
IllegalAccessException
,
MqttPersistenceException
,
MqttException
{
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
=
Lists
.
newArrayList
();
Set
<
String
>
mobiles
=
new
HashSet
<>();
HashMap
<
String
,
String
>
smsParams
=
new
HashMap
<>();
String
alertCalledId
=
null
;
Set
<
Map
<
String
,
Object
>>
userIdList
=
new
HashSet
<
Map
<
String
,
Object
>>();
// 判断当前的规则中是否指定了给当前的车辆驾驶员
boolean
designatedDriver
=
false
;
for
(
Object
id
:
sendIds
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
id
));
if
(
jsonObject
.
containsKey
(
"type"
)
&&
jsonObject
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
BD
.
getCode
()))
{
designatedDriver
=
true
;
}
}
List
<
Map
<
String
,
Object
>>
orgUsers
=
new
LinkedList
<>();
String
sCode
=
""
;
if
(
object
instanceof
AlertCallePowerTransferRo
)
{
AlertCallePowerTransferRo
calledRo
=
(
AlertCallePowerTransferRo
)
object
;
String
alertSubmittedId
=
calledRo
.
getAlertSubmittedId
();
alertCalledId
=
calledRo
.
getSequenceNbr
();
//先获取消救部领导、消救部值班人员信息
sendIds
.
stream
().
forEach
(
e
->
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
e
));
// 消救部
if
(
jsonObject
.
containsKey
(
"airportUnit"
))
{
String
departmentName
=
jsonObject
.
getString
(
"name"
);
if
(
jsonObject
.
containsKey
(
"airportUnit"
))
{
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getFireRescueDepartmentStaff
(
departmentName
,
null
);
userIdList
.
addAll
(
mapList
);
}
if
(
jsonObject
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getDutyPersonByTeamIdAndCarId
(
DateUtils
.
getDateNowShortStr
(),
departmentName
);
userIdList
.
addAll
(
mapList
);
}
}
}
});
List
<
Object
>
companyDetail
=
JSONArray
.
parseArray
(
JSON
.
toJSON
(
calledRo
.
getCompany
()).
toString
(),
Object
.
class
);
for
(
Object
powerTransferCompanyDto
:
companyDetail
)
{
PowerTransferCompanyDto
powerDto
=
JSONObject
.
parseObject
(
JSON
.
toJSON
(
powerTransferCompanyDto
).
toString
(),
PowerTransferCompanyDto
.
class
);
Long
companyId
=
powerDto
.
getCompanyId
();
String
companyName
=
powerDto
.
getCompanyName
();
StringBuffer
resourcesNum
=
new
StringBuffer
();
Set
<
Map
<
String
,
Object
>>
sendUserIds
=
new
HashSet
<
Map
<
String
,
Object
>>();
//FireTeam fireTeam= fireTeamServiceImpl.getById(companyId);
String
alertTypeCode
=
calledRo
.
getAlertTypeCode
();
FireTeam
fireTeam
=
fireTeamServiceImpl
.
getById
(
companyId
);
sendIds
.
stream
().
forEach
(
e
->
{
JSONObject
jsonObject1
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
e
));
if
(
jsonObject1
.
containsKey
(
"type"
)
&&
(
jsonObject1
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
DD
.
getCode
())))
{
String
[]
groupCode
=
jsonObject1
.
getString
(
"fireBrigade"
).
split
(
","
);
List
<
String
>
positionType
=
Arrays
.
asList
(
groupCode
);
if
(
jsonObject1
.
containsKey
(
"fireBrigade"
))
{
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getFireRescueDepartmentStaff
(
fireTeam
.
getCompanyName
(),
positionType
);
sendUserIds
.
addAll
(
mapList
);
}
if
(
jsonObject1
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getDutyPersonByTeamIdAndCarId
(
DateUtils
.
getDateNowShortStr
(),
fireTeam
.
getCompanyName
());
sendUserIds
.
addAll
(
mapList
);
}
}
}
else
if
(
jsonObject1
.
containsKey
(
"type"
)
&&
(
jsonObject1
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
ZD
.
getCode
())))
{
String
[]
groupCode
=
jsonObject1
.
get
(
"fireBrigade"
).
toString
().
split
(
","
);
List
<
String
>
positionType
=
Arrays
.
asList
(
groupCode
);
String
departmentName
=
jsonObject1
.
getString
(
"name"
);
if
(
jsonObject1
.
containsKey
(
"fireBrigade"
))
{
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getFireRescueDepartmentStaff
(
departmentName
,
positionType
);
sendUserIds
.
addAll
(
mapList
);
}
if
(
jsonObject1
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getDutyPersonByTeamIdAndCarId
(
DateUtils
.
getDateNowShortStr
(),
departmentName
);
sendUserIds
.
addAll
(
mapList
);
}
}
}
});
sendUserIds
.
addAll
(
userIdList
);
smsCode
=
AlertBusinessTypeEnum
.
力量调派
.
getSms_code
();
// 组装人员信息
for
(
Map
<
String
,
Object
>
orgUser
:
sendUserIds
)
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
Long
.
parseLong
(
alertSubmittedId
));
alertSubmittedObject
.
setType
(
false
);
alertSubmittedObject
.
setCompanyId
(
companyId
);
alertSubmittedObject
.
setCompanyName
(
companyName
);
alertSubmittedObject
.
setType
(
false
);
alertSubmittedObject
.
setUserId
(
Long
.
parseLong
(
orgUser
.
get
(
"userId"
).
toString
()));
alertSubmittedObject
.
setUserName
(
orgUser
.
get
(
"userName"
).
toString
());
if
(!
ValidationUtil
.
isEmpty
(
orgUser
.
get
(
"telephone"
)))
{
mobiles
.
add
((
String
)
orgUser
.
get
(
"telephone"
));
alertSubmittedObject
.
setUserPhone
((
String
)
orgUser
.
get
(
"telephone"
));
}
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
}
smsParams
.
put
(
"callTimeStr"
,
calledRo
.
getCallTimeStr
());
smsParams
.
put
(
"address"
,
calledRo
.
getAddress
());
smsParams
.
put
(
"content"
,
calledRo
.
getContent
());
smsParams
.
put
(
"trappedNum"
,
calledRo
.
getTrappedNum
());
smsParams
.
put
(
"casualtiesNum"
,
calledRo
.
getCasualtiesNum
());
smsParams
.
put
(
"companyName"
,
calledRo
.
getCompanyName
());
smsParams
.
put
(
"contactUser"
,
calledRo
.
getContactUser
());
smsParams
.
put
(
"contactPhone"
,
calledRo
.
getContactPhone
());
smsParams
.
put
(
"alertType"
,
calledRo
.
getAlertType
());
List
<
PowerTransferCompanyResourcesDto
>
list
=
powerDto
.
getPowerTransferCompanyResourcesDtoList
();
if
(
list
!=
null
&&
list
.
size
()
>
0
)
{
for
(
PowerTransferCompanyResourcesDto
i
:
list
)
{
String
carName
=
i
.
getResourcesName
();
String
resourceName
=
i
.
getResourcesNum
();
String
type
=
i
.
getType
();
resourcesNum
.
append
(
"车辆"
+
type
);
resourcesNum
.
append
(
"车牌号"
+
carName
+
" "
+
resourceName
);
resourcesNum
.
append
(
"、"
);
if
(
designatedDriver
)
{
// 发送单个车辆的信息数据到客户
smsParams
.
put
(
"resourcesNum"
,
resourcesNum
.
toString
().
substring
(
resourcesNum
.
toString
().
length
()
-
2
));
List
<
AlertSubmittedObject
>
alertSubmittedObjectListSub
=
Lists
.
newArrayList
();
Map
<
String
,
Object
>
map
=
dynamicFormInstanceMapper
.
getCurentCarIsUserPhone
(
Long
.
parseLong
(
i
.
getResourcesId
()));
AlertSubmittedObject
alertSubmittedObjectSub
=
new
AlertSubmittedObject
();
alertSubmittedObjectSub
.
setAlertSubmittedId
(
Long
.
parseLong
(
alertSubmittedId
));
alertSubmittedObjectSub
.
setType
(
false
);
alertSubmittedObjectSub
.
setCompanyId
(
companyId
);
alertSubmittedObjectSub
.
setCompanyName
(
companyName
);
alertSubmittedObjectSub
.
setType
(
false
);
if
(
map
==
null
||
!
map
.
containsKey
(
"userId"
))
{
continue
;
}
alertSubmittedObjectSub
.
setUserId
(
Long
.
parseLong
(
map
.
get
(
"userId"
).
toString
()));
alertSubmittedObjectSub
.
setUserName
(
map
.
get
(
"userName"
).
toString
());
Set
<
String
>
mobile
=
null
;
if
(!
ValidationUtil
.
isEmpty
(
map
.
get
(
"mobilePhone"
)))
{
mobile
=
new
HashSet
<
String
>()
{
{
add
(
map
.
get
(
"mobilePhone"
).
toString
());
}
};
alertSubmittedObjectSub
.
setUserPhone
(
map
.
get
(
"mobilePhone"
).
toString
());
}
alertSubmittedObjectListSub
.
add
(
alertSubmittedObjectSub
);
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectListSub
);
// 调用短信发送接口
alertCalledAction
.
sendAlertCalleCmd
(
sCode
,
mobile
,
smsParams
);
emqKeeper
.
getMqttClient
().
publish
(
topic
,
alertCalledId
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
false
);
}
}
}
String
resourcesNumStr
=
resourcesNum
.
toString
();
sendUserIds
.
stream
().
forEach
(
i
->
{
if
(
i
.
containsKey
(
"mobilePhone"
))
{
mobiles
.
add
(
i
.
get
(
"mobilePhone"
).
toString
());
}
});
smsParams
.
put
(
"resourcesNum"
,
resourcesNumStr
.
substring
(
resourcesNumStr
.
length
()
-
2
));
// 短信报送对象
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectList
);
// 发送任务消息
// 组织短信内容
// 调用短信发送接口
try
{
alertCalledAction
.
sendAlertCalleCmd
(
smsCode
,
mobiles
,
smsParams
);
}
catch
(
Exception
e
)
{
}
emqKeeper
.
getMqttClient
().
publish
(
topic
,
alertCalledId
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
false
);
}
}
}
@SuppressWarnings
(
"unchecked"
)
public
void
ruleCallbackActionForPowerTransferForSurvBrigade
(
String
smsCode
,
List
sendIds
,
Object
object
)
throws
MqttPersistenceException
,
MqttException
{
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
=
Lists
.
newArrayList
();
Set
<
String
>
mobiles
=
new
HashSet
<>();
HashMap
<
String
,
String
>
smsParams
=
new
HashMap
<>();
String
alertCalledId
=
null
;
if
(
object
instanceof
AlertCallePowerTransferRo
)
{
AlertCallePowerTransferRo
calledRo
=
(
AlertCallePowerTransferRo
)
object
;
String
alertSubmittedId
=
calledRo
.
getAlertSubmittedId
();
alertCalledId
=
calledRo
.
getSequenceNbr
();
Set
<
Map
<
String
,
Object
>>
userIds
=
new
HashSet
<
Map
<
String
,
Object
>>();
List
<
Object
>
companyDetail
=
JSONArray
.
parseArray
(
JSON
.
toJSON
(
calledRo
.
getCompany
()).
toString
(),
Object
.
class
);
for
(
Object
e:
sendIds
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
e
));
if
(
jsonObject
.
containsKey
(
"type"
)
&&(
(
jsonObject
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
ZH
.
getCode
()))
||
jsonObject
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
XJ
.
getCode
())))
{
String
departmentName
=
jsonObject
.
getString
(
"name"
);
if
(
jsonObject
.
containsKey
(
"airportUnit"
))
{
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getFireRescueDepartmentStaff
(
departmentName
,
null
);
userIds
.
addAll
(
mapList
);
}
if
(
jsonObject
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getDutyPersonByTeamIdAndCarId
(
DateUtils
.
getDateNowShortStr
(),
departmentName
);
userIds
.
addAll
(
mapList
);
}
}
}
}
for
(
Object
powerTransferCompanyDto
:
companyDetail
)
{
Set
<
Map
<
String
,
Object
>>
sendUserIds
=
new
HashSet
<
Map
<
String
,
Object
>>();
PowerTransferCompanyDto
powerDto
=
JSONObject
.
parseObject
(
JSON
.
toJSON
(
powerTransferCompanyDto
).
toString
(),
PowerTransferCompanyDto
.
class
);
Long
companyId
=
powerDto
.
getCompanyId
();
String
companyName
=
powerDto
.
getCompanyName
();
FireTeam
fireTeam
=
fireTeamServiceImpl
.
getById
(
companyId
);
for
(
Object
sendObject:
sendIds
)
{
JSONObject
jsonObject1
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
sendObject
));
if
(
jsonObject1
.
containsKey
(
"type"
)
&&
(
jsonObject1
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
监控大队
.
getCode
())))
{
if
(
jsonObject1
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
dutyList
=
dynamicFormInstanceMapper
.
getDutyPersonByTeamIdAndCarId
(
DateUtils
.
getDateNowShortStr
(),
fireTeam
.
getCompanyName
());
sendUserIds
.
addAll
(
dutyList
);
}
if
(
jsonObject1
.
containsKey
(
"airportUnit"
))
{
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getFireRescueDepartmentStaff
(
fireTeam
.
getCompanyName
(),
null
);
sendUserIds
.
addAll
(
mapList
);
}
}
}
}
sendUserIds
.
addAll
(
userIds
);
smsCode
=
AlertBusinessTypeEnum
.
力量调派
.
getSms_code
();
// 组装人员信息
for
(
Map
<
String
,
Object
>
orgUser
:
sendUserIds
)
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
Long
.
parseLong
(
alertSubmittedId
));
alertSubmittedObject
.
setType
(
false
);
alertSubmittedObject
.
setCompanyId
(
companyId
);
alertSubmittedObject
.
setCompanyName
(
companyName
);
alertSubmittedObject
.
setType
(
false
);
alertSubmittedObject
.
setUserId
(
Long
.
parseLong
(
orgUser
.
get
(
"userId"
).
toString
()));
alertSubmittedObject
.
setUserName
(
orgUser
.
get
(
"userName"
).
toString
());
if
(!
ValidationUtil
.
isEmpty
(
orgUser
.
get
(
"telephone"
)))
{
mobiles
.
add
((
String
)
orgUser
.
get
(
"telephone"
));
alertSubmittedObject
.
setUserPhone
((
String
)
orgUser
.
get
(
"telephone"
));
}
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
}
smsParams
.
put
(
"callTimeStr"
,
calledRo
.
getCallTimeStr
());
smsParams
.
put
(
"address"
,
calledRo
.
getAddress
());
smsParams
.
put
(
"content"
,
calledRo
.
getContent
());
smsParams
.
put
(
"trappedNum"
,
calledRo
.
getTrappedNum
());
smsParams
.
put
(
"casualtiesNum"
,
calledRo
.
getCasualtiesNum
());
smsParams
.
put
(
"companyName"
,
calledRo
.
getCompanyName
());
smsParams
.
put
(
"contactUser"
,
calledRo
.
getContactUser
());
smsParams
.
put
(
"contactPhone"
,
calledRo
.
getContactPhone
());
smsParams
.
put
(
"alertType"
,
calledRo
.
getAlertType
());
sendUserIds
.
stream
().
forEach
(
i
->
{
if
(
i
.
containsKey
(
"mobilePhone"
))
{
mobiles
.
add
(
i
.
get
(
"mobilePhone"
).
toString
());
}
});
smsParams
.
put
(
"resourcesNum"
,
companyName
);
// 短信报送对象
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectList
);
// 发送任务消息
// 组织短信内容
// 调用短信发送接口
try
{
alertCalledAction
.
sendAlertCalleCmd
(
smsCode
,
mobiles
,
smsParams
);
}
catch
(
Exception
e
){
}
emqKeeper
.
getMqttClient
().
publish
(
topic
,
alertCalledId
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
false
);
}
}
}
public
void
ruleCallbackActionForPowerTransferForAid
(
String
smsCode
,
List
sendIds
,
Object
object
)
throws
MqttPersistenceException
,
MqttException
{
List
<
AlertSubmittedObject
>
alertSubmittedObjectList
=
Lists
.
newArrayList
();
Set
<
String
>
mobiles
=
new
HashSet
<>();
Set
<
Map
<
String
,
Object
>>
userIds
=
new
HashSet
<
Map
<
String
,
Object
>>();
HashMap
<
String
,
String
>
smsParams
=
new
HashMap
<>();
String
alertCalledId
=
null
;
if
(
object
instanceof
AlertCallePowerTransferRo
)
{
AlertCallePowerTransferRo
calledRo
=
(
AlertCallePowerTransferRo
)
object
;
String
alertSubmittedId
=
calledRo
.
getAlertSubmittedId
();
alertCalledId
=
calledRo
.
getSequenceNbr
();
//List<FireTeam> fireTeamList= new ArrayList<FireTeam>();
List
<
Object
>
companyDetail
=
JSONArray
.
parseArray
(
JSON
.
toJSON
(
calledRo
.
getCompany
()).
toString
(),
Object
.
class
);
//获取急救科、消救部人员信息
for
(
Object
e:
sendIds
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
e
));
if
(
jsonObject
.
containsKey
(
"type"
)
&&(
(
jsonObject
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
ZH
.
getCode
()))
||
jsonObject
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
XJ
.
getCode
())))
{
String
departmentName
=
jsonObject
.
getString
(
"name"
);
if
(
jsonObject
.
containsKey
(
"airportUnit"
))
{
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getFireRescueDepartmentStaff
(
departmentName
,
null
);
userIds
.
addAll
(
mapList
);
}
if
(
jsonObject
.
containsKey
(
"onDuty"
))
{
List
<
Map
<
String
,
Object
>>
mapList
=
dynamicFormInstanceMapper
.
getDutyPersonByTeamIdAndCarId
(
DateUtils
.
getDateNowShortStr
(),
departmentName
);
userIds
.
addAll
(
mapList
);
}
}
}
}
//获取对应急救站的当日值班员信息
for
(
Object
powerTransferCompanyDto
:
companyDetail
)
{
Set
<
Map
<
String
,
Object
>>
sendUserIds
=
new
HashSet
<
Map
<
String
,
Object
>>();
PowerTransferCompanyDto
powerDto
=
JSONObject
.
parseObject
(
JSON
.
toJSON
(
powerTransferCompanyDto
).
toString
(),
PowerTransferCompanyDto
.
class
);
Long
companyId
=
powerDto
.
getCompanyId
();
String
companyName
=
powerDto
.
getCompanyName
();
FireTeam
fireTeam
=
fireTeamServiceImpl
.
getById
(
companyId
);
//这个公司ID实际上是120急救站的id值
//fireTeamList.add(fireTeam);
for
(
Object
e:
sendIds
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
e
));
//获取120急救站的规则
if
(
jsonObject
.
containsKey
(
"type"
)
&&
(
jsonObject
.
getString
(
"type"
).
equals
(
AlertStageEnums
.
JJZ
.
getCode
())))
{
if
(!
jsonObject
.
containsKey
(
"onDuty"
))
{
continue
;
}
//fireTeamList.stream().forEach(i->{
//获取120急救排版值班的人员信息
List
<
Map
<
String
,
Object
>>
dutyList
=
dynamicFormInstanceMapper
.
getDutyPersonByTeamIdAndAirId
(
DateUtils
.
getDateNowShortStr
(),
fireTeam
.
getCompanyName
());
sendUserIds
.
addAll
(
dutyList
);
//});
}
}
sendUserIds
.
addAll
(
userIds
);
smsCode
=
AlertBusinessTypeEnum
.
力量调派
.
getSms_code
();
// 组装人员信息
for
(
Map
<
String
,
Object
>
orgUser
:
sendUserIds
)
{
AlertSubmittedObject
alertSubmittedObject
=
new
AlertSubmittedObject
();
alertSubmittedObject
.
setAlertSubmittedId
(
Long
.
parseLong
(
alertSubmittedId
));
alertSubmittedObject
.
setCompanyId
(
companyId
);
alertSubmittedObject
.
setCompanyName
(
companyName
);
alertSubmittedObject
.
setType
(
false
);
alertSubmittedObject
.
setUserId
(
Long
.
parseLong
(
orgUser
.
get
(
"userId"
).
toString
()));
alertSubmittedObject
.
setUserName
(
orgUser
.
get
(
"userName"
).
toString
());
if
(!
ValidationUtil
.
isEmpty
(
orgUser
.
get
(
"mobilePhone"
)))
{
mobiles
.
add
((
String
)
orgUser
.
get
(
"mobilePhone"
));
alertSubmittedObject
.
setUserPhone
(
orgUser
.
get
(
"mobilePhone"
).
toString
());
}
alertSubmittedObjectList
.
add
(
alertSubmittedObject
);
}
smsParams
.
put
(
"callTimeStr"
,
calledRo
.
getCallTimeStr
());
smsParams
.
put
(
"address"
,
calledRo
.
getAddress
());
smsParams
.
put
(
"content"
,
calledRo
.
getContent
());
smsParams
.
put
(
"trappedNum"
,
calledRo
.
getTrappedNum
());
smsParams
.
put
(
"casualtiesNum"
,
calledRo
.
getCasualtiesNum
());
smsParams
.
put
(
"companyName"
,
calledRo
.
getCompanyName
());
smsParams
.
put
(
"contactUser"
,
calledRo
.
getContactUser
());
smsParams
.
put
(
"contactPhone"
,
calledRo
.
getContactPhone
());
smsParams
.
put
(
"alertType"
,
calledRo
.
getAlertType
());
sendUserIds
.
stream
().
forEach
(
i
->
{
if
(
i
.
containsKey
(
"mobilePhone"
))
{
mobiles
.
add
(
i
.
get
(
"mobilePhone"
).
toString
());
}
});
smsParams
.
put
(
"resourcesNum"
,
companyName
);
// 短信报送对象
alertSubmittedObjectServiceImpl
.
saveBatch
(
alertSubmittedObjectList
);
// 发送任务消息
// 组织短信内容
// 调用短信发送接口
try
{
alertCalledAction
.
sendAlertCalleCmd
(
smsCode
,
mobiles
,
smsParams
);
}
catch
(
Exception
e
)
{
// TODO: handle exception
}
emqKeeper
.
getMqttClient
().
publish
(
topic
,
alertCalledId
.
getBytes
(),
RuleConfig
.
DEFAULT_QOS
,
false
);
}
}
}
// alertSubmittedObjectServiceImpl.saveBatch(alertSubmittedObjectList);
// 发送任务消息
// 组织短信内容
// 调用短信发送接口
alertCalledAction
.
sendAlertCalleCmd
(
smsCode
,
mobiles
,
smsParams
);
}
public
void
getAlertSubmittedContent
(
Long
alertCalledId
,
ArrayList
<
TemplateDto
>
templateDtos
,
String
companyName
)
throws
IllegalAccessException
{
AlertCalled
alertCalled
=
alertCalledService
.
getById
(
alertCalledId
);
Map
<
String
,
Object
>
map
=
objectToMap
(
alertCalled
);
map
.
put
(
"companyName"
,
companyName
);
// 获取模板内容
List
<
DataDictionary
>
dataDictionaries
=
dataDictionaryService
.
list
(
new
QueryWrapper
<
DataDictionary
>().
eq
(
"type"
,
"JQBSLX"
));
for
(
DataDictionary
dataDictionary
:
dataDictionaries
)
{
Template
template
=
templateService
.
getOne
(
new
QueryWrapper
<
Template
>().
eq
(
"type_code"
,
dataDictionary
.
getCode
()).
eq
(
"format"
,
true
));
List
<
PowerTransferCompanyDto
>
lastPowerTransferCompany
;
if
(
"警情续报"
.
equals
(
template
.
getType
())
&&
(
lastPowerTransferCompany
=
powerTransferService
.
getLastPowerTransferCompany
(
alertCalledId
)).
size
()
>
0
)
{
map
.
put
(
"businessType"
,
template
.
getType
());
// 获取力量调派内容
StringBuilder
companyNames
=
new
StringBuilder
();
StringBuilder
resourcesInfo
=
new
StringBuilder
();
for
(
PowerTransferCompanyDto
powerTransferCompanyDto
:
lastPowerTransferCompany
)
{
companyNames
.
append
(
powerTransferCompanyDto
.
getCompanyName
()).
append
(
"、"
);
resourcesInfo
.
append
(
powerTransferCompanyDto
.
getType
()).
append
(
powerTransferCompanyDto
.
getResourcesCount
()).
append
(
"辆、"
);
}
map
.
put
(
"companyNames"
,
companyNames
.
deleteCharAt
(
companyNames
.
length
()
-
1
).
toString
());
map
.
put
(
"resourcesInfo"
,
resourcesInfo
.
deleteCharAt
(
resourcesInfo
.
length
()
-
1
).
toString
());
map
.
put
(
"transferTime"
,
lastPowerTransferCompany
.
get
(
0
).
getRecDate
());
}
TemplateDto
templateDto
=
new
TemplateDto
();
BeanUtils
.
copyProperties
(
template
,
templateDto
);
templateDto
.
setData
(
map
);
templateDtos
.
add
(
templateDto
);
}
}
@Override
public
AlertSubmittedSMSDto
getSchedulingContent
(
Long
id
)
{
return
this
.
baseMapper
.
getSchedulingContent
(
id
);
}
@Override
public
List
<
InstructionsZHDto
>
getInstructionsZHDtoList
(
Long
id
)
{
List
<
InstructionsZHDto
>
listInstructionsZHDto
=
new
ArrayList
<>();
//获取调派记录
List
<
PowerTransferCompanyZHDto
>
listPowerTransferCompanyZHDto
=
powerTransferCompanyMapper
.
listPowerTransferCompanyZHDto
(
id
);
listPowerTransferCompanyZHDto
.
stream
().
forEach
(
PowerTransferCompanyZHDto
->
{
String
content
=
""
;
if
(
PowerTransferCompanyZHDto
.
getIsDistributionAgencies
())
{
content
=
"调派"
+
PowerTransferCompanyZHDto
.
getCompanyName
()
+
"前往"
+
PowerTransferCompanyZHDto
.
getAddress
();
}
else
{
content
=
"调派"
+
PowerTransferCompanyZHDto
.
getCompanyName
()
+
PowerTransferCompanyZHDto
.
getSubmissionContent
()
+
"前往"
+
PowerTransferCompanyZHDto
.
getAddress
();
}
InstructionsZHDto
instruct
=
new
InstructionsZHDto
(
PowerTransferCompanyZHDto
.
getSequenceNbr
(),
PowerTransferCompanyZHDto
.
getDispatchType
(),
PowerTransferCompanyZHDto
.
getRecDate
(),
content
,
null
);
listInstructionsZHDto
.
add
(
instruct
);
});
//获取融合调度信息
List
<
AlertSubmittedZHDto
>
listAlertSubmittedZHDto
=
alertSubmittedMapper
.
listAlertSubmittedZHDto
(
id
);
listAlertSubmittedZHDto
.
stream
().
forEach
(
AlertSubmittedZHDto
->
{
JSONObject
js
=
JSONObject
.
parseObject
(
AlertSubmittedZHDto
.
getSubmissionContent
());
String
content
=
""
;
switch
(
AlertSubmittedZHDto
.
getBusinessType
())
{
case
"警情初报"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
js
.
getString
(
"address"
)
+
"发生"
+
js
.
getString
(
"alertType"
);
break
;
case
"警情续报"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
"现场被困人数:"
+
js
.
getString
(
"trappedNum"
)
+
"人伤亡人数:"
+
js
.
getString
(
"casualtiesNum"
)
+
"人。"
;
break
;
case
"非警情确认"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
"此警情现场确认为假警情。"
;
break
;
case
"警情结案"
:
content
=
"通知"
+
AlertSubmittedZHDto
.
getCompanyName
()
+
":"
+
AlertSubmittedZHDto
.
getUserName
()
+
","
+
"此警情已完场警情处置,警情已结案。"
;
break
;
default
:
break
;
}
InstructionsZHDto
instruct
=
new
InstructionsZHDto
(
AlertSubmittedZHDto
.
getSequenceNbr
(),
AlertSubmittedZHDto
.
getBusinessType
(),
AlertSubmittedZHDto
.
getSubmissionTime
(),
content
,
null
);
listInstructionsZHDto
.
add
(
instruct
);
});
// 获取归并得警情信息
LambdaQueryWrapper
<
AlertCalled
>
queryWrapper
=
new
LambdaQueryWrapper
();
queryWrapper
.
eq
(
AlertCalled:
:
getFatherAlert
,
id
);
List
<
AlertCalled
>
alertCalleds
=
alertCalledService
.
getBaseMapper
().
selectList
(
queryWrapper
);
alertCalleds
.
stream
().
forEach
(
e
->{
AlertSubmittedZHDto
alertSubmittedZHDto
=
new
AlertSubmittedZHDto
();
AlertCalledFormDto
alertCalledFormDto
=
(
AlertCalledFormDto
)
alertCalledService
.
selectAlertCalledByIdNoRedis
(
e
.
getSequenceNbr
());
alertSubmittedZHDto
.
setAlertCalledFormDto
(
alertCalledFormDto
);
alertSubmittedZHDto
.
setSequenceNbr
(
e
.
getSequenceNbr
());
alertSubmittedZHDto
.
setBusinessType
(
"警情归并"
);
alertSubmittedZHDto
.
setSubmissionTime
(
alertCalledFormDto
.
getAlertCalled
().
getCallTime
());
alertSubmittedZHDto
.
setCompanyName
(
alertCalledFormDto
.
getAlertCalled
().
getCompanyName
());
alertSubmittedZHDto
.
setUserName
(
alertCalledFormDto
.
getAlertCalled
().
getRecUserName
());
InstructionsZHDto
instruct
=
new
InstructionsZHDto
(
alertSubmittedZHDto
.
getSequenceNbr
(),
alertSubmittedZHDto
.
getBusinessType
(),
alertSubmittedZHDto
.
getSubmissionTime
(),
null
,
alertSubmittedZHDto
.
getAlertCalledFormDto
());
listInstructionsZHDto
.
add
(
instruct
);
});
//排序时间倒序
/* Bug 2613 修改排序 按照发送时间排序 2021-09-01 陈召 开始*/
Collections
.
sort
(
listInstructionsZHDto
,
new
Comparator
<
InstructionsZHDto
>()
{
@Override
public
int
compare
(
InstructionsZHDto
o1
,
InstructionsZHDto
o2
)
{
long
i
=
o2
.
getSubmissionTime
().
getTime
()
-
o1
.
getSubmissionTime
().
getTime
();
if
(
i
==
0
)
{
return
(
int
)
(
o2
.
getSubmissionTime
().
getTime
()
-
o1
.
getSubmissionTime
().
getTime
());
}
return
(
int
)
i
;
}
});
/* Bug 2613 修改排序 按照发送时间排序 2021-09-01 陈召 结束*/
return
listInstructionsZHDto
;
}
/**
* 将Object对象里面的属性和值转化成Map对象
*
* @param obj 源对象
* @return 转化结果
* @throws IllegalAccessException IllegalAccessException
*/
@SuppressWarnings
(
"unchecked"
)
public
static
Map
<
String
,
Object
>
objectToMap
(
Object
obj
)
throws
IllegalAccessException
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Class
<?>
clazz
=
obj
.
getClass
();
Field
[]
fields
=
clazz
.
getDeclaredFields
();
for
(
Field
field
:
fields
)
{
field
.
setAccessible
(
true
);
String
fieldName
=
field
.
getName
();
if
(
"dynamicFormAlert"
.
equalsIgnoreCase
(
fieldName
))
{
List
<
FormValue
>
dynamicFormAlert
=
(
List
<
FormValue
>)
field
.
get
(
obj
);
for
(
FormValue
formValue
:
dynamicFormAlert
)
{
map
.
put
(
formValue
.
getLabel
(),
formValue
.
getValue
());
}
}
else
{
Object
value
=
field
.
get
(
obj
);
map
.
put
(
fieldName
,
value
);
}
}
return
map
;
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/FireTeamServiceImpl.java
View file @
13284bdc
...
...
@@ -438,4 +438,5 @@ public class FireTeamServiceImpl extends BaseService<FireTeamDto, FireTeam, Fire
// queryWrapper.eq(FireTeam::getCompany, companyId);
return
this
.
baseMapper
.
selectList
(
queryWrapper
);
}
}
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/PowerTransferServiceImpl.java
View file @
13284bdc
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -143,22 +142,22 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
powerTransfer
.
setDispatchNum
(
dispatch_num
);
powerTransfer
.
setSequenceNbr
(
null
);
save
(
powerTransfer
);
Long
powerTransferSequenceNbr
=
powerTransfer
.
getSequenceNbr
();
// 获取任务派发模板
Template
template
=
templateService
.
getOne
(
new
QueryWrapper
<
Template
>().
eq
(
"type"
,
alertCalled
.
getAlertType
()).
eq
(
"format"
,
false
));
String
content
=
template
.
getContent
();
Map
<
String
,
String
>
definitions
=
new
HashMap
<>();
initDefinitions
(
definitions
,
alertCalled
,
powerTransferDto
);
//
save(powerTransfer);
//
Long powerTransferSequenceNbr = powerTransfer.getSequenceNbr();
//
//
// 获取任务派发模板
//
Template template = templateService.getOne(new QueryWrapper<Template>().eq("type",
//
alertCalled.getAlertType()).eq("format", false));
//
String content = template.getContent();
//
Map<String, String> definitions = new HashMap<>();
//
initDefinitions(definitions, alertCalled, powerTransferDto);
// 创建力量调派单位
createPowerTransferCompany
(
powerTransferDto
,
powerTransferSequenceNbr
,
definitions
,
content
);
//
createPowerTransferCompany(powerTransferDto, powerTransferSequenceNbr, definitions, content);
//封装调派任务的集合,以便于实现任务规则校验
try
{
//
packagePowerTransferDetail(powerTransferDto);
packagePowerTransferDetail
(
powerTransferDto
);
}
catch
(
Exception
e
)
{
log
.
error
(
"调用规则失败:PowerTransferServiceImpl。createPowerTransfer()"
);
}
...
...
@@ -191,8 +190,8 @@ public class PowerTransferServiceImpl extends BaseService<PowerTransferDto, Powe
}
}
//ruleAlertCalledService.powerTransferCalledRule(fullTimeList,powerTransferDto.getAlertCalledId(),FireBrigadeTypeEnum.专职消防队.getKey());
//
ruleAlertCalledService.powerTransferCalledRule(medicalTeamList,powerTransferDto.getAlertCalledId(),FireBrigadeTypeEnum.医疗救援队.getKey());
ruleAlertCalledService
.
powerTransferCalledRule
(
monitorTeamList
,
powerTransferDto
.
getAlertCalledId
(),
FireBrigadeTypeEnum
.
监控大队
.
getKey
());
ruleAlertCalledService
.
powerTransferCalledRule
(
medicalTeamList
,
powerTransferDto
.
getAlertCalledId
(),
FireBrigadeTypeEnum
.
医疗救援队
.
getKey
());
//
ruleAlertCalledService.powerTransferCalledRule(monitorTeamList,powerTransferDto.getAlertCalledId(),FireBrigadeTypeEnum.监控大队.getKey());
}
@Override
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/RuleAlertCalledService.java
View file @
13284bdc
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
biz
.
service
.
impl
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.AlertBusinessTypeEnum
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.AlertStageEnums
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
com.alibaba.fastjson.JSONArray
;
import
com.yeejoin.amos.boot.biz.common.utils.DateUtils
;
import
com.yeejoin.amos.boot.module.common.api.dto.FormValue
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.AlertCallePowerTransferRo
;
...
...
@@ -20,6 +18,7 @@ import com.yeejoin.amos.boot.module.jcs.api.dto.AlertCalledRo;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.AlertCalled
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.AlertFormValue
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.AlertStageEnums
;
import
com.yeejoin.amos.boot.module.jcs.api.enums.FireBrigadeTypeEnum
;
import
com.yeejoin.amos.component.rule.RuleTrigger
;
...
...
@@ -236,13 +235,15 @@ public class RuleAlertCalledService {
AlertCalledFormDto
alertCalledFormDto
=
(
AlertCalledFormDto
)
alertCalledServiceImpl
.
selectAlertCalledByIdNoRedis
(
alertCalledId
);
alertCallePowerTransferRo
.
setAlertSubmittedId
(
Long
.
toString
(
alertCalledId
));
if
(
alertCalledFormDto
==
null
)
{
return
false
;
}
AlertCalled
alertCalled
=
alertCalledFormDto
.
getAlertCalled
();
alertCallePowerTransferRo
.
setCallTimeStr
(
DateUtils
.
convertDateToString
(
alertCalled
.
getCallTime
(),
DateUtils
.
DATE_TIME_PATTERN
));
alertCallePowerTransferRo
.
setSequenceNbr
(
String
.
valueOf
(
alertCalled
.
getSequenceNbr
()));
alertCallePowerTransferRo
.
setAddress
(
alertCalled
.
getAddress
());
alertCallePowerTransferRo
.
setAlertType
(
alertCalled
.
getAlertType
());
alertCallePowerTransferRo
.
setAlertTypeCode
(
alertCalled
.
getAlertTypeCode
());
...
...
@@ -258,9 +259,6 @@ public class RuleAlertCalledService {
List
<
FormValue
>
alertFormValues
=
alertCalledFormDto
.
getDynamicFormAlert
();
if
(!
ValidationUtil
.
isEmpty
(
alertFormValues
))
{
for
(
FormValue
alertFormValue
:
alertFormValues
)
{
if
(
alertFormValue
.
getKey
().
equals
(
"alertSubmittedId"
))
{
alertCallePowerTransferRo
.
setAlertSubmittedId
(
alertFormValue
.
getValue
());
}
// 一般火灾
if
(
alertFormValue
.
getKey
().
equals
(
"fireLocation"
))
{
alertCallePowerTransferRo
.
setFireLocation
(
alertFormValue
.
getValue
());
...
...
@@ -292,7 +290,7 @@ public class RuleAlertCalledService {
}
}
if
(
FireBrigadeTypeEnum
.
专职消防队
.
getKey
().
equals
(
type
))
{
alertCallePowerTransferRo
.
setCompany
(
new
ArrayList
<>
(
i
));
alertCallePowerTransferRo
.
setCompany
(
JSONArray
.
toJSONString
(
i
));
alertCallePowerTransferRo
.
setPowerTransType
(
type
);
StringBuffer
stringBuffer
=
new
StringBuffer
();
stringBuffer
.
append
(
" 失火位置:"
+
alertCallePowerTransferRo
.
getFireLocation
());
...
...
@@ -302,7 +300,7 @@ public class RuleAlertCalledService {
alertCallePowerTransferRo
.
setContent
(
stringBuffer
.
toString
());
}
else
if
(
FireBrigadeTypeEnum
.
监控大队
.
getKey
().
equals
(
type
))
{
alertCallePowerTransferRo
.
setCompany
(
new
ArrayList
<>
(
i
));
alertCallePowerTransferRo
.
setCompany
(
JSONArray
.
toJSONString
(
i
));
alertCallePowerTransferRo
.
setPowerTransType
(
type
);
StringBuffer
stringBuffer
=
new
StringBuffer
();
stringBuffer
.
append
(
" 失火位置:"
+
alertCallePowerTransferRo
.
getFireLocation
());
...
...
@@ -312,7 +310,7 @@ public class RuleAlertCalledService {
alertCallePowerTransferRo
.
setContent
(
stringBuffer
.
toString
());
}
else
if
(
FireBrigadeTypeEnum
.
医疗救援队
.
getKey
().
equals
(
type
))
{
alertCallePowerTransferRo
.
setCompany
(
new
ArrayList
<>
(
i
));
alertCallePowerTransferRo
.
setCompany
(
JSONArray
.
toJSONString
(
i
));
alertCallePowerTransferRo
.
setPowerTransType
(
type
);
StringBuffer
stringBuffer
=
new
StringBuffer
();
stringBuffer
.
append
(
" 患者现状:"
+
ageGroup
==
null
?
"无"
:
ageGroup
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment