From c289447144f4599fe2e13d342c28a3c4d49f750f Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期二, 25 十一月 2025 20:06:54 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java  |   38 ++
 src/main/java/com/zy/asrs/controller/RgvController.java              |  296 +++++++++++++++++---
 src/main/java/com/zy/asrs/domain/param/EnergyGatheringRingParam.java |   11 
 src/main/java/com/zy/asrs/utils/Utils.java                           |  144 ++++++++++
 src/main/java/com/zy/asrs/domain/param/RingThroughParam.java         |    2 
 src/main/java/com/zy/asrs/controller/CrnController.java              |   86 +++++
 src/main/java/com/zy/asrs/domain/vo/CrnListVo.java                   |  170 ++++++++++++
 src/main/java/com/zy/asrs/domain/param/RgvWrkMastParam.java          |   46 +++
 src/main/java/com/zy/core/thread/SiemensDevpThread.java              |    1 
 9 files changed, 735 insertions(+), 59 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java
index e4fcfca..1f63686 100644
--- a/src/main/java/com/zy/asrs/controller/CrnController.java
+++ b/src/main/java/com/zy/asrs/controller/CrnController.java
@@ -10,12 +10,10 @@
 import com.zy.asrs.domain.param.CrnDemoParam;
 import com.zy.asrs.domain.param.CrnOperatorParam;
 import com.zy.asrs.domain.vo.CommandLogVo;
+import com.zy.asrs.domain.vo.CrnListVo;
 import com.zy.asrs.domain.vo.CrnMsgTableVo;
 import com.zy.asrs.domain.vo.CrnStateTableVo;
-import com.zy.asrs.entity.BasCrnError;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.BasCrnErrorMapper;
 import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.LocMastService;
@@ -524,5 +522,85 @@
         return false;
     }
 
+    @GetMapping("/crn/list/auth")
+    @ManagerAuth(memo = "鍫嗗灈鏈烘暟鎹〃")
+    public R crnList(){
+        List<CrnListVo> list = new ArrayList<>();
+        List<BasCrnp> crnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().orderBy("crn_no"));
+        for (BasCrnp basCrnp : crnps) {
+            // 琛ㄦ牸琛�
+            CrnListVo vo = new CrnListVo();
+            vo.setCrnNo(basCrnp.getCrnNo());   //  鍫嗗灈鏈哄彿
+            list.add(vo);
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo());
+            if (crnThread == null) {
+                continue;
+            }
+            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+            if (crnProtocol == null) {
+                continue;
+            }
+
+            vo.setWorkNo(crnProtocol.getTaskNo());  //  浠诲姟鍙�
+            if (crnProtocol.getTaskNo()>0) {
+                WrkMast wrkMast = wrkMastService.selectByWrkNo(crnProtocol.getTaskNo().intValue());
+//                WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
+                if (wrkMast != null) {
+                    vo.setDeviceStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc());   //  妯″紡鐘舵��
+                    vo.setSourceStaNo(wrkMast.getLocNo());    //  婧愮珯
+                    vo.setStaNo(wrkMast.getStaNo().toString());   //  鐩爣绔�
+//                    vo.setSourceLocNo(taskWrk.getTargetPoint());    //  婧愬簱浣�
+//                    vo.setLocNo(taskWrk.getLocNo());    //  鐩爣搴撲綅
+                }
+            } else {
+                if (Cools.isEmpty(crnProtocol.modeType)){
+                    vo.setDeviceStatus(CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  妯″紡鐘舵��
+                } else {
+                    vo.setDeviceStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  妯″紡鐘舵��
+                }
+            }
+            vo.setLaneNo(crnProtocol.getCrnNo());  //
+            vo.setErrorCrn("-");  //
+            vo.setXspeed(crnProtocol.getXSpeed());  //  璧拌閫熷害锛坢/min)
+            vo.setYspeed(crnProtocol.getYSpeed());  //  鍗囬檷閫熷害锛坢/min)
+            vo.setZspeed(crnProtocol.getZSpeed());  //  鍙夌墮閫熷害锛坢/min)
+            vo.setXdistance(crnProtocol.getXDistance());  //  璧拌璺濈(Km)
+            vo.setYdistance(crnProtocol.getYDistance());  //  鍗囬檷璺濈(Km)
+            vo.setXduration(crnProtocol.getXDuration());    //  璧拌鏃堕暱(H)
+            vo.setYduration(crnProtocol.getYDuration());    //  鍗囬檷鏃堕暱(H)
+            if (Cools.isEmpty(crnProtocol.modeType)){
+                vo.setStatusType(CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  妯″紡鐘舵��
+            } else {
+                vo.setStatusType(crnProtocol.modeType.desc);   //  妯″紡鐘舵��
+            }
+            vo.setWrkStatus(crnProtocol.getStatusType().id);     //  浠诲姟鐘舵��
+            vo.setLoading((crnProtocol.getLoaded() != null && crnProtocol.getLoaded() == 1) ? "鏈夌墿" : "鏃犵墿");  //  鏈夌墿
+            vo.setBay(crnProtocol.getBay());    //  鍒�
+            vo.setLev(crnProtocol.getLevel());  //  灞�
+
+            vo.setForkOffset(crnProtocol.getForkPosType().desc);    // 璐у弶浣嶇疆
+            vo.setLiftPos(crnProtocol.getLiftPosType().desc);
+            vo.setWalkPos(crnProtocol.getWalkPos()==1?"涓嶅湪瀹氫綅":"鍦ㄥ畾浣�");
+            vo.setWarnCode(String.valueOf(crnProtocol.getAlarm()));
+            if (crnProtocol.getAlarm() > 0) {
+                BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
+                vo.setAlarm(crnError==null?"鏈煡寮傚父":crnError.getErrName());
+            }
+            vo.setInEnable(basCrnp.getInEnable());
+            vo.setOutEnable(basCrnp.getOutEnable());
+            vo.setHpMk(basCrnp.getHpMk());
+//            vo.setTaskComplete(crnThread.getResetFlag()? "浠诲姟瀹屾垚涓嬪彂绛夊緟":"-");
+            vo.setTaskComplete("-");
+            vo.setDemo(SystemProperties.WCS_RUNNING_STATUS_DEMO.get()? "寮�鍚�":"鍏抽棴");
+            vo.setDemoValue(SystemProperties.WCS_RUNNING_STATUS_DEMO_VALUE);
+            if (vo.getHpMk().equals("N")){
+                vo.setDemo("鏈紑鍚�");
+                vo.setDemoValue(0);
+            }
+        }
+        return R.ok().add(list);
+    }
+
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
index 1b5aa62..1f11a90 100644
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ b/src/main/java/com/zy/asrs/controller/RgvController.java
@@ -4,24 +4,31 @@
 import com.core.annotations.ManagerAuth;
 import com.core.common.Cools;
 import com.core.common.R;
