效率利用分析
This commit is contained in:
parent
5388645137
commit
9bc741f1c1
|
|
@ -28,6 +28,55 @@ public class SjMaxDeviceController extends BaseController {
|
|||
private SjMaxDeviceService service;
|
||||
|
||||
|
||||
/**
|
||||
* 效率整体情况
|
||||
*
|
||||
* @param o 传参
|
||||
* @return 资源应用利率控制层
|
||||
*/
|
||||
@GetMapping("selectDeviceWorkerEfficiency")
|
||||
public AjaxResult selectDeviceWorkerEfficiency(SjMaxDevice o) {
|
||||
try {
|
||||
return service.selectDeviceWorkerEfficiency(o);
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
return error("请求出错了");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 效率分析top5
|
||||
*
|
||||
* @param o 传参
|
||||
* @return 资源应用利率控制层
|
||||
*/
|
||||
@GetMapping("selectTeamEfficiencyEcharts")
|
||||
public AjaxResult selectTeamEfficiencyEcharts(SjMaxDevice o) {
|
||||
try {
|
||||
return service.selectTeamEfficiencyEcharts(o);
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
return error("请求出错了");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一周到岗人数趋势
|
||||
*
|
||||
* @param o 传参
|
||||
* @return 资源应用利率控制层
|
||||
*/
|
||||
@GetMapping("selectWeekOnDutyEcharts")
|
||||
public AjaxResult selectWeekOnDutyEcharts(SjMaxDevice o) {
|
||||
try {
|
||||
return service.selectWeekOnDutyEcharts(o);
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
return error("请求出错了");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 资源应用利率控制层
|
||||
*
|
||||
|
|
@ -35,7 +84,7 @@ public class SjMaxDeviceController extends BaseController {
|
|||
* @return 资源应用利率控制层
|
||||
*/
|
||||
@GetMapping("selectDeviceEcharts")
|
||||
public AjaxResult selectDeviceEcharts(SjMaxDevice o) {
|
||||
public AjaxResult selectDeviceEcharts11(SjMaxDevice o) {
|
||||
try {
|
||||
return service.selectDeviceEcharts(o);
|
||||
} catch (Exception e) {
|
||||
|
|
@ -45,4 +94,6 @@ public class SjMaxDeviceController extends BaseController {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,4 +6,10 @@ public interface SjMaxDeviceService{
|
|||
|
||||
|
||||
AjaxResult selectDeviceEcharts(SjMaxDevice o);
|
||||
|
||||
AjaxResult selectTeamEfficiencyEcharts(SjMaxDevice o);
|
||||
|
||||
AjaxResult selectWeekOnDutyEcharts(SjMaxDevice o);
|
||||
|
||||
AjaxResult selectDeviceWorkerEfficiency(SjMaxDevice o);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,10 +24,25 @@ public class SjMaxDeviceServiceImpl implements SjMaxDeviceService{
|
|||
|
||||
@Override
|
||||
public AjaxResult selectDeviceEcharts(SjMaxDevice o) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
//设备的图
|
||||
List<SjMaxDevice> list = mapper.selectDeviceEcharts(o);
|
||||
result.put("deviceEcharts", list);
|
||||
return AjaxResult.success("查询成功",list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult selectTeamEfficiencyEcharts(SjMaxDevice o) {
|
||||
//一周到岗率
|
||||
LocalDate endDate = LocalDate.now(); // 今天
|
||||
String endTime = endDate.toString();
|
||||
o.setStartTime(endTime);
|
||||
o.setEndTime(endTime);
|
||||
//效率分析
|
||||
List<SjMaxDevice> efficiencyList = mapper.selectEfficiency(o);
|
||||
return AjaxResult.success("查询成功",efficiencyList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult selectWeekOnDutyEcharts(SjMaxDevice o) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
//一周到岗率
|
||||
LocalDate endDate = LocalDate.now(); // 今天
|
||||
LocalDate startDate = endDate.minusDays(6); // 7天前
|
||||
|
|
@ -36,22 +51,43 @@ public class SjMaxDeviceServiceImpl implements SjMaxDeviceService{
|
|||
o.setStartTime(startTime);
|
||||
o.setEndTime(endTime);
|
||||
List<SjMaxDevice> workerList = mapper.selectWorkerEcharts(o);
|
||||
result.put("workerEcharts", workerList);
|
||||
return AjaxResult.success("查询成功",workerList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult selectDeviceWorkerEfficiency(SjMaxDevice o) {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
//设备的图
|
||||
List<SjMaxDevice> list = mapper.selectDeviceEcharts(o);
|
||||
//一周到岗率
|
||||
LocalDate endDate = LocalDate.now(); // 今天
|
||||
LocalDate startDate = endDate.minusDays(6); // 6天前
|
||||
String startTime = startDate.toString(); // 格式:yyyy-MM-dd
|
||||
String endTime = endDate.toString();
|
||||
o.setStartTime(startTime);
|
||||
o.setEndTime(endTime);
|
||||
List<SjMaxDevice> workerList = mapper.selectWorkerEcharts(o);
|
||||
result.put("todayDutyRate", 0);
|
||||
result.put("yesterdayDutyRate", 0);
|
||||
if(workerList != null && !workerList.isEmpty()){
|
||||
result.put("todayDutyRate", workerList.get(workerList.size()-1).getActualCount()/workerList.get(workerList.size()-1).getShouldCount()*100);
|
||||
result.put("todayDutyRate", Math.round(workerList.get(workerList.size()-1).getActualCount()*100/Double.valueOf(workerList.get(workerList.size()-1).getShouldCount()) * 10.0) / 10.0);
|
||||
if(workerList.size()>1){
|
||||
result.put("yesterdayDutyRate", workerList.get(workerList.size()-2).getActualCount()/workerList.get(workerList.size()-2).getShouldCount()*100);
|
||||
result.put("yesterdayDutyRate", Math.round(workerList.get(workerList.size()-2).getActualCount()*100/Double.valueOf(workerList.get(workerList.size()-2).getShouldCount()) * 10.0) / 10.0);
|
||||
}
|
||||
}
|
||||
//整体人员利用率和设备使用率
|
||||
double totalActualCount = workerList.stream()
|
||||
.mapToDouble(SjMaxDevice::getActualCount)
|
||||
.sum();
|
||||
double totalShouldCount = workerList.stream()
|
||||
.mapToDouble(SjMaxDevice::getShouldCount)
|
||||
.sum();
|
||||
double totalActualCount = 0;
|
||||
if (workerList != null) {
|
||||
totalActualCount = workerList.stream()
|
||||
.mapToDouble(SjMaxDevice::getActualCount)
|
||||
.sum();
|
||||
}
|
||||
double totalShouldCount = 0;
|
||||
if (workerList != null) {
|
||||
totalShouldCount = workerList.stream()
|
||||
.mapToDouble(SjMaxDevice::getShouldCount)
|
||||
.sum();
|
||||
}
|
||||
double workerUtilization = 0;
|
||||
if (totalShouldCount > 0) {
|
||||
workerUtilization = (totalActualCount / totalShouldCount) * 100;
|
||||
|
|
@ -70,9 +106,6 @@ public class SjMaxDeviceServiceImpl implements SjMaxDeviceService{
|
|||
deviceUtilization = (double) Math.round(deviceUtilization * 10.0) / 10.0;
|
||||
}
|
||||
result.put("deviceUtilization", deviceUtilization);
|
||||
//效率分析
|
||||
List<SjMaxDevice> efficiencyList = mapper.selectEfficiency(o);
|
||||
result.put("efficiency", efficiencyList);
|
||||
return AjaxResult.success("查询成功",result);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,19 +85,20 @@
|
|||
wt.team_name,
|
||||
wt.team_leader,
|
||||
tp_count.total_people,
|
||||
ROUND(
|
||||
COALESCE(SUM(actual.actual_count), 0) * 100.0 /
|
||||
((DATEDIFF(#{endTime} , #{startTime}) + 1) * tp_count.total_people),
|
||||
2
|
||||
) AS utilization_rate -- 百分比形式(如 86.70)
|
||||
IFNULL(ROUND(
|
||||
COALESCE(SUM(actual.actual_count), 0) * 100.0 /
|
||||
((DATEDIFF(#{endTime} , #{startTime}) + 1) * tp_count.total_people),
|
||||
2
|
||||
),0.0) AS utilization_rate
|
||||
FROM sj_work_team wt
|
||||
INNER JOIN (
|
||||
Left JOIN (
|
||||
-- 每个班组的总人数
|
||||
SELECT
|
||||
team_id,
|
||||
COUNT(*) AS total_people
|
||||
FROM sj_team_people
|
||||
WHERE team_id IS NOT NULL
|
||||
st.id as team_id,
|
||||
COUNT(team_id) AS total_people
|
||||
FROM
|
||||
sj_work_team st
|
||||
left join sj_team_people sp on st.id = sp.team_id
|
||||
GROUP BY team_id
|
||||
) tp_count ON wt.id = tp_count.team_id
|
||||
CROSS JOIN (
|
||||
|
|
@ -129,5 +130,6 @@
|
|||
GROUP BY
|
||||
wt.id, wt.team_name, wt.team_leader, tp_count.total_people
|
||||
ORDER BY utilization_rate DESC
|
||||
limit 5
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue