mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-16 03:01:53 +08:00
Compare commits
4 Commits
feature-Ou
...
feature-Co
Author | SHA1 | Date | |
---|---|---|---|
![]() |
faf72f2456 | ||
![]() |
39f92c378c | ||
![]() |
668f7283d8 | ||
![]() |
b8a80432f6 |
@@ -8,8 +8,10 @@ import cn.iocoder.yudao.framework.jackson.core.databind.TimestampLocalDateTimeSe
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
|
||||
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
@@ -18,6 +20,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
|
||||
@AutoConfiguration
|
||||
@@ -38,8 +41,8 @@ public class YudaoJacksonAutoConfiguration {
|
||||
.addSerializer(LocalTime.class, LocalTimeSerializer.INSTANCE)
|
||||
.addDeserializer(LocalTime.class, LocalTimeDeserializer.INSTANCE)
|
||||
// 新增 LocalDateTime 序列化、反序列化规则,使用 Long 时间戳
|
||||
.addSerializer(LocalDateTime.class, TimestampLocalDateTimeSerializer.INSTANCE)
|
||||
.addDeserializer(LocalDateTime.class, TimestampLocalDateTimeDeserializer.INSTANCE);
|
||||
.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
|
||||
.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
// 1.2 注册到 objectMapper
|
||||
objectMappers.forEach(objectMapper -> objectMapper.registerModule(simpleModule));
|
||||
|
||||
|
@@ -27,10 +27,6 @@ public class ContractRespVO {
|
||||
@ExcelProperty("项目id")
|
||||
private Long projectId;
|
||||
|
||||
@Schema(description = "外部合同id", example = "32057")
|
||||
@ExcelProperty("外部合同id")
|
||||
private Long extContractId;
|
||||
|
||||
|
||||
|
||||
@Schema(description = "项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "SJ24001")
|
||||
|
@@ -23,36 +23,6 @@ public class ContractSaveReqVO {
|
||||
@ExcelProperty("项目id")
|
||||
private Long projectId;
|
||||
|
||||
@Schema(description = "外部合同id", example = "32057")
|
||||
@ExcelProperty("外部合同id")
|
||||
private Long extContractId;
|
||||
|
||||
//
|
||||
|
||||
@Schema(description = "项目编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "SJ24001")
|
||||
@ExcelProperty("项目编号")
|
||||
private String code;
|
||||
|
||||
@Schema(description = "主控部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "生产一部")
|
||||
@ExcelProperty("主控部门")
|
||||
private String trackingDep;
|
||||
|
||||
@Schema(description = "项目负责人", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("项目负责人")
|
||||
private String projectManager;
|
||||
|
||||
@Schema(description = "预计合同金额", requiredMode = Schema.RequiredMode.REQUIRED,example = "200.0000")
|
||||
@ExcelProperty("预计合同金额")
|
||||
private BigDecimal expectedContractAmount;
|
||||
|
||||
@Schema(description = "合同商议提示")
|
||||
@ExcelProperty("合同商议提示")
|
||||
private LocalDateTime reminderTime;
|
||||
|
||||
@Schema(description = "出图公司", requiredMode = Schema.RequiredMode.REQUIRED,example = "***设计院")
|
||||
@ExcelProperty("出图公司")
|
||||
private String drawingCompany;
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -32,10 +32,6 @@ public class ContractDO extends BaseDO {
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
/**
|
||||
* 外部合同id
|
||||
*/
|
||||
private Long extContractId;
|
||||
/**
|
||||
* 合同名称
|
||||
*/
|
||||
|
@@ -0,0 +1,16 @@
|
||||
package cn.iocoder.yudao.module.cms.dal.dataobject.contract;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author wyw
|
||||
* @description
|
||||
* @date 2024/8/14
|
||||
*/
|
||||
@Data
|
||||
public class ProjectScheduleDetailDO extends ContractDO {
|
||||
/**
|
||||
* 项目负责人
|
||||
*/
|
||||
private String projectLeader;
|
||||
}
|
@@ -0,0 +1,13 @@
|
||||
package cn.iocoder.yudao.module.cms.dal.dataobject.contract;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ProjectScheduleDetailRespDO extends ContractDO{
|
||||
|
||||
/**
|
||||
* 项目负责人
|
||||
*/
|
||||
private String projectManager;
|
||||
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
package cn.iocoder.yudao.module.cms.dal.dataobject.contract;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ProjectTrackDetailRespDO extends ContractDO{
|
||||
|
||||
/**
|
||||
* 项目编号
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 出图公司
|
||||
*/
|
||||
private String drawingCompany;
|
||||
|
||||
/**
|
||||
* 主控部门
|
||||
*/
|
||||
private String trackingDepName;
|
||||
|
||||
/**
|
||||
* 预计合同金额
|
||||
*/
|
||||
private BigDecimal expectedContractAmount;
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,36 @@
|
||||
package cn.iocoder.yudao.module.cms.dal.dataobject.contract;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author wyw
|
||||
* @description
|
||||
* @date 2024/8/14
|
||||
*/
|
||||
@Data
|
||||
public class ProjectTrackingDetailDO extends ContractDO {
|
||||
/**
|
||||
* 项目编号
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 跟踪部门
|
||||
*/
|
||||
private String trackingDep;
|
||||
|
||||
|
||||
/**
|
||||
* 出图公司
|
||||
*/
|
||||
private BigDecimal lettingPartyPeople;
|
||||
|
||||
/**
|
||||
* 预计公司合同总金额
|
||||
*/
|
||||
private BigDecimal companyContractAmount;
|
||||
|
||||
|
||||
}
|
@@ -1,29 +0,0 @@
|
||||
package cn.iocoder.yudao.module.cms.dal.mysql.customerCompany;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.cms.dal.dataobject.customerCompany.CustomerCompanyDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.cms.controller.admin.customerCompany.vo.*;
|
||||
|
||||
/**
|
||||
* 客户公司 Mapper
|
||||
*
|
||||
* @author hhyykk
|
||||
*/
|
||||
@Mapper
|
||||
public interface CustomerCompanyMapper extends BaseMapperX<CustomerCompanyDO> {
|
||||
|
||||
default PageResult<CustomerCompanyDO> selectPage(CustomerCompanyPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<CustomerCompanyDO>()
|
||||
.likeIfPresent(CustomerCompanyDO::getContacts, reqVO.getContacts())
|
||||
.likeIfPresent(CustomerCompanyDO::getName, reqVO.getName())
|
||||
.eqIfPresent(CustomerCompanyDO::getAddress, reqVO.getAddress())
|
||||
.eqIfPresent(CustomerCompanyDO::getPhone, reqVO.getPhone())
|
||||
.orderByDesc(CustomerCompanyDO::getId));
|
||||
}
|
||||
|
||||
}
|
@@ -1,7 +1,6 @@
|
||||
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;
|
||||
@@ -66,100 +65,55 @@ public class ContractServiceImpl implements ContractService {
|
||||
@Override
|
||||
public Long createContract(Long loginUserId, ContractSaveReqVO createReqVO) {
|
||||
|
||||
if (loginUserId == null) {
|
||||
throw exception(PARAM_NOT_EXISTS);
|
||||
}
|
||||
|
||||
String userName = adminUserApi.getUser(loginUserId).getNickname();
|
||||
if (userName == null) {
|
||||
throw exception(USER_NOT_EXISTS);
|
||||
}
|
||||
|
||||
|
||||
//校验,项目是否存在
|
||||
Long projectId = createReqVO.getProjectId();
|
||||
projectApi.validProjectExist(projectId);
|
||||
|
||||
//校验联表的字段是否和所联系的表内容相同
|
||||
ProjectRespDTO project = projectApi.getProject(projectId);
|
||||
ProjectDetailRespDTO projectDetail = projectApi.getProjectDetailById(projectId);
|
||||
|
||||
|
||||
//todo 待提取
|
||||
String code = createReqVO.getCode();
|
||||
String trackingDep = createReqVO.getTrackingDep();
|
||||
String projectManager = createReqVO.getProjectManager();
|
||||
String drawingCompany = createReqVO.getDrawingCompany();
|
||||
BigDecimal expectedContractAmount = createReqVO.getExpectedContractAmount();
|
||||
BigDecimal provisionalSettlement = createReqVO.getProvisionalSettlement();
|
||||
|
||||
//LocalDateTime reminderTime = createReqVO.getReminderTime();
|
||||
|
||||
if (!project.getCode().equals(code)) {
|
||||
throw exception(PARAM_ERROR);
|
||||
}
|
||||
if (!projectDetail.getTrackingDepName().equals(trackingDep)) {
|
||||
throw exception(PARAM_ERROR);
|
||||
}
|
||||
if (!projectDetail.getProjectManagerName().equals(projectManager)) {
|
||||
throw exception(PARAM_ERROR);
|
||||
}
|
||||
if (!project.getDrawingCompany().equals(drawingCompany)) {
|
||||
throw exception(PARAM_ERROR);
|
||||
}
|
||||
if (!Objects.equals(project.getContractAmount(), expectedContractAmount)) {
|
||||
throw exception(PARAM_ERROR);
|
||||
}
|
||||
if (!Objects.equals(provisionalSettlement, getProvisionalSettlement(createReqVO))) {
|
||||
throw exception(PARAM_ERROR);
|
||||
}
|
||||
|
||||
|
||||
ContractDO contract = BeanUtils.toBean(createReqVO, ContractDO.class);
|
||||
ContractRespVO contractResp = BeanUtils.toBean(contract, ContractRespVO.class);
|
||||
contract.setCreator(userName);
|
||||
contract.setUpdater(userName);
|
||||
|
||||
|
||||
//判断该合同是否已经存在,比较各个字段值是否完全一样
|
||||
//得到所有的合同?逐个比较?
|
||||
|
||||
|
||||
List<ContractDO> contractList = contractMapper.selectList("project_id", projectId);
|
||||
List<ContractRespVO> respVOList = BeanUtils.toBean(contractList, ContractRespVO.class);
|
||||
|
||||
for (ContractRespVO respVO : respVOList) {
|
||||
if (respVO.equals(contractResp)) {
|
||||
String name = createReqVO.getName();
|
||||
String trimName = name.trim();
|
||||
List<ContractDO> projectList = contractMapper.selectList("project_id", projectId);
|
||||
for (ContractDO contractDO : projectList) {
|
||||
if (contractDO.getName().equals(trimName)){
|
||||
throw exception(CONTRACT_ALREADY_EXISTS);
|
||||
}
|
||||
}
|
||||
ContractDO contract = BeanUtils.toBean(createReqVO, ContractDO.class);
|
||||
|
||||
contract.setCreator(userName);
|
||||
contract.setUpdater(userName);
|
||||
|
||||
contractMapper.insert(contract);
|
||||
|
||||
|
||||
Long contractId = contract.getId();
|
||||
ContractHistoryDO contractHistory = BeanUtils.toBean(contract, ContractHistoryDO.class);
|
||||
// Long contractId = contract.getId();
|
||||
// ContractHistoryDO contractHistory = BeanUtils.toBean(contract, ContractHistoryDO.class);
|
||||
//
|
||||
|
||||
|
||||
// 启动流程,同时写入历史合同
|
||||
if (createReqVO.getId() == null) {
|
||||
String processInstanceId = processInstanceApi.createProcessInstance(loginUserId,
|
||||
new BpmProcessInstanceCreateReqDTO()
|
||||
.setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(contractId)));
|
||||
|
||||
// 写入工作流编号
|
||||
contractHistory.setProcessInstanceId(processInstanceId);
|
||||
contractHistory.setContractId(contractId);
|
||||
|
||||
Long count = contractHistoryMapper.selectCount("project_id", projectId);
|
||||
if (count < 1) {
|
||||
contractHistory.setVersion(VERSION);
|
||||
} else {
|
||||
contractHistory.setVersion(String.valueOf(count + 1));
|
||||
}
|
||||
|
||||
contractHistory.setProcessStatus("0");
|
||||
contractHistoryMapper.insert(contractHistory);
|
||||
}
|
||||
// // 启动流程,同时写入历史合同
|
||||
// if (createReqVO.getId() == null) {
|
||||
// String processInstanceId = processInstanceApi.createProcessInstance(loginUserId,
|
||||
// new BpmProcessInstanceCreateReqDTO()
|
||||
// .setProcessDefinitionKey(PROCESS_KEY).setBusinessKey(String.valueOf(contractId)));
|
||||
//
|
||||
// // 写入工作流编号
|
||||
// contractHistory.setProcessInstanceId(processInstanceId);
|
||||
// contractHistory.setContractId(contractId);
|
||||
//
|
||||
// Long count = contractHistoryMapper.selectCount("project_id", projectId);
|
||||
// if (count < 1) {
|
||||
// contractHistory.setVersion(VERSION);
|
||||
// } else {
|
||||
// contractHistory.setVersion(String.valueOf(count + 1));
|
||||
// }
|
||||
//
|
||||
// contractHistory.setProcessStatus("0");
|
||||
// contractHistoryMapper.insert(contractHistory);
|
||||
// }
|
||||
|
||||
|
||||
//返回
|
||||
@@ -203,38 +157,12 @@ public class ContractServiceImpl implements ContractService {
|
||||
}
|
||||
|
||||
Long projectId = contractDO.getProjectId();
|
||||
|
||||
if (projectId == null) {
|
||||
throw exception(PROJECT_NOT_EXISTS);
|
||||
}
|
||||
|
||||
ContractRespVO contractRespVO = BeanUtils.toBean(contractDO, ContractRespVO.class);
|
||||
|
||||
// 需要联表查询
|
||||
// 1.项目编号 pms_project 直接 √
|
||||
// 2.主控部门(跟踪部门) pms_project找到的是id 需要联表 √
|
||||
// 3.项目经理 pms_project找到的是id 需要联表 √
|
||||
// 4.出图公司 pms_project 直接 √
|
||||
// 5.预计合同金额 pms_project 直接 √
|
||||
// 6.合同商议提示 √ 外部合同表里
|
||||
// 7.暂定结算数 √
|
||||
|
||||
ProjectRespDTO project = projectApi.getProject(projectId);
|
||||
contractRespVO.setCode(project.getCode());
|
||||
contractRespVO.setDrawingCompany(project.getDrawingCompany());
|
||||
contractRespVO.setExpectedContractAmount(project.getContractAmount());
|
||||
ProjectDetailRespDTO projectDetail = projectApi.getProjectDetailById(projectId);
|
||||
contractRespVO.setTrackingDep(projectDetail.getTrackingDepName());
|
||||
contractRespVO.setProjectManager(projectDetail.getProjectManagerName());
|
||||
|
||||
//分包合同商议提示 TODO 待优化
|
||||
// ExtContractDO extContractDO = extContractMapper.selectOne("project_id", projectId);
|
||||
// LocalDateTime reminderTime = extContractDO.getReminderTime();
|
||||
contractRespVO.setReminderTime(null);
|
||||
|
||||
//暂定结算数
|
||||
BigDecimal provisionalSettlement = getProvisionalSettlementById(id);
|
||||
contractRespVO.setProvisionalSettlement(provisionalSettlement);
|
||||
|
||||
|
||||
return contractRespVO;
|
||||
}
|
||||
|
@@ -1,53 +0,0 @@
|
||||
package cn.iocoder.yudao.module.cms.service.customerCompany;
|
||||
|
||||
import jakarta.validation.*;
|
||||
import cn.iocoder.yudao.module.cms.controller.admin.customerCompany.vo.*;
|
||||
import cn.iocoder.yudao.module.cms.dal.dataobject.customerCompany.CustomerCompanyDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
|
||||
/**
|
||||
* 客户公司 Service 接口
|
||||
*
|
||||
* @author hhyykk
|
||||
*/
|
||||
public interface CustomerCompanyService {
|
||||
|
||||
/**
|
||||
* 创建客户公司
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createCustomerCompany(@Valid CustomerCompanySaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新客户公司
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateCustomerCompany(@Valid CustomerCompanySaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除客户公司
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteCustomerCompany(Long id);
|
||||
|
||||
/**
|
||||
* 获得客户公司
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 客户公司
|
||||
*/
|
||||
CustomerCompanyDO getCustomerCompany(Long id);
|
||||
|
||||
/**
|
||||
* 获得客户公司分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 客户公司分页
|
||||
*/
|
||||
PageResult<CustomerCompanyDO> getCustomerCompanyPage(CustomerCompanyPageReqVO pageReqVO);
|
||||
|
||||
}
|
@@ -1,71 +0,0 @@
|
||||
package cn.iocoder.yudao.module.cms.service.customerCompany;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import cn.iocoder.yudao.module.cms.controller.admin.customerCompany.vo.*;
|
||||
import cn.iocoder.yudao.module.cms.dal.dataobject.customerCompany.CustomerCompanyDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.cms.dal.mysql.customerCompany.CustomerCompanyMapper;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.cms.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 客户公司 Service 实现类
|
||||
*
|
||||
* @author hhyykk
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class CustomerCompanyServiceImpl implements CustomerCompanyService {
|
||||
|
||||
@Resource
|
||||
private CustomerCompanyMapper customerCompanyMapper;
|
||||
|
||||
@Override
|
||||
public Long createCustomerCompany(CustomerCompanySaveReqVO createReqVO) {
|
||||
// 插入
|
||||
CustomerCompanyDO customerCompany = BeanUtils.toBean(createReqVO, CustomerCompanyDO.class);
|
||||
customerCompanyMapper.insert(customerCompany);
|
||||
// 返回
|
||||
return customerCompany.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCustomerCompany(CustomerCompanySaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateCustomerCompanyExists(updateReqVO.getId());
|
||||
// 更新
|
||||
CustomerCompanyDO updateObj = BeanUtils.toBean(updateReqVO, CustomerCompanyDO.class);
|
||||
customerCompanyMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteCustomerCompany(Long id) {
|
||||
// 校验存在
|
||||
validateCustomerCompanyExists(id);
|
||||
// 删除
|
||||
customerCompanyMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validateCustomerCompanyExists(Long id) {
|
||||
if (customerCompanyMapper.selectById(id) == null) {
|
||||
throw exception(CUSTOMER_COMPANY_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomerCompanyDO getCustomerCompany(Long id) {
|
||||
return customerCompanyMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<CustomerCompanyDO> getCustomerCompanyPage(CustomerCompanyPageReqVO pageReqVO) {
|
||||
return customerCompanyMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
@@ -10,7 +10,6 @@ import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractRe
|
||||
import cn.iocoder.yudao.module.cms.controller.admin.extContract.vo.ExtContractSaveReqVO;
|
||||
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;
|
||||
@@ -60,8 +59,6 @@ public class ExtContractServiceImpl implements ExtContractService {
|
||||
@Resource
|
||||
private ProjectApi projectApi;
|
||||
|
||||
@Resource
|
||||
private CustomerCompanyMapper customerCompanyMapper;
|
||||
|
||||
@Resource
|
||||
private AdminUserApi adminUserApi;
|
||||
|
@@ -1,7 +1,5 @@
|
||||
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;
|
||||
@@ -47,8 +45,7 @@ public class ExtContractHistoryServiceImpl implements ExtContractHistoryService
|
||||
@Resource
|
||||
private AdminUserApi adminUserApi;
|
||||
|
||||
@Resource
|
||||
private CustomerCompanyMapper customerCompanyMapper;
|
||||
|
||||
|
||||
@Resource
|
||||
private ExtContractService extContractService;
|
||||
@@ -104,9 +101,7 @@ public class ExtContractHistoryServiceImpl implements ExtContractHistoryService
|
||||
HistoryResp.setProjectManager(projectDetail.getProjectManagerName());
|
||||
|
||||
//用客户公司id查询
|
||||
CustomerCompanyDO customerCompanyDO = customerCompanyMapper.selectById(customerCompanyId);
|
||||
String name = customerCompanyDO.getName();
|
||||
HistoryResp.setCustomerCompanyName(name);
|
||||
HistoryResp.setCustomerCompanyName(null);
|
||||
// TODO 枚举优化
|
||||
|
||||
//合同总金额
|
||||
|
@@ -0,0 +1,15 @@
|
||||
package cn.iocoder.yudao.module.pms.api.projectschedule;
|
||||
|
||||
import cn.iocoder.yudao.module.pms.api.projectschedule.dto.ProjectScheduleDetailRespDTO;
|
||||
import cn.iocoder.yudao.module.pms.api.projecttracking.dto.ProjectTrackDetailRespDTO;
|
||||
|
||||
public interface ProjectScheduleApi {
|
||||
/**
|
||||
* 获得项目进度信息
|
||||
* @param id 项目进度信息id
|
||||
* @return ProjectScheduleDetailRespDTO
|
||||
*/
|
||||
ProjectScheduleDetailRespDTO getProjectScheduleDetail(Long id);
|
||||
|
||||
ProjectScheduleDetailRespDTO getProjectTrackDetailByProjectId(Long projectId);
|
||||
}
|
@@ -0,0 +1,13 @@
|
||||
package cn.iocoder.yudao.module.pms.api.projectschedule.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ProjectScheduleDetailRespDTO {
|
||||
|
||||
/**
|
||||
* 项目负责人
|
||||
*/
|
||||
private String projectManager;
|
||||
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
package cn.iocoder.yudao.module.pms.api.projecttracking;
|
||||
|
||||
import cn.iocoder.yudao.module.pms.api.projecttracking.dto.ProjectTrackDetailRespDTO;
|
||||
|
||||
public interface ProjectTrackingApi {
|
||||
/**
|
||||
* 获得项目追踪信息
|
||||
* @param id 项目追踪信息id
|
||||
* @return ProjectScheduleDetailRespDTO
|
||||
*/
|
||||
ProjectTrackDetailRespDTO getProjectTrackDetail(Long id);
|
||||
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,32 @@
|
||||
package cn.iocoder.yudao.module.pms.api.projecttracking.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ProjectTrackDetailRespDTO {
|
||||
|
||||
/**
|
||||
* 项目编号
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 出图公司
|
||||
*/
|
||||
private String drawingCompany;
|
||||
|
||||
/**
|
||||
* 主控部门
|
||||
*/
|
||||
private String trackingDepName;
|
||||
|
||||
/**
|
||||
* 预计合同金额
|
||||
*/
|
||||
private BigDecimal expectedContractAmount;
|
||||
|
||||
|
||||
|
||||
}
|
@@ -1,44 +0,0 @@
|
||||
package cn.iocoder.yudao.module.pms.api.project;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
|
||||
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
|
||||
import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDO;
|
||||
import cn.iocoder.yudao.module.pms.dal.dataobject.project.ProjectDetailDO;
|
||||
import cn.iocoder.yudao.module.pms.dal.mysql.project.ProjectMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstants.PROJECT_NOT_EXISTS;
|
||||
|
||||
@Service
|
||||
@Validated
|
||||
public class ProjectImpl implements ProjectApi {
|
||||
|
||||
|
||||
@Resource
|
||||
private ProjectMapper projectMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public ProjectRespDTO getProject(Long projectId) {
|
||||
ProjectDO projectDO = projectMapper.selectById(projectId);
|
||||
return BeanUtils.toBean(projectDO, ProjectRespDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProjectDetailRespDTO getProjectDetailById(Long projectId) {
|
||||
ProjectDetailDO projectMapperDetail = projectMapper.getDetailById(projectId);
|
||||
return BeanUtils.toBean(projectMapperDetail, ProjectDetailRespDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validProjectExist(Long projectId) {
|
||||
if (projectMapper.selectById(projectId) == null) {
|
||||
throw exception(PROJECT_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
package cn.iocoder.yudao.module.pms.api.projectschedule;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.pms.api.projectschedule.dto.ProjectScheduleDetailRespDTO;
|
||||
import cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule.ProjectScheduleDO;
|
||||
import cn.iocoder.yudao.module.pms.service.projectschedule.ProjectScheduleService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@Service
|
||||
@Validated
|
||||
public class ProjectScheduleImpl implements ProjectScheduleApi {
|
||||
|
||||
@Resource
|
||||
private ProjectScheduleService projectScheduleService;
|
||||
|
||||
|
||||
@Override
|
||||
public ProjectScheduleDetailRespDTO getProjectScheduleDetail(Long id) {
|
||||
|
||||
ProjectScheduleDO projectSchedule = projectScheduleService.getProjectSchedule(id);
|
||||
return BeanUtils.toBean(projectSchedule,ProjectScheduleDetailRespDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProjectScheduleDetailRespDTO getProjectTrackDetailByProjectId(Long projectId) {
|
||||
ProjectScheduleDO projectScheduleByProjectId = projectScheduleService.getProjectScheduleByProjectId(projectId);
|
||||
return BeanUtils.toBean(projectScheduleByProjectId,ProjectScheduleDetailRespDTO.class);
|
||||
}
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
package cn.iocoder.yudao.module.pms.api.projecttracking;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.pms.api.projecttracking.dto.ProjectTrackDetailRespDTO;
|
||||
import cn.iocoder.yudao.module.pms.dal.dataobject.projecttracking.ProjectTrackingDO;
|
||||
import cn.iocoder.yudao.module.pms.service.projecttracking.ProjectTrackingService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@Service
|
||||
@Validated
|
||||
public class ProjectTrackingImpl implements ProjectTrackingApi {
|
||||
|
||||
@Resource
|
||||
private ProjectTrackingService projectTrackingService;
|
||||
|
||||
@Override
|
||||
public ProjectTrackDetailRespDTO getProjectTrackDetail(Long id) {
|
||||
ProjectTrackingDO projectTracking = projectTrackingService.getProjectTracking(id);
|
||||
return BeanUtils.toBean(projectTracking, ProjectTrackDetailRespDTO.class);
|
||||
}
|
||||
|
||||
}
|
@@ -1,7 +1,6 @@
|
||||
package cn.iocoder.yudao.module.pms.controller.admin.projectschedule.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import java.math.BigDecimal;
|
||||
@@ -84,24 +83,4 @@ public class ProjectSchedulePageReqVO extends PageParam {
|
||||
@Schema(description = "最后编辑人")
|
||||
private String finalEditor;
|
||||
|
||||
@Schema(description = "创建人")
|
||||
private String creator;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "更新人")
|
||||
private String updator;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] updateTime;
|
||||
|
||||
@Schema(description = "是否删除")
|
||||
private Boolean deleted;
|
||||
|
||||
@Schema(description = "租户id", example = "1")
|
||||
private Long tenantId;
|
||||
|
||||
}
|
@@ -105,28 +105,4 @@ public class ProjectScheduleRespVO {
|
||||
@ExcelProperty("最后编辑人")
|
||||
private String finalEditor;
|
||||
|
||||
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建人")
|
||||
private String creator;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("更新人")
|
||||
private String updator;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@ExcelProperty("更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("是否删除")
|
||||
private Boolean deleted;
|
||||
|
||||
@Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@ExcelProperty("租户id")
|
||||
private Long tenantId;
|
||||
|
||||
}
|
@@ -91,26 +91,5 @@ public class ProjectScheduleSaveReqVO {
|
||||
@Schema(description = "最后编辑人")
|
||||
private String finalEditor;
|
||||
|
||||
@Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "创建人不能为空")
|
||||
private String creator;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "更新人", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "更新人不能为空")
|
||||
private String updator;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
@Schema(description = "是否删除", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "是否删除不能为空")
|
||||
private Boolean deleted;
|
||||
|
||||
@Schema(description = "租户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "租户id不能为空")
|
||||
private Long tenantId;
|
||||
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.pms.controller.admin.projecttracking.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@@ -16,6 +17,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
|
||||
@ToString(callSuper = true)
|
||||
public class ProjectTrackingPageReqVO extends PageParam {
|
||||
|
||||
|
||||
@Schema(description = "跟踪项目名称", example = "张三")
|
||||
private String name;
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.pms.controller.admin.projecttracking.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
|
@@ -1,17 +1,10 @@
|
||||
package cn.iocoder.yudao.module.pms.dal.dataobject.projectschedule;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
@@ -123,9 +116,5 @@ public class ProjectScheduleDO extends BaseDO {
|
||||
* 最后编辑人
|
||||
*/
|
||||
private String finalEditor;
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private String updator;
|
||||
|
||||
}
|
@@ -18,6 +18,7 @@ import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import org.glassfish.jaxb.core.v2.TODO;
|
||||
|
||||
/**
|
||||
* 项目跟踪信息 DO
|
||||
@@ -39,6 +40,7 @@ public class ProjectTrackingDO extends BaseDO {
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 跟踪项目名称
|
||||
*/
|
||||
@@ -80,11 +82,11 @@ public class ProjectTrackingDO extends BaseDO {
|
||||
/**
|
||||
* 建设方
|
||||
*/
|
||||
private BigDecimal constructionSide;
|
||||
private String constructionSide;
|
||||
/**
|
||||
* 发包人
|
||||
*/
|
||||
private BigDecimal lettingPartyPeople;
|
||||
private String lettingPartyPeople;
|
||||
/**
|
||||
* 客户联系人
|
||||
*/
|
||||
|
@@ -40,12 +40,8 @@ public interface ProjectScheduleMapper extends BaseMapperX<ProjectScheduleDO> {
|
||||
.eqIfPresent(ProjectScheduleDO::getChoose, reqVO.getChoose())
|
||||
.eqIfPresent(ProjectScheduleDO::getCompletionFileUrl, reqVO.getCompletionFileUrl())
|
||||
.eqIfPresent(ProjectScheduleDO::getFinalEditor, reqVO.getFinalEditor())
|
||||
.eqIfPresent(ProjectScheduleDO::getCreator, reqVO.getCreator())
|
||||
.betweenIfPresent(ProjectScheduleDO::getCreateTime, reqVO.getCreateTime())
|
||||
.eqIfPresent(ProjectScheduleDO::getUpdator, reqVO.getUpdator())
|
||||
.betweenIfPresent(ProjectScheduleDO::getUpdateTime, reqVO.getUpdateTime())
|
||||
.eqIfPresent(ProjectScheduleDO::getDeleted, reqVO.getDeleted())
|
||||
.orderByDesc(ProjectScheduleDO::getId));
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -50,4 +50,7 @@ public interface ProjectScheduleService {
|
||||
*/
|
||||
PageResult<ProjectScheduleDO> getProjectSchedulePage(ProjectSchedulePageReqVO pageReqVO);
|
||||
|
||||
|
||||
ProjectScheduleDO getProjectScheduleByProjectId(Long id);
|
||||
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.pms.service.projectschedule;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -11,6 +12,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.pms.dal.mysql.projectschedule.ProjectScheduleMapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstants.*;
|
||||
|
||||
@@ -68,4 +71,16 @@ public class ProjectScheduleServiceImpl implements ProjectScheduleService {
|
||||
return projectScheduleMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProjectScheduleDO getProjectScheduleByProjectId(Long projectId) {
|
||||
QueryWrapper<ProjectScheduleDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("project_id", projectId);
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
List<ProjectScheduleDO> projectScheduleDOS = projectScheduleMapper.selectList(queryWrapper);
|
||||
if (projectScheduleDOS == null || projectScheduleDOS.isEmpty()) {
|
||||
throw exception(PROJECT_SCHEDULE_NOT_EXISTS);
|
||||
}
|
||||
return projectScheduleDOS.get(0);
|
||||
}
|
||||
|
||||
}
|
@@ -57,7 +57,7 @@ public class ProjectTrackingServiceImpl implements ProjectTrackingService {
|
||||
|
||||
private void validateProjectTrackingExists(Long id) {
|
||||
if (projectTrackingMapper.selectById(id) == null) {
|
||||
throw exception(PROJECT_TRACKING_NOT_EXISTS);
|
||||
throw exception(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -18,8 +18,8 @@ spring:
|
||||
# Jackson 配置项y
|
||||
jackson:
|
||||
serialization:
|
||||
write-dates-as-timestamps: true # 设置 Date 的格式,使用时间戳
|
||||
write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401
|
||||
# write-dates-as-timestamps: true # 设置 Date 的格式,使用时间戳
|
||||
# write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401
|
||||
write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳
|
||||
fail-on-empty-beans: false # 允许序列化无属性的 Bean
|
||||
|
||||
|
Reference in New Issue
Block a user