Kaynağa Gözat

日志问题排查

yq 2 yıl önce
ebeveyn
işleme
dd040ce2ee

+ 7 - 2
src/main/java/com/usky/dxtop/controller/web/business/StaffController.java

@@ -1,5 +1,7 @@
 package com.usky.dxtop.controller.web.business;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.dxtop.common.core.domain.ApiResult;
 import com.usky.dxtop.common.core.page.CommonPage;
 import com.usky.dxtop.common.exception.CustomException;
@@ -121,8 +123,11 @@ public class StaffController {
     public ApiResult<Void> update(@RequestBody Staff staff){
         Staff one = staffService.one(staff.getId(), null, staff.getCardId());
         Optional.ofNullable(one).map(s -> {
-            s.setOpenId(staff.getOpenId());
-            return staffService.updateById(s);
+            LambdaUpdateWrapper<Staff> updateWrapper = Wrappers.lambdaUpdate();
+            updateWrapper
+                    .set(Staff::getOpenId,staff.getOpenId())
+                    .eq(Staff::getSId,s.getSId());
+            return staffService.update(updateWrapper);
         }).orElseThrow(() ->  new CustomException("用户信息不存在"));
         return ApiResult.success();
     }

+ 3 - 0
src/main/java/com/usky/dxtop/model/Staff.java

@@ -174,5 +174,8 @@ public class Staff implements Serializable {
      */
     private Long status;
 
+    @TableField(exist = false)
+    private Integer addOrUp;
+
 
 }

+ 3 - 1
src/main/java/com/usky/dxtop/service/impl/DeptServiceImpl.java

@@ -143,19 +143,21 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
      * @param dept
      */
     public void deptSendMessage(Dept dept,List<Dept> list){
+        long seq = System.nanoTime();
         Map<String,Object> map = new HashMap<>();
         //获取父id
         Long pid = list.stream().filter(d -> d.getId().equals(dept.getPid())).map(Dept::getDId).findAny().orElse(0L);
         map.put("parentid",pid);
         map.put("id",dept.getDId());
         map.put("name",dept.getName());
+        map.put("seq",seq);
         MsgLog msgLog = new MsgLog();
+        msgLog.setId(seq);
         msgLog.setBusinessId(String.format("%s%s", MsgLogBusinessCode.DEPT,dept.getDId()));
         msgLog.setExchange(RabbitmqBeenCode.PROFILE_DEPT_CONSUMER.getName());
         msgLog.setRoutingKey(RabbitmqBeenCode.PROFILE_DEPT_CONSUMER.getName());
         msgLog.setMsg(JSON.toJSONString(map));
         msgLogService.addOrUpdate(msgLog);
-        map.put("seq",msgLog.getId());
         CorrelationData correlationData = new CorrelationData(msgLog.getId().toString());
         RabbitmqUtils.getRabbitmqTemplate(RabbitmqBeenCode.PROFILE_DEPT_CONSUMER).convertAndSend(msgLog.getExchange(), msgLog.getRoutingKey(), map,correlationData);
     }

+ 1 - 1
src/main/java/com/usky/dxtop/service/impl/MsgLogServiceImpl.java

@@ -49,7 +49,7 @@ public class MsgLogServiceImpl extends ServiceImpl<MsgLogMapper, MsgLog> impleme
 
     @Override
     public void addOrUpdate(MsgLog msgLog) {
-        msgLog.setId(System.currentTimeMillis());
+        msgLog.setMsgFlag(MsgLogStatus.LOADING.getCode());
         msgLog.setCreateTime(new Date());
         LambdaUpdateWrapper<MsgLog> updateWrapper = Wrappers.lambdaUpdate();
         updateWrapper.set(MsgLog::getId,msgLog.getId());

+ 1 - 1
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -282,7 +282,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                         cancelPay(order);
                     }
                 }else {
-                    log.error("订单交易失败--------订单编号:"+order.getOrderFlag()+"-----异常:"+msg);
+                    log.error("订单交易失败--------订单编号:"+order.getOrderNumber()+"-----异常:"+msg);
                     payError(order);
                 }
             }

+ 6 - 2
src/main/java/com/usky/dxtop/service/impl/StaffServiceImpl.java

