From da045f4ac67ac3d4f55b2dd34e9a59fb7afc0c58 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 19 二月 2025 10:40:30 +0800
Subject: [PATCH] jtt808初始化
---
server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java | 2
server/web/src/main/java/com/doumee/api/web/BusinessApi.java | 7 +
server/web/src/main/java/com/doumee/jtt808/web/endpoint/JT808Endpoint.java | 22 ----
server/services/src/main/java/com/doumee/core/constants/Constants.java | 6 +
server/web/src/main/java/com/doumee/jtt808/web/config/WebLogAdapter.java | 2
server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java | 182 +++++++++++++++++++++++++++++++++++++++++---
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 3
server/services/src/main/java/com/doumee/dao/business/web/request/BackElecBikeRequest.java | 5 -
8 files changed, 184 insertions(+), 45 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
index 8589721..c213946 100644
--- a/server/services/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -47,6 +47,9 @@
public static final String BIKE_TYPE ="0,1,2,3,4,5,6,7,8" ;
public static final String MINI_PROGRAMME_REALEASE ="MINI_PROGRAMME_REALEASE" ;
public static final int FOUR =4 ;
+ public static final String PAUSE_BIKE_TYPE ="PAUSE_BIKE_TYPE" ;
+ public static final String HEART_TIME_EXPIRE_TIME ="HEART_TIME_EXPIRE_TIME" ;
+ public static final String PARK_LAT_LNG_LIST = "PARK_LAT_LNG_LIST";
public static String REDIS_DEBUG_STR="test_";
public static final String AD = "AD";
public static String REPAIR = "REPAIR";
@@ -420,7 +423,8 @@
BACK_CYCLING("宸茶繕杞�", 2,"宸茶繕杞�"),
- LOCKING_DEFEAT("寮�閿佸け璐�", 3,"寮�閿佸け璐�")
+ LOCKING_DEFEAT("寮�閿佸け璐�", 3,"寮�閿佸け璐�"),
+ RIDES_PAUSING("涓村仠涓�", 4,"涓村仠涓�")
;
String name;
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
index b333480..d9538d0 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
@@ -117,7 +117,7 @@
@ApiModelProperty(value = "閿�閲忔瘡澶╅檺棰�", example = "1")
private Integer saleDayLimit;
- @ApiModelProperty(value = "鐘舵�� 0姝e父 1浣滃簾 2杩囨湡鎴栫敤瀹�", example = "1")
+ @ApiModelProperty(value = "鐘舵�� 0姝e父 1浣滃簾 2杩囨湡鎴栫敤瀹� ", example = "1")
@ExcelColumn(name="濂楅鐘舵��",index = 7,width = 10,valueMapping = "0=姝e父锛�1=浣滃簾锛�2=杩囨湡鎴栫敤瀹�")
private Integer status;
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/BackElecBikeRequest.java b/server/services/src/main/java/com/doumee/dao/business/web/request/BackElecBikeRequest.java
index 2d06c79..6f5fc2b 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/request/BackElecBikeRequest.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/BackElecBikeRequest.java
@@ -18,11 +18,6 @@
@ApiModel("鐢佃溅绔欑偣杩樿溅璇锋眰鍙傛暟")
public class BackElecBikeRequest {
- @ApiModelProperty(value = "绾害")
- private Double latitude;
- @ApiModelProperty(value = "缁忓害")
- private Double longitude;
-
@ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級",hidden = true)
private String memberId;
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 43b7c48..33d39cf 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -596,7 +596,7 @@
}
// BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney()));
//閫�娆句箰琛�
-// int type =Constants.formatIntegerNum(refund.getType());
+// int type =Constants.formatIntegerNum(refund.getType());
Goodsorder update = new Goodsorder();
update.setId(goodsorder.getId());
update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey());
@@ -818,7 +818,6 @@
wrapper.eq(MemberRides::getOrdreId,id);
wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey());
wrapper.selectAll(MemberRides.class)
- .select("select b.device_sn from bikes b where b.isdeleted=0 and b.code = t.bike_code limit 1",MemberRides::getDeviceSn)
.selectAs(BaseParam::getSortnum, MemberRides::getSortnum)
.selectAs(BaseParam::getName, MemberRides::getParamName);
wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId);
diff --git a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
index b054b80..ec79bef 100644
--- a/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/BusinessApi.java
@@ -203,4 +203,11 @@
jtt808Service.backElecBike(param);
return ApiResponse.success( null);
}
+ @ApiOperation(value = "鐢佃溅涓存椂鍋滆溅", notes = "鐢佃溅涓存椂鍋滆溅")
+ @PostMapping("/pauseElecBike")
+ public ApiResponse pauseElecBike(@RequestBody BackElecBikeRequest param) {
+ param.setMemberId(getMemberId());
+ jtt808Service.pauseElecBike(param);
+ return ApiResponse.success( null);
+ }
}
diff --git a/server/web/src/main/java/com/doumee/jtt808/web/config/WebLogAdapter.java b/server/web/src/main/java/com/doumee/jtt808/web/config/WebLogAdapter.java
index d8f8960..ce35b60 100644
--- a/server/web/src/main/java/com/doumee/jtt808/web/config/WebLogAdapter.java
+++ b/server/web/src/main/java/com/doumee/jtt808/web/config/WebLogAdapter.java
@@ -21,14 +21,12 @@
public class WebLogAdapter extends JTMessageAdapter {
protected static final Logger log = LoggerFactory.getLogger(WebLogAdapter.class);
-
public static final HashMap<String, Set<FluxSink<Object>>> clientIds = new HashMap<>();
public static final HashSet<Integer> ignoreMsgs = new HashSet<>();
static {
ignoreMsgs.add(JT808.瀹氫綅鏁版嵁鎵归噺涓婁紶);
}
-
public WebLogAdapter(SchemaManager schemaManager) {
super(schemaManager);
}
diff --git a/server/web/src/main/java/com/doumee/jtt808/web/endpoint/JT808Endpoint.java b/server/web/src/main/java/com/doumee/jtt808/web/endpoint/JT808Endpoint.java
index bbf3d39..87e908e 100644
--- a/server/web/src/main/java/com/doumee/jtt808/web/endpoint/JT808Endpoint.java
+++ b/server/web/src/main/java/com/doumee/jtt808/web/endpoint/JT808Endpoint.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.Bikes;
+import com.doumee.jtt808.web.service.Jtt808Service;
import com.doumee.service.business.BikesService;
import io.github.yezhihao.netmc.core.annotation.Async;
import io.github.yezhihao.netmc.core.annotation.AsyncBatch;
@@ -35,7 +36,7 @@
public class JT808Endpoint {
@Autowired
- private BikesService bikesService;
+ private Jtt808Service jtt808Service;
private static final Logger log = LoggerFactory.getLogger(JT808Endpoint.class);
@@ -130,24 +131,7 @@
@AsyncBatch(poolSize = 2, maxElements = 4000, maxWait = 1000)
@Mapping(types = 浣嶇疆淇℃伅姹囨姤, desc = "浣嶇疆淇℃伅姹囨姤")
public void T0200(List<T0200> list) {
- for(T0200 m : list){
- Bikes bike = new Bikes();
- bike.setDeviceSn(m.getClientId());
- if(m.getLatitude()!=0){
- bike.setLatitude(new BigDecimal(m.getLatitude()).divide(new BigDecimal(1000000),8,BigDecimal.ROUND_HALF_UP));
- }
- if(m.getLongitude()!=0){
- bike.setLongitude(new BigDecimal(m.getLongitude()).divide(new BigDecimal(1000000),8,BigDecimal.ROUND_HALF_UP));
- }
- bike.setHeartDate(DateUtil.getDateFromLocalDateTime(m.getDeviceTime()));
- if(m.getAttributes()!=null ){
- Battery battery= (Battery) m.getAttributes().get(AttributeKey.Battery);
- if(battery !=null && battery.getVoltage()!=null){
- bike.setVoltage(new BigDecimal(battery.getVoltage()));
- }
- }
- bikesService.updateByJtt(bike);
- }
+ jtt808Service.updateBikesInfo(list);
System.out.println(JSONObject.toJSONString(list)
);
}
diff --git a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
index f596927..81510a2 100644
--- a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
+++ b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
@@ -4,10 +4,12 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
+import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.PositionUtil;
import com.doumee.core.utils.StringTools;
import com.doumee.core.wx.WxMiniUtilService;
@@ -28,10 +30,15 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.yzh.commons.model.APIResult;
+import org.yzh.protocol.commons.transform.AttributeKey;
+import org.yzh.protocol.commons.transform.attribute.Battery;
+import org.yzh.protocol.t808.T0200;
import org.yzh.protocol.t808.T0201_0500;
import org.yzh.protocol.t808.T8500;
import reactor.core.publisher.Mono;
+import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -42,6 +49,8 @@
private MessageManager messageManager;
@Autowired
private GoodsorderService goodsorderService;
+ @Autowired
+ private BikesMapper bikesMapper;
@Autowired
private DiscountMemberMapper discountMemberMapper;
@@ -89,9 +98,6 @@
@Transactional(rollbackFor = {BusinessException.class})
public void backElecBike(BackElecBikeRequest param) {
- if (param.getLatitude() == null || param.getLongitude() == null || StringUtils.isBlank(param.getMemberId())) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝瀹氫綅淇℃伅鏈夎锛岃纭瀹氫綅鏉冮檺宸插紑鍚紒");
- }
Member member = memberMapper.selectById(param.getMemberId());
if (member == null) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿淇℃伅鏌ヨ澶辫触锛岃杩斿洖閲嶆柊杩涘叆灏忕▼搴忓啀璇曪紒");
@@ -108,14 +114,24 @@
}
//鏌ヨ楠戣璁板綍
List<MemberRides> memberRides = goodsorderService.getMemberRidesForClose(goodsorder.getId());
+ List<String> backIds = new ArrayList<>();
if(memberRides!=null && memberRides.size()>0){
for (MemberRides rides : memberRides){
- if(Constants.equalsInteger(rides.getStatus(),Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey())){
- if(StringUtils.isNotBlank(rides.getDeviceSn()) &&Constants.equalsInteger(rides.getType(),Constants.ONE) ){
- Sites site = getBackSiteByPostion(param);//鏌ヨ鍋滆溅绔欑偣淇℃伅
- //濡傛灉鏄數杞﹀苟涓旀槸楠戣涓� 杩涜鍏抽攣澶勭悊
- lockBikes(rides.getDeviceSn(),Constants.ZERO);//鍙戣捣鍏抽攣鎸囦护璇锋眰
+ if(Constants.equalsInteger(rides.getStatus(),Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey())
+ &&Constants.equalsInteger(rides.getType(),Constants.ONE)){
+ //濡傛灉鏄數杞﹀苟涓旀槸楠戣涓� 杩涜鍏抽攣澶勭悊
+ Bikes bike = getElecBikeByCode(rides.getBikeCode());
+ //鏌ヨ鍋滆溅绔欑偣淇℃伅
+ if(bike.getSiteId() ==null){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜瑕佹眰鍓嶅線鍋滆溅鐐瑰仠杞︼紒");
}
+ lockBikes(bike.getDeviceSn(),Constants.ZERO);//鍙戣捣鍏抽攣鎸囦护璇锋眰
+ backIds.add(rides.getId());
+ rides.setStatus(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey());//宸茶繕杞�
+ rides.setBackSiteId(bike.getSiteId());//杩樿溅绔欑偣
+ rides.setBackDate(new Date());
+ rides.setEditDate(rides.getBackDate());
+ memberRidesJoinMapper.updateById(rides);//鏇存柊楠戣鐘舵�佷负宸茶繕杞�
}
}
}
@@ -124,12 +140,39 @@
goodsorder.setEditDate(date);
goodsorder.setEditor(null);
goodsorderService.dealCloseGoodsorderBiz( goodsorder,Constants.REFUND_TYPE.NORMAL.getKey(),memberRides);
+ }
+ private Bikes getElecBikeByCode(String bikeCode) {
+ 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){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"杞﹁締淇℃伅鏌ヨ澶辫触锛岃绋嶅悗閲嶈瘯鎴栬仈绯诲洯鍖虹鐞嗗憳澶勭悊锛�" );
+ }
+ if(StringUtils.isBlank(bike.getDeviceSn()) || bike.getLongitude()==null ||bike.getLatitude() ==null){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"杞﹁締浣嶇疆淇℃伅鏌ヨ澶辫触锛岃绋嶅悗閲嶈瘯鎴栬仈绯诲洯鍖虹鐞嗗憳澶勭悊锛�" );
+ }
+ if(StringUtils.isBlank(bike.getDeviceSn()) ){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"杞﹁締鎺у埗鍣ㄦ晠闅滐紝璇风◢鍚庨噸璇曟垨鑱旂郴鍥尯绠$悊鍛樺鐞嗭紒" );
+ }
+ int expireTime = 10*1000;//榛樿10绉�
+ try {
+ expireTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.HEART_TIME_EXPIRE_TIME).getCode())*1000;
+ }catch (Exception e){
+ }
+ if(bike.getHeartDate() == null || System.currentTimeMillis() - bike.getHeartDate().getTime() >expireTime){
+ //濡傛灉杞﹁締涓婃姤鏃堕棿瓒呰繃30绉掞紝鍒欒〃绀鸿溅杈嗘帶鍒跺櫒澶辨晥
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"杞﹁締鎺у埗鍣ㄦ晠闅滐紝鑾峰彇瀹氫綅淇℃伅澶辫触锛岃绋嶅悗閲嶈瘯鎴栬仈绯诲洯鍖虹鐞嗗憳澶勭悊锛�" );
+ }
+ return bike;
}
/**
* 鍙戣捣鍏抽攣銆佸紑閿佹寚浠よ姹�
* @param clientId
+ * @param type 鎺у埗鏍囧織锛�0.杞﹂棬瑙i攣 1.杞﹂棬鍔犻攣
*/
private void lockBikes(String clientId,int type) {
T8500 request = new T8500();
@@ -139,23 +182,23 @@
APIResult<T0201_0500> data = result.block();
if(!data.isSuccess()){
//濡傛灉寮�閿佸け璐ワ紝鍒欒繑鍥炲紓甯�
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝杩樿溅鍏抽攣澶辫触锛岃绋嶅悗閲嶈瘯锛屾垨鑰呰仈绯诲洯鍖虹鐞嗕汉鍛橈紒");
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝"+(type ==0?"杞﹁締寮�閿�":"杞﹁締鍏抽攣")+"澶辫触锛岃绋嶅悗閲嶈瘯锛屾垨鑰呰仈绯诲洯鍖虹鐞嗕汉鍛橈紒");
}
}
/**
* 鏌ヨ鍋滆溅绔欑偣淇℃伅
- * @param param
* @return
*/
- private Sites getBackSiteByPostion(BackElecBikeRequest param) {
+ private Sites getBackSiteByPostion(double lat,double lng) {
Sites site = null;//鏌ヨ鍋滆溅绔欑偣淇℃伅
List<Sites> sitesList = sitesMapper.selectList(new QueryWrapper<Sites>().lambda()
.eq(Sites::getStatus,Constants.ZERO)
.eq(Sites::getIsdeleted,Constants.ZERO)
.eq(Sites::getType,Constants.ONE));
if(sitesList ==null ||sitesList.size() ==0){
- throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜鐓ц姹傚墠寰�鍋滆溅鐐瑰仠杞︼紒");
+// throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜鐓ц姹傚墠寰�鍋滆溅鐐瑰仠杞︼紒");
+ return null;
}
for(Sites sites :sitesList){
TypeReference typeReference = new TypeReference<List<LocaltionDTO>>(){};
@@ -163,15 +206,124 @@
if(array == null || array.size() ==0){
continue;
}
- if(PositionUtil.isInPolygon(param.getLongitude(),param.getLatitude(),array)){
+ if(PositionUtil.isInPolygon(lat,lng,array)){
//濡傛灉鍦ㄥ仠杞︾偣鑼冨洿鍐咃紱
site = sites;
break;
}
- if(site ==null){
+ /* if(site ==null){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜鐓ц姹傚墠寰�鍋滆溅鐐瑰仠杞︼紒");
- }
+ }*/
}
return site;
}
+
+ /**
+ * 涓存椂鍋滆溅
+ * @param param
+ */
+ @Transactional(rollbackFor = {BusinessException.class})
+ public void pauseElecBike(BackElecBikeRequest param) {
+ Member member = memberMapper.selectById(param.getMemberId());
+ if (member == null) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿淇℃伅鏌ヨ澶辫触锛岃杩斿洖閲嶆柊杩涘叆灏忕▼搴忓啀璇曪紒");
+ }
+ Goodsorder gparam = new Goodsorder();
+ gparam.setMemberId(param.getMemberId());
+ gparam.setStatus(Constants.goodsorderStatus.pay);
+ Goodsorder goodsorder = goodsorderService.findOne(gparam);
+ if(Objects.isNull(goodsorder)){
+ throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鎮ㄥ綋鍓嶆湁楠戣涓鍗曡褰�");
+ }
+ //鏌ヨ鎵�鏈夐獞琛岃褰�
+ MemberRides memberRides = memberRidesJoinMapper.selectJoinOne(MemberRides.class,new MPJLambdaWrapper<MemberRides>()
+ .eq(MemberRides::getOrdreId,goodsorder.getId())
+ .eq(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey())
+ .selectAll(MemberRides.class)
+ .last("limit 1"));
+ if(memberRides ==null || memberRides.getBikeCode() == null){
+ throw new BusinessException(ResponseStatus.NO_UNCLOSEED_ORDER.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌鎮ㄥ綋鍓嶆湁楠戣涓褰�");
+ }
+ Bikes bike = getElecBikeByCode(memberRides.getBikeCode());
+ //鏌ヨ鍋滆溅浣嶇疆鏄惁绗﹀悎鍋滆溅浣嶇疆瑙勮寖
+ checkPausePostionBiz(bike);
+ memberRides.setPauseDate(new Date());
+ memberRides.setEditDate(memberRides.getBackDate());
+ memberRides.setStatus(Constants.MEMBER_RIDES_STATUS.RIDES_PAUSING.getKey());
+ memberRidesJoinMapper.updateById(memberRides);//鏇存柊楠戣鐘舵�佷负涓村仠涓�
+ }
+
+ private void checkPausePostionBiz(Bikes bike) {
+ int ruleType = 0;
+ try {
+ ruleType =Integer.parseInt( systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.PAUSE_BIKE_TYPE).getCode());
+ }catch (Exception e){
+ }
+ if(ruleType == 0){
+ //濡傛灉浠呴檺浜庡洯鍖轰复鏃跺仠杞�
+ List<LocaltionDTO> array = new ArrayList<>();
+ try {
+ TypeReference typeReference = new TypeReference<List<LocaltionDTO>>(){};
+ array = JSONObject.parseObject(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.PARK_LAT_LNG_LIST).getCode(), typeReference.getType());
+ }catch (Exception e){
+ }
+ if(array == null || array.size() ==0){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝鍥尯杩愯惀鍖哄煙閰嶇疆鏈夎锛岃鑱旂郴鍥尯绠$悊鍛樺鐞嗭紒");
+ }
+ if( !PositionUtil.isInPolygon(bike.getLatitude().doubleValue(),bike.getLongitude().doubleValue(),array)){
+ //濡傛灉鍦ㄥ仠杞︾偣鑼冨洿鍐咃紱
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜瑕佹眰鍦ㄥ洯鍖鸿繍钀ュ尯鍩熻寖鍥村唴鍋滆溅锛�");
+ }
+ }else{
+ //妫�鏌ユ槸鍚︽弧瓒冲仠杞︾偣鍋滆溅
+ if(bike.getSiteId() ==null){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇锋寜瑕佹眰鍓嶅線鍋滆溅鐐瑰仠杞︼紒");
+ }
+ }
+ }
+
+ public void updateBikesInfo(List<T0200> list) {
+ Date date = new Date();
+ for(T0200 m : list){
+ Bikes bike = new Bikes();
+ bike.setDeviceSn(m.getClientId());
+ if(m.getLatitude()!=0){
+ bike.setLatitude(new BigDecimal(m.getLatitude()).divide(new BigDecimal(1000000),8,BigDecimal.ROUND_HALF_UP));
+ }
+ if(m.getLongitude()!=0){
+ bike.setLongitude(new BigDecimal(m.getLongitude()).divide(new BigDecimal(1000000),8,BigDecimal.ROUND_HALF_UP));
+ }
+ bike.setHeartDate(DateUtil.getDateFromLocalDateTime(m.getDeviceTime()));
+ if(m.getAttributes()!=null ){
+ Battery battery= (Battery) m.getAttributes().get(AttributeKey.Battery);
+ if(battery !=null && battery.getVoltage()!=null){
+ bike.setVoltage(new BigDecimal(battery.getVoltage()));
+ }
+ }
+ if(StringUtils.isBlank(bike.getDeviceSn() )){
+ return;
+ }
+ String tSn = StringTools.leftPad(bike.getDeviceSn(),12,'0') ;
+ Bikes bikes = bikesMapper.selectOne(new QueryWrapper<Bikes>().lambda()
+ .eq(Bikes::getDeviceSn,tSn)
+ .eq(Bikes::getIsdeleted,Constants.ZERO)
+ .eq(Bikes::getType,Constants.ONE)
+ .last("limit 1"));
+ if(bikes == null){
+ return;
+ }
+ Sites site = null;
+ if(bikes.getLatitude()!=null && bikes.getLongitude()!=null){
+ //鏍规嵁瀹氫綅淇℃伅鏌ヨ鎵�鍦ㄧ珯鐐�
+ site = getBackSiteByPostion(bikes.getLatitude().doubleValue(),bikes.getLongitude().doubleValue());
+ }
+ bikesMapper.update(null,new UpdateWrapper<Bikes>().lambda()
+ .set(bike.getLatitude()!=null,Bikes::getLatitude,bike.getLatitude())
+ .set(bike.getVoltage()!=null,Bikes::getVoltage,bike.getVoltage())
+ .set(bike.getLongitude()!=null,Bikes::getLongitude,bike.getLongitude())
+ .set(Bikes::getSiteId,site ==null?null:site.getId())
+ .set( Bikes::getHeartDate,date)
+ .eq(Bikes::getId,bikes.getId()));
+ }
+ }
}
--
Gitblit v1.9.3