From 17080b28dc3fb0df12a5a4da76e10dd9203e5725 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 08 十月 2025 11:07:48 +0800
Subject: [PATCH] 订单功能完善

---
 src/main/java/com/zy/asrs/controller/OrderController.java        |   23 +++++++
 src/main/java/com/zy/asrs/service/OrderService.java              |    5 +
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java     |   30 +++++++++
 src/main/java/com/zy/asrs/task/AutoReportingScheduler.java       |    4 
 src/main/resources/mapper/WrkMastMapper.xml                      |    2 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java    |   62 ++++++++++----------
 src/main/java/com/zy/asrs/task/handler/AutoReportingHandler.java |    2 
 src/main/java/com/zy/asrs/controller/MatController.java          |   11 +++
 src/main/java/com/zy/asrs/controller/MobileController.java       |    4 
 src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java    |    8 ++
 10 files changed, 111 insertions(+), 40 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index 53e9135..00b8948 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -13,7 +13,6 @@
 import com.zy.asrs.entity.Mat;
 import com.zy.asrs.entity.MatPrint;
 import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.entity.result.KeyValueVo;
 import com.zy.asrs.service.MatService;
 import com.zy.asrs.utils.MatExcelListener;
@@ -48,6 +47,16 @@
         return R.ok().add("YJ" + DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss).substring(0, 16));
     }
 