@@ -78,6 +78,7 @@ public class StaffServiceImpl extends ServiceImpl<StaffMapper, Staff> implements
      */
     @Override
     public void personSendMessage(Staff staff,Integer type){
+        long seq = System.nanoTime();
         Map<String,Object> map = new HashMap<>();
         map.put("type",type);
         map.put("card_type",1);
@@ -87,13 +88,14 @@ public class StaffServiceImpl extends ServiceImpl<StaffMapper, Staff> implements
         map.put("groupid",staff.getDeptId());
         map.put("tel",staff.getContacts());
         map.put("level_name","员工卡");
+        map.put("seq",seq);
         MsgLog msgLog = new MsgLog();
+        msgLog.setId(seq);
         msgLog.setBusinessId(String.format("%s%s", MsgLogBusinessCode.STAFF,staff.getSId()));
         msgLog.setExchange(RabbitmqBeenCode.PROFILE_CONSUMER.getName());
         msgLog.setRoutingKey(RabbitmqBeenCode.PROFILE_CONSUMER.getName());
         msgLog.setMsg(JSON.toJSONString(map));
         msgLogService.addOrUpdate(msgLog);
-        map.put("seq",msgLog.getId());
         CorrelationData correlationData = new CorrelationData(msgLog.getId().toString());
         RabbitmqUtils.getRabbitmqTemplate(RabbitmqBeenCode.PROFILE_CONSUMER).convertAndSend(msgLog.getExchange(), msgLog.getRoutingKey(), map,correlationData);
     }
@@ -105,6 +107,7 @@ public class StaffServiceImpl extends ServiceImpl<StaffMapper, Staff> implements
      */
     @Override
     public void faceSendMessage(Staff staff){
+        long seq = System.nanoTime();
         String encode = Base64.encode(ImageUtils.getImage(staff.getFaceId()));
         Map<String,Object> map = new HashMap<>();
         map.put("mob",staff.getSId());
@@ -114,8 +117,9 @@ public class StaffServiceImpl extends ServiceImpl<StaffMapper, Staff> implements
         msgLog.setRoutingKey(RabbitmqBeenCode.PROFILE_FACE_CONSUMER.getName());
         map.put("img",staff.getFaceId());
         msgLog.setMsg(JSON.toJSONString(map));
+        msgLog.setId(seq);
         msgLogService.addOrUpdate(msgLog);
-        map.put("seq",msgLog.getId());
+        map.put("seq",seq);
         map.put("img",encode);
         CorrelationData correlationData = new CorrelationData(msgLog.getId().toString());
         RabbitmqUtils.getRabbitmqTemplate(RabbitmqBeenCode.PROFILE_FACE_CONSUMER).convertAndSend(msgLog.getExchange(), msgLog.getRoutingKey(), map,correlationData);

+ 41 - 26
src/main/java/com/usky/dxtop/service/job/SmJob.java

@@ -9,6 +9,7 @@ import com.usky.dxtop.common.utils.StringUtils;
 import com.usky.dxtop.common.utils.http.HttpUtils;
 import com.usky.dxtop.model.Dept;
 import com.usky.dxtop.model.Staff;
+import com.usky.dxtop.model.SysDept;
 import com.usky.dxtop.service.DeptService;
 import com.usky.dxtop.service.StaffService;
 import com.usky.dxtop.service.api.SmApi;
@@ -18,10 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
+import java.util.*;
 import java.util.function.Function;
 
 /**
@@ -63,33 +61,17 @@ public class SmJob {
             treeMap = SmApi.generatePersonParam(null,
                     null, null, null);
         }
+        List<Dept> depts = deptService.list();
+        List<Staff> checkStaffList = new ArrayList<>();
         common(SmApi.PERSON_URL,treeMap,staffList -> {
             List<Staff> list = staffList.toJavaList(Staff.class);
             list.forEach(date -> {
                 try {
-                    date.setCardId(new BigDecimal(date.getCardId()).toString());
-                    LambdaQueryWrapper<Staff> queryWrapper = Wrappers.lambdaQuery();
-                    queryWrapper.eq(Staff::getId,date.getId());
-                    Staff staff = staffService.getOne(queryWrapper);
-                    //获取部门信息
-                    Map deptMap = JSON.parseObject(date.getDept(), Map.class);
-                    LambdaQueryWrapper<Dept> deptLambdaQueryWrapper = Wrappers.lambdaQuery();
-                    deptLambdaQueryWrapper.eq(Dept::getId,deptMap.get("id").toString());
-                    Dept dept = deptService.getOne(deptLambdaQueryWrapper);
-                    if (null != dept){
-                        date.setDeptId(dept.getDId());
-                        int type;
-                        if (null == staff){
-                            type = 1;
-                            staffService.save(date);
-                        }else {
-                            type = 2;
-                            date.setSId(staff.getSId());
-                            staffService.updateById(date);
-                        }
+                    if (enhanceStaff(date,depts)){
+                        checkStaffList.add(date);
                         //发送人员信息
                         if (StringUtils.isNotBlank(date.getCardId()) && Double.parseDouble(date.getCardId()) > 60000){
-                            staffService.personSendMessage(date,type);
+                            staffService.personSendMessage(date,date.getAddOrUp());
                             //发送人脸信息
                             if (StringUtils.isNotBlank(date.getFaceId())){
                                 staffService.faceSendMessage(date);
@@ -100,10 +82,36 @@ public class SmJob {
                     log.error("smJob-person:"+e.getMessage());
                 }
             });
+            staffService.saveOrUpdateBatch(checkStaffList);
+            checkStaffList.clear();
             return list.isEmpty();
         });
     }
 
+    /**
+     * 增强人员信息
+     * @param data
+     */
+    public boolean enhanceStaff(Staff data,List<Dept> depts){
+        data.setCardId(new BigDecimal(data.getCardId()).toString());
+        LambdaQueryWrapper<Staff> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Staff::getId,data.getId());
+        Staff staff = staffService.getOne(queryWrapper);
+        Map deptMap = JSON.parseObject(data.getDept(), Map.class);
+        return depts.stream().filter(dept -> dept.getId().equals(deptMap.get("id").toString())).findAny()
+                .map(s -> {
+                    data.setDeptId(s.getDId());
+                    if (null == staff){
+                        data.setAddOrUp(1);
+                    }else {
+                        data.setAddOrUp(2);
+                        data.setSId(staff.getSId());
+                    }
+                    return true;
+                }).orElse(false);
+
+    }
+
     public void groupApi(GroupParam groupParam){
         TreeMap<String, Object> treeMap;
         if (null != groupParam){
@@ -113,6 +121,7 @@ public class SmJob {
             treeMap = SmApi.generateDeptParam(null,
                     null,null,null);
         }
+        List<Dept> checkDeptList = new ArrayList<>();
         common(SmApi.DEPT_URL,treeMap,deptList -> {
             List<Dept> list = deptList.toJavaList(Dept.class);
             list.forEach(date -> {
@@ -123,11 +132,17 @@ public class SmJob {
                     if (StringUtils.isBlank(date.getPid())){
                         date.setPid("0");
                     }
-                    deptService.saveOrUpdate(date,queryWrapper);
+                    Dept dept = deptService.getOne(queryWrapper);
+                    if (null != dept){
+                        date.setDId(dept.getDId());
+                    }
+                    checkDeptList.add(date);
                 }catch (Exception e){
                     log.error("smJob-group:"+e.getMessage());
                 }
             });
+            deptService.saveOrUpdateBatch(checkDeptList);
+            checkDeptList.clear();
             return list.isEmpty();
         });
         //拼接父子结构发送数据

+ 10 - 1
src/test/java/com/usky/dxtop/SmApiTest.java

@@ -1,12 +1,15 @@
 package com.usky.dxtop;
 
+import com.usky.dxtop.common.utils.DateUtils;
 import com.usky.dxtop.common.utils.http.HttpUtils;
+import com.usky.dxtop.framework.web.domain.server.Sys;
 import com.usky.dxtop.model.Dept;
 import com.usky.dxtop.service.DeptService;
 import com.usky.dxtop.service.api.WxApi;
 import com.usky.dxtop.service.job.CenterUserJob;
 import com.usky.dxtop.service.job.SmJob;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.DateUtil;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +18,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.TreeMap;
 
@@ -94,9 +98,14 @@ public class SmApiTest {
 
     @Test
     public void test6(){
+        long currentTimeMillis1 = System.currentTimeMillis();
+        log.info("人员开始时间:"+ currentTimeMillis1);
 //        SmJob.PersonParam personParam = new SmJob.PersonParam();
-//        personParam.setBlurry("田光辉");
+//        personParam.setBlurry("梁中庆");
         smJob.personApi(null);
+        long currentTimeMillis = System.currentTimeMillis();
+        log.info("人员结束时间:"+ currentTimeMillis);
+        log.info("总耗时间"+ (currentTimeMillis-currentTimeMillis1));
     }