From 856f526f823f5dad88c28657d82f971ff66afb1e Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期一, 15 九月 2025 13:37:01 +0800
Subject: [PATCH] 优化
---
server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java | 105 +++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 87 insertions(+), 18 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 d32fd5d..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;
@@ -39,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;
@@ -59,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) {
@@ -116,6 +119,39 @@
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());
@@ -205,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());
@@ -219,6 +265,9 @@
.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(Constants.formatIntegerNum(pageWrap.getModel().getType())==0,Bikes::getLockId,Constants.formatIntegerFromStr(collect.get(Constants.FORCE_BACK_LOCK).getCode()))
@@ -230,11 +279,6 @@
.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().getLowVoltage() == Constants.ONE){
//浣庣數閲�
queryWrapper.lt(Bikes::getVoltage,low);
@@ -246,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) {
@@ -426,14 +483,26 @@
@Override
- public List<Bikes> getEleBikes() {
- return bikesMapper.selectList(new QueryWrapper<Bikes>()
- .lambda().eq(Bikes::getIsdeleted,Constants.ZERO)
- .eq(Bikes::getType,Constants.ONE)
- .eq(Bikes::getStatus,Constants.ZERO)
- .isNotNull(Bikes::getLatitude)
- .isNotNull(Bikes::getLongitude)
+ 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