app首页

This commit is contained in:
hayu 2024-08-06 10:58:01 +08:00
parent b0bea87aeb
commit a11c5a932b
6 changed files with 478 additions and 0 deletions

View File

@ -0,0 +1,62 @@
package com.bonus.aqgqj.app.controller;
import com.bonus.aqgqj.app.entity.HomeAppVo;
import com.bonus.aqgqj.app.service.HomeAppService;
import com.bonus.aqgqj.basis.entity.vo.HomeVo;
import io.swagger.annotations.Api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* @author hay
* @description app首页
* @date 2024/8/6 10:18
*/
@Api(tags = "app首页")
@RestController
@RequestMapping("/app/home/")
public class HomeAppController {
private static final Logger log = LoggerFactory.getLogger("adminLogger");
@Autowired
private HomeAppService service;
/**
* app首页--代办任务统计
*/
@PostMapping(value = "getApprovalNum")
public Map<String, Object> getApprovalNum(HomeAppVo vo) {
return service.getApprovalNum(vo);
}
/**
* 班组工作情况统计
*/
@PostMapping(value = "getATeamNumForEcharts")
public Map<String,Object> getATeamNumForEcharts(HomeAppVo vo) {
return service.getATeamNumForEcharts(vo);
}
/**
* 费用统计
*/
@PostMapping(value = "getATeamCostForEcharts")
public Map<String,Object> getATeamCostForEcharts(HomeAppVo vo) {
return service.getATeamCostForEcharts(vo);
}
/**
* 大客户信息
*/
@PostMapping(value = "getCostRank")
public Map<String,Object> getCostRank(HomeAppVo vo) {
return service.getCostRank(vo);
}
}

View File

@ -0,0 +1,49 @@
package com.bonus.aqgqj.app.dao;
import com.bonus.aqgqj.app.entity.HomeAppVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @description app首页
* @author hay
* @date 2024/8/6 10:25
*/
@Mapper
public interface HomeAppDao {
/**
* 获取代办任务
* @param vo
* @return
*/
List<HomeAppVo> getApprovalNum(HomeAppVo vo);
/**
* 获取班组
* @param vo
* @return
*/
List<HomeAppVo> getTeams(HomeAppVo vo);
/**
* 查询试验班组echarts
* @param vo
* @return
*/
List<HomeAppVo> getATeamNumForEcharts(HomeAppVo vo);
/**
* 查询试验费用echarts
* @param vo
* @return
*/
List<HomeAppVo> getATeamCostForEcharts(HomeAppVo vo);
/**
* 查询大客户信息
* @param vo
* @return
*/
List<HomeAppVo> getCostRank(HomeAppVo vo);
}

View File

@ -0,0 +1,85 @@
package com.bonus.aqgqj.app.entity;
import lombok.Data;
import java.util.List;
/**
* @className:ExperDeviceVo
* @author:cwchen
* @date:2024-07-19-13:29
* @version:1.0
* @description:试验设备-vo
*/
@Data
public class HomeAppVo {
private String id;
/**
* 待派工
*/
private String dispatchWorkNum;
/**
* 待试验/实验数
*/
private String testNum;
/**
* 待重新审阅
*/
private String reloadReviewNUm;
/**
* 待审阅
*/
private String reviewNUm;
/**
* 待审核
*/
private String examineNum;
/**
* 待审批
*/
private String approvalNum;
/**
* 班组名称
*/
private String teamName;
/**
* 试验日期
*/
private String testData;
/**
* 试验费用
*/
private String testCost;
/**
* 排名
*/
private String sortNum;
/**
* 用户名称
*/
private String userName;
/**
* 总费用
*/
private String totalCost;
/**
* 订单量
*/
private String orderNum;
/**
* 联系人
*/
private String contacts;
/**
* 联系电话
*/
private String contactPhone;
/**
* 合作时间
*/
private String cooperateDate;
private String updateDate;
private String type;
private List<HomeAppVo> listData;
}

View File

