Forráskód Böngészése

值班查岗相关接口开发

jichaobo 2 éve
szülő
commit
4457d0abde
16 módosított fájl, 449 hozzáadás és 15 törlés
  1. 5 0
      service-fire/service-fire-biz/pom.xml
  2. 26 3
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/MhPostInspectController.java
  3. 25 3
      service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PostInspectController.java
  4. 2 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/AlarmDetectorService.java
  5. 9 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/BaseUserCompanyService.java
  6. 17 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/MhPostInspectService.java
  7. 5 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PostInspectService.java
  8. 62 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/HttpAuthHandler.java
  9. 59 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/MyInterceptor.java
  10. 27 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/WebSocketConfig.java
  11. 101 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/WsSessionManager.java
  12. 7 3
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmDetectorServiceImpl.java
  13. 9 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseUserCompanyServiceImpl.java
  14. 70 4
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/MhPostInspectServiceImpl.java
  15. 6 1
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PostInspectServiceImpl.java
  16. 19 0
      service-fire/service-fire-biz/src/main/java/com/usky/fire/service/util/OnlineMethod.java

+ 5 - 0
service-fire/service-fire-biz/pom.xml

@@ -52,6 +52,11 @@
             <version>4.1.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
 
     </dependencies>
 

+ 26 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/MhPostInspectController.java

@@ -1,9 +1,16 @@
 package com.usky.fire.controller.web;
 
 
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
+import com.usky.fire.domain.MhPostInspect;
+import com.usky.fire.service.MhPostInspectService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * <p>
@@ -13,9 +20,25 @@ import org.springframework.stereotype.Controller;
  * @author JCB
  * @since 2022-08-24
  */
-@Controller
+@RestController
 @RequestMapping("/mhPostInspect")
 public class MhPostInspectController {
 
+    @Autowired
+    private MhPostInspectService mhPostInspectService;
+
+    /**
+     * 值班查岗-闵行支队平台查岗功能推送
+     *
+     * @param mhPostInspect
+     * @return
+     */
+    @Log(title = "闵行支队平台查岗", businessType = BusinessType.INSERT)
+    @PutMapping("postInspectPush")
+    public ApiResult<Void> updatePatrolInspectionArea(@RequestBody MhPostInspect mhPostInspect) {
+        mhPostInspectService.postInspectPush(mhPostInspect);
+        return ApiResult.success();
+    }
+
 }
 

+ 25 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PostInspectController.java

@@ -1,9 +1,16 @@
 package com.usky.fire.controller.web;
 
 
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.log.annotation.Log;
+import com.usky.common.log.enums.BusinessType;
+import com.usky.fire.domain.PostInspect;
+import com.usky.fire.service.PostInspectService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * <p>
@@ -13,9 +20,24 @@ import org.springframework.stereotype.Controller;
  * @author JCB
  * @since 2022-08-24
  */
-@Controller
+@RestController
 @RequestMapping("/postInspect")
 public class PostInspectController {
 
+    @Autowired
+    private PostInspectService postInspectService;
+
+    /**
+     * 值班查岗-企业版平台查岗功能推送接收接口
+     *
+     * @param postInspect
+     * @return
+     */
+    @Log(title = "企业消防值班查岗", businessType = BusinessType.INSERT)
+    @PutMapping("postInspectRecept")
+    public ApiResult<Void> postInspectRecept(@RequestBody PostInspect postInspect) {
+        postInspectService.postInspectRecept(postInspect);
+        return ApiResult.success();
+    }
 }
 

+ 2 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/AlarmDetectorService.java

@@ -1,5 +1,7 @@
 package com.usky.fire.service;
 
+import org.springframework.web.socket.TextMessage;
+
 import java.util.List;
 import java.util.Map;
 

+ 9 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/BaseUserCompanyService.java

@@ -1,7 +1,7 @@
 package com.usky.fire.service;
 
-import com.usky.fire.domain.BaseUserCompany;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.fire.domain.BaseUserCompany;
 
 import java.util.List;
 
@@ -21,4 +21,12 @@ public interface BaseUserCompanyService extends CrudService<BaseUserCompany> {
      * @return
      */
     List<String> companyIdList();
+
+    /**
+     * 根据单位编号查询userId
+     *
+     * @param companyId 单位编号
+     * @return
+     */
+    List<BaseUserCompany> userCompanyList(String companyId);
 }

+ 17 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/MhPostInspectService.java

