From 061753c5c014862564e56f22af0a685f0efd0fde Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 19 十二月 2025 08:56:16 +0800
Subject: [PATCH] #库存预留

---
 src/main/webapp/views/inventoryReserve/inventoryReserve.html            |    2 
 src/main/java/com/zy/asrs/controller/OrderPakoutController.java         |   17 +++--
 src/main/java/com/zy/asrs/controller/InventoryReserveController.java    |    1 
 src/main/java/com/zy/asrs/controller/OrderPakinController.java          |   19 ++++++
 src/main/java/com/zy/asrs/entity/InventoryReserve.java                  |   30 +++++++++
 src/main/java/com/zy/common/constant/ApiInterfaceConstant.java          |    2 
 src/main/java/com/zy/asrs/controller/InventoryReserveLogController.java |    1 
 src/main/webapp/static/js/inventoryReserve/inventoryReserve.js          |    9 ++-
 src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java      |    9 +++
 src/main/java/com/zy/asrs/controller/OutController.java                 |   37 +++++++++++
 src/main/java/com/zy/asrs/entity/InventoryReserveLog.java               |   28 +++++++++
 11 files changed, 140 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/InventoryReserveController.java b/src/main/java/com/zy/asrs/controller/InventoryReserveController.java
index eebe4f9..fd84f06 100644
--- a/src/main/java/com/zy/asrs/controller/InventoryReserveController.java
+++ b/src/main/java/com/zy/asrs/controller/InventoryReserveController.java
@@ -43,6 +43,7 @@
         convert(param, wrapper);
         allLike(InventoryReserve.class, param.keySet(), wrapper, condition);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        wrapper.orderBy("create_time", false);
         return R.ok(inventoryReserveService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/InventoryReserveLogController.java b/src/main/java/com/zy/asrs/controller/InventoryReserveLogController.java
index b68c6d8..6031ef2 100644
--- a/src/main/java/com/zy/asrs/controller/InventoryReserveLogController.java
+++ b/src/main/java/com/zy/asrs/controller/InventoryReserveLogController.java
@@ -43,6 +43,7 @@
         convert(param, wrapper);
         allLike(InventoryReserveLog.class, param.keySet(), wrapper, condition);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        wrapper.orderBy("create_time", false);
         return R.ok(inventoryReserveLogService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java b/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java
index 1b18ad7..4241895 100644
--- a/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java
@@ -9,6 +9,7 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.R;
+import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.OrderDetlPakin;
 import com.zy.asrs.service.OrderDetlPakinService;
 import com.zy.common.web.BaseController;
@@ -27,6 +28,14 @@
     @Autowired
     private OrderDetlPakinService orderDetlService;
 
+    @PostMapping("/orderDetl/list/pda/auth")
+    public R getPdaOrderDetl(@RequestBody Map<String,Object> map) {
+        EntityWrapper<OrderDetlPakin> wrapper = new EntityWrapper<>();
+        wrapper.eq("order_no", map.get("orderNo"));
+        List<OrderDetlPakin> orderDetls = orderDetlService.selectList(wrapper);
+        return R.ok(orderDetls);
+    }
+
     @RequestMapping(value = "/orderDetl/{id}/auth")
     @ManagerAuth
     public R get(@PathVariable("id") String id) {
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakinController.java b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
index 4b61e60..5dc404f 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
@@ -45,6 +45,25 @@
     @Autowired
     private ClientService clientService;
 
+    @RequestMapping(value = "/order/list/pda/page/auth")
+    @ManagerAuth
+    public R pdaPageList(@RequestParam(required = true)Long tagId,
+                         @RequestParam(defaultValue = "1")Integer curr,
+                         @RequestParam(defaultValue = "10")Integer limit){
+        List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1));
+        ArrayList<Integer> arrayList = new ArrayList<>();
+        docTypes.forEach(docType -> {
+            arrayList.add(docType.getDocId().intValue());
+        });
+        EntityWrapper<OrderPakin> wrapper = new EntityWrapper<>();
+//        wrapper.eq("tag_id", tagId);
+        wrapper.in("doc_type", arrayList);
+        wrapper.in("settle",1,2);
+        wrapper.orderBy("create_time", false);
+        Page<OrderPakin> orderPage = orderService.selectPage(new Page<>(curr, limit), wrapper);
+        return R.ok().add(orderPage);
+    }
+
     @RequestMapping(value = "/order/nav/list/auth")
     @ManagerAuth
     public R navList(@RequestParam(required = false) String orderNo) {
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
index 461175e..99b7899 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakoutController.java
@@ -202,18 +202,21 @@
         if (null == client){
             return R.error("瀹㈡埛涓嶅瓨鍦�");
         }
+        order.setCstmr(client.getCode());
+        order.setCstmrName(client.getName());
         // 淇敼涓绘。
         if (!param.getDocType().equals(order.getDocType()) || !param.getOrderTime().equals(order.getOrderTime())) {
-            order.setCstmr(client.getCode());
-            order.setCstmrName(client.getName());
+
             order.setDocType(param.getDocType());
             order.setOrderTime(param.getOrderTime());
-            order.setUpdateBy(userId);
-            order.setUpdateTime(now);
-            if (!orderService.updateById(order)) {
-                throw new CoolException("淇敼璁㈠崟绫诲瀷澶辫触");
-            }
+
         }
+        order.setUpdateBy(userId);
+        order.setUpdateTime(now);
+        if (!orderService.updateById(order)) {
+            throw new CoolException("淇敼璁㈠崟绫诲瀷澶辫触");
+        }
+
         // 淇敼鏄庣粏妗�
 //        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
         // 1.娓呯┖鏄庣粏妗�
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 0c5feea..f729b42 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -17,6 +17,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -46,6 +47,9 @@
 
     @Resource
     private OrderPakoutService orderPakOutService;
+
+    @Autowired
+    private InventoryReserveService inventoryReserveService;
 
 
     @PostMapping("/out/pakout/orderDetlIds/auth")
@@ -122,12 +126,41 @@
             }
         } else {
             for (OrderDetlPakout orderDetl : orderDetlPakouts) {
+
+                List<InventoryReserve> inventoryReserves = inventoryReserveService.selectList(new EntityWrapper<InventoryReserve>()
+                        .eq("matnr", orderDetl.getMatnr())
+                        .eq("batch", orderDetl.getBatch())
+                        //濡傛灉璁㈠崟鍙蜂笉涓虹┖锛屽垯鏌ヨ璁㈠崟鍙蜂笉涓簅rderDetl.getOrderNo()鐨勫簱瀛橀鐣欒褰曪紝鍚﹀垯鏌ヨ鎵�鏈夊簱瀛橀鐣欒褰�
+                        .ne(!Cools.isEmpty(orderDetl.getOrderNo()), "order_no", orderDetl.getOrderNo())
+                        .eq(!Cools.isEmpty(orderDetl.getBrand()), "brand", orderDetl.getBrand())
+                        .eq(!Cools.isEmpty(orderDetl.getStandby1()), "standby1", orderDetl.getStandby1())
+                        .eq(!Cools.isEmpty(orderDetl.getStandby2()), "standby2", orderDetl.getStandby2())
+                        .eq(!Cools.isEmpty(orderDetl.getStandby3()), "standby3", orderDetl.getStandby3())
+                        .eq(!Cools.isEmpty(orderDetl.getBoxType1()), "box_type1", orderDetl.getBoxType1())
+                        .eq(!Cools.isEmpty(orderDetl.getBoxType2()), "box_type2", orderDetl.getBoxType2())
+                        .eq(!Cools.isEmpty(orderDetl.getBoxType3()), "box_type3", orderDetl.getBoxType3())
+
+                );
+                // 濡傛灉搴撳瓨棰勭暀璁板綍涓嶄负绌猴紝浣跨敤steam灏嗗簱瀛橀鐣欒褰曚腑鐨勫簱瀛樻暟閲忓叏閮ㄥ姞璧锋潵,瀛楁涓簈uantity锛岀被鍨嬩负BigDecimal
+                BigDecimal inventoryReserveQuantity = inventoryReserves.stream().map(InventoryReserve::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+                //鑾峰彇搴撳瓨涓殑搴撳瓨鏁伴噺
+                List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist, orderDetl.getMatnr(), orderDetl.getBatch(),
+                        orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
+
+                // 浣跨敤steam灏唋ocDetls涓殑搴撳瓨鏁伴噺鍏ㄩ儴鍔犺捣鏉�,瀛楁涓簈uantity锛孌ouble绫诲瀷
+                BigDecimal locDetlQuantity = locDetls.stream().map(LocDetl::getAnfme).map(BigDecimal::valueOf).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                if (locDetlQuantity.subtract(new BigDecimal(orderDetl.getAnfme())).compareTo(inventoryReserveQuantity) < 0) {
+                    return R.parse("搴撳瓨棰勭暀鏁伴噺澶т簬搴撳瓨鏁伴噺");
+                }
+
+
+
+
                 double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
                 if (issued <= 0.0D) {
                     continue;
                 }
-                List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist, orderDetl.getMatnr(), orderDetl.getBatch(),
-                        orderDetl.getBrand(), orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3());
                 for (LocDetl locDetl : locDetls) {
                     if (issued > 0) {
                         LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
diff --git a/src/main/java/com/zy/asrs/entity/InventoryReserve.java b/src/main/java/com/zy/asrs/entity/InventoryReserve.java
index 8e7072c..0a252a0 100644
--- a/src/main/java/com/zy/asrs/entity/InventoryReserve.java
+++ b/src/main/java/com/zy/asrs/entity/InventoryReserve.java
@@ -7,6 +7,10 @@
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+
+import com.core.common.SpringUtils;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -137,7 +141,7 @@
 //            null    // 鏇存柊浜哄憳
 //    );
 
-    public String getExpiceTime$(){
+    public String getExpireTime$(){
         if (Cools.isEmpty(this.expireTime)){
             return "";
         }
@@ -158,5 +162,29 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
     }
 
+    public String getCreateBy$() {
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.createBy);
+        if (!Cools.isEmpty(user)) {
+            return String.valueOf(user.getUsername());
+        }
+        if (this.createBy == 9527){
+            return "super";
+        }
+        return null;
+    }
+
+    public String getUpdateBy$() {
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)) {
+            return String.valueOf(user.getUsername());
+        }
+        if (this.createBy == 9527){
+            return "super";
+        }
+        return null;
+    }
+
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java b/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java
index 5cceeeb..abe39e4 100644
--- a/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java
+++ b/src/main/java/com/zy/asrs/entity/InventoryReserveLog.java
@@ -7,6 +7,10 @@
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+
+import com.core.common.SpringUtils;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -158,5 +162,29 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
     }
 
+    public String getCreateBy$() {
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.createBy);
+        if (!Cools.isEmpty(user)) {
+            return String.valueOf(user.getUsername());
+        }
+        if (this.createBy == 9527){
+            return "super";
+        }
+        return null;
+    }
+
+    public String getUpdateBy$() {
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)) {
+            return String.valueOf(user.getUsername());
+        }
+        if (this.createBy == 9527){
+            return "super";
+        }
+        return null;
+    }
+
 
 }
