From fa7ac16021db8d9a6a5bc214f50600420876325e Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 08 九月 2025 10:57:41 +0800
Subject: [PATCH] jtt808初始化
---
server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java | 140 +++++++++++++++++++++++++++++++++++++++-------
1 files changed, 117 insertions(+), 23 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
index e441663..d1fc03f 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
@@ -12,12 +12,14 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.BaseParamMapper;
import com.doumee.dao.business.BikesMapper;
+import com.doumee.dao.business.MemberRidesMapper;
import com.doumee.dao.business.join.BikesJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.BikesImportVO;
import com.doumee.dao.business.web.response.BikeLogDTO;
import com.doumee.dao.business.web.response.MemberRidesDTO;
import com.doumee.dao.business.web.response.MiniProgrammeDTO;
+import com.doumee.dao.business.web.response.UserResponse;
import com.doumee.dao.system.SystemDictDataMapper;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.service.business.BikesService;
@@ -31,6 +33,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.shiro.SecurityUtils;
+import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -38,6 +41,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
+import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -58,10 +62,10 @@
private BaseParamMapper baseParamMapper;
@Autowired
private BikesJoinMapper bikesJoinMapper;
-
-
@Autowired
- SystemDictDataMapper systemDictDataMapper;
+ private MemberRidesMapper memberRidesMapper;
+ @Autowired
+ private SystemDictDataMapper systemDictDataMapper;
@Override
public String create(Bikes bikes) {
@@ -84,7 +88,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"杞︾墝鍙峰彿宸插瓨鍦�");
}
LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- bikes.setId(UUID.randomUUID().toString());
+ bikes.setId(UUID.randomUUID().toString().replace("-",""));
bikes.setCreateDate(new Date());
bikes.setCreator(user.getId());
bikes.setEditDate(bikes.getCreateDate());
@@ -115,8 +119,45 @@
bikesMapper.deleteBatchIds(ids);
}
+ /**
+ * 灏忕▼搴忕鏇存柊涓婁笅绾�
+ * @param user
+ * @param ids
+ * @param status
+ */
+ @Override
+ public void updateBikeStatusBatchWx(UserResponse user, List<String> ids, Integer status){
+ updateBikeStatusBatchBiz(ids,user.getId(),status);
+ }
+
+ /**
+ * 绠$悊绔鏇存柊涓婁笅绾�
+ */
+ @Override
+ public void updateBikeStatusBatch(List<String> ids,Integer status) {
+ LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ updateBikeStatusBatchBiz(ids,user.getId(),status);
+ }
+ public void updateBikeStatusBatchBiz(List<String> ids,String userId,Integer status) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return;
+ }
+ //鐘舵�� 0鍋滆溅鍙嚭鍊� 1鍑哄�熶腑 3绂佺敤
+ status =status==0?status:1;
+ bikesMapper.update(null,new UpdateWrapper<Bikes>().lambda()
+ .set(Bikes::getEditDate,new Date())
+ .set(Bikes::getEditor,userId)
+ .set(Bikes::getBikeStatus,status)
+ .set(Bikes::getIsdeleted,Constants.ZERO)
+ .eq(Bikes::getType,Constants.ONE )
+ .in(Bikes::getId,ids));
+ }
@Override
public void updateById(Bikes bikes) {
+ Bikes model =bikesMapper.selectById(bikes.getId());
+ if (model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
QueryWrapper<Bikes> wrapper = new QueryWrapper<>();
wrapper.lambda()
.eq(Bikes::getCode,bikes.getCode())
@@ -132,13 +173,19 @@
.eq(BaseParam::getType,Constants.FOUR)) ==0){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勭數杞︾被鍨嬶紒");
}
+
LoginUserInfo user =(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- bikes.setEditDate(new Date());
- bikes.setEditor(user.getId());
- bikes.setStatus(Constants.ZERO);
- bikes.setIsdeleted(Constants.ZERO);
- bikes.setType(null);//鍙兘鏂板鐢佃溅鏁版嵁
- bikesMapper.updateById(bikes);
+ bikesMapper.update(null,new UpdateWrapper<Bikes>().lambda()
+ .set(Bikes::getEditDate,new Date())
+ .set(Bikes::getEditor,user.getId())
+ .set(StringUtils.isNotBlank(bikes.getCode()),Bikes::getCode,bikes.getCode())
+ .set(!StringUtils.equals( model.getCode(),bikes.getCode()),Bikes::getImgurl,null)
+ .set(StringUtils.isNotBlank(bikes.getDeviceSn()),Bikes::getDeviceSn,bikes.getDeviceSn())
+ .set(StringUtils.isNotBlank(bikes.getParamId()),Bikes::getParamId,bikes.getParamId())
+ .set(Bikes::getStatus, Constants.ZERO)
+ .set(Bikes::getIsdeleted, Constants.ZERO)
+ .eq(Bikes::getId,bikes.getId())
+ );
}
@Override
@@ -194,10 +241,20 @@
QueryWrapper<SystemDictData> wrapper = new QueryWrapper<>();
wrapper.lambda()
- .in(SystemDictData::getLabel, Arrays.asList(Constants.FORCE_BACK_SITE,Constants.FORCE_BACK_LOCK,Constants.LOW_BIKE_VOLTAGE));
+ .in(SystemDictData::getLabel, Arrays.asList(Constants.FORCE_BACK_SITE,Constants.FORCE_BACK_LOCK,Constants.LOW_BIKE_VOLTAGE,Constants.OBLINE_HEART_TIME_LIMIT));
List<SystemDictData> systemDictData = systemDictDataMapper.selectList(wrapper);
Map<String, SystemDictData> collect = systemDictData.stream().collect(Collectors.toMap(s -> s.getLabel(), s -> s));
-
+ double low = 0;
+ try {
+ low = Double.parseDouble(collect.get(Constants.LOW_BIKE_VOLTAGE).getCode());
+ }catch (Exception e){
+ }
+ Integer onlineTime = 60;//榛樿1鍒嗛挓鏈�氳鍒欑绾�
+ try {
+ onlineTime = Integer.parseInt(collect.get(Constants.OBLINE_HEART_TIME_LIMIT).getCode());//鏁版嵁瀛楀吀閰嶇疆鏃堕暱
+ }catch (Exception e){
+ }
+ Date onlineData = new Date(System.currentTimeMillis()-onlineTime*1000);//鍒ゆ柇绂荤嚎鍦ㄧ嚎鐨勬椂闂磋妭鐐�
IPage<Bikes> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<Bikes> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
@@ -208,23 +265,21 @@
.like(StringUtils.isNotBlank(pageWrap.getModel().getSiteName()), Sites::getName,pageWrap.getModel().getSiteName())
.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()), Bikes::getCode,pageWrap.getModel().getCode())
.like(StringUtils.isNotBlank(pageWrap.getModel().getDeviceSn()), Bikes::getDeviceSn,pageWrap.getModel().getDeviceSn())
+ .lt( pageWrap.getModel().getIsOnline() !=null&& pageWrap.getModel().getIsOnline() ==0,Bikes::getHeartDate,onlineData)//濡傛灉绂荤嚎
+ .gt( pageWrap.getModel().getIsOnline() !=null&& pageWrap.getModel().getIsOnline() ==1,Bikes::getHeartDate,onlineData)//濡傛灉鍦ㄧ嚎
+ .eq( pageWrap.getModel().getBikeStatus() !=null,Bikes::getBikeStatus,pageWrap.getModel().getBikeStatus())
.eq( pageWrap.getModel().getLockId() !=null,Bikes::getLockId,pageWrap.getModel().getLockId())
.eq( Bikes::getType,Constants.formatIntegerNum(pageWrap.getModel().getType()))//榛樿鏌ヨ鑷杞�
- .ne(Bikes::getLockId,Constants.formatIntegerFromStr(collect.get(Constants.FORCE_BACK_LOCK).getCode()))
- .ne(Bikes::getSiteId,collect.get(Constants.FORCE_BACK_SITE).getCode())
+ .ne(Constants.formatIntegerNum(pageWrap.getModel().getType())==0,Bikes::getLockId,Constants.formatIntegerFromStr(collect.get(Constants.FORCE_BACK_LOCK).getCode()))
+ .ne(Constants.formatIntegerNum(pageWrap.getModel().getType())==0, Bikes::getSiteId,collect.get(Constants.FORCE_BACK_SITE).getCode())
.and(Constants.formatIntegerNum(pageWrap.getModel().getHasBike()) == Constants.ONE,
s->s.isNull(Bikes::getCode)
.or(b->b.eq(Bikes::getCode,"")))
.and(Constants.formatIntegerNum(pageWrap.getModel().getHasBike()) == Constants.TWO,s->s
- .isNotNull(Bikes::getCode)
- .and(b->b.ne(Bikes::getCode,"")));
+ .isNotNull(Constants.formatIntegerNum(pageWrap.getModel().getType())==0,Bikes::getCode)
+ .and(Constants.formatIntegerNum(pageWrap.getModel().getType())==0,b->b.ne(Bikes::getCode,"")));
if(pageWrap.getModel().getLowVoltage()!=null){
- double low = 0;
- try {
- low = Double.parseDouble(collect.get(Constants.LOW_BIKE_VOLTAGE).getCode());
- }catch (Exception e){
- }
- if(pageWrap.getModel().getType() == Constants.ONE){
+ if(pageWrap.getModel().getLowVoltage() == Constants.ONE){
//浣庣數閲�
queryWrapper.lt(Bikes::getVoltage,low);
}else{
@@ -235,7 +290,20 @@
queryWrapper.selectAll(Bikes.class)
.selectAs(BaseParam::getName,Bikes::getParamName)
.selectAs(Sites::getName,Bikes::getSiteName) ;
- return PageData.from(bikesJoinMapper.selectJoinPage(page, Bikes.class, queryWrapper));
+ PageData<Bikes> pageData = PageData.from(bikesJoinMapper.selectJoinPage(page, Bikes.class, queryWrapper));
+ double finalLow = low;
+ Date finalOnlineTime = onlineData;
+ pageData.getRecords().forEach(i->{
+ if(Constants.equalsInteger(i.getType(),Constants.ONE)){
+ i.setLowVoltage(Constants.formatDecimalNum(i.getVoltage()).compareTo(new BigDecimal(Double.toString(finalLow)))>=0?0:1);
+ i.setIsOnline(Constants.ZERO);//榛樿绂荤嚎
+ if(i.getHeartDate()!=null && i.getHeartDate().getTime() > finalOnlineTime.getTime()){
+ i.setIsOnline(Constants.ONE);//濡傛灉鍐嶆椂闂磋寖鍥村唴 鍒欏湪绾�
+ }
+ }
+ });
+ return pageData;
+
}
@Override
public PageData<Bikes> findPage(PageWrap<Bikes> pageWrap) {
@@ -412,4 +480,30 @@
bike.setType(Constants.ONE);//鍙兘鏂板鐢佃溅鏁版嵁
return bike;
}
+
+
+ @Override
+ public List<Bikes> getEleBikes(String memberId) {
+ //鏌ヨ褰撳墠鏄惁澶勪簬楠戣涓�
+ MemberRides memberRides = memberRidesMapper.selectOne(new QueryWrapper<MemberRides>().lambda().eq(MemberRides::getMemberId,memberId)
+ .in(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey()
+ ,Constants.MEMBER_RIDES_STATUS.RIDES_PAUSING.getKey())
+ .eq(MemberRides::getType,Constants.ONE)
+ .orderByDesc(MemberRides::getCreateDate)
+ .last(" limit 1 ")
+ );
+ QueryWrapper<Bikes> queryWrapper = new QueryWrapper<>();
+ queryWrapper.lambda().eq(Bikes::getIsdeleted,Constants.ZERO)
+ .eq(Bikes::getType,Constants.ONE)
+ .isNotNull(Bikes::getLatitude)
+ .isNotNull(Bikes::getLongitude);
+ if(Objects.nonNull(memberRides)&&StringUtils.isNotBlank(memberRides.getBikeCode())){
+ queryWrapper.lambda().eq(Bikes::getCode,memberRides.getBikeCode());
+ }else{
+ queryWrapper.lambda().eq(Bikes::getStatus,Constants.ZERO);
+ }
+ return bikesMapper.selectList(queryWrapper);
+ }
+
+
}
--
Gitblit v1.9.3