Просмотр исходного кода

Merge branch 'develop' into develop-yellow

hu 2 лет назад
Родитель
Сommit
889ef7b3fc

+ 2 - 2
src/custom/restcontroller/webmanage/sale/salestarget/SQL/业务员列表查询.sql

@@ -1,4 +1,4 @@
-select t5.sa_saleareaid
+select t5.sa_saleareaid,t5.areaname
 from sys_hr t1
          left join sys_department t2 on t1.siteid = t2.siteid and t1.departmentid = t2.departmentid
          left join sys_hr t3 on t1.siteid = t3.siteid and t1.reporthrid = t3.hrid
@@ -7,4 +7,4 @@ from sys_hr t1
 		 left join sys_hr t6 on t1.siteid = t6.siteid and t1.hrid = t6.hrid
          left join sys_users t7 on t7.userid = t6.userid
 where t1.siteid = $siteid$ and t2.depname='销售部'
-  and t1.hrid =$hrid$
+  and t1.hrid =$hrid$ order by t5.LEVEL asc

+ 2 - 0
src/custom/restcontroller/webmanage/sale/salestarget/SQL/人员-目标详情.sql

@@ -4,6 +4,8 @@ SELECT t1.sa_salestargetbillid,
        t1.targettype,
        t1.year,
        t1.assessmentindicators,
+       t1.statisticaldimension,
+       t1.sa_accountclassids,
        t1.`status`,
        t1.changeby,
        t1.changedate,

+ 18 - 18
src/custom/restcontroller/webmanage/sale/salestarget/SQL/人员目标统计-出货.sql

@@ -11,7 +11,7 @@ SELECT  t1.sa_orderitemsid,t1.siteid,
 FROM st_stockbill_items t1
          inner join st_stockbill t2 on t1.siteid = t2.siteid and t1.st_stockbillid = t2.st_stockbillid
          inner join sa_orderitems t4 on t1.sa_orderitemsid=t4.sa_orderitemsid and t1.siteid = t4.siteid
-WHERE t2.STATUS ='审核' and t2.rb=1 group by t1.sa_orderitemsid,t1.siteid) t5 on t5.sa_orderitemsid=t1.sa_orderitemsid and t5.siteid=t1.siteid
+WHERE t2.STATUS ='审核' and t2.rb=1 and $where1$ group by t1.sa_orderitemsid,t1.siteid) t5 on t5.sa_orderitemsid=t1.sa_orderitemsid and t5.siteid=t1.siteid
 
 WHERE YEAR (t2.createdate)=$year$ AND t1.siteid=$siteid$) a
 GROUP BY point,sa_saleareaid,type
@@ -22,23 +22,23 @@ select t1.sa_saleareaid,
     t1.hrid,
     t1.name,
     t1.position,
-    ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)+ ifnull(m4.amount,0)+ ifnull(m5.amount,0)+  ifnull(m6.amount,0)+ ifnull(m7.amount,0)+ ifnull(m8.amount,0)+  ifnull(m9.amount,0) + ifnull(m10.amount,0)+ ifnull(m11.amount,0)+  ifnull(m12.amount,0)  as y1a,
-    ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)  as s1a,
-    ifnull(m4.amount,0)+ ifnull(m5.amount,0)+ifnull(m6.amount,0)  as s2a,
-    ifnull(m7.amount,0)+ ifnull(m8.amount,0)+ifnull(m9.amount,0)  as s3a,
-    ifnull(m10.amount,0)+ ifnull(m11.amount,0)+ifnull(m12.amount,0) as s4a,
-    ifnull(m1.amount,0) as m1a,
-    ifnull(m2.amount,0) as m2a,
-    ifnull(m3.amount,0) as m3a,
-    ifnull(m4.amount,0) as m4a,
-    ifnull(m5.amount,0) as m5a,
-    ifnull(m6.amount,0) as m6a,
-    ifnull(m7.amount,0) as m7a,
-    ifnull(m8.amount,0) as m8a,
-    ifnull(m9.amount,0) as m9a,
-    ifnull(m10.amount,0) as m10a,
-    ifnull(m11.amount,0) as m11a,
-    ifnull(m12.amount,0) as m12a
+     ROUND((ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)+ ifnull(m4.amount,0)+ ifnull(m5.amount,0)+  ifnull(m6.amount,0)+ ifnull(m7.amount,0)+ ifnull(m8.amount,0)+  ifnull(m9.amount,0) + ifnull(m10.amount,0)+ ifnull(m11.amount,0)+  ifnull(m12.amount,0))/10000,2)  as y1a,
+    ROUND((ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0))/10000,2)  as s1a,
+    ROUND((ifnull(m4.amount,0)+ ifnull(m5.amount,0)+ifnull(m6.amount,0))/10000,2)  as s2a,
+    ROUND((ifnull(m7.amount,0)+ ifnull(m8.amount,0)+ifnull(m9.amount,0))/10000,2)  as s3a,
+    ROUND((ifnull(m10.amount,0)+ ifnull(m11.amount,0)+ifnull(m12.amount,0))/10000,2) as s4a,
+    ROUND(ifnull(m1.amount,0)/10000,2) as m1a,
+    ROUND(ifnull(m2.amount,0)/10000,2) as m2a,
+    ROUND(ifnull(m3.amount,0)/10000,2) as m3a,
+    ROUND(ifnull(m4.amount,0)/10000,2)as m4a,
+    ROUND(ifnull(m5.amount,0)/10000,2) as m5a,
+    ROUND(ifnull(m6.amount,0)/10000,2) as m6a,
+    ROUND(ifnull(m7.amount,0)/10000,2) as m7a,
+    ROUND(ifnull(m8.amount,0)/10000,2) as m8a,
+    ROUND(ifnull(m9.amount,0)/10000,2) as m9a,
+    ROUND(ifnull(m10.amount,0)/10000,2) as m10a,
+    ROUND(ifnull(m11.amount,0)/10000,2) as m11a,
+    ROUND(ifnull(m12.amount,0)/10000,2) as m12a
 from sa_salestargethr 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

