1.0.40 项目计划关联项目编号

dev
yinq 3 weeks ago
parent e2c126508e
commit 2d3ef29125

@ -122,6 +122,12 @@ public class ErpProjectPlanVo implements Serializable {
@ExcelProperty(value = "项目名称") @ExcelProperty(value = "项目名称")
private String projectName; private String projectName;
/**
*
*/
@ExcelProperty(value = "项目编号")
private String projectCode;
/** /**
* *
*/ */

@ -59,6 +59,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
@DubboReference(timeout = 30000) @DubboReference(timeout = 30000)
private RemoteWorkflowService remoteWorkflowService; private RemoteWorkflowService remoteWorkflowService;
@DubboReference(timeout = 30000) @DubboReference(timeout = 30000)
private RemoteCodeRuleService remoteCodeRuleService; private RemoteCodeRuleService remoteCodeRuleService;
@ -69,7 +70,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
* @return * @return
*/ */
@Override @Override
public ErpProjectPlanVo queryById(Long projectPlanId){ public ErpProjectPlanVo queryById(Long projectPlanId) {
// 使用自定义方法查询,包含关联数据 // 使用自定义方法查询,包含关联数据
ErpProjectPlanVo projectPlanVo = baseMapper.selectCustomErpProjectPlanVoById(projectPlanId); ErpProjectPlanVo projectPlanVo = baseMapper.selectCustomErpProjectPlanVoById(projectPlanId);
if (ObjectUtils.isEmpty(projectPlanVo)) { if (ObjectUtils.isEmpty(projectPlanVo)) {
@ -77,28 +78,28 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
} }
// 查询项目计划阶段列表 // 查询项目计划阶段列表
MPJLambdaWrapper<ErpProjectPlanStage> lqw = JoinWrappers.lambda(ErpProjectPlanStage.class) MPJLambdaWrapper<ErpProjectPlanStage> lqw = JoinWrappers.lambda(ErpProjectPlanStage.class)
.selectAll(ErpProjectPlanStage.class) .selectAll(ErpProjectPlanStage.class)
.eq("t.del_flag", "0") .eq("t.del_flag", "0")
.eq(projectPlanId != null, ErpProjectPlanStage::getProjectPlanId, projectPlanId); .eq(projectPlanId != null, ErpProjectPlanStage::getProjectPlanId, projectPlanId);
List<ErpProjectPlanStageVo> planStageList = planStageMapper.selectVoList(lqw); List<ErpProjectPlanStageVo> planStageList = planStageMapper.selectVoList(lqw);
projectPlanVo.setPlanStageList(planStageList); projectPlanVo.setPlanStageList(planStageList);
return projectPlanVo; return projectPlanVo;
} }
/** /**
* *
* *
* @param bo * @param bo
* @param pageQuery * @param pageQuery
* @return * @return
*/ */
@Override @Override
public TableDataInfo<ErpProjectPlanVo> queryPageList(ErpProjectPlanBo bo, PageQuery pageQuery) { public TableDataInfo<ErpProjectPlanVo> queryPageList(ErpProjectPlanBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpProjectPlan> lqw = buildQueryWrapper(bo); MPJLambdaWrapper<ErpProjectPlan> lqw = buildQueryWrapper(bo);
// 使用自定义分页查询方法获取包含关联数据的结果 // 使用自定义分页查询方法获取包含关联数据的结果
Page<ErpProjectPlanVo> result = baseMapper.selectCustomErpProjectPlanVoList(pageQuery.build(), lqw); Page<ErpProjectPlanVo> result = baseMapper.selectCustomErpProjectPlanVoList(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
/** /**
* *
@ -116,22 +117,20 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
private MPJLambdaWrapper<ErpProjectPlan> buildQueryWrapper(ErpProjectPlanBo bo) { private MPJLambdaWrapper<ErpProjectPlan> buildQueryWrapper(ErpProjectPlanBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ErpProjectPlan> lqw = JoinWrappers.lambda(ErpProjectPlan.class) MPJLambdaWrapper<ErpProjectPlan> lqw = JoinWrappers.lambda(ErpProjectPlan.class)
.selectAll(ErpProjectPlan.class) .selectAll(ErpProjectPlan.class)
.eq(ErpProjectPlan::getDelFlag, "0") .eq(ErpProjectPlan::getDelFlag, "0")
// 关联项目信息 .eq(bo.getProjectId() != null, ErpProjectPlan::getProjectId, bo.getProjectId())
.select(ErpProjectInfo::getProjectName) .eq(StringUtils.isNotBlank(bo.getProjectPlanCode()), ErpProjectPlan::getProjectPlanCode, bo.getProjectPlanCode())
.leftJoin(ErpProjectInfo.class,ErpProjectInfo::getProjectId, ErpProjectPlan::getProjectId) .eq(bo.getManagerId() != null, ErpProjectPlan::getManagerId, bo.getManagerId())
.eq(bo.getProjectId() != null, ErpProjectPlan::getProjectId, bo.getProjectId()) .eq(bo.getChargeId() != null, ErpProjectPlan::getChargeId, bo.getChargeId())
.eq(StringUtils.isNotBlank(bo.getProjectPlanCode()), ErpProjectPlan::getProjectPlanCode, bo.getProjectPlanCode()) .eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpProjectPlan::getPaymentMethod, bo.getPaymentMethod())
.eq(bo.getManagerId() != null, ErpProjectPlan::getManagerId, bo.getManagerId()) .eq(StringUtils.isNotBlank(bo.getProjectPlanStatus()), ErpProjectPlan::getProjectPlanStatus, bo.getProjectPlanStatus())
.eq(bo.getChargeId() != null, ErpProjectPlan::getChargeId, bo.getChargeId()) .eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpProjectPlan::getFlowStatus, bo.getFlowStatus())
.eq(StringUtils.isNotBlank(bo.getPaymentMethod()), ErpProjectPlan::getPaymentMethod, bo.getPaymentMethod()) .eq(bo.getSortOrder() != null, ErpProjectPlan::getSortOrder, bo.getSortOrder())
.eq(StringUtils.isNotBlank(bo.getProjectPlanStatus()), ErpProjectPlan::getProjectPlanStatus, bo.getProjectPlanStatus()) .eq(bo.getContractId() != null, ErpProjectPlan::getContractId, bo.getContractId())
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpProjectPlan::getFlowStatus, bo.getFlowStatus()) .eq(StringUtils.isNotBlank(bo.getOssId()), ErpProjectPlan::getOssId, bo.getOssId())
.eq(bo.getSortOrder() != null, ErpProjectPlan::getSortOrder, bo.getSortOrder()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectPlan::getActiveFlag, bo.getActiveFlag())
.eq(bo.getContractId() != null, ErpProjectPlan::getContractId, bo.getContractId()) .orderByDesc(ErpProjectPlan::getCreateTime);
.eq(StringUtils.isNotBlank(bo.getOssId()), ErpProjectPlan::getOssId, bo.getOssId())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpProjectPlan::getActiveFlag, bo.getActiveFlag());
return lqw; return lqw;
} }
@ -154,7 +153,7 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
if (flag) { if (flag) {
bo.setProjectPlanId(add.getProjectPlanId()); bo.setProjectPlanId(add.getProjectPlanId());
bo.setProjectPlanCode(add.getProjectPlanCode()); bo.setProjectPlanCode(add.getProjectPlanCode());
if ( ObjectUtils.isNotEmpty(planStageList)) { if (ObjectUtils.isNotEmpty(planStageList)) {
for (ErpProjectPlanStage planStage : planStageList) { for (ErpProjectPlanStage planStage : planStageList) {
planStage.setProjectPlanId(add.getProjectPlanId()); planStage.setProjectPlanId(add.getProjectPlanId());
planStage.setProjectId(add.getProjectId()); planStage.setProjectId(add.getProjectId());
@ -227,14 +226,14 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
// 收集当前计划阶段列表中已存在的计划阶段ID集合 // 收集当前计划阶段列表中已存在的计划阶段ID集合
Set<Long> existingPlanStageIds = planStageList.stream() Set<Long> existingPlanStageIds = planStageList.stream()
.map(ErpProjectPlanStage::getPlanStageId) .map(ErpProjectPlanStage::getPlanStageId)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
// 从旧的计划阶段列表中筛选出需要删除的记录(即不在当前列表中的记录) // 从旧的计划阶段列表中筛选出需要删除的记录(即不在当前列表中的记录)
List<ErpProjectPlanStage> filterPlanStageIds = planStageOldList.stream() List<ErpProjectPlanStage> filterPlanStageIds = planStageOldList.stream()
.filter(stage -> !existingPlanStageIds.contains(stage.getPlanStageId())) .filter(stage -> !existingPlanStageIds.contains(stage.getPlanStageId()))
.toList(); .toList();
// 删除需要移除的计划阶段记录 // 删除需要移除的计划阶段记录
for (ErpProjectPlanStage filterPlanStageId : filterPlanStageIds) { for (ErpProjectPlanStage filterPlanStageId : filterPlanStageIds) {
@ -248,15 +247,15 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
/** /**
* *
*/ */
private void validEntityBeforeSave(ErpProjectPlan entity){ private void validEntityBeforeSave(ErpProjectPlan entity) {
// 唯一性校验:一个项目只能有一个项目计划 // 唯一性校验:一个项目只能有一个项目计划
Long projectId = entity.getProjectId(); Long projectId = entity.getProjectId();
if (projectId == null) { if (projectId == null) {
throw new ServiceException("项目不能为空"); throw new ServiceException("项目不能为空");
} }
MPJLambdaWrapper<ErpProjectPlan> lqw = JoinWrappers.lambda(ErpProjectPlan.class) MPJLambdaWrapper<ErpProjectPlan> lqw = JoinWrappers.lambda(ErpProjectPlan.class)
.eq(ErpProjectPlan::getProjectId, projectId) .eq(ErpProjectPlan::getProjectId, projectId)
.eq(ErpProjectPlan::getDelFlag, "0"); .eq(ErpProjectPlan::getDelFlag, "0");
// 更新时排除自身ID // 更新时排除自身ID
if (entity.getProjectPlanId() != null) { if (entity.getProjectPlanId() != null) {
lqw.ne(ErpProjectPlan::getProjectPlanId, entity.getProjectPlanId()); lqw.ne(ErpProjectPlan::getProjectPlanId, entity.getProjectPlanId());
@ -308,12 +307,12 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
@Override @Override
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
// 先删除子表 // 先删除子表
planStageMapper.delete(Wrappers.<ErpProjectPlanStage>lambdaQuery() planStageMapper.delete(Wrappers.<ErpProjectPlanStage>lambdaQuery()
.in(ErpProjectPlanStage::getProjectPlanId, ids)); .in(ErpProjectPlanStage::getProjectPlanId, ids));
baseMapper.deleteByIds(ids); baseMapper.deleteByIds(ids);
//删除工作流 //删除工作流
List<Long> businessIds = ids.stream().toList(); List<Long> businessIds = ids.stream().toList();
@ -374,10 +373,10 @@ public class ErpProjectPlanServiceImpl implements IErpProjectPlanService {
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) { } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) {
projectPlan.setProjectPlanStatus(OAStatusEnum.COMPLETED.getStatus()); projectPlan.setProjectPlanStatus(OAStatusEnum.COMPLETED.getStatus());
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus()) } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus())
|| Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) { || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) {
projectPlan.setProjectPlanStatus(OAStatusEnum.INVALID.getStatus()); projectPlan.setProjectPlanStatus(OAStatusEnum.INVALID.getStatus());
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus()) } else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus())
|| Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) { || Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) {
// 流程驳回:业务状态还原为草稿,允许重新编辑和提交 // 流程驳回:业务状态还原为草稿,允许重新编辑和提交
projectPlan.setProjectPlanStatus(OAStatusEnum.DRAFT.getStatus()); projectPlan.setProjectPlanStatus(OAStatusEnum.DRAFT.getStatus());
} }

