|
@@ -40,6 +40,7 @@ import com.platform.dao.vo.query.upms.SysDeptVO;
|
|
|
import com.platform.dao.vo.repair.RepairApplicationFormVO;
|
|
|
import com.platform.dao.vo.repair.RepairCheckVO;
|
|
|
import com.platform.dao.vo.repair.RepairFormVO;
|
|
|
+import com.platform.dao.vo.report.RepairReport24VO;
|
|
|
import com.platform.dao.vo.sb.SbInfoVO;
|
|
|
import com.platform.office.annotation.Excel;
|
|
|
import com.platform.service.base.impl.BaseServiceImpl;
|
|
@@ -66,6 +67,7 @@ import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.StringWriter;
|
|
|
import java.lang.reflect.Array;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
@@ -491,13 +493,15 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
|
|
|
if(applicationForm.getRepairStartTime() == null){
|
|
|
applicationForm.setRepairStartTime(LocalDateTime.now());
|
|
|
}
|
|
|
- applicationForm.setReceiveMinutes(DateUtils.getDurationMinutesStr(applicationForm.getApplyTime(), applicationForm.getRepairStartTime()));
|
|
|
+ applicationForm.setReceiveMinutes(Double.valueOf(DateUtils.getDurationMinutesStr(applicationForm.getApplyTime(), applicationForm.getRepairStartTime())));
|
|
|
|
|
|
// 根据配置判断维修是否超时
|
|
|
String minuteStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_WARN_MINUTE.name());
|
|
|
- if(applicationForm.getReceiveMinutes().compareTo(minuteStr)>0){
|
|
|
+ if(StringUtils.isBlank(minuteStr)){
|
|
|
+ applicationForm.setReceiveOvertime(false);
|
|
|
+ } else if(applicationForm.getReceiveMinutes() > Double.valueOf(minuteStr)){
|
|
|
applicationForm.setReceiveOvertime(true);
|
|
|
- }else{
|
|
|
+ } else{
|
|
|
applicationForm.setReceiveOvertime(false);
|
|
|
}
|
|
|
applicationForm.setUpdateTime(LocalDateTime.now());
|
|
@@ -575,14 +579,14 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
|
|
|
applicationForm.setRepairEndTime(dto.getRepairEndTime());
|
|
|
}
|
|
|
|
|
|
- applicationForm.setRepairMinutes(DateUtils.getDurationMinutesStr(applicationForm.getRepairStartTime(), applicationForm.getRepairEndTime()));
|
|
|
+ applicationForm.setRepairMinutes(Double.valueOf(DateUtils.getDurationMinutes(applicationForm.getRepairStartTime(), applicationForm.getRepairEndTime())));
|
|
|
// 根据配置判断维修是否超时
|
|
|
String hourFirstStr = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_OVERTIME_MINUTE_FIRST.name());
|
|
|
int hourFirst = 180;// 默认3小时,180分钟
|
|
|
if(StringUtils.isNotBlank(hourFirstStr)){
|
|
|
hourFirst = Integer.valueOf(hourFirstStr) * 60;
|
|
|
}
|
|
|
- if(applicationForm.getRepairMinutes().compareTo(String.valueOf(hourFirst))>0){
|
|
|
+ if(applicationForm.getRepairMinutes()> hourFirst){
|
|
|
applicationForm.setRepairOvertime(true);
|
|
|
}else{
|
|
|
applicationForm.setRepairOvertime(false);
|
|
@@ -676,6 +680,64 @@ public class RepairApplicationFormServiceImpl extends BaseServiceImpl<RepairAppl
|
|
|
applicationForm.getId(), ListUtils.newArrayList(userVO.getUserId()), ListUtils.newArrayList(userVO.getEmail())));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 1: 如果年份是当前年份,则统计到当前月份
|
|
|
+ * 2:如果不是当前年份,则统计全年的
|
|
|
+ *
|
|
|
+ * @param repairApplicationFormDTO
|
|
|
+ * @param searchYear
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<RepairReport24VO> getMonthReportBig24(RepairApplicationFormDTO repairApplicationFormDTO, Integer searchYear) {
|
|
|
+ LocalDate localDate = LocalDate.now();
|
|
|
+ int year = localDate.getYear();
|
|
|
+
|
|
|
+ // 如2021-10-15号码,则month=10,需要计算到11月份,需要加1
|
|
|
+ int month = localDate.getMonthValue() + 1;
|
|
|
+ List<Map<String, LocalDateTime>> monthStartAndEndList = DateUtils.getMonthStartAndEndByYear(year, month);
|
|
|
+ LocalDateTime searchStartTime = null;
|
|
|
+ LocalDateTime searchEndTime = null;
|
|
|
+ // 当前年份只统计到当前月,历史年份统计全年
|
|
|
+ if(year == searchYear){
|
|
|
+ searchStartTime = DateUtils.getFirstDayOfThisYear(year);
|
|
|
+ searchEndTime = DateUtils.getLastDayOfMonth(month);
|
|
|
+ }else{
|
|
|
+ searchStartTime = DateUtils.getFirstDayOfThisYear(searchYear);
|
|
|
+ searchEndTime = DateUtils.getLastDayOfThisYear(searchYear);
|
|
|
+ }
|
|
|
+ // 选择非计划性的订单
|
|
|
+ repairApplicationFormDTO.setCategory(RepairApplicationFormCategoryEnum.PLAN_NOT.getValue());
|
|
|
+ repairApplicationFormDTO.setSearchStartTime(searchStartTime);
|
|
|
+ repairApplicationFormDTO.setSearchEndTime(searchEndTime);
|
|
|
+ List<RepairApplicationFormVO> list = mapper.selectPageList(repairApplicationFormDTO);
|
|
|
+
|
|
|
+ List<RepairReport24VO> result = new ArrayList<RepairReport24VO>();
|
|
|
+ for(Map<String, LocalDateTime> map: monthStartAndEndList){
|
|
|
+ RepairReport24VO vo = new RepairReport24VO();
|
|
|
+ vo.setMonth(searchStartTime.getYear() + "-" + map.get("searchStartTimeMonth").getMonthValue() + "月");
|
|
|
+ int i = 0;
|
|
|
+ for(RepairApplicationFormVO repairApplicationForm: list){
|
|
|
+ if(repairApplicationForm.getDealMinutes() == null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ double minites = repairApplicationForm.getDealMinutes();
|
|
|
+ if(minites/60.0<24.0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(repairApplicationForm.getApplyTime().isAfter(map.get("searchStartTimeMonth")) && repairApplicationForm.getApplyTime().isBefore(map.get("searchEndTimeMonth"))){
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vo.setNum(i);
|
|
|
+ result.add(vo);
|
|
|
+ }
|
|
|
+ for(RepairReport24VO r: result){
|
|
|
+ System.out.println(r.toString());
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 领导验收,进行数据项目的验收
|
|
|
* 判断领导是否是牛工身份,如果是这关闭单子,
|