From 8f7e1bf264a5beaca1cf563452bc9ef72dea848f Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 21 五月 2025 08:16:22 +0800 Subject: [PATCH] 修复取消组托,收货数量修改错误问题 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java | 305 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 202 insertions(+), 103 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java index 287576c..8970a59 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java @@ -1,32 +1,30 @@ 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.entity.*; 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 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.apache.commons.lang3.StringUtils; 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.Arrays; import java.util.List; -import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; @Service("qlyIsptItemService") @@ -39,9 +37,16 @@ @Autowired private QlyInspectResultService qlyInspectResultService; + @Autowired + private QlyIsptItemService qlyIsptItemService; + @Autowired + private WarehouseAreasItemServiceImpl warehouseAreasItemService; + @Autowired + private CompanysServiceImpl companysService; /** * @param + * @param loginUserId * @return * @author Ryan * @description 鎵归噺淇敼 @@ -49,7 +54,7 @@ */ @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涓嶈兘涓虹┖锛侊紒"); } @@ -61,111 +66,205 @@ 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("鍘嗗彶璐ㄦ缁撴灉绉诲嚭澶辫触锛侊紒"); } } - } - - - 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("鏄庣粏淇敼澶辫触"); + QlyInspectResult result = new QlyInspectResult(); + result.setIsptId(item.getIspectId()) + .setRcptId(item.getRcptId()) + .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); } - } - 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); + result = new QlyInspectResult(); + result.setIsptId(item.getIspectId()) + .setRcptId(item.getRcptId()) + .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<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("鍗曟嵁鏄庣粏鏁伴噺淇敼澶辫触锛侊紒"); + } + +// WarehouseAreasItem orderItem = warehouseAreasItemService.getById(item.getRcptId()); +// if (Objects.isNull(orderItem)) { +// throw new CoolException("鏀惰揣鍗曟嵁涓嶅瓨鍦紒锛�"); +// } + +// Double disQty = Objects.isNull(item.getDisQty()) ? 0 : item.getDisQty(); +// Double safeQty = Objects.isNull(item.getSafeQty()) ? 0 : item.getSafeQty(); +// +// Double sum = disQty + safeQty; +// orderItem.setIsptQty(sum); +// +// if (sum.compareTo(0.0) > 0) { +// if (!warehouseAreasItemService.updateById(orderItem)) { +// throw new CoolException("鏀惰揣鍖哄簱瀛樹俊鎭洿鏂板け璐ワ紒锛�"); // } +// //鏂板缓璐ㄦ鍗曪紝涓嶄細鏈夎川妫�缁撴灉 +// confirmReceipt(item, orderItem); +// +//// if (Objects.isNull(orderItem.getIsptResult())) { +//// operateReceipt(item, orderItem); +//// } +// } + } - 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: 璐ㄦ鍚庝慨鏀规敹璐у尯瀛樹俊鎭� + * @version 1.0 + */ + @Transactional(rollbackFor = Exception.class) + public void confirmReceipt(QlyIsptItem item, WarehouseAreasItem orderItem) { + Double disQty = Objects.isNull(item.getDisQty()) ? 0 : item.getDisQty(); + Double safeQty = Objects.isNull(item.getSafeQty()) ? 0 : item.getSafeQty(); + Double sum = disQty + safeQty; + + AsnOrderItem asnOrderItem = asnOrderItemService.getById(item.getAsnItemId()); + if (Objects.isNull(asnOrderItem)) { + if (StringUtils.isNoneBlank(asnOrderItem.getSplrCode())) { + Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, asnOrderItem.getSplrCode())); + orderItem.setSplrId(companys.getId()); } } - return true; + + if (sum.compareTo(orderItem.getAnfme()) >= 0) { + //瀹屾垚璐ㄦ,鍋氭洿鏂版搷浣� + if (safeQty.compareTo(0.0) > 0) { + orderItem.setIsptQty(safeQty).setAnfme(safeQty); + orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); + if (!warehouseAreasItemService.updateById(orderItem)) { + throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); + } + } + + WarehouseAreasItem areasItem = new WarehouseAreasItem(); + BeanUtils.copyProperties(orderItem, areasItem); + if (disQty.compareTo(0.0) > 0) { + areasItem.setIsptQty(disQty) + .setAnfme(disQty) + .setId(null) + .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); + if (!warehouseAreasItemService.saveOrUpdate(areasItem)) { + throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); + } + } + } else { + orderItem.setAnfme(orderItem.getAnfme() - sum); + if (!warehouseAreasItemService.updateById(orderItem)) { + throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); + } + + WarehouseAreasItem areasItem = new WarehouseAreasItem(); + BeanUtils.copyProperties(orderItem, areasItem); + //鏈畬鎴愬仛娣诲姞鎿嶄綔 + if (safeQty.compareTo(0.0) > 0) { + areasItem.setIsptQty(safeQty) + .setAnfme(safeQty) + .setId(null) + .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); + if (!warehouseAreasItemService.saveOrUpdate(areasItem)) { + throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); + } + } + + WarehouseAreasItem items = new WarehouseAreasItem(); + BeanUtils.copyProperties(orderItem, items); + if (disQty.compareTo(0.0) > 0) { + items.setIsptQty(disQty) + .setAnfme(disQty) + .setId(null) + .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); + if (!warehouseAreasItemService.saveOrUpdate(items)) { + throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); + } + } + } + } + + @Override + public List<QlyIsptItem> selectIsptResult(LambdaQueryWrapper<QlyIsptItem> eq) { + return this.baseMapper.selectIsptResult(eq); + } + + /** + * @author Ryan + * @date 2025/5/12 + * @description: 鑾峰彇鑷畾涔塒age + * @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, rcpt_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; + } + + @Override + public IPage<QlyIsptItem> pageByIsptResult(PageParam<QlyIsptItem, BaseParam> pageParam, QueryWrapper<QlyIsptItem> queryWrapper) { + if (Objects.isNull(pageParam)) { + PageParam<QlyIsptItem, BaseParam> param = new PageParam<>(); + return this.baseMapper.selectPage(param, queryWrapper); + } else { + return this.baseMapper.pageByWrapper(pageParam, queryWrapper); + } } } -- Gitblit v1.9.1