Browse Source

订单明细查询速度优化

hu 2 years ago
parent
commit
e440d733e6
1 changed files with 8 additions and 0 deletions
  1. 8 0
      src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

+ 8 - 0
src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

@@ -618,6 +618,8 @@ public class dispatch extends Controller {
         Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderitemsid in (select sa_orderitemsid from sa_dispatch_items where sa_dispatchid="+ sa_dispatchid+")" );
         RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
         Rows rowsDispatchDetail = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t1.rowno,t2.itemname from sa_dispatch_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_dispatchid=" + sa_dispatchid);
+        Rows rowsDispatchAllDetail = dbConnect.runSqlQuery("select sum(t1.outwarehouseqty) sumoutwarehouseqty,t1.sa_orderitemsid from sa_dispatch_items t1 inner join sa_dispatch t2 on t1.sa_dispatchid=t2.sa_dispatchid and t1.siteid=t2.siteid  where t2.status in('复核','关闭','手工关闭') group by t1.sa_orderitemsid" );
+        RowsMap rowsDispatchAllDetailMap = rowsDispatchAllDetail.toRowsMap("sa_orderitemsid");
         if (!rowsDispatchDetail.isEmpty()) {
             for (Row row : rowsDispatchDetail) {
                 if (rowsMap.get(row.getString("sa_orderitemsid")).isEmpty()) {
@@ -628,6 +630,12 @@ public class dispatch extends Controller {
                     return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细的数量大于对应订单行的未发货数量,无法复核")
                             .toString();
                 }
+                if(!rowsDispatchAllDetailMap.get(row.getString("sa_orderitemsid")).isEmpty()){
+                    if ((row.getBigDecimal("qty").add(rowsDispatchAllDetailMap.get(row.getString("sa_orderitemsid")).get(0).getBigDecimal("sumoutwarehouseqty"))).compareTo(rowsMap.get(row.getString("sa_orderitemsid")).get(0).getBigDecimal("qty")) == 1) {
+                        return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细的总出库数量大于对应订单行的数量,无法复核")
+                                .toString();
+                    }
+                }
                 sqlList.add("update sa_orderitems set undeliqty=" + rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").subtract(row.getBigDecimal("qty")) + ",deliedqty=" + (row.getBigDecimal("qty").add(rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
             }
         }else {