From 74863c38a407b1e0f36250dfa0c63e5da7fe5f66 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 19 一月 2026 18:06:51 +0800
Subject: [PATCH] WMS功能完善

---
 src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java |  187 ++++++++++++++++++++++++++++++----------------
 1 files changed, 123 insertions(+), 64 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 0a14629..48197f3 100644
--- a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.R;
+import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.entity.LocCount;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.LocMast;
@@ -10,12 +11,16 @@
 import com.zy.asrs.entity.mes.StockDetl;
 import com.zy.asrs.mapper.DigitalTwinMapper;
 import com.zy.asrs.mapper.LocCountMapper;
+import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.DigitalTwinService;
 import com.zy.asrs.service.LocDetlService;
 import com.zy.asrs.service.LocMastService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -63,24 +68,32 @@
      */
     public List<DtOrderVo> order(String startDate, String endDate) {
 
-        String startTime;
-        String endTime;
+        Date startTime = new Date();
+        Date endTime = new Date();
         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();
+            startTime = calendar.getTime();
+            endTime = now;
 
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-            endDate = sdf.format(now);
-            startDate = sdf.format(start);
+        } else {
+            SimpleDateFormat sdf =
+                    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+            try {
+                startTime  = sdf.parse(startDate);
+                endTime = sdf.parse(endDate);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
         }
-        startTime = startDate.substring(0, 4) + "-" + startDate.substring(4, 6) + "-" + startDate.substring(6, 8) + "00:00:00";
-        endTime = endDate.substring(0, 4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8) + "00:00:00";
         List<DtOrderVo> dbOrder = digitalTwinMapper.recentOrder(startTime, endTime);
         // 绌烘棩鏈熻ˉ鍏�
-
+        for (DtOrderVo dtOrderVo : dbOrder) {
+            dtOrderVo.setOrderDate(dtOrderVo.getOrderDate());
+        }
 
         return dbOrder;
     }
@@ -95,27 +108,34 @@
      */
     public List<DtInAndOutBoundVo> inAndOutBound(String areaId, String startDate, String endDate) {
 
-        List<DtInAndOutBoundVo> dtInAndOutBoundVos = new ArrayList<>();
-
-        String startTime;
-        String endTime;
+        Date startTime = new Date();
+        Date endTime = new Date();
         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();
+            startTime = calendar.getTime();
+            endTime = now;
 
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-            endDate = sdf.format(now);
-            startDate = sdf.format(start);
+        } else {
+            SimpleDateFormat sdf =
+                    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+            try {
+                startTime  = sdf.parse(startDate);
+                endTime = sdf.parse(endDate);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
         }
-        startTime = startDate.substring(0, 4) + "-" + startDate.substring(4, 6) + "-" + startDate.substring(6, 8) + "00:00:00";
-        endTime = endDate.substring(0, 4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8) + "00:00:00";
+
         List<DtInAndOutBoundVo> dtInBoundVos = digitalTwinMapper.recentInBound(areaId, startTime, endTime);
         List<DtInAndOutBoundVo> dtOutBoundVos = digitalTwinMapper.recentOutBound(areaId, startTime, endTime);
 
         // 鏍煎紡鏁寸悊
+        List<DtInAndOutBoundVo> dtInAndOutBoundVos = new ArrayList<>(dtInBoundVos);
+        dtInAndOutBoundVos.addAll(dtOutBoundVos);
 
         return dtInAndOutBoundVos;
     }
@@ -140,12 +160,10 @@
         calendar.setTime(now);
         calendar.add(Calendar.DAY_OF_MONTH, -overDayNum);
         Date start = calendar.getTime();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String startTime = sdf.format(start);
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//        Date startTime = sdf.parse(start);
 
-        List<DtDetainMatVo> dbDetainMats = digitalTwinMapper.recentDetainMat(areaId, startTime, pageIndex, pageSize);
-
-        return dbDetainMats;
+        return digitalTwinMapper.recentDetainMat(areaId, start, pageIndex, pageSize);
     }
 
     @Resource
@@ -160,36 +178,73 @@
      * @param areaId
      * @return
      */