@ -0,0 +1,41 @@
package com.bonus.aqgqj.app.service;
import com.bonus.aqgqj.app.entity.HomeAppVo;
import java.util.Map;
/**
* @description app首页
* @author hay
* @date 2024/8/6 10:21
*/
public interface HomeAppService {
/**
* 代办任务数量
* @param vo
* @return
*/
Map<String, Object> getApprovalNum(HomeAppVo vo);
/**
* 班组工作情况统计
* @param vo
* @return
*/
Map<String, Object> getATeamNumForEcharts(HomeAppVo vo);
/**
* 费用统计
* @param vo
* @return
*/
Map<String, Object> getATeamCostForEcharts(HomeAppVo vo);
/**
* 大客户信息
* @param vo
* @return
*/
Map<String, Object> getCostRank(HomeAppVo vo);
}

View File

@ -0,0 +1,154 @@
package com.bonus.aqgqj.app.service.impl;
import com.bonus.aqgqj.app.dao.HomeAppDao;
import com.bonus.aqgqj.app.entity.HomeAppVo;
import com.bonus.aqgqj.app.service.HomeAppService;
import com.bonus.aqgqj.basis.entity.vo.HomeVo;
import com.bonus.aqgqj.utils.DateTimeHelper;
import com.bonus.aqgqj.utils.ListHelper;
import com.bonus.aqgqj.utils.StringHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @description app首页
* @author hay
* @date 2024/8/6 10:24
*/
@Slf4j
@Service
public class HomeAppServiceImpl implements HomeAppService {
@Resource
private HomeAppDao dao;
/**
* 获取代办任务数量
*/
@Override
public Map<String, Object> getApprovalNum(HomeAppVo vo) {
Map<String, Object> map=new HashMap<>();
try{
List<HomeAppVo> list=dao.getApprovalNum(vo);
HomeAppVo hvo=list.get(0);
map.put("data",hvo);
map.put("code","200");
}catch (Exception e){
e.printStackTrace();
map.put("code","400");
}
return map;
}
/**
* 班组工作情况统计
*/
@Override
public Map<String, Object> getATeamNumForEcharts(HomeAppVo vo) {
Map<String, Object> map = new HashMap<>();
try {
List<String> dates = new ArrayList<>();
//获取班组数据
List<HomeAppVo> teamlist = dao.getTeams(vo);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
if ("1".equals(vo.getType())) {
// 获取当前日期和时间
Calendar calendar = Calendar.getInstance();
for (int i = 1; i <= 14; i++) {
// 使用add方法减去指定的天数
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
}
} else {
// 获取当前日期和时间
Calendar calendar = Calendar.getInstance();
for (int i = 1; i <= 6; i++) {
// 使用add方法减去指定的天数
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
}
}
dates = DateTimeHelper.getDatesBetween(sdf.format(date), sdf.format(new Date()));
List<HomeAppVo> lists = new ArrayList<>();
List<HomeAppVo> listsalls = new ArrayList<>();
for (HomeAppVo teamvo : teamlist) {
List<HomeAppVo> list = dao.getATeamNumForEcharts(teamvo);
if (ListHelper.isEmpty(list)) {
continue;
}
lists = new ArrayList<>();
for (String daetr : dates) {
HomeAppVo hvod = new HomeAppVo();
hvod.setTeamName(teamvo.getTeamName());
hvod.setTestData(daetr);
hvod.setTestNum("0");
for (HomeAppVo hvo : list) {
if (daetr.equals(hvo.getTestData())) {
hvod.setTestNum(hvo.getTestNum());
}
}
lists.add(hvod);
}
teamvo.setListData(lists);
listsalls.add(teamvo);
}
map.put("data", listsalls);
map.put("code", "200");
} catch (Exception e) {
e.printStackTrace();
map.put("code", "400");
}
return map;
}
/**
* 班组费用统计
*/
@Override
public Map<String, Object> getATeamCostForEcharts(HomeAppVo vo) {
Map<String, Object> map=new HashMap<>();
try{
List<HomeAppVo> list=dao.getATeamCostForEcharts(vo);
map.put("data",list);
map.put("code","200");
}catch (Exception e){
e.printStackTrace();
map.put("code","400");
}
return map;
}
@Override
public Map<String, Object> getCostRank(HomeAppVo vo) {
Map<String, Object> map = new HashMap<>();
try {
List<HomeAppVo> list = dao.getCostRank(vo);
//将金额转换为万元
for (HomeAppVo hvo : list) {
if (StringHelper.isNotEmpty(hvo.getTotalCost())) {
// 转换为 double 并除以 10000
double value = Double.valueOf(hvo.getTotalCost()) / 10000;
// 创建 DecimalFormat 实例设置最多四位小数
DecimalFormat df = new DecimalFormat("#.####");
// 设置舍入模式为直接截断可选因为默认就是这样
df.setRoundingMode(java.math.RoundingMode.DOWN);
// 格式化 double
String formattedValue = df.format(value);
hvo.setTotalCost(formattedValue);
}
}
map.put("data", list);
map.put("code", "200");
} catch (Exception e) {
e.printStackTrace();
map.put("code", "400");
}
return map;
}
}

