Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
emport-api
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
刘泽志
emport-api
Commits
9893840e
Commit
9893840e
authored
Sep 15, 2023
by
liuzz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
中医院部分功能修改
parent
0cc5d391
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
256 additions
and
22 deletions
+256
-22
DataFieldController.java
...yf/his/web/controller/dataImport/DataFieldController.java
+76
-0
DataImportController.java
...f/his/web/controller/dataImport/DataImportController.java
+9
-0
ExcelDataController.java
...yf/his/web/controller/dataImport/ExcelDataController.java
+7
-2
DataImportUtils.java
...ain/java/com/tbyf/his/web/dataImport/DataImportUtils.java
+41
-0
FieldDbDiffVO.java
.../com/tbyf/his/web/dataImport/domain/vo/FieldDbDiffVO.java
+57
-0
MetaFieldMapper.java
...a/com/tbyf/his/web/dataImport/mapper/MetaFieldMapper.java
+7
-0
ExcelDataService.java
...com/tbyf/his/web/dataImport/service/ExcelDataService.java
+2
-1
ExcelDataServiceImpl.java
...his/web/dataImport/service/impl/ExcelDataServiceImpl.java
+30
-10
application-druid.yml
admin-api/src/main/resources/application-druid.yml
+6
-6
application.yml
admin-api/src/main/resources/application.yml
+3
-3
MetaFiieldMapper.xml
admin-api/src/main/resources/mapper/MetaFiieldMapper.xml
+18
-0
No files found.
admin-api/src/main/java/com/tbyf/his/web/controller/dataImport/DataFieldController.java
View file @
9893840e
...
...
@@ -18,7 +18,9 @@ import com.tbyf.his.web.dataImport.domain.param.QueryFieldParam;
import
com.tbyf.his.web.dataImport.domain.param.QueryMetaFieldParam
;
import
com.tbyf.his.web.dataImport.domain.param.UpdateFieldParam
;
import
com.tbyf.his.web.dataImport.domain.vo.CreateFieldVO
;
import
com.tbyf.his.web.dataImport.domain.vo.FieldDbDiffVO
;
import
com.tbyf.his.web.dataImport.entity.*
;
import
com.tbyf.his.web.dataImport.mapper.MetaFieldMapper
;
import
com.tbyf.his.web.dataImport.service.*
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -70,6 +72,9 @@ public class DataFieldController {
@Autowired
private
JdbcTemplate
jdbcTemplate
;
@Autowired
private
MetaFieldMapper
metaFieldMapper
;
@IgnoreWebSecurity
@GetMapping
(
""
)
@ApiOperation
(
"字段查询"
)
...
...
@@ -371,4 +376,75 @@ public class DataFieldController {
return
AjaxResult
.
success
();
}
@IgnoreWebSecurity
@PostMapping
(
"/fieldDbDiff"
)
@ApiOperation
(
"字段与数据库差异化查询"
)
public
AjaxResult
fieldDbDiff
(
@RequestBody
MetaField
metaField
)
{
// 查询绑定了此字段的所有模板
LambdaQueryWrapper
<
DataField
>
wrapper
=
Wrappers
.
lambdaQuery
(
DataField
.
class
).
eq
(
DataField:
:
getField
,
metaField
.
getId
());
List
<
DataField
>
fieldList
=
dataFieldService
.
list
(
wrapper
);
if
(
CollectionUtils
.
isEmpty
(
fieldList
)){
return
AjaxResult
.
success
(
Collections
.
emptyList
());
}
LambdaQueryWrapper
<
DataTemplate
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
DataTemplate
.
class
).
in
(
DataTemplate:
:
getId
,
fieldList
.
stream
().
map
(
DataField:
:
getTemplateId
).
toArray
());
List
<
DataTemplate
>
templateList
=
dataTemplateService
.
list
(
queryWrapper
);
if
(
CollectionUtils
.
isEmpty
(
fieldList
)){
return
AjaxResult
.
success
(
Collections
.
emptyList
());
}
List
<
FieldDbDiffVO
>
list
=
new
ArrayList
<>();
templateList
.
forEach
(
item
->{
Optional
<
FieldDbDiffVO
>
first
=
list
.
stream
().
filter
(
l
->
StringUtils
.
equalsIgnoreCase
(
item
.
getDataSourceId
(),
item
.
getTableName
())).
findFirst
();
if
(!
first
.
isPresent
()){
FieldDbDiffVO
vo
=
new
FieldDbDiffVO
();
vo
.
setDatasourceId
(
item
.
getDataSourceId
());
vo
.
setTableName
(
item
.
getTableName
().
toUpperCase
());
vo
.
setColumnName
(
metaField
.
getFieldName
().
toUpperCase
());
vo
.
setMetaType
(
metaField
.
getFieldType
());
list
.
add
(
vo
);
FieldDbDiffVO
vo2
=
new
FieldDbDiffVO
();
vo2
.
setDatasourceId
(
item
.
getDataSourceId
());
vo2
.
setTableName
(
item
.
getTableName
().
toUpperCase
()+
"_TEMP"
);
vo2
.
setColumnName
(
metaField
.
getFieldName
().
toUpperCase
());
vo2
.
setMetaType
(
metaField
.
getFieldType
());
list
.
add
(
vo2
);
}
});
if
(
CollectionUtils
.
isEmpty
(
list
)){
return
AjaxResult
.
success
(
Collections
.
emptyList
());
}
return
AjaxResult
.
success
(
list
.
stream
().
peek
(
item
->{
try
{
DataSourceService
.
switchDb
(
item
.
getDatasourceId
());
List
<
FieldDbDiffVO
>
vos
=
metaFieldMapper
.
selectFieldDbDiffVO
(
item
.
getTableName
().
toUpperCase
(),
item
.
getColumnName
().
toUpperCase
());
if
(!
CollectionUtils
.
isEmpty
(
vos
)){
FieldDbDiffVO
diffVO
=
vos
.
get
(
0
);
item
.
setColumnType
(
diffVO
.
getColumnType
());
item
.
setColumnLength
(
diffVO
.
getColumnLength
());
item
.
setColumnPrecision
(
diffVO
.
getColumnPrecision
());
item
.
setColumnScale
(
diffVO
.
getColumnScale
());
item
.
setMergeSql
(
StrFormatter
.
format
(
"ALTER TABLE {} MODIFY ( {} {} )"
,
item
.
getTableName
().
toUpperCase
(),
item
.
getColumnName
().
toUpperCase
(),
item
.
getMetaType
().
toUpperCase
()));
}
}
catch
(
Exception
ignored
){}
finally
{
DataSourceService
.
switchDefault
();
}
}).
filter
(
item
->
StringUtils
.
isNotBlank
(
item
.
getColumnType
()))
.
collect
(
Collectors
.
toList
()));
}
@IgnoreWebSecurity
@PostMapping
(
"/executeSql"
)
@ApiOperation
(
"sql执行"
)
public
AjaxResult
executeSql
(
@RequestBody
FieldDbDiffVO
vo
)
{
try
{
DataSourceService
.
switchDb
(
vo
.
getDatasourceId
());
jdbcTemplate
.
execute
(
vo
.
getMergeSql
());
}
finally
{
DataSourceService
.
switchDefault
();
}
return
AjaxResult
.
success
(
"同步成功"
);
}
}
admin-api/src/main/java/com/tbyf/his/web/controller/dataImport/DataImportController.java
View file @
9893840e
...
...
@@ -304,6 +304,15 @@ public class DataImportController {
}
public
static
void
main
(
String
[]
args
)
{
String
field
=
"UNIFORM_CREDIT_NUMBER,ORG_CODE,ORG_NAME,DJZCLXDM,YLWSJGLBDM,JGFLGLDM,AREA_NUMBER_CODE,FORMSOF_INSTITU_OWNERSHIP,DWSSQX,DWSZXZJDMC,XZJDDM,SZZBDWDM,YLWSJGLSGXDM,DWSZDSFMZZZDF,SFFZJG,BASE_INFO,JGSZDZ,JGDLWZ,JD,WD,POST_CODE_UNIT,ORG_TEL,ORG_LEGALPERSON_NAME,SFDEMCWSQWSFWZXHXZWSY,SFWDXFSYY,SFYYJHJG,HOSPITAL_GRADE,HOSPITAL_LEVEL,SFKZHLWZLFW,SFHDHLWYYZYXK,NUMSUPPORT_MEDIINSTITU,NUMSUPPORTCLINICS,NUMSUPPORTPRIMARYINSTITU,NUM_CLIN_DEPT_HOSP,NUM_CLIN_DEPT_WITH_WARDS,NUM_CLIN_DEPT_WITH_TREATROOM,IS_FEVER_CLINIC,OP_TREAT_AREA_SIGNS,NUMOF_HOSP_SICK_AREA,NUMOF_SICK_AREA_WITHTREATROOM,KZYZHLFWDBQS,CHPROOM_SIGN,YYZYDYLJGZYZJPZS,TJZQTYLJGZYZJPZS,TJZBJGSYDYLJGZYZJPZS,PBDGJJBYWMLZZCYPZS,KZDMLNZYYLJSXMS,KZDMLWZYYLJSXMS,NUM_TCM_NURSING_PROJECTS,CDDTJYSKYKTS,NUM_SCIENRESEATOPIC_ABOVEPROV,CONSTRU_OF_INFOR_SYSTEM,USE_HIS,USE_LIS,USE_PACS,USE_CIS,USE_HRP,USE_OA,USE_HSB,IN_HOSP_MOBILE_HEALTHCARE,OUT_HOSP_MOBILE_HEALTHCARE,TELEMEDICINE_SYS,DZBLYYGNSPFJ,HLHTBZHCSD,YYZHGLFJ,NUM_PEOPLE_ONDUTY,TOTALNUMOFSENIOR_TITLES,TOTALNUMOFSUBSENIOR_TITLES,TOTALNUMOFMIDDLE_TITLES,TOTALNUMOFPRIMARY_TITLES,WSJSRYS,JYGJZCDJSRYS,TOTALNUMOFPRACTISDOC,NUMOF_TCMPRACTISDOC,NUMOFSENIORTCMPRACTISDOC,NUMOFSUBSENIORTCMPRACTISDOC,NUMOFMIDDLETCMPRACTISDOC,ZCWQKYXZYDRS,QDZYQKYSPXHGZDRS,ZYZCYSRS,NUMOF_NON_TCMPRACTISDOC,XYXXZYRYS,NUM_OF_PHARMACISTS,LCYSS,ZYSS,JYZGJZCRSZYSS,JYFGJZCRSZYSS,JYZJZCRSZYS,ZYSSS,TOTALNUM_OF_NURSES,NUMOF_NURSESSENIOR_TITLES,NUMOF_NURSESSUBSENIORTITLES,NUMOF_NURSESMIDTITLES,NUMOF_NURSES_TRAINED,CJJXJYBQDGDXFDZYYZYJSRYS,TOTALNUM_OFHOSPLEADERS,NUM_OFHOSPLEADEWITHTCMPROFESS,NUM_OFHOSPLEADEWITHTCMPRACT,FZYLBZYZLYSDJYZYYZYXLHXWDRS,NUM_OFHOSPLEADEWITHTCMTRAIN,CLINICALDEPT,NUMTCM_PRACTDOCINCLINDEPT,NUMTCM_TRAINDOCINCLINDEPT,NUMOFPEOPLEIN_TDD,NUMTCM_DOC_NUR_INTDD,NUMOFTCMWITH_STANDARDTRAIN,NUMOFBEDPREPARED,TOTAL_NNUM_BEDS,NUMOFBEDINICU,FYBFCWS,NUMOFSPECIALBED,YLCWS,NUMOFDAYSOPENED,NUMOFDAYSOCCUPIED,NUMOFDAYSOCCUPIEDOUTHISP,TOTAL_AREAOFHOUSING,BUSINESS_ROOM_SIZE,CHPROOM_AREA,NUMOFEQUIPOVERFIVETHOUSRMB,NUMTCMEQUIPOVERFIVETHOUSRMB,ALLVALUEOFEQUIPOVERMILION,ALLVALUE_TCMEQUIPOVERMILION,ANNUAL_GROSS_INCOME,INCOMEFROM_FINANCIAL_ASSIS,MEDICAL_INCOME,TCYGXHDYLSR,HCZSR,ZDJKGZYYHCSR,OUTPATIENT_INCOME,INCOMEFROM_OP_TCMSERVICES,TXYLSRMZ,OUTPATIENT_DRUG_INCOME,OUTPATIENT_WM_INCOME,ZDJKHXYPHSWZPSRMZ,OUTPATIENT_CPM_INCOME,YLJGZYZJSRMZ,OUTPATIENT_CHM_INCOME,INPATIENT_INCOME,INCOMEFROM_IP_TCMSERVICES,TXYLSRZY,INPATIENT_DRUG_INCOME,INPATIENT_WM_INCOME,ZDJKHXYPHSWZPSRZY,INPATIENT_CPM_INCOME,YLJGZYZJSRZY,INPATIENT_CHM_INCOME,SETTLEMENT_BALANCE,KYXMLXJFZJF,CDDTJYSHDTJKYKTJF,RESEARCH_TOPICS_FEE,ZYYKYXMLXJFZJF,YYDNZJF,NZNH,YXYXJXJFTR,BYHYXJYJFTR,JXYXJYJFTR,TOTAL_FREQOF_DIAG_AND_TREAT,MJZRCS,NUM_OF_OP,YYZYYPZLRCS,FREQOF_NON_DRUG_DIAG_IN_CM,NUM_ACUPUNC_OPND,NUM_MASSAGE_OPND,NUM_MINIMAL_INVASIVE_OPND,NUM_MANUAL_RESET_OPND,NUM_WITHOTHERSDIG_OPND,NUMSPECIALIST_CLINIC,NUM_TCM_SPECIALIST_CLINIC,NUM_WITHSPECIAL_NEEDSOP,NUM_BOOKING_CLINIC,HLWZLFWRCS,FEVER_CLINIC_FREQUENCY,YYDDLJSJ,NUM_TCM_NONDRUG_TREATOP,NUM_ACUPUNC_OPNT,NUM_MASSAGE_OPNT,NUM_MINIMAL_INVASIVE_OPNT,NUM_MANUAL_RESET_OPNT,NUM_WITHOTHERSDIG_OPNT,CYRS,NUM_OUTHIS_TREATED_BY_CHP,NUM_OUTHIS_USETCM_TECH,NUM_OUTHIS_USETCM_EQUIP,NUM_OUTHIS_USECHP,YZYWZZLDCYRS,NUM_OUTHISWITHSPECIAL_NEEDS,NUM_DISCHARGED_OF_DIFF_DISEA,NUM_EMERGENCY_DISCHARGE,XYWCYRS,TOTALNUMDEATHSIN_HOSPITAL,NUM_SURGICAL_TREAT_INHIS,NUM_TCM_SURGICAL_TREAT_INHIS,NUMOFSURGIINLEVELTHREE_FOUR,NUMTCMSURGIINLEVELTHREE_FOUR,ILQLSSZLRS,ZQSSZLRS,RJSHZLRS,ZYCYRJSSZLRS,NUMPATIINICU,NUM_TCM_TREATINICU,NUM_TCM_NURSING_INWARDS,NUMRESCUED,NUMSUCCESSRESCUED,ZZDSJYYDRCS,ZZDBYDRCS,ZZDXJYYHJCYLWSJGRCS,NUMOF_OUTPATIENT_PRESCRIP,NUMOF_PRESCRIPTIONS_IN_CM,NUMOFPRES_FOR_BULK_CHDT,NUMOFPRES_FORSMALLPAC_CHDT,NUMPRESOFCHFG,NUMOF_PCM_PRESCRIPTION,YLJGZYZJCFS,JZYWCFS,TOTAL_NUMOFCHDT,NUMOFDEPT_IMPLE_CP,NUMOFDEPT_IMPLE_TCMCP,NUMOFDISEA_IMPLE_CP,NUMOFDISEA_IMPLE_TCMCP,TOTALNUMOP_ROUTECASES,TOTALNUMOP_TCMROUTECASES,NUMOP_EXE_PATH_CASES,NUMOP_EXE_TCMPATH_CASES,NUMOP_FINI_PATH_CASES,NUMOP_FINI_TCMPATH_CASES,TOTALNUMIP_ROUTECASES,TOTALNUMIP_TCMROUTECASES,NUMIP_EXE_PATH_CASES,NUMIP_EXE_TCMPATH_CASES,NUMIP_FINI_PATH_CASES,NUMIP_FINI_TCMPATH_CASES,YYGRZRS,ILQKSSBWGRRS,ZQSSHZBFZLS,DXYYSBJCRCS,DXYYSBJCYXS,CFZS,DPCFS,ZYCFS,DPZYCFS,CYHZZYYZDPS,ZYZYYZDPS,ZYHZKJYWXHL,MZSYYWDZLRCS,MZSYJBYWDZLRCS,ZYQJSYYWDCYRS,ZYQJSYJBYWRS,YYCGYWPZZS,YYCGJBYWPZS,GJZZYPJZCGZBYPTPZYPYL,GJZZYPJZCGZBYPYL,YYZSJXZRS,YYJSDKZYYYJXRS,YYJSYLTNYYRYJXRS,YYJSQTYYRYJXRS,LCDJJSHZDYSRS,LCDJJSHZDLSJSSJYSPXQQDPXHGZSRS,YYJYPXXYS,YXJYZZGLRYS,GJSCJYZDLSRS,SJJYSSCJYZDLSRS,DSJJYXSCJYZDLSRS,YJSCJYZDLSRS,CJSJJYSSCJYRS,FBDJXLWS,ZDXKZDZKTRJFZJE,ZYYKYCGZHZJE,SFSZNK,SFSZFBK,NUMOFBEDS_LDD,NUMOP_EMERG_LDD,NUMDISCHARGED_LDD,SFSZPWBK,NUMOFBEDS_SASDEPT,NUMOP_EMERG_SASDEPT,NUMDISCHARGED_SASDEPT,SFSZNBK,NUMOFBEDS_BDDIVI,NUMOP_EMERG_BDDIVI,NUMDISCHARGED_BDDIVI,SFSZXXGK,NUMOFBEDS_CARDIOVDEPT,NUMOP_EMERG_CARDIOVDEPT,NUMDISCHARGED_CARDIOVDEPT,SFSZXYK,NUMOFBEDS_HEMATODEPT,NUMOP_EMERG_HEMATODEPT,NUMDISCHARGED_HEMATODEPT,SFSZSBK,NUMOFBEDS_NEPHRODEPT,NUMOP_EMERG_NEPHRODEPT,NUMDISCHARGED_NEPHRODEPT,SFSZNFMK,NUMOFBEDS_ENDOCRDIVI,NUMOP_EMERG_ENDOCRDIVI,NUMDISCHARGED_ENDOCRDIVI,SFSZFSBK,NUMOFBEDS_RHEUMADEPT,NUMOP_EMERG_RHEUMADEPT,NUMDISCHARGED_RHEUMADEPT,SFSZGBK,NUMOFBEDS_HEPATODEPT,NUMOP_EMERG_HEPATODEPT,NUMDISCHARGED_HEPATODEPT,SFSZGRXJBK,NUMOFBEDS_INFECTDIVI,NUMOP_EMERG_INFECTDIVI,NUMDISCHARGED_INFECTDIVI,SFSZSZBK,NUMOFBEDS_PSYCHIDEPT,NUMOP_EMERG_PSYCHIDEPT,NUMDISCHARGED_PSYCHIDEPT,SFSZWK,SFSZFCK,SFSZCK,SFSZEK,SFSZXSEK,SFSZPFK,SFSZYK,SFSZEBYHK,SFSZKQK,SFSZZLK,SFSZGSK,SFSZGCK,SFSZLNBK,SFSZZJK,SFSZTNK,SFSZKFYXK,SFSZJZK,TREATDISEA_WITHOUTDISEA_SIGNS,NUMOFBEDS_TREATDEPTOFDISEA,NUMOP_EMERG_TREATDEPTOFDISEA,NUMDISCHARGED_TREATDEPTOFDISEA,SFSZZZYXK,NUMOFBEDS_ICU,NUMOP_EMERG_ICU,NUMDISCHARGED_ICU,SFSZYFBJK,SFSZQTZYK,SFSZWWEYXK,SFSZZYXK,SFSZMYXK,SFSZYYXK,SFSZDYXK,SFSZQTMZY,SFSZZXYJHK,SFSZQTKS,NUMOFBEDS_OTHERDEPT,NUMOP_EMERG_OTHERDEPT,NUMDISCHARGED_OTHERDEPT,DWFZR,TJFZR,NAME_OF_APPLICANT,LXDH,DORDER,YEAROOFDATARECORD,ROWCODE"
;
String
value
=
"'91420984MA48RW8W9D','91420984-D','汉川同和中医医院','私营企业','中医(综合)医院','营利性医疗机构','420984','民营','汉川市','仙女山街道办事处霍城大道8号','000','卫生健康行政部门','县(旗)属','否','否','','汉川市霍城大道8号','','113.824623','30.663813','432300','18672299136','刘方钰','否','否','否','未定级','未定等','否','否','0','0','0','2','0','2','否','否','2','1','2','是','0','0','0','0','0','0','0','0','0','','有','无','无','无','无','无','无','无','无','无','未测评','未测评','未测评','71','0','2','19','14','40','0','14','14','0','1','9','0','0','1','0','0','7','0','1','0','0','0','5','16','0','1','10','14','0','5','2','1','0','0','8','4','0','6','4','0','60','60','0','0','0','0','21900','21000','10624','3300','2800','56','70','33','173','25','10505','0','9825','159','159','0','5825','3403','0','2726','49','0','67','0','2610','4000','3006','0','724','390','0','4','0','330','0','0','0','0','0','0','0','0','0','0','20000','18000','18000','8000','16064','3800','1672','10530','82','0','10886','10886','0','0','0','0','0','230546','110834','3800','10530','105300','82','996','577','268','624','0','996','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','1100','600','1000','996','900','0','0','996','996','996','0','3','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','设置','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','未设置','-','-','-','设置','未设置','未设置','未设置','未设置','未设置','未设置','未设置','未设置','未设置','设置','未设置','未设置','未设置','设置','设置','未设置','设置','60','10','10','未设置','-','-','-','未设置','未设置','未设置','未设置','未设置','未设置','未设置','未设置','未设置','未设置','-','-','-','刘方钰','陈骁','陈骁','13469976551','1692071286103384','2023年','1692071286103385'"
;
String
[]
fields
=
field
.
split
(
","
);
String
[]
values
=
value
.
split
(
","
);
for
(
int
i
=
0
;
i
<
fields
.
length
;
i
++)
{
System
.
out
.
println
(
StringUtils
.
format
(
"UPDATE T0801_TCMHOSP_TEMP SET {} = {} WHERE ROWCODE = '123';"
,
fields
[
i
].
replaceAll
(
"\n"
,
""
),
values
[
i
]));
}
}
...
...
admin-api/src/main/java/com/tbyf/his/web/controller/dataImport/ExcelDataController.java
View file @
9893840e
package
com
.
tbyf
.
his
.
web
.
controller
.
dataImport
;
import
com.baomidou.mybatisplus.core.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.tbyf.his.common.annotation.IgnoreWebSecurity
;
import
com.tbyf.his.common.core.domain.AjaxResult
;
...
...
@@ -111,8 +112,12 @@ public class ExcelDataController {
excelData
.
setFile
(
param
.
getFile
().
getBytes
());
excelData
.
setFileName
(
param
.
getFile
().
getOriginalFilename
());
// 保存后导入文件数据
excelDataService
.
importData
(
excelData
);
excelDataService
.
saveOrUpdate
(
excelData
);
List
<
String
>
strings
=
excelDataService
.
importData
(
excelData
);
if
(
CollectionUtils
.
isEmpty
(
strings
)){
excelDataService
.
saveOrUpdate
(
excelData
);
}
else
{
return
AjaxResult
.
success
(
strings
);
}
}
else
if
(
StringUtils
.
equals
(
param
.
getType
(),
"2"
))
{
ExcelData
excelData
=
excelDataService
.
getOne
(
Wrappers
.
lambdaQuery
(
ExcelData
.
class
)
.
eq
(
ExcelData:
:
getTemplateId
,
param
.
getTemplateId
())
...
...
admin-api/src/main/java/com/tbyf/his/web/dataImport/DataImportUtils.java
View file @
9893840e
...
...
@@ -4,6 +4,7 @@ import com.tbyf.his.common.core.text.StrFormatter;
import
com.tbyf.his.common.utils.DateUtils
;
import
com.tbyf.his.common.utils.StringUtils
;
import
com.tbyf.his.web.dataImport.domain.vo.VerifyVO
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
java.util.Date
;
import
java.util.concurrent.atomic.AtomicLong
;
...
...
@@ -107,6 +108,8 @@ public class DataImportUtils {
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"VARCHAR"
))
{
return
"'"
+
vo
.
getValues
().
get
(
index
)
+
"'"
;
}
else
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"NUMBER"
))
{
// 判断是否是number类型
//verifyNumber(vo,index);
return
"'"
+
vo
.
getValues
().
get
(
index
)
+
"'"
;
}
else
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"DATE"
))
{
try
{
...
...
@@ -123,6 +126,44 @@ public class DataImportUtils {
return
"'"
+
vo
.
getValues
().
get
(
index
)
+
"'"
;
}
/**
* 校验数字
* @param vo
* @param index
*/
public
static
void
verifyNumber
(
VerifyVO
vo
,
int
index
){
String
s
=
vo
.
getValues
().
get
(
index
);
if
(
StringUtils
.
isBlank
(
s
)){
throw
new
RuntimeException
(
StringUtils
.
format
(
"指标:{}|{}字段:{}的数据为:{},不符合数字要求"
,
vo
.
getCode
(),
vo
.
getTitle
(),
vo
.
getFieldName
(),
s
));
}
if
(!
NumberUtils
.
isCreatable
(
s
)){
throw
new
RuntimeException
(
StringUtils
.
format
(
"指标:{}|{}字段:{}的数据为:{},不符合数字要求"
,
vo
.
getCode
(),
vo
.
getTitle
(),
vo
.
getFieldName
(),
s
));
}
if
(
StringUtils
.
contains
(
s
,
"."
)){
int
i
=
s
.
indexOf
(
"."
);
i
=
s
.
length
()
-
i
-
1
;
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"("
)){
int
start
=
vo
.
getFieldType
().
indexOf
(
"("
);
int
end
=
vo
.
getFieldType
().
indexOf
(
")"
);
String
col
=
vo
.
getFieldType
().
substring
(
start
+
1
,
end
);
String
[]
split
=
col
.
split
(
","
);
if
(
split
.
length
==
2
){
String
length
=
split
[
1
];
if
(
i
>
Integer
.
parseInt
(
length
)){
throw
new
RuntimeException
(
StringUtils
.
format
(
"指标:{}|{}字段:{}的数据为:{},不符合数字精度要求"
,
vo
.
getCode
(),
vo
.
getTitle
(),
vo
.
getFieldName
(),
s
));
}
}
}
}
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
NumberUtils
.
isCreatable
(
"1.2x"
));
}
public
static
String
str
(
Object
o
)
{
return
o
==
null
?
StringUtils
.
EMPTY
:
o
.
toString
();
}
...
...
admin-api/src/main/java/com/tbyf/his/web/dataImport/domain/vo/FieldDbDiffVO.java
0 → 100644
View file @
9893840e
package
com
.
tbyf
.
his
.
web
.
dataImport
.
domain
.
vo
;
import
lombok.Data
;
/**
* 字段与数据库类型对比接口
*/
@Data
public
class
FieldDbDiffVO
{
/**
* 数据源名称
*/
private
String
datasourceId
;
/**
* 表名
*/
private
String
tableName
;
/**
* 数据库字段名
*/
private
String
columnName
;
/**
* 字段类型
*/
private
String
columnType
;
/**
* 字段长度
*/
private
String
columnLength
;
/**
* 数据精度
*/
private
String
columnPrecision
;
/**
* 数据精度系数
*/
private
String
columnScale
;
/**
* 元字段类型
*/
private
String
metaType
;
/**
* 修改sql
*/
private
String
mergeSql
;
}
admin-api/src/main/java/com/tbyf/his/web/dataImport/mapper/MetaFieldMapper.java
View file @
9893840e
package
com
.
tbyf
.
his
.
web
.
dataImport
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.tbyf.his.web.dataImport.domain.vo.FieldDbDiffVO
;
import
com.tbyf.his.web.dataImport.entity.MetaField
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @author lzz
...
...
@@ -9,4 +13,7 @@ import com.tbyf.his.web.dataImport.entity.MetaField;
*/
public
interface
MetaFieldMapper
extends
BaseMapper
<
MetaField
>
{
List
<
FieldDbDiffVO
>
selectFieldDbDiffVO
(
@Param
(
"tableName"
)
String
tableName
,
@Param
(
"columnName"
)
String
columnName
);
}
admin-api/src/main/java/com/tbyf/his/web/dataImport/service/ExcelDataService.java
View file @
9893840e
...
...
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import
com.tbyf.his.web.dataImport.entity.ExcelData
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
/**
* @author lzz
...
...
@@ -24,5 +25,5 @@ public interface ExcelDataService extends IService<ExcelData> {
* 导入文件数据
* @param excelData
*/
void
importData
(
ExcelData
excelData
);
List
<
String
>
importData
(
ExcelData
excelData
);
}
admin-api/src/main/java/com/tbyf/his/web/dataImport/service/impl/ExcelDataServiceImpl.java
View file @
9893840e
...
...
@@ -27,7 +27,9 @@ import org.apache.commons.compress.archivers.ArchiveEntry;
import
org.apache.commons.compress.archivers.zip.Zip64Mode
;
import
org.apache.commons.compress.archivers.zip.ZipArchiveEntry
;
import
org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.ss.util.CellReference
;
import
org.apache.poi.util.IOUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -458,7 +460,8 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
}
@Override
public
void
importData
(
ExcelData
excelData
)
{
public
List
<
String
>
importData
(
ExcelData
excelData
)
{
List
<
String
>
errorList
=
new
ArrayList
<>();
long
startTime
=
System
.
currentTimeMillis
();
final
DataTemplate
template
=
dataTemplateService
.
getById
(
excelData
.
getTemplateId
());
// 获取元字段与所有校验对象
...
...
@@ -487,13 +490,17 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
int
l
=
0
;
// 字段长度
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"NUMBER"
))
{
final
String
[]
numbers
=
vo
.
getFieldType
().
replaceAll
(
"NUMBER"
,
""
)
.
replaceAll
(
"number"
,
""
)
.
replaceAll
(
"\\("
,
""
)
.
replaceAll
(
"\\)"
,
""
)
.
split
(
","
);
b
=
Integer
.
parseInt
(
numbers
[
1
]);
a
=
Integer
.
parseInt
(
numbers
[
0
])
-
b
;
}
else
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"VARCHAR
2
"
))
{
}
else
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"VARCHAR"
))
{
l
=
Integer
.
parseInt
(
vo
.
getFieldType
().
replaceAll
(
"VARCHAR2"
,
""
)
.
replaceAll
(
"varchar2"
,
""
)
.
replaceAll
(
"VARCHAR"
,
""
)
.
replaceAll
(
"varchar"
,
""
)
.
replaceAll
(
"\\("
,
""
)
.
replaceAll
(
"\\)"
,
""
));
}
...
...
@@ -512,18 +519,27 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
}
int
k
=
cellValue
.
length
()
-
i
-
1
;
if
(
i
>
a
||
k
>
b
)
{
throw
new
BaseException
(
StrFormatter
.
format
(
"字段数据:[{}],字段类型:[{}],字段名称:[{}],数据精度异常,请修改数据元与数据库相对应字段信息"
,
cellValue
,
vo
.
getFieldType
(),
vo
.
getFieldName
(),
cellValue
));
errorList
.
add
(
StrFormatter
.
format
(
"字段数据:[{}],字段类型:[{}],字段名称:[{}],数据位置:[{}],数据精度异常"
,
cellValue
,
vo
.
getFieldType
(),
vo
.
getFieldName
(),
new
CellReference
(
cell
.
getRowIndex
(),
cell
.
getColumnIndex
()).
formatAsString
()));
}
}
else
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"VARCHAR2"
))
{
if
(
StringUtils
.
equals
(
""
,
cellValue
)
||
StringUtils
.
equals
(
"-"
,
cellValue
)){
vo
.
addValue
(
"0"
);
}
else
if
(
NumberUtils
.
isCreatable
(
cellValue
)){
vo
.
addValue
(
cellValue
);
}
else
{
errorList
.
add
(
StrFormatter
.
format
(
"字段数据:[{}],字段类型:[{}],字段名称:[{}],数据位置:[{}],非数字"
,
cellValue
,
vo
.
getFieldType
(),
vo
.
getFieldName
(),
new
CellReference
(
cell
.
getRowIndex
(),
cell
.
getColumnIndex
()).
formatAsString
()));
vo
.
addValue
(
cellValue
);
}
}
else
if
(
StringUtils
.
containsIgnoreCase
(
vo
.
getFieldType
(),
"VARCHAR"
))
{
if
(
l
<
cellValue
.
length
())
{
throw
new
BaseException
(
StrFormatter
.
format
(
"字段数据:[{}],字段类型:[{}],字段名称:[{}],数据长度不足,请修改数据元与数据库相对应字段信息"
,
cellValue
,
vo
.
getFieldType
(),
vo
.
getFieldName
(),
cellValue
));
errorList
.
add
(
StrFormatter
.
format
(
"字段数据:[{}],字段类型:[{}],字段名称:[{}],数据位置:[{}],数据长度不足"
,
cellValue
,
vo
.
getFieldType
(),
vo
.
getFieldName
(),
new
CellReference
(
cell
.
getRowIndex
(),
cell
.
getColumnIndex
()).
formatAsString
()));
}
vo
.
addValue
(
cellValue
);
}
else
{
vo
.
addValue
(
cellValue
);
}
vo
.
addValue
(
cellValue
);
}
}
log
.
info
(
"解析数据用时:[{}]"
,
System
.
currentTimeMillis
()
-
startTime
);
...
...
@@ -544,6 +560,9 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
sqlArr
[
i
]
=
StrFormatter
.
format
(
insertSql
,
template
.
getTableName
()
+
"_TEMP"
,
sb
);
}
try
{
if
(!
CollectionUtils
.
isEmpty
(
errorList
)){
return
errorList
;
}
DataSourceService
.
switchDb
(
template
.
getDataSourceId
());
// 需要先清空临时表的数据,按照年份
jdbcTemplate
.
execute
(
StrFormatter
.
format
(
"DELETE FROM {} WHERE YEAROOFDATARECORD = '{}'"
...
...
@@ -561,6 +580,7 @@ public class ExcelDataServiceImpl extends ServiceImpl<ExcelDataMapper, ExcelData
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
return
null
;
}
/**
...
...
admin-api/src/main/resources/application-druid.yml
View file @
9893840e
...
...
@@ -4,19 +4,19 @@ spring:
druid
:
# 主库数据源
master
:
url
:
jdbc:mysql://
81.68.90.14:13307
/his_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username
:
his_base
password
:
HEX3wh8n6d8SeZZT
url
:
jdbc:mysql://
centos:3306
/his_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username
:
root
password
:
123456
driverClassName
:
com.mysql.cj.jdbc.Driver
# 从库数据源
slave
:
# 从数据源开关/默认关闭
enabled
:
true
# url: jdbc:oracle:thin:@192.168.0.39:1521:orcl
url
:
jdbc:oracle:thin:@
192.168.0.71:11522
:helowin
url
:
jdbc:oracle:thin:@
centos:1521
:helowin
# username: xhyy
username
:
datacenter
password
:
data
username
:
liuzz
password
:
123456
driverClassName
:
oracle.jdbc.OracleDriver
# 初始连接数
initialSize
:
5
...
...
admin-api/src/main/resources/application.yml
View file @
9893840e
...
...
@@ -64,15 +64,15 @@ spring:
redis
:
# 地址
# host: 81.68.90.14
host
:
127.0.0.1
host
:
centos
# 端口,默认为6379
port
:
16378
port
:
6379
# port: 6379
# port: 6379
# 数据库索引
database
:
0
# 密码
password
:
afJmdkaW07xR
password
:
123456
# 连接超时时间
timeout
:
3000
lettuce
:
...
...
admin-api/src/main/resources/mapper/MetaFiieldMapper.xml
0 → 100644
View file @
9893840e
<?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.tbyf.his.web.dataImport.mapper.MetaFieldMapper"
>
<select
id=
"selectFieldDbDiffVO"
resultType=
"com.tbyf.his.web.dataImport.domain.vo.FieldDbDiffVO"
>
SELECT TABLE_NAME as tableName,
COLUMN_NAME as columnName,
DATA_TYPE as columnType,
DATA_LENGTH as columnLength,
DATA_PRECISION as columnPrecision,
DATA_SCALE as columnScale
FROM ALL_TAB_COLS
WHERE TABLE_NAME = #{tableName}
AND COLUMN_NAME = #{columnName}
</select>
</mapper>
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