Browse Source

1、采购合同接口调整

dongpo 7 months ago
parent
commit
05a3e6fc9e
17 changed files with 361 additions and 102 deletions
  1. 39 0
      yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/GeneralStatusEnum.java
  2. 1 1
      yudao-module-finance/yudao-module-asset-biz/src/main/java/cn/iocoder/yudao/module/asset/controller/admin/assetinfo/AssetInfoController.java
  3. 1 1
      yudao-module-finance/yudao-module-asset-biz/src/main/java/cn/iocoder/yudao/module/asset/controller/admin/assetreceiveinfo/AssetReceiveInfoController.java
  4. 35 0
      yudao-module-finance/yudao-module-contract-api/src/main/java/cn/iocoder/yudao/module/contract/enums/ContractStatusEnum.java
  5. 23 6
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/SupplierContractController.java
  6. 23 0
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractCloseReqVO.java
  7. 11 9
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractPageReqVO.java
  8. 48 21
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractRespVO.java
  9. 24 42
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractSaveReqVO.java
  10. 21 0
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractStatusReqVO.java
  11. 25 0
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractTerminatedReqVO.java
  12. 9 5
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/dataobject/suppliercontract/SupplierContractDO.java
  13. 9 5
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/dataobject/suppliercontract/SupplierContractHistoryDO.java
  14. 2 2
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/mysql/suppliercontract/SupplierContractHistoryMapper.java
  15. 6 8
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/mysql/suppliercontract/SupplierContractMapper.java
  16. 8 0
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/service/suppliercontract/SupplierContractService.java
  17. 76 2
      yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/service/suppliercontract/SupplierContractServiceImpl.java

+ 39 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/GeneralStatusEnum.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.framework.common.enums;
+
+/**
+ * 通用状态枚举 0否 1是
+ */
+public enum GeneralStatusEnum {
+    /**
+     * 0否
+     */
+    DISABLE(0, "否"),
+    /**
+     * 1是
+     */
+    ENABLE(1, "是");
+
+    private final Integer status;
+    private final String statusDesc;
+
+    GeneralStatusEnum(Integer status, String statusDesc) {
+        this.status = status;
+        this.statusDesc = statusDesc;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public String getName() {
+        return statusDesc;
+    }
+
+    public static boolean isDisable(Integer status) {
+        return DISABLE.getStatus().equals(status);
+    }
+
+    public static boolean isEnable(Integer status) {
+        return ENABLE.getStatus().equals(status);
+    }
+}

+ 1 - 1
yudao-module-finance/yudao-module-asset-biz/src/main/java/cn/iocoder/yudao/module/asset/controller/admin/assetinfo/AssetInfoController.java

@@ -43,7 +43,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "管理后台 - 固定资产信息")
 @RestController
-@RequestMapping("/asset/info")
+@RequestMapping("/finance/asset/info")
 @Validated
 public class AssetInfoController {
 

+ 1 - 1
yudao-module-finance/yudao-module-asset-biz/src/main/java/cn/iocoder/yudao/module/asset/controller/admin/assetreceiveinfo/AssetReceiveInfoController.java

@@ -43,7 +43,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "管理后台 - 固定资产领用、归还信息")
 @RestController
-@RequestMapping("/asset/receive-info")
+@RequestMapping("/finance/asset/receive-info")
 @Validated
 public class AssetReceiveInfoController {
 

+ 35 - 0
yudao-module-finance/yudao-module-contract-api/src/main/java/cn/iocoder/yudao/module/contract/enums/ContractStatusEnum.java

@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.contract.enums;
+
+/**
+ * 采购合同状态枚举:0、未归档;1、已归档;2、已完结
+ */
+public enum ContractStatusEnum {
+    /**
+     * 0未归档
+     */
+    UNARCHIVED("0", "未归档"),
+    /**
+     * 1已归档
+     */
+    ARCHIVED("1", "已归档"),
+    /**
+     * 2已完结
+     */
+    END("2", "已完结");
+
+    private final String status;
+    private final String desc;
+
+    ContractStatusEnum(String status, String desc) {
+        this.status = status;
+        this.desc = desc;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

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

@@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.Sup
 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.service.suppliercontract.SupplierContractService;
+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;
@@ -30,23 +31,33 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "管理后台 - 采购合同信息")
 @RestController
-@RequestMapping("/contract/supplier-contract")
+@RequestMapping("/finance/contract/supplier-contract")
 @Validated
 public class SupplierContractController {
 
     @Resource
     private SupplierContractService supplierContractService;
 
+    @GetMapping("/getSupplierContractCode")
+    @Operation(summary = "获取采购合同编号")
+    @ApiOperationSupport(order = 1)
+    // @PreAuthorize("@ss.hasPermission('contract:supplier-contract:create')")
+    public CommonResult<String> getSupplierContractCode() {
+        return success(supplierContractService.getSupplierContractCode());
+    }
+
     @PostMapping("/create")
     @Operation(summary = "创建采购合同信息")
-    @PreAuthorize("@ss.hasPermission('contract:supplier-contract:create')")
+    @ApiOperationSupport(order = 2)
+    // @PreAuthorize("@ss.hasPermission('contract:supplier-contract:create')")
     public CommonResult<Long> createSupplierContract(@Valid @RequestBody SupplierContractSaveReqVO createReqVO) {
         return success(supplierContractService.createSupplierContract(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新采购合同信息")
-    @PreAuthorize("@ss.hasPermission('contract:supplier-contract:update')")
+    @ApiOperationSupport(order = 3)
+    // @PreAuthorize("@ss.hasPermission('contract:supplier-contract:update')")
     public CommonResult<Boolean> updateSupplierContract(@Valid @RequestBody SupplierContractSaveReqVO updateReqVO) {
         supplierContractService.updateSupplierContract(updateReqVO);
         return success(true);
@@ -54,8 +65,9 @@ public class SupplierContractController {
 
     @DeleteMapping("/delete")
     @Operation(summary = "删除采购合同信息")
+    @ApiOperationSupport(order = 4)
     @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('contract:supplier-contract:delete')")
+    // @PreAuthorize("@ss.hasPermission('contract:supplier-contract:delete')")
     public CommonResult<Boolean> deleteSupplierContract(@RequestParam("id") Long id) {
         supplierContractService.deleteSupplierContract(id);
         return success(true);
@@ -63,11 +75,16 @@ public class SupplierContractController {
 
     @GetMapping("/get")
     @Operation(summary = "获得采购合同信息")
+    @ApiOperationSupport(order = 5)
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('contract:supplier-contract:query')")
+    // @PreAuthorize("@ss.hasPermission('contract:supplier-contract:query')")
     public CommonResult<SupplierContractRespVO> getSupplierContract(@RequestParam("id") Long id) {
         SupplierContractDO supplierContract = supplierContractService.getSupplierContract(id);
-        return success(BeanUtils.toBean(supplierContract, SupplierContractRespVO.class));
+        SupplierContractRespVO supplierContractRespVO = BeanUtils.toBean(supplierContract, SupplierContractRespVO.class);
+
+
+
+        return success(supplierContractRespVO);
     }
 
     @GetMapping("/page")

+ 23 - 0
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractCloseReqVO.java

@@ -0,0 +1,23 @@
+package cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 采购合同开启/关闭 Request VO")
+@Data
+public class SupplierContractCloseReqVO {
+
+    @Schema(description = "主键id")
+    @NotNull(message = "主键id不能为空")
+    private Long id;
+
+    @Schema(description = "是否关闭 0开启 1关闭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "是否关闭 0开启 1关闭不能为空")
+    private Integer closed;
+
+    @Schema(description = "关闭原因", example = "不喜欢")
+    private String closeReason;
+
+}

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

@@ -1,11 +1,13 @@
 package cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.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 io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+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;
@@ -17,10 +19,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 public class SupplierContractPageReqVO extends PageParam {
 
     @Schema(description = "合同编号,年月日+uuid")
-    private String code;
+    private String supplierContractCode;
 
     @Schema(description = "合同名称", example = "芋艿")
-    private String name;
+    private String supplierContractName;
 
     @Schema(description = "是否为框架合同 0否 1是")
     private Integer isFrameContract;
@@ -48,8 +50,8 @@ public class SupplierContractPageReqVO extends PageParam {
     @Schema(description = "负责人部门", example = "29650")
     private Long deptId;
 
-    @Schema(description = "合同状态:1、未归档;2、已归档;3、已完结", example = "2")
-    private String status;
+    @Schema(description = "合同状态:0、未归档;1、已归档;2、已完结", example = "2")
+    private String contractStatus;
 
     @Schema(description = "是否关闭 0开启 1关闭")
     private Integer closed;
@@ -58,7 +60,7 @@ public class SupplierContractPageReqVO extends PageParam {
     private String closeReason;
 
     @Schema(description = "是否终止 0否 1是")
-    private Integer terminated;
+    private Integer terminate;
 
     @Schema(description = "终止日期")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

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

@@ -1,35 +1,40 @@
 package cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import java.util.*;
+import lombok.Data;
+
 import java.math.BigDecimal;
-import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
+import java.util.List;
 
 @Schema(description = "管理后台 - 采购合同信息 Response VO")
 @Data
 @ExcelIgnoreUnannotated
 public class SupplierContractRespVO {
 
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1053")
+    @Schema(description = "主键id")
     @ExcelProperty("主键id")
     private Long id;
 
     @Schema(description = "合同编号,年月日+uuid")
     @ExcelProperty("合同编号,年月日+uuid")
-    private String code;
+    private String supplierContractCode;
 
-    @Schema(description = "合同名称", example = "芋艿")
+    @Schema(description = "合同名称")
     @ExcelProperty("合同名称")
-    private String name;
+    private String supplierContractName;
 
-    @Schema(description = "是否为框架合同 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "是否为框架合同 0否 1是")
     @ExcelProperty("是否为框架合同 0否 1是")
     private Integer isFrameContract;
 
+    @Schema(description = "是否为框架合同描述 0否 1是")
+    @ExcelProperty("是否为框架合同描述 0否 1是")
+    private String isFrameContractDesc;
+
     @Schema(description = "供应商id", example = "4213")
     @ExcelProperty("供应商id")
     private Long supplierId;
@@ -50,39 +55,59 @@ public class SupplierContractRespVO {
     @ExcelProperty("合同金额")
     private BigDecimal money;
 
-    @Schema(description = "合同负责人", example = "5122")
+    @Schema(description = "合同负责人")
     @ExcelProperty("合同负责人")
     private Long ownerEmployeeId;
 
-    @Schema(description = "负责人部门", example = "29650")
+    @Schema(description = "合同负责人")
+    @ExcelProperty("合同负责人")
+    private Long ownerEmployeeName;
+
+    @Schema(description = "负责人部门")
     @ExcelProperty("负责人部门")
     private Long deptId;
 
-    @Schema(description = "合同状态:1、未归档;2、已归档;3、已完结", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty("合同状态:1、未归档;2、已归档;3、已完结")
-    private String status;
+    @Schema(description = "负责人部门名称")
+    @ExcelProperty("负责人部门名称")
+    private Long deptName;
+
+    @Schema(description = "合同状态:0、未归档;1、已归档;2、已完结")
+    @ExcelProperty("合同状态:0、未归档;1、已归档;2、已完结")
+    private String contractStatus;
 
-    @Schema(description = "是否关闭 0开启 1关闭", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "合同状态描述:0、未归档;1、已归档;2、已完结")
+    @ExcelProperty("合同状态描述:0、未归档;1、已归档;2、已完结")
+    private String contractStatusDesc;
+
+    @Schema(description = "是否关闭 0开启 1关闭")
     @ExcelProperty("是否关闭 0开启 1关闭")
     private Integer closed;
 
-    @Schema(description = "关闭原因", example = "不喜欢")
+    @Schema(description = "是否关闭 0开启 1关闭")
+    @ExcelProperty("是否关闭 0开启 1关闭")
+    private Integer closedDesc;
+
+    @Schema(description = "关闭原因")
     @ExcelProperty("关闭原因")
     private String closeReason;
 
-    @Schema(description = "是否终止 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "是否终止 0否 1是")
+    @ExcelProperty("是否终止 0否 1是")
+    private Integer terminate;
+
+    @Schema(description = "是否终止 0否 1是")
     @ExcelProperty("是否终止 0否 1是")
-    private Integer terminated;
+    private Integer terminateDesc;
 
     @Schema(description = "终止日期")
     @ExcelProperty("终止日期")
     private String terminateDate;
 
-    @Schema(description = "终止原因", example = "不对")
+    @Schema(description = "终止原因")
     @ExcelProperty("终止原因")
     private String terminateReason;
 
-    @Schema(description = "是否变更 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "是否变更 0否 1是")
     @ExcelProperty("是否变更 0否 1是")
     private Integer isChange;
 
@@ -94,4 +119,6 @@ public class SupplierContractRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
 }

+ 24 - 42
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractSaveReqVO.java

@@ -3,75 +3,57 @@ package cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
+import java.util.List;
 
 @Schema(description = "管理后台 - 采购合同信息新增/修改 Request VO")
 @Data
 public class SupplierContractSaveReqVO {
 
-    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1053")
+    @Schema(description = "主键id")
     private Long id;
 
-    @Schema(description = "合同编号,年月日+uuid")
-    private String code;
+    @Schema(description = "合同编号,年月日+uuid", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024080965a74fe2f33c4273803d08d2b5e4aefb")
+    @NotBlank(message = "合同编号不能为空")
+    private String supplierContractCode;
 
-    @Schema(description = "合同名称", example = "芋艿")
-    private String name;
+    @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "合同名称不能为空")
+    @NotBlank(message = "合同名称不能为空")
+    private String supplierContractName;
 
-    @Schema(description = "是否为框架合同 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "是否为框架合同 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
     @NotNull(message = "是否为框架合同 0否 1是不能为空")
     private Integer isFrameContract;
 
-    @Schema(description = "供应商id", example = "4213")
+    @Schema(description = "供应商id")
     private Long supplierId;
 
-    @Schema(description = "供应商名称", example = "王五")
+    @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "供应商名称不能为空")
+    @NotBlank(message = "供应商名称不能为空")
     private String supplierName;
 
-    @Schema(description = "合同开始日期")
+    @Schema(description = "合同开始日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2023-08-09")
+    @NotBlank(message = "合同开始日期不能为空")
     private String startDate;
 
-    @Schema(description = "合同结束日期")
+    @Schema(description = "合同结束日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2023-08-09")
+    @NotBlank(message = "合同结束日期不能为空")
     private String endDate;
 
-    @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "10.00")
     @NotNull(message = "合同金额不能为空")
+    @Min(value = 0, message = "合同金额不能小于0")
     private BigDecimal money;
 
-    @Schema(description = "合同负责人", example = "5122")
+    @Schema(description = "合同负责人", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long ownerEmployeeId;
 
-    @Schema(description = "负责人部门", example = "29650")
-    private Long deptId;
-
-    @Schema(description = "合同状态:1、未归档;2、已归档;3、已完结", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotEmpty(message = "合同状态:1、未归档;2、已归档;3、已完结不能为空")
-    private String status;
-
-    @Schema(description = "是否关闭 0开启 1关闭", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "是否关闭 0开启 1关闭不能为空")
-    private Integer closed;
-
-    @Schema(description = "关闭原因", example = "不喜欢")
-    private String closeReason;
-
-    @Schema(description = "是否终止 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "是否终止 0否 1是不能为空")
-    private Integer terminated;
-
-    @Schema(description = "终止日期")
-    private String terminateDate;
-
-    @Schema(description = "终止原因", example = "不对")
-    private String terminateReason;
-
-    @Schema(description = "是否变更 0否 1是", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "是否变更 0否 1是不能为空")
-    private Integer isChange;
-
-    @Schema(description = "备注")
+    @Schema(description = "备注", example = "备注可以为空")
     private String remarks;
 
+    @Schema(description = "附件主键id", example = "[]")
+    private List<Long> fileIdList;
 }

+ 21 - 0
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractStatusReqVO.java

@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 采购合同修改状态 Request VO")
+@Data
+public class SupplierContractStatusReqVO {
+
+    @Schema(description = "主键id")
+    @NotNull(message = "主键id不能为空")
+    private Long id;
+
+    @Schema(description = "合同状态:0、未归档;1、已归档;2、已完结", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotEmpty(message = "合同状态:0、未归档;1、已归档;2、已完结不能为空")
+    private String contractStatus;
+
+}

+ 25 - 0
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/controller/admin/suppliercontract/vo/SupplierContractTerminatedReqVO.java

@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 采购合同终止 Request VO")
+@Data
+public class SupplierContractTerminatedReqVO {
+
+    @Schema(description = "主键id")
+    @NotNull(message = "主键id不能为空")
+    private Long id;
+
+    @Schema(description = "终止日期")
+    @NotBlank(message = "终止日期不能为空")
+    private String terminateDate;
+
+    @Schema(description = "终止原因", example = "不对")
+    @NotBlank(message = "终止原因不能为空")
+    private String terminateReason;
+
+}

+ 9 - 5
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/dataobject/suppliercontract/SupplierContractDO.java

@@ -28,14 +28,18 @@ public class SupplierContractDO extends BaseDO {
      */
     @TableId
     private Long id;
+    /**
+     * uuid
+     */
+    private String supplierContractUuid;
     /**
      * 合同编号,年月日+uuid
      */
-    private String code;
+    private String supplierContractCode;
     /**
      * 合同名称
      */
-    private String name;
+    private String supplierContractName;
     /**
      * 是否为框架合同 0否 1是
      */
@@ -69,9 +73,9 @@ public class SupplierContractDO extends BaseDO {
      */
     private Long deptId;
     /**
-     * 合同状态:1、未归档;2、已归档;3、已完结
+     * 合同状态:0、未归档;1、已归档;2、已完结
      */
-    private String status;
+    private String contractStatus;
     /**
      * 是否关闭 0开启 1关闭
      */
@@ -83,7 +87,7 @@ public class SupplierContractDO extends BaseDO {
     /**
      * 是否终止 0否 1是
      */
-    private Integer terminated;
+    private Integer terminate;
     /**
      * 终止日期
      */

+ 9 - 5
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/dataobject/suppliercontract/SupplierContractHistoryDO.java

@@ -28,14 +28,18 @@ public class SupplierContractHistoryDO extends BaseDO {
      */
     @TableId
     private Long id;
+    /**
+     * uuid
+     */
+    private String supplierContractUuid;
     /**
      * 合同编号,年月日+uuid
      */
-    private String code;
+    private String supplierContractCode;
     /**
      * 合同名称
      */
-    private String name;
+    private String supplierContractName;
     /**
      * 是否为框架合同 0否 1是
      */
@@ -69,9 +73,9 @@ public class SupplierContractHistoryDO extends BaseDO {
      */
     private Long deptId;
     /**
-     * 合同状态:1、未归档;2、已归档;3、已完结
+     * 合同状态:0、未归档;1、已归档;2、已完结
      */
-    private String status;
+    private String contractStatus;
     /**
      * 是否关闭 0开启 1关闭
      */
@@ -83,7 +87,7 @@ public class SupplierContractHistoryDO extends BaseDO {
     /**
      * 是否终止 0否 1是
      */
-    private Integer terminated;
+    private Integer terminate;
     /**
      * 终止日期
      */

+ 2 - 2
yudao-module-finance/yudao-module-contract-biz/src/main/java/cn/iocoder/yudao/module/contract/dal/mysql/suppliercontract/SupplierContractHistoryMapper.java

@@ -17,12 +17,12 @@ public interface SupplierContractHistoryMapper extends BaseMapperX<SupplierContr
 
     default PageResult<SupplierContractHistoryDO> selectPage(PageParam reqVO, String code) {
         return selectPage(reqVO, new LambdaQueryWrapperX<SupplierContractHistoryDO>()
-            .eq(SupplierContractHistoryDO::getCode, code)
+            .eq(SupplierContractHistoryDO::getSupplierContractCode, code)
             .orderByDesc(SupplierContractHistoryDO::getId));
     }
 
     default int deleteByCode(String code) {
-        return delete(SupplierContractHistoryDO::getCode, code);
+        return delete(SupplierContractHistoryDO::getSupplierContractCode, code);
     }
 
 }

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

@@ -1,13 +1,11 @@
 package cn.iocoder.yudao.module.contract.dal.mysql.suppliercontract;
 
-import java.util.*;
-
 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.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.SupplierContractPageReqVO;
 import cn.iocoder.yudao.module.contract.dal.dataobject.suppliercontract.SupplierContractDO;
 import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.module.contract.controller.admin.suppliercontract.vo.*;
 
 /**
  * 采购合同信息 Mapper
@@ -19,8 +17,8 @@ public interface SupplierContractMapper extends BaseMapperX<SupplierContractDO>
 
     default PageResult<SupplierContractDO> selectPage(SupplierContractPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<SupplierContractDO>()
-                .eqIfPresent(SupplierContractDO::getCode, reqVO.getCode())
-                .likeIfPresent(SupplierContractDO::getName, reqVO.getName())
+                .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())
@@ -29,10 +27,10 @@ public interface SupplierContractMapper extends BaseMapperX<SupplierContractDO>
                 .eqIfPresent(SupplierContractDO::getMoney, reqVO.getMoney())
                 .eqIfPresent(SupplierContractDO::getOwnerEmployeeId, reqVO.getOwnerEmployeeId())
                 .eqIfPresent(SupplierContractDO::getDeptId, reqVO.getDeptId())
-                .eqIfPresent(SupplierContractDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(SupplierContractDO::getContractStatus, reqVO.getContractStatus())
                 .eqIfPresent(SupplierContractDO::getClosed, reqVO.getClosed())
                 .eqIfPresent(SupplierContractDO::getCloseReason, reqVO.getCloseReason())
-                .eqIfPresent(SupplierContractDO::getTerminated, reqVO.getTerminated())
+                .eqIfPresent(SupplierContractDO::getTerminate, reqVO.getTerminate())
                 .betweenIfPresent(SupplierContractDO::getTerminateDate, reqVO.getTerminateDate())
                 .eqIfPresent(SupplierContractDO::getTerminateReason, reqVO.getTerminateReason())
                 .eqIfPresent(SupplierContractDO::getIsChange, reqVO.getIsChange())

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

@@ -16,6 +16,14 @@ import javax.validation.Valid;
  */
 public interface SupplierContractService {
 
+    /**
+     * 获取供应商合同编号
+     * 供应商合同编号是标识供应商合同的唯一代码
+     *
+     * @return 供应商合同编号
+     */
+    String getSupplierContractCode();
+
     /**
      * 创建采购合同信息
      *

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

@@ -1,23 +1,36 @@
 package cn.iocoder.yudao.module.contract.service.suppliercontract;
 
+import cn.hutool.core.util.IdUtil;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 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.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.dal.mysql.suppliercontract.SupplierContractHistoryMapper;
 import cn.iocoder.yudao.module.contract.dal.mysql.suppliercontract.SupplierContractMapper;
+import cn.iocoder.yudao.module.contract.enums.ContractStatusEnum;
+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.system.api.dept.DeptApi;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.contract.enums.ErrorCodeConstants.SUPPLIER_CONTRACT_HISTORY_NOT_EXISTS;
 import static cn.iocoder.yudao.module.contract.enums.ErrorCodeConstants.SUPPLIER_CONTRACT_NOT_EXISTS;
+import static cn.iocoder.yudao.module.employee.enums.ErrorCodeConstants.EMPLOYEE_INFO_NOT_EXISTS;
 
 /**
  * 采购合同信息 Service 实现类
@@ -33,11 +46,59 @@ public class SupplierContractServiceImpl implements SupplierContractService {
     @Resource
     private SupplierContractHistoryMapper supplierContractHistoryMapper;
 
+    @Resource
+    private FileApi fileApi;
+
+    @Resource
+    private EmployeeApi employeeApi;
+
+    @Resource
+    private DeptApi deptApi;
+
+    @Override
+    public String getSupplierContractCode() {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+        String format = formatter.format(LocalDateTime.now());
+        return format + IdUtil.fastSimpleUUID();
+    }
+
     @Override
     public Long createSupplierContract(SupplierContractSaveReqVO createReqVO) {
+        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
+        if (Objects.isNull(loginEmployee)) {
+            throw exception(new ErrorCode(EMPLOYEE_INFO_NOT_EXISTS.getCode(), "登录用户员工信息不存在"));
+        }
         // 插入
         SupplierContractDO supplierContract = BeanUtils.toBean(createReqVO, SupplierContractDO.class);
+        // uuid
+        supplierContract.setSupplierContractUuid(IdUtil.fastSimpleUUID());
+        // 负责人及部门
+        Long ownerEmployeeId = createReqVO.getOwnerEmployeeId();
+        EmployeeRespDTO ownerEmployee = employeeApi.getEmployeeById(ownerEmployeeId);
+        if (Objects.isNull(ownerEmployee)) {
+            throw exception(EMPLOYEE_INFO_NOT_EXISTS);
+        }
+        Long deptId = ownerEmployee.getDeptId();
+        if (Objects.nonNull(deptId)) {
+            supplierContract.setDeptId(deptId);
+        }
+        // 合同状态:0未归档
+        supplierContract.setContractStatus(ContractStatusEnum.UNARCHIVED.getStatus());
+        // 是否关闭:0否
+        supplierContract.setClosed(CommonStatusEnum.ENABLE.getStatus());
+        // 是否终止:0否
+        supplierContract.setTerminate(CommonStatusEnum.ENABLE.getStatus());
+        // 是否变更
+        supplierContract.setIsChange(CommonStatusEnum.ENABLE.getStatus());
+        // 创建人
+        supplierContract.setCreator(String.valueOf(loginEmployee.getId()));
+
         supplierContractMapper.insert(supplierContract);
+
+        // 附件
+        fileApi.updateFileBiz(createReqVO.getFileIdList(), supplierContract.getSupplierContractUuid());
+
         // 返回
         return supplierContract.getId();
     }
@@ -45,10 +106,23 @@ public class SupplierContractServiceImpl implements SupplierContractService {
     @Override
     public void updateSupplierContract(SupplierContractSaveReqVO updateReqVO) {
         // 校验存在
-        validateSupplierContractExists(updateReqVO.getId());
+        SupplierContractDO supplierContractDO = validateSupplierContractExists(updateReqVO.getId());
         // 更新
         SupplierContractDO updateObj = BeanUtils.toBean(updateReqVO, SupplierContractDO.class);
+        // 负责人及部门
+        Long ownerEmployeeId = updateReqVO.getOwnerEmployeeId();
+        EmployeeRespDTO ownerEmployee = employeeApi.getEmployeeById(ownerEmployeeId);
+        if (Objects.isNull(ownerEmployee)) {
+            throw exception(EMPLOYEE_INFO_NOT_EXISTS);
+        }
+        Long deptId = ownerEmployee.getDeptId();
+        if (Objects.nonNull(deptId)) {
+            updateObj.setDeptId(deptId);
+        }
         supplierContractMapper.updateById(updateObj);
+
+        // 附件
+        fileApi.updateFileBiz(updateReqVO.getFileIdList(), supplierContractDO.getSupplierContractUuid());
     }
 
     @Override
@@ -60,7 +134,7 @@ public class SupplierContractServiceImpl implements SupplierContractService {
         supplierContractMapper.deleteById(id);
 
         // 删除子表
-        deleteSupplierContractHistoryByCode(supplierContractDO.getCode());
+        deleteSupplierContractHistoryByCode(supplierContractDO.getSupplierContractCode());
     }
 
     private SupplierContractDO validateSupplierContractExists(Long id) {