+ 1 - 1
src/custom/restcontroller/webmanage/sale/salestarget/SQL/人员目标统计-开票.sql

@@ -5,7 +5,7 @@ FROM sa_orderitems t1
     LEFT JOIN sa_order t2 ON t1.sa_orderid=t2.sa_orderid AND t1.siteid=t2.siteid
 		left join sys_enterprise_tradefield t3 on t2.sys_enterpriseid=t3.sys_enterpriseid and t2.siteid=t3.siteid
 		left join sa_salearea t4 on t4.sa_saleareaid=t3.sa_saleareaid and t4.siteid=t3.siteid
-WHERE YEAR (t2.createdate)=$year$ AND t1.siteid=$siteid$ AND t2.status in('提交','审核','关闭','手工关闭')) a
+WHERE YEAR (t2.createdate)=$year$ AND t1.siteid=$siteid$ AND t2.status in('提交','审核','关闭','手工关闭') and $where1$) a
 GROUP BY  point,sa_saleareaid,type
     )
         , hrtarget as (

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

@@ -4,7 +4,7 @@ with sa_salestarget as
 FROM sa_cashbill t1
 		left join sys_enterprise_tradefield t3 on t1.sys_enterpriseid=t3.sys_enterpriseid and t1.siteid=t3.siteid
 		left join sa_salearea t4 on t4.sa_saleareaid=t3.sa_saleareaid and t4.siteid=t3.siteid
-WHERE YEAR (t1.createdate)=$year$ AND t1.siteid=$siteid$ AND t1.status in('审核') and t1.type=1) a
+WHERE YEAR (t1.createdate)=$year$ AND t1.siteid=$siteid$ AND t1.status in('审核') and t1.type=1 and ($where1$)) a
 GROUP BY point,sa_saleareaid,type
     )
         , hrtarget as (
@@ -13,23 +13,23 @@ select t1.sa_saleareaid,
     t1.hrid,
     t1.name,
     t1.position,
-    ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)+ ifnull(m4.amount,0)+ ifnull(m5.amount,0)+  ifnull(m6.amount,0)+ ifnull(m7.amount,0)+ ifnull(m8.amount,0)+  ifnull(m9.amount,0) + ifnull(m10.amount,0)+ ifnull(m11.amount,0)+  ifnull(m12.amount,0)  as y1a,
-    ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)  as s1a,
-    ifnull(m4.amount,0)+ ifnull(m5.amount,0)+ifnull(m6.amount,0)  as s2a,
-    ifnull(m7.amount,0)+ ifnull(m8.amount,0)+ifnull(m9.amount,0)  as s3a,
-    ifnull(m10.amount,0)+ ifnull(m11.amount,0)+ifnull(m12.amount,0) as s4a,
-    ifnull(m1.amount,0) as m1a,
-    ifnull(m2.amount,0) as m2a,
-    ifnull(m3.amount,0) as m3a,
-    ifnull(m4.amount,0) as m4a,
-    ifnull(m5.amount,0) as m5a,
-    ifnull(m6.amount,0) as m6a,
-    ifnull(m7.amount,0) as m7a,
-    ifnull(m8.amount,0) as m8a,
-    ifnull(m9.amount,0) as m9a,
-    ifnull(m10.amount,0) as m10a,
-    ifnull(m11.amount,0) as m11a,
-    ifnull(m12.amount,0) as m12a
+    ROUND((ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)+ ifnull(m4.amount,0)+ ifnull(m5.amount,0)+  ifnull(m6.amount,0)+ ifnull(m7.amount,0)+ ifnull(m8.amount,0)+  ifnull(m9.amount,0) + ifnull(m10.amount,0)+ ifnull(m11.amount,0)+  ifnull(m12.amount,0))/10000,2)  as y1a,
+    ROUND((ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0))/10000,2)  as s1a,
+    ROUND((ifnull(m4.amount,0)+ ifnull(m5.amount,0)+ifnull(m6.amount,0))/10000,2)  as s2a,
+    ROUND((ifnull(m7.amount,0)+ ifnull(m8.amount,0)+ifnull(m9.amount,0))/10000,2)  as s3a,
+    ROUND((ifnull(m10.amount,0)+ ifnull(m11.amount,0)+ifnull(m12.amount,0))/10000,2) as s4a,
+    ROUND(ifnull(m1.amount,0)/10000,2) as m1a,
+    ROUND(ifnull(m2.amount,0)/10000,2) as m2a,
+    ROUND(ifnull(m3.amount,0)/10000,2) as m3a,
+    ROUND(ifnull(m4.amount,0)/10000,2)as m4a,
+    ROUND(ifnull(m5.amount,0)/10000,2) as m5a,
+    ROUND(ifnull(m6.amount,0)/10000,2) as m6a,
+    ROUND(ifnull(m7.amount,0)/10000,2) as m7a,
+    ROUND(ifnull(m8.amount,0)/10000,2) as m8a,
+    ROUND(ifnull(m9.amount,0)/10000,2) as m9a,
+    ROUND(ifnull(m10.amount,0)/10000,2) as m10a,
+    ROUND(ifnull(m11.amount,0)/10000,2) as m11a,
+    ROUND(ifnull(m12.amount,0)/10000,2) as m12a
 from sa_salestargethr 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

+ 18 - 18
src/custom/restcontroller/webmanage/sale/salestarget/SQL/人员目标统计-订单.sql

@@ -5,29 +5,29 @@ FROM sa_orderitems t1
     LEFT JOIN sa_order t2 ON t1.sa_orderid=t2.sa_orderid AND t1.siteid=t2.siteid
 		left join sys_enterprise_tradefield t3 on t2.sys_enterpriseid=t3.sys_enterpriseid and t2.siteid=t3.siteid
 		left join sa_salearea t4 on t4.sa_saleareaid=t3.sa_saleareaid and t4.siteid=t3.siteid
-WHERE YEAR (t2.createdate)=$year$ AND t1.siteid=$siteid$ AND t2.status in('提交','审核','关闭','手工关闭')) a
+WHERE YEAR (t2.createdate)=$year$ AND t1.siteid=$siteid$ AND $where1$) a
 GROUP BY  point,sa_saleareaid,type
     )
         , hrtarget as (
 select t1.sa_saleareaid,
     t1.areaname,
-    ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)+ ifnull(m4.amount,0)+ ifnull(m5.amount,0)+  ifnull(m6.amount,0)+ ifnull(m7.amount,0)+ ifnull(m8.amount,0)+  ifnull(m9.amount,0) + ifnull(m10.amount,0)+ ifnull(m11.amount,0)+  ifnull(m12.amount,0)  as y1a,
-    ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)  as s1a,
-    ifnull(m4.amount,0)+ ifnull(m5.amount,0)+ifnull(m6.amount,0)  as s2a,
-    ifnull(m7.amount,0)+ ifnull(m8.amount,0)+ifnull(m9.amount,0)  as s3a,
-    ifnull(m10.amount,0)+ ifnull(m11.amount,0)+ifnull(m12.amount,0) as s4a,
-    ifnull(m1.amount,0) as m1a,
-    ifnull(m2.amount,0) as m2a,
-    ifnull(m3.amount,0) as m3a,
-    ifnull(m4.amount,0) as m4a,
-    ifnull(m5.amount,0) as m5a,
-    ifnull(m6.amount,0) as m6a,
-    ifnull(m7.amount,0) as m7a,
-    ifnull(m8.amount,0) as m8a,
-    ifnull(m9.amount,0) as m9a,
-    ifnull(m10.amount,0) as m10a,
-    ifnull(m11.amount,0) as m11a,
-    ifnull(m12.amount,0) as m12a
+    ROUND((ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0)+ ifnull(m4.amount,0)+ ifnull(m5.amount,0)+  ifnull(m6.amount,0)+ ifnull(m7.amount,0)+ ifnull(m8.amount,0)+  ifnull(m9.amount,0) + ifnull(m10.amount,0)+ ifnull(m11.amount,0)+  ifnull(m12.amount,0))/10000,2)  as y1a,
+    ROUND((ifnull(m1.amount,0)+ ifnull(m2.amount,0)+ifnull(m3.amount,0))/10000,2)  as s1a,
+    ROUND((ifnull(m4.amount,0)+ ifnull(m5.amount,0)+ifnull(m6.amount,0))/10000,2)  as s2a,
+    ROUND((ifnull(m7.amount,0)+ ifnull(m8.amount,0)+ifnull(m9.amount,0))/10000,2)  as s3a,
+    ROUND((ifnull(m10.amount,0)+ ifnull(m11.amount,0)+ifnull(m12.amount,0))/10000,2) as s4a,
+    ROUND(ifnull(m1.amount,0)/10000,2) as m1a,
+    ROUND(ifnull(m2.amount,0)/10000,2) as m2a,
+    ROUND(ifnull(m3.amount,0)/10000,2) as m3a,
+    ROUND(ifnull(m4.amount,0)/10000,2)as m4a,
+    ROUND(ifnull(m5.amount,0)/10000,2) as m5a,
+    ROUND(ifnull(m6.amount,0)/10000,2) as m6a,
+    ROUND(ifnull(m7.amount,0)/10000,2) as m7a,
+    ROUND(ifnull(m8.amount,0)/10000,2) as m8a,
+    ROUND(ifnull(m9.amount,0)/10000,2) as m9a,
+    ROUND(ifnull(m10.amount,0)/10000,2) as m10a,
+    ROUND(ifnull(m11.amount,0)/10000,2) as m11a,
+    ROUND(ifnull(m12.amount,0)/10000,2) as m12a
 from sa_salestargethr 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

