From eb49564ab17c6695d8928d5a63a57c58b3cfd79c Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 11 十二月 2024 18:21:30 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java | 158 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 122 insertions(+), 36 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java index 4c324ed..9622ddf 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java @@ -6,16 +6,21 @@ import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; -import com.doumee.core.utils.Constants; -import com.doumee.core.utils.DESUtil; -import com.doumee.core.utils.DateUtil; -import com.doumee.core.utils.Utils; +import com.doumee.core.utils.*; +import com.doumee.core.wx.wxPlat.WxPlatConstants; +import com.doumee.core.wx.wxPlat.WxPlatNotice; import com.doumee.dao.business.*; +import com.doumee.dao.business.dao.SmsConfigMapper; +import com.doumee.dao.business.dao.SmsEmailMapper; import com.doumee.dao.business.join.ApproveJoinMapper; import com.doumee.dao.business.join.CarUseBookJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.ApproveDataVO; import com.doumee.dao.business.vo.DateIntervalVO; + +import com.doumee.dao.system.SystemUserMapper; +import com.doumee.dao.system.join.NoticesJoinMapper; +import com.doumee.dao.system.model.Notices; import com.doumee.dao.system.model.SystemDictData; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.ApproveService; @@ -24,22 +29,19 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.doumee.service.business.third.EmayService; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import io.swagger.annotations.ApiModelProperty; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; +import java.util.*; import java.util.Date; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; /** * 杞﹁締_鐢ㄨ溅鐢宠淇℃伅琛⊿ervice瀹炵幇 @@ -65,6 +67,9 @@ private ApproveJoinMapper approveJoinMapper; @Autowired + private NoticesJoinMapper noticesJoinMapper; + + @Autowired private ApproveService approveService; @Autowired @@ -74,14 +79,29 @@ private MemberMapper memberMapper; + @Autowired + private SmsConfigMapper smsConfigMapper; + + @Autowired + private SmsEmailMapper smsEmailMapper; + + @Autowired + private EmayService emayService; + + @Autowired + private WxNoticeConfigMapper wxNoticeConfigMapper; + + @Autowired + private SystemUserMapper systemUserMapper; + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public Integer create(CarUseBook carUseBook) throws Exception { if(Objects.isNull(carUseBook) || Objects.isNull(carUseBook.getCarId()) || Objects.isNull(carUseBook.getStartTime()) || Objects.isNull(carUseBook.getEndTime()) || Objects.isNull(carUseBook.getCreator()) - || Objects.isNull(carUseBook.getMemberId()) || Objects.isNull(carUseBook.getPlanUseDate()) || Objects.isNull(carUseBook.getType()) || StringUtils.isEmpty(carUseBook.getMemberIds()) @@ -91,8 +111,11 @@ ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } + if(Objects.nonNull(carUseBook.getCreator())&&Objects.isNull(carUseBook.getMemberId())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐧诲綍鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�!"); + } if(carUseBook.getEndTime().getTime()<=System.currentTimeMillis()){ - throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"閫夋嫨鏃ユ湡寮傚父[缁撴潫鏃堕棿灏忎簬褰撳墠鏃堕棿],璇峰埛鏂伴噸璇�"); +// throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"閫夋嫨鏃ユ湡寮傚父[缁撴潫鏃堕棿灏忎簬褰撳墠鏃堕棿],璇峰埛鏂伴噸璇�"); } if(!(DateUtil.getDateFromString(carUseBook.getPlanUseDate()+":00").getTime()>=carUseBook.getStartTime().getTime() && DateUtil.getDateFromString(carUseBook.getPlanUseDate() +":00").getTime()<= carUseBook.getEndTime().getTime()) @@ -103,14 +126,15 @@ carUseBook.setCreateDate(new Date()); carUseBook.setIsdeleted(Constants.ZERO); Cars cars = carsMapper.selectById(carUseBook.getCarId()); - if(Objects.isNull(cars)||!cars.getType().equals(Constants.ONE)){ + if(Objects.isNull(cars)||!cars.getType().equals(Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"杞﹁締淇℃伅寮傚父"); } + carUseBook.setCarCode(cars.getCode()); //鏍规嵁杞﹁締鏌ヨ鍙告満淇℃伅 CarDriver carDriver = carDriverMapper.selectOne(new QueryWrapper<CarDriver>().lambda() .eq(CarDriver::getCarId,cars.getId()) .eq(CarDriver::getIsdeleted,Constants.ZERO) - .eq(CarDriver::getStatus,Constants.ONE) +// .eq(CarDriver::getStatus,Constants.ZERO) .last( " limit 1 ") ); if(Objects.nonNull(carDriver)&&Objects.nonNull(carDriver.getMemberId())){ @@ -123,6 +147,19 @@ carUseBookMapper.insert(carUseBook); //鐢ㄨ溅鐢宠 瀹℃壒璁板綍鍒涘缓 approveService.createApproveFlow(carUseBook.getType()==0?3:4,carUseBook.getId(),carUseBook.getMemberId()); + //鍙戦�佸井淇″叕浼楀彿閫氱煡 + //鍙戦�佸井淇″叕浼楀彿閫氱煡 + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); + if(Objects.nonNull(systemUser) && StringUtils.isNotBlank(systemUser.getOpenid())){ + carUseBook.setMemberName(systemUser.getRealname()); + wxPlatNotice.sendCarUseBookTemplateNotice(systemDictDataBiz, + wxNoticeConfigMapper,carUseBook, + WxPlatConstants.carUseBookContent.carUseBookUpload, + systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), + Arrays.asList(systemUser.getOpenid().split(",")),0); + } + return carUseBook.getId(); } @@ -181,14 +218,18 @@ .eq(CarUseBook::getId,id) .last("limit 1" ); CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper); + if(Objects.isNull(model)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id, - model.getType().equals(Constants.ZERO)?3:4, + Constants.equalsInteger(model.getType(),Constants.ZERO)?3:4, memberId); List<Approve> approveList = approveDataVO.getApproveList(); if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); - Member member = memberMapper.selectById(model.getCancelUser()); + Member member1 = memberMapper.selectById(model.getCancelUser()); + Approve approve = new Approve(); approve.setApproveType(Constants.ZERO); approve.setCreateDate(model.getCancelTime()); @@ -196,11 +237,14 @@ approve.setStatusInfo("宸叉挙閿�"); approve.setStatus(Constants.FOUR); approve.setType(Constants.ZERO); - approve.setMemberName(member.getName()); - if(StringUtils.isNotBlank(member.getFaceImg())){ - approve.setFaceImg(path + member.getFaceImg()); + if(member1!=null) { + approve.setMemberName(member1.getName()); + if (StringUtils.isNotBlank(member1.getFaceImg())) { + approve.setFaceImg(path + member1.getFaceImg()); + } } approve.setCheckInfo(model.getCancelInfo()); + approve.setCheckDate(model.getCancelTime()); approveList.add(approve); } model.setApproveDateVO(approveDataVO); @@ -233,7 +277,18 @@ queryWrapper.select("t4.company_name_path",CarUseBook::getCompanyName); queryWrapper.leftJoin(Member.class,Member::getId,CarUseBook::getMemberId) .leftJoin(Member.class,Member::getId,CarUseBook::getDriverId) - .leftJoin("company t4 on t1.company_id=t4.id"); + .leftJoin("company t4 on t1.company_id=t4.id"); //鏁版嵁鏉冮檺寮�濮�--------------------start---------------- + LoginUserInfo userInfo =pageWrap.getModel().getLoginUserInfo(); + if(userInfo!=null && userInfo.getCompanyIdList()!=null){ + if( userInfo.getCompanyIdList().size() ==0){ + //鍙兘鐪嬭嚜宸� + queryWrapper.eq(CarUseBook::getCreator,userInfo.getId()); + }else{ + queryWrapper.in("t1.company_id" ,userInfo.getCompanyIdList()); + } + } + //鏁版嵁鏉冮檺寮�濮�--------------------end---------------- + queryWrapper .eq(pageWrap.getModel().getId() != null, CarUseBook::getId, pageWrap.getModel().getId()) .eq(pageWrap.getModel().getCreator() != null, CarUseBook::getCreator, pageWrap.getModel().getCreator()) @@ -365,28 +420,29 @@ .or().like(CarUseBook::getEndTime,dateDay) .or().apply(" START_TIME < '"+dateDay+" 00:00:00' and END_TIME > '"+dateDay+" 23:59:59' ")) ); - if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)){ - for (DateIntervalVO dateIntervalVO:dateIntervalVOList) { - //鍒ゆ柇鏃堕棿鏄惁澶т簬褰撳墠 - if(DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()<=System.currentTimeMillis()){ - dateIntervalVO.setIsUse(Constants.ONE); - continue; - } + for (DateIntervalVO dateIntervalVO:dateIntervalVOList) { + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)){ for (CarUseBook i:carUseBookList ) { if( - (DateUtil.getDateFromString(dateIntervalVO.getStartTime()).getTime() <= i.getStartTime().getTime() && - i.getStartTime().getTime() < DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()) - || - (DateUtil.getDateFromString(dateIntervalVO.getStartTime()).getTime() < i.getEndTime().getTime() && - i.getEndTime().getTime() <= DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()) - || - (DateUtil.getDateFromString(dateIntervalVO.getStartTime()).getTime() >= i.getStartTime().getTime() && - DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime() <= i.getEndTime().getTime()) + (DateUtil.getDateFromString(dateIntervalVO.getStartTime()).getTime() <= i.getStartTime().getTime() && + i.getStartTime().getTime() < DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()) + || + (DateUtil.getDateFromString(dateIntervalVO.getStartTime()).getTime() < i.getEndTime().getTime() && + i.getEndTime().getTime() <= DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()) + || + (DateUtil.getDateFromString(dateIntervalVO.getStartTime()).getTime() >= i.getStartTime().getTime() && + DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime() <= i.getEndTime().getTime()) ){ + dateIntervalVO.setCarUseBookId(i.getId()); dateIntervalVO.setIsUse(Constants.ONE); break; } } + } + //鍒ゆ柇鏃堕棿鏄惁澶т簬褰撳墠 + if(Constants.equalsInteger(dateIntervalVO.getIsUse(),Constants.ZERO) && DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()<=System.currentTimeMillis()){ +// dateIntervalVO.setIsUse(Constants.ONE); + continue; } } return dateIntervalVOList; @@ -430,7 +486,7 @@ carUseBook.setCancelTime(new Date()); carUseBook.setCancelStatus(Constants.ONE); carUseBook.setStatus(Constants.FOUR); - carUseBook.setCancelUser(loginUserInfo.getId()); + carUseBook.setCancelUser(loginUserInfo.getMemberId()); carUseBook.setCancelType(Constants.ONE); if(loginUserInfo.getId().equals(carUseBook.getCreator())){ carUseBook.setCancelType(Constants.ZERO); @@ -446,6 +502,36 @@ .in(Approve::getObjType,Constants.approveObjectType.cityUseCar,Constants.approveObjectType.unCityUseCar) .eq(Approve::getObjId,id) ); + + //澶勭悊寰呭姙淇℃伅 + noticesJoinMapper.update(null,new UpdateWrapper<Notices>().lambda() + .set(Notices::getStatus,Constants.ONE) + .eq(Notices::getType,Constants.TWO) + .eq(Notices::getObjId,carUseBook.getId()) + ); + + + SystemUser systemUser = systemUserMapper.selectById(carUseBook.getCreator()); + if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getMobile())){ + //鐢ㄨ溅鐢宠鍙栨秷 + SmsEmailServiceImpl.sendCarUseSms(systemDictDataBiz, + emayService,smsEmailMapper,smsConfigMapper,carUseBookMapper,carUseBook.getId(), + SmsConstants.carUseBookContent.carUseBookCancel, + info, Arrays.asList(systemUser.getMobile().split(",")) + ); + if(StringUtils.isNotBlank(systemUser.getOpenid())){ + carUseBook.setMemberName(systemUser.getRealname()); + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + wxPlatNotice.sendCarUseBookTemplateNotice(systemDictDataBiz, + wxNoticeConfigMapper, + carUseBook, + WxPlatConstants.carUseBookContent.carUseBookCancel, + systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(), + Arrays.asList(systemUser.getOpenid().split(",")), + Constants.TWO); + } + + } } -- Gitblit v1.9.3