+import com.zy.asrs.domain.param.EnergyGatheringRingParam;
+import com.zy.asrs.domain.param.RgvCircularShuttleParam;
+import com.zy.asrs.domain.param.RgvWrkMastParam;
 import com.zy.asrs.domain.param.RingThroughParam;
-import com.zy.asrs.entity.BasDevpPosition;
-import com.zy.asrs.service.BasDevpPositionService;
-import com.zy.core.cache.RgvErrCache;
-import com.zy.core.cache.RgvStatusCache;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.cache.TaskProtocolCache;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.mapper.BasRgvErrMapper;
+import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.MainServiceImpl;
+import com.zy.asrs.utils.Utils;
+import com.zy.core.cache.*;
+import com.zy.core.enums.RgvModeType;
 import com.zy.core.enums.SlaveType;
+import com.zy.core.model.DevpSlave;
+import com.zy.core.model.RgvSlave;
 import com.zy.core.model.protocol.RgvProtocol;
+import com.zy.core.model.protocol.RgvTaskProtocol;
 import com.zy.core.model.protocol.TaskProtocol;
+import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.RgvThread;
+import com.zy.core.thread.SiemensDevpThread;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -35,6 +42,24 @@
     @Autowired
     private BasDevpPositionService basDevpPositionService;
 
+    @Autowired
+    private SlaveProperties slaveProperties;
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private BasRgvErrMapper basRgvErrMapper;
+    @Autowired
+    private BasRgvOptService basRgvOptService;
+    @Autowired
+    private BasRgvService basRgvService;
+    @Autowired
+    private BasDevpService basDevpService;
+    @Autowired
+    private MainServiceImpl mainService;
+
+
+    @Value("${constant-parameters.trackEntireLength}")
+    private Long trackEntireLength;
     @GetMapping("/status/all")
 //    @ManagerAuth(memo = "鍏ㄩ儴淇℃伅")
     public R allStatus(){
@@ -342,28 +367,37 @@
         return R.ok("浠诲姟鐢熸垚鎴愬姛");
     }
 
-
-
     @PostMapping("/ring/through/rgv/position/data")
