server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -419,12 +419,31 @@ } public interface noticesObjectType{ public static Integer approveTypeToNoticeType(Integer approveType){ if(Constants.equalsInteger(approveType,Constants.approveObjectType.unConstructionVisit) ||Constants.equalsInteger(approveType,Constants.approveObjectType.constructionVisit)){ return Constants.noticesObjectType.visit; }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.visitReporting)){ return Constants.noticesObjectType.visitReporting; }else if(Constants.equalsInteger(approveType,Constants.approveObjectType.cityUseCar) ||Constants.equalsInteger(approveType,Constants.approveObjectType.unCityUseCar)){ return Constants.noticesObjectType.useCar; }else { return Constants.noticesObjectType.system; } } public interface noticesObjectType{ int visit = 0;//访客申请 int visitReporting = 2;//访客报备 int cityUseCar = 3;//市内用车 int unCityUseCar = 4;//市外用车 int logisticsCarUse = 5;//物流车预约 int visitReporting = 1;//访客报备 int useCar = 2;//用车申请 int dangerDeal = 3;//隐患处理 int logisticsCarUse = 4;//物流车审批 int system = 5;//系统消息 } @@ -575,6 +594,8 @@ return reqJson; } public enum NoticeType { ZERO(0, "待审核","","","待审核","待处理","处理中"), server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -961,105 +961,6 @@ } } /** * 将指定格式的字符串转换为日期型 * * @param strDate * - 日期 * @param oracleFormat * --oracle型日期格式 * @return 转换得到的日期 */ @SuppressWarnings("unchecked") public static Date stringToDate(String strDate, String oracleFormat) { if (strDate == null) return null; Hashtable<Integer, String> h = new Hashtable<Integer, String>(); String javaFormat = new String(); String s = oracleFormat.toLowerCase(); if (s.indexOf("yyyy") != -1) h.put(new Integer(s.indexOf("yyyy")), "yyyy"); else if (s.indexOf("yy") != -1) h.put(new Integer(s.indexOf("yy")), "yy"); if (s.indexOf("mm") != -1) h.put(new Integer(s.indexOf("mm")), "MM"); if (s.indexOf("dd") != -1) h.put(new Integer(s.indexOf("dd")), "dd"); if (s.indexOf("hh24") != -1) h.put(new Integer(s.indexOf("hh24")), "HH"); if (s.indexOf("mi") != -1) h.put(new Integer(s.indexOf("mi")), "mm"); if (s.indexOf("ss") != -1) h.put(new Integer(s.indexOf("ss")), "ss"); int intStart = 0; while (s.indexOf("-", intStart) != -1) { intStart = s.indexOf("-", intStart); h.put(new Integer(intStart), "-"); intStart++; } intStart = 0; while (s.indexOf("/", intStart) != -1) { intStart = s.indexOf("/", intStart); h.put(new Integer(intStart), "/"); intStart++; } intStart = 0; while (s.indexOf(" ", intStart) != -1) { intStart = s.indexOf(" ", intStart); h.put(new Integer(intStart), " "); intStart++; } intStart = 0; while (s.indexOf(":", intStart) != -1) { intStart = s.indexOf(":", intStart); h.put(new Integer(intStart), ":"); intStart++; } if (s.indexOf("年") != -1) h.put(new Integer(s.indexOf("年")), "年"); if (s.indexOf("月") != -1) h.put(new Integer(s.indexOf("月")), "月"); if (s.indexOf("日") != -1) h.put(new Integer(s.indexOf("日")), "日"); if (s.indexOf("时") != -1) h.put(new Integer(s.indexOf("时")), "时"); if (s.indexOf("分") != -1) h.put(new Integer(s.indexOf("分")), "分"); if (s.indexOf("秒") != -1) h.put(new Integer(s.indexOf("秒")), "秒"); int i = 0; while (h.size() != 0) { Enumeration e = h.keys(); int n = 0; while (e.hasMoreElements()) { i = ((Integer) e.nextElement()).intValue(); if (i >= n) n = i; } String temp = (String) h.get(new Integer(n)); h.remove(new Integer(n)); javaFormat = temp + javaFormat; } SimpleDateFormat df = new SimpleDateFormat(javaFormat); Date myDate = new Date(); try { myDate = df.parse(strDate); } catch (Exception e) { // e.printStackTrace(); return null; } return myDate; } public static Date StringToDate(String DATE1) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java
@@ -59,7 +59,7 @@ @ExcelColumn(name="标题") private String title; @ApiModelProperty(value = "简介") @ApiModelProperty(value = "简介",notes = "展示状态描述 根据param2 设置") @ExcelColumn(name="简介") private String info; @@ -88,11 +88,11 @@ private String typeDetail; @ApiModelProperty(value = "关联参数1") @ApiModelProperty(value = "关联参数1" ,notes = "存储 消息展示JSON ") @ExcelColumn(name="关联参数1") private String param1; @ApiModelProperty(value = "关联参数2") @ApiModelProperty(value = "关联参数2",notes = "用于存储 业务状态信息 0 =待处理;1=已同意/已处理;2=已拒绝/已退回;3=已转交;4=已撤销") @ExcelColumn(name="关联参数2") private String param2; @@ -128,6 +128,10 @@ @ExcelColumn(name="状态 0正常 1已关闭 ") private Integer status; @ApiModelProperty(value = "是否抄送 0不是 1是", example = "1") @ExcelColumn(name="是否抄送 0不是 1是") private Integer sendacopy; @ApiModelProperty(value = "是否已读 0未读 1已读", example = "1") @ExcelColumn(name="是否已读 0未读 1已读") private Integer readed; server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/CarUseBookController.java
@@ -31,7 +31,7 @@ @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("business:carusebook:create") public ApiResponse create(@RequestBody CarUseBook carUseBook) { public ApiResponse create(@RequestBody CarUseBook carUseBook) throws Exception { return ApiResponse.success(carUseBookService.create(carUseBook)); } server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/CarUseBookCloudController.java
@@ -36,7 +36,7 @@ @ApiOperation("新建") @PostMapping("/create") @CloudRequiredPermission("business:carusebook:create") public ApiResponse create(@RequestBody CarUseBook carUseBook,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ public ApiResponse create(@RequestBody CarUseBook carUseBook,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) throws Exception { LoginUserInfo loginUserInfo = getLoginUser(token); carUseBook.setCreator(loginUserInfo.getId()); carUseBook.setMemberId(loginUserInfo.getMemberId()); @@ -90,7 +90,7 @@ @ApiOperation("查询车辆预约记录") @PostMapping("/carUseBookList") public ApiResponse<List<CarUseBook>> carUseBookList (@RequestBody CarUseBook carUseBook, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){ public ApiResponse<List<CarUseBook>> carUseBookList (@RequestBody CarUseBook carUseBook, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) throws Exception { return ApiResponse.success(carUseBookService.carUseBookList(carUseBook)); } server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java
@@ -1,11 +1,13 @@ package com.doumee.cloud.admin; import com.doumee.api.BaseController; import com.doumee.biz.system.SystemUserBiz; import com.doumee.config.DataSyncConfig; import com.doumee.config.annotation.CloudRequiredPermission; import com.doumee.config.annotation.LoginNoRequired; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; @@ -17,12 +19,14 @@ import com.doumee.dao.business.dto.ResetPasswordDTO; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.MemberRole; import com.doumee.dao.system.dto.UpdatePwdDto; import com.doumee.service.business.MemberService; import com.doumee.service.business.ext.ERPSyncService; import com.doumee.service.business.impl.hksync.fhk.HkSyncOrgUserFromHKServiceImpl; import io.swagger.annotations.*; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -48,6 +52,8 @@ @Autowired private MemberService memberService; @Autowired private SystemUserBiz systemUserBiz; @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @@ -345,5 +351,13 @@ @Trace(withRequestParameters = false) @ApiOperation("修改当前用户密码") @PostMapping("/updatePwd") public ApiResponse updatePwd (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody UpdatePwdDto dto) { dto.setUserId(this.getLoginUser(token).getId()); systemUserBiz.updatePwd(dto); return ApiResponse.success(null); } } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/CarUseBookService.java
@@ -21,7 +21,7 @@ * @param carUseBook 实体对象 * @return Integer */ Integer create(CarUseBook carUseBook); Integer create(CarUseBook carUseBook) throws Exception ; /** * 主键删除 @@ -100,7 +100,7 @@ long count(CarUseBook carUseBook); List<CarUseBook> carUseBookList(CarUseBook carUseBook); List<CarUseBook> carUseBookList(CarUseBook carUseBook) throws Exception ; List<DateIntervalVO> checkDateUse(Integer cars, String dateDay); server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -1,16 +1,20 @@ package com.doumee.service.business.impl; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.*; import com.doumee.dao.business.dao.CompanyMapper; import com.doumee.dao.business.dto.ApproveDTO; import com.doumee.dao.business.join.ApproveJoinMapper; import com.doumee.dao.business.join.CarUseBookJoinMapper; import com.doumee.dao.business.join.VisitsJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.ApproveDataVO; import com.doumee.dao.system.join.NoticesJoinMapper; @@ -74,7 +78,14 @@ private VisitsMapper visitsMapper; @Autowired private VisitsJoinMapper visitsJoinMapper; @Autowired private CarUseBookJoinMapper carUseBookJoinMapper; @Autowired private NoticesJoinMapper noticesJoinMapper; @Override public Integer create(Approve approve) { @@ -301,11 +312,33 @@ for (int i = 0; i < approveParamList.size(); i++) { ApproveParam approveParam = approveParamList.get(i); List<Integer> ids = this.getApproveUserIds(approveParam,createMember); //生成待办 notices 表数据 if(i==0){ } for (Integer memberId:ids) { Integer noticeType = Constants.approveTypeToNoticeType(approveTempl.getType()); String title = "【访客申请】申请人 - "; Map<String,Object> jsonMap = new HashMap<>(); for (int j = 0; j < ids.size(); j++) { Integer memberId = ids.get(j); //生成待办 notices 表数据 if(i==0){ if(jsonMap.isEmpty()){ title = this.createNoticesData(noticeType,businessId,title,jsonMap); } Notices notices = new Notices(); notices.setCreateDate(new Date()); notices.setIsdeleted(Constants.ZERO); notices.setObjId(businessId); notices.setObjType(noticeType); notices.setType(noticeType); notices.setTitle(title); notices.setParam1(JSONObject.toJSONString(jsonMap)); notices.setUserId(memberId); notices.setPalt(Constants.ZERO); notices.setStatus(Constants.ZERO); notices.setReaded(Constants.ZERO); notices.setSendacopy(Constants.ZERO); notices.setParam2("0"); notices.setInfo("待处理"); noticesJoinMapper.insert(notices); } Approve approve = new Approve(); approve.setRemark(approveParam.getRemark()); approve.setCreateDate(new Date()); @@ -327,29 +360,59 @@ } } public void createNoticesData(List<Approve> approveList){ for (Approve approve:approveList) { Notices notices = new Notices(); notices.setCreateDate(new Date()); notices.setIsdeleted(Constants.ZERO); notices.setObjId(approve.getObjId()); notices.setObjId(approve.getApproveType()); if(Constants.equalsInteger(approve.getType(),Constants.approveObjectType.unConstructionVisit) || Constants.equalsInteger(approve.getType(),Constants.approveObjectType.constructionVisit)){ notices.setType(Constants.ZERO); }else if(Constants.equalsInteger(approve.getType(),Constants.approveObjectType.visitReporting)){ notices.setType(Constants.ONE); public String createNoticesData(Integer noticeType,Integer businessId,String title,Map<String,Object> jsonMap){ jsonMap.clear(); if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visit) || Constants.equalsInteger(noticeType,Constants.noticesObjectType.visitReporting)){ //访客记录与访客报备 Visits visits = visitsJoinMapper.selectJoinOne(Visits.class, new MPJLambdaWrapper<Visits>().selectAll(Visits.class) .selectAs(Member::getName,Visits::getReceptMemberName) .selectAs(Company::getName,Visits::getReceptMemberDepartment) .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId) .leftJoin(Company.class,Company::getId,Member::getCompanyId) .eq(Visits::getId,businessId) .last(" limit 1 ") ); if(Objects.isNull(visits)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到业务数据信息"); } if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visit)){ title = title + visits.getName(); }else{ title = "【访客报备】申请人 - " + visits.getName(); } jsonMap.put("name", "访问人:" + visits.getCompanyName() + " - " + visits.getReceptMemberName()); jsonMap.put("sTime", "入园时间:" + DateUtil.DateToStr(visits.getStarttime() , "yyyy-MM-dd HH:mm")); jsonMap.put("eTime", "离园时间:" + DateUtil.DateToStr(visits.getEndtime() , "yyyy-MM-dd HH:mm")); jsonMap.put("reason", StringUtils.isBlank(visits.getReason())?"来访事由: - ": "来访事由:" +visits.getReason()); jsonMap.put("carNos", StringUtils.isBlank(visits.getCarNos())?"随行车辆: - ": "随行车辆:" +visits.getCarNos()); }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.useCar)){ //用车申请 CarUseBook carUseBook = carUseBookJoinMapper.selectJoinOne(CarUseBook.class, new MPJLambdaWrapper<CarUseBook>().selectAll(CarUseBook.class) .selectAs(Member::getName,CarUseBook::getMemberName) .selectAs(Company::getName,CarUseBook::getCompanyName) .leftJoin(Member.class,Member::getId,CarUseBook::getMemberId) .leftJoin(Company.class,Company::getId,Member::getCompanyId) .eq(CarUseBook::getId,businessId) .last(" limit 1 ") ); if(Objects.isNull(carUseBook)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到业务数据信息"); } title = "【用车申请】申请人 - " + carUseBook.getMemberName(); jsonMap.put("name", "申请人:" + carUseBook.getCompanyName() + " - " + carUseBook.getMemberName()); jsonMap.put("sTime", "开始时间:" + DateUtil.DateToStr(carUseBook.getStartTime() , "yyyy-MM-dd HH:mm")); jsonMap.put("eTime", "结束时间:" + DateUtil.DateToStr(carUseBook.getEndTime() , "yyyy-MM-dd HH:mm")); jsonMap.put("usrNum", StringUtils.isBlank(carUseBook.getMemberIds())?"乘车人数: 0人": "乘车人数: " +carUseBook.getMemberIds().split(",").length +"人"); jsonMap.put("mdd", StringUtils.isBlank(carUseBook.getAddr())?"目的地: - ": "目的地:" +carUseBook.getAddr()); }else { throw new BusinessException(ResponseStatus.NOT_ALLOWED); } return title; } @@ -822,16 +885,18 @@ .ne(Approve::getId,approve.getId())); }else{ //处理其他业务数据 if(approve.getApproveType().equals(Constants.ZERO)&&approve.getIsEndCheck()==Constants.ONE){ //或签 且 终审 if((approve.getApproveType().equals(Constants.ZERO) || approve.getApproveType().equals(Constants.TWO)) &&approve.getIsEndCheck()==Constants.ONE){ //或签 / 单人审 且 终审 approveJoinMapper.update(null,new UpdateWrapper<Approve>() .lambda() .set(Approve::getStatus,Constants.approveStatus.otherDeal) .in(Approve::getId,approveList.stream().map(m->m.getId()).collect(Collectors.toList()))); dealBusinessBean = true; }else if(approve.getApproveType().equals(Constants.ZERO)&&approve.getIsEndCheck()!=Constants.ONE){ //或签 非终审 则开启下一步业务流程 }else if((approve.getApproveType().equals(Constants.ZERO) || approve.getApproveType().equals(Constants.TWO)) &&approve.getIsEndCheck()!=Constants.ONE){ //或签 / 单人审 非终审 则开启下一步业务流程 /**处理本级数据**/ approveJoinMapper.update(null,new UpdateWrapper<Approve>() .lambda() @@ -846,7 +911,7 @@ .eq(Approve::getObjType,approve.getObjType()) .eq(Approve::getLevel,(approve.getLevel()+1)) ); //TODO 更新消息数据 发送下一级数据消息 }else if(approve.getApproveType().equals(Constants.ONE)&&approve.getIsEndCheck()==Constants.ONE){ //会签 且终审 if(approveList.size()==Constants.ZERO){ @@ -867,8 +932,6 @@ //TODO 审批未通过通知 } }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals( Constants.approveObjectType.unCityUseCar)){ // 市内外用车申请 @@ -886,6 +949,67 @@ } } public void passNextNotices(Boolean dealBusinessBean,Approve approve){ //根据审批记录查询 通知记录 Integer noticeType = Constants.approveTypeToNoticeType(approve.getObjType()); Notices notices = noticesJoinMapper.selectOne(new QueryWrapper<Notices>().lambda() .eq(Notices::getObjId,approve.getObjId()) .eq(Notices::getObjType,noticeType) .eq(Notices::getUserId,approve.getChekorId()) .eq(Notices::getSendacopy,Constants.ZERO) .eq(Notices::getIsdeleted,Constants.ZERO) ); if(Objects.isNull(notices)){ return; } if(Constants.equalsInteger(approve.getApproveType(),Constants.ZERO)){ //或签 //1、修改自己的数据记录 //2、更新他人的同级记录 为抄送 //3、如果不是终审生成下一级的数据记录 }else if(Constants.equalsInteger(approve.getApproveType(),Constants.ONE)){ //会签 //1、修改自己的数据记录 //2、根据是否为最后一位审批人 如果不是 则结束 //3、 如果是最后一位审批人 且不是终审开启下一级数据 }else{ //单人签 //1、修改自己的数据记录 //2、 是否是终审 开启下一级数据 } //业务通过 修改审批对应消息记录 if(Constants.equalsInteger(approve.getStatus(),Constants.approveStatus.pass)){ } // //终审业务 发送抄送 if (Constants.equalsInteger(approve.getIsEndCheck(),Constants.ONE)) { } } public void dealBusinessData(ApproveDTO approveDTO,Approve approve,Visits visits,CarUseBook carUseBook){ if(approveDTO.getObjType().equals(Constants.approveObjectType.unConstructionVisit) ||approveDTO.getObjType().equals(Constants.approveObjectType.constructionVisit) server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -11,6 +11,7 @@ import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.ApproveMapper; import com.doumee.dao.business.CarDriverMapper; import com.doumee.dao.business.CarUseBookMapper; import com.doumee.dao.business.CarsMapper; import com.doumee.dao.business.join.ApproveJoinMapper; @@ -67,9 +68,12 @@ @Autowired private ApproveService approveService; @Autowired private CarDriverMapper carDriverMapper; @Override public Integer create(CarUseBook carUseBook) { public Integer create(CarUseBook carUseBook) throws Exception { if(Objects.isNull(carUseBook) || Objects.isNull(carUseBook.getCarId()) || Objects.isNull(carUseBook.getStartTime()) @@ -85,31 +89,33 @@ ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(carUseBook.getEndTime().getTime()<=System.currentTimeMillis()){ 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()) ){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"出发时间错误"); } carUseBook.setStatus(Constants.ZERO); carUseBook.setCreateDate(new Date()); carUseBook.setIsdeleted(Constants.ZERO); Cars cars = carsMapper.selectById(carUseBook.getCarId()); if(Objects.isNull(cars)||!cars.getType().equals(Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"车辆信息异常"); } //查询车辆提交时间是否存在冲突的预约记录 List<CarUseBook> carUseBookList = carUseBookJoinMapper.selectJoinList(CarUseBook.class, new MPJLambdaWrapper<CarUseBook>() .selectAll(CarUseBook.class) .selectAs(Member::getName,CarUseBook::getMemberName) .selectAs(Member::getPhone,CarUseBook::getMemberMobile) .leftJoin(Member.class,Member::getId,CarUseBook::getMemberId) .eq(CarUseBook::getId,carUseBook.getCarId()) .in(CarUseBook::getStatus,0,1,2) .and(i->i.and(j->j.lt(CarUseBook::getStartTime,carUseBook.getStartTime()).gt(CarUseBook::getStartTime,carUseBook.getStartTime())) .or() .and(j->j.lt(CarUseBook::getEndTime,carUseBook.getEndTime()).gt(CarUseBook::getEndTime,carUseBook.getStartTime())) .or() .and(j->j.gt(CarUseBook::getStartTime,carUseBook.getStartTime()).lt(CarUseBook::getEndTime,carUseBook.getEndTime())) .or() .and(j->j.lt(CarUseBook::getStartTime,carUseBook.getStartTime()).gt(CarUseBook::getEndTime,carUseBook.getEndTime())) ) //根据车辆查询司机信息 CarDriver carDriver = carDriverMapper.selectOne(new QueryWrapper<CarDriver>().lambda() .eq(CarDriver::getCarId,cars.getId()) .eq(CarDriver::getIsdeleted,Constants.ZERO) .eq(CarDriver::getStatus,Constants.ONE) .last( " limit 1 ") ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)){ if(Objects.nonNull(carDriver)&&Objects.nonNull(carDriver.getMemberId())){ carUseBook.setDriverId(carDriver.getMemberId()); } //查询车辆提交时间是否存在冲突的预约记录 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(this.carUseBookList(carUseBook))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在车辆预约时间与已预约时间冲突~"); } carUseBookMapper.insert(carUseBook); @@ -166,10 +172,10 @@ queryWrapper.select("t1.phone",CarUseBook::getMemberPhone); queryWrapper.select("t2.name",CarUseBook::getDriverName); queryWrapper.select("t2.phone",CarUseBook::getDriverPhone); // queryWrapper.select("t4.company_name_path",CarUseBook::getCompanyName); 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") .eq(CarUseBook::getId,id) .last("limit 1" ); CarUseBook model = carUseBookMapper.selectJoinOne(CarUseBook.class,queryWrapper); @@ -244,15 +250,7 @@ .eq(pageWrap.getModel().getMemberId() != null, CarUseBook::getMemberId, pageWrap.getModel().getMemberId()) .eq(pageWrap.getModel().getDriverId() != null, CarUseBook::getDriverId, pageWrap.getModel().getDriverId()) .apply(pageWrap.getModel().getCompanyName() != null, "t4.company_name_path like '%"+pageWrap.getModel().getCompanyName()+"%'") .and(StringUtils.isNotBlank(pageWrap.getModel().getQueryDate()), i->i.and(j->j.lt(CarUseBook::getStartTime,pageWrap.getModel().getQueryDate() +"00:00:00").gt(CarUseBook::getStartTime,pageWrap.getModel().getQueryDate() +"23:59:59")) .or() .and(j->j.lt(CarUseBook::getEndTime,pageWrap.getModel().getQueryDate() +"23:59:59").gt(CarUseBook::getEndTime,pageWrap.getModel().getQueryDate() +"00:00:00")) .or() .and(j->j.gt(CarUseBook::getStartTime,pageWrap.getModel().getQueryDate() +"00:00:00").lt(CarUseBook::getEndTime,pageWrap.getModel().getQueryDate() +"23:59:59")) .or() .and(j->j.lt(CarUseBook::getStartTime,pageWrap.getModel().getQueryDate() +"00:00:00").gt(CarUseBook::getEndTime,pageWrap.getModel().getQueryDate() +"23:59:59")) ) .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName()) .or().like(Member::getPhone,pageWrap.getModel().getMemberName())) .ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), CarUseBook::getPlanUseDate,pageWrap.getModel().getQueryStartTime()) @@ -282,7 +280,7 @@ * @return */ @Override public List<CarUseBook> carUseBookList(CarUseBook carUseBook){ public List<CarUseBook> carUseBookList(CarUseBook carUseBook) throws Exception { if(Objects.isNull(carUseBook) || Objects.isNull(carUseBook.getCarId()) || Objects.isNull(carUseBook.getStartTime()) @@ -295,16 +293,15 @@ .selectAs(Member::getName,CarUseBook::getMemberName) .selectAs(Member::getPhone,CarUseBook::getMemberMobile) .leftJoin(Member.class,Member::getId,CarUseBook::getMemberId) .eq(CarUseBook::getId,carUseBook.getCarId()) .eq(CarUseBook::getCarId,carUseBook.getCarId()) .in(CarUseBook::getStatus,0,1,2) .and(i->i.and(j->j.lt(CarUseBook::getStartTime,carUseBook.getStartTime()).gt(CarUseBook::getStartTime,carUseBook.getStartTime())) .or() .and(j->j.lt(CarUseBook::getEndTime,carUseBook.getStartTime()).gt(CarUseBook::getEndTime,carUseBook.getStartTime())) .or() .and(j->j.gt(CarUseBook::getStartTime,carUseBook.getStartTime()).lt(CarUseBook::getEndTime,carUseBook.getEndTime())) .or() .and(j->j.lt(CarUseBook::getStartTime,carUseBook.getStartTime()).gt(CarUseBook::getEndTime,carUseBook.getEndTime())) ) .apply(" ( " + " '"+DateUtil.getPlusTime(carUseBook.getStartTime())+"' <= t.start_time AND t.start_time < '"+DateUtil.getPlusTime(carUseBook.getEndTime())+"' " + " or " + " ( '"+DateUtil.getPlusTime(carUseBook.getStartTime())+"' < t.end_time AND t.end_time < '"+DateUtil.getPlusTime(carUseBook.getEndTime())+"' ) " + " or " + " ( '"+DateUtil.getPlusTime(carUseBook.getStartTime())+"' > t.start_time AND '"+DateUtil.getPlusTime(carUseBook.getEndTime())+"' < t.end_time )" + " ) " ) ); return carUseBookList; } @@ -329,8 +326,8 @@ ||Objects.isNull(interval.getCode())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"配置错误,请联系管理员"); } Date startTime = DateUtil.StringToDate(dateDay + workStart.getCode(),"yyyy-MM-dd HH:mm:ss"); Date endTime = DateUtil.StringToDate(dateDay + workEnd.getCode(),"yyyy-MM-dd HH:mm:ss"); Date startTime = DateUtil.StringToDate((dateDay + " " +workStart.getCode()),"yyyy-MM-dd HH:mm:ss"); Date endTime = DateUtil.StringToDate(dateDay + " " + workEnd.getCode(),"yyyy-MM-dd HH:mm:ss"); Long intervalTime = Long.valueOf(interval.getCode()); LocalDateTime localStartTime = startTime.toInstant() .atZone(ZoneId.systemDefault()) @@ -344,29 +341,32 @@ .eq(CarUseBook::getIsdeleted,Constants.ZERO) .eq(CarUseBook::getCarId,cars) .in(CarUseBook::getStatus,0,1,2) .and(i->i.like(CarUseBook::getStartTime,dateDay).or().like(CarUseBook::getEndTime,dateDay) .and(i->i.like(CarUseBook::getStartTime,dateDay) .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( carUseBookList.stream().filter( i-> ( i.getStartTime().getTime()<DateUtil.stringToDate(dateIntervalVO.getStartTime(),"yyyy-MM-dd HH:mm:ss ").getTime() && i.getEndTime().getTime() > DateUtil.stringToDate(dateIntervalVO.getStartTime(),"yyyy-MM-dd HH:mm:ss ").getTime()) || ( i.getStartTime().getTime()<DateUtil.stringToDate(dateIntervalVO.getEndTime(),"yyyy-MM-dd HH:mm:ss ").getTime() && i.getEndTime().getTime() > DateUtil.stringToDate(dateIntervalVO.getEndTime(),"yyyy-MM-dd HH:mm:ss ").getTime()) || ( DateUtil.stringToDate(dateIntervalVO.getStartTime(),"yyyy-MM-dd HH:mm:ss ").getTime() < i.getStartTime().getTime() && DateUtil.stringToDate(dateIntervalVO.getStartTime(),"yyyy-MM-dd HH:mm:ss ").getTime() > i.getStartTime().getTime()) || ( DateUtil.stringToDate(dateIntervalVO.getStartTime(),"yyyy-MM-dd HH:mm:ss ").getTime() < i.getEndTime().getTime() && DateUtil.stringToDate(dateIntervalVO.getStartTime(),"yyyy-MM-dd HH:mm:ss ").getTime() > i.getEndTime().getTime()) ).collect(Collectors.toList()).size()>Constants.ZERO){ //判断时间是否大于当前 if(DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()<=System.currentTimeMillis()){ dateIntervalVO.setIsUse(Constants.ONE); }; continue; } 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()) ){ dateIntervalVO.setIsUse(Constants.ONE); break; } } } } return dateIntervalVOList; @@ -394,6 +394,7 @@ dateIntervalVO.setStartTime(startTime); dateIntervalVO.setEndTime(endTime); dateIntervalVO.setIsUse(Constants.ZERO); dateIntervalVOList.add(dateIntervalVO); } return dateIntervalVOList; } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1086,6 +1086,9 @@ queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId); queryWrapper.selectAll(Member.class) .selectAs(Company::getName,Member::getCompanyName) ; if(StringUtils.isNotBlank(member.getName())){ queryWrapper.like(Member::getName,member.getName()); } if(null != member.getType()) { queryWrapper.eq(Member::getType,member.getType());