|
|
@@ -127,7 +127,7 @@ public class performancetargetboard extends Controller {
|
|
|
}
|
|
|
SQLFactory paymentsqlFactory = new SQLFactory(this, "账户回款统计");
|
|
|
paymentsqlFactory.addParameter("year", year);
|
|
|
- paymentsqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid));
|
|
|
+ paymentsqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid).add(sa_saleareaid));
|
|
|
paymentsqlFactory.addParameter_SQL("where"," 1=1 ");
|
|
|
paymentsqlFactory.addParameter("siteid", siteid);
|
|
|
Rows paymentRows = dbConnect.runSqlQuery(paymentsqlFactory.getSQL());
|
|
|
@@ -135,7 +135,7 @@ public class performancetargetboard extends Controller {
|
|
|
|
|
|
SQLFactory rebatesqlFactory = new SQLFactory(this, "账户返利统计");
|
|
|
rebatesqlFactory.addParameter("year", year);
|
|
|
- rebatesqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid));
|
|
|
+ rebatesqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid).add(sa_saleareaid));
|
|
|
rebatesqlFactory.addParameter_SQL("where"," 1=1 ");
|
|
|
rebatesqlFactory.addParameter("siteid", siteid);
|
|
|
Rows rebateRows = dbConnect.runSqlQuery(rebatesqlFactory.getSQL());
|
|
|
@@ -149,23 +149,44 @@ public class performancetargetboard extends Controller {
|
|
|
BigDecimal previousfanli=rebateRowsMap.containsKey(previousmonthstr)?rebateRowsMap.get(previousmonthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO;
|
|
|
//回款完成额
|
|
|
jsonObject.put("completedamount",xainjin.add(huodong).add(fanli));
|
|
|
+
|
|
|
+ BigDecimal previousexceed=BigDecimal.ZERO;
|
|
|
+ BigDecimal completedamountexceed100=BigDecimal.ZERO;
|
|
|
+ for(int i=1;i<=month;i++){
|
|
|
+ previousexceed=completedamountexceed100;
|
|
|
+ BigDecimal looprw_month=salestargetrows.isNotEmpty()?salestargetrows.get(0).getBigDecimal("m"+i+"l"):BigDecimal.ZERO;
|
|
|
+ BigDecimal loopxainjin=paymentRowsMap.containsKey("现金账户")?paymentRowsMap.get("现金账户").toRowsMap("month").containsKey(String.valueOf(i))?paymentRowsMap.get("现金账户").toRowsMap("month").get(String.valueOf(i)).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+ BigDecimal loophuodong=paymentRowsMap.containsKey("活动预存账户")?paymentRowsMap.get("活动预存账户").toRowsMap("month").containsKey(String.valueOf(i))?paymentRowsMap.get("活动预存账户").toRowsMap("month").get(String.valueOf(i)).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+ BigDecimal loopfanli=rebateRowsMap.containsKey(String.valueOf(i))?rebateRowsMap.get(String.valueOf(i)).get(0).getBigDecimal("amount"):BigDecimal.ZERO;
|
|
|
+
|
|
|
+ BigDecimal loopgcgc=paymentRowsMap.containsKey("GC工程现金账户")?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").containsKey(String.valueOf(i))?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").get(String.valueOf(i)).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+ BigDecimal loopzzgc=paymentRowsMap.containsKey("整装工程现金账户")?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").containsKey(String.valueOf(i))?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").get(String.valueOf(i)).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+
|
|
|
+ completedamountexceed100=loopxainjin.add(loophuodong).add(loopfanli).add(previousexceed)
|
|
|
+ .add(loopgcgc.max(looprw_month.multiply(gcproportion).multiply(BigDecimal.valueOf(10000))))
|
|
|
+ .add(loopzzgc.max(looprw_month.multiply(zzproportion).multiply(BigDecimal.valueOf(10000))))
|
|
|
+ .subtract(looprw_month.multiply(BigDecimal.valueOf(10000)));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//上月完成额超出部分
|
|
|
- jsonObject.put("previousexceed",month==1?0:previousxainjin.add(previoushuodong).add(previousfanli).subtract(rw_previousmonth));
|
|
|
+ jsonObject.put("previousexceed",previousexceed);
|
|
|
|
|
|
BigDecimal gcgc=paymentRowsMap.containsKey("GC工程现金账户")?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").get(monthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
//GC工程完成额
|
|
|
- jsonObject.put("gccompletedamount",gcgc.max(rw_month.multiply(gcproportion)));
|
|
|
+ jsonObject.put("gccompletedamount",gcgc.max(rw_month.multiply(gcproportion).multiply(BigDecimal.valueOf(10000))));
|
|
|
//GC工程超出部分
|
|
|
- jsonObject.put("gccompletedamountexceed",gcgc.subtract(rw_month.multiply(gcproportion)).compareTo(BigDecimal.ZERO)>0?gcgc.subtract(rw_month.multiply(gcproportion)):0);
|
|
|
+ jsonObject.put("gccompletedamountexceed",gcgc.subtract(rw_month.multiply(gcproportion).multiply(BigDecimal.valueOf(10000))).compareTo(BigDecimal.ZERO)>0?gcgc.subtract(rw_month.multiply(gcproportion).multiply(BigDecimal.valueOf(10000))):0);
|
|
|
|
|
|
BigDecimal zzgc=paymentRowsMap.containsKey("整装工程现金账户")?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").get(monthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
//整装工程完成额
|
|
|
- jsonObject.put("zzcompletedamount",zzgc.max(rw_month.multiply(zzproportion)));
|
|
|
+ jsonObject.put("zzcompletedamount",zzgc.max(rw_month.multiply(zzproportion).multiply(BigDecimal.valueOf(10000))));
|
|
|
//整装工程超出部分
|
|
|
- jsonObject.put("zzcompletedamountexceed",zzgc.subtract(rw_month.multiply(zzproportion)).compareTo(BigDecimal.ZERO)>0?zzgc.subtract(rw_month.multiply(zzproportion)):0);
|
|
|
+ jsonObject.put("zzcompletedamountexceed",zzgc.subtract(rw_month.multiply(zzproportion).multiply(BigDecimal.valueOf(10000))).compareTo(BigDecimal.ZERO)>0?zzgc.subtract(rw_month.multiply(zzproportion).multiply(BigDecimal.valueOf(10000))):0);
|
|
|
|
|
|
//完成额超出100%部分
|
|
|
- jsonObject.put("completedamountexceed100",jsonObject.getBigDecimal("completedamount").add(jsonObject.getBigDecimal("previousexceed")).add(jsonObject.getBigDecimal("gccompletedamount")).add(jsonObject.getBigDecimal("zzcompletedamount")).subtract(rw_month));
|
|
|
+ jsonObject.put("completedamountexceed100",completedamountexceed100);
|
|
|
//实际完成额
|
|
|
jsonObject.put("actualcompletedamount",jsonObject.getBigDecimal("completedamount").add(jsonObject.getBigDecimal("gccompletedamount")).add(jsonObject.getBigDecimal("zzcompletedamount")));
|
|
|
//实际完成百分比
|
|
|
@@ -227,7 +248,7 @@ public class performancetargetboard extends Controller {
|
|
|
jsonObject.put("rw_quarter",rw_quarter);
|
|
|
SQLFactory paymentsqlFactory = new SQLFactory(this, "账户回款统计");
|
|
|
paymentsqlFactory.addParameter("year", year);
|
|
|
- paymentsqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid));
|
|
|
+ paymentsqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid).add(sa_saleareaid));
|
|
|
paymentsqlFactory.addParameter_SQL("where"," 1=1 ");
|
|
|
paymentsqlFactory.addParameter("siteid", siteid);
|
|
|
Rows paymentRows = dbConnect.runSqlQuery(paymentsqlFactory.getSQL());
|
|
|
@@ -235,7 +256,7 @@ public class performancetargetboard extends Controller {
|
|
|
|
|
|
SQLFactory rebatesqlFactory = new SQLFactory(this, "账户返利统计");
|
|
|
rebatesqlFactory.addParameter("year", year);
|
|
|
- rebatesqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid));
|
|
|
+ rebatesqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid).add(sa_saleareaid));
|
|
|
rebatesqlFactory.addParameter_SQL("where"," 1=1 ");
|
|
|
rebatesqlFactory.addParameter("siteid", siteid);
|
|
|
Rows rebateRows = dbConnect.runSqlQuery(rebatesqlFactory.getSQL());
|
|
|
@@ -258,14 +279,48 @@ public class performancetargetboard extends Controller {
|
|
|
BigDecimal previousfanli=rebateRowsMap.containsKey(previousmonthstr)?rebateRowsMap.get(previousmonthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO;
|
|
|
previouscompletedamount=previouscompletedamount.add(previousxainjin).add(previoushuodong).add(previousfanli);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal previousexceed=BigDecimal.ZERO;
|
|
|
+ BigDecimal completedamountexceed100=BigDecimal.ZERO;
|
|
|
+ int quarter = getQuarterByMonth(selectmonth);
|
|
|
+ for(int i=1;i<=quarter;i++){
|
|
|
+ previousexceed=completedamountexceed100;
|
|
|
+ List<Integer> loopmonths = getCurrentQuarterMonths(i*3-2);
|
|
|
+ BigDecimal looprw_quarter=BigDecimal.ZERO;
|
|
|
+ BigDecimal loopcompletedamount=BigDecimal.ZERO;
|
|
|
+ BigDecimal loopgcgccompletedamount=BigDecimal.ZERO;
|
|
|
+ BigDecimal loopzzgccompletedamount=BigDecimal.ZERO;
|
|
|
+ if(salestargetrows.isNotEmpty()){
|
|
|
+ for(int month : loopmonths){
|
|
|
+ looprw_quarter=looprw_quarter.add(salestargetrows.get(0).getBigDecimal("m"+month+"l"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for(int month : loopmonths){
|
|
|
+ String monthstr = String.format("%02d", month);
|
|
|
+ BigDecimal loopxainjin=paymentRowsMap.containsKey("现金账户")?paymentRowsMap.get("现金账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("现金账户").toRowsMap("month").get(monthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+ BigDecimal loophuodong=paymentRowsMap.containsKey("活动预存账户")?paymentRowsMap.get("活动预存账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("活动预存账户").toRowsMap("month").get(monthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+ BigDecimal loopfanli=rebateRowsMap.containsKey(monthstr)?rebateRowsMap.get(monthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO;
|
|
|
+ BigDecimal loopgcgc=paymentRowsMap.containsKey("GC工程现金账户")?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("GC工程现金账户").toRowsMap("month").get(monthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+ BigDecimal loopzzgc=paymentRowsMap.containsKey("整装工程现金账户")?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").containsKey(monthstr)?paymentRowsMap.get("整装工程现金账户").toRowsMap("month").get(monthstr).get(0).getBigDecimal("amount"):BigDecimal.ZERO:BigDecimal.ZERO;
|
|
|
+ loopgcgccompletedamount=loopgcgccompletedamount.add(loopgcgc);
|
|
|
+ loopzzgccompletedamount=loopzzgccompletedamount.add(loopzzgc);
|
|
|
+ loopcompletedamount=loopcompletedamount.add(loopxainjin).add(loophuodong).add(loopfanli);
|
|
|
+ }
|
|
|
+
|
|
|
+ completedamountexceed100=loopcompletedamount.add(previousexceed).add(loopgcgccompletedamount)
|
|
|
+ .add(loopzzgccompletedamount).subtract(looprw_quarter.multiply(BigDecimal.valueOf(10000)));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
//回款完成额
|
|
|
jsonObject.put("completedamount",completedamount);
|
|
|
//上季完成额超出部分
|
|
|
- jsonObject.put("previousexceed",previouscompletedamount.subtract(rw_previousquarter));
|
|
|
+ jsonObject.put("previousexceed",previousexceed);
|
|
|
//GC工程完成额
|
|
|
- jsonObject.put("gccompletedamount",gcgccompletedamount.max(rw_quarter.multiply(gcproportion)));
|
|
|
+ jsonObject.put("gccompletedamount",gcgccompletedamount);
|
|
|
//整装工程完成额
|
|
|
- jsonObject.put("zzcompletedamount",zzgccompletedamount.max(rw_quarter.multiply(zzproportion)));
|
|
|
+ jsonObject.put("zzcompletedamount",zzgccompletedamount);
|
|
|
//季度完成额
|
|
|
jsonObject.put("actualcompletedamount",jsonObject.getBigDecimal("completedamount").add(jsonObject.getBigDecimal("previousexceed")).add(jsonObject.getBigDecimal("gccompletedamount")).add(jsonObject.getBigDecimal("zzcompletedamount")));
|
|
|
//季度百分比
|
|
|
@@ -322,7 +377,7 @@ public class performancetargetboard extends Controller {
|
|
|
jsonObject.put("rw_all",rw_all);
|
|
|
SQLFactory paymentsqlFactory = new SQLFactory(this, "账户回款统计");
|
|
|
paymentsqlFactory.addParameter("year", year);
|
|
|
- paymentsqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid));
|
|
|
+ paymentsqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid).add(sa_saleareaid));
|
|
|
paymentsqlFactory.addParameter_SQL("where"," 1=1 ");
|
|
|
paymentsqlFactory.addParameter("siteid", siteid);
|
|
|
Rows paymentRows = dbConnect.runSqlQuery(paymentsqlFactory.getSQL());
|
|
|
@@ -330,7 +385,7 @@ public class performancetargetboard extends Controller {
|
|
|
|
|
|
SQLFactory rebatesqlFactory = new SQLFactory(this, "账户返利统计");
|
|
|
rebatesqlFactory.addParameter("year", year);
|
|
|
- rebatesqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid));
|
|
|
+ rebatesqlFactory.addParameter_in("sa_saleareaids", getSubSaleAreaIds(this,sa_saleareaid).add(sa_saleareaid));
|
|
|
rebatesqlFactory.addParameter_SQL("where"," 1=1 ");
|
|
|
rebatesqlFactory.addParameter("siteid", siteid);
|
|
|
Rows rebateRows = dbConnect.runSqlQuery(rebatesqlFactory.getSQL());
|
|
|
@@ -349,9 +404,9 @@ public class performancetargetboard extends Controller {
|
|
|
//回款完成额
|
|
|
jsonObject.put("completedamount",completedamount);
|
|
|
//GC工程完成额
|
|
|
- jsonObject.put("gccompletedamount",gcgccompletedamount.max(rw_all.multiply(gcproportion)));
|
|
|
+ jsonObject.put("gccompletedamount",gcgccompletedamount.max(rw_all.multiply(gcproportion).multiply(BigDecimal.valueOf(10000))));
|
|
|
//整装工程完成额
|
|
|
- jsonObject.put("zzcompletedamount",zzgccompletedamount.max(rw_all.multiply(zzproportion)));
|
|
|
+ jsonObject.put("zzcompletedamount",zzgccompletedamount.max(rw_all.multiply(zzproportion).multiply(BigDecimal.valueOf(10000))));
|
|
|
//总完成额
|
|
|
jsonObject.put("actualcompletedamount",jsonObject.getBigDecimal("completedamount").add(jsonObject.getBigDecimal("gccompletedamount")).add(jsonObject.getBigDecimal("zzcompletedamount")));
|
|
|
//百分比
|
|
|
@@ -361,7 +416,7 @@ public class performancetargetboard extends Controller {
|
|
|
jsonObject.put("actualcompletedpercentage",jsonObject.getBigDecimal("actualcompletedamount").divide((rw_all.multiply(BigDecimal.valueOf(10000))),4, RoundingMode.HALF_UP));
|
|
|
}
|
|
|
//和年度任务的差额
|
|
|
- jsonObject.put("differenceamount",rw_year.subtract(jsonObject.getBigDecimal("actualcompletedamount")));
|
|
|
+ jsonObject.put("differenceamount",rw_all.multiply(BigDecimal.valueOf(7000)).subtract(jsonObject.getBigDecimal("actualcompletedamount")));
|
|
|
|
|
|
return getSucReturnObject().setData(jsonObject).toString();
|
|
|
|
|
|
@@ -490,6 +545,19 @@ public class performancetargetboard extends Controller {
|
|
|
|
|
|
return quarterMonths;
|
|
|
}
|
|
|
+ public int getQuarterByMonth(int month) {
|
|
|
+ if (month >= 1 && month <= 3) {
|
|
|
+ return 1;
|
|
|
+ } else if (month >= 4 && month <= 6) {
|
|
|
+ return 2;
|
|
|
+ } else if (month >= 7 && month <= 9) {
|
|
|
+ return 3;
|
|
|
+ } else if (month >= 10 && month <= 12) {
|
|
|
+ return 4;
|
|
|
+ } else {
|
|
|
+ throw new IllegalArgumentException("月份必须在 1-12 之间: " + month);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public List<Integer> getPreviousQuarterMonthsCalendar(int currentMonth) {
|
|
|
int currentQuarter = (currentMonth - 1) / 3 + 1;
|