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. 45
      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(
request: Request,
main_page_query: DataStdMainModel = Depends(DataStdMainModel),
main_page_query: DataStdMainPageQueryModel = Depends(DataStdMainPageQueryModel.as_query), # 关键
query_db: AsyncSession = Depends(get_db),
):
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,
id: str,
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('获取列配置列表成功')
return ResponseUtil.success(data=code_page_query_result)
@datastdController.get(

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

@ -518,6 +518,20 @@ class DataStdDao:
)
).scalars().all()
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
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}%"))
if 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:
filters.append(DataStdMain.cd_id == query_object.cd_id)
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_clas = Column(String(20), 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):
@ -200,4 +201,5 @@ class DataStdMainAppr(Base):
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
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_clas: 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

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

@ -1240,7 +1240,8 @@ class DataStdService:
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4())
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)
return CrudResponseModel(is_success=True, message='新增标准成功')
@ -1261,7 +1262,8 @@ class DataStdService:
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4())
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,保留字段原始名
apprModel = DataStdMainApprModel(**model.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="add"
@ -1608,9 +1610,32 @@ class DataStdService:
# "children": children
# }
@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()
table_data = [] # 存储表格数据
children = [] # 存储图谱数据
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
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 = hasDict.decode() if isinstance(hasDict, bytes) else hasDict
table_data = [] # 存储表格数据
children = [] # 存储图谱数据
if hasDict == "":
# 获取字典列表
main_list = await DataStdDao.get_data_dict_list_by_info(query_db, check_model)
if not main_list:
return {"children": []}
return {"children": children}
for main in main_list:
dict_node = {
@ -1683,7 +1707,7 @@ class DataStdService:
# 获取该字典直接引用的元数据列表
meta_list = await DataStdDao.get_meta_field_list_by_onum(query_db, id)
if not meta_list:
return {"children": []}
return {"children": children}
children = []
for meta in meta_list:

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

@ -42,6 +42,22 @@
/>
</el-select>
</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-input
v-model="formData.dataStdNo"
@ -239,20 +255,41 @@ const props = defineProps({
isEdit: { type: Boolean, default: false },
isShow: { type: Boolean, default: false },
visible: { type: Boolean, required: true },
stdList: {
type: Object,
required: false,
},
dbResourceOldList: { type: Array, default: () => [] }
})
//
const formData = ref({ ...props.data });
const filterStdList = (query) => {
searchQuery.value = query; //
};
//
watch(() => props.data, (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 })
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({
dataStdNo: [{ required: true, message: '请输入标准编号', trigger: 'blur' }],
@ -261,8 +298,8 @@ const formRules = ref({
dataStdType: [{ required: true, message: '请选择标准类型', trigger: 'change' }],
dataStdSrc: [{ required: true, message: '请选择标准来源', trigger: 'change' }],
dataClas: [{ required: true, message: '请选择数据类别', trigger: 'change' }],
dataStdBusiOwnershipDept: [{ required: true, message: '请选择业务认责部门', trigger: 'change' }],
dataStdItOwnershipDept: [{ required: true, message: '请选择技术认责部门', trigger: 'change' }]
// dataStdBusiOwnershipDept: [{ 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
:data="selectedRow"
:isEdit="isEdit"
:stdList="stdList"
:dbResourceOldList="dbResourceOldList"
v-model:visible="dialogVisible"
@refresh="getList"
@ -480,6 +481,7 @@ import {
listStdMain,
getStdMain,
deleteStdMain,
listStdMainSelect,
changeStdMainOum
} from "@/api/datastd/std"; //
import useUserStore from '@/store/modules/user'
@ -508,6 +510,7 @@ const mapVisible = ref(false);
const handleFileUploadProgress = (event, file, fileList) => {
upload.isUploading = true;
};
const handleFileSuccess = (response, file, fileList) => {
upload.open = false;
upload.isUploading = false;
@ -532,6 +535,9 @@ const getSrcSysName = (id) => {
const match = dbResourceOldList.value.find(item => item.id === id);
return match ? match.name : "公司级";
};
const queryStd = ref({
dataStdVest: "company",
});
const single = ref(true);
const multiple = ref(true);
const dialogVisible = ref(false);
@ -560,6 +566,12 @@ const handleMapCodeClick = (row) => {
codeMapId.value=row.onum
mapVisible.value = true;
};
const getStdMainSelect = async () => {
const response = await listStdMainSelect(queryStd.value);
stdList.value = response.data;
};
const resetQuery = () => {
queryParams.value = { dataStdNo: '', dataStdBusiDefn: '' , pageNum: 1,
@ -630,6 +642,7 @@ const handleRemove = (row) => {
.catch(() => {});
};
const dbResourceOldList = ref([]);
const stdList = ref([]);
const handleAdd = () => {
isEdit.value = false;
@ -641,11 +654,13 @@ const handleAdd = () => {
dataStdEngName: '',
dataStdType: '0',
dataStdBusiDefn: '',
beltDataStdContent:queryParams.value.beltDataStdContent,
dataStdSrc: '',
dataClas: '',
dataSecLvl: '1',
dataStdVest: '',
typicalFld: '',
companyLevelDataStdNo: '',
//
srcSys: null,
@ -870,6 +885,7 @@ onMounted(() => {
});
getList();
getStdMainSelect();
});
</script>

Loading…
Cancel
Save