|
@@ -53,10 +53,7 @@ import com.platform.dao.vo.SysUserVO;
|
|
|
import com.platform.dao.vo.export.sb.ExportSbInfoVO;
|
|
|
import com.platform.dao.vo.export.store.ExportInStoreFormVO;
|
|
|
import com.platform.dao.vo.query.upms.SysDeptVO;
|
|
|
-import com.platform.dao.vo.sb.SbInfoScreenDetailVO;
|
|
|
-import com.platform.dao.vo.sb.SbInfoScreenVO;
|
|
|
-import com.platform.dao.vo.sb.SbInfoVO;
|
|
|
-import com.platform.dao.vo.sb.SbModelVO;
|
|
|
+import com.platform.dao.vo.sb.*;
|
|
|
import com.platform.office.poi.excel.ExcelImportUtil;
|
|
|
import com.platform.office.poi.excel.entity.ImportParams;
|
|
|
import com.platform.service.base.impl.BaseServiceImpl;
|
|
@@ -88,6 +85,7 @@ import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
|
import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -539,6 +537,164 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
|
|
|
this.saveImageFile(model);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 设备工作台数据
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public SbInfoWorkplaceVO getWorkplaceData() {
|
|
|
+ SbInfoWorkplaceVO vo = new SbInfoWorkplaceVO();
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ // 设备相关数据
|
|
|
+ setSbNum(now, vo);
|
|
|
+
|
|
|
+ // 维修汇总数据:还没处理完毕的维修单数据
|
|
|
+ setRepairNum(now, vo);
|
|
|
+
|
|
|
+ // 设备一周故障数据
|
|
|
+ setRepairNumWeek( now, vo);
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setSbNum(LocalDateTime now, SbInfoWorkplaceVO vo) {
|
|
|
+
|
|
|
+ List<SbInfo> sbInfoList = mapper.selectAll();
|
|
|
+ // 设置使用中数据,维修,调拨中,报废数据
|
|
|
+
|
|
|
+
|
|
|
+ // 设备状态数据统计
|
|
|
+ Double totalNumber = 0.0;
|
|
|
+ int useNumber = 0;
|
|
|
+ if(CollectionUtil.isNotEmpty(sbInfoList)){
|
|
|
+ totalNumber = new Double(sbInfoList.size());
|
|
|
+ List< SbInfoWorkplacePieVO> sbInfoWorkplacePieVOList = new ArrayList<>();
|
|
|
+ for(Map<String, Object> statusMap: SbInfoStatusEnum.toList()){
|
|
|
+ SbInfoWorkplacePieVO sbInfoWorkplacePieVO = new SbInfoWorkplacePieVO();
|
|
|
+ sbInfoWorkplacePieVO.setStatusNme((String) statusMap.get("name"));
|
|
|
+ int num = 0;
|
|
|
+ for(SbInfo sbInfo: sbInfoList){
|
|
|
+ if(sbInfo.getStatus().equals(statusMap.get("value"))){
|
|
|
+ num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sbInfoWorkplacePieVO.setCount(num);
|
|
|
+ sbInfoWorkplacePieVO.setStatus((Integer) statusMap.get("value"));
|
|
|
+ if(totalNumber == 0){
|
|
|
+ sbInfoWorkplacePieVO.setPercent(0.0);
|
|
|
+ }else{
|
|
|
+ sbInfoWorkplacePieVO.setPercent(num/totalNumber);
|
|
|
+ }
|
|
|
+ sbInfoWorkplacePieVOList.add(sbInfoWorkplacePieVO);
|
|
|
+ if(statusMap.get("value").equals(SbInfoStatusEnum.IN_USE.getValue())){
|
|
|
+ vo.setUseNumber(num);
|
|
|
+ vo.setDbNumber(num);
|
|
|
+ }else if(statusMap.get("value").equals(SbInfoStatusEnum.IN_DIAOBO.getValue())){
|
|
|
+ vo.setBfNumber(num);
|
|
|
+ }else if(statusMap.get("value").equals(SbInfoStatusEnum.IN_STOP.getValue())){
|
|
|
+ vo.setStopNumber(num);
|
|
|
+ }else if(statusMap.get("value").equals(SbInfoStatusEnum.SCRAPED.getValue())){
|
|
|
+ vo.setPdNumber(num);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ vo.setPieDataList(sbInfoWorkplacePieVOList);
|
|
|
+ }
|
|
|
+ if(vo.getUseNumber() == null){
|
|
|
+ vo.setUseNumber(0);
|
|
|
+ }
|
|
|
+ if(vo.getDbNumber() == null){
|
|
|
+ vo.setDbNumber(0);
|
|
|
+ }
|
|
|
+ if(vo.getBfNumber() == null){
|
|
|
+ vo.setBfNumber(0);
|
|
|
+ }
|
|
|
+ if(vo.getStopNumber() == null){
|
|
|
+ vo.setStopNumber(0);
|
|
|
+ }
|
|
|
+ if(vo.getPdNumber() == null){
|
|
|
+ vo.setPdNumber(0);
|
|
|
+ }
|
|
|
+ vo.setTotalDNumber(vo.getDbNumber() + vo.getBfNumber() + vo.getStopNumber() + vo.getPdNumber());
|
|
|
+ vo.setTotalNumber(sbInfoList.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setRepairNum(LocalDateTime now, SbInfoWorkplaceVO vo) {
|
|
|
+ Weekend<RepairApplicationForm> weekendRepair = new Weekend<>(RepairApplicationForm.class);
|
|
|
+ WeekendCriteria<RepairApplicationForm, Object> weekendCriteria = weekendRepair.weekendCriteria();
|
|
|
+ List<Integer> statusList = new ArrayList<Integer>();
|
|
|
+ statusList.add(RepairApplicationFormStatusEnum.NOT_ALLOCATED.getValue());
|
|
|
+ statusList.add(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
|
+ weekendCriteria.andIn(RepairApplicationForm::getStatus, statusList);
|
|
|
+ List<RepairApplicationForm> repairList = repairApplicationFormMapper.selectByExample(weekendRepair);
|
|
|
+ int totalRepairNumber = 0;
|
|
|
+ int planNumber = 0;
|
|
|
+ int notPlanNumber = 0;
|
|
|
+ int otherNumber = 0;
|
|
|
+ int noIdeaNumber = 0;
|
|
|
+ if(CollectionUtil.isNotEmpty(repairList)){
|
|
|
+ totalRepairNumber = repairList.size();
|
|
|
+ for(RepairApplicationForm repairApplicationForm: repairList){
|
|
|
+ if(repairApplicationForm.getCategory().equals(RepairApplicationFormCategoryEnum.PLAN.getValue())){
|
|
|
+ planNumber++;
|
|
|
+ }if(repairApplicationForm.getCategory().equals(RepairApplicationFormCategoryEnum.PLAN_NOT.getValue())){
|
|
|
+ notPlanNumber++;
|
|
|
+ }if(repairApplicationForm.getCategory().equals(RepairApplicationFormCategoryEnum.OTHER.getValue())){
|
|
|
+ otherNumber++;
|
|
|
+ }else{
|
|
|
+ noIdeaNumber++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ vo.setTotalRepairNumber(totalRepairNumber);
|
|
|
+ vo.setNotPlanNumber(planNumber);
|
|
|
+ vo.setPlanNumber(notPlanNumber);
|
|
|
+ vo.setOtherNumber(otherNumber);
|
|
|
+ vo.setNoIdeaNumber(noIdeaNumber);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 近一周的每天维修单数量
|
|
|
+ *
|
|
|
+ * @param now
|
|
|
+ * @param vo
|
|
|
+ */
|
|
|
+ private void setRepairNumWeek(LocalDateTime now, SbInfoWorkplaceVO vo) {
|
|
|
+
|
|
|
+ Weekend<RepairApplicationForm> weekendRepair = new Weekend<>(RepairApplicationForm.class);
|
|
|
+ WeekendCriteria<RepairApplicationForm, Object> weekendCriteria = weekendRepair.weekendCriteria();
|
|
|
+ weekendCriteria.andBetween(RepairApplicationForm::getApplyTime, DateUtils.getSixDayAgoOfDay(now), DateUtils.getLastDayOfDay(now));
|
|
|
+ List<Integer> statusList = new ArrayList<Integer>();
|
|
|
+ statusList.add(RepairApplicationFormStatusEnum.NOT_ALLOCATED.getValue());
|
|
|
+ statusList.add(RepairApplicationFormStatusEnum.PROCESSING.getValue());
|
|
|
+ weekendCriteria.andIn(RepairApplicationForm::getStatus, statusList);
|
|
|
+ List<RepairApplicationForm> repairList = repairApplicationFormMapper.selectByExample(weekendRepair);
|
|
|
+ List<LocalDate> timeList = DateUtils.currentWeekDate();
|
|
|
+ List<SbInfoWorkplaceLineVO> voList = new ArrayList<>();
|
|
|
+ String[][] strArray = {{"MONDAY", "一"}, {"TUESDAY", "二"}, {"WEDNESDAY", "三"}, {"THURSDAY", "四"}, {"FRIDAY", "五"}, {"SATURDAY", "六"}, {"SUNDAY", "日"}};
|
|
|
+ for(LocalDate time: timeList){
|
|
|
+ String k = String.valueOf(time.getDayOfWeek());
|
|
|
+ for (int i = 0; i < strArray.length; i++) {
|
|
|
+ if (k.equals(strArray[i][0])) {
|
|
|
+ k = strArray[i][1];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SbInfoWorkplaceLineVO lineVO = new SbInfoWorkplaceLineVO();
|
|
|
+ int num = 0;
|
|
|
+ for(RepairApplicationForm form: repairList){
|
|
|
+ if(time.isEqual(form.getApplyTime().toLocalDate())){
|
|
|
+ num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lineVO.setNum(num);
|
|
|
+ lineVO.setDay(k);
|
|
|
+ voList.add(lineVO);
|
|
|
+ }
|
|
|
+ vo.setLineDataList(voList);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 如果是变更了状态,需要记录状态变更表,
|
|
|
* 如果是启用,则要更新停机记录表数据
|