diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java index 2a8dcaa2f..721ae6a8d 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java @@ -27,4 +27,7 @@ public interface RemoteDeviceService { @PostMapping("/deviceTask/createMaintenancePlanTask") public R createMaintenancePlanTask(); + + @PostMapping("/deviceTask/createEquipmentOperationTask") + public R createEquipmentOperationTask(); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java index 593f408b0..d46844dab 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java @@ -37,6 +37,11 @@ public class RemoteDeviceFallbackFactory implements FallbackFactory createTimeArray; + + // 创建日期开始 + private String createTimeStart; + + // 创建日期结束 + private String createTimeEnd; + + public String getCreateTimeStart() { + return createTimeStart; + } + + public void setCreateTimeStart(String createTimeStart) { + this.createTimeStart = createTimeStart; + } + + public String getCreateTimeEnd() { + return createTimeEnd; + } + + public void setCreateTimeEnd(String createTimeEnd) { + this.createTimeEnd = createTimeEnd; + } + + public List getCreateTimeArray() { + return createTimeArray; + } + + public void setCreateTimeArray(List createTimeArray) { + this.createTimeArray = createTimeArray; + } + public void setId(String id) { this.id = id; } diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/EquEquipmentMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/EquEquipmentMapper.java index f2a179f3b..0363c83a9 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/EquEquipmentMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/EquEquipmentMapper.java @@ -2,6 +2,7 @@ package com.op.device.mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.device.domain.EquEquipment; +import com.op.device.domain.EquOperation; import com.op.device.domain.Equipment; import java.util.List; diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java index 45f54f25c..b6630f082 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java @@ -2,7 +2,9 @@ package com.op.device.mapper; import java.util.List; +import com.baomidou.dynamic.datasource.annotation.DS; import com.op.device.domain.EquOperation; +import io.lettuce.core.dynamic.annotation.Param; /** * 设备运行记录Mapper接口 @@ -58,4 +60,16 @@ public interface EquOperationMapper { * @return 结果 */ public int deleteEquOperationByIds(String[] ids); + + // 获取设备运行时间 + @DS("master") + String selectEquipmentOperationTime(); + + List selectEquipments(); + + // 批量插入设备运行记录 + int insertEquOperationByBatch(@Param("list") List subList); + + // 校验当天运行记录数量 + int checkInsertOperation(); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java b/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java index 4cb6b99f6..f35a7ac30 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java @@ -17,4 +17,6 @@ public interface IDeviceTaskService { AjaxResult createPatrolCheckPlanTask(); AjaxResult createMaintenancePlanTask(); + + AjaxResult createEquipmentOperationTask(); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java index 76d2107f5..6a0686a0a 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java @@ -79,6 +79,11 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { @Autowired private SparePartsLedgerMapper sparePartsLedgerMapper; + @Autowired + private EquEquipmentMapper equipmentMapper; + @Autowired + private EquOperationMapper equOperationMapper; + /** * 根据点检计划生成点检任务 **/ @@ -172,6 +177,39 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { return success(); } + /** + * 设备运行记录生成 + * @return + */ + @Override + public AjaxResult createEquipmentOperationTask() { + // 加载sf-cloud库的sys_datasource + SysUser sysUser = new SysUser(); + sysUser.setUserId(1L); + R>> dateSources0 = remoteUserService.getPoolNameList(sysUser); + List> dateSources = dateSources0.getData(); + ExecutorService executorService = new ThreadPoolExecutor( + dateSources.size(), + dateSources.size(), + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue()); + + try { + dateSources.forEach(dateSource -> { + logger.info("++++++++++++" + dateSource.get("poolName") + "++++设备运行记录生成开始++++++++++"); + Runnable run = () -> createEquipmentOperation(dateSource.get("poolName")); + executorService.execute(run); + }); + } catch (Exception e) { + logger.error("service == dataClearTask == exception", e); + return error("service == dataClearTask == exception"); + } finally { + executorService.shutdown(); + } + + return success(); + } + public void createSpotCheckPlanFunc(String poolName){ DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key /**equ_plan equ_plan_equ**/ @@ -372,4 +410,59 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { } return sce; } + + private void createEquipmentOperation(String poolName){ + DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key + // 当天未生成过运行记录 + int checkNum = equOperationMapper.checkInsertOperation(); + if (checkNum == 0) { + // 获取字典设备运行时间 device_operation_time + String operationTime = equOperationMapper.selectEquipmentOperationTime(); + // 获取所有设备信息(设备编码、设备名称、设备组线、工作中心名称) + List operationList = equOperationMapper.selectEquipments(); + // 统一处理数据 + for (EquOperation operation : operationList) { + operation.setId(IdUtils.fastSimpleUUID());// id + operation.setFactoryCode(poolName.replace("ds_",""));// 工厂 + operation.setOperationTime(DateUtils.getTime());// 日期 + operation.setOperationTime(operationTime);// 运行时间(默认运行时间) + operation.setActualOperationTime(operationTime);// 实际运行时间(默认运行时间) + operation.setCreateBy("jod"); + operation.setCreateTime(DateUtils.getNowDate()); + } + + int batchSize = 200;// 批次数量 + + // 分批次处理 + int batchCount = (operationList.size() + batchSize - 1)/batchSize;// 计算批次数量 + for (int i = 0;i < batchCount; i++) { + int startIndex = i * batchSize;// 索引开始值 + int endIndex = Math.min((i + 1)*batchSize,operationList.size());// 索引结束值 + // 截取列表 + List subList = operationList.subList(startIndex,endIndex); + + int num = equOperationMapper.insertEquOperationByBatch(subList); + System.out.println("数据源:"+poolName+"--->"+"第"+i+"轮"+"开始索引:"+startIndex+"________结束索引:"+endIndex+"________成功插入数量:"+num); + } + }else { + System.out.println("数据源:"+poolName+"当天生成过运行记录"); + } + + } + + public static void main(String[] args) { + + int batchSize = 200;// 批次数量 + + // 分批次处理 + int batchCount = (500 + batchSize - 1)/batchSize;// 计算批次数量 + for (int i = 0;i < batchCount; i++) { + int startIndex = i * batchSize; + int endIndex = Math.min((i + 1)*batchSize,500); + System.out.println("第"+i+"轮"+"开始:"+startIndex+"------结束:"+endIndex); + } + + System.out.println("------>"+batchCount); + } + } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOperationServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOperationServiceImpl.java index 98e86d53e..b8dae86d5 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOperationServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOperationServiceImpl.java @@ -1,9 +1,13 @@ package com.op.device.service.impl; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.util.List; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.utils.DateUtils; +import com.op.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.device.mapper.EquOperationMapper; @@ -42,6 +46,15 @@ public class EquOperationServiceImpl implements IEquOperationService { @Override @DS("#header.poolName") public List selectEquOperationList(EquOperation equOperation) { + // 创建时间列表不为空 + if (equOperation.getCreateTimeArray() != null) { + // 设置创建日期开始和结束值 + if (equOperation.getCreateTimeArray().size() == 2) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + equOperation.setCreateTimeStart(formatter.format(equOperation.getCreateTimeArray().get(0))); + equOperation.setCreateTimeEnd(formatter.format(equOperation.getCreateTimeArray().get(1))); + } + } return equOperationMapper.selectEquOperationList(equOperation); } @@ -67,6 +80,17 @@ public class EquOperationServiceImpl implements IEquOperationService { @Override @DS("#header.poolName") public int updateEquOperation(EquOperation equOperation) { + // 实际运行时间(运行时间-故障时间) + double result = Double.parseDouble(equOperation.getOperationTime()) - Double.parseDouble(equOperation.getFaultTime()); + equOperation.setActualOperationTime(String.valueOf(result)); + // 故障率计算(故障时间/运行时间) + BigDecimal faultTimeBD = new BigDecimal(equOperation.getFaultTime());// 故障时间 + BigDecimal operationTimeBD = new BigDecimal(equOperation.getOperationTime());// 运行时间 + + // 将处理好的故障率置入故障率 + equOperation.setFailureRate(faultTimeBD.divide(operationTimeBD,2, RoundingMode.HALF_UP).toString()+"%"); + + equOperation.setUpdateBy(SecurityUtils.getUsername()); equOperation.setUpdateTime(DateUtils.getNowDate()); return equOperationMapper.updateEquOperation(equOperation); } diff --git a/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml index ac8d4e8d1..04a90d782 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml @@ -5,57 +5,89 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - select id, workshop, group_Line, equipment_name, equipment_code, fault_time, actual_operation_time, operation_time, failure_rate, failure_description, reason_analyze, handling_method, repair_person, equ_status_des, replace_spare, factory_code, attr1, attr2, attr3, del_flag, create_by, create_time, update_by, update_time from equ_operation + select id, + workshop, + group_line, + equipment_name, + equipment_code, + fault_time, + actual_operation_time, + operation_time, + failure_rate, + failure_description, + reason_analyze, + handling_method, + repair_person, + equ_status_des, + replace_spare, + factory_code, + attr1, + attr2, + attr3, + del_flag, + create_by, + create_time, + update_by, + update_time + from equ_operation @@ -64,12 +96,35 @@ where id = #{id} + + + + + + insert into equ_operation id, workshop, - group_Line, + group_line, equipment_name, equipment_code, fault_time, @@ -120,11 +175,24 @@ + + insert into equ_operation + ( + id,workshop,group_line,equipment_name,equipment_code,actual_operation_time,operation_time,factory_code,create_by,create_time + ) + values + + ( + #{item.id},#{item.workshop},#{item.groupLine},#{item.equipmentName},#{item.equipmentCode},#{item.actualOperationTime},#{item.operationTime},#{item.factoryCode},#{item.createBy},#{item.createTime} + ) + + + update equ_operation workshop = #{workshop}, - group_Line = #{groupLine}, + group_line = #{groupLine}, equipment_name = #{equipmentName}, equipment_code = #{equipmentCode}, fault_time = #{faultTime}, @@ -151,7 +219,9 @@ - delete from equ_operation where id = #{id} + delete + from equ_operation + where id = #{id} diff --git a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java index bd5ff7f94..443cd9a05 100644 --- a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java +++ b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java @@ -138,4 +138,10 @@ public class RyTask { logger.info("++保养计划+开始++createMaintenancePlanTask+++++"); remoteDeviceService.createMaintenancePlanTask(); } + + /** 设备运行记录生成 **/ + public void createEquipmentOperationTask(){ + logger.info("++设备运行记录生成任务开始++createEquipmentOperationTask+++++"); + remoteDeviceService.createEquipmentOperationTask(); + } }