+ 2 - 2
src/custom/restcontroller/webmanage/sale/salestarget/SQL/企业-业绩目标完成列表.sql

@@ -45,8 +45,8 @@ SELECT DISTINCT m.year,
                 m11.target_h                               m11h,
                 m12.target_l                               m12l,
                 m12.target_h                               m12h,
-							  ifnull(t3.sumamount_year,0) sumamount_year,
-								ifnull(t4.sumamount_currentmonth,0) sumamount_currentmonth
+							  ROUND(ifnull(t3.sumamount_year,0)/10000,2) sumamount_year,
+								ROUND(ifnull(t4.sumamount_currentmonth,0)/10000,2) sumamount_currentmonth
 from sa_salestarget m
          LEFT JOIN sa_salestarget m1 ON m1.year = m.year and m1.point = 1 and m.sys_enterpriseid = m1.sys_enterpriseid
          LEFT JOIN sa_salestarget m2 ON m2.year = m.year and m2.point = 2 and m.sys_enterpriseid = m2.sys_enterpriseid

+ 2 - 2
src/custom/restcontroller/webmanage/sale/salestarget/SQL/创建新年度.sql

@@ -1,4 +1,4 @@
 insert into sa_salestargetbill (siteid, sa_salestargetbillid, createby, createdate, changeuserid, changeby, changedate,
-                                targettype, year, status,sys_enterpriseid,tradefield,assessmentindicators)
+                                targettype, year, status,sys_enterpriseid,tradefield,assessmentindicators,statisticaldimension,sa_accountclassids)
 values ($siteid$, $sa_salestargetbillid$, $username$, CURRENT_TIME, $userid$, $username$, CURRENT_TIME, $targettype$, $year$,
-        '新建',$sys_enterpriseid$,$tradefield$,$assessmentindicators$);
+        '新建',$sys_enterpriseid$,$tradefield$,$assessmentindicators$,$statisticaldimension$,$sa_accountclassids$);

+ 2 - 0
src/custom/restcontroller/webmanage/sale/salestarget/SQL/年度目标列表.sql

@@ -3,6 +3,8 @@ SELECT t1.sa_salestargetbillid,
        t1.createdate,
        t1.targettype,
        t1.assessmentindicators,
+       t1.statisticaldimension,
+       t1.sa_accountclassids,
        t1.year,
        t1.`status`,
        (SELECT count(*) FROM sa_salestargethr WHERE sa_salestargetbillid = t1.sa_salestargetbillid) peoplecount

+ 33 - 3
src/custom/restcontroller/webmanage/sale/salestarget/enterprisetarget.java

