Browse Source

Merge remote-tracking branch 'origin/master'

master
xueyinfei 2 weeks ago
parent
commit
ca0939bada
  1. 6
      vue-fastapi-backend/module_admin/controller/datastd_controller.py
  2. 18
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  3. 4
      vue-fastapi-backend/module_admin/entity/do/datastd_do.py
  4. 1
      vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py
  5. 38
      vue-fastapi-backend/module_admin/service/datastd_service.py
  6. 47
      vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue
  7. 16
      vue-fastapi-frontend/src/views/datastd/main/index.vue

6
vue-fastapi-backend/module_admin/controller/datastd_controller.py

@ -639,7 +639,7 @@ async def get_std_main_appr_list(
) )
async def get_std_main_select_list( async def get_std_main_select_list(
request: Request, request: Request,
main_page_query: DataStdMainModel = Depends(DataStdMainModel), main_page_query: DataStdMainPageQueryModel = Depends(DataStdMainPageQueryModel.as_query), # 关键
query_db: AsyncSession = Depends(get_db), query_db: AsyncSession = Depends(get_db),
): ):
main_query_result = await DataStdService.get_std_main_list_all(query_db, main_page_query) main_query_result = await DataStdService.get_std_main_list_all(query_db, main_page_query)
@ -811,8 +811,10 @@ async def get_code_map_list2(
request: Request, request: Request,
id: str, id: str,
query_db: AsyncSession = Depends(get_db), query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
): ):
code_page_query_result = await DataStdService.get_code_map_list2(request,query_db, id) code_page_query_result = await DataStdService.get_code_map_list2(request,query_db, id,current_user)
logger.info('获取列配置列表成功') logger.info('获取列配置列表成功')
return ResponseUtil.success(data=code_page_query_result) return ResponseUtil.success(data=code_page_query_result)
@datastdController.get( @datastdController.get(

18
vue-fastapi-backend/module_admin/dao/datastd_dao.py

@ -518,6 +518,20 @@ class DataStdDao:
) )
).scalars().all() ).scalars().all()
return List return List
@classmethod
async def get_data_main_list_by_info(cls, db: AsyncSession, query_object: DataStdMain):
stmt = select(DataStdMain)
# 动态拼接条件
if query_object.data_std_no:
stmt = stmt.where(DataStdMain.data_std_no == query_object.data_std_no)
if query_object.company_level_data_std_no:
stmt = stmt.where(DataStdMain.company_level_data_std_no == query_object.company_level_data_std_no)
result = await db.execute(stmt)
return result.scalars().all()
@classmethod @classmethod
async def get_meta_field_list_by_onum(cls, db: AsyncSession, onum: str): async def get_meta_field_list_by_onum(cls, db: AsyncSession, onum: str):
@ -1045,6 +1059,10 @@ class DataStdDao:
filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%")) filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%"))
if query_object.src_sys: if query_object.src_sys:
filters.append(DataStdMain.src_sys == query_object.src_sys) filters.append(DataStdMain.src_sys == query_object.src_sys)
if query_object.company_level_data_std_no:
filters.append(DataStdMain.company_level_data_std_no == query_object.company_level_data_std_no)
if query_object.data_std_vest:
filters.append(DataStdMain.data_std_vest == query_object.data_std_vest)
if query_object.cd_id: if query_object.cd_id:
filters.append(DataStdMain.cd_id == query_object.cd_id) filters.append(DataStdMain.cd_id == query_object.cd_id)
if query_object.data_std_type: if query_object.data_std_type:

4
vue-fastapi-backend/module_admin/entity/do/datastd_do.py

