liwei19941102 пре 1 година
родитељ
комит
74c44b01ab

+ 60 - 16
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/controller/TblExpressStaticsController.java

@@ -1,13 +1,25 @@
 package org.dromara.system.controller;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.controller.system.SysUserController;
+import org.dromara.system.domain.SysUser;
+import org.dromara.system.domain.bo.SysUserBo;
+import org.dromara.system.domain.vo.SysUserVo;
+import org.dromara.system.domain.vo.UserInfoVo;
+import org.dromara.system.service.ISysUserService;
 import org.dromara.util.CabinetUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -38,6 +50,10 @@ public class TblExpressStaticsController extends BaseController {
 
     private final ITblExpressStaticsService tblExpressStaticsService;
 
+    private final ISysUserService userService;
+
+    private static final Logger log = LoggerFactory.getLogger(SysUserController.class);
+
     /**
      * 查询【请填写功能名称】列表
      */
@@ -47,25 +63,53 @@ public class TblExpressStaticsController extends BaseController {
         return tblExpressStaticsService.queryPageList(bo, pageQuery);
     }
 
-    @SaCheckPermission("system:expressStatics:list")
-    @GetMapping("/setData")
+    public String getLastMonth() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
+        Date date = new Date();
+        Calendar calendar = Calendar.getInstance();
+        // 设置为当前时间
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH,-1);
+        // 设置为上一个月
+        //calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
+        date = calendar.getTime();
+        return format.format(date);
+    }
+
+//    @SaCheckPermission("system:expressStatics:list")
+//    @GetMapping("/setData")
+    @Scheduled(cron = "0 10 0 ? * ? ")
     public R<TblExpressStaticsBo> getData() {
+        SysUserBo sysUserBo = new SysUserBo();
+        sysUserBo.setRoleId(1763484881548447746L);
+        PageQuery pageQuery = new PageQuery();
+        pageQuery.setPageSize(1000);
+        pageQuery.setPageNum(1);
+        List<SysUserVo> userlist = userService.selectAllocatedList(sysUserBo,pageQuery).getRows();
+        log.info(String.valueOf(userlist.size()));
         try{
-            TblExpressStaticsBo bo = new TblExpressStaticsBo();
-            bo.setMonth("2024-01");
-            bo.setUserId(1L);
-            bo.setData(CabinetUtil.getExpressDeliveryStatistics("18359818885","2024-01"));
-            TblExpressStaticsBo query = new TblExpressStaticsBo();
-            query.setMonth("2024-01");
-            query.setUserId(1L);
-            List<TblExpressStaticsVo> list = tblExpressStaticsService.queryList(bo);
-            if(list.size() > 0){
-                bo.setId(list.get(0).getId());
-                tblExpressStaticsService.updateByBo(bo);
-            }else{
-                tblExpressStaticsService.insertByBo(bo);
+            for(SysUserVo vo:userlist){
+                if(!vo.getPhonenumber().isEmpty() && vo.getPhonenumber() != null){
+                    log.info(vo.getNickName());
+                    String month = getLastMonth();
+                    TblExpressStaticsBo bo = new TblExpressStaticsBo();
+                    bo.setMonth(month);
+                    bo.setUserId(vo.getUserId());
+                    bo.setData(CabinetUtil.getExpressDeliveryStatistics(vo.getPhonenumber(),month));
+                    Thread.sleep(10000);
+                    TblExpressStaticsBo query = new TblExpressStaticsBo();
+                    query.setMonth(month);
+                    query.setUserId(vo.getUserId());
+                    List<TblExpressStaticsVo> list = tblExpressStaticsService.queryList(query);
+                    if(list.size() > 0){
+                        bo.setId(list.get(0).getId());
+                        tblExpressStaticsService.updateByBo(bo);
+                    }else{
+                        tblExpressStaticsService.insertByBo(bo);
+                    }
+                }
             }
-            return R.ok(bo);
+            return R.ok();
         }catch (Exception e){
            return R.fail(e.toString());
         }

+ 54 - 7
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/util/CabinetUtil.java

@@ -10,6 +10,7 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import org.apache.xmlbeans.impl.xb.xsdschema.Public;
+import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.redis.utils.CacheUtils;
@@ -19,10 +20,13 @@ import org.dromara.system.domain.TblCarInfo;
 import org.dromara.system.domain.bo.SysDictDataBo;
 import org.dromara.system.domain.bo.TblCarInfoBo;
 import org.dromara.system.domain.bo.TblCarScheduleBo;
+import org.dromara.system.domain.bo.TblExpressStaticsBo;
 import org.dromara.system.domain.vo.SysDictDataVo;
 import org.dromara.system.domain.vo.TblCarInfoVo;
 import org.dromara.system.domain.vo.TblCarScheduleVo;
+import org.dromara.system.domain.vo.TblExpressStaticsVo;
 import org.dromara.system.service.ISysDictDataService;
+import org.dromara.system.service.ITblExpressStaticsService;
 import org.dromara.system.service.impl.TblCarInfoServiceImpl;
 import org.dromara.system.service.impl.TblCarScheduleServiceImpl;
 import org.slf4j.Logger;
@@ -35,10 +39,8 @@ import javax.crypto.Cipher;
 import java.io.UnsupportedEncodingException;
 import java.security.Key;
 import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 @Component
 public class CabinetUtil {
@@ -46,6 +48,9 @@ public class CabinetUtil {
     @Autowired
     ISysDictDataService sysDictDataService;
 
+    @Autowired
+    ITblExpressStaticsService tblExpressStaticsService;
+
     private  final static String appid = "bw_open_express_A8C848769E5C04E0";
     private  final static String appkey = "5AFC6E07CFCF4A359B775D1416A9799A";
 
@@ -191,8 +196,6 @@ public class CabinetUtil {
         }catch (Exception e){
 
         }
-
-
         if(cabinetList!=null && cabinetList.size()>0){
             cabinetList.forEach(item->{
                 try {
@@ -274,6 +277,30 @@ public class CabinetUtil {
         }
     }
 
+    @Scheduled(fixedRate = 60*60*1000)
+    public R<TblExpressStaticsBo> getData() {
+        try{
+            String month = getLastMonth();
+            TblExpressStaticsBo bo = new TblExpressStaticsBo();
+            bo.setMonth(month);
+            bo.setUserId(1L);
+            bo.setData(getExpressDeliveryStatistics("19559316717",month));
+            TblExpressStaticsBo query = new TblExpressStaticsBo();
+            query.setMonth(month);
+            query.setUserId(1L);
+            List<TblExpressStaticsVo> list = tblExpressStaticsService.queryList(query);
+            if(list.size() > 0){
+                bo.setId(list.get(0).getId());
+                tblExpressStaticsService.updateByBo(bo);
+            }else{
+                tblExpressStaticsService.insertByBo(bo);
+            }
+            return R.ok(bo);
+        }catch (Exception e){
+            return R.fail(e.toString());
+        }
+    }
+
     // 获取柜子信息
     public static  String getCabinetInfo(String cabinetCode) throws Exception {
         int times = (int) (DateUtil.date().getTime()/1000);
@@ -315,13 +342,33 @@ public class CabinetUtil {
         int times = (int) (DateUtil.date().getTime()/1000);
         String str_sign = appid + "=" + times + "=" + appid;
         str_sign = encrypt(str_sign);
-        String result3= HttpRequest.post(hosts + "/api/v2/search/express_delivery_statistics/").body(JSON.toJSONString(Map.of("哈哈哈哈",courierMobile,"market_id","3219","search_month",month)))
+        log.info(JSON.toJSONString(Map.of("timestamp",times+"","Content-Type","application/json","appid",appid,"sign",str_sign)));
+        log.info(JSON.toJSONString(Map.of("courier_mobile",courierMobile,"market_id",3219,"search_month",month)));
+        String result3= HttpRequest.post(hosts + "/kd/api/v2/search/express_delivery_statistics/").body(JSON.toJSONString(Map.of("courier_mobile",courierMobile,"market_id",3219,"search_month",month)))
             .addHeaders(Map.of("timestamp",times+"","Content-Type","application/json","appid",appid,"sign",str_sign))
             .execute().body();
         return result3;
     }
 
 
+    public static String getLastMonth() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
+        Date date = new Date();
+        Calendar calendar = Calendar.getInstance();
+        // 设置为当前时间
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH,-1);
+        // 设置为上一个月
+        //calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
+        date = calendar.getTime();
+        return format.format(date);
+    }
+
+
+    public static void main(String args[]) throws Exception {
+        log.info(getExpressDeliveryStatistics("19559316717","2025-01"));
+    }
+
     // 获取柜子盒子
     public static String getCabinetBoxs(String cabinetCode) throws Exception {
         int times = (int) (DateUtil.date().getTime()/1000);

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java

@@ -31,6 +31,8 @@ import org.dromara.system.domain.bo.SysUserBo;
 import org.dromara.system.domain.vo.*;
 import org.dromara.system.listener.SysUserImportListener;
 import org.dromara.system.service.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;