Sfoglia il codice sorgente

同步世贸数据整合完成

yq 3 anni fa
parent
commit
259fc191a8

+ 1 - 2
src/main/java/com/usky/dxtop/common/utils/file/FileUploadUtils.java

@@ -113,8 +113,7 @@ public class FileUploadUtils
         String fileName = extractFilename(file);
 
         File desc = getAbsoluteFile(baseDir, fileName);
-//        file.transferTo(desc);
-//        FileUtils.copyInputStreamToFile(file.getInputStream(),desc);
+        file.transferTo(desc);
         String pathFileName = getPathFileName(baseDir, fileName);
         return pathFileName;
     }

+ 32 - 0
src/main/java/com/usky/dxtop/controller/web/SmJobController.java

@@ -0,0 +1,32 @@
+package com.usky.dxtop.controller.web;
+
+import com.usky.dxtop.common.core.domain.AjaxResult;
+import com.usky.dxtop.service.job.SmJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author yq
+ * @date 2021/10/11 17:00
+ */
+@RequestMapping("/dxtop/smjob")
+@RestController
+public class SmJobController {
+
+
+    @Autowired
+    private SmJob smJob;
+
+    @PostMapping("personJob")
+    public AjaxResult personJob(SmJob.PersonParam personParam){
+        smJob.personApi(personParam);
+        return AjaxResult.success();
+    }
+    @PostMapping("deptJob")
+    public AjaxResult deptJob(SmJob.GroupParam groupParam){
+        smJob.groupApi(groupParam);
+        return AjaxResult.success();
+    }
+}

+ 0 - 22
src/main/java/com/usky/dxtop/controller/web/TestController.java

@@ -1,22 +0,0 @@
-package com.usky.dxtop.controller.web;
-
-import com.usky.dxtop.service.job.SmJob;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * @author yq
- * @date 2021/9/28 15:39
- */
-@RestController
-public class TestController {
-
-    @Autowired
-    private SmJob smJob;
-
-    @RequestMapping("test")
-    public void test(){
-        smJob.personExecute();
-    }
-}

+ 8 - 5
src/main/java/com/usky/dxtop/model/Dept.java

@@ -1,11 +1,12 @@
 package com.usky.dxtop.model;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -22,10 +23,12 @@ public class Dept implements Serializable {
 
     private static final long serialVersionUID=1L;
 
+    @TableId
+    private Long dId;
     /**
      * id
      */
-    private Long id;
+    private String id;
 
     private Integer deptSort;
 
@@ -42,11 +45,11 @@ public class Dept implements Serializable {
 
     private String name;
 
-    private Integer pid;
+    private String pid;
 
     private Integer leaf;
 
-    private LocalDateTime createTime;
+    private Date createTime;
 
     /**
      * 创建人
@@ -55,7 +58,7 @@ public class Dept implements Serializable {
 
     private String updateBy;
 
-    private LocalDateTime updateTime;
+    private Date updateTime;
 
 
 }

+ 14 - 5
src/main/java/com/usky/dxtop/model/Staff.java

@@ -1,12 +1,14 @@
 package com.usky.dxtop.model;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * <p>
@@ -23,10 +25,13 @@ public class Staff implements Serializable {
 
     private static final long serialVersionUID=1L;
 
+    @TableId
+    private Long sId;
+
     /**
      * id
      */
-    private Long id;
+    private String id;
 
     private Integer deptSort;
 
@@ -43,11 +48,11 @@ public class Staff implements Serializable {
 
     private String name;
 
-    private Integer pid;
+    private String pid;
 
     private Integer leaf;
 
-    private LocalDateTime createTime;
+    private Date createTime;
 
     /**
      * 创建人
@@ -56,7 +61,7 @@ public class Staff implements Serializable {
 
     private String updateBy;
 
-    private LocalDateTime updateTime;
+    private Date updateTime;
     @TableField(exist = false)
     private String deptName;
 
@@ -68,7 +73,11 @@ public class Staff implements Serializable {
      */
     @TableField(exist = false)
     private Double proportion;
+    @JSONField(name = "cardid")
     private String card;
 
+    @JSONField(name = "faceid")
+    private String face;
+
 
 }

+ 1 - 1
src/main/java/com/usky/dxtop/service/api/SmApi.java

@@ -73,7 +73,7 @@ public class SmApi {
     }
 
 
-    public static TreeMap<String, Object> generateDeptParam(List<Date> createTime,String name,Long pid,Boolean enabled){
+    public static TreeMap<String, Object> generateDeptParam(List<Date> createTime,String name,String pid,Boolean enabled){
         TreeMap<String, Object> data = new TreeMap<>();
         data.put("createTime",createTime);
         data.put("name",name);

+ 164 - 63
src/main/java/com/usky/dxtop/service/job/SmJob.java

@@ -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;
+    }
 }