From 9fe1ec3afe8696c628d076d1f76686c4efc3012e Mon Sep 17 00:00:00 2001
From: zc <zyzc>
Date: 星期二, 21 十月 2025 10:49:55 +0800
Subject: [PATCH] 容器初始化功能优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java | 258 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 242 insertions(+), 16 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 f8bcbe2..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,45 +1,271 @@
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.*;
+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.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.List;
import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
@Service("qlyIsptItemService")
public class QlyIsptItemServiceImpl extends ServiceImpl<QlyIsptItemMapper, QlyIsptItem> implements QlyIsptItemService {
+ @Autowired
+ private QlyInspectService qlyInspectService;
+ @Autowired
+ private AsnOrderItemService asnOrderItemService;
+
+ @Autowired
+ private QlyInspectResultService qlyInspectResultService;
+ @Autowired
+ private QlyIsptItemService qlyIsptItemService;
+ @Autowired
+ private WarehouseAreasItemServiceImpl warehouseAreasItemService;
+ @Autowired
+ private CompanysServiceImpl companysService;
+
/**
+ * @param
+ * @param loginUserId
+ * @return
* @author Ryan
* @description 鎵归噺淇敼
- * @param
- * @return
* @time 2025/4/1 09:40
*/
@Override
- public boolean batchUpdate(IsptItemsParams params) {
- if (Objects.isNull(params.getIds()) || params.getIds().isEmpty()) {
+ @Transactional(rollbackFor = Exception.class)
+ public boolean batchUpdate(IsptItemsParams params, Long loginUserId) {
+ if (Objects.isNull(params.getIsptItem()) || params.getIsptItem().isEmpty()) {
throw new CoolException("ID涓嶈兘涓虹┖锛侊紒");
}
- QlyIsptItem isptItem = params.getIsptItem();
- if (Objects.isNull(isptItem)) {
- throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛�");
+ List<QlyIsptItem> isptItem = params.getIsptItem();
+ List<Long> list = isptItem.stream().map(QlyIsptItem::getId).collect(Collectors.toList());
+
+ List<QlyIsptItem> isptItems = this.list(new LambdaQueryWrapper<QlyIsptItem>().in(QlyIsptItem::getId, list));
+ if (isptItems.isEmpty()) {
+ throw new CoolException("鏁版嵁閿欒锛氭槑缁嗕笉瀛樺湪锛侊紒");
}
- return this.update(new LambdaUpdateWrapper<QlyIsptItem>()
- .in(QlyIsptItem::getId, params.getIds())
- .set(!Objects.isNull(isptItem.getIsptStatus()), QlyIsptItem::getIsptStatus, !Objects.isNull(isptItem.getIsptStatus()) ? isptItem.getIsptStatus() : "0")
- .set(!Objects.isNull(isptItem.getDisQty()), QlyIsptItem::getDisQty, !Objects.isNull(isptItem.getDisQty()) ? isptItem.getDisQty() : 0)
- .set(!Objects.isNull(isptItem.getDlyQty()), QlyIsptItem::getDlyQty, !Objects.isNull(isptItem.getDlyQty()) ? isptItem.getDlyQty() : 0)
- .set(!Objects.isNull(isptItem.getIsptResult()), QlyIsptItem::getIsptResult, !Objects.isNull(isptItem.getIsptResult()) ? isptItem.getIsptResult() : "0"));
+ 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()) {
+ if (!qlyInspectResultService.remove(new LambdaUpdateWrapper<QlyInspectResult>()
+ .eq(QlyInspectResult::getIsptItemId, item.getId()))) {
+ 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);
+ }
+
+ 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);
+//// }
+// }
+ }
+
+ 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());
+ }
+ }
+
+ 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