Ver código fonte

1、采购合同基础接口完善

dongpo 7 meses atrás
pai
commit
58b30be813

+ 60 - 10
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/SupplierContractController.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.contract.controller.admin.suppliercontract;
 
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.enums.GeneralStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -11,11 +12,19 @@ import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.Sup
 import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractSaveReqVO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractDO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractHistoryDO;
+import cn.iocoder.yudao.module.contract.enums.ContractStatusEnum;
 import cn.iocoder.yudao.module.contract.service.suppliercontract.SupplierContractService;
+import cn.iocoder.yudao.module.employee.api.EmployeeApi;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springdoc.api.annotations.ParameterObject;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -24,7 +33,11 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -38,6 +51,15 @@ public class SupplierContractController {
     @Resource
     private SupplierContractService supplierContractService;
 
+    @Resource
+    private EmployeeApi employeeApi;
+
+    @Resource
+    private DeptApi deptApi;
+
+    @Resource
+    private FileApi fileApi;
+
     @GetMapping("/getSupplierContractCode")
     @Operation(summary = "获取采购合同编号")
     @ApiOperationSupport(order = 1)
@@ -81,31 +103,59 @@ public class SupplierContractController {
     public CommonResult<SupplierContractRespVO> getSupplierContract(@RequestParam("id") Long id) {
         SupplierContractDO supplierContract = supplierContractService.getSupplierContract(id);
         SupplierContractRespVO supplierContractRespVO = BeanUtils.toBean(supplierContract, SupplierContractRespVO.class);
-
-
+        // 是否描述集合
+        Map<Integer, String> generalStatusMap = Arrays.stream(GeneralStatusEnum.values())
+                .collect(Collectors.toMap(GeneralStatusEnum::getStatus, GeneralStatusEnum::getName));
+        // 是否框架合同
+        supplierContractRespVO.setIsFrameContractDesc(generalStatusMap.getOrDefault(supplierContract.getIsFrameContract(), "未知"));
+        // 负责人名称
+        EmployeeRespDTO ownerEmployee = employeeApi.getEmployeeById(supplierContract.getOwnerEmployeeId());
+        if (Objects.nonNull(ownerEmployee)) {
+            supplierContractRespVO.setOwnerEmployeeName(ownerEmployee.getName());
+        }
+        // 部门名称
+        DeptRespDTO ownerDept = deptApi.getDept(supplierContract.getDeptId());
+        if (Objects.nonNull(ownerDept)) {
+            supplierContractRespVO.setDeptName(ownerDept.getName());
+        }
+        // 合同状态描述
+        Map<String, String> contractStatusMap = Arrays.stream(ContractStatusEnum.values())
+                .collect(Collectors.toMap(ContractStatusEnum::getStatus, ContractStatusEnum::getDesc));
+        supplierContractRespVO.setContractStatusDesc(contractStatusMap.getOrDefault(supplierContract.getContractStatus(), "未知"));
+        // 是否关闭
+        supplierContractRespVO.setClosedDesc(generalStatusMap.getOrDefault(supplierContract.getClosed(), "未知"));
+        // 是否终止
+        supplierContractRespVO.setTerminateDesc(generalStatusMap.getOrDefault(supplierContract.getTerminate(), "未知"));
+
+        // 附件
+        List<FileDTO> fileDTOList = fileApi.getFileDTOListByBiz(supplierContract.getSupplierContractUuid());
+        supplierContractRespVO.setFileList(fileDTOList);
 
         return success(supplierContractRespVO);
     }
 
     @GetMapping("/page")
     @Operation(summary = "获得采购合同信息分页")
-    @PreAuthorize("@ss.hasPermission('contract:supplier-contract:query')")
-    public CommonResult<PageResult<SupplierContractRespVO>> getSupplierContractPage(@Valid SupplierContractPageReqVO pageReqVO) {
-        PageResult<SupplierContractDO> pageResult = supplierContractService.getSupplierContractPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, SupplierContractRespVO.class));
+    @ApiOperationSupport(order = 6)
+    // @PreAuthorize("@ss.hasPermission('contract:supplier-contract:query')")
+    public CommonResult<PageResult<SupplierContractRespVO>> getSupplierContractPage(@Valid @ParameterObject SupplierContractPageReqVO pageReqVO) {
+        PageResult<SupplierContractRespVO> pageResult = supplierContractService.getSupplierContractPage(pageReqVO);
+
+        return success(pageResult);
     }
 
     @GetMapping("/export-excel")
     @Operation(summary = "导出采购合同信息 Excel")
-    @PreAuthorize("@ss.hasPermission('contract:supplier-contract:export')")
+    @ApiOperationSupport(order = 7)
+    // @PreAuthorize("@ss.hasPermission('contract:supplier-contract:export')")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportSupplierContractExcel(@Valid SupplierContractPageReqVO pageReqVO,
+    public void exportSupplierContractExcel(@ParameterObject SupplierContractPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<SupplierContractDO> list = supplierContractService.getSupplierContractPage(pageReqVO).getList();
+        List<SupplierContractRespVO> list = supplierContractService.getSupplierContractPage(pageReqVO).getList();
         // 导出 Excel
         ExcelUtils.write(response, "采购合同信息.xls", "数据", SupplierContractRespVO.class,
-                        BeanUtils.toBean(list, SupplierContractRespVO.class));
+                        list);
     }
 
     // ==================== 子表(采购合同历史信息) ====================

