白坯业务看板

master
Yangwl 5 months ago
parent a52a4eab62
commit fa04d66dff

@ -1,6 +1,7 @@
package com.op.mes.controller;
import com.op.mes.domain.EnergyExpend;
import com.op.mes.domain.H5;
import com.op.mes.service.H5ApiService;
import org.springframework.beans.factory.annotation.Autowired;
@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.Max;
import java.util.List;
import java.util.Map;
/**
* H5
@ -32,4 +34,12 @@ public class H5ApiController {
List<H5> list = h5ApiService.dailyProductDetil(workTime);
return list;
}
//能源数据
@GetMapping("/EnergyExpend")
public List<EnergyExpend> EnergyExpend()
{
return h5ApiService.EnergyExpend();
}
}

@ -6,6 +6,7 @@ import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ -383,7 +384,6 @@ public class MesReportWorkController extends BaseController {
/**
*
*/
@RequiresPermissions("mes:hourProduction:list")
@GetMapping("/getHourProductionList")
@Log(title = "设备小时产量查询", businessType = BusinessType.QUERY)
public List<HashMap> getHourProductionList(MesHourReport mesHourReport) {
@ -392,6 +392,33 @@ public class MesReportWorkController extends BaseController {
List<HashMap> list = mesReportWorkService.getHourProductionList(mesHourReport);
return list;
}
@GetMapping("/getHourProductionLists")
@Log(title = "近7天产量查询", businessType = BusinessType.QUERY)
public List<MesHourReport> getHourProductionLists(MesHourReport mesHourReport) {
// 获取当前日期的 00:00:00 时间
// 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 获取当前日期的 00:00:00 时间
LocalDateTime today = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
// 获取前 7 天的日期和时间
LocalDateTime sevenDaysAgo = today.minusDays(7);
// 格式化为字符串形式
String formattedToday = today.format(formatter);
String formattedSevenDaysAgo = sevenDaysAgo.format(formatter);
mesHourReport.setProductDateStart(formattedSevenDaysAgo);
mesHourReport.setProductDateEnd(formattedToday);
List<MesHourReport> list = mesReportWorkService.getHourProductionLists(mesHourReport);
return list;
}
//计划达成率
@GetMapping("/PlanAchievementRate")
public AjaxResult PlanAchievementRate(){
return mesReportWorkService.PlanAchievementRate();
}
@RequiresPermissions("mes:hourProduction:list")
@PostMapping("/getHourProductionExport")

@ -0,0 +1,45 @@
package com.op.mes.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class EnergyExpend {
private String monitorName;
private String monitorId;
private double expend;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date endTime;
public String getMonitorName() {
return monitorName;
}
public void setMonitorName(String monitorName) {
this.monitorName = monitorName;
}
public String getMonitorId() {
return monitorId;
}
public void setMonitorId(String monitorId) {
this.monitorId = monitorId;
}
public double getExpend() {
return expend;
}
public void setExpend(double expend) {
this.expend = expend;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}

@ -1,5 +1,6 @@
package com.op.mes.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.op.common.core.web.domain.BaseEntity;
import java.util.Date;
@ -29,6 +30,16 @@ public class MesHourReport extends BaseEntity {
private List<String> hourNames;
private String equCodeHour;
private String shiftId;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date pdate;
public Date getPdate() {
return pdate;
}
public void setPdate(Date pdate) {
this.pdate = pdate;
}
public String getShiftId() {
return shiftId;

@ -1,8 +1,10 @@
package com.op.mes.mapper;
import com.op.mes.domain.EnergyExpend;
import com.op.mes.domain.H5;
import java.util.List;
import java.util.Map;
public interface H5ApiMapper {
/**
@ -18,4 +20,6 @@ public interface H5ApiMapper {
* @return
*/
public List<H5> selectMesLineProsdceLists(H5 h5);
List<EnergyExpend> EnergyExpend();
}

@ -102,6 +102,8 @@ public interface MesReportWorkMapper {
@MapKey("equCodeHour")
Map<String, MesHourReport> getHourProductionList(MesHourReport mesHourReport);
//烘房当日产量0000-2400
List<Map> getHFDailyProduction();
List<MesHourReport> getEquNames(MesHourReport mesHourReport);
@ -196,4 +198,8 @@ public interface MesReportWorkMapper {
String getTypeName(String productCode);
List<SysNoticeGroup> getNoticesGroup(SysNoticeGroup noticeQo);
List<MesHourReport> getEquNamess(MesHourReport mesHourReport);
List<Map<String, String>> getPlanNumber();
}

@ -3,7 +3,10 @@ package com.op.mes.service;
import com.op.mes.domain.H5;
import java.util.List;
import java.util.Map;
public interface H5ApiService {
List<H5> dailyProductDetil(String workTime);
List EnergyExpend();
}

@ -87,6 +87,7 @@ public interface IMesReportWorkService {
LineChartDto getLineChartData(MesReportProduction mesReportProduction);
List<HashMap> getHourProductionList(MesHourReport mesHourReport);
List<MesHourReport> getHourProductionLists(MesHourReport mesHourReport);
List<Map<String, Object>> getMachineProductionList(MesMachineReport mesMachineReport);
List<MesShift> getProShifts();
@ -140,4 +141,6 @@ public interface IMesReportWorkService {
Map getmonthProductionSut(MesMonthReportVo mesMonthReportVo);
AjaxResult PlanAchievementRate();
}

@ -2,12 +2,15 @@ package com.op.mes.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.mes.domain.EnergyExpend;
import com.op.mes.domain.H5;
import com.op.mes.mapper.H5ApiMapper;
import com.op.mes.service.H5ApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -126,7 +129,35 @@ public class H5ApiServiceImpl implements H5ApiService {
}
});
resultList.stream()
.forEach(h5a -> {
double production = h5a.getProduction();
double productionDuration = h5a.getProductionDuration();
double actualEmployment = h5a.getActualEmployment();
double standardEfficiency = h5a.getStandardEfficiency();
// Avoid division by zero
if (productionDuration != 0 && actualEmployment != 0) {
double actualEfficiency = production / productionDuration / actualEmployment;
actualEfficiency = Math.round(actualEfficiency * 10.0) / 10.0;
h5a.setActualEfficiency(actualEfficiency);
// Format efficiency as a percentage
String efficiencyAcRate = String.format("%.1f%%", (actualEfficiency / standardEfficiency) * 100);
h5a.setEfficiencyAcRate(efficiencyAcRate);
} else {
h5a.setEfficiencyAcRate("0.0%");
}
});
return resultList;
}
@Override
@DS("#header.poolName")
public List<EnergyExpend> EnergyExpend() {
return h5ApiMapper.EnergyExpend();
}
}

@ -14,10 +14,7 @@ import com.op.mes.domain.*;
import com.op.mes.domain.buffer.JsonRootBean;
import com.op.mes.domain.dto.BaseEquipmentDto;
import com.op.mes.domain.dto.LGInfoDto;
import com.op.mes.mapper.MesMapper;
import com.op.mes.mapper.MesReportWorkConsumeMapper;
import com.op.mes.mapper.MesReportWorkMapper;
import com.op.mes.mapper.ProRfidProcessDetailMapper;
import com.op.mes.mapper.*;
import com.op.mes.service.IWCSInterfaceService;
import com.op.system.api.RemoteSapService;
import com.op.system.api.RemoteUserService;
@ -39,6 +36,7 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
@ -74,6 +72,8 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
@Autowired
private MesReportWorkConsumeMapper mesReportWorkConsumeMapper;
@Autowired
private H5ApiMapper h5ApiMapper;
/**
*
* JSON
@ -905,10 +905,53 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
Map map = new HashMap();
//查询烘房信息
List<Map<String, String>> dryingRoomListInfo = mesMapper.selectdryingRoomListInfo();
List<EnergyExpend> energyExpendList=this.EnergyExpend();
// Iterate over each item in dryingRoomListInfo
for (Map<String, String> dryingRoomMap : dryingRoomListInfo) {
String attr2 = dryingRoomMap.get("attr2"); // Get the attr2 field value
// Check for a matching EnergyExpend based on monitorId
for (EnergyExpend energyExpend : energyExpendList) {
if (energyExpend.getMonitorId().equals(attr2)) {
// If monitorId matches attr2, add expend to the Map
dryingRoomMap.put("expend",String.valueOf(energyExpend.getExpend()));
break; // Exit inner loop once a match is found
}
}
}
map.put("dryingroomList", dryingRoomListInfo);
/***查询 烘房当日产出**/
List<Map> mapperHourProductionList = this.getHFDailyProduction();
for (Map<String, String> dryingRoomMap : dryingRoomListInfo) {
String equipment_code = dryingRoomMap.get("equipment_code"); // Get the attr2 field value
// Check for a matching EnergyExpend based on monitorId
for (Map maps : mapperHourProductionList) {
if (maps.get("equipmentCode").equals(equipment_code)) {
// If monitorId matches attr2, add expend to the Map
dryingRoomMap.put("yield",maps.get("RecordCount").toString());
break; // Exit inner loop once a match is found
}
}
}
return map;
}
/**烘房耗电数据**/
private List<EnergyExpend> EnergyExpend(){
DynamicDataSourceContextHolder.push("ds_" + "1000");// 这是数据源的key
return h5ApiMapper.EnergyExpend();
}
/***查询 烘房当日产出**/
private List<Map> getHFDailyProduction(){
DynamicDataSourceContextHolder.push("ds_" + "999");// 这是数据源的key
return mesReportWorkMapper.getHFDailyProduction();
}
/**白坯工厂,修正设备**/
@Override
public AjaxResult changeTransferResultTask() {

@ -17,6 +17,7 @@ import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.ServletUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.security.utils.SecurityUtils;
import com.op.mes.domain.*;
import com.op.mes.domain.dto.LineChartDto;
@ -712,6 +713,14 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
return hourPros;
}
@DS("#header.poolName")
@Override
public List<MesHourReport> getHourProductionLists(MesHourReport mesHourReport) {
List<MesHourReport> equs = mesReportWorkMapper.getEquNamess(mesHourReport);
return equs;
}
@Override
@DS("#header.poolName")
public List<DynamicColumnVo> getMachineProductionTitle(MesMachineReport mesMachineReport) {
@ -921,7 +930,55 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
}
return map;
}
public static void main(String[] args) {
@Override
@DS("#header.poolName")
public AjaxResult PlanAchievementRate() {
List<Map<String,String>> mapList=mesReportWorkMapper.getPlanNumber();
List<Map> maps=mesReportWorkMapper.getHFDailyProduction();
int sumChe = 0;
for (Map<String, String> map : mapList) {
Object cheValue = map.get("che"); // 假设 che 字段的键是 "che"
if (cheValue != null) {
try {
sumChe += Integer.parseInt(cheValue.toString()); // 将字符串转换为 double
} catch (NumberFormatException e) {
// 处理转换异常
System.err.println("无法转换为数字: " + cheValue);
}
}
}
int totalRecordCount = 0;
for (Map map : maps) {
Object recordCountValue = map.get("RecordCount"); // 假设 RecordCount 的键是 "RecordCount"
if (recordCountValue != null) {
try {
totalRecordCount += Integer.parseInt(recordCountValue.toString()); // 将对象转换为整型并累加
} catch (NumberFormatException e) {
// 处理转换异常
System.err.println("无法转换为数字: " + recordCountValue);
}
}
}
String percentage = calculatePercentage(totalRecordCount, sumChe);
Map resultmap=new HashMap();
resultmap.put("sumChe",sumChe);
resultmap.put("totalRecordCount",totalRecordCount);
return AjaxResult.success(percentage,resultmap);
}
public static String calculatePercentage(int numerator, int denominator) {
if (denominator == 0) {
return "0%"; // 防止除以零
}
double percentageValue = ((double) numerator / denominator) * 100; // 计算百分比
return String.format("%.2f%%", percentageValue); // 格式化为字符串并添加 %
}
public static void main(String[] args) {
String originalString = "这是;;一个;测试;字符串;;;;用来测试替换功能";
String replacedString = originalString.replaceAll(";+", " ");

@ -74,4 +74,29 @@ WHERE
mrw.use_man,
mrw.parent_order;
</select>
<resultMap type="EnergyExpend" id="EnergyExpendResult">
<result property="monitorName" column="monitor_name"/>
<result property="monitorId" column="monitor_id"/>
<result property="expend" column="expend"/>
<result property="endTime" column="end_time"/>
</resultMap>
<select id="EnergyExpend" resultMap="EnergyExpendResult">
SELECT
monitor_name,
monitor_id,
SUM(expend * 60) AS expend,
CAST(end_time AS DATE) AS report_date
FROM
report_point_dnb
WHERE
monitor_id IN ( 'E0046_1800','E0046_1700','E0046_1600','E0046_1500','E0046_1400','E0046_1300', 'E0046_1200','E0046_1100','E0046_1000','E0046_0900','E0046_0800','E0046_0700','E0046_0600','E0046_0500','E0046_0400','E0046_0300', 'E0046_0200','E0046_0100' )
AND CAST(end_time AS DATE) = CAST(GETDATE() AS DATE)
GROUP BY
monitor_name,
monitor_id,
CAST(end_time AS DATE)
ORDER BY
report_date ASC;
</select>
</mapper>

@ -191,6 +191,7 @@
SELECT
be.equipment_code,
be.status,
be.attr2,
bea.isvalue,
bea.property
FROM
@ -199,7 +200,7 @@
WHERE
be.equipment_type_code = 'equ_type_hf'
AND del_flag = '0'
) AS SourceTable PIVOT ( MAX ( isvalue ) FOR property IN ( [dollyNumber], [Intheoven], [temperature],,[humidity] ) ) AS PivotTable LEFT JOIN base_equipment_attached T2 ON PivotTable.equipment_code=T2.device_code WHERE T2.property='dollyNumber'
) AS SourceTable PIVOT ( MAX ( isvalue ) FOR property IN ( [dollyNumber], [Intheoven], [temperature],[humidity] ) ) AS PivotTable LEFT JOIN base_equipment_attached T2 ON PivotTable.equipment_code=T2.device_code WHERE T2.property='dollyNumber'
ORDER BY i asc
</select>