-//    @ManagerAuth(memo = "灏忚溅浣嶇疆淇℃伅")
+//    @ManagerAuth(memo = "鐜┛浣嶇疆淇℃伅")
     public R ringThroughRgv(){
         List<RingThroughParam> result = new ArrayList<>();
-
-        ConcurrentHashMap<Integer, RgvProtocol> allRgvStatus = RgvStatusCache.getAllRgvStatus();
-        for (RgvProtocol rgvProtocol : allRgvStatus.values()){
+        for (RgvSlave rgv : slaveProperties.getRgv()) {
+//        for (int i = 1;i<2;i++) {
+//            // 鑾峰彇RGV淇℃伅
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+            if (rgvThread == null) {
+                continue;
+            }
+            RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgv.getId());
+            RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(rgv.getId());
+            if (rgvTaskProtocol == null) {
+                continue;
+            }
             RingThroughParam ringThroughParam = new RingThroughParam();
 
-            ringThroughParam.setIndex(rgvProtocol.getRgvNo());
+            ringThroughParam.setIndex(rgv.getId());
 //            ringThroughParam.setIndex(i);
 //            double[] doubles = Utils.RingThroughXY2(perimeter, NumUtils.GetRandomIntInRange(183));
 //            double[] doubles = Utils.RingThroughXYRgv(perimeter, perimeter-rgvProtocol.RgvPos.doubleValue());
-//            double[] doubles = Utils.getRgvPosNew(perimeter, rgvProtocol.RgvPos.doubleValue());
-//            double[] doubles = Utils.RingThroughXY2(183.0, 100*i );
+            double[] doubles = Utils.getRgvPosNew(trackEntireLength, rgvProtocol.RgvPos.doubleValue());
 
-            ringThroughParam.setValueX(rgvProtocol.getRgvNo()*100*1D);
-            ringThroughParam.setValueY(rgvProtocol.getRgvNo()*100*2D);
+            ringThroughParam.setValueX(doubles[0]);
+            ringThroughParam.setValueY(doubles[1]);
             ringThroughParam.setModeColor(rgvProtocol.modeType.color);
             ringThroughParam.setStatusColor(rgvProtocol.statusType.color);
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO){
+                ringThroughParam.setAnimation(2);
+            }
             result.add(ringThroughParam);
         }
         return R.ok().add(result);
