Files
msgexchange-api/src/main/java/com/gzzn/omms/msgexchangeapi/service/CminmsgServiceImpl.java
T

115 lines
3.3 KiB
Java
Raw Normal View History

2018-11-28 20:32:19 +08:00
package com.gzzn.omms.msgexchangeapi.service;
2018-11-29 13:33:46 +08:00
import java.util.Collections;
2018-11-28 20:32:19 +08:00
import java.util.Date;
2018-11-29 13:33:46 +08:00
import java.util.List;
2018-12-03 10:44:14 +08:00
import java.util.Optional;
import java.util.stream.Collectors;
2018-11-28 20:32:19 +08:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
2018-11-28 20:32:19 +08:00
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gzzn.omms.msgexchangeapi.dao.CminmsgDao;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.Msg;
2018-11-28 20:32:19 +08:00
@Service("cminmsgService")
2018-11-28 20:32:19 +08:00
public class CminmsgServiceImpl implements ICminmsgService {
private static Logger logger = LoggerFactory.getLogger(CminmsgServiceImpl.class);
2018-11-28 20:32:19 +08:00
@Autowired
private CminmsgDao cminmsgDao;
2018-12-03 10:44:14 +08:00
@Autowired
IExchangeService exchangeService;
2018-11-28 20:32:19 +08:00
@Override
public Cminmsg sendXmlMsg(String xmlMsg) {
Cminmsg cminmsg = new Cminmsg();
cminmsg.setCminmsgsClobMsg(xmlMsg);
cminmsg.setCminmsgsDateReceived(new Date());
Cminmsg rt = cminmsgDao.save(cminmsg);
return rt;
}
2018-11-29 13:33:46 +08:00
@Override
public List<Cminmsg> getNewMsgsAfterDate(Date afterdate) {
List<Cminmsg> lsCminmsgs = cminmsgDao.findByCminmsgsDateReceivedAfterOrderByCminmsgsDateReceived(afterdate);
if(null == lsCminmsgs)
{
return Collections.emptyList();
}
return lsCminmsgs;
} //end function
@Override
public List<Cminmsg> getNewMsgsAfterId(Long id) {
List<Cminmsg> lsCminmsgs = cminmsgDao.findByCminmsgsIdGreaterThanAndCminmsgsDateProcessedIsNull(id);
2018-11-29 13:33:46 +08:00
if(null == lsCminmsgs)
{
return Collections.emptyList();
}
return lsCminmsgs;
}
2018-12-03 10:44:14 +08:00
@Override
public Optional<Cminmsg> getRespSchdCminmsg(Date date,Integer tryTimes,Long intervalMs) {
Optional<Cminmsg> opCminmsg = Optional.empty();
Integer currentTimes=0;//当前尝试次数
while (currentTimes < tryTimes) {
currentTimes++;
List<Cminmsg> lsCminmsgs = getNewMsgsAfterDate(date);
opCminmsg = lsCminmsgs
.stream()
.filter(x->{
String msgBlob = x.getCminmsgsClobMsg();
Msg msg = exchangeService.xmlstrToObject(msgBlob, Msg.class);
String type = msg.getMeta().getType();
String subType = msg.getMeta().getStyp();
return type.equals("SCHD") && subType.equals("RESP");
})
.findFirst();
//
if(opCminmsg.isPresent())
{
break;
}
//等待xx秒继续循环过程
try {
Thread.sleep(intervalMs);
} catch (InterruptedException e) {
logger.warn("Thread.sleep:暂停线程异常");
}
}//end while
2018-12-03 10:44:14 +08:00
return opCminmsg;
}//end function
@Override
public List<Cminmsg> updateBatchProcessed(List<Cminmsg> lsCminmsgs) {
//
List<Long> ids = lsCminmsgs.stream().map(node->{
return node.getCminmsgsId();
}).collect(Collectors.toList());
List<Cminmsg> lsCmins = (List<Cminmsg>) cminmsgDao.findAll(ids);
List<Cminmsg> lsCminsProcessed = lsCmins.stream().map(node->{
node.setCminmsgsDateProcessed(new Date());
return node;
}).collect(Collectors.toList());
return (List<Cminmsg>) cminmsgDao.save(lsCminsProcessed);
}//end function
2018-11-28 20:32:19 +08:00
}