新购接口优化

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

View File

@ -20,7 +20,9 @@ public interface PurchaseCheckDetailsMapper {
* @param taskId * @param type 1-验收2-入库 * @param taskId * @param type 1-验收2-入库
* @return String类型多个物资类型根据逗号分割 * @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 @Override
public PurchaseCheckDto selectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto) { public PurchaseCheckDto selectPurchaseCheckInfoById(PurchaseQueryDto purchaseQueryDto) {
PurchaseCheckDto purchaseCheckDtoResult = new PurchaseCheckDto(); PurchaseCheckDto purchaseCheckDtoResult = new PurchaseCheckDto();
boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER); PurchaseCheckInfo purchaseCheckInfo = purchaseCheckInfoMapper.selectPurchaseCheckInfoById(purchaseQueryDto.getId());
List<PurchaseCheckDetails> purchaseCheckDetails; if (purchaseCheckInfo != null) {
if (isAllowPartTransfer) { purchaseCheckDtoResult.setPurchaseCheckInfo(purchaseCheckInfo);
purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto); boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
} else { List<PurchaseCheckDetails> purchaseCheckDetails;
purchaseQueryDto.setTaskStatus(null); if (isAllowPartTransfer) {
purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto); purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
} else {
purchaseQueryDto.setTaskStatus(null);
purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByQueryDto(purchaseQueryDto);
}
purchaseCheckDtoResult.setPurchaseCheckDetailsList(purchaseCheckDetails);
} }
purchaseCheckDtoResult.setPurchaseCheckDetailsList(purchaseCheckDetails);
return purchaseCheckDtoResult; return purchaseCheckDtoResult;
} }
@ -95,16 +99,16 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService {
} }
boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER); boolean isAllowPartTransfer = bmConfigService.isBmConfigEnabledWithDefaultFalse(BmConfigItems.BOOLEAN_ALLOW_PURCHASE_PART_TRANSFER);
// TODO 下一行需要前端传1后删除 // 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) { for (PurchaseCheckInfo purchaseInfo : purchaseCheckInfos) {
List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(purchaseInfo.getTaskId(), null); List<PurchaseCheckDetails> purchaseCheckDetails = purchaseCheckDetailsMapper.selectPurchaseCheckDetailsListByTaskId(purchaseInfo.getTaskId(), null);
OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min(); OptionalInt minStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).min();
OptionalInt maxStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).max(); OptionalInt maxStatus = purchaseCheckDetails.stream().mapToInt(PurchaseCheckDetails::getStatus).max();
if (isAllowPartTransfer) { if (isAllowPartTransfer) {
purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> purchaseQueryDto.getTaskStatus().equals(o.getStatus())).collect(Collectors.toList()); purchaseCheckDetails = purchaseCheckDetails.stream().filter(o -> purchaseQueryDto.getStatusList().contains(o.getStatus())).collect(Collectors.toList());
purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskId(purchaseInfo.getTaskId(), purchaseQueryDto.getTaskStatus())); purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskAndStatusList(purchaseInfo.getTaskId(), purchaseQueryDto.getStatusList()));
} else { } else {
purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskId(purchaseInfo.getTaskId(), null)); purchaseInfo.setPurchaseMaTypeName(purchaseCheckDetailsMapper.selectMaTypeNameByTaskAndStatusList(purchaseInfo.getTaskId(), new ArrayList<>()));
} }
if (!CollectionUtils.isEmpty(purchaseCheckDetails)) { if (!CollectionUtils.isEmpty(purchaseCheckDetails)) {
AtomicLong purchaseMaTotalNumber = new AtomicLong(0L); AtomicLong purchaseMaTotalNumber = new AtomicLong(0L);

View File

@ -108,8 +108,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productionTime != null"> <if test="productionTime != null">
and pcd.production_time between #{startTime} and #{endTime} and pcd.production_time between #{startTime} and #{endTime}
</if> </if>
<if test="taskStatus != null and taskStatus != ''"> <!-- <if test="taskStatus != null and taskStatus != ''">-->
and pcd.status = #{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>
<if test="keyWord != null and keyWord != ''"> <if test="keyWord != null and keyWord != ''">
and (mt.type_name like concat('%', #{keyWord}, '%') and (mt.type_name like concat('%', #{keyWord}, '%')
@ -231,28 +237,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</delete> </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 select
GROUP_CONCAT(type_name) typeName GROUP_CONCAT(type_name) typeName
from from
( (
select select
distinct pcd.task_id, mt1.type_name distinct pcd.task_id, mt1.type_name
from from
purchase_check_details pcd purchase_check_details pcd
left join left join
ma_type mt on pcd.type_id = mt.type_id ma_type mt on pcd.type_id = mt.type_id
left join left join
ma_type mt1 on mt.parent_id = mt1.type_id ma_type mt1 on mt.parent_id = mt1.type_id
where where
1=1 1=1
<if test="status != null"> <if test="statusList != null and statusList.size() > 0">
and pcd.status = #{status} and pcd.status in
</if> <foreach item="item" collection="statusList" open="(" separator="," close=")">
<if test="taskId != null"> #{item}
and pcd.task_id = #{taskId} </foreach>
</if> </if>
) t <if test="taskId != null">
and pcd.task_id = #{taskId}
</if>
) t
GROUP BY task_id GROUP BY task_id
</select> </select>