fix(oa/erp): 修复项目台账报表合同关联查询问题

dev
Yangk 2 months ago
parent 53f0ea3611
commit 8c5606eac1

@ -14,7 +14,7 @@ import java.math.BigDecimal;
/**
* crm_shipping_tariff
*
* @author hm
* @author yangk
* @date 2026-03-16
*/
@Data

@ -27,7 +27,7 @@ import java.util.List;
/**
* Service
*
* @author hm
* @author yangk
* @date 2026-03-16
*/
@RequiredArgsConstructor
@ -58,7 +58,8 @@ public class CrmShippingTariffServiceImpl implements ICrmShippingTariffService {
LambdaQueryWrapper<CrmShippingTariff> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getProvince()), CrmShippingTariff::getProvince, bo.getProvince());
lqw.eq(bo.getWeightKg() != null, CrmShippingTariff::getWeightKg, bo.getWeightKg());
lqw.like(StringUtils.isNotBlank(bo.getSolutionName()), CrmShippingTariff::getSolutionName, bo.getSolutionName());
lqw.like(StringUtils.isNotBlank(bo.getSolutionName()), CrmShippingTariff::getSolutionName,
bo.getSolutionName());
lqw.orderByAsc(CrmShippingTariff::getProvince).orderByAsc(CrmShippingTariff::getWeightKg);
return lqw;
}
@ -99,7 +100,7 @@ public class CrmShippingTariffServiceImpl implements ICrmShippingTariffService {
// 判断是否存在同省份同公斤级的数据
LambdaQueryWrapper<CrmShippingTariff> lqw = Wrappers.lambdaQuery();
lqw.eq(CrmShippingTariff::getProvince, bo.getProvince())
.eq(CrmShippingTariff::getWeightKg, bo.getWeightKg());
.eq(CrmShippingTariff::getWeightKg, bo.getWeightKg());
CrmShippingTariff exist = baseMapper.selectOne(lqw);
if (ObjectUtil.isNull(exist)) {
@ -111,7 +112,8 @@ public class CrmShippingTariffServiceImpl implements ICrmShippingTariffService {
successNum++;
} else {
failureNum++;
failureMsg.append("<br/>").append(failureNum).append("、记录 ").append(bo.getProvince()).append("-").append(bo.getWeightKg()).append(" 已存在");
failureMsg.append("<br/>").append(failureNum).append("、记录 ").append(bo.getProvince()).append("-")
.append(bo.getWeightKg()).append(" 已存在");
}
} catch (Exception e) {
failureNum++;
@ -138,10 +140,10 @@ public class CrmShippingTariffServiceImpl implements ICrmShippingTariffService {
int targetWeightKg = weight.setScale(0, RoundingMode.UP).intValue();
LambdaQueryWrapper<CrmShippingTariff> lqw = Wrappers.lambdaQuery();
// 精确匹配省份,如果有需要也可以做前缀匹配(如"北京" -> "北京市"),为了严谨最好先用 like 进行容错
// 精确匹配省份,如果有需要也可以做前缀匹配(如"北京" -> "北京市")
lqw.like(CrmShippingTariff::getProvince, province)
.eq(CrmShippingTariff::getWeightKg, targetWeightKg)
.last("LIMIT 1");
.eq(CrmShippingTariff::getWeightKg, targetWeightKg)
.last("LIMIT 1");
return baseMapper.selectVoOne(lqw);
}

@ -12,7 +12,7 @@
p.project_category,
p.project_status,
p.payment_method,
p.contract_id,
c.contract_id,
u1.nick_name AS manager_name,
d.dept_name,
CONCAT(t2.type_name, '/', t1.type_name) AS type_name,
@ -86,7 +86,11 @@
LEFT JOIN sys_dept d ON d.dept_id = p.dept_id
LEFT JOIN sys_user u1 ON u1.user_id = p.manager_id
<!-- 合同 + 客户 + 客户经理 -->
LEFT JOIN erp_contract_info c ON p.contract_id = c.contract_id AND c.del_flag = '0'
LEFT JOIN erp_contract_info c ON c.contract_id = (
SELECT contract_id FROM erp_project_contracts
WHERE project_id = p.project_id AND del_flag = '0'
ORDER BY sort_order ASC LIMIT 1
) AND c.del_flag = '0'
LEFT JOIN crm_customer_info cust ON c.one_customer_id = cust.customer_id AND cust.del_flag = '0'
LEFT JOIN sys_user u2 ON c.contract_manager_id = u2.user_id
<!-- 预算(取已审批的) -->
@ -112,7 +116,7 @@
FROM erp_contract_material
WHERE del_flag = '0'
GROUP BY contract_id
) mat_sub ON p.contract_id = mat_sub.contract_id
) mat_sub ON c.contract_id = mat_sub.contract_id
<!-- 进度信息 Pivot 子查询 -->
LEFT JOIN (
SELECT

Loading…
Cancel
Save