Commit 71c8a2729d6ccd63927e69faba48c56916c01b62
1 parent
ce4e5383
油量表重复数据抛出异常
Showing
3 changed files
with
87 additions
and
5 deletions
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
| @@ -198,7 +198,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | @@ -198,7 +198,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | ||
| 198 | 198 | ||
| 199 | } | 199 | } |
| 200 | if(addList.size()>0){ | 200 | if(addList.size()>0){ |
| 201 | - new BatchSaveUtils<Ylb>().saveList(addList, Ylb.class); | 201 | + try { |
| 202 | + new BatchSaveUtils<Ylb>().saveList2(addList, Ylb.class); | ||
| 203 | + } catch (Exception e) { | ||
| 204 | + // TODO: handle exception | ||
| 205 | + if(e.getMessage().indexOf("PK_YLB_UK")>0){ | ||
| 206 | + newMap.put("fage", "存在相同数据,数据已经过滤"); | ||
| 207 | + logger.info("定时器:存在相同数据,数据已经过滤"); | ||
| 208 | + } | ||
| 209 | + } | ||
| 210 | +// new BatchSaveUtils<Ylb>().saveList(addList, Ylb.class); | ||
| 202 | } | 211 | } |
| 203 | result = "success"; | 212 | result = "success"; |
| 204 | }catch (Exception e) { | 213 | }catch (Exception e) { |
| @@ -363,7 +372,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | @@ -363,7 +372,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | ||
| 363 | } | 372 | } |
| 364 | } | 373 | } |
| 365 | if(addList.size()>0){ | 374 | if(addList.size()>0){ |
| 366 | - new BatchSaveUtils<Ylb>().saveList(addList, Ylb.class); | 375 | + try { |
| 376 | + new BatchSaveUtils<Ylb>().saveList2(addList, Ylb.class); | ||
| 377 | + } catch (Exception e) { | ||
| 378 | + // TODO: handle exception | ||
| 379 | + if(e.getMessage().indexOf("PK_YLB_UK")>0){ | ||
| 380 | + newMap.put("fage", "存在相同数据,数据已经过滤"); | ||
| 381 | + logger.info("获取:存在相同数据,数据已经过滤"); | ||
| 382 | + } | ||
| 383 | + } | ||
| 384 | + | ||
| 367 | } | 385 | } |
| 368 | 386 | ||
| 369 | if(updateList.size()>0){ | 387 | if(updateList.size()>0){ |
| @@ -372,7 +390,7 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | @@ -372,7 +390,7 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | ||
| 372 | } | 390 | } |
| 373 | } | 391 | } |
| 374 | newMap.put("status", ResponseCode.SUCCESS); | 392 | newMap.put("status", ResponseCode.SUCCESS); |
| 375 | - } catch (ParseException e) { | 393 | + } catch (Exception e) { |
| 376 | // TODO Auto-generated catch block | 394 | // TODO Auto-generated catch block |
| 377 | newMap.put("status", ResponseCode.ERROR); | 395 | newMap.put("status", ResponseCode.ERROR); |
| 378 | throw e; | 396 | throw e; |
| @@ -778,7 +796,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | @@ -778,7 +796,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS | ||
| 778 | t.setYh(0.0); | 796 | t.setYh(0.0); |
| 779 | if(!(t.getSsgsdm().equals("") || t.getFgsdm().equals(""))){ | 797 | if(!(t.getSsgsdm().equals("") || t.getFgsdm().equals(""))){ |
| 780 | t.setCreatetime(new Date()); | 798 | t.setCreatetime(new Date()); |
| 781 | - repository.save(t); | 799 | + try { |
| 800 | + repository.save(t); | ||
| 801 | + } catch (Exception e) { | ||
| 802 | + // TODO: handle exception | ||
| 803 | + if(e.getMessage().indexOf("PK_YLB_UK")>0){ | ||
| 804 | + newMap.put("fage", "存在相同数据,数据已经过滤"); | ||
| 805 | + logger.info("核对有存油没里程:存在相同数据,数据已经过滤"); | ||
| 806 | + } | ||
| 807 | + } | ||
| 808 | + | ||
| 782 | /*if(null!=cyl){ | 809 | /*if(null!=cyl){ |
| 783 | cyl.setCyl(Arith.add(t.getJzl(), t.getCzyl())); | 810 | cyl.setCyl(Arith.add(t.getJzl(), t.getCzyl())); |
| 784 | cyl.setUpdatetime(y1.getYyrq()); | 811 | cyl.setUpdatetime(y1.getYyrq()); |
src/main/java/com/bsth/service/report/impl/CulateMileageServiceImpl.java
| @@ -222,7 +222,21 @@ public class CulateMileageServiceImpl implements CulateMileageService{ | @@ -222,7 +222,21 @@ public class CulateMileageServiceImpl implements CulateMileageService{ | ||
| 222 | if (!isInOut(scheduleRealInfo)) { | 222 | if (!isInOut(scheduleRealInfo)) { |
| 223 | if(!scheduleRealInfo.isDestroy()){ | 223 | if(!scheduleRealInfo.isDestroy()){ |
| 224 | if(scheduleRealInfo.isSflj()){ | 224 | if(scheduleRealInfo.isSflj()){ |
| 225 | - ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc()); | 225 | + Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); |
| 226 | + if(childTaskPlans.isEmpty()){ | ||
| 227 | + ljgl=Arith.add(ljgl,scheduleRealInfo.getJhlc()==null?0:scheduleRealInfo.getJhlc()); | ||
| 228 | + }else{ | ||
| 229 | + Iterator<ChildTaskPlan> it = childTaskPlans.iterator(); | ||
| 230 | + while (it.hasNext()) { | ||
| 231 | + ChildTaskPlan childTaskPlan = it.next(); | ||
| 232 | + if(childTaskPlan.getMileageType().equals("service")){ | ||
| 233 | + if (!childTaskPlan.isDestroy()) { | ||
| 234 | + Float jhgl=childTaskPlan.getMileage()==null?0:childTaskPlan.getMileage(); | ||
| 235 | + ljgl=Arith.add(ljgl,jhgl); | ||
| 236 | + } | ||
| 237 | + } | ||
| 238 | + } | ||
| 239 | + } | ||
| 226 | }else{ | 240 | }else{ |
| 227 | Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); | 241 | Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); |
| 228 | if(!childTaskPlans.isEmpty()){ | 242 | if(!childTaskPlans.isEmpty()){ |
src/main/java/com/bsth/util/BatchSaveUtils.java
| @@ -99,6 +99,47 @@ public class BatchSaveUtils<T> { | @@ -99,6 +99,47 @@ public class BatchSaveUtils<T> { | ||
| 99 | return 0; | 99 | return 0; |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | + public int saveList2(List<T> list, Class<T> clazz) throws Exception{ | ||
| 103 | + //获取泛型 T 的字节码 | ||
| 104 | + Table table = clazz.getAnnotation(Table.class); | ||
| 105 | + if(null == table){ | ||
| 106 | + logger.error("找不到" + clazz.getSimpleName() + "类的表映射"); | ||
| 107 | + return -1; | ||
| 108 | + } | ||
| 109 | + List<Field> fs = fieldFilter(clazz.getDeclaredFields()); | ||
| 110 | + String sql = createSql(table, fs); | ||
| 111 | + logger.info(sql); | ||
| 112 | + | ||
| 113 | + //每5000条批量入库一次 | ||
| 114 | + Connection conn = null; | ||
| 115 | + PreparedStatement ps = null; | ||
| 116 | + try{ | ||
| 117 | + conn = getConn(); | ||
| 118 | + conn.setAutoCommit(false); | ||
| 119 | + ps = conn.prepareStatement(sql); | ||
| 120 | + | ||
| 121 | + int fsize = fs.size(), count = 0; | ||
| 122 | + for(T t : list){ | ||
| 123 | + count ++; | ||
| 124 | + for(int i = 0; i < fsize; i ++){ | ||
| 125 | + ps.setObject(i + 1, fs.get(i).get(t)); | ||
| 126 | + } | ||
| 127 | + | ||
| 128 | + ps.addBatch(); | ||
| 129 | + if(count % batchSize == 0){ | ||
| 130 | + ps.executeBatch(); | ||
| 131 | + conn.commit(); | ||
| 132 | + ps.clearBatch(); | ||
| 133 | + } | ||
| 134 | + } | ||
| 135 | + ps.executeBatch(); | ||
| 136 | + conn.commit(); | ||
| 137 | + }finally { | ||
| 138 | + closeAll(conn, ps, null); | ||
| 139 | + } | ||
| 140 | + | ||
| 141 | + return 0; | ||
| 142 | + } | ||
| 102 | public String createSql(Table table, List<Field> fs){ | 143 | public String createSql(Table table, List<Field> fs){ |
| 103 | String sqlBefore = "insert into " + table.name() + "(" | 144 | String sqlBefore = "insert into " + table.name() + "(" |
| 104 | ,sqlValues = " values("; | 145 | ,sqlValues = " values("; |