浏览代码

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

wangxiaoming 7 年之前
父节点
当前提交
a0ccc99160
共有 18 个文件被更改,包括 569 次插入0 次删除
  1. 32 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/tools/AccessToken.java
  2. 30 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/tools/QRCJson.java
  3. 46 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/tools/Token.java
  4. 246 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/tools/WeixinUtil.java
  5. 10 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/DeviceService.java
  6. 10 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachineLogsService.java
  7. 14 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachineService.java
  8. 21 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/DeviceServiceImpl.java
  9. 21 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachineLogsServiceImpl.java
  10. 21 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachineServiceImpl.java
  11. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/DeviceMapper.java
  12. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachineLogsMapper.java
  13. 13 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachineMapper.java
  14. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/deviceMapper.xml
  15. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineLogsMapper.xml
  16. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineMapper.xml
  17. 66 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/MachineController.java
  18. 3 0
      watero-rst-web/src/main/resources/watero-rst-orm.xml

+ 32 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/tools/AccessToken.java

@@ -0,0 +1,32 @@
+package com.iamberry.rst.core.tools;
+
+/**
+ * 微信通用接口凭证
+ * @author fzh
+ */
+public class AccessToken implements java.io.Serializable{
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 2670125377385352574L;
+	private String token; //获取到的凭证
+	private int expiresIn;//凭证有效时间,单位:秒
+
+	public String getToken() {
+		return token;
+	}
+
+	public void setToken(String token) {
+		this.token = token;
+	}
+
+	public int getExpiresIn() {
+		return expiresIn;
+	}
+
+	public void setExpiresIn(int expiresIn) {
+		this.expiresIn = expiresIn;
+	}
+	
+}

+ 30 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/tools/QRCJson.java

@@ -0,0 +1,30 @@
+package com.iamberry.rst.core.tools;
+
+public class QRCJson implements java.io.Serializable{
+
+	private static final long serialVersionUID = -7364608710007647457L;
+	private String url;			  //二维码图片解析后的地址
+	private String ticket;		  //二维码ticket
+	private String expire_seconds;//二维码的有效时间
+	
+	public String getUrl() {
+		return url;
+	}
+	public void setUrl(String url) {
+		this.url = url;
+	}
+	public String getTicket() {
+		return ticket;
+	}
+	public void setTicket(String ticket) {
+		this.ticket = ticket;
+	}
+	public String getExpire_seconds() {
+		return expire_seconds;
+	}
+	public void setExpire_seconds(String expire_seconds) {
+		this.expire_seconds = expire_seconds;
+	}
+	
+	
+}

+ 46 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/tools/Token.java

@@ -0,0 +1,46 @@
+package com.iamberry.rst.core.tools;
+
+import java.util.Date;
+
+/**
+ * accessToken保存时间
+ * @author Administrator
+ *
+ */
+public class Token implements java.io.Serializable{
+
+	private static final long serialVersionUID = 8948377487525030011L;
+	private String tokenId;
+	private String token;
+	private Date endDate;
+	private String appid;
+	public String getTokenId() {
+		return tokenId;
+	}
+	public void setTokenId(String tokenId) {
+		this.tokenId = tokenId;
+	}
+	public String getToken() {
+		return token;
+	}
+	public void setToken(String token) {
+		this.token = token;
+	}
+	public Date getEndDate() {
+		return endDate;
+	}
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+	public String getAppid() {
+		return appid;
+	}
+	public void setAppid(String appid) {
+		this.appid = appid;
+	}
+	@Override
+	public String toString() {
+		return "Token [tokenId=" + tokenId + ", token=" + token + ", endDate="
+				+ endDate + "]";
+	}
+}

+ 246 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/tools/WeixinUtil.java

