This commit is contained in:
parent
471c867c13
commit
a73ca331cb
|
|
@ -299,7 +299,7 @@ public interface MaterialLeaseInfoMapper {
|
||||||
* @param bean
|
* @param bean
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
BmAgreementInfo getAgreeId(MaterialLeaseApplyInfo bean);
|
List<BmAgreementInfo> getAgreeId(MaterialLeaseApplyInfo bean);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 二维码出库:根据qrcode查询在库机具信息
|
* 二维码出库:根据qrcode查询在库机具信息
|
||||||
|
|
|
||||||
|
|
@ -1359,7 +1359,7 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService {
|
||||||
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(listL5)) {
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(listL5)) {
|
||||||
// 优化:预先查询班组和协议信息,避免在循环中重复查询
|
// 优化:预先查询班组和协议信息,避免在循环中重复查询
|
||||||
BmTeam team = null;
|
BmTeam team = null;
|
||||||
BmAgreementInfo agreementInfo = null;
|
List<BmAgreementInfo> agreementInfo = null;
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(bean.getTeamName())) {
|
if (StringUtils.isNotBlank(bean.getTeamName())) {
|
||||||
team = getTeamByNameCached(bean.getTeamName());
|
team = getTeamByNameCached(bean.getTeamName());
|
||||||
|
|
@ -1372,14 +1372,19 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService {
|
||||||
|
|
||||||
// 优化:如果有协议信息,批量查询所有类型的使用数量
|
// 优化:如果有协议信息,批量查询所有类型的使用数量
|
||||||
Map<Long, BigDecimal> useNumMap = new HashMap<>();
|
Map<Long, BigDecimal> useNumMap = new HashMap<>();
|
||||||
if (agreementInfo != null && !listL5.isEmpty()) {
|
if (!CollectionUtils.isEmpty(agreementInfo) && !listL5.isEmpty()) {
|
||||||
// 收集所有需要查询的typeId
|
// 收集所有需要查询的typeId
|
||||||
List<Long> typeIds = listL5.stream()
|
List<Long> typeIds = listL5.stream()
|
||||||
.map(TypeTreeNode::getTypeId)
|
.map(TypeTreeNode::getTypeId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
// 获取agreementInfo中的协议id
|
||||||
|
List<Long> agreementIds = agreementInfo.stream()
|
||||||
|
.map(BmAgreementInfo::getAgreementId)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 批量查询使用数量 - 性能优化关键点
|
// 批量查询使用数量 - 性能优化关键点
|
||||||
List<Type> batchResults = typeMapper.getNumListBatch(agreementInfo.getAgreementId(), typeIds);
|
List<Type> batchResults = typeMapper.getNumListBatch(agreementIds, typeIds);
|
||||||
|
|
||||||
// 转换为Map
|
// 转换为Map
|
||||||
if (!CollectionUtils.isEmpty(batchResults)) {
|
if (!CollectionUtils.isEmpty(batchResults)) {
|
||||||
|
|
@ -1437,7 +1442,7 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService {
|
||||||
* @param bean 查询参数
|
* @param bean 查询参数
|
||||||
* @return 协议信息
|
* @return 协议信息
|
||||||
*/
|
*/
|
||||||
private BmAgreementInfo getAgreementInfoCached(MaterialLeaseApplyInfo bean) {
|
private List<BmAgreementInfo> getAgreementInfoCached(MaterialLeaseApplyInfo bean) {
|
||||||
return materialLeaseInfoMapper.getAgreeId(bean);
|
return materialLeaseInfoMapper.getAgreeId(bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -214,11 +214,11 @@ public interface TypeMapper {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量查询数量 - 性能优化
|
* 批量查询数量 - 性能优化
|
||||||
* @param agreementId 协议ID
|
* @param agreementIds 协议ID
|
||||||
* @param typeIds 类型ID列表
|
* @param typeIds 类型ID列表
|
||||||
* @return 类型使用数量列表
|
* @return 类型使用数量列表
|
||||||
*/
|
*/
|
||||||
List<Type> getNumListBatch(@Param("agreementId") Long agreementId, @Param("typeIds") List<Long> typeIds);
|
List<Type> getNumListBatch(@Param("agreementIds") List<Long> agreementIds, @Param("typeIds") List<Long> typeIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询物资类型管理绑定的用户列表
|
* 查询物资类型管理绑定的用户列表
|
||||||
|
|
|
||||||
|
|
@ -1128,19 +1128,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<select id="getNumListBatch" resultType="com.bonus.material.ma.domain.Type">
|
<select id="getNumListBatch" resultType="com.bonus.material.ma.domain.Type">
|
||||||
SELECT
|
SELECT
|
||||||
mt.type_id as typeId,
|
mt.type_id as typeId,
|
||||||
SUM( CASE WHEN sai.agreement_id = #{agreementId} AND sai.STATUS = '0' THEN sai.num ELSE 0 END ) AS useNum
|
SUM(sai.num) AS useNum
|
||||||
FROM
|
FROM
|
||||||
ma_type mt
|
ma_type mt
|
||||||
LEFT JOIN clz_slt_agreement_info sai ON mt.type_id = sai.type_id
|
LEFT JOIN clz_slt_agreement_info sai ON mt.type_id = sai.type_id
|
||||||
WHERE
|
WHERE
|
||||||
mt.type_id IN
|
sai.STATUS = '0'
|
||||||
|
AND mt.type_id IN
|
||||||
<foreach collection="typeIds" item="typeId" open="(" separator="," close=")">
|
<foreach collection="typeIds" item="typeId" open="(" separator="," close=")">
|
||||||
#{typeId}
|
#{typeId}
|
||||||
</foreach>
|
</foreach>
|
||||||
AND EXISTS ( SELECT 1 FROM clz_slt_agreement_info sai2 WHERE sai2.type_id = mt.type_id AND sai2.agreement_id = #{agreementId}
|
AND sai.agreement_id in
|
||||||
AND sai2.STATUS = '0' and sai2.num > 0)
|
<foreach item="id" collection="agreementIds" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
GROUP BY
|
GROUP BY
|
||||||
mt.type_id
|
mt.type_id
|
||||||
|
HAVING
|
||||||
|
useNum > 0
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getUserList" resultType="com.bonus.material.ma.domain.vo.MaTypeVo">
|
<select id="getUserList" resultType="com.bonus.material.ma.domain.vo.MaTypeVo">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue