|
@@ -51,6 +51,7 @@ import org.jeecg.modules.billet.storageBill.service.IStorageBillService;
|
|
|
import org.jeecg.modules.carUnit.service.ISysDictService;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.dao.DuplicateKeyException;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
@@ -654,12 +655,27 @@ public class BilletOriginalProductRecordController extends JeecgController<Bille
|
|
|
billetOriginalProductRecords.add(billetOriginalProductRecord);
|
|
|
});
|
|
|
log.info("钢坯原始生产记录信息: " + JSON.toJSON(billetOriginalProductRecords));
|
|
|
- try {
|
|
|
- // 批量保存
|
|
|
- billetOriginalProductRecordService.saveBatch(billetOriginalProductRecords);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("保存钢坯原始生产记录失败", e);
|
|
|
- return Result.error("钢坯原始生产记录数据保存失败,请重试");
|
|
|
+
|
|
|
+ // 在批量保存前,过滤掉已存在的炉号记录
|
|
|
+ List<BilletOriginalProductRecord> finalRecords = billetOriginalProductRecords.stream()
|
|
|
+ .filter(record -> {
|
|
|
+ // 使用 getOne 方法检查是否存在相同记录(铸机号、炉号、班次、班组均相同)
|
|
|
+ LambdaQueryWrapper<BilletOriginalProductRecord> checkWrapper = new LambdaQueryWrapper<>();
|
|
|
+ checkWrapper.eq(BilletOriginalProductRecord::getCcmNo, record.getCcmNo())
|
|
|
+ .eq(BilletOriginalProductRecord::getHeatNo, record.getHeatNo())
|
|
|
+ .eq(BilletOriginalProductRecord::getShift, record.getShift())
|
|
|
+ .eq(BilletOriginalProductRecord::getShiftGroup, record.getShiftGroup())
|
|
|
+ .last("LIMIT 1"); // 只查询一条记录,提高性能
|
|
|
+ // 如果 getOne 结果为 null,表示记录不存在,保留该记录
|
|
|
+ return billetOriginalProductRecordService.getOne(checkWrapper, false) == null;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ if(oConvertUtils.listIsNotEmpty(finalRecords)){
|
|
|
+ try {
|
|
|
+ // 批量保存
|
|
|
+ billetOriginalProductRecordService.saveBatch(finalRecords);
|
|
|
+ } catch (DuplicateKeyException e) {
|
|
|
+ log.error("炉号重复插入:{}", JSON.toJSONString(billetOriginalProductRecords), e);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
QueryWrapper<BilletOriginalProductRecord> queryWrapper3 = new QueryWrapper<>();
|