Commit 0275d20b authored by 王琮's avatar 王琮

定时同步邀访信息

parent 3e887912
......@@ -9,8 +9,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTimeUtils;
import org.rcisoft.core.model.CyPersistModel;
import org.rcisoft.integration.jieLink.common.SignUtils;
import org.rcisoft.integration.jieLink.dto.*;
import org.rcisoft.integration.jieLink.service.IJieLinkService;
......
......@@ -56,5 +56,7 @@ public interface VisitInfomationRepository extends CyBaseMapper<VisitInfoMation>
List<VisitUser> getUserList(@Param("business_id") int business_id);
List<VisitInfoMation> findByUser(VisitUser visitUser);
List<VisitInfoMation> findByTime(@Param("time")String time,@Param("realTime")String realTime);
}
......@@ -212,5 +212,8 @@ public class VisitInfoMation extends CyIdIncreEntity<VisitInfoMation> {
@Transient //访客手机号(小程序登录用户手机号)
@TableField(exist = false)
private String phone;
// 同步状态(0:未同步,1:已同步)
private String synStatus;
}
package org.rcisoft.sys.visit.schedule;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.rcisoft.integration.jieLink.service.IJieLinkService;
import org.rcisoft.sys.dictionary.entity.DictData;
import org.rcisoft.sys.dictionary.service.DictionaryService;
import org.rcisoft.sys.visit.dao.VisitInfomationRepository;
import org.rcisoft.sys.visit.entity.VisitInfoMation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Component
public class VisitSyncSchedule {
@Autowired
private DictionaryService dictionaryServiceImpl;
@Autowired
private VisitInfomationRepository visitInfomationRepository;
@Autowired
private IJieLinkService jieLinkService;
/**
* 捷顺开关
*/
@Value("${jieLink.synchronization}")
private boolean synchronization;
@Scheduled(cron = "0 0/30 * * * ?")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public void execute() {
// 查询提前访问时间阈值
List<DictData> dictDataList = dictionaryServiceImpl.selectByTypes("timeThreshold");
long times = 20 * 60 * 1000;
for (DictData dicData : dictDataList) {
String dictValue = dicData.getDictValue();
//此处可能会有类型转换报错的BUG
int factor = Integer.parseInt(dictValue);
String dictLabel = dicData.getDictLabel();
if (StringUtils.equals("advance", dictLabel)) {
times = times + factor * 60 * 1000;
}
}
// 获取此时未到访问时间已到禁止编辑时间的邀访记录同步到捷顺
Date date = new Date();
String realTime = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss");
String time = DateUtil.format(new Date(date.getTime() + times), "yyyy-MM-dd HH:mm:ss");
// 查询时间段内未同步的邀访记录
List<VisitInfoMation> records = visitInfomationRepository.findByTime(time, realTime);
if (records.size() > 0) {
records.forEach(r->{
if (synchronization && jieLinkService.pushVisitorData(r)) {
r.setSynStatus("1");
visitInfomationRepository.updateById(r);
}
});
}
}
}
......@@ -168,7 +168,10 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
u.setNormal();
visitUserRepository.insert(u);
});
//jieLinkService.pushVisitorData(visitInfomation);
/* if(jieLinkService.pushVisitorData(visitInfomation)) {
visitInfomation.setSynStatus("1");
baseMapper.updateById(visitInfomation);
}*/
return new CyPersistModel(line);
}
......@@ -651,7 +654,7 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
Set set = new HashSet();
for(int i=0;i<regions.length;i++){
for (int i = 0; i < regions.length; i++) {
set.add(regions[i]);
}
regions = (String[]) set.toArray(new String[set.size()]);
......@@ -669,7 +672,7 @@ public class VisitInfomationServiceImpl extends ServiceImpl<VisitInfomationRepos
if (regionCode.length() > 0) {
regionCode = regionCode.substring(0, regionCode.length() - 1);
visitInfoMation.setVisitRegionCode(regionCode);
}else {
} else {
BeanUtil.copyProperties(visitInfoDto, errorDTO);
errorDTO.setError("访问区域不存在!");
errorDTOArrayList.add(errorDTO);
......
......@@ -436,5 +436,25 @@
</if>
and vu.person_id =#{personId}
</select>
<select id="findByTime" resultType="org.rcisoft.sys.visit.entity.VisitInfoMation">
select vi.business_id,
vi.user_name,
vi.dept_name,
vi.post_name,
vi.create_date,
vi.visit_reason,
vi.visit_region,
vi.visit_date,
vi.visit_time,
vi.visit_status,
vu.user_name,
vu.visit_phone
from visit_infomation vi
where vi.del_flag = '0'
and vi.flag = '1'
and vi.syn_status = '0'
and vi.visit_real_time &gt;= #{realTime}
and vi.visit_real_time &lt;= #{time}
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment