生产日报表新增单箱电耗计算

master
FCD 1 month ago
parent 2f51d1ce80
commit 636306a70f

@ -110,6 +110,18 @@ public class MesDailyReportVo extends BaseEntity {
@Excel(name = "用人情况说明") @Excel(name = "用人情况说明")
private String useManRemark; private String useManRemark;
private String electricityNo;
private Date startWorkTime;
private Date endWorkTime;
private BigDecimal totalQuantityFeedback;
@Excel(name = "单箱电耗")
private BigDecimal singleKw;
public String getUseManRemark() { public String getUseManRemark() {
return useManRemark; return useManRemark;
} }
@ -507,4 +519,44 @@ public class MesDailyReportVo extends BaseEntity {
public void setFactoryCode(String factoryCode) { public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode; this.factoryCode = factoryCode;
} }
public String getElectricityNo() {
return electricityNo;
}
public void setElectricityNo(String electricityNo) {
this.electricityNo = electricityNo;
}
public Date getStartWorkTime() {
return startWorkTime;
}
public void setStartWorkTime(Date startWorkTime) {
this.startWorkTime = startWorkTime;
}
public Date getEndWorkTime() {
return endWorkTime;
}
public void setEndWorkTime(Date endWorkTime) {
this.endWorkTime = endWorkTime;
}
public BigDecimal getTotalQuantityFeedback() {
return totalQuantityFeedback;
}
public void setTotalQuantityFeedback(BigDecimal totalQuantityFeedback) {
this.totalQuantityFeedback = totalQuantityFeedback;
}
public BigDecimal getSingleKw() {
return singleKw;
}
public void setSingleKw(BigDecimal singleKw) {
this.singleKw = singleKw;
}
} }

@ -249,4 +249,6 @@ public interface MesReportWorkMapper {
List<MesReportWorkConsume> getClearConsum(String workorderCode); List<MesReportWorkConsume> getClearConsum(String workorderCode);
BigDecimal selectWmsProductPut(MesReportWork mesReportWork1); BigDecimal selectWmsProductPut(MesReportWork mesReportWork1);
List<Map<String,Object>> selectRecordDnbInstantByTime (Map<String, Object> query);
} }

@ -555,6 +555,29 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
} }
} }
//计算电耗
if (StringUtils.isNotBlank(dto.getElectricityNo()) && dto.getEndWorkTime() != null) {
//获取这个工单所在产线的电表编号
String monitorid = dto.getElectricityNo();
//获取这个工单的开始日期和结束日期
String startWorkTime = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", dto.getStartWorkTime());
String endWorkTime = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", dto.getEndWorkTime());
//查询这个工单在开始和最终报工之间的表底值
Map<String, Object> query = new HashMap<>();
query.put("monitorid",monitorid);
query.put("startWorkTime", dto.getStartWorkTime());
query.put("endWorkTime", dto.getEndWorkTime());
List<Map<String,Object>> recordDnbInstantList = mesReportWorkMapper.selectRecordDnbInstantByTime(query);
if (recordDnbInstantList.size() == 2) {
BigDecimal beginKw = (BigDecimal) recordDnbInstantList.get(0).get("kw");
BigDecimal endKw = (BigDecimal) recordDnbInstantList.get(1).get("kw");
BigDecimal kw = beginKw.subtract(endKw).abs();
BigDecimal totalQuantityFeedbackBD = dto.getTotalQuantityFeedback();
dto.setSingleKw(kw.divide(totalQuantityFeedbackBD, BigDecimal.ROUND_HALF_UP));
}
}
// QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto); // QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto);
// if(sonMesReport == null){//单层工单的情况 // if(sonMesReport == null){//单层工单的情况

@ -805,7 +805,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bp.report_rate reportRate, bp.report_rate reportRate,
COALESCE(bpa.category, '蚊香') AS prodType, COALESCE(bpa.category, '蚊香') AS prodType,
mrw.reason AS reason, mrw.reason AS reason,
mrw.useManRemark AS useManRemark mrw.useManRemark AS useManRemark,
be.attr2 AS electricityNo,
pow.start_work_time startWorkTime,
pow.end_work_time endWorkTime,
mrw_summary.total_quantity_feedback totalQuantityFeedback
from base_equipment be from base_equipment be
left join pro_order_workorder pow on be.equipment_code = pow.workorder_name left join pro_order_workorder pow on be.equipment_code = pow.workorder_name
LEFT JOIN base_shifts_t bst ON bst.Shift_Id=pow.shift_id LEFT JOIN base_shifts_t bst ON bst.Shift_Id=pow.shift_id
@ -826,6 +830,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY GROUP BY
use_man_remark, use_man_remark,
remark,workorder_code) mrw ON mrw.workorder_code = pow.workorder_code remark,workorder_code) mrw ON mrw.workorder_code = pow.workorder_code
LEFT JOIN ( SELECT workorder_code, SUM ( quantity_feedback ) AS total_quantity_feedback FROM mes_report_work GROUP BY workorder_code ) mrw_summary ON pow.workorder_code = mrw_summary.workorder_code
where be.del_flag = '0' and be.sap_code is not null and pow.status in ('w2','w3') where be.del_flag = '0' and be.sap_code is not null and pow.status in ('w2','w3')
and pow.parent_order = '0' and pow.del_flag='0' and pow.parent_order = '0' and pow.del_flag='0'
<if test="sapName != null and sapName != ''">and be.equipment_name like concat('%', #{sapName}, '%')</if> <if test="sapName != null and sapName != ''">and be.equipment_name like concat('%', #{sapName}, '%')</if>
@ -1814,4 +1819,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
use_man_remark, use_man_remark,
remark; remark;
</select> </select>
<select id="selectRecordDnbInstantByTime" resultType="java.util.Map" parameterType="java.util.Map">
WITH OrderedRecords AS (
SELECT
rdi.*,
rdi.zxyg * isnull( bmi.ct, 1 ) AS kw,
bmi.ct,
ROW_NUMBER ( ) OVER ( ORDER BY rdi.collect_time ASC ) AS RowAsc,
ROW_NUMBER ( ) OVER ( ORDER BY rdi.collect_time DESC ) AS RowDesc
FROM
record_dnb_instant rdi
LEFT JOIN base_monitor_info bmi ON rdi.monitor_id= bmi.monitor_id
WHERE
rdi.monitor_id = #{monitorid}
AND rdi.collect_time BETWEEN #{startWorkTime} AND #{endWorkTime}
) SELECT
*
FROM
OrderedRecords odr
WHERE
RowAsc = 1
OR RowDesc = 1
ORDER BY
collect_time ASC;
</select>
</mapper> </mapper>

Loading…
Cancel
Save