소스 검색

业绩目标优化

hu 1 개월 전
부모
커밋
ca24afff2c

+ 8 - 12
src/custom/beans/salearea/SQL/下级区域获取.sql

@@ -1,17 +1,13 @@
 with recursive salearea as (
-    select t1.sa_saleareaid,t1.areaname,t2.name
-    from sa_salearea t1
-    left join ((select t2.sa_saleareaid,GROUP_CONCAT(t3.name) name from sa_salearea_hr t2
-                   left join sys_hr t3 on t2.siteid = t3.siteid and t2.hrid = t3.hrid group by t2.sa_saleareaid)) t2 on t1.sa_saleareaid=t2.sa_saleareaid
-    where t1.siteid = $siteid$
-      and t1.sa_saleareaid = $sa_saleareaid$
+    select sa_saleareaid,areaname
+    from sa_salearea
+    where siteid = $siteid$
+      and sa_saleareaid = $sa_saleareaid$
     union all
-    select t2.sa_saleareaid,t2.areaname,t3.name
+    select t2.sa_saleareaid,t2.areaname
     from salearea t1
              inner join sa_salearea t2 on t1.sa_saleareaid = t2.parentid and t2.siteid = $siteid$
-             left join ((select t2.sa_saleareaid,GROUP_CONCAT(t3.name) name from sa_salearea_hr t2
-                            left join sys_hr t3 on t2.siteid = t3.siteid and t2.hrid = t3.hrid group by t2.sa_saleareaid)) t3 on t2.sa_saleareaid=t3.sa_saleareaid
-
 )
-select sa_saleareaid,areaname,name
-from salearea
+select sa_saleareaid
+from salearea
+where sa_saleareaid !=$sa_saleareaid$

+ 12 - 16
src/custom/beans/salearea/SQL/下级区域获取_批量.sql

@@ -1,17 +1,13 @@
 with recursive salearea as (
-    select t1.sa_saleareaid,t1.areaname,t2.name
-    from sa_salearea t1
-    left join ((select t2.sa_saleareaid,GROUP_CONCAT(t3.name) name from sa_salearea_hr t2
-                   left join sys_hr t3 on t2.siteid = t3.siteid and t2.hrid = t3.hrid group by t2.sa_saleareaid)) t2 on t1.sa_saleareaid=t2.sa_saleareaid
-    where t1.siteid = $siteid$
-      and t1.sa_saleareaid in $sa_saleareaid$
-    union all
-    select t2.sa_saleareaid,t2.areaname,t3.name
-    from salearea t1
-             inner join sa_salearea t2 on t1.sa_saleareaid = t2.parentid and t2.siteid = $siteid$
-             left join ((select t2.sa_saleareaid,GROUP_CONCAT(t3.name) name from sa_salearea_hr t2
-                            left join sys_hr t3 on t2.siteid = t3.siteid and t2.hrid = t3.hrid group by t2.sa_saleareaid)) t3 on t2.sa_saleareaid=t3.sa_saleareaid
-
-)
-select sa_saleareaid,areaname,name
-from salearea
+    select sa_saleareaid,areaname
+    from sa_salearea
+    where siteid = $siteid$
+      and sa_saleareaid in $sa_saleareaid$
+union all
+select t2.sa_saleareaid,t2.areaname
+from salearea t1
+         inner join sa_salearea t2 on t1.sa_saleareaid = t2.parentid and t2.siteid = $siteid$
+    )
+select sa_saleareaid
+from salearea
+where sa_saleareaid not in $sa_saleareaid$

+ 38 - 1
src/custom/restcontroller/webmanage/sale/salestarget_cucu/SQL/回款明细.sql

@@ -56,6 +56,43 @@ from sa_aftersalesmag t1
 where t1.siteid = $siteid$
           and t1.status = '复核' and t2.reason='木制品退货'
           and year(t1.recheckdate) =$year$) t
