Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
a46d6e2f24
|
@ -40,12 +40,15 @@
|
||||||
/>
|
/>
|
||||||
<a-radio-group v-else-if="item.type === 'radioGroup'" v-model:value="modelValue[field]" style="width: 100%" v-bind="item.componentsProps" :options="item.options" />
|
<a-radio-group v-else-if="item.type === 'radioGroup'" v-model:value="modelValue[field]" style="width: 100%" v-bind="item.componentsProps" :options="item.options" />
|
||||||
<a-checkbox-group v-else-if="item.type === 'checkboxGroup'" v-model:value="modelValue[field]" style="width: 100%" v-bind="item.componentsProps" :options="item.options" />
|
<a-checkbox-group v-else-if="item.type === 'checkboxGroup'" v-model:value="modelValue[field]" style="width: 100%" v-bind="item.componentsProps" :options="item.options" />
|
||||||
|
<!-- :show-search="item.showSearch" -->
|
||||||
|
<!-- :placeholder="getPlaceholder(item)" -->
|
||||||
|
<!-- :placeholder="item.placeholder" -->
|
||||||
<a-select
|
<a-select
|
||||||
v-else-if="item.type === 'select'"
|
v-else-if="item.type === 'select'"
|
||||||
v-model:value="modelValue[field]"
|
v-model:value="modelValue[field]"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
:placeholder="item.placeholder"
|
||||||
v-bind="item.componentsProps"
|
v-bind="item.componentsProps"
|
||||||
:placeholder="getPlaceholder(item)"
|
|
||||||
:allowClear="item.componentsProps?.allowClear ?? true"
|
:allowClear="item.componentsProps?.allowClear ?? true"
|
||||||
:options="item.options"
|
:options="item.options"
|
||||||
/>
|
/>
|
||||||
|
@ -162,7 +165,13 @@ const getResponsive = (item: FormProMaxItemProps): Grid => {
|
||||||
}
|
}
|
||||||
|
|
||||||
//优先级: 组件本身=》formItem=》label
|
//优先级: 组件本身=》formItem=》label
|
||||||
const getPlaceholder = (item: FormProMaxItemProps) => item.componentsProps?.placeholder ?? item.placeholder ?? (item.type.includes('input') ? `请输入${item.label}` : `请选择${item.label}`)
|
const getPlaceholder = function (item: FormProMaxItemProps) {
|
||||||
|
// console.log('getPlaceholder____________________________', item)
|
||||||
|
// console.log('getPlaceholder_______________________placeholder', item.placeholder)
|
||||||
|
// console.log(item.componentsProps?.placeholder ?? item.placeholder ?? (item.type.includes('input') ? `请输入${item.label}` : `请选择${item.label}`))
|
||||||
|
|
||||||
|
return item.componentsProps?.placeholder ?? item.placeholder ?? (item.type.includes('input') ? `请输入${item.label}` : `请选择${item.label}`)
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose<FormExpose>({
|
defineExpose<FormExpose>({
|
||||||
validate: (nameList, options) => formProMaxRef.value?.validate(nameList, options),
|
validate: (nameList, options) => formProMaxRef.value?.validate(nameList, options),
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
</TableProMax>
|
</TableProMax>
|
||||||
<a-modal v-model:open="visible" :title="serviceTitle" @ok="submit" @cancel="closeModal">
|
<!-- <a-modal v-model:open="visible" :title="serviceTitle" @ok="submit" @cancel="closeModal">
|
||||||
<FormProMax ref="formRef" v-model:value="formParams" :form-item-options="formItemOptions" />
|
<FormProMax ref="formRef" v-model:value="formParams" :form-item-options="formItemOptions" />
|
||||||
</a-modal>
|
</a-modal> -->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -31,7 +31,8 @@ import { AutoComplete, Button, Input, message, Modal, Space } from 'ant-design-v
|
||||||
import { debounce } from 'lodash-es'
|
import { debounce } from 'lodash-es'
|
||||||
import FormProMax from '@/components/form/FormProMax.vue'
|
import FormProMax from '@/components/form/FormProMax.vue'
|
||||||
import api from '@/axios'
|
import api from '@/axios'
|
||||||
import { ref, reactive, computed, onMounted } from 'vue'
|
// createVNode
|
||||||
|
import { ref, reactive, computed, onMounted, createVNode } from 'vue'
|
||||||
import TableProMax from '@/components/table/TableProMax.vue'
|
import TableProMax from '@/components/table/TableProMax.vue'
|
||||||
import { TableProMaxProps } from '@/types/components/table/index.ts'
|
import { TableProMaxProps } from '@/types/components/table/index.ts'
|
||||||
import { ComponentExposed } from 'vue-component-type-helpers'
|
import { ComponentExposed } from 'vue-component-type-helpers'
|
||||||
|
@ -41,6 +42,7 @@ import { FormProMaxItemOptions } from '@/types/components/form//index.ts'
|
||||||
import { FormExpose } from 'ant-design-vue/es/form/Form'
|
import { FormExpose } from 'ant-design-vue/es/form/Form'
|
||||||
import { serviceProjectSaveOrUpdateParams_ } from '@/types/views/serviceManagement'
|
import { serviceProjectSaveOrUpdateParams_ } from '@/types/views/serviceManagement'
|
||||||
import { showEnterprisesUnit } from './index.tsx'
|
import { showEnterprisesUnit } from './index.tsx'
|
||||||
|
var modal: any
|
||||||
type _FormType = EnterprisesUnitSaveOrUpdateParams & {
|
type _FormType = EnterprisesUnitSaveOrUpdateParams & {
|
||||||
contactPersonInfoName?: string
|
contactPersonInfoName?: string
|
||||||
contactPersonInfoTelephone?: string
|
contactPersonInfoTelephone?: string
|
||||||
|
@ -238,6 +240,7 @@ const saveOrUpdateEnterprisesUnit = (params: _FormType, callback: Function) => {
|
||||||
type: 'select',
|
type: 'select',
|
||||||
label: '单位类型',
|
label: '单位类型',
|
||||||
required: true,
|
required: true,
|
||||||
|
placeholder: '请选择单位类型',
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
options: dictSelectNodes('EnterprisesUnitType'),
|
options: dictSelectNodes('EnterprisesUnitType'),
|
||||||
},
|
},
|
||||||
|
@ -352,7 +355,7 @@ const netType = computed(() => {
|
||||||
const formParams = ref<{
|
const formParams = ref<{
|
||||||
snowFlakeId?: string
|
snowFlakeId?: string
|
||||||
enterprisesUnitId: string
|
enterprisesUnitId: string
|
||||||
securityUnitId: string
|
securityUnitId: string | null
|
||||||
administrativeDivisionCodes?: null
|
administrativeDivisionCodes?: null
|
||||||
projectManagerMiniProgramUserId?: string
|
projectManagerMiniProgramUserId?: string
|
||||||
projectManagerMiniProgramUserName?: string
|
projectManagerMiniProgramUserName?: string
|
||||||
|
@ -372,7 +375,7 @@ const formParams = ref<{
|
||||||
name: '',
|
name: '',
|
||||||
enterprisesUnitId: '',
|
enterprisesUnitId: '',
|
||||||
type: 'security',
|
type: 'security',
|
||||||
securityUnitId: '',
|
securityUnitId: null, // 初始值得设置为null,不然 placeholder 显示不出来
|
||||||
})
|
})
|
||||||
const securityUnitIdList = ref<any>([])
|
const securityUnitIdList = ref<any>([])
|
||||||
const formItemOptions = ref<FormProMaxItemOptions<serviceProjectSaveOrUpdateParams_>>({
|
const formItemOptions = ref<FormProMaxItemOptions<serviceProjectSaveOrUpdateParams_>>({
|
||||||
|
@ -387,6 +390,15 @@ const formItemOptions = ref<FormProMaxItemOptions<serviceProjectSaveOrUpdatePara
|
||||||
label: '保安单位',
|
label: '保安单位',
|
||||||
required: true,
|
required: true,
|
||||||
options: securityUnitIdList,
|
options: securityUnitIdList,
|
||||||
|
placeholder: '请选择或搜索保安单位',
|
||||||
|
componentsProps: {
|
||||||
|
// placeholder: '请选择或搜索保安单位',
|
||||||
|
showSearch: true,
|
||||||
|
// 是否根据输入项进行筛选。当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false。
|
||||||
|
filterOption: (input: string, option: any) => {
|
||||||
|
return option.label.toLowerCase().includes(input?.toLowerCase())
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
type: {
|
type: {
|
||||||
type: 'radioGroup',
|
type: 'radioGroup',
|
||||||
|
@ -616,7 +628,7 @@ const expandedRowRender: TableProMaxProps['expandedRowRender'] = ({ record }) =>
|
||||||
<a-button
|
<a-button
|
||||||
class='btn-warn'
|
class='btn-warn'
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
visible.value = true
|
// visible.value = true
|
||||||
serviceTitle.value = '编辑服务项目'
|
serviceTitle.value = '编辑服务项目'
|
||||||
idNumberDisabled.value = record.twoType.value !== 'outsource'
|
idNumberDisabled.value = record.twoType.value !== 'outsource'
|
||||||
formParams.value.securityUnitId = record.securityUnitId //企事业单位id
|
formParams.value.securityUnitId = record.securityUnitId //企事业单位id
|
||||||
|
@ -635,6 +647,20 @@ const expandedRowRender: TableProMaxProps['expandedRowRender'] = ({ record }) =>
|
||||||
formParams.value.houseTotal = record.houseTotal //户数
|
formParams.value.houseTotal = record.houseTotal //户数
|
||||||
formParams.value.staffTotal = record.staffTotal //工作人员数量
|
formParams.value.staffTotal = record.staffTotal //工作人员数量
|
||||||
formParams.value.securityUserTotal = record.securityUserTotal //保安人员数量
|
formParams.value.securityUserTotal = record.securityUserTotal //保安人员数量
|
||||||
|
|
||||||
|
modal = Modal.confirm({
|
||||||
|
title: serviceTitle.value,
|
||||||
|
icon: createVNode('div'),
|
||||||
|
width: 600,
|
||||||
|
centered: true,
|
||||||
|
content: () => <FormProMax ref={formRef} v-model:value={formParams.value} formItemOptions={formItemOptions.value} />,
|
||||||
|
onOk: async () => {
|
||||||
|
await submit()
|
||||||
|
},
|
||||||
|
onCancel: async () => {
|
||||||
|
await closeModal()
|
||||||
|
},
|
||||||
|
})
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
编辑
|
编辑
|
||||||
|
@ -676,9 +702,10 @@ const expandedRowRender: TableProMaxProps['expandedRowRender'] = ({ record }) =>
|
||||||
}
|
}
|
||||||
|
|
||||||
const closeModal = async () => {
|
const closeModal = async () => {
|
||||||
|
console.log(modal)
|
||||||
visible.value = false
|
visible.value = false
|
||||||
formParams.value = {
|
formParams.value = {
|
||||||
securityUnitId: '',
|
securityUnitId: null,
|
||||||
enterprisesUnitId: '',
|
enterprisesUnitId: '',
|
||||||
administrativeDivisionCodes: '',
|
administrativeDivisionCodes: '',
|
||||||
name: '',
|
name: '',
|
||||||
|
@ -695,6 +722,9 @@ const closeModal = async () => {
|
||||||
enterprisesUnitId.value = ''
|
enterprisesUnitId.value = ''
|
||||||
serviceTitle.value = '新增服务项目'
|
serviceTitle.value = '新增服务项目'
|
||||||
idNumberDisabled.value = false
|
idNumberDisabled.value = false
|
||||||
|
modal.destroy()
|
||||||
|
// console.log(modal)
|
||||||
|
Modal.destroyAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
|
@ -704,6 +734,7 @@ const submit = async () => {
|
||||||
message.success(resp.message)
|
message.success(resp.message)
|
||||||
await _tableRef.value.requestGetTableData()
|
await _tableRef.value.requestGetTableData()
|
||||||
await closeModal()
|
await closeModal()
|
||||||
|
// modal.destroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
@ -711,7 +742,21 @@ onMounted(async () => {
|
||||||
securityUnitIdList.value = res.data
|
securityUnitIdList.value = res.data
|
||||||
})
|
})
|
||||||
const addService = function (record) {
|
const addService = function (record) {
|
||||||
|
// modal.destroy()
|
||||||
formParams.value.enterprisesUnitId = record.snowFlakeId //企事业单位Id
|
formParams.value.enterprisesUnitId = record.snowFlakeId //企事业单位Id
|
||||||
visible.value = true
|
// visible.value = true
|
||||||
|
modal = Modal.confirm({
|
||||||
|
title: serviceTitle.value,
|
||||||
|
icon: createVNode('div'),
|
||||||
|
width: 600,
|
||||||
|
centered: true,
|
||||||
|
content: () => <FormProMax ref={formRef} v-model:value={formParams.value} formItemOptions={formItemOptions.value} />,
|
||||||
|
onOk: async () => {
|
||||||
|
await submit()
|
||||||
|
},
|
||||||
|
onCancel: async () => {
|
||||||
|
await closeModal()
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -43,6 +43,8 @@ public class SecurityUnitUseStatisticsDTO {
|
||||||
|
|
||||||
@Schema(description = "公安单位id")
|
@Schema(description = "公安单位id")
|
||||||
private Long policeUnitId;
|
private Long policeUnitId;
|
||||||
|
@Schema(description = "公安代为代码")
|
||||||
|
private String policeUnitCode;
|
||||||
@Schema(description = "公安单位名称")
|
@Schema(description = "公安单位名称")
|
||||||
private String policeUnitName;
|
private String policeUnitName;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.changhu.pojo.dto;
|
package com.changhu.pojo.dto;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.annotation.JSONField;
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import com.changhu.common.db.enums.EducationLevel;
|
||||||
import com.changhu.common.db.enums.ServiceProjectType;
|
import com.changhu.common.db.enums.ServiceProjectType;
|
||||||
import com.changhu.common.db.enums.Sex;
|
import com.changhu.common.db.enums.Sex;
|
||||||
import com.changhu.pojo.model.LegalPersonInfo;
|
import com.changhu.pojo.model.LegalPersonInfo;
|
||||||
|
@ -81,6 +82,9 @@ public class ServiceProjectDTO {
|
||||||
static class SecurityUserInfo {
|
static class SecurityUserInfo {
|
||||||
@Schema(description = "id")
|
@Schema(description = "id")
|
||||||
private Long snowFlakeId;
|
private Long snowFlakeId;
|
||||||
|
@JSONField(serializeUsing = MinioPrefixSerializer.class)
|
||||||
|
@Schema(description = "照片")
|
||||||
|
private String photo;
|
||||||
@Schema(description = "名字")
|
@Schema(description = "名字")
|
||||||
private String name;
|
private String name;
|
||||||
@Schema(description = "手机号")
|
@Schema(description = "手机号")
|
||||||
|
@ -103,5 +107,7 @@ public class ServiceProjectDTO {
|
||||||
private String remark;
|
private String remark;
|
||||||
@Schema(description = "创建时间")
|
@Schema(description = "创建时间")
|
||||||
private String createTime;
|
private String createTime;
|
||||||
|
@Schema(description = "文化程度")
|
||||||
|
private EducationLevel educationLevel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.changhu.support.fastjson2.serializer;
|
package com.changhu.support.fastjson2.serializer;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.alibaba.fastjson2.JSONWriter;
|
import com.alibaba.fastjson2.JSONWriter;
|
||||||
import com.alibaba.fastjson2.writer.ObjectWriter;
|
import com.alibaba.fastjson2.writer.ObjectWriter;
|
||||||
|
@ -22,6 +23,10 @@ public class MinioPrefixSerializer implements ObjectWriter<String> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) {
|
public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) {
|
||||||
jsonWriter.writeString(minioPrefix + object);
|
if (object instanceof String path && StrUtil.isNotEmpty(path)) {
|
||||||
|
jsonWriter.writeString(minioPrefix + object);
|
||||||
|
} else {
|
||||||
|
jsonWriter.writeString("");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,42 +43,43 @@
|
||||||
property="securityUserList" />
|
property="securityUserList" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<select id="getServiceProjectByEnterprisesUnitId" resultMap="ServiceProjectDTOResultMap">
|
<select id="getServiceProjectByEnterprisesUnitId" resultMap="ServiceProjectDTOResultMap">
|
||||||
SELECT
|
SELECT sp.*,
|
||||||
sp.*,
|
IF(mpu.snow_flake_id IS NOT NULL,
|
||||||
IF(mpu.snow_flake_id IS NOT NULL,json_object( 'name', mpu.NAME, 'sex', mpu.sex, 'telephone', mpu.telephone, 'idCard', mpu.id_card ),NULL) AS 'projectManagerInfo',
|
json_object('name', mpu.NAME, 'sex', mpu.sex, 'telephone', mpu.telephone, 'idCard', mpu.id_card),
|
||||||
json_object(
|
NULL) AS 'projectManagerInfo',
|
||||||
'name',su1.name,
|
json_object(
|
||||||
'socialCode',su1.social_code,
|
'name', su1.name,
|
||||||
'businessLicense',su1.business_license,
|
'socialCode', su1.social_code,
|
||||||
'legalPersonInfo',su1.legal_person_info,
|
'businessLicense', su1.business_license,
|
||||||
'address',su1.address,
|
'legalPersonInfo', su1.legal_person_info,
|
||||||
'nature',su1.nature
|
'address', su1.address,
|
||||||
) as 'securityUnitInfo',
|
'nature', su1.nature
|
||||||
if(COUNT(su.snow_flake_id)>0,JSON_ARRAYAGG(json_object(
|
) as 'securityUnitInfo',
|
||||||
'snowFlakeId',su.snow_flake_id,
|
if(COUNT(su.snow_flake_id) > 0, JSON_ARRAYAGG(json_object(
|
||||||
'name',su.name,
|
'snowFlakeId', su.snow_flake_id,
|
||||||
'telephone',su.telephone,
|
'photo', su.photo,
|
||||||
'workPost',su.work_post,
|
'name', su.name,
|
||||||
'sex',su.sex,
|
'telephone', su.telephone,
|
||||||
'nativePlace',su.native_place,
|
'workPost', su.work_post,
|
||||||
'idCard',su.id_card,
|
'sex', su.sex,
|
||||||
'dateOfBirth',su.date_of_birth,
|
'nativePlace', su.native_place,
|
||||||
'securityNumber',su.security_number,
|
'idCard', su.id_card,
|
||||||
'homeAddress',su.home_address,
|
'dateOfBirth', su.date_of_birth,
|
||||||
'remark',su.remark,
|
'securityNumber', su.security_number,
|
||||||
'createTime',su.create_time
|
'homeAddress', su.home_address,
|
||||||
)),JSON_ARRAY()) as 'securityUserList'
|
'remark', su.remark,
|
||||||
FROM
|
'educationLevel', su.education_level,
|
||||||
service_project sp
|
'createTime', su.create_time
|
||||||
left join security_unit su1 on sp.security_unit_id = su1.snow_flake_id
|
)), JSON_ARRAY()) as 'securityUserList'
|
||||||
LEFT JOIN mini_program_user mpu ON sp.project_manager_mini_program_user_id = mpu.snow_flake_id AND mpu.identity = 'project_manager'
|
FROM service_project sp
|
||||||
left join security_user su on su.service_project_id = sp.snow_flake_id and su.delete_flag = 0
|
left join security_unit su1 on sp.security_unit_id = su1.snow_flake_id
|
||||||
WHERE
|
LEFT JOIN mini_program_user mpu ON sp.project_manager_mini_program_user_id = mpu.snow_flake_id AND
|
||||||
sp.delete_flag = 0
|
mpu.identity = 'project_manager'
|
||||||
|
left join security_user su on su.service_project_id = sp.snow_flake_id and su.delete_flag = 0
|
||||||
|
WHERE sp.delete_flag = 0
|
||||||
AND sp.enterprises_unit_id = #{enterprisesUnitId}
|
AND sp.enterprises_unit_id = #{enterprisesUnitId}
|
||||||
group by sp.snow_flake_id
|
group by sp.snow_flake_id
|
||||||
ORDER BY
|
ORDER BY sp.create_time DESC
|
||||||
sp.create_time DESC
|
|
||||||
</select>
|
</select>
|
||||||
<resultMap id="SecurityUnitUseStatisticsDTOResultMap" type="com.changhu.pojo.dto.SecurityUnitUseStatisticsDTO">
|
<resultMap id="SecurityUnitUseStatisticsDTOResultMap" type="com.changhu.pojo.dto.SecurityUnitUseStatisticsDTO">
|
||||||
<result
|
<result
|
||||||
|
@ -109,6 +110,7 @@
|
||||||
ad4.name as 'streetName',
|
ad4.name as 'streetName',
|
||||||
eu.address as 'address',
|
eu.address as 'address',
|
||||||
pu.snow_flake_id as 'policeUnitId',
|
pu.snow_flake_id as 'policeUnitId',
|
||||||
|
pu.code as 'policeUnitCode',
|
||||||
pu.name as 'policeUnitName',
|
pu.name as 'policeUnitName',
|
||||||
json_arrayagg(
|
json_arrayagg(
|
||||||
json_object(
|
json_object(
|
||||||
|
@ -170,6 +172,7 @@
|
||||||
TIMESTAMPDIFF(YEAR, su.date_of_birth, CURDATE()) AS 'age',
|
TIMESTAMPDIFF(YEAR, su.date_of_birth, CURDATE()) AS 'age',
|
||||||
su.id_card,
|
su.id_card,
|
||||||
su.telephone,
|
su.telephone,
|
||||||
|
su.education_level,
|
||||||
eu.name as 'enterprisesUnitName',
|
eu.name as 'enterprisesUnitName',
|
||||||
suu.name as 'securityUnitName',
|
suu.name as 'securityUnitName',
|
||||||
su.security_number
|
su.security_number
|
||||||
|
@ -193,19 +196,21 @@
|
||||||
</select>
|
</select>
|
||||||
<select id="unitSecurityUserRoster" resultType="com.changhu.pojo.dto.SecurityUserRosterDTO">
|
<select id="unitSecurityUserRoster" resultType="com.changhu.pojo.dto.SecurityUserRosterDTO">
|
||||||
select su.snow_flake_id,
|
select su.snow_flake_id,
|
||||||
su.name,
|
su.name,
|
||||||
su.sex,
|
su.sex,
|
||||||
su.photo,
|
su.photo,
|
||||||
TIMESTAMPDIFF(YEAR, su.date_of_birth, CURDATE()) AS 'age',
|
TIMESTAMPDIFF(YEAR, su.date_of_birth, CURDATE()) AS 'age',
|
||||||
su.id_card,
|
su.id_card,
|
||||||
su.telephone,
|
su.telephone,
|
||||||
eu.name as 'enterprisesUnitName',
|
su.education_level,
|
||||||
suu.name as 'securityUnitName',
|
eu.name as 'enterprisesUnitName',
|
||||||
su.security_number
|
suu.name as 'securityUnitName',
|
||||||
from enterprises_unit eu
|
su.security_number
|
||||||
LEFT JOIN service_project sp ON sp.enterprises_unit_id = eu.snow_flake_id AND sp.delete_flag = 0
|
from enterprises_unit eu
|
||||||
JOIN security_user su ON su.service_project_id = sp.snow_flake_id AND su.delete_flag = 0
|
LEFT join police_unit pu on eu.police_unit_id = pu.snow_flake_id and pu.delete_flag = 0
|
||||||
LEFT JOIN security_unit suu ON su.security_unit_id = suu.snow_flake_id AND suu.delete_flag = 0
|
LEFT JOIN service_project sp ON sp.enterprises_unit_id = eu.snow_flake_id AND sp.delete_flag = 0
|
||||||
|
JOIN security_user su ON su.service_project_id = sp.snow_flake_id AND su.delete_flag = 0
|
||||||
|
LEFT JOIN security_unit suu ON su.security_unit_id = suu.snow_flake_id AND suu.delete_flag = 0
|
||||||
where eu.delete_flag = 0
|
where eu.delete_flag = 0
|
||||||
<choose>
|
<choose>
|
||||||
<when test="level==1">
|
<when test="level==1">
|
||||||
|
|
Loading…
Reference in New Issue