package com.vincent.rsf.server.manager.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.controller.params.IsptItemsParams; import com.vincent.rsf.server.manager.entity.QlyInspect; import com.vincent.rsf.server.manager.entity.QlyInspectResult; import com.vincent.rsf.server.manager.enums.QlyIsptResult; import com.vincent.rsf.server.manager.mapper.QlyIsptItemMapper; import com.vincent.rsf.server.manager.entity.QlyIsptItem; import com.vincent.rsf.server.manager.service.AsnOrderItemService; import com.vincent.rsf.server.manager.service.QlyInspectResultService; import com.vincent.rsf.server.manager.service.QlyInspectService; import com.vincent.rsf.server.manager.service.QlyIsptItemService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @Service("qlyIsptItemService") public class QlyIsptItemServiceImpl extends ServiceImpl implements QlyIsptItemService { @Autowired private QlyInspectService qlyInspectService; @Autowired private AsnOrderItemService asnOrderItemService; @Autowired private QlyInspectResultService qlyInspectResultService; @Autowired private QlyIsptItemService qlyIsptItemService; /** * @param * @param loginUserId * @return * @author Ryan * @description 批量修改 * @time 2025/4/1 09:40 */ @Override @Transactional(rollbackFor = Exception.class) public boolean batchUpdate(IsptItemsParams params, Long loginUserId) { if (Objects.isNull(params.getIsptItem()) || params.getIsptItem().isEmpty()) { throw new CoolException("ID不能为空!!"); } List isptItem = params.getIsptItem(); List list = isptItem.stream().map(QlyIsptItem::getId).collect(Collectors.toList()); List isptItems = this.list(new LambdaQueryWrapper().in(QlyIsptItem::getId, list)); if (isptItems.isEmpty()) { throw new CoolException("数据错误:明细不存在!!"); } for (QlyIsptItem item : isptItem) { List results = qlyInspectResultService.list(new LambdaQueryWrapper() .eq(QlyInspectResult::getIsptId, item.getIspectId()) .eq(QlyInspectResult::getIsptItemId, item.getId())); if (!results.isEmpty()) { if (!qlyInspectResultService.remove(new LambdaUpdateWrapper() .eq(QlyInspectResult::getIsptItemId, item.getId()))) { throw new CoolException("历史质检结果移出失败!!"); } } QlyInspectResult result = new QlyInspectResult(); result.setIsptId(item.getIspectId()) .setIsptItemId(item.getId()); if (!Objects.isNull(item.getDisQty()) && item.getDisQty().compareTo(0.00) > 0) { result.setAnfme(item.getDisQty()) .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); qlyInspectResultService.saveOrUpdate(result); } result = new QlyInspectResult(); result.setIsptId(item.getIspectId()) .setIsptItemId(item.getId()); if (!Objects.isNull(item.getSafeQty()) && item.getSafeQty().compareTo(0.00) > 0) { result.setAnfme(item.getSafeQty()) .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); qlyInspectResultService.saveOrUpdate(result); } List isptRelt = qlyInspectResultService.list(new LambdaQueryWrapper() .eq(QlyInspectResult::getIsptId, item.getIspectId()) .eq(QlyInspectResult::getIsptItemId, item.getId())); Double isptQty = isptRelt.stream().mapToDouble(QlyInspectResult::getAnfme).sum(); if (!qlyIsptItemService.update(new LambdaUpdateWrapper() .set(QlyIsptItem::getUpdateBy, loginUserId) .set(QlyIsptItem::getAnfme, isptQty) .eq(QlyIsptItem::getId, item.getId()))) { throw new CoolException("单据明细数量修改失败!!"); } } Set isptIds = isptItem.stream().map(QlyIsptItem::getIspectId).collect(Collectors.toSet()); List items = qlyInspectResultService.list(new LambdaQueryWrapper().in(QlyInspectResult::getIsptId, isptIds)); Double sum = items.stream().mapToDouble(QlyInspectResult::getAnfme).sum(); if (sum.compareTo(0.00) > 0) { qlyInspectService.update(new LambdaUpdateWrapper() .set(QlyInspect::getIsptQty, sum) .set(QlyInspect::getUpdateBy, loginUserId) .eq(QlyInspect::getId, isptItem.stream().findFirst().get().getIspectId())); } return true; } /** * @author Ryan * @date 2025/5/12 * @description: 获取自定义Page * @version 1.0 */ @Override public IPage pageByWrapper(PageParam pageParam, QueryWrapper queryWrapper) { IPage page = this.page(pageParam, queryWrapper); if (!page.getRecords().isEmpty()) { List records = page.getRecords(); for (int i = 0; i < records.size(); i++) { List results = qlyInspectResultService.list(new QueryWrapper() .select("id, ispt_result, SUM(anfme) anfme, ispt_item_id, ispt_id") .lambda() .eq(QlyInspectResult::getIsptItemId, records.get(i).getId()).groupBy(QlyInspectResult::getIsptResult)); if (!results.isEmpty()) { for (QlyInspectResult result : results) { if (result.getIsptResult() == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) { records.get(i).setSafeQty(result.getAnfme()); } else { records.get(i).setDisQty(result.getAnfme()); } } } } page.setRecords(records); } return page; } }