From 54f12f528d78dd54f6813fa54d8f65c28cdd7984 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 21 三月 2025 15:31:32 +0800
Subject: [PATCH] 1
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 107 insertions(+), 11 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index a62dd3b..a00a0ec 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -17,9 +17,12 @@
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.mapper.*;
+import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
+import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.vincent.rsf.server.manager.service.WarehouseAreasItemService;
import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import com.vincent.rsf.server.system.constant.CodeRes;
+import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.controller.param.LoginParam;
import com.vincent.rsf.server.system.controller.result.LoginResult;
import com.vincent.rsf.server.system.entity.*;
@@ -31,13 +34,16 @@
import com.vincent.rsf.server.system.service.UserLoginService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.tika.utils.StringUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
import java.util.*;
/**
@@ -78,6 +84,12 @@
private PurchaseItemMapper purchaseItemMapper;
@Resource
private FieldsMapper fieldsMapper;
+
+ @Autowired
+ private AsnOrderLogService asnOrderLogService;
+
+ @Autowired
+ private AsnOrderItemLogService asnOrderItemLogService;
@Autowired
private FieldsItemService fieldsItemService;
@@ -155,6 +167,7 @@
throw new CoolException("搴撳尯鏍囪瘑涓嶈兘涓虹┖锛侊紒");
}
+
WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getId, params.getWhAreaId()));
if (Objects.isNull(areasItem)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶅簱鍖轰笉瀛樺湪锛侊紒");
@@ -163,18 +176,52 @@
List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
List<ReceiptDetlsDto> receipts = params.getReceipts();
- List<WarehouseAreasItem> allOrders = new ArrayList<>();
+ List<WarehouseAreasItem> allOrders = new ArrayList<>();
+
+ double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
+
+ String asnCode = receipts.stream().findFirst().get().getAsnCode();
+
+ AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode));
+ if (Objects.isNull(asnOrder)) {
+ throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
+ }
+ asnOrder.setQty(receiptQty);
+
+ if (asnOrderMapper.updateById(asnOrder) < 1) {
+ throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
+ }
+
receipts.forEach(dto -> {
Matnr matnr = matnrMapper.selectById(dto.getMatnrId());
if (Objects.isNull(matnr)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒");
}
+ if (Objects.isNull(dto.getReceiptQty())) {
+ throw new CoolException("鏀惰揣鏁版嵁涓嶈兘涓虹┖锛侊紒");
+ }
+ if (dto.getReceiptQty() < dto.getPurQty()) {
+ throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
+ }
+
+ AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
+ .eq(AsnOrderItem::getAsnCode, asnCode)
+ .eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
+ if (Objects.isNull(orderItem)) {
+ throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
+ }
+ orderItem.setQty(dto.getReceiptQty());
+
+ if (asnOrderItemMapper.updateById(orderItem) < 1) {
+ throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
+ }
+
WarehouseAreasItem item = new WarehouseAreasItem();
item.setBarcode(dto.getBarcode())
.setAreaName(areasItem.getName())
.setAreaId(areasItem.getId())
.setStockUnit(dto.getStockUnit())
- .setBatch(SerialRuleUtils.generateRuleCode("sys_receipt_batch", dto))
+ .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
.setAnfme(dto.getReceiptQty())
.setSplrBtch(dto.getSplrBatch())
.setMatnrCode(matnr.getCode())
@@ -203,7 +250,6 @@
.setShiperId(matnr.getShipperId())
.setValue(extendFields.get(key).toString())
.setUuid(uuid16);
-
fieldsItems.add(fieldsItem);
//鍞竴鏍囪瘑鍏ュ簱
item.setFieldsIndex(uuid16);
@@ -216,15 +262,62 @@
}
}
allOrders.add(item);
-
});
if (!warehouseAreasItemService.saveBatch(allOrders)) {
throw new CoolException("鏀惰揣澶辫触锛侊紒");
}
+ //鑾峰彇閲囪喘鏁伴噺
+ double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum();
+
+ BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty));
+ //鍒ゆ柇宸叉敹璐ф暟閲忔槸鍚﹀皬浜庣瓑浜庨噰璐暟閲�
+ if (subtract.compareTo(new BigDecimal("0.0")) <= 0) {
+ asnOrder.setRleStatus(Short.valueOf("1"));
+ //鏃ュ織琛ㄦ搷浣�
+ operateOrderLogs(asnOrder);
+ }
+
return R.ok("鎿嶄綔鎴愬姛");
}
+
+ /**
+ * @author Ryan
+ * @description 鍒犻櫎鍘熶富鍗曞強鏄庣粏锛屽姞鍏ュ巻鍙叉。
+ * @param
+ * @return
+ * @time 2025/3/19 19:53
+ */
+ private void operateOrderLogs(AsnOrder asnOrder) {
+ if (asnOrderMapper.deleteById(asnOrder.getId()) < 1) {
+ throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
+ }
+
+ AsnOrderLog orderLog = new AsnOrderLog();
+ BeanUtils.copyProperties(asnOrder, orderLog);
+
+ if (!asnOrderLogService.save(orderLog)) {
+ throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
+ }
+
+ List<AsnOrderItemLog> logs = new ArrayList<>();
+ List<AsnOrderItem> items = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId()));
+ items.forEach(item -> {
+ AsnOrderItemLog itemLog = new AsnOrderItemLog();
+ BeanUtils.copyProperties(item, itemLog);
+ logs.add(itemLog);
+ });
+
+ if (!asnOrderItemLogService.saveBatch(logs)) {
+ throw new CoolException("閫氱煡鍗曟槑缁嗗巻鍙叉。淇濆瓨澶辫触锛侊紒");
+ }
+
+ if (asnOrderItemMapper.delete(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId())) < 1) {
+ throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
+ }
+ }
+
/**
* @author Ryan
@@ -293,7 +386,7 @@
ReceiptDetlsDto detlsDto = new ReceiptDetlsDto();
detlsDto.setAsnCode(asnOrderItem.getAsnCode())
- .setMatnk(asnOrderItem.getMatnk())
+ .setMaktx(asnOrderItem.getMaktx())
.setBarcode(asnOrderItem.getBarcode())
.setPoCode(asnOrderItem.getPoCode())
.setPurQty(asnOrderItem.getAnfme())
@@ -308,7 +401,7 @@
.setMatnrId(matnr.getId())
.setStockUnit(matnr.getStockUnit());
QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>()
- .eq(QlyInspect::getAsnItemId, asnOrderItem.getId()).eq(QlyInspect::getPoItemId, asnOrderItem.getPoDetlId()));
+ .eq(QlyInspect::getAsnItemId, asnOrderItem.getId()));
if (!Objects.isNull(inspect)) {
//set 璐ㄦ缁撴灉
detlsDto.setInspect(inspect.getStatus$());
@@ -324,14 +417,17 @@
detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty());
}
- //鑾峰彇閲囪喘鍗曟槑缁嗕俊鎭�
- PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId()));
- //SET 骞冲彴琛屽彿
- detlsDto.setPlatformId(purchaseItem.getPlatItemId());
+ if (!Objects.isNull(asnOrderItem.getPoDetlId())) {
+ //鑾峰彇閲囪喘鍗曟槑缁嗕俊鎭�
+ PurchaseItem purchaseItem = purchaseItemMapper.selectOne(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getId, asnOrderItem.getPoDetlId()));
+ if (Objects.isNull(purchaseItem)) {
+ //SET 骞冲彴琛屽彿
+ detlsDto.setPlatformId(purchaseItem.getPlatItemId());
+ }
+ }
detlsDtos.add(detlsDto);
});
-
return R.ok(detlsDtos);
}
--
Gitblit v1.9.1