server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -317,6 +317,35 @@ } } /** * 获取X月份之前的月份数 * @param currentDate * @param month * @return */ public static List<String> getBeforMonth(Date currentDate , Integer month) { SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); SimpleDateFormat sdfMonth = new SimpleDateFormat("MM"); int currentYear = Integer.parseInt(sdfYear.format(currentDate)); int currentMonth = Integer.parseInt(sdfMonth.format(currentDate)); List<String> list = new ArrayList<>(); System.out.println("近12个月份:"); for (int i = 0; i < month; i++) { int tempYear = currentYear; int tempMonth = currentMonth - i; if (tempMonth <= 0) { tempYear--; tempMonth += 12; } list.add(tempYear +"-" + StringUtils.leftPad(Integer.toString(tempMonth),2,"0")); } return list; } /** * Descrption:取得当前日期时间,格式为:YYYYMMDDHHMISS * @@ -2775,16 +2804,18 @@ // System.out.println(DateUtil.afterMinutesDate(-5)); Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss"); Date endTime = DateUtil.StringToDate("2024-05-01 17:00:00" ,"yyyy-MM-dd HH:mm:ss"); Long intervalTime = 35L; DateUtil.getBeforMonth(new Date(),12); DateUtil.checkDateInterval( startTime.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime(), endTime.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime(),intervalTime); // Date startTime = DateUtil.StringToDate("2024-05-01 08:00:00" ,"yyyy-MM-dd HH:mm:ss"); // Date endTime = DateUtil.StringToDate("2024-05-01 17:00:00" ,"yyyy-MM-dd HH:mm:ss"); // Long intervalTime = 35L; // // // DateUtil.checkDateInterval( startTime.toInstant() // .atZone(ZoneId.systemDefault()) // .toLocalDateTime(), endTime.toInstant() // .atZone(ZoneId.systemDefault()) // .toLocalDateTime(),intervalTime); } catch (Exception ex) { ex.printStackTrace(); server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
@@ -19,31 +19,32 @@ public class SmsConstants { public interface SmsObjectType{ String inventCode = "0"; //验证码 String visit= "1"; //访客申请 String visitReport = "2"; //访客报备 String hiddenDanger ="3";//隐患随手拍 String carUse ="4";//用车申请 String meeting ="5";//会议预约 String platformBook ="6";//物流车预约 String platformJob ="7";//月台作业 } public static final String inventCode ="inventCode" ; public static final String visit ="visit" ; public static final String visitReport ="visitReport" ; public static final String hiddenDanger ="hiddenDanger" ; public static final String carUse ="carUse" ; public static final String meeting ="meeting" ; public static final String platformBook ="platformBook" ; public static final String platformJob ="platformJob" ; /** * 访客申请 */ public interface visitContent{ //访客申请-通知(给审批人) String visitNotice = "您有一条【{访客申请}】需要处理,详细信息请前往微信公众号查看。"; String visitNotice = "visitNotice"; //访客申请-审批通过通知(给申请人):。 String visitAuditSuccess = "您的【{访客申请}】已经审批通过,请于{预约入园开始时间}前往门卫室访客机签到入园,如有疑问,请联系被访人"; String visitAuditSuccess = "visitAuditSuccess"; //访客申请-审批驳回通知(给申请人):。 String visitAuditFail = "您的【{访客申请}】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系被访人。"; String visitAuditFail = "visitAuditFail"; //访客申请-超时未签离-通知(给申请人): String visitTimeOutSignOut = "您的【访客申请】已于{到期时间}到期,请及时离场并前往门卫室访客机签离,如有疑问,请联系被访人"; String visitTimeOutSignOut = "visitTimeOutSignOut"; //访客申请-超时未签离-通知(给指定接收人) String visitTimeOutSignOutNum = "今日还有{未签离数量}个访客未签离,请前往PC端查看详细信息。"; String visitTimeOutSignOutNum = "visitTimeOutSignOutNum"; } @@ -53,15 +54,15 @@ */ public interface visitReportingContent{ //访客报备-通知(给审批人) String visitReportingNotice = "您有一条【{访客报备}】需要处理,详细信息请前往微信公众号查看。"; String visitReportingNotice = "visitReportingNotice"; //访客报备-审批通过通知(给申请人):。 String visitReportingAuditSuccess = "您的【{访客报备}】已经审批通过,请通知访客于{预约入园开始时间}后乘坐{车牌号}入园,如有疑问,请联系被访人。"; String visitReportingAuditSuccess = "visitReportingAuditSuccess"; //访客报备-审批驳回通知(给申请人):。 String visitReportingAuditFail = "您的【{访客报备}】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系审批人。"; String visitReportingAuditFail = "visitReportingAuditFail"; //访客报备-超时未离场-通知(给申请人): String visitReportingTimeOutSignOut = "您的【访客报备】已于{预约入园结束时间}到期,请及时离场,如有疑问,请联系被访人"; String visitReportingTimeOutSignOut = "visitReportingTimeOutSignOut"; //访客报备-超时未离场-通知(给指定接收人) String visitReporting_time_out_sign_out_num = "今日还有{未签离数量}个访客报备车辆未离场,请前往PC端查看详细信息。"; String visitReportingTimeOutSignOutNum = "visitReportingTimeOutSignOutNum"; } @@ -70,9 +71,9 @@ */ public interface hiddenDangerContent{ //隐患随手拍-通知(给处理人) String hiddenDanger_deal_user = "您有一条【{隐患随手拍-消防隐患}】需要处理,详细信息请前往微信公众号查看"; String hiddenDangerDealUser = "hiddenDangerDealUser"; //隐患随手拍-处理完成(给申请人):。 String hiddenDanger_deal_over = "您提交的【{隐患随手拍-消防隐患}】已经处理完毕,详细信息请前往微信公众号查看。"; String hiddenDangerDealOver = "hiddenDangerDealOver"; } @@ -81,13 +82,13 @@ */ public interface carUseBookContent{ //短信通知模板(给处理人) String carUseBook_wait_audit = "您有一条【{用车申请}】需要处理,详细信息请前往微信公众号查看。"; String carUseBookWaitAudit = "carUseBookWaitAudit"; //用车申请-审批通过通知(给申请人):。 String carUseBook_audit_success = "您的【{用车申请}】已经审批通过,出发时间为{提交的出发时间},请按时用车。如用车计划有变,请及时联系派车员。"; String carUseBookAuditSuccess = "carUseBookAuditSuccess"; //用车申请-审批驳回通知(给申请人):。 String carUseBook_audit_fail = "您的【{用车申请}】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系派车员。"; String carUseBookAuditFail = "carUseBookAuditFail"; //用车申请-审批驳回通知(给申请人):。 String carUseBook_cancel = "您的【{用车申请}】已被取消,取消原因为:{取消原因}。如有疑问,请联系派车员。"; String carUseBookCancel = "carUseBookCancel"; } @@ -96,13 +97,13 @@ */ public interface platformBookContent{ //短信通知模板(给处理人) String platformBook_wait_audit = "您有一条【车辆入园申请】需要处理,详细信息请前往微信公众号查看。"; String platformBookWaitAudit = "platformBookContent"; //物流车预约-审批通过通知(给申请人):。 String platformBook_audit_success = "您的【车辆入园申请】已经审批通过,入园时间为2024-7-19 09:00,请提前30分钟前往现场签到。如计划有变,请及时联系审核人员。"; String platformBookAuditSuccess = "platformBookAuditSuccess"; //物流车预约-审批驳回短信通知模板(给申请人) String platformBook_audit_fail = "您的【车辆入园申请】已被驳回,驳回原因为:{驳回原因}。如有疑问,请联系审核人员。"; String platformBookAuditFail = "platformBookAuditFail"; //物流车预约-入园预约取消短信通知模板(给申请人) String carUseBook_cancel = "您的【车辆入园申请】已被取消,取消原因为:{取消原因}。如有疑问,请联系审核人员。"; String carUseBookCancel = "carUseBookCancel"; } @@ -111,25 +112,25 @@ */ public interface platformJobContent{ // 运输任务下达 (给司机) String platformJob_new_job = "【车牌号】车主您好,您有一个新的运输任务,详细信息请前往微信公众号查看。"; String platformJobNewJob = "platformJobNewJob"; //物流车作业-运输任务中止提醒(给司机):。 String platformJob_stop_job = "【车牌号】车主您好,您的运输任务已被取消,详细信息请前往微信公众号查看。"; String platformJobStopJob = "platformJobStopJob"; //物流车预约-叫号入园等待(给司机) String platformBook_call_in = "【车牌号】车主您好,请在10分钟内,前往园区等待区等待叫号作业。"; String platformBookCallIn = "platformBookCallIn"; //物流车预约-月台叫号(给司机) String platformBook_sing_in = "【车牌号】车主您好,请在10分钟内,前往{月台名称}进行作业。"; String platformBookSingIn = "platformBookSingIn"; //物流车预约-月台叫号过号(给司机) String platformBook_over_num = "【车牌号】车主您好,您的任务已过号,请重新签到排队等待。"; String platformBookOverNum = "platformBookOverNum"; //物流车预约-作业开始(给司机) String platformBook_working = "【车牌号】车主您好,您的车辆已在{月台名称}开始作业,请随时关注作业情况。"; String platformBookWorking = "platformBookWorking"; //物流车预约-作业完成(给司机) String platformBook_finish = "【车牌号】车主您好,您的车辆已在{月台名称}完成作业,请及时驶离月台。"; String platformBookFinish = "platformBookFinish"; //物流车预约-作业异常挂起(给司机) String platformBook_error = "【车牌号】车主您好,您在{月台名称}的作业任务已经被异常挂起,请及时关注具体情况"; String platformBookError = "platformBookError"; //物流车预约-月台转移(给司机) String platformBook_move = "【车牌号】车主您好,您在{月台名称}的作业任务已经已被转移至{转移后月台名称},请及时关注叫号情况。"; String platformBookMove = "platformBookMove"; //物流车预约-月台停靠超时(给司机) String platformBook_time_out = "【车牌号】车主您好,您在{月台名称}已停靠超时,请尽快驶离以免影响后续作业。"; String platformBookTimeOut = "platformBookTimeOut"; } server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
@@ -123,10 +123,27 @@ @LoginNoRequired @PreventRepeat @ApiOperation("【用水量】近12个月用水量信息列表") @PostMapping("/water/lastMonthsDataList") public ApiResponse<List<PlatformLastMonthListResponse>> lastMonthsWaterList() { return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ZERO)); } @LoginNoRequired @PreventRepeat @ApiOperation("【用气量】本月、上月和去年同月") @PostMapping("/gas/dataByMonth") public ApiResponse<GasByMonthResponse> gasDataByMonth(@RequestBody GasByMonthRequest param) { return ApiResponse.success(platformWaterGasService.gasDataByMonth(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【用气量】近12个月用气量信息列表") @PostMapping("/gas/lastMonthsDataList") public ApiResponse<List<PlatformLastMonthListResponse>> lastMonthsGasList () { return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ONE)); } @LoginNoRequired @@ -151,7 +168,7 @@ @PreventRepeat @ApiOperation("【月台】月台当前作业信息列表") @PostMapping("/platform/workingDataList") public ApiResponse<List<PlatformDataListResponse>> platformWorkingDataList(@RequestBody PlatformDataListRequest param) { public ApiResponse<List<PlatformDataListResponse>> workingDataList(@RequestBody PlatformDataListRequest param) { return ApiResponse.success(platformJobService.platformWorkingDataList(param)); } @@ -159,7 +176,7 @@ @PreventRepeat @ApiOperation("【月台】月台作业详情信息") @PostMapping("/platform/workDataInfo") public ApiResponse<PlatformDataInfoResponse> platformWorkingDataList(@RequestBody PlatformDataInfoRequest param) { public ApiResponse<PlatformDataInfoResponse> workDataInfo(@RequestBody PlatformDataInfoRequest param) { return ApiResponse.success(platformJobService.platformWorkingDataList(param)); } server/visits/dmvisit_service/src/main/java/com/doumee/dao/openapi/response/PlatformWarnEventListResponse.java
@@ -19,6 +19,8 @@ private String title; @ApiModelProperty(value = "时间") private Date createDate; @ApiModelProperty(value = "车牌号") private String carCode; @ApiModelProperty(value = "事件内容说明") private String content; @ApiModelProperty(value = "月台名称") server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformWaterGasService.java
@@ -8,6 +8,7 @@ import com.doumee.dao.openapi.request.GasByMonthRequest; import com.doumee.dao.openapi.request.WaterByMonthRequest; import com.doumee.dao.openapi.response.GasByMonthResponse; import com.doumee.dao.openapi.response.PlatformLastMonthListResponse; import com.doumee.dao.openapi.response.WaterByMonthResponse; import java.util.List; @@ -107,4 +108,6 @@ WaterByMonthResponse waterDataByMonth(WaterByMonthRequest param); GasByMonthResponse gasDataByMonth(GasByMonthRequest param); List<PlatformLastMonthListResponse> getPlatformLastMonthListResponse(Integer type); } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -98,6 +98,8 @@ private PlatformLogMapper platformLogMapper; @Autowired private PlatformReasonMapper platformReasonMapper; @Autowired private PlatformGroupMapper platformGroupMapper; @Autowired @@ -1513,12 +1515,25 @@ platformBooks.setEditDate(new Date()); platformBooks.setEditor(approveDTO.getLoginUserInfo().getMemberId()); PlatformReason platformReason = platformReasonMapper.selectById(platformBooks.getReasonId()); if(Objects.isNull(platformReason)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到入园原因数据"); } PlatformGroup platformGroup = platformGroupMapper.selectById(platformReason.getGroupId()); if(Objects.isNull(platformGroup)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到入园原因配置月台组数据"); } //生成任务记录 PlatformJob platformJob = platformBooks.toPlatformJob(); platformJob.setId(null); platformJob.setPlatformGroupId(platformReason.getGroupId().intValue()); if(Constants.equalsInteger(platformGroup.getType(),Constants.ZERO)){ platformJob.setType(Constants.platformJobType.wxcxh); }else if(Constants.equalsInteger(platformGroup.getType(),Constants.ONE)){ platformJob.setType(Constants.platformJobType.wxczh); }else{ platformJob.setType(Constants.platformJobType.sgscxh); } platformJob.setStatus(Constants.PlatformJobStatus.WART_SIGN_IN.getKey()); platformJobMapper.insert(platformJob); platformBooks.setJobId(platformJob.getId()); server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -1570,9 +1570,12 @@ ); platformDataListResponse.setWorkStatus(Constants.ONE); //查询作业时长 // Long workTime = this.getWorkTime(platformJob); Long min = (System.currentTimeMillis() - platformJob.getNewStartDate().getTime())/1000/60; platformDataListResponse.setWorkTime( this.getWorkTime(platformJob) min ); //计算已作业时长 根据月台工作效率 计算任务量需要时间 if (Objects.isNull(platformJob.getWorkNum()) || Objects.isNull(platformJob.getWorkRate())) { platformDataListResponse.setFinishTime(null); server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWarnEventServiceImpl.java
@@ -120,6 +120,7 @@ platformWarnEventListResponse.setContent(event.getEventContent()); platformWarnEventListResponse.setTitle(event.getTitle()); platformWarnEventListResponse.setPlatfromHkId(event.getPlatfromHkId()); platformWarnEventListResponse.setCarCode(event.getCarCode()); list.add(platformWarnEventListResponse); } } @@ -201,6 +202,7 @@ platformWarnEvent.setCreateDate(new Date()); platformWarnEvent.setIsdeleted(Constants.ZERO); platformWarnEvent.setPlatformId(savePlatformWarnEventDTO.getPlatformId()); platformWarnEvent.setCarCode(savePlatformWarnEventDTO.getCarCode()); Constants.PlatformWarnEvent cPl = Constants.PlatformWarnEvent.STOP_TIMEOUT; if(Constants.equalsInteger(savePlatformWarnEventDTO.getEventType(),Constants.ZERO)){ if(Objects.isNull(savePlatformWarnEventDTO.getPlatformJobId())){ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
@@ -15,6 +15,7 @@ import com.doumee.dao.openapi.request.GasByMonthRequest; import com.doumee.dao.openapi.request.WaterByMonthRequest; import com.doumee.dao.openapi.response.GasByMonthResponse; import com.doumee.dao.openapi.response.PlatformLastMonthListResponse; import com.doumee.dao.openapi.response.WaterByMonthResponse; import com.doumee.service.business.PlatformWaterGasService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -29,10 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.*; /** * 月台_用水用气信息记录表Service实现 @@ -244,7 +242,7 @@ list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) .eq(PlatformWaterGas::getType,Constants.ZERO) .like(PlatformWaterGas::getTimeInfo,beforMonth) .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforMonth,"yyyy-MM")) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){ waterByMonthResponse.setLastMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add)); @@ -253,7 +251,7 @@ list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) .eq(PlatformWaterGas::getType,Constants.ZERO) .like(PlatformWaterGas::getTimeInfo,beforYearMonth) .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforYearMonth,"yyyy-MM")) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){ waterByMonthResponse.setLastYearMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add)); @@ -287,7 +285,7 @@ list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) .eq(PlatformWaterGas::getType,Constants.ONE) .like(PlatformWaterGas::getTimeInfo,beforMonth) .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforMonth,"yyyy-MM")) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){ response.setLastMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add)); @@ -296,7 +294,7 @@ list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) .eq(PlatformWaterGas::getType,Constants.ONE) .like(PlatformWaterGas::getTimeInfo,beforYearMonth) .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforYearMonth,"yyyy-MM")) ); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){ response.setLastYearMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add)); @@ -304,4 +302,31 @@ return response; } /** * * @param type 0用水 1用气 * @return */ @Override public List<PlatformLastMonthListResponse> getPlatformLastMonthListResponse(Integer type){ List<PlatformLastMonthListResponse> lastMonthListResponses = new ArrayList<>(); List<PlatformWaterGas> platformWaterGasList = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) .eq(PlatformWaterGas::getType,type) ); List<String> monthList = DateUtil.getBeforMonth(new Date(),12); for (String str:monthList) { PlatformLastMonthListResponse platformLastMonthListResponse = new PlatformLastMonthListResponse(); platformLastMonthListResponse.setNum(platformWaterGasList.stream().filter(i->DateUtil.dateToString(i.getTimeInfo(),"yyyy-MM").equals(str)).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add)); platformLastMonthListResponse.setTimeInfo(str); lastMonthListResponses.add(platformLastMonthListResponse); } return lastMonthListResponses; } } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -251,9 +251,14 @@ } public static void sendBusiness(EmayService emayService ,SmsEmailMapper smsEmailMapper ,List<String> phoneList,String objType,String content,Integer objId){ //TODO 是否发送短信 public static void sendBusiness(EmayService emayService ,SmsEmailMapper smsEmailMapper ,List<String> phoneList,String objType,String content,Integer objId){ for (String phone:phoneList) { boolean result= emayService.sendSingleSms(phone,content); if(!result){