|
@@ -46,6 +46,8 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -203,28 +205,44 @@ public class MesNoticeServiceImpl extends SuperServiceImpl<MesNoticeMapper, MesN
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public String addNoticeMore(List<MesNotice> models, boolean isExist) {
|
|
|
+ public String addNoticeMore(List<MesNotice> models, boolean isExist){
|
|
|
log.info("==============新增notice数据开始====================={}", JSONObject.toJSONString(models));
|
|
|
|
|
|
StringBuffer existMsg = new StringBuffer();
|
|
|
List<MesNotice> needAddMesNotice = new ArrayList<>();
|
|
|
List<MesNotice> needUpdateMesNotice = new ArrayList<>();
|
|
|
-
|
|
|
for (MesNotice model : models) {
|
|
|
- MesNotice mesNotice = baseMapper.selectOne(Wraps.<MesNotice>lbQ().eq(MesNotice::getCheckPar, model.getCheckPar()));
|
|
|
- if (mesNotice == null) {
|
|
|
+ MesNotice mesNotice = null;
|
|
|
+ List<MesNotice> mesNotices = baseMapper.selectList(Wraps.<MesNotice>lbQ().likeRight(MesNotice::getCheckPar, model.getCheckPar()).orderByDesc(MesNotice::getCreateTime));
|
|
|
+
|
|
|
+ if (mesNotices.isEmpty()) {
|
|
|
MesNotice newModel = new MesNotice();
|
|
|
BeanUtils.copyProperties(model, newModel);
|
|
|
needAddMesNotice.add(newModel);
|
|
|
} else if (isExist) {
|
|
|
- if ("1".equals(mesNotice.getStatus())) {
|
|
|
- model.setId(mesNotice.getId());
|
|
|
- existMsg.append("\n此订单已存在:" + model.getOrderNo());
|
|
|
- } else {
|
|
|
- existMsg.append("\n此订单已存在:" + model.getOrderNo());
|
|
|
+ mesNotice = mesNotices.get(0);
|
|
|
+ // 判断时间是否大于半小时,是的话可以新增,否则不允许
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String startTime = mesNotices.get(0).getCreateTime().format(formatter);
|
|
|
+ long timeDifference = new Date().getTime() - DateUtil.stringToDate(startTime).getTime();
|
|
|
+ long diffMinute = timeDifference / 1000 / 60;
|
|
|
+ if(diffMinute>30){// 超过半小时可以进行重新接受
|
|
|
+ MesNotice newModel = new MesNotice();
|
|
|
+ BeanUtils.copyProperties(model, newModel);
|
|
|
+ newModel.setCheckPar(newModel.getCheckPar()+"&"+(mesNotices.size()));
|
|
|
+ newModel.setOrderNo(newModel.getOrderNo()+"/repeat_"+(mesNotices.size()));
|
|
|
+ needAddMesNotice.add(newModel);
|
|
|
+ }else {
|
|
|
+ if ("1".equals(mesNotice.getStatus())) { //订单未处理,标记为重复推送
|
|
|
+ model.setId(mesNotice.getId());
|
|
|
+ existMsg.append("\n此订单已存在:" + model.getOrderNo());
|
|
|
+ } else {
|
|
|
+ existMsg.append("\n此订单已存在:" + model.getOrderNo());
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
// 以传输的数据为主
|
|
|
+ mesNotice = mesNotices.get(0);
|
|
|
model.setId(mesNotice.getId());
|
|
|
BeanUtils.copyProperties(model, mesNotice);
|
|
|
needUpdateMesNotice.add(mesNotice);
|