|
@@ -680,30 +680,42 @@ public class MESHelperServiceImpl implements MESHelperService {
|
|
|
baseDao.execute("insert into array(ARRAYID, ARRAYSTATUS, ARRAYBARCODE, MACHINEID)" +
|
|
baseDao.execute("insert into array(ARRAYID, ARRAYSTATUS, ARRAYBARCODE, MACHINEID)" +
|
|
|
"values('"+ARRAYID+"','"+ArrayStatus+"','"+ArrayBarCode+"','"+ID+"')"
|
|
"values('"+ARRAYID+"','"+ArrayStatus+"','"+ArrayBarCode+"','"+ID+"')"
|
|
|
);
|
|
);
|
|
|
- for (int j=0;j<Pads.size();j++){
|
|
|
|
|
- JSONObject map2=Pads.getJSONObject(j);
|
|
|
|
|
- String ComponentID=map2.get("ComponentID").toString();
|
|
|
|
|
- String Type=map2.get("Type").toString();
|
|
|
|
|
- String PerArea=map2.get("PerArea").toString();
|
|
|
|
|
- String Height=map2.get("Height").toString();
|
|
|
|
|
- String PerVolume=map2.get("PerVolume").toString();
|
|
|
|
|
- String XOffset=map2.get("XOffset").toString();
|
|
|
|
|
- String YOffset=map2.get("YOffset").toString();
|
|
|
|
|
- String PadSizeX=map2.get("PadSizeX").toString();
|
|
|
|
|
- String PadSizeY=map2.get("PadSizeY").toString();
|
|
|
|
|
- String Area=map2.get("Area").toString();
|
|
|
|
|
- String PerHeight=map2.get("PerHeight").toString();
|
|
|
|
|
- String Volume=map2.get("Volume").toString();
|
|
|
|
|
- String Result=map2.get("Result").toString();
|
|
|
|
|
- String Errcode=map2.get("Errcode").toString();
|
|
|
|
|
- String PinNum=map2.get("PinNum").toString();
|
|
|
|
|
- String Barcode=map2.get("Barcode").toString();
|
|
|
|
|
- String Date=map2.get("Date").toString();
|
|
|
|
|
- String Time=map2.get("Time").toString();
|
|
|
|
|
- int PADID=baseDao.getSeqId("pad_seq");
|
|
|
|
|
- baseDao.execute("insert into pad(PADID, COMPONENTID, TYPE, PERAREA, HEIGHT, PERVOLUME, XOFFSET, YOFFSET, PADSIZEX, PADSIZEY, AREA, PERHEIGHT, VOLUME, RESULT, ERRCODE, PINNUM, BARCODE, DATE1, TIME, ARRAYID, INDATE)" +
|
|
|
|
|
- "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate)",PADID, ComponentID, Type, PerArea, Height, PerVolume,
|
|
|
|
|
- XOffset, YOffset, PadSizeX, PadSizeY, Area, PerHeight, Volume, Result, Errcode, PinNum, Barcode, Date, Time, ARRAYID);
|
|
|
|
|
|
|
+ int padCount = Pads.size();
|
|
|
|
|
+ if (padCount > 0) {
|
|
|
|
|
+ // 批量插入 Pads:PADID 由 pad_seq.nextval 在 SQL 内直接分配,避免逐条获取序列
|
|
|
|
|
+ String padSql = "insert into pad(PADID, COMPONENTID, TYPE, PERAREA, HEIGHT, PERVOLUME, XOFFSET, YOFFSET, PADSIZEX, PADSIZEY, AREA, PERHEIGHT, VOLUME, RESULT, ERRCODE, PINNUM, BARCODE, DATE1, TIME, ARRAYID, INDATE)" +
|
|
|
|
|
+ "values(pad_seq.nextval,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate)";
|
|
|
|
|
+ List<Object[]> batchArgs = new ArrayList<Object[]>(padCount);
|
|
|
|
|
+ for (int j=0;j<padCount;j++){
|
|
|
|
|
+ JSONObject map2=Pads.getJSONObject(j);
|
|
|
|
|
+ batchArgs.add(new Object[]{
|
|
|
|
|
+ map2.optString("ComponentID"),
|
|
|
|
|
+ map2.optString("Type"),
|
|
|
|
|
+ map2.optString("PerArea"),
|
|
|
|
|
+ map2.optString("Height"),
|
|
|
|
|
+ map2.optString("PerVolume"),
|
|
|
|
|
+ map2.optString("XOffset"),
|
|
|
|
|
+ map2.optString("YOffset"),
|
|
|
|
|
+ map2.optString("PadSizeX"),
|
|
|
|
|
+ map2.optString("PadSizeY"),
|
|
|
|
|
+ map2.optString("Area"),
|
|
|
|
|
+ map2.optString("PerHeight"),
|
|
|
|
|
+ map2.optString("Volume"),
|
|
|
|
|
+ map2.optString("Result"),
|
|
|
|
|
+ map2.optString("Errcode"),
|
|
|
|
|
+ map2.optString("PinNum"),
|
|
|
|
|
+ map2.optString("Barcode"),
|
|
|
|
|
+ map2.optString("Date"),
|
|
|
|
|
+ map2.optString("Time"),
|
|
|
|
|
+ ARRAYID
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ // 每批 1000 条执行批量插入,减少单批过大导致的内存/锁开销
|
|
|
|
|
+ int batchSize = 1000;
|
|
|
|
|
+ for (int from=0; from<batchArgs.size(); from+=batchSize){
|
|
|
|
|
+ int to = Math.min(from + batchSize, batchArgs.size());
|
|
|
|
|
+ baseDao.getJdbcTemplate().batchUpdate(padSql, batchArgs.subList(from, to));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
rmap.put("EventCode","0");
|
|
rmap.put("EventCode","0");
|