浏览代码

cucu业绩目标优化

hxh 2 天之前
父节点
当前提交
4669090ed1
共有 1 个文件被更改,包括 57 次插入31 次删除
  1. 57 31
      src/custom/restcontroller/webmanage/sale/salestarget_cucu/performancetargetboard.java

+ 57 - 31
src/custom/restcontroller/webmanage/sale/salestarget_cucu/performancetargetboard.java

@@ -14,6 +14,7 @@ import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import restcontroller.R;
 import restcontroller.webmanage.sale.salestarget.personnel;
+import shade.fasterxml.jackson.core.json.async.NonBlockingJsonParser;
 
 import javax.sql.RowSetReader;
 import java.math.BigDecimal;
@@ -255,7 +256,7 @@ public class performancetargetboard extends Controller {
                 row.put("actualcompletedpercentage", (row.getBigDecimal("completedamount").add(row.getBigDecimal("previousexceed")).add(row.getBigDecimal("gccompletedamount")).add(row.getBigDecimal("zzcompletedamount"))).divide((rw_month.multiply(BigDecimal.valueOf(10000))),4, RoundingMode.HALF_UP));
             }
         }
-        Rows arearows_quarter= queryperformancetarget_quarter(month,arearows,salestargetrowsMap,paymentRows_All,rebateRows_All);
+        Rows arearows_quarter= queryperformancetarget_quarter(month,months,arearows,salestargetrowsMap,paymentRows_All,rebateRows_All);
         System.err.println(arearows_quarter.get(0).getString("sa_saleareaid")+":"+arearows_quarter.get(0).getBigDecimal("completedamount"));
         RowsMap arearowsMap_quarter=arearows_quarter.toRowsMap("sa_saleareaid");
         Rows arearows_total= queryperformancetarget_total(month,months,arearows,salestargetrowsMap,paymentRows_All,rebateRows_All);
