Merge branch 'refs/heads/feature-Contract-8.12-wyw' into feature-pms-8.8-shl

This commit is contained in:
shl
2024-08-12 11:04:53 +08:00
66 changed files with 2627 additions and 67 deletions

View File

@@ -12,11 +12,11 @@ import lombok.Getter;
@AllArgsConstructor
public enum ChargingStandardEnum {
//厦建设
XIA_BUILDING("xia_building","XB"),
XIA_BUILDING("0","xia_building"),
//包干价
LUMP("lump","LU"),
LUMP("1","lump"),
//其他省份
OTHER("other","OT");
OTHER("2","other");
/**
* 类型编号

View File

@@ -12,15 +12,15 @@ import lombok.Getter;
@AllArgsConstructor
public enum ContractStatusEnum {
//应签未签
NO_SIGN("no_sign","NS"),
NO_SIGN("0","no_sign"),
//已拟定
PREPARED("prepared","PP"),
PREPARED("1","prepared"),
//已盖章
STAMP("stamp","ST"),
STAMP("2","stamp"),
//已签订
SIGN("sign","SI"),
SIGN("3","sign"),
//已终止
TERMINATION("termination","TE"),;
TERMINATION("4","termination"),;
/**
* 类型编号

View File

@@ -12,13 +12,13 @@ import lombok.Getter;
@AllArgsConstructor
public enum ContractTypeEnum {
//勘察设计
SURVEY("survey","KS"),
SURVEY("0","survey"),
//检测
DETECTION("detection","JC"),
DETECTION("1","detection"),
//总承包合同
GENERAL_CONTRACT("general_contract","GC"),
GENERAL_CONTRACT("2","general_contract"),
//全过程咨询
PROCESS_CONSULTATION("process_consultation","PC");
PROCESS_CONSULTATION("3","process_consultation");
/**

View File

@@ -12,9 +12,9 @@ import lombok.Getter;
@AllArgsConstructor
public enum CountTypeEnum {
//费率合同
RATE_CONTRACT("rate_contract","RC"),
RATE_CONTRACT("0","rate_contract"),
//包干合同
RES_CONTRACT("res_contract","RC");
RES_CONTRACT("1","res_contract");
/**
* 类型编号
*/

View File

@@ -8,9 +8,11 @@ package cn.iocoder.yudao.module.cms.enums;
public interface DictTypeConstants {
// ***** 字典名称 ******
String Contract_Type = "contract_type"; // 合同类型
String CONTRACT_TYPE = "contract_type"; // 合同类型
String CONTRACT_STATUS = "contract_status"; // 合同类型
String COUNT_TYPE = "count_type";
String SOURCE = "source";
String PROCESS_STATUS = "process_status";
String CHARGING_STANDARD = "charging_standard";
String OUTS_CONTRACT_MAJOR = "outs_contract_major";
}

View File

@@ -12,15 +12,15 @@ import lombok.Getter;
@AllArgsConstructor
public enum OutsContractMajorEnum {
//地勘
GROUND_SERVICE("ground_service","GE"),
GROUND_SERVICE("0","ground_service"),
//景观
SCENERY("scenery","SC"),
SCENERY("1","scenery"),
//建筑
ARCHITECTURE("architecture","AR"),
ARCHITECTURE("2","architecture"),
//测量
MEASURE("measure","ME"),
MEASURE("3","measure"),
//效果图
EFFECT_PICTURE("effect_picture","EF");
EFFECT_PICTURE("4","effect_picture");
/**
* 类型编号

View File

@@ -0,0 +1,43 @@
package cn.iocoder.yudao.module.cms.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author wyw
* @description 收费标注枚举
* @date 2024/7/31
*/
@Getter
@AllArgsConstructor
public enum ProcessStatusEnum {
//未执行
NO_EXECUTION("0","no_execution"),
//正在执行
EXECUTING("1","executing"),
//执行完成
COMPLETED("2","completed");
/**
* 类型编号
*/
private final String code;
/**
* 类型编码
*/
private final String no;
/**
* 通过code获取no
* @param code 字典编号
* @return 类型编码
*/
public static String getNoByCode(String code) {
for (ProcessStatusEnum value : values()) {
if (value.getCode().equals(code)) {
return value.getNo();
}
}
return null;
}
}

View File

@@ -12,11 +12,11 @@ import lombok.Getter;
@AllArgsConstructor
public enum SourceEnum {
//市财政
MUNICIPAL_FINANCE("municipal_finance","MF"),
MUNICIPAL_FINANCE("0","municipal_finance"),
//区财政
DISTRICT_FINANCE("district_finance","DF"),
DISTRICT_FINANCE("1","district_finance"),
//业主自筹
OWNER_FINANCE("owner_finance","OF");
OWNER_FINANCE("2","owner_finance");
/**
* 类型编号
*/

View File

@@ -35,6 +35,7 @@
<version>${revision}</version>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>

View File

@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.contract;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
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;
@@ -39,6 +40,8 @@ public class ContractController {
@Resource
private ContractService contractService;
@PostMapping("/create")
@Operation(summary = "创建合同")
@PreAuthorize("@ss.hasPermission('cms:contract:create')")
@@ -92,4 +95,23 @@ public class ContractController {
ExcelUtils.write(response, "合同.xls", "数据", ContractRespVO.class,
BeanUtils.toBean(list, ContractRespVO.class));
}
@GetMapping("/get_process")
@Operation(summary = "查询流程")
@Parameter(name = "id", description = "合同id", required = true)
@PreAuthorize("@ss.hasPermission('cms:contract:process')")
public CommonResult<ContractProcessInstanceRespVO> getContractProcess(@RequestParam("id") Long id) {
ContractProcessInstanceRespVO contractProcessInstance = contractService.getContractProcess(id);
return success(contractProcessInstance);
}
@GetMapping("/get_HistoryProcess")
@Operation(summary = "查询历史合同流程")
@Parameter(name = "projectId", description = "项目id", required = true)
@PreAuthorize("@ss.hasPermission('cms:contract:process')")
public CommonResult<List<ContractProcessInstanceRespVO>> getHisContractProcess(@RequestParam("projectId") Long projectId) {
List<ContractProcessInstanceRespVO> historyContractProcess = contractService.getHistoryContractProcess(projectId);
return success(historyContractProcess);
}
}

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.contract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -18,14 +20,17 @@ public class ContractPageReqVO extends PageParam {
private String name;
@Schema(description = "合同类型", example = "2")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展")
@Schema(description = "合同进展",example = "1")
private String progress;
@Schema(description = "合同状态", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "计费方式", example = "1")
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
}

View File

@@ -0,0 +1,69 @@
package cn.iocoder.yudao.module.cms.controller.admin.contract.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 流程实例的 Response VO")
@Data
public class ContractProcessInstanceRespVO {
@Schema(description = "流程实例的编号", requiredMode = Schema.RequiredMode.REQUIRED)
private String id;
@Schema(description = "流程名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String name;
@Schema(description = "流程实例的状态", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer status; // 参见 BpmProcessInstanceStatusEnum 枚举
@Schema(description = "发起时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime startTime;
@Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime endTime;
@Schema(description = "持续时间", example = "1000")
private Long durationInMillis;
/**
* 发起流程的用户
*/
private User startUser;
/**
* 当前审批中的任务
*/
private List<Task> tasks; // 仅在流程实例分页才返回
@Schema(description = "用户信息")
@Data
public static class User {
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Long id;
@Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
private String nickname;
@Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Long deptId;
@Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部")
private String deptName;
}
@Schema(description = "流程任务")
@Data
public static class Task {
@Schema(description = "流程任务的编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private String id;
@Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
private String name;
}
}

View File

@@ -1,5 +1,8 @@
package cn.iocoder.yudao.module.cms.controller.admin.contract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -50,6 +53,7 @@ public class ContractRespVO {
@Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("合同类型")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -74,12 +78,15 @@ public class ContractRespVO {
@Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("合同状态")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "计费方式", example = "1")
@ExcelProperty("计费方式")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String countType;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String remark;
@@ -94,6 +101,7 @@ public class ContractRespVO {
@Schema(description = "资金来源")
@ExcelProperty("资金来源")
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "优惠", example = "17910")

View File

@@ -1,4 +1,6 @@
package cn.iocoder.yudao.module.cms.controller.admin.contract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -53,6 +55,7 @@ public class ContractSaveReqVO {
@Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "合同类型不能为空")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -75,9 +78,11 @@ public class ContractSaveReqVO {
@Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "合同状态不能为空")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "计费方式", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String countType;
@Schema(description = "备注", example = "随便")
@@ -90,6 +95,7 @@ public class ContractSaveReqVO {
private BigDecimal constructionCost;
@Schema(description = "资金来源")
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "优惠", example = "17910")

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -22,18 +24,22 @@ public class ContractHistoryPageReqVO extends PageParam {
private String name;
@Schema(description = "合同类型", example = "2")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展")
private String progress;
@Schema(description = "合同状态", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "计费方式")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String countType;
@Schema(description = "流程状态", example = "2")
@DictFormat(DictTypeConstants.PROCESS_STATUS)
private String processStatus;
}

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -52,6 +54,7 @@ public class ContractHistoryRespVO {
@Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("合同类型")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -76,10 +79,12 @@ public class ContractHistoryRespVO {
@Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("合同状态")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "计费方式", example = "2")
@ExcelProperty("计费方式")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String countType;
@Schema(description = "备注", example = "你猜")
@@ -96,6 +101,7 @@ public class ContractHistoryRespVO {
@Schema(description = "资金来源")
@ExcelProperty("资金来源")
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "优惠", example = "18154")
@@ -153,6 +159,7 @@ public class ContractHistoryRespVO {
@Schema(description = "流程状态", example = "2")
@ExcelProperty("流程状态")
@DictFormat(DictTypeConstants.PROCESS_STATUS)
private String processStatus;
@Schema(description = "版本")

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.contractHistory.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -55,6 +57,7 @@ public class ContractHistorySaveReqVO {
@Schema(description = "合同类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "合同类型不能为空")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -77,9 +80,11 @@ public class ContractHistorySaveReqVO {
@Schema(description = "合同状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "合同状态不能为空")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "计费方式", example = "2")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String countType;
@Schema(description = "备注", example = "你猜")
@@ -92,6 +97,7 @@ public class ContractHistorySaveReqVO {
private BigDecimal constructionCost;
@Schema(description = "资金来源")
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "优惠", example = "18154")
@@ -132,6 +138,7 @@ public class ContractHistorySaveReqVO {
private BigDecimal otherFee;
@Schema(description = "流程状态", example = "2")
@DictFormat(DictTypeConstants.PROCESS_STATUS)
private String processStatus;
@Schema(description = "合同", example = "20704")

View File

@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.cms.controller.admin.extContract;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
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;
@@ -93,4 +94,22 @@ public class ExtContractController {
BeanUtils.toBean(list, ExtContractRespVO.class));
}
@GetMapping("/get_process")
@Operation(summary = "查询流程")
@Parameter(name = "id", description = "外部合同id", required = true)
@PreAuthorize("@ss.hasPermission('cms:contract:process')")
public CommonResult<ContractProcessInstanceRespVO> getContractProcess(@RequestParam("id") Long id) {
ContractProcessInstanceRespVO contractProcessInstance = extContractService.getContractProcess(id);
return success(contractProcessInstance);
}
@GetMapping("/get_HistoryProcess")
@Operation(summary = "查询历史外部合同流程")
@Parameter(name = "projectId", description = "项目id", required = true)
@PreAuthorize("@ss.hasPermission('cms:contract:process')")
public CommonResult<List<ContractProcessInstanceRespVO>> getHisContractProcess(@RequestParam("projectId") Long projectId) {
List<ContractProcessInstanceRespVO> historyContractProcess = extContractService.getHistoryContractProcess(projectId);
return success(historyContractProcess);
}
}

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -22,6 +24,7 @@ public class ExtContractPageReqVO extends PageParam {
private String name;
@Schema(description = "合同类型", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "客户公司id", example = "25191")
@@ -32,6 +35,7 @@ public class ExtContractPageReqVO extends PageParam {
@Schema(description = "状态", example = "2")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "合同id", example = "27460")

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.*;
@@ -23,6 +25,7 @@ public class ExtContractRespVO {
@Schema(description = "合同类型", example = "1")
@ExcelProperty("合同类型")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@@ -60,6 +63,7 @@ public class ExtContractRespVO {
@Schema(description = "状态", example = "2")
@ExcelProperty("状态")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -88,6 +92,7 @@ public class ExtContractRespVO {
@Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("计费方式")
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
@Schema(description = "备注", example = "你猜")
@@ -104,6 +109,7 @@ public class ExtContractRespVO {
@Schema(description = "资金来源")
@ExcelProperty("资金来源")
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "分包合同提示时间")
@@ -112,6 +118,7 @@ public class ExtContractRespVO {
@Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("收费标准")
@DictFormat(DictTypeConstants.CHARGING_STANDARD)
private String chargingStandard;
@Schema(description = "优惠", example = "15529")

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -49,6 +51,7 @@ public class ExtContractSaveReqVO {
@Schema(description = "合同类型", example = "1")
@ExcelProperty("合同类型")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "合同进展")
@@ -65,6 +68,7 @@ public class ExtContractSaveReqVO {
private LocalDateTime archiveTime;
@Schema(description = "状态", example = "2")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -88,6 +92,7 @@ public class ExtContractSaveReqVO {
@Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "计费方式不能为空")
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
@Schema(description = "备注", example = "你猜")
@@ -100,10 +105,12 @@ public class ExtContractSaveReqVO {
private BigDecimal constructionCost;
@Schema(description = "资金来源")
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "收费标准不能为空")
@DictFormat(DictTypeConstants.CHARGING_STANDARD)
private String chargingStandard;
@Schema(description = "优惠", example = "15529")

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.extcontracthistory.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -19,12 +21,14 @@ public class ExtContractHistoryPageReqVO extends PageParam {
private String name;
@Schema(description = "合同类型", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@Schema(description = "客户公司id", example = "28989")
private Long customerCompanyId;
@Schema(description = "状态", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@@ -32,6 +36,7 @@ public class ExtContractHistoryPageReqVO extends PageParam {
private String processInstanceId;
@Schema(description = "流程状态", example = "2")
@DictFormat(DictTypeConstants.PROCESS_STATUS)
private String processStatus;
@Schema(description = "合同id", example = "26795")

View File

@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.cms.controller.admin.extcontracthistory.vo;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
@@ -50,6 +51,7 @@ public class ExtContractHistoryRespVO {
@Schema(description = "合同类型", example = "1")
@ExcelProperty("合同类型")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@@ -72,6 +74,7 @@ public class ExtContractHistoryRespVO {
@Schema(description = "状态", example = "1")
@ExcelProperty("状态")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@@ -98,7 +101,7 @@ public class ExtContractHistoryRespVO {
@Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "计费方式", converter = DictConvert.class)
@DictFormat("contract_billing_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
@Schema(description = "备注", example = "你猜")
@@ -115,11 +118,12 @@ public class ExtContractHistoryRespVO {
@Schema(description = "资金来源")
@ExcelProperty(value = "资金来源", converter = DictConvert.class)
@DictFormat("funds_source") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String source;
@Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("收费标准")
@DictFormat(DictTypeConstants.CHARGING_STANDARD)
private String chargingStandard;
@Schema(description = "优惠", example = "7511")
@@ -152,7 +156,7 @@ public class ExtContractHistoryRespVO {
@Schema(description = "流程状态", example = "2")
@ExcelProperty(value = "流程状态", converter = DictConvert.class)
@DictFormat("bpm_process_instance_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.PROCESS_STATUS)
private String processStatus;
@Schema(description = "合同id", example = "26795")

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.cms.controller.admin.extcontracthistory.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@@ -51,6 +53,7 @@ public class ExtContractHistorySaveReqVO {
private String name;
@Schema(description = "合同类型", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type;
@@ -69,6 +72,7 @@ public class ExtContractHistorySaveReqVO {
private LocalDateTime archiveTime;
@Schema(description = "状态", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status;
@Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -92,6 +96,7 @@ public class ExtContractHistorySaveReqVO {
@Schema(description = "计费方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotEmpty(message = "计费方式不能为空")
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
@Schema(description = "备注", example = "你猜")
@@ -104,10 +109,12 @@ public class ExtContractHistorySaveReqVO {
private BigDecimal constructionCost;
@Schema(description = "资金来源")
@DictFormat(DictTypeConstants.SOURCE)
private String source;
@Schema(description = "收费标准", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "收费标准不能为空")
@DictFormat(DictTypeConstants.CHARGING_STANDARD)
private String chargingStandard;
@Schema(description = "优惠", example = "7511")
@@ -131,6 +138,7 @@ public class ExtContractHistorySaveReqVO {
@Schema(description = "流程状态", example = "2")
@DictFormat(DictTypeConstants.PROCESS_STATUS)
private String processStatus;
@Schema(description = "合同id", example = "26795")

View File

@@ -6,6 +6,7 @@ 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.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO;
@@ -91,4 +92,21 @@ public class OutsContractController {
ExcelUtils.write(response, "外包合同.xls", "数据", OutsContractRespVO.class,
BeanUtils.toBean(list, OutsContractRespVO.class));
}
@GetMapping("/get_process")
@Operation(summary = "查询流程")
@Parameter(name = "id", description = "外包合同id", required = true)
@PreAuthorize("@ss.hasPermission('cms:contract:process')")
public CommonResult<ContractProcessInstanceRespVO> getContractProcess(@RequestParam("id") Long id) {
ContractProcessInstanceRespVO contractProcessInstance = outsContractService.getContractProcess(id);
return success(contractProcessInstance);
}
@GetMapping("/get_HistoryProcess")
@Operation(summary = "查询历史外包合同流程")
@Parameter(name = "projectId", description = "项目id", required = true)
@PreAuthorize("@ss.hasPermission('cms:contract:process')")
public CommonResult<List<ContractProcessInstanceRespVO>> getHisContractProcess(@RequestParam("projectId") Long projectId) {
List<ContractProcessInstanceRespVO> historyContractProcess = outsContractService.getHistoryContractProcess(projectId);
return success(historyContractProcess);
}
}

View File

@@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -27,7 +29,8 @@ public class OutsContractPageReqVO extends PageParam {
@Schema(description = "主合同id", example = "19816")
private Long contractId;
@Schema(description = "类型", example = "2")
@Schema(description = "计费类型", example = "2")
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
@Schema(description = "合同金额")
@@ -37,6 +40,7 @@ public class OutsContractPageReqVO extends PageParam {
private String code;
@Schema(description = "专业")
@DictFormat(DictTypeConstants.OUTS_CONTRACT_MAJOR)
private String major;
@Schema(description = "签订时间")

View File

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -47,7 +48,7 @@ public class OutsContractRespVO {
@Schema(description = "外包合同类型", example = "2")
@ExcelProperty(value = "外包合同类型", converter = DictConvert.class)
@DictFormat("contract_billing_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
@Schema(description = "外包合同总额")
@@ -56,7 +57,7 @@ public class OutsContractRespVO {
@Schema(description = "专业")
@ExcelProperty(value = "专业", converter = DictConvert.class)
@DictFormat("major") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.OUTS_CONTRACT_MAJOR)
private String major;
@Schema(description = "签订时间")

View File

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
@@ -53,7 +54,7 @@ public class OutsContractSaveReqVO {
@Schema(description = "外包合同类型", example = "2")
@ExcelProperty(value = "外包合同类型", converter = DictConvert.class)
@DictFormat("contract_billing_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.COUNT_TYPE)
private String countType;
@@ -64,7 +65,7 @@ public class OutsContractSaveReqVO {
@Schema(description = "专业")
@ExcelProperty(value = "专业", converter = DictConvert.class)
@DictFormat("major") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@DictFormat(DictTypeConstants.OUTS_CONTRACT_MAJOR)
private String major;
@Schema(description = "签订时间")

View File

@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.cms.dal.dataobject.contract;
import cn.iocoder.yudao.module.pms.enums.DictTypeConstants;
import lombok.*;
import java.time.LocalDateTime;
@@ -38,6 +39,8 @@ public class ContractDO extends BaseDO {
private String name;
/**
* 合同类型
*
* 枚举 枚举 {@link DictTypeConstants}
*/
private String type;
/**

View File

@@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.cms.dal.dataobject.extContract;
package cn.iocoder.yudao.module.cms.dal.dataobject.extcontract;
import lombok.*;
import java.time.LocalDateTime;
import java.math.BigDecimal;

View File

@@ -1,10 +1,10 @@
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.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extContract.ExtContractDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO;
import org.apache.ibatis.annotations.Mapper;
/**

View File

@@ -2,10 +2,10 @@ package cn.iocoder.yudao.module.cms.service.contract;
import jakarta.validation.*;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.*;
import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import java.math.BigDecimal;
import java.util.List;
/**
* 合同 Service 接口
@@ -73,4 +73,19 @@ public interface ContractService {
void validateContractExists(Long id);
/**
* 查询流程
* @param id 合同id
*/
ContractProcessInstanceRespVO getContractProcess(Long id);
/**
* 查询合同历史流程
* @param projectId 项目id
* @return
*/
List<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId);
}

View File

@@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.cms.service.contract;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDO;
import cn.iocoder.yudao.module.cms.dal.mysql.contract.ContractMapper;
import cn.iocoder.yudao.module.cms.dal.mysql.contractHistory.ContractHistoryMapper;
@@ -304,5 +306,47 @@ public class ContractServiceImpl implements ContractService {
}
}
@Override
public ContractProcessInstanceRespVO getContractProcess(Long id) {
validateContractExists(id);
//去历史里面找
ContractHistoryDO contractHistory = contractHistoryMapper.selectOne("contract_id", id);
if (contractHistory == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
//拿到历史之后 找到process_instance_id 和 status
String processInstanceId = contractHistory.getProcessInstanceId();
String processStatus = contractHistory.getProcessStatus();
//与当前流程里的进行比较
String status = String.valueOf(processInstanceApi.getProcessInstance(processInstanceId).getStatus());
//如果不相等
if (!status.equals(processStatus)){
//更新当前合同对应历史表里面的状态
contractHistory.setProcessStatus(status);
contractHistoryMapper.updateById(contractHistory);
}
//返回给前端必要的数据 当前流程里面对应的数据
BpmProcessInstanceRespDTO processInstance = processInstanceApi.getProcessInstance(processInstanceId);
List<BpmTaskRespDTO> tasks = processInstanceApi.getTask(processInstanceId);
List<BpmProcessInstanceRespDTO.Task> taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class);
processInstance.setTasks(taskList);
return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class);
}
@Override
public List<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId) {
List<ContractHistoryDO> projectList = contractHistoryMapper.selectList("project_id", projectId);
List<ContractProcessInstanceRespVO> contractProcessInstanceRespVOList = new ArrayList<>();
for (ContractHistoryDO contractHistoryDO : projectList) {
Long id = contractHistoryDO.getId();
ContractProcessInstanceRespVO contractProcess = getContractProcess(id);
contractProcessInstanceRespVOList.add(contractProcess);
}
return contractProcessInstanceRespVOList;
}
}

View File

@@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.cms.service.contractHistory;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO;
import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum;
import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
@@ -95,6 +97,7 @@ public class ContractHistoryServiceImpl implements cn.iocoder.yudao.module.cms.s
// 6.分包合同商议提示 √
// 7.暂定结算数 √
// TODO 枚举优化
ProjectRespDTO project = projectApi.getProject(projectId);
contractHistoryRespVO.setCode(project.getCode());
contractHistoryRespVO.setDrawingCompany(project.getDrawingCompany());
@@ -103,6 +106,11 @@ public class ContractHistoryServiceImpl implements cn.iocoder.yudao.module.cms.s
contractHistoryRespVO.setTrackingDep(projectDetail.getTrackingDepName());
contractHistoryRespVO.setProjectManager(projectDetail.getProjectManagerName());
contractHistoryRespVO.setType(ContractTypeEnum.getNoByCode(contractHistoryRespVO.getType()));
contractHistoryRespVO.setStatus(ContractStatusEnum.getNoByCode(contractHistoryRespVO.getStatus()));
contractHistoryRespVO.setCountType(ContractStatusEnum.getNoByCode(contractHistoryRespVO.getCountType()));
contractHistoryRespVO.setSource(ContractStatusEnum.getNoByCode(contractHistoryRespVO.getSource()));
//分包合同商议提示 TODO 待优化
// ExtContractDO extContractDO = extContractMapper.selectOne("project_id", projectId);
// LocalDateTime reminderTime = extContractDO.getReminderTime();

View File

@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.cms.service.extContract;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
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;
@@ -8,6 +9,7 @@ import jakarta.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import java.math.BigDecimal;
import java.util.List;
/**
* 外部合同 Service 接口
@@ -66,4 +68,20 @@ public interface ExtContractService {
* @return
*/
BigDecimal getContractAmount(ExtContractSaveReqVO createReqVO);
/**
* 查询流程
* @param id 合同id
*/
ContractProcessInstanceRespVO getContractProcess(Long id);
/**
* 查询历史外部合同流程
* @param projectId 项目id
* @return
*/
List<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId);
}

View File

@@ -2,15 +2,22 @@ package cn.iocoder.yudao.module.cms.service.extContract;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
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.contractHistory.ContractHistoryDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.customerCompany.CustomerCompanyDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extContract.ExtContractDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extcontracthistory.ExtContractHistoryDO;
import cn.iocoder.yudao.module.cms.dal.mysql.customerCompany.CustomerCompanyMapper;
import cn.iocoder.yudao.module.cms.dal.mysql.extContract.ExtContractMapper;
import cn.iocoder.yudao.module.cms.dal.mysql.extcontracthistory.ExtContractHistoryMapper;
import cn.iocoder.yudao.module.cms.enums.ChargingStandardEnum;
import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum;
import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
@@ -69,6 +76,7 @@ public class ExtContractServiceImpl implements ExtContractService {
@Override
public Long createExtContract(Long loginUserId, ExtContractSaveReqVO createReqVO) {
@@ -102,7 +110,7 @@ public class ExtContractServiceImpl implements ExtContractService {
// 5.合同总金额 √
// 6.合同商议提示(和分包提示不一样)√
//todo 待提取
//todo 待提取 枚举优化
String code = createReqVO.getCode();
String trackingDep = createReqVO.getTrackingDep();
String projectManager = createReqVO.getProjectManager();
@@ -111,6 +119,8 @@ public class ExtContractServiceImpl implements ExtContractService {
BigDecimal amount = createReqVO.getAmount();
if (!project.getCode().equals(code)){
throw exception(PARAM_ERROR);
}
@@ -258,6 +268,13 @@ public class ExtContractServiceImpl implements ExtContractService {
//合同商议提示 // TODO 待优化
extContractRespVO.setExReminderTime(null);
extContractRespVO.setType(ContractTypeEnum.getNoByCode(extContractRespVO.getType()));
extContractRespVO.setStatus(ContractStatusEnum.getNoByCode(extContractRespVO.getStatus()));
extContractRespVO.setCountType(ContractStatusEnum.getNoByCode(extContractRespVO.getCountType()));
extContractRespVO.setSource(ContractStatusEnum.getNoByCode(extContractRespVO.getSource()));
extContractRespVO.setChargingStandard(ChargingStandardEnum.getNoByCode(extContractRespVO.getChargingStandard()));
return extContractRespVO;
}
@@ -305,6 +322,48 @@ public class ExtContractServiceImpl implements ExtContractService {
return preAmount.add(designFee).add(surveyFees).add(testingFee).add(other);
}
@Override
public ContractProcessInstanceRespVO getContractProcess(Long id) {
validateExtContractExists(id);
//去历史里面找
ExtContractHistoryDO extContractHistoryDO = extContractHistoryMapper.selectOne("ext_contract_id", id);
if (extContractHistoryDO == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
//拿到历史之后 找到process_instance_id 和 status
String processInstanceId = extContractHistoryDO.getProcessInstanceId();
String processStatus = extContractHistoryDO.getProcessStatus();
//与当前流程里的进行比较
String status = String.valueOf(processInstanceApi.getProcessInstance(processInstanceId).getStatus());
//如果不相等
if (!status.equals(processStatus)){
//更新当前合同对应历史表里面的状态
extContractHistoryDO.setProcessStatus(status);
extContractHistoryMapper.updateById(extContractHistoryDO);
}
//返回给前端必要的数据 当前流程里面对应的数据
BpmProcessInstanceRespDTO processInstance = processInstanceApi.getProcessInstance(processInstanceId);
List<BpmTaskRespDTO> tasks = processInstanceApi.getTask(processInstanceId);
List<BpmProcessInstanceRespDTO.Task> taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class);
processInstance.setTasks(taskList);
return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class);
}
@Override
public List<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId) {
List<ExtContractHistoryDO> contractHistoryList = extContractHistoryMapper.selectList("project_id", projectId);
List<ContractProcessInstanceRespVO> contractProcessInstanceRespVOList = new ArrayList<>();
for (ExtContractHistoryDO contractHistory : contractHistoryList) {
Long id = contractHistory.getId();
ContractProcessInstanceRespVO contractProcess = getContractProcess(id);
contractProcessInstanceRespVOList.add(contractProcess);
}
return contractProcessInstanceRespVOList;
}
private void validateExtContractExists(Long id) {
if (extContractMapper.selectById(id) == null) {

View File

@@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.cms.service.extcontracthistory;
import cn.iocoder.yudao.module.cms.dal.dataobject.customerCompany.CustomerCompanyDO;
import cn.iocoder.yudao.module.cms.dal.mysql.customerCompany.CustomerCompanyMapper;
import cn.iocoder.yudao.module.cms.enums.ChargingStandardEnum;
import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum;
import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum;
import cn.iocoder.yudao.module.cms.service.extContract.ExtContractService;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
@@ -104,7 +107,7 @@ public class ExtContractHistoryServiceImpl implements ExtContractHistoryService
CustomerCompanyDO customerCompanyDO = customerCompanyMapper.selectById(customerCompanyId);
String name = customerCompanyDO.getName();
HistoryResp.setCustomerCompanyName(name);
// TODO 枚举优化
//合同总金额
@@ -114,6 +117,13 @@ public class ExtContractHistoryServiceImpl implements ExtContractHistoryService
//合同商议提示 // TODO 待优化
HistoryResp.setExReminderTime(null);
HistoryResp.setType(ContractTypeEnum.getNoByCode(HistoryResp.getType()));
HistoryResp.setStatus(ContractStatusEnum.getNoByCode(HistoryResp.getStatus()));
HistoryResp.setCountType(ContractStatusEnum.getNoByCode(HistoryResp.getCountType()));
HistoryResp.setSource(ContractStatusEnum.getNoByCode(HistoryResp.getSource()));
HistoryResp.setChargingStandard(ChargingStandardEnum.getNoByCode(HistoryResp.getChargingStandard()));
return HistoryResp;
}

View File

@@ -1,11 +1,10 @@
package cn.iocoder.yudao.module.cms.service.outscontract;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractSaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDO;
import jakarta.validation.Valid;
import java.util.List;
@@ -55,4 +54,19 @@ public interface OutsContractService {
*/
PageResult<OutsContractRespVO> getOutsContractPage(OutsContractPageReqVO pageReqVO);
/**
* 查询流程
* @param id 合同id
*/
ContractProcessInstanceRespVO getContractProcess(Long id);
/**
* 查询历史外包合同流程
* @param projectId 项目id
* @return
*/
List<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId);
}

View File

@@ -4,6 +4,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractProcessInstanceRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.contract.vo.ContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractPageReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO;
@@ -12,6 +15,7 @@ import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDO;
import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDO;
import cn.iocoder.yudao.module.cms.dal.mysql.outscontract.OutsContractMapper;
import cn.iocoder.yudao.module.cms.dal.mysql.outscontracthistory.OutsContractHistoryMapper;
import cn.iocoder.yudao.module.cms.enums.*;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
@@ -65,10 +69,10 @@ public class OutsContractServiceImpl implements OutsContractService {
@Resource
private OutsContractHistoryMapper outsContractHistoryMapper;
@Override
public Long createOutsContract(Long loginUserId,OutsContractSaveReqVO createReqVO) {
if (createReqVO == null) {
throw exception(PARAM_NOT_EXISTS);
}
@@ -94,7 +98,7 @@ public class OutsContractServiceImpl implements OutsContractService {
// 3.项目经理 √
// 4.签订合同总额 √
//todo 待提取
//todo 待提取 枚举优化
String name = createReqVO.getName();
String trackingDep = createReqVO.getTrackingDep();
String projectManager = createReqVO.getProjectManager();
@@ -219,6 +223,9 @@ public class OutsContractServiceImpl implements OutsContractService {
outsContractRespVO.setProjectManager(contract.getProjectManager());
outsContractRespVO.setOutsAmount(contract.getAmount());
outsContractRespVO.setMajor(OutsContractMajorEnum.getNoByCode(outsContractRespVO.getMajor()));
outsContractRespVO.setCountType(CountTypeEnum.getNoByCode(outsContractRespVO.getCountType()));
return outsContractRespVO;
}
@@ -251,6 +258,49 @@ public class OutsContractServiceImpl implements OutsContractService {
return pageResult;
}
@Override
public ContractProcessInstanceRespVO getContractProcess(Long id) {
validateOutsContractExists(id);
//去历史里面找
OutsContractHistoryDO outsContractHistory = outsContractHistoryMapper.selectOne("outs_contract_id", id);
if (outsContractHistory == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
//拿到历史之后 找到process_instance_id 和 status
String processInstanceId = outsContractHistory.getProcessInstanceId();
String processStatus = outsContractHistory.getProcessStatus();
//与当前流程里的进行比较
String status = String.valueOf(processInstanceApi.getProcessInstance(processInstanceId).getStatus());
//如果不相等
if (!status.equals(processStatus)){
//更新当前合同对应历史表里面的状态
outsContractHistory.setProcessStatus(status);
outsContractHistoryMapper.updateById(outsContractHistory);
}
//返回给前端必要的数据 当前流程里面对应的数据
BpmProcessInstanceRespDTO processInstance = processInstanceApi.getProcessInstance(processInstanceId);
List<BpmTaskRespDTO> tasks = processInstanceApi.getTask(processInstanceId);
List<BpmProcessInstanceRespDTO.Task> taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class);
processInstance.setTasks(taskList);
return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class);
}
@Override
public List<ContractProcessInstanceRespVO> getHistoryContractProcess(Long projectId) {
List<OutsContractHistoryDO> outsContracts= outsContractHistoryMapper.selectList("project_id", projectId);
List<ContractProcessInstanceRespVO> contractProcessInstanceRespVOList = new ArrayList<>();
for (OutsContractHistoryDO outsContract : outsContracts) {
Long id = outsContract.getId();
ContractProcessInstanceRespVO contractProcess = getContractProcess(id);
contractProcessInstanceRespVOList.add(contractProcess);
}
return contractProcessInstanceRespVOList;
}
private void validateOutsContractExists(Long id) {
if (outsContractMapper.selectById(id) == null) {
throw exception(OUTS_CONTRACT_NOT_EXISTS);

View File

@@ -8,6 +8,8 @@ import cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory.vo.OutsC
import cn.iocoder.yudao.module.cms.controller.admin.outscontracthistory.vo.OutsContractHistorySaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.outscontracthistory.OutsContractHistoryDO;
import cn.iocoder.yudao.module.cms.dal.mysql.outscontracthistory.OutsContractHistoryMapper;
import cn.iocoder.yudao.module.cms.enums.CountTypeEnum;
import cn.iocoder.yudao.module.cms.enums.OutsContractMajorEnum;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
@@ -71,6 +73,9 @@ public class OutsContractHistoryServiceImpl implements OutsContractHistoryServic
outsContractHistoryResp.setProjectManager(contract.getProjectManager());
outsContractHistoryResp.setOutsAmount(contract.getAmount());
outsContractHistoryResp.setMajor(OutsContractMajorEnum.getNoByCode(outsContractHistoryResp.getMajor()));
outsContractHistoryResp.setCountType(CountTypeEnum.getNoByCode(outsContractHistoryResp.getCountType()));
return outsContractHistoryResp;
}