diff --git a/src/main/java/cn/palmte/work/controller/backend/MonthlySettleStatisticsController.java b/src/main/java/cn/palmte/work/controller/backend/MonthlySettleStatisticsController.java new file mode 100644 index 0000000..53ae2e0 --- /dev/null +++ b/src/main/java/cn/palmte/work/controller/backend/MonthlySettleStatisticsController.java @@ -0,0 +1,67 @@ +package cn.palmte.work.controller.backend; + +import cn.palmte.work.bean.SettleBean; +import cn.palmte.work.model.Admin; +import cn.palmte.work.pojo.MonthlySettleCount; +import cn.palmte.work.service.MonthlySettleStatisticsService; +import cn.palmte.work.utils.DateKit; +import cn.palmte.work.utils.InterfaceUtil; +import com.alibaba.fastjson.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@Controller +@RequestMapping("/monthlySettleStatistics") +public class MonthlySettleStatisticsController extends BaseController { + + @Autowired + private MonthlySettleStatisticsService monthlySettleStatisticsService; + + /** + * 开卡订单图表 + * + * @param keywords + * @param pageNumber + * @param pageSize + * @param model + * @return + */ + @RequestMapping("/list") + public String list(@RequestParam(value = "keywords", required = false) String keywords, + @RequestParam(value = "pageNumber", defaultValue = "1") int pageNumber, + @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, + Map model) { + //当前登录人的角色类型 + Admin admin = getAdmin(); + model.put("keywords",keywords); + ConcurrentHashMap searchInfo = getSearchInfo(keywords,model); + String time; + if (!searchInfo.containsKey("time")) { + Calendar instance = Calendar.getInstance(); + instance.setTime(new Date()); + instance.set(Calendar.MONTH, instance.get(Calendar.MONTH)); + Date current = instance.getTime(); + time = DateKit.toStr(current, DateKit.DATE_FORMAT_YEAR_MONTH2); + model.put("time", time); + } + return "/admin/monthly_settle_statistics"; + } + + @RequestMapping("/listData") + @ResponseBody + public String listData(@RequestParam(value = "time", required = false) String time, + Map model) { + // 初始化参数 + List countList = monthlySettleStatisticsService.getListData(time); + return JSONObject.toJSONString(countList); + } +} diff --git a/src/main/java/cn/palmte/work/pojo/MonthlySettleCount.java b/src/main/java/cn/palmte/work/pojo/MonthlySettleCount.java new file mode 100644 index 0000000..5bbb2a5 --- /dev/null +++ b/src/main/java/cn/palmte/work/pojo/MonthlySettleCount.java @@ -0,0 +1,57 @@ +package cn.palmte.work.pojo; + +import java.math.BigDecimal; +import java.util.List; + +public class MonthlySettleCount { + + private String manager; + + private BigDecimal totalCollect; + + private BigDecimal totalPurchasedPaid; + + private BigDecimal collectActualAmount; + + private BigDecimal uncollectActualAmount; + + public String getManager() { + return manager; + } + + public void setManager(String manager) { + this.manager = manager; + } + + public BigDecimal getTotalCollect() { + return totalCollect; + } + + public void setTotalCollect(BigDecimal totalCollect) { + this.totalCollect = totalCollect; + } + + public BigDecimal getTotalPurchasedPaid() { + return totalPurchasedPaid; + } + + public void setTotalPurchasedPaid(BigDecimal totalPurchasedPaid) { + this.totalPurchasedPaid = totalPurchasedPaid; + } + + public BigDecimal getCollectActualAmount() { + return collectActualAmount; + } + + public void setCollectActualAmount(BigDecimal collectActualAmount) { + this.collectActualAmount = collectActualAmount; + } + + public BigDecimal getUncollectActualAmount() { + return uncollectActualAmount; + } + + public void setUncollectActualAmount(BigDecimal uncollectActualAmount) { + this.uncollectActualAmount = uncollectActualAmount; + } +} diff --git a/src/main/java/cn/palmte/work/service/MonthlySettleStatisticsService.java b/src/main/java/cn/palmte/work/service/MonthlySettleStatisticsService.java new file mode 100644 index 0000000..2e974a6 --- /dev/null +++ b/src/main/java/cn/palmte/work/service/MonthlySettleStatisticsService.java @@ -0,0 +1,40 @@ +package cn.palmte.work.service; + +import cn.palmte.work.model.MonthlySettle; +import cn.palmte.work.pojo.MonthlySettleCount; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import top.jfunc.common.db.QueryHelper; +import top.jfunc.common.db.utils.Pagination; + +import java.math.BigDecimal; +import java.util.List; + +@Service +public class MonthlySettleStatisticsService { + private static final Logger logger = LoggerFactory.getLogger(MonthlySettleStatisticsService.class); + + @Autowired + private Pagination pagination; + + public List getListData(String time) { + + QueryHelper helper = new QueryHelper("sum(total_collect) as totalCollect, sum(total_purchased_paid) as totalPurchasedPaid, sum(collect_actual_amount) as collectActualAmount, " + + "sum(uncollect_actual_amount) as uncollectActualAmount, sale_manager as manager", "monthly_settle", "ms"); + helper.addCondition("ms.month = ?", time); + helper.addGroupProperty("ms.sale_manager"); + + List monthlySettleCounts = pagination.find(helper.getSql(), MonthlySettleCount.class); + + for (MonthlySettleCount monthlySettleCount : monthlySettleCounts) { + monthlySettleCount.setTotalCollect(monthlySettleCount.getTotalCollect().divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP)); + monthlySettleCount.setTotalPurchasedPaid(monthlySettleCount.getTotalPurchasedPaid().divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP)); + monthlySettleCount.setCollectActualAmount(monthlySettleCount.getCollectActualAmount().divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP)); + monthlySettleCount.setUncollectActualAmount(monthlySettleCount.getUncollectActualAmount().divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP)); + } + + return monthlySettleCounts; + } +} diff --git a/src/main/resources/templates/admin/monthly_settle_statistics.ftl b/src/main/resources/templates/admin/monthly_settle_statistics.ftl new file mode 100644 index 0000000..b44c78b --- /dev/null +++ b/src/main/resources/templates/admin/monthly_settle_statistics.ftl @@ -0,0 +1,334 @@ +<#assign base=request.contextPath /> +<#import "../common/defaultLayout.ftl" as defaultLayout> +<@defaultLayout.layout> + +
+
+
+
项目统计 / + 项目汇总统计
+
+ +
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + +