Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
manager
Project
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
reyun
manager
Commits
62af79db
Commit
62af79db
authored
Nov 29, 2020
by
xioa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
同步数据增加线程池
parent
5dc5cf7c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
188 additions
and
135 deletions
+188
-135
TkioFlowHistory.java
src/main/java/common/model/TkioFlowHistory.java
+9
-0
CalculationFlowRepository.java
...ain/java/common/repository/CalculationFlowRepository.java
+8
-2
TkioFlowHistoryRepository.java
...ain/java/common/repository/TkioFlowHistoryRepository.java
+1
-1
TrackingFlowTask.java
src/main/java/track/task/TrackingFlowTask.java
+170
-132
No files found.
src/main/java/common/model/TkioFlowHistory.java
View file @
62af79db
...
...
@@ -21,6 +21,7 @@ public class TkioFlowHistory {
private
String
yMonth
;
private
String
yMonthNext
;
private
String
nextCode
;
private
Integer
firstRecode
;
...
...
@@ -108,4 +109,12 @@ public class TkioFlowHistory {
public
void
setNextCode
(
String
nextCode
)
{
this
.
nextCode
=
nextCode
;
}
public
Integer
getFirstRecode
()
{
return
firstRecode
;
}
public
void
setFirstRecode
(
Integer
firstRecode
)
{
this
.
firstRecode
=
firstRecode
;
}
}
src/main/java/common/repository/CalculationFlowRepository.java
View file @
62af79db
...
...
@@ -2,14 +2,20 @@ package common.repository;
import
common.model.CalculationFlow
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Modifying
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
@Transactional
public
interface
CalculationFlowRepository
extends
JpaRepository
<
CalculationFlow
,
Long
>
{
public
interface
CalculationFlowRepository
extends
JpaRepository
<
CalculationFlow
,
Long
>
{
@Query
(
value
=
"select * from calculation_flow where status = ?1"
,
nativeQuery
=
true
)
@Query
(
value
=
"select * from calculation_flow where status = ?1"
,
nativeQuery
=
true
)
List
<
CalculationFlow
>
findByStatus
(
int
status
);
@Query
(
value
=
"update calculation_flow set status = ?2 where id = ?1 "
,
nativeQuery
=
true
)
@Transactional
@Modifying
void
updateStatus
(
Long
id
,
int
status
);
}
src/main/java/common/repository/TkioFlowHistoryRepository.java
View file @
62af79db
...
...
@@ -12,7 +12,7 @@ public interface TkioFlowHistoryRepository extends JpaRepository<TkioFlowHistory
@Query
(
value
=
"select contract_code from tkio_flow_history where email = ?1
order by ds limit 1"
,
nativeQuery
=
true
)
@Query
(
value
=
"select contract_code from tkio_flow_history where email = ?1 order by ds limit 1"
,
nativeQuery
=
true
)
String
findLastRecodeContract
(
String
email
);
@Query
(
value
=
"select sum(flow) from tkio_flow_history where email = ?1 and contract_code = ?2"
,
nativeQuery
=
true
)
...
...
src/main/java/track/task/TrackingFlowTask.java
View file @
62af79db
...
...
@@ -24,6 +24,9 @@ import java.util.ArrayList;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -52,160 +55,187 @@ public class TrackingFlowTask {
@Autowired
private
TkioFlowHistoryRepository
tkioFlowHistoryRepository
;
private
final
ExecutorService
executor
=
Executors
.
newFixedThreadPool
(
10
);
public
void
syncFlow
()
{
List
<
CalculationFlow
>
calculationFlows
=
calculationFlowRepository
.
findByStatus
(
0
);
for
(
CalculationFlow
calculationFlow
:
calculationFlows
)
{
List
<
TkioFlow
>
tkioFlowList
=
new
ArrayList
<>();
//
List<TkioFlow> tkioFlowList = new ArrayList<>();
calculationFlow
.
setStatus
(
1
);
calculationFlowRepository
.
save
(
calculationFlow
);
tkioFlowRepository
.
deleteByEmail
(
calculationFlow
.
getEmail
());
tkioFlowHistoryRepository
.
deleteByEmail
(
calculationFlow
.
getEmail
());
String
email
=
calculationFlow
.
getEmail
();
//查询用户下所有appkey
//每个用户数据在单独线程处理
executor
.
execute
(
new
RunableTask
(
email
,
calculationFlow
));
}
}
private
class
RunableTask
implements
Runnable
{
private
String
email
;
private
CalculationFlow
calculationFlow
;
public
RunableTask
(
String
email
,
CalculationFlow
calculationFlow
)
{
this
.
email
=
email
;
this
.
calculationFlow
=
calculationFlow
;
}
@Override
public
void
run
()
{
calculationFlowByAccount
(
calculationFlow
,
email
);
}
}
private
void
calculationFlowByAccount
(
CalculationFlow
calculationFlow
,
String
email
)
{
try
{
Account
account
=
accountRepository
.
findByEmail
(
email
);
List
<
Account
>
accountList
=
accountRepository
.
findByRootParent
(
account
.
getRootParent
());
List
<
Long
>
idList
=
new
ArrayList
<>();
for
(
Account
ac
:
accountList
)
{
idList
.
add
(
ac
.
getId
());
}
List
<
String
>
appkeys
=
appRepository
.
findAppkeysNotDebug
(
idList
);
String
appkeyStr
=
String
.
join
(
"','"
,
appkeys
);
appkeyStr
=
"'"
+
appkeyStr
+
"'"
;
String
ago
=
DateUtil
.
format
(
account
.
getCreateTime
(),
DateUtil
.
C_DATE_PATTON_DEFAULT
);
//查找最早一天的流量
if
(
ago
==
null
)
{
/*calculationFlow.setStatus(2);
calculationFlowRepository.save(calculationFlow);*/
calculationFlowRepository
.
updateStatus
(
calculationFlow
.
getId
(),
2
);
return
;
}
int
between
=
0
;
try
{
Account
account
=
accountRepository
.
findByEmail
(
email
);
List
<
Account
>
accountList
=
accountRepository
.
findByRootParent
(
account
.
getRootParent
());
List
<
Long
>
idList
=
new
ArrayList
<>();
for
(
Account
ac
:
accountList
)
{
idList
.
add
(
ac
.
getId
());
}
List
<
String
>
appkeys
=
appRepository
.
findAppkeysNotDebug
(
idList
);
String
appkeyStr
=
String
.
join
(
"','"
,
appkeys
);
appkeyStr
=
"'"
+
appkeyStr
+
"'"
;
String
ago
=
DateUtil
.
format
(
account
.
getCreateTime
(),
DateUtil
.
C_DATE_PATTON_DEFAULT
);
//查找最早一天的流量
if
(
ago
==
null
)
{
calculationFlow
.
setStatus
(
2
);
calculationFlowRepository
.
save
(
calculationFlow
);
continue
;
}
between
=
DateUtil
.
daysBetween
(
ago
,
DateUtil
.
getBeforeDays
(
1
))
+
1
;
}
catch
(
ParseException
e
)
{
logger
.
error
(
"强转错误:"
,
e
);
}
int
startInt
=
0
;
if
(
Integer
.
valueOf
(
DateUtil
.
getHH
())
>
10
)
{
startInt
=
-
1
;
}
for
(
int
ii
=
between
;
ii
>
startInt
;
ii
--)
{
String
yesterday
=
DateUtil
.
getBeforeDays
(
ii
);
//昨日
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
yesterday
,
yesterday
,
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
if
(
clickNum
!=
null
&&
clickNum
.
longValue
()
>
0
)
{
List
<
Contract
>
contracts
=
contractRepository
.
findByPlatformAndEmail
(
"tkio"
,
email
);
if
(
contracts
.
size
()
==
1
)
{
//只有一个合同
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
contracts
.
get
(
0
));
if
(
tkioFlow
!=
null
)
{
//tkioFlowList.add(tkioFlow);
tkioFlow
.
setContractCount
(
1
);
tkioFlowRepository
.
save
(
tkioFlow
);
}
}
else
{
int
between
=
0
;
try
{
between
=
DateUtil
.
daysBetween
(
ago
,
DateUtil
.
getBeforeDays
(
1
))
+
1
;
}
catch
(
ParseException
e
)
{
logger
.
error
(
"强转错误:"
,
e
);
}
int
startInt
=
0
;
if
(
Integer
.
valueOf
(
DateUtil
.
getHH
())
>
10
)
{
startInt
=
-
1
;
}
for
(
int
ii
=
between
;
ii
>
startInt
;
ii
--)
{
String
yesterday
=
DateUtil
.
getBeforeDays
(
ii
);
//昨日
BigInteger
clickNum
=
accountFlowRestrictService
.
getTotalNum
(
yesterday
,
yesterday
,
appkeyStr
,
"account_track_flow_restrict"
,
"click_sum"
);
if
(
clickNum
!=
null
&&
clickNum
.
longValue
()
>
0
)
{
List
<
Contract
>
contracts
=
contractRepository
.
findByPlatformAndEmail
(
"tkio"
,
email
);
if
(
contracts
.
size
()
==
1
)
{
//只有一个合同
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
contracts
.
get
(
0
));
if
(
tkioFlow
!=
null
)
{
tkioFlowList
.
add
(
tkioFlow
);
tkioFlow
.
setContractCount
(
1
);
tkioFlowRepository
.
save
(
tkioFlow
);
getFlowOnMonths
(
email
,
yesterday
,
clickNum
,
contracts
);
//月流量报表逻辑
//多个合同
//看昨日被哪几个合同包含了
//昨日有几个合同开始生效
List
<
Contract
>
correlationContract
=
new
ArrayList
<>();
for
(
Contract
contract
:
contracts
)
{
/*if (ContractStatusEnum.CANCEL.getKey().equals(contract.getStatus()) || ContractStatusEnum.SUSPEND.getKey().equals(contract.getStatus())) {
//中止或作废合同处理结束时间,以方便昨日流量的归属计算
ContractChange contractChange = contractChangeRepository.findByContentCode(ContractStatusEnum.CANCEL.getValue(), contract.getContractCode());
if (contractChange != null) {
contract.setEndDate(new DateTime(contractChange.getCreateTime()).toString("yyyy-MM-dd"));
}
}*/
String
startDate
=
contract
.
getStartDate
();
String
endDate
=
contract
.
getEndDate
();
if
(
DateUtil
.
getDate
(
yesterday
).
getTime
()
>=
DateUtil
.
getDate
(
startDate
).
getTime
()
&&
DateUtil
.
getDate
(
yesterday
).
getTime
()
<=
DateUtil
.
getDate
(
endDate
).
getTime
())
{
correlationContract
.
add
(
contract
);
}
}
else
{
getFlowOnMonths
(
email
,
yesterday
,
clickNum
,
contracts
);
//月流量报表逻辑
}
//多个合同时,进行排序,如果第一个合同流量超出就要看第二个合同,以此往下(昨日多个合同生效)
if
(
correlationContract
.
size
()
>
1
)
{
//冒泡
//第一优先级:合同开始日期,第二优先级,合同编号大小
Contract
[]
contractsArray
=
new
Contract
[
correlationContract
.
size
()];
contractsArray
=
correlationContract
.
toArray
(
contractsArray
);
contractsArray
=
orderByContract
(
contractsArray
);
//多个合同
//看昨日被哪几个合同包含了
//昨日有几个合同开始生效
List
<
Contract
>
correlationContract
=
new
ArrayList
<>();
for
(
Contract
contract
:
contracts
)
{
/*if (ContractStatusEnum.CANCEL.getKey().equals(contract.getStatus()) || ContractStatusEnum.SUSPEND.getKey().equals(contract.getStatus())) {
//中止或作废合同处理结束时间,以方便昨日流量的归属计算
ContractChange contractChange = contractChangeRepository.findByContentCode(ContractStatusEnum.CANCEL.getValue(), contract.getContractCode());
if (contractChange != null) {
contract.setEndDate(new DateTime(contractChange.getCreateTime()).toString("yyyy-MM-dd"));
for
(
int
i
=
0
;
i
<
contractsArray
.
length
;
i
++)
{
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
contractsArray
[
i
]);
tkioFlow
.
setContractCount
(
contracts
.
size
());
if
(
tkioFlow
!=
null
&&
i
<
contractsArray
.
length
-
1
&&
tkioFlow
.
getCostFlow
()
!=
null
&&
tkioFlow
.
getCostFlow
()
>
0L
)
{
//处理成本流量,如果超出了,依次算在下一个合同上
//1、超出的流量 记为下一合同的当日流量 2、该合同自身当日流量为 剩余流量 或者为0
clickNum
=
BigInteger
.
valueOf
(
tkioFlow
.
getCostFlow
());
tkioFlow
.
setCostFlow
(
null
);
if
(
tkioFlow
.
getFlow
()
>
0
)
{
//tkioFlowList.add(tkioFlow);
tkioFlowRepository
.
save
(
tkioFlow
);
}
}
else
{
if
(
tkioFlow
!=
null
)
{
//tkioFlowList.add(tkioFlow);
tkioFlowRepository
.
save
(
tkioFlow
);
}
}*/
String
startDate
=
contract
.
getStartDate
();
String
endDate
=
contract
.
getEndDate
();
if
(
DateUtil
.
getDate
(
yesterday
).
getTime
()
>=
DateUtil
.
getDate
(
startDate
).
getTime
()
&&
DateUtil
.
getDate
(
yesterday
).
getTime
()
<=
DateUtil
.
getDate
(
endDate
).
getTime
())
{
correlationContract
.
add
(
contract
);
break
;
}
}
//多个合同时,进行排序,如果第一个合同流量超出就要看第二个合同,以此往下(昨日多个合同生效)
if
(
correlationContract
.
size
()
>
1
)
{
//冒泡
//第一优先级:合同开始日期,第二优先级,合同编号大小
Contract
[]
contractsArray
=
new
Contract
[
correlationContract
.
size
()];
contractsArray
=
correlationContract
.
toArray
(
contractsArray
);
}
}
else
{
if
(
correlationContract
.
size
()
==
0
)
{
//昨日不包含在所有合同中
//排序
Contract
[]
contractsArray
=
new
Contract
[
contracts
.
size
()];
contractsArray
=
contracts
.
toArray
(
contractsArray
);
contractsArray
=
orderByContract
(
contractsArray
);
//如果昨日日期在第一个合同之前,则归属到第一个合同的成本,其余区间都归属到前一个合同的成本上
for
(
int
i
=
0
;
i
<
contractsArray
.
length
;
i
++)
{
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
contractsArray
[
i
]);
tkioFlow
.
setContractCount
(
contracts
.
size
());
if
(
tkioFlow
!=
null
&&
i
<
contractsArray
.
length
-
1
&&
tkioFlow
.
getCostFlow
()
!=
null
&&
tkioFlow
.
getCostFlow
()
>
0L
)
{
//处理成本流量,如果超出了,依次算在下一个合同上
//1、超出的流量 记为下一合同的当日流量 2、该合同自身当日流量为 剩余流量 或者为0
clickNum
=
BigInteger
.
valueOf
(
tkioFlow
.
getCostFlow
());
tkioFlow
.
setCostFlow
(
null
);
if
(
tkioFlow
.
getFlow
()
>
0
)
{
tkioFlowList
.
add
(
tkioFlow
);
tkioFlowRepository
.
save
(
tkioFlow
);
if
(
DateUtil
.
getDate
(
yesterday
).
getTime
()
<=
DateUtil
.
getDate
(
contractsArray
[
i
].
getStartDate
()).
getTime
()
||
i
==
contractsArray
.
length
-
1
)
{
int
j
=
0
;
if
(
i
!=
0
)
{
j
=
i
-
1
;
}
}
else
{
if
(
i
==
contractsArray
.
length
-
1
)
{
j
=
i
;
}
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
contractsArray
[
j
]);
tkioFlow
.
setContractCount
(
contracts
.
size
());
if
(
tkioFlow
!=
null
)
{
tkioFlowList
.
add
(
tkioFlow
);
//
tkioFlowList.add(tkioFlow);
tkioFlowRepository
.
save
(
tkioFlow
);
}
break
;
}
}
}
else
{
if
(
correlationContract
.
size
()
==
0
)
{
//昨日不包含在所有合同中
//排序
Contract
[]
contractsArray
=
new
Contract
[
contracts
.
size
()];
contractsArray
=
contracts
.
toArray
(
contractsArray
);
contractsArray
=
orderByContract
(
contractsArray
);
//如果昨日日期在第一个合同之前,则归属到第一个合同的成本,其余区间都归属到前一个合同的成本上
for
(
int
i
=
0
;
i
<
contractsArray
.
length
;
i
++)
{
if
(
DateUtil
.
getDate
(
yesterday
).
getTime
()
<=
DateUtil
.
getDate
(
contractsArray
[
i
].
getStartDate
()).
getTime
()
||
i
==
contractsArray
.
length
-
1
)
{
int
j
=
0
;
if
(
i
!=
0
)
{
j
=
i
-
1
;
}
if
(
i
==
contractsArray
.
length
-
1
)
{
j
=
i
;
}
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
contractsArray
[
j
]);
tkioFlow
.
setContractCount
(
contracts
.
size
());
if
(
tkioFlow
!=
null
)
{
tkioFlowList
.
add
(
tkioFlow
);
tkioFlowRepository
.
save
(
tkioFlow
);
}
break
;
}
}
}
else
{
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
correlationContract
.
get
(
0
));
tkioFlow
.
setContractCount
(
contracts
.
size
());
if
(
tkioFlow
!=
null
)
{
tkioFlowList
.
add
(
tkioFlow
);
tkioFlowRepository
.
save
(
tkioFlow
);
}
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
correlationContract
.
get
(
0
));
tkioFlow
.
setContractCount
(
contracts
.
size
());
if
(
tkioFlow
!=
null
)
{
//tkioFlowList.add(tkioFlow);
tkioFlowRepository
.
save
(
tkioFlow
);
}
}
}
}
}
if
(
tkioFlowList
.
size
()
>
0
)
{
//tkioFlowRepository.save(tkioFlowList);
}
calculationFlow
.
setStatus
(
2
);
calculationFlowRepository
.
save
(
calculationFlow
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"CalculationFlow:Id::"
+
calculationFlow
.
getId
()
+
":全流量同步失败"
,
e
);
calculationFlow
.
setStatus
(
3
);
calculationFlowRepository
.
save
(
calculationFlow
);
}
/*if (tkioFlowList.size() > 0) {
tkioFlowRepository.save(tkioFlowList);
}*/
/* calculationFlow.setStatus(2);
calculationFlowRepository.save(calculationFlow);*/
calculationFlowRepository
.
updateStatus
(
calculationFlow
.
getId
(),
2
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"CalculationFlow:Id::"
+
calculationFlow
.
getId
()
+
":全流量同步失败"
,
e
);
/*calculationFlow.setStatus(3);
calculationFlowRepository.save(calculationFlow);*/
calculationFlowRepository
.
updateStatus
(
calculationFlow
.
getId
(),
3
);
}
}
...
...
@@ -221,17 +251,22 @@ public class TrackingFlowTask {
private
BigInteger
getFlowOnMonths
(
String
email
,
String
yesterday
,
BigInteger
clickNum
,
List
<
Contract
>
contracts
)
{
String
code
=
tkioFlowHistoryRepository
.
findLastRecodeContract
(
email
);
List
<
Contract
>
sortedContract
=
sortContracts
(
contracts
);
BigInteger
clickFlow
=
clickNum
;
boolean
skip
=
true
;
boolean
fistRecode
=
code
==
null
?
true
:
false
;
for
(
int
i
=
0
;
i
<
sortedContract
.
size
();
i
++)
{
if
(
skip
&&
!
sortedContract
.
get
(
i
).
getContractCode
().
equals
(
code
))
{
continue
;
//
跳过已记录的合同
if
(
skip
&&
code
!=
null
&&
!
sortedContract
.
get
(
i
).
getContractCode
().
equals
(
code
))
{
continue
;
//
从记录的最后一份合同开始处理
}
else
{
skip
=
false
;
}
TkioFlow
tkioFlow
=
getTkioFlow
(
clickNum
,
yesterday
,
sortedContract
.
get
(
i
),
true
);
TkioFlow
tkioFlow
=
getTkioFlow
(
clickFlow
,
yesterday
,
sortedContract
.
get
(
i
),
true
);
Long
costFlow
=
tkioFlow
.
getCostFlow
()
==
null
?
0L
:
tkioFlow
.
getCostFlow
();
TkioFlowHistory
flowHistory
=
new
TkioFlowHistory
(
tkioFlow
);
flowHistory
.
setFirstRecode
(
fistRecode
?
1
:
0
);
//标记合同的第一次流量记录
fistRecode
=
false
;
flowHistory
.
setyMonth
(
DateTime
.
parse
(
yesterday
).
toString
(
"yyyy-MM"
));
flowHistory
.
setyMonthNext
(
DateTime
.
parse
(
yesterday
).
plusMonths
(
1
).
toString
(
"yyyy-MM"
));
if
(
costFlow
<=
0
)
{
...
...
@@ -247,23 +282,26 @@ public class TrackingFlowTask {
if
(
DateTime
.
parse
(
next
.
getStartDate
()).
isBefore
(
DateTime
.
parse
(
yesterday
))
||
DateTime
.
parse
(
next
.
getStartDate
()).
isEqual
(
DateTime
.
parse
(
yesterday
)))
{
// 生效
if
(
DateTime
.
parse
(
next
.
getStartDate
()).
monthOfYear
().
get
()
!=
new
DateTime
(
next
.
getCreateTime
()).
monthOfYear
().
get
()
&&
new
DateTime
(
next
.
getCreateTime
()).
dayOfMonth
().
get
()
>
10
)
{
}
else
{
//2、生效时 切为非晚录合同 超出流量计入下一合同
clickNum
=
new
BigInteger
(
costFlow
.
toString
());
//2、生效时 且非晚录合同 超出流量计入下一合同
clickFlow
=
new
BigInteger
(
costFlow
.
toString
());
fistRecode
=
true
;
continue
;
}
}
//3、未生效或
未
晚录合同 则关联流量信息到当前合同
//3、未生效或晚录合同 则关联流量信息到当前合同
if
(
DateTime
.
parse
(
yesterday
).
monthOfYear
().
get
()
==
DateTime
.
parse
(
next
.
getStartDate
()).
monthOfYear
().
get
())
{
//生效当月 超出的流量关联到 下一份合同
clickNum
=
new
BigInteger
(
costFlow
.
toString
());
//生效当月 超出的流量关联到 该合同
clickFlow
=
new
BigInteger
(
costFlow
.
toString
());
fistRecode
=
true
;
continue
;
}
else
{
//生效当月之前 超出的流量计入
当前
合同
//生效当月之前 超出的流量计入
上一
合同
flowHistory
.
setNextCode
(
next
.
getContractCode
());
//标记用于那份合同的调整流量
tkioFlowHistoryRepository
.
save
(
flowHistory
);
}
...
...
@@ -273,7 +311,7 @@ public class TrackingFlowTask {
tkioFlowHistoryRepository
.
save
(
flowHistory
);
}
}
return
click
Num
;
return
click
Flow
;
}
public
void
task
()
{
...
...
@@ -489,7 +527,7 @@ public class TrackingFlowTask {
List
<
Contract
>
contracts
=
new
ArrayList
<>();
Contract
c1
=
new
Contract
();
c1
.
setStartDate
(
"2020-10-0
3
"
);
c1
.
setStartDate
(
"2020-10-0
2
"
);
c1
.
setContractCode
(
"QWWE-20201101-03"
);
Contract
c2
=
new
Contract
();
c2
.
setStartDate
(
"2020-11-02"
);
...
...
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