1.完善定期获取设备核销记录更新数据库状态定时任务

2.定时任务处理 请求闸机报错请求
3.修改接口返回参数
main
862857010@qq.com 2 years ago
parent 3e617d2daa
commit 72c98e3069
  1. 4
      src/main/java/com/cjy/back/ybsjAppointment/controller/YbsjyAppointmentSettingController.java
  2. 22
      src/main/java/com/cjy/back/ybsjAppointment/dao/YbsjyAppointmentRecordMapper.java
  3. 24
      src/main/java/com/cjy/back/ybsjAppointment/dao/YbsjyAppointmentRecordMapper.xml
  4. 4
      src/main/java/com/cjy/back/ybsjAppointment/dao/YbsjyAppointmentSettingMapper.xml
  5. 9
      src/main/java/com/cjy/back/ybsjAppointment/entity/AppointmentRequestTurnstileLogEntity.java
  6. 9
      src/main/java/com/cjy/back/ybsjAppointment/service/impl/YbsjyAppointmentRecordImpl.java
  7. 8
      src/main/java/com/cjy/back/ybsjAppointment/service/impl/YbsjyAppointmentSettingServiceImpl.java
  8. 120
      src/main/java/com/cjy/back/ybsjAppointment/task/ProcessRequestFailRecordTask.java

@ -38,9 +38,7 @@ public class YbsjyAppointmentSettingController {
}
ybsjyAppointmentSettingEntity.setCreateBy(user.getUserid().toString());
ybsjyAppointmentSettingEntity.setUserkey(user.getUserkey());
if (ybsjyAppointmentSettingEntity.getId() == 0) {
return ServerResponse.createByError("请合理操作,如有疑问请联系管理员");
}
return ybsjyAppointmentSettingService.add(ybsjyAppointmentSettingEntity);
}

@ -1,5 +1,6 @@
package com.cjy.back.ybsjAppointment.dao;
import com.cjy.back.ybsjAppointment.entity.AppointmentRequestTurnstileLogEntity;
import com.cjy.back.ybsjAppointment.entity.AppointmentWriteOffLogEntity;
import com.cjy.back.ybsjAppointment.entity.YbsjyAppointmentSettingEntity;
import com.cjy.back.ybsjAppointment.entity.vo.AppointmentDocumentsDetails;
@ -24,6 +25,13 @@ public interface YbsjyAppointmentRecordMapper {
* @return
*/
List<Map<String, Object>> getAppointmentRecordListByPage(@Param("page") PageParameter page, @Param("getAppointmentRecordVO") GetAppointmentRecordVO getAppointmentRecordVO);
/**
* 导出获取数据接口
* @param page
* @param getAppointmentRecordVO
* @return
*/
List<Map<String, Object>> getappletsAppointmentRecordListByPage(@Param("page") PageParameter page, @Param("getAppointmentRecordVO") GetAppointmentRecordVO getAppointmentRecordVO);
/**
@ -136,4 +144,18 @@ public interface YbsjyAppointmentRecordMapper {
* @return
*/
int updateClearVisitorsState(@Param("ids") List<String> ids);
/**
* 获取请求闸机失败的记录
*/
List<Map<String,Object>>getProcessRequestFailRecordList();
/**
* 成功修改状态 失败尝试次数加一
* @param list
* @return
*/
int updateProcessRequestFailRecord(List<AppointmentRequestTurnstileLogEntity> list);
}

@ -72,6 +72,18 @@
</foreach>
</update>
<update id="updateProcessRequestFailRecord">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update ybsj_appointment_request_turnstile_log
<set>
response_body=#{item.responseBody},
state=#{item.state},
frequency=frequency+1
</set>
where id=#{item.id}
</foreach>
</update>
<select id="getAppointmentRecordListByPage" resultType="java.util.Map">
SELECT
@ -82,7 +94,8 @@
t1.appointment_date,
CONCAT( t3.start_time, '~', t3.end_time ) as periodTime,
t4.name,
t4.phone
t4.phone,
t1.appointment_documents_write_off as state
FROM
ybsj_appointment_people_info t4
LEFT join ybsj_appointment_documents_info t1 on t1.id=t4.appointment_documents_id and t1.del_flag != 2
@ -277,4 +290,13 @@
FROM ybsj_appointment_people_info
WHERE clear_visitors = 0
</select>
<select id="getProcessRequestFailRecordList" resultType="java.util.Map">
SELECT
id,request_url as requestUrl,request_params as requestParams,state,frequency,type
FROM
ybsj_appointment_request_turnstile_log
WHERE
state = '500'
AND frequency &lt; 3
</select>
</mapper>