+ 9 - 39
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractPageReqVO.java

@@ -7,10 +7,7 @@ import lombok.EqualsAndHashCode;
 import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 
 @Schema(description = "管理后台 - 采购合同信息分页 Request VO")
 @Data
@@ -21,31 +18,25 @@ public class SupplierContractPageReqVO extends PageParam {
     @Schema(description = "合同编号,年月日+uuid")
     private String supplierContractCode;
 
-    @Schema(description = "合同名称", example = "芋艿")
+    @Schema(description = "合同名称", example = "合同名称")
     private String supplierContractName;
 
-    @Schema(description = "是否为框架合同 0否 1是")
+    @Schema(description = "是否为框架合同 0否 1是", example = "0")
     private Integer isFrameContract;
 
-    @Schema(description = "供应商id", example = "4213")
-    private Long supplierId;
-
-    @Schema(description = "供应商名称", example = "王五")
+    @Schema(description = "供应商名称", example = "供应商名称")
     private String supplierName;
 
-    @Schema(description = "合同开始日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @Schema(description = "合同开始日期", example = "2024-08-12,2024-08-12")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private String[] startDate;
 
-    @Schema(description = "合同结束日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    @Schema(description = "合同结束日期", example = "2024-08-12,2024-08-12")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
     private String[] endDate;
 
-    @Schema(description = "合同金额")
-    private BigDecimal money;
-
     @Schema(description = "合同负责人", example = "5122")
-    private Long ownerEmployeeId;
+    private String ownerEmployeeName;
 
     @Schema(description = "负责人部门", example = "29650")
     private Long deptId;
@@ -56,27 +47,6 @@ public class SupplierContractPageReqVO extends PageParam {
     @Schema(description = "是否关闭 0开启 1关闭")
     private Integer closed;
 
-    @Schema(description = "关闭原因", example = "不喜欢")
-    private String closeReason;
-
     @Schema(description = "是否终止 0否 1是")
     private Integer terminate;
-
-    @Schema(description = "终止日期")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private String[] terminateDate;
-
-    @Schema(description = "终止原因", example = "不对")
-    private String terminateReason;
-
-    @Schema(description = "是否变更 0否 1是")
-    private Integer isChange;
-
-    @Schema(description = "备注")
-    private String remarks;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
 }

+ 16 - 4
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractRespVO.java

@@ -19,6 +19,10 @@ public class SupplierContractRespVO {
     @ExcelProperty("主键id")
     private Long id;
 
+    @Schema(description = "合同uuid")
+    @ExcelProperty("合同uuid")
+    private String supplierContractUuid;
+
     @Schema(description = "合同编号,年月日+uuid")
     @ExcelProperty("合同编号,年月日+uuid")
     private String supplierContractCode;
@@ -61,7 +65,7 @@ public class SupplierContractRespVO {
 
     @Schema(description = "合同负责人")
     @ExcelProperty("合同负责人")
-    private Long ownerEmployeeName;
+    private String ownerEmployeeName;
 
     @Schema(description = "负责人部门")
     @ExcelProperty("负责人部门")
@@ -69,7 +73,7 @@ public class SupplierContractRespVO {
 
     @Schema(description = "负责人部门名称")
     @ExcelProperty("负责人部门名称")
-    private Long deptName;
+    private String deptName;
 
     @Schema(description = "合同状态:0、未归档;1、已归档;2、已完结")
     @ExcelProperty("合同状态:0、未归档;1、已归档;2、已完结")
@@ -85,7 +89,7 @@ public class SupplierContractRespVO {
 
     @Schema(description = "是否关闭 0开启 1关闭")
     @ExcelProperty("是否关闭 0开启 1关闭")
-    private Integer closedDesc;
+    private String closedDesc;
 
     @Schema(description = "关闭原因")
     @ExcelProperty("关闭原因")
@@ -97,7 +101,7 @@ public class SupplierContractRespVO {
 
     @Schema(description = "是否终止 0否 1是")
     @ExcelProperty("是否终止 0否 1是")
-    private Integer terminateDesc;
+    private String terminateDesc;
 
     @Schema(description = "终止日期")
     @ExcelProperty("终止日期")
@@ -115,6 +119,14 @@ public class SupplierContractRespVO {
     @ExcelProperty("备注")
     private String remarks;
 
+    @Schema(description = "创建者id")
+    @ExcelProperty("创建者id")
+    private String creator;
+
+    @Schema(description = "创建者名称")
+    @ExcelProperty("创建者名称")
+    private String creatorName;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;

+ 7 - 9
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/mysql/suppliercontract/SupplierContractMapper.java

@@ -4,8 +4,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractPageReqVO;
+import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractRespVO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 采购合同信息 Mapper
@@ -20,23 +24,17 @@ public interface SupplierContractMapper extends BaseMapperX<SupplierContractDO>
                 .eqIfPresent(SupplierContractDO::getSupplierContractCode, reqVO.getSupplierContractCode())
                 .likeIfPresent(SupplierContractDO::getSupplierContractName, reqVO.getSupplierContractName())
                 .eqIfPresent(SupplierContractDO::getIsFrameContract, reqVO.getIsFrameContract())
-                .eqIfPresent(SupplierContractDO::getSupplierId, reqVO.getSupplierId())
                 .likeIfPresent(SupplierContractDO::getSupplierName, reqVO.getSupplierName())
                 .betweenIfPresent(SupplierContractDO::getStartDate, reqVO.getStartDate())
                 .betweenIfPresent(SupplierContractDO::getEndDate, reqVO.getEndDate())
-                .eqIfPresent(SupplierContractDO::getMoney, reqVO.getMoney())
-                .eqIfPresent(SupplierContractDO::getOwnerEmployeeId, reqVO.getOwnerEmployeeId())
                 .eqIfPresent(SupplierContractDO::getDeptId, reqVO.getDeptId())
                 .eqIfPresent(SupplierContractDO::getContractStatus, reqVO.getContractStatus())
                 .eqIfPresent(SupplierContractDO::getClosed, reqVO.getClosed())
-                .eqIfPresent(SupplierContractDO::getCloseReason, reqVO.getCloseReason())
                 .eqIfPresent(SupplierContractDO::getTerminate, reqVO.getTerminate())
-                .betweenIfPresent(SupplierContractDO::getTerminateDate, reqVO.getTerminateDate())
-                .eqIfPresent(SupplierContractDO::getTerminateReason, reqVO.getTerminateReason())
-                .eqIfPresent(SupplierContractDO::getIsChange, reqVO.getIsChange())
-                .eqIfPresent(SupplierContractDO::getRemarks, reqVO.getRemarks())
-                .betweenIfPresent(SupplierContractDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(SupplierContractDO::getId));
     }
 
+    long getPageCount(@Param("page") SupplierContractPageReqVO pageReqVO);
+
+    List<SupplierContractRespVO> getPageList(@Param("page") SupplierContractPageReqVO pageReqVO);
 }

+ 2 - 1
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/service/suppliercontract/SupplierContractService.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.contract.service.suppliercontract;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractPageReqVO;
+import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractRespVO;
 import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractSaveReqVO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractDO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractHistoryDO;
@@ -60,7 +61,7 @@ public interface SupplierContractService {
      * @param pageReqVO 分页查询
      * @return 采购合同信息分页
      */
-    PageResult<SupplierContractDO> getSupplierContractPage(SupplierContractPageReqVO pageReqVO);
+    PageResult<SupplierContractRespVO> getSupplierContractPage(SupplierContractPageReqVO pageReqVO);
 
     // ==================== 子表(采购合同历史信息) ====================
 

+ 17 - 2
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/service/suppliercontract/SupplierContractServiceImpl.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractPageReqVO;
+import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractRespVO;
 import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractSaveReqVO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractDO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractHistoryDO;
@@ -25,6 +26,7 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
 import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -151,8 +153,21 @@ public class SupplierContractServiceImpl implements SupplierContractService {
     }
 
     @Override
-    public PageResult<SupplierContractDO> getSupplierContractPage(SupplierContractPageReqVO pageReqVO) {
-        return supplierContractMapper.selectPage(pageReqVO);
+    public PageResult<SupplierContractRespVO> getSupplierContractPage(SupplierContractPageReqVO pageReqVO) {
+        pageReqVO.setPageNo((pageReqVO.getPageNo() - 1) * pageReqVO.getPageSize());
+
+        long pageCount = -1;
+        if (!PageParam.PAGE_SIZE_NONE.equals(pageReqVO.getPageSize())) {
+            pageCount = supplierContractMapper.getPageCount(pageReqVO);
+        }
+
+        if (pageCount == 0) {
+            return PageResult.empty();
+        }
+
+        List<SupplierContractRespVO> pageList = supplierContractMapper.getPageList(pageReqVO);
+
+        return new PageResult<>(pageList, pageCount);
     }
 
     // ==================== 子表(采购合同历史信息) ====================

+ 139 - 0
yudao-module-finance/yudao-module-contract-biz/src/main/resources/mapper/suppliercontract/SupplierContractMapper.xml

@@ -9,4 +9,143 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
+    <select id="getPageCount" resultType="java.lang.Long">
+        SELECT
+            count(fsc.id)
+        FROM
+            finance_supplier_contract fsc
+            LEFT JOIN employee_info ei ON ei.id = fsc.owner_employee_id AND ei.deleted = 0
+            LEFT JOIN system_dept sd ON sd.id = fsc.dept_id AND sd.deleted = 0
+            LEFT JOIN employee_info ei2 ON ei2.id = fsc.creator AND ei2.deleted = 0
+        WHERE
+            fsc.deleted = 0
+        <if test="page.supplierContractCode != null and page.supplierContractCode != ''">
+            AND fsc.supplier_contract_code like concat('%',#{page.supplierContractCode},'%')
+        </if>
+        <if test="page.supplierContractName != null and page.supplierContractName != ''">
+            AND fsc.supplier_contract_name like concat('%',#{page.supplierContractName},'%')
+        </if>
+        <if test="page.isFrameContract != null">
+            AND fsc.is_frame_contract = #{page.isFrameContract}
+        </if>
+        <if test="page.supplierName != null and page.supplierName != ''">
+            AND fsc.supplier_name like concat('%',#{page.supplierName},'%')
+        </if>
+        <if test="page.startDate != null and page.startDate.length > 0">
+            AND fsc.start_date BETWEEN #{page.startDate[0]} AND #{page.startDate[1]}
+        </if>
+        <if test="page.endDate != null and page.endDate.length > 0">
+            AND fsc.end_date BETWEEN #{page.endDate[0]} AND #{page.endDate[1]}
+        </if>
+        <if test="page.ownerEmployeeName != null and page.ownerEmployeeName != ''">
+            AND ei.name like concat('%',#{page.ownerEmployeeName},'%')
+        </if>
+        <if test="page.deptId != null">
+            AND fsc.dept_id = #{page.deptId}
+        </if>
+        <if test="page.contractStatus != null and page.contractStatus != ''">
+            AND fsc.contract_status = #{page.contractStatus}
+        </if>
+        <if test="page.closed != null">
+            AND fsc.closed = #{page.closed}
+        </if>
+        <if test="page.terminate != null">
+            AND fsc.terminate = #{page.terminate}
+        </if>
+    </select>
+    <select id="getPageList"
+            resultType="cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractRespVO">
+        SELECT
+            fsc.id,
+            fsc.supplier_contract_uuid,
+            fsc.supplier_contract_code,
+            fsc.supplier_contract_name,
+            fsc.is_frame_contract,
+               CASE
+                   WHEN fsc.is_frame_contract = 1 THEN '是'
+                   WHEN fsc.is_frame_contract = 0 THEN '否'
+                   ELSE '未知'
+               END AS isFrameContractDesc,
+            fsc.supplier_id,
+            fsc.supplier_name,
+            fsc.start_date,
+            fsc.end_date,
+            fsc.money,
+            fsc.owner_employee_id,
+               ei.name AS ownerEmployeeName,
+            fsc.dept_id,
+               sd.name AS deptName,
+            fsc.contract_status,
+                CASE
+                    WHEN fsc.contract_status = 0 THEN '未归档'
+                    WHEN fsc.contract_status = 1 THEN '已归档'
+                    WHEN fsc.contract_status = 2 THEN '已完结'
+                    ELSE '未知'
+                END AS contractStatusDesc,
+            fsc.closed,
+               CASE
+                    WHEN fsc.closed = 1 THEN '是'
+                    WHEN fsc.closed = 0 THEN '否'
+                    ELSE '未知'
+                END AS closedDesc,
+            fsc.close_reason,
+            fsc.terminate,
+               CASE
+                   WHEN fsc.terminate = 1 THEN '是'
+                   WHEN fsc.terminate = 0 THEN '否'
+                   ELSE '未知'
+               END AS terminateDesc,
+            fsc.terminate_date,
+            fsc.terminate_reason,
+            fsc.is_change,
+            fsc.remarks,
+            fsc.creator,
+               ei2.name AS creatorName,
+            fsc.create_time
+        FROM
+            finance_supplier_contract fsc
+                LEFT JOIN employee_info ei ON ei.id = fsc.owner_employee_id AND ei.deleted = 0
+                LEFT JOIN system_dept sd ON sd.id = fsc.dept_id AND sd.deleted = 0
+                LEFT JOIN employee_info ei2 ON ei2.id = fsc.creator AND ei2.deleted = 0
+        WHERE
+            fsc.deleted = 0
+        <if test="page.supplierContractCode != null and page.supplierContractCode != ''">
+            AND fsc.supplier_contract_code like concat('%',#{page.supplierContractCode},'%')
+        </if>
+        <if test="page.supplierContractName != null and page.supplierContractName != ''">
+            AND fsc.supplier_contract_name like concat('%',#{page.supplierContractName},'%')
+        </if>
+        <if test="page.isFrameContract != null">
+            AND fsc.is_frame_contract = #{page.isFrameContract}
+        </if>
+        <if test="page.supplierName != null and page.supplierName != ''">
+            AND fsc.supplier_name like concat('%',#{page.supplierName},'%')
+        </if>
+        <if test="page.startDate != null and page.startDate.length > 0">
+            AND fsc.start_date BETWEEN #{page.startDate[0]} AND #{page.startDate[1]}
+        </if>
+        <if test="page.endDate != null and page.endDate.length > 0">
+            AND fsc.end_date BETWEEN #{page.endDate[0]} AND #{page.endDate[1]}
+        </if>
+        <if test="page.ownerEmployeeName != null and page.ownerEmployeeName != ''">
+            AND ei.name like concat('%',#{page.ownerEmployeeName},'%')
+        </if>
+        <if test="page.deptId != null">
+            AND fsc.dept_id = #{page.deptId}
+        </if>
+        <if test="page.contractStatus != null and page.contractStatus != ''">
+            AND fsc.contract_status = #{page.contractStatus}
+        </if>
+        <if test="page.closed != null">
+            AND fsc.closed = #{page.closed}
+        </if>
+        <if test="page.terminate != null">
+            AND fsc.terminate = #{page.terminate}
+        </if>
+        ORDER BY
+            fsc.create_time DESC
+        <if test="page.pageSize != -1">
+            LIMIT #{page.pageNo}, #{page.pageSize}
+        </if>
+    </select>
 </mapper>