新购的整体查询速度优化
This commit is contained in:
parent
e1aef51b22
commit
2338d1c89e
|
|
@ -22,6 +22,12 @@ public interface SignProcessMapper
|
|||
*/
|
||||
List<PurchaseSignRecord> getPurchaseSignRecordByTask(Long taskId);
|
||||
|
||||
/**
|
||||
* 批量查询采购任务的会签记录
|
||||
* @param taskIds 任务id列表
|
||||
*/
|
||||
List<PurchaseSignRecord> getPurchaseSignRecordByTasksBatch(List<Long> taskIds);
|
||||
|
||||
/**
|
||||
* 查询采新购验收任务已进行会签的签名地址
|
||||
* @param taskId 任务id
|
||||
|
|
|
|||
|
|
@ -24,6 +24,14 @@ public interface PurchaseCheckDetailsMapper {
|
|||
|
||||
String selectMaTypeNameByTaskAndStatusList(@Param("taskId") Long taskId, @Param("statusList") List<Integer> statusList);
|
||||
|
||||
/**
|
||||
* 批量查询任务的物资类型名称
|
||||
*
|
||||
* @param taskIds 任务ID列表
|
||||
* @param statusList 状态列表
|
||||
* @return Map<Long, String> 任务ID对应的物资类型名称
|
||||
*/
|
||||
List<PurchaseCheckInfo> selectMaTypeNameByTaskIdsBatch(@Param("taskIds") List<Long> taskIds, @Param("statusList") List<Integer> statusList);
|
||||
|
||||
/**
|
||||
* 查询新购验收任务详细
|
||||
|
|
@ -39,6 +47,13 @@ public interface PurchaseCheckDetailsMapper {
|
|||
*/
|
||||
List<PurchaseCheckDetails> selectPurchaseCheckDetailsListByTaskId(@Param("taskId") Long taskId, @Param("status") Integer status, @Param("userId") Long userId);
|
||||
|
||||
/**
|
||||
* 批量查询多个任务的验收任务详细列表
|
||||
* @param taskIds 任务ID列表
|
||||
* @param userId 用户ID
|
||||
*/
|
||||
List<PurchaseCheckDetails> selectPurchaseCheckDetailsListByTaskIdsBatch(@Param("taskIds") List<Long> taskIds, @Param("userId") Long userId);
|
||||
|
||||
/**
|
||||
* 根据任务id查询新购验收任务详细列表--Join查询
|
||||
* @param obj 新购验收任务请求参数封装dto
|
||||
|
|
|
|||
|
|
@ -5,8 +5,10 @@ import java.math.RoundingMode;
|
|||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.bonus.common.biz.config.DateTimeHelper;
|
||||
import com.bonus.common.biz.constant.BmConfigItems;
|
||||
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
|
||||
import com.bonus.common.biz.enums.PurchaseTaskStageEnum;
|
||||
|
|
@ -186,13 +188,248 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
|
|||
}
|
||||
|
||||
/**
|
||||
* 查询新购验收任务列表
|
||||
* 查询新购验收任务列表 - 性能优化版本
|
||||
*
|
||||
* @param purchaseQueryDto 新购验收任务请求参数
|
||||
* @return 新购验收任务
|
||||
*/
|
||||
@Override
|
||||
public List<PurchaseCheckInfo> selectPurchaseCheckInfoList(PurchaseQueryDto purchaseQueryDto) {
|
||||
log.info("=== MaterialLeaseInfoServiceImpl.selectPurchaseCheckInfoList开始执行,purchaseQueryDto: {}", purchaseQueryDto);
|
||||
|
||||
final List<PurchaseCheckInfo> purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoJoinList(purchaseQueryDto);
|
||||
if (CollectionUtils.isEmpty(purchaseCheckInfos)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 检查 SecurityUtils.getLoginUser() 是否为 null
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
log.error("当前用户未登录或登录信息丢失,无法获取用户ID");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
final Long loginUserId = loginUser.getUserid();
|
||||
if (Objects.isNull(loginUserId) || Objects.isNull(purchaseQueryDto.getTaskStage())) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 提取所有任务ID,用于批量查询
|
||||
List<Long> taskIds = purchaseCheckInfos.stream()
|
||||
.map(PurchaseCheckInfo::getTaskId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 批量查询所有任务的明细信息
|
||||
List<PurchaseCheckDetails> allDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskIdsBatch(taskIds, loginUserId);
|
||||
Map<Long, List<PurchaseCheckDetails>> detailsMap = allDetails.stream()
|
||||
.filter(detail -> detail.getTaskId() != null)
|
||||
.collect(Collectors.groupingBy(PurchaseCheckDetails::getTaskId));
|
||||
|
||||
// 批量查询任务状态信息
|
||||
List<TmTask> tmTasks = tmTaskMapper.selectTmTaskByTaskIdsBatch(taskIds);
|
||||
Map<Long, TmTask> taskMap = tmTasks.stream()
|
||||
.filter(task -> task.getTaskId() != null)
|
||||
.collect(Collectors.toMap(TmTask::getTaskId, Function.identity()));
|
||||
|
||||
// 批量查询物资类型名称
|
||||
final boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
|
||||
List<PurchaseCheckInfo> maTypeNames;
|
||||
if (isAllowPartTransfer) {
|
||||
maTypeNames = purchaseCheckDetailsMapper.selectMaTypeNameByTaskIdsBatch(taskIds, purchaseQueryDto.getStatusList());
|
||||
} else {
|
||||
maTypeNames = purchaseCheckDetailsMapper.selectMaTypeNameByTaskIdsBatch(taskIds, new ArrayList<>());
|
||||
}
|
||||
Map<Long, String> maTypeNameMap = maTypeNames.stream()
|
||||
.filter(info -> info.getTaskId() != null)
|
||||
.collect(Collectors.toMap(PurchaseCheckInfo::getTaskId,
|
||||
info -> info.getPurchaseMaTypeName() != null ? info.getPurchaseMaTypeName() : ""));
|
||||
|
||||
// 批量查询会签记录
|
||||
List<PurchaseSignRecord> allSignRecords = signProcessMapper.getPurchaseSignRecordByTasksBatch(taskIds);
|
||||
Map<Long, List<PurchaseSignRecord>> signRecordsMap = allSignRecords.stream()
|
||||
.filter(record -> record.getTaskId() != null)
|
||||
.collect(Collectors.groupingBy(PurchaseSignRecord::getTaskId));
|
||||
|
||||
// 查询会签配置(这个查询量小,可以保持原样)
|
||||
List<SignProcessVo> signProcessVoList = signProcessMapper.getList(new SignProcessVo());
|
||||
|
||||
List<PurchaseCheckInfo> purchaseCheckInfoResult = new ArrayList<>();
|
||||
|
||||
for (final PurchaseCheckInfo purchaseInfo : purchaseCheckInfos) {
|
||||
Long taskId = purchaseInfo.getTaskId();
|
||||
|
||||
// 获取采购物资明细
|
||||
List<PurchaseCheckDetails> purchaseCheckDetails = detailsMap.getOrDefault(taskId, Collections.emptyList());
|
||||
if (CollectionUtils.isEmpty(purchaseCheckDetails)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 过滤掉数量管理并且是待绑定状态或者驳回后待绑定状态的物资
|
||||
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
|
||||
!(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId().equals(o.getManageType()) &&
|
||||
(o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND.getStatus()) ||
|
||||
o.getStatus().equals(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus())))).collect(Collectors.toList());
|
||||
|
||||
if (isAllowPartTransfer) {
|
||||
// 根据任务阶段过滤
|
||||
switch (purchaseQueryDto.getTaskStage()) {
|
||||
case PURCHASE_TASK_STAGE_MANAGE:
|
||||
// 新购管理阶段展示全部任务、不进行过滤
|
||||
break;
|
||||
case PURCHASE_TASK_STAGE_CHECK:
|
||||
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
|
||||
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) &&
|
||||
!PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus())).collect(Collectors.toList());
|
||||
break;
|
||||
case PURCHASE_TASK_STAGE_BIND:
|
||||
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
|
||||
!PurchaseTaskStatusEnum.TO_NOTICE.getStatus().equals(o.getStatus()) &&
|
||||
!PurchaseTaskStatusEnum.TO_CHECK_AFTER_REJECT.getStatus().equals(o.getStatus()) &&
|
||||
!PurchaseTaskStatusEnum.TO_CHECK.getStatus().equals(o.getStatus()) &&
|
||||
!PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus().equals(o.getStatus())
|
||||
).collect(Collectors.toList());
|
||||
break;
|
||||
case PURCHASE_TASK_STAGE_STORE:
|
||||
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o ->
|
||||
PurchaseTaskStatusEnum.IN_STORE.getStatus().equals(o.getStatus()) ||
|
||||
PurchaseTaskStatusEnum.TO_STORE.getStatus().equals(o.getStatus()) ||
|
||||
PurchaseTaskStatusEnum.TASK_FINISHED.getStatus().equals(o.getStatus()) ||
|
||||
(PurchaseTaskStatusEnum.TO_BIND.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO)) ||
|
||||
(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus().equals(o.getStatus()) && null != o.getBindNum() && 0 < o.getBindNum().compareTo(BigDecimal.ZERO))
|
||||
).collect(Collectors.toList());
|
||||
break;
|
||||
default:
|
||||
System.err.println("未知的新购任务阶段:" + purchaseQueryDto.getTaskStage());
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
// 设置物资类型名称
|
||||
purchaseInfo.setPurchaseMaTypeName(maTypeNameMap.get(taskId));
|
||||
|
||||
if (!CollectionUtils.isEmpty(purchaseCheckDetails)) {
|
||||
// 计算数量和金额
|
||||
BigDecimal purchaseMaTotalNumber = BigDecimal.ZERO;
|
||||
BigDecimal checkMaTotalNumber = BigDecimal.ZERO;
|
||||
BigDecimal bindMaTotalNumber = BigDecimal.ZERO;
|
||||
BigDecimal inputMaTotalNumber = BigDecimal.ZERO;
|
||||
BigDecimal purchaseMaTotalPrice = BigDecimal.ZERO;
|
||||
BigDecimal purchaseTaxPriceTotal = BigDecimal.ZERO;
|
||||
|
||||
boolean isIncludeStage = false;
|
||||
for (final PurchaseCheckDetails detail : purchaseCheckDetails) {
|
||||
if (null == detail.getPurchaseNum() || null == detail.getPurchasePrice()) {
|
||||
continue;
|
||||
}
|
||||
if (0 > detail.getPurchaseNum().compareTo(BigDecimal.ZERO) || 0 > detail.getPurchasePrice().compareTo(BigDecimal.ZERO)) {
|
||||
throw new IllegalArgumentException("采购数量和价格必须为非负数");
|
||||
}
|
||||
if (!isIncludeStage) {
|
||||
isIncludeStage = PurchaseTaskStatusEnum.isStatusOfStage(detail.getStatus(), PurchaseTaskStageEnum.getByCode(purchaseQueryDto.getTaskStage()), detail.getManageType());
|
||||
}
|
||||
|
||||
purchaseMaTotalNumber = purchaseMaTotalNumber.add(Optional.of(detail.getPurchaseNum()).orElse(BigDecimal.ZERO));
|
||||
checkMaTotalNumber = checkMaTotalNumber.add(Optional.ofNullable(detail.getCheckNum()).orElse(BigDecimal.ZERO));
|
||||
bindMaTotalNumber = bindMaTotalNumber.add(Optional.ofNullable(detail.getBindNum()).orElse(BigDecimal.ZERO));
|
||||
inputMaTotalNumber = inputMaTotalNumber.add(Optional.ofNullable(detail.getInputNum()).orElse(BigDecimal.ZERO));
|
||||
purchaseMaTotalPrice = purchaseMaTotalPrice.add(detail.getPurchaseNum().multiply(detail.getPurchasePrice()).setScale(10, RoundingMode.HALF_DOWN));
|
||||
purchaseTaxPriceTotal = purchaseTaxPriceTotal.add(detail.getPurchaseNum().multiply(detail.getPurchaseTaxPrice()).setScale(10, RoundingMode.HALF_DOWN));
|
||||
}
|
||||
|
||||
purchaseInfo.setPurchaseMaNumber(purchaseMaTotalNumber);
|
||||
purchaseInfo.setPurchasePrice(purchaseMaTotalPrice);
|
||||
purchaseInfo.setPurchaseTaxPrice(purchaseTaxPriceTotal);
|
||||
purchaseInfo.setBindMaNumber(bindMaTotalNumber);
|
||||
purchaseInfo.setCheckMaNumber(checkMaTotalNumber);
|
||||
purchaseInfo.setInputMaNumber(inputMaTotalNumber);
|
||||
purchaseInfo.setWaitInputNumber(purchaseMaTotalNumber.subtract(inputMaTotalNumber));
|
||||
|
||||
// 设置任务状态
|
||||
final TmTask tmTask = taskMap.get(taskId);
|
||||
purchaseInfo.setTaskStatusName(isIncludeStage ? "未完成" : "已完成");
|
||||
if (null != purchaseQueryDto.getIsFinish()) {
|
||||
if (1 == purchaseQueryDto.getIsFinish()) {
|
||||
if (isIncludeStage) {continue;}
|
||||
} else {
|
||||
if (!isIncludeStage) {continue;}
|
||||
}
|
||||
}
|
||||
|
||||
// 设置采购状态
|
||||
List<Integer> statusList = purchaseCheckDetails.stream()
|
||||
.map(PurchaseCheckDetails::getStatus)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!CollectionUtils.isEmpty(statusList)) {
|
||||
if (statusList.contains(PurchaseTaskStatusEnum.TO_BIND.getStatus()) ||
|
||||
statusList.contains(PurchaseTaskStatusEnum.TO_STORE.getStatus()) ||
|
||||
statusList.contains(PurchaseTaskStatusEnum.TO_BIND_AFTER_REJECT.getStatus()) ||
|
||||
statusList.contains(PurchaseTaskStatusEnum.TO_STORE_AFTER_REJECT.getStatus())) {
|
||||
purchaseInfo.setPurchaseStatus(PurchaseTaskStatusEnum.TO_BIND.getStatus());
|
||||
} else if (statusList.contains(PurchaseTaskStatusEnum.IN_STORE.getStatus()) ||
|
||||
statusList.contains(PurchaseTaskStatusEnum.TASK_IN_PROGRESS.getStatus()) ||
|
||||
statusList.contains(PurchaseTaskStatusEnum.TASK_FINISHED.getStatus())) {
|
||||
purchaseInfo.setPurchaseStatus(PurchaseTaskStatusEnum.IN_STORE.getStatus());
|
||||
} else {
|
||||
purchaseInfo.setPurchaseStatus(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (tmTask != null) {
|
||||
purchaseInfo.setTaskStatus(tmTask.getTaskStatus());
|
||||
}
|
||||
|
||||
// 检查是否应该加入结果列表
|
||||
if (isAllowPartTransfer) {
|
||||
purchaseCheckInfoResult.add(purchaseInfo);
|
||||
} else {
|
||||
final OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min();
|
||||
if (minStatus.isPresent() && purchaseQueryDto.getStatusList().contains(minStatus.getAsInt())) {
|
||||
purchaseCheckInfoResult.add(purchaseInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!CollectionUtils.isEmpty(purchaseCheckInfoResult)) {
|
||||
// 设置会签级别
|
||||
for (PurchaseCheckInfo purchaseCheckInfo : purchaseCheckInfoResult) {
|
||||
List<PurchaseSignRecord> purchaseSignRecordList = signRecordsMap.getOrDefault(purchaseCheckInfo.getTaskId(), Collections.emptyList());
|
||||
|
||||
if (!CollectionUtils.isEmpty(purchaseSignRecordList) && !CollectionUtils.isEmpty(signProcessVoList)) {
|
||||
Set<Long> configSignOrgSet = signProcessVoList.stream().map(SignProcessVo::getOrgId).collect(Collectors.toSet());
|
||||
Set<Long> signedOrgSet = purchaseSignRecordList.stream().map(PurchaseSignRecord::getOrgId).collect(Collectors.toSet());
|
||||
configSignOrgSet.removeAll(signedOrgSet);
|
||||
|
||||
if (signedOrgSet.size() == 1) {
|
||||
purchaseCheckInfo.setSignLevel("2");
|
||||
} else {
|
||||
purchaseCheckInfo.setSignLevel("3");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 关键字过滤
|
||||
String keyWord = purchaseQueryDto.getKeyWord();
|
||||
if (!StringUtils.isBlank(keyWord)) {
|
||||
purchaseCheckInfoResult = purchaseCheckInfoResult.stream()
|
||||
.filter(item -> containsKeyword(item, keyWord))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
return purchaseCheckInfoResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询新购验收任务列表 - 原始版本(保留作为备份)
|
||||
*
|
||||
* @param purchaseQueryDto 新购验收任务请求参数
|
||||
* @return 新购验收任务
|
||||
*/
|
||||
public List<PurchaseCheckInfo> selectPurchaseCheckInfoListOriginal(PurchaseQueryDto purchaseQueryDto) {
|
||||
log.info("=== MaterialLeaseInfoServiceImpl.selectPurchaseCheckInfoList开始执行,purchaseQueryDto: {}", purchaseQueryDto);
|
||||
|
||||
final List<PurchaseCheckInfo> purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoJoinList(purchaseQueryDto);
|
||||
if (CollectionUtils.isEmpty(purchaseCheckInfos)) {
|
||||
return Collections.emptyList();
|
||||
|
|
@ -226,9 +463,6 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
|
|||
|
||||
if (isAllowPartTransfer) {
|
||||
// 2024-12-23日 取消状态过滤,修改由任务阶段来过滤 --- by 阮世耀
|
||||
// if (!CollectionUtils.isEmpty(purchaseQueryDto.getStatusList())) {
|
||||
// purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> purchaseQueryDto.getStatusList().contains(o.getStatus())).collect(Collectors.toList());
|
||||
// }
|
||||
switch (purchaseQueryDto.getTaskStage()) {
|
||||
case PURCHASE_TASK_STAGE_MANAGE:
|
||||
// 新购管理阶段展示全部任务、不进行过滤
|
||||
|
|
|
|||
|
|
@ -22,6 +22,14 @@ public interface TmTaskMapper {
|
|||
*/
|
||||
TmTask selectTmTaskByTaskId(Long taskId);
|
||||
|
||||
/**
|
||||
* 批量查询任务
|
||||
*
|
||||
* @param taskIds 任务主键列表
|
||||
* @return 任务列表
|
||||
*/
|
||||
List<TmTask> selectTmTaskByTaskIdsBatch(List<Long> taskIds);
|
||||
|
||||
/**
|
||||
* 查询当年当月最大任务序号,用于生成任务编号 by 分类型查询
|
||||
* @param year 年
|
||||
|
|
|
|||
|
|
@ -179,6 +179,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
par.task_id = #{taskId}
|
||||
</select>
|
||||
|
||||
<!-- 新增:批量查询采购任务的会签记录 -->
|
||||
<select id="getPurchaseSignRecordByTasksBatch" resultType="com.bonus.material.purchase.domain.PurchaseSignRecord">
|
||||
SELECT
|
||||
par.id,
|
||||
par.task_id AS taskId,
|
||||
par.auditor AS userId,
|
||||
par.org_id AS orgId,
|
||||
par.audit_status AS auditStatus,
|
||||
par.create_time AS createTime,
|
||||
su.nick_name AS userName,
|
||||
sd.dept_name AS deptName,
|
||||
par.audit_remark AS auditRemark
|
||||
FROM
|
||||
purchase_audit_record par
|
||||
LEFT JOIN sys_user su ON par.auditor = su.user_id
|
||||
LEFT JOIN sys_dept sd ON par.org_id = sd.dept_id
|
||||
WHERE
|
||||
par.task_id in
|
||||
<foreach item="taskId" collection="list" open="(" separator="," close=")">
|
||||
#{taskId}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<insert id="insertPurchaseSignRecord">
|
||||
insert into purchase_audit_record(task_id, auditor, audit_time, audit_status, org_id, creator, create_time, audit_remark)
|
||||
values(#{taskId}, #{userId}, #{createTime}, #{auditStatus} ,#{orgId}, #{userId}, #{createTime}, #{auditRemark})
|
||||
|
|
|
|||
|
|
@ -295,6 +295,55 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
GROUP BY task_id
|
||||
</select>
|
||||
|
||||
<!-- 新增:批量查询任务的物资类型名称 -->
|
||||
<select id="selectMaTypeNameByTaskIdsBatch" resultType="com.bonus.material.purchase.domain.PurchaseCheckInfo">
|
||||
select
|
||||
task_id as taskId,
|
||||
GROUP_CONCAT(type_name) as purchaseMaTypeName
|
||||
from
|
||||
(
|
||||
select
|
||||
distinct pcd.task_id, mt1.type_name
|
||||
from
|
||||
purchase_check_details pcd
|
||||
left join
|
||||
ma_type mt on pcd.type_id = mt.type_id
|
||||
left join
|
||||
ma_type mt1 on mt.parent_id = mt1.type_id
|
||||
where
|
||||
1=1
|
||||
<if test="taskIds != null and taskIds.size() > 0">
|
||||
and pcd.task_id in
|
||||
<foreach item="taskId" collection="taskIds" open="(" separator="," close=")">
|
||||
#{taskId}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="statusList != null and statusList.size() > 0">
|
||||
and pcd.status in
|
||||
<foreach item="item" collection="statusList" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
) t
|
||||
GROUP BY task_id
|
||||
</select>
|
||||
|
||||
<!-- 新增:批量查询多个任务的验收任务详细列表 -->
|
||||
<select id="selectPurchaseCheckDetailsListByTaskIdsBatch" resultMap="PurchaseCheckDetailsResult">
|
||||
<include refid="selectPurchaseCheckDetailsJoinVo"/>
|
||||
<if test="userId != null">
|
||||
right join ma_type_keeper mtk ON mtk.type_id = mt.type_id AND mtk.user_id = #{userId}
|
||||
</if>
|
||||
where 1=1
|
||||
<if test="taskIds != null and taskIds.size() > 0">
|
||||
and pcd.task_id in
|
||||
<foreach item="taskId" collection="taskIds" open="(" separator="," close=")">
|
||||
#{taskId}
|
||||
</foreach>
|
||||
</if>
|
||||
order by pcd.task_id, pcd.id
|
||||
</select>
|
||||
|
||||
<insert id="insertPurchaseCheckDetailsList">
|
||||
insert into purchase_check_details(task_id,type_id,purchase_price,purchase_tax_price,
|
||||
purchase_num,check_num,bind_num,check_result,supplier_id,
|
||||
|
|
|
|||
|
|
@ -41,6 +41,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<include refid="selectTmTaskVo"/>
|
||||
where task_id = #{taskId}
|
||||
</select>
|
||||
|
||||
<!-- 新增:批量查询任务 -->
|
||||
<select id="selectTmTaskByTaskIdsBatch" resultMap="TmTaskResult">
|
||||
<include refid="selectTmTaskVo"/>
|
||||
where task_id in
|
||||
<foreach item="taskId" collection="list" open="(" separator="," close=")">
|
||||
#{taskId}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<insert id="insertTmTask" parameterType="com.bonus.material.task.domain.TmTask" useGeneratedKeys="true" keyProperty="taskId">
|
||||
insert into tm_task
|
||||
|
|
|
|||
Loading…
Reference in New Issue