| | |
| | | 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.vincent.rsf.framework.common.R; |
| | | 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.controller.params.QlyInspectAndItem; |
| | | import com.vincent.rsf.server.manager.entity.AsnOrderItem; |
| | | 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.enums.QlyIsptStatus; |
| | | 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 org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service("qlyIsptItemService") |
| | |
| | | |
| | | @Autowired |
| | | private QlyInspectResultService qlyInspectResultService; |
| | | @Autowired |
| | | private QlyIsptItemService qlyIsptItemService; |
| | | |
| | | /** |
| | | * @param |
| | | * @param loginUserId |
| | | * @return |
| | | * @author Ryan |
| | | * @description 批量修改 |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean batchUpdate(IsptItemsParams params) { |
| | | public boolean batchUpdate(IsptItemsParams params, Long loginUserId) { |
| | | if (Objects.isNull(params.getIsptItem()) || params.getIsptItem().isEmpty()) { |
| | | throw new CoolException("ID不能为空!!"); |
| | | } |
| | |
| | | throw new CoolException("数据错误:明细不存在!!"); |
| | | } |
| | | |
| | | for (QlyIsptItem item : isptItems) { |
| | | for (QlyIsptItem item : isptItem) { |
| | | List<QlyInspectResult> results = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>() |
| | | .eq(QlyInspectResult::getIsptId, item.getIspectId()) |
| | | .eq(QlyInspectResult::getIsptItemId, item.getId())); |
| | | if (!results.isEmpty()) { |
| | | //不为空做更新操作 |
| | | |
| | | |
| | | } else { |
| | | //为空做新增操作 |
| | | QlyInspectResult result = new QlyInspectResult(); |
| | | result.setIsptId(item.getIspectId()) |
| | | .setAnfme(item.getSafeQty()) |
| | | .setIsptItemId(item.getId()); |
| | | if (item.getDisQty().compareTo(0.00) < 1) { |
| | | continue; |
| | | } |
| | | result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); |
| | | result.setAnfme(item.getDisQty()); |
| | | |
| | | if (!qlyInspectResultService.save(result)) { |
| | | throw new CoolException("质检结论保存失败!!"); |
| | | } |
| | | |
| | | if (item.getSafeQty().compareTo(0.00) < 1) { |
| | | continue; |
| | | } |
| | | result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) |
| | | .setAnfme(item.getSafeQty()); |
| | | |
| | | if (!qlyInspectResultService.save(result)) { |
| | | throw new CoolException("质检结论保存失败!!"); |
| | | if (!qlyInspectResultService.remove(new LambdaUpdateWrapper<QlyInspectResult>() |
| | | .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); |
| | | } |
| | | |
| | | if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val || Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val) { |
| | | //1:合格, 2:不合格, 0: 其它(默认) |
| | | isptItem.forEach(item -> { |
| | | if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) { |
| | | //TODO 先捡后收为送货数量,先收后捡为收货数量 |
| | | // item.setSafeQty(item.getDlyQty()); |
| | | // item.setDisQty(0.0); |
| | | } else { |
| | | // item.setSafeQty(0.0); |
| | | // item.setDisQty(item.getDlyQty()); |
| | | } |
| | | if (!this.update(new LambdaUpdateWrapper<QlyIsptItem>() |
| | | // .set(QlyIsptItem::getSafeQty, item.getSafeQty()) |
| | | .set(QlyIsptItem::getIsptResult, Short.parseShort(params.getType())) |
| | | // .set(QlyIsptItem::getDisQty, item.getDisQty()) |
| | | .in(QlyIsptItem::getId, item.getId()))) { |
| | | throw new CoolException("修改失败!!"); |
| | | } |
| | | }); |
| | | } else { |
| | | if (!this.updateBatchById(isptItem)) { |
| | | throw new CoolException("明细修改失败"); |
| | | List<QlyInspectResult> isptRelt = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>() |
| | | .eq(QlyInspectResult::getIsptId, item.getIspectId()) |
| | | .eq(QlyInspectResult::getIsptItemId, item.getId())); |
| | | |
| | | Double isptQty = isptRelt.stream().mapToDouble(QlyInspectResult::getAnfme).sum(); |
| | | |
| | | if (!qlyIsptItemService.update(new LambdaUpdateWrapper<QlyIsptItem>() |
| | | .set(QlyIsptItem::getUpdateBy, loginUserId) |
| | | .set(QlyIsptItem::getAnfme, isptQty) |
| | | .eq(QlyIsptItem::getId, item.getId()))) { |
| | | throw new CoolException("单据明细数量修改失败!!"); |
| | | } |
| | | } |
| | | |
| | | Map<Long, List<QlyIsptItem>> listMap = isptItems.stream().collect(Collectors.groupingBy(QlyIsptItem::getIspectId)); |
| | | for (Long key : listMap.keySet()) { |
| | | QlyInspect inspect = qlyInspectService.getById(key); |
| | | List<QlyIsptItem> items = listMap.get(key); |
| | | items.forEach(qlyIsptItem -> { |
| | | AsnOrderItem orderItem = asnOrderItemService.getById(qlyIsptItem.getAsnItemId()); |
| | | // if (qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) >= 0.00) { |
| | | // orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) |
| | | // .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); |
| | | // } else if (qlyIsptItem.getSafeQty().compareTo(0.00) > 0.00 && qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) < 0.00) { |
| | | // orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val); |
| | | // if (Double.compare(qlyIsptItem.getSafeQty() + qlyIsptItem.getDisQty(), orderItem.getAnfme()) >= 0.00 ) { |
| | | // orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); |
| | | // } else { |
| | | // orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val); |
| | | // } |
| | | // } else { |
| | | // orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val) |
| | | // .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); |
| | | // } |
| | | |
| | | if (!asnOrderItemService.updateById(orderItem)) { |
| | | throw new CoolException("收货单明细修改失败!!"); |
| | | } |
| | | }); |
| | | // Double safeQty = items.stream().mapToDouble(QlyIsptItem::getSafeQty).sum(); |
| | | // Double disQty = items.stream().mapToDouble(QlyIsptItem::getDisQty).sum(); |
| | | // Double qlyQty = safeQty + disQty; |
| | | // //安全数量,质检数量 |
| | | // inspect.setSafeQty(safeQty) |
| | | // .setIsptQty(qlyQty); |
| | | // if (Double.compare(disQty, 0) > 0) { |
| | | // inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val); |
| | | // } |
| | | // if (Double.compare(safeQty, inspect.getDlyQty()) == 0) { |
| | | //// inspect.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); |
| | | // inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); |
| | | // } |
| | | if (!qlyInspectService.updateById(inspect)) { |
| | | throw new CoolException("质检数量修改失败!!"); |
| | | } |
| | | Set<Long> isptIds = isptItem.stream().map(QlyIsptItem::getIspectId).collect(Collectors.toSet()); |
| | | List<QlyInspectResult> items = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>().in(QlyInspectResult::getIsptId, isptIds)); |
| | | Double sum = items.stream().mapToDouble(QlyInspectResult::getAnfme).sum(); |
| | | if (sum.compareTo(0.00) > 0) { |
| | | qlyInspectService.update(new LambdaUpdateWrapper<QlyInspect>() |
| | | .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<QlyIsptItem> pageByWrapper(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper) { |
| | | IPage<QlyIsptItem> page = this.page(pageParam, queryWrapper); |
| | | if (!page.getRecords().isEmpty()) { |
| | | List<QlyIsptItem> records = page.getRecords(); |
| | | for (int i = 0; i < records.size(); i++) { |
| | | List<QlyInspectResult> results = qlyInspectResultService.list(new QueryWrapper<QlyInspectResult>() |
| | | .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; |
| | | } |
| | | } |