@ -105,10 +105,12 @@
SELECT
t1.id,
t2.sname,
t1.state
t3.dicname as state,
t1.scenic_id as scenicId
FROM
ybsj_appointment_setting t1
LEFT JOIN ybsj_scenic_info t2 ON t1.scenic_id = t2.guid
LEFT JOIN sys_dictionary t3 ON t1.state =t3.dicnum
where 1=1
<if test="ybsjyAppointmentSettingEntity.guid !=null and ybsjyAppointmentSettingEntity.guid !=''">
and t1.scenic_id=#{ybsjyAppointmentSettingEntity.guid}

@ -5,12 +5,21 @@ package com.cjy.back.ybsjAppointment.entity;
* @createDate 2023/7/31
*/
public class AppointmentRequestTurnstileLogEntity {
private String id;
private String requestUrl;
private String requestParams;
private String responseBody;
private String state;
private String type;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRequestUrl() {
return requestUrl;
}

@ -58,17 +58,16 @@ public class YbsjyAppointmentRecordImpl implements YbsjyAppointmentRecordService
//根据条件进行分页查询数据
List<Map<String, Object>> list = ybsjyAppointmentRecordMapper.getAppointmentRecordListByPage(pw.getPage(), getAppointmentRecordVO);
list.stream().forEach(item -> {
});
// list.stream().forEach(item -> {
//
// });
// 查询总行数
int userCount = pw.getPage().getTotalCount();
//返回数据
HashMap<String, Object> resultMap = new HashMap<>();
resultMap.put("count", userCount);
resultMap.put("data", list);
resultMap.put("msg", "查询成功");
resultMap.put("code", 0);
return ServerResponse.createBySuccess(resultMap);
}

@ -113,8 +113,6 @@ public class YbsjyAppointmentSettingServiceImpl implements YbsjyAppointmentSetti
HashMap<String, Object> resultMap = new HashMap<>();
resultMap.put("count", userCount);
resultMap.put("data", list);
resultMap.put("msg", "查询成功");
resultMap.put("code", 0);
return ServerResponse.createBySuccess(resultMap);
}
@ -209,8 +207,7 @@ public class YbsjyAppointmentSettingServiceImpl implements YbsjyAppointmentSetti
//第二步通过通过规则id获取到时间段列表
HashMap<String, Object> resultMap = new HashMap<>();
resultMap.put("data", list);
resultMap.put("msg", "查询成功");
resultMap.put("code", 0);
return ServerResponse.createBySuccess(resultMap);
}
@ -361,8 +358,7 @@ public class YbsjyAppointmentSettingServiceImpl implements YbsjyAppointmentSetti
HashMap<String, Object> resultMap = new HashMap<>();
resultMap.put("count", userCount);
resultMap.put("data", list);
resultMap.put("msg", "查询成功");
resultMap.put("code", 0);
return ServerResponse.createBySuccess(resultMap);
}

