From 10b7c15dc74c8be763c8de8a5b65f7c82b414727 Mon Sep 17 00:00:00 2001 From: chenglijuan Date: Thu, 7 May 2026 14:09:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BF=E5=AE=A2=E9=A2=84=E7=BA=A6=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E6=B5=81=E7=A8=8B=E5=AE=A1=E6=89=B9=E4=BA=BA=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E7=94=B3=E8=AF=B7=E4=BA=BA=E8=87=AA=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/AppointmentService.java | 9 +-- .../service/VisitorApprovalService.java | 2 +- .../service/WxApprovalService.java | 63 ++++++------------- .../mapper/VisitApplicationMapper.xml | 3 +- 4 files changed, 23 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/example/mini_program/service/AppointmentService.java b/src/main/java/com/example/mini_program/service/AppointmentService.java index d93f7ad..86adc6e 100644 --- a/src/main/java/com/example/mini_program/service/AppointmentService.java +++ b/src/main/java/com/example/mini_program/service/AppointmentService.java @@ -71,16 +71,9 @@ public class AppointmentService { record.setId(UUID.randomUUID().toString().replace("-", "")); record.setStatus("pending"); record.setStatusText("待审核"); - // 发起企业微信审批 try { - String visitTime = record.getVisitDate(); - if (record.getVisitTime() != null && !record.getVisitTime().isEmpty()) { - visitTime = record.getVisitDate() + " " + record.getVisitTime(); - } - String spNo = wxApprovalService.submitApproval(creatorUserId, record.getName(), record.getPhone(), - record.getCompany(), record.getReason(), visitTime, record.getHostName(), record.getArea() - ); + String spNo = wxApprovalService.submitApproval(creatorUserId,record); record.setSpNo(spNo); log.info("企业微信审批提交成功, spNo: {}", spNo); } catch (Exception e) { diff --git a/src/main/java/com/example/mini_program/service/VisitorApprovalService.java b/src/main/java/com/example/mini_program/service/VisitorApprovalService.java index 5c289a0..40abf59 100644 --- a/src/main/java/com/example/mini_program/service/VisitorApprovalService.java +++ b/src/main/java/com/example/mini_program/service/VisitorApprovalService.java @@ -105,7 +105,7 @@ public class VisitorApprovalService { private String formatVisitTime(VisitApplication record) { String time = record.getVisitDate(); if (record.getVisitTime() != null && !record.getVisitTime().isEmpty()) { - time = record.getVisitDate() + " " + record.getVisitTime(); + time = record.getVisitDate() + " " + record.getVisitTime().split("-")[0]+":00"; } return time; } diff --git a/src/main/java/com/example/mini_program/service/WxApprovalService.java b/src/main/java/com/example/mini_program/service/WxApprovalService.java index ca152fd..188d7ed 100644 --- a/src/main/java/com/example/mini_program/service/WxApprovalService.java +++ b/src/main/java/com/example/mini_program/service/WxApprovalService.java @@ -1,16 +1,13 @@ package com.example.mini_program.service; import com.example.mini_program.config.WxCorpConfig; +import com.example.mini_program.entity.VisitApplication; import com.example.mini_program.util.HttpUtil; import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -54,18 +51,18 @@ public class WxApprovalService { /** * 提交审批申请 */ - public String submitApproval(String creatorUserId, String visitorName, String visitorPhone, - String visitorCompany, String visitPurpose, String visitTime, - String visiteeName, String visitArea) { + public String submitApproval(String creatorUserId, VisitApplication record) { String url = String.format(SUBMIT_URL, getAccessToken()); Map body = new HashMap<>(); body.put("creator_userid", creatorUserId); body.put("template_id", wxCorpConfig.getApprovalTemplateId()); - body.put("use_template_approver", 1); - body.put("apply_data", buildApplyData(visitorName, visitorPhone, visitorCompany, - visitPurpose, visitTime, visiteeName, visitArea)); - body.put("summary_list", buildSummaryList(visitorName, visitPurpose)); + body.put("use_template_approver", 0); + body.put("approver", List.of( + Map.of("attr", 1, "userid", List.of(record.getPersonId())) + )); + body.put("apply_data", buildApplyData(record)); + body.put("summary_list", buildSummaryList(record.getName(), record.getReason())); try { String json = objectMapper.writeValueAsString(body); @@ -82,17 +79,19 @@ public class WxApprovalService { } // ---- 内部方法 ---- - private Map buildApplyData(String visitorName, String visitorPhone, - String visitorCompany, String visitPurpose, - String visitTime, String visiteeName, String visitArea) { + private Map buildApplyData(VisitApplication record) { List> contents = new ArrayList<>(); - contents.add(textControl("Text-1776786661954", visitorName)); - contents.add(textControl("Text-1776786666351", visitorPhone)); - contents.add(textControl("Text-1776786668098", visitorCompany)); - contents.add(textControl("Text-1776786672408", visitPurpose)); - contents.add(dateControl("Date-1776786680089", visitTime)); - contents.add(textControl("Text-1776786690968", visiteeName)); - contents.add(textControl("Text-1776786692400", visitArea)); + contents.add(textControl("Text-1776786661954", record.getName())); + contents.add(textControl("Text-1776786666351", record.getPhone())); + contents.add(textControl("Text-1776786668098", record.getCompany())); + contents.add(textControl("Text-1776786672408", record.getReason())); + String visitTime = record.getVisitDate(); + if (record.getVisitTime() != null && !record.getVisitTime().isEmpty()) { + visitTime = record.getVisitDate() + " " + record.getVisitTime(); + } + contents.add(textControl("Text-1778132408837", visitTime)); + contents.add(textControl("Text-1776786690968", record.getHostName())); + contents.add(textControl("Text-1776786692400", record.getArea())); return Map.of("contents", contents); } @@ -101,21 +100,6 @@ public class WxApprovalService { "value", Map.of("text", value != null ? value : "")); } - private Map dateControl(String id, String dateTime) { - long timestamp = 0; - if (dateTime != null && !dateTime.isEmpty()) { - try { - timestamp = LocalDateTime.parse(dateTime, - DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")) - .atZone(ZoneId.of("Asia/Shanghai")).toInstant().getEpochSecond(); - } catch (Exception e) { - log.warn("日期解析失败: {}", dateTime); - } - } - return Map.of("control", "Date", "id", id, - "value", Map.of("date", Map.of("type", "hour", "s_timestamp", String.valueOf(timestamp)))); - } - private List> buildSummaryList(String visitorName, String visitPurpose) { return List.of( Map.of("summary_info", List.of( @@ -124,11 +108,4 @@ public class WxApprovalService { Map.of("text", "目的: " + (visitPurpose != null ? visitPurpose : ""), "lang", "zh_CN"))) ); } - - @Data - public static class ApprovalStatus { - private String spNo; - private Integer spStatus; - private String spStatusText; - } } diff --git a/src/main/resources/mapper/VisitApplicationMapper.xml b/src/main/resources/mapper/VisitApplicationMapper.xml index 3374438..607242e 100644 --- a/src/main/resources/mapper/VisitApplicationMapper.xml +++ b/src/main/resources/mapper/VisitApplicationMapper.xml @@ -24,8 +24,7 @@ id, name, phone, company, reason,person_id,check_status,plate_number, - DATE_FORMAT(visit_date, '%Y-%m-%d') AS visit_date, - DATE_FORMAT(visit_time, '%H:%i') AS visit_time, + DATE_FORMAT(visit_date, '%Y-%m-%d') AS visit_date, visit_time, host_name, area, status, status_text, openid, DATE_FORMAT(create_time, '%Y-%m-%dT%H:%i:%s.000+00:00') AS create_time, sp_no