From 4496b9019ba423dd1c51c719bcc0a5938d90fff9 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 22 四月 2025 17:33:18 +0800
Subject: [PATCH] #修改优化 1. DO单明细编码优化 2. DO单明细新增优化 3. 出库单新增单据增加新单据功能
---
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 152 +++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 124 insertions(+), 28 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 c8cd598..a22179e 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
@@ -16,13 +16,14 @@
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.GenerateTaskParams;
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.enums.PakinIOStatus;
+import com.vincent.rsf.server.manager.enums.QlyIsptStatus;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.constant.CodeRes;
@@ -32,13 +33,10 @@
import com.vincent.rsf.server.system.entity.*;
import com.vincent.rsf.server.system.mapper.FieldsMapper;
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.UserLoginService;
import com.vincent.rsf.server.system.service.UserService;
-import com.vincent.rsf.server.system.utils.ExtendFieldsUtils;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
-import net.sf.jsqlparser.statement.select.Wait;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -48,7 +46,6 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
-import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -88,6 +85,8 @@
private QlyIsptItemService qlyIsptItemService;
@Resource
private StockItemMapper stockItemMapper;
+ @Autowired
+ private LocItemService locItemService;
@Resource
private PurchaseItemMapper purchaseItemMapper;
@Resource
@@ -125,6 +124,8 @@
private LocAreaRelaMapper locAreaRelaMapper;
@Autowired
private LocAreaMapper locAreaMapper;
+ @Autowired
+ private DeviceSiteMapper deviceSiteMapper;
/**
* @author Ryan
@@ -226,7 +227,7 @@
}
//TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
Double rcptedQty = asnOrder.getQty() + receiptQty;
- asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val));
+ asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
if (!asnOrderMapper.updateById(asnOrder)) {
throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
@@ -247,6 +248,7 @@
// }
AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
.eq(AsnOrderItem::getAsnCode, asnCode)
+ .eq(AsnOrderItem::getTrackCode, dto.getBarcode())
.eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
if (Objects.isNull(orderItem)) {
throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
@@ -357,7 +359,7 @@
*/
@Override
public List<AsnOrder> getAllAsnOrders() {
- List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_PURCHASE_IN.type));
+ List<AsnOrder> asnOrders = asnOrderMapper.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type));
return asnOrders;
}
@@ -370,7 +372,8 @@
*/
@Override
public R getReceiptAreas() {
- return R.ok(warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type)));
+ List<WarehouseAreas> areas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>().eq(WarehouseAreas::getType, WarehouseAreaType.WAREHOUSE_AREA_RECEIPT.type));
+ return R.ok(areas);
}
/**
@@ -403,15 +406,16 @@
}
/**
+ * @param
+ * @param userId
+ * @return
* @author Ryan
* @description PDA缁勬嫋
- * @param
- * @return
* @time 2025/3/29 14:26
*/
@Override
- public WaitPakin mergeItems(WaitPakinParam waitPakin) {
- return waitPakinService.mergeItems(waitPakin);
+ public WaitPakin mergeItems(WaitPakinParam waitPakin, Long userId) {
+ return waitPakinService.mergeItems(waitPakin, userId);
}
/**
@@ -501,7 +505,10 @@
if (Objects.isNull(params.getIsptCode())) {
throw new CoolException("璐ㄦ鍗曚笉鑳戒负绌�");
}
- QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>().eq(QlyInspect::getCode, params.getIsptCode()));
+ List<Short> asList = Arrays.asList(QlyIsptStatus.QLY_ISPT_STAS_DONE.val, QlyIsptStatus.QLY_ISPT_STAS_CLOSE.val);
+ QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>()
+ .notIn(QlyInspect::getIsptStatus, asList)
+ .eq(QlyInspect::getCode, params.getIsptCode()));
if (Objects.isNull(inspect)) {
throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒!");
}
@@ -615,35 +622,58 @@
.eq(AsnOrder::getId, OrderId)
.eq(AsnOrder::getType, OrderType.ORDER_PLAT_IN.type));
if (Objects.isNull(order)) {
- throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+ throw new CoolException("闈炲钩搴撳崟鎹笉鍙墽琛屼汉宸ヤ笂鏋讹紒锛�");
}
Stock stock = new Stock();
- 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()));
- if (!Objects.isNull(purchase)) {
- stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
- }
- }
+// if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) {
+// Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode()));
+// if (!Objects.isNull(purchase)) {
+// stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
+// }
+// }
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
if (StringUtils.isBlank(ruleCode)) {
throw new CoolException("褰撳墠涓氬姟锛�" + SerialRuleCode.SYS_STOCK_CODE + "锛岀紪鐮佽鍒欎笉瀛樺湪锛侊紒");
}
+ List<AsnOrderItem> itemList = params.getItemList();
+ double sum = itemList.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
+ stock.setAnfme(sum)
+ .setSourceId(order.getId())
+ .setType(order.getType())
+ .setWkType(Short.parseShort(order.getWkType()));
if (!stockService.save(stock)) {
throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒");
}
+ //TODO 骞冲簱涓婃灦绛栫暐闂锛� 1 骞冲簱搴撲綅鏄崟鐙璁★紝杩樻槸涓庝骇搴撲竴璧风敤绫诲瀷鍖哄垎
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, params.getLocCode()));
if (Objects.isNull(loc)) {
throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�");
}
+ //locItemSerivce
+ List<LocItem> locItems = new ArrayList<>();
+ itemList.forEach(asnOrderItem -> {
+ LocItem item = new LocItem();
+ BeanUtils.copyProperties(asnOrderItem, item);
+ item.setId(loc.getId())
+ .setOrderId(order.getId())
+ .setOrderItemId(asnOrderItem.getId())
+ .setWkType(Short.parseShort(order.getWkType()))
+ .setType(order.getType());
+ locItems.add(item);
+ });
+ if (!locItemService.saveBatch(locItems)) {
+ throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒");
+ }
+
List<StockItem> stockItems = new ArrayList<>();
- params.getItemList().forEach(orderItem -> {
+ itemList.forEach(orderItem -> {
StockItem stockItem = new StockItem();
BeanUtils.copyProperties(orderItem, stockItem);
- stockItem.setAsnItemId(orderItem.getId())
+ stockItem.setSourceItemId(orderItem.getId())
.setBarcode(orderItem.getBarcode())
- .setLocId(loc.getId())
+ .setStockCode(stock.getCode())
.setUpdateBy(loginUserId)
+ .setCreateBy(loginUserId)
.setId(null)
.setStockId(stock.getId());
stockItems.add(stockItem);
@@ -796,6 +826,71 @@
}
/**
+ * @author Ryan
+ * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅
+ * @param barcode
+ * @return
+ */
+ @Override
+ public R getPakinInStock(String barcode) {
+ WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode));
+ if (Objects.isNull(waitPakin)) {
+ throw new CoolException("缁勬嫋鍗曟嵁涓嶅瓨鍦紒锛�");
+ }
+ List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId()));
+ if (pakinItems.isEmpty()) {
+ return R.ok(new ArrayList<>());
+ }
+ return R.ok(pakinItems);
+ }
+
+ /**
+ * @author Ryan
+ * @description 鑾峰彇搴撳彛绔欑偣淇℃伅
+ * @return
+ */
+ @Override
+ public R getDeviceSites() {
+ List<DeviceSite> sites = deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>()
+ .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName)
+ .eq(DeviceSite::getStatus, 1)
+ .groupBy(DeviceSite::getSite, DeviceSite::getId, DeviceSite::getName));
+ return R.ok(sites);
+ }
+
+ /**
+ * @author Ryan
+ * @description 鑾峰彇鎺ㄨ崘搴撲綅
+ * @return
+ */
+ @Override
+ public R getRecommondLocs() {
+ return R.ok(locService.list(new LambdaQueryWrapper<Loc>().last("limit 10")));
+ }
+
+ /**
+ * @param map
+ * @param loginUserId
+ * @return
+ * @author Ryan
+ * @description 鐢熸垚浠诲姟鍒楄〃
+ */
+ @Override
+ public R generateTask(Map<String, Object> map, Long loginUserId) {
+ String barcode = map.get("barcode").toString();
+ List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode));
+ if (waitPakins.isEmpty()) {
+ throw new CoolException("鍗曟嵁涓嶅瓨鍦� 锛侊紒");
+ }
+ GenerateTaskParams taskParams = new GenerateTaskParams();
+ taskParams.setWaitPakins(waitPakins)
+ .setSiteId(Long.parseLong(map.get("site").toString()))
+ .setLocCode(map.get("locCode").toString());
+ return R.ok(taskService.generateTasks(taskParams, loginUserId));
+
+ }
+
+ /**
* 鑾峰彇ReceiptDetlsDtos
*/
private R getAsnOrderItem(List<AsnOrderItem> items) {
@@ -828,14 +923,15 @@
detlsDto.setInspect(inspect.getStatus$());
}
//鑾峰彇褰撳墠搴撳瓨淇℃伅
- StockItem stockItem = stockItemMapper.selectOne(new LambdaQueryWrapper<StockItem>()
- .eq(StockItem::getAsnItemId, asnOrderItem.getId())
- .eq(StockItem::getMatnrId, asnOrderItem.getMatnrId()));
+ LocItem stockItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>()
+ .eq(LocItem::getOrderItemId, asnOrderItem.getId())
+ .eq(LocItem::getBatch, asnOrderItem.getBatch())
+ .eq(LocItem::getMatnrId, asnOrderItem.getMatnrId()));
//SET 褰撳墠搴撳瓨鏁伴噺
if (Objects.isNull(stockItem)) {
detlsDto.setStockQty(0.0);
} else {
- detlsDto.setStockQty(stockItem.getQty() + stockItem.getWorkQty());
+ detlsDto.setStockQty(stockItem.getAnfme() + stockItem.getWorkQty());
}
if (!Objects.isNull(asnOrderItem.getPoDetlId())) {
--
Gitblit v1.9.1