@@ -354,7 +355,7 @@ public class performancetargetboard extends Controller {
      * @return
      * @throws YosException
      */
-    public Rows queryperformancetarget_quarter(long selectmonth,Rows arearows,RowsMap salestargetrowsMap,Rows paymentRows_All,Rows rebateRows_All) throws YosException {
+    public Rows queryperformancetarget_quarter(long selectmonth,JSONArray months,Rows arearows,RowsMap salestargetrowsMap,Rows paymentRows_All,Rows rebateRows_All) throws YosException {
 //        long hrid= content.getLong("hrid");
         //long sa_saleareaid= content.getLong("sa_saleareaid");
 
@@ -373,8 +374,7 @@ public class performancetargetboard extends Controller {
         BigDecimal gcproportion =BigDecimal.ZERO;
         BigDecimal zzproportion =BigDecimal.ZERO;
 
-        List<Integer> currentmonths = getCurrentQuarterMonths((int)selectmonth);
-        List<Integer> months = new ArrayList<>();
+        List<Integer> currentquartermonths = getCurrentQuarterMonths((int)selectmonth);
         List<Integer> previousmonths =getPreviousQuarterMonthsCalendar((int)selectmonth);
         Rows rows = dbConnect.runSqlQuery("select * from sys_site_parameter where siteid='" + siteid + "'");
 
@@ -382,13 +382,30 @@ public class performancetargetboard extends Controller {
             gcproportion=rows.get(0).getBigDecimal("gcproportion").divide(BigDecimal.valueOf(100));
             zzproportion=rows.get(0).getBigDecimal("zzproportion").divide(BigDecimal.valueOf(100));
         }
-        for(int month:currentmonths){
+
+        if(months.isEmpty()){
             if(rows.isNotEmpty()){
-                if(rows.get(0).getJSONArray("statistics_months").contains(month)){
-                    months.add(month);
+                for(int i=1;i<=selectmonth;i++){
+                    if(rows.get(0).getJSONArray("statistics_months").contains(i)){
+                        months.add(i);
+                    }
                 }
             }
         }
+        List<Integer> currentallmonths =new ArrayList<>();
+        for(Object monthObject : currentquartermonths){
+            int i = (Integer) monthObject;
+            if(months.contains(i)){
+                currentallmonths.add(i);
+            }
+        }
+        JSONArray currentmonths =new JSONArray();
+        for(int i=1;i<=selectmonth;i++){
+            if(months.contains(i) && currentquartermonths.contains(i)){
+                currentmonths.add(i);
+            }
+        }
+
 
 //        SQLFactory paymentsqlFactory = new SQLFactory(this, "账户回款统计");
 //        paymentsqlFactory.addParameter("year", year);
@@ -409,17 +426,17 @@ public class performancetargetboard extends Controller {
             Row arearowResult =new Row();
             arearowResult.put("sa_saleareaid",row.getLong("sa_saleareaid"));
             BigDecimal rw_quarter=BigDecimal.ZERO;
-            BigDecimal rw_previousquarter=BigDecimal.ZERO;
+//            BigDecimal rw_previousquarter=BigDecimal.ZERO;
             BigDecimal completedamount=BigDecimal.ZERO;
             BigDecimal gcgccompletedamount=BigDecimal.ZERO;
             BigDecimal zzgccompletedamount=BigDecimal.ZERO;
             if(salestargetrowsMap.containsKey(row.getString("sa_saleareaid"))){
-                for(int month : months){
-                    rw_quarter=rw_quarter.add(salestargetrowsMap.get(row.getString("sa_saleareaid")).get(0).getBigDecimal("m"+month+"l"));
-                }
-                for(int previousmonth : previousmonths){
-                    rw_previousquarter=rw_previousquarter.add(salestargetrowsMap.get(row.getString("sa_saleareaid")).get(0).getBigDecimal("m"+previousmonth+"l"));
+                for(int month : currentallmonths){
+                    rw_quarter=rw_quarter.add(salestargetrowsMap.get(row.getString("sa_saleareaid")).get(0).getBigDecimal("m"+ month+"l"));
                 }
+//                for(int previousmonth : previousmonths){
+//                    rw_previousquarter=rw_previousquarter.add(salestargetrowsMap.get(row.getString("sa_saleareaid")).get(0).getBigDecimal("m"+previousmonth+"l"));
+//                }
             }
             //季度任务(万)
             arearowResult.put("rw_quarter",rw_quarter);
@@ -442,7 +459,7 @@ public class performancetargetboard extends Controller {
             }
             RowsMap rebateRowsMap =rebateRows.toRowsMap("month");
 
-            for(int month : months){
+            for(Object month : currentmonths){
                 String monthstr = String.format("%02d", month);
                 BigDecimal xainjin=paymentRowsMap.containsKey("现金账户")?paymentRowsMap.get("现金账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("现金账户").toRowsMap("month").get(monthstr).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
                 BigDecimal huodong=paymentRowsMap.containsKey("活动预存账户")?paymentRowsMap.get("活动预存账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("活动预存账户").toRowsMap("month").get(monthstr).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
@@ -485,21 +502,23 @@ public class performancetargetboard extends Controller {
 //                        .add(loopzzgccompletedamount).subtract(looprw_quarter.multiply(BigDecimal.valueOf(10000)));
 //
 //            }
-            for(int i=1;i<=quarter_month;i++){
-                previousexceed=completedamountexceed100.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:completedamountexceed100;
-                BigDecimal looprw_month=salestargetrowsMap.get(row.getString("sa_saleareaid")).isNotEmpty()?salestargetrowsMap.get(row.getString("sa_saleareaid")).get(0).getBigDecimal("m"+i+"l"):BigDecimal.ZERO;
-                BigDecimal loopxainjin=paymentRowsMap.containsKey("现金账户")?paymentRowsMap.get("现金账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("现金账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
-                BigDecimal loophuodong=paymentRowsMap.containsKey("活动预存账户")?paymentRowsMap.get("活动预存账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("活动预存账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
-                BigDecimal loopfanli=rebateRowsMap.containsKey(String.format("%02d", i))?rebateRowsMap.get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO;
-
-                BigDecimal loopgcgc=paymentRowsMap.containsKey("GC工程现金账户")?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
-                BigDecimal loopzzgc=paymentRowsMap.containsKey("整装工程现金账户")?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
-
-                completedamountexceed100=loopxainjin.add(loophuodong).add(loopfanli).add(previousexceed)
-                        .add(loopgcgc.min(looprw_month.multiply(gcproportion).multiply(BigDecimal.valueOf(10000))))
-                        .add(loopzzgc.min(looprw_month.multiply(zzproportion).multiply(BigDecimal.valueOf(10000))))
-                        .subtract(looprw_month.multiply(BigDecimal.valueOf(10000)));
+            if(quarter_month>0){
+                for(int i=1;i<=quarter_month;i++){
+                    previousexceed=completedamountexceed100.compareTo(BigDecimal.ZERO)<0?BigDecimal.ZERO:completedamountexceed100;
+                    BigDecimal looprw_month=salestargetrowsMap.get(row.getString("sa_saleareaid")).isNotEmpty()?salestargetrowsMap.get(row.getString("sa_saleareaid")).get(0).getBigDecimal("m"+i+"l"):BigDecimal.ZERO;
+                    BigDecimal loopxainjin=paymentRowsMap.containsKey("现金账户")?paymentRowsMap.get("现金账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("现金账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
+                    BigDecimal loophuodong=paymentRowsMap.containsKey("活动预存账户")?paymentRowsMap.get("活动预存账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("活动预存账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
+                    BigDecimal loopfanli=rebateRowsMap.containsKey(String.format("%02d", i))?rebateRowsMap.get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO;
+
+                    BigDecimal loopgcgc=paymentRowsMap.containsKey("GC工程现金账户")?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
+                    BigDecimal loopzzgc=paymentRowsMap.containsKey("整装工程现金账户")?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").containsKey(String.format("%02d", i))?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").get(String.format("%02d", i)).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
+
+                    completedamountexceed100=loopxainjin.add(loophuodong).add(loopfanli).add(previousexceed)
+                            .add(loopgcgc.min(looprw_month.multiply(gcproportion).multiply(BigDecimal.valueOf(10000))))
+                            .add(loopzzgc.min(looprw_month.multiply(zzproportion).multiply(BigDecimal.valueOf(10000))))
+                            .subtract(looprw_month.multiply(BigDecimal.valueOf(10000)));
 
+                }
             }
 
             //回款完成额
@@ -558,6 +577,13 @@ public class performancetargetboard extends Controller {
                 }
             }
         }
+
+        JSONArray currentmonths =new JSONArray();
+        for(int i=1;i<=selectmonth;i++){
+            if(months.contains(i)){
+                currentmonths.add(i);
+            }
+        }
 //        long sa_salestargetbillid=0;
 //        if(salestargetbillrows.isNotEmpty()){
 //            sa_salestargetbillid=salestargetbillrows.get(0).getLong("sa_salestargetbillid");
@@ -618,9 +644,9 @@ public class performancetargetboard extends Controller {
             RowsMap rebateRowsMap =rebateRows.toRowsMap("month");
 
             //总任务(万)
-            arearowResult.put("rw_total",rw_year);
+            arearowResult.put("rw_total",rw_all);
 
-            for(Object month : months){
+            for(Object month : currentmonths){
                 String monthstr = String.format("%02d", (Integer)month);
                 BigDecimal xainjin=paymentRowsMap.containsKey("现金账户")?paymentRowsMap.get("现金账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("现金账户").toRowsMap("month").get(monthstr).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
                 BigDecimal huodong=paymentRowsMap.containsKey("活动预存账户")?paymentRowsMap.get("活动预存账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("活动预存账户").toRowsMap("month").get(monthstr).sum("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
@@ -801,7 +827,7 @@ public class performancetargetboard extends Controller {
             throw new IllegalArgumentException("月份必须在1-12之间");
         }
 
-        int quarter = (month - 1) / 3 + 1; // 计算季度
+        int quarter = (month - 1) / 3; // 计算季度
         return quarter * 3; // 季度最后一个月
     }