564a2a15 张雷

refactor(equipment): 优化设备维护成本计算逻辑

- 在 EquipmentMaintainTaskMapper.xml 中添加 maintenance_cost 字段
- 在 ProductionEquipmentMapper.xml 中修改维护成本计算方式,仅使用 maintenance_cost 字段- 在 ProductionEquipmentServiceImpl 中增加负数判断逻辑,确保计算结果不为负数
1 个父辈 7e19f7cb
......@@ -10,14 +10,15 @@
emt.end_time AS endTime,
emt.start_time AS startTime,
emt.depart_id,
(select depart_name from sys_depart where id=emt.depart_id) AS depart_name,
(select depart_name from sys_depart where id = emt.depart_id) AS depart_name,
emt.maintain_plan_name AS maintainPlanName,
emt.maintain_mode AS maintainMode,
emt.maintain_level AS maintainLevel,
emt.maintainer_id AS maintainerId,
(select realname from sys_user where id=emt.maintainer_id) AS maintainerName,
(select realname from sys_user where id = emt.maintainer_id) AS maintainerName,
emt.maintain_time AS maintainTime,
emt.plan_id AS planId,
emt.maintenance_cost AS maintenanceCost,
emt.real_start_time AS realStartTime,
emt.real_end_time AS realEndTime,
emt.working_hours AS workingHours,
......@@ -36,7 +37,7 @@
LEFT JOIN equipment_maintain_plan emp ON emp.id=emt.plan_id
LEFT JOIN equipment_info ei ON ei.id=emt.equipment_id
<where>
emt. del_flag=0 and emt.start_time &lt;=now()
emt.del_flag=0 and emt.start_time &lt;=now()
<if test="equipmentMaintainTask.planArrangerId !=null and equipmentMaintainTask.planArrangerId!='' and equipmentMaintainTask.getType==0">
AND (emt.maintainer_id = #{equipmentMaintainTask.planArrangerId} or (emp.plan_accepter_id= #{equipmentMaintainTask.planArrangerId}))
AND results_enforcement!='4'
......@@ -95,7 +96,7 @@
</if>
</where>
<!-- order by emt.depart_id desc , ei.equipment_name asc ,ei.structures asc -->
order BY emt.depart_id asc , ei.equipment_name asc , emt.start_time desc
order BY emt.depart_id asc,ei.equipment_name asc,emt.start_time desc
</select>
<update id="updateResultsEnforcement">
update equipment_maintain_task
......
......@@ -840,9 +840,9 @@
SELECT t.MONTH AS month,
(
SELECT
IFNULL(sum(etc.material_cost+etc.maintenance_cost+etc.labor_cost+etc.machinery_cost+etc.service_cost+etc.wastage_cost+etc.other_cost),0)
IFNULL(sum(emt.maintenance_cost),0)
FROM
equipment_maintain_task emt LEFT JOIN equipment_task_cost etc ON etc.task_id=emt.id
equipment_maintain_task emt
WHERE
LEFT ( emt.maintain_time, 7 ) = t.MONTH AND emt.del_flag = 0 and emt.depart_id in(${departIds})
) AS maintainCost,
......@@ -871,9 +871,9 @@
SELECT t.MONTH AS month,
(
SELECT
IFNULL(sum(etc.material_cost+etc.maintenance_cost+etc.labor_cost+etc.machinery_cost+etc.service_cost+etc.wastage_cost+etc.other_cost),0)
IFNULL(sum(emt.maintenance_cost),0)
FROM
equipment_maintain_task emt LEFT JOIN equipment_task_cost etc ON etc.task_id=emt.id
equipment_maintain_task emt
WHERE
LEFT ( emt.maintain_time, 7 ) = t.MONTH AND emt.del_flag = 0 and emt.depart_id in(${departIds})
) AS maintainCost,
......@@ -902,8 +902,8 @@
<select id="getContrastCostDetails" resultType="java.util.Map">
select d.id depart_id , d.depart_name ,ifnull(aaa.maintainCost,0) maintainCost,ifnull(bbb.repairCost,0) repairCost from sys_depart d
left join (
SELECT emt.depart_id , IFNULL(sum(etc.material_cost+etc.maintenance_cost+etc.labor_cost+etc.machinery_cost+etc.service_cost+etc.wastage_cost+etc.other_cost),0) maintainCost
FROM equipment_maintain_task emt LEFT JOIN equipment_task_cost etc ON etc.task_id=emt.id
SELECT emt.depart_id , IFNULL(sum(emt.maintenance_cost),0) maintainCost
FROM equipment_maintain_task emt
WHERE emt.del_flag = 0 and emt.maintain_time &gt;= #{startTime} and emt.maintain_time &lt;= #{endTime}
group by emt.depart_id
) aaa on aaa.depart_id = d.id
......
......@@ -536,6 +536,8 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
v = DoubleOperaUtils.bigDecimalRound((increase * 30 - downtime) / (increase * 30), 2)*100;
}
contrastVO.setMonth(month);
//增加v的值不能为负数逻辑
if (v < 0) { v = 0.00; }
contrastVO.setRepairNum(v + "%");
yearOnYear.forEach(y -> {
String lastYear1 = (String) y.get("lastYear");
......@@ -547,6 +549,7 @@ public class ProductionEquipmentServiceImpl implements IProductionEquipmentServi
if (increase1 > 0) {
v1 = DoubleOperaUtils.bigDecimalRound((increase1 * 30 - downtime1) / (increase1 * 30),2)*100;
}
if (v1 < 0) { v1 = 0.00; }
contrastVO.setMaintainNum(v1 + "%");
}
});
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!