package com.uas.eis.serviceImpl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.uas.eis.core.config.SpObserver; import com.uas.eis.dao.BaseDao; import com.uas.eis.dao.SqlRowList; import com.uas.eis.entity.Employee; import com.uas.eis.entity.Master; import com.uas.eis.service.*; import com.uas.eis.utils.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.security.MessageDigest; import java.util.*; /** * 对接湘芯业务 * @author cjx * @date 2020-5-20 */ @Service public class XiangXServiceImpl implements XiangXService { @Autowired private TokenCaches tokenCaches; @Autowired private BaseDao baseDao; @Autowired private ProdInOutService prodInOutService; @Autowired private EmployeeService employeeService; @Autowired private BaseUrlUtil baseUrlUtil; @Autowired private ErpService erpService; @Autowired private EnterpriseService enterpriseService; @Autowired private MD5Util md5Util; static final String GET_PROCESS_UNDO_GROUP_U="SELECT * FROM (SELECT JPROCESSVIEW.*,EM_IMID, ROW_NUMBER() OVER(ORDER BY JP_LAUNCHTIME DESC,JP_ID DESC) RN FROM JPROCESSVIEW LEFT JOIN EMPLOYEE ON EM_CODE=JP_LAUNCHERID WHERE ((JP_NODEDEALMAN= ? AND JP_STATUS='待审批' ) AND CONCAT(CONCAT(JP_CODEVALUE,'#'||JP_NAME),'#'||JP_LAUNCHERNAME) LIKE ? ) OR ((JP_LAUNCHERID= ? AND JP_STATUS='未通过') AND CONCAT(CONCAT(JP_CODEVALUE,'#'||JP_NAME),'#'||JP_PROCESSNOTE) LIKE ? )) WHERE RN<=? AND RN>=? ORDER BY CASE TYPECODE WHEN 'process' THEN 1 WHEN 'transferprocess' THEN 2 WHEN 'procand' THEN 3 WHEN 'unprocess' THEN 4 END,RN ASC"; static final String GET_PROCESS_ALREADYDO_U="SELECT * FROM (select JPROCESSALREADYDOVIEW.* ,ROW_NUMBER() OVER(ORDER BY JN_DEALTIME DESC) RN from JPROCESSALREADYDOVIEW WHERE JP_CODEVALUE IS NOT NULL AND CONCAT(CONCAT(JP_NAME,'#'||JP_LAUNCHERNAME),'#'||JP_CODEVALUE) LIKE ? AND JN_DEALMANID= ?)WHERE RN<=? AND RN >= ? ORDER BY RN ASC"; @Override public Map postInOutInfo(int inOutId, String items, String master, String dealDate) { Map modelMap = new HashMap(); Employee employee = new Employee(); if(employee==null){ employee = employeeService.getByCondition("em_code='1000000000'"); } if(employee==null){ employee.setEm_code("1000000000"); employee.setEm_name("WMS过账账号"); employee.setEm_type("admin"); employee.setEm_master(master); } final String piClass = baseDao.getFieldValue("prodinout", "pi_class", "pi_id=" + inOutId, String.class); final String inoutno = baseDao.getFieldValue("prodinout", "pi_inoutno", "pi_id=" + inOutId, String.class); BASE64Decoder decoder = new BASE64Decoder(); Object caller = baseDao.getFieldDataByCondition("DOCUMENTSETUP", "DS_TABLE", "DS_NAME='" + piClass + "'"); if (items!=null&&!"".equals(items)){ JSONObject json=null; try { String info = new String(decoder.decodeBuffer(items), "UTF-8"); info=info.replaceAll("\n","").replaceAll("\r",""); json = JSON.parseObject(URLDecoder.decode(info, "UTF-8"));//.replaceAll("\n","") } catch (Exception e) { e.printStackTrace(); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','差异过账失败,JSON解析失败:"+e.getMessage()+"',sysdate,0,'" + inoutno + "')"); modelMap.put("success", false); modelMap.put("error","差异过账失败,JSON解析失败:"+e.getMessage()); return modelMap; } try { String itemsStr = json.getString("items"); List> grid = BaseUtil.parseGridStoreToMaps(itemsStr); for (Map map : grid){ baseDao.updateByCondition("ProdIODetail","PD_DOCKINGACTQTY="+map.get("actualNum"),"pd_piid="+inOutId+" and pd_pdno="+map.get("detailNo")); } }catch (Exception e){ baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','差异过账失败:"+e.getMessage()+"',sysdate,0,'" + inoutno + "')"); modelMap.put("success", false); modelMap.put("error","差异过账失败:"+e.getMessage()); } //差异过账 try { //更新单据日期为当前时间 baseDao.updateByCondition("ProdInOut","pi_date=to_date('"+dealDate+"','yyyy-MM-dd')","pi_id="+inOutId); prodInOutService.postProdInOut(inOutId, caller.toString()); }catch (Exception e){ UpdateProdinOutLog(inOutId,false); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','湘芯差异过账:"+e.getMessage()+"',sysdate,0,'" + inoutno + "')"); modelMap.put("success", false); modelMap.put("error",e.getMessage()); return modelMap; } baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','差异过账成功',sysdate,0,'" + inoutno + "')"); modelMap.put("success", true); modelMap.put("error",""); return modelMap; }else { try { //更新单据日期为当前时间 baseDao.updateByCondition("ProdInOut","pi_date=to_date('"+dealDate+"','yyyy-MM-dd')","pi_id="+inOutId); prodInOutService.postProdInOut(inOutId, caller.toString()); }catch (Exception e){ UpdateProdinOutLog(inOutId,false); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','湘芯过账失败:"+e.getMessage()+"',sysdate,0,'" + inoutno + "')"); modelMap.put("success", false); modelMap.put("error",e.getMessage()); return modelMap; } Object inorout = baseDao.getFieldDataByCondition("DOCUMENTSETUP", "ds_inorout", "DS_NAME='" + piClass + "'"); //只有出库才会回调湘芯获取序列号的接口 if("OUT".equals(inorout)||"-IN".equals(inorout)){ getMaterialSerialNumber(piClass,inOutId,inoutno,master); } UpdateProdinOutLog(inOutId,true); modelMap.put("success", true); modelMap.put("error",""); return modelMap; } } @Override public Map createAccountRegister(String data) { Map result = new HashMap(); int ar_id=0; try { String accountcode = baseDao.getFieldValue("configs", "data", "caller='AccountRegister!Bank' and code='accountcode'", String.class); if (accountcode==null) { BaseUtil.showError("默认银行科目未设置!"); } else { JSONObject jsonobj_Data = JSON.parseObject(data); Map paramStore = BaseUtil.parseFormStoreToMap(jsonobj_Data.get("Head").toString()); Object[] cateInfo = baseDao.getFieldsDataByCondition("Category", new String[] { "ca_name", "ca_currency","ca_id" }, "ca_code ='"+accountcode+"' and nvl(ca_iscashbank,0)<>0 and nvl(ca_isleaf,0)<>0 and nvl(ca_statuscode,' ')='AUDITED'"); if(cateInfo==null){ BaseUtil.showError("默认银行科目不存在或未审核!"); } if(cateInfo[1]==null){ BaseUtil.showError("默认银行科目币别未设置!"); } Object[] currencysmonth = baseDao.getFieldsDataByCondition("currencysmonth", new String[] { "cm_crrate"}, "CM_CRNAME='"+cateInfo[1]+"' AND cm_yearmonth=to_char(to_date('"+paramStore.get("vo_date")+"','yyyy-mm-dd'),'yyyymm')"); if(currencysmonth==null){ BaseUtil.showError("币别"+cateInfo[1]+"单据期间月度汇率未设置!"); } if(cateInfo[1]==null){ BaseUtil.showError("默认银行科目币别未设置!"); } String arCode = baseDao.sGetMaxNumber("AccountRegister", 2); try { Map store = new HashMap(); ar_id = baseDao.getSeqId("AccountRegister_SEQ"); store.put("ar_id", ar_id); store.put("ar_code", arCode); store.put("ar_date", paramStore.get("vo_date").toString()); store.put("ar_type", "费用"); store.put("ar_status", "已提交"); store.put("ar_statuscode", "COMMITED"); //银行信息 store.put("ar_cateid", cateInfo[2]); store.put("ar_accountcode", accountcode); store.put("ar_accountname", cateInfo[0]); store.put("ar_accountcurrency", cateInfo[1]); store.put("ar_accountrate", (currencysmonth[0] == null ? 1 : currencysmonth[0])); store.put("ar_sourcetype", "OA上传"); store.put("ar_source", paramStore.get("vo_refno")); store.put("ar_recordman", (paramStore.get("recordman")==null? "管理员":paramStore.get("recordman"))); store.put("ar_recorddate", paramStore.get("vo_date")); store.put("ar_departmentcode", paramStore.get("departmentcode")); store.put("ar_departmentname", paramStore.get("departmentname")); store.put("ar_errstring", ""); List sqls = new ArrayList(); sqls.add(SqlUtil.getInsertSqlByMap(store, "AccountRegister")); //明细处理 JSONArray EntriesArray = jsonobj_Data.getJSONArray("Entries"); for (int i = 0; i < EntriesArray.size(); i++) { Map currentMap = new HashMap(); JSONObject EntriesInfo = JSON.parseObject(EntriesArray.get(i).toString()); int ard_id = baseDao.getSeqId("AccountRegisterdetail_SEQ"); currentMap.put("ARD_ID", ard_id); currentMap.put("ARD_ARID", ar_id); currentMap.put("ARD_DETNO", EntriesInfo.get("vd_detno")); currentMap.put("ard_explanation", EntriesInfo.get("vd_explanation")); currentMap.put("ard_catecode", EntriesInfo.get("vd_catecode")); currentMap.put("ard_currency", EntriesInfo.get("vd_currency")); currentMap.put("ard_rate", EntriesInfo.get("vd_rate")); currentMap.put("ard_doubledebit", EntriesInfo.get("vd_debit")); //currentMap.put("ard_doublecredit",EntriesInfo.get("vd_credit")); sqls.add(SqlUtil.getInsertSqlByMap(currentMap, "AccountRegisterdetail")); if (EntriesInfo.get("detailass") != null) { List> grid = BaseUtil.parseGridStoreToMaps(EntriesInfo.get("detailass").toString()); List> assGrid = new ArrayList>(); int n = 1; for (Map map : grid) { Map assMap = new HashMap(); int ars_id = baseDao.getSeqId("ACCOUNTREGISTERDETAILASS_SEQ"); assMap.put("ARS_ID", ars_id); assMap.put("ARS_ARDID", ard_id); assMap.put("ARS_DETNO", n++); assMap.put("ars_asstype", map.get("vds_asstype")); assMap.put("ARS_ASSID", ar_id); assMap.put("ARS_ASSCODE", map.get("vds_asscode")); assMap.put("ARS_ASSNAME", map.get("vds_assname")); assMap.put("ARS_TYPE", "AccountRegister!Bank"); assGrid.add(assMap); } sqls.addAll(SqlUtil.getInsertSqlbyList(assGrid, "ACCOUNTREGISTERDETAILASS", "ars_id")); } } sqls.add("update AccountRegisterdetail set (ard_catedesc)=(select ca_name from Category where ca_Code=ard_catecode) where ard_arid=" + ar_id); sqls.add("update AccountRegisterdetail set ard_debit=ard_doubledebit*ard_rate where ard_arid=" + ar_id); sqls.add("update AccountRegisterdetail set ard_currency='RMB' where nvl(ard_currency,' ')='CNY' and ard_arid=" + ar_id); sqls.add("delete from ACCOUNTREGISTERDETAIL where ard_arid=" + ar_id + " and nvl(ard_debit,0)=0"); //复币 根据明细科目 sqls.add("update AccountRegister set ar_currencytype=-1 where ar_id=" + ar_id + " and exists(" + "select 1 from ACCOUNTREGISTERDETAIL left join Category on ca_code=ard_catecode" + " where ard_arid=ar_id and nvl(ca_currencytype,0)<>0)"); sqls.add("update AccountRegister set ar_payment=(select sum(nvl(ard_debit,0)) from ACCOUNTREGISTERDETAIL where ard_arid=ar_id ) where ar_id=" + ar_id); sqls.add("update AccountRegister set ar_memo=(select ard_explanation from(select * from ACCOUNTREGISTERDETAIL where ard_arid=" + ar_id + " order by ard_detno) where rownum<2) where ar_id=" + ar_id); baseDao.execute(sqls); }catch (Exception e){ result.put("success",false); result.put("error","参数错误"); result.put("numbers",""); createLog(data,"0","银行登记","参数错误",""); return result; } String errStr =baseDao.callProcedure("SP_ACCOUNTREGISTERCHECK", new Object[] { arCode}); if (errStr != null) BaseUtil.showError(errStr); result.put("success",true); result.put("error",""); result.put("numbers",arCode); createLog(data,"1","银行登记","",arCode); return result; } }catch(Exception e){ List dealSqls = new ArrayList(); //e.printStackTrace(); dealSqls.add("delete AccountRegisterdetailASS where ARS_ASSID ="+ar_id); dealSqls.add("delete AccountRegisterdetail where ard_arid="+ar_id); dealSqls.add("delete AccountRegister where ar_id="+ar_id); baseDao.execute(dealSqls); result.put("success",false); result.put("error",e.getMessage()); result.put("numbers",""); createLog(data,"0","银行登记",e.getMessage(),""); return result; } return null; } @Override public void createLog(String data, String result, String type, String err, String code) { baseDao.execute("insert into ERPSYNC_MESSAGELOG(EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) " + "values('"+data+"','"+type+"','"+err+"',sysdate,'"+result+"','"+code+"')"); } @Override public Map getProcessList(int page, int pageSize, String type, String keyword, String emcode) { Map map = new HashMap(); Employee em = employeeService.getByCondition("em_code='"+emcode+"'"); if (em!=null){ int start = ((page - 1) * pageSize + 1); int end = page * pageSize; keyword = "%"+(String.valueOf(keyword).toUpperCase().equals("NULL") ? "" : keyword)+"%"; if("toDo".equals(type)) {//待审批 //需要汇集数据 map.put("data", baseDao.queryForList(GET_PROCESS_UNDO_GROUP_U,new Object[]{em.getEm_code(),keyword,em.getEm_code(),keyword,end,start})); map.put("totalCount", baseDao.getCountByCondition("JPROCESSVIEW", "(JP_NODEDEALMAN='"+em.getEm_code()+"' AND JP_STATUS='待审批' AND CONCAT(CONCAT(JP_CODEVALUE,'#'||JP_NAME),'#'||JP_LAUNCHERNAME) LIKE '"+keyword+"') " + "OR (JP_LAUNCHERID='"+em.getEm_code()+"' AND JP_STATUS='未通过' AND CONCAT(CONCAT(JP_CODEVALUE,'#'||JP_NAME),'#'||JP_PROCESSNOTE) LIKE '"+keyword+"') ")); }else if("alreadyDo".equals(type)){//已审批 map.put("totalCount", baseDao.getCountByCondition("JPROCESSALREADYDOVIEW", "(JP_CODEVALUE IS NOT NULL AND JN_DEALMANID='"+em.getEm_code()+"' AND CONCAT(CONCAT(JP_NAME,'#'||JP_LAUNCHERNAME),'#'||JP_CODEVALUE) LIKE '"+keyword+"')")); map.put("data", baseDao.queryForList(GET_PROCESS_ALREADYDO_U,new Object[]{keyword,em.getEm_code(),end,start})); } map.put("success",true); map.put("error",""); }else{ map.put("success", false); map.put("error", "编号("+emcode+")系统找不到人员"); } return map; } @Override public Map finishPo(int poId, String master) { Map map = new HashMap(); List list = baseDao.callProcedureWithOut("SP_FINISHPO", new Object[]{poId}, new Integer[]{1}, new Integer[]{2,3,4,5}); if (list!=null && list.size()>0){ if (list.get(0)==null){ baseDao.updateByCondition("CUSTOMTABLE","ct_confirmstatus='已确认',ct_confirmstatuscode='CONFIRMED'","ct_id="+poId); if(list.get(2)!=null && Integer.parseInt(list.get(2))>0){ try { Map resMap = erpService.auditafter_post_xx(Integer.parseInt(list.get(2)), list.get(3)); SpObserver.putSp(master); if(resMap.get("success")!=null&&Boolean.parseBoolean((resMap.get("success")).toString())){ map.put("success", true); map.put("error", "报关成功"); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','报关申请','报关完成:出货单"+list.get(1)+"',sysdate,0,'" + poId + "')"); return map; }else{ map.put("success", false); map.put("error", "报关失败:"+resMap.get("error")); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','报关申请','报关失败',sysdate,0,'" + poId + "')"); return map; } } catch (Exception e){ map.put("success", false); map.put("error", "报关失败:"+e.getMessage()); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','报关申请','报关失败',sysdate,0,'" + poId + "')"); return map; } } }else { map.put("success", false); map.put("error", "报关失败:"+list.get(0)); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','报关申请','报关失败',sysdate,0,'" + poId + "')"); return map; } }else { map.put("success", false); map.put("error", "报关失败"); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','报关申请','报关失败',sysdate,0,'" + poId + "')"); return map; } map.put("success", true); map.put("error", "报关成功"); baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','报关申请','报关成功',sysdate,0,'" + poId + "')"); return map; } public void UpdateProdinOutLog(int inOutId,boolean isSuccess){ if(isSuccess){ baseDao.updateByCondition("ProdInOut","pi_wmspoststastus='成功'","pi_id="+inOutId); }else{ baseDao.updateByCondition("ProdInOut","pi_wmspoststastus='失败'","pi_id="+inOutId); } } //回调获取湘芯物料序列号 public void getMaterialSerialNumber(final String piClass, final int inOutId, final String inoutno, final String master){ new Thread() { public void run() { Master masterName = enterpriseService.getMasterByName(master); String Authorization = "Bearer "+ tokenCaches.getTokenCache("ProdInOutToken",masterName.getMa_env()); Map dataMap = new HashMap<>(); dataMap.put("master",master); dataMap.put("thirdPartyOrderCode",inoutno); dataMap.put("inOutId",inOutId); byte byteXl[] = new byte[0]; //字符串转化为一个字节数组byte[] try { byteXl = JSON.toJSONString(dataMap).getBytes( "UTF-8"); } catch (UnsupportedEncodingException e) { baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','Base64加密失败',sysdate,0,'" + inoutno + "')"); e.printStackTrace(); } BASE64Encoder encoder = new BASE64Encoder(); String encodedText = encoder.encode(byteXl); //第一种 转Base6 String encodedStr = encodedText.replace("\r\n", ""); HashMap params = new HashMap(); String secretKey="A51B497B93814189BC489D725C8361AD"; String timestamp = String.valueOf(System.currentTimeMillis()); params.put("appId", "UAS"); // base64转码的json数据 params.put("data", encodedStr); // data + secretKey + 时间戳 拼接的字符串计算出的MD5的base64值 params.put("signature", Md5String(encodedStr+secretKey+timestamp)); // 当前时间戳 params.put("timeStamp", timestamp); HttpUtil.Response response = null; String baseUrl = baseUrlUtil.getBaseUrl( "WMS",masterName.getMa_env()); try { response = HttpUtil.doPostWithHead(baseUrl+"/api/open/entrustOrder/queryMaterialSerialNumber", JSON.toJSONString(params),false,null,Authorization); String res = response.getResponseText(); JSONObject datajson = JSON.parseObject(res); String responseCode = datajson.getString("code"); String err = datajson.getString("message"); if ("S0000".equals(responseCode)){ baseDao.execute("delete from BARCODE where bar_piid='" + inOutId+"'"); String datainfo = datajson.getString("data"); List> griddata = BaseUtil.parseGridStoreToMaps(datainfo); for (Map map : griddata){ baseDao.execute("insert into BARCODE(bar_id,bar_code,bar_prodcode,bar_indate,bar_piid,bar_inoutno,bar_pdno) " + "values(barcode_seq.nextval,'"+map.get("bar_code")+"','"+map.get("bar_prodcode")+"',sysdate,"+inOutId+",'"+inoutno+"',"+map.get("bar_pdno")+")"); } }else if("E0003".equals(responseCode)){ baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','发送湘芯科技失败,Token失效:"+err+"("+Authorization+")',sysdate,0,'" + inoutno + "')"); BaseUtil.showError("发送湘芯科技失败,Token失效:"+err+"("+Authorization+")"); }else { baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','回调湘芯科技获取序列号请求失败:"+err+"("+Authorization+")',sysdate,0,'" + inoutno + "')"); } } catch (Exception e) { baseDao.execute("insert into ERPSYNC_MESSAGELOG (EL_ID,EL_DATA,EL_TYPE,EL_ERROR,EL_DATE,EL_STATUS,EL_CODE) values " + "(ERPSYNC_MESSAGELOG_SEQ.nextval,'','" + piClass + "','回调湘芯科技获取序列号请求失败',sysdate,0,'" + inoutno + "')"); e.printStackTrace(); } } }.start(); } /** * md5加密 * @param old * @return * */ public String Md5String(String old) { try { //java自带工具包MessageDigest MessageDigest md5 = MessageDigest.getInstance("md5"); //实现Base64的编码 BASE64Encoder base64 = new BASE64Encoder(); //进行加密 String newStr = base64.encode(md5.digest(old.getBytes("utf-8"))); return newStr;//返回加密后的字符 } catch (Exception e) { throw new RuntimeException(e); } } }