Explorar o código

订单物料账户bug修复及区域经理查询业绩目标更新

hu hai 1 ano
pai
achega
a1a9ae5e9c

+ 12 - 1
src/custom/restcontroller/R.java

@@ -5273,7 +5273,18 @@ public class R {
         public static class v1 {
         }
     }
-
+    public static class ID20231018093803 {
+        public static class v1 {
+        }
+    }
+    public static class ID20231018103203 {
+        public static class v1 {
+        }
+    }
+    public static class ID20231018103303 {
+        public static class v1 {
+        }
+    }
 
 }
 

+ 1 - 1
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -206,7 +206,7 @@ public class Order extends Controller {
                                 "select accountno,accountname from sa_accountclass where sa_accountclassid=" + content.getLongValue("sa_accountclassid"));
                 if (accountclassRows.isNotEmpty()) {
                     if (accountclassRows.get(0).getString("accountname").equals("物料账户")) {
-                        Rows wuliaoRows = dbConnect.runSqlQuery("select * from sa_orderitems t1 where exists(select 1 from sa_itemsaleclass t left join plm_itemclass t2 on t.itemclassid=t2.itemclassid and t.siteid=t2.siteid  where t.itemid=t1.itemid and t2.itemclassname='物料') and t1.sa_orderid=" + sa_orderid);
+                        Rows wuliaoRows = dbConnect.runSqlQuery("select * from sa_orderitems t1 where exists(select 1 from plm_item t left join plm_itemclass t2 on t.marketingcategory=t2.itemclassid and t.siteid=t2.siteid where t.itemid=t1.itemid and t2.itemclassname='物料') and t1.sa_orderid=" + sa_orderid);
                         Rows itemRows = dbConnect.runSqlQuery("select * from sa_orderitems where sa_orderid=" + sa_orderid);
                         if (wuliaoRows.size() != itemRows.size()) {
                             return getErrReturnObject().setErrMsg("物料账户只能添加物料商品,请检查").toString();

+ 12 - 0
src/custom/restcontroller/webmanage/sale/salestarget/SQL/下级区域获取.sql

@@ -0,0 +1,12 @@
+with recursive salearea as (
+    select sa_saleareaid,areaname,areafullname
+    from sa_salearea
+    where siteid = $siteid$
+      and sa_saleareaid in $sa_saleareaid$
+    union all
+    select t2.sa_saleareaid,t2.areaname,t2.areafullname
+    from salearea t1
+             inner join sa_salearea t2 on t1.sa_saleareaid = t2.parentid and t2.siteid = $siteid$
+)
+select sa_saleareaid,areaname,areafullname
+from salearea

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

@@ -0,0 +1,10 @@
+select t5.sa_saleareaid
+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
+         left join sa_salearea_hr t4 on t1.siteid = t4.siteid and t1.hrid = t4.hrid
+         left join sa_salearea t5 on t4.siteid = t5.siteid and t4.sa_saleareaid = t5.sa_saleareaid
+		 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$

+ 1 - 1
src/custom/restcontroller/webmanage/sale/salestarget/SQL/人员-目标详情列表.sql

@@ -147,5 +147,5 @@ from (
                 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
          group by  t6.sa_saleareaid,  t6.areafullname, t6.areaname) t
-where 1=1
+where $where$
 order by areafullname, case when t.type = '区域' then 0 else 1 end

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

@@ -40,8 +40,8 @@ public class personnel extends Controller {
         ArrayList<String> sqlList = new ArrayList<>();
         if (sa_salestargetbillid <= 0) {
             //查询创建年度是否存在
-            if (dbConnect.runSqlQuery("SELECT 1 FROM sa_salestargetbill WHERE `year` = " + year + " and assessmentindicators ='"+assessmentindicators+"' AND targettype ='人员目标' AND siteid = '" + siteid + "'").isNotEmpty()) {
-                return getErrReturnObject().setErrMsg(year + "年度人员考核指标为"+assessmentindicators+"的目标已存在,无法创建").toString();
+            if (dbConnect.runSqlQuery("SELECT 1 FROM sa_salestargetbill WHERE year = " + year + " AND targettype ='人员目标' AND siteid = '" + siteid + "'").isNotEmpty()) {
+                return getErrReturnObject().setErrMsg(year + "年度目标已存在,无法创建").toString();
             }
             sa_salestargetbillid = createTableID("sa_salestargetbill");
             SQLFactory sqlFactory = new SQLFactory(this, "创建新年度");
@@ -226,7 +226,7 @@ public class personnel extends Controller {
         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 assessmentindicators='"+assessmentindicators+"' and sa_saleareaid=" + sa_saleareaid + " and targettype ='人员目标' and siteid='" + siteid + "'");
+            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");
             }

+ 352 - 1
src/custom/restcontroller/webmanage/sale/salestarget/personnelstatistics.java

@@ -13,6 +13,7 @@ import restcontroller.webmanage.saletool.orderclue.ExportExcel;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Calendar;
 
 @API(title = "管理端-销售目标-人员目标统计")
 public class personnelstatistics extends Controller {
@@ -90,8 +91,358 @@ public class personnelstatistics extends Controller {
         }
         return sheet;
     }
+//    @API(title = "获取区域经理的营销区域", apiversion = R.ID20231018093803.v1.class)
+//    public String getcurrentusersalearea() throws YosException {
+//
+//        SQLFactory sqlFactory = new SQLFactory(this, "业务员列表查询");
+//        sqlFactory.addParameter("siteid", siteid);
+//        sqlFactory.addParameter("hrid", hrid);
+//        Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
+//
+//        SQLFactory areasqlFactory = new SQLFactory(this, "下级区域获取");
+//        areasqlFactory.addParameter("siteid", siteid);
+//        areasqlFactory.addParameter_in("sa_saleareaid", rows.toArrayList("sa_saleareaid",new ArrayList<>()));
+//        Rows arearows = dbConnect.runSqlQuery(areasqlFactory.getSQL());
+//        return getSucReturnObject().setData(arearows).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 + "'");
+
+        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");
+        }
+        //考核指标类型
+        long sa_salestargetbillid = 0;
+        String assessmentindicators="";
+        if (billRows.isNotEmpty()) {
+            sa_salestargetbillid=billRows.get(0).getLong("sa_salestargetbillid");
+            assessmentindicators=billRows.get(0).getString("assessmentindicators");
+        }
+
+        /*
+          过滤条件设置
+         */
+        StringBuffer where = new StringBuffer(" 1=1 ");
+
+        SQLFactory sqlFactory = new SQLFactory(this, "人员-目标详情列表");
+        sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+        sqlFactory.addParameter_SQL("where", where);
+        sqlFactory.addParameter("siteid", siteid);
+        String sql = sqlFactory.getSQL();
+        Rows rows = dbConnect.runSqlQuery(sql);
+
+        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where parentid=0");
+        Long sa_saleareaidtop=0l;
+        if(!saleareas.isEmpty()){
+            sa_saleareaidtop=saleareas.get(0).getLong("sa_saleareaid");
+        }
+
+        for (Row row :rows) {
+            if(row.getLong("parentid")==0){
+                row.put("y1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1l"));
+                row.put("y1h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1h"));
+                row.put("s1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s1l"));
+                row.put("s1h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s1h"));
+                row.put("s2l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s2l"));
+                row.put("s2h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s2h"));
+                row.put("s3l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s3l"));
+                row.put("s3h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s3h"));
+                row.put("s4l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s4l"));
+                row.put("s4h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s4h"));
+                row.put("m1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m1l"));
+                row.put("m1h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m1h"));
+                row.put("m2l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m2l"));
+                row.put("m2h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m2h"));
+                row.put("m3l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m3l"));
+                row.put("m3h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m3h"));
+                row.put("m4l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m4l"));
+                row.put("m4h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m4h"));
+                row.put("m5l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m5l"));
+                row.put("m5h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m5h"));
+                row.put("m6l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m6l"));
+                row.put("m6h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m6h"));
+                row.put("m7l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m7l"));
+                row.put("m7h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m7h"));
+                row.put("m8l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m8l"));
+                row.put("m8h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m8h"));
+                row.put("m9l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m9l"));
+                row.put("m9h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m9h"));
+                row.put("m10l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m10l"));
+                row.put("m10h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m10h"));
+                row.put("m11l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m11l"));
+                row.put("m11h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m11h"));
+                row.put("m12l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m12l"));
+                row.put("m12h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m12h"));
+            }
+        }
+
+
+        Rows actualRows = new Rows();
+        //开票
+        if (assessmentindicators .equals("开票")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-开票");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+
+        }
+        //订单
+        if (assessmentindicators .equals("订单")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-订单");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+        }
+        //出货
+        if (assessmentindicators .equals("出货")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-出货");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+        }
+        //收款
+        if (assessmentindicators .equals("收款")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-收款");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+        }
+
+        for (Row row :actualRows) {
+            if(row.getLong("parentid")==0){
+                row.put("y1a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1a"));
+                row.put("s1a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s1a"));
+                row.put("s2a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s2a"));
+                row.put("s3a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s3a"));
+                row.put("s4a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s4a"));
+                row.put("m1a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m1a"));
+                row.put("m2a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m2a"));
+                row.put("m3a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m3a"));
+                row.put("m4a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m4a"));
+                row.put("m5a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m5a"));
+                row.put("m6a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m6a"));
+                row.put("m7a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m7a"));
+                row.put("m8a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m8a"));
+                row.put("m9a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m9a"));
+                row.put("m10a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m10a"));
+                row.put("m11a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m11a"));
+                row.put("m12a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m12a"));
+            }
+        }
+        Rows rowsResult =new Rows();
+        for (Row row : rows) {
+            if(row.getLong("sa_saleareaid")==sa_saleareaid){
+                rowsResult.add(row);
+            }
+        }
+
+        for (Row row : rowsResult) {
+            //初始化
+            row = addActualRow(row);
+
+            Long sa_saleareaid1 = row.getLong("sa_saleareaid");
+            Row actualRow = new Row();
+            for (Row tempActualRow : actualRows) {
+                if (tempActualRow.getLong("sa_saleareaid") == sa_saleareaid1) {
+                    actualRow.putAll(tempActualRow);
+                }
+            }
+
+            row.putAll(actualRow);
+            row.putAll(calculate(row, actualRow));
+        }
+
+        return getSucReturnObject().setData(rowsResult).toString();
+    }
+
+    @API(title = "人员目标统计列表(区域经理)", apiversion = R.ID20231018103303.v1.class)
+    @CACHEING
+    public String queryList_areamanagerList() 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 + "'");
+
+        SQLFactory hrsqlFactory = new SQLFactory(this, "业务员列表查询");
+        hrsqlFactory.addParameter("siteid", siteid);
+        hrsqlFactory.addParameter("hrid", hrid);
+        Rows hrrows = dbConnect.runSqlQuery(hrsqlFactory.getSQL());
+
+        SQLFactory areasqlFactory = new SQLFactory(this, "下级区域获取");
+        areasqlFactory.addParameter("siteid", siteid);
+        areasqlFactory.addParameter_in("sa_saleareaid", hrrows.toArrayList("sa_saleareaid",new ArrayList<>()));
+        Rows arearows = dbConnect.runSqlQuery(areasqlFactory.getSQL());
+        ArrayList<Long> areaList = arearows.toArrayList("sa_saleareaid",new ArrayList<Long>());
+        areaList.add(0l);
 
 
+        //考核指标类型
+        long sa_salestargetbillid = 0;
+        String assessmentindicators="";
+        if (billRows.isNotEmpty()) {
+            sa_salestargetbillid=billRows.get(0).getLong("sa_salestargetbillid");
+            assessmentindicators=billRows.get(0).getString("assessmentindicators");
+        }
+
+        /*
+          过滤条件设置
+         */
+        StringBuffer where = new StringBuffer(" 1=1 and t.sa_saleareaid in "+areaList.toString().replace("[", "(").replace("]", ")"));
+
+        SQLFactory sqlFactory = new SQLFactory(this, "人员-目标详情列表");
+        sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+        sqlFactory.addParameter_SQL("where", where);
+        sqlFactory.addParameter("siteid", siteid);
+        String sql = sqlFactory.getSQL();
+        Rows rows = dbConnect.runSqlQuery(sql);
+
+        Rows saleareas = dbConnect.runSqlQuery("select * from sa_salearea where parentid=0");
+        Long sa_saleareaidtop=0l;
+        if(!saleareas.isEmpty()){
+            sa_saleareaidtop=saleareas.get(0).getLong("sa_saleareaid");
+        }
+
+        for (Row row :rows) {
+            if(row.getLong("parentid")==0){
+                row.put("y1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1l"));
+                row.put("y1h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1h"));
+                row.put("s1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s1l"));
+                row.put("s1h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s1h"));
+                row.put("s2l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s2l"));
+                row.put("s2h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s2h"));
+                row.put("s3l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s3l"));
+                row.put("s3h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s3h"));
+                row.put("s4l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s4l"));
+                row.put("s4h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s4h"));
+                row.put("m1l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m1l"));
+                row.put("m1h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m1h"));
+                row.put("m2l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m2l"));
+                row.put("m2h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m2h"));
+                row.put("m3l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m3l"));
+                row.put("m3h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m3h"));
+                row.put("m4l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m4l"));
+                row.put("m4h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m4h"));
+                row.put("m5l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m5l"));
+                row.put("m5h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m5h"));
+                row.put("m6l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m6l"));
+                row.put("m6h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m6h"));
+                row.put("m7l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m7l"));
+                row.put("m7h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m7h"));
+                row.put("m8l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m8l"));
+                row.put("m8h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m8h"));
+                row.put("m9l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m9l"));
+                row.put("m9h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m9h"));
+                row.put("m10l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m10l"));
+                row.put("m10h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m10h"));
+                row.put("m11l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m11l"));
+                row.put("m11h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m11h"));
+                row.put("m12l",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m12l"));
+                row.put("m12h",rows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m12h"));
+            }
+        }
+
+
+        Rows actualRows = new Rows();
+        //开票
+        if (assessmentindicators .equals("开票")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-开票");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+
+        }
+        //订单
+        if (assessmentindicators .equals("订单")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-订单");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+        }
+        //出货
+        if (assessmentindicators .equals("出货")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-出货");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+        }
+        //收款
+        if (assessmentindicators .equals("收款")) {
+            sqlFactory = new SQLFactory(this, "人员目标统计-收款");
+            sqlFactory.addParameter("sa_salestargetbillid", sa_salestargetbillid);
+            sqlFactory.addParameter_SQL("where", where);
+            sqlFactory.addParameter("siteid", siteid);
+            sqlFactory.addParameter("year", year);
+            actualRows = dbConnect.runSqlQuery(sqlFactory);
+        }
+
+        for (Row row :actualRows) {
+            if(row.getLong("parentid")==0){
+                row.put("y1a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("y1a"));
+                row.put("s1a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s1a"));
+                row.put("s2a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s2a"));
+                row.put("s3a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s3a"));
+                row.put("s4a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("s4a"));
+                row.put("m1a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m1a"));
+                row.put("m2a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m2a"));
+                row.put("m3a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m3a"));
+                row.put("m4a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m4a"));
+                row.put("m5a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m5a"));
+                row.put("m6a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m6a"));
+                row.put("m7a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m7a"));
+                row.put("m8a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m8a"));
+                row.put("m9a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m9a"));
+                row.put("m10a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m10a"));
+                row.put("m11a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m11a"));
+                row.put("m12a",actualRows.toRowsMap("parentid").get(sa_saleareaidtop.toString()).sum("m12a"));
+            }
+        }
+
+        for (Row row : rows) {
+            //初始化
+            row = addActualRow(row);
+
+            Long sa_saleareaid1 = row.getLong("sa_saleareaid");
+            Row actualRow = new Row();
+            for (Row tempActualRow : actualRows) {
+                if (tempActualRow.getLong("sa_saleareaid") == sa_saleareaid1) {
+                    actualRow.putAll(tempActualRow);
+                }
+            }
+
+            row.putAll(actualRow);
+            row.putAll(calculate(row, actualRow));
+        }
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
     @API(title = "人员目标统计", apiversion = R.ID20220904134102.v1.class)
     @CACHEING
     public String queryList() throws YosException {
@@ -333,7 +684,7 @@ public class personnelstatistics extends Controller {
     }
 
     public double getPercent(Double a, Double b) {
-        double c = (a - b) * 100 / b;
+        double c = a * 100 / b;
         BigDecimal bigDecimal = new BigDecimal(c);
         return bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
     }