Explorar o código

审批列表添加了日志

wuweihao hai 1 ano
pai
achega
dd0b2edc70

+ 6 - 1
remark.md

@@ -3,4 +3,9 @@
 部署非四维ip 需要钉钉开通ip白名单
 
 web:
-http://127.0.0.1:8077/admin/
+http://127.0.0.1:8077/admin/
+
+淘宝接口文档
+https://open.taobao.com/api.htm?cid=21542&docId=46&docType=2#commponParams
+正式域名:	
+https://eco.taobao.com/router/rest

+ 2 - 0
src/main/java/com/fourdage/dingding/controller/ExaminationController.java

@@ -125,6 +125,8 @@ public class ExaminationController extends BaseController{
 			
 			dingDingUtil.getProcesses(processes, vo);
 
+			logger.info("返回前端数据数量: {}", processes.size());
+
 			result.put("code", 0);
 			result.put("msg", "");
 			result.put("count", processes.size());

+ 56 - 0
src/main/java/com/fourdage/dingding/dao/DateDto.java

@@ -0,0 +1,56 @@
+package com.fourdage.dingding.dao;
+
+
+/**
+ * Created by owen on 2024/1/12 0012 11:45
+ */
+//@Data
+public class DateDto {
+
+    /**
+     * 开始时间
+     * 需要用字符串接收
+     */
+//    @ApiModelProperty(value = "开始时间", name = "startTime")
+    private String startTime;
+
+
+//    @ApiModelProperty(value = "结束时间", name = "endTime")
+    private String endTime;
+
+//    @ApiModelProperty(value = "限制天数")
+    private Integer dayScope;
+
+    @Override
+    public String toString() {
+        return "DateDto{" +
+                "startTime='" + startTime + '\'' +
+                ", endTime='" + endTime + '\'' +
+                ", dayScope=" + dayScope +
+                '}';
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getDayScope() {
+        return dayScope;
+    }
+
+    public void setDayScope(Integer dayScope) {
+        this.dayScope = dayScope;
+    }
+}

+ 121 - 0
src/main/java/com/fourdage/dingding/util/DateUtils.java

@@ -0,0 +1,121 @@
+package com.fourdage.dingding.util;
+
+import cn.hutool.core.date.DateUtil;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+/**
+ * Created by owen on 2022/4/8 0008 14:32
+ */
+
+public class DateUtils extends DateUtil {
+    public Logger log = LoggerFactory.getLogger(getClass());
+
+    private static String YYYY_MM = "yyyy-MM";
+
+    private static String YYYYMM = "yyyyMM";
+
+    public static String YYYYMMDD = "yyyyMMdd";
+
+    private static String YYYY_MM_DD = "yyyy-MM-dd";
+
+    private static String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
+
+
+    private static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
+
+    private static String YYYYMMDD_HHMMSSSSS = "yyyyMMdd_HHmmssSSS";
+
+    public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
+
+    public static String YYYY_MM_DD_HH_MM_SS_2 = "yyyy/MM/dd HH:mm:ss";
+
+
+    /**
+     *
+     * @param time 字符串日期,必须为2022-02-16 12:26:00
+     * @param format 格式
+     * @return
+     */
+    public static String formatStr(String time, String format){
+        // 将原始日期字符串解析为Date对象
+        Date date = DateUtil.parseDateTime(time);
+        String s = format(date, format);
+
+        return s;
+    }
+
+
+    /**
+     * 获取当前月
+     * @return
+     */
+    public static String getMonth(){
+        return format(LocalDateTime.now(), YYYYMM);
+    }
+
+    /**
+     * 获取当前月份的前几个月
+     * @param month
+     * @return
+     */
+    public static String minusMonths(int month){
+        return format(LocalDateTime.now().minusMonths(month), YYYYMM);
+    }
+
+    /**
+     * 获取当前时间戳
+     * @return
+     */
+    public static String getDateTime(){
+        return format(LocalDateTime.now(), YYYYMMDD_HHMMSSSSS);
+    }
+
+
+    /**
+     * 字符串转LocalDateTime
+     * @param time 字符串
+     * @return LocalDateTime
+     */
+    public static LocalDateTime srtToLocalDateTime(String time){
+        return LocalDateTime.parse(time, DateTimeFormatter.ofPattern(YYYY_MM_DD_HH_MM));
+    }
+
+    public static LocalDate srtToLocalDate(String time){
+        return LocalDate.parse(time, DateTimeFormatter.ofPattern(YYYY_MM_DD_HH_MM_SS));
+    }
+
+    @Test
+    public void test(){
+        System.out.println(formatStr("2022-02-16 12:26:00", YYYYMMDD));
+    }
+
+
+    public static String getStrTime(long timestamp){
+        // 将时间戳转换为Instant对象
+        Instant instant = Instant.ofEpochMilli(timestamp);
+
+        // 可选:将Instant转换到特定时区的ZonedDateTime,这里是使用系统默认时区
+        // ZoneId zoneId = ZoneId.systemDefault();
+        // ZonedDateTime zonedDateTime = instant.atZone(zoneId);
+
+        // 将Instant转换为LocalDateTime,如果你不需要时区信息
+        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+
+        // 定义日期时间格式
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+        // 使用定义的格式器来格式化日期时间
+        String formattedDateTime = localDateTime.format(formatter);
+        return formattedDateTime;
+    }
+
+}

+ 32 - 6
src/main/java/com/fourdage/dingding/util/DingDingUtil.java

@@ -1,5 +1,9 @@
 package com.fourdage.dingding.util;
 
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -116,11 +120,18 @@ public class DingDingUtil {
 		Map<String, Object> processMap = new HashMap<String, Object>();
 		processMap.put("method", "dingtalk.smartwork.bpms.processinstance.list");
 		processMap.put("session", getAccessToken());
-		processMap.put("timestamp", Long.valueOf(System.currentTimeMillis()).toString());
+		String timestamp = Long.valueOf(System.currentTimeMillis()).toString();
+		processMap.put("timestamp", timestamp);
+
+
 		processMap.put("format", "json");
 		processMap.put("v", "2.0");
 		processMap.put("process_code", searchBean.getProcessCode());
-		processMap.put("start_time", searchBean.getStartTime());
+		long startTime = searchBean.getStartTime();
+		Instant instant = Instant.ofEpochMilli(startTime);
+		LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+		logger.info("start_time: {}, 时间:{}", startTime, localDateTime);
+		processMap.put("start_time", startTime);
 		processMap.put("cursor", searchBean.getPage() == null ? 0 : searchBean.getPage());
 		
 		String resultStr = HttpHelper.sendGetByUrlConnection("https://eco.taobao.com/router/rest", processMap, "UTF-8");
@@ -133,6 +144,14 @@ public class DingDingUtil {
 			JSONObject list =  result.getJSONObject("list");
 			JSONArray processInstanceTop = list.getJSONArray("process_instance_top_vo");
 			if (processInstanceTop != null){
+
+				long startTimeSearch = searchBean.getStartTimeSearch();
+				long endTimeSearch = searchBean.getEndTimeSearch();
+
+				logger.info("查询开始时间:{}, 查询结束时间:{}", DateUtils.getStrTime(startTimeSearch), DateUtils.getStrTime(endTimeSearch));
+
+
+
 				for (Object obj : processInstanceTop){
 					JSONObject jobj = (JSONObject)obj;
 					
@@ -148,10 +167,16 @@ public class DingDingUtil {
 						continue;
 					}
 					
-					DateTime de = DateTime.parse(jobj.getString("finish_time"), format);
-					if (de.isAfter(searchBean.getStartTimeSearch()) && de.isBefore(searchBean.getEndTimeSearch())){
-						if (StringUtils.isNotEmpty(searchBean.getBusinessNum()) 
-								&& !jobj.getString("business_id").contains(searchBean.getBusinessNum())){
+					String finishTime = jobj.getString("finish_time");
+					String businessId = jobj.getString("business_id");
+					String title = jobj.getString("title");
+					logger.info("订单号:{}, 订单名称:{}, 完成时间:{}, 当前状态:{}", businessId, title, finishTime, status);
+
+					DateTime de = DateTime.parse(finishTime, format);
+
+
+					if (de.isAfter(startTimeSearch) && de.isBefore(endTimeSearch)){
+						if (StringUtils.isNotEmpty(searchBean.getBusinessNum()) && !businessId.contains(searchBean.getBusinessNum())){
 							continue;
 						}
 						
@@ -170,6 +195,7 @@ public class DingDingUtil {
 
 				// 查询下一页
 				if (result.get("next_cursor") != null){
+					logger.info("查询下一页");
 					searchBean.setPage(String.valueOf(result.getInteger("next_cursor")));
 					getProcesses(processes, searchBean);
 				}

+ 1 - 0
src/main/java/com/fourdage/dingding/util/HtmlPdfUtil.java

@@ -188,6 +188,7 @@ public class HtmlPdfUtil {
 			logger.info("请求参数,processInstanceId:{}, accessToken:{}, fileName:{}", processInstanceId, accessToken, fileName);
 
 			// 2024-03-07 by owen, 旧接口的报销申请返回的数据结构变了,使用了钉钉工时提醒应用的appkey 对应的接口
+			//获取单个审批实例详情
 			String body = HttpUtil.
 					createGet(StrUtil.format("http://project.4dage.com:8003/api/dingTalk/getWorkflowInfo/{}", processInstanceId))
 					.execute().body();