@ -28,11 +28,12 @@
t.update_by, t.update_by,
t.update_time, t.update_time,
p.project_name, p.project_name,
u1.nick_name as managerName, p.project_code as projectCode,
d1.dept_name as managerDeptName, u1.nick_name as managerName,
u2.nick_name as chargeName, d1.dept_name as managerDeptName,
u2.nick_name as chargeName,
c.contract_name as contractName, c.contract_name as contractName,
u3.nick_name as createName u3.nick_name as createName
from erp_project_plan t from erp_project_plan t
left join erp_project_info p on t.project_id = p.project_id left join erp_project_info p on t.project_id = p.project_id
left join sys_user u1 on t.manager_id = u1.user_id left join sys_user u1 on t.manager_id = u1.user_id
@ -66,6 +67,7 @@
t.update_by, t.update_by,
t.update_time, t.update_time,
p.project_name, p.project_name,
p.project_code as projectCode,
u1.nick_name as managerName, u1.nick_name as managerName,
d1.dept_name as managerDeptName, d1.dept_name as managerDeptName,
u2.nick_name as chargeName, u2.nick_name as chargeName,
@ -102,6 +104,7 @@
t.update_by, t.update_by,
t.update_time, t.update_time,
p.project_name, p.project_name,
p.project_code as projectCode,
u1.nick_name as managerName, u1.nick_name as managerName,
d1.dept_name as managerDeptName, d1.dept_name as managerDeptName,
u2.nick_name as chargeName, u2.nick_name as chargeName,
@ -147,6 +150,7 @@
t.update_by, t.update_by,
t.update_time, t.update_time,
p.project_name, p.project_name,
p.project_code as projectCode,
u1.nick_name as managerName, u1.nick_name as managerName,
d1.dept_name as managerDeptName, d1.dept_name as managerDeptName,
u2.nick_name as chargeName, u2.nick_name as chargeName,

Loading…
Cancel
Save