1.1.4 新增获取合同订单采购匹配信息接口

dev
yinq 3 months ago
parent 38507edcaf
commit 8c9bea23dd

@ -11,6 +11,7 @@ import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo;
import org.dromara.oa.erp.domain.vo.ErpContractOrderPurchaseMaterialVo;
import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo;
import org.dromara.oa.erp.service.IErpContractOrderService;
import org.dromara.common.mybatis.core.page.PageQuery;
@ -96,5 +97,16 @@ public class ErpContractOrderController extends BaseController {
@PathVariable("projectId") Long projectId) {
return R.ok(erpContractOrderService.queryById(projectId));
}
/**
*
*
* @param projectId
*/
@GetMapping("/purchaseMaterialList/{projectId}")
public R<List<ErpContractOrderPurchaseMaterialVo>> getPurchaseMaterialList(@NotNull(message = "主键不能为空")
@PathVariable("projectId") Long projectId) {
return R.ok(erpContractOrderService.queryPurchaseMaterialList(projectId));
}
}

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.oa.erp.domain.ErpContractMaterial;
import org.dromara.oa.erp.domain.vo.ErpContractOrderPurchaseMaterialVo;
import org.dromara.oa.erp.domain.vo.ErpContractMaterialVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -34,4 +35,12 @@ public interface ErpContractMaterialMapper extends BaseMapperPlus<ErpContractMat
*/
public List<ErpContractMaterialVo> selectCustomErpContractMaterialVoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<ErpContractMaterial> queryWrapper);
/**
* ID
*
* @param projectId ID
* @return
*/
List<ErpContractOrderPurchaseMaterialVo> selectPurchaseMatchListByProjectId(@Param("projectId") Long projectId);
}

@ -1,7 +1,8 @@
package org.dromara.oa.erp.service;
import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo;
import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo;
import org.dromara.oa.erp.domain.vo.ErpContractOrderPurchaseMaterialVo;
import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
@ -48,6 +49,14 @@ public interface IErpContractOrderService {
*/
List<ErpProjectInfoVo> queryList(ErpProjectInfoBo bo);
/**
*
*
* @param projectId ID
* @return
*/
List<ErpContractOrderPurchaseMaterialVo> queryPurchaseMaterialList(Long projectId);
/**
*
*

@ -21,8 +21,10 @@ import org.dromara.oa.erp.domain.bo.ErpProjectInfoBo;
import org.dromara.oa.erp.domain.bo.ErpProjectContractsBo;
import org.dromara.oa.erp.domain.bo.ErpProjectPlanStageBo;
import org.dromara.oa.erp.domain.vo.ErpContractInfoVo;
import org.dromara.oa.erp.domain.vo.ErpContractOrderPurchaseMaterialVo;
import org.dromara.oa.erp.domain.vo.ErpProjectInfoVo;
import org.dromara.oa.erp.mapper.ErpContractInfoMapper;
import org.dromara.oa.erp.mapper.ErpContractMaterialMapper;
import org.dromara.oa.erp.mapper.ErpProjectInfoMapper;
import org.dromara.oa.erp.mapper.ErpProjectContractsMapper;
import org.dromara.oa.erp.mapper.ErpProjectPlanMapper;
@ -49,6 +51,7 @@ import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.apache.dubbo.config.annotation.DubboReference;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -73,6 +76,7 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
private final ErpProjectPlanMapper projectPlanMapper;
private final ErpProjectPlanStageMapper planStageMapper;
private final ErpContractInfoMapper contractInfoMapper;
private final ErpContractMaterialMapper contractMaterialMapper;
private final ErpProjectContractsMapper projectContractsMapper;
private final IErpContractChangeService erpContractChangeService;
@ -174,6 +178,14 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
return projectInfoMapper.selectCustomErpProjectInfoVoList(lqw);
}
@Override
public List<ErpContractOrderPurchaseMaterialVo> queryPurchaseMaterialList(Long projectId) {
if (projectId == null) {
return Collections.emptyList();
}
return contractMaterialMapper.selectPurchaseMatchListByProjectId(projectId);
}
/**
*
*
@ -569,6 +581,8 @@ public class ErpContractOrderServiceImpl implements IErpContractOrderService {
newPlan.setFlowStatus("finish");
newPlan.setManagerId(projectInfo.getManagerId());
newPlan.setChargeId(projectInfo.getChargeId());
// 合同订单可存合同ID
newPlan.setContractId(projectInfo.getContractId());
// 生成项目计划编号
String projectPlanCode = remoteCodeRuleService.selectCodeRuleCode("1010");

@ -5,6 +5,8 @@
<mapper namespace="org.dromara.oa.erp.mapper.ErpContractMaterialMapper">
<resultMap type="org.dromara.oa.erp.domain.vo.ErpContractMaterialVo" id="ErpContractMaterialResult">
</resultMap>
<resultMap type="org.dromara.oa.erp.domain.vo.ErpContractOrderPurchaseMaterialVo" id="ErpContractOrderPurchaseMaterialResult">
</resultMap>
<select id="selectCustomErpContractMaterialVoList" resultMap="ErpContractMaterialResult">
select t.contract_material_id,
@ -40,4 +42,42 @@
${ew.getCustomSqlSegment}
</select>
<select id="selectPurchaseMatchListByProjectId" resultMap="ErpContractOrderPurchaseMaterialResult">
select cm.contract_material_id,
cm.contract_id,
m.material_code,
coalesce(m.material_name, cm.product_name) as material_name,
r.sale_material_name,
cm.specification_description,
u.unit_name,
cm.amount as contract_amount,
pm.purchased_amount as purchased_amount,
case
when coalesce(pm.purchased_amount, 0) &gt;= cm.amount then 0
else cm.amount - coalesce(pm.purchased_amount, 0)
end as unpurchased_amount
from erp_contract_material cm
inner join erp_project_info pi on pi.project_id = #{projectId}
and pi.del_flag = '0'
left join base_material_info m on m.material_id = cm.material_id
left join base_relation_material r on r.relation_material_id = cm.relation_material_id
left join base_unit_info u on u.unit_id = cm.unit_id
left join (select ppm.relation_details_id,
sum(coalesce(ppm.purchase_amount, 0)) as purchased_amount
from erp_project_purchase_material ppm
inner join erp_project_purchase pp on pp.project_purchase_id = ppm.project_purchase_id
and pp.del_flag = '0'
and pp.spare_flag = '1'
where ppm.del_flag = '0'
and ppm.spare_flag = '1'
and pp.relation_id = (select contract_id
from erp_project_info
where project_id = #{projectId}
and del_flag = '0')
group by ppm.relation_details_id) pm on pm.relation_details_id = cm.contract_material_id
where cm.del_flag = '0'
and cm.contract_id = pi.contract_id
order by cm.contract_material_id asc
</select>
</mapper>

Loading…
Cancel
Save