src/main/java/com/zy/asrs/entity/ReportData.java
New file @@ -0,0 +1,44 @@ package com.zy.asrs.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 lombok.Data; import java.io.Serializable; import java.util.Date; @Data @TableName("api_report_data") public class ReportData implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; @TableField("report_id") private String reportId; @TableField("report_json") private String reportJson; @TableField("report_type") private String reportType; @TableField("work_no") private Long workNo; @TableField("three_code") private String threeCode; @TableField("create_time") private Date createTime; @TableField("memo") private String memo; @TableField("report_time") private Date reportTime; } src/main/java/com/zy/asrs/entity/ReportDataLog.java
New file @@ -0,0 +1,45 @@ package com.zy.asrs.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 lombok.Data; import java.io.Serializable; import java.util.Date; @Data @TableName("api_report_data") public class ReportDataLog implements Serializable { @TableId(value = "log_id", type = IdType.AUTO) private Long logId; @TableField("report_data_id") private Long reportDataId; @TableField("report_id") private String reportId; @TableField("report_json") private String reportJson; @TableField("report_type") private String reportType; @TableField("work_no") private Long workNo; @TableField("three_code") private String threeCode; @TableField("create_time") private Date createTime; @TableField("memo") private String memo; @TableField("report_time") private Date reportTime; } src/main/java/com/zy/asrs/mapper/ReportDataLogMapper.java
New file @@ -0,0 +1,13 @@ package com.zy.asrs.mapper; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.ReportData; import com.zy.asrs.entity.ReportDataLog; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface ReportDataLogMapper extends BaseMapper<ReportDataLog> { } src/main/java/com/zy/asrs/mapper/ReportDataMapper.java
New file @@ -0,0 +1,13 @@ package com.zy.asrs.mapper; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.ReportData; import com.zy.asrs.entity.Tag; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface ReportDataMapper extends BaseMapper<ReportData> { } src/main/java/com/zy/asrs/service/ReportDataLogService.java
New file @@ -0,0 +1,11 @@ package com.zy.asrs.service; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.ReportData; import com.zy.asrs.entity.ReportDataLog; public interface ReportDataLogService extends IService<ReportDataLog> { } src/main/java/com/zy/asrs/service/ReportDataService.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.service; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.ReportData; public interface ReportDataService extends IService<ReportData> { } src/main/java/com/zy/asrs/service/impl/ReportDataLogServiceImpl.java
New file @@ -0,0 +1,16 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.zy.asrs.entity.ReportData; import com.zy.asrs.entity.ReportDataLog; import com.zy.asrs.mapper.ReportDataLogMapper; import com.zy.asrs.mapper.ReportDataMapper; import com.zy.asrs.service.ReportDataLogService; import com.zy.asrs.service.ReportDataService; import org.springframework.stereotype.Service; @Service public class ReportDataLogServiceImpl extends ServiceImpl<ReportDataLogMapper, ReportDataLog> implements ReportDataLogService { } src/main/java/com/zy/asrs/service/impl/ReportDataServiceImpl.java
New file @@ -0,0 +1,18 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.exception.CoolException; import com.zy.asrs.entity.ReportData; import com.zy.asrs.entity.Tag; import com.zy.asrs.mapper.ReportDataMapper; import com.zy.asrs.mapper.TagMapper; import com.zy.asrs.service.ReportDataService; import com.zy.asrs.service.TagService; import org.springframework.stereotype.Service; @Service public class ReportDataServiceImpl extends ServiceImpl<ReportDataMapper, ReportData> implements ReportDataService { } src/main/java/com/zy/asrs/task/ReportDataScheduler.java
New file @@ -0,0 +1,164 @@ package com.zy.asrs.task; import cn.hutool.core.bean.BeanUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.ReportData; import com.zy.asrs.entity.ReportDataLog; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.ReportDataLogService; import com.zy.asrs.service.ReportDataService; import com.zy.common.utils.HttpHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; /** * Created by vincent on 2020/7/7 */ @Component public class ReportDataScheduler { private static final Logger log = LoggerFactory.getLogger(ReportDataScheduler.class); @Autowired private ReportDataService reportDataService; @Autowired private ReportDataLogService reportDataLogService; @Autowired private ApiLogService apiLogService; @Value("${mes.appKey}") private String appKey; @Value("${mes.appSecret}") private String appSecret; @Value("${mes.report}") private Boolean flag; @Value("${mes.url}") private String url; @Value("${mes.getTokenUrl}") private String getTokenUrl; @Value("${mes.orderReportPath}") private String orderReportPath; @Value("${mes.pakinReportPath}") private String pakinReportPath; @Value("${mes.buyPakinReportPath}") private String buyPakinReportPath; @Value("${mes.pakoutReportPath}") private String pakoutReportPath; @Value("${mes.getTokenPath}") private String getTokenPath; @Scheduled(cron = "0/10 * * * * ? ") public void execute() { log.info("定时任务开始执行"); if (!flag) { return; } Map<String, Object> mesTokenInfo = getMesTokenInfo(); List<ReportData> reportData = reportDataService.selectList(new EntityWrapper<>()); for (ReportData data : reportData) { process(data, mesTokenInfo); } log.info("定时任务结束执行"); } @Transactional public void process(ReportData data, Map<String, Object> mesTokenInfo) { String mesPath = ""; if ("MES".equals(data.getReportType())) { switch (data.getMemo()) { case "上报mes采购入库信息": mesPath = buyPakinReportPath; break; case "上报mes入库信息": mesPath = pakinReportPath; break; case "上报mes出库信息": mesPath = pakoutReportPath; break; case "上报mes调拨信息": mesPath = orderReportPath; break; } doHttpRequest(data.getReportJson(), mesTokenInfo, data.getMemo(), url, mesPath, null, "127.0.0.1"); reportDataService.deleteById(data.getId()); ReportDataLog reportDataLog = new ReportDataLog(); BeanUtil.copyProperties(data, reportDataLog); reportDataLog.setReportTime(new Date()); reportDataLog.setReportDataId(data.getId()); reportDataLogService.insert(reportDataLog); } } //获取mes token信息 private Map<String, Object> getMesTokenInfo() { Map<String, String> param = new HashMap<>(); param.put("appKey", appKey); param.put("appSecret", appSecret); JSONObject jsonObject = doHttpRequest(JSON.toJSONString(param), null, "获取MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1"); Map<String, Object> headParam = new HashMap<>(); headParam.put("X-AUTH", JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); return headParam; } private JSONObject doHttpRequest(String requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) { String response = ""; boolean success = false; try { response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(requestParam).setHttps(true).build().doPost(); JSONObject jsonObject = JSON.parseObject(response); if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) { log.info("mes接口调用失败,返回信息:" + jsonObject); //TODO 张超 throw new CoolException("mes接口调用失败,返回信息:" + jsonObject); } success = true; return jsonObject; } catch (Exception e) { log.error(e.getMessage()); throw new CoolException(e.getMessage()); } finally { apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success); } } } src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -15,7 +15,6 @@ import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.utils.HttpHandler; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -25,7 +24,6 @@ import java.io.IOException; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Slf4j @@ -113,6 +111,10 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private FlowLogService flowLogService; @Autowired private ReportDataService reportDataService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { @@ -700,9 +702,7 @@ } private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { if (!flag) { return; } if (Cools.isEmpty(agvWrkDetls)) { return; } @@ -714,16 +714,13 @@ reportMesPakinOrder(agvWrkMast, agvWrkDetls); } } try { if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) { reportMesPakoutOrder(agvWrkMast, agvWrkDetls); } if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) { generateMesParam(agvWrkMast, agvWrkDetls); } } catch (Exception e) { e.printStackTrace(); if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) { reportMesPakoutOrder(agvWrkMast, agvWrkDetls); } if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) { generateMesParam(agvWrkMast, agvWrkDetls); } } @@ -846,17 +843,17 @@ //获取mes token信息 private Map<String, Object> getMesTokenInfo() { Map<String, String> param = new HashMap<>(); param.put("appKey", appKey); param.put("appSecret", appSecret); // Map<String, String> param = new HashMap<>(); // param.put("appKey", appKey); // param.put("appSecret", appSecret); // // JSONObject jsonObject = doHttpRequest(param, null, "获取MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1"); // // Map<String, Object> headParam = new HashMap<>(); // headParam.put("X-AUTH", JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); JSONObject jsonObject = doHttpRequest(param, null, "获取MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1"); Map<String, Object> headParam = new HashMap<>(); headParam.put("X-AUTH", JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); return headParam; // return headParam; return null; } //根据楼层默认出库仓位 @@ -877,37 +874,45 @@ return null; } private JSONObject doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) { private void doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) { //保证上报表 ReportData reportData = new ReportData(); reportData.setReportJson(JSONObject.toJSONString(requestParam)); reportData.setMemo(namespace); reportData.setCreateTime(new Date()); reportData.setReportType("MES"); reportDataService.insert(reportData); String response = ""; boolean success = false; try { response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost(); JSONObject jsonObject = JSON.parseObject(response); if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) { log.info("mes接口调用失败,返回信息:" + jsonObject); //TODO 张超 throw new CoolException("mes接口调用失败,返回信息:" + jsonObject); } success = true; return jsonObject; // String succeed = jsonObject.get("succeed").toString(); // String response = ""; // boolean success = false; // // int code = Cools.eq("0",succeed) ? 0 : 1; // if(code != 200){ // throw new CoolException(jsonObject.get("dsc").toString()); // try { // response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost(); // JSONObject jsonObject = JSON.parseObject(response); // // if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) { // log.info("mes接口调用失败,返回信息:" + jsonObject); // //TODO 张超 // throw new CoolException("mes接口调用失败,返回信息:" + jsonObject); // } // success = true; } catch (Exception e) { log.error(e.getMessage()); throw new CoolException(e.getMessage()); } finally { apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success); } // return jsonObject; // //// String succeed = jsonObject.get("succeed").toString(); //// //// int code = Cools.eq("0",succeed) ? 0 : 1; //// if(code != 200){ //// throw new CoolException(jsonObject.get("dsc").toString()); //// } //// success = true; // // } catch (Exception e) { // log.error(e.getMessage()); // throw new CoolException(e.getMessage()); // } finally { // apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success); // } } src/main/resources/application-loc.yml
@@ -94,7 +94,7 @@ # url: http://39.184.149.30:8877 # orderReportPath: /DBMS/U8/CM/add mes: report: false report: true url: https://v3-ali.blacklake.cn/api/openapi/domain/web/v1/route orderReportPath: /inventory/open/v2/transfer_order/ordinary/_execute pakinReportPath: /inventory/open/v2/inbound_order/execute/_inbound src/main/resources/application.yml
@@ -1,4 +1,4 @@ spring: profiles: #dev loc prod active: prod active: loc src/main/resources/mapper/ReportDataLogMapper.xml
New file @@ -0,0 +1,6 @@ <?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.asrs.mapper.ReportDataLogMapper"> </mapper> src/main/resources/mapper/ReportDataMapper.xml
New file @@ -0,0 +1,6 @@ <?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.asrs.mapper.ReportDataMapper"> </mapper>