合并分支 'dev_20230216' 到 'master'

Dev 20230216

查看合并请求 laws-foton-slrs/foton-slrs-system-rest!52
This commit is contained in:
高嵩
2023-04-13 17:49:43 +08:00
8 changed files with 228 additions and 33 deletions
@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
@RestController
@@ -40,6 +41,12 @@ public class DataSyncController {
return iDataSyncService.dataSync();
}
@ApiOperation("同步用户数据2")
@PostMapping("/importUserData2")
public String importUserData2(Long chuo) throws Exception {
return iDataSyncService.dataSync2(chuo);
}
@ApiOperation("同步组织机构")
@PostMapping("/importOrgData")
public String importOrgData() throws Exception {
@@ -7,6 +7,8 @@ public interface IDataSyncService {
public String dataSync();
public String dataSync2(Long chuo);
public String orgDataSync();
public String updateByOrgs();
@@ -38,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -366,6 +367,106 @@ public class DataSyncServiceImpl implements IDataSyncService {
}
@Transactional(rollbackFor = {RuntimeException.class,Exception.class})
public String dataSync2(Long chuo){
try{
SyncUserService syncUserService = new SyncUserService();
List<String> res = syncUserService.syncFotonUser2(chuo);
if(res!=null && !res.isEmpty()){
//存放岗位信息
Map<String, String> positionMap = new HashMap<>();
TsPosition position = new TsPosition();
position.setCurrent(1);
position.setPageSize(100000);
IPage<TsPosition> iPage = tsPositionService.getPosition(position);
List<TsPosition> positions=iPage.getRecords();
if (!positions.isEmpty()) {
positions.forEach(tsPosition -> {
positionMap.put(tsPosition.getName(), tsPosition.getId());
});
}
List<TsUser> addUserList = new ArrayList<>();
List<TsUser> upUserList = new ArrayList<>();
for (String s : res) {
JSONObject userData = JSONObject.parseObject(s);
if(userData.containsKey("results")){
JSONArray jsonArray = userData.getJSONArray("results");
jsonArray.forEach(object -> {
JSONObject jsonObject = JSONObject.parseObject(object.toString());
String userid = jsonObject.getString("userid");
TsUser userEO = tsUserService.getById(userid);
String userState = "";
if(userEO != null){
userState = "UPDATE";
}else{
userState = "ADD";
userEO = new TsUser();
}
//先获取岗位以及岗位id
//设置岗位
if (null != jsonObject.getString("title")) {
//通过岗位名称查询系统表中是否有岗位,有则设定用户的岗位为系统中的岗位,否则新增
if (null == positionMap.get(jsonObject.getString("title"))) {
TsPosition tsPosition = new TsPosition();
tsPosition.setId(String.valueOf(UUID.randomUUID()));
tsPosition.setName(jsonObject.getString("title"));
tsPositionService.addPosition(tsPosition);
//放入岗位的map集合中
positionMap.put(tsPosition.getName(), tsPosition.getId());
//放入类中
userEO.setPositionName(tsPosition.getName());
userEO.setPositionId(tsPosition.getId());
} else {
userEO.setPositionName(jsonObject.getString("title").trim());
userEO.setPositionId(positionMap.get(jsonObject.getString("title").trim()));
}
}else{
userEO.setPositionId(null);
userEO.setPositionName(null);
}
//设置其他数据
Timestamp createTime = new Timestamp(new Date().getTime());
userEO.setState(jsonObject.getString("userStatus"));
userEO.setUname(null!=jsonObject.getString("name")?jsonObject.getString("name"):"");
userEO.setCreationTime(createTime);
userEO.setUserId(jsonObject.getString("userid"));
userEO.setAccount(jsonObject.getString("userid"));
userEO.setInstitutionId(null!=jsonObject.getString("orgNumber")?jsonObject.getString("orgNumber"):"" );
userEO.setInstitutionName(null!=jsonObject.getString("orgName")?jsonObject.getString("orgName"):"" );
//2022-05-23:用户同步增加状态标识,将停用的用户过滤掉
if("1".equals(jsonObject.getString("userStatus"))){
userEO.setValidFlag(ValidFlagEnum.VALID_TRUE.getValue()+"");
userEO.setDisableFlag(ValidFlagEnum.VALID_TRUE.getValue()+"");
}else{
userEO.setValidFlag(ValidFlagEnum.VALID_FALSE.getValue()+"");
userEO.setDisableFlag(ValidFlagEnum.VALID_FALSE.getValue()+"");
}
if("ADD".equals(userState)){
addUserList.add(userEO);
}else {
upUserList.add(userEO);
}
});
}
}
if(!addUserList.isEmpty()){
logger.debug("本次新增的用户为:"+JSONObject.toJSONString(addUserList));
tsUserService.saveBatch(addUserList);
}
if(!upUserList.isEmpty()){
logger.debug("本次更新的用户为:"+JSONObject.toJSONString(upUserList));
tsUserService.updateBatchById(upUserList);
}
}else{
logger.info("本次获取用户的数据为空,原因有2种:1、没有同步数据 2、请求接口报错");
}
}catch(Exception e){
logger.error(e.getMessage(),e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return "1";
}
@Transactional(rollbackFor = {RuntimeException.class,Exception.class})
@@ -61,16 +61,12 @@ public class AskQuestionsController extends BaseController<AskQuestions> {
if(StringUtils.isBlank(askQuestions.getUserId())){
return Result.error();
}
Set<String> askIdList = askQuestionsService.getAskQuestionsPage(askQuestions);
QueryWrapper queryWrapper = askQuestionsService.getqueryWrapper(askQuestions);
//查询出所有的回答
IPage<AskQuestions> iPage = new Page<>();
iPage.setSize(askQuestions.getPageSize());
iPage.setPages(askQuestions.getPage());
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("QUESTION_TIME");
if(!askIdList.isEmpty()){
queryWrapper.in("id",askIdList);
}
//iPage.setPages(askQuestions.getPage());
iPage.setCurrent(askQuestions.getPage());
IPage<AskQuestions> page = askQuestionsService.page(iPage,queryWrapper);
if(!page.getRecords().isEmpty()){
for (AskQuestions data : page.getRecords()){
@@ -5,6 +5,7 @@ import com.adc.da.slrs.StandardQA.entity.AskQuestions;
import com.adc.da.slrs.StandardQA.entity.AskQuestionsPage;
import com.adc.da.slrs.StandardQA.entity.Reply;
import com.adc.da.util.http.ResponseMessage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -34,4 +35,7 @@ public interface AskQuestionsService extends IService<AskQuestions> {
List<Reply> getAskQuestionsByakId(String id,String state,String userId);
Set<String> getAskQuestionsPage(AskQuestionsPage askQuestions);
QueryWrapper getqueryWrapper(AskQuestionsPage askQuestions);
}
@@ -150,49 +150,89 @@ public class AskQuestionsServiceImpl extends ServiceImpl<AskQuestionsDao, AskQue
public Set<String> getAskQuestionsPage(AskQuestionsPage askQuestions) {
//当前人是法规部门 则返回未被回答的提问信息
List<String> uId = askQuestionsDao.getUId();
for (String uid : uId){
if(uid.equals(askQuestions.getUserId())){
//查询所有的问 答
List<AskQuestions> askQuestionsList = baseMapper.selectList(null);
List<Reply> repLies = replyDao.selectList(null);
List<AskQuestions> askList = new ArrayList<>();
for (AskQuestions ask: askQuestionsList){
for (Reply reply: repLies){
if(ask.getId().equals(reply.getAskId())){
askList.add(ask);
if(!uId.isEmpty()) {
for (String uid : uId) {
if (uid.equals(askQuestions.getUserId())) {
//查询所有的问 答
List<AskQuestions> askQuestionsList = baseMapper.selectList(null);
List<Reply> repLies = replyDao.selectList(null);
List<AskQuestions> askList = new ArrayList<>();
for (AskQuestions ask : askQuestionsList) {
for (Reply reply : repLies) {
if (ask.getId().equals(reply.getAskId())) {
askList.add(ask);
}
}
}
askQuestionsList.removeAll(askList.stream().distinct().collect(Collectors.toList()));
Set<String> askIdList = new HashSet<>();
//所有没有回答的问题
for (AskQuestions ask : askQuestionsList) {
askIdList.add(ask.getId());
}
return askIdList;
}
askQuestionsList.removeAll(askList.stream().distinct().collect(Collectors.toList()));
Set<String> askIdList = new HashSet<>();
//所有没有回答的问题
for (AskQuestions ask: askQuestionsList){
askIdList.add(ask.getId());
}
//查询出所有的回答
return askIdList;
}
}
// 不是法规部门 但是被邀请回答
// 不是法规部门 但是被邀请回答 和自己的提问
// 当前人的提问
Set<String> askIdList = new HashSet<>();
QueryWrapper<AskQuestions> askQuestionsQueryWrapper = new QueryWrapper<>();
askQuestionsQueryWrapper.eq("QUESTIONER",askQuestions.getUserId());
List<AskQuestions> askQuestionsList = baseMapper.selectList(askQuestionsQueryWrapper);
Set<String> askIdList = new HashSet<>();
//所有没有回答的问题
for (AskQuestions ask: askQuestionsList){
askIdList.add(ask.getId());
// 当前人的提问没有被回答的
if(!askQuestionsList.isEmpty()) {
for (AskQuestions ask :askQuestionsList) {
QueryWrapper<Reply> replyQueryWrapper = new QueryWrapper<>();
replyQueryWrapper.eq("ASK_ID",ask.getId());
List<Reply> replies = replyDao.selectList(replyQueryWrapper);
if(replies.isEmpty()){
askIdList.add(ask.getId());
}
}
}
// 邀请当前人回答
//邀请当前人回答 当前人未回答
QueryWrapper<AskUser> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("USID",askQuestions.getUserId());
List<AskUser> askUsers = askUserService.list(objectQueryWrapper);
for (AskUser askUser: askUsers){
askIdList.add(askUser.getAsdId());
if(!askUsers.isEmpty()){
for (AskUser ask :askUsers) {
QueryWrapper<Reply> replyQueryWrapper = new QueryWrapper<>();
replyQueryWrapper.eq("ASK_ID",ask.getAsdId());
replyQueryWrapper.eq("ANSWERER",askQuestions.getUserId());
List<Reply> replies = replyDao.selectList(replyQueryWrapper);
if(replies.isEmpty()){
askIdList.add(ask.getAsdId());
}
}
}
//查询出所有的回答
return askIdList;
}
@Override
public QueryWrapper getqueryWrapper(AskQuestionsPage askQuestions) {
Set<String> askIdList = getAskQuestionsPage(askQuestions);
IPage<AskQuestions> iPage = new Page<>();
iPage.setSize(askQuestions.getPageSize());
iPage.setCurrent(askQuestions.getPage());
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("QUESTION_TIME");
if(!askIdList.isEmpty()){
queryWrapper.in("id",askIdList);
}
if(StringUtils.isNotBlank(askQuestions.getClassification())){
queryWrapper.eq("CLASSIFICATION",askQuestions.getClassification());
}
if(StringUtils.isNotBlank(askQuestions.getProblemDescription())){
queryWrapper.like("PROBLEM_DESCRIPTION",askQuestions.getProblemDescription());
}
if(StringUtils.isNotBlank(askQuestions.getQuestioner())){
queryWrapper.eq("QUESTIONER",askQuestions.getQuestioner());
}
return queryWrapper;
}
public ResponseMessage selectAskReply(String id) {
ArrayList<AskQuestionsReplyVO> objects = new ArrayList<>();
@@ -69,6 +69,51 @@ public class SyncUserService {
return json;
}
public List<String> syncFotonUser2(Long chuo)throws Exception{
String appuser = "app_slrs";
String appkey = "Fxi5LHbI5yGbQQDpVp86GcCdXeC5Bjfe";
AuthUtils util = new AuthUtils(appuser, appkey, null);
List<String> json=new ArrayList<>();
byte[] cookie = null;
do {
Map<String, Object> params = new HashMap<String, Object>();
params.put("cookie", Base64.encodeBase64String(cookie));
params.put("timestamp", chuo);
// 用户参数
params.put("filter", "(userid=*)");
params.put("basedn", "ou=People,o=foton.com.cn,o=isp");
System.out.println("RequestBody:" + params.toString());
// 用户测试
String rs = util.getResponseFromServer("http://idmsync.foton.com.cn/rest/users/getUserList", params);
log.debug(rs);
JSONObject responseStr = JSON.parseObject(rs);
if(responseStr.containsKey("status") && responseStr.getBoolean("status")){
json.add(rs);
}
if (responseStr.containsKey("cookie")) {
try {
JSONArray entries = responseStr.getJSONArray("cookie");
if(entries==null){
break;
}
cookie = new byte[entries.size()];
for (int i = 0; i < entries.size(); i++) {
cookie[i] = (byte) entries.getByte(i);
}
} catch (Exception e) {
log.error(e.getMessage(),e);
if (e.getMessage().contains("is not a JSONArray")) {
cookie = null;
}
}
}
} while (cookie != null);
return json;
}
public List<String> syncFotonOrg()throws Exception{