ソースを参照

工厂代发货明细查询优化

沈静伟 2 年 前
コミット
1c8acd621e

BIN
lib/yos.core-2.0.2-sources.jar


BIN
lib/yos.core-2.0.2.jar


+ 19 - 5
src/custom/restcontroller/webmanage/sale/databoard/SQL/工厂待发合计金额及数量查询.sql

@@ -1,5 +1,19 @@
-	select  sum(t1.qty-ifnull(t3.sumoutwarehouseqty,0)) sumundeliqty,sum((t1.qty-ifnull(t3.sumoutwarehouseqty,0))*t1.price) sumundeliamount from sa_orderitems t1
-	inner join sa_order t2 on t1.sa_orderid=t2.sa_orderid and t1.siteid=t2.siteid
-	left join (select t1.sa_orderitemsid,t1.siteid,sum(ifnull(t1.outwarehouseqty,0)) sumoutwarehouseqty from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid group by t1.sa_orderitemsid,            t1.siteid) t3 on t1.sa_orderitemsid=t3.sa_orderitemsid and t1.siteid=t3.siteid
-	left join plm_item t4 on t1.itemid=t4.itemid and t1.siteid=t4.siteid
-	where t2.status='审核' and t1.siteid=$siteid$ and $where$ and t1.qty-ifnull(t3.sumoutwarehouseqty,0)>0
+select sum(t1.qty - ifnull(t3.sumoutwarehouseqty, 0))              sumundeliqty,
+       sum((t1.qty - ifnull(t3.sumoutwarehouseqty, 0)) * t1.price) sumundeliamount
+from sa_orderitems t1
+         inner join sa_order t2 on t1.sa_orderid = t2.sa_orderid and t1.siteid = t2.siteid
+         left join (select t1.sa_orderitemsid, t1.siteid, sum(t1.outwarehouseqty) sumoutwarehouseqty
+                    from sa_dispatch_items t1
+                             inner join sa_orderitems t2
+                                        on t1.sa_orderitemsid = t2.sa_orderitemsid and t1.siteid = t2.siteid
+                             inner join sa_dispatch t3 on t1.siteid = t3.siteid and t3.sa_dispatchid = t1.sa_dispatchid
+                    where t1.outwarehouseqty > 0
+                      and t1.siteid = $siteid$
+                      and $where2$
+                    group by t1.sa_orderitemsid, t1.siteid) t3
+                   on t1.sa_orderitemsid = t3.sa_orderitemsid and t1.siteid = t3.siteid
+         left join plm_item t4 on t1.itemid = t4.itemid and t1.siteid = t4.siteid
+where t2.status = '审核'
+  and t1.siteid = $siteid$
+  and $where$
+  and t1.qty - ifnull(t3.sumoutwarehouseqty, 0) > 0

+ 24 - 5
src/custom/restcontroller/webmanage/sale/databoard/SQL/工厂待发明细查询.sql

