diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
index fc0ad15..e1cbc30 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
@@ -88,7 +88,7 @@
     errcode.add(Pair.of(AgentCode.ILLEGAL_DATA, new YnrccRespCode("0415", "交易金额大于单笔限额")));
     errcode.add(Pair.of(AgentCode.SERVER_INTERNAL_ERROR, new YnrccRespCode("0416", "通用限额未配置")));
 
-    errcode.add(Pair.of(AgentCode.COMMON_ERROR, new YnrccRespCode("4444", "其他错误")));
+    errcode.add(Pair.of(AgentCode.COMMON_ERROR, new YnrccRespCode("4444", "其他错误[{message}]")));
     errcode.add(Pair.of(AgentCode.REQUIRE_QUERY, new YnrccRespCode(CODE_EXCEPTION, "待查询")));
     errcode.add(Pair.of(AgentCode.SERVER_INTERNAL_ERROR, new YnrccRespCode(PARAM_CONFIG_ERROR, "{message}")));
     errcode.add(Pair.of(AgentCode.SERVER_INTERNAL_ERROR, new YnrccRespCode(PARAM_VALUE_ERROR, "{message}")));
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/service/impl/CitizencardManagerServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/service/impl/CitizencardManagerServiceImpl.java
index 71101d8..c628015 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/service/impl/CitizencardManagerServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/service/impl/CitizencardManagerServiceImpl.java
@@ -48,10 +48,10 @@
 
   @Override
   public TCitizencardLossApply doFinishCitizencardLoss(TCitizencardLossApply lossApply) {
-    if (ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_SUCCESS.equals(lossApply)) {
+    if (ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_SUCCESS.equals(lossApply.getStatus())) {
       TCard cityCard = cardDao.findCardByCardnoAndCardtype(lossApply.getCardno(), ConstantUtil.CARDTYPE_CITIZENCARD);
-      if (null != cityCard && !TradeDict.STATUS_LOST.equals(cityCard.getTransStatus())) {
-        cityCard.setTransStatus(TradeDict.STATUS_LOST);
+      if (null != cityCard && TradeDict.STATUS_NORMAL.equals(cityCard.getTransStatus())) {
+        cityCard.setTransStatus(TradeDict.STATUS_ABNORMAL);
         cityCard.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime());
         cardDao.save(cityCard);
       }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/task/CitizencardCardLossTask.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/task/CitizencardCardLossTask.java
index e291450..48525d9 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/task/CitizencardCardLossTask.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/task/CitizencardCardLossTask.java
@@ -71,11 +71,10 @@
       lossApply.setSendcnt(lossApply.getSendcnt()+1);
 
       Client c = Client.create();
-      c.setConnectTimeout(5*1000);
+      c.setConnectTimeout(10*1000);
       WebResource r = c.resource(url);
-      MultivaluedMap params = new MultivaluedMapImpl();
-      params.add("cardNo", lossApply.getCardno());
-      logger.info("====>> refno=[" + lossApply.getRefno() + "] cardloss send param=" + gson.toJson(params) + " === ");
+      String params = "{\"cardNo\":\"" + lossApply.getCardno() + "\"}";
+      logger.info("====>> refno=[" + lossApply.getRefno() + "] cardloss send param=" + params + " <<=== ");
       ClientResponse respClient = r.type(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, params);
       if (HttpStatus.SC_OK == respClient.getStatus()) {
         String jsonStr = respClient.getEntity(String.class);
@@ -91,9 +90,11 @@
         if(null!=lossResp){
           lossApply.setErrcode(lossResp.getCODE());
           lossApply.setErrmsg(lossResp.getMESSAGE());
-          if("000000".equals(lossResp.getCODE())){
-            lossApply.setStatus(ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_SUCCESS);
-          }else{
+          if ("000000".equals(lossResp.getCODE())) {
+            lossApply.setStatus(ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_SUCCESS); //成功挂失
+          } else if ("110505".equals(lossResp.getCODE())) {
+            lossApply.setStatus(ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_SUCCESS); //卡片已挂失或状态异常
+          } else {
             lossApply.setStatus(ConstantUtil.CITIZENCARD_LOSSAPPLY_STATUS_FAIL);
           }
         }else{
