新购的整体查询速度优化
This commit is contained in:
parent
e1aef51b22
commit
2338d1c89e
|
|
@ -22,6 +22,12 @@ public interface SignProcessMapper
|
||||||
*/
|
*/
|
||||||
List<PurchaseSignRecord> getPurchaseSignRecordByTask(Long taskId);
|
List<PurchaseSignRecord> getPurchaseSignRecordByTask(Long taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量查询采购任务的会签记录
|
||||||
|
* @param taskIds 任务id列表
|
||||||
|
*/
|
||||||
|
List<PurchaseSignRecord> getPurchaseSignRecordByTasksBatch(List<Long> taskIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询采新购验收任务已进行会签的签名地址
|
* 查询采新购验收任务已进行会签的签名地址
|
||||||
* @param taskId 任务id
|
* @param taskId 任务id
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,14 @@ public interface PurchaseCheckDetailsMapper {
|
||||||
|
|
||||||
String selectMaTypeNameByTaskAndStatusList(@Param("taskId") Long taskId, @Param("statusList") List<Integer> statusList);
|
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);
|
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查询
|
* 根据任务id查询新购验收任务详细列表--Join查询
|
||||||
* @param obj 新购验收任务请求参数封装dto
|
* @param obj 新购验收任务请求参数封装dto
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,10 @@ import java.math.RoundingMode;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.bonus.common.biz.config.DateTimeHelper;
|
||||||
import com.bonus.common.biz.constant.BmConfigItems;
|
import com.bonus.common.biz.constant.BmConfigItems;
|
||||||
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
|
import com.bonus.common.biz.enums.MaTypeManageTypeEnum;
|
||||||
import com.bonus.common.biz.enums.PurchaseTaskStageEnum;
|
import com.bonus.common.biz.enums.PurchaseTaskStageEnum;
|
||||||
|
|
@ -186,13 +188,248 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询新购验收任务列表
|
* 查询新购验收任务列表 - 性能优化版本
|
||||||
*
|
*
|
||||||
* @param purchaseQueryDto 新购验收任务请求参数
|
* @param purchaseQueryDto 新购验收任务请求参数
|
||||||
* @return 新购验收任务
|
* @return 新购验收任务
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<PurchaseCheckInfo> selectPurchaseCheckInfoList(PurchaseQueryDto purchaseQueryDto) {
|
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);
|
final List<PurchaseCheckInfo> purchaseCheckInfos = purchaseCheckInfoMapper.selectPurchaseCheckInfoJoinList(purchaseQueryDto);
|
||||||
if (CollectionUtils.isEmpty(purchaseCheckInfos)) {
|
if (CollectionUtils.isEmpty(purchaseCheckInfos)) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|
@ -226,9 +463,6 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
|
||||||
|
|
||||||
if (isAllowPartTransfer) {
|
if (isAllowPartTransfer) {
|
||||||
// 2024-12-23日 取消状态过滤,修改由任务阶段来过滤 --- by 阮世耀
|
// 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()) {
|
switch (purchaseQueryDto.getTaskStage()) {
|
||||||
case PURCHASE_TASK_STAGE_MANAGE:
|
case PURCHASE_TASK_STAGE_MANAGE:
|
||||||
// 新购管理阶段展示全部任务、不进行过滤
|
// 新购管理阶段展示全部任务、不进行过滤
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,14 @@ public interface TmTaskMapper {
|
||||||
*/
|
*/
|
||||||
TmTask selectTmTaskByTaskId(Long taskId);
|
TmTask selectTmTaskByTaskId(Long taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量查询任务
|
||||||
|
*
|
||||||
|
* @param taskIds 任务主键列表
|
||||||
|
* @return 任务列表
|
||||||
|
*/
|
||||||
|
List<TmTask> selectTmTaskByTaskIdsBatch(List<Long> taskIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询当年当月最大任务序号,用于生成任务编号 by 分类型查询
|
* 查询当年当月最大任务序号,用于生成任务编号 by 分类型查询
|
||||||
* @param year 年
|
* @param year 年
|
||||||
|
|
|
||||||
|
|
@ -179,6 +179,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
par.task_id = #{taskId}
|
par.task_id = #{taskId}
|
||||||
</select>
|
</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 id="insertPurchaseSignRecord">
|
||||||
insert into purchase_audit_record(task_id, auditor, audit_time, audit_status, org_id, creator, create_time, audit_remark)
|
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})
|
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
|
GROUP BY task_id
|
||||||
</select>
|
</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 id="insertPurchaseCheckDetailsList">
|
||||||
insert into purchase_check_details(task_id,type_id,purchase_price,purchase_tax_price,
|
insert into purchase_check_details(task_id,type_id,purchase_price,purchase_tax_price,
|
||||||
purchase_num,check_num,bind_num,check_result,supplier_id,
|
purchase_num,check_num,bind_num,check_result,supplier_id,
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where task_id = #{taskId}
|
where task_id = #{taskId}
|
||||||
</select>
|
</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 id="insertTmTask" parameterType="com.bonus.material.task.domain.TmTask" useGeneratedKeys="true" keyProperty="taskId">
|
||||||
insert into tm_task
|
insert into tm_task
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue