111
k94314517
2025-02-20 171de641204992c462047fb1552009e753b562fe
server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java
@@ -8,12 +8,16 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.dingding.DingDingNotice;
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.SendWxMessage;
import com.doumee.core.wx.WxMiniConfig;
import com.doumee.core.wx.WxMiniUtilService;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.BikesJoinMapper;
import com.doumee.dao.business.join.GoodsorderJoinMapper;
import com.doumee.dao.business.join.MemberRidesJoinMapper;
import com.doumee.dao.business.join.RefundJoinMapper;
@@ -26,9 +30,11 @@
import com.doumee.service.business.GoodsorderService;
import com.doumee.service.business.PricingRuleService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ConcurrentReferenceHashMap;
@@ -50,12 +56,18 @@
@Service
public class Jtt808Service {
    @Value("${tencent.map.remoteHost}")
    private String mapHost;
    @Value("${tencent.map.appKey}")
    private String mapKey;
    @Autowired
    private MessageManager messageManager;
    @Autowired
    private GoodsorderService goodsorderService;
    @Autowired
    private BikesMapper bikesMapper;
    @Autowired
    private BikesJoinMapper bikesJoinMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
@@ -77,6 +89,9 @@
    @Autowired
    private HolidaysMapper holidaysMapper;
    @Autowired
    private SendWxMessage sendWxMessage;
    @Autowired
@@ -274,8 +289,12 @@
        }
    }
    public void updateBikesInfo(List<T0200> list) {
    public void updateBikesInfo(List<T0200> list) throws Exception{
        Date date = new Date();
        BigDecimal lowVoltage = new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LOW_VOLTAGE).getCode());
        String ddToken = systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_TOKEN).getCode();
        String ddRobotCode = systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_ROBOTCODE).getCode();
        String ddChatToken = systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_CHATTOKEN).getCode();
        for(T0200 m : list){
            Bikes bike = new Bikes();
            bike.setDeviceSn(m.getClientId());
@@ -316,6 +335,17 @@
                    .set(Bikes::getSiteId,site ==null?null:site.getId())
                    .set( Bikes::getHeartDate,date)
                    .eq(Bikes::getId,bikes.getId()));
            if(bikes.getVoltage().compareTo(lowVoltage)>=Constants.ZERO
                    && bike.getVoltage().compareTo(lowVoltage)<Constants.ZERO){
                //发送钉钉通知
                DingDingNotice.lowVoltageNotice(bikes.getCode(),
                        PositionUtil.getTxMapAddrByLatAndLng(Double.valueOf(bike.getLatitude().toString()),Double.valueOf(bike.getLongitude().toString()),mapHost,mapKey)
                        ,Objects.nonNull(site)?site.getName():null,
                        ddToken,
                        ddRobotCode,
                        ddChatToken);
            }
        }
    }
@@ -491,14 +521,14 @@
    /**
     * 临时停车超时 自动还车
     */
    public void autoBackBike(){
    public void autoBackBike() throws WxErrorException {
       List<MemberRides> memberRidesList =  memberRidesJoinMapper.selectJoinList(MemberRides.class,new MPJLambdaWrapper<MemberRides>()
                .selectAll(MemberRides.class)
                .leftJoin(Goodsorder.class,Goodsorder::getId,MemberRides::getOrdreId)
                .eq(Goodsorder::getStatus,Constants.ONE)
                .eq(MemberRides::getIsdeleted,Constants.ZERO)
                .eq(MemberRides::getType,Constants.ONE)
                .eq(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_PAUSING)
                .eq(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_PAUSING.getKey())
                .apply(" NOW() >= t.create_date  + INTERVAL '2 hours' ")
        );
@@ -530,12 +560,14 @@
            goodsorder.setEditDate(date);
            goodsorder.setEditor(null);
            goodsorderService.dealCloseGoodsorderBiz( goodsorder,Constants.REFUND_TYPE.NORMAL.getKey(),memberRides);
            //发送小程序通知
            Member member = memberMapper.selectById(goodsorder.getMemberId());
            if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenid())){
                sendWxMessage.bookingsCancel(member.getOpenid(),goodsorder.getId(), WxMiniConfig.wxMaService.getAccessToken(),timeOutRides.getBikeCode(),goodsorder.getPayDate(),goodsorder.getEndDate());
            }
        }
    }