From be322af3013501b822e4dab60ca348cc3db8bcbc Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 21 十二月 2025 18:51:52 +0800
Subject: [PATCH] 济南二机床wcs功能调试完善
---
src/main/java/com/zy/controller/MonitorController.java | 47 ++-
src/main/java/com/zy/service/RcsService.java | 16 +
src/main/java/com/zy/controller/SiteController.java | 2
src/main/java/com/zy/service/impl/ApiLogServiceImpl.java | 51 +++
src/main/java/com/zy/entity/RcsReporterTask.java | 18 +
src/main/java/com/zy/enums/RcsRetMethodEnum.java | 38 ++
src/main/java/com/zy/controller/RcsController.java | 30 ++
src/main/java/com/zy/core/ServerBootstrap.java | 6
src/main/java/com/zy/service/ApiLogService.java | 12
src/main/java/com/zy/entity/ApiLog.java | 198 +++++++++++++++
src/main/java/com/zy/service/impl/RcsServiceImpl.java | 191 ++++++++++++++
src/main/resources/mapper/ApiLogMapper.xml | 32 ++
src/main/java/com/zy/mapper/ApiLogMapper.java | 14 +
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 6
src/main/java/com/zy/entity/RcsReturn.java | 20 +
src/main/resources/application.yml | 70 -----
16 files changed, 660 insertions(+), 91 deletions(-)
diff --git a/src/main/java/com/zy/controller/MonitorController.java b/src/main/java/com/zy/controller/MonitorController.java
index e566421..532e1ae 100644
--- a/src/main/java/com/zy/controller/MonitorController.java
+++ b/src/main/java/com/zy/controller/MonitorController.java
@@ -75,13 +75,16 @@
* 鑾峰彇鍏朵粬淇℃伅
*/
@GetMapping("/other")
- public R monitorOther(@RequestParam("crnId") Integer crnId, @RequestParam("ledId") Integer sta) {
+ public R monitorOther(@RequestParam("crnId") Integer crnId, @RequestParam("ledId") String ledIdString) {
Integer ledId = 0;
- for (LedSlave led : slaveProperties.getLed()) {
- for (Integer staNo : led.getStaArr()) {
- if (staNo.equals(sta)) {
- ledId = led.getId();
- break;
+ String[] ledIds = ledIdString.split(",");
+ for (String id : ledIds) {
+ for (LedSlave led : slaveProperties.getLed()) {
+ for (Integer staNo : led.getStaArr()) {
+ if (staNo.equals(Integer.parseInt(id))) {
+ ledId = led.getId();
+ break;
+ }
}
}
}
@@ -261,15 +264,18 @@
* 鑾峰彇鍏朵粬淇℃伅
*/
@GetMapping("/led")
- public R monitorLed(@RequestParam("ledId") Integer ledId) {
+ public R monitorLed(@RequestParam("ledId") String ledIdString) {
+ String[] ledIds = ledIdString.split(",");
String ledContent = "";
List<LedCommand> commandList = null;
- for (LedSlave slave : slaveProperties.getLed()) {
- if (slave.getStaArr().contains(ledId)) {
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId());
- if (null != ledThread) {
- ledContent = ledThread.getStringBuffer().toString();
- commandList = ledThread.getCommandList();
+ for(String ledId: ledIds) {
+ for (LedSlave slave : slaveProperties.getLed()) {
+ if (slave.getStaArr().contains(Integer.parseInt(ledId))) {
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId());
+ if (null != ledThread) {
+ ledContent = ledThread.getStringBuffer().toString();
+ commandList = ledThread.getCommandList();
+ }
}
}
}
@@ -280,13 +286,16 @@
* 寮傚父閫氱煡
*/
@GetMapping("/led/error")
- public R monitorLedError(@RequestParam("ledId") Integer ledId) {
+ public R monitorLedError(@RequestParam("ledId") String ledIdString) {
String errorMsg = "";
- for (LedSlave slave : slaveProperties.getLed()) {
- if (slave.getStaArr().contains(ledId)) {
- LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId());
- if (null != ledThread) {
- errorMsg = ledThread.getErrorMsg().toString();
+ String[] ledIds = ledIdString.split(",");
+ for(String ledId: ledIds) {
+ for (LedSlave slave : slaveProperties.getLed()) {
+ if (slave.getStaArr().contains(Integer.parseInt(ledId))) {
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId());
+ if (null != ledThread) {
+ errorMsg = ledThread.getErrorMsg().toString();
+ }
}
}
}
diff --git a/src/main/java/com/zy/controller/RcsController.java b/src/main/java/com/zy/controller/RcsController.java
new file mode 100644
index 0000000..a533daa
--- /dev/null
+++ b/src/main/java/com/zy/controller/RcsController.java
@@ -0,0 +1,30 @@
+package com.zy.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.zy.common.web.BaseController;
+import com.zy.entity.RcsReporterTask;
+import com.zy.entity.RcsReturn;
+import com.zy.service.RcsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@Slf4j
+public class RcsController extends BaseController {
+
+ @Resource
+ private RcsService rcsService;
+
+
+ // 鍙嶉浠诲姟鎵ц缁撴灉
+ @PostMapping("/api/robot/reporter/task")
+ public RcsReturn reporterTask(@RequestBody RcsReporterTask param){
+ log.info("agv浠诲姟鎵ц鍙嶉璇锋眰锛歿}",JSONObject.toJSONString(param));
+ return rcsService.reporterTask(param);
+ }
+
+}
diff --git a/src/main/java/com/zy/controller/SiteController.java b/src/main/java/com/zy/controller/SiteController.java
index 3fe8c23..a4d70c1 100644
--- a/src/main/java/com/zy/controller/SiteController.java
+++ b/src/main/java/com/zy/controller/SiteController.java
@@ -153,7 +153,7 @@
}
@PostMapping("/detl/update")
- @ManagerAuth(memo = "淇敼绔欑偣鏁版嵁")
+ @ManagerAuth(memo = "淇敼绔欑偣鏁版嵁",value = ManagerAuth.Auth.NONE)
public R siteDetlUpdate(@RequestParam Integer siteId,
@RequestParam Integer workNo,
@RequestParam Short staNo,
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index b0dda94..5b15d24 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -58,9 +58,9 @@
MessageQueue.init(SlaveType.Crn, crn);
}
// 鍒濆鍖朢gv灏忚溅mq
- for (Slave rgv : slaveProperties.getRgv()) {
- MessageQueue.init(SlaveType.Rgv, rgv);
- }
+// for (Slave rgv : slaveProperties.getRgv()) {
+// MessageQueue.init(SlaveType.Rgv, rgv);
+// }
// 鍒濆鍖栬緭閫佺嚎mq
for (Slave devp : slaveProperties.getDevp()) {
MessageQueue.init(SlaveType.Devp, devp);
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 7181d32..304e3aa 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -182,8 +182,8 @@
*/
private void read() {
- // 绔欑偣淇℃伅
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (8*5));
+ // 璇昏揣浣嶄俊鎭弽棣�
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNos.size() * 8));
if (result.IsSuccess) {
for (int i = 0; i < staNos.size(); i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -220,7 +220,7 @@
return;
}
- // 鏉$爜鎵弿鍣�
+ // 鏉$爜淇℃伅鍙嶉
OperateResultExOne<byte[]> barcodeResult = siemensS7Net.Read("DB101.600", (short) (BarcodeList.size() * 10));
if (barcodeResult.IsSuccess) {
for (int i = 0; i < BarcodeList.size(); i++) {
diff --git a/src/main/java/com/zy/entity/ApiLog.java b/src/main/java/com/zy/entity/ApiLog.java
new file mode 100644
index 0000000..33c226c
--- /dev/null
+++ b/src/main/java/com/zy/entity/ApiLog.java
@@ -0,0 +1,198 @@
+package com.zy.entity;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("man_api_log")
+public class ApiLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ApiModelProperty(value = "ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鏃ュ織缂栧彿
+ */
+ @ApiModelProperty(value = "鏃ュ織缂栧彿")
+ private String uuid;
+
+ /**
+ * 鍚嶇О绌洪棿
+ */
+ @ApiModelProperty(value = "鍚嶇О绌洪棿")
+ private String namespace;
+
+ /**
+ * 鎺ュ彛鍦板潃
+ */
+ @ApiModelProperty(value = "鎺ュ彛鍦板潃")
+ private String url;
+
+ /**
+ * 骞冲彴瀵嗛挜
+ */
+ @ApiModelProperty(value = "骞冲彴瀵嗛挜")
+ private String appkey;
+
+ /**
+ * 鏃堕棿鎴�
+ */
+ @ApiModelProperty(value = "鏃堕棿鎴�")
+ private String timestamp;
+
+ /**
+ * 瀹㈡埛绔疘P
+ */
+ @ApiModelProperty(value = "瀹㈡埛绔疘P")
+ @TableField("client_ip")
+ private String clientIp;
+
+ /**
+ * 璇锋眰鍐呭
+ */
+ @ApiModelProperty(value = "璇锋眰鍐呭")
+ private String request;
+
+ /**
+ * 鍝嶅簲鍐呭
+ */
+ @ApiModelProperty(value = "鍝嶅簲鍐呭")
+ private String response;
+
+ /**
+ * 寮傚父鍐呭
+ */
+ @ApiModelProperty(value = "寮傚父鍐呭")
+ private String err;
+
+ /**
+ * 缁撴灉 1: 鎴愬姛 0: 澶辫触
+ */
+ @ApiModelProperty(value = "缁撴灉 1: 鎴愬姛 0: 澶辫触 ")
+ private Integer result;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 绂佺敤
+ */
+ @ApiModelProperty(value = "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
+ private Integer status;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value = "娣诲姞鏃堕棿")
+ @TableField("create_time")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField("update_time")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value = "澶囨敞")
+ private String memo;
+
+ public ApiLog() {
+ }
+
+ public ApiLog(String uuid, String namespace, String url, String appkey, String timestamp, String clientIp, String request, String response, String err, Integer result, Integer status, Date createTime, Date updateTime, String memo) {
+ this.uuid = uuid;
+ this.namespace = namespace;
+ this.url = url;
+ this.appkey = appkey;
+ this.timestamp = timestamp;
+ this.clientIp = clientIp;
+ this.request = request;
+ this.response = response;
+ this.err = err;
+ this.result = result;
+ this.status = status;
+ this.createTime = createTime;
+ this.updateTime = updateTime;
+ this.memo = memo;
+ }
+
+// ApiLog apiLog = new ApiLog(
+// null, // 鏃ュ織缂栧彿
+// null, // 鍚嶇О绌洪棿
+// null, // 鎺ュ彛鍦板潃
+// null, // 骞冲彴瀵嗛挜
+// null, // 鏃堕棿鎴�
+// null, // 瀹㈡埛绔疘P
+// null, // 璇锋眰鍐呭
+// null, // 鍝嶅簲鍐呭
+// null, // 寮傚父鍐呭
+// null, // 缁撴灉
+// null, // 鐘舵��
+// null, // 娣诲姞鏃堕棿
+// null, // 淇敼鏃堕棿
+// null // 澶囨敞
+// );
+
+ public String getResult$() {
+ if (null == this.result) {
+ return null;
+ }
+ switch (this.result) {
+ case 1:
+ return "鎴愬姛";
+ case 0:
+ return "澶辫触";
+ default:
+ return String.valueOf(this.result);
+ }
+ }
+
+ public String getStatus$() {
+ if (null == this.status) {
+ return null;
+ }
+ switch (this.status) {
+ case 1:
+ return "姝e父";
+ case 0:
+ return "绂佺敤";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getCreateTime$() {
+ if (Cools.isEmpty(this.createTime)) {
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateTime$() {
+ if (Cools.isEmpty(this.updateTime)) {
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+
+}
diff --git a/src/main/java/com/zy/entity/RcsReporterTask.java b/src/main/java/com/zy/entity/RcsReporterTask.java
new file mode 100644
index 0000000..63623c4
--- /dev/null
+++ b/src/main/java/com/zy/entity/RcsReporterTask.java
@@ -0,0 +1,18 @@
+package com.zy.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+
+// 浠诲姟鎵ц鍙嶉
+@Data
+public class RcsReporterTask {
+
+ // 浠诲姟鍙�
+ private String robotTaskCode;
+ // 褰撳墠鎵ц浠诲姟鐨勬満鍣ㄤ汉鍞竴鏍囪瘑銆�
+ private String singleRobotCode;
+ // 鐩爣璺緞搴忓垪锛�0 璧风偣搴忓彿锛�1 缁堢偣搴忓彿銆�
+ private Integer currentSeq;
+ // 璇︾粏淇℃伅
+ private JSONObject extra;
+}
diff --git a/src/main/java/com/zy/entity/RcsReturn.java b/src/main/java/com/zy/entity/RcsReturn.java
new file mode 100644
index 0000000..e0500f5
--- /dev/null
+++ b/src/main/java/com/zy/entity/RcsReturn.java
@@ -0,0 +1,20 @@
+package com.zy.entity;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+
+// 娴峰悍杩斿洖
+@Data
+public class RcsReturn {
+
+ // SUCCESS 鎴愬姛
+// Err_TaskTypeNotSupport 浠诲姟绫诲瀷涓嶆敮鎸�
+// Err_RobotGroupsNotMatch 鏈哄櫒浜鸿祫婧愮粍缂栧彿涓庝换鍔′笉鍖归厤锛屾棤娉曡皟搴�
+// Err_RobotCodeNotMatch 鏈哄櫒浜虹紪鍙蜂笌浠诲姟涓嶅尮閰嶏紝鏃犳硶璋冨害
+// Err_TargetRouteError 浠诲姟璺緞鍙傛暟鏈夎
+ private String code;
+
+ private String message;
+
+ private JSONObject data;
+}
diff --git a/src/main/java/com/zy/enums/RcsRetMethodEnum.java b/src/main/java/com/zy/enums/RcsRetMethodEnum.java
new file mode 100644
index 0000000..07f8409
--- /dev/null
+++ b/src/main/java/com/zy/enums/RcsRetMethodEnum.java
@@ -0,0 +1,38 @@
+package com.zy.enums;
+
+public enum RcsRetMethodEnum {
+
+ TASK_START("start", "浠诲姟寮�濮�"),
+ TASK_END("end", "浠诲姟瀹屾垚"),
+ TASK_OUT_BIN("outbin", "璧板嚭鍌ㄤ綅"),
+
+ APPLY_IN_STATION("applyInStation", "鍏ョ珯璇锋眰"),
+ APPLY_OFF_STATION("applyOutStation", "绂荤珯璇锋眰"),
+ ARRIVE_ON_STATION("arriveOnStation", "鍒扮珯瀹屾垚"),
+ ARRIVE_OFF_STATION("arriveOffStation", "绂荤珯瀹屾垚");
+
+ private String code;
+ private String message;
+
+ RcsRetMethodEnum(String code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public static RcsRetMethodEnum getEnum(String code) {
+ for (RcsRetMethodEnum method : RcsRetMethodEnum.values()) {
+ if (method.getCode().equals(code)) {
+ return method;
+ }
+ }
+ return null;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+}
diff --git a/src/main/java/com/zy/mapper/ApiLogMapper.java b/src/main/java/com/zy/mapper/ApiLogMapper.java
new file mode 100644
index 0000000..10a1dd9
--- /dev/null
+++ b/src/main/java/com/zy/mapper/ApiLogMapper.java
@@ -0,0 +1,14 @@
+package com.zy.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.entity.ApiLog;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface ApiLogMapper extends BaseMapper<ApiLog> {
+
+ int clearWeekBefore();
+
+}
diff --git a/src/main/java/com/zy/service/ApiLogService.java b/src/main/java/com/zy/service/ApiLogService.java
new file mode 100644
index 0000000..3adfbc8
--- /dev/null
+++ b/src/main/java/com/zy/service/ApiLogService.java
@@ -0,0 +1,12 @@
+package com.zy.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.entity.ApiLog;
+
+public interface ApiLogService extends IService<ApiLog> {
+
+ void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success);
+
+ boolean clearWeekBefore();
+
+}
diff --git a/src/main/java/com/zy/service/RcsService.java b/src/main/java/com/zy/service/RcsService.java
new file mode 100644
index 0000000..8860e0e
--- /dev/null
+++ b/src/main/java/com/zy/service/RcsService.java
@@ -0,0 +1,16 @@
+package com.zy.service;
+
+import com.zy.entity.RcsReporterTask;
+import com.zy.entity.RcsReturn;
+
+public interface RcsService {
+
+ /**
+ * 2.2.1浠诲姟鎵ц鍥為
+ *
+ * @param rcsReporterTask
+ * @return
+ */
+ RcsReturn reporterTask(RcsReporterTask rcsReporterTask);
+
+}
diff --git a/src/main/java/com/zy/service/impl/ApiLogServiceImpl.java b/src/main/java/com/zy/service/impl/ApiLogServiceImpl.java
new file mode 100644
index 0000000..07a573d
--- /dev/null
+++ b/src/main/java/com/zy/service/impl/ApiLogServiceImpl.java
@@ -0,0 +1,51 @@
+package com.zy.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.SnowflakeIdWorker;
+import com.zy.entity.ApiLog;
+import com.zy.mapper.ApiLogMapper;
+import com.zy.service.ApiLogService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+@Slf4j
+@Service("apiLogService")
+public class ApiLogServiceImpl extends ServiceImpl<ApiLogMapper, ApiLog> implements ApiLogService {
+
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+
+ @Async
+ @Override
+ public void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success) {
+ Date now = new Date();
+ ApiLog apiLog = new ApiLog(
+ String.valueOf(snowflakeIdWorker.nextId()), // 鏃ュ織缂栧彿
+ namespace, // 鍚嶇О绌洪棿
+ url, // 鎺ュ彛鍦板潃
+ appkey, // 骞冲彴瀵嗛挜
+ String.valueOf(now.getTime()), // 鏃堕棿鎴�
+ ip, // 瀹㈡埛绔疘P
+ request, // 璇锋眰鍐呭
+ response,
+ null, // 寮傚父鍐呭
+ success ? 1 : 0, // 缁撴灉
+ 1, // 鐘舵��
+ now, // 娣诲姞鏃堕棿
+ null, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!this.insert(apiLog)) {
+ log.error("鎺ュ彛璋冪敤鏃ュ織淇濆瓨澶辫触锛�");
+ }
+ }
+
+ @Override
+ public boolean clearWeekBefore() {
+ return this.baseMapper.clearWeekBefore() > 0;
+ }
+}
diff --git a/src/main/java/com/zy/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/service/impl/RcsServiceImpl.java
new file mode 100644
index 0000000..0b67aef
--- /dev/null
+++ b/src/main/java/com/zy/service/impl/RcsServiceImpl.java
@@ -0,0 +1,191 @@
+package com.zy.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.core.DevpThread;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.SlaveType;
+import com.zy.core.model.DevpSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.properties.SlaveProperties;
+import com.zy.entity.RcsReporterTask;
+import com.zy.entity.RcsReturn;
+import com.zy.entity.WrkDetl;
+import com.zy.entity.WrkMast;
+import com.zy.enums.RcsRetMethodEnum;
+import com.zy.service.ApiLogService;
+import com.zy.service.RcsService;
+import com.zy.service.WrkDetlService;
+import com.zy.service.WrkMastService;
+import com.zy.utils.HttpHandler;
+import com.zy.utils.News;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+@Slf4j
+@Service
+public class RcsServiceImpl implements RcsService {
+
+ @Value("${dj.url}")
+ public String DJ_URL;
+
+ @Resource
+ private WrkMastService wrkMastService;
+
+ @Resource
+ private WrkDetlService wrkDetlService;
+
+ @Resource
+ private SlaveProperties slaveProperties;
+
+ @Resource
+ private ApiLogService apiLogService;
+ /**
+ * 2.2.1浠诲姟鎵ц鍥為
+ * 鍘傚锛氭捣閲忋�佸崕鏅�
+ *
+ * @param rcsReporterTask
+ * @return
+ */
+ public RcsReturn reporterTask(RcsReporterTask rcsReporterTask) {
+
+ RcsReturn rcsReturn = new RcsReturn();
+
+ String robotTaskCode = rcsReporterTask.getRobotTaskCode();
+ String singleRobotCode = rcsReporterTask.getSingleRobotCode();
+ JSONObject values = rcsReporterTask.getExtra().getJSONObject("values");
+ String method = values.getString("method");
+ Date now = new Date();
+
+ try {
+ if (singleRobotCode.equals("14") || singleRobotCode.equals("15")) { // 涓ゅ彴CTU搴撴満鍣ㄤ汉缂栧彿
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("task_no", robotTaskCode));
+ if (wrkMast != null) {
+ Integer ioType = wrkMast.getIoType();
+ if (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method)) == RcsRetMethodEnum.TASK_END) {
+ if ((ioType == 101 || ioType == 110 || ioType == 103) && wrkMast.getWrkSts() == 12) {
+ // 缁欒緭閫佺嚎涓嬪彂鍛戒护
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ Map<Integer, StaProtocol> station = devpThread.getStation();
+ StaProtocol staProtocol = station.get(wrkMast.getSourceStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (result) {
+ News.info("RCS缁橶CS鍙嶉end,杈撻�佺嚎鍛戒护涓嬪彂鎴愬姛锛歿}", wrkMast.getWrkNo());
+ } else {
+ rcsReturn.setCode("Err_Internal");
+ rcsReturn.setMessage("RCS缁橶CS鍙嶉end,杈撻�佺嚎鍛戒护涓嬪彂澶辫触");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ }
+ wrkMast.setWrkSts(14L);
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ // 缁橳MS鍙嶉鍑哄簱璐х墿淇℃伅
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ if (!wrkDetls.isEmpty()) {
+ WrkDetl wrkDetl = wrkDetls.get(0);
+ String orderNo = wrkDetl.getOrderNo();
+ if (!Cools.isEmpty(orderNo)) {
+ // 鏋勯�犺姹傚弬鏁�
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("billType",wrkDetl.getThreeCode());
+ jsonObject.put("orderNo", wrkDetl.getOrderNo());
+ jsonObject.put("createTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
+ JSONArray jsonArray = new JSONArray();
+ for (WrkDetl detl : wrkDetls) {
+ JSONObject object = new JSONObject();
+ object.put("itemNo", detl.getMatnr());
+ object.put("anfme", detl.getAnfme());
+ jsonArray.add(object);
+ }
+ jsonObject.put("details", jsonArray);
+ String url = DJ_URL + "api/OutboundOrder/WmsOutFinish";
+ String request = jsonObject.toJSONString();
+ String response = "";
+ boolean success = false;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(DJ_URL)
+ .setPath("api/OutboundOrder/WmsOutFinish")
+ .setJson(request)
+ .build()
+ .doPost();
+ JSONObject responseJson = JSON.parseObject(response);
+ if (responseJson.getString("Success").equals("1")) {
+ success = true;
+ log.info("CTU鍑哄簱鍙嶉end,涓婃姤TMS鎴愬姛,宸ヤ綔鍙凤細{}锛屾槑缁嗭細{}", wrkMast.getWrkNo(), request);
+ } else {
+ log.error("CTU鍑哄簱鍙嶉end,涓婃姤TMS澶辫触锛�,宸ヤ綔鍙凤細{}锛屾槑缁嗭細{}", wrkMast.getWrkNo(), request);
+ log.error("鍑哄簱瀹屾垚涓婃姤TMS澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, request, response);
+ }
+ } catch (Exception e) {
+ log.error("鍑哄簱瀹屾垚涓婃姤TMS寮傚父,request:{}",request);
+ e.printStackTrace();
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍑哄簱瀹屾垚涓婃姤TMS",
+ url,
+ null,
+ "127.0.0.1",
+ request,
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鍏ュ簱淇濆瓨鎺ュ彛鏃ュ織寮傚父", e);
+ }
+ }
+ }
+ }
+ } else {
+ log.error("{}ioType{}涓嶅湪end鍙嶉澶勭悊涓�", wrkMast.getWrkNo(), ioType);
+ }
+ }
+ }
+ }
+ // 杩斿洖RCS
+ rcsReturn.setCode("SUCCESS");
+ rcsReturn.setMessage("");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ } catch (Exception e) {
+ log.error("RCS鍙嶉浠诲姟杩涘害澶勭悊寮傚父 - {}", rcsReporterTask, e);
+ rcsReturn.setCode("Err_Internal");
+ rcsReturn.setMessage("鍐呴儴澶勭悊寮傚父");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ }
+
+ return rcsReturn;
+ }
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index c61bea5..8402316 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -94,7 +94,7 @@
# 杈撻�佺嚎1
devp[0]:
id: 1
- ip: 172.26.11.42
+ ip: 172.26.11.50
port: 102
rack: 0
slot: 0
@@ -104,96 +104,36 @@
barcode: ${wcs-slave.barcode[0].id}
backSta: 103
led: ${wcs-slave.led[0].id}
-# # 鍏ュ簱鍙�2
-# inSta[1]:
-# staNo: 205
-# barcode: ${wcs-slave.barcode[2].id}
-# led: ${wcs-slave.led[2].id}
-# # 鍏ュ簱鍙�3
-# inSta[2]:
-# staNo: 203
-# barcode: ${wcs-slave.barcode[1].id}
-# led: ${wcs-slave.led[1].id}
-# backSta: 204
# 绌烘澘鍏ュ簱鍙�1
emptyInSta[0]:
staNo: 104
barcode: ${wcs-slave.barcode[0].id}
backSta: 103
led: ${wcs-slave.led[0].id}
- # 绌烘澘鍏ュ簱鍙�2
-# emptyInSta[1]:
-# staNo: 205
-# barcode: ${wcs-slave.barcode[2].id}
-# led: ${wcs-slave.led[2].id}
-# # 绌烘澘鍏ュ簱鍙�3
-# emptyInSta[2]:
-# staNo: 203
-# barcode: ${wcs-slave.barcode[1].id}
-# backSta: 204
-# led: ${wcs-slave.led[1].id}
# 鎷f枡鍏ュ簱鍙�1
pickSta[0]:
staNo: 104
barcode: ${wcs-slave.barcode[0].id}
backSta: 103
led: ${wcs-slave.led[0].id}
-# # 鎷f枡鍏ュ簱鍙�2
-# pickSta[1]:
-# staNo: 106
-# barcode: ${wcs-slave.barcode[1].id}
-# backSta: 105
-# led: ${wcs-slave.led[2].id}
# 鍑哄簱鍙�1
outSta[0]:
staNo: 101
led: ${wcs-slave.led[0].id}
- # 鍑哄簱鍙�2
-# outSta[1]:
-# staNo: 205
-# led: ${wcs-slave.led[2].id}
-# # 鍑哄簱鍙�3
-# outSta[2]:
-# staNo: 202
-# led: ${wcs-slave.led[1].id}
# 鏉$爜鎵弿浠�1
barcode[0]:
id: 1
ip: 172.26.11.43
port: 51236
- # 鏉$爜鎵弿浠�2
-# barcode[1]:
-# id: 2
-# ip: 172.26.11.44
-# port: 51236
-# # 鏉$爜鎵弿浠�3
-# barcode[2]:
-# id: 3
-# ip: 172.26.11.45
-# port: 51236
# LED1
led[0]:
id: 1
- ip: 192.168.5.104
+ ip: 127.0.0.1
port: 5005
devpPlcId: ${wcs-slave.devp[0].id}
- staArr: 202
+ staArr: 103,104
crnId: 1
- # LED2
-# led[1]:
-# id: 2
-# ip: 192.168.5.105
-# port: 5005
-# devpPlcId: ${wcs-slave.devp[0].id}
-# staArr: 204
-# crnId: 1
-# # LED3
-# led[2]:
-# id: 3
-# ip: 192.168.5.106
-# port: 5005
-# devpPlcId: ${wcs-slave.devp[0].id}
-# staArr: 205
-# crnId: 1
\ No newline at end of file
+dj:
+ url: http://172.26.11.2/
\ No newline at end of file
diff --git a/src/main/resources/mapper/ApiLogMapper.xml b/src/main/resources/mapper/ApiLogMapper.xml
new file mode 100644
index 0000000..922b8f6
--- /dev/null
+++ b/src/main/resources/mapper/ApiLogMapper.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.mapper.ApiLogMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.entity.ApiLog">
+ <id column="id" property="id" />
+ <result column="uuid" property="uuid" />
+ <result column="namespace" property="namespace" />
+ <result column="url" property="url" />
+ <result column="appkey" property="appkey" />
+ <result column="timestamp" property="timestamp" />
+ <result column="client_ip" property="clientIp" />
+ <result column="request" property="request" />
+ <result column="response" property="response" />
+ <result column="err" property="err" />
+ <result column="result" property="result" />
+ <result column="status" property="status" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="memo" property="memo" />
+
+ </resultMap>
+
+ <delete id="clearWeekBefore">
+ delete from man_api_log
+ where 1=1
+ and datediff(week,create_time,getdate()) >= 1
+ and result != 1
+ </delete>
+
+</mapper>
--
Gitblit v1.9.1