Jelajahi Sumber

小程序人员/医院/经销商目标 产品类别

wu 6 hari lalu
induk
melakukan
8d53e8dfce

+ 5 - 0
src/custom/restcontroller/R.java

@@ -7748,6 +7748,11 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2026010714131502 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 24 - 0
src/custom/restcontroller/webmanage/sale/salestarget2/SQL/小程序人员目标-产品类别.sql

@@ -0,0 +1,24 @@
+SELECT
+    t6.itemclassname,
+    sum(ROUND(m1 * price, 2))  m1amount,
+    sum(ROUND(m2 * price, 2))  m2amount,
+    sum(ROUND(m3 * price, 2))  m3amount,
+    sum(ROUND(m4 * price, 2))  m4amount,
+    sum(ROUND(m5 * price, 2))  m5amount,
+    sum(ROUND(m6 * price, 2))  m6amount,
+    sum(ROUND(m7 * price, 2))  m7amount,
+    sum(ROUND(m8 * price, 2))  m8amount,
+    sum(ROUND(m9 * price, 2))  m9amount,
+    sum(ROUND(m10 * price, 2)) m10amount,
+    sum(ROUND(m11 * price, 2)) m11amount,
+    sum(ROUND(m12 * price, 2)) m12amount
+from sa_salestargetbill t1
+         INNER JOIN sa_salestarget t2 ON t2.sa_salestargetbillid = t1.sa_salestargetbillid
+         INNER JOIN sys_hr t3 on t3.userid = t1.createuserid
+         INNER JOIN sa_salearea_hr t4 ON t4.hrid = t3.hrid
+         INNER JOIN sa_itemsaleclass t5 ON t5.itemid=t2.itemid
+         INNER JOIN plm_itemclass t6 ON t6.itemclassid=t5.itemclassid
+WHERE t1.year = $year$
+  and t1.`status` = '审核'
+  and t1.siteid = $siteid$ and $where$ and t1.createuserid =$userid$
+GROUP BY  t6.itemclassname

+ 9 - 0
src/custom/restcontroller/webmanage/sale/salestarget2/SQL/小程序人员订单-产品类别.sql

@@ -0,0 +1,9 @@
+SELECT  sum(t2.amount) amount, DATE_FORMAT(t1.checkdate, '%Y-%m') ym,t6.itemclassname
+from sa_order t1
+         INNER JOIN sa_orderitems t2 ON t2.sa_orderid = t1.sa_orderid and t2.siteid = t1.siteid
+         INNER JOIN sys_hr t3 ON t3.hrid=t1.saler_hrid
+         INNER JOIN sa_salearea_hr t4 ON t4.hrid = t3.hrid
+         INNER JOIN sa_itemsaleclass t5 ON t5.itemid=t2.itemid
+         INNER JOIN plm_itemclass t6 ON t6.itemclassid=t5.itemclassid
+WHERE t1.siteid = $siteid$ and t1.`status` in ('审核', '关闭') and YEAR (t1.checkdate) in ($year$, $befyear$) and $where$ and t3.userid =$userid$
+GROUP BY DATE_FORMAT(t1.checkdate, '%Y-%m'),t6.itemclassname

+ 22 - 0
src/custom/restcontroller/webmanage/sale/salestarget2/SQL/小程序医院目标-产品类别.sql

@@ -0,0 +1,22 @@
+SELECT
+    t6.itemclassname,
+    sum(ROUND(m1 * price, 2))  m1amount,
+    sum(ROUND(m2 * price, 2))  m2amount,
+    sum(ROUND(m3 * price, 2))  m3amount,
+    sum(ROUND(m4 * price, 2))  m4amount,
+    sum(ROUND(m5 * price, 2))  m5amount,
+    sum(ROUND(m6 * price, 2))  m6amount,
+    sum(ROUND(m7 * price, 2))  m7amount,
+    sum(ROUND(m8 * price, 2))  m8amount,
+    sum(ROUND(m9 * price, 2))  m9amount,
+    sum(ROUND(m10 * price, 2)) m10amount,
+    sum(ROUND(m11 * price, 2)) m11amount,
+    sum(ROUND(m12 * price, 2)) m12amount
+from sa_salestargetbill t1
+         INNER JOIN sa_salestarget t2 ON t2.sa_salestargetbillid = t1.sa_salestargetbillid
+         INNER JOIN sa_itemsaleclass t5 ON t5.itemid=t2.itemid
+         INNER JOIN plm_itemclass t6 ON t6.itemclassid=t5.itemclassid
+WHERE t1.year = $year$
+  and t1.`status` = '审核'
+  and t1.siteid = $siteid$   and t1.sa_customersid=$sa_customersid$
+GROUP BY  t6.itemclassname

+ 1 - 1
src/custom/restcontroller/webmanage/sale/salestarget2/SQL/小程序医院目标.sql

@@ -15,4 +15,4 @@ from sa_salestargetbill t1
          INNER JOIN sa_salestarget t2 ON t2.sa_salestargetbillid = t1.sa_salestargetbillid
 WHERE t1.year = $year$
   and t1.`status` = '审核'