@ -164,6 +164,7 @@ class DataStdMain(Base):
data_std_src = Column(String(20), default=None, comment='标准来源') data_std_src = Column(String(20), default=None, comment='标准来源')
data_clas = Column(String(20), default=None, comment='数据类别') data_clas = Column(String(20), default=None, comment='数据类别')
typical_fld = Column(String(500), default=None, comment='典型字段') typical_fld = Column(String(500), default=None, comment='典型字段')
company_level_data_std_no = Column(String(50), default=None, comment='所属公司级数据标准编号')
class DataStdMainAppr(Base): class DataStdMainAppr(Base):
@ -200,4 +201,5 @@ class DataStdMainAppr(Base):
oldInstId = Column(String(50), default=None, comment='原始正式id') oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)') compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None, approStatus = Column(String(10), default=None,
comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)') comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
company_level_data_std_no = Column(String(50), default=None, comment='所属公司级数据标准编号')

1
vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py

@ -130,6 +130,7 @@ class DataStdMainModel(BaseModel):
data_std_src: Optional[str] = Field(default=None, description='标准来源') data_std_src: Optional[str] = Field(default=None, description='标准来源')
data_clas: Optional[str] = Field(default=None, description='数据类别') data_clas: Optional[str] = Field(default=None, description='数据类别')
typical_fld: Optional[str] = Field(default=None, description='典型字段') typical_fld: Optional[str] = Field(default=None, description='典型字段')
company_level_data_std_no: Optional[str] = Field(default=None, description='公司级数据标准编号')
@as_query @as_query

38
vue-fastapi-backend/module_admin/service/datastd_service.py

@ -1240,7 +1240,8 @@ class DataStdService:
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在") raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4()) model.onum=str(uuid.uuid4())
model.std_status="1" model.std_status="1"
model.belt_data_std_content=2 if not model.belt_data_std_content or model.belt_data_std_content == 1:
model.belt_data_std_content = 2
await DataStdDao.add_std_main(query_db, model) await DataStdDao.add_std_main(query_db, model)
return CrudResponseModel(is_success=True, message='新增标准成功') return CrudResponseModel(is_success=True, message='新增标准成功')
@ -1261,7 +1262,8 @@ class DataStdService:
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在") raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4()) model.onum=str(uuid.uuid4())
model.std_status="1" model.std_status="1"
model.belt_data_std_content=2 if model.belt_data_std_content is None or model.belt_data_std_content == 1:
model.belt_data_std_content = 2
# 将 DataStdMainModel 转换为 DataStdMainApprModel,保留字段原始名 # 将 DataStdMainModel 转换为 DataStdMainApprModel,保留字段原始名
apprModel = DataStdMainApprModel(**model.model_dump(exclude_unset=True, by_alias=True)) apprModel = DataStdMainApprModel(**model.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="add" apprModel.changeType="add"
@ -1608,9 +1610,32 @@ class DataStdService:
# "children": children # "children": children
# } # }
@classmethod @classmethod
async def get_code_map_list2(cls, request: Request, query_db: AsyncSession, id: str): async def get_code_map_list2(cls, request: Request, query_db: AsyncSession, id: str,current_user: CurrentUserModel):
check_model = DataStdDictModel() check_model = DataStdDictModel()
table_data = [] # 存储表格数据
children = [] # 存储图谱数据
dataStdNo = await DataStdDao.get_std_main_by_id(query_db, id) dataStdNo = await DataStdDao.get_std_main_by_id(query_db, id)
if dataStdNo.data_std_vest == 'company':
check_data_std = DataStdMainModel()
check_data_std.company_level_data_std_no=dataStdNo.data_std_no
data_tree_result = await MetataskService.get_data_source_tree( request,current_user)
sys_map = {str(item.id): item.name for item in data_tree_result}
main_query_result= await DataStdDao.get_data_main_list_by_info(query_db, check_data_std)
if main_query_result:
for main in main_query_result:
sys_name = sys_map.get(str(main.src_sys), str(main.src_sys)) # 找不到时就用id
sys_main_node = {
"id": f"dict_{main.onum}",
"name": main.data_std_cn_name,
"label": main.data_std_eng_name,
"rate": 1.0,
"status": "G",
"variableValue": "系统级标准:"+sys_name,
"variableUp": True,
"children": [],
}
children.append(sys_main_node)
cd_type = dataStdNo.src_sys cd_type = dataStdNo.src_sys
check_model.data_std_no = dataStdNo.onum check_model.data_std_no = dataStdNo.onum
@ -1618,14 +1643,13 @@ class DataStdService:
hasDict = await request.app.state.redis.get(f'{RedisInitKeyConfig.SYS_CONFIG.key}:sys.std.dict') hasDict = await request.app.state.redis.get(f'{RedisInitKeyConfig.SYS_CONFIG.key}:sys.std.dict')
hasDict = hasDict.decode() if isinstance(hasDict, bytes) else hasDict hasDict = hasDict.decode() if isinstance(hasDict, bytes) else hasDict
table_data = [] # 存储表格数据
children = [] # 存储图谱数据
if hasDict == "": if hasDict == "":
# 获取字典列表 # 获取字典列表
main_list = await DataStdDao.get_data_dict_list_by_info(query_db, check_model) main_list = await DataStdDao.get_data_dict_list_by_info(query_db, check_model)
if not main_list: if not main_list:
return {"children": []} return {"children": children}
for main in main_list: for main in main_list:
dict_node = { dict_node = {
@ -1683,7 +1707,7 @@ class DataStdService:
# 获取该字典直接引用的元数据列表 # 获取该字典直接引用的元数据列表
meta_list = await DataStdDao.get_meta_field_list_by_onum(query_db, id) meta_list = await DataStdDao.get_meta_field_list_by_onum(query_db, id)
if not meta_list: if not meta_list:
return {"children": []} return {"children": children}
children = [] children = []
for meta in meta_list: for meta in meta_list:

47
vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue

@ -42,6 +42,22 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="公司级数据标准" prop="companyLevelDataStdNo">
<el-select
v-model="formData.companyLevelDataStdNo"
placeholder="公司级数据标准"
filterable
clearable
:filter-method="filterStdList"
>
<el-option
v-for="dict in filteredStdList"
:key="dict.onum"
:label="dict.dataStdNo + '-' + dict.dataStdEngName + '-' + dict.dataStdCnName"
:value="dict.dataStdNo"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="标准编号" prop="dataStdNo"> <el-form-item label="标准编号" prop="dataStdNo">
<el-input <el-input
v-model="formData.dataStdNo" v-model="formData.dataStdNo"
@ -239,20 +255,41 @@ const props = defineProps({
isEdit: { type: Boolean, default: false }, isEdit: { type: Boolean, default: false },
isShow: { type: Boolean, default: false }, isShow: { type: Boolean, default: false },
visible: { type: Boolean, required: true }, visible: { type: Boolean, required: true },
stdList: {
type: Object,
required: false,
},
dbResourceOldList: { type: Array, default: () => [] } dbResourceOldList: { type: Array, default: () => [] }
}) })
// //
const formData = ref({ ...props.data }); const formData = ref({ ...props.data });
const filterStdList = (query) => {
searchQuery.value = query; //
};
// //
watch(() => props.data, (newVal) => { watch(() => props.data, (newVal) => {
if (newVal) { if (newVal) {
formData.value=props.data formData.value=props.data
if (formData.value.dataStdVest !== "company") {
showSys.value = true
} else {
showSys.value = false
}
} }
}, { immediate: true }) }, { immediate: true })
const searchQuery = ref(''); //
const filteredStdList = computed(() => {
if (!searchQuery.value) return props.stdList; //
const query = searchQuery.value.toLowerCase();
return props.stdList.filter(dict =>
dict.dataStdNo.toLowerCase().includes(query) ||
dict.dataStdEngName.toLowerCase().includes(query) ||
dict.dataStdCnName.toLowerCase().includes(query)
);
});
// //
const formRules = ref({ const formRules = ref({
dataStdNo: [{ required: true, message: '请输入标准编号', trigger: 'blur' }], dataStdNo: [{ required: true, message: '请输入标准编号', trigger: 'blur' }],
@ -261,8 +298,8 @@ const formRules = ref({
dataStdType: [{ required: true, message: '请选择标准类型', trigger: 'change' }], dataStdType: [{ required: true, message: '请选择标准类型', trigger: 'change' }],
dataStdSrc: [{ required: true, message: '请选择标准来源', trigger: 'change' }], dataStdSrc: [{ required: true, message: '请选择标准来源', trigger: 'change' }],
dataClas: [{ required: true, message: '请选择数据类别', trigger: 'change' }], dataClas: [{ required: true, message: '请选择数据类别', trigger: 'change' }],
dataStdBusiOwnershipDept: [{ required: true, message: '请选择业务认责部门', trigger: 'change' }], // dataStdBusiOwnershipDept: [{ required: true, message: '', trigger: 'change' }],
dataStdItOwnershipDept: [{ required: true, message: '请选择技术认责部门', trigger: 'change' }] // dataStdItOwnershipDept: [{ required: true, message: '', trigger: 'change' }]
}) })
// //

16
vue-fastapi-frontend/src/views/datastd/main/index.vue

@ -377,6 +377,7 @@
<AddEditForm <AddEditForm
:data="selectedRow" :data="selectedRow"
:isEdit="isEdit" :isEdit="isEdit"
:stdList="stdList"
:dbResourceOldList="dbResourceOldList" :dbResourceOldList="dbResourceOldList"
v-model:visible="dialogVisible" v-model:visible="dialogVisible"
@refresh="getList" @refresh="getList"
@ -480,6 +481,7 @@ import {
listStdMain, listStdMain,
getStdMain, getStdMain,
deleteStdMain, deleteStdMain,
listStdMainSelect,
changeStdMainOum changeStdMainOum
} from "@/api/datastd/std"; // } from "@/api/datastd/std"; //
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
@ -508,6 +510,7 @@ const mapVisible = ref(false);
const handleFileUploadProgress = (event, file, fileList) => { const handleFileUploadProgress = (event, file, fileList) => {
upload.isUploading = true; upload.isUploading = true;
}; };
const handleFileSuccess = (response, file, fileList) => { const handleFileSuccess = (response, file, fileList) => {
upload.open = false; upload.open = false;
upload.isUploading = false; upload.isUploading = false;
@ -532,6 +535,9 @@ const getSrcSysName = (id) => {
const match = dbResourceOldList.value.find(item => item.id === id); const match = dbResourceOldList.value.find(item => item.id === id);
return match ? match.name : "公司级"; return match ? match.name : "公司级";
}; };
const queryStd = ref({
dataStdVest: "company",
});
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const dialogVisible = ref(false); const dialogVisible = ref(false);
@ -560,6 +566,12 @@ const handleMapCodeClick = (row) => {
codeMapId.value=row.onum codeMapId.value=row.onum
mapVisible.value = true; mapVisible.value = true;
};
const getStdMainSelect = async () => {
const response = await listStdMainSelect(queryStd.value);
stdList.value = response.data;
}; };
const resetQuery = () => { const resetQuery = () => {
queryParams.value = { dataStdNo: '', dataStdBusiDefn: '' , pageNum: 1, queryParams.value = { dataStdNo: '', dataStdBusiDefn: '' , pageNum: 1,
@ -630,6 +642,7 @@ const handleRemove = (row) => {
.catch(() => {}); .catch(() => {});
}; };
const dbResourceOldList = ref([]); const dbResourceOldList = ref([]);
const stdList = ref([]);
const handleAdd = () => { const handleAdd = () => {
isEdit.value = false; isEdit.value = false;
@ -641,11 +654,13 @@ const handleAdd = () => {
dataStdEngName: '', dataStdEngName: '',
dataStdType: '0', dataStdType: '0',
dataStdBusiDefn: '', dataStdBusiDefn: '',
beltDataStdContent:queryParams.value.beltDataStdContent,
dataStdSrc: '', dataStdSrc: '',
dataClas: '', dataClas: '',
dataSecLvl: '1', dataSecLvl: '1',
dataStdVest: '', dataStdVest: '',
typicalFld: '', typicalFld: '',
companyLevelDataStdNo: '',
// //
srcSys: null, srcSys: null,
@ -870,6 +885,7 @@ onMounted(() => {
}); });
getList(); getList();
getStdMainSelect();
}); });
</script> </script>

Loading…
Cancel
Save