diff --git a/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java b/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java
index fb4ec32..c5f93a0 100644
--- a/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java
+++ b/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java
@@ -14,7 +14,7 @@
      */
 //    public static final String URI = "http://192.168.99.130:80";
     // 娴嬭瘯鍦板潃
-    public static final String ERP_IP = "http://127.0.0.1:8080/yhfzwms/open/asrs";
+    public static final String ERP_IP = "http://127.0.0.1:8080/wms/open/asrs";
 
     /**
      * 鍏ュ簱瀹屾垚涓婃姤璺緞
diff --git a/src/main/webapp/static/js/inventoryReserve/inventoryReserve.js b/src/main/webapp/static/js/inventoryReserve/inventoryReserve.js
index 9ddcf97..1d2d852 100644
--- a/src/main/webapp/static/js/inventoryReserve/inventoryReserve.js
+++ b/src/main/webapp/static/js/inventoryReserve/inventoryReserve.js
@@ -29,8 +29,11 @@
             { field: 'orderNo', align: 'center', title: '璁㈠崟鍙�', width: 150 },
             { field: 'batch', align: 'center', title: '鎵规', width: 120 },
             { field: 'quantity', align: 'center', title: '鏁伴噺', width: 100 },
-            { field: 'expiceTime$', align: 'center', title: '杩囨湡鏃堕棿', width: 180 },
-            { field: 'createTime$', align: 'center', title: '鍒涘缓鏃堕棿', width: 180 },
+            { field: 'expireTime$', align: 'center', title: '杩囨湡鏃堕棿', width: 180 },
+            { field: 'createTime$', align: 'center', title: '鍒涘缓鏃堕棿', width: 180 ,hide:true},
+            { field: 'updateTime$', align: 'center', title: '鏇存柊鏃堕棿', width: 180 },
+            { field: 'createBy$', align: 'center', title: '鍒涘缓浜�', width: 100 },
+            { field: 'updateBy$', align: 'center', title: '鏇存柊浜�', width: 100 },
             { fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 150 }
         ]],
         request: {
@@ -107,7 +110,7 @@
 
                 // 娓叉煋鏃ユ湡閫夋嫨鍣�
                 layDate.render({
-                    elem: '#expiceTime',
+                    elem: '#expireTime',
                     type: 'datetime',
                     format: 'yyyy-MM-dd HH:mm:ss'
                 });
diff --git a/src/main/webapp/views/inventoryReserve/inventoryReserve.html b/src/main/webapp/views/inventoryReserve/inventoryReserve.html
index 5a6bd1e..42780c5 100644
--- a/src/main/webapp/views/inventoryReserve/inventoryReserve.html
+++ b/src/main/webapp/views/inventoryReserve/inventoryReserve.html
@@ -121,7 +121,7 @@
         <div class="layui-form-item">
             <label class="layui-form-label">杩囨湡鏃堕棿</label>
             <div class="layui-input-block">
-                <input id="expiceTime" name="expiceTime" placeholder="閫夋嫨杩囨湡鏃堕棿锛堝彲閫夛級" class="layui-input" autocomplete="off">
+                <input id="expireTime" name="expireTime" placeholder="閫夋嫨杩囨湡鏃堕棿锛堝彲閫夛級" class="layui-input" autocomplete="off">
             </div>
         </div>
         <hr class="layui-bg-gray">

--
Gitblit v1.9.1