@@ -3,6 +3,7 @@ package com.usky.fire.service;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.fire.domain.MhPostInspect;
+import org.springframework.web.socket.TextMessage;
 
 import java.util.Map;
 
@@ -33,4 +34,20 @@ public interface MhPostInspectService extends CrudService<MhPostInspect> {
      * @return
      */
     Map<String, Object> postInspectRecordStatistics(String companyId);
+
+
+    /**
+     * 值班查岗-闵行支队平台查岗功能推送
+     *
+     * @param mhPostInspect
+     */
+    void postInspectPush(MhPostInspect mhPostInspect);
+
+    /**
+     * webSocket推送
+     *
+     * @param message 推送内容
+     * @param userId 用户ID
+     */
+    void webSocketPush(TextMessage message,Integer userId);
 }

+ 5 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PostInspectService.java

@@ -13,4 +13,9 @@ import com.usky.common.mybatis.core.CrudService;
  */
 public interface PostInspectService extends CrudService<PostInspect> {
 
+    /**
+     * 值班查岗-企业版平台查岗功能推送接收接口
+     * @param postInspect
+     */
+    void postInspectRecept(PostInspect postInspect);
 }

+ 62 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/HttpAuthHandler.java

@@ -0,0 +1,62 @@
+package com.usky.fire.service.config.webScoket;
+
+import cn.hutool.db.Session;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.CloseStatus;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.TextWebSocketHandler;
+
+@Component
+@Slf4j
+public class HttpAuthHandler extends TextWebSocketHandler {
+    /**
+     * socket 建立成功事件
+     *
+     * @param session
+     * @throws Exception
+     */
+    @Override
+    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+        String id = session.getId();
+      //  String query = session.getUri().getQuery();
+        if (null !=id) {
+            WsSessionManager.add(id, session);
+        }
+    }
+
+    /**
+     * 接收消息事件
+     * @param session
+     * @param message
+     * @throws Exception
+     */
+    @Override
+    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+        // 获得客户端传来的消息
+        String payload = message.getPayload();
+        Object token = session.getAttributes().get("token");
+  //  WsSessionManager.sendMessageToAll(new TextMessage("server 发送给 " + token + " 消息 " + payload + " " + LocalDateTime.now().toString()));
+    }
+
+
+    /**
+     * socket 断开连接时
+     *
+     * @param session
+     * @param status
+     * @throws Exception
+     */
+    @Override
+    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
+    //    String query = session.getUri().getQuery();
+        String id = session.getId();
+            // 用户退出,移除缓存
+            WsSessionManager.remove(id);
+
+    }
+
+
+
+}

+ 59 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/MyInterceptor.java

@@ -0,0 +1,59 @@
+package com.usky.fire.service.config.webScoket;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.WebSocketHandler;
+import org.springframework.web.socket.server.HandshakeInterceptor;
+
+import java.util.Map;
+
+/**
+ * @author buhao
+ * @version MyInterceptor.java, v 0.1 2019-10-17 19:21 buhao
+ */
+@Component
+@Slf4j
+public class MyInterceptor implements HandshakeInterceptor {
+
+    /**
+     * 握手前
+     *
+     * @param request
+     * @param response
+     * @param wsHandler
+     * @param attributes
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
+   //  if (request instanceof ServletServerHttpRequest) {
+   //      ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
+   //      HttpSession session = servletRequest.getServletRequest().getSession(false);
+   //      if (session.getAttribute("keys") != null) {
+   //          String key = (String) session.getAttribute("keys");
+   //          key = "123456";
+   //      } else {
+   //          return false;
+   //      }
+   //  }
+     return true;
+    }
+
+    /**
+     * 握手后
+     *
+     * @param request
+     * @param response
+     * @param wsHandler
+     * @param exception
+     */
+    @Override
+    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
+
+
+    }
+
+}

+ 27 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/WebSocketConfig.java

@@ -0,0 +1,27 @@
+package com.usky.fire.service.config.webScoket;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.config.annotation.EnableWebSocket;
+import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
+import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
+
+/**
+ * @author buhao
+ * @version WebSocketConfig.java, v 0.1 2019-10-17 15:43 buhao
+ */
+@Configuration
+@EnableWebSocket
+public class WebSocketConfig implements WebSocketConfigurer {
+    @Autowired
+    private HttpAuthHandler httpAuthHandler;
+    @Autowired
+    private MyInterceptor myInterceptor;
+    @Override
+    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
+        registry
+                .addHandler(httpAuthHandler, "/fire/postInspectAnswer")
+                .addInterceptors(myInterceptor)
+                .setAllowedOrigins("*");
+    }
+}