@@ -39,7 +39,8 @@ public class enterprisetarget extends Controller {
         Long sa_salestargetbillid = content.getLong("sa_salestargetbillid");
         JSONArray agentsArray = content.getJSONArray("agents");
         String assessmentindicators=content.getString("assessmentindicators");
-
+        String statisticaldimension=content.getStringValue("statisticaldimension");
+        String sa_accountclassids=content.getStringValue("sa_accountclassids");
         ArrayList<String> sqlList = new ArrayList<>();
         if (sa_salestargetbillid <= 0) {
             //查询创建年度是否存在
@@ -59,6 +60,8 @@ public class enterprisetarget extends Controller {
                 sqlFactory.addParameter("targettype", "企业目标");
                 sqlFactory.addParameter("tradefield", "");
                 sqlFactory.addParameter("assessmentindicators", assessmentindicators);
+                sqlFactory.addParameter("statisticaldimension", statisticaldimension);
+                sqlFactory.addParameter("sa_accountclassids", sa_accountclassids);
 
                 sqlList.add(sqlFactory.getSQL());
             }
@@ -225,10 +228,15 @@ public class enterprisetarget extends Controller {
 
         //考核指标类型
         String assessmentindicators="";
+        //统计维度
+        String statisticaldimension="";
+        String  sa_accountclassids="";
         if(curryear!=0){
-            Rows rows =dbConnect.runSqlQuery("SELECT assessmentindicators FROM sa_salestargetbill WHERE `year` = " + curryear + " AND targettype ='企业目标' AND siteid = '" + siteid + "'");
+            Rows rows =dbConnect.runSqlQuery("SELECT assessmentindicators,statisticaldimension,sa_accountclassids FROM sa_salestargetbill WHERE `year` = " + curryear + " AND targettype ='企业目标' AND siteid = '" + siteid + "'");
             if(rows.isNotEmpty()){
                 assessmentindicators=rows.get(0).getString("assessmentindicators");
+                statisticaldimension=rows.get(0).getString("statisticaldimension");
+                sa_accountclassids=rows.get(0).getString("sa_accountclassids");
             }
         }
 
@@ -254,7 +262,29 @@ public class enterprisetarget extends Controller {
 //        }
         //收款
         if (assessmentindicators.equals("收款")) {
-            sqlFactory = new SQLFactory(this, "企业-收款");
+            sqlFactory = new SQLFactory(new enterprise(new JSONObject()), "企业-收款");
+            String where1=" 1=1 ";
+            if(StringUtils.isNotBlank(statisticaldimension)){
+                if(isJSONArray(statisticaldimension)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(statisticaldimension);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+" and (class in"+jsonArrayResult+" or subclass in"+jsonArrayResult+")";
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter_in("sys_enterpriseid", rows.toArrayList("sys_enterpriseid",new ArrayList<Long>()));
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", curryear);

+ 48 - 1
src/custom/restcontroller/webmanage/sale/salestarget/personnel.java

@@ -35,6 +35,9 @@ public class personnel extends Controller {
         Long year = content.getLong("year");
         String assessmentindicators=content.getString("assessmentindicators");
         Long sa_salestargetbillid = content.getLong("sa_salestargetbillid");
+        String statisticaldimension=content.getStringValue("statisticaldimension");
+        String sa_accountclassids=content.getStringValue("sa_accountclassids");
+
         JSONArray salesArray = content.getJSONArray("sales");
 
         ArrayList<String> sqlList = new ArrayList<>();
@@ -52,6 +55,9 @@ public class personnel extends Controller {
             sqlFactory.addParameter("userid", userid);
             sqlFactory.addParameter("year", year);
             sqlFactory.addParameter("assessmentindicators", assessmentindicators);
+            sqlFactory.addParameter("statisticaldimension", statisticaldimension);
+            sqlFactory.addParameter("sa_accountclassids", sa_accountclassids);
+
             sqlFactory.addParameter("targettype", "人员目标");
             sqlFactory.addParameter("tradefield", "");
             sqlList.add(sqlFactory.getSQL());
@@ -204,6 +210,27 @@ public class personnel extends Controller {
         sqlFactory.addParameter_SQL("where", where);
         sqlFactory.addParameter("targettype", targettype);
         Rows rows = dbConnect.runSqlQuery(sqlFactory);
+        Rows accountclassrows = dbConnect.runSqlQuery("select sa_accountclassid,accountname from sa_accountclass where siteid='"+siteid+"'");
+        RowsMap accountclassrowsMap = accountclassrows.toRowsMap("sa_accountclassid");
+
+        for (Row row:rows) {
+            JSONArray jsonArray= new JSONArray();
+            if(isJSONArray(row.getString("statisticaldimension"))){
+                row.put("statisticaldimension",JSONArray.parseArray(row.getString("statisticaldimension")));
+            }
+            if(isJSONArray(row.getString("sa_accountclassids"))){
+                JSONArray sa_accountclassids =JSONArray.parseArray(row.getString("sa_accountclassids"));
+                for (Object object:sa_accountclassids) {
+                    Long sa_accountclassid = Long.valueOf(object.toString());
+                    if(accountclassrowsMap.containsKey(String.valueOf(sa_accountclassid))){
+                        if(accountclassrowsMap.get(String.valueOf(sa_accountclassid)).isNotEmpty()){
+                            jsonArray.add(accountclassrowsMap.get(String.valueOf(sa_accountclassid)).get(0));
+                        }
+                    }
+                }
+                row.put("sa_accountclassids",jsonArray);
+            }
+        }
 
 
         return getSucReturnObject().setData(rows).toString();
@@ -216,6 +243,27 @@ public class personnel extends Controller {
         sqlFactory.addParameter("siteid", siteid);
         sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
         Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
+        Rows accountclassrows = dbConnect.runSqlQuery("select sa_accountclassid,accountname from sa_accountclass where siteid='"+siteid+"'");
+        RowsMap accountclassrowsMap = accountclassrows.toRowsMap("sa_accountclassid");
+
+        for (Row row:rows) {
+            JSONArray jsonArray= new JSONArray();
+            if(isJSONArray(row.getString("statisticaldimension"))){
+                row.put("statisticaldimension",JSONArray.parseArray(row.getString("statisticaldimension")));
+            }
+            if(isJSONArray(row.getString("sa_accountclassids"))){
+                JSONArray sa_accountclassids =JSONArray.parseArray(row.getString("sa_accountclassids"));
+                for (Object object:sa_accountclassids) {
+                    Long sa_accountclassid = Long.valueOf(object.toString());
+                    if(accountclassrowsMap.containsKey(String.valueOf(sa_accountclassid))){
+                        if(accountclassrowsMap.get(String.valueOf(sa_accountclassid)).isNotEmpty()){
+                            jsonArray.add(accountclassrowsMap.get(String.valueOf(sa_accountclassid)).get(0));
+                        }
+                    }
+                }
+                row.put("sa_accountclassids",jsonArray);
+            }
+        }
         return getSucReturnObject().setData(rows.isNotEmpty() ? rows.get(0) : new Rows()).toString();
     }
 
@@ -226,7 +274,6 @@ public class personnel extends Controller {
         Long sa_saleareaid = content.getLong("sa_saleareaid");
         if (sa_salestargetbillid == 0) {
             Long year = content.getLongValue("year");
-            Long assessmentindicators = content.getLongValue("assessmentindicators");
             Rows rows = dbConnect.runSqlQuery("SELECT DISTINCT sa_salestargetbillid from sa_salestarget WHERE year = " + year + " and sa_saleareaid=" + sa_saleareaid + " and targettype ='人员目标' and siteid='" + siteid + "'");
             if (rows.isNotEmpty()) {
                 sa_salestargetbillid = rows.get(0).getLong("sa_salestargetbillid");

+ 244 - 7
src/custom/restcontroller/webmanage/sale/salestarget/personnelstatistics.java

@@ -7,6 +7,7 @@ import common.YosException;
 import common.annotation.API;
 import common.annotation.CACHEING;
 import common.data.*;
+import org.apache.commons.lang.StringUtils;
 import org.apache.poi.xssf.usermodel.*;
 import restcontroller.R;
 import restcontroller.webmanage.saletool.orderclue.ExportExcel;
@@ -106,29 +107,49 @@ public class personnelstatistics extends Controller {
 //        return getSucReturnObject().setData(arearows).toString();
 //    }
 
+    @API(title = "查询当前账户负责的区域", apiversion = R.ID20231108160203.v1.class)
+    @CACHEING
+    public String queryList_currentArea() throws YosException {
+        SQLFactory hrsqlFactory = new SQLFactory(this, "业务员列表查询");
+        hrsqlFactory.addParameter("siteid", siteid);
+        hrsqlFactory.addParameter("hrid", hrid);
+        Rows hrrows = dbConnect.runSqlQuery(hrsqlFactory.getSQL());
+        return getSucReturnObject().setData(hrrows).toString();
+    }
+
+
     @API(title = "人员目标统计(区域经理)", apiversion = R.ID20231018103203.v1.class)
     @CACHEING
     public String queryList_areamanager() throws YosException {
         //年份
         Calendar cal = Calendar.getInstance();
         int year = cal.get(Calendar.YEAR);
-
-        Rows billRows = dbConnect.runSqlQuery("SELECT sa_salestargetbillid,assessmentindicators FROM sa_salestargetbill WHERE  year="+year+"  AND siteid ='" + siteid + "' and  targettype = '人员目标'");
+        long sa_saleareaid=content.getLongValue("sa_saleareaid");
+        Rows billRows = dbConnect.runSqlQuery("SELECT sa_salestargetbillid,assessmentindicators,statisticaldimension,sa_accountclassids FROM sa_salestargetbill WHERE  year="+year+"  AND siteid ='" + siteid + "' and  targettype = '人员目标'");
 
         SQLFactory hrsqlFactory = new SQLFactory(this, "业务员列表查询");
         hrsqlFactory.addParameter("siteid", siteid);
         hrsqlFactory.addParameter("hrid", hrid);
         Rows hrrows = dbConnect.runSqlQuery(hrsqlFactory.getSQL());
-        long sa_saleareaid=0;
-        if(hrrows.isNotEmpty()){
-            sa_saleareaid=hrrows.get(0).getLong("sa_saleareaid");
+
+        if(sa_saleareaid==0){
+            if(hrrows.isNotEmpty()){
+                sa_saleareaid=hrrows.get(0).getLong("sa_saleareaid");
+            }
         }
+
         //考核指标类型
         long sa_salestargetbillid = 0;
         String assessmentindicators="";
+        //统计维度
+        String statisticaldimension="";
+        //账户
+        String sa_accountclassids="";
         if (billRows.isNotEmpty()) {
             sa_salestargetbillid=billRows.get(0).getLong("sa_salestargetbillid");
             assessmentindicators=billRows.get(0).getString("assessmentindicators");
+            statisticaldimension=billRows.get(0).getString("statisticaldimension");
+            sa_accountclassids=billRows.get(0).getString("sa_accountclassids");
         }
 
         /*
@@ -193,9 +214,26 @@ public class personnelstatistics extends Controller {
         Rows actualRows = new Rows();
         //开票
         if (assessmentindicators .equals("开票")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-开票");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(statisticaldimension.equals("订单审核")){
+                where1=where1+" and t2.status='审核'";
+            }else{
+                where1=where1+" and t2.status='提交'";
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
@@ -203,27 +241,78 @@ public class personnelstatistics extends Controller {
         }
         //订单
         if (assessmentindicators .equals("订单")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-订单");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(statisticaldimension.equals("订单审核")){
+                where1=where1+" and t2.status='审核'";
+            }else{
+                where1=where1+" and t2.status='提交'";
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
         //出货
         if (assessmentindicators .equals("出货")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-出货");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
         //收款
         if (assessmentindicators .equals("收款")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-收款");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(StringUtils.isNotBlank(statisticaldimension)){
+                if(isJSONArray(statisticaldimension)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(statisticaldimension);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1= where1+ " and (t1.class in"+jsonArrayResult+" or t1.subclass in"+jsonArrayResult+")";
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t1.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
@@ -284,7 +373,7 @@ public class personnelstatistics extends Controller {
         Calendar cal = Calendar.getInstance();
         int year = cal.get(Calendar.YEAR);
 
-        Rows billRows = dbConnect.runSqlQuery("SELECT sa_salestargetbillid,assessmentindicators FROM sa_salestargetbill WHERE  year="+year+"  AND siteid ='" + siteid + "' and  targettype = '人员目标'");
+        Rows billRows = dbConnect.runSqlQuery("SELECT sa_salestargetbillid,assessmentindicators,statisticaldimension,sa_accountclassids FROM sa_salestargetbill WHERE  year="+year+"  AND siteid ='" + siteid + "' and  targettype = '人员目标'");
 
         SQLFactory hrsqlFactory = new SQLFactory(this, "业务员列表查询");
         hrsqlFactory.addParameter("siteid", siteid);
@@ -302,9 +391,15 @@ public class personnelstatistics extends Controller {
         //考核指标类型
         long sa_salestargetbillid = 0;
         String assessmentindicators="";
+        //统计维度
+        String statisticaldimension="";
+        //账户
+        String sa_accountclassids="";
         if (billRows.isNotEmpty()) {
             sa_salestargetbillid=billRows.get(0).getLong("sa_salestargetbillid");
             assessmentindicators=billRows.get(0).getString("assessmentindicators");
+            statisticaldimension=billRows.get(0).getString("statisticaldimension");
+            sa_accountclassids=billRows.get(0).getString("sa_accountclassids");
         }
 
         /*
@@ -369,9 +464,26 @@ public class personnelstatistics extends Controller {
         Rows actualRows = new Rows();
         //开票
         if (assessmentindicators .equals("开票")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-开票");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(statisticaldimension.equals("订单审核")){
+                where1=where1+" and t2.status='审核'";
+            }else{
+                where1=where1+" and t2.status='提交'";
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
@@ -379,27 +491,78 @@ public class personnelstatistics extends Controller {
         }
         //订单
         if (assessmentindicators .equals("订单")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-订单");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(statisticaldimension.equals("订单审核")){
+                where1=where1+" and t2.status='审核'";
+            }else{
+                where1=where1+" and t2.status='提交'";
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
         //出货
         if (assessmentindicators .equals("出货")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-出货");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
         //收款
         if (assessmentindicators .equals("收款")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-收款");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(StringUtils.isNotBlank(statisticaldimension)){
+                if(isJSONArray(statisticaldimension)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(statisticaldimension);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1= where1+ " and (t1.class in"+jsonArrayResult+" or t1.subclass in"+jsonArrayResult+")";
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t1.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
@@ -453,13 +616,19 @@ public class personnelstatistics extends Controller {
     public String queryList() throws YosException {
         //年份
         Long sa_salestargetbillid = content.getLong("sa_salestargetbillid");
-        Rows billRows = dbConnect.runSqlQuery("SELECT assessmentindicators,year FROM sa_salestargetbill WHERE sa_salestargetbillid=" + sa_salestargetbillid + "  AND siteid ='" + siteid + "'");
+        Rows billRows = dbConnect.runSqlQuery("SELECT assessmentindicators,year,statisticaldimension,sa_accountclassids FROM sa_salestargetbill WHERE sa_salestargetbillid=" + sa_salestargetbillid + "  AND siteid ='" + siteid + "'");
 
         //考核指标类型
         String assessmentindicators = "";
+        //统计维度
+        String statisticaldimension="";
+        //账户
+        String sa_accountclassids="";
         long year = 2023;
         if (billRows.isNotEmpty()) {
             assessmentindicators=billRows.get(0).getString("assessmentindicators");
+            statisticaldimension=billRows.get(0).getString("statisticaldimension");
+            sa_accountclassids=billRows.get(0).getString("sa_accountclassids");
             year=billRows.get(0).getLong("year");
         }
 
@@ -537,9 +706,26 @@ public class personnelstatistics extends Controller {
         Rows actualRows = new Rows();
         //开票
         if (assessmentindicators .equals("开票")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-开票");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(statisticaldimension.equals("订单审核")){
+                where1=where1+" and t2.status='审核'";
+            }else{
+                where1=where1+" and t2.status='提交'";
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
@@ -547,31 +733,82 @@ public class personnelstatistics extends Controller {
         }
         //订单
         if (assessmentindicators .equals("订单")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-订单");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(statisticaldimension.equals("订单审核")){
+                where1=where1+" and t2.status='审核'";
+            }else{
+                where1=where1+" and t2.status='提交'";
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
         //出货
         if (assessmentindicators .equals("出货")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-出货");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t2.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
         //收款
         if (assessmentindicators .equals("收款")) {
+            String where1 =" 1=1 ";
             sqlFactory = new SQLFactory(this, "人员目标统计-收款");
             sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
             sqlFactory.addParameter_SQL("where", where);
+            if(StringUtils.isNotBlank(statisticaldimension)){
+                if(isJSONArray(statisticaldimension)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(statisticaldimension);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1= where1+ " and (t1.class in"+jsonArrayResult+" or t1.subclass in"+jsonArrayResult+")";
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            if(StringUtils.isNotBlank(sa_accountclassids)){
+                if(isJSONArray(sa_accountclassids)){
+                    JSONArray jsonArrayResult = JSONArray.parseArray(sa_accountclassids);
+                    if(!jsonArrayResult.isEmpty()){
+                        where1=where1+ " and t1.sa_accountclassid in"+jsonArrayResult;
+                        where1 = where1.replace("[", "(").replace("]", ")");
+                    }
+
+                }
+            }
+            sqlFactory.addParameter_SQL("where1",where1);
             sqlFactory.addParameter("siteid", siteid);
             sqlFactory.addParameter("year", year);
             actualRows = dbConnect.runSqlQuery(sqlFactory);
         }
+
         if(!saleareas.isEmpty() && saleareas.size()==1){
             for (Row row :actualRows) {
                 if(row.getLong("parentid")==0){