+group by sys_enterpriseid, submitdate),
+    orders1 as (select t.sys_enterpriseid, submitdate, sum(t.amount) amount
+from (select t1.sys_enterpriseid, t2.amount, date_format(t1.checkdate, '%m') submitdate
+    from sa_order t1
+    inner join sa_orderitems t2
+    on t1.siteid = t2.siteid and t1.sa_orderid = t2.sa_orderid
+    inner join plm_item t3
+    on t2.siteid = t3.siteid and t2.itemid = t3.itemid
+    left join sa_agents t4
+    on t1.siteid = t4.siteid and t1.sys_enterpriseid = t4.sys_enterpriseid
+    where t1.siteid = $siteid$
+    and t1.status in ('审核', '关闭','手工关闭') and t3.financeclasstype='木制品'
+    and year(t1.checkdate) =$year$
+
+    union all
+    select t1.sys_enterpriseid, 0 - (t2.undeliqty * t2.price) , date_format(t1.closedate, '%m')
+    from sa_order t1
+    inner join sa_orderitems t2
+    on t1.siteid = t2.siteid and t1.sa_orderid = t2.sa_orderid
+    inner join plm_item t3
+    on t2.siteid = t3.siteid and t2.itemid = t3.itemid
+    left join sa_agents t4
+    on t1.siteid = t4.siteid and t1.sys_enterpriseid = t4.sys_enterpriseid
+    where t1.siteid = $siteid$
+    and t1.status = '手工关闭' and t3.financeclasstype='木制品'
+    and year(t1.closedate) =$year$
+
+    union all
+    select t1.sys_enterpriseid, -t2.amount, date_format(t1.recheckdate, '%m')
+    from sa_aftersalesmag t1
+    inner join sa_aftersalesmag_items t2
+    on t1.siteid = t2.siteid and t1.sa_aftersalesmagid = t2.sa_aftersalesmagid
+    left join sa_agents t4
+    on t1.siteid = t4.siteid and t1.sys_enterpriseid = t4.sys_enterpriseid
+    where t1.siteid = $siteid$
+    and t1.status = '复核' and t2.reason='木制品退货'
+    and year(t1.recheckdate) =$year$) t
 group by sys_enterpriseid, submitdate)
 select distinct t1.enterprisename,
                 t1.siteid,
@@ -565,7 +602,7 @@ from sys_enterprise t1
                                          from cashbill1 t1
                                          group by sys_enterpriseid) t3 on t5.sys_enterpriseid = t3.sys_enterpriseid
                               left join (select t.sys_enterpriseid, sum(t.amount) amount
-                                         from orders t
+                                         from orders1 t
                                          group by t.sys_enterpriseid) t4
                                         on t5.sys_enterpriseid = t4.sys_enterpriseid
                               left join (select sys_enterpriseid, sum(amount) amount

+ 23 - 8
src/custom/restcontroller/webmanage/sale/salestarget_cucu/performancetargetboard.java

@@ -9,6 +9,7 @@ import common.data.*;
 import restcontroller.R;
 import restcontroller.webmanage.sale.salestarget.personnel;
 
+import javax.sql.RowSetReader;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
@@ -33,7 +34,7 @@ public class performancetargetboard extends Controller {
 
     @API(title = "获取当前业务员区域", apiversion = R.ID2025103010165903.v1.class)
     public String querycurrentAreaList() throws YosException {
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_hr","name");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_hr","name","hrid");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.inner, "sa_salearea_hr", "t2", "t1.siteid = t2.siteid and t1.hrid = t2.hrid");
         querySQL.addJoinTable(JOINTYPE.inner, "sa_salearea", "t3", " t3.siteid = t2.siteid and t3.sa_saleareaid = t2.sa_saleareaid", "sa_saleareaid","areaname");
@@ -48,10 +49,10 @@ public class performancetargetboard extends Controller {
     @API(title = "获取当前业务员区域及其下属区域", apiversion = R.ID2025103009445603.v1.class)
     public String querySalerAreaList() throws YosException {
 
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_hr");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_hr","name","hrid");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.inner, "sa_salearea_hr", "t2", "t1.siteid = t2.siteid and t1.hrid = t2.hrid");
-        querySQL.addJoinTable(JOINTYPE.inner, "sa_salearea", "t3", " t3.siteid = t2.siteid and t3.sa_saleareaid = t2.sa_saleareaid", "sa_saleareaid");
+        querySQL.addJoinTable(JOINTYPE.inner, "sa_salearea", "t3", " t3.siteid = t2.siteid and t3.sa_saleareaid = t2.sa_saleareaid", "sa_saleareaid","areaname");
 
         querySQL.setWhere("t1.siteid", siteid);
         querySQL.setWhere("t1.hrid", hrid);
@@ -67,13 +68,26 @@ public class performancetargetboard extends Controller {
 
         if(rows.isNotEmpty()){
              arearows =getSubSaleAreas(this,list);
+             Rows saleareahrrows  =dbConnect.runSqlQuery("select t1.name,t2.sa_saleareaid,t1.hrid from sys_hr t1 inner join sa_salearea_hr t2 on t1.siteid = t2.siteid and t1.hrid = t2.hrid where t1.siteid='"+siteid+"'");
+             RowsMap saleareahrRowsMap =saleareahrrows.toRowsMap("sa_saleareaid");
+             for (Row row :arearows){
+                 if(saleareahrRowsMap.containsKey(row.getString("sa_saleareaid"))){
+                     for(Row row1 :saleareahrRowsMap.get(row.getString("sa_saleareaid"))){
+                         row.put("name",row1.getString("name"));
+                         row.put("hrid",row1.getString("hrid"));
+                         rows.add(row);
+                     }
+                 }
+             }
         }
-        return getSucReturnObject().setData(arearows).toString();
+
+        return getSucReturnObject().setData(rows).toString();
 
     }
 
     @API(title = "查询业务员月度指标", apiversion = R.ID2025103010192003.v1.class)
     public String queryperformancetarget_month() throws YosException {
+        long hrid= content.getLong("hrid");
         long sa_saleareaid= content.getLong("sa_saleareaid");
         long year= content.getLong("year");
         long month= content.getLong("month");
@@ -97,7 +111,7 @@ public class performancetargetboard extends Controller {
         }
         SQLFactory personnelsqlFactory = new SQLFactory(this, "人员-目标详情列表");
         personnelsqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
-        personnelsqlFactory.addParameter_SQL("where", " t.sa_saleareaid="+sa_saleareaid);
+        personnelsqlFactory.addParameter_SQL("where", " t.hrid="+hrid);
         personnelsqlFactory.addParameter("siteid", siteid);
         Rows salestargetrows = dbConnect.runSqlQuery(personnelsqlFactory.getSQL());
         BigDecimal rw_month=BigDecimal.ZERO;
@@ -166,7 +180,7 @@ public class performancetargetboard extends Controller {
 
     @API(title = "查询业务员季度指标", apiversion = R.ID2025103010193903.v1.class)
     public String queryperformancetarget_quarter() throws YosException {
-
+        long hrid= content.getLong("hrid");
         long sa_saleareaid= content.getLong("sa_saleareaid");
         long year= content.getLong("year");
         int selectmonth= content.getIntValue("month");
@@ -189,7 +203,7 @@ public class performancetargetboard extends Controller {
         }
         SQLFactory personnelsqlFactory = new SQLFactory(this, "人员-目标详情列表");
         personnelsqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
-        personnelsqlFactory.addParameter_SQL("where", " t.sa_saleareaid="+sa_saleareaid);
+        personnelsqlFactory.addParameter_SQL("where", " t.hrid="+hrid);
         personnelsqlFactory.addParameter("siteid", siteid);
         Rows salestargetrows = dbConnect.runSqlQuery(personnelsqlFactory.getSQL());
         BigDecimal rw_quarter=BigDecimal.ZERO;
@@ -265,6 +279,7 @@ public class performancetargetboard extends Controller {
 
     @API(title = "查询业务员总指标", apiversion = R.ID2025103010195403.v1.class)
     public String queryperformancetarget_total() throws YosException {
+        long hrid= content.getLong("hrid");
         long sa_saleareaid= content.getLong("sa_saleareaid");
         long year= content.getLong("year");
         JSONArray months = content.getJSONArray("months");
@@ -288,7 +303,7 @@ public class performancetargetboard extends Controller {
         }
         SQLFactory personnelsqlFactory = new SQLFactory(this, "人员-目标详情列表");
         personnelsqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
-        personnelsqlFactory.addParameter_SQL("where", " t.sa_saleareaid="+sa_saleareaid);
+        personnelsqlFactory.addParameter_SQL("where", " t.hrid="+hrid);
         personnelsqlFactory.addParameter("siteid", siteid);
         Rows salestargetrows = dbConnect.runSqlQuery(personnelsqlFactory.getSQL());
         BigDecimal rw_all=BigDecimal.ZERO;