+    @RequestMapping(value = "/mat/list/pda/page/auth")
+    @ManagerAuth
+    public R pdaListPage(@RequestParam Long tagId, @RequestParam Long curr){
+        EntityWrapper<Mat> wrapper = new EntityWrapper<>();
+        wrapper.eq("tag_id", tagId);
+        wrapper.orderBy("create_time", false);
+        List<Mat> mats = matService.selectList(wrapper);
+        return R.ok().add(mats);
+    }
+
     @RequestMapping(value = "/mat/list/pda/auth")
     @ManagerAuth
     public R pdaList(@RequestParam(required = true)Long tagId){
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 84f7452..e1c309e 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -107,7 +107,7 @@
             } else {
                 //鏌ョ湅搴撲綅鏄庣粏涓湁鐨勭墿鏂�
                 List<ManLocDetl> locDetls = manLocDetlMapper.selectList(new EntityWrapper<ManLocDetl>()
-                        .eq("matnr", o.getMatnr()).eq("batch",o.getBatch())
+                        .eq("matnr", o.getMatnr()).orderBy("modi_time",false)
                 );
                 if (Cools.isEmpty(locDetls)) {
                     continue;
@@ -149,7 +149,7 @@
             }
             for (ManLocDetl l : locDetls
             ) {
-                if (o.getMatnr().equals(l.getMatnr()) && o.getBatch().equals(l.getBatch())) {
+                if (o.getMatnr().equals(l.getMatnr())) {
                     if (o.getAnfme() - o.getWorkQty() >= l.getAnfme()) {
 
                     } else {
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index 695f9c8..4f3a8cc 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -19,6 +19,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 @RestController
@@ -43,6 +44,28 @@
     @Autowired
     private WrkMastLogService wrkMastLogService;
 
+    @RequestMapping(value = "/order/comb/list/all")
+    @ManagerAuth
+    public R orderListComb() {
+        return R.ok(orderService.selectAllCombOrderNo());
+    }
+
+    @RequestMapping(value = "/order/list/orderNo")
+    public R orderListorderNo(@RequestParam String orderNo) {
+        //鏁伴噺淇敼鎴愪负瀹屾垚鏁伴噺
+        List<OrderDetl> orderDetl1 = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
+        List<OrderDetl> orderDetls= new ArrayList<>();
+        for (OrderDetl o: orderDetl1) {
+            BigDecimal c1 = new BigDecimal(o.getEnableQty()).setScale(2,BigDecimal.ROUND_HALF_UP);
+            o.setAnfme(c1.doubleValue());
+            if (o.getAnfme().equals(0.0)){
+                continue;
+            }
+            orderDetls.add(o);
+        }
+        return R.ok(orderDetls);
+    }
+
     @RequestMapping(value = "/order/nav/list/auth")
     @ManagerAuth
     public R navList(@RequestParam(required = false) String orderNo){
diff --git a/src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java b/src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java
new file mode 100644
index 0000000..38028c1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/OrderNameListDto.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+
+@Data
+public class OrderNameListDto {
+    private String order_no;
+}
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 1711cc9..848dadd 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -1,15 +1,18 @@
 package com.zy.asrs.service;
 
-import com.zy.asrs.entity.Order;
 import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.result.OrderNameListDto;
 
 import java.util.List;
 
 public interface OrderService extends IService<Order> {
 
+    List<OrderNameListDto> selectAllCombOrderNo();
+
     Order selectByNo(String orderNo);
 
     List<OrderDetl> selectWorkingDetls(Long orderId);
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index e4c1241..71e8bfb 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -29,10 +29,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
@@ -223,23 +220,24 @@
             SaasUtils.insertLog(0, locNo, waitPakin.getMatnr(), waitPakin.getAnfme(), userId,waitPakin.getBatch());
 
             //鏄惁灞炰簬璁㈠崟鏁版嵁
-//            if (!Cools.isEmpty(waitPakin.getOrderNo())){
-//                Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId);
-//                if (Cools.isEmpty(order)){
-//                    continue;
-//                }
-//                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(),hostId);
-//                if (Cools.isEmpty(orderDetl)){
-//                    continue;
-//                }
-//                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
-//                if (!orderDetlService.increase(order.getId(), hostId, waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
-//                    throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
-//                }
-//                // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
-//                orderService.checkComplete(waitPakin.getOrderNo(), hostId);
-//
-//            }
+            //鏄惁灞炰簬璁㈠崟鏁版嵁
+            if (!Cools.isEmpty(waitPakin.getOrderNo())){
+                Order order = orderService.selectByNo(waitPakin.getOrderNo());
+                if (Cools.isEmpty(order)){
+                    throw new CoolException("骞冲簱涓婃灦鏌ヨ璁㈠崟澶辫触");
+                }
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch());
+                if (Cools.isEmpty(orderDetl)){
+                    throw new CoolException("骞冲簱涓婃灦鏌ヨ璁㈠崟鏄庣粏澶辫触");
+                }
+                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+                if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
+                    throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+                }
+                // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+                orderService.checkComplete(waitPakin.getOrderNo());
+
+            }
 
             // 鏇存柊鍏ュ簱宸ヤ綔妗�
             waitPakin.setLocNo(locNo);
@@ -294,7 +292,7 @@
         Date now = new Date();
 
         // 鏃犲崟缁勬墭
-        if (Cools.isEmpty(param.getOrderNo())) {
+        if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) {
 
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
@@ -332,22 +330,22 @@
             }
         // 鍏宠仈缁勬墭
         } else {
-            Order order = orderService.selectByNo(param.getOrderNo());
-            if (Cools.isEmpty(order) || order.getSettle() > 2) {
-                throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
-            }
+
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
-
+                Order order = orderService.selectByNo(elem.getOrderNo());
+                if (order.getSettle() > 2) {
+                    throw new CoolException("鍗曟嵁缂栧彿宸插畬鎴愶細" + elem.getOrderNo());
+                }
                 // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
                 OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
                 if (elem.getAnfme() > orderDetl.getEnableQty()) {
                     throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
                 }
-                // 淇敼璁㈠崟浣滀笟鏁伴噺
+                // 淇敼璁㈠崟鏄庣粏鏁伴噺
                 if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
-                    throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+                    throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
                 }
 
                 DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
@@ -356,6 +354,7 @@
                     assert one != null;
                     one.setAnfme(one.getAnfme() + detlDto.getAnfme());
                 } else {
+                    detlDto.setOrderNo(order.getOrderNo());
                     detlDtos.add(detlDto);
                 }
             });
@@ -364,6 +363,9 @@
                 if (Cools.isEmpty(mat)) {
                     throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
                 }
+
+                Order order = orderService.selectByNo(detlDto.getOrderNo());
+
                 WaitPakin waitPakin = new WaitPakin();
                 waitPakin.sync(mat);
                 waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
@@ -379,8 +381,8 @@
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
+                orderService.updateSettle(order.getId(), 2L, userId);
             }
-            orderService.updateSettle(order.getId(), 2L, userId);
         }
 
     }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index e5ac684..e18d9aa 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SnowflakeIdWorker;
@@ -8,10 +9,10 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.OpenOrderPakinParam;
 import com.zy.asrs.entity.param.OpenOrderPakoutParam;
+import com.zy.asrs.entity.result.OrderNameListDto;
 import com.zy.asrs.mapper.OrderDetlMapper;
 import com.zy.asrs.mapper.OrderMapper;
 import com.zy.asrs.service.*;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.zy.common.model.DetlDto;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +38,31 @@
     private DocTypeService docTypeService;
     @Autowired
     private WrkDetlService wrkDetlService;
+
+    @Override
+    public List<OrderNameListDto> selectAllCombOrderNo() {
+        List<Order> list = this.selectList(new EntityWrapper<Order>().orderBy("create_time",false));
+        if (Cools.isEmpty(list)){
+            return null;
+        }
+        ArrayList<OrderNameListDto> orderNameListDtos = new ArrayList<>();
+        for (Order order :list){
+            DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_id", order.getDocType()));
+
+            if (order.getSettle() >= 4) {
+                continue;
+            }
+
+            if (docType.getPakin() == 1){
+                OrderNameListDto orderNameListDto = new OrderNameListDto();
+                orderNameListDto.setOrder_no(order.getOrderNo());
+                orderNameListDtos.add(orderNameListDto);
+            }
+        }
+
+        return orderNameListDtos;
+
+    }
 
     @Override
     public Order selectByNo(String orderNo) {
@@ -74,7 +100,7 @@
         //褰撹璁㈠崟鏄庣粏鏁伴噺==瀹屾垚鏁伴噺涓�>涓婃姤鏁伴噺锛屼笂鎶ョ姸鎬佷负 鍚� 鎴栬�� 鏄� 鏃堕兘鏀规垚绛夊緟涓婃姤锛屽畾鏃跺櫒杞绛夊緟涓婃姤杩涜涓婃姤
         for (OrderDetl orderDetl : orderDetls) {
             if (Objects.equals(orderDetl.getAnfme(), orderDetl.getQty())&&
-                    orderDetl.getQty()>orderDetl.getUnits()
+                    orderDetl.getQty()>(orderDetl.getUnits() == null ? 0 : orderDetl.getUnits())
                     &&orderDetl.getInspect()<2) {
 
                     orderDetl.setInspect(2);//绛夊緟涓婃姤
diff --git a/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java b/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java
index a456eac..a2a7415 100644
--- a/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AutoReportingScheduler.java
@@ -27,8 +27,8 @@
     @Resource
     private AutoReportingHandler autoReportingHandler;
 
-    @Scheduled(cron = "0 0/10 * * * ? ")
-//    @Scheduled(cron = "0/3 * * * * ? ")
+//    @Scheduled(cron = "0 0/10 * * * ? ")
+    @Scheduled(cron = "0/3 * * * * ? ")
     void execute() {
         List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("inspect", 2));
         if (Cools.isEmpty(orderDetls)) {
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoReportingHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoReportingHandler.java
index b4f80d8..f9e7cd0 100644
--- a/src/main/java/com/zy/asrs/task/handler/AutoReportingHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AutoReportingHandler.java
@@ -110,7 +110,7 @@
                     .setJson(JSON.toJSONString(orderRsult))
                     .build()
                     .doPost();
-            log.info("璁㈠崟鏄庣粏瀹屾垚涓婃姤u8鍘熷杩斿洖锛歿}", response);
+            log.info("orderNo:{},matnr:{},qty:{}璁㈠崟鏄庣粏瀹屾垚涓婃姤u8鍘熷杩斿洖锛歿}",orderNo ,orderDetl.getMatnr() ,qty , response);
             JSONObject jsonObject = JSON.parseObject(response);
 
             if (jsonObject.getInteger("code").equals(200)) {
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index cc284f3..97de812 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -70,7 +70,7 @@
         select * from asr_wrk_mast
         where wrk_sts=5
         or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
-        or (wrk_sts=15 and dateadd(mi,3,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
+        or (wrk_sts=15 and dateadd(mi,1,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
         order by io_time,wrk_no asc
     </select>

--
Gitblit v1.9.1