@ -0,0 +1,120 @@
package com.cjy.back.ybsjAppointment.task;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.cjy.back.ybsjAppointment.dao.YbsjyAppointmentRecordMapper;
import com.cjy.back.ybsjAppointment.entity.AppointmentRequestTurnstileLogEntity;
import com.cjy.util.HttpUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author liangjiawei
* @createDate 2023/8/2
*/
@Component("processRequestFailRecordTask")
public class ProcessRequestFailRecordTask {
@Autowired
YbsjyAppointmentRecordMapper ybsjyAppointmentRecordMapper;
// @Scheduled(cron = "0 0/1 * * * ?")
@Scheduled(cron = "0 0/60 * * * ?")
public void processRequestFailRecordTask() {
//第一步 获取请求失败的数据
List<Map<String,Object>> list= ybsjyAppointmentRecordMapper.getProcessRequestFailRecordList();
List<AppointmentRequestTurnstileLogEntity> updateDateList=new ArrayList<>();
list.stream().forEach(item ->{
//第二步 发送请求
if(item.get("type").equals("post")){
Map<String, String> map = stringToMap(item.get("requestParams").toString());
String responseString = HttpUtil.sendPost(item.get("requestUrl").toString(),map);
JSONObject responseJson = JSONObject.parseObject(responseString);
if(responseJson.get("code").equals("200")){
AppointmentRequestTurnstileLogEntity appointmentRequestTurnstileLogEntity=new AppointmentRequestTurnstileLogEntity();
appointmentRequestTurnstileLogEntity.setResponseBody(responseString);
appointmentRequestTurnstileLogEntity.setId(item.get("id").toString());
appointmentRequestTurnstileLogEntity.setState("200");
if(updateDateList.size()<500){
updateDateList.add(appointmentRequestTurnstileLogEntity);
}else {
ybsjyAppointmentRecordMapper.updateProcessRequestFailRecord(updateDateList);
updateDateList.clear();
updateDateList.add(appointmentRequestTurnstileLogEntity);
}
//修改状态
}else {
AppointmentRequestTurnstileLogEntity appointmentRequestTurnstileLogEntity=new AppointmentRequestTurnstileLogEntity();
appointmentRequestTurnstileLogEntity.setResponseBody(responseString);
appointmentRequestTurnstileLogEntity.setId(item.get("id").toString());
appointmentRequestTurnstileLogEntity.setState("500");
//重试次数+1
if(updateDateList.size()<500){
updateDateList.add(appointmentRequestTurnstileLogEntity);
}else {
ybsjyAppointmentRecordMapper.updateProcessRequestFailRecord(updateDateList);
updateDateList.clear();
updateDateList.add(appointmentRequestTurnstileLogEntity);
}
}
}else {
String responseString = HttpUtil.doGet(item.get("requestUrl").toString());
JSONObject responseJson = JSONObject.parseObject(responseString);
if(responseJson.get("status").equals("200")){
AppointmentRequestTurnstileLogEntity appointmentRequestTurnstileLogEntity=new AppointmentRequestTurnstileLogEntity();
appointmentRequestTurnstileLogEntity.setResponseBody(responseString);
appointmentRequestTurnstileLogEntity.setId(item.get("id").toString());
appointmentRequestTurnstileLogEntity.setState("200");
if(updateDateList.size()<500){
updateDateList.add(appointmentRequestTurnstileLogEntity);
}else {
ybsjyAppointmentRecordMapper.updateProcessRequestFailRecord(updateDateList);
updateDateList.clear();
updateDateList.add(appointmentRequestTurnstileLogEntity);
}
//修改状态
}else {
AppointmentRequestTurnstileLogEntity appointmentRequestTurnstileLogEntity=new AppointmentRequestTurnstileLogEntity();
appointmentRequestTurnstileLogEntity.setResponseBody(responseString);
appointmentRequestTurnstileLogEntity.setId(item.get("id").toString());
appointmentRequestTurnstileLogEntity.setState("500");
//重试次数+1
if(updateDateList.size()<500){
updateDateList.add(appointmentRequestTurnstileLogEntity);
}else {
ybsjyAppointmentRecordMapper.updateProcessRequestFailRecord(updateDateList);
updateDateList.clear();
updateDateList.add(appointmentRequestTurnstileLogEntity);
}
}
}
});
if(!updateDateList.isEmpty()){
ybsjyAppointmentRecordMapper.updateProcessRequestFailRecord(updateDateList);
}
//第三步 成功修改状态 失败尝试次数加一
}
public static Map<String, String> stringToMap(String input) {
String jsonString = input.substring(1, input.length() - 1);
String[] keyValuePairs = jsonString.split(", ");
Map<String, String> map = new HashMap<>();
for (String pair : keyValuePairs) {
String[] keyValue = pair.split("=");
String key = keyValue[0];
String value = keyValue[1];
map.put(key, value);
}
return map;
}
}
Loading…
Cancel
Save