1.0.99 add根据合同ID查询关联项目信息列表、根据项目ID和备件标识查询物料信息

dev
yinq 1 month ago
parent e5029bbc48
commit 76c1a8b300

@ -136,4 +136,13 @@ public class ErpProjectInfoController extends BaseController {
public TableDataInfo<ErpProjectInfoVo> getErpProjectWithContractList(ErpProjectInfoBo bo, PageQuery pageQuery) {
return erpProjectInfoService.selectErpProjectWithContractList(bo, pageQuery);
}
/**
* ID
*/
@GetMapping("/listByContractId/{contractId}")
public R<List<ErpProjectInfoVo>> listByContractId(@NotNull(message = "合同ID不能为空")
@PathVariable("contractId") Long contractId) {
return R.ok(erpProjectInfoService.listByContractId(contractId));
}
}

@ -19,6 +19,7 @@ import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo;
import org.dromara.oa.erp.domain.vo.ErpProjectMaterialsSourceVo;
import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo;
import org.dromara.oa.erp.service.IErpProjectPurchaseService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -147,14 +148,14 @@ public class ErpProjectPurchaseController extends BaseController {
* ID
* 10
*/
@SaCheckPermission("oa/erp:projectPurchase:query")
@GetMapping("/getContractMaterialsByProjectId/{projectId}/{spareFlag}")
public R<List<ErpProjectPurchaseMaterialVo>> getContractMaterialsByProjectId(@NotNull(message = "项目ID不能为空")
@PathVariable("projectId") Long projectId,
@NotBlank(message = "备件标识不能为空")
@PathVariable("spareFlag") String spareFlag) {
List<ErpProjectPurchaseMaterialVo> materials = erpProjectPurchaseService.getProjectMaterialsByProjectId(projectId, spareFlag);
return R.ok(materials);
public R<ErpProjectMaterialsSourceVo> getContractMaterialsByProjectId(@NotNull(message = "项目ID不能为空")
@PathVariable("projectId") Long projectId,
@NotBlank(message = "备件标识不能为空")
@PathVariable("spareFlag") String spareFlag,
@RequestParam(value = "contractId", required = false) Long contractId) {
ErpProjectMaterialsSourceVo data = erpProjectPurchaseService.getProjectMaterialsSourceByProjectId(projectId, spareFlag, contractId);
return R.ok(data);
}
}

@ -9,6 +9,8 @@ import org.dromara.oa.erp.domain.ErpProjectPurchaseMaterial;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.Set;
/**
* Mapper
*
@ -42,6 +44,14 @@ public interface ErpProjectPurchaseMaterialMapper extends BaseMapperPlus<ErpProj
*/
List<ErpProjectPurchaseMaterialVo> selectBudgetMaterialsByProjectId(@Param("projectId") Long projectId, @Param("spareFlag") String spareFlag);
/**
* IDID
*
* @param projectId ID
* @return ID
*/
Set<Long> selectBudgetIdsByProjectId(@Param("projectId") Long projectId);
/**
* ID
*
@ -50,4 +60,12 @@ public interface ErpProjectPurchaseMaterialMapper extends BaseMapperPlus<ErpProj
*/
List<ErpProjectPurchaseMaterialVo> selectContractMaterialsByProjectId(@Param("projectId") Long projectId, @Param("spareFlag") String spareFlag);
/**
* IDID
*
* @param projectId ID
* @return ID
*/
Set<Long> selectContractIdsByProjectId(@Param("projectId") Long projectId);
}

@ -101,4 +101,12 @@ public interface IErpProjectInfoService {
* @return TableDataInfo<ErpProjectInfoVo>
*/
public TableDataInfo<ErpProjectInfoVo> selectErpProjectWithContractList(ErpProjectInfoBo projectInfoBo, PageQuery pageQuery);
/**
* ID
*
* @param contractId ID
* @return
*/
List<ErpProjectInfoVo> listByContractId(Long contractId);
}

@ -3,6 +3,7 @@ package org.dromara.oa.erp.service;
import org.dromara.oa.erp.domain.ErpProjectPurchase;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo;
import org.dromara.oa.erp.domain.vo.ErpProjectMaterialsSourceVo;
import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
@ -80,4 +81,13 @@ public interface IErpProjectPurchaseService {
* ID
*/
List<ErpProjectPurchaseMaterialVo> getProjectMaterialsByProjectId(Long projectId, String spareFlag);
/**
* ID relationId
*
* @param projectId ID
* @param spareFlag 1-0-
* @param contractId ID
*/
ErpProjectMaterialsSourceVo getProjectMaterialsSourceByProjectId(Long projectId, String spareFlag, Long contractId);
}

