From dfafe88917bd344d570277f14b7ea7bf03fa93d4 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 19 二月 2025 18:33:41 +0800
Subject: [PATCH] jtt808初始化

---
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java |  102 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 82 insertions(+), 20 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index c1ab843..3dff2f5 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -13,6 +13,8 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.HttpsUtil;
+import com.doumee.core.utils.StringTools;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.ActionLogMapper;
 import com.doumee.dao.business.BikesMapper;
@@ -244,6 +246,8 @@
                 Arrays.asList(Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey(),Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()));
         queryWrapper
                 .selectAs(MemberRides::getId,MemberRidesDTO::getId)
+                .selectAs(MemberRides::getDiscountPrice,MemberRidesDTO::getDiscountPrice)
+                .selectAs(MemberRides::getType,MemberRidesDTO::getType)
                 .selectAs(Member::getOpenid,MemberRidesDTO::getOpenid)
                 .selectAs(MemberRides::getBikeCode,MemberRidesDTO::getBikeCode)
                 .selectAs(MemberRides::getCloseStatus,MemberRidesDTO::getCloseStatus)
@@ -369,8 +373,33 @@
         update.setBackUserid(user.getId());
         update.setBackType(Constants.ONE);
         update.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());
-        update.setBackSiteId(collect.get(Constants.FORCE_BACK_SITE).getCode());
-        update.setBackLockId(Constants.formatIntegerFromStr(collect.get(Constants.FORCE_BACK_LOCK).getCode()));
+        String logInfo = null;
+        Bikes bike =null;
+        if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
+            //濡傛灉鏄嚜琛岃溅锛岀粦瀹氬埌铏氭嫙绔欑偣鍜岄攣澶�
+            update.setBackSiteId(collect.get(Constants.FORCE_BACK_SITE).getCode());
+            update.setBackLockId(Constants.formatIntegerFromStr(collect.get(Constants.FORCE_BACK_LOCK).getCode()));
+            //鎻掑叆铏氭嫙閿佸ご鍜岀珯鐐逛笂-------
+            bike = new Bikes();
+            bike.setIsdeleted(Constants.ZERO);
+            bike.setCode(model.getBikeCode());
+            bike.setType(model.getType());
+            bike.setSiteId(update.getBackSiteId());
+            bike.setLockId(update.getBackLockId());
+            if(bikesMapper.selectCount(new QueryWrapper<>(bike)) == 0){
+                bike.setId(Constants.getUUID());
+                bike.setParamId(model.getParamId());
+                bike.setLastBackDate(model.getRentDate());
+                bike.setStatus(Constants.ZERO);
+                bike.setType(Constants.ZERO);
+                bike.setForceBackInfo("寮哄埗杩樿溅缁戝畾");
+                bikesMapper.insert(bike);
+            }
+        }else{
+            //濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
+            bike =   sendCloseElecBikeRequest(memberRides.getBikeCode(),Constants.ONE);
+        }
+        logInfo = bike!=null?bike.getForceBackInfo():null;
         Integer freeRentTime = Integer.valueOf(collect.get(Constants.FREE_RENT_TIME).getCode());
         Integer rideTime = DateUtil.betweenMin(model.getRentDate(), update.getBackDate());
         //璁$畻楠戣璁¤垂鏃堕暱
@@ -381,21 +410,6 @@
         String beforeContent = JSONObject.toJSONString(model);
         //淇敼鍚�
         String after = JSONObject.toJSONString(update);
-
-        //鎻掑叆铏氭嫙閿佸ご鍜岀珯鐐逛笂-------
-        Bikes bike = new Bikes();
-        bike.setIsdeleted(Constants.ZERO);
-        bike.setCode(model.getBikeCode());
-        bike.setSiteId(update.getBackSiteId());
-        bike.setLockId(update.getBackLockId());
-        if(bikesMapper.selectCount(new QueryWrapper<>(bike)) == 0){
-            bike.setId(Constants.getUUID());
-            bike.setParamId(model.getParamId());
-            bike.setLastBackDate(model.getRentDate());
-            bike.setStatus(Constants.ZERO);
-            bike.setInfo("寮哄埗杩樿溅缁戝畾");
-            bikesMapper.insert(bike);
-        }
 
         ActionLog log = new ActionLog();
         log.setId(Constants.getUUID());
@@ -410,6 +424,7 @@
         log.setObjType(Constants.ActionLogObjType.memberrides);
         log.setResult(Constants.ZERO);
         log.setObjId(model.getId());
+        log.setInfo(logInfo);
         log.setType(Constants.ACTIONLOG_TYPE.FORCE_BACK.getKey());
         log.setContent(Constants.ACTIONLOG_TYPE.FORCE_BACK.getInfo());
         log.setTitle(Constants.ACTIONLOG_TYPE.FORCE_BACK.getName());
@@ -419,7 +434,52 @@
         actionLogMapper.insert(log);
 
     }
+    /**
+     *  濡傛灉鏄數杞︼紝璇锋眰web绔帴鍙e叧闂溅杈嗕俊鎭�
+     */
+    private Bikes sendCloseElecBikeRequest(String bikeCode,int type) {
+        Bikes  bike = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda()
+                .eq(Bikes::getType,Constants.ONE)
+                .eq(Bikes::getIsdeleted,Constants.ZERO)
+                .eq(Bikes::getCode,bikeCode)
+        );
+        if(bike == null){
+            return null;
+        }
+        bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�");
+        if(StringUtils.isNotBlank(bike.getDeviceSn())){
+            try {
+                //璇锋眰鍦板潃
+                String url = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ELEC_BIKE_CONTRIL_API_URL).getCode();
+                JSONObject param = new JSONObject();
+                param.put("clientId",StringTools.leftTrip(bike.getDeviceSn(),'0'));
+                param.put("type",type);//0寮�閿� 1鍏抽攣
+                String res = HttpsUtil.postJsonString(url,param.toJSONString());
+                JSONObject json = JSONObject.parseObject(res);
+                if(json.get("code").equals("200")){
+                    //鍙戣捣鎸囦护鎴愬姛
+                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣鎴愬姛锛�");
+                }else{
+                    bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触锛�"+json.get("msg"));
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }else{
+            bike.setForceBackInfo("寮哄埗杩樿溅鍏抽棴杞﹂攣澶辫触,鏈粦瀹氭帶鍒跺櫒sn锛�");
+        }
+        bikesMapper.updateById(bike);
+        return bike;
+    }
 
+    public static void main(String[] args) {
+        String url = "http://localhost:10025/jtt808/device/8500";
+        JSONObject param = new JSONObject();
+        param.put("clientId",StringTools.leftTrip("0067244400211",'0'));
+        param.put("type",0);//0寮�閿� 1鍏抽攣
+        String res = HttpsUtil.postJsonString(url,param.toJSONString());
+        System.out.println(res);
+    }
     public ConcurrentMap<String,Integer> cacheOpenLock = new ConcurrentReferenceHashMap<>();
 
     @Override
@@ -477,6 +537,7 @@
                 locks =new Locks();
                 locks.setCode(Constants.formatIntegerFromStr(codes[1]));
                 locks.setSiteId(codes[0]);
+                locks.setId(codes[1]);
                 deviceService.getLockInfo(locks);
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "褰撳墠杞﹁締鏆傛椂鏃犳硶浣跨敤锛岃绋嶅悗閲嶈瘯鎴栨洿鎹㈠叾瀹冭溅杈嗭紒");
             }
@@ -495,10 +556,10 @@
                 memberRides.setRentLockId(locks.getCode());
                 memberRides.setOrdreId(goodsorder.getId());
                 memberRides.setRentDate(new Date());
+                memberRides.setType(Constants.ZERO);
                 memberRides.setBalance(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode()));
                 memberRides.setStatus(Constants.MEMBER_RIDES_STATUS.LOCKING.getKey());
                 memberRides.setCloseStatus(Constants.ZERO);
-
                 memberRidesMapper.insert(memberRides);
                 BeanUtils.copyProperties(memberRides, memberRidesDetailResponse);
             }else{
@@ -670,9 +731,9 @@
         if (!CollectionUtils.isEmpty(memberRides)){
             memberRides.forEach(s->{
                 Integer between = DateUtil.betweenSeconds(s.getCreateDate(), new Date());
-                // 澶т簬闃堝��
+                // 澶т簬闃堝��,鑷姩璁句负寮�閿佹垚鍔燂紙濡傚疄闄呮湭寮�閿侊紝鑱旂郴绔欑偣绠$悊鍛樺悗鍙拌繘琛屽己鍒惰繕杞︽搷浣滐級
                 if (between >= 20){
-                    s.setStatus(Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey());
+                    s.setStatus(Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey());
                     s.setEditDate(new Date());
                     memberRidesMapper.updateById(s);
                 }
@@ -716,6 +777,7 @@
             bikes.setEditDate(bikes.getCreateDate());
             bikes.setSiteId(model.getSiteId());
             bikes.setLockId(model.getCode());
+            bikes.setType(Constants.ZERO);
             bikes.setCode(model.getBikeCode());
             bikes.setParamId(getBileTypeByCode(model.getBikeCode()));
             bikesMapper.insert(bikes);

--
Gitblit v1.9.3