@@ -0,0 +1,246 @@
+package com.iamberry.rst.core.tools;
+
+import com.iamberry.cache.LocalCache;
+import com.iamberry.wechat.core.entity.wx.*;
+import com.iamberry.wechat.tools.MyX509TrustManager;
+import com.iamberry.wechat.tools.NameUtils;
+import net.sf.json.JSONObject;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.ConnectException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.Date;
+import java.util.logging.Logger;
+
+/**
+ * 公众平台通用接口工具类
+ * 
+ * @author fzh
+ * 
+ */
+public class WeixinUtil {
+	
+	
+	// 日志
+	private  static org.slf4j.Logger logger = LoggerFactory.getLogger(WeixinUtil.class);
+	
+	// 发送短信模板的URL
+	private static String sendTemplate = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
+	
+	// token缓存
+	private static LocalCache<String, Token> cache = new LocalCache<>(2);
+	
+	/**
+	 * 网页授权获取access_token
+	 *
+	 * @param code
+	 * @return
+	 */
+	public static JSONObject getParamByOauth2(String code) {
+		JSONObject jsonObject = null;
+		try {
+			// 得到access_token和openid
+			jsonObject = httpRequest(NameUtils.oauth2_getToken_url.replaceAll("CODE", code).replaceAll("APPID", NameUtils.getConfig("appId")).replaceAll("SECRET", NameUtils.getConfig("appSecret")), "GET", null);
+			if (null != jsonObject) {
+				return jsonObject;
+			}
+		} catch (Exception e) {
+			// 获取token失败
+			logger.error("获取token失败 errcode:{} errmsg:{}" + jsonObject.getInt("errcode") + jsonObject.getString("errmsg"));
+		}
+		return null;
+	}
+
+	/**
+	 * 发起https请求并获取结果
+	 *
+	 * @param requestUrl
+	 *            请求地址
+	 * @param requestMethod
+	 *            请求方式(GET/POST)
+	 * @param outputStr
+	 *            提交的数据
+	 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
+	 *         java.lang.ClassCastException:
+	 *         sun.net.www.protocol.http.HttpURLConnection cannot be cast to
+	 *         javax.net.ssl.HttpsURLConnection
+	 */
+	public static JSONObject httpRequest(String requestUrl,
+			String requestMethod, String outputStr) {
+		JSONObject jsonObject = null;
+		StringBuffer buffer = new StringBuffer();
+		try {
+			// 创建SSLContext对象,并使用我们指定的信任管理器初始化
+			TrustManager[] tm = { new MyX509TrustManager() };
+			SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
+			sslContext.init(null, tm, new java.security.SecureRandom());
+			// 从上述SSLContext对象中得到SSLSocketFactory对象
+			SSLSocketFactory ssf = sslContext.getSocketFactory();
+
+			URL url = new URL(requestUrl);
+			HttpsURLConnection httpUrlConn = (HttpsURLConnection) url
+					.openConnection();
+			httpUrlConn.setSSLSocketFactory(ssf);
+
+			httpUrlConn.setDoOutput(true);
+			httpUrlConn.setDoInput(true);
+			httpUrlConn.setUseCaches(false);
+
+			// 设置请求方式(GET/POST)
+			httpUrlConn.setRequestMethod(requestMethod);
+			if ("GET".equalsIgnoreCase(requestMethod))
+				httpUrlConn.connect();
+
+			// 当有数据需要提交时
+			if (null != outputStr) {
+				OutputStream outputStream = httpUrlConn.getOutputStream();
+				// 注意编码格式,防止中文乱码
+				outputStream.write(outputStr.getBytes("UTF-8"));
+				outputStream.close();
+			}
+
+			// 将返回的输入流转换成字符串
+			InputStream inputStream = httpUrlConn.getInputStream();
+			InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
+			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+
+			String str = null;
+			while ((str = bufferedReader.readLine()) != null) {
+				buffer.append(str);
+			}
+			bufferedReader.close();
+			inputStreamReader.close();
+			// 释放资源
+			inputStream.close();
+			inputStream = null;
+			httpUrlConn.disconnect();
+			jsonObject = JSONObject.fromObject(buffer.toString());
+		} catch (ConnectException ce) {
+			Logger.getAnonymousLogger().info("Weixin server connection timed out.");
+		} catch (Exception e) {
+			Logger.getAnonymousLogger().info("信任管理器请求时..." + e);
+			Logger.getAnonymousLogger().info("jsonObject..." + jsonObject);
+		}
+		return jsonObject;
+	}
+
+	/**
+	 * 获取access_token
+	 *
+	 * @param appid
+	 *            凭证
+	 * @param appsecret
+	 *            密钥
+	 * @return
+	 */
+	public static AccessToken getAccessToken(String appid, String appsecret) {
+
+		// 根据public No查询access_token
+		Token token = cache.get(NameUtils.getConfig("pubNo"));
+
+		AccessToken accessToken = null;
+		//判断数据库中是否存在token
+		if (token != null) {
+			//判断token是否失效
+			Date date = new Date();
+			if (date.getTime() < token.getEndDate().getTime()) {
+				accessToken = new AccessToken();
+				accessToken.setExpiresIn(7200);
+				accessToken.setToken(token.getToken());
+				return accessToken;
+			} else {
+				String requestUrl = NameUtils.access_token_url.replace("APPID", NameUtils.getConfig("appId")).replace("APPSECRET", NameUtils.getConfig("appSecret"));
+				JSONObject jsonObject = httpRequest(requestUrl, "GET", null);
+				// 如果请求成功
+				if (null != jsonObject) {
+					try {
+						accessToken = new AccessToken();
+						accessToken.setToken(jsonObject.getString("access_token"));
+						accessToken.setExpiresIn(jsonObject.getInt("expires_in"));
+						token.setToken(accessToken.getToken());
+						token.setEndDate(new Date(date.getTime() + 6500000));
+						token.setAppid(NameUtils.getConfig("pubNo"));
+						try {
+							cache.put(NameUtils.getConfig("pubNo"), token);
+						} catch (Exception e) {
+							logger.error(e.getMessage());
+						}
+						return accessToken;
+					} catch (Exception e) {
+						accessToken = null;
+						// 获取token失败
+						logger.error("获取token失败 errcode:{} errmsg:{}" + jsonObject.getInt("errcode") + jsonObject.getString("errmsg"));
+					}
+				}
+			}
+		} else {
+			String requestUrl = NameUtils.access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
+			JSONObject jsonObject = httpRequest(requestUrl, "GET", null);
+			// 如果请求成功
+			if (null != jsonObject) {
+				try {
+					accessToken = new AccessToken();
+					accessToken.setToken(jsonObject.getString("access_token"));
+					accessToken.setExpiresIn(jsonObject.getInt("expires_in"));
+
+					token = new Token();
+					token.setToken(accessToken.getToken());
+					token.setEndDate(new Date(new Date().getTime() + 6500000));
+					token.setAppid(NameUtils.getConfig("pubNo"));
+
+					try {
+						cache.put(NameUtils.getConfig("pubNo"), token);
+					} catch (Exception e) {
+						// 更新失败
+						logger.error(e.getMessage());
+					}
+					return accessToken;
+				} catch (Exception e) {
+					accessToken = null;
+					// 获取token失败
+					logger.error("获取token失败 errcode:{} errmsg:{}" + jsonObject.getInt("errcode") + jsonObject.getString("errmsg"));
+				}
+			}
+		}
+		return accessToken;
+	}
+
+
+
+	/**
+	 * 创建二维码
+	 *
+	 * @return
+	 */
+	public static QRCJson createQrcode(String json) {
+		QRCJson qrcJson = new QRCJson();
+		try {
+			AccessToken at = getAccessToken(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"));
+			if (at != null) {
+				String token = at.getToken();
+				JSONObject jsonObject = httpRequest(NameUtils.get_token_url.replaceAll("TOKEN", token), "POST", json);
+				if (jsonObject != null) {
+					String ticket = URLEncoder.encode(jsonObject.getString("ticket"), "UTF-8");
+					qrcJson.setTicket(ticket);
+					qrcJson.setUrl(NameUtils.show_qrcode_url + ticket);
+					if (json.contains("expire_seconds")) {// 临时二维码才有过期时间
+						qrcJson.setExpire_seconds(jsonObject.getString("expire_seconds"));
+					}
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return qrcJson;
+	}
+
+}

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/DeviceService.java

@@ -0,0 +1,10 @@
+package com.iamberry.rst.faces.pts;
+
+/**
+ * 设备管理service
+ * Created by wangxiaoming on 2017/8/29.
+ */
+public interface DeviceService {
+
+
+}

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachineLogsService.java

@@ -0,0 +1,10 @@
+package com.iamberry.rst.faces.pts;
+
+/**
+ * 机器生产日志service
+ * Created by wangxiaoming on 2017/8/29.
+ */
+public interface MachineLogsService {
+
+
+}

+ 14 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/pts/MachineService.java

@@ -0,0 +1,14 @@
+package com.iamberry.rst.faces.pts;
+
+import com.iamberry.rst.core.pts.Produce;
+
+import java.util.List;
+
+/**
+ * 机器管理service
+ * Created by wangxiaoming on 2017/8/29.
+ */
+public interface MachineService {
+
+
+}

+ 21 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/DeviceServiceImpl.java

@@ -0,0 +1,21 @@
+package com.iamberry.rst.service.pts;
+
+import com.iamberry.rst.faces.pts.DeviceService;
+import com.iamberry.rst.faces.pts.MachineService;
+import com.iamberry.rst.service.pts.mapper.DeviceMapper;
+import com.iamberry.rst.service.pts.mapper.MachineMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 设备管理
+ * Created by wangxiaoming on 2017/8/28.
+ */
+@Service
+public class DeviceServiceImpl implements DeviceService {
+
+    @Autowired
+    private DeviceMapper deviceMapper;
+
+}

+ 21 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachineLogsServiceImpl.java

@@ -0,0 +1,21 @@
+package com.iamberry.rst.service.pts;
+
+import com.iamberry.rst.faces.pts.DeviceService;
+import com.iamberry.rst.faces.pts.MachineLogsService;
+import com.iamberry.rst.service.pts.mapper.DeviceMapper;
+import com.iamberry.rst.service.pts.mapper.MachineLogsMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 机器生产流程日志管理
+ * Created by wangxiaoming on 2017/8/28.
+ */
+@Service
+public class MachineLogsServiceImpl implements MachineLogsService {
+
+    @Autowired
+    private MachineLogsMapper machineLogsMapper;
+
+}

+ 21 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/MachineServiceImpl.java

@@ -0,0 +1,21 @@
+package com.iamberry.rst.service.pts;
+
+import com.iamberry.rst.faces.pts.MachineService;
+import com.iamberry.rst.service.pts.mapper.MachineMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+/**
+ * 机器管理
+ * Created by wangxiaoming on 2017/8/28.
+ */
+@Service
+public class MachineServiceImpl implements MachineService {
+
+    @Autowired
+    private MachineMapper machineMapper;
+
+}

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/DeviceMapper.java

@@ -0,0 +1,9 @@
+package com.iamberry.rst.service.pts.mapper;
+
+/**
+ * 设备管理
+ * Created by wangxiaoming on 2017/8/29.
+ */
+public interface DeviceMapper {
+
+}

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachineLogsMapper.java

@@ -0,0 +1,9 @@
+package com.iamberry.rst.service.pts.mapper;
+
+/**
+ * 机器生产流程日志管理
+ * Created by wangxiaoming on 2017/8/29.
+ */
+public interface MachineLogsMapper {
+
+}

+ 13 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/MachineMapper.java

@@ -0,0 +1,13 @@
+package com.iamberry.rst.service.pts.mapper;
+
+import com.iamberry.rst.core.pts.Produce;
+
+import java.util.List;
+
+/**
+ * 机器管理
+ * Created by wangxiaoming on 2017/8/29.
+ */
+public interface MachineMapper {
+
+}

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/deviceMapper.xml

@@ -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.iamberry.rst.service.pts.mapper.DeviceMapper">
+
+
+</mapper>

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineLogsMapper.xml

@@ -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.iamberry.rst.service.pts.mapper.MachineLogsMapper">
+
+
+</mapper>

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/pts/mapper/machineMapper.xml

@@ -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.iamberry.rst.service.pts.mapper.MachineMapper">
+
+
+</mapper>

+ 66 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/pts/MachineController.java

@@ -0,0 +1,66 @@
+package com.iamberry.rst.controllers.pts;
+
+import com.alibaba.dubbo.common.json.JSON;
+import com.iamberry.rst.core.pts.PtsMachine;
+import com.iamberry.rst.core.tools.QRCJson;
+import com.iamberry.rst.core.tools.WeixinUtil;
+import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.tools.ResultInfo;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Created by Administrator on 2017/8/29.
+ */
+@Controller
+@RequestMapping("/mcahine")
+public class MachineController {
+    @RequestMapping("/uploadProcessOptions")
+    public ResponseJson uploadProcessOptions(HttpServletRequest request,@RequestBody JSONObject query){
+        ResponseJson rj = new ResponseJson();
+        if(query == null){
+            rj.setResultMsg("200");
+            rj.setResultMsg("ERROR");
+            return rj;
+        }
+        Integer employeeId = query.getInt("employeeId");//员工id
+        Integer produceId = query.getInt("produceId");//产品id
+        //生成条形码,二维码
+        String berQrcode = String.valueOf(employeeId+new Date().getTime());
+        String json = String.format(NameUtils.QR_LIMIT_STR_SCENE, ResultInfo.barCodePrefix+berQrcode);
+        QRCJson qrc = WeixinUtil.createQrcode(json);
+        if (!(qrc == null || qrc.getUrl() == null || qrc.getUrl().isEmpty())) {
+            PtsMachine ptsMachine = new PtsMachine();
+            ptsMachine.setMachineQrcode(qrc.getUrl());//二维码
+            ptsMachine.setMachineBarcode(berQrcode);//条形码
+            ptsMachine.setMachineStatus(1);//机器状态
+            ptsMachine.setMachineProducedTime(new Date());//生产时间
+            ptsMachine.setMachineIsPrint(1);//是否打印1:未打印2:已打印
+            ptsMachine.setMachineCompoundImg("合成的图片url");
+            ptsMachine.setMachineProcessState(1);//生成流程状态1.正常2.异常
+            ptsMachine.setMachineCreateTime(new Date());//创建时间
+
+        }
+        JSONArray nodes = query.getJSONArray("nodes");//选项集合(包含一个或多个工序选项,详情见示例)
+        Iterator<Object> it = nodes.iterator();
+        while (it.hasNext()) {
+            JSONObject jsonObject = (JSONObject) it.next();
+            /*System.out.println(jsonObject.toString());*/
+            Integer processId = jsonObject.getInt("processId"); //工序id
+            Integer nodeId = jsonObject.getInt("nodeId"); //工序选项id
+            Long logsProcessTime = jsonObject.getLong("logsProcessTime"); //工序执行时间 (时间戳)
+
+        }
+
+        return rj;
+    }
+}

+ 3 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -62,5 +62,8 @@
 		<mapper resource="com/iamberry/rst/service/faq/mapper/faqMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/pts/mapper/produceMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/pts/mapper/ptsEmployeeMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/pts/mapper/machineMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/pts/mapper/deviceMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/pts/mapper/machineLogsMapper.xml"/>
 	</mappers>
 </configuration>