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
8cda8fe1
Commit
8cda8fe1
authored
Jun 13, 2025
by
韩桐桐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
需求3321 : 人员管理分类调整
parent
af6cfc51
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
268 additions
and
3 deletions
+268
-3
TzsUserInfo.java
.../yeejoin/amos/boot/module/tcm/api/entity/TzsUserInfo.java
+2
-2
ITzsUserInfoService.java
...amos/boot/module/tcm/api/service/ITzsUserInfoService.java
+7
-0
TzsUserInfoController.java
...boot/module/tcm/biz/controller/TzsUserInfoController.java
+45
-1
TzsUserInfoServiceImpl.java
...t/module/tcm/biz/service/impl/TzsUserInfoServiceImpl.java
+144
-0
unitTypeLimitUserType.json
...cm-biz/src/main/resources/json/unitTypeLimitUserType.json
+70
-0
No files found.
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-api/src/main/java/com/yeejoin/amos/boot/module/tcm/api/entity/TzsUserInfo.java
View file @
8cda8fe1
...
@@ -216,13 +216,13 @@ public class TzsUserInfo extends BaseEntity {
...
@@ -216,13 +216,13 @@ public class TzsUserInfo extends BaseEntity {
/**
/**
* 岗位子类型(多个逗号分割)
* 岗位子类型(多个逗号分割)
*/
*/
@TableField
(
"sub_post"
)
@TableField
(
value
=
"sub_post"
,
updateStrategy
=
FieldStrategy
.
IGNORED
)
private
String
subPost
;
private
String
subPost
;
/**
/**
* 岗位子类型名称(多个逗号分割)
* 岗位子类型名称(多个逗号分割)
*/
*/
@TableField
(
"sub_post_name"
)
@TableField
(
value
=
"sub_post_name"
,
updateStrategy
=
FieldStrategy
.
IGNORED
)
private
String
subPostName
;
private
String
subPostName
;
/**
/**
...
...
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-api/src/main/java/com/yeejoin/amos/boot/module/tcm/api/service/ITzsUserInfoService.java
View file @
8cda8fe1
...
@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.tcm.api.service;
...
@@ -3,6 +3,7 @@ package com.yeejoin.amos.boot.module.tcm.api.service;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.biz.common.entity.DataDictionary
;
import
com.yeejoin.amos.boot.module.tcm.api.dto.GroupAndPersonInfoDto
;
import
com.yeejoin.amos.boot.module.tcm.api.dto.GroupAndPersonInfoDto
;
...
@@ -81,4 +82,10 @@ public interface ITzsUserInfoService extends IService<TzsUserInfo> {
...
@@ -81,4 +82,10 @@ public interface ITzsUserInfoService extends IService<TzsUserInfo> {
* @return 失败时返回失败信息,提供时返回success
* @return 失败时返回失败信息,提供时返回success
*/
*/
ResponseModel
<?>
importUserBatch
(
MultipartFile
file
);
ResponseModel
<?>
importUserBatch
(
MultipartFile
file
);
String
deletePersonSubtypeHistoricalData
();
List
<
DataDictionary
>
postByUnitType
(
CompanyBo
company
);
List
<
DataDictionary
>
subPostByUnitType
(
CompanyBo
company
,
String
parentCode
);
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/java/com/yeejoin/amos/boot/module/tcm/biz/controller/TzsUserInfoController.java
View file @
8cda8fe1
...
@@ -25,6 +25,8 @@ import com.yeejoin.amos.boot.module.tcm.biz.service.impl.TzsUserInfoServiceImpl;
...
@@ -25,6 +25,8 @@ import com.yeejoin.amos.boot.module.tcm.biz.service.impl.TzsUserInfoServiceImpl;
import
com.yeejoin.amos.component.feign.utils.FeignUtil
;
import
com.yeejoin.amos.component.feign.utils.FeignUtil
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.model.CompanyModel
;
import
com.yeejoin.amos.feign.privilege.model.CompanyModel
;
import
com.yeejoin.amos.feign.systemctl.Systemctl
;
import
com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -393,8 +395,40 @@ public class TzsUserInfoController extends BaseController {
...
@@ -393,8 +395,40 @@ public class TzsUserInfoController extends BaseController {
}
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/getJobItemBySubPost"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据人员子类型查询作业项目"
,
notes
=
"根据人员子类型查询作业项目"
)
public
ResponseModel
<
List
<
DictionarieValueModel
>
>
getJobItemBySubPost
(
@RequestParam
(
value
=
"dicKey"
)
String
dicKey
,
@RequestParam
(
value
=
""
)
String
subPost
)
{
List
<
DictionarieValueModel
>
result
=
Systemctl
.
dictionarieClient
.
dictValues
(
dicKey
).
getResult
();
// 包含 持证人员(P)6764 或 持证人员(R2)6765 并且不包含持证人员 6713 的情况下 只显示【移动式压力容器充装】和【气瓶充装】
if
((
subPost
.
contains
(
"6764"
)
||
subPost
.
contains
(
"6765"
))
&&
!
subPost
.
contains
(
"6713"
))
{
List
<
DictionarieValueModel
>
collect
=
result
.
stream
()
.
filter
(
x
->
x
.
getDictDataKey
().
equals
(
"移动式压力容器充装"
)
||
x
.
getDictDataKey
().
equals
(
"气瓶充装"
))
.
collect
(
Collectors
.
toList
());
return
ResponseHelper
.
buildResponse
(
collect
);
}
return
ResponseHelper
.
buildResponse
(
result
);
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/postByUnitType"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据单位类型查询对应的人员类型"
,
notes
=
"根据单位类型查询对应的人员类型"
)
public
ResponseModel
<
List
<
DataDictionary
>>
postByUnitType
()
{
CompanyBo
company
=
getSelectedOrgInfo
().
getCompany
();
return
ResponseHelper
.
buildResponse
(
tzsUserInfoService
.
postByUnitType
(
company
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/subPostByUnitType"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据单位类型查询对应的人员类型子类型"
,
notes
=
"根据单位类型查询对应的人员类型子类型"
)
public
ResponseModel
<
List
<
DataDictionary
>>
subPostByUnitType
(
@RequestParam
(
value
=
"parentCode"
)
String
parentCode
)
{
CompanyBo
company
=
getSelectedOrgInfo
().
getCompany
();
return
ResponseHelper
.
buildResponse
(
tzsUserInfoService
.
subPostByUnitType
(
company
,
parentCode
));
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@GetMapping
(
value
=
"/historicalOperatorHandling"
)
@GetMapping
(
value
=
"/historicalOperatorHandling"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"【
调用一次即可】需求3309 人员管理调整后:历史的维保人员(作业人员含电梯维修资质的刷入子类型:持证人员)"
,
notes
=
"
【调用一次即可】需求3309 人员管理调整后:历史的维保人员(作业人员含电梯维修资质的刷入子类型:持证人员)"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"【
数据处理】【调用一次即可】需求3309 人员管理调整后:历史的维保人员(作业人员含电梯维修资质的刷入子类型:持证人员)"
,
notes
=
"【数据处理】
【调用一次即可】需求3309 人员管理调整后:历史的维保人员(作业人员含电梯维修资质的刷入子类型:持证人员)"
)
public
ResponseModel
<
Object
>
historicalOperatorHandling
()
{
public
ResponseModel
<
Object
>
historicalOperatorHandling
()
{
// userinfo表中旧的post字段保存了旧字典值6618(维保人员)
// userinfo表中旧的post字段保存了旧字典值6618(维保人员)
List
<
Long
>
sesqNbrs
=
tzsUserInfoService
.
getBaseMapper
()
List
<
Long
>
sesqNbrs
=
tzsUserInfoService
.
getBaseMapper
()
...
@@ -410,4 +444,14 @@ public class TzsUserInfoController extends BaseController {
...
@@ -410,4 +444,14 @@ public class TzsUserInfoController extends BaseController {
.
in
(
TzsUserInfo:
:
getSequenceNbr
,
sesqNbrs
));
.
in
(
TzsUserInfo:
:
getSequenceNbr
,
sesqNbrs
));
return
ResponseHelper
.
buildResponse
(
"更新数据:"
+
sesqNbrs
.
size
()
+
"条"
);
return
ResponseHelper
.
buildResponse
(
"更新数据:"
+
sesqNbrs
.
size
()
+
"条"
);
}
}
/**
* 需求3321 人员管理分类调整,删除部分人员子类型对应的历史数据
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"【数据处理】需求3321 人员管理分类调整,删除部分人员子类型对应的历史数据"
,
notes
=
"【数据处理】需求3321 人员管理分类调整,删除部分人员子类型对应的历史数据"
)
@GetMapping
(
value
=
"/deletePersonSubtypeHistoricalData"
)
public
ResponseModel
<
String
>
deletePersonSubtypeHistoricalData
()
{
return
ResponseHelper
.
buildResponse
(
tzsUserInfoService
.
deletePersonSubtypeHistoricalData
());
}
}
}
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/TzsUserInfoServiceImpl.java
View file @
8cda8fe1
...
@@ -9,6 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -9,6 +9,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.google.common.collect.Sets
;
import
com.google.common.collect.Sets
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.CompanyBo
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
...
@@ -48,6 +51,8 @@ import org.apache.commons.lang3.StringUtils;
...
@@ -48,6 +51,8 @@ import org.apache.commons.lang3.StringUtils;
import
org.ehcache.impl.internal.concurrent.ConcurrentHashMap
;
import
org.ehcache.impl.internal.concurrent.ConcurrentHashMap
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.io.Resource
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -60,9 +65,11 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
...
@@ -60,9 +65,11 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
javax.annotation.PostConstruct
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validator
;
import
javax.validation.Validator
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -772,6 +779,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
...
@@ -772,6 +779,7 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
public
List
<
DataDictionary
>
getSubPostByParentsIds
(
String
postIds
)
{
public
List
<
DataDictionary
>
getSubPostByParentsIds
(
String
postIds
)
{
return
iDataDictionaryService
.
lambdaQuery
()
return
iDataDictionaryService
.
lambdaQuery
()
.
in
(
DataDictionary:
:
getParent
,
new
ArrayList
<>(
Arrays
.
asList
(
postIds
.
split
(
","
))))
.
in
(
DataDictionary:
:
getParent
,
new
ArrayList
<>(
Arrays
.
asList
(
postIds
.
split
(
","
))))
.
eq
(
DataDictionary:
:
getIsDelete
,
Boolean
.
FALSE
)
.
orderByAsc
(
DataDictionary:
:
getSortNum
)
.
orderByAsc
(
DataDictionary:
:
getSortNum
)
.
list
();
.
list
();
}
}
...
@@ -1603,5 +1611,141 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
...
@@ -1603,5 +1611,141 @@ public class TzsUserInfoServiceImpl extends BaseService<TzsUserInfoDto, TzsUserI
}
}
}
}
/**
* 需求3321 人员管理分类调整,删除部分人员子类型对应的历史数据
*
* @return 修正数据
*/
@Override
public
String
deletePersonSubtypeHistoricalData
()
{
int
nums
=
0
;
// 要删除的岗位ID
List
<
String
>
subPostsToRemove
=
Arrays
.
asList
(
"6711"
,
"6710"
,
"6709"
,
"6712"
);
List
<
TzsUserInfo
>
tzsUserInfos
=
this
.
getBaseMapper
().
selectList
(
new
LambdaQueryWrapper
<
TzsUserInfo
>()
.
eq
(
TzsUserInfo:
:
getIsDelete
,
Boolean
.
FALSE
)
.
like
(
TzsUserInfo:
:
getNewPost
,
"6552"
)
.
and
(
x
->
x
.
like
(
TzsUserInfo:
:
getSubPost
,
"6711"
)
.
or
().
like
(
TzsUserInfo:
:
getSubPost
,
"6710"
)
.
or
().
like
(
TzsUserInfo:
:
getSubPost
,
"6709"
)
.
or
().
like
(
TzsUserInfo:
:
getSubPost
,
"6712"
)
)
);
// 遍历处理数据
for
(
TzsUserInfo
userInfo
:
tzsUserInfos
)
{
String
subPostJson
=
userInfo
.
getSubPost
();
ObjectMapper
mapper
=
new
ObjectMapper
();
try
{
List
<
String
>
subPosts
=
mapper
.
readValue
(
subPostJson
,
new
TypeReference
<
List
<
String
>>()
{
});
// 过滤掉要删除的值
List
<
String
>
updatedSubPosts
=
subPosts
.
stream
()
.
filter
(
val
->
!
subPostsToRemove
.
contains
(
val
))
.
collect
(
Collectors
.
toList
());
// 转回 JSON 字符串
String
newSubPostJson
=
mapper
.
writeValueAsString
(
updatedSubPosts
);
userInfo
.
setSubPost
(
updatedSubPosts
.
isEmpty
()
?
null
:
newSubPostJson
);
if
(
updatedSubPosts
.
isEmpty
())
{
userInfo
.
setSubPostName
(
null
);
}
else
{
String
newSubPostNameJson
=
iDataDictionaryService
.
lambdaQuery
()
.
in
(
DataDictionary:
:
getCode
,
updatedSubPosts
)
.
orderByAsc
(
DataDictionary:
:
getSortNum
)
.
select
(
DataDictionary:
:
getName
)
.
list
()
.
stream
()
.
map
(
DataDictionary:
:
getName
)
.
collect
(
Collectors
.
joining
(
","
));
userInfo
.
setSubPostName
(
newSubPostNameJson
);
}
this
.
getBaseMapper
().
updateById
(
userInfo
);
++
nums
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
return
String
.
format
(
"修正数据 %s 条。"
,
nums
);
}
@Value
(
"classpath:/json/unitTypeLimitUserType.json"
)
private
Resource
unitTypeLimitUserType
;
private
JsonNode
postData
;
@PostConstruct
public
void
init
()
{
try
{
postData
=
new
ObjectMapper
().
readTree
(
unitTypeLimitUserType
.
getInputStream
());
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
"Failed to read or parse JSON data"
,
e
);
}
}
@Override
public
List
<
DataDictionary
>
postByUnitType
(
CompanyBo
company
)
{
ArrayList
<
String
>
postDictCodeList
=
new
ArrayList
<>();
JsonNode
companyTypeNode
=
postData
.
get
(
company
.
getCompanyType
());
if
(
companyTypeNode
!=
null
&&
companyTypeNode
.
isObject
())
{
Iterator
<
Map
.
Entry
<
String
,
JsonNode
>>
fields
=
companyTypeNode
.
fields
();
while
(
fields
.
hasNext
())
{
Map
.
Entry
<
String
,
JsonNode
>
entry
=
fields
.
next
();
String
postCode
=
entry
.
getKey
();
postDictCodeList
.
add
(
postCode
);
// 主岗位
}
}
return
this
.
getAllUserType
().
stream
()
.
filter
(
item
->
postDictCodeList
.
contains
(
item
.
getCode
()))
.
collect
(
Collectors
.
toList
());
}
/**
* 根据单位类型和父类型查询对应的人员类型子类型
* @param company 登录人公司信息
* @param parentCode 父人员类型code
* @return result
*/
@Override
public
List
<
DataDictionary
>
subPostByUnitType
(
CompanyBo
company
,
String
parentCode
)
{
ArrayList
<
String
>
parentCodeList
=
new
ArrayList
<>(
Arrays
.
asList
(
parentCode
.
split
(
","
)));
List
<
DataDictionary
>
result
=
new
ArrayList
<>();
JsonNode
companyTypeNode
=
postData
.
get
(
company
.
getCompanyType
());
if
(
companyTypeNode
!=
null
&&
companyTypeNode
.
isObject
())
{
Iterator
<
Map
.
Entry
<
String
,
JsonNode
>>
fields
=
companyTypeNode
.
fields
();
while
(
fields
.
hasNext
())
{
Map
.
Entry
<
String
,
JsonNode
>
entry
=
fields
.
next
();
String
postCode
=
entry
.
getKey
();
if
(
parentCodeList
.
contains
(
postCode
))
{
ArrayList
<
String
>
subPostDictCodeList
=
new
ArrayList
<>();
JsonNode
subPosts
=
entry
.
getValue
();
// 子岗位数组
if
(
subPosts
.
isArray
())
{
for
(
JsonNode
subPost
:
subPosts
)
{
if
(!
subPost
.
isNull
())
{
subPostDictCodeList
.
add
(
subPost
.
asText
());
// 子岗位
}
}
}
// subPostDictCodeList 值不为空说明有限制,按照限制来 ,为空按照父类型code查询所有
if
(!
subPostDictCodeList
.
isEmpty
())
{
result
.
addAll
(
iDataDictionaryService
.
lambdaQuery
()
.
in
(
DataDictionary:
:
getCode
,
subPostDictCodeList
)
.
eq
(
DataDictionary:
:
getType
,
"QYRYGW"
)
.
orderByAsc
(
DataDictionary:
:
getSortNum
)
.
list
());
}
else
{
result
.
addAll
(
iDataDictionaryService
.
lambdaQuery
()
.
in
(
DataDictionary:
:
getParent
,
postCode
)
.
eq
(
DataDictionary:
:
getType
,
"QYRYGW"
)
.
orderByAsc
(
DataDictionary:
:
getSortNum
)
.
list
());
}
}
}
}
return
result
;
}
}
}
amos-boot-system-tzs/amos-boot-module-tcm/amos-boot-module-tcm-biz/src/main/resources/json/unitTypeLimitUserType.json
0 → 100644
View file @
8cda8fe1
{
"检验检测机构"
:
{
"6660"
:
[],
"6667"
:
[],
"66151"
:
[],
"66152"
:
[],
"6546"
:
[],
"6616"
:
[],
"6761"
:
[],
"6762"
:
[]
},
"设计单位"
:
{
"6660"
:
[],
"6661"
:
[],
"6546"
:
[],
"6616"
:
[]
},
"制造单位"
:
{
"6660"
:
[],
"6661"
:
[],
"6662"
:
[],
"6619"
:
[],
"6552"
:
[],
"66151"
:
[],
"66152"
:
[],
"6546"
:
[],
"6548"
:
[],
"6550"
:
[],
"6551"
:
[],
"6616"
:
[]
},
"充装单位"
:
{
"6660"
:
[],
"6666"
:
[],
"6552"
:
[
"6713"
],
"6546"
:
[],
"6547"
:
[],
"6548"
:
[],
"6551"
:
[],
"6616"
:
[],
"6763"
:
[],
""
:
[]
},
"安装改造维修单位"
:
{
"6660"
:
[],
"6662"
:
[],
"6663"
:
[],
"6664"
:
[],
"6665"
:
[],
"6619"
:
[],
"6552"
:
[],
"66151"
:
[],
"66152"
:
[],
"6546"
:
[],
"6548"
:
[],
"6550"
:
[],
"6551"
:
[],
"6616"
:
[],
"6553"
:
[]
},
"使用单位"
:
{
"6552"
:
[
"6713"
],
"6546"
:
[],
"6550"
:
[],
"6548"
:
[],
"6551"
:
[],
"6616"
:
[],
"6617"
:
[]
}
}
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