From 3ab88d048c8842a957e1a4966386bf8306dad484 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 09 四月 2026 20:45:11 +0800
Subject: [PATCH] 1.wms获取wcs设备堆垛机列和层

---
 src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java |   72 +++++++++++++++++++++++++-----------
 1 files changed, 50 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
index 6f2db40..a0a1f08 100644
--- a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
@@ -252,33 +252,53 @@
 
         List<DtLocVo> locVos = new ArrayList<>();
 
-        if (startDate == null || endDate == null || startDate.isEmpty() || endDate.isEmpty()){
+        Date startTime;
+        Date endTime;
+        if (startDate == null || endDate == null || startDate.isEmpty() || endDate.isEmpty()) {
             Date now = new Date();
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(now);
             calendar.add(Calendar.DAY_OF_MONTH, -7);
-            Date start = calendar.getTime();
-
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-            endDate = sdf.format(now);
-            startDate = sdf.format(start);
-        }
-        List<LocCount> locCounts;
-        if (areaId != null && !areaId.isEmpty()) {
-            locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
+            startTime = calendar.getTime();
+            endTime = now;
         } else {
-            locCounts = locCountMapper.getByDate(Integer.parseInt(startDate), Integer.parseInt(endDate));
+            SimpleDateFormat sdf;
+            try {
+                if (startDate.length() == 8 && endDate.length() == 8) {
+                    sdf = new SimpleDateFormat("yyyyMMdd");
+                    startTime = sdf.parse(startDate);
+                    endTime = sdf.parse(endDate);
+                } else {
+                    sdf = new SimpleDateFormat("yyyy-MM-dd");
+                    startTime = sdf.parse(startDate);
+                    endTime = sdf.parse(endDate);
+                }
+            } catch (ParseException e) {
+                Date now = new Date();
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(now);
+                calendar.add(Calendar.DAY_OF_MONTH, -7);
+                startTime = calendar.getTime();
+                endTime = now;
+            }
         }
 
+        int totalLoc = locMastMapper.selectCount(new EntityWrapper<LocMast>().ne("loc_sts", "Z"));
+        int usedLoc = locMastMapper.selectCount(new EntityWrapper<LocMast>().in("loc_sts", Arrays.asList("F", "P", "Q", "R", "S", "X")));
+        int idleNum = totalLoc - usedLoc;
 
-        for (LocCount locCount : locCounts) {
-            String date = locCount.getDate().toString();
-            String locDate = date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8);
+        SimpleDateFormat outSdf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar cursor = Calendar.getInstance();
+        cursor.setTime(startTime);
+        Calendar endCursor = Calendar.getInstance();
+        endCursor.setTime(endTime);
+        while (!cursor.after(endCursor)) {
             DtLocVo dtLocVo = DtLocVo.builder()
-                    .locDate(locDate)
-                    .idleNum(locCount.getRemainNum())
+                    .locDate(outSdf.format(cursor.getTime()))
+                    .idleNum(idleNum)
                     .build();
             locVos.add(dtLocVo);
+            cursor.add(Calendar.DAY_OF_MONTH, 1);
         }
 
         return locVos;
@@ -321,12 +341,20 @@
             vo.setCrnNo(crnp.getCrnNo());
             Integer wrkNo = crnp.getWrkNo();
             vo.setTaskNo(wrkNo == null ? null : String.valueOf(wrkNo));
-            String locNo = !Cools.isEmpty(crnp.getToLocno()) ? crnp.getToLocno() : crnp.getFrmLocno();
-            if (!Cools.isEmpty(locNo)) {
-                LocMast locMast = locMastService.selectById(locNo);
-                if (locMast != null) {
-                    vo.setBay1(locMast.getBay1());
-                    vo.setLev1(locMast.getLev1());
+            vo.setBay1(crnp.getBay());
+            vo.setLev1(crnp.getLevel());
+            if (vo.getBay1() == null || vo.getLev1() == null) {
+                String locNo = !Cools.isEmpty(crnp.getToLocno()) ? crnp.getToLocno() : crnp.getFrmLocno();
+                if (!Cools.isEmpty(locNo)) {
+                    LocMast locMast = locMastService.selectById(locNo);
+                    if (locMast != null) {
+                        if (vo.getBay1() == null) {
+                            vo.setBay1(locMast.getBay1());
+                        }
+                        if (vo.getLev1() == null) {
+                            vo.setLev1(locMast.getLev1());
+                        }
+                    }
                 }
             }
             vo.setVerticalSpeed(parseInteger(crnp.getCtlHp()));

--
Gitblit v1.9.1