From fe88c3671515ab5ed0e66100fd1bf22102ffdc0c Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期二, 08 四月 2025 11:05:31 +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 |  127 ++++++++++++++++++++++++------------------
 1 files changed, 73 insertions(+), 54 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 770b726..ea767f7 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,6 +1,8 @@
 package com.vincent.rsf.server.api.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
@@ -13,10 +15,13 @@
 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;
@@ -29,6 +34,7 @@
 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.utils.ExtendFieldsUtils;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -181,25 +187,25 @@
      */
     @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();
@@ -211,15 +217,17 @@
         if (Objects.isNull(asnOrder)) {
             throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
         }
-        /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
+        //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
         Double rcptedQty = asnOrder.getQty() + receiptQty;
-        asnOrder.setQty(rcptedQty);
+        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,22 +235,38 @@
             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()));
             if (Objects.isNull(orderItem)) {
                 throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
             }
-//            if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
-//                throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
-//            }
+            if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
+                throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
+            }
             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("閫氱煡鍗曟槑缁嗘暟閲忎慨鏀瑰け璐ワ紒锛�");
@@ -254,54 +278,31 @@
 //            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(itemRcptQty)
-                    .setSplrBtch(dto.getSplrBatch())
+                    .setSplrBatch(dto.getSplrBatch())
                     .setMatnrCode(matnr.getCode())
                     .setMatnrId(matnr.getId())
-                    .setMatnrName(matnr.getName())
+                    .setMaktx(matnr.getName())
                     //搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
                     .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("鏀惰揣澶辫触锛侊紒");
@@ -377,9 +378,21 @@
         return fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
     }
 
+    /**
+     * @author Ryan
+     * @description 鑾峰彇缁勭洏鏄庣粏
+     * @param
+     * @return
+     * @time 2025/4/7 16:58
+     */
     @Override
     public R getDeltByCode(String code) {
-        return R.ok(asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code)));
+        //TODO 鍚庣画闇�鏍规嵁绛栫暐閰嶇疆锛岃幏鍙栫粍鎷栨暟鎹�傚锛氭贩瑁咃紝鎸夋壒娆℃贩瑁呯瓑
+        LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
+                .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx").lambda()
+                .eq(WarehouseAreasItem::getTrackCode, code)
+                .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId, WarehouseAreasItem::getMatnrId);
+        return R.ok(warehouseAreasItemService.getOne(queryWrapper));
     }
 
     /**
@@ -394,6 +407,12 @@
         return waitPakinService.mergeItems(waitPakin);
     }
 
+    /**
+     * @author Ryan
+     * @description 瑙g粦
+     * @param param
+     * @return
+     */
     @Override
     public WaitPakin unBind(WaitPakinParam param) {
         return waitPakinService.unBind(param);
@@ -714,6 +733,7 @@
 
             detlsDto.setAsnCode(asnOrderItem.getAsnCode())
                     .setMaktx(asnOrderItem.getMaktx())
+                    .setFieldsIndex(asnOrderItem.getFieldsIndex())
                     .setBarcode(asnOrderItem.getTrackCode())
                     .setQty(asnOrderItem.getQty())
                     .setPoCode(asnOrderItem.getPoCode())
@@ -754,7 +774,6 @@
                     detlsDto.setPlatformId(purchaseItem.getPlatItemId());
                 }
             }
-
             detlsDtos.add(detlsDto);
         });
 

--
Gitblit v1.9.1