2 커밋 f20b75b6c4 ... 1287b129dd

작성자 SHA1 메시지 날짜
  fuwb 1287b129dd 1、完成供应商界面 3 달 전
  fuwb 11d182e48f 1、调整供应商接口 3 달 전

+ 18 - 0
client/src/api/supplier/index.ts

@@ -0,0 +1,18 @@
+import request from '@/config/axios'
+import { SupplierInfoPageDTO } from './types'
+
+export const getSupplierPage = async (json: SupplierInfoPageDTO) => {
+  return await request.post({ url: '/supplierInfo/page', data: json }, '/business')
+}
+
+export const createSupplier = async (json) => {
+  return await request.post({ url: '/supplierInfo/create', data: json }, '/business')
+}
+
+export const deleteSupplier = async (id: string) => {
+  return await request.delete({ url: '/supplierInfo/delete?id=' + id }, '/business')
+}
+
+export const updateSupplier = async (json) => {
+  return await request.post({ url: '/supplierInfo/update', data: json }, '/business')
+}

+ 4 - 0
client/src/api/supplier/types.ts

@@ -0,0 +1,4 @@
+export type SupplierInfoPageDTO = {
+  supplierName: string,
+  contactPerson: string
+}

+ 16 - 0
client/src/router/modules/remaining.ts

@@ -84,6 +84,22 @@ const remainingRouter: AppRouteRecordRaw[] = [
           noCache: false,
           affix: true
         }
+      },
+      {
+        path: 'mainOfficeCenter',
+        name: 'MainOfficeCenter',
+        component: () => import('@/views/OaSystem/officeCenter/mainOfficeCenter/index.vue'),
+        meta: {
+          title: '办件中心'
+        }
+      },
+      {
+        path: 'processContainer',
+        component: () => import('@/views/OaSystem/processContainer/index.vue'),
+        name: 'ProcessContainer',
+        meta: {
+          title: ''
+        }
       }
     ]
   },

+ 20 - 20
client/src/views/OaSystem/mainOfficeCenter/common.ts

@@ -16,7 +16,7 @@ export const TabColumns = {
         frozen: true,
         fixed: true
       },
