diff --git a/sql/cms-ext/codegen-cms-ext-sql.sql b/sql/cms-ext/codegen-cms-ext-sql.sql new file mode 100644 index 000000000..982dd72aa --- /dev/null +++ b/sql/cms-ext/codegen-cms-ext-sql.sql @@ -0,0 +1,55 @@ +-- 菜单 SQL +INSERT INTO system_menu( + name, permission, type, sort, parent_id, + path, icon, component, status, component_name +) +VALUES ( + '外部合同管理', '', 2, 0, 2758, + 'ext-contract', '', 'cms-ext/extcontract/index', 0, 'ExtContract' + ); + +-- 按钮父菜单ID +-- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +INSERT INTO system_menu( + name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '外部合同查询', 'cms-ext:ext-contract:query', 3, 1, @parentId, + '', '', '', 0 + ); +INSERT INTO system_menu( + name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '外部合同创建', 'cms-ext:ext-contract:create', 3, 2, @parentId, + '', '', '', 0 + ); +INSERT INTO system_menu( + name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '外部合同更新', 'cms-ext:ext-contract:update', 3, 3, @parentId, + '', '', '', 0 + ); +INSERT INTO system_menu( + name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '外部合同删除', 'cms-ext:ext-contract:delete', 3, 4, @parentId, + '', '', '', 0 + ); +INSERT INTO system_menu( + name, permission, type, sort, parent_id, + path, icon, component, status +) +VALUES ( + '外部合同导出', 'cms-ext:ext-contract:export', 3, 5, @parentId, + '', '', '', 0 + ); diff --git a/sql/cms/codegen-cms-sql.sql b/sql/cms/codegen-cms-sql.sql new file mode 100644 index 000000000..f56225345 --- /dev/null +++ b/sql/cms/codegen-cms-sql.sql @@ -0,0 +1,31 @@ +-- 菜单 SQL +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status, component_name) +VALUES ('合同管理', '', 2, 0, 2758, + 'contract', '', 'cms/contract/index', 0, 'Contract'); + +-- 按钮父菜单ID +-- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('合同查询', 'cms:contract:query', 3, 1, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('合同创建', 'cms:contract:create', 3, 2, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('合同更新', 'cms:contract:update', 3, 3, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('合同删除', 'cms:contract:delete', 3, 4, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('合同导出', 'cms:contract:export', 3, 5, @parentId, + '', '', '', 0); diff --git a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ErrorCodeConstants.java b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ErrorCodeConstants.java index 82e047b8e..a1760b150 100644 --- a/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ErrorCodeConstants.java +++ b/yudao-module-cms/yudao-module-cms-api/src/main/java/cn/iocoder/yudao/module/cms/enums/ErrorCodeConstants.java @@ -8,10 +8,11 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode; * @date 2024/7/3 */ public interface ErrorCodeConstants { - ErrorCode CUSTOMER_COMPANY_NOT_EXISTS = new ErrorCode(1_020_000_000, "客户公司管理不存在"); ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(2_020_000_000, "合同不存在"); + ErrorCode EXT_CONTRACT_NOT_EXISTS = new ErrorCode(2_021_000_000, "外部合同不存在"); + diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java index 506ecd6de..4a97ea65f 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/ContractController.java @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO; import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractSaveReqVO; -import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO; import cn.iocoder.yudao.module.cms.service.contract.ContractService; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; @@ -16,7 +15,6 @@ import io.swagger.v3.oas.annotations.Operation; import jakarta.validation.*; import jakarta.servlet.http.*; import java.io.IOException; -import java.math.BigDecimal; import java.util.List; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.CommonResult; diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java index 19b2b3cb2..57800a7a6 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractRespVO.java @@ -26,9 +26,9 @@ public class ContractRespVO { @ExcelProperty("项目经理") private String projectManager; - @Schema(description = "合同提示时间") - @ExcelProperty("合同提示时间") - private LocalDateTime reminderTime; + @Schema(description = "分包合同提示时间") + @ExcelProperty("分包合同提示时间") + private LocalDateTime subReminderTime; @Schema(description = "暂定结算数") @ExcelProperty("暂定结算数") diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java index 10fc4adb6..3428a597b 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/contract/vo/ContractSaveReqVO.java @@ -97,4 +97,28 @@ public class ContractSaveReqVO { @Schema(description = "其他费") private BigDecimal otherFee; + @Schema(description = "创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建时间不能为空") + private LocalDateTime createTime; + + @Schema(description = "更新者") + private String updater; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "更新时间不能为空") + private LocalDateTime updateTime; + + @Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否删除不能为空") + private Boolean deleted; + + @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12587") + @NotNull(message = "租户编号不能为空") + private Long tenantId; + + + } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/ExtContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/ExtContractController.java new file mode 100644 index 000000000..eba5ecf70 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/ExtContractController.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.cms.controller.admin.extcontract; + +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractPageReqVO; +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractRespVO; +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractSaveReqVO; +import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO; +import cn.iocoder.yudao.module.cms.service.extcontract.ExtContractService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 外部合同") +@RestController +@RequestMapping("/cms-ext/ext-contract") +@Validated +public class ExtContractController { + + @Resource + private ExtContractService extContractService; + + @PostMapping("/create") + @Operation(summary = "创建外部合同") + @PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:create')") + public CommonResult createExtContract(@Valid @RequestBody ExtContractSaveReqVO createReqVO) { + return success(extContractService.createExtContract(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新外部合同") + @PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:update')") + public CommonResult updateExtContract(@Valid @RequestBody ExtContractSaveReqVO updateReqVO) { + extContractService.updateExtContract(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除外部合同") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:delete')") + public CommonResult deleteExtContract(@RequestParam("id") Long id) { + extContractService.deleteExtContract(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得外部合同") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:query')") + public CommonResult getExtContract(@RequestParam("id") Long id) { + ExtContractRespVO extContract = extContractService.getExtContract(id); + return success(extContract); + } + + @GetMapping("/page") + @Operation(summary = "获得外部合同分页") + @PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:query')") + public CommonResult> getExtContractPage(@Valid ExtContractPageReqVO pageReqVO) { + PageResult pageResult = extContractService.getExtContractPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ExtContractRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出外部合同 Excel") + @PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportExtContractExcel(@Valid ExtContractPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = extContractService.getExtContractPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "外部合同.xls", "数据", ExtContractRespVO.class, + BeanUtils.toBean(list, ExtContractRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractPageReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractPageReqVO.java new file mode 100644 index 000000000..6b2ae7df8 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractPageReqVO.java @@ -0,0 +1,110 @@ +package cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 外部合同分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ExtContractPageReqVO extends PageParam { + + @Schema(description = "项目id", example = "30598") + private Long projectId; + + @Schema(description = "合同名称", example = "芋艿") + private String name; + + @Schema(description = "合同类型", example = "1") + private String type; + + @Schema(description = "客户公司id", example = "25191") + private Long customerCompanyId; + + @Schema(description = "合同进展") + private String progress; + + @Schema(description = "预计签订时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] expectedTime; + + @Schema(description = "签订时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] signingTime; + + @Schema(description = "归档时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] archiveTime; + + @Schema(description = "状态", example = "2") + private String status; + + @Schema(description = "合同金额") + private BigDecimal amount; + + @Schema(description = "前期费用") + private BigDecimal preAmount; + + @Schema(description = "设计费") + private BigDecimal designFee; + + @Schema(description = "勘测费") + private BigDecimal surveyFees; + + @Schema(description = "检测费") + private BigDecimal testingFee; + + @Schema(description = "其他费") + private String otherFee; + + @Schema(description = "计费方式", example = "1") + private String countType; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "合同附件url", example = "https://www.iocoder.cn") + private String contractFileUrl; + + @Schema(description = "建安费") + private BigDecimal constructionCost; + + @Schema(description = "资金来源") + private String source; + + @Schema(description = "收费标准") + private String chargingStandard; + + @Schema(description = "优惠", example = "15529") + private String discount; + + @Schema(description = "是否联合体") + private Boolean consortium; + + @Schema(description = "联合体单位") + private String consortiumCompany; + + @Schema(description = "合同提示时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] reminderTime; + + @Schema(description = "审定金额") + private BigDecimal approvedAmount; + + @Schema(description = "审核文件url", example = "https://www.iocoder.cn") + private String reviewFileUrl; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "合同id", example = "27460") + private Long contractId; + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractRespVO.java new file mode 100644 index 000000000..d423255d9 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractRespVO.java @@ -0,0 +1,159 @@ +package cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 外部合同 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ExtContractRespVO { + + + @Schema(description = "项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "SJ24001") + @ExcelProperty("项目编号") + private String code; + + + @Schema(description = "合同名称", example = "芋艿") + @ExcelProperty("合同名称") + private String name; + + @Schema(description = "合同类型", example = "1") + @ExcelProperty("合同类型") + private String type; + + + @Schema(description = "客户名称") + @ExcelProperty("客户名称") + private String customerCompanyName; + + @Schema(description = "主控部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "生产一部") + @ExcelProperty("主控部门") + private String trackingDep; + + @Schema(description = "项目经理", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目经理") + private String projectManager; + + @Schema(description = "合同提示时间") + @ExcelProperty("合同提示时间") + private LocalDateTime reminderTime; + + @Schema(description = "合同进展") + @ExcelProperty("合同进展") + private String progress; + + @Schema(description = "预计签订时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("预计签订时间") + private LocalDateTime expectedTime; + + @Schema(description = "签订时间") + @ExcelProperty("签订时间") + private LocalDateTime signingTime; + + @Schema(description = "归档时间") + @ExcelProperty("归档时间") + private LocalDateTime archiveTime; + + @Schema(description = "状态", example = "2") + @ExcelProperty("状态") + private String status; + + @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同金额") + private BigDecimal amount; + + @Schema(description = "前期费用") + @ExcelProperty("前期费用") + private BigDecimal preAmount; + + @Schema(description = "设计费") + @ExcelProperty("设计费") + private BigDecimal designFee; + + @Schema(description = "勘测费") + @ExcelProperty("勘测费") + private BigDecimal surveyFees; + + @Schema(description = "检测费") + @ExcelProperty("检测费") + private BigDecimal testingFee; + + @Schema(description = "其他费") + @ExcelProperty("其他费") + private String otherFee; + + @Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("计费方式") + private String countType; + + @Schema(description = "备注", example = "你猜") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "合同附件url", example = "https://www.iocoder.cn") + @ExcelProperty("合同附件url") + private String contractFileUrl; + + @Schema(description = "建安费") + @ExcelProperty("建安费") + private BigDecimal constructionCost; + + @Schema(description = "资金来源") + @ExcelProperty("资金来源") + private String source; + + @Schema(description = "分包合同提示时间") + @ExcelProperty("分包合同提示时间") + private LocalDateTime subReminderTime; + + @Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收费标准") + private String chargingStandard; + + @Schema(description = "优惠", example = "15529") + @ExcelProperty("优惠") + private String discount; + + @Schema(description = "是否联合体", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否联合体") + private Boolean consortium; + + @Schema(description = "联合体单位") + @ExcelProperty("联合体单位") + private String consortiumCompany; + + + @Schema(description = "审定金额") + @ExcelProperty("审定金额") + private BigDecimal approvedAmount; + + @Schema(description = "审核文件url", example = "https://www.iocoder.cn") + @ExcelProperty("审核文件url") + private String reviewFileUrl; + + + @Schema(description = "合同id", example = "27460") + @ExcelProperty("合同id") + private Long contractId; + + + @Schema(description = "创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建时间不能为空") + private LocalDateTime createTime; + + @Schema(description = "更新者") + private String updater; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "更新时间不能为空") + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractSaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractSaveReqVO.java new file mode 100644 index 000000000..23f507c43 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/extcontract/vo/ExtContractSaveReqVO.java @@ -0,0 +1,129 @@ +package cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import jakarta.validation.constraints.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 外部合同新增/修改 Request VO") +@Data +public class ExtContractSaveReqVO { + + @Schema(description = "外部合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30598") + @NotNull(message = "项目id不能为空") + private Long projectId; + + @Schema(description = "合同名称", example = "芋艿") + private String name; + + @Schema(description = "合同类型", example = "1") + private String type; + + @Schema(description = "客户公司id", example = "25191") + private Long customerCompanyId; + + @Schema(description = "合同进展") + private String progress; + + @Schema(description = "预计签订时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "预计签订时间不能为空") + private LocalDateTime expectedTime; + + @Schema(description = "签订时间") + private LocalDateTime signingTime; + + @Schema(description = "归档时间") + private LocalDateTime archiveTime; + + @Schema(description = "状态", example = "2") + private String status; + + @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同金额不能为空") + private BigDecimal amount; + + @Schema(description = "前期费用") + private BigDecimal preAmount; + + @Schema(description = "设计费") + private BigDecimal designFee; + + @Schema(description = "勘测费") + private BigDecimal surveyFees; + + @Schema(description = "检测费") + private BigDecimal testingFee; + + @Schema(description = "其他费") + private String otherFee; + + @Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "计费方式不能为空") + private String countType; + + @Schema(description = "备注", example = "你猜") + private String remark; + + @Schema(description = "合同附件url", example = "https://www.iocoder.cn") + private String contractFileUrl; + + @Schema(description = "建安费") + private BigDecimal constructionCost; + + @Schema(description = "资金来源") + private String source; + + @Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收费标准不能为空") + private String chargingStandard; + + @Schema(description = "优惠", example = "15529") + private String discount; + + @Schema(description = "是否联合体", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否联合体不能为空") + private Boolean consortium; + + @Schema(description = "联合体单位") + private String consortiumCompany; + + @Schema(description = "合同提示时间") + private LocalDateTime reminderTime; + + @Schema(description = "审定金额") + private BigDecimal approvedAmount; + + @Schema(description = "审核文件url", example = "https://www.iocoder.cn") + private String reviewFileUrl; + + @Schema(description = "合同id", example = "27460") + private Long contractId; + + @Schema(description = "创建者") + private String creator; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "创建时间不能为空") + private LocalDateTime createTime; + + @Schema(description = "更新者") + private String updater; + + @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "更新时间不能为空") + private LocalDateTime updateTime; + + @Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否删除不能为空") + private Boolean deleted; + + @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12587") + @NotNull(message = "租户编号不能为空") + private Long tenantId; + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java index 485c50623..08af77378 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/contract/ContractDO.java @@ -133,24 +133,4 @@ public class ContractDO extends BaseDO { */ private BigDecimal otherFee; - /** - * 创建者 - */ - private String creator; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 更新者 - */ - private String updater; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - } \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extcontract/ExtContractDO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extcontract/ExtContractDO.java new file mode 100644 index 000000000..b8ad0b689 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/dataobject/extcontract/ExtContractDO.java @@ -0,0 +1,152 @@ +package cn.iocoder.yudao.module.cms.dal.dataobject.extcontract; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDateTime; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 外部合同 DO + * + * @author 管理员 + */ +@TableName("cms_ext_contract") +@KeySequence("cms_ext_contract_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ExtContractDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 项目id + */ + private Long projectId; + /** + * 合同名称 + */ + private String name; + /** + * 合同类型 + */ + private String type; + /** + * 客户公司id + */ + private Long customerCompanyId; + /** + * 合同进展 + */ + private String progress; + /** + * 预计签订时间 + */ + private LocalDateTime expectedTime; + /** + * 签订时间 + */ + private LocalDateTime signingTime; + /** + * 归档时间 + */ + private LocalDateTime archiveTime; + /** + * 状态 + */ + private String status; + /** + * 合同金额 + */ + private BigDecimal amount; + /** + * 前期费用 + */ + private BigDecimal preAmount; + /** + * 设计费 + */ + private BigDecimal designFee; + /** + * 勘测费 + */ + private BigDecimal surveyFees; + /** + * 检测费 + */ + private BigDecimal testingFee; + /** + * 其他费 + */ + private String otherFee; + /** + * 计费方式 + */ + private String countType; + /** + * 备注 + */ + private String remark; + /** + * 合同附件url + */ + private String contractFileUrl; + /** + * 建安费 + */ + private BigDecimal constructionCost; + /** + * 资金来源 + */ + private String source; + /** + * 收费标准 + */ + private String chargingStandard; + /** + * 优惠 + */ + private String discount; + /** + * 是否联合体 + */ + private Boolean consortium; + /** + * 联合体单位 + */ + private String consortiumCompany; + + /** + * 分包合同提示时间 + */ + private LocalDateTime subReminderTime; + /** + * 审定金额 + */ + private BigDecimal approvedAmount; + /** + * 审核文件url + */ + private String reviewFileUrl; + /** + * 合同id + */ + private Long contractId; + + /** + * 合同提示时间 + */ + private LocalDateTime reminderTime; + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/mysql/extcontract/ExtContractMapper.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/mysql/extcontract/ExtContractMapper.java new file mode 100644 index 000000000..2e7cc77b6 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/dal/mysql/extcontract/ExtContractMapper.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.cms.dal.mysql.extcontract; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractPageReqVO; +import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 外部合同 Mapper + * + * @author 管理员 + */ +@Mapper +public interface ExtContractMapper extends BaseMapperX { + + default PageResult selectPage(ExtContractPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ExtContractDO::getName, reqVO.getName()) + .eqIfPresent(ExtContractDO::getType, reqVO.getType()) + .eqIfPresent(ExtContractDO::getCustomerCompanyId, reqVO.getCustomerCompanyId()) + .eqIfPresent(ExtContractDO::getProgress, reqVO.getProgress()) + .betweenIfPresent(ExtContractDO::getExpectedTime, reqVO.getExpectedTime()) + .betweenIfPresent(ExtContractDO::getSigningTime, reqVO.getSigningTime()) + .betweenIfPresent(ExtContractDO::getArchiveTime, reqVO.getArchiveTime()) + .eqIfPresent(ExtContractDO::getStatus, reqVO.getStatus()) + .eqIfPresent(ExtContractDO::getAmount, reqVO.getAmount()) + .eqIfPresent(ExtContractDO::getPreAmount, reqVO.getPreAmount()) + .eqIfPresent(ExtContractDO::getDesignFee, reqVO.getDesignFee()) + .eqIfPresent(ExtContractDO::getSurveyFees, reqVO.getSurveyFees()) + .eqIfPresent(ExtContractDO::getTestingFee, reqVO.getTestingFee()) + .eqIfPresent(ExtContractDO::getOtherFee, reqVO.getOtherFee()) + .eqIfPresent(ExtContractDO::getCountType, reqVO.getCountType()) + .eqIfPresent(ExtContractDO::getRemark, reqVO.getRemark()) + .eqIfPresent(ExtContractDO::getContractFileUrl, reqVO.getContractFileUrl()) + .eqIfPresent(ExtContractDO::getConstructionCost, reqVO.getConstructionCost()) + .eqIfPresent(ExtContractDO::getSource, reqVO.getSource()) + .eqIfPresent(ExtContractDO::getChargingStandard, reqVO.getChargingStandard()) + .eqIfPresent(ExtContractDO::getDiscount, reqVO.getDiscount()) + .eqIfPresent(ExtContractDO::getConsortium, reqVO.getConsortium()) + .eqIfPresent(ExtContractDO::getConsortiumCompany, reqVO.getConsortiumCompany()) + .eqIfPresent(ExtContractDO::getApprovedAmount, reqVO.getApprovedAmount()) + .eqIfPresent(ExtContractDO::getReviewFileUrl, reqVO.getReviewFileUrl()) + .betweenIfPresent(ExtContractDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ExtContractDO::getContractId, reqVO.getContractId()) + .orderByDesc(ExtContractDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java index 4a46d32d7..fd0315f4a 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.cms.service.contract; +import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO; import cn.iocoder.yudao.module.cms.dal.mysql.contract.ContractMapper; +import cn.iocoder.yudao.module.cms.dal.mysql.extcontract.ExtContractMapper; import cn.iocoder.yudao.module.pms.api.ProjectApi; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO; import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO; @@ -16,6 +18,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -38,6 +41,9 @@ public class ContractServiceImpl implements ContractService { @Resource private ProjectApi projectApi; + @Resource + private ExtContractMapper extContractMapper; + @Override public Long createContract(ContractSaveReqVO createReqVO) { @@ -82,7 +88,7 @@ public class ContractServiceImpl implements ContractService { // 3.项目经理 pms_project找到的是id 需要联表 √ // 4.出图公司 pms_project 直接 √ // 5.预计合同金额 pms_project 直接 √ -// 6.分包合同商议提示 pms_project_schedule +// 6.分包合同商议提示 √ // 7.暂定结算数 √ ProjectRespDTO project = projectApi.getProject(projectId); contractRespVO.setCode(project.getCode()); @@ -93,6 +99,11 @@ public class ContractServiceImpl implements ContractService { contractRespVO.setTrackingDep(projectDetail.getTrackingDepName()); contractRespVO.setProjectManager(projectDetail.getProjectManagerName()); + //分包合同商议提示 + ExtContractDO extContractDO = extContractMapper.selectOne("project_id",projectId); + LocalDateTime reminderTime = extContractDO.getSubReminderTime(); + contractRespVO.setSubReminderTime(reminderTime); + //暂定结算数 BigDecimal provisionalSettlement = getProvisionalSettlement(id); contractRespVO.setProvisionalSettlement(provisionalSettlement); diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontract/ExtContractService.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontract/ExtContractService.java new file mode 100644 index 000000000..b426961ec --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontract/ExtContractService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.cms.service.extcontract; + + +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractPageReqVO; +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractRespVO; +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractSaveReqVO; +import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO; +import jakarta.validation.*; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +/** + * 外部合同 Service 接口 + * + * @author 管理员 + */ +public interface ExtContractService { + + /** + * 创建外部合同 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createExtContract(@Valid ExtContractSaveReqVO createReqVO); + + /** + * 更新外部合同 + * + * @param updateReqVO 更新信息 + */ + void updateExtContract(@Valid ExtContractSaveReqVO updateReqVO); + + /** + * 删除外部合同 + * + * @param id 编号 + */ + void deleteExtContract(Long id); + + /** + * 获得外部合同 + * + * @param id 编号 + * @return 外部合同 + */ + ExtContractRespVO getExtContract(Long id); + + /** + * 获得外部合同分页 + * + * @param pageReqVO 分页查询 + * @return 外部合同分页 + */ + PageResult getExtContractPage(ExtContractPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontract/ExtContractServiceImpl.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontract/ExtContractServiceImpl.java new file mode 100644 index 000000000..5d407df7f --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extcontract/ExtContractServiceImpl.java @@ -0,0 +1,83 @@ +package cn.iocoder.yudao.module.cms.service.extcontract; + +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractPageReqVO; +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractRespVO; +import cn.iocoder.yudao.module.cms.controller.admin.extcontract.vo.ExtContractSaveReqVO; +import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO; +import cn.iocoder.yudao.module.cms.dal.mysql.extcontract.ExtContractMapper; +import cn.iocoder.yudao.module.pms.api.ProjectApi; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.EXT_CONTRACT_NOT_EXISTS; + +/** + * 外部合同 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class ExtContractServiceImpl implements ExtContractService { + + @Resource + private ExtContractMapper extContractMapper; + + @Resource + private ProjectApi projectApi; + + @Override + public Long createExtContract(ExtContractSaveReqVO createReqVO) { + // 插入 + ExtContractDO extContract = BeanUtils.toBean(createReqVO, ExtContractDO.class); + extContractMapper.insert(extContract); + // 返回 + return extContract.getId(); + } + + @Override + public void updateExtContract(ExtContractSaveReqVO updateReqVO) { + // 更新 + ExtContractDO updateObj = BeanUtils.toBean(updateReqVO, ExtContractDO.class); + extContractMapper.updateById(updateObj); + } + + @Override + public void deleteExtContract(Long id) { + // 校验存在 + validateExtContractExists(id); + // 删除 + extContractMapper.deleteById(id); + } + + private void validateExtContractExists(Long id) { + if (extContractMapper.selectById(id) == null) { + throw exception(EXT_CONTRACT_NOT_EXISTS); + } + } + + // 需要联表查询 + // 1.项目编号 pms_project 直接 + // 2.主控部门(跟踪部门) pms_project找到的是id 需要联表 + // 3.项目经理 pms_project找到的是id 需要联表 + // 4.客户名称 pms_project 联表 + // 5.合同总金额 + // 6.合同商议提示(和分包提示不一样) + @Override + public ExtContractRespVO getExtContract(Long id) { + ExtContractDO extContractDO = extContractMapper.selectById(id); + Long projectId = extContractDO.getProjectId(); + + return null; + } + + @Override + public PageResult getExtContractPage(ExtContractPageReqVO pageReqVO) { + return extContractMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/resources/mapper/customerCompany/contract/ContractMapper.xml b/yudao-module-cms/yudao-module-cms-biz/src/main/resources/mapper.contract/ContractMapper.xml similarity index 100% rename from yudao-module-cms/yudao-module-cms-biz/src/main/resources/mapper/customerCompany/contract/ContractMapper.xml rename to yudao-module-cms/yudao-module-cms-biz/src/main/resources/mapper.contract/ContractMapper.xml diff --git a/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/clean.sql b/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/clean.sql index 3d732089f..81b5d45bc 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/clean.sql +++ b/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/clean.sql @@ -1,2 +1,3 @@ -- 将该删表 SQL 语句,添加到 yudao-module-cms-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "cms_contract"; \ No newline at end of file +DELETE +FROM "cms_contract"; \ No newline at end of file diff --git a/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/create_tables.sql b/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/create_tables.sql index e69de29bb..af39f1d92 100644 --- a/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/create_tables.sql +++ b/yudao-module-cms/yudao-module-cms-biz/src/test/resources/sql/create_tables.sql @@ -0,0 +1,39 @@ +-- 将该建表 SQL 语句,添加到 yudao-module-cms-biz 模块的 test/resources/sql/create_tables.sql 文件里 +CREATE TABLE IF NOT EXISTS "cms_contract" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "project_id" bigint NOT NULL, + "name" varchar NOT NULL, + "type" varchar NOT NULL, + "progress" varchar NOT NULL, + "expected_time" varchar NOT NULL, + "printing_time" varchar NOT NULL, + "signing_time" varchar, + "archive_time" varchar, + "status" varchar NOT NULL, + "count_type" varchar, + "remark" varchar, + "contract_file_url" varchar, + "construction_cost" varchar, + "source" varchar, + "discount" varchar, + "consortium" bit, + "consortium_company" varchar, + "ext_proportion" varchar, + "approved_amount" varchar NOT NULL, + "review_file_url" varchar, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + "tenant_id" bigint NOT NULL, + "amount" varchar, + "pre_amount" varchar, + "design_amount" varchar, + "survey_fees" varchar, + "measurement_fee" varchar, + "other_fee" varchar, + PRIMARY KEY ("id") +) COMMENT '合同'; + diff --git a/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/api/cms-ext/extcontract/index.ts b/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/api/cms-ext/extcontract/index.ts new file mode 100644 index 000000000..440cc6730 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/api/cms-ext/extcontract/index.ts @@ -0,0 +1,67 @@ +import request from '@/config/axios' + +// 外部合同 VO +export interface ExtContractVO { + id: number // 主键 + projectId: number // 项目id + name: string // 合同名称 + type: string // 合同类型 + customerCompanyId: number // 客户公司id + progress: string // 合同进展 + expectedTime: Date // 预计签订时间 + signingTime: Date // 签订时间 + archiveTime: Date // 归档时间 + status: string // 状态 + amount: number // 合同金额 + preAmount: number // 前期费用 + designFee: number // 设计费 + surveyFees: number // 勘测费 + testingFee: number // 检测费 + otherFee: string // 其他费 + countType: string // 计费方式 + remark: string // 备注 + contractFileUrl: string // 合同附件url + constructionCost: number // 建安费 + source: string // 资金来源 + chargingStandard: string // 收费标准 + discount: string // 优惠 + consortium: boolean // 是否联合体 + consortiumCompany: string // 联合体单位 + reminderTime: Date // 合同提示时间 + approvedAmount: number // 审定金额 + reviewFileUrl: string // 审核文件url + contractId: number // 合同id +} + +// 外部合同 API +export const ExtContractApi = { + // 查询外部合同分页 + getExtContractPage: async (params: any) => { + return await request.get({ url: `/cms-ext/ext-contract/page`, params }) + }, + + // 查询外部合同详情 + getExtContract: async (id: number) => { + return await request.get({ url: `/cms-ext/ext-contract/get?id=` + id }) + }, + + // 新增外部合同 + createExtContract: async (data: ExtContractVO) => { + return await request.post({ url: `/cms-ext/ext-contract/create`, data }) + }, + + // 修改外部合同 + updateExtContract: async (data: ExtContractVO) => { + return await request.put({ url: `/cms-ext/ext-contract/update`, data }) + }, + + // 删除外部合同 + deleteExtContract: async (id: number) => { + return await request.delete({ url: `/cms-ext/ext-contract/delete?id=` + id }) + }, + + // 导出外部合同 Excel + exportExtContract: async (params) => { + return await request.download({ url: `/cms-ext/ext-contract/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/views/cms-ext/extcontract/ExtContractForm.vue b/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/views/cms-ext/extcontract/ExtContractForm.vue new file mode 100644 index 000000000..7632f7d51 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/views/cms-ext/extcontract/ExtContractForm.vue @@ -0,0 +1,260 @@ + + \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/views/cms-ext/extcontract/index.vue b/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/views/cms-ext/extcontract/index.vue new file mode 100644 index 000000000..b4a868edd --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-cms-ext/src/views/cms-ext/extcontract/index.vue @@ -0,0 +1,520 @@ + + + \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-cms/src/api/cms/contract/index.ts b/yudao-ui/yudao-ui-admin-vue3-cms/src/api/cms/contract/index.ts new file mode 100644 index 000000000..52592ee99 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-cms/src/api/cms/contract/index.ts @@ -0,0 +1,69 @@ +import request from '@/config/axios' + +// 合同 VO +export interface ContractVO { + name: string // 合同名称 + type: string // 合同类型 + progress: string // 合同进展 + expectedTime: Date // 合同拟定时间 + printingTime: Date // 合同用印时间 + signingTime: Date // 签订时间 + archiveTime: Date // 归档时间 + status: string // 合同状态 + countType: string // 计费方式 + remark: string // 备注 + contractFileUrl: string // 合同url + constructionCost: number // 建安费 + source: string // 资金来源 + discount: string // 优惠 + consortium: boolean // 是否联合体 + consortiumCompany: string // 联合体单位 + extProportion: string // 占主合同比例 + approvedAmount: number // 审定金额 + reviewFileUrl: string // 审核文件url + creator: string // 创建者 + createTime: Date // 创建时间 + updater: string // 更新者 + updateTime: Date // 更新时间 + deleted: boolean // 是否删除 + tenantId: number // 租户编号 + amount: number // 签订合同总额 + preAmount: number // 前期费 + designAmount: number // 设计费 + surveyFees: number // 勘测费 + measurementFee: number // 测量费 + otherFee: number // 其他费 +} + +// 合同 API +export const ContractApi = { + // 查询合同分页 + getContractPage: async (params: any) => { + return await request.get({ url: `/cms/contract/page`, params }) + }, + + // 查询合同详情 + getContract: async (id: number) => { + return await request.get({ url: `/cms/contract/get?id=` + id }) + }, + + // 新增合同 + createContract: async (data: ContractVO) => { + return await request.post({ url: `/cms/contract/create`, data }) + }, + + // 修改合同 + updateContract: async (data: ContractVO) => { + return await request.put({ url: `/cms/contract/update`, data }) + }, + + // 删除合同 + deleteContract: async (id: number) => { + return await request.delete({ url: `/cms/contract/delete?id=` + id }) + }, + + // 导出合同 Excel + exportContract: async (params) => { + return await request.download({ url: `/cms/contract/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-cms/src/views/cms/contract/ContractForm.vue b/yudao-ui/yudao-ui-admin-vue3-cms/src/views/cms/contract/ContractForm.vue new file mode 100644 index 000000000..ad9477057 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-cms/src/views/cms/contract/ContractForm.vue @@ -0,0 +1,290 @@ + + \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3-cms/src/views/cms/contract/index.vue b/yudao-ui/yudao-ui-admin-vue3-cms/src/views/cms/contract/index.vue new file mode 100644 index 000000000..a07459d51 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3-cms/src/views/cms/contract/index.vue @@ -0,0 +1,541 @@ + + + \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/cms/contract/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/cms/contract/index.ts new file mode 100644 index 000000000..52592ee99 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3/src/api/cms/contract/index.ts @@ -0,0 +1,69 @@ +import request from '@/config/axios' + +// 合同 VO +export interface ContractVO { + name: string // 合同名称 + type: string // 合同类型 + progress: string // 合同进展 + expectedTime: Date // 合同拟定时间 + printingTime: Date // 合同用印时间 + signingTime: Date // 签订时间 + archiveTime: Date // 归档时间 + status: string // 合同状态 + countType: string // 计费方式 + remark: string // 备注 + contractFileUrl: string // 合同url + constructionCost: number // 建安费 + source: string // 资金来源 + discount: string // 优惠 + consortium: boolean // 是否联合体 + consortiumCompany: string // 联合体单位 + extProportion: string // 占主合同比例 + approvedAmount: number // 审定金额 + reviewFileUrl: string // 审核文件url + creator: string // 创建者 + createTime: Date // 创建时间 + updater: string // 更新者 + updateTime: Date // 更新时间 + deleted: boolean // 是否删除 + tenantId: number // 租户编号 + amount: number // 签订合同总额 + preAmount: number // 前期费 + designAmount: number // 设计费 + surveyFees: number // 勘测费 + measurementFee: number // 测量费 + otherFee: number // 其他费 +} + +// 合同 API +export const ContractApi = { + // 查询合同分页 + getContractPage: async (params: any) => { + return await request.get({ url: `/cms/contract/page`, params }) + }, + + // 查询合同详情 + getContract: async (id: number) => { + return await request.get({ url: `/cms/contract/get?id=` + id }) + }, + + // 新增合同 + createContract: async (data: ContractVO) => { + return await request.post({ url: `/cms/contract/create`, data }) + }, + + // 修改合同 + updateContract: async (data: ContractVO) => { + return await request.put({ url: `/cms/contract/update`, data }) + }, + + // 删除合同 + deleteContract: async (id: number) => { + return await request.delete({ url: `/cms/contract/delete?id=` + id }) + }, + + // 导出合同 Excel + exportContract: async (params) => { + return await request.download({ url: `/cms/contract/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/cms/contract/ContractForm.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/cms/contract/ContractForm.vue new file mode 100644 index 000000000..ad9477057 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/cms/contract/ContractForm.vue @@ -0,0 +1,290 @@ + + \ No newline at end of file diff --git a/yudao-ui/yudao-ui-admin-vue3/src/views/cms/contract/index.vue b/yudao-ui/yudao-ui-admin-vue3/src/views/cms/contract/index.vue new file mode 100644 index 000000000..a07459d51 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3/src/views/cms/contract/index.vue @@ -0,0 +1,541 @@ + + + \ No newline at end of file