|
@@ -0,0 +1,82 @@
|
|
|
|
|
+package com.jeesite.test;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hutool.core.codec.Base64;
|
|
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
|
|
+import org.junit.Test;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.HashMap;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 手动补录并绑定长码(膨胀梁码)和短码(底板码),不启动 Spring
|
|
|
|
|
+ * 流程同正常生产:登录 -> check 登记长码 -> verify 验证长码 -> pcbind 绑定,任一步失败即停止
|
|
|
|
|
+ */
|
|
|
|
|
+public class HmbBindTest {
|
|
|
|
|
+
|
|
|
|
|
+ private static final String BASE = "http://192.168.17.170:8980/js/a";
|
|
|
|
|
+
|
|
|
|
|
+ private static final String LONG_SN = "F956210325198AJ21A010030"; // 长码 膨胀梁码
|
|
|
|
|
+ private static final String SHORT_SN = "CZ0601956A230014"; // 短码 底板码
|
|
|
|
|
+
|
|
|
|
|
+ // 与客户端登录框默认账号一致,密码按客户端方式 Base64 传
|
|
|
|
|
+ private static final String USER = "system";
|
|
|
|
|
+ private static final String PASSWORD = "Aa111111";
|
|
|
|
|
+
|
|
|
|
|
+ @Test
|
|
|
|
|
+ public void bind() {
|
|
|
|
|
+ String sid = login();
|
|
|
|
|
+ if (sid == null) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Object> hmb = new HashMap<>();
|
|
|
|
|
+ hmb.put("__ajax", "json");
|
|
|
|
|
+ hmb.put("__sid", sid);
|
|
|
|
|
+ hmb.put("sn", LONG_SN);
|
|
|
|
|
+ if (!call("check 登记长码", BASE + "/mes/mesProductHmb/check", hmb)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!call("verify 验证长码", BASE + "/mes/mesProductHmb/verify", hmb)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, Object> bind = new HashMap<>();
|
|
|
|
|
+ bind.put("__ajax", "json");
|
|
|
|
|
+ bind.put("sn", SHORT_SN);
|
|
|
|
|
+ bind.put("wsn", LONG_SN);
|
|
|
|
|
+ bind.put("oprno", "OP105A"); // 接口只允许 OP105 绑定
|
|
|
|
|
+ bind.put("lineSn", "CZ060");
|
|
|
|
|
+ bind.put("ucode", USER);
|
|
|
|
|
+ call("pcbind 绑定", BASE + "/mes/mesProductRecord/pcbind", bind);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 登录拿 sessionid,失败返回 null;shiro 只在 POST 时执行登录(客户端 LoginFarme 也是 POST)
|
|
|
|
|
+ private String login() {
|
|
|
|
|
+ Map<String, Object> p = new HashMap<>();
|
|
|
|
|
+ p.put("__ajax", "json");
|
|
|
|
|
+ p.put("validCode", "");
|
|
|
|
|
+ p.put("username", Base64.encode(USER));
|
|
|
|
|
+ p.put("password", Base64.encode(PASSWORD));
|
|
|
|
|
+ String ret = HttpUtil.post(BASE + "/login", p, 15000);
|
|
|
|
|
+ System.out.println("[登录] " + ret);
|
|
|
|
|
+ JSONObject obj = JSONUtil.parseObj(ret);
|
|
|
|
|
+ if (!"true".equalsIgnoreCase(obj.getStr("result"))) {
|
|
|
|
|
+ System.out.println("登录失败,停止");
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ return obj.getStr("sessionid");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 发 POST 表单,打印结果,result=true 返回 true
|
|
|
|
|
+ private boolean call(String name, String url, Map<String, Object> params) {
|
|
|
|
|
+ String ret = HttpUtil.post(url, params, 15000);
|
|
|
|
|
+ System.out.println("[" + name + "] " + ret);
|
|
|
|
|
+ boolean ok = JSONUtil.isTypeJSON(ret) && "true".equalsIgnoreCase(JSONUtil.parseObj(ret).getStr("result"));
|
|
|
|
|
+ if (!ok) {
|
|
|
|
|
+ System.out.println(name + " 失败,停止");
|
|
|
|
|
+ }
|
|
|
|
|
+ return ok;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|