recordList.forEach(record -> {
String CASE_NBR = record.getStr("CASE_NBR");
Material material = cacheService.getMaterialById(CASE_NBR);
if (material == null) {
material = new Material()
.setSpdCode(CASE_NBR)
.setDeptId(record.getStr("DEPOT_ID"))
.setOrderCode(record.getStr("ORDER_CODE"));
saveList.add(material);
} else if (record.getStr("CREATEDATE").compareTo(material.getCreateDate()) > 0) {
material.setDeptId(record.getStr("DEPOT_ID"))
.setOrderCode(record.getStr("ORDER_CODE"));
updateList.add(material);
}
cacheService.removeCache(CacheBase, MaterialById, CASE_NBR);
});
if (!saveList.isEmpty()) {
Db.batchSave(saveList, batchSize);
}
if (!updateList.isEmpty()) {
Db.batchUpdate(updateList, batchSize);
}
List<Material> materialList = new ArrayList<>();
materialList.addAll(saveList);
materialList.addAll(updateList);
materialList.forEach(material -> {
Order order = cacheService.getOrderByCode(material.getOrderCode());
if (order == null) {
Order newOrder = new Order();
newOrder.setId(IDGenerator.makeId());
newOrder.setDeptId(material.getDeptId());
newOrder.setCode(material.getOrderCode());
newOrder.setCreateDate(DateUtil.now());
// 初始状态为待复核
newOrder.setState(SysConstant.StateNeedConfirm);
newOrder.save();
}
});
if (true) {
List<Tag> tagSaveList = new ArrayList<>();
List<Tag> tagUpdateList = new ArrayList<>();
materialList.forEach(material -> {
Tag tag = cacheService.getTagById(material.getSpdCode());
if (tag == null) {
tag = new Tag()
.setSpdCode(material.getSpdCode())
.setEpc(null)
.setAccept(TagNo)
.setGoodsId(material.getGoodsId())
.setDeptId(material.getDeptId())
.setOrderCode(material.getOrderCode())
.setBatchNo(material.getBatchNo());
tagSaveList.add(tag);
} else {
tag.setGoodsId(material.getGoodsId())
.setDeptId(material.getDeptId())
.setOrderCode(material.getOrderCode())
.setBatchNo(material.getBatchNo())
.setExpireDate(material.getExpireDate());
tagUpdateList.add(tag);
}
cacheService.removeCache(CacheCom, TagById, material.getSpdCode());
});
if (!tagSaveList.isEmpty()) {
Db.batchSave(tagSaveList, batchSize);
}
if (!tagUpdateList.isEmpty()) {
Db.batchUpdate(tagUpdateList, batchSize);
}
}
当前这段代码是放到jfinal 定时任务中的,15分钟执行一次,昨天突然出现这种情况,
saveList 长度也就1000多,但是程序不执行
List<Material> materialList = new ArrayList<>();
以下的内容了,等过几次定时任务,才会执行以下的代码,这其中会出现丢数据的情况,就是
newOrder.save();
Db.batchSave(tagSaveList, batchSize);
都没有保存到数据。
这个情况,昨天之前都是好的,昨天突然发生的。这种情况下,请问能加事务解决这个问题吗?