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 7b142378..65767b1e 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 @@ -86,4 +86,10 @@ public interface EquOperationMapper { // 分批次删除 int deleteOperation(@Param("delSize") int delSize); + + /** + * 查找设备对应完好率 + * @return + */ + public EquOperation selectEquipmentIntegrityRate(@Param("time")String time, @Param("equipmentCode")String equipmentCode); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java index 4af8f276..eea0cbf3 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java @@ -1,6 +1,8 @@ package com.op.device.service.impl; import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -47,6 +49,9 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService @Autowired private EquSpareApplyMapper equSpareApplyMapper; + @Autowired + private EquOperationMapper equOperationMapper; + /** * 查询维修工单 * @@ -152,18 +157,19 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService * 修改维修工单 * * @param equRepairWorkOrder 维修工单 - * @return 结果outSourcePerson + * @return */ @Override @DS("#header.poolName") public int updateEquRepairWorkOrder(EquRepairWorkOrder equRepairWorkOrder) { + //1.是否停机 if(equRepairWorkOrder.getWorkDownMachine().equals("0")){ equRepairWorkOrder.setWorkPlanDownTime(null); } equRepairWorkOrder.setUpdateBy(SecurityUtils.getUsername()); equRepairWorkOrder.setUpdateTime(DateUtils.getNowDate()); - //先删除每个维修工单对应图片 + //2.先删除每个维修工单对应图片,再新增照片 equRepairWorkOrderMapper.deleteBaseFileBySourceId(equRepairWorkOrder.getWorkId()); if (StringUtils.isNotEmpty(equRepairWorkOrder.getAfterRepairFile())) { String[] ids = equRepairWorkOrder.getAfterRepairFile().split(","); @@ -184,7 +190,7 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService equRepairWorkOrderMapper.insertBaseFileBatch(files); } - //更新标准表 + //3.更新标准表 for(EquOrderStandard equOrderStandard:equRepairWorkOrder.getStandardList()){ //先删除每个检查项标准图片 String imageType = "4"; @@ -214,18 +220,44 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService equOrderStandardMapper.updateStandardAfterRepair(equOrderStandard); } + //5.更新设备状态 if(equRepairWorkOrder.getWorkStatus().equals("1")){ - //修改设备状态 由维修中改为正常运行 + //5.1修改设备状态 由维修中改为正常运行 EquEquipment equEquipment = new EquEquipment(); equEquipment.setEquipmentCode(equRepairWorkOrder.getEquipmentCode()); equEquipment.setEquipmentStatus("1"); equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment); + + //5.2维修完成后 相应的设备完好率重新计算 小时计算 保留一位小数 实际故障时间 换算成小时 + String hours = equRepairWorkOrder.getWorkCostTime().substring(0,equRepairWorkOrder.getWorkCostTime().length()-2); //截掉后两位 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String time = sdf.format(equRepairWorkOrder.getWorkEndTime()); + EquOperation equOperation = equOperationMapper.selectEquipmentIntegrityRate(time,equRepairWorkOrder.getEquipmentCode()); + + if(equOperation != null){ + DecimalFormat df = new DecimalFormat("#.##"); + //实际运行时间 = 实际运行时间 - 故障时间 + double result = Double.parseDouble(equOperation.getActualOperationTime()) - Double.parseDouble(hours); + //故障时间 = 原来的故障时间 + 这次的故障时间 + double faultTime = Double.parseDouble(equOperation.getFaultTime()) + Double.parseDouble(hours); + equOperation.setActualOperationTime(String.valueOf(df.format(result)));//实际运行时间 + equOperation.setFaultTime(String.valueOf(faultTime));//故障时间 + + BigDecimal faultTimeBD = new BigDecimal(faultTime);// 故障时间 + BigDecimal operationTimeBD = new BigDecimal(equOperation.getOperationTime());// 运行时间 + + // 故障率计算(故障时间/运行时间) + equOperation.setFailureRate(faultTimeBD.multiply(new BigDecimal(100)).divide(operationTimeBD,2, RoundingMode.HALF_UP).toString()+"%"); + equOperation.setUpdateBy(SecurityUtils.getUsername()); + equOperation.setUpdateTime(DateUtils.getNowDate()); + equOperationMapper.updateEquOperation(equOperation); + } } - // 费用 - BigDecimal sparePartsCost = equSpareApplyMapper.getSparePartsCost(equRepairWorkOrder.getOrderCode()); - BigDecimal orderCost = BigDecimal.valueOf(Double.valueOf(equRepairWorkOrder.getWorkCost())); - equRepairWorkOrder.setWorkCost(String.valueOf(sparePartsCost.add(orderCost))); + // 备件费用 +// BigDecimal sparePartsCost = equSpareApplyMapper.getSparePartsCost(equRepairWorkOrder.getOrderCode()); +// BigDecimal orderCost = BigDecimal.valueOf(Double.valueOf(equRepairWorkOrder.getWorkCost())); +// equRepairWorkOrder.setWorkCost(String.valueOf(sparePartsCost.add(orderCost))); return equRepairWorkOrderMapper.updateEquRepairWorkOrder(equRepairWorkOrder); } 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 1eda9f70..14afae5c 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 @@ -256,4 +256,11 @@ ORDER BY id OFFSET 0 ROWS FETCH NEXT #{delSize} ROWS ONLY) + + + \ No newline at end of file