-  and t1.siteid = $siteid$   and t1.sa_customersid>$sa_customersid$
+  and t1.siteid = $siteid$   and t1.sa_customersid=$sa_customersid$

+ 7 - 0
src/custom/restcontroller/webmanage/sale/salestarget2/SQL/小程序医院订单-产品类别.sql

@@ -0,0 +1,7 @@
+SELECT  sum(t2.amount) amount, DATE_FORMAT(t1.checkdate, '%Y-%m') ym,t6.itemclassname
+from sa_order t1
+         INNER JOIN sa_orderitems t2 ON t2.sa_orderid = t1.sa_orderid and t2.siteid = t1.siteid
+         INNER JOIN sa_itemsaleclass t5 ON t5.itemid=t2.itemid
+         INNER JOIN plm_itemclass t6 ON t6.itemclassid=t5.itemclassid
+WHERE t1.siteid = $siteid$ and t1.`status` in ('审核', '关闭') and YEAR (t1.checkdate) in ($year$, $befyear$)  and t1.sa_customersid =$sa_customersid$
+GROUP BY DATE_FORMAT(t1.checkdate, '%Y-%m'),t6.itemclassname

+ 23 - 0
src/custom/restcontroller/webmanage/sale/salestarget2/SQL/小程序经销商目标-产品类别.sql

@@ -0,0 +1,23 @@
+SELECT
+    t6.itemclassname,
+    sum(ROUND(m1 * price, 2))  m1amount,
+    sum(ROUND(m2 * price, 2))  m2amount,
+    sum(ROUND(m3 * price, 2))  m3amount,
+    sum(ROUND(m4 * price, 2))  m4amount,
+    sum(ROUND(m5 * price, 2))  m5amount,
+    sum(ROUND(m6 * price, 2))  m6amount,
+    sum(ROUND(m7 * price, 2))  m7amount,
+    sum(ROUND(m8 * price, 2))  m8amount,
+    sum(ROUND(m9 * price, 2))  m9amount,
+    sum(ROUND(m10 * price, 2)) m10amount,
+    sum(ROUND(m11 * price, 2)) m11amount,
+    sum(ROUND(m12 * price, 2)) m12amount
+from sa_salestargetbill t1
+         INNER JOIN sa_salestarget t2 ON t2.sa_salestargetbillid = t1.sa_salestargetbillid
+         INNER JOIN sa_agents_hospital t3 on t3.sa_hospitaldepid=t2.sa_hospitaldepid
+         INNER JOIN sa_itemsaleclass t5 ON t5.itemid=t2.itemid
+         INNER JOIN plm_itemclass t6 ON t6.itemclassid=t5.itemclassid
+WHERE t1.year = $year$
+  and t1.`status` = '审核'
+  and t1.siteid = $siteid$  and t3.sa_agentsid =$sa_agentsid$
+GROUP BY  t6.itemclassname

+ 7 - 0
src/custom/restcontroller/webmanage/sale/salestarget2/SQL/小程序经销商订单-产品类别.sql

@@ -0,0 +1,7 @@
+SELECT  sum(t2.amount) amount, DATE_FORMAT(t1.checkdate, '%Y-%m') ym,t6.itemclassname
+from sa_order t1
+         INNER JOIN sa_orderitems t2 ON t2.sa_orderid = t1.sa_orderid and t2.siteid = t1.siteid
+         INNER JOIN sa_itemsaleclass t5 ON t5.itemid=t2.itemid
+         INNER JOIN plm_itemclass t6 ON t6.itemclassid=t5.itemclassid
+WHERE t1.siteid = $siteid$ and t1.`status` in ('审核', '关闭') and YEAR (t1.checkdate) in ($year$, $befyear$)  and t1.sa_agentsid =$sa_agentsid$
+GROUP BY DATE_FORMAT(t1.checkdate, '%Y-%m'),t6.itemclassname

+ 101 - 0
src/custom/restcontroller/webmanage/sale/salestarget2/salestargetstatistics.java

@@ -971,6 +971,107 @@ public class salestargetstatistics extends Controller {
         return getSucReturnObject().setData(arearows).toString();
     }
 
+    @API(title = "小程序人员/医院/经销商产品类别", apiversion = R.ID2026010714131502.v1.class)
+    public String mATargetCategory() throws YosException {
+        int type = content.getIntValue("type", 1);
+        int year = content.getIntValue("year");
+        int befyear = year - 1;
+        int month_start = content.getIntValue("month_start");
+        int month_end = content.getIntValue("month_end");
+        String yearMonthStr = year + "-12";
+        Long sa_saleareaid = content.getLongValue("sa_saleareaid");
+        Long userid = content.getLongValue("userid");
+        Long sa_customersid = content.getLongValue("sa_customersid");
+        Long sa_agentsid = content.getLongValue("sa_agentsid");
+
+        ArrayList<Long> sa_saleareaids = new ArrayList<>();
+        if (sa_saleareaid == 0) {
+            Rows rows = dbConnect.runSqlQuery("SELECT sa_saleareaid from sa_salearea_hr  WHERE  siteid='" + siteid + "' and hrid=" + hrid);
+            sa_saleareaids = rows.toArrayList("sa_saleareaid", new ArrayList<>());
+            if (sa_saleareaids.size() == 0) {
+                rows = dbConnect.runSqlQuery("SELECT sa_saleareaid from sa_salearea  WHERE  siteid='" + siteid + "' and level=1");
+                sa_saleareaids = rows.toArrayList("sa_saleareaid", new ArrayList<>());
+            }
+        } else {
+            sa_saleareaids.add(sa_saleareaid);
+        }
+
+        ArrayList<Long> subSaleAreaIds = SaleArea.getSubSaleAreaIds(this, sa_saleareaids);
+        subSaleAreaIds.add(sa_saleareaid);
+        StringBuffer where = new StringBuffer(" 1=1 ");
+        String sql = " and t4.sa_saleareaid in " + subSaleAreaIds + " ";
+        sql = sql.replace("[", "(").replace("]", ")");
+        where.append(sql);
+
+        Rows itemclassrows = dbConnect.runSqlQuery("SELECT DISTINCT itemclassname from plm_itemclass WHERE siteid='" + siteid + "' ");
+
+
+        SQLFactory sqlFactory = new SQLFactory(this, "小程序人员订单-产品类别");
+        if (type == 1) {
+            sqlFactory = new SQLFactory(this, "小程序人员订单-产品类别");
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("userid", userid);
+        }
+        if (type == 2) {
+            sqlFactory = new SQLFactory(this, "小程序医院订单-产品类别");
+            sqlFactory.addParameter("sa_customersid", sa_customersid);
+        }
+        if (type == 3) {
+            sqlFactory = new SQLFactory(this, "小程序经销商订单-产品类别");
+            sqlFactory.addParameter("sa_agentsid", sa_agentsid);
+        }
+        sqlFactory.addParameter("siteid", siteid);
+        sqlFactory.addParameter("year", year);
+        sqlFactory.addParameter("befyear", befyear);
+        Rows rows = dbConnect.runSqlQuery(sqlFactory);
+        RowsMap salesRowsMap = rows.toRowsMap("itemclassname");
+
+        sqlFactory = new SQLFactory(this, "小程序人员目标-产品类别");
+        if (type == 1) {
+            sqlFactory = new SQLFactory(this, "小程序人员目标-产品类别");
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("userid", userid);
+        }
+        if (type == 2) {
+            sqlFactory = new SQLFactory(this, "小程序医院目标-产品类别");
+            sqlFactory.addParameter("sa_customersid", sa_customersid);
+        }
+        if (type == 3) {
+            sqlFactory = new SQLFactory(this, "小程序经销商目标-产品类别");
+            sqlFactory.addParameter("sa_agentsid", sa_agentsid);
+        }
+        sqlFactory.addParameter("siteid", siteid);
+        sqlFactory.addParameter("year", year);
+        Rows targetrows = dbConnect.runSqlQuery(sqlFactory);
+        RowsMap targetRowsMap = targetrows.toRowsMap("itemclassname");
+
+        ArrayList<String> itemclassnames = itemclassrows.toArrayList("itemclassname");
+        ArrayList<String> alldates = yearToDate(yearMonthStr);
+        Rows datas = new Rows();
+        for (String itemclassname : itemclassnames) {
+            Rows salesRows = salesRowsMap.getOrDefault(itemclassname, new Rows());
+            RowsMap dateDateRow = salesRows.toRowsMap("ym");
+            Rows targetRows = targetRowsMap.getOrDefault(itemclassname, new Rows());
+            for (String date : alldates) {
+                Rows dateDate = dateDateRow.getOrDefault(date, new Rows());
+                Row row = new Row();
+                row.put("itemclassname", itemclassname);
+                processDataRows(datas, row, dateDate, targetRows, date);
+            }
+        }
+
+        RowsMap dataRowsMap = datas.toRowsMap("itemclassname");
+
+        for (Row arearow : itemclassrows) {
+            Rows dataRows = dataRowsMap.getOrDefault(arearow.getString("itemclassname"), new Rows());
+            //计算范围
+            calculate("m", arearow, dataRows, getMonths(year, month_start, month_end));
+        }
+
+        return getSucReturnObject().setData(itemclassrows).toString();
+    }
+
+
     @API(title = "查询当前账号的营销区域", apiversion = R.ID2026010513574702.v1.class)
     public String queryCurrentUserarea() throws YosException {
         Rows rows = dbConnect.runSqlQuery("SELECT t1.*FROM sa_salearea t1 INNER JOIN sa_salearea_hr t2 ON t2.sa_saleareaid=t1.sa_saleareaid WHERE t2.hrid=" + hrid + " and t1.siteid='" + siteid + "'");