View File

@ -0,0 +1,87 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.aqgqj.app.dao.HomeAppDao">
<select id="getApprovalNum" parameterType="com.bonus.aqgqj.app.entity.HomeAppVo" resultType="com.bonus.aqgqj.app.entity.HomeAppVo">
select
sum(case when team_id is null then 1 else 0 end ) as dispatchWorkNum
,sum(case when team_id is not null and process_status is null then 1 else 0 end ) as testNum
,sum(case when process_status='1' and is_er=0 then 1 else 0 end ) as reloadReviewNUm
,sum(case when process_status='1' and is_er is null and audti_status!='2' then 1 else 0 end ) as reviewNUm
,sum(case when process_status='2' and audti_status!='2' then 1 else 0 end ) as examineNum
,sum(case when process_status='3' and audti_status!='2' then 1 else 0 end ) as approvalNum
,DATE_FORMAT(NOW(), '%Y-%m-%d') as updateDate
from (
select * from tb_sample where del_flag='0'
) ts
</select>
<select id="getATeamNumForEcharts" parameterType="com.bonus.aqgqj.app.entity.HomeAppVo" resultType="com.bonus.aqgqj.app.entity.HomeAppVo">
SELECT testData, COUNT(1) AS testNum
from (select tt.team_name as teamName, ts.id, DATE_FORMAT(ts.dispatch_time, '%Y-%m-%d') as testData
from tb_sample ts
LEFT JOIN tb_team tt on ts.team_id = tt.id
where ts.del_flag = '0'
and tt.id = #{id}) aa
group by testData
</select>
<select id="getTeams" parameterType="com.bonus.aqgqj.app.entity.HomeAppVo" resultType="com.bonus.aqgqj.app.entity.HomeAppVo">
select id, team_name as teamname
from tb_team
where del_flag = '0'
</select>
<select id="getATeamCostForEcharts" parameterType="com.bonus.aqgqj.app.entity.HomeAppVo" resultType="com.bonus.aqgqj.app.entity.HomeAppVo">
select teamName,
sum(amount) as testCost
from (select tt.team_name as teamName, ts.id, te.amount
from tb_exper te
left join tb_sample ts on te.sample_id = ts.id
left join tb_team tt on ts.team_id = tt.id
where ts.del_flag = '0') aa
group by teamName
</select>
<select id="getCostRank" parameterType="com.bonus.aqgqj.app.entity.HomeAppVo" resultType="com.bonus.aqgqj.app.entity.HomeAppVo">
SELECT
*
FROM
(
SELECT
aa.id,
aa.custom_name AS userName,
aa.custom_user AS contacts,
aa.custom_phone AS contactPhone,
SUM( te.dev_num ) AS orderNum,
MAX( te.update_time ) AS cooperateDate,
SUM( te.dev_num * bb.amount ) + SUM(IFNULL( ted.amount, 0 )) AS totalCost
FROM
(
SELECT
ec.id,
ec.custom_name,
ec.custom_user,
ec.custom_phone
FROM
tb_custom ec
WHERE
ec.del_flag = 0
AND ec.dept_id = 0
) aa
LEFT JOIN tb_exper te ON te.submit_unit = aa.id
AND te.del_flag = 0
LEFT JOIN(
SELECT
exper_id,
SUM(amount) as amount
FROM
tb_exper_dev
GROUP BY exper_id
) ted ON ted.exper_id = te.id
LEFT JOIN ( SELECT exper_id, SUM( IFNULL( amount, 0 ) ) AS amount FROM tb_exper_items GROUP BY exper_id ) bb ON bb.exper_id = te.id
GROUP BY
te.submit_unit
) cc
WHERE
cc.cooperateDate IS NOT NULL
ORDER BY
cc.totalCost DESC
LIMIT 5
</select>
</mapper>