[fix] 优化外部合同管理

This commit is contained in:
wyw 2024-08-15 15:28:19 +08:00
parent 38b8336631
commit 4ee64cce49
14 changed files with 100 additions and 210 deletions

View File

@ -1,8 +1,10 @@
package cn.iocoder.yudao.module.cms.controller.admin.extContract; package cn.iocoder.yudao.module.cms.controller.admin.extContract;
import cn.iocoder.yudao.framework.common.util.file.FileUtils;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; 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.ExtContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDetailDO;
import cn.iocoder.yudao.module.cms.service.extContract.ExtContractService; import cn.iocoder.yudao.module.cms.service.extContract.ExtContractService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -68,8 +70,13 @@ public class ExtContractController {
@Parameter(name = "id", description = "外部合同编号", required = true) @Parameter(name = "id", description = "外部合同编号", required = true)
@PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:query')") @PreAuthorize("@ss.hasPermission('cms-ext:ext-contract:query')")
public CommonResult<ExtContractRespVO> getExtContract(@RequestParam("id") Long id) { public CommonResult<ExtContractRespVO> getExtContract(@RequestParam("id") Long id) {
ExtContractRespVO extContract = extContractService.getExtContract(id); ExtContractDetailDO extContractDetailDO = extContractService.getContractDetail(id);
return success(extContract); ExtContractRespVO extContractRespVO = new ExtContractRespVO();
org.springframework.beans.BeanUtils.copyProperties(extContractDetailDO, extContractRespVO, "contractFileUrl", "reviewFileUrl");
extContractRespVO.setReviewFileUrl(FileUtils.covertJSONStringToFile(extContractDetailDO.getReviewFileUrl()));
extContractRespVO.setContractFileUrl(FileUtils.covertJSONStringToFile(extContractDetailDO.getContractFileUrl()));
return success(extContractRespVO);
} }
@GetMapping("/page") @GetMapping("/page")

View File

@ -20,20 +20,10 @@ public class ExtContractPageReqVO extends PageParam {
@Schema(description = "项目id", example = "30598") @Schema(description = "项目id", example = "30598")
private Long projectId; private Long projectId;
@Schema(description = "合同名称", example = "芋艿")
private String name;
@Schema(description = "合同类型", example = "1") @Schema(description = "合同类型", example = "1")
@DictFormat(DictTypeConstants.CONTRACT_TYPE) @DictFormat(DictTypeConstants.CONTRACT_TYPE)
private String type; private String type;
@Schema(description = "客户公司id", example = "25191")
private Long customerCompanyId;
@Schema(description = "合同进展")
private String progress;
@Schema(description = "状态", example = "2") @Schema(description = "状态", example = "2")
@DictFormat(DictTypeConstants.CONTRACT_STATUS) @DictFormat(DictTypeConstants.CONTRACT_STATUS)
private String status; private String status;

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo; package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo;
import cn.iocoder.yudao.framework.common.pojo.FileDTO;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
@ -7,6 +8,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import com.alibaba.excel.annotation.*; import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 外部合同 Response VO") @Schema(description = "管理后台 - 外部合同 Response VO")
@ -35,7 +38,7 @@ public class ExtContractRespVO {
@Schema(description = "客户名称") @Schema(description = "客户名称")
@ExcelProperty("客户名称") @ExcelProperty("客户名称")
private String customerCompanyName; private String constructionSide;
@Schema(description = "主控部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "生产一部") @Schema(description = "主控部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "生产一部")
@ExcelProperty("主控部门") @ExcelProperty("主控部门")
@ -116,9 +119,9 @@ public class ExtContractRespVO {
@ExcelProperty("备注") @ExcelProperty("备注")
private String remark; private String remark;
@Schema(description = "合同附件url", example = "https://www.iocoder.cn") @Schema(description = "合同附件url")
@ExcelProperty("合同附件url") @ExcelProperty("合同附件url")
private String contractFileUrl; private List<FileDTO> contractFileUrl;
@Schema(description = "建安费") @Schema(description = "建安费")
@ExcelProperty("建安费") @ExcelProperty("建安费")
@ -154,9 +157,9 @@ public class ExtContractRespVO {
@ExcelProperty("审定金额") @ExcelProperty("审定金额")
private BigDecimal approvedAmount; private BigDecimal approvedAmount;
@Schema(description = "审核文件url", example = "https://www.iocoder.cn") @Schema(description = "审核文件url")
@ExcelProperty("审核文件url") @ExcelProperty("审核文件url")
private String reviewFileUrl; private List<FileDTO> reviewFileUrl;
@Schema(description = "最后编辑人") @Schema(description = "最后编辑人")
@ExcelProperty("最后编辑人") @ExcelProperty("最后编辑人")

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo; package cn.iocoder.yudao.module.cms.controller.admin.extContract.vo;
import cn.iocoder.yudao.framework.common.pojo.FileDTO;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.module.cms.enums.DictTypeConstants; import cn.iocoder.yudao.module.cms.enums.DictTypeConstants;
@ -9,6 +10,7 @@ import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 外部合同新增/修改 Request VO") @Schema(description = "管理后台 - 外部合同新增/修改 Request VO")
@Data @Data
@ -29,29 +31,6 @@ public class ExtContractSaveReqVO {
@Schema(description = "项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "SJ24001")
@ExcelProperty("项目编号")
private String code;
@Schema(description = "客户名称")
@ExcelProperty("客户名称")
private String customerCompanyName;
@Schema(description = "主控部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "生产一部")
@ExcelProperty("主控部门")
private String trackingDep;
@Schema(description = "项目负责人", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目负责人")
private String projectManager;
@Schema(description = "外部合同商议提示时间")
@ExcelProperty("外部合同商议提示时间")
private LocalDateTime exReminderTime;
@Schema(description = "合同名称", example = "赵六") @Schema(description = "合同名称", example = "赵六")
@ExcelProperty("合同名称") @ExcelProperty("合同名称")
@ -116,9 +95,9 @@ public class ExtContractSaveReqVO {
@ExcelProperty("备注") @ExcelProperty("备注")
private String remark; private String remark;
@Schema(description = "合同附件url", example = "https://www.iocoder.cn") @Schema(description = "合同附件url")
@ExcelProperty("合同附件url") @ExcelProperty("合同附件url")
private String contractFileUrl; private List<FileDTO> contractFileUrl;
@Schema(description = "建安费") @Schema(description = "建安费")
@ExcelProperty("建安费") @ExcelProperty("建安费")
@ -154,9 +133,9 @@ public class ExtContractSaveReqVO {
@ExcelProperty("审定金额") @ExcelProperty("审定金额")
private BigDecimal approvedAmount; private BigDecimal approvedAmount;
@Schema(description = "审核文件url", example = "https://www.iocoder.cn") @Schema(description = "审核文件url")
@ExcelProperty("审核文件url") @ExcelProperty("审核文件url")
private String reviewFileUrl; private List<FileDTO> reviewFileUrl;
@Schema(description = "最后编辑人") @Schema(description = "最后编辑人")
@ExcelProperty("最后编辑人") @ExcelProperty("最后编辑人")

View File

@ -1,9 +1,7 @@
package cn.iocoder.yudao.module.cms.dal.dataobject.extcontract; package cn.iocoder.yudao.module.cms.dal.dataobject.extcontract;
import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@ -12,13 +10,30 @@ import java.time.LocalDateTime;
* @date 2024/8/14 * @date 2024/8/14
*/ */
@Data @Data
public class ExtContractDetailDO extends ContractDO { public class ExtContractDetailDO extends ExtContractDO {
/** /**
* 项目编号 * 项目编号
*/ */
private String code; private String code;
/**
* 建设方
*/
private String constructionSide;
/**
* 主控部门
*/
private String trackingDep;
/**
* 项目负责人
*/
private String projectManager;
/**
* 外部合同商议提示
*/
private LocalDateTime exReminderTime;
} }

View File

@ -19,9 +19,8 @@ public interface ExtContractMapper extends BaseMapperX<ExtContractDO> {
default PageResult<ExtContractDO> selectPage(ExtContractPageReqVO reqVO) { default PageResult<ExtContractDO> selectPage(ExtContractPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ExtContractDO>() return selectPage(reqVO, new LambdaQueryWrapperX<ExtContractDO>()
.likeIfPresent(ExtContractDO::getName, reqVO.getName()) .eqIfPresent(ExtContractDO::getProjectId, reqVO.getProjectId())
.eqIfPresent(ExtContractDO::getType, reqVO.getType()) .eqIfPresent(ExtContractDO::getType, reqVO.getType())
.eqIfPresent(ExtContractDO::getProgress, reqVO.getProgress())
.eqIfPresent(ExtContractDO::getStatus, reqVO.getStatus()) .eqIfPresent(ExtContractDO::getStatus, reqVO.getStatus())
.eqIfPresent(ExtContractDO::getContractId, reqVO.getContractId())); .eqIfPresent(ExtContractDO::getContractId, reqVO.getContractId()));
} }

View File

@ -4,6 +4,7 @@ package cn.iocoder.yudao.module.cms.service.extContract;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractRespVO; 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.controller.admin.extContract.vo.ExtContractSaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.extcontract.ExtContractDetailDO;
import jakarta.validation.*; import jakarta.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
@ -45,7 +46,7 @@ public interface ExtContractService {
* @param id 编号 * @param id 编号
* @return 外部合同 * @return 外部合同
*/ */
ExtContractRespVO getExtContract(Long id); ExtContractDetailDO getContractDetail(Long id);
/** /**
* 获得外部合同分页 * 获得外部合同分页

View File

@ -1,16 +1,15 @@
package cn.iocoder.yudao.module.cms.service.extContract; package cn.iocoder.yudao.module.cms.service.extContract;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractPageReqVO; 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.ExtContractRespVO;
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO; import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO;
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.extcontract.ExtContractDetailDO;
import cn.iocoder.yudao.module.cms.dal.mysql.extContract.ExtContractMapper; 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.pms.api.projectschedule.ProjectScheduleApi;
import cn.iocoder.yudao.module.cms.enums.ChargingStandardEnum; import cn.iocoder.yudao.module.pms.api.projectschedule.dto.ProjectScheduleDetailDTO;
import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum; import cn.iocoder.yudao.module.pms.api.projecttracking.ProjectTrackingApi;
import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum; import cn.iocoder.yudao.module.pms.api.projecttracking.dto.ProjectTrackingDetailDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -24,7 +23,6 @@ import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS;
/** /**
* 外部合同 Service 实现类 * 外部合同 Service 实现类
@ -41,6 +39,12 @@ public class ExtContractServiceImpl implements ExtContractService {
@Resource @Resource
private AdminUserApi adminUserApi; private AdminUserApi adminUserApi;
@Resource
private ProjectTrackingApi projectTrackingApi;
@Resource
private ProjectScheduleApi projectScheduleApi;
@ -86,63 +90,39 @@ public class ExtContractServiceImpl implements ExtContractService {
} }
@Override @Override
public ExtContractRespVO getExtContract(Long id) { public ExtContractDetailDO getContractDetail(Long id) {
//校验 ExtContractDetailDO extContractDetailDO = new ExtContractDetailDO();
if (id == null) {
throw exception(EXT_CONTRACT_NOT_EXISTS);
}
ExtContractDO extContractDO = extContractMapper.selectById(id); ExtContractDO extContractDO = extContractMapper.selectById(id);
//校验
if (extContractDO == null) { if (extContractDO == null) {
throw exception(EXT_CONTRACT_NOT_EXISTS); throw exception(EXT_CONTRACT_NOT_EXISTS);
} }
Long projectId = extContractDO.getProjectId(); Long projectId = extContractDO.getProjectId();
projectTrackingApi.validateProjectExists(projectId);
ProjectScheduleDetailDTO projectScheduleDetail = projectScheduleApi.getProjectScheduleDetail(projectId);
ProjectTrackingDetailDTO projectTracking = projectTrackingApi.getProjectTracking(projectId);
BeanUtil.copyProperties(extContractDO, extContractDetailDO);
BeanUtil.copyProperties(projectTracking,extContractDetailDO);
BeanUtil.copyProperties(projectScheduleDetail,extContractDetailDO);
return extContractDetailDO;
//Long customerCompanyId = extContractDO.getCustomerCompanyId();
ExtContractRespVO extContractRespVO = BeanUtils.toBean(extContractDO, ExtContractRespVO.class);
//用客户公司id查询
//CustomerCompanyDO customerCompanyDO = customerCompanyMapper.selectById(customerCompanyId);
//String name = customerCompanyDO.getName();
//extContractRespVO.setCustomerCompanyName(name);
//合同总金额
//合同商议提示 // 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;
} }
@Override @Override
public PageResult<ExtContractRespVO> getExtContractPage(ExtContractPageReqVO pageReqVO) { public PageResult<ExtContractRespVO> getExtContractPage(ExtContractPageReqVO pageReqVO) {
if (pageReqVO == null) { PageResult<ExtContractDO> extContractPage = extContractMapper.selectPage(pageReqVO);
throw exception(PARAM_NOT_EXISTS); List<ExtContractDO> list = extContractPage.getList();
} List<ExtContractDetailDO> extContractDetailDOList = new ArrayList<>();
PageResult<ExtContractDO> extContractDOPageResult = extContractMapper.selectPage(pageReqVO); for (ExtContractDO extContractDO : list) {
List<ExtContractDO> excontractDOList = extContractDOPageResult.getList();
List<ExtContractRespVO> extContractRespVOList = new ArrayList<>();
for (ExtContractDO extContractDO : excontractDOList) {
Long id = extContractDO.getId(); Long id = extContractDO.getId();
ExtContractRespVO extContractRespVO = getExtContract(id); ExtContractDetailDO extContractDetailDO = getContractDetail(id);
extContractRespVOList.add(extContractRespVO); extContractDetailDOList.add(extContractDetailDO);
} }
List<ExtContractRespVO> respVOS = BeanUtils.toBean(extContractDetailDOList, ExtContractRespVO.class);
PageResult<ExtContractRespVO> pageResult = new PageResult<>(); PageResult<ExtContractRespVO> pageResult = new PageResult<>();
pageResult.setList(extContractRespVOList); pageResult.setList(respVOS);
return pageResult; return pageResult;
} }

View File

@ -3,15 +3,11 @@ package cn.iocoder.yudao.module.cms.service.outscontract;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 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.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
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.OutsContractPageReqVO;
import cn.iocoder.yudao.module.cms.controller.admin.outscontract.vo.OutsContractRespVO; 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.controller.admin.outscontract.vo.OutsContractSaveReqVO;
import cn.iocoder.yudao.module.cms.dal.dataobject.outscontract.OutsContractDO; 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.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.enums.*;
import cn.iocoder.yudao.module.cms.service.contract.ContractService; import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@ -19,7 +15,6 @@ import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -58,106 +53,12 @@ public class OutsContractServiceImpl implements OutsContractService {
@Resource @Resource
private BpmProcessInstanceApi processInstanceApi; private BpmProcessInstanceApi processInstanceApi;
@Resource
private OutsContractHistoryMapper outsContractHistoryMapper;
@Override @Override
public Long createOutsContract(Long loginUserId,OutsContractSaveReqVO createReqVO) { public Long createOutsContract(Long loginUserId,OutsContractSaveReqVO createReqVO) {
if (createReqVO == null) { return null;
throw exception(PARAM_NOT_EXISTS);
}
if (loginUserId == null) {
throw exception(PARAM_NOT_EXISTS);
}
String userName = adminUserApi.getUser(loginUserId).getNickname();
if (userName == null) {
throw exception(USER_NOT_EXISTS);
}
OutsContractDO outsContractDO = BeanUtils.toBean(createReqVO, OutsContractDO.class);
//校验
Long projectId = outsContractDO.getProjectId();
//校验联表的字段是否和所联系的表内容相同
ContractRespVO contract = contractService.getContract(createReqVO.getContractId());
// 需要联表查询
// 1.合同名称
// 2.主控部门(跟踪部门)
// 3.项目经理
// 4.签订合同总额
//todo 待提取 枚举优化
String name = createReqVO.getName();
String trackingDep = createReqVO.getTrackingDep();
String projectManager = createReqVO.getProjectManager();
BigDecimal outsAmount = createReqVO.getOutsAmount();
if (!contract.getName().equals(name)){
throw exception(PARAM_ERROR);
}
if (!contract.getTrackingDep().equals(trackingDep)){
throw exception(PARAM_ERROR);
}
if (!contract.getProjectManager().equals(projectManager)){
throw exception(PARAM_ERROR);
}
if (contract.getAmount().compareTo(outsAmount) != 0){
throw exception(PARAM_ERROR);
}
OutsContractRespVO outsContractRespVO = BeanUtils.toBean(outsContractDO, OutsContractRespVO.class);
outsContractDO.setCreator(userName);
outsContractDO.setUpdater(userName);
//判断该合同是否已经存在,比较各个字段值是否完全一样
//得到所有的合同逐个比较
List<OutsContractDO> outsContractDOList = outsContractMapper.selectList("project_id", projectId);
List<OutsContractRespVO> outsContractRespList = BeanUtils.toBean(outsContractDOList, OutsContractRespVO.class);
for (OutsContractRespVO respVO : outsContractRespList) {
if (respVO.equals(outsContractRespVO)){
throw exception(CONTRACT_ALREADY_EXISTS);
}
}
outsContractMapper.insert(outsContractDO);
Long outsContractDOId = outsContractDO.getId();
OutsContractHistoryDO outsContractHistoryDO = BeanUtils.toBean(outsContractDO, OutsContractHistoryDO.class);
// 启动流程同时写入历史合同
if (createReqVO.getId() == null) {
String processInstanceId = processInstanceApi.createProcessInstance(loginUserId,
new BpmProcessInstanceCreateReqDTO()
.setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(outsContractDOId)));
// 写入工作流编号
outsContractHistoryDO.setProcessInstanceId(processInstanceId);
outsContractHistoryDO.setOutsContractId(outsContractDOId);
Long count = outsContractHistoryMapper.selectCount("project_id", projectId);
if (count < 1) {
outsContractHistoryDO.setVersion(VERSION);
} else {
outsContractHistoryDO.setVersion(String.valueOf(count+1));
}
outsContractHistoryDO.setProcessStatus("0");
outsContractHistoryMapper.insert(outsContractHistoryDO);
}
return outsContractDO.getId();
} }
@Override @Override
@ -166,10 +67,6 @@ public class OutsContractServiceImpl implements OutsContractService {
validateOutsContractExists(updateReqVO.getId()); validateOutsContractExists(updateReqVO.getId());
Long contractId = updateReqVO.getContractId(); Long contractId = updateReqVO.getContractId();
ContractRespVO contract = contractService.getContract(contractId);
if (contract == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
OutsContractDO outsContractDO = outsContractMapper.selectById(updateReqVO.getId()); OutsContractDO outsContractDO = outsContractMapper.selectById(updateReqVO.getId());
if (!Objects.equals(updateReqVO.getProjectId(), outsContractDO.getProjectId())) { if (!Objects.equals(updateReqVO.getProjectId(), outsContractDO.getProjectId())) {
throw exception(PROJECT_NOT_EXISTS); throw exception(PROJECT_NOT_EXISTS);
@ -207,12 +104,7 @@ public class OutsContractServiceImpl implements OutsContractService {
OutsContractDO outsContractDO = outsContractMapper.selectById(id); OutsContractDO outsContractDO = outsContractMapper.selectById(id);
OutsContractRespVO outsContractRespVO = BeanUtils.toBean(outsContractDO, OutsContractRespVO.class); OutsContractRespVO outsContractRespVO = BeanUtils.toBean(outsContractDO, OutsContractRespVO.class);
Long contractId = outsContractDO.getContractId(); Long contractId = outsContractDO.getContractId();
ContractRespVO contract = contractService.getContract(contractId);
outsContractRespVO.setName(contract.getName());
outsContractRespVO.setTrackingDep(contract.getTrackingDep());
outsContractRespVO.setProjectManager(contract.getProjectManager());
outsContractRespVO.setOutsAmount(contract.getAmount());
outsContractRespVO.setMajor(OutsContractMajorEnum.getNoByCode(outsContractRespVO.getMajor())); outsContractRespVO.setMajor(OutsContractMajorEnum.getNoByCode(outsContractRespVO.getMajor()));
outsContractRespVO.setCountType(CountTypeEnum.getNoByCode(outsContractRespVO.getCountType())); outsContractRespVO.setCountType(CountTypeEnum.getNoByCode(outsContractRespVO.getCountType()));

View File

@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.pms.api.projectschedule.dto;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
/** /**
* @author wyw * @author wyw
* @description * @description
@ -15,4 +17,9 @@ public class ProjectScheduleDetailDTO {
*/ */
private String projectManager; private String projectManager;
/**
* 外部合同商议提示
*/
private LocalDateTime exReminderTime;
} }

View File

@ -33,4 +33,10 @@ public class ProjectTrackingDetailDTO {
*/ */
private BigDecimal expectedContractAmount; private BigDecimal expectedContractAmount;
/**
* 建设方
*/
private String constructionSide;
} }

View File

@ -75,7 +75,7 @@ public class ProjectScheduleDO extends BaseDO {
/** /**
* 外部合同商议时间 * 外部合同商议时间
*/ */
private LocalDateTime contractNegotiationTime; private LocalDateTime exReminderTime;
/** /**
* 已完成百分比 * 已完成百分比
*/ */

View File

@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule;
import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDO; import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDO;
import lombok.Data; import lombok.Data;
import java.time.LocalDateTime;
/** /**
* @author wyw * @author wyw
@ -17,4 +19,8 @@ public class ProjectScheduleDetailDO extends ProjectDO {
*/ */
private String projectManager; private String projectManager;
/**
* 外部合同商议时间
*/
private LocalDateTime exReminderTime;
} }

View File

@ -36,4 +36,9 @@ public class ProjectTrackingDetailDO extends ProjectDO {
*/ */
private BigDecimal expectedContractAmount; private BigDecimal expectedContractAmount;
/**
* 建设方
*/
private String constructionSide;
} }