设备 维修---->设备完好率(一天内多次)

master
A0010407 1 year ago
parent d307cd97f4
commit a68a3ac1a8

@ -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);
}

@ -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);
}

@ -256,4 +256,11 @@
ORDER BY id
OFFSET 0 ROWS FETCH NEXT #{delSize} ROWS ONLY)
</delete>
<select id="selectEquipmentIntegrityRate" parameterType = "String" resultMap="EquOperationResult">
<include refid="selectEquOperationVo"/>
where CONVERT(varchar,create_time,21) like concat('%',#{time}, '%')
and equipment_code = #{equipmentCode}
</select>
</mapper>
Loading…
Cancel
Save