|
|
@@ -22,6 +22,7 @@ import restcontroller.sale.customer.ExportExcel;
|
|
|
import restcontroller.webmanage.sale.order.Order2;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.YearMonth;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.temporal.IsoFields;
|
|
|
@@ -118,11 +119,7 @@ public class salestargetstatistics extends Controller {
|
|
|
int befyear = year - 1;
|
|
|
Long sa_saleareaid = content.getLongValue("sa_saleareaid");
|
|
|
|
|
|
- Rows arearows = dbConnect.runSqlQuery(" SELECT t1.*,t3.`name`,t3.userid FROM view_areas t1 " +
|
|
|
- " INNER JOIN sa_salearea_hr t2 ON t2.sa_saleareaid=t1.sa_saleareaid " +
|
|
|
- " INNER JOIN sys_hr t3 ON t3.hrid=t2.hrid " +
|
|
|
- " WHERE t1.siteid='" + siteid + "' AND t1.parentid=" + sa_saleareaid +
|
|
|
- " ORDER BY t1.parentid,t1.sa_saleareaid");
|
|
|
+ Rows arearows = dbConnect.runSqlQuery(" SELECT t1.*,t3.`name`,t3.userid FROM view_areas t1 " + " INNER JOIN sa_salearea_hr t2 ON t2.sa_saleareaid=t1.sa_saleareaid " + " INNER JOIN sys_hr t3 ON t3.hrid=t2.hrid " + " WHERE t1.siteid='" + siteid + "' AND t1.parentid=" + sa_saleareaid + " ORDER BY t1.parentid,t1.sa_saleareaid");
|
|
|
|
|
|
|
|
|
SQLFactory sqlFactory = new SQLFactory(this, "按人员分组统计订单");
|
|
|
@@ -174,11 +171,7 @@ public class salestargetstatistics extends Controller {
|
|
|
int befyear = year - 1;
|
|
|
Long sa_saleareaid = content.getLongValue("sa_saleareaid");
|
|
|
|
|
|
- Rows arearows = dbConnect.runSqlQuery("SELECT t1.*,t3.`enterprisename` hospitalname,t2.sa_customersid FROM view_areas t1 " +
|
|
|
- " INNER JOIN sa_customers t2 ON t2.sa_saleareaid=t1.sa_saleareaid " +
|
|
|
- " INNER JOIN sys_enterprise t3 ON t3.sys_enterpriseid=t2.sys_enterpriseid " +
|
|
|
- " WHERE t1.siteid='" + siteid + "' AND t1.parentid= " + sa_saleareaid + " " +
|
|
|
- " ORDER BY t1.parentid,t1.sa_saleareaid ");
|
|
|
+ Rows arearows = dbConnect.runSqlQuery("SELECT t1.*,t3.`enterprisename` hospitalname,t2.sa_customersid FROM view_areas t1 " + " INNER JOIN sa_customers t2 ON t2.sa_saleareaid=t1.sa_saleareaid " + " INNER JOIN sys_enterprise t3 ON t3.sys_enterpriseid=t2.sys_enterpriseid " + " WHERE t1.siteid='" + siteid + "' AND t1.parentid= " + sa_saleareaid + " " + " ORDER BY t1.parentid,t1.sa_saleareaid ");
|
|
|
|
|
|
|
|
|
SQLFactory sqlFactory = new SQLFactory(this, "按医院分组统计订单");
|
|
|
@@ -230,11 +223,7 @@ public class salestargetstatistics extends Controller {
|
|
|
int befyear = year - 1;
|
|
|
Long sa_saleareaid = content.getLongValue("sa_saleareaid");
|
|
|
|
|
|
- Rows arearows = dbConnect.runSqlQuery("SELECT t1.*,t3.enterprisename,t2.sa_agentsid FROM view_areas t1 " +
|
|
|
- " INNER JOIN sys_enterprise_tradefield t2 ON t2.sa_saleareaid=t1.sa_saleareaid " +
|
|
|
- " INNER JOIN sys_enterprise t3 ON t3.sys_enterpriseid=t2.sys_enterpriseid " +
|
|
|
- " WHERE t1.siteid='" + siteid + "' AND t1.parentid= " + sa_saleareaid + " " +
|
|
|
- " ORDER BY t1.parentid,t1.sa_saleareaid ");
|
|
|
+ Rows arearows = dbConnect.runSqlQuery("SELECT t1.*,t3.enterprisename,t2.sa_agentsid FROM view_areas t1 " + " INNER JOIN sys_enterprise_tradefield t2 ON t2.sa_saleareaid=t1.sa_saleareaid " + " INNER JOIN sys_enterprise t3 ON t3.sys_enterpriseid=t2.sys_enterpriseid " + " WHERE t1.siteid='" + siteid + "' AND t1.parentid= " + sa_saleareaid + " " + " ORDER BY t1.parentid,t1.sa_saleareaid ");
|
|
|
|
|
|
|
|
|
SQLFactory sqlFactory = new SQLFactory(this, "按经销商分组统计订单");
|
|
|
@@ -535,14 +524,10 @@ public class salestargetstatistics extends Controller {
|
|
|
Long sa_agentsid = content.getLongValue("sa_agentsid");
|
|
|
|
|
|
|
|
|
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems",
|
|
|
- "*");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t2", "t2.sa_orderid=t1.sa_orderid and t2.siteid=t1.siteid",
|
|
|
- "sonum", "checkdate");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid and t3.isshow=1",
|
|
|
- "orderminqty_auxunit", "orderminqty", "orderaddqty_auxunit", "orderaddqty", "assistance", "goodstype", "explains");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "plm_itemextend", "t4", "t4.itemid = t1.itemid and t4.siteid = t1.siteid",
|
|
|
- "erpitemname", "erpitemno");
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "*");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t2", "t2.sa_orderid=t1.sa_orderid and t2.siteid=t1.siteid", "sonum", "checkdate");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid and t3.isshow=1", "orderminqty_auxunit", "orderminqty", "orderaddqty_auxunit", "orderaddqty", "assistance", "goodstype", "explains");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "plm_itemextend", "t4", "t4.itemid = t1.itemid and t4.siteid = t1.siteid", "erpitemname", "erpitemno");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t6", "t6.hrid=t2.saler_hrid and t6.siteid=t2.siteid");
|
|
|
|
|
|
querySQL.addQueryFields("salename", "t6.name");
|
|
|
@@ -723,9 +708,7 @@ public class salestargetstatistics extends Controller {
|
|
|
}
|
|
|
try {
|
|
|
// 计算达成率:(saleamount / targetamount) * 100
|
|
|
- BigDecimal rate = saleamount.divide(targetamount, 10, BigDecimal.ROUND_HALF_UP)
|
|
|
- .multiply(BigDecimal.valueOf(100))
|
|
|
- .setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal rate = saleamount.divide(targetamount, 10, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
return rate + "%";
|
|
|
} catch (ArithmeticException e) {
|
|
|
// 处理除法结果为无限循环小数的情况
|
|
|
@@ -743,8 +726,7 @@ public class salestargetstatistics extends Controller {
|
|
|
// 计算比率,使用指定精度避免无限循环小数
|
|
|
BigDecimal rate = difference.divide(saleamount2, 10, BigDecimal.ROUND_HALF_UP);
|
|
|
// 乘以100转换为百分比并保留2位小数
|
|
|
- BigDecimal percentage = rate.multiply(BigDecimal.valueOf(100))
|
|
|
- .setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ BigDecimal percentage = rate.multiply(BigDecimal.valueOf(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
return percentage + "%";
|
|
|
}
|
|
|
}
|
|
|
@@ -787,6 +769,16 @@ public class salestargetstatistics extends Controller {
|
|
|
return ym.minusYears(1).format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
|
|
}
|
|
|
|
|
|
+ public static String getNextMonth(String yyyyMM) {
|
|
|
+ YearMonth ym = YearMonth.parse(yyyyMM);
|
|
|
+ return ym.plusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getBeforeMonth(String yyyyMM) {
|
|
|
+ YearMonth ym = YearMonth.parse(yyyyMM);
|
|
|
+ return ym.minusMonths(1).format(DateTimeFormatter.ofPattern("yyyy-MM"));
|
|
|
+ }
|
|
|
+
|
|
|
public static ArrayList<String> getMonths(int year, int month_start, int month_end) {
|
|
|
YearMonth ymstart = YearMonth.of(year, month_start);
|
|
|
YearMonth ymend = YearMonth.of(year, month_end);
|
|
|
@@ -1165,21 +1157,15 @@ public class salestargetstatistics extends Controller {
|
|
|
endMonth = year + "-" + ((month_end + 1) > 9 ? (month_end + 1) : "0" + (month_end + 1)) + "-01";
|
|
|
}
|
|
|
|
|
|
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_order",
|
|
|
- "sa_orderid", "sonum", "type", "status", "shoppingtype", "checkdate", "remarks", "billdate", "createdate")
|
|
|
- .setTableAlias("t1");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid",
|
|
|
- "sa_customersid");
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_order", "sa_orderid", "sonum", "type", "status", "shoppingtype", "checkdate", "remarks", "billdate", "createdate").setTableAlias("t1");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t2", "t2.sa_customersid=t1.sa_customersid and t2.siteid=t1.siteid", "sa_customersid");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid and t4.siteid=t1.siteid",
|
|
|
- "sa_agentsid");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid and t4.siteid=t1.siteid", "sa_agentsid");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid and t5.siteid=t4.siteid");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sys_hr", "t6", "t6.hrid=t1.saler_hrid and t6.siteid=t1.siteid");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, new Order2(content).getAmountQuerySQL(), "t7", "t7.sa_orderid = t1.sa_orderid");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t8", "t8.sa_saleareaid = t1.sa_saleareaid and t8.siteid = t1.siteid",
|
|
|
- "areaname");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_contacts", "t9", "t9.contactsid = t1.rec_contactsid and t9.siteid = t1.siteid",
|
|
|
- "name", "province", "city", "county", "address");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t8", "t8.sa_saleareaid = t1.sa_saleareaid and t8.siteid = t1.siteid", "areaname");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_contacts", "t9", "t9.contactsid = t1.rec_contactsid and t9.siteid = t1.siteid", "name", "province", "city", "county", "address");
|
|
|
|
|
|
querySQL.addQueryFields("hospitalname", "t3.enterprisename");
|
|
|
querySQL.addQueryFields("agentname", "t5.enterprisename");
|
|
|
@@ -1244,9 +1230,7 @@ public class salestargetstatistics extends Controller {
|
|
|
Long sa_saleareaid = whereObject.getLong("sa_saleareaid");
|
|
|
ArrayList<Long> sa_saleareaids = SaleArea.getSubSaleAreaIds(this, sa_saleareaid);
|
|
|
sa_saleareaids.add(sa_saleareaid);
|
|
|
- Rows rows = dbConnect.runSqlQuery("SELECT DISTINCT t2.userid from sa_salearea_hr t1 " +
|
|
|
- "inner join sys_hr t2 ON t2.hrid=t1.hrid and t2.siteid=t1.siteid " +
|
|
|
- "WHERE t1.siteid='" + siteid + "' and t1.sa_saleareaid in(" + StringUtils.join(sa_saleareaids, ",") + ") and t2.userid>0");
|
|
|
+ Rows rows = dbConnect.runSqlQuery("SELECT DISTINCT t2.userid from sa_salearea_hr t1 " + "inner join sys_hr t2 ON t2.hrid=t1.hrid and t2.siteid=t1.siteid " + "WHERE t1.siteid='" + siteid + "' and t1.sa_saleareaid in(" + StringUtils.join(sa_saleareaids, ",") + ") and t2.userid>0");
|
|
|
HashSet<Long> userIds = new HashSet<>(rows.toArrayList("userid", new ArrayList<>()));
|
|
|
userIds.add(-1L);
|
|
|
where.append(" and(");
|
|
|
@@ -1259,8 +1243,7 @@ public class salestargetstatistics extends Controller {
|
|
|
where.append(" and ( t1.datastatus in (0,2) )");
|
|
|
|
|
|
|
|
|
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid", "createby", "createdate",
|
|
|
- "sys_enterpriseid", "status", "type", "tradingstatus", "datastatus", "billno", "province", "city", "county", "address", "stagename", "grade", "sa_saleareaid");
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid", "createby", "createdate", "sys_enterpriseid", "status", "type", "tradingstatus", "datastatus", "billno", "province", "city", "county", "address", "stagename", "grade", "sa_saleareaid");
|
|
|
querySQL.setTableAlias("t1");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid AND t2.siteid = t1.siteid", "enterprisename");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t3", "t3.sa_saleareaid = t1.sa_saleareaid AND t3.siteid = t1.siteid", "areaname");
|
|
|
@@ -1384,15 +1367,10 @@ public class salestargetstatistics extends Controller {
|
|
|
SQLFactory sqlFactory = new SQLFactory(this, "查询经销商业务员");
|
|
|
sqlFactory.addParameter("siteid", siteid);
|
|
|
|
|
|
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents",
|
|
|
- "sa_agentsid", "sys_enterpriseid", "gmname", "gmphonenumber", "agentnum", "cooperatetype", "remarks", "status", "createdate", "scale", "mainproducts").
|
|
|
- setTableAlias("t1");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
|
|
|
- "enterprisename", "province", "city", "county", "address");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t3", "t1.sys_enterpriseid = t3.ownerid and ownertable = 'sys_enterprise' and t1.siteid = t3.siteid",
|
|
|
- "erpagentnum");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t4", "t1.siteid = t4.siteid and t1.sa_agentsid = t4.ownerid and t4.ownertable = 'sa_agents'",
|
|
|
- "deletereason");
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents", "sa_agentsid", "sys_enterpriseid", "gmname", "gmphonenumber", "agentnum", "cooperatetype", "remarks", "status", "createdate", "scale", "mainproducts").setTableAlias("t1");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid", "enterprisename", "province", "city", "county", "address");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t3", "t1.sys_enterpriseid = t3.ownerid and ownertable = 'sys_enterprise' and t1.siteid = t3.siteid", "erpagentnum");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sys_dataextend", "t4", "t1.siteid = t4.siteid and t1.sa_agentsid = t4.ownerid and t4.ownertable = 'sa_agents'", "deletereason");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, sqlFactory, "t5", "t5.sa_agentsid = t1.sa_agentsid", "salernames");
|
|
|
querySQL.addQueryFields("deletechangedate", "t4.changedate");
|
|
|
querySQL.addQueryFields("deletechangeby", "t4.changeby");
|
|
|
@@ -1422,5 +1400,166 @@ public class salestargetstatistics extends Controller {
|
|
|
return subSaleAreaIds;
|
|
|
}
|
|
|
|
|
|
+ private static String getQuarterStartMonth(int year, int quarter) {
|
|
|
+ int month = (quarter - 1) * 3 + 1; // Q1→1, Q2→4, Q3→7, Q4→10
|
|
|
+ return String.format("%d-%02d", year, month);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 返回 "yyyy-MM" 格式的季度结束月份
|
|
|
+ private static String getQuarterEndMonth(int year, int quarter) {
|
|
|
+ int month = quarter * 3; // Q1→3, Q2→6, Q3→9, Q4→12
|
|
|
+ return String.format("%d-%02d", year, month);
|
|
|
+ }
|
|
|
+
|
|
|
+ @API(title = "首页目标", apiversion = R.ID2026011013200502.v1.class)
|
|
|
+ public String homeTarget() throws YosException {
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
+ int currentYear = now.getYear();
|
|
|
+ int month = now.getMonthValue();
|
|
|
+ int quarter = now.get(IsoFields.QUARTER_OF_YEAR);
|
|
|
+ String currentMonth = currentYear + "-" + (month > 9 ? month : "0" + month);
|
|
|
+ int type = content.getIntValue("type", 1);
|
|
|
+ String startMonth = "";
|
|
|
+ String endMonth = "";
|
|
|
+ switch (type) {
|
|
|
+ //本年
|
|
|
+ case 1:
|
|
|
+ startMonth = currentYear + "-01";
|
|
|
+ endMonth = currentYear + "-12";
|
|
|
+ break;
|
|
|
+ //本季
|
|
|
+ case 2:
|
|
|
+ startMonth = getQuarterStartMonth(currentYear, quarter);
|
|
|
+ endMonth = getQuarterEndMonth(currentYear, quarter);
|
|
|
+ break;
|
|
|
+ //本月
|
|
|
+ case 3:
|
|
|
+ startMonth = currentMonth;
|
|
|
+ endMonth = startMonth;
|
|
|
+ break;
|
|
|
+ //上月
|
|
|
+ case 4:
|
|
|
+ startMonth = getBeforeMonth(currentMonth);
|
|
|
+ endMonth = startMonth;
|
|
|
+ break;
|
|
|
+ //上季度
|
|
|
+ case 5:
|
|
|
+ int prevYear = (quarter == 1) ? currentYear - 1 : currentYear;
|
|
|
+ int prevQuarter = (quarter == 1) ? 4 : quarter - 1;
|
|
|
+ startMonth = getQuarterStartMonth(prevYear, prevQuarter);
|
|
|
+ endMonth = getQuarterEndMonth(prevYear, prevQuarter);
|
|
|
+ break;
|
|
|
+ //去年
|
|
|
+ case 6:
|
|
|
+ startMonth = (currentYear - 1) + "-01";
|
|
|
+ endMonth = (currentYear - 1) + "-12";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ startMonth = content.getStringValueForDate("startMonth", "yyyy-MM", "");
|
|
|
+ endMonth = content.getStringValueForDate("endMonth", "yyyy-MM", "");
|
|
|
+ if (startMonth.isEmpty() || endMonth.isEmpty()) {
|
|
|
+ return getErrReturnObject().setErrMsg("请选择月份").toString();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //医院目标
|
|
|
+ SQLFactory sqlFactory = new SQLFactory(this, "首页医院目标");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", startMonth);
|
|
|
+ sqlFactory.addParameter("end", endMonth);
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ BigDecimal targetamount = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("targetamount");
|
|
|
+
|
|
|
+ //医院订单金额
|
|
|
+ sqlFactory = new SQLFactory(this, "首页医院金额");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", startMonth + "-01");
|
|
|
+ sqlFactory.addParameter("end", getNextMonth(endMonth) + "-01");
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ BigDecimal saleamount = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("saleamount");
|
|
|
+
|
|
|
+ //医院订单金额yoy
|
|
|
+ sqlFactory = new SQLFactory(this, "首页医院金额");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", getYoyMonth(startMonth) + "-01");
|
|
|
+ sqlFactory.addParameter("end", getNextMonth(getYoyMonth(endMonth)) + "-01");
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ BigDecimal saleamount_yoy = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("saleamount");
|
|
|
+
|
|
|
+ //医院订单金额yoy
|
|
|
+ sqlFactory = new SQLFactory(this, "首页医院金额");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", getMomMonth(startMonth) + "-01");
|
|
|
+ sqlFactory.addParameter("end", getNextMonth(getMomMonth(endMonth)) + "-01");
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ BigDecimal saleamount_mom = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("saleamount");
|
|
|
+
|
|
|
+ Row detailrow = new Row();
|
|
|
+
|
|
|
+ Row hospitalrow = new Row();
|
|
|
+ hospitalrow.put("targetamount", targetamount);
|
|
|
+ hospitalrow.put("saleamount", saleamount);
|
|
|
+ hospitalrow.put("saleamount_yoy", saleamount_yoy);
|
|
|
+ hospitalrow.put("saleamount_mom", saleamount_mom);
|
|
|
+ hospitalrow.putIfAbsent("balanceamount", saleamount.subtract(targetamount));
|
|
|
+ //计算达成率
|
|
|
+ hospitalrow.put("rate_achieve", calculateAchieveRate(saleamount, targetamount));
|
|
|
+ //计算环比
|
|
|
+ hospitalrow.put("rate_mom", calculateRate(saleamount, saleamount_mom));
|
|
|
+ //计算同比
|
|
|
+ hospitalrow.put("rate_yoy", calculateRate(saleamount, saleamount_yoy));
|
|
|
+ detailrow.put("hospital", hospitalrow);
|
|
|
+
|
|
|
+ //经销商目标
|
|
|
+ sqlFactory = new SQLFactory(this, "首页经销商目标");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", startMonth);
|
|
|
+ sqlFactory.addParameter("end", endMonth);
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ targetamount = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("targetamount");
|
|
|
+
|
|
|
+ //经销商订单金额
|
|
|
+ sqlFactory = new SQLFactory(this, "首页经销商金额");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", startMonth + "-01");
|
|
|
+ sqlFactory.addParameter("end", getNextMonth(endMonth) + "-01");
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ saleamount = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("saleamount");
|
|
|
+
|
|
|
+ //经销商订单金额yoy
|
|
|
+ sqlFactory = new SQLFactory(this, "首页经销商金额");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", getYoyMonth(startMonth) + "-01");
|
|
|
+ sqlFactory.addParameter("end", getNextMonth(getYoyMonth(endMonth)) + "-01");
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ saleamount_yoy = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("saleamount");
|
|
|
+
|
|
|
+ //经销商订单金额yoy
|
|
|
+ sqlFactory = new SQLFactory(this, "首页经销商金额");
|
|
|
+ sqlFactory.addParameter("siteid", siteid);
|
|
|
+ sqlFactory.addParameter("start", getMomMonth(startMonth) + "-01");
|
|
|
+ sqlFactory.addParameter("end", getNextMonth(getMomMonth(endMonth)) + "-01");
|
|
|
+ sqlFactory.addParameter("userid", userid);
|
|
|
+ saleamount_mom = dbConnect.runSqlQuery(sqlFactory).get(0).getBigDecimal("saleamount");
|
|
|
+
|
|
|
+ Row agentrow = new Row();
|
|
|
+ agentrow.put("targetamount", targetamount);
|
|
|
+ agentrow.put("saleamount", saleamount);
|
|
|
+ agentrow.put("saleamount_yoy", saleamount_yoy);
|
|
|
+ agentrow.put("saleamount_mom", saleamount_mom);
|
|
|
+ agentrow.putIfAbsent("balanceamount", saleamount.subtract(targetamount));
|
|
|
+ //计算达成率
|
|
|
+ agentrow.put("rate_achieve", calculateAchieveRate(saleamount, targetamount));
|
|
|
+ //计算环比
|
|
|
+ agentrow.put("rate_mom", calculateRate(saleamount, saleamount_mom));
|
|
|
+ //计算同比
|
|
|
+ agentrow.put("rate_yoy", calculateRate(saleamount, saleamount_yoy));
|
|
|
+ detailrow.put("agent", agentrow);
|
|
|
+
|
|
|
+
|
|
|
+ return getSucReturnObject().setData(detailrow).toString();
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|