@@ -374,40 +408,44 @@
     //  绔欑偣浣嶇疆淇℃伅
     public R ringThroughDev(){
         List<RingThroughParam> result = new ArrayList<>();
-        ArrayList<Integer> arrayList = new ArrayList<Integer>() {{
-            add(1001);
-            add(1002);
-            add(1003);
-            add(1004);
-            add(1005);
-            add(1006);
-            add(1007);
-            add(1008);
-            add(1009);
-            add(1010);
-            add(1011);
-            add(1012);
-            add(1013);
-            add(1014);
-            add(1015);
-            add(1016);
-            add(1017);
-            add(1018);
-            add(1019);
-            add(1020);
-            add(1021);
-            add(1022);
-            add(1023);
-        }};
-        for (Integer staNo : arrayList){
+        List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<>());
+        for (BasDevpPosition basDevpPosition : basDevpPositions){
+//            if (basDevpPosition.getDevRegion() == 0){
+//                continue;
+//            }
             RingThroughParam ringThroughParam = new RingThroughParam();
-            ringThroughParam.setIndex(staNo);
+
+            ringThroughParam.setModeColor("#FFFFFF");
+            ringThroughParam.setStatusColor("#FFFFFF");
+            try{
+                BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no",basDevpPosition.getDevNo()));
+                if (basDevp.getAutoing().equals("Y")){
+                    if (basDevp.getLoading().equals("Y")){
+                        ringThroughParam.setModeColor("#ab1839");
+                        ringThroughParam.setStatusColor("#ab1839");
+                    }
+                    if (basDevp.getLoading().equals("N")){
+                        ringThroughParam.setModeColor("#27AE60");
+                        ringThroughParam.setStatusColor("#27AE60");
+                    }
+                } else {
+                    ringThroughParam.setModeColor("#C0392B");
+                    ringThroughParam.setStatusColor("#C0392B");
+                }
+
+            } catch (Exception e){
+                System.out.println(e.getMessage());
+                ringThroughParam.setModeColor("#000000");
+                ringThroughParam.setStatusColor("#000000");
+
+            }
+            ringThroughParam.setIndex(basDevpPosition.getDevNo());
 //            double[] doubles = Utils.RingThroughXYSta(perimeter, perimeter-basDevpPosition.getPlcPosition());
 //            ringThroughParam.setValueX(doubles[0]>50? doubles[0]+6:doubles[0]-1);
 //            ringThroughParam.setValueY(doubles[1]>50? doubles[1]+6:doubles[1]-1);
-//            double[] doubles = Utils.getRgvPosNew(basDevpPosition.getDevNo(),perimeter, basDevpPosition.getPlcPosition());
-            ringThroughParam.setValueX(staNo*100*1D);
-            ringThroughParam.setValueY(staNo*100*2D);
+            double[] doubles = Utils.getRgvPosNew(basDevpPosition.getDevNo(),trackEntireLength, basDevpPosition.getPlcPosition());
+            ringThroughParam.setValueX(doubles[0]);
+            ringThroughParam.setValueY(doubles[1]);
             result.add(ringThroughParam);
         }
         return R.ok().add(result);
@@ -416,30 +454,178 @@
     @PostMapping("/ring/through/track/position/data")
 //    @ManagerAuth(memo = "杞ㄩ亾PLC鐘舵�佷俊鎭�")
     public R wnergyGatheringRingParamTrack(){
-        return R.ok();
+        List<EnergyGatheringRingParam> result = new ArrayList<>();
+        try{
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                if (devp.getId()!=1){
+                    break;
+                }
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                if (devpThread.isResult()){
+                    if (true){
+                        EnergyGatheringRingParam energyGatheringRingParam = new EnergyGatheringRingParam();
+                        energyGatheringRingParam.setTrackColor("rgba(0, 230, 118, 0.5)");
+                        energyGatheringRingParam.setRadiationColor("rgba(0, 230, 118, 0.5)");
+                        result.add(energyGatheringRingParam);
+                    } else {
+                        EnergyGatheringRingParam energyGatheringRingParam = new EnergyGatheringRingParam();
+                        energyGatheringRingParam.setTrackColor("rgba(0, 230, 118, 0.5)");
+                        energyGatheringRingParam.setRadiationColor("rgba(0, 230, 118, 0.5)");
+                        result.add(energyGatheringRingParam);
+                    }
+                }
+            }
+            if (result.isEmpty()){
+                EnergyGatheringRingParam energyGatheringRingParam = new EnergyGatheringRingParam();
+                energyGatheringRingParam.setTrackColor("rgba(0, 0, 0, 81)");
+                energyGatheringRingParam.setRadiationColor("rgba(0, 0, 0, 81)");
+                result.add(energyGatheringRingParam);
+            }
+        } catch (Exception e){
+            EnergyGatheringRingParam energyGatheringRingParam = new EnergyGatheringRingParam();
+            energyGatheringRingParam.setTrackColor("rgba(0, 0, 0, 81)");
+            energyGatheringRingParam.setRadiationColor("rgba(0, 0, 0, 81)");
+            result.add(energyGatheringRingParam);
+        }
+        return R.ok().add(result);
     }
 
     @PostMapping("/ring/through/task/wrk/mast/position/data")
 //    @ManagerAuth(memo = "浣滀笟淇℃伅")
     public R ringThroughTaskWrkMast(){
-        return R.ok();
+        List<RgvWrkMastParam> result = new ArrayList<>();
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<>());
+        for (WrkMast wrkMast : wrkMasts){
+            RgvWrkMastParam rgvWrkMastParam = new RgvWrkMastParam(wrkMast);
+            if (Cools.isEmpty(rgvWrkMastParam.getRgvNo())){
+                rgvWrkMastParam.setRgvSts("鏈粦瀹�");
+            } else {
+                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvWrkMastParam.getRgvNo());
+                if (rgvThread == null) {
+                    rgvWrkMastParam.setRgvSts("鏈煡");
+                } else {
+                    RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(rgvWrkMastParam.getRgvNo());
+                    RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(rgvWrkMastParam.getRgvNo());
+                    if (rgvTaskProtocol == null) {
+                        rgvWrkMastParam.setRgvSts("鏈煡");
+                    } else {
+                        rgvWrkMastParam.setRgvSts(rgvProtocol.statusType.desc);
+                    }
+                }
+            }
+            result.add(rgvWrkMastParam);
+        }
+        return R.ok().add(result);
     }
 
     @PostMapping("/ring/through/task/wrk/mast/position/data/v1")
 //    @ManagerAuth(memo = "浣滀笟淇℃伅")
     public R ringThroughTaskWrkMastV1(){
-        return R.ok();
+        List<BasRgvOpt> result = new ArrayList<>();
+        for (int i = 1 ; i<11; i ++){
+            BasRgvOpt basRgvOpt = basRgvOptService.selectOne(new EntityWrapper<BasRgvOpt>().eq("rgv_no", i).orderBy("id", false));
+            if (basRgvOpt!=null){
+                result.add(basRgvOpt);
+            }
+        }
+        return R.ok().add(result);
     }
 
     @PostMapping("/task/rgv/circular/shuttle/mast/position/data")
 //    @ManagerAuth(memo = "浣滀笟淇℃伅")
     public R rgvCircularShuttle(){
-        return R.ok();
+        List<RgvCircularShuttleParam> result = new ArrayList<>();
+//        List<BasCircularShuttle> basCircularShuttleList = basCircularShuttleService.selectList(new EntityWrapper<>());
+//        for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){
+//            RgvCircularShuttleParam rgvCircularShuttleParam = new RgvCircularShuttleParam(basCircularShuttle);
+//            if (!Cools.isEmpty(rgvCircularShuttleParam.getRgvNo())){
+//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvCircularShuttleParam.getRgvNo());
+//                if (rgvThread != null) {
+//                    RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+//                    if (rgvProtocol != null) {
+//                        rgvCircularShuttleParam.setPosition(rgvProtocol.getRgvPos());
+//                        if (rgvCircularShuttleParam.getStatus()==0){
+//                            rgvCircularShuttleParam.setStatus$(rgvProtocol.statusType.desc);
+//                        }
+//                        if (rgvProtocol.getAlarmList().isEmpty()){
+//                            rgvCircularShuttleParam.setError(0);
+//                            rgvCircularShuttleParam.setError$("-");
+//                        } else {
+//                            StringBuilder alarmList = new StringBuilder();
+//                            for (Integer alarm : rgvProtocol.getAlarmList()){
+//                                BasRgvErr rgvErr = basRgvErrMapper.selectById(alarm);
+//                                alarmList.append((rgvErr==null || rgvErr.getErrName()==null)? "鏈煡寮傚父:"+alarm:rgvErr.getErrName());
+//                                if (alarm.equals(rgvProtocol.getAlarmList().get(rgvProtocol.getAlarmList().size() - 1))){
+//                                    break;
+//                                }
+//                                alarmList.append("---");
+//                            }
+//                            rgvCircularShuttleParam.setError$(alarmList.toString());
+//                        }
+//                    }
+//                }
+//            }
+//            result.add(rgvCircularShuttleParam);
+//        }
+        return R.ok().add(result);
     }
 
     @PostMapping("/task/rgv/circular/shuttle/mast/position/data/v1")
 //    @ManagerAuth(memo = "浣滀笟淇℃伅")
     public R rgvCircularShuttleV1(){
+//        List<BasRgvErrLog> result = new ArrayList<>();
+//        for (int i = 1 ; i<11; i ++){
+//            BasRgvErrLog basRgvErrLog = basRgvErrLogService.selectOne(new EntityWrapper<BasRgvErrLog>().eq("rgv_no", i).orderBy("id", false));
+//            if (basRgvErrLog!=null){
+//                result.add(basRgvErrLog);
+//            }
+//        }
         return R.ok();
     }