@ -1014,8 +1014,73 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join base_team_user btu on sng.group_code = btu.team_code
where sng.notice_id = #{noticeId} and sng.del_flag = '0'
</select>
<select id="getEquNamess" resultType="com.op.mes.domain.MesHourReport">
<insert id="insertMesReportWork" parameterType="MesReportWork">
SELECT
CONVERT(date, mt.update_time) AS pdate, -- 提取日期部分
COUNT(0) AS quantity -- 每天“烘房”设备的总生产数量
FROM
mes_material_transfer_result mt
LEFT JOIN
base_equipment equ ON mt.equipmentCode = equ.equipment_code
LEFT JOIN
pro_order_workorder pow ON pow.workorder_id = mt.OrderCode
WHERE
mt.rfid_status = '1'
<if test="productDateStart != null "> and CONVERT(varchar(30),mt.update_time, 120) >= #{productDateStart}</if>
<if test="productDateEnd != null "> and #{productDateEnd} > CONVERT(varchar(30),mt.update_time, 120)</if>
AND equ.equipment_name LIKE '%烘房%' -- 筛选设备名称包含"烘房"
GROUP BY
CONVERT(date, mt.update_time) -- 按日期分组
ORDER BY
pdate ASC; -- 按日期排序
</select>
<select id="getHFDailyProduction" resultType="java.util.Map">
SELECT
mt.equipmentCode,
COUNT(*) AS RecordCount
FROM
mes_material_transfer_result mt
LEFT JOIN base_equipment equ ON mt.equipmentCode = equ.equipment_code
WHERE
mt.rfid_status = '1'
AND equ.equipment_type_code = 'equ_type_hf'
AND mt.update_time BETWEEN
CAST(CONVERT(date, GETDATE()) AS datetime) -- today's date at 00:00:00
AND DATEADD(second, -1, DATEADD(day, 1, CAST(CONVERT(date, GETDATE()) AS datetime))) -- today's date at 23:59:59
GROUP BY
mt.equipmentCode;
</select>
<select id="getPlanNumber" resultType="java.util.Map">
SELECT
c.workorder_code,
c.product_code,
c.product_name,
c.quantity_split,
T.car_num_unit,
(c.quantity_split/ T.car_num_unit ) as che
FROM
pro_order_workorder c
LEFT JOIN (
SELECT
b.item_code,
b.item_name,
a.car_num_unit
FROM
pro_route a
LEFT JOIN pro_route_product b ON a.route_id= b.route_id
WHERE
b.item_code IS NOT NULL
) T ON c.product_code= T.item_code
WHERE
CONVERT ( DATE, product_date ) = CONVERT ( DATE, GETDATE( ) )
</select>
<insert id="insertMesReportWork" parameterType="MesReportWork">
insert into mes_report_work
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>