+ 101 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/config/webScoket/WsSessionManager.java

@@ -0,0 +1,101 @@
+package com.usky.fire.service.config.webScoket;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author buhao
+ * @version WsSessionManager.java, v 0.1 2019-10-22 10:24 buhao
+ */
+@Slf4j
+public class WsSessionManager {
+    /**
+     * 保存连接 session 的地方
+     */
+    public static ConcurrentHashMap<String, WebSocketSession> SESSION_POOL = new ConcurrentHashMap<>();
+
+    /**
+     * 添加 session
+     *
+     * @param key
+     */
+    public static void add(String key, WebSocketSession session) {
+        // 添加 session
+        SESSION_POOL.put(key, session);
+    }
+
+    /**
+     * 删除 session,会返回删除的 session
+     *
+     * @param key
+     * @return
+     */
+    public static WebSocketSession remove(String key) {
+        // 删除 session
+        return SESSION_POOL.remove(key);
+    }
+
+    /**
+     * 删除并同步关闭连接
+     *
+     * @param key
+     */
+    public static void removeAndClose(String key) {
+        WebSocketSession session = remove(key);
+        if (session != null) {
+            try {
+                // 关闭连接
+                session.close();
+            } catch (IOException e) {
+                // todo: 关闭出现异常处理
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 获得 session
+     *
+     * @param key
+     * @return
+     */
+    public static WebSocketSession get(String key) {
+        // 获得 session
+        return SESSION_POOL.get(key);
+    }
+
+    public static void sendMessageToAll(final TextMessage message) {
+        //对用户发送的消息内容进行转义
+        //获取到所有在线用户的SocketSession对象
+        Set<Map.Entry<String, WebSocketSession>> entrySet = SESSION_POOL.entrySet();
+        for (Map.Entry<String, WebSocketSession> entry : entrySet) {
+            //某用户的WebSocketSession
+            final WebSocketSession webSocketSession = entry.getValue();
+            //判断连接是否仍然打开的
+            if (webSocketSession.isOpen()) {
+                //开启多线程发送消息(效率高)
+                new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+                        try {
+                            if (webSocketSession.isOpen()) {
+                                webSocketSession.sendMessage(message);
+                            }
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }).start();
+
+            }
+        }
+    }
+
+
+}

+ 7 - 3
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/AlarmDetectorServiceImpl.java

@@ -8,9 +8,10 @@ import org.influxdb.dto.QueryResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -40,6 +41,9 @@ public class AlarmDetectorServiceImpl implements AlarmDetectorService {
         map.put("minTime", minMap.get("time"));
         map.put("last", lastMap.get("last"));
         map.put("lastTime", lastMap.get("time"));
+
+//        TextMessage textMessage = new TextMessage("wofsljflsjflsjflsjdfljsdl");
+//        WsSessionManager.sendMessageToAll(textMessage);
         return map;
     }
 

+ 9 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/BaseUserCompanyServiceImpl.java

@@ -39,4 +39,13 @@ public class BaseUserCompanyServiceImpl extends AbstractCrudService<BaseUserComp
         return companyIdList;
     }
 
+    @Override
+    public List<BaseUserCompany> userCompanyList(String companyId) {
+        LambdaQueryWrapper<BaseUserCompany> QueryWrapper = Wrappers.lambdaQuery();
+        QueryWrapper.select(BaseUserCompany::getUserId)
+                .eq(BaseUserCompany::getCompanyId, companyId);
+        List<BaseUserCompany> comoanyList = this.list(QueryWrapper);
+        return comoanyList;
+    }
+
 }

+ 70 - 4
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/MhPostInspectServiceImpl.java

@@ -1,5 +1,6 @@
 package com.usky.fire.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -7,18 +8,25 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.util.StringUtils;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.fire.domain.BaseUserCompany;
 import com.usky.fire.domain.MhPostInspect;
 import com.usky.fire.mapper.MhPostInspectMapper;
+import com.usky.fire.service.BaseUserCompanyService;
 import com.usky.fire.service.MhPostInspectService;
