新购接口优化

This commit is contained in:
sxu 2024-11-12 10:18:37 +08:00
parent 1beca0b8c9
commit 413d8a0e89
4 changed files with 78 additions and 38 deletions

View File

@ -86,9 +86,9 @@ public class PurchaseCheckDetails extends BaseEntity {
@Excel(name = "物资厂家名称")
private String supplierName;
/** 0-未验收,1-已验收,2-待通知,3-验收不通过,4-已入库,5-入库驳回,6-综合服务中心审核通过7-综合服务中心不通过 */
//@Excel(name = "0-未验收,1-已验收,2-待通知,3-验收不通过,4-已入库,5-入库驳回,6-综合服务中心审核通过7-综合服务中心不通过")
@ApiModelProperty(value = "0-未验收,1-已验收,2-待通知,3-验收不通过,4-已入库,5-入库驳回,6-综合服务中心审核通过7-综合服务中心不通过")
/** 状态参考数据字典purchase_task_status键值 */
@Excel(name = "状态")
@ApiModelProperty(value = "状态参考数据字典purchase_task_status键值")
private Integer status;
/** 出厂日期 */

View File

@ -20,7 +20,9 @@ public interface PurchaseCheckDetailsMapper {
* @param taskId * @param type 1-验收2-入库
* @return String类型多个物资类型根据逗号分割
*/
String selectMaTypeNameByTaskId(@Param("taskId") Long taskId, @Param("status") Integer status);
//String selectMaTypeNameByTaskId(@Param("taskId") Long taskId, @Param("status") Integer status);
String selectMaTypeNameByTaskAndStatusList(@Param("taskId") Long taskId, @Param("statusList") List<Integer> statusList);
/**

View File

@ -68,15 +68,19 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
@Override
public PurchaseCheckDto selectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto) {
PurchaseCheckDto purchaseCheckDtoResult = new PurchaseCheckDto();
boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
List<PurchaseCheckDetails> purchaseCheckDetails;
if (isAllowPartTransfer) {
purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
} else {
purchaseQueryDto.setTaskStatus(null);
purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
PurchaseCheckInfo purchaseCheckInfo = purchaseCheckInfoMapper.selectPurchaseCheckInfoById(purchaseQueryDto.getId());
if (purchaseCheckInfo != null) {
purchaseCheckDtoResult.setPurchaseCheckInfo(purchaseCheckInfo);
boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
List<PurchaseCheckDetails> purchaseCheckDetails;
if (isAllowPartTransfer) {
purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
} else {
purchaseQueryDto.setTaskStatus(null);
purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
}
purchaseCheckDtoResult.setPurchaseCheckDetailsList(purchaseCheckDetails);
}
purchaseCheckDtoResult.setPurchaseCheckDetailsList(purchaseCheckDetails);
return purchaseCheckDtoResult;
}
@ -95,16 +99,16 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
}
boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
// TODO 下一行需要前端传1后删除
purchaseQueryDto.setTaskStatus(Objects.isNull(purchaseQueryDto.getTaskStatus()) ? PurchaseTaskStatusEnum.TO_NOTICE.getStatus() : purchaseQueryDto.getTaskStatus());
// purchaseQueryDto.setTaskStatus(Objects.isNull(purchaseQueryDto.getTaskStatus()) ? PurchaseTaskStatusEnum.TO_NOTICE.getStatus() : purchaseQueryDto.getTaskStatus());
for (PurchaseCheckInfo purchaseInfo : purchaseCheckInfos) {
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(purchaseInfo.getTaskId(), null);
OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min();
OptionalInt maxStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).max();
if (isAllowPartTransfer) {
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> purchaseQueryDto.getTaskStatus().equals(o.getStatus())).collect(Collectors.toList());
purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskId(purchaseInfo.getTaskId(), purchaseQueryDto.getTaskStatus()));
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> purchaseQueryDto.getStatusList().contains(o.getStatus())).collect(Collectors.toList());
purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskAndStatusList(purchaseInfo.getTaskId(), purchaseQueryDto.getStatusList()));
} else {
purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskId(purchaseInfo.getTaskId(), null));
purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskAndStatusList(purchaseInfo.getTaskId(), new ArrayList<>()));
}
if (!CollectionUtils.isEmpty(purchaseCheckDetails)) {
AtomicLong purchaseMaTotalNumber = new AtomicLong(0L);

View File

@ -108,8 +108,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productionTime != null">
and pcd.production_time between #{startTime} and #{endTime}
</if>
<if test="taskStatus != null and taskStatus != ''">
and pcd.status = #{taskStatus}
<!-- <if test="taskStatus != null and taskStatus != ''">-->
<!-- and pcd.status = #{taskStatus}-->
<!-- </if>-->
<if test="statusList != null and statusList.size() > 0">
and pcd.status in
<foreach item="item" collection="statusList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="keyWord != null and keyWord != ''">
and (mt.type_name like concat('%', #{keyWord}, '%')
@ -231,28 +237,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</delete>
<select id="selectMaTypeNameByTaskId" resultType="java.lang.String">
<!-- <select id="selectMaTypeNameByTaskId" resultType="java.lang.String">-->
<!-- select-->
<!-- GROUP_CONCAT(type_name) typeName-->
<!-- 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="status != null">-->
<!-- and pcd.status = #{status}-->
<!-- </if>-->
<!-- <if test="taskId != null">-->
<!-- and pcd.task_id = #{taskId}-->
<!-- </if>-->
<!-- ) t-->
<!-- GROUP BY task_id-->
<!-- </select>-->
<select id="selectMaTypeNameByTaskAndStatusList" resultType="java.lang.String">
select
GROUP_CONCAT(type_name) typeName
GROUP_CONCAT(type_name) typeName
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="status != null">
and pcd.status = #{status}
</if>
<if test="taskId != null">
and pcd.task_id = #{taskId}
</if>
) t
(
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="statusList != null and statusList.size() > 0">
and pcd.status in
<foreach item="item" collection="statusList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="taskId != null">
and pcd.task_id = #{taskId}
</if>
) t
GROUP BY task_id
</select>