@ -22,6 +22,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/qcProCheck")
@ -42,6 +43,12 @@ public class QcProCheckController extends BaseController {
return dto;
}
@GetMapping("/getHfChartDatas")
@Log(title = "烘房白坯质量查看", businessType = BusinessType.QUERY)
public Map getHfChartDatas(QcProCheck qcProCheck) {
Map map= qcProCheckService.getHfChartDatas(qcProCheck);
return map;
}
@Log(title = "白坯合格统计", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QcProCheck qcProCheck) {

@ -11,6 +11,7 @@ import com.op.system.api.domain.quality.ChartDTO;
import com.op.system.api.domain.quality.ChartSeriesDTO;
import java.util.List;
import java.util.Map;
/**
* @ClassName : quaService
@ -44,6 +45,8 @@ public interface QcProCheckService {
ChartSeriesDTO getHfChartData(QcProCheck qcProCheck);
Map getHfChartDatas(QcProCheck qcProCheck);
String getWeightInfo(QcCheckTaskDetail qcCheckTaskDetail);
QcCheckTaskDetail getAutoJudge(QcCheckTaskDetail qcCheckTaskDetail);

@ -268,6 +268,20 @@ public class QcProCheckServiceImpl implements QcProCheckService {
return dto;
}
@Override
@DS("#header.poolName")
public Map getHfChartDatas(QcProCheck qcProCheck) {
List<QcProCheck> checkList = null;
List<String> yData = new ArrayList<>();
checkList = qcProCheckMapper.getHFnames(qcProCheck);
Map resultMap=new HashMap();
resultMap.put("checkList",checkList);
return resultMap;
}
@Override
public String getWeightInfo(QcCheckTaskDetail qcCheckTaskDetail) {
DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode());

Loading…
Cancel
Save