Merge branch 'feature-merage-7.31-zqc' of https://gitee.com/hhyykk/ipms-sjy into feature-outsContract-7.26-wyw

# Conflicts:
#	yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/contract/ContractServiceImpl.java
#	yudao-module-cms/yudao-module-cms-biz/src/main/java/cn/iocoder/yudao/module/cms/service/extContract/ExtContractServiceImpl.java
#	yudao-server/src/main/resources/application-local.yaml
This commit is contained in:
wyw 2024-08-07 10:52:21 +08:00
commit 8e41517755
23 changed files with 187 additions and 103 deletions

1
.gitignore vendored
View File

@ -50,4 +50,5 @@ rebel.xml
application-my.yaml
application-local.yaml
/yudao-ui-app/unpackage/

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.cms.dal.mysql.extcontract;
package cn.iocoder.yudao.module.cms.dal.mysql.extContract;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;

View File

@ -2,14 +2,10 @@ package cn.iocoder.yudao.module.cms.service.contract;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceRespDTO;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmTaskRespDTO;
import cn.iocoder.yudao.module.cms.dal.dataobject.contractHistory.ContractHistoryDO;
import cn.iocoder.yudao.module.cms.dal.mysql.contract.ContractMapper;
import cn.iocoder.yudao.module.cms.dal.mysql.contractHistory.ContractHistoryMapper;
import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum;
import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum;
import cn.iocoder.yudao.module.pms.api.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
@ -50,8 +46,6 @@ public class ContractServiceImpl implements ContractService {
*/
public static String VERSION = "1";
@Resource
private ContractMapper contractMapper;
@ -67,9 +61,6 @@ public class ContractServiceImpl implements ContractService {
@Resource
private ContractHistoryMapper contractHistoryMapper;
@Resource
private BpmProcessInstanceApi bpmProcessInstanceApi;
@Override
public Long createContract(Long loginUserId, ContractSaveReqVO createReqVO) {
@ -92,6 +83,7 @@ public class ContractServiceImpl implements ContractService {
ProjectDetailRespDTO projectDetail = projectApi.getProjectDetailById(projectId);
//todo 待提取
String code = createReqVO.getCode();
String trackingDep = createReqVO.getTrackingDep();
String projectManager = createReqVO.getProjectManager();
@ -232,11 +224,6 @@ public class ContractServiceImpl implements ContractService {
contractRespVO.setTrackingDep(projectDetail.getTrackingDepName());
contractRespVO.setProjectManager(projectDetail.getProjectManagerName());
// TODO 枚举优化
contractRespVO.setType(ContractTypeEnum.getNoByCode(contractRespVO.getType()));
contractRespVO.setStatus(ContractStatusEnum.getNoByCode(contractRespVO.getStatus()));
contractRespVO.setCountType(ContractStatusEnum.getNoByCode(contractRespVO.getCountType()));
contractRespVO.setSource(ContractStatusEnum.getNoByCode(contractRespVO.getSource()));
//分包合同商议提示 TODO 待优化
// ExtContractDO extContractDO = extContractMapper.selectOne("project_id", projectId);
// LocalDateTime reminderTime = extContractDO.getReminderTime();
@ -278,36 +265,6 @@ public class ContractServiceImpl implements ContractService {
return pageResult;
}
@Override
public ContractProcessInstanceRespVO getContractProcess(Long id) {
validateContractExists(id);
//去历史里面找
ContractHistoryDO contractHistory = contractHistoryMapper.selectOne("contract_id", id);
if (contractHistory == null) {
throw exception(CONTRACT_NOT_EXISTS);
}
//拿到历史之后 找到process_instance_id status
String processInstanceId = contractHistory.getProcessInstanceId();
String processStatus = contractHistory.getProcessStatus();
//与当前流程里的进行比较
String status = String.valueOf(bpmProcessInstanceApi.getProcessInstance(processInstanceId).getStatus());
//如果不相等
if (!status.equals(processStatus)){
//更新当前合同对应历史表里面的状态
contractHistory.setProcessStatus(status);
contractHistoryMapper.updateById(contractHistory);
}
//返回给前端必要的数据 当前流程里面对应的数据
BpmProcessInstanceRespDTO processInstance = bpmProcessInstanceApi.getProcessInstance(processInstanceId);
List<BpmTaskRespDTO> tasks = bpmProcessInstanceApi.getTask(processInstanceId);
List<BpmProcessInstanceRespDTO.Task> taskList = BeanUtils.toBean(tasks, BpmProcessInstanceRespDTO.Task.class);
processInstance.setTasks(taskList);
return BeanUtils.toBean(processInstance, ContractProcessInstanceRespVO.class);
}
@Override
public BigDecimal getProvisionalSettlementById(Long id) {
ContractDO contractDO = contractMapper.selectById(id);

View File

@ -4,7 +4,7 @@ import cn.iocoder.yudao.module.cms.dal.dataobject.contract.ContractDO;
import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum;
import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import cn.iocoder.yudao.module.pms.api.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;

View File

@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.cms.enums.ChargingStandardEnum;
import cn.iocoder.yudao.module.cms.enums.ContractStatusEnum;
import cn.iocoder.yudao.module.cms.enums.ContractTypeEnum;
import cn.iocoder.yudao.module.cms.service.extContract.ExtContractService;
import cn.iocoder.yudao.module.pms.api.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;

View File

@ -17,7 +17,7 @@ import cn.iocoder.yudao.module.cms.dal.mysql.outscontract.OutsContractMapper;
import cn.iocoder.yudao.module.cms.dal.mysql.outscontracthistory.OutsContractHistoryMapper;
import cn.iocoder.yudao.module.cms.enums.*;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import cn.iocoder.yudao.module.pms.api.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import jakarta.annotation.Resource;

View File

@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.cms.dal.mysql.outscontracthistory.OutsContractHis
import cn.iocoder.yudao.module.cms.enums.CountTypeEnum;
import cn.iocoder.yudao.module.cms.enums.OutsContractMajorEnum;
import cn.iocoder.yudao.module.cms.service.contract.ContractService;
import cn.iocoder.yudao.module.pms.api.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.ProjectApi;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.cms.dal.mysql.extcontract.ExtContractMapper">
<mapper namespace="cn.iocoder.yudao.module.cms.dal.mysql.extContract.ExtContractMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。

View File

@ -0,0 +1,16 @@
package cn.iocoder.yudao.module.pms.api.budegt;
import cn.iocoder.yudao.module.pms.api.budegt.dto.BudegtDetailRespDTO;
import cn.iocoder.yudao.module.pms.api.budegt.dto.BudegtResDTO;
public interface BudgetApi {
/**
* 获得应收款的部分信息
*/
BudegtResDTO getBudegt(Long id);
/**
* 获得应收款的detail信息
*/
BudegtDetailRespDTO getBudegtDetail(Long id);
}

View File

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.pms.api.budegt.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class BudegtDetailRespDTO {
/**
* 合同管理
*/
private Long contractId;
/**
* 预算文件url
*/
private String budgetFileUrl;
/**
* 预算外包成本
*/
private BigDecimal outsourcingCosts;
/**
* 人力成本
*/
private BigDecimal laborCosts;
/**
* 累计人力成本
*/
private BigDecimal accumulatedLaborCosts;
/**
* 生产成本
*/
private BigDecimal productCosts;
/**
* 累计生产成本
*/
private BigDecimal accumulatedProductCosts;
/**
* 财务成本
*/
private BigDecimal financialCosts;
/**
* 累计财务成本
*/
private BigDecimal accumulatedFinancialCosts;
/**
* 回款情况
*/
private String collectionSituation;
}

View File

@ -0,0 +1,50 @@
package cn.iocoder.yudao.module.pms.api.budegt.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class BudegtResDTO {
/**
* 合同管理
*/
private Long contractId;
/**
* 预算文件url
*/
private String budgetFileUrl;
/**
* 预算外包成本
*/
private BigDecimal outsourcingCosts;
/**
* 人力成本
*/
private BigDecimal laborCosts;
/**
* 累计人力成本
*/
private BigDecimal accumulatedLaborCosts;
/**
* 生产成本
*/
private BigDecimal productCosts;
/**
* 累计生产成本
*/
private BigDecimal accumulatedProductCosts;
/**
* 财务成本
*/
private BigDecimal financialCosts;
/**
* 累计财务成本
*/
private BigDecimal accumulatedFinancialCosts;
/**
* 回款情况
*/
private String collectionSituation;
}

View File

@ -1,4 +1,4 @@
package cn.iocoder.yudao.module.pms.api;
package cn.iocoder.yudao.module.pms.api.project;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectDetailRespDTO;
import cn.iocoder.yudao.module.pms.api.project.dto.ProjectRespDTO;

View File

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.pms.api.project;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.pms.api.budegt.BudgetApi;
import cn.iocoder.yudao.module.pms.api.budegt.dto.BudegtDetailRespDTO;
import cn.iocoder.yudao.module.pms.api.budegt.dto.BudegtResDTO;
import cn.iocoder.yudao.module.pms.dal.dataobject.budget.BudgetDO;
import cn.iocoder.yudao.module.pms.dal.mysql.budget.BudgetMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service
@Validated
public class BudgetImpl implements BudgetApi {
@Resource
private BudgetMapper budgetMapper;
@Override
public BudegtResDTO getBudegt(Long id) {
BudgetDO budgetDO = budgetMapper.selectById(id);
BudegtResDTO budegtResDTO = BeanUtils.toBean(budgetDO, BudegtResDTO.class);
return budegtResDTO;
}
@Override
public BudegtDetailRespDTO getBudegtDetail(Long id) {
// budgetMapper.
return null;
}
}

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.pms.api.project;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.pms.api.ProjectApi;
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;

View File

@ -63,6 +63,7 @@ public class ProjectController {
return success(true);
}
// 点击编辑页面后显示的内容
@GetMapping("/get")
@Operation(summary = "获得项目基本信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.pms.dal.mysql.budget.BudgetMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.pms.dal.mysql.budgethistory.BudgetHistoryMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@ -77,7 +77,7 @@
<el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="合同url" prop="contractFileUrl">
<el-input v-model="formData.contractFileUrl" placeholder="请输入合同url" />
<UploadFile v-model="formData.contractFileUrl" />
</el-form-item>
<el-form-item label="建安费" prop="constructionCost">
<el-input v-model="formData.constructionCost" placeholder="请输入建安费" />
@ -110,7 +110,7 @@
<el-input v-model="formData.approvedAmount" placeholder="请输入审定金额" />
</el-form-item>
<el-form-item label="审核文件url" prop="reviewFileUrl">
<el-input v-model="formData.reviewFileUrl" placeholder="请输入审核文件url" />
<UploadFile v-model="formData.reviewFileUrl" />
</el-form-item>
<el-form-item label="创建者" prop="creator">
<el-input v-model="formData.creator" placeholder="请输入创建者" />

View File

@ -128,15 +128,6 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="合同url" prop="contractFileUrl">
<el-input
v-model="queryParams.contractFileUrl"
placeholder="请输入合同url"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="建安费" prop="constructionCost">
<el-input
v-model="queryParams.constructionCost"
@ -207,15 +198,6 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="审核文件url" prop="reviewFileUrl">
<el-input
v-model="queryParams.reviewFileUrl"
placeholder="请输入审核文件url"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者" prop="creator">
<el-input
v-model="queryParams.creator"

View File

@ -87,7 +87,7 @@
<el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="合同附件url" prop="contractFileUrl">
<el-input v-model="formData.contractFileUrl" placeholder="请输入合同附件url" />
<UploadFile v-model="formData.contractFileUrl" />
</el-form-item>
<el-form-item label="建安费" prop="constructionCost">
<el-input v-model="formData.constructionCost" placeholder="请输入建安费" />
@ -135,7 +135,7 @@
<el-input v-model="formData.approvedAmount" placeholder="请输入审定金额" />
</el-form-item>
<el-form-item label="审核文件url" prop="reviewFileUrl">
<el-input v-model="formData.reviewFileUrl" placeholder="请输入审核文件url" />
<UploadFile v-model="formData.reviewFileUrl" />
</el-form-item>
<el-form-item label="创建者" prop="creator">
<el-input v-model="formData.creator" placeholder="请输入创建者" />

View File

@ -171,15 +171,6 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="合同附件url" prop="contractFileUrl">
<el-input
v-model="queryParams.contractFileUrl"
placeholder="请输入合同附件url"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="建安费" prop="constructionCost">
<el-input
v-model="queryParams.constructionCost"
@ -267,15 +258,6 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="审核文件url" prop="reviewFileUrl">
<el-input
v-model="queryParams.reviewFileUrl"
placeholder="请输入审核文件url"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="创建者" prop="creator">
<el-input
v-model="queryParams.creator"

View File

@ -74,7 +74,7 @@
<el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="合同url" prop="contractFileUrl">
<el-input v-model="formData.contractFileUrl" placeholder="请输入合同url" />
<UploadFile v-model="formData.contractFileUrl" />
</el-form-item>
<el-form-item label="建安费" prop="constructionCost">
<el-input v-model="formData.constructionCost" placeholder="请输入建安费" />

View File

@ -119,15 +119,6 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="合同url" prop="contractFileUrl">
<el-input
v-model="queryParams.contractFileUrl"
placeholder="请输入合同url"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="建安费" prop="constructionCost">
<el-input
v-model="queryParams.constructionCost"