|
@@ -2,21 +2,31 @@ package com.usky.dxtop.service.job;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.usky.dxtop.common.utils.http.HttpUtils;
|
|
|
+import com.usky.dxtop.model.Dept;
|
|
|
import com.usky.dxtop.model.Staff;
|
|
|
import com.usky.dxtop.service.DeptService;
|
|
|
import com.usky.dxtop.service.StaffService;
|
|
|
import com.usky.dxtop.service.api.SmApi;
|
|
|
+import com.usky.dxtop.service.config.rabbitmq.face.FaceConsumeConfig;
|
|
|
+import com.usky.dxtop.service.config.rabbitmq.group.GroupConsumeConfig;
|
|
|
+import com.usky.dxtop.service.config.rabbitmq.profile.ProfileConsumeConfig;
|
|
|
+import lombok.Data;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
-import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.TreeMap;
|
|
|
+import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
|
|
|
/**
|
|
|
* 世贸定时任务
|
|
|
+ *
|
|
|
* @author yq
|
|
|
* @date 2021/9/28 14:47
|
|
|
*/
|
|
@@ -30,85 +40,176 @@ public class SmJob {
|
|
|
@Autowired
|
|
|
private DeptService deptService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ @Qualifier(ProfileConsumeConfig.TEMPLATE)
|
|
|
+ private RabbitTemplate profileRabbitTemplate;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Qualifier(FaceConsumeConfig.TEMPLATE)
|
|
|
+ private RabbitTemplate faceRabbitTemplate;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ @Qualifier(GroupConsumeConfig.TEMPLATE)
|
|
|
+ private RabbitTemplate groupRabbitTemplate;
|
|
|
+
|
|
|
+ @Scheduled(cron = "0 0 0 */1 * ?")
|
|
|
+ public void personExecute() {
|
|
|
+ personApi(null);
|
|
|
+ log.info("smJob-person 定时任务完成");
|
|
|
+ }
|
|
|
+ @Scheduled(cron = "0 0 0 */1 * ?")
|
|
|
+ public void groupExecute() {
|
|
|
+ groupApi(null);
|
|
|
+ log.info("smJob-group 定时任务完成");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void personApi(PersonParam personParam){
|
|
|
+ TreeMap<String, Object> treeMap;
|
|
|
+ if (null != personParam){
|
|
|
+ treeMap = SmApi.generatePersonParam(personParam.getId(),
|
|
|
+ personParam.getDeptIds(), personParam.getCreateTime(), personParam.blurry);
|
|
|
+ }else {
|
|
|
+ treeMap = SmApi.generatePersonParam(null,
|
|
|
+ null, null, null);
|
|
|
+ }
|
|
|
+ common(SmApi.PERSON_URL,treeMap,staffList -> {
|
|
|
+ List<Staff> list = staffList.toJavaList(Staff.class);
|
|
|
+ list.forEach(date -> {
|
|
|
+ LambdaQueryWrapper<Staff> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(Staff::getId,date.getId());
|
|
|
+ Staff staff = staffService.getOne(queryWrapper);
|
|
|
+ int type;
|
|
|
+ if (null == staff){
|
|
|
+ type = 1;
|
|
|
+ staffService.save(date);
|
|
|
+ }else {
|
|
|
+ type = 2;
|
|
|
+ date.setSId(staff.getSId());
|
|
|
+ staffService.updateById(date);
|
|
|
+ }
|
|
|
+ //发送人员信息
|
|
|
+ personSendMessage(date,type);
|
|
|
+ //发送人脸信息
|
|
|
+ faceSendMessage(date);
|
|
|
+ });
|
|
|
+ return list.isEmpty();
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- public void personExecute(){
|
|
|
+ public void groupApi(GroupParam groupParam){
|
|
|
+ TreeMap<String, Object> treeMap;
|
|
|
+ if (null != groupParam){
|
|
|
+ treeMap = SmApi.generateDeptParam(groupParam.getCreateTime(),
|
|
|
+ groupParam.getName(),groupParam.getPid(),groupParam.getEnable());
|
|
|
+ }else {
|
|
|
+ treeMap = SmApi.generateDeptParam(null,
|
|
|
+ null,null,null);
|
|
|
+ }
|
|
|
+ common(SmApi.DEPT_URL,treeMap,staffList -> {
|
|
|
+ List<Dept> list = staffList.toJavaList(Dept.class);
|
|
|
+ list.forEach(date -> {
|
|
|
+ LambdaQueryWrapper<Dept> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(Dept::getId,date.getId());
|
|
|
+ Dept dept = deptService.getOne(queryWrapper);
|
|
|
+ if (null == dept){
|
|
|
+ deptService.save(date);
|
|
|
+ }
|
|
|
+ deptSendMessage(date);
|
|
|
+ });
|
|
|
+ return list.isEmpty();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public void common(String url, TreeMap<String,Object> param, Function<JSONArray,Boolean> function){
|
|
|
boolean isNext = true;
|
|
|
int page = 1;
|
|
|
int size = 100;
|
|
|
- while (isNext){
|
|
|
+ while (isNext) {
|
|
|
try {
|
|
|
- String personUrl = String.format("%s?page=%s&size=%s", SmApi.PERSON_URL, page, size);
|
|
|
- TreeMap<String, Object> treeMap = SmApi.generatePersonParam(null, null, null, null);
|
|
|
- String result = HttpUtils.sendPost(personUrl, JSONObject.toJSONString(treeMap), SmApi.sign(treeMap));
|
|
|
+ String personUrl = String.format("%s?page=%s&size=%s", url, page, size);
|
|
|
+ String result = HttpUtils.sendPost(personUrl, JSONObject.toJSONString(param), SmApi.sign(param));
|
|
|
JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
- if ("200".equals(jsonObject.get("status").toString())){
|
|
|
+ if ("200".equals(jsonObject.get("status").toString())) {
|
|
|
JSONObject data = jsonObject.getJSONObject("data");
|
|
|
JSONArray content = data.getJSONArray("content");
|
|
|
- if(content != null && content.size() > 0) {
|
|
|
- List<Staff> staffList = content.toJavaList(Staff.class);
|
|
|
- if (CollectionUtils.isEmpty(staffList)){
|
|
|
+ if (content != null && content.size() > 0) {
|
|
|
+ if (function.apply(content)) {
|
|
|
isNext = false;
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
page++;
|
|
|
}
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
isNext = false;
|
|
|
}
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
break;
|
|
|
}
|
|
|
- }catch (Exception e){
|
|
|
- log.info("smJob异常"+e);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info("smJob异常" + e);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- log.info("smjob 定时任务完成");
|
|
|
}
|
|
|
|
|
|
-// public void test(){
|
|
|
-// Map<String,Object> map = new HashMap<>();
|
|
|
-// map.put("status","200");
|
|
|
-// Map<String,Object> map1 = new HashMap<>();
|
|
|
-// List<Staff> list = new ArrayList<>();
|
|
|
-// Staff staff = new Staff();
|
|
|
-// staff.setDeptSort(1);
|
|
|
-// list.add(staff);
|
|
|
-// map1.put("content",list);
|
|
|
-// map.put("data",map1);
|
|
|
-// }
|
|
|
-
|
|
|
-// public void add(String url, TreeMap<String,Object> param, Class tClass, IService iService){
|
|
|
-// boolean isNext = true;
|
|
|
-// int page = 1;
|
|
|
-// int size = 100;
|
|
|
-// while (isNext){
|
|
|
-// try {
|
|
|
-// String personUrl = String.format("%s?page=%s&size=%s", url, page, size);
|
|
|
-//// TreeMap<String, Object> treeMap = SmApi.generatePersonParam(null, null, null, null);
|
|
|
-// String result = HttpUtils.sendPost(personUrl, JSONObject.toJSONString(param), SmApi.sign(param));
|
|
|
-// JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
-// if ("200".equals(jsonObject.get("status").toString())){
|
|
|
-// JSONObject data = jsonObject.getJSONObject("data");
|
|
|
-// JSONArray content = data.getJSONArray("content");
|
|
|
-// if(content != null && content.size() > 0) {
|
|
|
-// List<Staff> staffList = content.toJavaList(tClass);
|
|
|
-// staffList.forEach(staff -> iService.save(staff));
|
|
|
-// if (CollectionUtils.isEmpty(staffList)){
|
|
|
-// isNext = false;
|
|
|
-// }else {
|
|
|
-// page++;
|
|
|
-// }
|
|
|
-// }else {
|
|
|
-// isNext = false;
|
|
|
-// }
|
|
|
-// }else {
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }catch (Exception e){
|
|
|
-// log.info("smJob异常"+e);
|
|
|
-// break;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
+ /**
|
|
|
+ * 人员消息
|
|
|
+ * @param staff
|
|
|
+ */
|
|
|
+ private void personSendMessage(Staff staff,Integer type){
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("type",type);
|
|
|
+ map.put("seq",staff.getSId());
|
|
|
+ map.put("card_type",1);
|
|
|
+ map.put("card",staff.getCard());
|
|
|
+ map.put("name",staff.getName());
|
|
|
+ map.put("mob",staff.getId());
|
|
|
+ map.put("groupid",staff.getPid());
|
|
|
+ map.put("tel","");
|
|
|
+ map.put("level_name","");
|
|
|
+ profileRabbitTemplate.convertAndSend(ProfileConsumeConfig.NAME, ProfileConsumeConfig.NAME, map);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 部门消息
|
|
|
+ * @param dept
|
|
|
+ */
|
|
|
+ private void deptSendMessage(Dept dept){
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("parentid",dept.getPid());
|
|
|
+ map.put("seq",dept.getDId());
|
|
|
+ map.put("id",dept.getId());
|
|
|
+ map.put("name",dept.getName());
|
|
|
+ groupRabbitTemplate.convertAndSend(GroupConsumeConfig.NAME, GroupConsumeConfig.NAME, map);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 人脸
|
|
|
+ * @param staff
|
|
|
+ */
|
|
|
+ private void faceSendMessage(Staff staff){
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("seq",staff.getSId());
|
|
|
+ map.put("mob",staff.getId());
|
|
|
+ map.put("image",staff.getFace());
|
|
|
+ faceRabbitTemplate.convertAndSend(FaceConsumeConfig.NAME, FaceConsumeConfig.NAME, map);
|
|
|
+ }
|
|
|
|
|
|
+ @Data
|
|
|
+ public static class PersonParam {
|
|
|
+ private String id;
|
|
|
+ private List<String> deptIds;
|
|
|
+ private List<Date> createTime;
|
|
|
+ private String blurry;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Data
|
|
|
+ public static class GroupParam {
|
|
|
+ private String name;
|
|
|
+ private Boolean enable;
|
|
|
+ private List<Date> createTime;
|
|
|
+ private String pid;
|
|
|
+ }
|
|
|
}
|