mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-02-08 14:44:57 +08:00
[fix] 优化外部合同管理
This commit is contained in:
parent
38b8336631
commit
4ee64cce49
@ -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")
|
||||||
|
@ -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;
|
||||||
|
@ -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("最后编辑人")
|
||||||
|
@ -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("最后编辑人")
|
||||||
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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()));
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得外部合同分页
|
* 获得外部合同分页
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()));
|
||||||
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -33,4 +33,10 @@ public class ProjectTrackingDetailDTO {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal expectedContractAmount;
|
private BigDecimal expectedContractAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建设方
|
||||||
|
*/
|
||||||
|
private String constructionSide;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ public class ProjectScheduleDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 外部合同商议时间
|
* 外部合同商议时间
|
||||||
*/
|
*/
|
||||||
private LocalDateTime contractNegotiationTime;
|
private LocalDateTime exReminderTime;
|
||||||
/**
|
/**
|
||||||
* 已完成百分比
|
* 已完成百分比
|
||||||
*/
|
*/
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -36,4 +36,9 @@ public class ProjectTrackingDetailDO extends ProjectDO {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal expectedContractAmount;
|
private BigDecimal expectedContractAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 建设方
|
||||||
|
*/
|
||||||
|
private String constructionSide;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user