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
3bb3bbd2
Commit
3bb3bbd2
authored
Jul 02, 2025
by
tianyiming
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register
parents
60fb5cfe
83843d32
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
837 additions
and
70 deletions
+837
-70
TzsDataRefreshMessageDto.java
.../boot/module/common/api/dto/TzsDataRefreshMessageDto.java
+36
-0
TzsDataRefreshMessage.java
.../boot/module/common/api/entity/TzsDataRefreshMessage.java
+54
-0
TzsDataRefreshMessageMapper.java
...module/common/api/mapper/TzsDataRefreshMessageMapper.java
+14
-0
IDataRefreshDispatch.java
.../boot/module/common/api/service/IDataRefreshDispatch.java
+8
-0
IDataRefreshHandler.java
...s/boot/module/common/api/service/IDataRefreshHandler.java
+10
-0
ITzsDataRefreshMessageService.java
...ule/common/api/service/ITzsDataRefreshMessageService.java
+12
-0
TzsDataRefreshMessageMapper.xml
...src/main/resources/mapper/TzsDataRefreshMessageMapper.xml
+5
-0
Constants.java
...ejoin/amos/boot/module/common/biz/constats/Constants.java
+12
-0
DataRefreshEvent.java
...amos/boot/module/common/biz/refresh/DataRefreshEvent.java
+42
-0
RefreshDispatch.java
...t/module/common/biz/refresh/dispatch/RefreshDispatch.java
+33
-0
RefreshHandlerFactory.java
...ule/common/biz/refresh/factory/RefreshHandlerFactory.java
+31
-0
DataRefreshListener.java
...dule/common/biz/refresh/listener/DataRefreshListener.java
+84
-0
TzsDataRefreshMessageServiceImpl.java
...on/biz/service/impl/TzsDataRefreshMessageServiceImpl.java
+34
-0
RefreshDataUtils.java
...n/amos/boot/module/common/biz/utils/RefreshDataUtils.java
+35
-0
StatisticsDataUpdateService.java
...ot/module/jg/biz/refresh/StatisticsDataUpdateService.java
+1
-2
EquipRefreshHandler.java
...ot/module/jg/biz/refresh/handler/EquipRefreshHandler.java
+90
-0
DataHandlerServiceImpl.java
...ot/module/jg/biz/service/impl/DataHandlerServiceImpl.java
+1
-1
ExecuteThreadPoolConfig.java
...s/boot/module/tcm/biz/config/ExecuteThreadPoolConfig.java
+34
-0
CommonRefreshService.java
...mos/boot/module/tcm/biz/refresh/CommonRefreshService.java
+31
-0
EnterpriseRefreshHandler.java
...ule/tcm/biz/refresh/handler/EnterpriseRefreshHandler.java
+75
-0
UserRefreshHandler.java
...ot/module/tcm/biz/refresh/handler/UserRefreshHandler.java
+72
-0
TzBaseEnterpriseInfoServiceImpl.java
...tcm/biz/service/impl/TzBaseEnterpriseInfoServiceImpl.java
+120
-66
RegUnitInfoServiceImpl.java
...dule/tcm/flc/biz/service/impl/RegUnitInfoServiceImpl.java
+3
-1
No files found.
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/dto/TzsDataRefreshMessageDto.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
api
.
dto
;
import
com.yeejoin.amos.boot.biz.common.dto.BaseDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* @author system_generator
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"TzsDataRefreshMessageDto"
,
description
=
""
)
public
class
TzsDataRefreshMessageDto
extends
BaseDto
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"业务数据ID"
)
private
String
dataId
;
@ApiModelProperty
(
value
=
"数据类型"
)
private
String
dataType
;
@ApiModelProperty
(
value
=
"操作类型(INSERT/UPDATE/DELETE)"
)
private
String
operation
;
@ApiModelProperty
(
value
=
"0-待处理 1-处理中 2-处理成功 3-处理失败"
)
private
Integer
status
;
@ApiModelProperty
(
value
=
"错误描述"
)
private
String
errorMsg
;
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/entity/TzsDataRefreshMessage.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
api
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.yeejoin.amos.boot.biz.common.entity.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
*
*
* @author system_generator
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@TableName
(
"tzs_data_refresh_message"
)
public
class
TzsDataRefreshMessage
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 业务数据ID
*/
@TableField
(
"data_id"
)
private
String
dataId
;
/**
* 数据类型
*/
@TableField
(
"data_type"
)
private
String
dataType
;
/**
* 操作类型(INSERT/UPDATE/DELETE)
*/
@TableField
(
"operation"
)
private
String
operation
;
/**
* 1-处理中 2-处理成功 3-处理失败
*/
@TableField
(
"status"
)
private
Integer
status
;
/**
* 错误消息描述
*/
@TableField
(
"error_msg"
)
private
String
errorMsg
;
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/mapper/TzsDataRefreshMessageMapper.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
api
.
mapper
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* Mapper 接口
*
* @author system_generator
* @date 2025-07-02
*/
public
interface
TzsDataRefreshMessageMapper
extends
BaseMapper
<
TzsDataRefreshMessage
>
{
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/service/IDataRefreshDispatch.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
api
.
service
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
public
interface
IDataRefreshDispatch
{
void
doDispatch
(
TzsDataRefreshMessage
message
);
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/service/IDataRefreshHandler.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
api
.
service
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
public
interface
IDataRefreshHandler
{
String
supportType
();
void
doRefresh
(
TzsDataRefreshMessage
message
);
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-api/src/main/java/com/yeejoin/amos/boot/module/common/api/service/ITzsDataRefreshMessageService.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
api
.
service
;
/**
* 接口类
*
* @author system_generator
* @date 2025-07-02
*/
public
interface
ITzsDataRefreshMessageService
{
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-api/src/main/resources/mapper/TzsDataRefreshMessageMapper.xml
0 → 100644
View file @
3bb3bbd2
<?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.yeejoin.amos.boot.module.common.api.mapper.TzsDataRefreshMessageMapper"
>
</mapper>
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/constats/Constants.java
View file @
3bb3bbd2
...
...
@@ -16,4 +16,16 @@ public class Constants {
currentStatusNameMap
.
put
(
5
,
"已完结"
);
currentStatusNameMap
.
put
(
6
,
"维修中"
);
}
/**
* 0-待处理 1-处理中 2-处理成功 3-处理失败
*/
public
static
final
Integer
REFRESH_STATUS_DEALING
=
1
;
public
static
final
Integer
REFRESH_STATUS_SUCCESS
=
2
;
public
static
final
Integer
REFRESH_STATUS_FAILURE
=
3
;
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/refresh/DataRefreshEvent.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
refresh
;
import
lombok.Getter
;
import
org.springframework.context.ApplicationEvent
;
@Getter
public
class
DataRefreshEvent
extends
ApplicationEvent
{
/**
* 业务数据ID:设备record、企业的id、人员的id
*/
private
final
String
dataId
;
/**
* 数据类型
*/
private
final
String
dataType
;
/**
* 操作类型(INSERT/UPDATE/DELETE)--暂无用途
*/
private
final
Operation
operation
;
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public
DataRefreshEvent
(
Object
source
,
String
dataId
,
String
dataType
,
Operation
operation
)
{
super
(
source
);
this
.
dataId
=
dataId
;
this
.
dataType
=
dataType
;
this
.
operation
=
operation
;
}
public
enum
Operation
{
INSERT
,
UPDATE
,
DELETE
}
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/refresh/dispatch/RefreshDispatch.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
refresh
.
dispatch
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
import
com.yeejoin.amos.boot.module.common.api.service.IDataRefreshDispatch
;
import
com.yeejoin.amos.boot.module.common.biz.constats.Constants
;
import
com.yeejoin.amos.boot.module.common.biz.refresh.factory.RefreshHandlerFactory
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.TzsDataRefreshMessageServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
@Component
@RequiredArgsConstructor
public
class
RefreshDispatch
implements
IDataRefreshDispatch
{
private
final
RefreshHandlerFactory
handlerFactory
;
private
final
TzsDataRefreshMessageServiceImpl
tzsDataRefreshMessageService
;
@Override
@Async
public
void
doDispatch
(
TzsDataRefreshMessage
message
)
{
handlerFactory
.
getRefreshHandler
(
message
.
getDataType
()).
doRefresh
(
message
);
finishMessage
(
message
);
}
private
void
finishMessage
(
TzsDataRefreshMessage
message
)
{
message
.
setStatus
(
Constants
.
REFRESH_STATUS_SUCCESS
);
message
.
setRecDate
(
new
Date
());
tzsDataRefreshMessageService
.
saveOrUpdate
(
message
);
}
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/refresh/factory/RefreshHandlerFactory.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
refresh
.
factory
;
import
com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Component
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
@Component
@RequiredArgsConstructor
public
class
RefreshHandlerFactory
{
private
final
List
<
IDataRefreshHandler
>
handlers
;
private
final
Map
<
String
,
IDataRefreshHandler
>
handlerMap
=
new
ConcurrentHashMap
<>();
public
IDataRefreshHandler
getRefreshHandler
(
String
dataType
)
{
return
handlerMap
.
computeIfAbsent
(
dataType
,
(
k
)
->
{
for
(
IDataRefreshHandler
handler
:
handlers
)
{
if
(
handler
.
supportType
().
equals
(
dataType
))
{
return
handler
;
}
}
throw
new
BadRequest
(
"not found refresh handler for "
+
dataType
);
});
}
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/refresh/listener/DataRefreshListener.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
refresh
.
listener
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
import
com.yeejoin.amos.boot.module.common.api.service.IDataRefreshDispatch
;
import
com.yeejoin.amos.boot.module.common.biz.constats.Constants
;
import
com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.TzsDataRefreshMessageServiceImpl
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.event.TransactionalEventListener
;
import
javax.annotation.PostConstruct
;
import
java.util.Optional
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.stream.IntStream
;
@Component
@Slf4j
@RequiredArgsConstructor
public
class
DataRefreshListener
{
@Value
(
"${data.opEvent.deal.thread.number:1}"
)
private
int
threadNumber
;
private
final
BlockingQueue
<
DataRefreshEvent
>
queue
=
new
LinkedBlockingQueue
<>();
private
ExecutorService
executorService
;
@Autowired
private
Optional
<
IDataRefreshDispatch
>
dataRefreshService
;
private
final
TzsDataRefreshMessageServiceImpl
tzsDataRefreshMessageService
;
@TransactionalEventListener
(
value
=
DataRefreshEvent
.
class
)
@Async
public
void
onEquipCreateOrEdit
(
DataRefreshEvent
event
)
{
log
.
info
(
"收到数据刷新消息:{}"
,
JSONObject
.
toJSONString
(
event
));
queue
.
add
(
event
);
}
@PostConstruct
public
void
init
()
{
executorService
=
Executors
.
newFixedThreadPool
(
threadNumber
);
IntStream
.
range
(
0
,
threadNumber
).
forEach
(
i
->
{
executorService
.
execute
(()
->
{
while
(
true
)
{
try
{
DataRefreshEvent
event
=
queue
.
take
();
processEvent
(
event
);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
});
});
}
private
void
processEvent
(
DataRefreshEvent
event
)
{
TzsDataRefreshMessage
message
=
new
TzsDataRefreshMessage
();
try
{
// 1.记录 message
message
.
setDataId
(
event
.
getDataId
());
message
.
setDataType
(
event
.
getDataType
());
message
.
setOperation
(
event
.
getOperation
().
name
());
message
.
setStatus
(
Constants
.
REFRESH_STATUS_DEALING
);
// 流程中
tzsDataRefreshMessageService
.
save
(
message
);
// 2.调用更新处理
dataRefreshService
.
ifPresent
(
service
->
service
.
doDispatch
(
message
));
}
catch
(
Exception
e
)
{
message
.
setStatus
(
Constants
.
REFRESH_STATUS_FAILURE
);
// 标记为失败
message
.
setErrorMsg
(
e
.
getMessage
());
tzsDataRefreshMessageService
.
saveOrUpdate
(
message
);
}
}
}
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/service/impl/TzsDataRefreshMessageServiceImpl.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
service
.
impl
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
import
com.yeejoin.amos.boot.module.common.api.mapper.TzsDataRefreshMessageMapper
;
import
com.yeejoin.amos.boot.module.common.api.service.ITzsDataRefreshMessageService
;
import
com.yeejoin.amos.boot.module.common.api.dto.TzsDataRefreshMessageDto
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
java.util.List
;
/**
* 服务实现类
*
* @author system_generator
* @date 2025-07-02
*/
@Service
public
class
TzsDataRefreshMessageServiceImpl
extends
BaseService
<
TzsDataRefreshMessageDto
,
TzsDataRefreshMessage
,
TzsDataRefreshMessageMapper
>
implements
ITzsDataRefreshMessageService
{
/**
* 分页查询
*/
public
Page
<
TzsDataRefreshMessageDto
>
queryForTzsDataRefreshMessagePage
(
Page
<
TzsDataRefreshMessageDto
>
page
)
{
return
this
.
queryForPage
(
page
,
null
,
false
);
}
/**
* 列表查询 示例
*/
public
List
<
TzsDataRefreshMessageDto
>
queryForTzsDataRefreshMessageList
()
{
return
this
.
queryForList
(
""
,
false
);
}
}
\ No newline at end of file
amos-boot-system-tzs/amos-boot-module-common/amos-boot-module-common-biz/src/main/java/com/yeejoin/amos/boot/module/common/biz/utils/RefreshDataUtils.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
common
.
biz
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
java.util.List
;
public
class
RefreshDataUtils
{
/**
* 判断字符串是否为合法的 JSON 格式
*/
public
static
boolean
isJSONValid
(
String
test
)
{
try
{
JSON
.
parseArray
(
test
);
return
true
;
}
catch
(
Exception
ex
)
{
return
false
;
}
}
public
static
String
castStrList2String
(
String
jsonTypesStr
)
{
if
(!
isNullOrEmpty
(
jsonTypesStr
))
{
if
(
isJSONValid
(
jsonTypesStr
))
{
List
<
String
>
posts
=
JSON
.
parseArray
(
jsonTypesStr
,
String
.
class
);
return
String
.
join
(
","
,
posts
);
}
return
jsonTypesStr
;
}
return
null
;
}
public
static
boolean
isNullOrEmpty
(
String
str
)
{
return
str
==
null
||
str
.
trim
().
isEmpty
()
||
"null"
.
equals
(
str
);
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/
statistics/service
/StatisticsDataUpdateService.java
→
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/
refresh
/StatisticsDataUpdateService.java
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
statistics
.
service
;
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
refresh
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.alibaba.fastjson.JSON
;
...
...
@@ -7,7 +7,6 @@ import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import
com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil
;
import
com.yeejoin.amos.boot.module.jg.biz.edit.backup.TechParamsBackupService
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
...
...
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/refresh/handler/EquipRefreshHandler.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jg
.
biz
.
refresh
.
handler
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.module.common.api.dao.EsEquipmentDao
;
import
com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto
;
import
com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
import
com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler
;
import
com.yeejoin.amos.boot.module.jg.biz.refresh.StatisticsDataUpdateService
;
import
com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgInspectionDetectionInfoService
;
import
com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgDesignInfoServiceImpl
;
import
com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgFactoryInfoServiceImpl
;
import
com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgMaintenanceRecordInfoServiceImpl
;
import
com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgUseInfoServiceImpl
;
import
com.yeejoin.amos.boot.module.ymt.api.entity.*
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.CategoryOtherInfoMapper
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Component
;
import
java.time.ZoneId
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
alibaba
.
fastjson
.
JSON
.
toJSONString
;
@Component
@RequiredArgsConstructor
@Slf4j
public
class
EquipRefreshHandler
implements
IDataRefreshHandler
{
private
final
IdxBizJgUseInfoServiceImpl
useInfoService
;
private
final
IdxBizJgFactoryInfoServiceImpl
factoryInfoService
;
private
final
IIdxBizJgInspectionDetectionInfoService
iIdxBizJgInspectionDetectionInfoService
;
private
final
CategoryOtherInfoMapper
categoryOtherInfoMapper
;
private
final
EsEquipmentDao
esEquipmentDao
;
private
final
IdxBizJgMaintenanceRecordInfoServiceImpl
maintenanceRecordInfoService
;
private
final
IdxBizJgDesignInfoServiceImpl
idxBizJgDesignInfoServiceImpl
;
private
final
StatisticsDataUpdateService
statisticsDataUpdateService
;
@Override
public
String
supportType
()
{
return
"company"
;
}
@Override
public
void
doRefresh
(
TzsDataRefreshMessage
message
)
{
log
.
info
(
"3库数据,设备开始刷库:唯一标识:{}"
,
message
.
getDataId
());
String
record
=
message
.
getDataId
();
ESEquipmentInfo
esEquipmentInfo
=
new
ESEquipmentInfo
();
Map
<
String
,
Object
>
map
=
categoryOtherInfoMapper
.
selectDataById
(
record
);
ESEquipmentCategoryDto
categoryEs
=
JSON
.
parseObject
(
toJSONString
(
map
),
ESEquipmentCategoryDto
.
class
);
BeanUtil
.
copyProperties
(
categoryEs
,
esEquipmentInfo
);
IdxBizJgUseInfo
useInfo
=
useInfoService
.
getOne
(
new
LambdaQueryWrapper
<
IdxBizJgUseInfo
>().
eq
(
IdxBizJgUseInfo:
:
getRecord
,
record
).
select
(
IdxBizJgUseInfo:
:
getRecord
,
IdxBizJgUseInfo:
:
getCreateDate
));
IdxBizJgDesignInfo
designInfo
=
idxBizJgDesignInfoServiceImpl
.
getOne
(
new
LambdaQueryWrapper
<
IdxBizJgDesignInfo
>()
.
eq
(
IdxBizJgDesignInfo:
:
getRecord
,
record
)
.
select
(
IdxBizJgDesignInfo:
:
getRecord
,
IdxBizJgDesignInfo:
:
getDesignUnitName
,
IdxBizJgDesignInfo:
:
getDesignUnitCreditCode
));
IdxBizJgFactoryInfo
factoryInfo
=
factoryInfoService
.
getOne
(
new
LambdaQueryWrapper
<
IdxBizJgFactoryInfo
>()
.
eq
(
IdxBizJgFactoryInfo:
:
getRecord
,
record
)
.
select
(
IdxBizJgFactoryInfo:
:
getRecord
,
IdxBizJgFactoryInfo:
:
getProduceUnitCreditCode
));
IdxBizJgInspectionDetectionInfo
inspectionDetectionInfo
=
iIdxBizJgInspectionDetectionInfoService
.
queryNewestDetailByRecord
(
record
);
IdxBizJgMaintenanceRecordInfo
lastMaintenanceRecordInfo
=
maintenanceRecordInfoService
.
queryNewestDetailByRecord
(
record
);
try
{
esEquipmentInfo
.
setINSPECT_DATE
(
inspectionDetectionInfo
.
getSequenceNbr
()
!=
null
?
inspectionDetectionInfo
.
getInspectDate
().
toInstant
().
atZone
(
ZoneId
.
systemDefault
()).
toLocalDate
()
:
null
);
esEquipmentInfo
.
setNEXT_INSPECT_DATE
(
inspectionDetectionInfo
.
getSequenceNbr
()
!=
null
?
inspectionDetectionInfo
.
getNextInspectDate
().
toInstant
().
atZone
(
ZoneId
.
systemDefault
()).
toLocalDate
()
:
null
);
esEquipmentInfo
.
setCreateDate
(
useInfo
.
getCreateDate
()
!=
null
?
useInfo
.
getCreateDate
().
toInstant
().
atZone
(
ZoneId
.
systemDefault
()).
toLocalDateTime
()
:
null
);
}
catch
(
Exception
e
)
{
log
.
error
(
"时区转换失败:{}"
,
record
,
e
);
}
esEquipmentInfo
.
setDesignUnitCreditCode
(
designInfo
.
getDesignUnitCreditCode
());
esEquipmentInfo
.
setMAINTAIN_UNIT
(
lastMaintenanceRecordInfo
.
getMeUnitCreditCode
());
esEquipmentInfo
.
setMAINTAIN_UNIT_NAME
(
lastMaintenanceRecordInfo
.
getMeUnitName
());
esEquipmentInfo
.
setDesignUnitName
(
designInfo
.
getDesignUnitName
());
esEquipmentInfo
.
setProduceUnitCreditCode
(
factoryInfo
.
getProduceUnitCreditCode
());
esEquipmentInfo
.
setInspections
(
inspectionDetectionInfo
.
getSequenceNbr
()
!=
null
?
Collections
.
singletonList
(
BeanUtil
.
copyProperties
(
inspectionDetectionInfo
,
ESEquipmentInfo
.
Inspection
.
class
))
:
new
ArrayList
<>());
esEquipmentInfo
.
setMaintenances
(
lastMaintenanceRecordInfo
.
getSequenceNbr
()
!=
null
?
Collections
.
singletonList
(
BeanUtil
.
copyProperties
(
lastMaintenanceRecordInfo
,
ESEquipmentInfo
.
Maintenance
.
class
))
:
new
ArrayList
<>());
esEquipmentInfo
.
setTechParams
(
this
.
buildTechParamByEquList
(
record
,
categoryEs
.
getEQU_LIST_CODE
()));
esEquipmentDao
.
save
(
esEquipmentInfo
);
}
private
List
<
ESEquipmentInfo
.
TechParam
>
buildTechParamByEquList
(
String
record
,
String
equListCode
)
{
return
StringUtils
.
isNotEmpty
(
equListCode
)
?
statisticsDataUpdateService
.
getTechParams
(
equListCode
,
record
)
:
new
ArrayList
<>();
}
}
amos-boot-system-tzs/amos-boot-module-jg/amos-boot-module-jg-biz/src/main/java/com/yeejoin/amos/boot/module/jg/biz/service/impl/DataHandlerServiceImpl.java
View file @
3bb3bbd2
...
...
@@ -40,7 +40,7 @@ import com.yeejoin.amos.boot.module.jg.api.mapper.*;
import
com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient
;
import
com.yeejoin.amos.boot.module.jg.biz.handler.strategy.ProblemHandleStrategy
;
import
com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgInspectionDetectionInfoService
;
import
com.yeejoin.amos.boot.module.jg.biz.
statistics.service
.StatisticsDataUpdateService
;
import
com.yeejoin.amos.boot.module.jg.biz.
refresh
.StatisticsDataUpdateService
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.EquipWaitRefreshDataQualityScore
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.ProjectWaitRefreshDataQualityScore
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.RefreshDataDto
;
...
...
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/config/ExecuteThreadPoolConfig.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
tcm
.
biz
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.ThreadPoolExecutor
;
@Configuration
public
class
ExecuteThreadPoolConfig
{
private
static
final
Integer
CORE_POOL_SIZE
=
Runtime
.
getRuntime
().
availableProcessors
()
+
1
;
private
static
final
Integer
MAX_POOL_SIZE
=
Runtime
.
getRuntime
().
availableProcessors
()
*
2
+
1
;
private
static
final
Integer
TASK_QUEUE_CAPACITY
=
Runtime
.
getRuntime
().
availableProcessors
();
private
static
final
Integer
TASK_KEEP_ALIVE_TIME
=
60
*
3
;
@Bean
(
name
=
"tcmTaskExecutor"
)
public
ThreadPoolTaskExecutor
executeThreadPoolConfig
()
{
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
executor
.
setCorePoolSize
(
CORE_POOL_SIZE
);
executor
.
setMaxPoolSize
(
MAX_POOL_SIZE
);
executor
.
setQueueCapacity
(
TASK_QUEUE_CAPACITY
);
executor
.
setThreadNamePrefix
(
"tcmTaskExecutor-"
);
// 设置线程保持活跃的时间(默认:60 * 3)
executor
.
setKeepAliveSeconds
(
TASK_KEEP_ALIVE_TIME
);
// 设置任务拒绝策略 通过主线程知行
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
executor
.
initialize
();
return
executor
;
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/refresh/CommonRefreshService.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
tcm
.
biz
.
refresh
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission
;
import
com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils
;
import
com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserPermissionMapper
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Service
@RequiredArgsConstructor
public
class
CommonRefreshService
{
private
final
TzsUserPermissionMapper
userPermissionMapper
;
public
List
<
EsUserInfo
.
License
>
buildUserLicenses
(
Long
sequenceNbr
)
{
List
<
TzsUserPermission
>
permissions
=
userPermissionMapper
.
selectList
(
new
LambdaQueryWrapper
<
TzsUserPermission
>().
eq
(
TzsUserPermission:
:
getUserSeq
,
sequenceNbr
));
return
permissions
.
stream
().
map
(
p
->
{
EsUserInfo
.
License
license
=
new
EsUserInfo
.
License
();
BeanUtil
.
copyProperties
(
p
,
license
);
license
.
setPermissionItem
(
RefreshDataUtils
.
castStrList2String
(
p
.
getPermissionItem
()));
license
.
setJobItem
(
RefreshDataUtils
.
castStrList2String
(
p
.
getJobItem
()));
return
license
;
}).
collect
(
Collectors
.
toList
());
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/refresh/handler/EnterpriseRefreshHandler.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
tcm
.
biz
.
refresh
.
handler
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.biz.common.entity.BaseEntity
;
import
com.yeejoin.amos.boot.module.common.api.dao.EsBaseEnterpriseInfoDao
;
import
com.yeejoin.amos.boot.module.common.api.dao.EsUserInfoDao
;
import
com.yeejoin.amos.boot.module.common.api.entity.EsBaseEnterpriseInfo
;
import
com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
import
com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler
;
import
com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils
;
import
com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo
;
import
com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseUnitLicence
;
import
com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo
;
import
com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseEnterpriseInfoMapper
;
import
com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseUnitLicenceMapper
;
import
com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Component
@RequiredArgsConstructor
@Slf4j
public
class
EnterpriseRefreshHandler
implements
IDataRefreshHandler
{
private
final
EsBaseEnterpriseInfoDao
enterpriseInfoDao
;
private
final
TzBaseUnitLicenceMapper
licenceMapper
;
private
final
TzBaseEnterpriseInfoMapper
tzBaseEnterpriseInfoMapper
;
private
final
TzsUserInfoMapper
userInfoMapper
;
private
final
EsUserInfoDao
esUserInfoDao
;
@Override
public
String
supportType
()
{
return
"enterprise"
;
}
@Override
public
void
doRefresh
(
TzsDataRefreshMessage
message
)
{
log
.
info
(
"3库数据,企业开始刷库:唯一标识:{}"
,
message
.
getDataId
());
// 企业信息更新
TzBaseEnterpriseInfo
enterpriseInfo
=
tzBaseEnterpriseInfoMapper
.
selectById
(
message
.
getDataId
());
EsBaseEnterpriseInfo
esBaseEnterpriseInfo
=
new
EsBaseEnterpriseInfo
();
BeanUtil
.
copyProperties
(
enterpriseInfo
,
esBaseEnterpriseInfo
);
esBaseEnterpriseInfo
.
setSequenceNbr
(
enterpriseInfo
.
getSequenceNbr
()
+
""
);
esBaseEnterpriseInfo
.
setEquipCategory
(
RefreshDataUtils
.
castStrList2String
(
enterpriseInfo
.
getEquipCategory
()));
List
<
TzBaseUnitLicence
>
unitLicences
=
licenceMapper
.
selectList
(
new
LambdaQueryWrapper
<
TzBaseUnitLicence
>().
eq
(
TzBaseUnitLicence:
:
getUnitCode
,
enterpriseInfo
.
getUseUnitCode
()).
eq
(
TzBaseUnitLicence:
:
getIsDelete
,
false
));
List
<
EsBaseEnterpriseInfo
.
License
>
licenses
=
unitLicences
.
stream
().
map
(
lis
->
{
EsBaseEnterpriseInfo
.
License
esLicense
=
new
EsBaseEnterpriseInfo
.
License
();
BeanUtil
.
copyProperties
(
lis
,
esLicense
);
return
esLicense
;
}).
collect
(
Collectors
.
toList
());
esBaseEnterpriseInfo
.
setLicenses
(
licenses
);
enterpriseInfoDao
.
save
(
esBaseEnterpriseInfo
);
// 人员更新冗余的单位信息
List
<
TzsUserInfo
>
userOfOneUnit
=
userInfoMapper
.
selectList
(
new
LambdaQueryWrapper
<
TzsUserInfo
>().
eq
(
TzsUserInfo:
:
getUnitCode
,
enterpriseInfo
.
getUseUnitCode
()).
eq
(
BaseEntity:
:
getIsDelete
,
false
).
select
(
BaseEntity:
:
getSequenceNbr
));
Iterable
<
EsUserInfo
>
userInfosEs
=
esUserInfoDao
.
findAllById
(
userOfOneUnit
.
stream
().
map
(
u
->
String
.
valueOf
(
u
.
getSequenceNbr
())).
collect
(
Collectors
.
toList
()));
userInfosEs
.
forEach
(
esUserInfo
->
{
esUserInfo
.
setUnitType
(
esBaseEnterpriseInfo
.
getUnitType
());
esUserInfo
.
setSuperviseOrgName
(
esBaseEnterpriseInfo
.
getSuperviseOrgName
());
esUserInfo
.
setSuperviseOrgCode
(
esBaseEnterpriseInfo
.
getSuperviseOrgCode
());
});
if
(
userInfosEs
.
iterator
().
hasNext
())
{
esUserInfoDao
.
saveAll
(
userInfosEs
);
}
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/refresh/handler/UserRefreshHandler.java
0 → 100644
View file @
3bb3bbd2
package
com
.
yeejoin
.
amos
.
boot
.
module
.
tcm
.
biz
.
refresh
.
handler
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.yeejoin.amos.boot.biz.common.entity.BaseEntity
;
import
com.yeejoin.amos.boot.module.common.api.dao.EsUserInfoDao
;
import
com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage
;
import
com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission
;
import
com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler
;
import
com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils
;
import
com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo
;
import
com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo
;
import
com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseEnterpriseInfoMapper
;
import
com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper
;
import
com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserPermissionMapper
;
import
com.yeejoin.amos.boot.module.tcm.biz.refresh.CommonRefreshService
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StopWatch
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Component
@Slf4j
@RequiredArgsConstructor
public
class
UserRefreshHandler
implements
IDataRefreshHandler
{
private
final
TzBaseEnterpriseInfoMapper
enterpriseInfoMapper
;
private
final
TzsUserInfoMapper
userInfoMapper
;
private
final
EsUserInfoDao
esUserInfoDao
;
private
final
CommonRefreshService
commonRefreshService
;
@Override
public
String
supportType
()
{
return
"user"
;
}
@Override
public
void
doRefresh
(
TzsDataRefreshMessage
message
)
{
log
.
info
(
"3库数据,人员开始刷库:唯一标识:{}"
,
message
.
getDataId
());
StopWatch
watch
=
new
StopWatch
();
watch
.
start
();
TzsUserInfo
userInfo
=
userInfoMapper
.
selectById
(
message
.
getDataId
());
TzBaseEnterpriseInfo
unit
=
enterpriseInfoMapper
.
selectOne
(
new
LambdaQueryWrapper
<
TzBaseEnterpriseInfo
>()
.
select
(
BaseEntity:
:
getSequenceNbr
,
TzBaseEnterpriseInfo:
:
getUseCode
,
TzBaseEnterpriseInfo:
:
getUseUnit
,
TzBaseEnterpriseInfo:
:
getUnitType
,
TzBaseEnterpriseInfo:
:
getSuperviseOrgCode
,
TzBaseEnterpriseInfo:
:
getSuperviseOrgName
).
eq
(
BaseEntity:
:
getIsDelete
,
false
).
eq
(
TzBaseEnterpriseInfo:
:
getUseCode
,
userInfo
.
getUnitCode
()));
EsUserInfo
esUserInfo
=
new
EsUserInfo
();
BeanUtil
.
copyProperties
(
userInfo
,
esUserInfo
);
esUserInfo
.
setPost
(
RefreshDataUtils
.
castStrList2String
(
userInfo
.
getPost
()));
esUserInfo
.
setNewPost
(
RefreshDataUtils
.
castStrList2String
(
userInfo
.
getNewPost
()));
esUserInfo
.
setSubPost
(
RefreshDataUtils
.
castStrList2String
(
userInfo
.
getSubPost
()));
esUserInfo
.
setEquipType
(
RefreshDataUtils
.
castStrList2String
(
userInfo
.
getEquipType
()));
esUserInfo
.
setUnitType
(
unit
.
getUnitType
());
esUserInfo
.
setSuperviseOrgName
(
unit
.
getSuperviseOrgName
());
esUserInfo
.
setSuperviseOrgCode
(
unit
.
getSuperviseOrgCode
());
esUserInfo
.
setLicenses
(
commonRefreshService
.
buildUserLicenses
(
userInfo
.
getSequenceNbr
()));
esUserInfoDao
.
save
(
esUserInfo
);
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/service/impl/TzBaseEnterpriseInfoServiceImpl.java
View file @
3bb3bbd2
...
...
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.alibaba.fastjson.TypeReference
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
...
...
@@ -15,6 +16,7 @@ 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.RedisKey
;
import
com.yeejoin.amos.boot.biz.common.utils.RequestContextWrapper
;
import
com.yeejoin.amos.boot.module.common.api.dto.UserPermissionDto
;
import
com.yeejoin.amos.boot.module.tcm.api.dto.BaseUnitLicenceDto
;
import
com.yeejoin.amos.boot.module.tcm.api.dto.EquEnterDto
;
...
...
@@ -52,6 +54,8 @@ import org.redisson.api.RLock;
import
org.redisson.api.RedissonClient
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.ObjectUtils
;
...
...
@@ -63,6 +67,8 @@ import org.typroject.tyboot.core.restful.exception.instance.TooManyRequests;
import
java.text.ParseException
;
import
java.util.*
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -124,6 +130,10 @@ public class TzBaseEnterpriseInfoServiceImpl
private
static
final
Map
<
String
,
String
>
JYJC_CERT_MAP
=
new
HashMap
<>();
@Autowired
@Qualifier
(
"tcmTaskExecutor"
)
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
/**
* 公司类型下的资质类型map:key为登录人的公司类型、value为包含的资质枚举
*/
...
...
@@ -1055,33 +1065,45 @@ public class TzBaseEnterpriseInfoServiceImpl
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
TzBaseEnterpriseInfoDto
updateCompanyInfoById
(
Map
<
String
,
Object
>
map
,
ReginParams
reginParams
2
)
{
public
TzBaseEnterpriseInfoDto
updateCompanyInfoById
(
Map
<
String
,
Object
>
map
,
ReginParams
reginParams
)
{
log
.
info
(
"根据ID修改企业信息 => {}, 更新人 => {}"
,
map
,
RequestContext
.
getExeUserId
());
try
{
TzBaseEnterpriseInfo
tzBaseEnterpriseInfo
=
new
TzBaseEnterpriseInfo
();
tzBaseEnterpriseInfo
.
setSequenceNbr
(
Long
.
valueOf
(
map
.
get
(
"sequenceNbr"
).
toString
()));
tzBaseEnterpriseInfo
=
tzBaseEnterpriseInfoService
.
getById
(
tzBaseEnterpriseInfo
.
getSequenceNbr
());
String
superviseOrgCode
=
ObjectUtils
.
isEmpty
(
map
.
get
(
"superviseOrgCode"
))
?
null
:
String
.
valueOf
(
map
.
get
(
"superviseOrgCode"
));
if
(!
tzBaseEnterpriseInfo
.
getSuperviseCode
().
equals
(
superviseOrgCode
))
{
System
.
out
.
println
(
"监管单位变更"
);
}
//修改基本信息
tzBaseEnterpriseInfo
.
setEquipCategory
(
JSON
.
toJSONString
(
map
.
get
(
"equipCategory"
)));
Map
<
String
,
String
>
map1
=
(
Map
<
String
,
String
>)
map
.
get
(
"longitudeLatitude"
);
tzBaseEnterpriseInfo
.
setAddress
(
ObjectUtils
.
isEmpty
(
map1
.
get
(
"address"
))
?
null
:
map1
.
get
(
"address"
));
tzBaseEnterpriseInfo
.
setLongitude
(
ObjectUtils
.
isEmpty
(
map1
.
get
(
"longitude"
))
?
null
:
String
.
valueOf
(
map1
.
get
(
"longitude"
)));
tzBaseEnterpriseInfo
.
setLatitude
(
ObjectUtils
.
isEmpty
(
map1
.
get
(
"latitude"
))
?
null
:
String
.
valueOf
(
map1
.
get
(
"latitude"
)));
Map
<
String
,
String
>
locationMap
=
(
Map
<
String
,
String
>)
map
.
get
(
"longitudeLatitude"
);
if
(
locationMap
!=
null
)
{
tzBaseEnterpriseInfo
.
setAddress
(
locationMap
.
get
(
"address"
));
tzBaseEnterpriseInfo
.
setLongitude
(
locationMap
.
get
(
"longitude"
));
tzBaseEnterpriseInfo
.
setLatitude
(
locationMap
.
get
(
"latitude"
));
}
tzBaseEnterpriseInfo
.
setUseContact
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"useContact"
))
?
null
:
String
.
valueOf
(
map
.
get
(
"useContact"
)));
tzBaseEnterpriseInfo
.
setContactPhone
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"contactPhone"
))
?
null
:
String
.
valueOf
(
map
.
get
(
"contactPhone"
)));
tzBaseEnterpriseInfo
.
setUnitBusinessLicense
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"unitBusinessLicense"
))
?
null
:
JSON
.
toJSONString
(
map
.
get
(
"unitBusinessLicense"
)));
tzBaseEnterpriseInfo
.
setIndustrySupervisor
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"industrySupervisor"
))
?
null
:
String
.
valueOf
(
map
.
get
(
"industrySupervisor"
)));
tzBaseEnterpriseInfo
.
setSuperviseOrgCode
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"superviseOrgCode"
))
?
null
:
String
.
valueOf
(
map
.
get
(
"superviseOrgCode"
))
);
tzBaseEnterpriseInfo
.
setSuperviseOrgCode
(
superviseOrgCode
);
tzBaseEnterpriseInfo
.
setSuperviseOrgName
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"superviseOrgName"
))
?
null
:
String
.
valueOf
(
map
.
get
(
"superviseOrgName"
)));
tzBaseEnterpriseInfo
.
setOtherAccessories
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"otherAccessories"
))
?
null
:
JSON
.
toJSONString
(
map
.
get
(
"otherAccessories"
)));
tzBaseEnterpriseInfo
.
setLegalPerson
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"legalPerson"
))
?
null
:
(
String
)
map
.
get
(
"legalPerson"
));
String
officeRegion
=
null
;
if
(!
ObjectUtils
.
isEmpty
(
map
.
get
(
"officeRegion"
))){
List
list
=
(
List
<
Object
>)
map
.
get
(
"officeRegion"
);
List
<?>
list
=
(
List
<?
>)
map
.
get
(
"officeRegion"
);
officeRegion
=
list
.
stream
().
map
(
String:
:
valueOf
).
collect
(
Collectors
.
joining
(
"#"
)).
toString
();
}
tzBaseEnterpriseInfo
.
setOfficeRegion
(
officeRegion
);
tzBaseEnterpriseInfo
.
setOfficeAddress
(
ObjectUtils
.
isEmpty
(
map
.
get
(
"officeAddress"
))
?
null
:
(
String
)
map
.
get
(
"officeAddress"
));
// 修改事业单位信息
if
(
map
.
containsKey
(
"regUnitMessage"
))
{
TzsBaseInstitutionDto
baseInstitutionDto
=
JSON
.
toJavaObject
(
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
.
get
(
"regUnitMessage"
))),
TzsBaseInstitutionDto
.
class
);
if
(!
ValidationUtil
.
isEmpty
(
baseInstitutionDto
))
{
TzsBaseInstitution
baseInstitution
=
new
TzsBaseInstitution
();
...
...
@@ -1094,6 +1116,8 @@ public class TzBaseEnterpriseInfoServiceImpl
tzsBaseInstitutionService
.
saveOrUpdate
(
baseInstitution
);
}
}
// 修改tz_flc_reg_unit_info表信息
LambdaQueryWrapper
<
RegUnitInfo
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
RegUnitInfo:
:
getUnitCode
,
tzBaseEnterpriseInfo
.
getUseCode
());
...
...
@@ -1109,7 +1133,6 @@ public class TzBaseEnterpriseInfoServiceImpl
regUnitInfo
.
setName
(
tzBaseEnterpriseInfo
.
getUseUnit
());
regUnitInfo
.
setUnitCode
(
tzBaseEnterpriseInfo
.
getUseCode
());
regUnitInfo
.
setManagementUnit
(
tzBaseEnterpriseInfo
.
getGoverningBody
());
// regUnitInfo.setManagementUnitId(tzBaseEnterpriseInfo.getGoverningBody());
regUnitInfo
.
setProvince
(
tzBaseEnterpriseInfo
.
getProvince
());
regUnitInfo
.
setCity
(
tzBaseEnterpriseInfo
.
getCity
());
regUnitInfo
.
setDistrict
(
tzBaseEnterpriseInfo
.
getDistrict
());
...
...
@@ -1122,49 +1145,7 @@ public class TzBaseEnterpriseInfoServiceImpl
regUnitInfoService
.
saveOrUpdate
(
regUnitInfo
);
// -- 20250627 调整为监管单位不能修改工商信息和资质
//修改工商信息
// RegUnitIc regUnitIc = new RegUnitIc();
// RegUnitIcDto regUnitIcDto = JSON.parseObject(JSON.toJSONString(map.get("regUnitIcDto")), new TypeReference<RegUnitIcDto>() {
// });
// if (!ValidationUtil.isEmpty(regUnitIcDto.getSequenceNbr())) {
// List<String> addressList = (List<String>) map.get("registerAddressList");
// tzBaseEnterpriseInfo.setProvince(addressList.get(0));
// tzBaseEnterpriseInfo.setCity(addressList.get(1));
// tzBaseEnterpriseInfo.setDistrict(addressList.get(2));
// tzBaseEnterpriseInfo.setCommunity(ObjectUtils.isEmpty(map.get("community")) ? null : String.valueOf(map.get("community")));
// tzBaseEnterpriseInfo.setStreet(ObjectUtils.isEmpty(map.get("street")) ? null : String.valueOf(map.get("street")));
// // tzBaseEnterpriseInfo.setAddress(ObjectUtils.isEmpty(map.get("regAddress")) ? null : String.valueOf(map.get("regAddress")));
// tzBaseEnterpriseInfo.setLegalPerson(ObjectUtils.isEmpty(map.get("legalPerson")) ? null : String.valueOf(map.get("legalPerson")));
// regUnitIc.setIndustryName(ObjectUtils.isEmpty(map.get("industryName")) ? null : String.valueOf(map.get("industryName")));
// DataDictionary regOrganCodeDict = iDataDictionaryService.getByCode(String.valueOf(map.get("registeredOrganCode")),"DJJG");
// regUnitIc.setRegisteredOrgan(ObjectUtils.isEmpty(regOrganCodeDict) ? null : String.valueOf(regOrganCodeDict.getName()));
// regUnitIc.setRegisteredOrganCode(ObjectUtils.isEmpty(map.get("registeredOrganCode")) ? null : String.valueOf(map.get("registeredOrganCode")));
// Date approvedDate;
// try {
// approvedDate = DateUtils.dateParse(String.valueOf(map.get("approvedDate")), "yyyy-MM-dd");
// } catch (ParseException e) {
// throw new RuntimeException(e);
// }
// regUnitIc.setBusinessStateCode(ObjectUtils.isEmpty(map.get("businessState")) ? null : String.valueOf(map.get("businessState")));
// DataDictionary businessStateDict = iDataDictionaryService.getByCode(String.valueOf(map.get("businessState")),"jyzt");
// regUnitIc.setBusinessState(ObjectUtils.isEmpty(businessStateDict) ? null : businessStateDict.getName());
// regUnitIc.setApprovedDate(ObjectUtils.isEmpty(map.get("approvedDate")) ? null : approvedDate);
//
// regUnitIcService.update(regUnitIc, new QueryWrapper<RegUnitIc>().eq("unit_code", regUnitIcDto.getUnitCode()));
// }
//许可信息先登录人选择的身份删除相应的许可信息,原因前端列表对数据可增减
// String useCode = tzBaseEnterpriseInfo.getUseCode();
// String certTypeCodes = Arrays.stream(unitTypes).map(e -> COMPANY_TYPE_CERT_TYPE_MAP.getOrDefault(e, "")).collect(Collectors.joining(","));
// if (useCode != null && !certTypeCodes.isEmpty()) {
// LambdaQueryWrapper<BaseUnitLicence> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(BaseUnitLicence::getUnitCode, useCode);
// wrapper.and(w -> Arrays.stream(certTypeCodes.split(","))
// .forEach(certTypeCode -> w.or().likeRight(BaseUnitLicence::getCertTypeCode, certTypeCode)));
// baseUnitLicenceService.remove(wrapper);
// }
// //报错许可许可信息
// saveLicenceData(map);
// 企业信息变更-同步修改企业下人员绑定设备类型
ArrayList
<
String
>
newData
=
new
ArrayList
<>();
JSONArray
objects
=
JSON
.
parseArray
(
tzBaseEnterpriseInfo
.
getEquipCategory
());
...
...
@@ -1173,30 +1154,36 @@ public class TzBaseEnterpriseInfoServiceImpl
tzBaseEnterpriseInfo
.
setAppId
(
regUnitInfo
.
getAppId
());
tzBaseEnterpriseInfo
.
setUnitType
(
String
.
join
(
"#"
,
unitTypes
));
boolean
b
=
tzBaseEnterpriseInfoService
.
updateById
(
tzBaseEnterpriseInfo
);
if
(
b
)
{
CompanyModel
updateModel
;
try
{
updateModel
=
Privilege
.
companyClient
.
queryByCompanyCode
(
String
.
valueOf
(
map
.
get
(
"useCode"
))
).
getResult
();
boolean
updateResult
=
tzBaseEnterpriseInfoService
.
updateById
(
tzBaseEnterpriseInfo
);
if
(
updateResult
)
{
log
.
info
(
"更新企业信息, 单位类型 => {}"
,
tzBaseEnterpriseInfo
.
getUseUnitCode
())
;
String
useCode
=
String
.
valueOf
(
map
.
get
(
"useCode"
));
CompanyModel
updateModel
=
Privilege
.
companyClient
.
queryByCompanyCode
(
useCode
).
getResult
();
HashMap
<
String
,
Object
>
parentMessage
=
(
HashMap
<
String
,
Object
>)
Privilege
.
companyClient
.
queryByOrgcode
(
String
.
valueOf
(
map
.
get
(
"superviseOrgCode"
))).
getResult
();
// 目前平台返回key为compnay(存在拼写错误)
CompanyModel
parentModel
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
parentMessage
.
get
(
"compnay"
)),
CompanyModel
.
class
);
updateModel
.
setParentId
(
parentModel
.
getSequenceNbr
());
updateModel
.
setParentId
(
parentModel
.
getSequenceNbr
());
// 更新单位的上下级
updateModel
.
setCompanyType
(
regUnitInfo
.
getUnitType
());
// 更新单位类型
Privilege
.
companyClient
.
update
(
updateModel
,
updateModel
.
getSequenceNbr
());
}
catch
(
Exception
e
)
{
throw
new
BadRequest
(
"操作失败!"
);
}
updateCompanyInfo
(
tzBaseEnterpriseInfo
,
updateModel
);
log
.
info
(
"更新企业信息, 单位 => {}"
,
tzBaseEnterpriseInfo
.
getUseUnitCode
());
updateUnit
(
map
,
regUnitInfo
,
agencyUserModel
,
updateModel
);
updateUserInfo
(
newData
,
String
.
valueOf
(
map
.
get
(
"useCode"
)));
log
.
info
(
"更新企业信息, 注册用户 => {}"
,
tzBaseEnterpriseInfo
.
getUseUnitCode
());
updateUserInfo
(
newData
,
useCode
);
// 同步平台并且刷新历史数据
asyncPlatformAndRefreshHistoricalData
(
useCode
);
TzBaseEnterpriseInfoDto
tzBaseEnterpriseInfoDto
=
new
TzBaseEnterpriseInfoDto
();
BeanUtils
.
copyProperties
(
tzBaseEnterpriseInfo
,
tzBaseEnterpriseInfoDto
);
// 更新完成后清理缓存
redisUtil
.
del
(
RedisKey
.
buildReginRoleKey
(
agencyUserModel
.
getUserId
()));
return
tzBaseEnterpriseInfoDto
;
}
else
{
return
null
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"更新企业信息失败: "
,
e
);
throw
new
BadRequest
(
"更新企业信息失败!"
);
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -1205,6 +1192,21 @@ public class TzBaseEnterpriseInfoServiceImpl
return
userInfoService
.
personalInfoUpdateById
((
Map
<
String
,
Object
>)
map
.
get
(
"raw"
));
}
private
void
updateCompanyInfo
(
TzBaseEnterpriseInfo
tzBaseEnterpriseInfo
,
CompanyModel
updateModel
)
{
FeignClientResult
<
CompanyModel
>
companyResult
=
Privilege
.
companyClient
.
update
(
updateModel
,
updateModel
.
getSequenceNbr
());
if
(
companyResult
==
null
||
companyResult
.
getStatus
()
!=
200
)
{
log
.
error
(
"更新单位错误: {}"
,
companyResult
);
throw
new
BadRequest
(
"更新单位失败!"
);
}
String
orgCode
=
Optional
.
ofNullable
(
companyResult
.
getResult
()).
map
(
CompanyModel:
:
getOrgCode
).
orElse
(
null
);
updateModel
.
setOrgCode
(
orgCode
);
// 更新企业的org_code
UpdateWrapper
<
TzBaseEnterpriseInfo
>
updateWrapper
=
new
UpdateWrapper
<>();
updateWrapper
.
set
(
"org_code"
,
orgCode
);
updateWrapper
.
eq
(
"sequence_nbr"
,
tzBaseEnterpriseInfo
.
getSequenceNbr
());
tzBaseEnterpriseInfoService
.
update
(
updateWrapper
);
}
private
void
handleUnitType
(
Map
<
String
,
Object
>
map
,
RegUnitInfo
regUnitInfo
,
AgencyUserModel
agencyUserModel
)
{
Object
unitTypeCodesObj
=
map
.
get
(
"unitTypeCodes"
);
if
(!(
unitTypeCodesObj
instanceof
List
<?>))
{
...
...
@@ -1237,10 +1239,11 @@ public class TzBaseEnterpriseInfoServiceImpl
regUnitInfo
.
setUnitTypeCode
(
unitTypeCodesStr
);
// 省内充装单位1231:生成对接数据账号
final
String
FILLING_UNIT_TYPE
=
RegUnitInfoServiceImpl
.
FILLING_UNIT_TYPE
;
if
(
unitTypeCodes
.
contains
(
FILLING_UNIT_TYPE
)
&&
(
ValidationUtil
.
isEmpty
(
regUnitInfo
.
getIsNationwide
())
||
"0"
.
equals
(
regUnitInfo
.
getIsNationwide
())))
{
// final String FILLING_UNIT_TYPE = RegUnitInfoServiceImpl.FILLING_UNIT_TYPE;
// 20250701 改为全部企业类型生成对接数据账号@tianbo
// if (unitTypeCodes.contains(FILLING_UNIT_TYPE)
// && (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide()))) {
if
(
ValidationUtil
.
isEmpty
(
regUnitInfo
.
getIsNationwide
())
||
"0"
.
equals
(
regUnitInfo
.
getIsNationwide
()))
{
if
(
ValidationUtil
.
isEmpty
(
regUnitInfo
.
getAppId
()))
{
String
appId
=
DesUtil
.
encode
(
regUnitInfo
.
getAdminUserId
(),
RegUnitInfoServiceImpl
.
SECRETKEY
);
...
...
@@ -1307,4 +1310,55 @@ public class TzBaseEnterpriseInfoServiceImpl
throw
new
BadRequest
(
"单位更新失败"
);
}
}
/**
* 同步平台并且刷新历史数据
*
*
* @param useCode useCode
* @author yangyang
* @date 2025/7/1 14:50
*/
private
void
asyncPlatformAndRefreshHistoricalData
(
String
useCode
)
{
// 同步平台ORG_CODE
LambdaQueryWrapper
<
TzsUserInfo
>
lambda
=
new
QueryWrapper
<
TzsUserInfo
>().
lambda
();
lambda
.
eq
(
TzsUserInfo:
:
getUnitCode
,
useCode
);
lambda
.
isNotNull
(
TzsUserInfo:
:
getAmosUserId
);
List
<
TzsUserInfo
>
tzsUserInfos
=
tzsUserInfoMapper
.
selectList
(
lambda
);
// 异步刷新历史数据
String
token
=
RequestContext
.
getToken
();
String
appKey
=
RequestContext
.
getAppKey
();
String
product
=
RequestContext
.
getProduct
();
threadPoolTaskExecutor
.
execute
(()
->
{
RequestContext
.
setToken
(
token
);
RequestContext
.
setAppKey
(
appKey
);
RequestContext
.
setProduct
(
product
);
try
{
// 刷新平台的企业下面用户的super_org_code
if
(!
ValidationUtil
.
isEmpty
(
tzsUserInfos
))
{
String
userIds
=
tzsUserInfos
.
stream
().
map
(
TzsUserInfo:
:
getAmosUserId
).
collect
(
Collectors
.
joining
(
","
));
FeignClientResult
<
List
<
AgencyUserModel
>>
agencyUserClientResult
=
Privilege
.
agencyUserClient
.
queryByIds
(
userIds
,
false
);
if
(
agencyUserClientResult
!=
null
&&
agencyUserClientResult
.
getResult
()
!=
null
)
{
List
<
AgencyUserModel
>
agencyUserModels
=
agencyUserClientResult
.
getResult
();
for
(
AgencyUserModel
userModel
:
agencyUserModels
)
{
// 更新, 刷新企业下用户的super_org_code
try
{
Privilege
.
agencyUserClient
.
update
(
userModel
,
userModel
.
getUserId
());
}
catch
(
Exception
e
)
{
log
.
error
(
"更新用户 {} 的 super_org_code 失败"
,
userModel
.
getUserId
(),
e
);
}
}
}
}
// todo 调用刷新历史数据接口
}
catch
(
Exception
e
)
{
log
.
error
(
"异步刷新企业用户信息发生异常"
,
e
);
}
finally
{
RequestContext
.
clean
();
}
});
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/flc/biz/service/impl/RegUnitInfoServiceImpl.java
View file @
3bb3bbd2
...
...
@@ -819,7 +819,9 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
String
adminUserId
=
userResult
.
getResult
().
getUserId
();
// 省内充装单位1231:生成对接数据账号
if
(
Arrays
.
asList
(
units
).
contains
(
FILLING_UNIT_TYPE
)
&&
(
ValidationUtil
.
isEmpty
(
regUnitInfo
.
getIsNationwide
())
||
"0"
.
equals
(
regUnitInfo
.
getIsNationwide
())))
{
// if (Arrays.asList(units).contains(FILLING_UNIT_TYPE) && (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide()))) {
// 20250701 改为全部企业类型生成对接数据账号@tianbo
if
(
ValidationUtil
.
isEmpty
(
regUnitInfo
.
getIsNationwide
())
||
"0"
.
equals
(
regUnitInfo
.
getIsNationwide
()))
{
AgencyUserModel
shadowUser
=
new
AgencyUserModel
();
shadowUser
.
setUserId
(
adminUserId
);
String
appId
=
DesUtil
.
encode
(
adminUserId
,
SECRETKEY
);
...
...
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