From 7a375a4f2ac9dfadd0b00605573e6a2ea9ab7a1c Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Thu, 9 Jan 2020 13:49:42 +0800 Subject: [PATCH] 智能校卫 告警服务 --- cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SchoolDto.java | 9 +++++++++ cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java | 7 ++++++- cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceAspect.java | 43 +++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java | 23 +++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java | 20 ++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/datasource/JdbcContextHolder.java | 16 ++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/datasource/MyDataSource.java | 17 +++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/feign/ScFeign.java | 20 ++++++++++++++++++-- cloud/quartz/src/main/java/com/sincere/quartz/job/AlarmJob.java | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java | 11 +++++++---- cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java | 4 ++-- cloud/quartz/src/main/java/com/sincere/quartz/mapper/ManagerMapper.java | 6 ++++++ cloud/quartz/src/main/java/com/sincere/quartz/service/ManagerService.java | 6 ++++++ cloud/quartz/src/main/java/com/sincere/quartz/service/SmsService.java | 14 ++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/service/impl/ManagerServiceImpl.java | 21 +++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/service/impl/SmsServiceImpl.java | 36 ++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/resources/application.yaml | 11 +++++++++-- cloud/quartz/src/main/resources/mapper/ManagerMapper.xml | 9 +++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java | 27 +++++++++++++++++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/KqController.java | 19 +++++++++++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/WgController.java | 1 + cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java | 4 ++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/DeviceMapper.java | 4 ++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/KqTemplateMapper.java | 4 ++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/School.java | 9 +++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java | 4 ++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/DeviceService.java | 4 ++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/KqService.java | 4 ++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java | 10 ++++++++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/DeviceServiceImpl.java | 5 +++++ cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/KqServiceImpl.java | 10 ++++++++++ cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml | 7 +++++++ cloud/search_smartCampus/src/main/resources/mapper/DeviceMapper.xml | 4 ++++ cloud/search_smartCampus/src/main/resources/mapper/KqTemplateMapper.xml | 9 +++++++++ cloud/search_smartCampus/src/main/resources/mapper/WgUserSearchMapper.xml | 3 ++- cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/WgController.java | 10 ++++++++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/WgResultMapper.java | 4 ++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/WgService.java | 5 +++++ cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/WgServiceImpl.java | 10 ++++++++++ cloud/search_xiaoan/src/main/resources/mapper/WgResultMapper.xml | 8 ++++++++ cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java | 2 ++ 43 files changed, 800 insertions(+), 17 deletions(-) create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceAspect.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/datasource/JdbcContextHolder.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/datasource/MyDataSource.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/job/AlarmJob.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/mapper/ManagerMapper.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/service/ManagerService.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/service/SmsService.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/service/impl/ManagerServiceImpl.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/service/impl/SmsServiceImpl.java create mode 100644 cloud/quartz/src/main/resources/mapper/ManagerMapper.xml diff --git a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SchoolDto.java b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SchoolDto.java index 458c149..96ce839 100644 --- a/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SchoolDto.java +++ b/cloud/common/src/main/java/com/sincere/common/dto/smartCampus/SchoolDto.java @@ -11,6 +11,15 @@ public class SchoolDto implements Serializable { private int schoolId ; private String schoolName ; + private int managerUserId ; + + public int getManagerUserId() { + return managerUserId; + } + + public void setManagerUserId(int managerUserId) { + this.managerUserId = managerUserId; + } public int getSchoolId() { return schoolId; diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java b/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java index 6e65176..c4e5e37 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/QuartzApplication.java @@ -3,19 +3,24 @@ package com.sincere.quartz; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cache.annotation.EnableCaching; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; /** * @author chen * @version 1.0 * @date 2019/11/27 0027 14:24 */ +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) +@EnableTransactionManagement(order = 2) //设置事务执行顺序(需要在切换数据源之后,否则只走主库) +@EnableCaching @EnableScheduling @EnableFeignClients(basePackages = "com.sincere.quartz.feign") @EnableEurekaClient -@SpringBootApplication @MapperScan("com.sincere.quartz.mapper") public class QuartzApplication { diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceAspect.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceAspect.java new file mode 100644 index 0000000..87293f2 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceAspect.java @@ -0,0 +1,43 @@ +package com.sincere.quartz.datasource; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** + * AOP根据注解给上下文赋值 + */ +@Aspect +@Order(1) //设置AOP执行顺序(需要在事务之前,否则事务只发生在默认库中) +@Component +public class DataSourceAspect { + + //切点 + @Pointcut("execution(* com.sincere.quartz.service..*.*(..)))") + public void aspect() { } + + @Before("aspect()") + private void before(JoinPoint point) { + Object target = point.getTarget(); + String method = point.getSignature().getName(); + Class classz = target.getClass(); + Class[] parameterTypes = ((MethodSignature) point.getSignature()) + .getMethod().getParameterTypes(); + try { + Method m = classz.getMethod(method, parameterTypes); + if (m != null && m.isAnnotationPresent(MyDataSource.class)) { + MyDataSource data = m.getAnnotation(MyDataSource.class); + JdbcContextHolder.putDataSource(data.value().getName()); + } + } catch (Exception e) { + e.printStackTrace(); + } + + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java new file mode 100644 index 0000000..02846ff --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java @@ -0,0 +1,49 @@ +package com.sincere.quartz.datasource; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Map; + +/** + * 数据源配置 + * + */ +@Configuration +public class DataSourceConfig { + + @Bean(name = "master") + @ConfigurationProperties(prefix = "datasource.master") + public DataSource dataSource1() { + return DataSourceBuilder.create().build(); + } + + @Bean(name = "slave") + @ConfigurationProperties(prefix = "datasource.slave") + public DataSource dataSource2() { + return DataSourceBuilder.create().build(); + } + + + @Bean(name="dynamicDataSource") + @Primary //优先使用,多数据源 + public DataSource dataSource() { + DynamicDataSource dynamicDataSource = new DynamicDataSource(); + DataSource master = dataSource1(); + DataSource slave = dataSource2(); + //设置默认数据源 + dynamicDataSource.setDefaultTargetDataSource(master); + //配置多数据源 + Map map = new HashMap<>(); + map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 + map.put(DataSourceType.Slave.getName(), slave); + dynamicDataSource.setTargetDataSources(map); + return dynamicDataSource; + } + +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java new file mode 100644 index 0000000..2c948dc --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java @@ -0,0 +1,23 @@ +package com.sincere.quartz.datasource; + +public enum DataSourceType { + + Master("master"), + + Slave("slave"); + + + private String name; + + private DataSourceType(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java new file mode 100644 index 0000000..a89b326 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java @@ -0,0 +1,20 @@ +package com.sincere.quartz.datasource; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; + +/** + * + */ +public class DynamicDataSource extends AbstractRoutingDataSource { + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Override + protected Object determineCurrentLookupKey() { + logger.info("数据源为{}",JdbcContextHolder.getDataSource()); + return JdbcContextHolder.getDataSource(); + } + +} \ No newline at end of file diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/JdbcContextHolder.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/JdbcContextHolder.java new file mode 100644 index 0000000..8106878 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/JdbcContextHolder.java @@ -0,0 +1,16 @@ +package com.sincere.quartz.datasource; +/** + */ +public class JdbcContextHolder { + + private final static ThreadLocal local = new ThreadLocal<>(); + + public static void putDataSource(String name) { + local.set(name); + } + + public static String getDataSource() { + return local.get(); + } + +} \ No newline at end of file diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/MyDataSource.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/MyDataSource.java new file mode 100644 index 0000000..c30cb39 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/MyDataSource.java @@ -0,0 +1,17 @@ +package com.sincere.quartz.datasource; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 数据源选择--自定义注解 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface MyDataSource { + + DataSourceType value() default DataSourceType.Master; //默认主表 + +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/feign/ScFeign.java b/cloud/quartz/src/main/java/com/sincere/quartz/feign/ScFeign.java index eb001b0..c929b09 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/feign/ScFeign.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/feign/ScFeign.java @@ -7,9 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * @author chen @@ -19,10 +17,26 @@ import java.util.Map; @FeignClient("smartCampusSearch") public interface ScFeign { + @RequestMapping(value = "/sm/wg/selectSchoolBySchoolId",method = RequestMethod.GET) + SchoolDto selectSchoolBySchoolId(@RequestParam("schoolId") int schoolId); + + //考勤设备 + @RequestMapping(value = "attendance/selectCloudAttendance", method = RequestMethod.GET) + List selectCloudAttendance(); + + @RequestMapping(value = "attendance/selectCloudAttendanceBySchoolId", method = RequestMethod.GET) + List selectCloudAttendanceBySchoolId(@RequestParam("schoolId") int schoolId); + + @RequestMapping(value = "attendance/selectByDeviceNo", method = RequestMethod.GET) + String selectByDeviceNo(@RequestParam("deviceNo") String deviceNo); + //考勤推送 @RequestMapping(value = "/sm/kq/getAllTemplate",method = RequestMethod.GET) List getAllTemplate(); + @RequestMapping(value = "/sm/kq/getAllTemplateAlarm",method = RequestMethod.GET) + List getAllTemplateAlarm(); + @RequestMapping(value = "/sm/kq/getTeacherList",method = RequestMethod.GET) List getTeacherList(@RequestParam("schoolId")int schoolId); @@ -35,6 +49,8 @@ public interface ScFeign { @RequestMapping(value = "/sm/kq/getThirdId",method = RequestMethod.GET) String getThirdId(@RequestParam("userId")String userId , @RequestParam("type") int type); + @RequestMapping(value = "/sm/kq/selectClassBySchoolId",method = RequestMethod.GET) + List selectClassBySchoolId(@RequestParam("schoolId") int schoolId); //关注绑定推送 @RequestMapping(value = "/sm/rp/selectBindPushSchool",method = RequestMethod.GET) diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/AlarmJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/AlarmJob.java new file mode 100644 index 0000000..1757b01 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/AlarmJob.java @@ -0,0 +1,169 @@ +package com.sincere.quartz.job; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +import com.sincere.common.dto.smartCampus.SchoolDto; +import com.sincere.common.util.DateUtils; +import com.sincere.common.util.HttpClientUtils; +import com.sincere.quartz.feign.ScFeign; +import com.sincere.quartz.model.ShortMsg; +import com.sincere.quartz.service.ManagerService; +import com.sincere.quartz.service.SmsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author chen + * @version 1.0 + * @date 2020/1/3 0003 10:02 + */ +@Service +public class AlarmJob { + + @Autowired + ScFeign scFeign; + + @Autowired + SmsService smsService; + + @Autowired + ManagerService managerService ; + + private static List opexList ; + private static String integration ; + + static{ + opexList = new ArrayList<>(); + opexList.add("15857566147"); //王汉栋 + opexList.add("13858485977"); //王楠彬 + + integration = "18767117554" ; //林炜 + } + + /** + * 设备掉线 + */ + @Scheduled(cron = "0 0 6-18 * * ? ") + public void attendanceAlarm(){ + List list = scFeign.selectCloudAttendance(); + for(Integer schoolId : list){ + if(schoolId != 0 && schoolId != 16){ + SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); + List weigengList = new ArrayList<>(); + List faceList = new ArrayList<>(); + List attendanceList = scFeign.selectCloudAttendanceBySchoolId(schoolId); + for(SZ_AttendanceDto attendanceDto : attendanceList){ + if(attendanceDto.getClint_type().equals("6")){ + //微耕,查询另一张表 + String lastDate = scFeign.selectByDeviceNo(attendanceDto.getClint_id()); + if(lastDate != null){ + if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(lastDate,DateUtils.format2),"s") > 20){ + weigengList.add(attendanceDto.getClint_id()); + } + } + }else { + //人脸 + if(attendanceDto.getIsConnection() == 0){ + faceList.add(attendanceDto.getClint_id()); } + } + } + if(weigengList.size() + faceList.size() > 0){ + //有设备掉线,发送短信 + String msg = "【设备掉线预警】" + schoolDto.getSchoolName() + "!" ; + if(weigengList.size() > 0){ + msg += weigengList.size() + "台闸机掉线。" ; + } + if(faceList.size() > 0){ + msg += faceList.size() + "台人脸机掉线。" ; + } + msg += "请关注。" ; + try{ + sendMessage(schoolDto.getSchoolId(),opexList.get(0),msg); + sendMessage(schoolDto.getSchoolId(),opexList.get(1),msg); + sendMessage(schoolDto.getSchoolId(),integration,msg); + sendMessage(schoolDto.getSchoolId(),managerService.selectManagerById(schoolDto.getManagerUserId()),msg); + }catch (Exception e){ + e.printStackTrace(); + } + } + } + } + } + + + /** + * 卡 脸未下发 + */ + @Scheduled(cron = "0 0 12,18 * * ? ") + public void unPush(){ + List list = scFeign.selectCloudAttendance(); + for(Integer schoolId : list) { + if(schoolId != 0 && schoolId != 16){ + SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); + JSONObject schoolResult = getCount(schoolDto); + int cardStudentCount = Integer.valueOf( schoolResult.get("studentCardCount").toString() ); + int successStudentCardCount = Integer.valueOf( schoolResult.get("successStudentCardCount").toString() ); + int fushuCardCount = Integer.valueOf( schoolResult.get("fushuCardCount").toString() ); + int successFushuCardCount = Integer.valueOf( schoolResult.get("successFushuCardCount").toString() ); + int teaCardCount = Integer.valueOf( schoolResult.get("teaCardCount").toString() ); + int successTeaCardCount = Integer.valueOf( schoolResult.get("successTeaCardCount").toString() ); + int totalCardNumber = cardStudentCount + fushuCardCount +teaCardCount ; + int successCardNumber = successFushuCardCount +successStudentCardCount +successTeaCardCount ; + int unSendCard = totalCardNumber-successCardNumber ; + + int errorStudentPhotoCount = Integer.valueOf( schoolResult.get("errorStudentPhotoCount").toString() ); + int errorFushuPhotoCount = Integer.valueOf( schoolResult.get("errorFushuPhotoCount").toString() ); + int errorTeaPhotoCount = Integer.valueOf( schoolResult.get("errorTeaPhotoCount").toString() ); + int unSendFace = errorStudentPhotoCount+errorFushuPhotoCount+errorTeaPhotoCount ; + if(unSendCard + unSendFace > 0) { + String msg = "【人脸卡号下发异常预警】" + schoolDto.getSchoolName() + "!"; + if (unSendCard > 0) { + msg += unSendCard + "卡未下发。"; + } + if (unSendFace > 0) { + msg += unSendFace + "脸未下发。"; + } + msg += "请关注。"; + try { + sendMessage(schoolDto.getSchoolId(),opexList.get(0),msg); + sendMessage(schoolDto.getSchoolId(),opexList.get(1),msg); + sendMessage(schoolDto.getSchoolId(),integration,msg); + sendMessage(schoolDto.getSchoolId(),managerService.selectManagerById(schoolDto.getManagerUserId()),msg); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + } + + + public JSONObject getCount(SchoolDto schoolDto){ + JSONObject object = new JSONObject(); + object.put("schoolName",schoolDto.getSchoolName()); + object.put("pageIndex",1); + object.put("pageSize",1); + JSONObject result = HttpClientUtils.httpPostJson("http://campus.myjxt.com/api/GateServiceManager/GetFacePhotoList",object.toJSONString()); + JSONObject data = (JSONObject) result.get("data"); + JSONArray array = (JSONArray) data.get("list"); + + JSONObject schoolResult = (JSONObject) array.get(0); + return schoolResult ; + } + + private void sendMessage(int schoolId , String mobile , String msg){ + String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); + ShortMsg shortMsg = new ShortMsg(); + shortMsg.setTableName("smsNew"+tableSuffix); + shortMsg.setSchoolId(schoolId); + shortMsg.setMobile(mobile); + shortMsg.setMsg(msg); + smsService.insertSMS(shortMsg); + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java index 4648baa..b3b1922 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java @@ -5,8 +5,8 @@ import com.sincere.common.dto.smartCampus.ParentDto; import com.sincere.common.enums.PushTypeEnums; import com.sincere.common.util.DateUtils; import com.sincere.quartz.feign.ScFeign; -import com.sincere.quartz.mapper.SmsMapper; import com.sincere.quartz.model.ShortMsg; +import com.sincere.quartz.service.SmsService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,7 +14,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 用户注册激活提醒 @@ -32,7 +35,7 @@ public class BindPushJob { ScFeign scFeign; @Autowired - SmsMapper smsMapper; + SmsService smsService; private static Map intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误 @@ -84,7 +87,7 @@ public class BindPushJob { shortMsg.setSchoolId(parentDto.getSchoolId()); shortMsg.setMobile(parentDto.getMobile()); shortMsg.setMsg(message); - smsMapper.insertSMS(shortMsg); + smsService.insertSMS(shortMsg); logger.info("----学校Id---"+parentDto.getSchoolId() + "----手机号----"+parentDto.getMobile()+"---"+message); } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java index b387281..0f61455 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/KQJob.java @@ -9,9 +9,11 @@ import com.sincere.common.util.HttpClientUtils; import com.sincere.quartz.enums.KqTypeEnums; import com.sincere.quartz.enums.TypeEnums; import com.sincere.quartz.feign.ScFeign; -import com.sincere.quartz.mapper.SmsMapper; import com.sincere.quartz.model.DingSms; +import com.sincere.quartz.model.ShortMsg; import com.sincere.quartz.model.WeChatSms; +import com.sincere.quartz.service.ManagerService; +import com.sincere.quartz.service.SmsService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.*; /** @@ -37,10 +40,28 @@ public class KQJob { ScFeign scFeign ; @Autowired - SmsMapper smsMapper; + SmsService smsService; + + @Autowired + ManagerService managerService ; private static String date ; - private static Map map = new HashMap<>(); + private static Map map = new HashMap<>(); //学校 考勤推送map + + private static String alarmDate ; + private static Map alarmMap = new HashMap<>(); //考勤告警推送map + private static Map templateMap = new HashMap<>(); // 考勤比例 + + private static List opexList ; + private static String integration ; + + static{ + opexList = new ArrayList<>(); + opexList.add("15857566147"); //王汉栋 + opexList.add("13858485977"); //王楠彬 + + integration = "18767117554" ; //林炜 + } @Scheduled(cron = "0 0-59 * * * ? ") public void kaoQing() { @@ -77,6 +98,90 @@ public class KQJob { } } + @Scheduled(cron = "0 0 18 * * MON-FRI") + public void alarmKaoQing() { + String now = DateUtils.date2String(new Date(),DateUtils.format1) ; + if(StringUtils.isBlank(alarmDate)){ + initAlarmMap(); + alarmDate = now ; + } + if(!DateUtils.date2String(new Date(),DateUtils.format1).equals(alarmDate)){ + initAlarmMap(); + alarmDate = DateUtils.date2String(new Date(),DateUtils.format1) ; + } + //开始过滤数据 推送 + List keyList = new ArrayList<>(); + for(Map.Entry entity : alarmMap.entrySet()){ + String endTime = entity.getValue().split("_")[1]; + if(DateUtils.getDateDifference(new Date(),DateUtils.string2Date(now+" "+endTime+":00",DateUtils.format2),"m")>=2 + ){ + String key = entity.getKey(); + keyList.add(key); + alarm(entity); + } + } + for(String key : keyList){ + map.remove(key); + } + } + + private void initAlarmMap(){ + alarmMap = new HashMap<>(); + List list = scFeign.getAllTemplateAlarm(); + logger.info(("------考勤告警模板------")); + for(TemplateDto templateDto : list){ + String config = templateDto.getConfig(); + String[] array = config.split(" entry){ + String templateId = entry.getKey().split("_")[0] ; + String schoolId = entry.getKey().split("_")[1] ; + String id = entry.getValue().split("_")[3]; + String type = entry.getValue().split("_")[2] ; + if(DateUtils.getWeek() == 3 || DateUtils.getWeek() == 6){ + //可以相差40% + BigDecimal percent = getAlarmCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)); + if(templateMap.get(templateId) != null){ + if(percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.4)) > 0 + || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.4)) > 0) { + alarmPush(Integer.valueOf(schoolId)); + } + } + templateMap.put(templateId,percent); + }else { + //相差30% + BigDecimal percent = getAlarmCensus(Integer.valueOf(id),templateId,Integer.valueOf(schoolId),Integer.valueOf(type)); + if(templateMap.get(templateId) != null){ + if(percent.subtract(templateMap.get(templateId)).compareTo(new BigDecimal(0.3)) > 0 + || templateMap.get(templateId).subtract(percent).compareTo(new BigDecimal(0.3)) > 0) { + alarmPush(Integer.valueOf(schoolId)); + } + } + templateMap.put(templateId,percent); + } + } + //初始化要推送的模板 private void initMap(){ map = new HashMap<>(); @@ -316,9 +421,28 @@ public class KQJob { return list ; } + private BigDecimal getAlarmCensus(int id , String templateId ,int schoolId , int type){ + int allNumber = 0 , attendNumber = 0 ; + List list = scFeign.selectClassBySchoolId(schoolId); + for(Integer classId : list){ + String url = "http://campus.myjxt.com/api/EasyN/GeAttendDetail?classId="+classId+ + "&id="+id+"&templateID="+templateId+"&type="+type+"&time=" + DateUtils.date2String(new Date(),DateUtils.format1); + JSONObject jsonObject = HttpClientUtils.httpGet(url); + try{ + JSONObject data = (JSONObject) jsonObject.get("data"); + attendNumber = attendNumber + (Integer) data.get("stuAttendCount"); + allNumber = allNumber + (Integer) data.get("stuCount"); + }catch (Exception e){ + e.printStackTrace(); + } + } + return new BigDecimal(attendNumber).divide(new BigDecimal(allNumber)) ; + } + + private void insertDing(DingSms dingSms){ try{ - smsMapper.insertDing(dingSms); + smsService.insertDing(dingSms); }catch (Exception e){ logger.info(e.toString()); } @@ -326,9 +450,34 @@ public class KQJob { private void insertQYH(WeChatSms weChatSms){ try{ - smsMapper.insertWeChat(weChatSms); + smsService.insertWeChat(weChatSms); }catch (Exception e){ logger.info(e.toString()); } } + + private void alarmPush(int schoolId){ + String msg = "【考勤异动】" ; + try{ + SchoolDto schoolDto = scFeign.selectSchoolBySchoolId(schoolId); + msg += schoolDto.getSchoolName() + "考勤有异动,请关注!" ; + sendMessage(schoolDto.getSchoolId(),opexList.get(0),msg); + sendMessage(schoolDto.getSchoolId(),opexList.get(1),msg); + sendMessage(schoolDto.getSchoolId(),integration,msg); + sendMessage(schoolDto.getSchoolId(),managerService.selectManagerById(schoolDto.getManagerUserId()),msg); + }catch (Exception e){ + e.printStackTrace(); + } + + } + + private void sendMessage(int schoolId , String mobile , String msg){ + String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format); + ShortMsg shortMsg = new ShortMsg(); + shortMsg.setTableName("smsNew"+tableSuffix); + shortMsg.setSchoolId(schoolId); + shortMsg.setMobile(mobile); + shortMsg.setMsg(msg); + smsService.insertSMS(shortMsg); + } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java index 2594183..53a3a7e 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java @@ -20,11 +20,11 @@ public class SyncJob { @Autowired YXYReadService yxyReadService ; - @Scheduled(cron = "0 1-59 * * * ? ") + //@Scheduled(cron = "0/1 * * * * ? ") //@Scheduled(cron = "0 0 23 * * ? ") public void Sync(){ //翼校通的同步 之后还有钉钉的同步等等 - yxyWriteService.sync(); + //yxyWriteService.sync(); yxyReadService.sync(); } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/mapper/ManagerMapper.java b/cloud/quartz/src/main/java/com/sincere/quartz/mapper/ManagerMapper.java new file mode 100644 index 0000000..ab19148 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/mapper/ManagerMapper.java @@ -0,0 +1,6 @@ +package com.sincere.quartz.mapper; + +public interface ManagerMapper { + + String selectManagerById(int id); +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/ManagerService.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/ManagerService.java new file mode 100644 index 0000000..3d43c35 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/ManagerService.java @@ -0,0 +1,6 @@ +package com.sincere.quartz.service; + +public interface ManagerService { + + String selectManagerById(int id); +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/SmsService.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/SmsService.java new file mode 100644 index 0000000..d14b5e7 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/SmsService.java @@ -0,0 +1,14 @@ +package com.sincere.quartz.service; + +import com.sincere.quartz.model.DingSms; +import com.sincere.quartz.model.ShortMsg; +import com.sincere.quartz.model.WeChatSms; + +public interface SmsService { + + int insertDing(DingSms dingSms); + + int insertWeChat(WeChatSms weChatSms); + + int insertSMS(ShortMsg shortMsg); +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/ManagerServiceImpl.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/ManagerServiceImpl.java new file mode 100644 index 0000000..c51922d --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/ManagerServiceImpl.java @@ -0,0 +1,21 @@ +package com.sincere.quartz.service.impl; + +import com.sincere.quartz.datasource.DataSourceType; +import com.sincere.quartz.datasource.MyDataSource; +import com.sincere.quartz.mapper.ManagerMapper; +import com.sincere.quartz.service.ManagerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ManagerServiceImpl implements ManagerService { + + @Autowired + ManagerMapper managerMapper ; + + @Override + @MyDataSource(DataSourceType.Master) + public String selectManagerById(int id) { + return managerMapper.selectManagerById(id); + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/SmsServiceImpl.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/SmsServiceImpl.java new file mode 100644 index 0000000..9a06c66 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/SmsServiceImpl.java @@ -0,0 +1,36 @@ +package com.sincere.quartz.service.impl; + +import com.sincere.quartz.datasource.DataSourceType; +import com.sincere.quartz.datasource.MyDataSource; +import com.sincere.quartz.mapper.SmsMapper; +import com.sincere.quartz.model.DingSms; +import com.sincere.quartz.model.ShortMsg; +import com.sincere.quartz.model.WeChatSms; +import com.sincere.quartz.service.SmsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class SmsServiceImpl implements SmsService { + + @Autowired + SmsMapper smsMapper; + + @Override + @MyDataSource(DataSourceType.Slave) + public int insertDing(DingSms dingSms) { + return smsMapper.insertDing(dingSms); + } + + @Override + @MyDataSource(DataSourceType.Slave) + public int insertWeChat(WeChatSms weChatSms) { + return smsMapper.insertWeChat(weChatSms); + } + + @Override + @MyDataSource(DataSourceType.Slave) + public int insertSMS(ShortMsg shortMsg) { + return smsMapper.insertSMS(shortMsg); + } +} diff --git a/cloud/quartz/src/main/resources/application.yaml b/cloud/quartz/src/main/resources/application.yaml index 214ebf3..d331e53 100644 --- a/cloud/quartz/src/main/resources/application.yaml +++ b/cloud/quartz/src/main/resources/application.yaml @@ -4,10 +4,17 @@ server: spring: application: name: quartz-server - datasource: + +datasource: + master: ## 查询 + username: szjxtuser + password: RQminVCJota3H1u8bBYH + jdbcUrl: jdbc:sqlserver://116.62.155.137:33419;database=SmartAdmin + driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + slave: ## 短信 username: sa password: qaz!@#0401 - url: jdbc:sqlserver://60.190.202.38:49469;database=XST + jdbcUrl: jdbc:sqlserver://60.190.202.38:49469;database=XST driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver ##mybatis mybatis: diff --git a/cloud/quartz/src/main/resources/mapper/ManagerMapper.xml b/cloud/quartz/src/main/resources/mapper/ManagerMapper.xml new file mode 100644 index 0000000..0ffb54f --- /dev/null +++ b/cloud/quartz/src/main/resources/mapper/ManagerMapper.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java index 784c2e1..127577f 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/AttendanceController.java @@ -1,13 +1,16 @@ package com.sincere.smartSearch.controller; import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; +import com.sincere.common.util.DateUtils; import com.sincere.smartSearch.service.AttendacenService; +import com.sincere.smartSearch.service.DeviceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; @RestController @@ -18,6 +21,9 @@ public class AttendanceController { @Autowired AttendacenService attendacenService; + @Autowired + DeviceService deviceService; + @RequestMapping(method = RequestMethod.GET, value = "selectAttendaceWithId") public SZ_AttendanceDto selectAttendaceWithId(@RequestParam("clint_id") String clint_id) { return attendacenService.selectDevice(clint_id); @@ -45,4 +51,25 @@ public class AttendanceController { List selectRoomAttendance(@RequestParam("placeId") int placeId){ return attendacenService.selectRoomAttendance(placeId); } + + @RequestMapping(value = "selectCloudAttendance", method = RequestMethod.GET) + List selectCloudAttendance(){ + return attendacenService.selectCloudAttendance(); + } + + @RequestMapping(value = "selectCloudAttendanceBySchoolId", method = RequestMethod.GET) + List selectCloudAttendanceBySchoolId(@RequestParam("schoolId") int schoolId){ + return attendacenService.selectCloudAttendanceBySchoolId(schoolId); + } + + + @RequestMapping(value = "selectByDeviceNo", method = RequestMethod.GET) + String selectByDeviceNo(@RequestParam("deviceNo") String deviceNo){ + Date date = deviceService.selectByDeviceNo(deviceNo) ; + if(date == null){ + return null ; + }else { + return DateUtils.date2String(date,DateUtils.format2); + } + } } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/KqController.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/KqController.java index 24f9ce3..dff4784 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/KqController.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/KqController.java @@ -36,6 +36,20 @@ public class KqController { return templateDtos; } + @RequestMapping(value = "getAllTemplateAlarm",method = RequestMethod.GET) + public List getAllTemplateAlarm(){ + List list = kqService.selectAllKqTemplate(); + List templateDtos = new ArrayList<>(); + for(KqTemplate kqTemplate : list){ + TemplateDto templateDto = new TemplateDto(); + templateDto.setId(kqTemplate.getId()); + templateDto.setConfig(kqTemplate.getConfig()); + templateDto.setSchoolId(kqTemplate.getSchoolId()); + templateDtos.add(templateDto); + } + return templateDtos; + } + @RequestMapping(value = "getTeacherList",method = RequestMethod.GET) public List getTeacherList(@RequestParam("schoolId")int schoolId){ @@ -62,4 +76,9 @@ public class KqController { map.put("type",type+""); return kqService.selectThirdId(map); } + + @RequestMapping(value = "selectClassBySchoolId",method = RequestMethod.GET) + List selectClassBySchoolId(@RequestParam("schoolId") int schoolId){ + return kqService.selectClassBySchoolId(schoolId); + } } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/WgController.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/WgController.java index a521ab8..38933c6 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/WgController.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/WgController.java @@ -78,6 +78,7 @@ public class WgController { if(school != null){ schoolDto.setSchoolId(school.getSchoolId()); schoolDto.setSchoolName(school.getSchoolName()); + schoolDto.setManagerUserId(school.getManagerUserId()); } return schoolDto; } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java index 6b9a43e..f154f75 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/AttendaceMapper.java @@ -19,4 +19,8 @@ public interface AttendaceMapper { List selectRoomAttendance(int placeId); + List selectCloudAttendance(); + + List selectCloudAttendanceBySchoolId(int schoolId); + } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/DeviceMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/DeviceMapper.java index 95118d0..b9a1f61 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/DeviceMapper.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/DeviceMapper.java @@ -3,6 +3,8 @@ package com.sincere.smartSearch.mapper; import com.sincere.smartSearch.model.DeviceLink; import com.sincere.smartSearch.model.DeviceOrder; +import java.util.Date; + /** * @author chen * @version 1.0 @@ -15,4 +17,6 @@ public interface DeviceMapper { int insertLink(DeviceLink deviceLink); String selectOutOrderId(DeviceOrder deviceOrder); + + Date selectByDeviceNo(String deviceNo); } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/KqTemplateMapper.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/KqTemplateMapper.java index 4a00d7d..f05e854 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/KqTemplateMapper.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/KqTemplateMapper.java @@ -18,6 +18,8 @@ public interface KqTemplateMapper { List selectKqTemplate(); + List selectAllKqTemplate(); + List selectSchoolTeacher(int schoolId); List selectChamberTeacher(int schoolId); @@ -26,4 +28,6 @@ public interface KqTemplateMapper { String selectThirdId(Map map); + List selectClassBySchoolId(int schoolId); + } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/School.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/School.java index 6bd8624..f98b10a 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/School.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/model/School.java @@ -9,6 +9,15 @@ public class School { private int schoolId ; private String schoolName ; + private int managerUserId ; + + public int getManagerUserId() { + return managerUserId; + } + + public void setManagerUserId(int managerUserId) { + this.managerUserId = managerUserId; + } public int getSchoolId() { return schoolId; diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java index 4981a09..59d80ea 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/AttendacenService.java @@ -18,4 +18,8 @@ public interface AttendacenService { int updateAttendance(String client_id); List selectRoomAttendance(int placeId); + + List selectCloudAttendance(); + + List selectCloudAttendanceBySchoolId(int schoolId); } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/DeviceService.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/DeviceService.java index 4af02ea..6d8ff6e 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/DeviceService.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/DeviceService.java @@ -1,5 +1,7 @@ package com.sincere.smartSearch.service; +import java.util.Date; + /** * @author chen * @version 1.0 @@ -12,4 +14,6 @@ public interface DeviceService { String selectOutOrderId(int type, int insideOrderId); + + Date selectByDeviceNo(String deviceNo); } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/KqService.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/KqService.java index 47f6690..756802c 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/KqService.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/KqService.java @@ -18,6 +18,8 @@ public interface KqService { List selectKqTemplate(); + List selectAllKqTemplate(); + List selectSchoolTeacher(int schoolId); List selectChamberTeacher(int schoolId); @@ -25,4 +27,6 @@ public interface KqService { AppDto selectApp(Map map); String selectThirdId(Map map); + + List selectClassBySchoolId(int schoolId); } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java index 19e7862..9419151 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/AttendacenServiceImp.java @@ -39,4 +39,14 @@ public class AttendacenServiceImp implements AttendacenService { public List selectRoomAttendance(int placeId) { return attendaceMapper.selectRoomAttendance(placeId); } + + @Override + public List selectCloudAttendance() { + return attendaceMapper.selectCloudAttendance(); + } + + @Override + public List selectCloudAttendanceBySchoolId(int schoolId) { + return attendaceMapper.selectCloudAttendanceBySchoolId(schoolId); + } } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/DeviceServiceImpl.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/DeviceServiceImpl.java index 74c79f4..251b919 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/DeviceServiceImpl.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/DeviceServiceImpl.java @@ -40,4 +40,9 @@ public class DeviceServiceImpl implements DeviceService { deviceOrder.setInsideOrderId(insideOrderId); return deviceMapper.selectOutOrderId(deviceOrder); } + + @Override + public Date selectByDeviceNo(String deviceNo) { + return deviceMapper.selectByDeviceNo(deviceNo); + } } diff --git a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/KqServiceImpl.java b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/KqServiceImpl.java index 119e5db..196f37d 100644 --- a/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/KqServiceImpl.java +++ b/cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/KqServiceImpl.java @@ -31,6 +31,11 @@ public class KqServiceImpl implements KqService { } @Override + public List selectAllKqTemplate() { + return kqTemplateMapper.selectAllKqTemplate(); + } + + @Override public List selectSchoolTeacher(int schoolId) { return kqTemplateMapper.selectSchoolTeacher(schoolId); } @@ -49,4 +54,9 @@ public class KqServiceImpl implements KqService { public String selectThirdId(Map map) { return kqTemplateMapper.selectThirdId(map); } + + @Override + public List selectClassBySchoolId(int schoolId) { + return kqTemplateMapper.selectClassBySchoolId(schoolId); + } } diff --git a/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml index 2ed85bd..45060fe 100644 --- a/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml +++ b/cloud/search_smartCampus/src/main/resources/mapper/AttendanceMapper.xml @@ -42,4 +42,11 @@ select KaoQinAttendance from XA_PlaceAttendance where PlaceId = #{placeId} + + + diff --git a/cloud/search_smartCampus/src/main/resources/mapper/DeviceMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/DeviceMapper.xml index d21d2f4..a1de416 100644 --- a/cloud/search_smartCampus/src/main/resources/mapper/DeviceMapper.xml +++ b/cloud/search_smartCampus/src/main/resources/mapper/DeviceMapper.xml @@ -14,4 +14,8 @@ + + \ No newline at end of file diff --git a/cloud/search_smartCampus/src/main/resources/mapper/KqTemplateMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/KqTemplateMapper.xml index e6381fc..7423171 100644 --- a/cloud/search_smartCampus/src/main/resources/mapper/KqTemplateMapper.xml +++ b/cloud/search_smartCampus/src/main/resources/mapper/KqTemplateMapper.xml @@ -17,6 +17,11 @@ and SZ_School.IsPush =1 + + @@ -55,4 +60,8 @@ + + diff --git a/cloud/search_smartCampus/src/main/resources/mapper/WgUserSearchMapper.xml b/cloud/search_smartCampus/src/main/resources/mapper/WgUserSearchMapper.xml index 01b4897..6d20256 100644 --- a/cloud/search_smartCampus/src/main/resources/mapper/WgUserSearchMapper.xml +++ b/cloud/search_smartCampus/src/main/resources/mapper/WgUserSearchMapper.xml @@ -10,11 +10,12 @@ + diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/WgController.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/WgController.java index e4d573b..71268a8 100644 --- a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/WgController.java +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/controller/WgController.java @@ -96,4 +96,14 @@ public class WgController { } return sendMessageDto ; } + + @RequestMapping(value = "selectCountByDeviceNo",method = RequestMethod.GET) + int selectCountByDeviceNo(@RequestParam("deviceId") String deviceId){ + return wgService.selectCountByDeviceNo(deviceId); + } + + @RequestMapping(value = "selectCountByDaceDeviceNo",method = RequestMethod.GET) + int selectCountByDaceDeviceNo(@RequestParam("deviceId") String deviceId){ + return wgService.selectCountByDaceDeviceNo(deviceId); + } } diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/WgResultMapper.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/WgResultMapper.java index 4537c82..4ccc912 100644 --- a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/WgResultMapper.java +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/mapper/WgResultMapper.java @@ -21,4 +21,8 @@ public interface WgResultMapper { int deleteSendFail(SendFail sendFail); int updateSendSuccess(SendSuccess sendSuccess); + + int selectCountByDeviceNo(String deviceId); + + int selectCountByDaceDeviceNo(String deviceId); } diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/WgService.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/WgService.java index dffe964..eec392e 100644 --- a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/WgService.java +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/WgService.java @@ -30,4 +30,9 @@ public interface WgService { int deleteSendFail(SendFail sendFail); int updateSendSuccess(SendSuccess sendSuccess); + + int selectCountByDeviceNo(String deviceId); + + int selectCountByDaceDeviceNo(String deviceId); + } diff --git a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/WgServiceImpl.java b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/WgServiceImpl.java index 3f8ca66..fb7e085 100644 --- a/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/WgServiceImpl.java +++ b/cloud/search_xiaoan/src/main/java/com/sincere/xiaoanSearch/service/impl/WgServiceImpl.java @@ -98,4 +98,14 @@ public class WgServiceImpl implements WgService { public int updateSendSuccess(SendSuccess sendSuccess) { return wgResultMapper.updateSendSuccess(sendSuccess); } + + @Override + public int selectCountByDeviceNo(String deviceId) { + return wgResultMapper.selectCountByDeviceNo(deviceId); + } + + @Override + public int selectCountByDaceDeviceNo(String deviceId) { + return wgResultMapper.selectCountByDaceDeviceNo(deviceId); + } } diff --git a/cloud/search_xiaoan/src/main/resources/mapper/WgResultMapper.xml b/cloud/search_xiaoan/src/main/resources/mapper/WgResultMapper.xml index 481e51a..6453a2a 100644 --- a/cloud/search_xiaoan/src/main/resources/mapper/WgResultMapper.xml +++ b/cloud/search_xiaoan/src/main/resources/mapper/WgResultMapper.xml @@ -35,4 +35,12 @@ delete WG_SendFail where deviceID = #{deviceId} and cardNum = #{cardNum} and shiduan=#{shiduan} + + + + \ No newline at end of file diff --git a/cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java b/cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java index 54fa8bd..1c688af 100644 --- a/cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java +++ b/cloud/zkAttendance/src/main/java/com/sincere/att/controller/AttPushController.java @@ -14,6 +14,8 @@ import com.sincere.common.dto.smartCampus.SZ_AttendanceDto; import com.sincere.common.dto.xiaoan.FingerDto; import com.sincere.common.util.DateUtils; import com.sincere.common.util.HttpClientUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -- libgit2 0.21.0