@@ -1,5 +1,24 @@
-select t2.sonum,t2.billdate,t4.itemno,t4.itemname,t1.price,t1.qty-ifnull(t3.sumoutwarehouseqty,0) undeliqty,(t1.qty-ifnull(t3.sumoutwarehouseqty,0))*t1.price undeliamount from sa_orderitems t1
-            inner join sa_order t2 on t1.sa_orderid=t2.sa_orderid and t1.siteid=t2.siteid
-						left join (select t1.sa_orderitemsid,t1.siteid,sum(ifnull(t1.outwarehouseqty,0)) sumoutwarehouseqty from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid group by t1.sa_orderitemsid,            t1.siteid) t3 on t1.sa_orderitemsid=t3.sa_orderitemsid and t1.siteid=t3.siteid
-						left join plm_item t4 on t1.itemid=t4.itemid and t1.siteid=t4.siteid
-						where t2.status='审核' and t1.siteid=$siteid$ and $where$ and t1.qty-ifnull(t3.sumoutwarehouseqty,0)>0
+select t2.sonum,
+       t2.billdate,
+       t4.itemno,
+       t4.itemname,
+       t1.price,
+       t1.qty - ifnull(t3.sumoutwarehouseqty, 0)              undeliqty,
+       (t1.qty - ifnull(t3.sumoutwarehouseqty, 0)) * t1.price undeliamount
+from sa_orderitems t1
+         inner join sa_order t2 on t1.sa_orderid = t2.sa_orderid and t1.siteid = t2.siteid
+         left join (select t1.sa_orderitemsid, t1.siteid, sum(t1.outwarehouseqty) sumoutwarehouseqty
+                    from sa_dispatch_items t1
+                             inner join sa_orderitems t2
+                                        on t1.sa_orderitemsid = t2.sa_orderitemsid and t1.siteid = t2.siteid
+                             inner join sa_dispatch t3 on t1.siteid = t3.siteid and t3.sa_dispatchid = t1.sa_dispatchid
+                    where t1.outwarehouseqty > 0
+                      and t1.siteid = $siteid$
+                      and $where2$
+                    group by t1.sa_orderitemsid, t1.siteid) t3
+                   on t1.sa_orderitemsid = t3.sa_orderitemsid and t1.siteid = t3.siteid
+         left join plm_item t4 on t1.itemid = t4.itemid and t1.siteid = t4.siteid
+where t2.status = '审核'
+  and t1.siteid = $siteid$
+  and $where$
+  and t1.qty - ifnull(t3.sumoutwarehouseqty, 0) > 0

+ 45 - 43
src/custom/restcontroller/webmanage/sale/databoard/databoard.java

