Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
D
datasync-service
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
位宇华
datasync-service
Commits
e75b82e7
Commit
e75b82e7
authored
Jul 01, 2024
by
位宇华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
利润数据同步
parent
5e2e3d70
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
421 additions
and
2 deletions
+421
-2
.idea/.gitignore
.idea/.gitignore
+8
-0
.idea/artifacts/datasync_Service_Web_exploded.xml
.idea/artifacts/datasync_Service_Web_exploded.xml
+13
-0
.idea/encodings.xml
.idea/encodings.xml
+7
-0
.idea/misc.xml
.idea/misc.xml
+14
-0
META-INF/context.xml
META-INF/context.xml
+3
-0
src/main/java/com/tianyi/sync/controller/ProfitDataSyncController.java
.../com/tianyi/sync/controller/ProfitDataSyncController.java
+22
-0
src/main/java/com/tianyi/sync/mapper/master/ProfitDataSyncMapper.java
...a/com/tianyi/sync/mapper/master/ProfitDataSyncMapper.java
+10
-0
src/main/java/com/tianyi/sync/mapper/slave/ProfitSlaveMapper.java
.../java/com/tianyi/sync/mapper/slave/ProfitSlaveMapper.java
+21
-0
src/main/java/com/tianyi/sync/model/FreeQueryProfitModel.java
...main/java/com/tianyi/sync/model/FreeQueryProfitModel.java
+66
-0
src/main/java/com/tianyi/sync/model/IndexAccountModel.java
src/main/java/com/tianyi/sync/model/IndexAccountModel.java
+26
-0
src/main/java/com/tianyi/sync/model/ProfitModel.java
src/main/java/com/tianyi/sync/model/ProfitModel.java
+46
-0
src/main/java/com/tianyi/sync/service/ProfitDataSyncService.java
...n/java/com/tianyi/sync/service/ProfitDataSyncService.java
+5
-0
src/main/java/com/tianyi/sync/service/impl/ProfitDataSyncServiceImpl.java
...m/tianyi/sync/service/impl/ProfitDataSyncServiceImpl.java
+109
-0
src/main/java/com/tianyi/sync/task/ScheduleTask.java
src/main/java/com/tianyi/sync/task/ScheduleTask.java
+14
-2
src/main/resources/mapper/ProfitDataSyncMapper.xml
src/main/resources/mapper/ProfitDataSyncMapper.xml
+28
-0
src/main/resources/mapper/ProfitSlaveMapper.xml
src/main/resources/mapper/ProfitSlaveMapper.xml
+29
-0
No files found.
.idea/.gitignore
0 → 100644
View file @
e75b82e7
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
.idea/artifacts/datasync_Service_Web_exploded.xml
0 → 100644
View file @
e75b82e7
<component
name=
"ArtifactManager"
>
<artifact
type=
"exploded-war"
name=
"datasync-Service:Web exploded"
>
<output-path>
$PROJECT_DIR$/out/artifacts/datasync_Service_Web_exploded
</output-path>
<root
id=
"root"
>
<element
id=
"javaee-facet-resources"
facet=
"datasync-Service/web/Web"
/>
<element
id=
"directory"
name=
"WEB-INF"
>
<element
id=
"directory"
name=
"classes"
>
<element
id=
"module-output"
name=
"datasync-Service"
/>
</element>
</element>
</root>
</artifact>
</component>
\ No newline at end of file
.idea/encodings.xml
0 → 100644
View file @
e75b82e7
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"Encoding"
>
<file
url=
"file://$PROJECT_DIR$/src/main/java"
charset=
"UTF-8"
/>
<file
url=
"file://$PROJECT_DIR$/src/main/resources"
charset=
"UTF-8"
/>
</component>
</project>
\ No newline at end of file
.idea/misc.xml
0 → 100644
View file @
e75b82e7
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<component
name=
"ExternalStorageConfigurationManager"
enabled=
"true"
/>
<component
name=
"MavenProjectsManager"
>
<option
name=
"originalFiles"
>
<list>
<option
value=
"$PROJECT_DIR$/pom.xml"
/>
</list>
</option>
</component>
<component
name=
"ProjectRootManager"
version=
"2"
languageLevel=
"JDK_11"
default=
"true"
project-jdk-name=
"11"
project-jdk-type=
"JavaSDK"
>
<output
url=
"file://$PROJECT_DIR$/out"
/>
</component>
</project>
\ No newline at end of file
META-INF/context.xml
0 → 100644
View file @
e75b82e7
<?xml version="1.0" encoding="UTF-8"?>
<Context
path=
"/"
>
</Context>
src/main/java/com/tianyi/sync/controller/ProfitDataSyncController.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.controller
;
import
com.tianyi.sync.service.ProfitDataSyncService
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
public
class
ProfitDataSyncController
{
private
final
ProfitDataSyncService
profitDataSyncService
;
public
ProfitDataSyncController
(
ProfitDataSyncService
profitDataSyncService
)
{
this
.
profitDataSyncService
=
profitDataSyncService
;
}
@PostMapping
(
"/profit/data/sync"
)
public
Object
profitDataSync
()
{
return
profitDataSyncService
.
profitSync
();
}
}
src/main/java/com/tianyi/sync/mapper/master/ProfitDataSyncMapper.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.mapper.master
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.tianyi.sync.model.ParmDataModel
;
import
com.tianyi.sync.model.ProfitModel
;
@DS
(
"master"
)
public
interface
ProfitDataSyncMapper
{
ProfitModel
getProfit
(
ParmDataModel
parmDataModel
);
}
src/main/java/com/tianyi/sync/mapper/slave/ProfitSlaveMapper.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.mapper.slave
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.tianyi.sync.model.FreeQueryProfitModel
;
import
com.tianyi.sync.model.IndexAccountModel
;
import
com.tianyi.sync.model.ParmDataModel
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
@DS
(
"slave"
)
public
interface
ProfitSlaveMapper
{
void
delete
(
ParmDataModel
profitModel
);
List
<
String
>
getCodeList
();
List
<
IndexAccountModel
>
getAccount
(
@Param
(
"indexName"
)
String
indexname
);
void
save
(
@Param
(
"freeQueryProfitModelList"
)
List
<
FreeQueryProfitModel
>
freeQueryProfitModelList
);
}
src/main/java/com/tianyi/sync/model/FreeQueryProfitModel.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.model
;
import
java.io.Serializable
;
public
class
FreeQueryProfitModel
implements
Serializable
{
private
String
yearm
;
private
String
accountcode
;
private
String
accountname
;
private
String
entity
;
private
String
money
;
private
String
indexname
;
public
String
getYearm
()
{
return
yearm
;
}
public
void
setYearm
(
String
yearm
)
{
this
.
yearm
=
yearm
;
}
public
String
getAccountcode
()
{
return
accountcode
;
}
public
void
setAccountcode
(
String
accountcode
)
{
this
.
accountcode
=
accountcode
;
}
public
String
getAccountname
()
{
return
accountname
;
}
public
void
setAccountname
(
String
accountname
)
{
this
.
accountname
=
accountname
;
}
public
String
getEntity
()
{
return
entity
;
}
public
void
setEntity
(
String
entity
)
{
this
.
entity
=
entity
;
}
public
String
getMoney
()
{
return
money
;
}
public
void
setMoney
(
String
money
)
{
this
.
money
=
money
;
}
public
String
getIndexname
()
{
return
indexname
;
}
public
void
setIndexname
(
String
indexname
)
{
this
.
indexname
=
indexname
;
}
}
src/main/java/com/tianyi/sync/model/IndexAccountModel.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.model
;
import
java.io.Serializable
;
public
class
IndexAccountModel
implements
Serializable
{
private
String
indexname
;
private
String
account
;
public
String
getIndexname
()
{
return
indexname
;
}
public
void
setIndexname
(
String
indexname
)
{
this
.
indexname
=
indexname
;
}
public
String
getAccount
()
{
return
account
;
}
public
void
setAccount
(
String
account
)
{
this
.
account
=
account
;
}
}
src/main/java/com/tianyi/sync/model/ProfitModel.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.model
;
import
java.io.Serializable
;
public
class
ProfitModel
implements
Serializable
{
private
String
pk_task
;
private
String
ZB4
;
private
String
ZB9
;
private
String
ZB198
;
public
String
getPk_task
()
{
return
pk_task
;
}
public
void
setPk_task
(
String
pk_task
)
{
this
.
pk_task
=
pk_task
;
}
public
String
getZB4
()
{
return
ZB4
;
}
public
void
setZB4
(
String
ZB4
)
{
this
.
ZB4
=
ZB4
;
}
public
String
getZB9
()
{
return
ZB9
;
}
public
void
setZB9
(
String
ZB9
)
{
this
.
ZB9
=
ZB9
;
}
public
String
getZB198
()
{
return
ZB198
;
}
public
void
setZB198
(
String
ZB198
)
{
this
.
ZB198
=
ZB198
;
}
}
src/main/java/com/tianyi/sync/service/ProfitDataSyncService.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.service
;
public
interface
ProfitDataSyncService
{
Object
profitSync
();
}
src/main/java/com/tianyi/sync/service/impl/ProfitDataSyncServiceImpl.java
0 → 100644
View file @
e75b82e7
package
com.tianyi.sync.service.impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.dynamic.datasource.annotation.DSTransactional
;
import
com.tianyi.sync.mapper.master.ProfitDataSyncMapper
;
import
com.tianyi.sync.mapper.slave.ProfitSlaveMapper
;
import
com.tianyi.sync.model.FreeQueryProfitModel
;
import
com.tianyi.sync.model.IndexAccountModel
;
import
com.tianyi.sync.model.ParmDataModel
;
import
com.tianyi.sync.model.ProfitModel
;
import
com.tianyi.sync.service.ProfitDataSyncService
;
import
com.tianyi.sync.utils.DateUtils
;
import
lombok.SneakyThrows
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.StopWatch
;
import
java.lang.reflect.Field
;
import
java.util.LinkedList
;
import
java.util.List
;
@Service
public
class
ProfitDataSyncServiceImpl
implements
ProfitDataSyncService
{
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
ProfitDataSyncServiceImpl
.
class
);
private
final
ProfitSlaveMapper
profitSlaveMapper
;
private
final
ProfitDataSyncMapper
profitDataSyncMapper
;
public
ProfitDataSyncServiceImpl
(
ProfitSlaveMapper
profitSlaveMapper
,
ProfitDataSyncMapper
profitDataSyncMapper
)
{
this
.
profitSlaveMapper
=
profitSlaveMapper
;
this
.
profitDataSyncMapper
=
profitDataSyncMapper
;
}
@Override
@SneakyThrows
@DSTransactional
public
Object
profitSync
()
{
StopWatch
stopWatch
=
new
StopWatch
();
stopWatch
.
start
();
JSONObject
jsonObject
=
new
JSONObject
();
String
lastMonth
=
DateUtils
.
getYearAndMonthLast
();
//String lastMonth = "2024-06";
ParmDataModel
parmDataModel
=
new
ParmDataModel
();
parmDataModel
.
setPeriod
(
lastMonth
.
replaceAll
(
"-"
,
""
));
parmDataModel
.
setYear
(
lastMonth
.
substring
(
0
,
4
));
String
monthStr
=
lastMonth
.
substring
(
5
,
7
);
parmDataModel
.
setMonth
(
StringUtils
.
startsWith
(
monthStr
,
"0"
)
?
lastMonth
.
substring
(
6
,
7
)
:
monthStr
);
logger
.
info
(
"参数:{}"
,
JSON
.
toJSONString
(
parmDataModel
));
//先清除表内数据
profitSlaveMapper
.
delete
(
parmDataModel
);
List
<
String
>
icpCodeList
=
profitSlaveMapper
.
getCodeList
();
List
<
String
>
stringList
=
new
LinkedList
<>();
for
(
String
str
:
icpCodeList
)
{
parmDataModel
.
setEntity
(
str
);
ProfitModel
profitModel
=
profitDataSyncMapper
.
getProfit
(
parmDataModel
);
if
(
ObjectUtils
.
isEmpty
(
profitModel
))
{
stringList
.
add
(
str
);
logger
.
info
(
"unexpected event {}:"
,
"entityCode为"
+
str
+
"未查询到数据!"
);
continue
;
}
Field
[]
fields
=
profitModel
.
getClass
().
getDeclaredFields
();
List
<
FreeQueryProfitModel
>
freeQueryProfitModelList
=
new
LinkedList
<>();
for
(
Field
field
:
fields
)
{
String
indexname
=
field
.
getName
();
if
(
StringUtils
.
startsWith
(
indexname
,
"ZB"
))
{
List
<
IndexAccountModel
>
indexAccountModelList
=
profitSlaveMapper
.
getAccount
(
indexname
);
if
(
CollectionUtils
.
isEmpty
(
indexAccountModelList
))
{
continue
;
}
for
(
IndexAccountModel
indexAccountModel
:
indexAccountModelList
)
{
FreeQueryProfitModel
freeQueryProfitModel
=
new
FreeQueryProfitModel
();
Field
declaredField
=
profitModel
.
getClass
().
getDeclaredField
(
"ZB4"
);
declaredField
.
setAccessible
(
true
);
Object
o
=
declaredField
.
get
(
profitModel
);
if
(
o
==
null
)
{
continue
;
}
else
{
freeQueryProfitModel
.
setMoney
(
StringUtils
.
contains
((
String
)
o
,
"E"
)
?
"0"
:
((
String
)
o
));
}
freeQueryProfitModel
.
setIndexname
(
field
.
getName
());
freeQueryProfitModel
.
setAccountcode
(
indexAccountModel
.
getAccount
());
freeQueryProfitModel
.
setAccountname
(
indexAccountModel
.
getIndexname
());
freeQueryProfitModel
.
setEntity
(
str
);
freeQueryProfitModel
.
setYearm
(
parmDataModel
.
getPeriod
());
freeQueryProfitModelList
.
add
(
freeQueryProfitModel
);
}
}
}
if
(!
CollectionUtils
.
isEmpty
(
freeQueryProfitModelList
))
{
profitSlaveMapper
.
save
(
freeQueryProfitModelList
);
}
}
jsonObject
.
put
(
"description"
,
String
.
join
(
","
,
stringList
)
+
"未查询到数据!"
);
jsonObject
.
put
(
"msg"
,
"数据同步成功!"
);
jsonObject
.
put
(
"code"
,
200
);
stopWatch
.
stop
();
logger
.
info
(
"执行时间:{}"
,
stopWatch
.
getLastTaskTimeMillis
());
return
jsonObject
;
}
}
src/main/java/com/tianyi/sync/task/ScheduleTask.java
View file @
e75b82e7
package
com.tianyi.sync.task
;
import
com.tianyi.sync.service.DataSyncService
;
import
com.tianyi.sync.service.ProfitDataSyncService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.context.annotation.Configuration
;
...
...
@@ -16,8 +17,11 @@ public class ScheduleTask {
private
final
DataSyncService
dataSyncService
;
public
ScheduleTask
(
DataSyncService
dataSyncService
)
{
private
final
ProfitDataSyncService
profitDataSyncService
;
public
ScheduleTask
(
DataSyncService
dataSyncService
,
ProfitDataSyncService
profitDataSyncService
)
{
this
.
dataSyncService
=
dataSyncService
;
this
.
profitDataSyncService
=
profitDataSyncService
;
}
/**
...
...
@@ -29,5 +33,13 @@ public class ScheduleTask {
dataSyncService
.
sync
();
logger
.
info
(
"定时任务执行成功!!!!!!"
);
}
/**
* 每月5号零点执行一次
*/
@Async
@Scheduled
(
cron
=
"0 0 5 * * ?"
)
public
void
profitTask
()
{
profitDataSyncService
.
profitSync
();
logger
.
info
(
"定时任务执行成功!!!!!!"
);
}
}
src/main/resources/mapper/ProfitDataSyncMapper.xml
0 → 100644
View file @
e75b82e7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.tianyi.sync.mapper.master.ProfitDataSyncMapper"
>
<select
id=
"getProfit"
resultType=
"com.tianyi.sync.model.ProfitModel"
>
SELECT a0.pk_task,
a0.numvalue14 AS ZB4,
a0.numvalue19 AS ZB9,
a1.txtvalue16 AS ZB198
FROM epmp_br.tb_tdnum2 a0
INNER JOIN epmp_br.tb_tdtxt2 a1 ON a0.pk_task = a1.pk_task
WHERE a0.pk_task = (select pk_obj
FROM epmp_br.bp_task_2024
WHERE (
pk_sheet = '1763068682081665027'
AND YEAR = #{year}
AND MONTH = #{month}
AND entity = #{entity}
AND mvtype = 'isEmpty'
AND version = 'isEmpty'
AND busisystem = 'BR'
AND pk_paradims = ''
AND ytenant_id = 'dmrn1j0i'))
AND a0.ytenant_id = 'dmrn1j0i'
AND a0.systemcode = 'BR'
</select>
</mapper>
\ No newline at end of file
src/main/resources/mapper/ProfitSlaveMapper.xml
0 → 100644
View file @
e75b82e7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.tianyi.sync.mapper.slave.ProfitSlaveMapper"
>
<delete
id=
"delete"
>
delete
from elimtable.free_query_profit
where yearm = #{period}
</delete>
<select
id=
"getCodeList"
resultType=
"java.lang.String"
>
select code
from elimtable.free_entity
</select>
<select
id=
"getAccount"
resultType=
"com.tianyi.sync.model.IndexAccountModel"
>
select indexname, account
from elimtable.index_account
where indexcode = #{indexName}
</select>
<insert
id=
"save"
>
INSERT INTO free_query_profit
(yearm,accountcode,accountname,entity,money,indexname)
values
<foreach
collection=
"freeQueryProfitModelList"
item=
"item"
index=
"index"
separator=
","
>
(#{item.yearm},#{item.accountcode},#{item.accountname},#{item.entity},#{item.money},#{item.indexname})
</foreach>
</insert>
</mapper>
\ No newline at end of file
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