Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cloud-fb
Overview
Overview
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
王衍超
cloud-fb
Commits
89a098c6
Commit
89a098c6
authored
May 30, 2021
by
高晓磊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
采砂许可证 非作业时间报警 和 进入告警区报警
parent
6d9b0025
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
546 additions
and
39 deletions
+546
-39
DateTimeUtils.java
.../main/java/com/beecode/inz/common/util/DateTimeUtils.java
+2
-1
PtInPolyUtil.java
...c/main/java/com/beecode/inz/common/util/PtInPolyUtil.java
+59
-0
TransUtil.java
.../src/main/java/com/beecode/inz/common/util/TransUtil.java
+65
-0
SandMiningAreaConstant.java
...a/com/xyst/dinas/biz/constant/SandMiningAreaConstant.java
+7
-1
SandMiningAreaDao.java
...c/main/java/com/xyst/dinas/biz/dao/SandMiningAreaDao.java
+2
-0
SandMiningAreaDaoImpl.java
...om/xyst/dinas/biz/internal/dao/SandMiningAreaDaoImpl.java
+44
-32
SandMiningConfiguration.java
...xyst/dinas/production/config/SandMiningConfiguration.java
+13
-0
SandMiningConstant.java
...om/xyst/dinas/production/constant/SandMiningConstant.java
+9
-0
SandMiningServiceImpl.java
...as/production/internal/service/SandMiningServiceImpl.java
+0
-0
EnterWarningAreaWarnCalculate.java
...s/production/processor/EnterWarningAreaWarnCalculate.java
+89
-0
EnterWarningAreaWarnCalculator.java
.../production/processor/EnterWarningAreaWarnCalculator.java
+66
-0
NoOperatingHoursWarnCalculate.java
...s/production/processor/NoOperatingHoursWarnCalculate.java
+94
-0
NoOperatingHoursWarnCalculator.java
.../production/processor/NoOperatingHoursWarnCalculator.java
+82
-0
SandMiningService.java
.../com/xyst/dinas/production/service/SandMiningService.java
+9
-0
SandMiningShipEnterWarningAreaTask.java
...s/production/task/SandMiningShipEnterWarningAreaTask.java
+2
-2
SandMiningShipNoOperatingHoursTask.java
...s/production/task/SandMiningShipNoOperatingHoursTask.java
+3
-3
No files found.
backend/inz.common/src/main/java/com/beecode/inz/common/util/DateTimeUtils.java
View file @
89a098c6
...
...
@@ -2,6 +2,7 @@ package com.beecode.inz.common.util;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDateTime
;
import
java.time.ZoneId
;
import
java.time.temporal.ChronoUnit
;
import
java.util.Calendar
;
import
java.util.Date
;
...
...
@@ -164,7 +165,7 @@ public class DateTimeUtils {
LocalDateTime
localDateTime
=
LocalDateTime
.
of
(
cal
.
get
(
Calendar
.
YEAR
),
cal
.
get
(
Calendar
.
MONTH
)
+
1
,
cal
.
get
(
Calendar
.
DAY_OF_MONTH
),
cal
.
get
(
Calendar
.
HOUR_OF_DAY
),
cal
.
get
(
Calendar
.
MINUTE
),
cal
.
get
(
Calendar
.
SECOND
));
// LocalDateTime of = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
return
localDateTime
;
}
...
...
backend/inz.common/src/main/java/com/beecode/inz/common/util/PtInPolyUtil.java
0 → 100644
View file @
89a098c6
package
com
.
beecode
.
inz
.
common
.
util
;
import
java.util.List
;
import
java.util.Map
;
/**
* 判断高德地图上一个点是否在一个多边形内
* copy by https://www.cnblogs.com/qq376324789/p/9047396.html
* @author scol
*
* 使用射线法判断是否在多边形范围内
*以点P为端点,向左方作射线L,由于多边形是有界的,所以射线L的左端一定在多边形外,
* 考虑沿着L从无穷远处开始自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到第二个交点的时候,离开了多边形,
* ……所以很容易看出当L和多边形的交点数目C是奇数的时候,P在多边形内,是偶数的话P在多边形外。
* 算法 描述 https://blog.csdn.net/yaningli/article/details/84987678
*
*
*/
public
class
PtInPolyUtil
{
public
static
boolean
isPtInPoly
(
double
aLon
,
double
aLat
,
List
<
Map
<
String
,
Double
>>
ps
)
{
int
iSum
,
iCount
,
iIndex
;
double
dLon1
,
dLon2
,
dLat1
,
dLat2
,
dLon
;
if
(
ps
.
size
()
<
3
)
{
return
false
;
}
//114.331951,30.64091#114.341049,30.610185#114.331436,30.588058#114.312038,30.56393#114.293498,30.558609#114.267922,30.563784#114.231185,30.57945#114.212303,30.601616#114.235649,30.626878#114.280624,30.646818#
iSum
=
0
;
iCount
=
ps
.
size
();
for
(
iIndex
=
0
;
iIndex
<
iCount
;
iIndex
++)
{
if
(
iIndex
==
iCount
-
1
)
{
dLon1
=
ps
.
get
(
iIndex
).
get
(
"x"
);
dLat1
=
ps
.
get
(
iIndex
).
get
(
"y"
);
dLon2
=
ps
.
get
(
0
).
get
(
"x"
);
dLat2
=
ps
.
get
(
0
).
get
(
"y"
);
}
else
{
dLon1
=
ps
.
get
(
iIndex
).
get
(
"x"
);
dLat1
=
ps
.
get
(
iIndex
).
get
(
"y"
);
dLon2
=
ps
.
get
(
iIndex
+
1
).
get
(
"x"
);
dLat2
=
ps
.
get
(
iIndex
+
1
).
get
(
"y"
);
}
// 以下语句判断A点是否在边的两端点的水平平行线之间,在则可能有交点,开始判断交点是否在左射线上
boolean
b
=
((
aLat
>=
dLat1
)
&&
(
aLat
<
dLat2
))
||
((
aLat
>=
dLat2
)
&&
(
aLat
<
dLat1
));
if
(
b
)
{
if
(
Math
.
abs
(
dLat1
-
dLat2
)
>
0
)
{
//得到 A点向左射线与边的交点的x坐标:
dLon
=
dLon1
-
((
dLon1
-
dLon2
)
*
(
dLat1
-
aLat
))
/
(
dLat1
-
dLat2
);
// 如果交点在A点左侧(说明是做射线与 边的交点),则射线与边的全部交点数加一:
if
(
dLon
<
aLon
)
{
iSum
++;
}
}
}
}
return
(
iSum
%
2
)
!=
0
;
}
}
\ No newline at end of file
backend/inz.common/src/main/java/com/beecode/inz/common/util/TransUtil.java
0 → 100644
View file @
89a098c6
package
com
.
beecode
.
inz
.
common
.
util
;
/**
* @author scol
* copy by https://blog.csdn.net/m0_38004177/article/details/93974126
* GPS坐标转高德地图,误差很小
*/
public
class
TransUtil
{
//椭球参数
static
double
pi
=
3.14159265358979324
;
static
double
a
=
6378245.0
;
static
double
ee
=
0.00669342162296594323
;
/// <summary>
///
/// </summary>
/// <param name="wgLat">GPS维度</param>
/// <param name="wgLon">GPS经度</param>
/// <param name="latlng">转化后的坐标</param>
public
static
double
[]
transform
(
double
wgLat
,
double
wgLon
)
{
double
[]
latlng
=
new
double
[
2
];
//转化后的坐标
if
(
outOfChina
(
wgLat
,
wgLon
))
{
latlng
[
0
]
=
wgLat
;
latlng
[
1
]
=
wgLon
;
return
latlng
;
}
double
dLat
=
transformLat
(
wgLon
-
105.0
,
wgLat
-
35.0
);
double
dLon
=
transformLon
(
wgLon
-
105.0
,
wgLat
-
35.0
);
double
radLat
=
wgLat
/
180.0
*
pi
;
double
magic
=
Math
.
sin
(
radLat
);
magic
=
1
-
ee
*
magic
*
magic
;
double
sqrtMagic
=
Math
.
sqrt
(
magic
);
dLat
=
(
dLat
*
180.0
)
/
((
a
*
(
1
-
ee
))
/
(
magic
*
sqrtMagic
)
*
pi
);
dLon
=
(
dLon
*
180.0
)
/
(
a
/
sqrtMagic
*
Math
.
cos
(
radLat
)
*
pi
);
latlng
[
0
]
=
wgLat
+
dLat
;
latlng
[
1
]
=
wgLon
+
dLon
;
return
latlng
;
}
private
static
Boolean
outOfChina
(
double
lat
,
double
lon
)
{
if
(
lon
<
72.004
||
lon
>
137.8347
)
{
return
true
;
}
if
(
lat
<
0.8293
||
lat
>
55.8271
)
{
return
true
;
}
return
false
;
}
private
static
double
transformLat
(
double
x
,
double
y
)
{
double
ret
=
-
100.0
+
2.0
*
x
+
3.0
*
y
+
0.2
*
y
*
y
+
0.1
*
x
*
y
+
0.2
*
Math
.
sqrt
(
Math
.
abs
(
x
));
ret
+=
(
20.0
*
Math
.
sin
(
6.0
*
x
*
pi
)
+
20.0
*
Math
.
sin
(
2.0
*
x
*
pi
))
*
2.0
/
3.0
;
ret
+=
(
20.0
*
Math
.
sin
(
y
*
pi
)
+
40.0
*
Math
.
sin
(
y
/
3.0
*
pi
))
*
2.0
/
3.0
;
ret
+=
(
160.0
*
Math
.
sin
(
y
/
12.0
*
pi
)
+
320
*
Math
.
sin
(
y
*
pi
/
30.0
))
*
2.0
/
3.0
;
return
ret
;
}
private
static
double
transformLon
(
double
x
,
double
y
)
{
double
ret
=
300.0
+
x
+
2.0
*
y
+
0.1
*
x
*
x
+
0.1
*
x
*
y
+
0.1
*
Math
.
sqrt
(
Math
.
abs
(
x
));
ret
+=
(
20.0
*
Math
.
sin
(
6.0
*
x
*
pi
)
+
20.0
*
Math
.
sin
(
2.0
*
x
*
pi
))
*
2.0
/
3.0
;
ret
+=
(
20.0
*
Math
.
sin
(
x
*
pi
)
+
40.0
*
Math
.
sin
(
x
/
3.0
*
pi
))
*
2.0
/
3.0
;
ret
+=
(
150.0
*
Math
.
sin
(
x
/
12.0
*
pi
)
+
300.0
*
Math
.
sin
(
x
/
30.0
*
pi
))
*
2.0
/
3.0
;
return
ret
;
}
}
backend/xyst.dinas.biz/src/main/java/com/xyst/dinas/biz/constant/SandMiningAreaConstant.java
View file @
89a098c6
...
...
@@ -10,9 +10,15 @@ public interface SandMiningAreaConstant {
/**************采砂预警**************/
/** 预警计算器*/
/**
超采
预警计算器*/
String
warnCalculator
=
"com.xyst.dinas.production.processor.SandAreaDinasCountWarningCalculator"
;
/** 进入告警区计算器*/
String
ENTER_WARNING_AREA_WARN_CALCULATOR
=
"com.xyst.dinas.production.processor.EnterWarningAreaWarnCalculator"
;
/** 非作业时间进入采砂区计算器*/
String
TARGET_NO_OPERATING_HOURS_WARN_CALCULATOR
=
"com.xyst.dinas.production.processor.NoOperatingHoursWarnCalculator"
;
/**
* 超采预警类型
*/
...
...
backend/xyst.dinas.biz/src/main/java/com/xyst/dinas/biz/dao/SandMiningAreaDao.java
View file @
89a098c6
...
...
@@ -13,6 +13,8 @@ public interface SandMiningAreaDao extends BaseDao {
Page
<
KObject
>
listSandMiningAreaInfoPaging
(
Page
<
KObject
>
page
,
Integer
sandMiningAreaStatus
);
List
<
KObject
>
listByRegionalCompanyIdsAndSandMiningAreaTypes
(
List
<
UUID
>
regionalCompanyIds
,
Integer
...
sandMiningAreaTypes
);
UUID
create
(
KObject
kObject
);
int
selectCountByName
(
String
sandMiningAreaName
);
...
...
backend/xyst.dinas.biz/src/main/java/com/xyst/dinas/biz/internal/dao/SandMiningAreaDaoImpl.java
View file @
89a098c6
...
...
@@ -20,9 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.orm.hibernate5.HibernateTemplate
;
import
org.springframework.util.CollectionUtils
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.UUID
;
import
java.util.*
;
import
java.util.stream.Collectors
;
public
class
SandMiningAreaDaoImpl
extends
AbstractBaseDao
implements
SandMiningAreaDao
,
SandMiningAreaConstant
{
...
...
@@ -32,10 +31,11 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
@Autowired
private
DinasTypeDao
dinasTypeDao
;
@Override
public
KObject
load
(
UUID
id
)
{
return
(
KObject
)
template
.
load
(
ENTITY
,
id
);
}
@Override
public
KObject
load
(
UUID
id
)
{
return
(
KObject
)
template
.
load
(
ENTITY
,
id
);
}
@Override
public
Page
<
KObject
>
listSandMiningAreaInfoPaging
(
Page
<
KObject
>
page
,
Integer
sandMiningAreaStatus
)
{
...
...
@@ -43,7 +43,7 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
DetachedCriteria
detachedCriteria
=
DetachedCriteria
.
forEntityName
(
bean
.
getName
());
// detachedCriteria.add(Restrictions.eq("department.id", departmentId));
detachedCriteria
.
add
(
Restrictions
.
eq
(
"del"
,
false
));
if
(
null
!=
sandMiningAreaStatus
)
{
if
(
null
!=
sandMiningAreaStatus
)
{
detachedCriteria
.
add
(
Restrictions
.
eq
(
"status"
,
sandMiningAreaStatus
));
}
dinasTypeDao
.
addRegionalCompanyFilter
(
detachedCriteria
);
...
...
@@ -51,7 +51,7 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
detachedCriteria
.
addOrder
(
Order
.
desc
(
"sortOrder"
));
int
offset
=
page
.
getPageSize
()
*
(
page
.
getPageNo
()
-
1
);
page
.
setTotal
(
template
.
findByCriteria
(
detachedCriteria
).
size
());
List
<
KObject
>
list
=
(
List
<
KObject
>)
template
.
findByCriteria
(
detachedCriteria
,
offset
,
page
.
getPageSize
());
List
<
KObject
>
list
=
(
List
<
KObject
>)
template
.
findByCriteria
(
detachedCriteria
,
offset
,
page
.
getPageSize
());
page
.
setDatas
(
list
);
return
page
;
}
...
...
@@ -63,11 +63,11 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
KClass
bean
=
Amino
.
getStaticMetadataContext
().
getBean
(
SandMiningAreaConstant
.
ENTITY
,
KClass
.
class
);
DetachedCriteria
detachedCriteria
=
DetachedCriteria
.
forEntityName
(
bean
.
getName
());
dinasTypeDao
.
addRegionalCompanyFilter
(
detachedCriteria
);
dinasTypeDao
.
addRegionalCompanyFilter
(
detachedCriteria
);
detachedCriteria
.
add
(
Restrictions
.
eq
(
"del"
,
false
));
detachedCriteria
.
add
(
Restrictions
.
eq
(
"sandMiningAreaName"
,
name
));
if
(
id
!=
null
)
{
if
(
id
!=
null
)
{
detachedCriteria
.
add
(
Restrictions
.
ne
(
"id"
,
id
));
}
...
...
@@ -77,13 +77,13 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
@Override
public
void
modify
(
KObject
kobject
)
{
KObject
id
=
load
(
kobject
.
getUuid
(
"id"
));
kobject
.
set
(
BaseConstants
.
CREATOR
,
id
.
get
(
BaseConstants
.
CREATOR
));
kobject
.
set
(
BaseConstants
.
CREATE_TIME
,
id
.
getDate
(
BaseConstants
.
CREATE_TIME
));
kobject
.
set
(
BaseConstants
.
CREATOR
,
id
.
get
(
BaseConstants
.
CREATOR
));
kobject
.
set
(
BaseConstants
.
CREATE_TIME
,
id
.
getDate
(
BaseConstants
.
CREATE_TIME
));
KObject
staff
=
AminoContextHolder
.
getContext
().
getStaff
();
kobject
.
set
(
"regionalCompany"
,
dinasTypeDao
.
getCurrentLoginRegionalCompany
());
kobject
.
set
(
BaseConstants
.
MODIFY_TIME
,
new
Date
());
kobject
.
set
(
BaseConstants
.
DEL
,
false
);
kobject
.
set
(
BaseConstants
.
MODIFIER
,
staff
);
kobject
.
set
(
BaseConstants
.
MODIFY_TIME
,
new
Date
());
kobject
.
set
(
BaseConstants
.
DEL
,
false
);
kobject
.
set
(
BaseConstants
.
MODIFIER
,
staff
);
template
.
merge
(
kobject
);
//生成采区预警设置信息
}
...
...
@@ -94,35 +94,47 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
detachedCriteria
.
add
(
Restrictions
.
eq
(
"del"
,
false
));
detachedCriteria
.
add
(
Restrictions
.
eq
(
"status"
,
2
));
detachedCriteria
.
setProjection
(
Projections
.
projectionList
()
.
add
(
Projections
.
alias
(
Projections
.
sum
(
"sandMiningQuantity"
),
"sandMiningQuantity"
))
.
add
(
Projections
.
alias
(
Projections
.
groupProperty
(
"regionalCompany.id"
),
"regionalCompany"
)));
.
add
(
Projections
.
alias
(
Projections
.
sum
(
"sandMiningQuantity"
),
"sandMiningQuantity"
))
.
add
(
Projections
.
alias
(
Projections
.
groupProperty
(
"regionalCompany.id"
),
"regionalCompany"
)));
detachedCriteria
.
setResultTransformer
(
Transformers
.
ALIAS_TO_ENTITY_MAP
);
return
template
.
findByCriteria
(
detachedCriteria
);
}
@Override
public
List
<
KObject
>
listByRegionalCompanyIds
(
List
<
UUID
>
regionalCompanyIds
,
Boolean
isInclude
)
{
Integer
[]
status1
=
new
Integer
[]{
SandMiningAreaTypeEnum
.
ABANDONED_MINE_SAND
.
getValue
(),
SandMiningAreaTypeEnum
.
CAN_MINE_SAND
.
getValue
(),
SandMiningAreaTypeEnum
.
PRESERVE
.
getValue
()};
if
(
isInclude
)
{
status1
=
(
Integer
[])
Arrays
.
stream
(
SandMiningAreaTypeEnum
.
values
()).
map
(
SandMiningAreaTypeEnum:
:
getValue
).
toArray
();
}
return
listByRegionalCompanyIdsAndSandMiningAreaTypes
(
regionalCompanyIds
,
status1
);
}
@Override
public
List
<
KObject
>
listByRegionalCompanyIdsAndSandMiningAreaTypes
(
List
<
UUID
>
regionalCompanyIds
,
Integer
...
sandMiningAreaTypes
)
{
List
<
Integer
>
integers
=
Arrays
.
asList
(
sandMiningAreaTypes
);
DetachedCriteria
detachedCriteria
=
getDetachedCriteria
(
regionalCompanyIds
);
detachedCriteria
.
add
(
Restrictions
.
eq
(
"del"
,
false
));
detachedCriteria
.
add
(
Restrictions
.
eq
(
"status"
,
2
));
if
(!
CollectionUtils
.
isEmpty
(
regionalCompanyIds
))
{
if
(!
CollectionUtils
.
isEmpty
(
regionalCompanyIds
))
{
detachedCriteria
.
add
(
Restrictions
.
in
(
"regionalCompany.id"
,
regionalCompanyIds
));
}
if
(!
isInclude
)
{
if
(!
CollectionUtils
.
isEmpty
(
integers
))
{
detachedCriteria
.
add
(
Restrictions
.
in
(
"sandMiningAreaType"
,
SandMiningAreaTypeEnum
.
ABANDONED_MINE_SAND
.
getValue
(),
SandMiningAreaTypeEnum
.
CAN_MINE_SAND
.
getValue
(),
SandMiningAreaTypeEnum
.
PRESERVE
.
getValue
()));
integers
));
}
detachedCriteria
.
addOrder
(
Order
.
desc
(
"sortOrder"
));
return
(
List
<
KObject
>)
template
.
findByCriteria
(
detachedCriteria
);
return
(
List
<
KObject
>)
template
.
findByCriteria
(
detachedCriteria
);
}
private
DetachedCriteria
getDetachedCriteria
(
List
<
UUID
>
regionalCompanyIds
)
{
KClass
bean
=
Amino
.
getStaticMetadataContext
().
getBean
(
SandMiningAreaConstant
.
ENTITY
,
KClass
.
class
);
DetachedCriteria
detachedCriteria
=
DetachedCriteria
.
forEntityName
(
bean
.
getName
());
if
(!
CollectionUtils
.
isEmpty
(
regionalCompanyIds
))
{
if
(!
CollectionUtils
.
isEmpty
(
regionalCompanyIds
))
{
detachedCriteria
.
add
(
Restrictions
.
in
(
"regionalCompany.id"
,
regionalCompanyIds
));
}
return
detachedCriteria
;
...
...
@@ -133,13 +145,13 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
public
UUID
create
(
KObject
kObject
)
{
KObject
staff
=
AminoContextHolder
.
getContext
().
getStaff
();
if
(
null
==
kObject
.
getUuid
(
"id"
))
{
kObject
.
set
(
"id"
,
UUID
.
randomUUID
());
if
(
null
==
kObject
.
getUuid
(
"id"
))
{
kObject
.
set
(
"id"
,
UUID
.
randomUUID
());
}
kObject
.
set
(
"regionalCompany"
,
dinasTypeDao
.
getCurrentLoginRegionalCompany
());
kObject
.
set
(
BaseConstants
.
CREATOR
,
staff
);
kObject
.
set
(
BaseConstants
.
CREATOR
,
staff
);
kObject
.
set
(
BaseConstants
.
CREATE_TIME
,
new
Date
());
kObject
.
set
(
BaseConstants
.
DEL
,
false
);
kObject
.
set
(
BaseConstants
.
DEL
,
false
);
UUID
save
=
(
UUID
)
template
.
save
(
kObject
);
return
save
;
}
...
...
@@ -154,9 +166,9 @@ public class SandMiningAreaDaoImpl extends AbstractBaseDao implements SandMining
public
void
deleteById
(
UUID
id
)
{
KObject
staff
=
AminoContextHolder
.
getContext
().
getStaff
();
KObject
kobject
=
(
KObject
)
template
.
load
(
ENTITY
,
id
);
kobject
.
set
(
BaseConstants
.
MODIFY_TIME
,
new
Date
());
kobject
.
set
(
BaseConstants
.
MODIFIER
,
staff
);
kobject
.
set
(
BaseConstants
.
DEL
,
true
);
kobject
.
set
(
BaseConstants
.
MODIFY_TIME
,
new
Date
());
kobject
.
set
(
BaseConstants
.
MODIFIER
,
staff
);
kobject
.
set
(
BaseConstants
.
DEL
,
true
);
template
.
update
(
kobject
);
}
...
...
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/config/SandMiningConfiguration.java
View file @
89a098c6
package
com
.
xyst
.
dinas
.
production
.
config
;
import
com.xyst.dinas.production.processor.EnterWarningAreaWarnCalculator
;
import
com.xyst.dinas.production.processor.NoOperatingHoursWarnCalculator
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.context.annotation.Bean
;
...
...
@@ -88,4 +90,15 @@ public class SandMiningConfiguration {
return
new
SandAreaDinasCountWarningCalculator
();
}
@Bean
(
"com.xyst.dinas.production.processor.EnterWarningAreaWarnCalculator"
)
public
EnterWarningAreaWarnCalculator
enterWarningAreaWarnCalculator
()
{
return
new
EnterWarningAreaWarnCalculator
();
}
@Bean
(
"com.xyst.dinas.production.processor.NoOperatingHoursWarnCalculator"
)
public
NoOperatingHoursWarnCalculator
noOperatingHoursWarnCalculator
()
{
return
new
NoOperatingHoursWarnCalculator
();
}
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/constant/SandMiningConstant.java
View file @
89a098c6
...
...
@@ -11,4 +11,13 @@ public interface SandMiningConstant {
*/
String
STATION_DETAIL_ENTITY
=
"com.xyst.dinas.production.datamodel.SandMiningAssociatedSandMiningStationDetail"
;
/** 进入告警区计算器*/
String
ENTER_WARNING_AREA_WARN_CALCULATOR
=
"com.xyst.dinas.production.processor.EnterWarningAreaWarnCalculator"
;
/** 非作业时间进入采砂区计算器*/
String
TARGET_NO_OPERATING_HOURS_WARN_CALCULATOR
=
"com.xyst.dinas.production.processor.TargetNoOperatingHoursWarnCalculator"
;
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/internal/service/SandMiningServiceImpl.java
View file @
89a098c6
This diff is collapsed.
Click to expand it.
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/processor/EnterWarningAreaWarnCalculate.java
0 → 100644
View file @
89a098c6
package
com
.
xyst
.
dinas
.
production
.
processor
;
import
com.xyst.dinas.biz.warn.IWarningCalculator
;
import
com.xyst.dinas.biz.warn.WarnSetting
;
/**
* 进入告警区
*
* @author
* @date 2021年4月1日
*/
public
class
EnterWarningAreaWarnCalculate
implements
IWarningCalculator
{
private
String
warnMessage
;
private
Boolean
isWarning
;
private
String
sandMingAreaName
;
private
String
sandMiningCode
;
private
String
shipName
;
public
EnterWarningAreaWarnCalculate
(
boolean
isWarning
,
String
sandAreaName
,
String
code
,
String
shipName
)
{
this
.
isWarning
=
isWarning
;
this
.
sandMingAreaName
=
sandAreaName
;
this
.
sandMiningCode
=
code
;
this
.
shipName
=
shipName
;
}
@Override
public
boolean
isWarning
(
WarnSetting
warnSetting
)
{
//业务数据与设置的阀值做比较,计算是否报警
if
(
isWarning
)
{
warnMessage
=
"采砂许可证["
+
sandMiningCode
+
"]下船只["
+
shipName
+
"] 进入["
+
sandMingAreaName
+
"],此采区非采砂许可证上采区,发生报警"
;
return
true
;
}
return
false
;
}
public
String
getWarnMessage
()
{
return
warnMessage
;
}
public
void
setWarnMessage
(
String
warnMessage
)
{
this
.
warnMessage
=
warnMessage
;
}
public
String
getSandMingAreaName
()
{
return
sandMingAreaName
;
}
public
void
setSandMingAreaName
(
String
sandMingAreaName
)
{
this
.
sandMingAreaName
=
sandMingAreaName
;
}
public
String
getSandMiningCode
()
{
return
sandMiningCode
;
}
public
void
setSandMiningCode
(
String
sandMiningCode
)
{
this
.
sandMiningCode
=
sandMiningCode
;
}
public
String
getShipName
()
{
return
shipName
;
}
public
void
setShipName
(
String
shipName
)
{
this
.
shipName
=
shipName
;
}
@Override
public
String
warnMessage
()
{
return
warnMessage
;
}
@Override
public
String
getActualValue
()
{
return
isWarning
?
sandMingAreaName:
""
;
}
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/processor/EnterWarningAreaWarnCalculator.java
0 → 100644
View file @
89a098c6
package
com
.
xyst
.
dinas
.
production
.
processor
;
import
com.beecode.bcp.type.KObject
;
import
com.beecode.inz.common.BaseConstants
;
import
com.xyst.dinas.biz.warn.IWarningCalculator
;
import
com.xyst.dinas.biz.warn.WarnSetting
;
import
com.xyst.dinas.production.service.SandMiningService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.UUID
;
/**
* 进入告警区
*
* @author
* @date 2021年4月1日
*/
public
class
EnterWarningAreaWarnCalculator
implements
IWarningCalculator
{
private
String
warnMessage
;
@Autowired
private
SandMiningService
sandMiningService
;
@Override
public
boolean
isWarning
(
WarnSetting
warnSetting
)
{
HashMap
<
UUID
,
List
<
Map
<
String
,
Object
>>>
uuidListHashMap
=
new
HashMap
<>();
KObject
sandMining
=
sandMiningService
.
getById
(
warnSetting
.
getBillId
());
KObject
regionalCompany
=
sandMining
.
get
(
"regionalCompany"
);
UUID
regionalCompanyId
=
regionalCompany
.
getUuid
(
BaseConstants
.
ID
);
sandMiningService
.
setRegionalCompanySandMing
(
uuidListHashMap
,
regionalCompanyId
);
KObject
ship
=
sandMining
.
get
(
"ship"
);
try
{
Map
<
String
,
Object
>
warnIngSandMiningArea
=
sandMiningService
.
getInSandMiningArea
(
uuidListHashMap
.
get
(
regionalCompanyId
),
sandMining
.
get
(
"sandMiningArea"
),
ship
);
if
(
warnIngSandMiningArea
!=
null
){
warnMessage
=
"采砂许可证["
+
sandMining
.
getString
(
"permitCode"
)+
"]下船只["
+
ship
.
getString
(
"shipName"
)+
"] 进入["
+
warnIngSandMiningArea
.
get
(
"name"
)+
"],此采区非采砂许可证上采区,发生报警"
;
return
true
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
false
;
}
@Override
public
String
warnMessage
()
{
return
warnMessage
;
}
@Override
public
String
getActualValue
()
{
return
""
;
}
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/processor/NoOperatingHoursWarnCalculate.java
0 → 100644
View file @
89a098c6
package
com
.
xyst
.
dinas
.
production
.
processor
;
import
com.xyst.dinas.biz.warn.IWarningCalculator
;
import
com.xyst.dinas.biz.warn.WarnSetting
;
import
java.time.LocalTime
;
import
java.time.format.DateTimeFormatter
;
/**
* 非作业时间进入采砂区计算器
*
* @author
* @date 2021年4月1日
*/
public
class
NoOperatingHoursWarnCalculate
implements
IWarningCalculator
{
private
String
warnMessage
;
private
Boolean
isWarning
;
private
String
sandMingAreaName
;
private
String
sandMiningCode
;
private
String
shipName
;
private
LocalTime
time
;
public
NoOperatingHoursWarnCalculate
(
boolean
isWarning
,
String
sandAreaName
,
String
code
,
String
shipName
,
LocalTime
localTime
)
{
this
.
isWarning
=
isWarning
;
this
.
sandMingAreaName
=
sandAreaName
;
this
.
sandMiningCode
=
code
;
this
.
shipName
=
shipName
;
this
.
time
=
localTime
;
}
@Override
public
boolean
isWarning
(
WarnSetting
warnSetting
)
{
//业务数据与设置的阀值做比较,计算是否报警
if
(
isWarning
)
{
warnMessage
=
"采砂许可证["
+
sandMiningCode
+
"]下船只["
+
shipName
+
"]于 ["
+
time
.
format
(
DateTimeFormatter
.
ofPattern
(
"HH时mm分"
))+
"] 进入采区["
+
sandMingAreaName
+
"],此时段非工作时段,产生报警"
;
return
true
;
}
return
false
;
}
public
String
getWarnMessage
()
{
return
warnMessage
;
}
public
void
setWarnMessage
(
String
warnMessage
)
{
this
.
warnMessage
=
warnMessage
;
}
public
String
getSandMingAreaName
()
{
return
sandMingAreaName
;
}
public
void
setSandMingAreaName
(
String
sandMingAreaName
)
{
this
.
sandMingAreaName
=
sandMingAreaName
;
}
public
String
getSandMiningCode
()
{
return
sandMiningCode
;
}
public
void
setSandMiningCode
(
String
sandMiningCode
)
{
this
.
sandMiningCode
=
sandMiningCode
;
}
public
String
getShipName
()
{
return
shipName
;
}
public
void
setShipName
(
String
shipName
)
{
this
.
shipName
=
shipName
;
}
@Override
public
String
warnMessage
()
{
return
warnMessage
;
}
@Override
public
String
getActualValue
()
{
return
isWarning
?
sandMingAreaName:
""
;
}
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/processor/NoOperatingHoursWarnCalculator.java
0 → 100644
View file @
89a098c6
package
com
.
xyst
.
dinas
.
production
.
processor
;
import
com.beecode.bcp.type.KObject
;
import
com.xyst.dinas.biz.warn.IWarningCalculator
;
import
com.xyst.dinas.biz.warn.WarnSetting
;
import
com.xyst.dinas.production.service.SandMiningService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
/**
* 非作业时间进入采砂区计算器
*
* @author
* @date 2021年4月1日
*/
public
class
NoOperatingHoursWarnCalculator
implements
IWarningCalculator
{
private
String
warnMessage
;
@Autowired
private
SandMiningService
sandMiningService
;
@Override
public
boolean
isWarning
(
WarnSetting
warnSetting
)
{
KObject
sandMining
=
sandMiningService
.
getById
(
warnSetting
.
getBillId
());
Date
workStartTime
=
sandMining
.
getDate
(
"workStartTime"
);
Date
workEndTime
=
sandMining
.
getDate
(
"workEndTime"
);
LocalTime
now
=
LocalTime
.
now
(
ZoneId
.
systemDefault
());
LocalTime
startTime
=
LocalDateTime
.
ofInstant
(
workStartTime
.
toInstant
(),
ZoneId
.
systemDefault
()).
toLocalTime
();
LocalTime
endTime
=
LocalDateTime
.
ofInstant
(
workEndTime
.
toInstant
(),
ZoneId
.
systemDefault
()).
toLocalTime
();
boolean
before
=
now
.
isBefore
(
startTime
);
boolean
after
=
now
.
isAfter
(
endTime
);
//如果在可采时间外,则不应该在采区里边呆着
if
(!
before
&&!
after
){
return
false
;
}
KObject
sandMiningArea
=
sandMining
.
get
(
"sandMiningArea"
);
Map
<
String
,
Object
>
sandMiningAreaMap
=
sandMiningService
.
setAreaMap
(
sandMiningArea
);
if
(
sandMiningAreaMap
==
null
){
return
false
;
}
ArrayList
<
Map
<
String
,
Object
>>
hashMaps
=
new
ArrayList
<>();
hashMaps
.
add
(
sandMiningAreaMap
);
KObject
ship
=
sandMining
.
get
(
"ship"
);
try
{
Map
<
String
,
Object
>
warnIngSandMiningArea
=
sandMiningService
.
getInSandMiningArea
(
hashMaps
,
null
,
ship
);
if
(
warnIngSandMiningArea
!=
null
){
warnMessage
=
"采砂许可证["
+
sandMining
.
getString
(
"permitCode"
)+
"]下船只["
+
ship
.
getString
(
"shipName"
)+
"]于 ["
+
now
.
format
(
DateTimeFormatter
.
ofPattern
(
"HH时mm分"
))+
"] 进入["
+
warnIngSandMiningArea
.
get
(
"name"
)+
"],此时段非工作时段,发生报警"
;
return
true
;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
false
;
}
@Override
public
String
warnMessage
()
{
return
warnMessage
;
}
@Override
public
String
getActualValue
()
{
return
""
;
}
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/service/SandMiningService.java
View file @
89a098c6
...
...
@@ -3,6 +3,7 @@ package com.xyst.dinas.production.service;
import
com.beecode.bap.attachment.common.Page
;
import
com.beecode.bcp.type.KObject
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.UUID
;
...
...
@@ -26,6 +27,14 @@ public interface SandMiningService {
void
updateIsEnterWarningArea
();
Map
<
String
,
Object
>
getInSandMiningArea
(
List
<
Map
<
String
,
Object
>>
list
,
KObject
sandMining
,
KObject
shipInfo
)
throws
Exception
;
void
setRegionalCompanySandMing
(
HashMap
<
UUID
,
List
<
Map
<
String
,
Object
>>>
regionalCompanySandMining
,
UUID
regionalCompany
);
List
<
Map
<
String
,
Object
>>
queryByShip
(
List
<
Map
<
String
,
Object
>>
shipsTracking
);
void
updateNoOperatingHoursWarn
();
Map
<
String
,
Object
>
setAreaMap
(
KObject
sandMiningArea
);
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/task/SandMiningShipEnterWarningAreaTask.java
View file @
89a098c6
...
...
@@ -19,12 +19,12 @@ public class SandMiningShipEnterWarningAreaTask implements Task {
@Override
public
void
execute
(
TaskContext
taskContext
)
{
logger
.
info
(
"开始判断是否进
度
非自己的采砂区"
);
logger
.
info
(
"开始判断是否进
入
非自己的采砂区"
);
if
(
sandMiningService
==
null
){
sandMiningService
=
Amino
.
getApplicationContext
().
getBean
(
SandMiningService
.
class
);
}
sandMiningService
.
updateIsEnterWarningArea
();
logger
.
info
(
"结束判断是否进
度
非自己的采砂区"
);
logger
.
info
(
"结束判断是否进
入
非自己的采砂区"
);
}
}
backend/xyst.dinas.production/src/main/java/com/xyst/dinas/production/task/SandMiningShipNoOperatingHoursTask.java
View file @
89a098c6
...
...
@@ -18,10 +18,10 @@ public class SandMiningShipNoOperatingHoursTask implements Task {
@Override
public
void
execute
(
TaskContext
taskContext
)
{
logger
.
info
(
"开始
修改采砂许可证状态
"
);
logger
.
info
(
"开始
判断是否非工作时间在采区内
"
);
sandMiningService
.
update
SandMiningStatus
();
logger
.
info
(
"
修改采砂许可证状态结束
"
);
sandMiningService
.
update
NoOperatingHoursWarn
();
logger
.
info
(
"
结束判断是否非工作时间在采区内
"
);
}
}
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