From 05b67077092ebf1b951a56a8e5a5c3e5810c24bb Mon Sep 17 00:00:00 2001 From: Qiancheng Zhao <15226586396@163.com> Date: Fri, 26 Jul 2024 09:46:18 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=E6=B7=BB=E5=8A=A0=E5=8D=9A=E7=88=B1?= =?UTF-8?q?=E9=94=99=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../module/cms/enums/ErrorCodeConstants.java | 4 +- .../outscontract/OutsContractController.java | 95 +++++++++++++++++++ .../vo/OutsContractPageReqVO.java | 54 +++++++++++ .../outscontract/vo/OutsContractRespVO.java | 68 +++++++++++++ .../vo/OutsContractSaveReqVO.java | 49 ++++++++++ .../admin/project/ProjectController.java | 1 + .../resources/mapper/budget/BudgetMapper.xml | 12 +++ .../budgethistory/BudgetHistoryMapper.xml | 12 +++ .../src/main/resources/application-local.yaml | 6 +- 10 files changed, 298 insertions(+), 4 deletions(-) create mode 100644 yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java create mode 100644 yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractPageReqVO.java create mode 100644 yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractRespVO.java create mode 100644 yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractSaveReqVO.java create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budget/BudgetMapper.xml create mode 100644 yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budgethistory/BudgetHistoryMapper.xml diff --git a/.gitignore b/.gitignore index 09ec36308..e3c9eced6 100644 --- a/.gitignore +++ b/.gitignore @@ -50,4 +50,5 @@ rebel.xml application-my.yaml +application-local.yaml /yudao-ui-app/unpackage/ 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 a1760b150..72353662e 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 @@ -13,7 +13,9 @@ public interface ErrorCodeConstants { ErrorCode EXT_CONTRACT_NOT_EXISTS = new ErrorCode(2_021_000_000, "外部合同不存在"); + ErrorCode CONTRACT_OUTS_NOT_EXISTS = new ErrorCode(2_022_000_000, "外部合同不存在"); + ErrorCode OUTS_CONTRACT_NOT_EXISTS = new ErrorCode(2_022_000_000, "外部合同不存在"); - + ErrorCode OUTS_CONTRACT_HISTORY_NOT_EXISTS = new ErrorCode(2_022_000_000, "外部合同不存在"); } diff --git a/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java new file mode 100644 index 000000000..1bf70f01a --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/OutsContractController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.cms.controller.admin.outscontract; + +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.constraints.*; +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.*; + +import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.*; +import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDO; +import cn.iocoder.yudao.module.cms.service.outscontract.OutsContractService; + +@Tag(name = "管理后台 - 外包合同") +@RestController +@RequestMapping("/cms/outs-contract") +@Validated +public class OutsContractController { + + @Resource + private OutsContractService outsContractService; + + @PostMapping("/create") + @Operation(summary = "创建外包合同") + @PreAuthorize("@ss.hasPermission('cms:outs-contract:create')") + public CommonResult createOutsContract(@Valid @RequestBody OutsContractSaveReqVO createReqVO) { + return success(outsContractService.createOutsContract(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新外包合同") + @PreAuthorize("@ss.hasPermission('cms:outs-contract:update')") + public CommonResult updateOutsContract(@Valid @RequestBody OutsContractSaveReqVO updateReqVO) { + outsContractService.updateOutsContract(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除外包合同") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('cms:outs-contract:delete')") + public CommonResult deleteOutsContract(@RequestParam("id") Long id) { + outsContractService.deleteOutsContract(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得外包合同") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('cms:outs-contract:query')") + public CommonResult getOutsContract(@RequestParam("id") Long id) { + OutsContractDO outsContract = outsContractService.getOutsContract(id); + return success(BeanUtils.toBean(outsContract, OutsContractRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得外包合同分页") + @PreAuthorize("@ss.hasPermission('cms:outs-contract:query')") + public CommonResult> getOutsContractPage(@Valid OutsContractPageReqVO pageReqVO) { + PageResult pageResult = outsContractService.getOutsContractPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, OutsContractRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出外包合同 Excel") + @PreAuthorize("@ss.hasPermission('cms:outs-contract:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportOutsContractExcel(@Valid OutsContractPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = outsContractService.getOutsContractPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "外包合同.xls", "数据", OutsContractRespVO.class, + BeanUtils.toBean(list, OutsContractRespVO.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/outscontract/vo/OutsContractPageReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractPageReqVO.java new file mode 100644 index 000000000..06951ed4f --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractPageReqVO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo; + +import lombok.*; +import java.util.*; +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 OutsContractPageReqVO extends PageParam { + + @Schema(description = "项目id", example = "27415") + private Long projectId; + + @Schema(description = "合同名称", example = "张三") + private String name; + + @Schema(description = "主合同id", example = "19816") + private Long contractId; + + @Schema(description = "类型", example = "2") + private String countType; + + @Schema(description = "合同金额") + private BigDecimal amount; + + @Schema(description = "编号") + private String code; + + @Schema(description = "专业") + private String major; + + @Schema(description = "签订时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] signingTime; + + @Schema(description = "结算数") + private BigDecimal settlementAmount; + + @Schema(description = "合同文件url", example = "https://www.iocoder.cn") + private String contractFileUrl; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ 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/outscontract/vo/OutsContractRespVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractRespVO.java new file mode 100644 index 000000000..031c5cec9 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractRespVO.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 外包合同 Response VO") +@Data +@ExcelIgnoreUnannotated +public class OutsContractRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2034") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27415") + @ExcelProperty("项目id") + private Long projectId; + + @Schema(description = "合同名称", example = "张三") + @ExcelProperty("合同名称") + private String name; + + @Schema(description = "主合同id", example = "19816") + @ExcelProperty("主合同id") + private Long contractId; + + @Schema(description = "类型", example = "2") + @ExcelProperty(value = "类型", converter = DictConvert.class) + @DictFormat("contract_billing_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String countType; + + @Schema(description = "合同金额") + @ExcelProperty("合同金额") + private BigDecimal amount; + + @Schema(description = "编号") + @ExcelProperty("编号") + private String code; + + @Schema(description = "专业") + @ExcelProperty(value = "专业", converter = DictConvert.class) + @DictFormat("major") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String major; + + @Schema(description = "签订时间") + @ExcelProperty("签订时间") + private LocalDateTime signingTime; + + @Schema(description = "结算数") + @ExcelProperty("结算数") + private BigDecimal settlementAmount; + + @Schema(description = "合同文件url", example = "https://www.iocoder.cn") + @ExcelProperty("合同文件url") + private String contractFileUrl; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ 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/outscontract/vo/OutsContractSaveReqVO.java b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractSaveReqVO.java new file mode 100644 index 000000000..c8642c911 --- /dev/null +++ b/yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/controller/admin/outscontract/vo/OutsContractSaveReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 外包合同新增/修改 Request VO") +@Data +public class OutsContractSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2034") + private Long id; + + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27415") + @NotNull(message = "项目id不能为空") + private Long projectId; + + @Schema(description = "合同名称", example = "张三") + private String name; + + @Schema(description = "主合同id", example = "19816") + private Long contractId; + + @Schema(description = "类型", example = "2") + private String countType; + + @Schema(description = "合同金额") + private BigDecimal amount; + + @Schema(description = "编号") + private String code; + + @Schema(description = "专业") + private String major; + + @Schema(description = "签订时间") + private LocalDateTime signingTime; + + @Schema(description = "结算数") + private BigDecimal settlementAmount; + + @Schema(description = "合同文件url", example = "https://www.iocoder.cn") + private String contractFileUrl; + +} \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java index 4516fb40b..2dc71f791 100644 --- a/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/project/ProjectController.java @@ -66,6 +66,7 @@ public class ProjectController { return success(true); } + // 点击编辑页面后显示的内容 @GetMapping("/get") @Operation(summary = "获得项目基本信息") @Parameter(name = "id", description = "编号", required = true, example = "1024") diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budget/BudgetMapper.xml b/yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budget/BudgetMapper.xml new file mode 100644 index 000000000..88629a3bb --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budget/BudgetMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budgethistory/BudgetHistoryMapper.xml b/yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budgethistory/BudgetHistoryMapper.xml new file mode 100644 index 000000000..e0c46a655 --- /dev/null +++ b/yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/budgethistory/BudgetHistoryMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index aebad3541..63f281490 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -45,7 +45,7 @@ spring: primary: master datasource: master: - url: jdbc:mysql://127.0.0.1:3307/hhyykk?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + url: jdbc:mysql://127.0.0.1:3306/hhyykk?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai # MySQL Connector/J 5.X 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例 # url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例 @@ -54,7 +54,7 @@ spring: # url: jdbc:kingbase8://127.0.0.1:54321/test # 人大金仓 KingbaseES 连接的示例 # url: jdbc:postgresql://127.0.0.1:5432/postgres # OpenGauss 连接的示例 username: root - password: root + password: we9085@z # username: sa # SQL Server 连接的示例 # password: Yudao@2024 # SQL Server 连接的示例 # username: SYSDBA # DM 连接的示例 @@ -63,7 +63,7 @@ spring: # password: Yudao@2024 # OpenGauss 连接的示例 slave: # 模拟从库,可根据自己需要修改 lazy: true # 开启懒加载,保证启动速度 - url: jdbc:mysql://127.0.0.1:3307/db1?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://127.0.0.1:3306/db1?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true username: root password: root