-      { label: '业务编号', align: 'center', name: 'CODE', width: 180, tooltip: true },
+      { label: '业务编号', align: 'center', name: 'code', width: 180, tooltip: true },
       {
         label: '环节状态',
         align: 'center',
@@ -26,16 +26,16 @@ export const TabColumns = {
       {
         label: '流程描述',
         align: 'left',
-        name: 'DESCRIBTION',
+        name: 'describtion',
         minminWidth: 560,
         tooltip: true
       },
-      { label: '流程名称', align: 'left', name: 'NAME', width: 130 },
-      { label: '办理环节', align: 'center', name: 'ACTIVITYNAME', width: 200, tooltip: true },
+      { label: '流程名称', align: 'left', name: 'name', width: 130 },
+      { label: '办理环节', align: 'center', name: 'activityname', width: 200, tooltip: true },
       {
         label: '接件时间',
         align: 'center',
-        name: 'RECEIVE_TIME',
+        name: 'receive_time',
         width: 190,
         formatter(row: any, column: any, cellValue: any, index: number) {
           if (cellValue) {
@@ -57,7 +57,7 @@ export const TabColumns = {
         frozen: true,
         fixed: true
       },
-      { label: '业务编号', align: 'center', name: 'CODE', width: 160, tooltip: true },
+      { label: '业务编号', align: 'center', name: 'code', width: 160, tooltip: true },
       {
         label: '环节完成情况',
         align: 'center',
@@ -67,11 +67,11 @@ export const TabColumns = {
       {
         label: '流程描述',
         align: 'left',
-        name: 'DESCRIBTION',
+        name: 'describtion',
         minWidth: 600,
         tooltip: true
       },
-      { label: '流程名称', align: 'left', name: 'NAME', width: 130 },
+      { label: '流程名称', align: 'left', name: 'name', width: 130 },
       {
         label: '当前在办环节',
         align: 'center',
@@ -79,11 +79,11 @@ export const TabColumns = {
         width: 200,
         tooltip: true
       },
-      { label: '完成环节', align: 'center', name: 'ACTIVITYNAME', width: 160, tooltip: true },
+      { label: '完成环节', align: 'center', name: 'activityname', width: 160, tooltip: true },
       {
         label: '完成时间',
         align: 'center',
-        name: 'FINISH_TIME',
+        name: 'finish_time',
         width: 190,
         formatter(row: any, column: any, cellValue: any, index: number) {
           if (cellValue) {
@@ -105,7 +105,7 @@ export const TabColumns = {
         frozen: true,
         fixed: true
       },
-      { label: '业务编号', align: 'center', name: 'CODE', width: 160, tooltip: true },
+      { label: '业务编号', align: 'center', name: 'code', width: 160, tooltip: true },
       {
         label: '环节完成情况',
         align: 'center',
@@ -115,15 +115,15 @@ export const TabColumns = {
       {
         label: '流程描述',
         align: 'left',
-        name: 'DESCRIBTION',
+        name: 'describtion',
         minWidth: 600,
         tooltip: true
       },
-      { label: '流程名称', align: 'left', name: 'NAME', width: 130 },
+      { label: '流程名称', align: 'left', name: 'name', width: 130 },
       {
         label: '办结时间',
         align: 'center',
-        name: 'LATEST_MODIFY_TIME',
+        name: 'latest_modify_time',
         width: 190,
         formatter(row: any, column: any, cellValue: any, index: number) {
           if (cellValue) {
@@ -145,7 +145,7 @@ export const TabColumns = {
         frozen: true,
         fixed: true
       },
-      { label: '业务编号', align: 'center', name: 'CODE', width: 150, tooltip: true },
+      { label: '业务编号', align: 'center', name: 'code', width: 150, tooltip: true },
       {
         label: '退至环节完成情况',
         align: 'center',
@@ -156,17 +156,17 @@ export const TabColumns = {
       {
         label: '流程描述',
         align: 'left',
-        name: 'DESCRIBTION',
+        name: 'describtion',
         minWidth: 560,
         tooltip: true
       },
-      { label: '流程名称', align: 'left', name: 'NAME', width: 130 },
-      { label: '被退环节', align: 'center', name: 'BACTIVITYNAME', width: 160 },
-      { label: '退至环节', align: 'center', name: 'ACTIVITYNAME', width: 160 },
+      { label: '流程名称', align: 'left', name: 'name', width: 130 },
+      { label: '被退环节', align: 'center', name: 'bactivityname', width: 160 },
+      { label: '退至环节', align: 'center', name: 'activityname', width: 160 },
       {
         label: '退回时间',
         align: 'center',
-        name: 'CREATE_TIME',
+        name: 'create_time',
         width: 190,
         formatter(row: any, column: any, cellValue: any, index: number) {
           if (cellValue) {

+ 3 - 3
client/src/views/OaSystem/mainOfficeCenter/inullyApply.ts

@@ -52,7 +52,7 @@ const useInullyApply = (option: InullyApplyOptionType) => {
   const cancelFlow = (row) => {
     initInullyApplyFormData(row)
     isFlowVoid({
-      flowInstanceId: row['FLOWINSID']
+      flowInstanceId: row['flowinsid']
     }).then((result: any) => {
       if (result === 'ok') {
         nullyApplyVisible.value = true
@@ -75,7 +75,7 @@ const useInullyApply = (option: InullyApplyOptionType) => {
    */
   const recoverINullyApplyHandle = (item: any) => {
     getINullyApplyExample({
-      voidFlowInstanceId: item['FLOWINSID'],
+      voidFlowInstanceId: item['flowinsid'],
       isRecover: 1
     }).then((result: any) => {
       if (result) {
@@ -89,7 +89,7 @@ const useInullyApply = (option: InullyApplyOptionType) => {
    */
   const completelyVoidINullyApplyHandle = (item: any) => {
     completelyVoidINullyApply({
-      flowInstanceId: item['FLOWINSID']
+      flowInstanceId: item['flowinsid']
     }).then((res: any) => {
       if (res === 'ok') {
         option?.success && option.success(InullyApplyEnum.Nullify)

+ 18 - 18
client/src/views/OaSystem/mainOfficeCenter/lookAndApplyFlow.ts

@@ -27,23 +27,23 @@ const useLookAndApplyFlow = () => {
    */
   const openFlowHandle = (item: any, status?: string) => {
     const saveAndGetUrlReqParam = {
-      activityInsId: item['ACTIVITYINSID'] || '',
-      flowInsId: item['FLOWINSID'] || '',
-      participantId: item['PARTICIPANTID'] || '',
-      status: item['STATUS'] || status,
+      activityInsId: item['activityinsid'] || '',
+      flowInsId: item['flowinsid'] || '',
+      participantId: item['participantid'] || '',
+      status: item['status'] || status,
       userId: '',
       isView: true
     }
     //非待办件、委托直接打开
-    if (item['STATUS'] !== '1' && item['STATUS'] !== '2') {
+    if (item['status'] !== '1' && item['status'] !== '2') {
       saveAndGetUrl(saveAndGetUrlReqParam).then((result: any) => {
         const officeUrl = result.officeUrl
-        openFlow(router, officeUrl, '流程查看', item['ACTIVITYINSID'])
+        openFlow(router, officeUrl, '流程查看', item['activityinsid'])
       })
     } else {
       openOfficeTip({
-        activityInsId: item['ACTIVITYINSID'],
-        particiPantId: item['PARTICIPANTID'],
+        activityInsId: item['activityinsid'],
+        particiPantId: item['participantid'],
         isView: true
       }).then((res: any) => {
         if (!res.msg && res.isTip && !isEmpty(res.tipMsg)) {
@@ -54,13 +54,13 @@ const useLookAndApplyFlow = () => {
           }).then(() => {
             saveAndGetUrl(saveAndGetUrlReqParam).then((result: any) => {
               const officeUrl = result.officeUrl
-              openFlow(router, officeUrl, '流程查看', item['ACTIVITYINSID'])
+              openFlow(router, officeUrl, '流程查看', item['activityinsid'])
             })
           })
         } else {
           saveAndGetUrl(saveAndGetUrlReqParam).then((result: any) => {
             const officeUrl = result.officeUrl
-            openFlow(router, officeUrl, '流程查看', item['ACTIVITYINSID'])
+            openFlow(router, officeUrl, '流程查看', item['activityinsid'])
           })
         }
       })
@@ -71,22 +71,22 @@ const useLookAndApplyFlow = () => {
    */
   const flowApplyHandle = (item) => {
     const saveAndGetUrlReqParam = {
-      activityInsId: item['ACTIVITYINSID'],
-      flowInsId: item['FLOWINSID'],
-      participantId: item['PARTICIPANTID'],
-      status: item['STATUS'],
+      activityInsId: item['activityinsid'],
+      flowInsId: item['flowinsid'],
+      participantId: item['participantid'],
+      status: item['status'],
       userId: '',
       isView: false
     }
     openOfficeTip({
-      activityInsId: item['ACTIVITYINSID'],
-      particiPantId: item['PARTICIPANTID'],
+      activityInsId: item['activityinsid'],
+      particiPantId: item['participantid'],
       isView: false
     }).then((res: any) => {
       if (!res.isTip) {
         saveAndGetUrl(saveAndGetUrlReqParam).then((result: any) => {
           const officeUrl = result.officeUrl
-          openFlow(router, officeUrl, '流程办理', item['ACTIVITYINSID'])
+          openFlow(router, officeUrl, '流程办理', item['activityinsid'])
         })
       } else {
         ElMessageBox.confirm(res.tipMsg, '提示', {
@@ -96,7 +96,7 @@ const useLookAndApplyFlow = () => {
         }).then(() => {
           saveAndGetUrl(saveAndGetUrlReqParam).then((result: any) => {
             const officeUrl = result.officeUrl
-            openFlow(router, officeUrl, '流程办理', item['ACTIVITYINSID'])
+            openFlow(router, officeUrl, '流程办理', item['activityinsid'])
           })
         })
       }

+ 36 - 0
client/src/views/OaSystem/processContainer/index.vue

@@ -0,0 +1,36 @@
+<script setup lang="ts">
+/**
+ * 流程开启页面
+ */
+defineOptions({
+  name: 'ProcessContainer'
+})
+const { query } = useRoute()
+const { url } = query as {
+  url: string
+}
+</script>
+
+<template>
+  <div class="process-container">
+    <iframe class="process-content" v-if="url" :src="url" frameBorder="0"></iframe>
+  </div>
+</template>
+
+<style scoped lang="scss">
+.process-container {
+  margin-top: 20px;
+  // height: calc(100% - 20px);
+  height: 100%;
+  background-color: #fff;
+  border-radius: 20px;
+  position: relative;
+  text-align: center;
+  overflow: hidden;
+
+  .process-content {
+    width: 100%;
+    height: 100%;
+  }
+}
+</style>

+ 0 - 0
client/src/views/OaSystem/searchCenter/salary/index.scss


+ 11 - 0
client/src/views/OaSystem/searchCenter/salary/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <div>
+    <h1>薪资管理</h1>
+  </div>
+</template>
+
+<script lang="ts" scoped></script>
+
+<style lang="scss" scoped>
+@import './index.scss';
+</style>

+ 12 - 0
client/src/views/OaSystem/searchCenter/supplier/index.scss

@@ -0,0 +1,12 @@
+.container-header {
+  background-color: #ffffff;
+  padding-left: 20px;
+  padding-top: 20px;
+}
+
+.container-main {
+  background-color: #ffffff;
+  margin-top: 20px;
+  padding: 10px;
+}
+

+ 246 - 0
client/src/views/OaSystem/searchCenter/supplier/index.vue

@@ -0,0 +1,246 @@
+<!-- 供应商管理 -->
+<template>
+  <div class="container-header">
+    <el-form :inline="true">
+      <el-form-item label="供应商名称">
+        <el-input v-model="searchKey" placeholder="请输入供应商的名称" />
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="handleSearch">搜索</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button plain @click="resetSearchKey">重置</el-button>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="handleInsert">新增</el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+  <div class="container-main">
+    <el-table style="width: 100%" :data="list" @row-click="handleRowClick">
+      <el-table-column prop="supplierName" label="供应商名称" />
+      <el-table-column prop="contactPerson" label="联系人" />
+      <el-table-column prop="contactPhone" label="联系电话" />
+      <el-table-column prop="unitAddress" label="所在地" />
+      <el-table-column label="操作" width="200px">
+        <template #default="scope">
+          <el-button size="small" @click.stop="handleEdit(scope.row)">修改</el-button>
+          <el-button size="small" type="danger" @click.stop="handleDelete(scope.row)">
+            删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      background
+      layout="prev, pager, next"
+      :total="total"
+      style="margin-top: 20px"
+      :hide-on-single-page="true"
+      @current-change="handleCurrentChange"
+    />
+  </div>
+
+  <!-- 新增供应商的表单弹窗 -->
+  <el-dialog
+    v-model="dialogFormVisible"
+    :close-on-click-modal="false"
+    :title="dialogTitle"
+    @close="handleCloseDialog"
+  >
+    <el-form label-width="130px" :model="supply" ref="supplyRef">
+      <el-form-item prop="supplierId">
+        <el-input style="display: none" v-model="supply.supplierId" />
+      </el-form-item>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="供应商的名称" label-position="right" prop="supplierName">
+            <el-input v-model="supply.supplierName" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="统一社会信用代码" label-position="right" prop="unifiedCreditCode">
+            <el-input v-model="supply.unifiedCreditCode" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="联系人" label-position="right" prop="contactPerson">
+            <el-input v-model="supply.contactPerson" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="联系电话" label-position="right" prop="contactPhone">
+            <el-input v-model="supply.contactPhone" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="开户银行" label-position="right" prop="openingBank">
+            <el-input v-model="supply.openingBank" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="开户银行账户" label-position="right" prop="bankAccount">
+            <el-input v-model="supply.bankAccount" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col>
+          <el-form-item label="单位所在地" label-position="right" prop="unitAddress">
+            <el-input v-model="supply.unitAddress" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item v-if="isDetail">
+        <el-button @click="cancelSupply">取消</el-button>
+        <el-button type="primary" @click="submitSupply">提交</el-button>
+      </el-form-item>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script lang="ts" setup>
+import { ref, reactive } from 'vue'
+import * as SupplyApi from '@/api/supplier'
+
+const searchKey = ref('')
+const total = ref(0)
+const list = ref([])
+const dialogFormVisible = ref(false)
+const queryParams = reactive({
+  pageNo: 1,
+  pageSize: 10,
+  supplierName: ''
+})
+// 初始化表单数据
+const supply = reactive({
+  supplierId: '',
+  supplierName: '',
+  contactPerson: '',
+  contactPhone: '',
+  openingBank: '',
+  bankAccount: '',
+  unitAddress: '',
+  unifiedCreditCode: ''
+})
+const supplyRef = ref()
+let isUpdate = false
+const isDetail = ref(true)
+const dialogTitle = ref('新增供应商')
+
+// 获取供应商列表
+const supplyForm = async (json) => {
+  const data = await SupplyApi.getSupplierPage(json)
+  total.value = data.total
+  list.value = data.records
+}
+
+// 按供应商名称搜索
+const handleSearch = () => {
+  queryParams.supplierName = searchKey.value
+  supplyForm(queryParams)
+}
+
+// 重置搜索关键字
+const resetSearchKey = () => {
+  searchKey.value = ''
+  queryParams.supplierName = searchKey.value
+  supplyForm(queryParams)
+}
+
+// 新增供应商弹窗
+const handleInsert = () => {
+  dialogTitle.value = '新增供应商'
+  isDetail.value = true
+  dialogFormVisible.value = true
+  supply.supplierId = ''
+  supply.supplierName = ''
+  supply.contactPerson = ''
+  supply.contactPhone = ''
+  supply.openingBank = ''
+  supply.bankAccount = ''
+  supply.unitAddress = ''
+  supply.unifiedCreditCode = ''
+}
+
+// 新增/更新供应商
+const submitSupply = async () => {
+  let result
+  if (isUpdate) {
+    result = await SupplyApi.updateSupplier(supply)
+    isUpdate = false
+  } else {
+    result = await SupplyApi.createSupplier(supply)
+  }
+  if (result) {
+    supplyForm(queryParams)
+    dialogFormVisible.value = false
+    cancelSupply()
+  }
+}
+
+// 取消新增供应商
+const cancelSupply = () => {
+  supplyRef.value.resetFields()
+  dialogFormVisible.value = false
+  isUpdate = false
+}
+
+// 更新供应商
+const handleEdit = (row) => {
+  dialogTitle.value = '修改供应商'
+  isDetail.value = true
+  dialogFormVisible.value = true
+  supply.supplierId = row.supplierId
+  supply.supplierName = row.supplierName
+  supply.contactPerson = row.contactPerson
+  supply.contactPhone = row.contactPhone
+  supply.openingBank = row.openingBank
+  supply.bankAccount = row.bankAccount
+  supply.unitAddress = row.unitAddress
+  supply.unifiedCreditCode = row.unifiedCreditCode
+  isUpdate = true
+}
+
+// 删除供应商
+const handleDelete = async (row) => {
+  const id = row.supplierId
+  const result = await SupplyApi.deleteSupplier(id)
+  if (result) {
+    supplyForm(queryParams)
+  }
+}
+
+// 点击行查看详情
+const handleRowClick = (row) => {
+  dialogTitle.value = '供应商详情'
+  isDetail.value = false
+  dialogFormVisible.value = true
+  supply.supplierId = row.supplierId
+  supply.supplierName = row.supplierName
+  supply.contactPerson = row.contactPerson
+  supply.contactPhone = row.contactPhone
+  supply.openingBank = row.openingBank
+  supply.bankAccount = row.bankAccount
+  supply.unitAddress = row.unitAddress
+  supply.unifiedCreditCode = row.unifiedCreditCode
+}
+
+const handleCurrentChange = (index) => {
+  queryParams.pageNo = index
+  supplyForm(queryParams)
+}
+
+// 初始化列表数据
+onMounted(() => {
+  supplyForm({ pageNo: 1, pageSize: 10 })
+})
+</script>
+
+<style lang="scss" scoped>
+@import './index.scss';
+</style>

+ 1 - 0
zjugis-module-business/zjugis-module-business-biz/src/main/java/com/zjugis/module/business/flow/supplierinfo/entity/SupplierInfo.java

@@ -28,6 +28,7 @@ public class SupplierInfo extends BaseEntity {
     /**
      * 供应商的唯一标识代码
      */
+    @TableId(type = IdType.ASSIGN_UUID)
     private String supplierId;
 
     /**

+ 3 - 2
zjugis-module-business/zjugis-module-business-biz/src/main/java/com/zjugis/module/business/flow/supplierinfo/service/impl/SupplierInfoServiceImpl.java

@@ -36,6 +36,7 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
     public Page<SupplierInfoVO> selectSupplierInfoPage(SupplierInfoPageDTO createReqVO) {
         Page<SupplierInfoVO> page = new Page<>(createReqVO.getPageNo(), createReqVO.getPageSize());
         LambdaQueryWrapper<SupplierInfo> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SupplierInfo::getIsvalid, 1);
         if (StrUtil.isNotBlank(createReqVO.getSupplierName())) {
             wrapper.like(SupplierInfo::getSupplierName, createReqVO.getSupplierName());
         }
@@ -49,6 +50,7 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
     public String createSupplierInfo(SupplierInfoDTO createReqVO) {
         SupplierInfo supplierInfo = BeanUtil.copyProperties(createReqVO, SupplierInfo.class);
         supplierInfo.setCreateTime(LocalDateTime.now());
+        supplierInfo.setIsvalid(1);
         supplierInfoMapper.insert(supplierInfo);
         return supplierInfo.getSupplierId();
     }
@@ -75,8 +77,7 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
         if (one == null) {
             log.error(ErrorCodeConstants.SUPPLIER_INFO_NOT_EXISTS.getMsg());
         }
-
-        supplierInfoMapper.delete(wrapper);
+        supplierInfoMapper.deleteById(one);
     }
 
     @Override

+ 1 - 0
zjugis-module-business/zjugis-module-business-biz/src/main/java/com/zjugis/module/business/mapper/SupplierInfoMapper.java

@@ -21,4 +21,5 @@ public interface SupplierInfoMapper extends BaseMapper<SupplierInfo> {
     SupplierInfoVO getSupplierInfo(@Param(Constants.WRAPPER) LambdaQueryWrapper<SupplierInfo> wrapper);
 
     Page<SupplierInfoVO> selectSupplierInfoPage(Page<SupplierInfoVO> page, @Param(Constants.WRAPPER) LambdaQueryWrapper<SupplierInfo> wrapper);
+
 }

+ 0 - 1
zjugis-module-business/zjugis-module-business-biz/src/main/resources/mapper/SupplierInfoMapper.xml

@@ -1,7 +1,6 @@
 <?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.zjugis.module.business.mapper.SupplierInfoMapper">
-
     <select id="getSupplierInfo" resultType="com.zjugis.module.business.flow.supplierinfo.vo.SupplierInfoVO">
         SELECT * FROM oa_supplier_info
         ${ew.customSqlSegment}