Parcourir la source

修改点位更新

13408401276 il y a 3 ans
Parent
commit
fc26837620

+ 1 - 0
dyrqGps/src/main/java/com/tofly/dyrqGps/util/DyrqCommonRedis.java

@@ -9,6 +9,7 @@ public interface DyrqCommonRedis {
     public final static String REDIS_PRE_PDA_DEVICE="pdadevice_";
     public final static String REDIS_PRE_GPS="gps_";
     public final static String REDIS_PRE_CARGPS="cargps_";
+    
 
     public final static int SAVE_MAX_TIME=20;
 }

+ 4 - 0
src/main/java/com/tofly/dyrq/DyrqApplication.java

@@ -2,6 +2,10 @@ package com.tofly.dyrq;
 
 import com.tofly.common.core.configs.AutoConfigConfiguration;
 import com.tofly.dyrq.config.FeignConfig;
+
+import java.util.concurrent.ExecutorService;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.cloud.client.SpringCloudApplication;
 import org.springframework.cloud.openfeign.EnableFeignClients;

+ 2 - 2
src/main/java/com/tofly/dyrq/custom/controller/CustomMaintenanceController.java

@@ -46,7 +46,7 @@ public class CustomMaintenanceController {
         Maintenance one = maintenanceService.getOne(Wrappers.<Maintenance>lambdaQuery().eq(Maintenance::getChildPlanId, addMaintenance.getChildPlanId())
                 .eq(Maintenance::getPlanTempPointId, addMaintenance.getPlanTempPointId()));
         if (one != null) {
-            return ResultRespone.failed(null,2,"当前计划该设备记录已上传");
+            return ResultRespone.failed(2,"当前计划该设备记录已上传");
         }
         return ResultRespone.success(customMaintenanceService.addMaintenance(request,addMaintenance));
     }
@@ -92,7 +92,7 @@ public class CustomMaintenanceController {
                 .eq(MaintenanceDevice::getChildPlanId, childPlanId)
                 .eq(MaintenanceDevice::getPlanTempPointId, pointId));
         if (one != null) {
-            return ResultRespone.failed(null,2,"当前计划该设备记录已上传");
+            return ResultRespone.failed(2,"当前计划该设备记录已上传");
         }
         return ResultRespone.success(customMaintenanceService.addMaintenanceDevice(request,addMaintenanceDevice));
     }

+ 0 - 1
src/main/java/com/tofly/dyrq/custom/controller/CustomPointController.java

@@ -29,7 +29,6 @@ public class CustomPointController {
     @ToFlyAppLog(title="更新点到位或线所属点的到位状态")
     public ResultRespone updatePointIsover(@RequestBody PointList pointList) {
         Map<String,Long> tempIds = customPointService.updatePointOrPathIsover(pointList.getUpdatePointList());
-        log.info("#############################5");
         return tempIds.size() > 0 ? ResultRespone.success(tempIds) : ResultRespone.success("更新成功");
     }
 

+ 1 - 1
src/main/java/com/tofly/dyrq/custom/controller/CustomTfPdaControlle.java

@@ -77,7 +77,7 @@ public class CustomTfPdaControlle {
     @ApiOperation(value = "提交工单反馈")
     public ResultRespone saveHandle(HttpServletRequest request, TfPdaTaskResponse tfPdaTaskResponse){
         if (!customTfPdaService.saveHandle(request, tfPdaTaskResponse)){
-            return ResultRespone.failed(null,2,"工单已处理,不能提交反馈");
+            return ResultRespone.failed(2,"工单已处理,不能提交反馈");
         }
         else{
             return ResultRespone.success(true);

+ 5 - 1
src/main/java/com/tofly/dyrq/custom/service/CustomPointService.java

@@ -15,6 +15,10 @@ public interface CustomPointService {
      */
     public Map<String,Long> updatePointOrPathIsover(List<UpdatePoint> updatePoints);
 
-    void percentUpdate(String childPlanIds);
+    public void executPoint();
+    
+    public void executPath();
+    
+    public void executChild();
 
 }

+ 1 - 1
src/main/java/com/tofly/dyrq/custom/service/impl/CustomDevopsEquipmentServiceImpl.java

@@ -50,7 +50,7 @@ public class CustomDevopsEquipmentServiceImpl implements CustomDevopsEquipmentSe
 
         InputStream inputStream = file.getInputStream();
         ExcelUtil opsExcel = new ExcelUtil(DevopsEquipment.class);
-        List<DevopsEquipment> listOps = opsExcel.importExcel2("录入", inputStream);
+        List<DevopsEquipment> listOps = opsExcel.importExcel("录入", inputStream);
         List<DevopsEquipment> listAllOps = devopsEquipmentService.list();
         /*Map<String, DevopsEquipment> collect = listAllOps.stream().collect(Collectors.toMap(DevopsEquipment::getOwnNumber, m -> m, (k1, k2) -> k1));
         //StringBuffer sb=new StringBuffer();

+ 1 - 1
src/main/java/com/tofly/dyrq/custom/service/impl/CustomKeyEquipmentServiceImpl.java

@@ -49,7 +49,7 @@ public class CustomKeyEquipmentServiceImpl extends ServiceImpl<KeyEquipmentMappe
 
         InputStream inputStream = file.getInputStream();
         ExcelUtil opsExcel = new ExcelUtil(KeyEquipment.class);
-        List<KeyEquipment> listOps = opsExcel.importExcel2("录入",inputStream);
+        List<KeyEquipment> listOps = opsExcel.importExcel("录入",inputStream);
         List<KeyEquipment> listAllOps = keyEquipmentService.list();
         /*Map<String, KeyEquipment> collect = listAllOps.stream().collect(Collectors.toMap(KeyEquipment::getOwnNumber, m -> m, (k1, k2) -> k1));
         //StringBuffer sb=new StringBuffer();

+ 23 - 17
src/main/java/com/tofly/dyrq/custom/service/impl/CustomMaintenanceServiceImpl.java

@@ -26,6 +26,7 @@ import com.tofly.dyrq.config.FilePathBean;
 import com.tofly.dyrq.service.*;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
+import org.springframework.data.redis.core.ValueOperations;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.MultiValueMap;
@@ -33,6 +34,8 @@ import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 
 import javax.servlet.http.HttpServletRequest;
+
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -56,6 +59,9 @@ public class CustomMaintenanceServiceImpl implements CustomMaintenanceService {
     private final SysDeviceTypeService sysDeviceTypeService;
     private final GisAboutService gisAboutService;
     private final CustomPointService customPointService;
+    
+    
+    private final ValueOperations<String, String> valueOperations;
 
     @Override
     public IPage getMaintenancePage(Page page, MaintenanceSearch maintenanceSearch) {
@@ -110,7 +116,15 @@ public class CustomMaintenanceServiceImpl implements CustomMaintenanceService {
     @Transactional
     @Override
     public Boolean addMaintenance(HttpServletRequest request, AddMaintenance addMaintenance) {
+    	SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmssSSSSSSS");
+    	
         Long childPlanId = addMaintenance.getChildPlanId();
+        if(null!=childPlanId) {
+        	  valueOperations.set("child_" + Long.parseLong(sdf.format(new Date())), String.valueOf(childPlanId)); 
+        }
+        
+      
+        
         Long pointId = addMaintenance.getPlanTempPointId();
         //判断该计划中该点是否已上传
 //        Maintenance one = maintenanceService.getOne(Wrappers.<Maintenance>lambdaQuery().eq(Maintenance::getChildPlanId, childPlanId)
@@ -176,14 +190,6 @@ public class CustomMaintenanceServiceImpl implements CustomMaintenanceService {
                 }
             });
         });
-        //异步更新到位比例
-        ExecutorService executorService = Executors.newSingleThreadExecutor();
-        executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                customPointService.percentUpdate(childPlanId.toString());
-            }
-        });
         return true;
     }
 
@@ -297,7 +303,16 @@ public class CustomMaintenanceServiceImpl implements CustomMaintenanceService {
 //        if (addMaintenanceDevice.getPlanTempPointId() == null) {
 //            throw new ToflyDeniedException("巡检计划临时点ID");
 //        }
+    	
+    	SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmssSSSSSSS");
+    	
         Long childPlanId = addMaintenanceDevice.getChildPlanId();
+        if(null!=childPlanId) {
+        	  valueOperations.set("child_" + Long.parseLong(sdf.format(new Date())), String.valueOf(childPlanId)); 
+        }
+        
+    	
+       
         Long pointId = addMaintenanceDevice.getPlanTempPointId();
         //判断是否该计划该点存在
 //        PlanPointTemp pointTemp = planPointTempService.getOne(Wrappers.<PlanPointTemp>lambdaQuery()
@@ -397,15 +412,6 @@ public class CustomMaintenanceServiceImpl implements CustomMaintenanceService {
                 }
             });
         });
-        //更新到位比例
-        //异步更新到位比例
-        ExecutorService executorService = Executors.newSingleThreadExecutor();
-        executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                customPointService.percentUpdate(childPlanId.toString());
-            }
-        });        
         return true;
     }
 

+ 1 - 1
src/main/java/com/tofly/dyrq/custom/service/impl/CustomNormalEquipmentServiceImpl.java

@@ -49,7 +49,7 @@ public class CustomNormalEquipmentServiceImpl extends ServiceImpl<NormalEquipmen
 
         InputStream inputStream = file.getInputStream();
         ExcelUtil opsExcel = new ExcelUtil(NormalEquipment.class);
-        List<NormalEquipment> listOps = opsExcel.importExcel2("录入",inputStream);
+        List<NormalEquipment> listOps = opsExcel.importExcel("录入",inputStream);
         List<NormalEquipment> listAllOps = normalEquipmentService.list();
         /*Map<String, NormalEquipment> collect = listAllOps.stream().collect(Collectors.toMap(NormalEquipment::getOwnNumber, m -> m, (k1, k2) -> k1));
         //StringBuffer sb=new StringBuffer();

+ 183 - 211
src/main/java/com/tofly/dyrq/custom/service/impl/CustomPointServiceImpl.java

@@ -1,5 +1,7 @@
 package com.tofly.dyrq.custom.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.tofly.common.core.util.Date8Util;
 import com.tofly.dyrq.custom.entity.UpdatePoint;
@@ -15,19 +17,28 @@ import com.tofly.dyrq.service.PlanPointTempService;
 import com.tofly.dyrq.service.SysDeviceTypeService;
 import com.tofly.dyrq.service.TfPlanPathTempService;
 
+import jdk.internal.org.jline.utils.Log;
 import lombok.AllArgsConstructor;
 import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
+
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
+import javax.annotation.PostConstruct;
+
 @Service
 @AllArgsConstructor
 @Slf4j
@@ -38,30 +49,25 @@ public class CustomPointServiceImpl implements CustomPointService {
     private TfPlanPathTempService planPathTempService;
     private final CustomPlanMapper customPlanMapper;
     private final SysDeviceTypeService sysDeviceTypeService;
-
+    private final ValueOperations<String, String> valueOperations;
+    private final RedisTemplate redisTemplate;
+    
     @Override
     @Transactional
-    @Synchronized
     public  Map<String, Long> updatePointOrPathIsover(List<UpdatePoint> updatePoints) {
         Map<String, Long> transfer = new HashMap<>();
         List<Long> childList = new ArrayList<>();
         HashSet<Long> childIds = new HashSet();
         
-        log.info("#############################1");
         for (UpdatePoint u : updatePoints) {
             if (u.getTempId() != null && u.getCheckTime() != null && u.getGpsSpeed() != null) {
-                if ("0".equals(u.getType())) {
+                if ("0".equals(u.getType())) {                	
                     String pointChildPlanState = customPointMapper.getStateByPointId(u.getTempId());
                     if ("7".equals(pointChildPlanState)) {
                         transfer.put("pointTempId", u.getTempId());
                         continue;
                     }
-                    log.info("#############################2");
-                    planPointTempService.update(Wrappers.<PlanPointTemp>lambdaUpdate()
-                            .set(PlanPointTemp::getIsover, "1")
-                            .set(PlanPointTemp::getOverDate, u.getCheckTime())
-                            .set(PlanPointTemp::getGpsSpeed, u.getGpsSpeed())
-                            .eq(PlanPointTemp::getId, u.getTempId()));
+                    valueOperations.set("point_" + u.getTempId(), JSON.toJSONString(u));
                 } else if ("1".equals(u.getType())) {
                     String childPlanState = customPointMapper.getStateByPath(u.getTempId());
                     if ("7".equals(childPlanState)) {
@@ -71,218 +77,184 @@ public class CustomPointServiceImpl implements CustomPointService {
                         if (!childList.contains(u.getPlanChildId())) {
                             childList.add(u.getPlanChildId());
                         }
-                    }
-                    log.info("#############################3");
-                    planPathTempService.update(Wrappers.<TfPlanPathTemp>lambdaUpdate()
-                            .set(TfPlanPathTemp::getIsover, "1")
-                            .set(TfPlanPathTemp::getOverDate, u.getCheckTime())
-                            .set(TfPlanPathTemp::getGpsSpeed, u.getGpsSpeed())
-                            .eq(TfPlanPathTemp::getId, u.getTempId()));
-                    //更新完成点所属线的完成率
-                    Long pointTempId =planPathTempService.getById(u.getTempId()).getTempId();
-                    log.info("#############################4");
-                    int isOverNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId).eq(TfPlanPathTemp::getIsover, "1"));
-                    int allNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId));
-                    log.info("#############################5");
-                    double pathOver = new BigDecimal((float) isOverNum / allNum).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                    log.info("#############################6");
-                    PlanPointTemp one = new PlanPointTemp();
-                    one.setId(pointTempId);
-                    one.setPathIsover(new BigDecimal(pathOver));
-                    planPointTempService.updateById(one);
-                    log.info("#############################7");
+                    }                                        
+                    valueOperations.set("path_" + u.getTempId(), JSON.toJSONString(u));                                                            
                 }
             }
             childIds.add(u.getPlanChildId());
         }
-        //批量更新所有计划点,线完成率
-        ExecutorService executorService = Executors.newSingleThreadExecutor();
-        executorService.execute(new Runnable() {
-            @Override
-            public void run() {
-                String ids = StringUtils.join(childIds, ",");
-                percentUpdate(ids);
-            }
-        });
-//        for (Long cid : childList) {
-//            Double percent = (double) planPathTempService.list(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getChildPlanId, cid).eq(TfPlanPathTemp::getIsover, 1)).size()
-//                    / (double) planPathTempService.list(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getChildPlanId, cid)).size();
-//            planChildService.update(Wrappers.<PlanChild>lambdaUpdate()
-//                    .set(PlanChild::getPercent, percent)
-//                    .set(PlanChild::getPercent1, percent)
-//                    .eq(PlanChild::getId, cid));
-//            planChildService.update(Wrappers.<PlanChild>lambdaUpdate()
-//                    .set(PlanChild::getChildPlanState, "3")
-//                    .eq(PlanChild::getPercent1, 1.00)
-//                    .eq(PlanChild::getId, cid));
-//        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmssSSSSSSS");
+        valueOperations.set("child_" + Long.parseLong(sdf.format(new Date())), StringUtils.join(childIds, ",")); 
         return transfer;
     }
+    
+    
 
-    @Override
-    public void percentUpdate(String childPlanIds) {
-        List<String> list = Arrays.asList(childPlanIds.split(","));
-        log.info("#############################8");
-        for (String sid : list) {
-            Long childPlanId = Long.parseLong(sid);
-            Date now = Date8Util.getCurrentDate();
-            //查询当天的计划
-            Map param1 = new HashMap();
-            param1.put("now", now);
-            int pointTotal = 0;
-            int pointIsoverTotal = 0;
-            int isOver = 0;  //---------巡检点,巡检线isover个数,其他设备check个数
-            int total = 0; //point_temp个数
-            double percent = 0;
-            double percent1 = 0;
-            Map plan = customPlanMapper.getTodayPlan(childPlanId).get(0);
-
-            //查询包含巡检检查内容的类型
-            List<SysDeviceType> devices = sysDeviceTypeService.list(Wrappers.<SysDeviceType>lambdaQuery().isNotNull(SysDeviceType::getCheckContent));
-            Set<Long> checkTypes = new HashSet<>();
-            devices.stream().filter(n -> !checkTypes.add(n.getPointTypeId()))
-                    .collect(Collectors.toSet());
+    
 
-            //更新巡检线录入状态
-            if ("1".equals(plan.get("type"))) {
-                List<Map> pathTotal = customPlanMapper.getPathTotalInfo(childPlanId);
-                total = Integer.valueOf(pathTotal.get(0).get("total").toString());
-                isOver = checkTypes.contains(plan.get("deviceTypeId")) ? Integer.valueOf(pathTotal.get(0).get("checkTotal").toString()) : Integer.valueOf(pathTotal.get(0).get("isovertotal").toString());
-                pointTotal = Integer.valueOf(pathTotal.get(0).get("pointTotal").toString());
-                pointIsoverTotal = Integer.valueOf(pathTotal.get(0).get("pointIsoverTotal").toString());
-//                percent1 = pointTotal == 0 ? 0 : new BigDecimal((float) pointIsoverTotal / pointTotal).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-//                percent = pointTotal == 0 ? 0 : new BigDecimal((float) isOver / total).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                //修改percent1 为point_temp到位情况
-                percent = pointTotal == 0 ? 0 : new BigDecimal((float) isOver / total).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                percent1 = pointTotal == 0 ? 0 : new BigDecimal ((float) pointIsoverTotal / pointTotal).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
 
-                //更新到位条数
-                PlanChild planChild = new PlanChild();
-                planChild.setId(childPlanId);
-                planChild.setPercent(percent);
-                planChild.setPercent1(percent1);
-                planChild.setTotal1(new BigDecimal(pointTotal));
-                planChild.setIsovertototal(percent * total);
-                planChild.setIsovertototal1(new BigDecimal(pointIsoverTotal));
-                planChild.setIsovertototal0(new BigDecimal(isOver));
-                planChildService.updateById(planChild);
-
-                //更新线到位比例
-//                List<PlanPointTemp> stateList = planPointTempService.list(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId)
-//                        .eq(PlanPointTemp::getState, "0"));
-                List<PlanPointTemp> pointTemps = new ArrayList<>();
-                //点所属的线信息更新也转移到到位接口
-//                for (PlanPointTemp pointTemp : stateList) {
-//                    Long pointTempId = pointTemp.getId();
-//                    int isOverNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId).eq(TfPlanPathTemp::getIsover, "1"));
-//                    int allNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId));
-//                    double pathOver = new BigDecimal((float) isOverNum / allNum).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-//                    PlanPointTemp one = new PlanPointTemp();
-//                    one.setId(pointTempId);
-//                    one.setPathIsover(new BigDecimal(pathOver));
-//                    planPointTempService.updateById(one);
-//                }
-
-                //更新录入状态
-                List<Map> pathMax = customPlanMapper.getPathMaxSpeed(childPlanId);
-                for (Map i : pathMax) {
-                    PlanPointTemp planPointTemp = new PlanPointTemp();
-                    planPointTemp.setIsover("1");
-                    planPointTemp.setGpsSpeed((BigDecimal) i.get("gpsSpeed"));
-                    planPointTemp.setState("1");
-                    planPointTemp.setId(Long.parseLong(i.get("tempId").toString()));
-                    planPointTemp.setOverDate((Date) i.get("overDate"));
-                    pointTemps.add(planPointTemp);
-//                    planPointTempService.updateById(planPointTemp);
-                }
-                planPointTempService.updateBatchById(pointTemps);
-            } else {
-                //更新巡检点录入状态
-                total = planPointTempService.count(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId));
-                int pointIsOver = planPointTempService.count(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId).eq(PlanPointTemp::getIsover, "1"));
-                int pointIsCheck = planPointTempService.count(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId).eq(PlanPointTemp::getCheckState, "1"));
-                isOver = checkTypes.contains(Long.parseLong(plan.get("deviceTypeId").toString())) ? pointIsCheck : pointIsOver;
-                percent = isOver == 0 ? 0 : new BigDecimal((float) isOver / total).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                //更新到位点数
-                PlanChild planChild = new PlanChild();
-                planChild.setId(childPlanId);
-                planChild.setPercent(percent);
-                planChild.setPercent1(percent);
-                planChild.setTotal(Double.valueOf(total));
-                planChild.setTotal1(new BigDecimal(total));
-                planChild.setIsovertototal(Double.valueOf(isOver));
-                planChild.setIsovertototal1(new BigDecimal(isOver));
-                planChildService.updateById(planChild);
-            }
-            //更新计划状态 完成进度percent1为1 计划变成完成状态
-            planChildService.update(Wrappers.<PlanChild>lambdaUpdate().set(PlanChild::getChildPlanState, "3")
-                    .eq(PlanChild::getPercent1, 1).eq(PlanChild::getId, childPlanId));
-        }
-    }
-
-
-    /**
-     * 更新到位点信息
-     * @param childPlanId
-     * @param temptIds
-     */
-    public void pointPlanUpdate(Long childPlanId,List<Long> temptIds) {
-        int pointTotal = 0;
-        int pointIsoverTotal = 0;
-        int isOver = 0;  //---------巡检点,巡检线isover个数,其他设备check个数
-        int total = 0; //point_temp个数
-        double percent = 0;
-        double percent1 = 0;
-        Map plan = customPlanMapper.getTodayPlan(childPlanId).get(0);
-        PlanChild planChild= planChildService.getById(childPlanId);
-
-        //查询包含巡检检查内容的类型
-        List<SysDeviceType> devices = sysDeviceTypeService.list(Wrappers.<SysDeviceType>lambdaQuery().isNotNull(SysDeviceType::getCheckContent));
-        Set<Long> checkTypes = new HashSet<>();
-        devices.stream().filter(n -> !checkTypes.add(n.getPointTypeId()))
-                .collect(Collectors.toSet());
+	@Override
+	@Async("asyncServiceExecutor")
+	@PostConstruct
+	public void executPoint() {		
+		while(true) {						
+			Set<String> pointKeys = redisTemplate.keys("point_"+"*");
+			log.info(pointKeys.size()+"##point_##########################");
+	        if (CollectionUtils.isNotEmpty(pointKeys)) {	        	
+	        	for(String pointKey : pointKeys) {
+	        		String pointValue = valueOperations.get(pointKey);	        		
+	        		UpdatePoint u = (UpdatePoint)JSONObject.parse(pointValue);
+	        		boolean flag = planPointTempService.update(Wrappers.<PlanPointTemp>lambdaUpdate()
+                            .set(PlanPointTemp::getIsover, "1")
+                            .set(PlanPointTemp::getOverDate, u.getCheckTime())
+                            .set(PlanPointTemp::getGpsSpeed, u.getGpsSpeed())
+                            .eq(PlanPointTemp::getId, u.getTempId()));    
+	        		if(flag) {
+	        			redisTemplate.delete(pointValue);
+	        		}
+	        	}
+	        }	
+		}				
+	}
 
-        //更新巡检线录入状态
-        if ("1".equals(plan.get("type"))) {
-            List<Map> pathTotal = customPlanMapper.getPathTotalInfo(childPlanId);
-            total = Integer.valueOf(pathTotal.get(0).get("total").toString());
-            isOver = checkTypes.contains(plan.get("deviceTypeId")) ? Integer.valueOf(pathTotal.get(0).get("checkTotal").toString()) : Integer.valueOf(pathTotal.get(0).get("isovertotal").toString());
-            pointTotal = Integer.valueOf(pathTotal.get(0).get("pointTotal").toString());
-            pointIsoverTotal = Integer.valueOf(pathTotal.get(0).get("pointIsoverTotal").toString());
-//                percent1 = pointTotal == 0 ? 0 : new BigDecimal((float) pointIsoverTotal / pointTotal).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-//                percent = pointTotal == 0 ? 0 : new BigDecimal((float) isOver / total).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-            //修改percent1 为point_temp到位情况
-            percent = pointTotal == 0 ? 0 : new BigDecimal((float) isOver / total).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-            percent1 = pointTotal == 0 ? 0 : new BigDecimal ((float) pointIsoverTotal / pointTotal).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+	@Override
+	@Async("asyncServiceExecutor")
+	@PostConstruct
+	public void executPath() {
+		while(true) {
+		    Set<String> pathkeys = redisTemplate.keys("path_"+"*");
+		    log.info(pathkeys.size()+"##path_##########################");
+		    if (CollectionUtils.isNotEmpty(pathkeys)) {	        	
+		    	for(String pathKey : pathkeys) {
+		    		String pathValue = valueOperations.get(pathKey);	        		
+		    		UpdatePoint u = (UpdatePoint)JSONObject.parse(pathValue);
+		    		
+		    		boolean pathflag =planPathTempService.update(Wrappers.<TfPlanPathTemp>lambdaUpdate()
+		                    .set(TfPlanPathTemp::getIsover, "1")
+		                    .set(TfPlanPathTemp::getOverDate, u.getCheckTime())
+		                    .set(TfPlanPathTemp::getGpsSpeed, u.getGpsSpeed())
+		                    .eq(TfPlanPathTemp::getId, u.getTempId()));
+		    		
+		    		
+		    		//更新完成点所属线的完成率
+		            Long pointTempId =planPathTempService.getById(u.getTempId()).getTempId();
+		            int isOverNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId).eq(TfPlanPathTemp::getIsover, "1"));
+		            int allNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId));
+		            double pathOver = new BigDecimal((float) isOverNum / allNum).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+		            PlanPointTemp one = new PlanPointTemp();
+		            one.setId(pointTempId);
+		            one.setPathIsover(new BigDecimal(pathOver));
+		            
+		            boolean ptahPointFlag = false;
+		            if(pathflag) {
+		            	ptahPointFlag = planPointTempService.updateById(one);
+		            }		          
+		            if(pathflag&&ptahPointFlag) {
+		            	redisTemplate.delete(pathValue);
+		            }
+		    	}
+		    }
+		}
+	}
 
-            //更新到位条数
-            PlanChild planChildUpdate = new PlanChild();
-            planChildUpdate.setId(childPlanId);
-            planChildUpdate.setPercent(percent);
-            planChildUpdate.setPercent1(percent1);
-            planChildUpdate.setTotal1(new BigDecimal(pointTotal));
-            planChildUpdate.setIsovertototal(percent * total);
-            planChildUpdate.setIsovertototal1(new BigDecimal(pointIsoverTotal));
-            planChildUpdate.setIsovertototal0(new BigDecimal(isOver));
-            planChildService.updateById(planChildUpdate);
 
-            //更新线到位比例
-            List<PlanPointTemp> stateList = planPointTempService.list(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId)
-                    .eq(PlanPointTemp::getState, "0"));
-            List<PlanPointTemp> pointTemps = new ArrayList<>();
-            List<TfPlanPathTemp> pathTemps = new ArrayList<>();
-            for (PlanPointTemp pointTemp : stateList) {
-                Long pointTempId = pointTemp.getId();
-                int isOverNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId).eq(TfPlanPathTemp::getIsover, "1"));
-                int allNum = planPathTempService.count(Wrappers.<TfPlanPathTemp>lambdaQuery().eq(TfPlanPathTemp::getTempId, pointTempId));
-                double pathOver = new BigDecimal((float) isOverNum / allNum).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
-                PlanPointTemp one = new PlanPointTemp();
-                one.setId(pointTempId);
-                one.setPathIsover(new BigDecimal(pathOver));
-                planPointTempService.updateById(one);
-            }
-        }
-    }
+	@Override
+	@Async("asyncServiceExecutor")
+	@PostConstruct
+	public void executChild() {
+		Set<String> childkeys = redisTemplate.keys("child_"+"*");
+		log.info(childkeys.size()+"##child_##########################");
+	    if (CollectionUtils.isNotEmpty(childkeys)) {	        	
+	    	for(String childKey : childkeys) {
+	    		String childValue = valueOperations.get(childKey);	        		
+	    		List<String> list = Arrays.asList(childValue.split(","));
+	    		
+				for (String sid : list) {
+			        Long childPlanId = Long.parseLong(sid);
+			        Date now = Date8Util.getCurrentDate();
+			        //查询当天的计划
+					Map param1 = new HashMap();
+					param1.put("now", now);
+					int pointTotal = 0;
+					int pointIsoverTotal = 0;
+					int isOver = 0;  //---------巡检点,巡检线isover个数,其他设备check个数
+					int total = 0; //point_temp个数
+					double percent = 0;
+					double percent1 = 0;
+					Map plan = customPlanMapper.getTodayPlan(childPlanId).get(0);
+					//查询包含巡检检查内容的类型
+		            List<SysDeviceType> devices = sysDeviceTypeService.list(Wrappers.<SysDeviceType>lambdaQuery().isNotNull(SysDeviceType::getCheckContent));
+		            Set<Long> checkTypes = new HashSet<>();
+		            devices.stream().filter(n -> !checkTypes.add(n.getPointTypeId()))
+		                    .collect(Collectors.toSet());
+		            
+		          //更新巡检线录入状态
+		            if ("1".equals(plan.get("type"))) {
+		                List<Map> pathTotal = customPlanMapper.getPathTotalInfo(childPlanId);
+		                total = Integer.valueOf(pathTotal.get(0).get("total").toString());
+		                isOver = checkTypes.contains(plan.get("deviceTypeId")) ? Integer.valueOf(pathTotal.get(0).get("checkTotal").toString()) : Integer.valueOf(pathTotal.get(0).get("isovertotal").toString());
+		                pointTotal = Integer.valueOf(pathTotal.get(0).get("pointTotal").toString());
+		                pointIsoverTotal = Integer.valueOf(pathTotal.get(0).get("pointIsoverTotal").toString());
+		                
+		                percent = pointTotal == 0 ? 0 : new BigDecimal((float) isOver / total).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+		                percent1 = pointTotal == 0 ? 0 : new BigDecimal ((float) pointIsoverTotal / pointTotal).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
 
+		                //更新到位条数
+		                PlanChild planChild = new PlanChild();
+		                planChild.setId(childPlanId);
+		                planChild.setPercent(percent);
+		                planChild.setPercent1(percent1);
+		                planChild.setTotal1(new BigDecimal(pointTotal));
+		                planChild.setIsovertototal(percent * total);
+		                planChild.setIsovertototal1(new BigDecimal(pointIsoverTotal));
+		                planChild.setIsovertototal0(new BigDecimal(isOver));
+		                planChildService.updateById(planChild);
 
-}
+		                List<PlanPointTemp> pointTemps = new ArrayList<>();
+		                
+		                //更新录入状态
+		                List<Map> pathMax = customPlanMapper.getPathMaxSpeed(childPlanId);
+		                for (Map i : pathMax) {
+		                    PlanPointTemp planPointTemp = new PlanPointTemp();
+		                    planPointTemp.setIsover("1");
+		                    planPointTemp.setGpsSpeed((BigDecimal) i.get("gpsSpeed"));
+		                    planPointTemp.setState("1");
+		                    planPointTemp.setId(Long.parseLong(i.get("tempId").toString()));
+		                    planPointTemp.setOverDate((Date) i.get("overDate"));
+		                    pointTemps.add(planPointTemp);
+		                }
+		                planPointTempService.updateBatchById(pointTemps);
+		                
+		            } else {
+		                //更新巡检点录入状态
+		                total = planPointTempService.count(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId));
+		                int pointIsOver = planPointTempService.count(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId).eq(PlanPointTemp::getIsover, "1"));
+		                int pointIsCheck = planPointTempService.count(Wrappers.<PlanPointTemp>lambdaQuery().eq(PlanPointTemp::getChildPlanId, childPlanId).eq(PlanPointTemp::getCheckState, "1"));
+		                isOver = checkTypes.contains(Long.parseLong(plan.get("deviceTypeId").toString())) ? pointIsCheck : pointIsOver;
+		                percent = isOver == 0 ? 0 : new BigDecimal((float) isOver / total).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
+		                //更新到位点数
+		                PlanChild planChild = new PlanChild();
+		                planChild.setId(childPlanId);
+		                planChild.setPercent(percent);
+		                planChild.setPercent1(percent);
+		                planChild.setTotal(Double.valueOf(total));
+		                planChild.setTotal1(new BigDecimal(total));
+		                planChild.setIsovertototal(Double.valueOf(isOver));
+		                planChild.setIsovertototal1(new BigDecimal(isOver));
+		                planChildService.updateById(planChild);
+		            }
+		            //更新计划状态 完成进度percent1为1 计划变成完成状态
+		            planChildService.update(Wrappers.<PlanChild>lambdaUpdate().set(PlanChild::getChildPlanState, "3")
+		                    .eq(PlanChild::getPercent1, 1).eq(PlanChild::getId, childPlanId));
+		            
+		            
+				}    
+	    	
+	    	
+	    	}
+	    	
+	    }
+		
+	}
+	
+}

+ 1 - 1
src/main/java/com/tofly/dyrq/custom/service/impl/CustomSpecialEquipmentServiceImpl.java

@@ -55,7 +55,7 @@ public class CustomSpecialEquipmentServiceImpl extends ServiceImpl<SpecialEquipm
 
         InputStream inputStream = file.getInputStream();
         ExcelUtil opsExcel = new ExcelUtil(SpecialEquipment.class);
-        List<SpecialEquipment> listOps = opsExcel.importExcel2("录入",inputStream);
+        List<SpecialEquipment> listOps = opsExcel.importExcel("录入",inputStream);
         List<SpecialEquipment> listAllOps = specialEquipmentService.list();
         /*Map<String, SpecialEquipment> collect = listAllOps.stream().collect(Collectors.toMap(SpecialEquipment::getOwnNumber, m -> m, (k1, k2) -> k1));
         //StringBuffer sb=new StringBuffer();