/webccr/src/com/emis/caesar/senao/event/button/TBtnINSU.java

https://bitbucket.org/sanliou/synccr · Java · 585 lines · 457 code · 36 blank · 92 comment · 77 complexity · 388009d1cdeba41b3a8cc455930e80ad MD5 · raw file

  1. package com.emis.caesar.senao.event.button;
  2. import com.emis.caesar.senao.data.TEntryEdit;
  3. import com.emis.caesar.senao.data.TEntryEdits;
  4. import com.emis.caesar.senao.event.TForceAssignSalesEventContext;
  5. import com.emis.caesar.senao.unit.TCcrConst;
  6. import com.emis.caesar.senao.unit.TInsuData;
  7. import com.emis.caesar.senao.unit.sale.TExItem;
  8. import com.emis.caesar.senao.unit.sale.TProduct;
  9. import com.emis.caesar.senao.unit.sale.TSaleItem;
  10. import com.emis.caesar.senao.util.CcrUtil;
  11. import com.emis.caesar.senao.util.GenUtil;
  12. import com.emis.caesar.senao.webAPI.HTTPUtil;
  13. import com.emis.caesar.senao.webAPI.WebApiUtil;
  14. import com.emis.db.emisSQLCache;
  15. import com.emis.util.emisUtil;
  16. import com.emis.util.emisXmlUtil;
  17. import org.w3c.dom.Document;
  18. import org.w3c.dom.Element;
  19. import org.w3c.dom.Node;
  20. import org.w3c.dom.NodeList;
  21. import java.io.ByteArrayInputStream;
  22. //ERP CHECK USE ADD BY DAFF 20181224
  23. import org.apache.http.NameValuePair;
  24. import org.apache.http.message.BasicNameValuePair;
  25. import java.util.List;
  26. import java.util.ArrayList;
  27. import com.emis.caesar.senao.Json.CheckImeiHead;
  28. /**
  29. * 手機保險(年繳) 不可能客訂
  30. * 哪些交易流程狀態下可執行: 等待交易,正在交易
  31. * 流程說明:
  32. * 1.先輸入IMEI碼
  33. * 2.取得保費資訊函數 GET_INSU_PRICE
  34. */
  35. public class TBtnINSU extends TForceAssignSalesEventContext {
  36. private String sType = ""; // INSU / INSU_OL add by daff 20180615
  37. private String sfrom = ""; // INSU / INSU_OL add by daff 20180615
  38. private TEntryEdits FoEntryIMEI = null; // 輸入IMEI
  39. private String IMEI = "";
  40. private String PNO = ""; // 保險料號
  41. private int LIST_PRICE = 0; // 建議售價
  42. private String CHT_MM_NO = ""; // 組合包
  43. private String PAYMENT = ""; // 繳費型態
  44. private int POEXP = 0; // 專案成本(保費)
  45. private int DEDUCTIBLE = 0; // 自負額
  46. private String OD_END_DATE = ""; // 終止日期
  47. private String PRODUCTTYPE = ""; // 產品代號
  48. private String PERIODS = ""; // 期數(月數)
  49. private int COMPEN_1 = 0; // 最高賠償次數
  50. private int DEDUCTIBLE_ORG = 0; // 自負額原機維修
  51. private String PONO = ""; // 保單號碼
  52. private TInsuData InsuData = null;
  53. //CCR IMEI GET CHANGE TO DB FUNCTION ADD BY DAFF 20180629
  54. private String sP_BRAND= ""; //廠牌
  55. private String sP_NAME= ""; //品名
  56. private String sP_VPN= ""; //機型
  57. private String sP_NO= ""; //料號
  58. private int sP_PRICE = 0; //建議售價
  59. //Erp imei check add by daff 20181224
  60. private String SALEDATE = ""; // 線上銷售日期
  61. private String AGNTNO = ""; // 通路別代碼
  62. private String ITEMNO = ""; // 料號
  63. //ADD BY DAFF 新鈦金月繳版修正
  64. boolean stepGetInsp = true;
  65. private String sS_NO= "";
  66. private String sPERIODS= "";
  67. private String sREPORT_FILENAME= "";
  68. public TBtnINSU() {
  69. super();
  70. // 該事件執行成功后的下一個流程
  71. // FiNextState = TCcrConst.CPS_LOCK_PAY;
  72. }
  73. // 神腦線上購機O2O/臨櫃CCR 區分 add by daff 20180615
  74. //ADD BY DAFF 新鈦金月繳版修正 20190322
  75. public TBtnINSU(String sType_) {
  76. super();
  77. FiNextState = TCcrConst.CPS_LOCK_PAY;
  78. sType = sType_;
  79. if ("INSU".equals(sType)){
  80. sfrom = TCcrConst.INSU;
  81. PAYMENT = TCcrConst.PAYMENT_O ;
  82. }
  83. else if("INSU_OL".equals(sType)){
  84. sfrom = TCcrConst.INSU_OL;
  85. PAYMENT = TCcrConst.PAYMENT_O ;
  86. } else if("INSU_M".equals(sType)){
  87. sfrom = TCcrConst.INSU;
  88. PAYMENT = TCcrConst.PAYMENT_M ;
  89. } else if("INSU_OL_M".equals(sType)){
  90. sfrom = TCcrConst.INSU_OL;
  91. PAYMENT = TCcrConst.PAYMENT_M ;
  92. }else{
  93. sfrom = TCcrConst.INSU;
  94. PAYMENT = TCcrConst.PAYMENT_O ;
  95. }
  96. //CcrUtil.setMessage("SOURCE_FROM:" + TCcrConst.s_from);
  97. }
  98. /**
  99. * 檢核在哪些交易流程狀態下可執行
  100. */
  101. protected boolean inCcrSate() {
  102. int aRunSate[] = { TCcrConst.CPS_WAIT_SALE, TCcrConst.CPS_SALE};
  103. return GenUtil.isIntKeyInArray(aRunSate, FoCcr.getCurrnetState());
  104. }
  105. /**
  106. * 彈出窗體裡面的按鈕事件
  107. */
  108. public boolean runEventMethod(String sMethod_) {
  109. if (sMethod_.equals("entryIMEIok")) {
  110. return entryIMEIok();
  111. } else if (sMethod_.equals("entryIMEIcancel")) {
  112. return Cancel();
  113. } else if (sMethod_.equals("clickOK")) {
  114. return execute();
  115. } else {
  116. return super.runEventMethod(sMethod_);
  117. }
  118. }
  119. /**
  120. * 取消
  121. * @return boolean
  122. */
  123. protected boolean Cancel() {
  124. FsErrMsg = TCcrConst.MSG_HIDE;
  125. return eventOver(false);
  126. }
  127. protected boolean entryIMEIok() {
  128. CcrUtil.setMessage("IMEI輸入:" + FoEntryIMEI.getEdit(0).getText());
  129. String msg = "";
  130. if (!emisUtil.isEmpty(FoEntryIMEI.getEdit(0).getText())) {
  131. IMEI = FoEntryIMEI.getEdit(0).getText().toUpperCase(); //add by Ares 20200602 IMEI轉成大寫
  132. sS_NO =FoCcr.getStore().getFLDxS_NO(); //ADD BY DAFF 新鈦金月繳版修正 20190322
  133. //ADD BY DAFF 新鈦金月繳版修正 20190322 start
  134. //剛剛已經開過分期視窗了 第二次我就不給他開了
  135. if(stepGetInsp){
  136. if(sfrom.equals("O2O")){
  137. String API_ERP_RESULT = doCallErpChkimei(IMEI, "POS");
  138. if (!emisUtil.isEmpty(API_ERP_RESULT)) {
  139. FsErrMsg = API_ERP_RESULT;
  140. CcrUtil.setMessage("FsErrMsg:" + FsErrMsg);
  141. return eventOver(false);
  142. }
  143. }
  144. stepGetInsp = false;
  145. return WinInsuInspNo();
  146. }
  147. sPERIODS = getInsuData().getPERIODS();
  148. //add by daff 20181224 erpimeicheck START
  149. if (sfrom.equals("O2O")) {
  150. //ADD BY DAFF INSUINSP
  151. msg = FoCcr.getDbData.GET_INSU_ERPIMEI_PRICE(ITEMNO,SALEDATE,AGNTNO,PAYMENT,sS_NO,sPERIODS);
  152. }else {
  153. //ADD BY DAFF INSUINSP
  154. msg = FoCcr.getDbData.GET_INSU_PRICE(IMEI,sfrom,PAYMENT,sS_NO,sPERIODS);
  155. }
  156. //ADD BY DAFF 新鈦金月繳版修正 20190322 end
  157. //add by daff 20181224 erpimeicheck END
  158. // msg = "Y,4000,2880,S711,48xxxxxxxx,Y,SENMA6,1000,12,0,3";
  159. if (!emisUtil.isEmpty(msg)) {
  160. // Y(成功),建議售價,保費,組合包,保險料號,繳費型態,產品代號,自負額,保險期數(月),自負額原機維修,最高賠償次數
  161. // N(失敗),組合包,失敗原因 (N,S711,取得核保價格異常)
  162. String [] result = msg.split(",");
  163. if (result != null && "Y".equals(result[0])) {
  164. String API_RESULT = doCallInsu(result);
  165. // API_RESULT = "";
  166. if (!emisUtil.isEmpty(API_RESULT)) {
  167. FsErrMsg = API_RESULT;
  168. return eventOver(false);
  169. }
  170. //
  171. PNO = result[4];
  172. LIST_PRICE = emisUtil.parseInt(result[1]);
  173. CHT_MM_NO = result[3];
  174. PAYMENT = result[5];
  175. POEXP = emisUtil.parseInt(result[2]);
  176. DEDUCTIBLE = emisUtil.parseInt(result[7]);
  177. OD_END_DATE = emisUtil.getAfterDay(emisUtil.parseInt(result[8]));
  178. PRODUCTTYPE = result[6];
  179. PERIODS = result[8];
  180. COMPEN_1 = emisUtil.parseInt(result[10]);
  181. DEDUCTIBLE_ORG = emisUtil.parseInt(result[9]);
  182. //CCR IMEI GET CHANGE TO DB FUNCTION ADD BY DAFF 20180629
  183. // ,廠牌,品名,機型,料號,建議售價
  184. sP_BRAND= result[11];
  185. sP_NAME= result[12];
  186. sP_VPN= result[13];
  187. sP_NO= result[14];
  188. sP_PRICE= emisUtil.parseInt(result[15]);
  189. //ADD BY DAFF 新鈦金月繳版修正 20190322
  190. sREPORT_FILENAME = result[16];
  191. } else {
  192. if (result.length == 3) {
  193. FsErrMsg = result[2] + "(" + result[1] + ")";
  194. } else {
  195. FsErrMsg = result[1];
  196. }
  197. return eventOver(false);
  198. }
  199. } else {
  200. FsErrMsg = "無法取得GET_INSU_PRICE函數";
  201. return eventOver(false);
  202. }
  203. } else {
  204. FsErrMsg = "IMEI不能為空";
  205. return eventOver(false);
  206. }
  207. return openWinInfoData();
  208. }
  209. // 開啟保險分期畫面
  210. //ADD BY DAFF 新鈦金月繳版修正 20190322
  211. protected boolean WinInsuInspNo() {
  212. FoCcr.UInotify.swInsuInsp(this, "entryIMEIok", "entryIMEIcancel",IMEI,sfrom,PAYMENT,sS_NO,ITEMNO,SALEDATE,AGNTNO);
  213. return eventOver(true);
  214. }
  215. // 開啟基本資料畫面
  216. protected boolean openWinInfoData() {
  217. FoCcr.UInotify.swInsuInfo(this, "clickOK", "entryIMEIcancel");
  218. return eventOver(true);
  219. }
  220. // 檢核資訊
  221. protected boolean verifyPrecondition() {
  222. // 呼叫API要有SL_KEY
  223. if (!forceAssignSales()) {
  224. return eventOver(false);
  225. }
  226. // 檢查是否有輸入業務員
  227. if (FoCcr.getUser() == null) {
  228. FsErrMsg = "請輸入業務員";
  229. return eventOver(false);
  230. } else {
  231. if ("".equals(FoCcr.getUser().getFLDxST_KEY())) {
  232. FsErrMsg = "請輸入業務員";
  233. return eventOver(false);
  234. }
  235. }
  236. // 小計會有問題要先換狀態
  237. FoCcr.setCurrnetState(TCcrConst.CPS_SALE);
  238. NotifyMainFormUpdate();
  239. return entryData();
  240. }
  241. // 輸入資料
  242. protected boolean entryData() {
  243. // 彈出視窗輸入IMEI(主要是掃條碼自帶enter鍵, 不適合於輸入框直接刷入)
  244. FoEntryIMEI = new TEntryEdits("輸入");
  245. FoEntryIMEI.addEdit(new TEntryEdit("IMEI", true, true));
  246. FoCcr.UInotify.swEntryEdits(FoEntryIMEI, this, "entryIMEIok", "entryIMEIcancel");
  247. return handover();
  248. }
  249. // 執行交易品項新增&結束
  250. public boolean execute() {
  251. String result = addSaleItem();
  252. if (!emisUtil.isEmpty(result)) {
  253. FsErrMsg = result;
  254. return eventOver(false);
  255. }
  256. //
  257. CcrUtil.setMessage("Enter payment and lock pay");
  258. // 幫做小計
  259. FoSale.setInsuSfrom(sfrom);//神腦保險年繳代收保費 增加付款方式UI ADD BY DAFF 20190110
  260. FoCcr.BTNnotify.runBtnEvent(TCcrConst.BTN_SUBTOTAL);
  261. //
  262. if (FoSale !=null && FoSale.getUnpaidAmout() != 0) {
  263. FiNextState = TCcrConst.CPS_LOCK_PAY;
  264. setNextCcrState();
  265. }
  266. return eventOver(true);
  267. // 原因網頁程式彈窗也不會停止後續的程式碼
  268. //return finalProcedure();
  269. }
  270. // 新增交易項
  271. public String addSaleItem() {
  272. // 商品項  
  273. // PONO = "CHTAAC000000001";
  274. //神腦保險年繳代收保費 增加付款方式UI ADD BY DAFF 20190110START
  275. FoSale.setInsuSPoexp(POEXP);
  276. FoSale.setCHT_MM_TYPE(PRODUCTTYPE);
  277. FoSale.setPONO_B(PONO);
  278. //神腦保險年繳代收保費 增加付款方式UI ADD BY DAFF 20190110 END
  279. FoSale.setREPORT_FILENAME(sREPORT_FILENAME);//ADD BY DAFF 新鈦金月繳版修正 20190322
  280. String result = "";
  281. TProduct product = new TProduct();
  282. boolean isOK = FoCcr.getDbData.getProduct(
  283. FoCcr.getStore().getFLDxS_NO(), PNO, product);
  284. if (!isOK) {
  285. result = "查無保險料號(" + PNO + ")";
  286. return result;
  287. }
  288. // 檢核5本交易是否該屬性一致
  289. String msg5 = CcrUtil.isSalable5(FoSale, product);
  290. if (!emisUtil.isEmpty(msg5)) {
  291. return msg5;
  292. }
  293. // 檢核6是否能混合商品 
  294. String msg6 = CcrUtil.isSalable6(FoSale, product);
  295. if (!emisUtil.isEmpty(msg6)) {
  296. return msg6;
  297. }
  298. TSaleItem saleItem = new TSaleItem(product);
  299. saleItem.setQty(1);
  300. saleItem.setActCode(TSaleItem.NORMAL_PLU);
  301. saleItem.setFsBusType(product.getFLDxBUS_TYPE());
  302. saleItem.setPONO(PONO);
  303. saleItem.setCHT_MM_TYPE(PRODUCTTYPE);
  304. saleItem.setPOEXP(POEXP);
  305. // 將資料填入TInsuData
  306. InsuData.setCHT_MM_NO(CHT_MM_NO);
  307. InsuData.setPONO(PONO);
  308. InsuData.setCHA_IMEI(IMEI);
  309. InsuData.setPAYMENT(PAYMENT);
  310. TProduct product_imei = new TProduct();
  311. boolean isOK2 = FoCcr.getDbData.getProductFromIMEI(
  312. FoCcr.getStore().getFLDxS_NO(), IMEI, product_imei, false);
  313. //CCR IMEI GET CHANGE TO DB FUNCTION ADD BY DAFF 20180629 START
  314. /*
  315. if (!isOK2) {
  316. result = "查無IMEI料號(" + IMEI + ")";
  317. return result;
  318. }
  319. InsuData.setSUPNO(product_imei.getFLDxP_BRAND());
  320. InsuData.setMARADESC(product_imei.getFLDxP_NAME());
  321. InsuData.setMODEL(product_imei.getFLDxP_VPN());
  322. InsuData.setMOBILE_P_NO(product_imei.getFLDxP_NO());
  323. InsuData.setLIST_PRICE((int) product_imei.getPrice());
  324. */
  325. InsuData.setSUPNO(sP_BRAND);
  326. InsuData.setMARADESC(sP_NAME);
  327. InsuData.setMODEL(sP_VPN);
  328. InsuData.setMOBILE_P_NO(sP_NO);
  329. InsuData.setLIST_PRICE((int) sP_PRICE);
  330. //CCR IMEI GET CHANGE TO DB FUNCTION ADD BY DAFF 20180629 END
  331. InsuData.setPOEXP(POEXP);
  332. InsuData.setDEDUCTIBLE(DEDUCTIBLE);
  333. InsuData.setOD_END_DATE(OD_END_DATE);
  334. InsuData.setPRODUCTTYPE(PRODUCTTYPE);
  335. InsuData.setPERIODS(PERIODS);
  336. InsuData.setCOMPEN_1(COMPEN_1);
  337. InsuData.setDEDUCTIBLE_ORG(DEDUCTIBLE_ORG);
  338. InsuData.setSFROM(sfrom);// 超級新鈦金 年繳版區分 神腦線上/臨櫃辦理 兩種專案 add by daff 20180615
  339. saleItem.setoInsuData(InsuData);
  340. // IMEI
  341. TExItem tExItem = new TExItem();
  342. tExItem.setSn(1);
  343. tExItem.setNo(IMEI);
  344. tExItem.setSL_MOB_NO(PONO); //存入保單號
  345. saleItem.addExItem(tExItem);
  346. //
  347. FoSale.addSaleItem(saleItem);
  348. return result;
  349. }
  350. // 通知主畫面變更內容顯示
  351. protected void NotifyMainFormUpdate() {
  352. FoCcr.UInotify.updateMainForm();
  353. }
  354. // 即時核保 API
  355. private String doCallInsu(String [] data) {
  356. CcrUtil.setMessage("=====Call 即時核保 API=====");
  357. String result = "";
  358. String url = "";
  359. String API_NO = emisSQLCache.SYS_PARAMS_INSU;
  360. String HeaderType = "XML";
  361. String SL_KEY = FoCcr.getCurrentSale().getPrimarykey();
  362. String API_CALL_TIME = emisUtil.todayDateFormatAll("/");
  363. //
  364. url = WebApiUtil.getWEBAPI_URL(API_NO);
  365. if (emisUtil.isEmpty(url)) {
  366. result = "WEBAPI異常, 請確認系統設定資料!";
  367. return result;
  368. }
  369. //
  370. try {
  371. String xml = generateInvokeXml(data);
  372. CcrUtil.setMessage("INSU_DATA=" + xml);
  373. //
  374. String response = HTTPUtil.sendPost(API_NO, url, xml, SL_KEY, API_CALL_TIME, HeaderType);
  375. CcrUtil.setMessage("response:" + response);
  376. if (emisUtil.isEmpty(response)) {
  377. result = "網頁連線有問題!!";
  378. FoCcr.wrDataToDb.UpdAPI_LOG_HS(API_NO, API_CALL_TIME, false);
  379. return result;
  380. }
  381. //
  382. String response2 = AnalyzeResponse(response);
  383. if (!emisUtil.isEmpty(response2)) {
  384. result = response2;
  385. return result;
  386. }
  387. } catch (Exception e) {
  388. result = "ERROR:" + e.getMessage();
  389. CcrUtil.setMessage(emisUtil.getStackTrace(e));
  390. }
  391. return result;
  392. }
  393. // 生成 即時核保 input XML
  394. private String generateInvokeXml(String [] data) {
  395. StringBuffer sb = new StringBuffer();
  396. sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  397. sb.append("<INSU_DATA>\n");
  398. //CcrUtil.createNode(sb, "SOURCE_FROM", "CCR"); // 系統串接來源(固定值 : CCR )
  399. CcrUtil.createNode(sb, "SOURCE_FROM", sfrom); // 系統串接來源 改按鈕傳遞 add by daff 20180615
  400. CcrUtil.createNode(sb, "IMEI", IMEI); // IMEI
  401. CcrUtil.createNode(sb, "PAYMENT", data[5]); // 繳費型態
  402. CcrUtil.createNode(sb, "LIST_PRICE", data[1]); // 建議售價
  403. CcrUtil.createNode(sb, "POEXP", data[2]); // 保費
  404. CcrUtil.createNode(sb, "WAPPACK", data[3]); // 組合包
  405. sb.append("</INSU_DATA>");
  406. return sb.toString();
  407. }
  408. // 解析即時核保回傳值
  409. private String AnalyzeResponse(String resp) {
  410. String result = "";
  411. ByteArrayInputStream bis = null;
  412. boolean isOK = false;
  413. String msg = "";
  414. try {
  415. bis = new ByteArrayInputStream(resp.getBytes(CcrUtil.CHARSET));
  416. Document doc = emisXmlUtil.getXML(bis);
  417. NodeList Nodelist = doc.getElementsByTagName("SERVICE_ACK");
  418. for (int i = 0; i < Nodelist.getLength(); i++) {
  419. Node node = Nodelist.item(i);
  420. Node child = node.getFirstChild();
  421. while (child != null) {
  422. if (child.getNodeType() == node.ELEMENT_NODE) {
  423. Element element = (Element) child;
  424. if (child.getNodeName().equals(element.getTagName())) {
  425. if (child.getFirstChild() != null) {
  426. if ("OPERATIONRESULT".equals(child.getNodeName())) {
  427. if ("S".equals(element.getFirstChild().getNodeValue())) {
  428. isOK = true;
  429. }
  430. } else if ("DETAILDESCRIPTION".equals(child.getNodeName())) {
  431. msg = element.getFirstChild().getNodeValue();
  432. } else if ("PONO".equals(child.getNodeName())) {
  433. PONO = element.getFirstChild().getNodeValue();
  434. }
  435. }
  436. }
  437. }
  438. child= child.getNextSibling();
  439. }
  440. }
  441. //
  442. if (!isOK) {
  443. result = "ERROR:" + msg;
  444. PONO = "";
  445. }
  446. } catch (Exception e) {
  447. result = "ERROR:" + e.getMessage();
  448. CcrUtil.setMessage(emisUtil.getStackTrace(e));
  449. } finally {
  450. try {
  451. if(bis != null) bis.close();
  452. } catch (Exception e) {
  453. }
  454. }
  455. return result;
  456. }
  457. public TInsuData getInsuData() {
  458. return InsuData;
  459. }
  460. public void setInsuData(TInsuData insuData) {
  461. InsuData = insuData;
  462. }
  463. // 解析ERPIMEICHECK回傳值 add by daff 20181224
  464. private String ErpCheckImeiResponse(String resp) {
  465. String result = "";
  466. ByteArrayInputStream bis = null;
  467. boolean isOK = false;
  468. try {
  469. bis = new ByteArrayInputStream(resp.getBytes(CcrUtil.CHARSET));
  470. Document doc = emisXmlUtil.getXML(bis);
  471. NodeList Nodelist = doc.getElementsByTagName("PDSNINFO");
  472. for (int i = 0; i < Nodelist.getLength(); i++) {
  473. Node node = Nodelist.item(i);
  474. Node child = node.getFirstChild();
  475. while (child != null) {
  476. if (child.getNodeType() == node.ELEMENT_NODE) {
  477. Element element = (Element) child;
  478. if (child.getNodeName().equals(element.getTagName())) {
  479. if (child.getFirstChild() != null) {
  480. if ("SALEDATE".equals(child.getNodeName())) {
  481. SALEDATE = element.getFirstChild().getNodeValue();
  482. CcrUtil.setMessage("SALEDATE:"+SALEDATE);
  483. }
  484. if ("AGNTNO".equals(child.getNodeName())) {
  485. AGNTNO = element.getFirstChild().getNodeValue();
  486. CcrUtil.setMessage("AGNTNO:"+AGNTNO);
  487. }
  488. if ("ITEMNO".equals(child.getNodeName())) {
  489. ITEMNO = element.getFirstChild().getNodeValue();
  490. CcrUtil.setMessage("ITEMNO:"+ITEMNO);
  491. }
  492. }
  493. }
  494. }
  495. child= child.getNextSibling();
  496. }
  497. }
  498. } catch (Exception e) {
  499. result = "ERROR:" + e.getMessage();
  500. CcrUtil.setMessage(emisUtil.getStackTrace(e));
  501. } finally {
  502. try {
  503. if(bis != null) bis.close();
  504. } catch (Exception e) {
  505. }
  506. }
  507. return result;
  508. }
  509. // ERPIMEICHECK API ADD BY DAFF 20181224
  510. private String doCallErpChkimei(String SERIAL_NO , String SOURCE_FROM ) {
  511. CcrUtil.setMessage("=====Call ERPIMEICHECK API=====");
  512. String result = "";
  513. String url = "";
  514. String API_NO = emisSQLCache.SYS_PARAMS_INSU_O2O_CHKIMEI;
  515. String HeaderType = "XML";
  516. String SL_KEY = FoCcr.getCurrentSale().getPrimarykey();
  517. String API_CALL_TIME = emisUtil.todayDateFormatAll("/");
  518. url = WebApiUtil.getWEBAPI_URL(API_NO);
  519. if (emisUtil.isEmpty(url)) {
  520. result = "WEBAPI異常, 請確認系統設定資料!";
  521. return result;
  522. }
  523. CheckImeiHead requestHead = new CheckImeiHead();
  524. requestHead.setSERIALNO(SERIAL_NO);
  525. requestHead.setSOURCE_FROM(SOURCE_FROM);
  526. List<NameValuePair> nvps = new ArrayList<NameValuePair>();
  527. nvps.add(new BasicNameValuePair("SERIAL_NO", requestHead.getSERIALNO()));
  528. nvps.add(new BasicNameValuePair("SOURCE_FROM", requestHead.getSOURCE_FROM()));
  529. try {
  530. String response = HTTPUtil.sendPost(API_NO, url,nvps, SL_KEY, API_CALL_TIME);
  531. CcrUtil.setMessage("response:" + response);
  532. if (emisUtil.isEmpty(response)) {
  533. result = "網頁連線有問題!!";
  534. FoCcr.wrDataToDb.UpdAPI_LOG_HS(API_NO, API_CALL_TIME, false);
  535. return result;
  536. }
  537. //
  538. String response2 = ErpCheckImeiResponse(response);
  539. if (!emisUtil.isEmpty(response2)) {
  540. result = response2;
  541. return result;
  542. }
  543. } catch (Exception e) {
  544. result = "ERROR:" + e.getMessage();
  545. CcrUtil.setMessage(emisUtil.getStackTrace(e));
  546. }
  547. return result;
  548. }
  549. }