|
|
@@ -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; // 季度最后一个月
|
|
|
}
|
|
|
|