package com.zy.crm.manager.controller; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.Cools; import com.core.common.R; import com.zy.crm.common.web.BaseController; import com.zy.crm.manager.entity.*; import com.zy.crm.manager.service.*; import com.zy.crm.system.entity.Role; import com.zy.crm.system.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @RestController public class DashboardController extends BaseController { @Autowired private CompanyTargetService companyTargetService; @Autowired private OrderService orderService; @Autowired private PlanService planService; @Autowired private PriOnline2Service priOnline2Service; @Autowired private PriQuoteService priQuoteService; @Autowired private BusinessTripService businessTripService; @Autowired private BusinessTripOtherService businessTripOtherService; @Autowired private ReimburseOnlineService reimburseOnlineService; @Autowired private CompanyMoneyService companyMoneyService; //获取团队数据 @RequestMapping(value = "/dashboard/companyData/auth") @ManagerAuth public R getCompanyData() { HashMap map = new HashMap<>(); NumberFormat formatter = new DecimalFormat("#,###"); Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy"); String year = format.format(date); CompanyTarget companyTarget = companyTargetService.selectCompanyByYear(year);//获取公司全年目标数据 if (companyTarget == null) { return R.error(); } double whole = Double.parseDouble(companyTarget.getTarget()); map.put("yearTarget", formatter.format(whole));//全年交易目标 //获取全年交易成功金额 Double successMoney = orderService.selectMoneyByYearAndStatus(year, 1); //获取全年未交易成功金额 // double v = whole - orderService.selectMoneyByYearAndStatus(year, 0); double v = whole - orderService.selectMoneyByYearAndStatus(year, 1); Double progressMoney = v > 0? v : 0D; //获取全年交易失败金额 Double failedMoney = orderService.selectMoneyByYearAndStatus(year, 2); //全年完成率 // double yearTransactionRate = successMoney == 0 ? successMoney : (successMoney / (successMoney + progressMoney + failedMoney)) * 100; double yearTransactionRate = successMoney == 0 ? successMoney : (successMoney / Double.parseDouble(companyTarget.getTarget())) * 100; map.put("successMoney", formatter.format(successMoney));//全年交易成功金额 map.put("progressMoney", formatter.format(progressMoney));//全年未交易成功金额 map.put("yearTransactionRate", String.format("%.2f", yearTransactionRate));//全年交易率 return R.ok().add(map); } //获取员工个人数据 @RequestMapping(value = "/dashboard/personData/auth") @ManagerAuth public R getPersonData() { HashMap map = new HashMap<>(); NumberFormat formatter = new DecimalFormat("#,###"); Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy"); String year = format.format(date); Double yearTarget = 0D;//获取个人全年目标数据 CompanyTarget person = companyTargetService.selectPersonByYear(year, getUserId()); if (person != null) { yearTarget = Double.parseDouble(person.getTarget()); } map.put("yearTarget", formatter.format(yearTarget));//全年交易目标 //获取全年交易成功金额 Double successMoney = orderService.selectMoneyByUserAndYearAndStatus(getUserId(), year, 1); //获取全年未交易成功金额 double v = yearTarget - orderService.selectMoneyByUserAndYearAndStatus(getUserId(), year, 1); Double progressMoney = v > 0? v : 0D; Double progressMoney2 = orderService.selectMoneyByUserAndYearAndStatus(getUserId(), year, 0); //获取全年交易失败金额 Double failedMoney = orderService.selectMoneyByUserAndYearAndStatus(getUserId(), year, 2); //全年完成率 // double yearTransactionRate = successMoney == 0 ? successMoney : (successMoney / (successMoney + progressMoney + failedMoney)) * 100; double yearTransactionRate = yearTarget==0? 0 : successMoney == 0 ? successMoney : (successMoney / yearTarget) * 100; map.put("successMoney", formatter.format(successMoney));//全年交易成功金额 map.put("progressMoney", formatter.format(progressMoney));//全年未交易成功金额 map.put("progressMoney2", formatter.format(progressMoney2));//跟踪项目金额 map.put("yearTransactionRate", String.format("%.2f", yearTransactionRate));//全年交易率 //获取全年跟踪数量 Integer progressCount = orderService.selectCountByUserYearAndStatus(getUserId(), year, 0); //获取全年成交数量 Integer successCount = orderService.selectCountByUserYearAndStatus(getUserId(), year, 1); map.put("progressCount", progressCount); map.put("successCount", successCount); // planPendingTaskCount // priOnlinePendingTaskCount // priQuotePendingTaskCount // businessTripPendingTaskCount // reimburseOnlinePendingTaskCount // planPriOnlinePendingTaskCount //获取待处理任务数量 int planPendingTaskCount = planService.selectCount(new EntityWrapper().eq("director", getUserId()).lt("settle",4)); map.put("planPendingTaskCount", planPendingTaskCount); int priOnlinePendingTaskCount = priOnline2Service.selectCount(new EntityWrapper().eq("member_id", getUserId()).lt("settle",2)); map.put("priOnlinePendingTaskCount", priOnlinePendingTaskCount); int priQuotePendingTaskCount = priQuoteService.selectCount(new EntityWrapper().eq("member_id", getUserId()).lt("settle",4)); map.put("priQuotePendingTaskCount", priQuotePendingTaskCount); int businessTripCount = businessTripService.selectCount(new EntityWrapper().eq("member_id", getUserId()).lt("settle", 2)); int businessTripOtherCount = businessTripOtherService.selectCount(new EntityWrapper().eq("member_id", getUserId()).lt("settle",2)); int businessTripPendingTaskCount = businessTripCount+businessTripOtherCount; map.put("businessTripPendingTaskCount", businessTripPendingTaskCount); int reimburseOnlinePendingTaskCount = reimburseOnlineService.selectCount(new EntityWrapper().eq("member_id", getUserId()).lt("settle",6)); map.put("reimburseOnlinePendingTaskCount", reimburseOnlinePendingTaskCount); int planPriOnlinePendingTaskCount = planService.selectCount(new EntityWrapper().eq("status", 1).eq("settle",4)); map.put("planPriOnlinePendingTaskCount", planPriOnlinePendingTaskCount); Double successMoney1 = companyMoneyService.selectMoneyReceivablesAll(getUserId(), year); map.put("successMoney1", successMoney1==null? 0:successMoney1); Double successMoney2 = companyMoneyService.selectMoneyActualReceiptsAll(getUserId(), year); map.put("successMoney2", successMoney2==null? 0:successMoney2); return R.ok().add(map); } //获取员工排行榜 @RequestMapping(value = "/dashboard/staffRank/auth") @ManagerAuth public R getStaffRank() { ArrayList> list = new ArrayList<>(); NumberFormat formatter = new DecimalFormat("#,###"); for (Order order : orderService.selectTopMoney()) { HashMap map = new HashMap<>(); map.put("username", order.getUserId$()); map.put("money", formatter.format(order.getMoney())); list.add(map); } return R.ok().add(list); } //获取当前年度12个月的交易成功数据 @RequestMapping(value = "/dashboard/currentMonthData/auth") @ManagerAuth public R getCurrentMonthData() { List list = orderService.selectCurrentYearMonthSuccess(); List lists = new ArrayList<>(); int i = 0; Double[] money=new Double[]{0.0,0.0,0.0,0.0}; for (Double d : list){ if (i<3){ money[0] = money[0]+d; }else if (i<6){ money[1] = money[1]+d; }else if (i<9){ money[2] = money[2]+d; }else if (i<12){ money[3] = money[3]+d; } i++; } for (Double d : money){ double d1=d/3; lists.add(d1); lists.add(d1); lists.add(d1); } return R.ok().add(lists); } @RequestMapping("/dashboard/popup/auth") public R popup(String token) { String item = "false"; if (Cools.isEmpty(token)){ return R.ok(item); } User user = getUser(token); if (Cools.isEmpty(user) || Cools.isEmpty(user.getRoleId())){ return R.ok(item); } if (user.getRoleId()<3){ item="true"; } return R.ok(item); } }