diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java index c63f42945..377a0eca7 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/H5ApiController.java @@ -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
list = h5ApiService.dailyProductDetil(workTime); return list; } + //能源数据 + @GetMapping("/EnergyExpend") + public List EnergyExpend() + { + return h5ApiService.EnergyExpend(); + } + + } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java index c1aeceb24..892da1aa4 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java @@ -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 getHourProductionList(MesHourReport mesHourReport) { @@ -392,6 +392,33 @@ public class MesReportWorkController extends BaseController { List list = mesReportWorkService.getHourProductionList(mesHourReport); return list; } + @GetMapping("/getHourProductionLists") + @Log(title = "近7天产量查询", businessType = BusinessType.QUERY) + public List 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 list = mesReportWorkService.getHourProductionLists(mesHourReport); + return list; + } + //计划达成率 + @GetMapping("/PlanAchievementRate") + public AjaxResult PlanAchievementRate(){ + return mesReportWorkService.PlanAchievementRate(); + } @RequiresPermissions("mes:hourProduction:list") @PostMapping("/getHourProductionExport") diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/EnergyExpend.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/EnergyExpend.java new file mode 100644 index 000000000..757268a0f --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/EnergyExpend.java @@ -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; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesHourReport.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesHourReport.java index e8665d5a5..8b0dd9240 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesHourReport.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesHourReport.java @@ -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 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; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/H5ApiMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/H5ApiMapper.java index a5eff2580..2558ac214 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/H5ApiMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/H5ApiMapper.java @@ -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
selectMesLineProsdceLists(H5 h5); + + List EnergyExpend(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java index ccbf87de4..f274db66a 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java @@ -102,6 +102,8 @@ public interface MesReportWorkMapper { @MapKey("equCodeHour") Map getHourProductionList(MesHourReport mesHourReport); + //烘房当日产量00:00-24:00 + List getHFDailyProduction(); List getEquNames(MesHourReport mesHourReport); @@ -196,4 +198,8 @@ public interface MesReportWorkMapper { String getTypeName(String productCode); List getNoticesGroup(SysNoticeGroup noticeQo); + + List getEquNamess(MesHourReport mesHourReport); + + List> getPlanNumber(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java index a5c9a6929..d3301bad0 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/H5ApiService.java @@ -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
dailyProductDetil(String workTime); + + List EnergyExpend(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java index 84212cded..33c98953d 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java @@ -87,6 +87,7 @@ public interface IMesReportWorkService { LineChartDto getLineChartData(MesReportProduction mesReportProduction); List getHourProductionList(MesHourReport mesHourReport); + List getHourProductionLists(MesHourReport mesHourReport); List> getMachineProductionList(MesMachineReport mesMachineReport); List getProShifts(); @@ -140,4 +141,6 @@ public interface IMesReportWorkService { Map getmonthProductionSut(MesMonthReportVo mesMonthReportVo); + + AjaxResult PlanAchievementRate(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java index c2daca15e..1fd0f0755 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/H5ApiServiceImpl.java @@ -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() { + return h5ApiMapper.EnergyExpend(); + } + } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index 0c8f1f464..f936a1f69 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -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> dryingRoomListInfo = mesMapper.selectdryingRoomListInfo(); + + List energyExpendList=this.EnergyExpend(); + + // Iterate over each item in dryingRoomListInfo + for (Map 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 mapperHourProductionList = this.getHFDailyProduction(); + + for (Map 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(){ + DynamicDataSourceContextHolder.push("ds_" + "1000");// 这是数据源的key + return h5ApiMapper.EnergyExpend(); + } + /***查询 烘房当日产出**/ + private List getHFDailyProduction(){ + DynamicDataSourceContextHolder.push("ds_" + "999");// 这是数据源的key + return mesReportWorkMapper.getHFDailyProduction(); + } + /**白坯工厂,修正设备**/ @Override public AjaxResult changeTransferResultTask() { diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index a95879ae8..172725091 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -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 getHourProductionLists(MesHourReport mesHourReport) { + List equs = mesReportWorkMapper.getEquNamess(mesHourReport); + return equs; + } + @Override @DS("#header.poolName") public List 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> mapList=mesReportWorkMapper.getPlanNumber(); + List maps=mesReportWorkMapper.getHFDailyProduction(); + int sumChe = 0; + + for (Map 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(";+", " "); diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml index 95d89ccc7..5de3d3706 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/H5ApiMapper.xml @@ -74,4 +74,29 @@ WHERE mrw.use_man, mrw.parent_order; + + + + + + + + diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml index 2681808ec..4b686a7d0 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml @@ -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 diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index fe3d2eefb..e3308278f 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -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' + + + + + insert into mes_report_work id, diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcProCheckController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcProCheckController.java index 47145227b..bd0bf268c 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcProCheckController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcProCheckController.java @@ -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) { diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java index 2b3c538ea..326463bf1 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java @@ -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); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java index 25f578339..124c1d761 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java @@ -268,6 +268,20 @@ public class QcProCheckServiceImpl implements QcProCheckService { return dto; } + @Override + @DS("#header.poolName") + public Map getHfChartDatas(QcProCheck qcProCheck) { + + List checkList = null; + List 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());