|
@@ -76,8 +76,8 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
public IPage<TaskNode> pageList(IPage page, LbqWrapper<TaskNode> wrapper) {
|
|
|
IPage<TaskNode> taskNodeIPage = baseMapper.pageList(page, wrapper, new DataScope());
|
|
|
List<TaskNode> records = taskNodeIPage.getRecords();
|
|
|
- records.forEach(item->{
|
|
|
- if (item.getEndTime() != null && item.getStartTime() != null){
|
|
|
+ records.forEach(item -> {
|
|
|
+ if (item.getEndTime() != null && item.getStartTime() != null) {
|
|
|
String datePoor = DateUtil.getDatePoor(item.getEndTime(), item.getStartTime());
|
|
|
item.setStatisticalHours(datePoor);
|
|
|
}
|
|
@@ -87,10 +87,10 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<TaskNode> queryOperatorDetailPerformance(TaskNode taskNode){
|
|
|
+ public List<TaskNode> queryOperatorDetailPerformance(TaskNode taskNode) {
|
|
|
List<TaskNode> taskNodes = baseMapper.queryOperatorDetailPerformance(taskNode);
|
|
|
- taskNodes.forEach(item->{
|
|
|
- if (item.getEndTime() != null && item.getStartTime() != null){
|
|
|
+ taskNodes.forEach(item -> {
|
|
|
+ if (item.getEndTime() != null && item.getStartTime() != null) {
|
|
|
String datePoor = DateUtil.getDatePoor(item.getEndTime(), item.getStartTime());
|
|
|
item.setStatisticalHours(datePoor);
|
|
|
}
|
|
@@ -105,14 +105,14 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
@Override
|
|
|
public List<TaskNode> queryProductionLineOee(TaskNode params) {
|
|
|
- if(null == params.getStatisticalDate()){
|
|
|
+ if (null == params.getStatisticalDate()) {
|
|
|
Calendar calCalendar = Calendar.getInstance();
|
|
|
int monthHour = calCalendar.getActualMaximum(Calendar.DATE) * 24;
|
|
|
params.setMonthHour(monthHour);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
Calendar calCalendar = Calendar.getInstance();
|
|
|
- if(StringUtils.isNotEmpty(params.getStatisticalDate())){
|
|
|
- Date searchDate = com.github.zuihou.common.util.DateUtil.stringToDate0(params.getStatisticalDate(),"yyyy-MM");
|
|
|
+ if (StringUtils.isNotEmpty(params.getStatisticalDate())) {
|
|
|
+ Date searchDate = com.github.zuihou.common.util.DateUtil.stringToDate0(params.getStatisticalDate(), "yyyy-MM");
|
|
|
calCalendar.setTime(searchDate);
|
|
|
}
|
|
|
int monthHour = calCalendar.getActualMaximum(Calendar.DATE) * 24;
|
|
@@ -123,11 +123,11 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public IPage<ProductDto> getProductStatistics(Long page, Long limit, ProductVo vo){
|
|
|
+ public IPage<ProductDto> getProductStatistics(Long page, Long limit, ProductVo vo) {
|
|
|
List<ProductDto> statistics = workpieceMapper.getProductStatistics(vo);
|
|
|
if (!CollectionUtil.isEmpty(statistics)) {
|
|
|
- statistics.stream().forEach(item->{
|
|
|
- if (item.getEndTime() != null && item.getStartTime() != null){
|
|
|
+ statistics.stream().forEach(item -> {
|
|
|
+ if (item.getEndTime() != null && item.getStartTime() != null) {
|
|
|
String datePoor = DateUtil.getDatePoor(item.getEndTime(), item.getStartTime());
|
|
|
item.setHour(datePoor);
|
|
|
}
|
|
@@ -140,6 +140,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
/**
|
|
|
* 产品流转详情
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
@@ -176,7 +177,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
response.setHeader("content-Type", "application/vnd.ms-excel");
|
|
|
// 设计导出文件的名称,尽量不要中文
|
|
|
String fileName = new String("产品流转详汇总.xls".getBytes(), "ISO-8859-1");
|
|
|
- response.setHeader("Content-Disposition","attachment;filename="+ fileName);
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
//输出流。
|
|
|
ServletOutputStream out = response.getOutputStream();
|
|
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("产品流转详汇总", "产品流转详汇总"), ProductDto.class, productStatistics);
|
|
@@ -187,23 +188,23 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
public void expectProductInfo(HttpServletResponse response) throws IOException {
|
|
|
ProductVo vo = new ProductVo();
|
|
|
List<ProductInfoDto> productInfoDtos = workpieceMapper.selectProductInfo(vo);
|
|
|
- List<ProductInfoDto> productInfos = productInfoDtos.stream().map(item->{
|
|
|
+ List<ProductInfoDto> productInfos = productInfoDtos.stream().map(item -> {
|
|
|
ProductInfoDto productInfoDto = BeanUtil.toBean(item, ProductInfoDto.class);
|
|
|
if (item.getEndTime() != null && item.getStartTime() != null) {
|
|
|
String hour = DateUtil.getDatePoor(item.getEndTime(), item.getStartTime());
|
|
|
productInfoDto.setHour(hour);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
productInfoDto.setHour("0");
|
|
|
}
|
|
|
return productInfoDto;
|
|
|
}).collect(Collectors.toList());
|
|
|
- List<ProductInfoExcelDto> excels =productInfos.stream().map(item->{
|
|
|
- ProductInfoExcelDto excelDto = BeanUtil.toBean(item,ProductInfoExcelDto.class);
|
|
|
+ List<ProductInfoExcelDto> excels = productInfos.stream().map(item -> {
|
|
|
+ ProductInfoExcelDto excelDto = BeanUtil.toBean(item, ProductInfoExcelDto.class);
|
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- excelDto.setPlanStartTime(item.getPlanStartTime()!=null ? simpleDateFormat.format(item.getPlanStartTime()):"");
|
|
|
- excelDto.setPlanEndTime(item.getPlanEndTime()!=null ? simpleDateFormat.format(item.getPlanEndTime()):"");
|
|
|
- excelDto.setStartTime(item.getStartTime()!=null ? simpleDateFormat.format(item.getStartTime()):"");
|
|
|
- excelDto.setEndTime(item.getEndTime()!=null ? simpleDateFormat.format(item.getEndTime()):"");
|
|
|
+ excelDto.setPlanStartTime(item.getPlanStartTime() != null ? simpleDateFormat.format(item.getPlanStartTime()) : "");
|
|
|
+ excelDto.setPlanEndTime(item.getPlanEndTime() != null ? simpleDateFormat.format(item.getPlanEndTime()) : "");
|
|
|
+ excelDto.setStartTime(item.getStartTime() != null ? simpleDateFormat.format(item.getStartTime()) : "");
|
|
|
+ excelDto.setEndTime(item.getEndTime() != null ? simpleDateFormat.format(item.getEndTime()) : "");
|
|
|
return excelDto;
|
|
|
}).collect(Collectors.toList());
|
|
|
// 设置响应输出的头类型
|
|
@@ -211,7 +212,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
response.setHeader("content-Type", "application/vnd.ms-excel");
|
|
|
// 设计导出文件的名称,尽量不要中文
|
|
|
String fileName = new String("产品流转详情.xls".getBytes(), "ISO-8859-1");
|
|
|
- response.setHeader("Content-Disposition","attachment;filename="+ fileName);
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
//输出流。
|
|
|
ServletOutputStream out = response.getOutputStream();
|
|
|
//将数据导出到Excel
|
|
@@ -222,9 +223,9 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 设备工时统计
|
|
|
+ *
|
|
|
* @param page
|
|
|
* @param limit
|
|
|
* @param vo
|
|
@@ -233,9 +234,9 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
@Override
|
|
|
public IPage<ProductionStatisticalDto> queryProcedure(Long page, Long limit, ProductVo vo) {
|
|
|
List<ProductionStatisticalDto> list = baseMapper.queryProcedure(vo);
|
|
|
- if (!CollectionUtil.isEmpty(list)){
|
|
|
- list.stream().forEach(item->{
|
|
|
- if (item.getEndTime() != null && item.getStartTime() != null){
|
|
|
+ if (!CollectionUtil.isEmpty(list)) {
|
|
|
+ list.stream().forEach(item -> {
|
|
|
+ if (item.getEndTime() != null && item.getStartTime() != null) {
|
|
|
String datePoor = DateUtil.getDatePoor(item.getEndTime(), item.getStartTime());
|
|
|
item.setHour(datePoor);
|
|
|
}
|
|
@@ -248,6 +249,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
/**
|
|
|
* 设备工时导出
|
|
|
+ *
|
|
|
* @param request
|
|
|
* @param response
|
|
|
*/
|
|
@@ -260,7 +262,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
response.setHeader("content-Type", "application/vnd.ms-excel");
|
|
|
// 设计导出文件的名称,尽量不要中文
|
|
|
String fileName = new String("设备工时管理.xls".getBytes(), "ISO-8859-1");
|
|
|
- response.setHeader("Content-Disposition","attachment;filename="+ fileName);
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
//输出流。
|
|
|
ServletOutputStream out = response.getOutputStream();
|
|
|
// 创建参数对象(用来设定excel得sheet的内容等信息)
|
|
@@ -271,17 +273,19 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
/**
|
|
|
* 产品加工汇总
|
|
|
+ *
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
public IPage<ProcedureSumDto> procedureSum(Long page, Long limit, ProductVo vo) {
|
|
|
- Page<ProcedureSumDto> pageParam = new Page<>(page,limit);
|
|
|
- IPage<ProcedureSumDto> list = baseMapper.procedureSum(pageParam,vo);
|
|
|
+ Page<ProcedureSumDto> pageParam = new Page<>(page, limit);
|
|
|
+ IPage<ProcedureSumDto> list = baseMapper.procedureSum(pageParam, vo);
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 产品加工详情
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return 结果
|
|
|
*/
|
|
@@ -301,7 +305,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
procedures.put("scrapNum", item.getScrapNum());
|
|
|
return procedures;
|
|
|
}).collect(Collectors.toList());
|
|
|
- procedureInfo.put("procedureInfos",procedureInfos);
|
|
|
+ procedureInfo.put("procedureInfos", procedureInfos);
|
|
|
return procedureInfo;
|
|
|
}
|
|
|
return null;
|
|
@@ -309,6 +313,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
/**
|
|
|
* 产品加工汇总导出
|
|
|
+ *
|
|
|
* @param request
|
|
|
* @param response
|
|
|
*/
|
|
@@ -320,7 +325,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
response.setHeader("content-Type", "application/vnd.ms-excel");
|
|
|
// 设计导出文件的名称,尽量不要中文
|
|
|
String fileName = new String("产品加工汇总.xls".getBytes(), "ISO-8859-1");
|
|
|
- response.setHeader("Content-Disposition","attachment;filename="+ fileName);
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
//输出流。
|
|
|
ServletOutputStream out = response.getOutputStream();
|
|
|
// 创建参数对象(用来设定excel得sheet的内容等信息)
|
|
@@ -330,53 +335,52 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IPage<DeviceResourceSumVo> deviceResourceSum(IPage page,Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ public IPage<DeviceResourceSumVo> deviceResourceSum(IPage page, Map<String, Object> params) {
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
- }
|
|
|
- else if(params.containsKey("month") && StringUtils.isNotEmpty(params.get("month").toString())){
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
+ } else if (params.containsKey("month") && StringUtils.isNotEmpty(params.get("month").toString())) {
|
|
|
Date date = DateUtil.stringToDate0(params.get("month").toString(), "yyyy-MM");
|
|
|
params.put("daySpan", DateUtil.getDaysOfMonth(date));
|
|
|
- }else if(params.containsKey("years") && StringUtils.isNotEmpty(params.get("years").toString())){
|
|
|
+ } else if (params.containsKey("years") && StringUtils.isNotEmpty(params.get("years").toString())) {
|
|
|
Date date = DateUtil.stringToDate0(params.get("years").toString(), "yyyy");
|
|
|
params.put("daySpan", DateUtil.getDaysOfYear(date));
|
|
|
- }else if(params.containsKey("startDate") && params.containsKey("endDate")){
|
|
|
+ } else if (params.containsKey("startDate") && params.containsKey("endDate")) {
|
|
|
List<String> datas = DateUtils.getBetweenDay(params.get("startDate").toString(), params.get("endDate").toString());
|
|
|
- params.put("daySpan", datas.size()-1);
|
|
|
+ params.put("daySpan", datas.size() - 1);
|
|
|
}
|
|
|
- return baseMapper.deviceResourceSum(page,params);
|
|
|
+ return baseMapper.deviceResourceSum(page, params);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public IPage<DeviceResourceDetailVo> deviceResourceDetail(IPage page, Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
}
|
|
|
- return baseMapper.deviceResourceDetail(page,params);
|
|
|
+ return baseMapper.deviceResourceDetail(page, params);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String,List<String>> resourceRate(Map<String, Object> params) {
|
|
|
+ public Map<String, List<String>> resourceRate(Map<String, Object> params) {
|
|
|
String date = null;
|
|
|
- if(Objects.isNull(params.get("date")) || StringUtils.isEmpty(params.get("date").toString())){
|
|
|
+ if (Objects.isNull(params.get("date")) || StringUtils.isEmpty(params.get("date").toString())) {
|
|
|
//默认当天
|
|
|
date = DateUtil.dateToString0(new Date(), "yyyy-MM-dd");
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
date = params.get("date").toString();
|
|
|
}
|
|
|
- Date queryDate = cn.hutool.core.date.DateUtil.parse(date,"yyyy-MM-dd");
|
|
|
- Date queryStartTime = cn.hutool.core.date.DateUtil.offsetHour(queryDate,-1);
|
|
|
- Date queryEndTime = cn.hutool.core.date.DateUtil.offsetHour(queryDate,26);
|
|
|
- params.put("startTime",DateUtil.dateToString0(queryStartTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
- params.put("endTime",DateUtil.dateToString0(queryEndTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
+ Date queryDate = cn.hutool.core.date.DateUtil.parse(date, "yyyy-MM-dd");
|
|
|
+ Date queryStartTime = cn.hutool.core.date.DateUtil.offsetHour(queryDate, -1);
|
|
|
+ Date queryEndTime = cn.hutool.core.date.DateUtil.offsetHour(queryDate, 26);
|
|
|
+ params.put("startTime", DateUtil.dateToString0(queryStartTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
+ params.put("endTime", DateUtil.dateToString0(queryEndTime, "yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
List<DeviceResourceDetailVo> deviceResourceDetailVos = baseMapper.resourceRate(params);
|
|
|
|
|
|
- Map<String,List<String>> map = new HashMap<>();
|
|
|
+ Map<String, List<String>> map = new HashMap<>();
|
|
|
List<String> hours = new ArrayList<>();
|
|
|
List<String> rateList = new ArrayList<>();
|
|
|
|
|
@@ -384,28 +388,28 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
//判断所选日期是否是当前日期
|
|
|
int n = 0;
|
|
|
Date nowDate = new Date();
|
|
|
- if(Objects.isNull(params.get("date")) || StringUtils.isEmpty(params.get("date").toString()) || DateUtil.dateToString0(nowDate, "yyyy-MM-dd").equals( params.get("date").toString())){
|
|
|
+ if (Objects.isNull(params.get("date")) || StringUtils.isEmpty(params.get("date").toString()) || DateUtil.dateToString0(nowDate, "yyyy-MM-dd").equals(params.get("date").toString())) {
|
|
|
String x = DateUtil.dateToString0(nowDate, "HH");
|
|
|
//if(x.indexOf("0") == 0){
|
|
|
// x = x.substring(x.indexOf("0"));
|
|
|
//}
|
|
|
n = Integer.parseInt(x);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
n = 24;
|
|
|
}
|
|
|
|
|
|
- hours = IntStream.rangeClosed(0,n).boxed().map(item->{
|
|
|
- return item<10 ? "0"+item.toString() : item.toString() ;
|
|
|
+ hours = IntStream.rangeClosed(0, n).boxed().map(item -> {
|
|
|
+ return item < 10 ? "0" + item.toString() : item.toString();
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
- if(CollectionUtil.isEmpty(deviceResourceDetailVos)){
|
|
|
+ if (CollectionUtil.isEmpty(deviceResourceDetailVos)) {
|
|
|
String[] arrs = new String[n];
|
|
|
Arrays.fill(arrs, "0");
|
|
|
rateList = Arrays.asList(arrs);
|
|
|
- }else{
|
|
|
- Date startDate = DateUtil.stringToDate0(date+" 00:00:00","yyyy-MM-dd HH:mm:ss");
|
|
|
+ } else {
|
|
|
+ Date startDate = DateUtil.stringToDate0(date + " 00:00:00", "yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
- for(int i=1;i<=n;i++) {
|
|
|
+ for (int i = 1; i <= n; i++) {
|
|
|
String nowTime = date + " " + hours.get(i) + ":00:00";
|
|
|
Date endDate = DateUtil.stringToDate0(nowTime, "yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
@@ -417,43 +421,74 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
Date startTime = deviceResourceDetailVo.getStartTime();
|
|
|
Date endTime = Objects.isNull(deviceResourceDetailVo.getEndTime()) ? new Date() : deviceResourceDetailVo.getEndTime();
|
|
|
|
|
|
- if ((startDate.after(startTime) && startDate.after(endTime)) || (endDate.before(startTime) && endDate.before(endTime))) {
|
|
|
- continue;
|
|
|
+// if ((startDate.after(startTime) && startDate.after(endTime)) || (endDate.before(startTime) && endDate.before(endTime))) {
|
|
|
+// continue;
|
|
|
+// } else {
|
|
|
+// if (startDate.after(startTime) && startDate.before(endTime) && endDate.after(endTime)) {
|
|
|
+// jgTime += endTime.getTime() - startDate.getTime();
|
|
|
+// } else if (startDate.after(startTime) && endDate.before(endTime)) {
|
|
|
+// jgTime += endDate.getTime() - startDate.getTime();
|
|
|
+// } else if (endDate.after(startTime) && endDate.before(endTime)) {
|
|
|
+// jgTime += endDate.getTime() - startTime.getTime();
|
|
|
+// } else if (endDate.after(startTime) && endDate.after(endTime) && startDate.before(startTime)) {
|
|
|
+// jgTime += endTime.getTime() - startTime.getTime();
|
|
|
+// } else if (endDate.after(startTime) && endDate.before(endTime)) {
|
|
|
+// jgTime += endDate.getTime() - startTime.getTime();
|
|
|
+// }
|
|
|
+// }
|
|
|
+ // 定义两个时间区间:[事件区间] startDate~endDate;[参考区间] startTime~endTime
|
|
|
+ // 先判断是否无重叠:事件区间完全在参考区间之前,或完全在参考区间之后
|
|
|
+ if (endDate.before(startTime) || startDate.after(endTime)) {
|
|
|
+ continue; // 无重叠,跳过
|
|
|
} else {
|
|
|
- if (startDate.after(startTime) && startDate.before(endTime) && endDate.after(endTime)) {
|
|
|
- jgTime += endTime.getTime() - startDate.getTime();
|
|
|
- } else if (startDate.after(startTime) && endDate.before(endTime)) {
|
|
|
- jgTime += endDate.getTime() - startDate.getTime();
|
|
|
- } else if (endDate.after(startTime) && endDate.before(endTime)) {
|
|
|
- jgTime += endDate.getTime() - startTime.getTime();
|
|
|
- } else if (endDate.after(startTime) && endDate.after(endTime) && startDate.before(startTime)) {
|
|
|
- jgTime += endTime.getTime() - startTime.getTime();
|
|
|
- } else if (endDate.after(startTime) && endDate.before(endTime)) {
|
|
|
- jgTime += endDate.getTime() - startTime.getTime();
|
|
|
- }
|
|
|
+ // 有重叠,计算重叠时长
|
|
|
+ // 重叠区间的开始 = 两个区间的"较晚开始时间"
|
|
|
+ long overlapStart = Math.max(startDate.getTime(), startTime.getTime());
|
|
|
+ // 重叠区间的结束 = 两个区间的"较早结束时间"
|
|
|
+ long overlapEnd = Math.min(endDate.getTime(), endTime.getTime());
|
|
|
+ // 累加重叠时长(确保结束时间 >= 开始时间,避免负数)
|
|
|
+ jgTime += Math.max(0, overlapEnd - overlapStart);
|
|
|
}
|
|
|
- expectTime += (int)Float.parseFloat(deviceResourceDetailVo.getExpectTime());
|
|
|
- realTime += (int)Float.parseFloat(deviceResourceDetailVo.getRealTime());
|
|
|
- delayTime += (realTime > 1.5*expectTime)? realTime-1.5*expectTime : 0;
|
|
|
+ expectTime += (int) Float.parseFloat(deviceResourceDetailVo.getExpectTime());
|
|
|
+ realTime += (int) Float.parseFloat(deviceResourceDetailVo.getRealTime());
|
|
|
+ delayTime += (realTime > 1.5 * expectTime) ? realTime - 1.5 * expectTime : 0;
|
|
|
}
|
|
|
|
|
|
BigDecimal jgBig = new BigDecimal(jgTime);
|
|
|
BigDecimal sumBig = new BigDecimal((endDate.getTime() - startDate.getTime()));
|
|
|
BigDecimal minutes = jgBig.divide(new BigDecimal(60000), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
-
|
|
|
- if(delayTime>0){
|
|
|
+ System.out.println("jgBig = " + jgBig + "sumBig = " + sumBig + "minutes = " + minutes);
|
|
|
+ if (delayTime > 0) {
|
|
|
+// minutes 表示实际使用的分钟数
|
|
|
minutes = minutes.subtract(new BigDecimal(delayTime));
|
|
|
}
|
|
|
|
|
|
+// BigDecimal sumMinutes = sumBig.divide(new BigDecimal(60000), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
+// BigDecimal actualTimeRate = minutes.divide(sumMinutes, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
|
|
|
+// sumMinutes 表示总时间分钟数
|
|
|
BigDecimal sumMinutes = sumBig.divide(new BigDecimal(60000), 2, BigDecimal.ROUND_HALF_UP);
|
|
|
- BigDecimal actualTimeRate = minutes.divide(sumMinutes, 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"));
|
|
|
+ BigDecimal actualTimeRate;
|
|
|
+
|
|
|
+ // 检查sumMinutes是否为0,避免除以0的异常
|
|
|
+ if (sumMinutes.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ // 当总和为0时,可根据业务需求设置默认值,这里设为0
|
|
|
+ actualTimeRate = BigDecimal.ZERO;
|
|
|
+ } else {
|
|
|
+ // 正常计算百分比
|
|
|
+ actualTimeRate = minutes.divide(sumMinutes, 2, BigDecimal.ROUND_HALF_UP)
|
|
|
+ .multiply(new BigDecimal("100"));
|
|
|
+ }
|
|
|
+ // 若结果为负数,则设为0
|
|
|
+ if (actualTimeRate.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ actualTimeRate = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
rateList.add(actualTimeRate.toString());
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- map.put("hour",hours);
|
|
|
- map.put("rate",rateList);
|
|
|
+ map.put("hour", hours);
|
|
|
+ map.put("rate", rateList);
|
|
|
|
|
|
return map;
|
|
|
}
|
|
@@ -462,12 +497,12 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
public IPage<DeviceResourceDetailVo> workHourReport(IPage page, Map<String, Object> params) {
|
|
|
IPage<DeviceResourceDetailVo> deviceResourceDetailVoIPage = baseMapper.workHourReport(page, params);
|
|
|
|
|
|
- if(deviceResourceDetailVoIPage !=null && !CollectionUtil.isEmpty(deviceResourceDetailVoIPage.getRecords())){
|
|
|
- for(DeviceResourceDetailVo deviceResourceDetailVo:deviceResourceDetailVoIPage.getRecords()){
|
|
|
+ if (deviceResourceDetailVoIPage != null && !CollectionUtil.isEmpty(deviceResourceDetailVoIPage.getRecords())) {
|
|
|
+ for (DeviceResourceDetailVo deviceResourceDetailVo : deviceResourceDetailVoIPage.getRecords()) {
|
|
|
float actualWorkHour = 0;
|
|
|
- if(deviceResourceDetailVo.getStartTime() == null || deviceResourceDetailVo.getEndTime() == null){
|
|
|
+ if (deviceResourceDetailVo.getStartTime() == null || deviceResourceDetailVo.getEndTime() == null) {
|
|
|
actualWorkHour = 30;
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
long between = cn.hutool.core.date.DateUtil.between(deviceResourceDetailVo.getStartTime(), deviceResourceDetailVo.getEndTime(), DateUnit.MINUTE);
|
|
|
actualWorkHour = between;
|
|
|
}
|
|
@@ -484,20 +519,20 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
@Override
|
|
|
public IPage<DeviceResourceDetailVo> otherHourReport(IPage page, Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
}
|
|
|
|
|
|
IPage<DeviceResourceDetailVo> deviceResourceDetailVoIPage = baseMapper.otherHourReport(page, params);
|
|
|
|
|
|
- if(deviceResourceDetailVoIPage !=null && !CollectionUtil.isEmpty(deviceResourceDetailVoIPage.getRecords())){
|
|
|
- for(DeviceResourceDetailVo deviceResourceDetailVo:deviceResourceDetailVoIPage.getRecords()){
|
|
|
+ if (deviceResourceDetailVoIPage != null && !CollectionUtil.isEmpty(deviceResourceDetailVoIPage.getRecords())) {
|
|
|
+ for (DeviceResourceDetailVo deviceResourceDetailVo : deviceResourceDetailVoIPage.getRecords()) {
|
|
|
float actualWorkHour = 0;
|
|
|
- if(deviceResourceDetailVo.getStartTime() == null || deviceResourceDetailVo.getEndTime() == null){
|
|
|
+ if (deviceResourceDetailVo.getStartTime() == null || deviceResourceDetailVo.getEndTime() == null) {
|
|
|
actualWorkHour = 5;
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
long between = cn.hutool.core.date.DateUtil.between(deviceResourceDetailVo.getStartTime(), deviceResourceDetailVo.getEndTime(), DateUnit.MINUTE);
|
|
|
actualWorkHour = between;
|
|
|
}
|
|
@@ -509,20 +544,20 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> taskResourceSum(Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
}
|
|
|
params.put("taskName", "料");
|
|
|
return baseMapper.taskResourceSum(params, new DataScope());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IPage<TTask> taskResourceDetail(IPage pageInfo, Map<String,Object> params) {
|
|
|
+ public IPage<TTask> taskResourceDetail(IPage pageInfo, Map<String, Object> params) {
|
|
|
LbqWrapper<TTask> lbqWrapper = new LbqWrapper<TTask>();
|
|
|
lbqWrapper.like(TTask::getProcedureName, "料");
|
|
|
- String taskType = params.containsKey("taskType") && StringUtils.isNotEmpty(params.get("taskType").toString())? params.get("taskType").toString() : null ;
|
|
|
+ String taskType = params.containsKey("taskType") && StringUtils.isNotEmpty(params.get("taskType").toString()) ? params.get("taskType").toString() : null;
|
|
|
/*
|
|
|
if(params.containsKey("taskType") && StringUtils.isNotEmpty(params.get("taskType").toString())){
|
|
|
String taskType = params.get("taskType").toString();
|
|
@@ -536,26 +571,26 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
//lbqWrapper.apply("s.procedure_no like {0} ", "OP%"+taskType);
|
|
|
} */
|
|
|
lbqWrapper.eq(TTask::getStatus, "3");
|
|
|
- if(params.containsKey("resourceId")){
|
|
|
- if(taskType==null) {
|
|
|
+ if (params.containsKey("resourceId")) {
|
|
|
+ if (taskType == null) {
|
|
|
lbqWrapper.eq(TTask::getResourceId, params.get("resourceId").toString());
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
lbqWrapper.eq(TTask::getUpdateUser, params.get("resourceId").toString());
|
|
|
}
|
|
|
}
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- lbqWrapper.apply("DATE_FORMAT(s.end_time, '%Y-%m-%d') = {0}", DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
- }else if(params.containsKey("month")){
|
|
|
+ lbqWrapper.apply("DATE_FORMAT(s.end_time, '%Y-%m-%d') = {0}", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
+ } else if (params.containsKey("month")) {
|
|
|
lbqWrapper.apply("DATE_FORMAT(s.end_time, '%Y-%m') = {0}", params.get("month").toString());
|
|
|
- }else if(params.containsKey("years")){
|
|
|
+ } else if (params.containsKey("years")) {
|
|
|
lbqWrapper.apply("DATE_FORMAT(s.end_time, '%Y') = {0}", params.get("years").toString());
|
|
|
- }else if(params.containsKey("startDate") || params.containsKey("endDate")){
|
|
|
- if(params.containsKey("startDate")){
|
|
|
+ } else if (params.containsKey("startDate") || params.containsKey("endDate")) {
|
|
|
+ if (params.containsKey("startDate")) {
|
|
|
lbqWrapper.geHeader(TTask::getStartTime, DateUtils.getStartTime(params.get("startDate").toString()));
|
|
|
}
|
|
|
- if(params.containsKey("endDate")){
|
|
|
+ if (params.containsKey("endDate")) {
|
|
|
lbqWrapper.leFooter(TTask::getEndTime, DateUtils.getEndTime(params.get("endDate").toString()));
|
|
|
}
|
|
|
}
|
|
@@ -564,9 +599,9 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void exportTaskResource(Map<String, Object> params, HttpServletResponse response) throws IOException{
|
|
|
- int page = params.containsKey("page")? Integer.parseInt(params.get("page").toString()):1;
|
|
|
- int limit = params.containsKey("limit")? Integer.parseInt(params.get("limit").toString()):50;
|
|
|
+ public void exportTaskResource(Map<String, Object> params, HttpServletResponse response) throws IOException {
|
|
|
+ int page = params.containsKey("page") ? Integer.parseInt(params.get("page").toString()) : 1;
|
|
|
+ int limit = params.containsKey("limit") ? Integer.parseInt(params.get("limit").toString()) : 50;
|
|
|
Page pageInfo = new Page<DeviceResourceSumVo>(page, limit);
|
|
|
IPage<DeviceResourceSumVo> dataList = this.deviceResourceSum(pageInfo, params);
|
|
|
List<DeviceResourceSumVo> list = dataList.getRecords();
|
|
@@ -576,7 +611,7 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
response.setHeader("content-Type", "application/vnd.ms-excel");
|
|
|
// 设计导出文件的名称,尽量不要中文
|
|
|
String fileName = new String("任务资源汇总导出.xls".getBytes(), "ISO-8859-1");
|
|
|
- response.setHeader("Content-Disposition","attachment;filename="+ fileName);
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
//输出流。
|
|
|
ServletOutputStream out = response.getOutputStream();
|
|
|
// 创建参数对象(用来设定excel得sheet的内容等信息)
|
|
@@ -587,78 +622,78 @@ public class ProductLinePerformanceServiceImpl extends SuperCacheServiceImpl<Pro
|
|
|
|
|
|
@Override
|
|
|
public IPage<DeviceResourceSumVo> robotTaskSum(Page pageInfo, Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
- }else if(params.containsKey("month") && StringUtils.isNotEmpty(params.get("month").toString())){
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
+ } else if (params.containsKey("month") && StringUtils.isNotEmpty(params.get("month").toString())) {
|
|
|
Date date = DateUtil.stringToDate0(params.get("month").toString(), "yyyy-MM");
|
|
|
params.put("daySpan", DateUtil.getDaysOfMonth(date));
|
|
|
- }else if(params.containsKey("years") && StringUtils.isNotEmpty(params.get("years").toString())){
|
|
|
+ } else if (params.containsKey("years") && StringUtils.isNotEmpty(params.get("years").toString())) {
|
|
|
Date date = DateUtil.stringToDate0(params.get("years").toString(), "yyyy");
|
|
|
params.put("daySpan", DateUtil.getDaysOfYear(date));
|
|
|
- }else if(params.containsKey("startDate") && params.containsKey("endDate")){
|
|
|
+ } else if (params.containsKey("startDate") && params.containsKey("endDate")) {
|
|
|
List<String> datas = DateUtils.getBetweenDay(params.get("startDate").toString(), params.get("endDate").toString());
|
|
|
- params.put("daySpan", datas.size()-1);
|
|
|
+ params.put("daySpan", datas.size() - 1);
|
|
|
}
|
|
|
- return baseMapper.robotTaskSum(pageInfo,params);
|
|
|
+ return baseMapper.robotTaskSum(pageInfo, params);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public IPage<DeviceResourceSumVo> overTimeTaskSum(Page pageInfo, Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
- }else if(params.containsKey("month") && StringUtils.isNotEmpty(params.get("month").toString())){
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
+ } else if (params.containsKey("month") && StringUtils.isNotEmpty(params.get("month").toString())) {
|
|
|
Date date = DateUtil.stringToDate0(params.get("month").toString(), "yyyy-MM");
|
|
|
params.put("daySpan", DateUtil.getDaysOfMonth(date));
|
|
|
- }else if(params.containsKey("years") && StringUtils.isNotEmpty(params.get("years").toString())){
|
|
|
+ } else if (params.containsKey("years") && StringUtils.isNotEmpty(params.get("years").toString())) {
|
|
|
Date date = DateUtil.stringToDate0(params.get("years").toString(), "yyyy");
|
|
|
params.put("daySpan", DateUtil.getDaysOfYear(date));
|
|
|
- }else if(params.containsKey("startDate") && params.containsKey("endDate")){
|
|
|
+ } else if (params.containsKey("startDate") && params.containsKey("endDate")) {
|
|
|
List<String> datas = DateUtils.getBetweenDay(params.get("startDate").toString(), params.get("endDate").toString());
|
|
|
- params.put("daySpan", datas.size()-1);
|
|
|
+ params.put("daySpan", datas.size() - 1);
|
|
|
}
|
|
|
- return baseMapper.overTimeTaskSum(pageInfo,params);
|
|
|
+ return baseMapper.overTimeTaskSum(pageInfo, params);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Map<String, List<String>> taskStatusSum(Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
}
|
|
|
return baseMapper.taskStatusSum(params);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Map<String, List<String>> taskAGVSum(Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
}
|
|
|
return baseMapper.taskAGVSum(params);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public IPage<TTaskPageDTO> unFinishedTask(Page page, Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
}
|
|
|
return baseMapper.unFinishedTask(page, params);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public IPage<AgvHikOrderInfoPageDTO> unFinishedAGV(Page page, Map<String, Object> params) {
|
|
|
- if((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
- && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))){
|
|
|
+ if ((Objects.isNull(params.get("startDate")) || Objects.isNull(params.get("endDate")))
|
|
|
+ && Objects.isNull(params.get("month")) && Objects.isNull(params.get("years"))) {
|
|
|
//默认当天
|
|
|
- params.put("today",DateUtil.dateToString0(new Date(),"yyyy-MM-dd"));
|
|
|
+ params.put("today", DateUtil.dateToString0(new Date(), "yyyy-MM-dd"));
|
|
|
}
|
|
|
return baseMapper.unFinishedAGV(page, params);
|
|
|
}
|