+import com.usky.fire.service.config.webScoket.WsSessionManager;
 import com.usky.fire.service.util.OnlineMethod;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
 
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -31,6 +39,9 @@ import java.util.Map;
 @Service
 public class MhPostInspectServiceImpl extends AbstractCrudService<MhPostInspectMapper, MhPostInspect> implements MhPostInspectService {
 
+    @Autowired
+    private BaseUserCompanyService baseUserCompanyService;
+
     @Override
     public CommonPage<MhPostInspect> postInspectRecordList(String companyId, Integer pageNum, Integer pageSize) {
         IPage<MhPostInspect> page = new Page<>(pageNum, pageSize);
@@ -52,7 +63,7 @@ public class MhPostInspectServiceImpl extends AbstractCrudService<MhPostInspectM
                     long time = data1 - data2;
                     if (time < 600) {
                         page.getRecords().get(i).setInspectStatusName("等待响应");
-                        page.getRecords().get(i).setCountdown(600-time);
+                        page.getRecords().get(i).setCountdown(600 - time);
                     } else {
                         page.getRecords().get(i).setInspectStatusName("离岗");
                         page.getRecords().get(i).setSpentDate("超时未响应");
@@ -88,4 +99,59 @@ public class MhPostInspectServiceImpl extends AbstractCrudService<MhPostInspectM
         return map;
     }
 
+    @Override
+    @Transactional
+    public void postInspectPush(MhPostInspect mhPostInspect) {
+        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
+        mhPostInspect.setInspectCode(uuid);
+        mhPostInspect.setInspectTime(LocalDateTime.now());
+        mhPostInspect.setInspectStatus(0);
+        mhPostInspect.setCreator(SecurityUtils.getUsername());
+        mhPostInspect.setCreateTime(LocalDateTime.now());
+        this.save(mhPostInspect);
+//        String message = mhPostInspect.toString();
+        //查岗时间与当前时间差
+        long data1 = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
+        long data2 = mhPostInspect.getInspectTime().toEpochSecond(ZoneOffset.of("+8"));
+        long time = data1 - data2;
+        mhPostInspect.setCountdown(600-time);
+        String message = JSONObject.toJSONString(mhPostInspect);
+        List<BaseUserCompany> userCompanyList = baseUserCompanyService.userCompanyList(mhPostInspect.getCompanyId());
+        for (int i = 0; i < userCompanyList.size(); i++) {
+            this.webSocketPush(new TextMessage(message), userCompanyList.get(i).getUserId());
+        }
+    }
+
+
+    @Override
+    public void webSocketPush(final TextMessage message, Integer userId) {
+        Set<Map.Entry<String, WebSocketSession>> entrySet = WsSessionManager.SESSION_POOL.entrySet();
+        for (Map.Entry<String, WebSocketSession> entry : entrySet) {
+            String[] split = entry.getKey().split("-");
+            String url = String.valueOf(entry.getValue().getUri());
+            String userId1 = OnlineMethod.getFieldValue(url, "userId").replaceAll(" ", "");
+            Integer userId2 = Integer.parseInt(userId1);
+            if (userId == userId2) {
+                final WebSocketSession webSocketSession = entry.getValue();
+                //判断连接是否仍然打开的
+                if (webSocketSession.isOpen()) {
+                    //开启多线程发送消息(效率高)
+                    new Thread(new Runnable() {
+                        @Override
+                        public void run() {
+                            try {
+                                if (webSocketSession.isOpen()) {
+                                    webSocketSession.sendMessage(message);
+                                }
+                            } catch (IOException e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    }).start();
+
+                }
+            }
+        }
+    }
+
 }

+ 6 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PostInspectServiceImpl.java

@@ -1,9 +1,9 @@
 package com.usky.fire.service.impl;
 
+import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.fire.domain.PostInspect;
 import com.usky.fire.mapper.PostInspectMapper;
 import com.usky.fire.service.PostInspectService;
-import com.usky.common.mybatis.core.AbstractCrudService;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +17,9 @@ import org.springframework.stereotype.Service;
 @Service
 public class PostInspectServiceImpl extends AbstractCrudService<PostInspectMapper, PostInspect> implements PostInspectService {
 
+    @Override
+    public void postInspectRecept(PostInspect postInspect) {
+        this.save(postInspect);
+    }
+
 }

+ 19 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/util/OnlineMethod.java

@@ -13,10 +13,29 @@ import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class OnlineMethod {
 
 
+    /**
+     * 获取字段值
+     *
+     * @param urlStr 路径
+     * @param field  字段名
+     * @return
+     */
+    public static String getFieldValue(String urlStr, String field) {
+        String result = "";
+        Pattern pXM = Pattern.compile(field + "=([^&]*)");
+        Matcher mXM = pXM.matcher(urlStr);
+        while (mXM.find()) {
+            result += mXM.group(1) + "";
+        }
+        return result;
+    }
+
     /**
      * 根据当前时间获取几天后日期
      *