+    public List<DtLocDetailVo> warehouseDetail2(String areaId) {
+        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<>());
+        return locMastList.stream()
+                .map(loc -> {
+                    DtLocDetailVo vo = new DtLocDetailVo();
+                    BeanUtils.copyProperties(loc, vo);
+                    return vo;
+                })
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 鏌ヨ搴撳瓨鍜屽簱浣嶈缁嗕俊鎭�
+     *
+     * @param areaId
+     * @return
+     */
     public R warehouseDetail(String areaId) {
-        List<LocDetl> locDetls;
-        locDetls = locDetlService.selectList(new EntityWrapper<>());
+        List<DtLocDetailVo> locDetailVos = new ArrayList<>();
 
-        List<String> locNoList = locDetls.stream().map(LocDetl::getLocNo).distinct().collect(Collectors.toList());
-        List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
-        for (String locNo: locNoList) {
-
-            LocMast locMast = locMastService.selectById(locNo);
+        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","F"));
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<>());
+        for (LocMast locMast : locMasts) {
             DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
-            dtLocDetailVo.setLocNo(locNo);
+            dtLocDetailVo.setLocMast(locMast);
+            dtLocDetailVo.setLocNo(locMast.getLocNo());
             dtLocDetailVo.setLocSts(locMast.getLocSts());
             dtLocDetailVo.setRow1(locMast.getRow1());
             dtLocDetailVo.setBay1(locMast.getBay1());
             dtLocDetailVo.setLev1(locMast.getLev1());
-
-            List<LocDetl> locDetlList2 = locDetls.parallelStream().filter(o-> o.getLocNo().equals(locNo)).collect(Collectors.toList());
-            List<StockDetl> stockDetls = new ArrayList<>();
-            for(LocDetl locDetl:locDetlList2) {
-                StockDetl stockDetl = new StockDetl();
-                stockDetl.setMatnr(locDetl.getMatnr());
-                stockDetl.setMaktx(locDetl.getMaktx());
-                stockDetl.setAnfme(locDetl.getAnfme());
-                stockDetls.add(stockDetl);
+            for (LocDetl locDetl : locDetls) {
+                List<LocDetl> locDetl1 = locDetls.parallelStream().filter(a -> a.getLocNo().equals(locDetl.getLocNo())).collect(Collectors.toList());
+                if (locDetl1.size() == 1) {
+                    dtLocDetailVo.setLocDetl(locDetl1.get(0));
+//                    dtLocDetailVo.setAreaId(locDetl.getAreaId());
+//                    dtLocDetailVo.setAreaName(locDetl.getAreaName());
+                }
             }
-            dtLocDetailVo.setLocDetl(stockDetls);
-            dtLocDetailVoList.add(dtLocDetailVo);
+            locDetailVos.add(dtLocDetailVo);
         }
 
-        return R.ok(dtLocDetailVoList);
+        return R.ok(locDetailVos);
+//        List<DtLocDetailVo> locDetailVos = new ArrayList<>();
+//
+//        List<LocMast> locMasts = new ArrayList<>();
+//        List<LocDetl> locDetls = new ArrayList<>();
+//
+//        for (LocMast locMast : locMasts) {
+//            DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
+//            dtLocDetailVo.setLocMast(locMast);
+//            dtLocDetailVo.setLocNo(locMast.getLocNo());
+//            dtLocDetailVo.setLocSts(locMast.getLocSts());
+//            dtLocDetailVo.setRow1(locMast.getRow1());
+//            dtLocDetailVo.setBay1(locMast.getBay1());
+//            dtLocDetailVo.setLev1(locMast.getLev1());
+//            for (LocDetl locDetl : locDetls) {
+//                List<LocDetl> locDetl1 = locDetls.parallelStream().filter(a -> a.getLocNo().equals(locDetl.getLocNo())).collect(Collectors.toList());
+//                if (locDetl1 != null && locDetl1.size() == 1) {
+//                    dtLocDetailVo.setLocDetl(locDetl1.get(0));
+//                    dtLocDetailVo.setAreaId(locDetl.getAreaId());
+//                    dtLocDetailVo.setAreaName(locDetl.getAreaName());
+//                }
+//            }
+//            locDetailVos.add(dtLocDetailVo);
+//        }
+//
+//        return locDetailVos;
     }
 
     /**
@@ -217,11 +272,11 @@
         }
 
         List<LocCount> locCounts;
-        if(areaId.isEmpty()){
+//        if(areaId.isEmpty()){
             locCounts = locCountMapper.getByDate(Integer.parseInt(startDate), Integer.parseInt(endDate));
-        } else {
-            locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
-        }
+//        } else {
+//            locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
+//        }
 
         for (LocCount locCount : locCounts) {
             String date = locCount.getDate().toString();
@@ -240,30 +295,34 @@
      * 瀹氭湡缁熻鍓╀綑搴撳瓨
      *
      */
+    @Transactional
     public void locNumCount() {
 
-        List<LocCount> result = new ArrayList<>();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
         String date = sdf.format(new Date());
 
         List<LocCount> totalLoc = locCountMapper.totalLoc();
         List<LocCount> useLoc = locCountMapper.useLoc();
-        for (LocCount locCount : totalLoc) {
-            LocCount locCount1 = new LocCount();
-            locCount1.setDate(Integer.valueOf(date));
-            locCount1.setAreaId(locCount.getAreaId());
-            locCount1.setLocNum(locCount1.getLocNum());
-            for (LocCount locCount2 : useLoc) {
-                if(locCount1.getAreaId().equals(locCount2.getAreaId())){
-                    locCount1.setRemainNum(locCount1.getLocNum() - locCount2.getLocNum());
-                }
-            }
-            result.add(locCount1);
-        }
 
-        for (LocCount locCount  : result) {
-            locCountMapper.insertOrUpdate(locCount);
-        }
+        LocCount locCount1 = new LocCount();
+        locCount1.setDate(Integer.valueOf(date));
+        locCount1.setLocNum(totalLoc.get(0).getLocNum());
+        locCount1.setRemainNum(locCount1.getLocNum() - useLoc.get(0).getLocNum());
+
+        locCountMapper.insertOrUpdate(locCount1);
+    }
+
+    @Resource
+    private BasCrnpService basCrnpService;
+
+    @Override
+    public DtEquipmentVo equipment(String areaId) {
+        return new DtEquipmentVo();
+//        BasCrnp crnp = basCrnpService.selectOne(new EntityWrapper<>());
+//        return DtEquipmentVo.builder()
+//                .equipmentId("1").equipmentName("鍫嗗灈鏈�1").equipmentType(1)
+//                .belongAreaId("A").belongAreaName("鍔犲伐搴�").verticalSpeed(Integer.valueOf(crnp.getCtlHp()))
+//                .horizontalSpeed(Integer.valueOf(crnp.getCtlRest())).voltage(220).status(crnp.getCrnErr() == 0 ? 1 : 3).operateMethod(crnp.getCrnSts() == 3 ? 1 : 3).build();
     }
 
 

--
Gitblit v1.9.1