From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 06 六月 2025 19:19:34 +0800 Subject: [PATCH] 开发更新 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java | 145 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 118 insertions(+), 27 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java index 6f532e1..cb32343 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java @@ -1,5 +1,6 @@ package com.doumee.service.business.impl; +import com.alibaba.fastjson.JSONObject; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; @@ -15,6 +16,9 @@ import com.doumee.dao.business.YwPatrolTaskMapper; import com.doumee.dao.business.YwPatrolTaskRecordMapper; import com.doumee.dao.business.model.*; +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.SystemUser; import com.doumee.service.business.YwPatrolSchemeService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -49,7 +53,11 @@ @Autowired private YwPatrolTaskRecordMapper ywPatrolTaskRecordMapper; @Autowired + private SystemUserMapper systemUserMapper; + @Autowired private RedisTemplate<String, Object> redisTemplate; + @Autowired + private NoticesJoinMapper noticesJoinMapper; @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) @@ -61,11 +69,15 @@ ||Objects.isNull(ywPatrolScheme.getStartDate()) ||Objects.isNull(ywPatrolScheme.getEndDate()) ||Objects.isNull(ywPatrolScheme.getCircleType()) - ||StringUtils.isBlank(ywPatrolScheme.getStartTime()) - ||StringUtils.isBlank(ywPatrolScheme.getEndTime()) || (!Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ZERO) &&StringUtils.isBlank(ywPatrolScheme.getCircleDays())) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + if(StringUtils.isBlank(ywPatrolScheme.getStartTime())){ + ywPatrolScheme.setStartTime("00:00:00"); + } + if(StringUtils.isBlank(ywPatrolScheme.getEndTime())){ + ywPatrolScheme.setEndTime("23:59:59"); } LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo(); ywPatrolScheme.setCreateDate(new Date()); @@ -94,10 +106,29 @@ public void createThreeDaysData(YwPatrolScheme ywPatrolScheme){ //寰幆鐢熸垚涓夊ぉ鍐呯殑鏁版嵁 for (int i = 0; i < 3; i++) { - Date schemeDate = DateUtil.getXDayAfterDate(new Date(),i); + Date schemeDate = DateUtil.getXDayAfterDate( + DateUtil.StringToDate( + DateUtil.getDate(new Date(),"yyyy-MM-dd"),"yyyy-MM-dd"),i); this.createTask(schemeDate,ywPatrolScheme); } } + + + @Override + public void timerAuto(){ + List<YwPatrolScheme> ywPatrolSchemeList = ywPatrolSchemeMapper.selectList(new QueryWrapper<YwPatrolScheme>().lambda() + .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO) + .eq(YwPatrolScheme::getStatus,Constants.ZERO) + .apply(" START_DATE <= now() and END_DATE>= now() ") + ); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolSchemeList)){ + for (YwPatrolScheme ywPatrolScheme:ywPatrolSchemeList) { + this.createTask(DateUtil.getXDayAfterDate(new Date(),2),ywPatrolScheme); + } + } + } + + /** * 鏍规嵁鏃ユ湡鐢熸垚浠诲姟 @@ -105,8 +136,8 @@ * @param ywPatrolScheme */ public void createTask(Date schemeDate,YwPatrolScheme ywPatrolScheme){ - if(ywPatrolScheme.getStartDate().getTime() > schemeDate.getTime() - || ywPatrolScheme.getEndDate().getTime() < schemeDate.getTime() ){ + if(!(ywPatrolScheme.getStartDate().getTime() <= schemeDate.getTime() + && ywPatrolScheme.getEndDate().getTime() >= schemeDate.getTime()) ){ return; } if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ONE)){ @@ -116,16 +147,15 @@ return; } List<String> weeks = Arrays.asList(ywPatrolScheme.getCircleDays().split(",")); - String weekStr = weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).findFirst().get(); - if(StringUtils.isBlank(weekStr)){ + if(weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).collect(Collectors.toList()).size()<=Constants.ZERO){ return; } - }else{ + + }else if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.TWO)){ //姣忔湀鏍规嵁鏃ユ湡鐢熸垚 鏍规嵁鏃ユ湡鑾峰彇鏄摢澶� List<String> days = Arrays.asList(ywPatrolScheme.getCircleDays().split(",")); - String dayStr = DateUtil.getFomartDate(schemeDate,"dd"); - Optional<String> optional = days.stream().filter(i->StringUtils.equals(i,dayStr)).findAny(); - if(Objects.isNull(optional)){ + Integer dayStr = Integer.valueOf(DateUtil.getFomartDate(schemeDate,"dd")); + if(days.stream().filter(i->i.equals(dayStr.toString())).collect(Collectors.toList()).size()<=Constants.ZERO){ return; } } @@ -181,12 +211,59 @@ ywPatrolTaskRecordList.add(ywPatrolTaskRecord); } ywPatrolTaskRecordMapper.insert(ywPatrolTaskRecordList); + + if(StringUtils.isNotBlank(ywPatrolScheme.getUserIds())){ + String [] userIds = ywPatrolScheme.getUserIds().split(","); + List<SystemUser> systemUserList = systemUserMapper.selectList(new QueryWrapper<SystemUser>().lambda().in(SystemUser::getId,userIds)); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemUserList)){ + List<String> names = systemUserList.stream().filter(i->StringUtils.isNotBlank(i.getRealname())).map(i->i.getRealname()).collect(Collectors.toList()); + for (SystemUser systemUser:systemUserList) { + //娣诲姞寰呭姙淇℃伅 + Notices notices = new Notices(); + notices.setCreateDate(new Date()); + notices.setCreator(ywPatrolScheme.getCreator()); + notices.setIsdeleted(Constants.ZERO); + notices.setParam1(DateUtil.formatDate(ywPatrolTask.getStartDate(),"yyyy-MM-dd")); + notices.setTitle("宸℃浠诲姟寰呭姙"); + notices.setContent("["+ywPatrolTask.getCode()+"]灏嗗湪["+notices.getParam1()+"]杩涜宸℃锛岃鎸夋椂鎵ц"); + notices.setObjId(ywPatrolTask.getId()); + notices.setObjType(Constants.ONE); + notices.setType(notices.getObjType()); + notices.setUserId(Integer.valueOf(systemUser.getId())); + notices.setStatus(Constants.ZERO); + //鏁寸悊json鏁版嵁 + Map<String,Object> jsonMap = new HashMap<>(); + jsonMap.put("key1", ywPatrolScheme.getTitle()); + jsonMap.put("key2", DateUtil.getFomartDate(ywPatrolTask.getStartDate(),"yyyy-MM-dd")); + jsonMap.put("key3", DateUtil.getFomartDate(ywPatrolTask.getStartDate(),"HH:mm") + "-" + DateUtil.getFomartDate(ywPatrolTask.getEndDate(),"HH:mm")); + jsonMap.put("key4", StringUtils.join(names , "銆�")); + notices.setParam2(JSONObject.toJSONString(jsonMap)); + notices.setParam3(Constants.ZERO+""); + noticesJoinMapper.insert(notices); + } + } + + } } @Override public void deleteById(Integer id, LoginUserInfo user) { + //鍒ゆ柇鏄惁鏈夎繘琛屼腑鎴栧凡瓒呮湡鐨勪换鍔� + if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda() + .eq(YwPatrolTask::getSchemeId,id) + .in(YwPatrolTask::getStatus,Constants.ONE,Constants.THREE,Constants.TWO) + )>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪杩涜涓�/宸插畬鎴愮殑浠诲姟锛屾棤娉曡繘琛屽垹闄�"); + } + if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda() + .eq(YwPatrolTask::getSchemeId,id) + .eq(YwPatrolTask::getStatus,Constants.ZERO) + .le(YwPatrolTask::getEndDate,"now()") + )>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪宸茶秴鏈熺殑浠诲姟锛屾棤娉曡繘琛屽垹闄�"); + } ywPatrolSchemeMapper.deleteById(id); } @@ -224,6 +301,7 @@ ywPatrolScheme.setEditDate(new Date()); ywPatrolScheme.setEditor(loginUserInfo.getId()); ywPatrolSchemeMapper.updateById(ywPatrolScheme); + this.createThreeDaysData(ywPatrolScheme); } @Override @@ -279,25 +357,35 @@ YwPatrolScheme model = pageWrap.getModel(); queryWrapper.selectAll(YwPatrolScheme.class) .select(" t2.realName as createUserName ") - .select(" t1.realName as userName ") - .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolScheme::getUserIds) .leftJoin(" system_user t2 on t.creator = t2.id ") .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO) .like(StringUtils.isNotBlank(model.getTitle()),YwPatrolScheme::getTitle,model.getTitle()) - //鏌ヨ鏈夋椂娈典氦闆嗙殑鏁版嵁 - .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()), - " t.START_DATE <= '"+Utils.Date.getStart(pageWrap.getModel().getEndDate())+"' and t.END_DATE >= '"+Utils.Date.getStart(pageWrap.getModel().getStartDate())+"' " - ) -// .ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())) -// .le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())) + .ge( model.getStartDate()!=null,YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())) + .le(Objects.nonNull(model.getEndDate()),YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())) + .ge(Objects.nonNull(model.getStartDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getStartDateSec())) + .le(Objects.nonNull(model.getEndDateSec()),YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDateSec())) .orderByDesc(YwPatrolScheme::getCreateDate) ; IPage<YwPatrolScheme> iPage = ywPatrolSchemeMapper.selectJoinPage(page,YwPatrolScheme.class,queryWrapper); for (YwPatrolScheme ywPatrolScheme:iPage.getRecords()) { this.getSchemeStatus(ywPatrolScheme); + //宸℃浜哄憳 + this.getUserNames(ywPatrolScheme); } return PageData.from(iPage); } + + + public void getUserNames(YwPatrolScheme ywPatrolScheme){ + if(Objects.nonNull(ywPatrolScheme)&&StringUtils.isNotBlank(ywPatrolScheme.getUserIds())){ + List<SystemUser> systemUserList = systemUserMapper.selectList(new QueryWrapper<SystemUser>().lambda() + .apply(" find_in_set(id,'"+ywPatrolScheme.getUserIds()+"') ") + ); + String userName = String.join(",",systemUserList.stream().map(i->i.getRealname()).collect(Collectors.toList())); + ywPatrolScheme.setUserName(userName); + } + } + //鑾峰彇鐘舵�� public void getSchemeStatus(YwPatrolScheme ywPatrolScheme){ @@ -312,21 +400,24 @@ ywPatrolScheme.setTimeOutTaskNum(Constants.ZERO); return; } + + //杩囨护鏁版嵁鏄笉鏄叏閮ㄦ湭寮�濮� + if(Constants.equalsInteger(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)) + .collect(Collectors.toList()).size(),ywPatrolTaskList.size())){ + ywPatrolScheme.setSchemeStatus(Constants.ZERO); + ywPatrolScheme.setTimeOutTaskNum(ywPatrolTaskList.stream().filter(i->i.getEndDate().getTime()>System.currentTimeMillis()) + .collect(Collectors.toList()).size()); + return; + } + //杩囨护鏁版嵁鏄惁瀛樺湪杩涜涓殑 - if(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ONE)).collect(Collectors.toList()).size()>Constants.ZERO){ + if(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ONE)||Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size()>Constants.ZERO){ ywPatrolScheme.setSchemeStatus(Constants.ONE); ywPatrolScheme.setTimeOutTaskNum(ywPatrolTaskList.stream().filter(i->i.getEndDate().getTime()>System.currentTimeMillis()) .collect(Collectors.toList()).size()); return; } - //杩囨护鏁版嵁鏄笉鏄叏閮ㄦ湭寮�濮� - if(Constants.equalsInteger(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size(),ywPatrolTaskList.size())){ - ywPatrolScheme.setSchemeStatus(Constants.ZERO); - ywPatrolScheme.setTimeOutTaskNum(ywPatrolTaskList.stream().filter(i->i.getEndDate().getTime()>System.currentTimeMillis()) - .collect(Collectors.toList()).size()); - return; - } //杩囨护鏁版嵁鏄笉鏄叏閮ㄥ凡瀹屾垚 if(Constants.equalsInteger(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.THREE)).collect(Collectors.toList()).size() ,ywPatrolTaskList.size())){ -- Gitblit v1.9.3