@@ -56,37 +56,36 @@ public class databoard extends Controller {
         String enddate2 = "";
 
 
-
         switch (datetype) {
             case "月":
                 begindate = getMonthFirstDay();
-                begindate1=caluteDate(Calendar.MONTH,begindate);
-                begindate2=caluteDate(Calendar.YEAR,begindate);
+                begindate1 = caluteDate(Calendar.MONTH, begindate);
+                begindate2 = caluteDate(Calendar.YEAR, begindate);
                 enddate = getMonthLastDay();
-                enddate1= caluteDate(Calendar.MONTH,enddate);
-                enddate2= caluteDate(Calendar.YEAR,enddate);
+                enddate1 = caluteDate(Calendar.MONTH, enddate);
+                enddate2 = caluteDate(Calendar.YEAR, enddate);
 
                 break;
             case "年":
                 begindate = new SimpleDateFormat("yyyy").format(new Date()) + "-01-01";
-                begindate1=caluteDate(Calendar.YEAR,begindate);
+                begindate1 = caluteDate(Calendar.YEAR, begindate);
                 enddate = new SimpleDateFormat("yyyy").format(new Date()) + "-12-31";
-                enddate1= caluteDate(Calendar.YEAR,enddate);
+                enddate1 = caluteDate(Calendar.YEAR, enddate);
                 break;
             case "日":
                 begindate = sdf.format(new Date().getTime());
-                begindate1=caluteDate(Calendar.DAY_OF_MONTH,begindate);
+                begindate1 = caluteDate(Calendar.DAY_OF_MONTH, begindate);
                 enddate = sdf.format(new Date().getTime());
-                enddate1= caluteDate(Calendar.DAY_OF_MONTH,enddate);
+                enddate1 = caluteDate(Calendar.DAY_OF_MONTH, enddate);
                 break;
             default:
                 break;
         }
 
 
-        StringBuffer where = new StringBuffer(" 1=1 and t1.sys_enterpriseid="+sys_enterpriseid);
-        StringBuffer whereLast1 = new StringBuffer(" 1=1 and t1.sys_enterpriseid="+sys_enterpriseid);
-        StringBuffer whereLast2 = new StringBuffer(" 1=1 and t1.sys_enterpriseid="+sys_enterpriseid);
+        StringBuffer where = new StringBuffer(" 1=1 and t1.sys_enterpriseid=" + sys_enterpriseid);
+        StringBuffer whereLast1 = new StringBuffer(" 1=1 and t1.sys_enterpriseid=" + sys_enterpriseid);
+        StringBuffer whereLast2 = new StringBuffer(" 1=1 and t1.sys_enterpriseid=" + sys_enterpriseid);
 
         if (begindate != "") {
             where.append(" and DATE_FORMAT(t1.billdate, '%Y-%m-%d') >='").append(begindate).append("' ");
@@ -126,20 +125,20 @@ public class databoard extends Controller {
         factoryLast2.addParameter_SQL("where", whereLast2);
         Rows rowsLast2 = dbConnect.runSqlQuery(factoryLast2.getSQL(false));
 
-        BigDecimal typestatistics =rows.get(0).getBigDecimal("typestatistics");
-        BigDecimal typestatistics1 =rowsLast1.get(0).getBigDecimal("typestatistics");
-        BigDecimal typestatistics2 =rowsLast2.get(0).getBigDecimal("typestatistics");
-        BigDecimal huanbirate=BigDecimal.ZERO;
-        BigDecimal tongbirate=BigDecimal.ZERO;
-        if(typestatistics1.compareTo(BigDecimal.ZERO)>0){
-             huanbirate=(typestatistics.subtract(typestatistics1)).divide(typestatistics1, 4, BigDecimal.ROUND_HALF_UP);
+        BigDecimal typestatistics = rows.get(0).getBigDecimal("typestatistics");
+        BigDecimal typestatistics1 = rowsLast1.get(0).getBigDecimal("typestatistics");
+        BigDecimal typestatistics2 = rowsLast2.get(0).getBigDecimal("typestatistics");
+        BigDecimal huanbirate = BigDecimal.ZERO;
+        BigDecimal tongbirate = BigDecimal.ZERO;
+        if (typestatistics1.compareTo(BigDecimal.ZERO) > 0) {
+            huanbirate = (typestatistics.subtract(typestatistics1)).divide(typestatistics1, 4, BigDecimal.ROUND_HALF_UP);
         }
-        if(typestatistics2.compareTo(BigDecimal.ZERO)>0){
-            tongbirate=(typestatistics.subtract(typestatistics2)).divide(typestatistics2, 4, BigDecimal.ROUND_HALF_UP);
+        if (typestatistics2.compareTo(BigDecimal.ZERO) > 0) {
+            tongbirate = (typestatistics.subtract(typestatistics2)).divide(typestatistics2, 4, BigDecimal.ROUND_HALF_UP);
         }
 
         jsonObject = new JSONObject();
-        jsonObject.put("typestatistics",typestatistics);
+        jsonObject.put("typestatistics", typestatistics);
         jsonObject.put("huanbirate", huanbirate);
         jsonObject.put("tongbirate", tongbirate);
         jsonArray.add(jsonObject);
@@ -159,13 +158,14 @@ public class databoard extends Controller {
 
 
         //账户余额
-        SQLFactory balancefactory= new SQLFactory(this, "账户余额_经销商");
+        SQLFactory balancefactory = new SQLFactory(this, "账户余额_经销商");
         balancefactory.addParameter("siteid", siteid);
         balancefactory.addParameter("sys_enterpriseid", sys_enterpriseid);
         Rows balanceRows = dbConnect.runSqlQuery(balancefactory.getSQL(false));
 
         return getSucReturnObject().setData(balanceRows).toString();
     }
+
     /**
      * 订货额类别占比分析
      *
@@ -341,8 +341,8 @@ public class databoard extends Controller {
 
         String datatype = content.getString("datatype");
         String where = " 1=1 ";
-        if(sys_enterpriseid>0){
-            where=where+" and t1.sys_enterpriseid="+sys_enterpriseid;
+        if (sys_enterpriseid > 0) {
+            where = where + " and t1.sys_enterpriseid=" + sys_enterpriseid;
         }
         /*
          * 过滤条件设置
@@ -384,7 +384,7 @@ public class databoard extends Controller {
         }
         list = supplementDate(Integer.parseInt(year), list);
         list = supplementDate(Integer.parseInt(lastyear), list);
-        list.sort(Comparator.comparingLong(o -> Long.parseLong(StringUtils.isBlank(o.getMonth())?"9999":o.getMonth())));
+        list.sort(Comparator.comparingLong(o -> Long.parseLong(StringUtils.isBlank(o.getMonth()) ? "9999" : o.getMonth())));
         return getSucReturnObject().setData(list).toString();
     }
 
@@ -525,8 +525,8 @@ public class databoard extends Controller {
             whereLastYear.append(" and DATE_FORMAT(t1.checkdate, '%Y-%m-%d') <='").append(sdf.format(cal.getTime())).append("' ");
         }
 
-        if(sys_enterpriseid>0){
-            where.append(" and t1.sys_enterpriseid="+sys_enterpriseid);
+        if (sys_enterpriseid > 0) {
+            where.append(" and t1.sys_enterpriseid=" + sys_enterpriseid);
         }
 
         if (datatype.equals("标准")) {
@@ -554,7 +554,7 @@ public class databoard extends Controller {
         factoryLastYear.addParameter("siteid", siteid);
         factoryLastYear.addParameter_SQL("where", whereLastYear);
         Rows rowsLastYear = dbConnect.runSqlQuery(factoryLastYear.getSQL(false));
-        RowsMap rowsLastYearMap =rowsLastYear.toRowsMap("marketingcategory");
+        RowsMap rowsLastYearMap = rowsLastYear.toRowsMap("marketingcategory");
 
         for (Row row : rows) {
             if (rows.isNotEmpty()) {
@@ -562,13 +562,13 @@ public class databoard extends Controller {
             } else {
                 row.put("amount", BigDecimal.ZERO);
             }
-            if(rowsLastYearMap.containsKey(row.getString("marketingcategory"))){
-                if(rowsLastYearMap.get(row.getString("marketingcategory")).isNotEmpty()){
+            if (rowsLastYearMap.containsKey(row.getString("marketingcategory"))) {
+                if (rowsLastYearMap.get(row.getString("marketingcategory")).isNotEmpty()) {
                     row.put("lastyearamount", rowsLastYearMap.get(row.getString("marketingcategory")).get(0).getBigDecimal("typestatistics"));
-                }else {
+                } else {
                     row.put("lastyearamount", BigDecimal.ZERO);
                 }
-            }else{
+            } else {
                 row.put("lastyearamount", BigDecimal.ZERO);
             }
             if (row.getBigDecimal("lastyearamount").compareTo(BigDecimal.ZERO) == 0) {
@@ -585,7 +585,7 @@ public class databoard extends Controller {
                 row.put("proportion", row.getBigDecimal("amount").divide(sumamount, 4, BigDecimal.ROUND_HALF_UP));
             }
         }
-        rows.sort(Comparator.comparingDouble(o ->o.getDouble("amount")));
+        rows.sort(Comparator.comparingDouble(o -> o.getDouble("amount")));
         Collections.reverse(rows);
         return getSucReturnObject().setData(rows).toString();
     }
@@ -696,7 +696,7 @@ public class databoard extends Controller {
                 break;
         }
 
-        list.sort(Comparator.comparingLong(o -> Long.parseLong(StringUtils.isBlank(o.getMonth())?"9999":o.getMonth())));
+        list.sort(Comparator.comparingLong(o -> Long.parseLong(StringUtils.isBlank(o.getMonth()) ? "9999" : o.getMonth())));
         return getSucReturnObject().setData(list).toString();
     }
 
@@ -888,31 +888,33 @@ public class databoard extends Controller {
          * 过滤条件设置
          */
         StringBuffer where = new StringBuffer(" 1=1 ");
-        if(sys_enterpriseid>0){
-            where.append(" and t2.sys_enterpriseid="+sys_enterpriseid);
+        StringBuffer where2 = new StringBuffer(" 1=1 ");
+        if (sys_enterpriseid > 0) {
+            where.append(" and t2.sys_enterpriseid=" + sys_enterpriseid);
+            where2.append(" and t3.sys_enterpriseid=" + sys_enterpriseid);
         }
         if (content.containsKey("where")) {
             JSONObject whereObject = content.getJSONObject("where");
             if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
-                    where.append(" and DATE_FORMAT(t2.checkdate, '%Y-%m-%d') >='").append(whereObject.getString("begindate")).append("' ");
-                }
+                where.append(" and DATE_FORMAT(t2.checkdate, '%Y-%m-%d') >='").append(whereObject.getString("begindate")).append("' ");
+            }
             if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
                 where.append(" and DATE_FORMAT(t2.checkdate, '%Y-%m-%d') <='").append(whereObject.getString("enddate")).append("' ");
             }
         }
 
-
-
         SQLFactory factory = new SQLFactory(this, "工厂待发明细查询");
         factory.addParameter("siteid", siteid);
         factory.addParameter_SQL("where", where);
+        factory.addParameter_SQL("where2", where2);
         Rows rows = dbConnect.runSqlQuery(factory.getSQL(false));
 
         SQLFactory sumfactory = new SQLFactory(this, "工厂待发合计金额及数量查询");
         sumfactory.addParameter("siteid", siteid);
         sumfactory.addParameter_SQL("where", where);
+        sumfactory.addParameter_SQL("where2", where2);
         Rows sumrows = dbConnect.runSqlQuery(sumfactory.getSQL(false));
-        if(rows.isNotEmpty()){
+        if (rows.isNotEmpty()) {
             rows.get(0).put("sumrows", sumrows);
         }
 
@@ -1124,7 +1126,7 @@ public class databoard extends Controller {
         return result;
     }
 
-    public String caluteDate(int datetype,String selectdate) throws Exception {
+    public String caluteDate(int datetype, String selectdate) throws Exception {
         Date date = sdf.parse(selectdate);
         //创建Calendar实例
         Calendar cal = Calendar.getInstance();

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

@@ -235,8 +235,6 @@ public class dispatch extends Controller {
                     str = str.replace("[", "(").replace("]", ")");
                     where.append(" and t1.sa_dispatchid  in").append(str);
                 }
-
-
             }
         }
 //        SQLFactory sqlFactory = new SQLFactory(this, "发货单列表查询", pageSize, pageNumber, pageSorting);
@@ -261,10 +259,7 @@ public class dispatch extends Controller {
                 row.put("sumamount", 0);
                 row.put("sumqty", 0);
             }
-
         }
-
-
         return getSucReturnObject().setData(rows).toString();
     }
 
@@ -496,7 +491,7 @@ public class dispatch extends Controller {
         String result = request.doPost(object.toString(),
                 "http://60.190.151.198:8092/BYESB/jaxrs/webclientrest");
         JSONArray jsonArray = JSONArray.parseArray(result);
-        if(!jsonArray.isEmpty()){
+        if (!jsonArray.isEmpty()) {
             return getErrReturnObject().setErrMsg("中间表存在未同步的销售出库单,无法手工关闭")
                     .toString();
         }
@@ -774,13 +769,12 @@ public class dispatch extends Controller {
         WebRequest request = new WebRequest();
         String result = request.doPost(object.toString(),
                 "http://60.190.151.198:8092/BYESB/jaxrs/webclientrest");
-        if(result.equals("true")){
+        if (result.equals("true")) {
             return getErrReturnObject().setErrMsg("K3发货单为非删除状态,无法反复核")
                     .toString();
         }
 
 
-
         ArrayList<String> sqlList = new ArrayList<>();
         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");