+
+
+    @PostMapping("/disable/rgv/status")
+//    @ManagerAuth(memo = "淇敼RGV鐘舵��")
+    public R rgvDisableStatus(@RequestParam Integer rgvNo,
+                              @RequestParam Integer status){
+//        log.info("/disable/rgv/status===銆嬩慨鏀筊GV鐘舵�侊紒锛侊紒rgvNo:{},status:{},data:{}",rgvNo,status,new Date());
+//        BasCircularShuttle basCircularShuttle = basCircularShuttleService.selectOne(new EntityWrapper<BasCircularShuttle>().eq("rgv_no", rgvNo));
+//        if (basCircularShuttle == null){
+//            return R.error().add("鏈壘鍒版RGV锛屽紓甯革紒锛侊紒");
+//        }
+//        basCircularShuttle.setStatus(status);
+//        basCircularShuttleService.updateById(basCircularShuttle);
+        return R.ok();
+    }
+
+    @PostMapping("/disable/task/delete")
+//    @ManagerAuth(memo = "鍒犻櫎浠诲姟")
+    public R taskDisabledelete(@RequestParam Long wrkNo){
+//        log.info("/disable/task/delete===銆嬪垹闄や换鍔★紒锛侊紒wrkNo:{},data:{}",wrkNo,new Date());
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
+        if (Cools.isEmpty(wrkMast)){
+            return R.error().add("鏈壘鍒版浠诲姟锛屽紓甯革紒锛侊紒");
+        }
+        wrkMastService.deleteById(wrkMast);
+        return R.ok();
+    }
+
+    @PostMapping("/disable/task/delete1")
+//    @ManagerAuth(memo = "鍒濆鍖栦换鍔�")
+    public R taskDisabledelete1(@RequestParam Long wrkNo){
+        Date now = new Date();
+//        log.info("/disable/task/delete1===銆嬪垵濮嬪寲浠诲姟锛侊紒锛亀rkNo:{},data:{}",wrkNo,new Date());
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
+        if (Cools.isEmpty(wrkMast)){
+            return R.error().add("鏈壘鍒版浠诲姟锛屽紓甯革紒锛侊紒");
+        }
+        wrkMast.setWrkSts(1L);
+//        wrkMast.setRgvNo(0);
+        wrkMast.setAppeTime(now);
+        wrkMast.setLogErrTime(now);
+        if (wrkMastService.updateById(wrkMast)){
+            return R.ok();
+        }
+        return R.error("鍒濆鍖栧け璐ワ紒锛侊紒");
+    }
 }
