From 6c1d09d5e692f0b43f5dfb2288a4aef728046b06 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 07 四月 2025 16:51:25 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 191 +++++++++++++++++++----------------------------
1 files changed, 79 insertions(+), 112 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 8edde8a..b6536c2 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
@@ -1,21 +1,26 @@
package com.vincent.rsf.server.api.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.api.controller.params.*;
import com.vincent.rsf.server.api.entity.dto.*;
+import com.vincent.rsf.server.api.entity.enums.OrderType;
import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
import com.vincent.rsf.server.api.service.MobileService;
import com.vincent.rsf.server.common.config.ConfigProperties;
import com.vincent.rsf.server.common.enums.WarehouseAreaType;
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.CommonUtil;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
+import com.vincent.rsf.server.common.utils.JSONUtil;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.constant.CodeRes;
@@ -27,21 +32,19 @@
import com.vincent.rsf.server.system.mapper.TenantMapper;
import com.vincent.rsf.server.system.mapper.UserMapper;
import com.vincent.rsf.server.system.service.FieldsItemService;
-import com.vincent.rsf.server.system.service.FieldsService;
import com.vincent.rsf.server.system.service.UserLoginService;
+import com.vincent.rsf.server.system.utils.ExtendFieldsUtils;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.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.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -183,28 +186,28 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R receiptToWarehouse(ReceiptParams params) {
- if (params.getReceipts().isEmpty()) {
+ public R receiptToWarehouse(Map<String, Object> params) {
+ if (Objects.isNull(params)) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ ReceiptParams receiptParam = JSONObject.parseObject(JSONObject.toJSONString(params), ReceiptParams.class);
+ if (receiptParam.getReceipts().isEmpty()) {
throw new CoolException("鏀惰揣鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getWhAreaId())) {
+ if (Objects.isNull(receiptParam.getWhAreaId())) {
throw new CoolException("搴撳尯鏍囪瘑涓嶈兘涓虹┖锛侊紒");
}
WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
- .eq(WarehouseAreas::getId, params.getWhAreaId()));
+ .eq(WarehouseAreas::getId, receiptParam.getWhAreaId()));
if (Objects.isNull(areasItem)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶅簱鍖轰笉瀛樺湪锛侊紒");
}
- //鑾峰彇宸插惎鐢ㄧ殑鍔ㄦ�佹墿灞曞瓧
- List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>()
- .eq(Fields::getFlagEnable, 1)
- .eq(Fields::getStatus, 1));
- List<ReceiptDetlsDto> receipts = params.getReceipts();
+ List<ReceiptDetlsDto> receipts = receiptParam.getReceipts();
List<WarehouseAreasItem> allOrders = new ArrayList<>();
- double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
+ Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
String asnCode = receipts.stream().findFirst().get().getAsnCode();
@@ -213,13 +216,17 @@
if (Objects.isNull(asnOrder)) {
throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
}
- asnOrder.setQty(receiptQty);
+ //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
+ Double rcptedQty = asnOrder.getQty() + receiptQty;
+ asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val));
if (!asnOrderMapper.updateById(asnOrder)) {
throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
}
-
- receipts.forEach(dto -> {
+ List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts");
+ for (Map<String, Object> rcpt : receipts1) {
+ if (Objects.isNull(rcpt)) {continue;}
+ ReceiptDetlsDto dto = JSONObject.parseObject(JSONObject.toJSONString(rcpt), ReceiptDetlsDto.class);
Matnr matnr = matnrMapper.selectById(dto.getMatnrId());
if (Objects.isNull(matnr)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒");
@@ -227,10 +234,9 @@
if (Objects.isNull(dto.getReceiptQty())) {
throw new CoolException("鏀惰揣鏁版嵁涓嶈兘涓虹┖锛侊紒");
}
- if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
- throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
- }
-
+// if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
+// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
+// }
AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
.eq(AsnOrderItem::getAsnCode, asnCode)
.eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
@@ -240,8 +246,26 @@
if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
}
- orderItem.setQty(dto.getReceiptQty())
+ Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty();
+ orderItem.setQty(itemRcptQty)
+ .setSplrBatch(dto.getSplrBatch())
+ .setStockUnit(dto.getStockUnit())
.setProdTime(dto.getProdTime());
+
+ if (!Objects.isNull(rcpt)) {
+ try {
+ if (Objects.isNull(rcpt.get("fieldsindex")) || StringUtils.isBlank(rcpt.get("fieldsindex").toString())) {
+ //鑾峰彇16浣島uid
+ String uuid16 = CommonUtil.randomUUID16();
+ rcpt.put("index", uuid16);
+ orderItem.setFieldsIndex(uuid16);
+ }
+ //淇濆瓨鎴栨洿鏂版墿灞曞瓧娈�
+ FieldsUtils.updateFieldsValue(rcpt);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
if (asnOrderItemMapper.updateById(orderItem) < 1) {
throw new CoolException("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
@@ -253,15 +277,18 @@
// if (Objects.isNull(dto.getProdTime())) {
// format = dateFormat.format(dto.getProdTime());
// }
- item.setBarcode(dto.getBarcode())
+ item.setTrackCode(dto.getBarcode())
.setAreaName(areasItem.getName())
.setAreaId(areasItem.getId())
+ .setAsnItemId(orderItem.getId())
+ .setAsnCode(asnOrder.getCode())
+ .setAsnId(asnOrder.getId())
.setProdTime(dto.getProdTime())
.setWeight(dto.getWeigth())
.setStockUnit(dto.getStockUnit())
.setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
- .setAnfme(dto.getReceiptQty())
- .setSplrBtch(dto.getSplrBatch())
+ .setAnfme(itemRcptQty)
+ .setSplrBatch(dto.getSplrBatch())
.setMatnrCode(matnr.getCode())
.setMatnrId(matnr.getId())
.setMatnrName(matnr.getName())
@@ -269,96 +296,28 @@
.setUnit(dto.getStockUnit())
.setStockUnit(dto.getStockUnit())
.setWeight(matnr.getWeight())
+ .setFieldsIndex(orderItem.getFieldsIndex())
.setShipperId(matnr.getShipperId());
- //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
+ //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
- if (!Objects.isNull(fields)) {
- if (!Objects.isNull(dto.getExtendFields())) {
- //鑾峰彇16浣島uid
- String uuid16 = CommonUtil.randomUUID16();
- Map<String, Object> extendFields = dto.getExtendFields();
- //瀛楁闆嗗悎鐢虫槑
- List<FieldsItem> fieldsItems = new ArrayList<>();
- extendFields.keySet().forEach(key -> {
- fields.forEach(obj -> {
- //鍒ゆ柇key鍊间笌fields琛ㄥ瓧娈垫槸鍚︾浉鍚�
- if (obj.getFields().equals(key)) {
- FieldsItem fieldsItem = new FieldsItem();
- fieldsItem.setMatnrId(matnr.getId()).setFieldsId(obj.getId())
- .setShiperId(matnr.getShipperId())
- .setValue(extendFields.get(key).toString())
- .setUuid(uuid16);
- fieldsItems.add(fieldsItem);
- //鍞竴鏍囪瘑鍏ュ簱
- item.setFieldsIndex(uuid16);
- }
- });
- });
- if (!fieldsItemService.saveBatch(fieldsItems)) {
- throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
- }
- }
- }
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);
- }
-
+// //鑾峰彇閲囪喘鏁伴噺
+// 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.removeById(asnOrder.getId())) {
- throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
- }
-
- AsnOrderLog orderLog = new AsnOrderLog();
- BeanUtils.copyProperties(asnOrder, orderLog);
- orderLog.setAsnId(asnOrder.getId());
-
- 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);
- itemLog.setAsnItemId(itemLog.getId())
- .setAsnId(item.getAsnId());
- 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
@@ -420,7 +379,7 @@
@Override
public R getDeltByCode(String code) {
- return R.ok(asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code)));
+ return R.ok(warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getTrackCode, code)));
}
/**
@@ -612,12 +571,14 @@
/**
* 浜哄伐涓婃灦鍏ュ簱
+ *
* @param params
+ * @param loginUserId
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R publicToStock(PublicToStockParams params) {
+ public R publicToStock(PublicToStockParams params, Long loginUserId) {
if (Objects.isNull(params.getLocCode()) || StringUtils.isBlank(params.getLocCode())) {
throw new CoolException("搴撲綅涓嶈兘涓虹┖锛侊紒");
}
@@ -625,7 +586,10 @@
throw new CoolException("鍗曟嵁鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
Long OrderId = params.getItemList().stream().findFirst().get().getAsnId();
- AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, OrderId));
+ /**鑾峰彇骞冲簱璁㈠崟*/
+ AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>()
+ .eq(AsnOrder::getId, OrderId)
+ .eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type));
if (Objects.isNull(order)) {
throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
}
@@ -633,7 +597,9 @@
stock.setAsnId(OrderId).setAsnCode(order.getCode());
if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) {
Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode()));
- stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
+ if (!Objects.isNull(purchase)) {
+ stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
+ }
}
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
if (StringUtils.isBlank(ruleCode)) {
@@ -642,7 +608,7 @@
if (!stockService.save(stock)) {
throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒");
}
- Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, params.getLocCode()));
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, params.getLocCode()));
if (Objects.isNull(loc)) {
throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�");
}
@@ -653,6 +619,7 @@
stockItem.setAsnItemId(orderItem.getId())
.setBarcode(orderItem.getBarcode())
.setLocId(loc.getId())
+ .setUpdateBy(loginUserId)
.setId(null)
.setStockId(stock.getId());
stockItems.add(stockItem);
@@ -679,7 +646,7 @@
throw new CoolException("鎷栫洏浠诲姟涓嶅瓨鍦紒锛�");
}
List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
- if (!taskItems.isEmpty()) {
+ if (taskItems.isEmpty()) {
throw new CoolException("鎷栫洏浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
}
TaskQueueDto queueDto = new TaskQueueDto();
@@ -747,6 +714,7 @@
detlsDto.setAsnCode(asnOrderItem.getAsnCode())
.setMaktx(asnOrderItem.getMaktx())
+ .setFieldsIndex(asnOrderItem.getFieldsIndex())
.setBarcode(asnOrderItem.getTrackCode())
.setQty(asnOrderItem.getQty())
.setPoCode(asnOrderItem.getPoCode())
@@ -787,7 +755,6 @@
detlsDto.setPlatformId(purchaseItem.getPlatItemId());
}
}
-
detlsDtos.add(detlsDto);
});
--
Gitblit v1.9.1