Parcourir la source

数据看板【回款】统计规则逻辑优化

hu il y a 3 semaines
Parent
commit
a4aa19b309

+ 28 - 20
src/custom/restcontroller/webmanage/sale/databoard/databoard.java

@@ -264,7 +264,7 @@ public class databoard extends Controller {
 
 
         if (!begindate.equals("")) {
-            where.append(" and t1.checkdate >='").append(begindate).append(" 00:00:00'");
+            where.append(" and t1.checkdate>='").append(begindate).append("'");
             Date date = sdf.parse(begindate);
             //创建Calendar实例
             Calendar cal = Calendar.getInstance();
@@ -272,10 +272,10 @@ public class databoard extends Controller {
             cal.setTime(date);
             //在当前时间基础上减一年
             cal.add(Calendar.YEAR, -1);
-            whereLastYear.append(" and t1.checkdate >='").append(sdf.format(cal.getTime())).append(" 00:00:00'");
+            whereLastYear.append(" and t1.checkdate >='").append(sdf.format(cal.getTime())).append("'");
         }
         if (!enddate.equals("")) {
-            where.append(" and t1.checkdate <='").append(enddate).append(" 23:59:59'");
+            where.append(" and t1.checkdate <='").append(enddate).append("'");
             Date date = sdf.parse(enddate);
             //创建Calendar实例
             Calendar cal = Calendar.getInstance();
@@ -283,7 +283,7 @@ public class databoard extends Controller {
             cal.setTime(date);
             //在当前时间基础上减一年
             cal.add(Calendar.YEAR, -1);
-            whereLastYear.append(" and t1.checkdate <='").append(sdf.format(cal.getTime())).append(" 23:59:59'");
+            whereLastYear.append(" and t1.checkdate <='").append(sdf.format(cal.getTime())).append("'");
         }
 
         JSONArray jsonArray = new JSONArray();
@@ -390,6 +390,7 @@ public class databoard extends Controller {
             whereLastYear.append("t2.accountname in"+result);
             whereLastYear.append(")");
         }
+        StringBuffer stringBuffer= new StringBuffer();
         if(!statisticsrule_type.isEmpty()){
             StringBuffer str=new StringBuffer("(");
             for(Object o :statisticsrule_type){
@@ -397,13 +398,14 @@ public class databoard extends Controller {
             }
             String result = str.substring(0, str.length() - 1);
             result=result+")";
-            where.append(" and(");
-            where.append("t1.class in"+result);
-            where.append(")");
-
-            whereLastYear.append(" and(");
-            whereLastYear.append("t1.class in"+result);
-            whereLastYear.append(")");
+            stringBuffer.append(" or t1.class in"+ result);
+//            where.append(" and(");
+//            where.append("t1.class in"+result);
+//            where.append(")");
+//
+//            whereLastYear.append(" and(");
+//            whereLastYear.append("t1.class in"+result);
+//            whereLastYear.append(")");
         }
         if(!statisticsrule_typemx.isEmpty()){
             StringBuffer str=new StringBuffer("(");
@@ -412,23 +414,29 @@ public class databoard extends Controller {
             }
             String result = str.substring(0, str.length() - 1);
             result=result+")";
-            where.append(" and(");
-            where.append("t1.subclass in"+result);
-            where.append(")");
-
-            whereLastYear.append(" and(");
-            whereLastYear.append("t1.subclass in"+result);
-            whereLastYear.append(")");
+            stringBuffer.append(" or t1.subclass in"+ result);
+//            where.append(" and(");
+//            where.append("t1.subclass in"+result);
+//            where.append(")");
+//
+//            whereLastYear.append(" and(");
+//            whereLastYear.append("t1.subclass in"+result);
+//            whereLastYear.append(")");
         }
+        if(statisticsrule_type.isEmpty() && statisticsrule_typemx.isEmpty() ){
+            stringBuffer.append(" 1=1 ");
+        }
+        where.append(" and ("+(stringBuffer.toString()).replaceFirst("or", "")+")");
+        whereLastYear.append(" and ("+(stringBuffer.toString()).replaceFirst("or", "")+")");
         jsonObject = new JSONObject();
         factory = new SQLFactory(this, "回款统计查询");
         factory.addParameter("siteid", siteid);
-        factory.addParameter_SQL("where", where);
+        factory.addParameter_SQL("where",where.toString().replaceAll("checkdate", "period"));
         rows = dbConnect.runSqlQuery(factory.getSQL(false));
 
         factoryLastYear = new SQLFactory(this, "回款统计查询");
         factoryLastYear.addParameter("siteid", siteid);
-        factoryLastYear.addParameter_SQL("where", whereLastYear);
+        factoryLastYear.addParameter_SQL("where", whereLastYear.toString().replaceAll("checkdate", "period"));
         rowsLastYear = dbConnect.runSqlQuery(factoryLastYear.getSQL(false));
 
         Rows salestargetbillrows =dbConnect.runSqlQuery("select * from sa_salestargetbill where siteid='"+siteid+"' and year="+currentYear+" and targettype='人员目标' and assessmentindicators='收款'");

+ 5 - 4
src/custom/restcontroller/webmanage/sale/salestarget/SQL/人员目标统计-收款.sql

@@ -30,7 +30,7 @@ select t1.sa_saleareaid,
     ROUND(ifnull(m10.amount,0)/10000,$num$) as m10a,
     ROUND(ifnull(m11.amount,0)/10000,$num$) as m11a,
     ROUND(ifnull(m12.amount,0)/10000,$num$) as m12a
-from sa_salestargethr t1
+from (select * from sa_salestargethr union all select '',999,0,'',$areaname$,$sa_salestargetbillid$,'',0,'','',$sa_saleareaid$) t1
     left join sa_salestarget m1 on t1.sa_saleareaid = m1.sa_saleareaid and m1.type = '月' and m1.point = 1
     left join sa_salestarget m2 on t1.sa_saleareaid = m2.sa_saleareaid and m2.type = '月' and m2.point = 2
     left join sa_salestarget m3 on t1.sa_saleareaid = m3.sa_saleareaid and m3.type = '月' and m3.point = 3
@@ -75,8 +75,8 @@ from (
 			  union all
          select '区域汇总' as  type,
                 t6.areaname,
-								t6.sa_saleareaid,
-								t6.parentid,
+                ifnull(t6.sa_saleareaid,0) sa_saleareaid,
+                ifnull(t6.parentid,0) parentid,
                 t6.areafullname,
                 0        level,
                 ROUND(sum(y1a),$num$)   y1a,
@@ -98,7 +98,8 @@ from (
                 ROUND(sum(m12a),$num$)  m12a
          from hrtarget t1
                 left join sa_salearea t5 on t1.sa_saleareaid = t5.sa_saleareaid
-								 left join sa_salearea t6 on t5.parentid = t6.sa_saleareaid and t5.siteid = t6.siteid
+			    left join sa_salearea t6 on t5.parentid = t6.sa_saleareaid and t5.siteid = t6.siteid
+                where ifnull(t6.sa_saleareaid,0)!=0
          group by  t6.sa_saleareaid,  t6.areafullname, t6.areaname) t
 where $where$
 order by  case when t.type = '区域汇总' then 0 else 1 end

+ 17 - 3
src/custom/restcontroller/webmanage/sale/salestarget/personnelstatistics.java

@@ -175,10 +175,12 @@ public class personnelstatistics extends Controller {
         String sql = sqlFactory.getSQL();
         Rows rows = dbConnect.runSqlQuery(sql);
 
-        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where parentid=0 and siteid='"+siteid+"'");
+        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where ifnull(parentid,0)=0 and siteid='"+siteid+"'");
         Long sa_saleareaidtop=0l;
+        String areanametop="";
         if(!saleareas.isEmpty() && saleareas.size()==1){
             sa_saleareaidtop=saleareas.get(0).getLong("sa_saleareaid");
+            areanametop=saleareas.get(0).getString("areaname");
             for (Row row :rows) {
                 if(row.getLong("parentid")==0){
                     row.put("y1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1l"));
@@ -321,6 +323,9 @@ public class personnelstatistics extends Controller {
             }else{
                 sqlFactory.addParameter("num",content.getLongValue("num"));
             }
+
+            sqlFactory.addParameter("sa_saleareaid", sa_saleareaidtop);
+            sqlFactory.addParameter("areaname", areanametop);
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
             if(StringUtils.isNotBlank(statisticaldimension)){
@@ -358,6 +363,7 @@ public class personnelstatistics extends Controller {
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
+
         if(!saleareas.isEmpty() && saleareas.size()==1){
             for (Row row :actualRows) {
                 if(row.getLong("parentid")==0){
@@ -480,10 +486,12 @@ public class personnelstatistics extends Controller {
         String sql = sqlFactory.getSQL();
         Rows rows = dbConnect.runSqlQuery(sql);
 
-        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where parentid=0 and siteid='"+siteid+"'");
+        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where ifnull(parentid,0)=0 and siteid='"+siteid+"'");
         Long sa_saleareaidtop=0l;
+        String areanametop="";
         if(!saleareas.isEmpty() && saleareas.size()==1){
             sa_saleareaidtop=saleareas.get(0).getLong("sa_saleareaid");
+            areanametop=saleareas.get(0).getString("areaname");
             for (Row row :rows) {
                 if(row.getLong("parentid")==0){
                     row.put("y1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1l"));
@@ -626,6 +634,8 @@ public class personnelstatistics extends Controller {
             }else{
                 sqlFactory.addParameter("num",content.getLongValue("num"));
             }
+            sqlFactory.addParameter("sa_saleareaid", sa_saleareaidtop);
+            sqlFactory.addParameter("areaname", areanametop);
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
             if(StringUtils.isNotBlank(statisticaldimension)){
@@ -753,10 +763,12 @@ public class personnelstatistics extends Controller {
         String sql = sqlFactory.getSQL();
         Rows rows = dbConnect.runSqlQuery(sql);
 
-        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where parentid=0 and siteid='"+siteid+"'");
+        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where ifnull(parentid,0)=0 and siteid='"+siteid+"'");
         Long sa_saleareaidtop=0l;
+        String areanametop="";
         if(!saleareas.isEmpty() && saleareas.size()==1){
             sa_saleareaidtop=saleareas.get(0).getLong("sa_saleareaid");
+            areanametop=saleareas.get(0).getString("areaname");
             for (Row row :rows) {
                 if(row.getLong("parentid")==0){
                     row.put("y1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1l"));
@@ -903,6 +915,8 @@ public class personnelstatistics extends Controller {
             }else{
                 sqlFactory.addParameter("num",content.getLongValue("num"));
             }
+            sqlFactory.addParameter("sa_saleareaid", sa_saleareaidtop);
+            sqlFactory.addParameter("areaname", areanametop);
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
             if(StringUtils.isNotBlank(statisticaldimension)){