Selaa lähdekoodia

配件申请单明细查询逻辑优化

hu 1 päivä sitten
vanhempi
commit
f1d298a259

+ 26 - 26
src/custom/restcontroller/webmanage/sale/tpartreimbursement/tpartreimbursementdetail.java

@@ -47,45 +47,45 @@ public class tpartreimbursementdetail extends Controller {
                 where.append(")");
             }
         }
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "itemid","price","amount","rowno","sa_orderitemsid","sa_orderid");
+
+        QuerySQL querySQLdatails_jxs = SQLFactory.createQuerySQL(this, "sa_orderitems", "sa_orderitemsid");
+        querySQLdatails_jxs.setTableAlias("t1");
+        querySQLdatails_jxs.addJoinTable(JOINTYPE.inner,"sa_order", "t2", "t1.sa_orderid = t2.sa_orderid AND t1.siteid = t2.siteid");
+        querySQLdatails_jxs.setSiteid(siteid);
+        querySQLdatails_jxs.setWhere("t1.billingstatus='保内收费'");
+        querySQLdatails_jxs.setWhere("t2.sys_enterpriseid",sys_enterpriseid);
+        Rows rowsdatails_jxs = querySQLdatails_jxs.query();
+
+        QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
+        tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(qty)");
+        tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rowsdatails_jxs.toArrayList("sa_orderitemsid"));
+        tpartreimbursementdetailQuery.addGroupBy("sa_orderitemsid");
+
+
+        QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
+        orderitemsQuery.setTableAlias("t1");
+        orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
+        orderitemsQuery.setWhere("t1.sa_orderitemsid", rowsdatails_jxs.toArrayList("sa_orderitemsid"));
+        orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
+
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "itemid","price","rowno","sa_orderitemsid","sa_orderid");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.inner,"sa_order", "t2", "t1.sa_orderid = t2.sa_orderid AND t1.siteid = t2.siteid", "sonum");
         querySQL.addJoinTable(JOINTYPE.left,"plm_item", "t3", "t1.itemid = t3.itemid AND t1.siteid = t3.siteid", "itemno","itemname","model","spec");
+        querySQL.addJoinTable(JOINTYPE.left,orderitemsQuery, "t4", "t4.sa_orderitemsid = t1.sa_orderitemsid AND t4.siteid = t1.siteid", "qty");
         querySQL.setSiteid(siteid);
-        querySQL.setWhere("t1.billingstatus='保内收费'");
+        querySQL.setWhere("t1.billingstatus='保内收费' and t4.qty>0");
         if(!tpartreimbursementRows.get(0).getBoolean("createflag")){
             querySQL.setWhere("ifnull(t1.tobeoffqty,0)>ifnull(t1.verifiedqty,0) and ifnull(t1.tobeoffqty,0)>0");
         }
 
         querySQL.setWhere("t2.sys_enterpriseid",sys_enterpriseid);
         querySQL.setWhere(where.toString());
-        querySQL.addQueryFields("qty","ifnull(t1.tobeoffqty,0)");
+        querySQL.addQueryFields("amount","t4.qty*t1.price,2)");
         querySQL.setOrderBy("t1.rowno asc");
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
-        if(rows.isNotEmpty()){
-            QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
-            tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(qty)");
-            tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rows.toArrayList("sa_orderitemsid"));
-            tpartreimbursementdetailQuery.addGroupBy("sa_orderitemsid");
-
-
-            QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
-            orderitemsQuery.setTableAlias("t1");
-            orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
-            orderitemsQuery.setWhere("t1.sa_orderitemsid", rows.toArrayList("sa_orderitemsid"));
-            orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
-            Rows rows1 = orderitemsQuery.query();
-            RowsMap rowsMap= rows1.toRowsMap("sa_orderitemsid");
-            for(Row row :rows){
-                if(rowsMap.containsKey(row.getString("sa_orderitemsid"))){
-                    if(!tpartreimbursementRows.get(0).getBoolean("createflag")){
-                        row.put("qty",rowsMap.get(row.getString("sa_orderitemsid")).get(0).getBigDecimal("qty"));
-                    }
-
-                }
-            }
-        }
 
 
         return getSucReturnObject().setData(rows).toString();