diff --git a/src/main/java/com/zy/asrs/domain/param/EnergyGatheringRingParam.java b/src/main/java/com/zy/asrs/domain/param/EnergyGatheringRingParam.java
new file mode 100644
index 0000000..6537abe
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/EnergyGatheringRingParam.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.domain.param;
+
+import lombok.Data;
+
+@Data
+public class EnergyGatheringRingParam {
+
+    private String trackColor;
+
+    private String radiationColor;
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java b/src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java
new file mode 100644
index 0000000..4364c7f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/RgvCircularShuttleParam.java
@@ -0,0 +1,38 @@
+package com.zy.asrs.domain.param;
+
+//import com.zy.asrs.entity.BasCircularShuttle;
+import lombok.Data;
+
+/**
+ * Created by vincent on 2020-06-02
+ */
+@Data
+public class RgvCircularShuttleParam {
+
+    private Long id;
+
+
+    private Integer rgvId;
+
+    private Integer rgvNo;
+
+    /**
+     * 0:姝e父锛�1锛氱鐢�
+     */
+    private Integer status;
+    private Integer error;
+    private String status$ = "鏈煡";
+    private String error$ = "-";
+    private Long position = 0L;
+
+    public RgvCircularShuttleParam(){};
+
+
+//    public RgvCircularShuttleParam(BasCircularShuttle basCircularShuttle){
+//        this.rgvNo = basCircularShuttle.getRgvNo();
+//        this.rgvId = basCircularShuttle.getRgvId();
+//        this.status = basCircularShuttle.getStatus();
+//        this.status$ = basCircularShuttle.getStatus()==0? "姝e父":"绂佺敤";
+//        this.id = basCircularShuttle.getId();
+//    }
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/RgvWrkMastParam.java b/src/main/java/com/zy/asrs/domain/param/RgvWrkMastParam.java
new file mode 100644
index 0000000..6c10e68
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/param/RgvWrkMastParam.java
@@ -0,0 +1,46 @@
+package com.zy.asrs.domain.param;
+
+import com.zy.asrs.entity.WrkMast;
+import lombok.Data;
+
+/**
+ * Created by vincent on 2020-06-02
+ */
+@Data
+public class RgvWrkMastParam {
+
+    // RGV鍙�
+    private Integer rgvNo;
+    // 宸ヤ綔鍙�
+    private Long wrkNo;
+    // 宸ヤ綔鐘舵��
+    private Long wrkSts;
+    private String wrkSts$;
+    // 宸ヤ綅1鐩爣绔�
+    private Integer staNo;
+    // 宸ヤ綅1婧愮珯
+    private Integer sourceStaNo;
+    //涓嬪彂鏃堕棿
+    private String modiTime;
+    //鏇存柊鏃堕棿
+    private String appeTime;
+    private String crnStrTime;
+    private String crnEndTime;
+    private String rgvSts;
+
+    public RgvWrkMastParam(){};
+
+
+    public RgvWrkMastParam(WrkMast wrkMast){
+        this.wrkNo = wrkMast.getWrkNo().longValue();
+//        this.rgvNo = wrkMast.getRgvNo();
+        this.sourceStaNo = wrkMast.getSourceStaNo();
+        this.staNo = wrkMast.getStaNo();
+        this.wrkSts = wrkMast.getWrkSts();
+        this.wrkSts$ = wrkMast.getWrkSts$();
+        this.modiTime = wrkMast.getModiTime$();
+        this.appeTime = wrkMast.getAppeTime$();
+        this.crnStrTime = wrkMast.getCrnStrTime$();
+        this.crnEndTime = wrkMast.getCrnEndTime$();
+    }
+}
diff --git a/src/main/java/com/zy/asrs/domain/param/RingThroughParam.java b/src/main/java/com/zy/asrs/domain/param/RingThroughParam.java
index f920c86..9adcedc 100644
--- a/src/main/java/com/zy/asrs/domain/param/RingThroughParam.java
+++ b/src/main/java/com/zy/asrs/domain/param/RingThroughParam.java
@@ -14,4 +14,6 @@
     private String modeColor;
 
     private String statusColor;
+
+    private int animation = 0;//鍏夋晥
 }
diff --git a/src/main/java/com/zy/asrs/domain/vo/CrnListVo.java b/src/main/java/com/zy/asrs/domain/vo/CrnListVo.java
new file mode 100644
index 0000000..6f07eac
--- /dev/null
+++ b/src/main/java/com/zy/asrs/domain/vo/CrnListVo.java
@@ -0,0 +1,170 @@
+package com.zy.asrs.domain.vo;
+
+import com.zy.asrs.utils.Utils;
+import com.zy.core.enums.CrnStatusType;
+import lombok.Data;
+
+@Data
+public class CrnListVo {
+
+    // 鍫嗗灈鏈哄彿
+    private Integer crnNo;
+    private Integer laneNo;
+
+    // 妯″紡
+    private String statusType = "-";
+
+    // 鏈夌墿
+    private String loading = "-";
+
+    // 鍒�
+    private Short bay;
+
+    // 灞�
+    private Short lev;
+
+    // 璧拌鍘熺偣
+    private String xOrigin = "-";
+
+    // 鍗囬檷鍘熺偣
+    private String yOrigin = "-";
+
+    // 璐у弶浣嶇疆
+    private String forkOffset = "-";
+
+    // 杞借揣鍙颁綅缃�
+    private String liftPos = "-";
+
+    // 璧拌瀹氫綅
+    private String walkPos = "-";
+
+    // 鎬ュ仠
+    private String stop = "-";
+
+    // 鍒楀潗鏍�
+    private String bayCoor = "-";
+
+    // 灞傚潗鏍�
+    private String levCoor = "-";
+
+    // 瀹屾垚
+    private String complete = "-";
+
+    // 浠诲姟鍙�
+    private Short workNo = 0;
+
+    // 浠诲姟鐘舵��
+    private Integer wrkStatus;
+
+    // 寮傚父鐮�
+    private String warnCode = "-";
+
+    // 鍨傜洿鏁呴殰鐮�
+    private String alarm = "-";
+
+    // 婧愮珯
+    private String sourceStaNo = "-";
+
+    // 鐩爣绔�
+    private String staNo = "-";
+
+    // 婧愬簱浣�
+    private String sourceLocNo = "-";
+
+    // 鐩爣搴撲綅
+    private String locNo = "-";
+
+    // 寮傚父
+    private String error = "";
+
+    // 鍘熺偣
+    private String origin = "";
+
+    // 鍛戒护
+    private String command = "";
+
+    // 璧拌閫熷害锛坢/min)
+    private Float xspeed = 0.0F;
+
+    // 鍗囬檷閫熷害锛坢/min)
+    private Float yspeed = 0.0F;
+
+    // 鍙夌墮閫熷害锛坢/min)
+    private Float zspeed = 0.0F;
+
+    // 璧拌璺濈(Km)
+    private Float xdistance = 0.0F;
+
+    // 鍗囬檷璺濈(Km)
+    private Float ydistance = 0.0F;
+
+    // 璧拌鏃堕暱(H)
+    private Float xduration = 0.0F;
+
+    // 鍗囬檷鏃堕暱(H)
+    private Float yduration = 0.0F;
+
+    // 璁惧鐘舵��
+    private String deviceStatus = "-";
+
+    // 鍙叆
+    private String inEnable;
+
+    // 鍙嚭
+    private String outEnable;
+    private String hpMk = "N";
+    private String taskComplete = "鏃�";
+    private String errorCrn;
+    private String demo = "-";
+    private Integer demoValue = 0;
+
+    public void setXspeed(Float xspeed) {
+        this.xspeed = Utils.scale(xspeed);
+    }
+
+    public void setYspeed(Float yspeed) {
+        this.yspeed = Utils.scale(yspeed);
+    }
+
+    public void setZspeed(Float zspeed) {
+        this.zspeed = Utils.scale(zspeed);
+    }
+
+    public void setXdistance(Float xdistance) {
+        this.xdistance = Utils.scale(xdistance);
+    }
+
+    public void setYdistance(Float ydistance) {
+        this.ydistance = Utils.scale(ydistance);
+    }
+
+    public void setXduration(Float xduration) {
+        this.xduration = Utils.scale(xduration);
+    }
+
+    public void setYduration(Float yduration) {
+        this.yduration = Utils.scale(yduration);
+    }
+
+    public String getWrkStatus$() {
+        if (this.wrkStatus == null) {
+            return "-";
+        }
+        return CrnStatusType.get(this.wrkStatus.shortValue()).desc;
+    }
+
+    public String getDemoValue$() {
+        switch (this.demoValue) {
+            case 0:
+                return "鍋滄";
+            case 1:
+                return "杩愯鍚姩涓�";
+            case 2:
+                return "杩愯涓�";
+            case 3:
+                return "鍋滄涓�";
+            default:
+                return "鏈煡鐘舵��";
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 36a0324..c208377 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -161,6 +161,150 @@
 
     }
 
+
+    public static double[] getRgvPosNew(Integer devNo,double a, double b) {
+        double[] rgvPosNew = getRgvPosNew(a, b);
+        switch (devNo){
+            case 101:
+            case 102:
+            case 103:
+            case 104:
+            case 105:
+            case 106:
+            case 107:
+            case 108:
+            case 109:
+            case 110:
+            case 111:
+                rgvPosNew[0] = rgvPosNew[0] - 70;
+                break;
+            case 112:
+            case 113:
+            case 114:
+            case 115:
+                rgvPosNew[0] = rgvPosNew[0] + 50;
+                break;
+            case 116:
+            case 117:
+            case 118:
+            case 119:
+            case 120:
+            case 121:
+            case 122:
+            case 123:
+            case 124:
+            case 125:
+            case 126:
+            case 127:
+            case 128:
+            case 129:
+            case 130:
+            case 131:
+            case 132:
+            case 133:
+                rgvPosNew[1] = rgvPosNew[1] + 50;
+                break;
+            case 134:
+                rgvPosNew[1] = rgvPosNew[1] - 70;
+                break;
+        }
+        return rgvPosNew;
+
+    }
+    public static double[] getRgvPosNew(double a, double b) {
+        Object[][] intervals = {
+//                // 寮х嚎鍖洪棿锛堟嫄鐐�116-115锛夛紝鎺у埗鐐瑰亣璁句负(1125, 882)
+//                {680103, 731550, 1115, 882, 1215, 775, 1125, 882},
+                // 鐩寸嚎鍖洪棿锛�0-134400锛�
+//                {璧风偣, 缁堢偣, 绫诲瀷, x1, y1, x2, y2,
+                {0.0, 120000.0, 0, 390.0, 750.0, 60.0, 750.0},
+                // 鍦嗗姬鍖洪棿锛堟嫄鐐�116-115锛夋柊鍙傛暟锛氬渾蹇�(1115,775)
+                {120000.0, 127500.0, 2, 60.0, 750.0, 10.0, 800.0, 60.0, 800.0}, // 淇缁堢偣鍧愭爣
+                {127500.0, 134900.0, 2, 10.0, 800.0, 60.0, 850.0, 60.0, 800.0},
+                {134900.0, 680103.0,0, 60.0, 850.0, 1100.0, 850.0},
+                {680103.0, 731550.0, 2, 1100.0, 850.0, 1200.0, 750.0, 1100.0, 750.0},
+                {731550.0, 972950.0,0, 1200.0, 750.0, 1200.0, 100.0},
+                {972950.0, 1016193.0, 2, 1200.0, 100.0, 1150.0, 50.0, 1150.0, 100.0},
+                {1016193.0, 1063563.0, 2, 1150.0, 50.0, 1100.0, 100.0, 1150.0, 100.0},
+                {1063563.0, 1315250.0,0, 1100.0, 100.0, 1100.0, 700.0},
+                {1315250.0, 1322829.0, 2, 1100.0, 700.0, 1050.0, 750.0, 1050.0, 700.0},
+                {1322829.0, 1737000.0,0, 1050.0, 750.0, 390.0, 750.0},
+        };
+
+        for (Object[] interval : intervals) {
+            double start = (Double) interval[0];
+            double end = (Double) interval[1];
+            int type = (Integer) interval[2];
+
+            if (b >= start && b <= end) {
+                double t = (b - start) / (end - start);
+
+                // 鏍规嵁涓嶅悓绫诲瀷璁$畻鍧愭爣
+                switch (type) {
+                    case 0: // 鐩寸嚎
+                        return linearInterpolation(interval, t);
+                    case 1: // 璐濆灏旀洸绾�
+                        return bezierInterpolation(interval, t);
+                    case 2: // 鍦嗗姬
+                        return circularInterpolation(interval, t);
+                }
+            }
+        }
+        return new double[]{0, 0};
+    }
+
+
+
+    // 鐩寸嚎鎻掑��
+    private static double[] linearInterpolation(Object[] interval, double t) {
+        double x1 = (Double) interval[3];
+        double y1 = (Double) interval[4];
+        double x2 = (Double) interval[5];
+        double y2 = (Double) interval[6];
+        return new double[]{
+                x1 + t * (x2 - x1),
+                y1 + t * (y2 - y1)
+        };
+    }
+
+    // 璐濆灏旀洸绾挎彃鍊�
+    private static double[] bezierInterpolation(Object[] interval, double t) {
+        double x0 = (Double) interval[3];
+        double y0 = (Double) interval[4];
+        double x2 = (Double) interval[5];
+        double y2 = (Double) interval[6];
+        double cx = (Double) interval[7];
+        double cy = (Double) interval[8];
+        return new double[]{
+                Math.pow(1-t, 2)*x0 + 2*(1-t)*t*cx + t*t*x2,
+                Math.pow(1-t, 2)*y0 + 2*(1-t)*t*cy + t*t*y2
+        };
+    }
+
+    // 鍦嗗姬鎻掑�硷紙鏂板锛�
+    private static double[] circularInterpolation(Object[] interval, double t) {
+        // 鍙傛暟瑙f瀽
+        double startX = (Double) interval[3];
+        double startY = (Double) interval[4];
+        double endX = (Double) interval[5];
+        double endY = (Double) interval[6];
+        double centerX = (Double) interval[7];
+        double centerY = (Double) interval[8];
+
+        // 璁$畻璧峰瑙掑害鍜岀粓姝㈣搴�
+        double startAngle = Math.atan2(startY - centerY, startX - centerX);
+        double endAngle = Math.atan2(endY - centerY, endX - centerX);
+
+        // 瑙掑害鎻掑��
+        double currentAngle = startAngle + t * (endAngle - startAngle);
+        double radius = Math.hypot(startX - centerX, startY - centerY);
+
+        return new double[]{
+                centerX + radius * Math.cos(currentAngle),
+                centerY + radius * Math.sin(currentAngle)
+        };
+    }
+
     public static void main(String[] args) {
         SlaveProperties slaveProperties = new SlaveProperties();
         slaveProperties.setDoubleDeep(true);
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 252da3e..12db825 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -43,6 +43,7 @@
     private SiemensS7Net siemensS7Net;
     private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
     private short heartBeatVal = 1;
+    private boolean result = false;
     public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
         add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);add(110);
         add(111);add(112);add(113);add(114);add(115);add(116);add(117);add(118);add(119);add(120);

--
Gitblit v1.9.1