@ -819,5 +819,37 @@ public class ErpProjectInfoServiceImpl implements IErpProjectInfoService {
return TableDataInfo.build(page);
}
/**
* ID
*
* @param contractId ID
* @return
*/
@Override
public List<ErpProjectInfoVo> listByContractId(Long contractId) {
if (contractId == null) {
return Collections.emptyList();
}
List<Long> relatedProjectIds = projectContractsMapper.selectList(
Wrappers.<ErpProjectContracts>lambdaQuery()
.select(ErpProjectContracts::getProjectId)
.eq(ErpProjectContracts::getContractId, contractId)
.eq(ErpProjectContracts::getDelFlag, "0")
).stream()
.map(ErpProjectContracts::getProjectId)
.filter(Objects::nonNull)
.distinct()
.toList();
if (CollUtil.isEmpty(relatedProjectIds)) {
return Collections.emptyList();
}
MPJLambdaWrapper<ErpProjectInfo> lqw = JoinWrappers.lambda(ErpProjectInfo.class)
.selectAll(ErpProjectInfo.class)
.eq("t.del_flag", "0")
.in(ErpProjectInfo::getProjectId, relatedProjectIds)
.orderByDesc(ErpProjectInfo::getCreateTime);
return baseMapper.selectCustomErpProjectInfoVoList(lqw);
}
}

@ -19,6 +19,7 @@ import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.oa.erp.domain.ErpProjectPurchase;
import org.dromara.oa.erp.domain.ErpProjectPurchaseMaterial;
import org.dromara.oa.erp.domain.bo.ErpProjectPurchaseBo;
import org.dromara.oa.erp.domain.vo.ErpProjectMaterialsSourceVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseVo;
import org.dromara.oa.erp.domain.vo.ErpProjectPurchaseMaterialVo;
import org.dromara.oa.erp.mapper.ErpProjectPurchaseMapper;
@ -290,6 +291,42 @@ public class ErpProjectPurchaseServiceImpl implements IErpProjectPurchaseService
return list;
}
@Override
public ErpProjectMaterialsSourceVo getProjectMaterialsSourceByProjectId(Long projectId, String spareFlag, Long contractId) {
if (projectId == null || StringUtils.isBlank(spareFlag)) {
ErpProjectMaterialsSourceVo empty = new ErpProjectMaterialsSourceVo();
empty.setRelationId(null);
empty.setMaterialList(Collections.emptyList());
return empty;
}
ErpProjectMaterialsSourceVo result = new ErpProjectMaterialsSourceVo();
if ("0".equals(spareFlag)) {
// 非备件-预算物料relationId 为预算ID
Set<Long> budgetIds = purchaseMaterialMapper.selectBudgetIdsByProjectId(projectId);
Long budgetId = (budgetIds == null || budgetIds.isEmpty()) ? null : budgetIds.iterator().next();
result.setRelationId(budgetId);
result.setMaterialList(purchaseMaterialMapper.selectBudgetMaterialsByProjectId(projectId, spareFlag));
return result;
}
if ("1".equals(spareFlag)) {
// 备件-合同物料relationId 为合同ID优先使用传入的 contractId
Long relationId = contractId;
if (relationId == null) {
Set<Long> contractIds = purchaseMaterialMapper.selectContractIdsByProjectId(projectId);
relationId = (contractIds == null || contractIds.isEmpty()) ? null : contractIds.iterator().next();
}
result.setRelationId(relationId);
result.setMaterialList(purchaseMaterialMapper.selectContractMaterialsByProjectId(projectId, spareFlag));
return result;
}
result.setRelationId(null);
result.setMaterialList(Collections.emptyList());
return result;
}
/**
*
*

@ -94,4 +94,20 @@
order by t.material_cost_id asc
</select>
<select id="selectBudgetIdsByProjectId" resultType="java.lang.Long">
select distinct t.budget_id
from erp_budget_material_cost t
where t.del_flag = '0'
and t.project_id = #{projectId}
and t.budget_id is not null
</select>
<select id="selectContractIdsByProjectId" resultType="java.lang.Long">
select distinct pc.contract_id
from erp_project_contracts pc
where pc.del_flag = '0'
and pc.project_id = #{projectId}
and pc.contract_id is not null
</select>
</mapper>

Loading…
Cancel
Save