From add402ec68d150cd8b13c231ce991cf49889259c Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期二, 21 十月 2025 14:03:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/devlop_whxrwms' into devlop_whxrwms
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java | 306 +++++++++++++++++++++++++++++++++-----------------
1 files changed, 203 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..ccf2f5b 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,206 @@
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;
+
+ WkOrderItem wkOrderItem = asnOrderItemService.getById(item.getAsnItemId());
+ if (Objects.isNull(wkOrderItem)) {
+ if (StringUtils.isNoneBlank(wkOrderItem.getSplrCode())) {
+ Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, wkOrderItem.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 {
+ Double anfme = Math.round((orderItem.getAnfme() - sum) * 10000) / 10000.0;
+ orderItem.setAnfme(anfme);
+ 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