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 | 198 | |
| 199 | 199 | } |
| 200 | 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 | 212 | result = "success"; |
| 204 | 213 | }catch (Exception e) { |
| ... | ... | @@ -363,7 +372,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS |
| 363 | 372 | } |
| 364 | 373 | } |
| 365 | 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 | 387 | if(updateList.size()>0){ |
| ... | ... | @@ -372,7 +390,7 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS |
| 372 | 390 | } |
| 373 | 391 | } |
| 374 | 392 | newMap.put("status", ResponseCode.SUCCESS); |
| 375 | - } catch (ParseException e) { | |
| 393 | + } catch (Exception e) { | |
| 376 | 394 | // TODO Auto-generated catch block |
| 377 | 395 | newMap.put("status", ResponseCode.ERROR); |
| 378 | 396 | throw e; |
| ... | ... | @@ -778,7 +796,16 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS |
| 778 | 796 | t.setYh(0.0); |
| 779 | 797 | if(!(t.getSsgsdm().equals("") || t.getFgsdm().equals(""))){ |
| 780 | 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 | 809 | /*if(null!=cyl){ |
| 783 | 810 | cyl.setCyl(Arith.add(t.getJzl(), t.getCzyl())); |
| 784 | 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 | 222 | if (!isInOut(scheduleRealInfo)) { |
| 223 | 223 | if(!scheduleRealInfo.isDestroy()){ |
| 224 | 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 | 240 | }else{ |
| 227 | 241 | Set<ChildTaskPlan> childTaskPlans = scheduleRealInfo.getcTasks(); |
| 228 | 242 | if(!childTaskPlans.isEmpty()){ | ... | ... |
src/main/java/com/bsth/util/BatchSaveUtils.java
| ... | ... | @@ -99,6 +99,47 @@ public class BatchSaveUtils<T> { |
| 99 | 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 | 143 | public String createSql(Table table, List<Field> fs){ |
| 103 | 144 | String sqlBefore = "insert into " + table.name() + "(" |
| 104 | 145 | ,sqlValues = " values("; | ... | ... |