访客预约审批流程审批人改为申请人自选
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<String, Object> 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<String, Object> buildApplyData(String visitorName, String visitorPhone,
|
||||
String visitorCompany, String visitPurpose,
|
||||
String visitTime, String visiteeName, String visitArea) {
|
||||
private Map<String, Object> buildApplyData(VisitApplication record) {
|
||||
List<Map<String, Object>> 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<String, Object> 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<Map<String, Object>> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,7 @@
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user