From b26b26e7170f4b86642176ac62955e57e1dc74a9 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期五, 13 三月 2026 14:35:00 +0800
Subject: [PATCH] 人员入侵调用以及回调接口
---
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java | 418 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 362 insertions(+), 56 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index d743466..ccc0db8 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -6,15 +6,19 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.mes.TransArrivalStation;
-import com.zy.asrs.entity.mes.TransInOutStationAllow;
import com.zy.asrs.entity.mes.TransParent;
import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.enums.RcsRetMethodEnum;
+import com.zy.asrs.mapper.BasDevpMapper;
import com.zy.asrs.mapper.BlockStationMapper;
import com.zy.asrs.mapper.BlockTaskMapper;
import com.zy.asrs.service.*;
+import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -28,13 +32,15 @@
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
@Slf4j
@Service
public class RcsServiceImpl implements RcsService {
+ @Value("${wms.address}")
+ private String WMS_ADDRESS;
+ @Value("${personIn.url}")
+ private String PERSON_URL;
// 娴峰悍RCS鍦板潃
@Value("${hik.url}")
private String HIK_URL;
@@ -43,6 +49,10 @@
private String HX_URL;
@Value("${mes.defaultUserId}")
public long defaultUserId;
+
+ // wcs鍦板潃
+ @Value("${wcs.url}")
+ private String WCS_URL;
@Resource
@@ -58,8 +68,15 @@
@Resource
private WrkMastService wrkMastService;
+ @Autowired
+ private RedisUtil redisUtil;
@Resource
private ApiLogService apiLogService;
+
+ private static final String IS_START_CHECK_INTRUSION = "intrusion:check";
+ private static final String IS_PERSON_INTRUSION = "intrusion:person";
+ private static final String LAST_INTRUSION_TIME = "intrusion:lastTime";
+ private static final String IS_BLOCK_AREA = "intrusion:block";
// region 灏侀攣鍖洪�昏緫锛岀洰鍓嶅彧鏈変竴涓ぇ灏侀攣鍖猴紝浠诲姟鍏ㄩ儴杞埌婊戝潡搴撳鐞嗭紝鎴栫洿鎺ュ啓鍒版粦鍧楀簱
@@ -90,40 +107,40 @@
*/
public void managerBlock() {
- try {
- BlockTask firstTask = blockTaskMapper.findTop();
- if (firstTask == null) {
- return;
- }
- EntityWrapper<BlockStation> wrapper = new EntityWrapper<>();
- wrapper.eq("block_no", firstTask.getBlockNo());
- List<BlockStation> stations = blockStationMapper.selectList(wrapper);
- if (!stations.isEmpty()) {
- boolean locked = false;
- for (BlockStation station : stations) {
- // 鍙厑璁�1涓巶瀹惰澶囪繘鍏ュ皝閿佸尯锛宻tatus鐘舵�侊細0 绌洪棽锛�1 娴峰悍灏侀攣涓紱2 鍗庢檽灏侀攣涓紱-1 寮傚父锛�
- if (station.getStatus() > 0 && !station.getStatus().equals(firstTask.getAgvFactory())) {
- locked = true;
- break;
- }
- }
+ try {
+ BlockTask firstTask = blockTaskMapper.findTop();
+ if (firstTask == null) {
+ return;
+ }
+ EntityWrapper<BlockStation> wrapper = new EntityWrapper<>();
+ wrapper.eq("block_no", firstTask.getBlockNo());
+ List<BlockStation> stations = blockStationMapper.selectList(wrapper);
+ if (!stations.isEmpty()) {
+ boolean locked = false;
+ for (BlockStation station : stations) {
+ // 鍙厑璁�1涓巶瀹惰澶囪繘鍏ュ皝閿佸尯锛宻tatus鐘舵�侊細0 绌洪棽锛�1 娴峰悍灏侀攣涓紱2 鍗庢檽灏侀攣涓紱-1 寮傚父锛�
+ if (station.getStatus() > 0 && !station.getStatus().equals(firstTask.getAgvFactory())) {
+ locked = true;
+ break;
+ }
+ }
- if (!locked) {
- // 灏侀攣鐘舵��
- int success = blockStationMapper.addByBlockNo(firstTask.getBlockNo(), firstTask.getAgvFactory());
- if (success > 0) {
- // 閫氱煡RCS
- RcsEqptNotify notify = new RcsEqptNotify();
- notify.setEqptCode(firstTask.getBlockNo());
- notify.setTaskCode(firstTask.getTaskCode());
- notify.setActionStatus("1");
- notifyEqpt(notify, firstTask.getAgvFactory());
- }
- }
- }
- } catch (Exception e) {
- log.error("绠$悊灏侀攣鍖哄紓甯�", e);
- }
+ if (!locked) {
+ // 灏侀攣鐘舵��
+ int success = blockStationMapper.addByBlockNo(firstTask.getBlockNo(), firstTask.getAgvFactory());
+ if (success > 0) {
+ // 閫氱煡RCS
+ RcsEqptNotify notify = new RcsEqptNotify();
+ notify.setEqptCode(firstTask.getBlockNo());
+ notify.setTaskCode(firstTask.getTaskCode());
+ notify.setActionStatus("1");
+ notifyEqpt(notify, firstTask.getAgvFactory());
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("绠$悊灏侀攣鍖哄紓甯�", e);
+ }
}
/**
@@ -222,17 +239,17 @@
String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit";
String response = "";
try {
+ // 妯℃嫙杩斿洖
+// rcsReturn.setCode("SUCCESS");
+// success = true;
+// log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
+
+
response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
if (!StringUtils.isEmpty(response) && response.contains("code")) {
rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if ("SUCCESS".equals(rcsReturn.getCode())) {
- // 妯℃嫙杩斿洖
-// rcsReturn.setCode("SUCCESS");
-// JSONObject jsonObject = new JSONObject();
-// jsonObject.put("robotTaskCode",4);
-// rcsReturn.setData(jsonObject);
success = true;
-
log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
} else {
log.error("鍛煎彨agv鎼繍澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
@@ -294,7 +311,7 @@
public int cancelTask(RcsTaskCancel rcsTaskCancel, int rcsFactory){
String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/cancel";
- String response = sendPost(url, rcsTaskCancel.toString());
+ String response = sendPost(url, JSONObject.toJSONString(rcsTaskCancel));
if (!StringUtils.isEmpty(response) && response.contains("code")){
RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -319,7 +336,7 @@
private int notifyEqpt(RcsEqptNotify rcsEqptNotify, int rcsFactory){
String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/wcs/robot/eqpt/notify";
- String response = sendPost(url, rcsEqptNotify.toString());
+ String response = sendPost(url, JSONObject.toJSONString(rcsEqptNotify));
if (!StringUtils.isEmpty(response) && response.contains("code")){
RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -333,6 +350,9 @@
return 0;
}
+
+ @Resource
+ private BasDevpMapper basDevpMapper;
/**
* 2.2.1浠诲姟鎵ц鍥為
@@ -382,6 +402,100 @@
// JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
// mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
} break;
+ case APPLY_PUT: { // 鏀捐揣鐢宠
+ String staNo = task.getStaNo();
+ BasDevp basDevp = basDevpMapper.selectById(staNo);
+ if(basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N") && basDevp.getWrkNo() == 0) {
+
+ // 205 瑙﹀彂鏉$爜鎵弿
+ if (staNo.equals("205")) {
+ Map<String,Object> params = new HashMap<>();
+ params.put("siteId",staNo);
+ String response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/site/startScan")
+ .setParams(params)
+ .build()
+ .doPost();
+ log.info("{}鏀捐揣鐢宠缁檞cs涓嬪彂鏉$爜鎵弿鍘熷杩斿洖:{}",staNo,response);
+ }
+
+ // 婊¤冻鏀捐揣鏉′欢锛岃皟鐢≧CS浠诲姟缁х画鎵ц
+ RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+ rcsTaskContinue.setRobotTaskCode(robotTaskCode);
+ rcsTaskContinue.setTriggerType("TASK");
+ rcsTaskContinue.setTriggerCode(robotTaskCode);
+ int success = continueTask(rcsTaskContinue, 1);
+ if(success != 1) {
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("缁х画鎵ц澶辫触");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ }else {
+ log.warn("绔欑偣锛歿}锛屼笉婊¤冻鏀捐揣鏉′欢锛岃嚜鍔細{}锛屾棤鐗╋細{}锛屼换鍔″彿锛歿}",staNo,basDevp.getAutoing(),basDevp.getLoading(),basDevp.getWrkNo());
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("绔欑偣涓嶆弧瓒虫斁璐ф潯浠�");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ } break;
+ case APPLY_PICK: { // 鍙栬揣鐢宠
+ String staNo = task.getSourceStaNo();
+ BasDevp basDevp = basDevpMapper.selectById(staNo);
+ if(basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("Y")
+ && basDevp.getWrkNo() > 0 && basDevp.getWrkNo() <= 9990) {
+ // 婊¤冻鏀捐揣鏉′欢锛岃皟鐢≧CS浠诲姟缁х画鎵ц
+ RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+ rcsTaskContinue.setRobotTaskCode(robotTaskCode);
+ rcsTaskContinue.setTriggerType("TASK");
+ rcsTaskContinue.setTriggerCode(robotTaskCode);
+ int success = continueTask(rcsTaskContinue, 1);
+ if(success != 1) {
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("缁х画鎵ц澶辫触");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ }else {
+ log.warn("绔欑偣锛歿}锛屼笉婊¤冻鍙栬揣鏉′欢锛岃嚜鍔細{}锛屾棤鐗╋細{}锛屼换鍔″彿锛歿}",staNo,basDevp.getAutoing(),basDevp.getLoading(),basDevp.getWrkNo());
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("绔欑偣涓嶆弧瓒虫斁璐ф潯浠�");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ } break;
+ case PICK_COMPLETE: { // 鍙栬揣瀹屾垚
+ String staNo = task.getSourceStaNo();
+
+ // 娓呴櫎杈撻�佺嚎浠诲姟鍙�
+ Map<String,Object> params = new HashMap<>();
+ params.put("siteId",staNo);
+ params.put("workNo",0);
+ params.put("staNo", 0);
+ params.put("pakMk","Y");
+ String response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/site/detl/update")
+ .setParams(params)
+ .build()
+ .doPost();
+ log.info("agv鍙嶉pickComplete缁檞cs鍙戝懡浠�:{},杩斿洖锛歿}",JSONObject.toJSONString(params),response);
+ // agv缁х画鎵ц
+// TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+// inOutStationAllow.setTaskno(robotTaskCode);
+// inOutStationAllow.setStatus("Y");
+// inOutStationAllow.setAgvCode("agv001");
+// mesService.allowOutStation(inOutStationAllow);
+ } break;
case TASK_END: {
// 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
task.setWrkSts(304L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
@@ -390,6 +504,37 @@
taskService.updateById(task);
// 浠诲姟瀹屾垚
// mesService.reporterTask(rcsReporterTask);
+
+ // 鍏ョ珛搴撴椂锛屽尯鍒嗘槸绌烘墭杩樻槸婊℃墭锛岀粰杈撻�佺嚎涓嬪彂鍛戒护9990 绌猴紝9995婊�
+ // 渚ч潰205 9996绌猴紝9997婊�
+ String transType = memo.getString("TransType");
+ if("02".equals(transType) || "04".equals(transType)) {
+ int wrkNo = 9995;
+ if("02".equals(transType)) {
+ TaskDetl taskDetl = taskDetlService.selectOne(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
+ if (taskDetl != null) {
+ if("tuopan".equals(taskDetl.getMatnr())){
+ wrkNo = 9990;
+ }
+ }
+ }
+ int staNo = Integer.parseInt(task.getStaNo());
+ if(staNo == 205) { // 渚ч潰浠诲姟鍙疯浆鎹�
+ wrkNo = wrkNo == 9990 ? 9996 : 9997;
+ }
+ Map<String,Object> params = new HashMap<>();
+ params.put("siteId",staNo);
+ params.put("workNo",wrkNo);
+ params.put("staNo", staNo == 205 ? 205 : (staNo-1) );
+ params.put("pakMk","Y");
+ String response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/site/detl/update")
+ .setParams(params)
+ .build()
+ .doPost();
+ log.info("agv鍙嶉end缁檞cs鍙戝懡浠�:{},杩斿洖锛歿}",JSONObject.toJSONString(params),response);
+ }
// EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
// wapper2.eq("wrk_no", task.getWrkNo())
@@ -419,28 +564,55 @@
} else {
apply.setStationId(task.getStaNo());
}
-
if (RcsRetMethodEnum.APPLY_IN_STATION.getCode().equals(method)) {
+ JSONObject personRequest = new JSONObject();
+ personRequest.put("TaskType", 2);
+ personRequest.put("callback", WMS_ADDRESS+"/api/robot/personIn");
+ List<String> areaCodes = new ArrayList<>(Arrays.asList("03-H01", "03-H02", "03-M01"));
+ int i = 0;
+ for (String areaCode : areaCodes){
+ personRequest.put("AreaCode", areaCode);
+ int j = PersonRequest(personRequest, "IN");
+ if (j == 0){
+ log.error("浜哄憳鍏ヤ镜绯荤粺璋冪敤澶辫触");
+ }
+ }
+ redisUtil.set(IS_START_CHECK_INTRUSION, "T");
+ // 寤惰繜澶勭悊锛岀‘淇濅汉鍛樺叆渚电郴缁熶俊鍙蜂紭鍏堝鐞�
+ try {
+ Thread.sleep(10000); // 鐫$湢10绉�
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
mesService.applyInStation(apply);
} else if (RcsRetMethodEnum.APPLY_OFF_STATION.getCode().equals(method)) {
mesService.applyOutStation(apply);
} else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
+ JSONObject personRequest = new JSONObject();
+ personRequest.put("TaskType", 2);
+ personRequest.put("callback", WMS_ADDRESS+"/api/robot/personIn");
+ List<String> areaCodes = new ArrayList<>(Arrays.asList("03-H01", "03-H02", "03-M01"));
+ int i = 0;
+ for (String areaCode:areaCodes){
+ personRequest.put("AreaCode", areaCode);
+ int j = PersonRequest(personRequest, "OUT");
+ if (j == 0){
+ log.error("浜哄憳鍏ヤ镜绯荤粺璋冪敤澶辫触");
+ }
+ }
+ redisUtil.set(IS_START_CHECK_INTRUSION, "F");
+
mesService.outStation(apply);
// agv缁х画鎵ц
- TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
- inOutStationAllow.setTaskno(robotTaskCode);
- inOutStationAllow.setStatus("Y");
- inOutStationAllow.setAgvCode("agv001");
- mesService.allowOutStation(inOutStationAllow);
+// TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+// inOutStationAllow.setTaskno(robotTaskCode);
+// inOutStationAllow.setStatus("Y");
+// inOutStationAllow.setAgvCode("agv001");
+// mesService.allowOutStation(inOutStationAllow);
}
} break;
case ARRIVE_ON_STATION: {
- // TODO: 濡傛灉浜х嚎鏄繍杈撹捣鐐癸紝鍒欎笉鍙戦�佸埌绔欏畬鎴愶紝鏆傛椂璋冭瘯浣跨敤lG锛屾湭瀹炵幇鍒ゆ柇
-// if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG") || task.getSourceStaNo().startsWith("LL")) {
-// break;
-// }
-
EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
wapper2.eq("wrk_no", task.getWrkNo())
.eq("matnr", memo.getString("Itemno"))
@@ -449,7 +621,7 @@
TransArrivalStation arrivalStation = new TransArrivalStation();
arrivalStation.setTaskno(robotTaskCode);
arrivalStation.setTaskname(memo.getString("taskName"));
- arrivalStation.setTuoPanId(taskDetl == null ? "":taskDetl.getZpallet()); // memo.getString("TuoPanId")
+ arrivalStation.setTuoPanId(task.getBarcode()); // memo.getString("TuoPanId")
arrivalStation.setProductLineId(memo.getString("ProductLineId"));
String transType = memo.getString("TransType");
arrivalStation.setDaotype(transType);
@@ -710,5 +882,139 @@
return result.toString();
}
+ @Override
+ public RcsReturn siteBind(SiteBind siteBind) {
+ RcsReturn rcsReturn = new RcsReturn();
+ String url = HIK_URL + "api/robot/controller/site/bind";
+ String response = sendPost(url, JSONObject.toJSONString(siteBind));
+ if (!StringUtils.isEmpty(response) && response.contains("code")){
+ rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
+ } else {
+ rcsReturn.setCode("ERROR");
+ rcsReturn.setMessage("璋冪敤缁戝畾鎺ュ彛RCS鏃犺繑鍥�");
+ }
+ return rcsReturn;
+ }
+
+ int PersonRequest(JSONObject personRequest, String Type){
+ String url;
+ if (Type.equals("IN")){
+ url = "/detect/start";
+ }else{
+ url = "/detect/stop";
+ }
+ String URL = PERSON_URL + url;
+ String blockResponse = RcsServiceImpl.sendPost(URL, JSONObject.toJSONString(personRequest));
+ JSONObject jsonObject = JSON.parseObject(blockResponse);
+ if (!StringUtils.isEmpty(blockResponse) && (jsonObject.getInteger("code") == 200)) {
+ return 1;
+ }
+ return 0;
+ }
+
+ @Scheduled(fixedDelay = 1000)
+ public void personOut(){
+ Object lastTimeObj = redisUtil.get(LAST_INTRUSION_TIME);
+ if (lastTimeObj == null) {
+ return; // 娌℃湁璁板綍锛岀洿鎺ヨ繑鍥�
+ }
+ long lastTime = Long.parseLong(lastTimeObj.toString()); // 鍏堣浆String鍐嶈浆long
+ long now = System.currentTimeMillis();
+ long waitTime = now - lastTime;
+ //寰幆妫�娴嬫槸鍚︽湁瓒呰繃10绉掓病鏈夋洿鏂版湁浜轰俊鍙�
+ if (waitTime > 10000){
+ JSONObject personReturn = new JSONObject();
+
+ String hik_blockUrl = "api/robot/controller/zone/blockade";
+ String hik_pauseUrl = "api/robot/controller/zone/pause";
+
+ String BLOCK_URL = HIK_URL + hik_blockUrl;
+ String PAUSE_URL = HIK_URL + hik_pauseUrl;
+
+ // 涓変釜AGV鍖哄煙
+ List<String> areaCodes = new ArrayList<>(Arrays.asList("oprs1", "oprs2", "oprs3"));
+
+ for (String areaCode:areaCodes){
+ JSONObject rcsBlock = new JSONObject();
+ JSONObject rcsPause = new JSONObject();
+ rcsBlock.put("mapCode", "AA");
+ rcsPause.put("mapCode", "AA");
+ rcsBlock.put("invoke", "OPENUP");
+ rcsPause.put("invoke","RUN");
+ rcsBlock.put("zoneCode", areaCode);
+ rcsPause.put("zoneCode", areaCode);
+
+ // 瑙i櫎AGV閿佸畾鍖哄煙涓庤В闄ゆ殏鍋�
+ String blockResponse = RcsServiceImpl.sendPost(BLOCK_URL, JSONObject.toJSONString(rcsBlock));
+ String PauseResponse = RcsServiceImpl.sendPost(PAUSE_URL, JSONObject.toJSONString(rcsPause));
+ JSONObject blockJsonObject = JSON.parseObject(blockResponse);
+ JSONObject pauseJsonObject = JSON.parseObject(PauseResponse);
+ if (!StringUtils.isEmpty(blockResponse) && (blockJsonObject.getString("code").equals("SUCCESS"))) {
+ if (!StringUtils.isEmpty(PauseResponse) && (pauseJsonObject.getString("code").equals("SUCCESS"))) {
+ personReturn.put("code", 200);
+ personReturn.put("message", "success");
+ }
+ }
+ }
+ //閲嶇疆灏侀攣鐘舵��
+ redisUtil.set(IS_BLOCK_AREA, "F");
+ }
+ }
+
+ @Override
+ //浜哄憳鍏ヤ镜绯荤粺鍥炶皟鎺ュ彛瀹炵幇鏂规硶
+ public int personIn(JSONObject param) {
+
+ //浜哄憳鍏ヤ镜绯荤粺妫�娴嬪埌鏈変汉
+ if (param.getString("AlarmValue").equals("1")){
+ long date = new Date().getTime();
+ //閲嶇疆redis璁℃椂
+ redisUtil.set(LAST_INTRUSION_TIME, String.valueOf(date));
+
+ //濡傛灉宸茬粡灏侀攣鍖哄煙灏辩洿鎺ヨ繑鍥烇紝閬垮厤澶氭璋冪敤agv鎺ュ彛
+ Object blockArea = redisUtil.get(IS_BLOCK_AREA);
+ if (blockArea != null && "T".equals(blockArea)) {
+ return 1;
+ }
+
+ redisUtil.set(IS_PERSON_INTRUSION, "T");
+ }
+
+ JSONObject personReturn = new JSONObject();
+
+ String hik_blockUrl = "api/robot/controller/zone/blockade";
+ String hik_pauseUrl = "api/robot/controller/zone/pause";
+
+ String BLOCK_URL = HIK_URL + hik_blockUrl;
+ String PAUSE_URL = HIK_URL + hik_pauseUrl;
+
+ JSONObject rcsBlock = new JSONObject();
+ JSONObject rcsPause = new JSONObject();
+ rcsBlock.put("mapCode", "AA");
+ rcsPause.put("mapCode", "AA");
+
+ List<String> areaCodes = new ArrayList<>(Arrays.asList("oprs1", "oprs2", "oprs3"));
+
+ for (String areaCode:areaCodes){
+ rcsBlock.put("zoneCode", areaCode);
+ rcsPause.put("zoneCode", areaCode);
+ rcsBlock.put("invoke", "BLOCKADE");
+ rcsPause.put("invoke","FREEZE");
+ String blockResponse = RcsServiceImpl.sendPost(BLOCK_URL, JSONObject.toJSONString(rcsBlock));
+ String PauseResponse = RcsServiceImpl.sendPost(PAUSE_URL, JSONObject.toJSONString(rcsPause));
+ JSONObject blockJsonObject = JSON.parseObject(blockResponse);
+ JSONObject pauseJsonObject = JSON.parseObject(PauseResponse);
+ if (!StringUtils.isEmpty(blockResponse) && (blockJsonObject.getString("code").equals("SUCCESS"))) {
+ if (!StringUtils.isEmpty(PauseResponse) && (pauseJsonObject.getString("code").equals("SUCCESS"))) {
+ personReturn.put("code", 200);
+ personReturn.put("message", "success");
+ }
+ }
+ }
+ // 鏇存柊瀛樺偍灏侀攣淇℃伅
+ redisUtil.set(IS_BLOCK_AREA, "T");
+ //鐩存帴杩斿洖锛屼笉闇�瑕佷俊鎭�
+ return 1;
+ }
// endregion
}
--
Gitblit v1.9.1