|
|
@@ -4,6 +4,8 @@ import java.text.DateFormat;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
@@ -294,6 +296,63 @@ public class MesProductController extends BaseController {
|
|
|
public String screen3(Model model) {
|
|
|
return "modules/mes/mesScreen4";
|
|
|
}
|
|
|
+ @RequestMapping(value = {"screen5"})
|
|
|
+ public String screen5(Model model) {
|
|
|
+ return "modules/mes/mesScreen5";
|
|
|
+ }
|
|
|
+
|
|
|
+ @RequestMapping(value = {"screen6"})
|
|
|
+ public String screen6(Model model) {
|
|
|
+ return "modules/mes/mesScreen6";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 大屏:按小时统计 mes_product_record 中上线/下线工位的 OK 条数(与前端「每小时上下线数据分析」对接)。
|
|
|
+ * <p>请求参数:</p>
|
|
|
+ * <ul>
|
|
|
+ * <li>onlineOprno:上线工位号前缀,必填(如 OP120)</li>
|
|
|
+ * <li>offlineOprno:下线工位号前缀,必填(如 OP190)</li>
|
|
|
+ * <li>lineSn:产线编号,可选;不传或空则不过滤产线(全部产线汇总)</li>
|
|
|
+ * <li>queryDate:统计日期 yyyy-MM-dd,可选,默认当天</li>
|
|
|
+ * </ul>
|
|
|
+ * <p>返回 data:up、down 各 24 个 int(下标 0–23 对应 0–23 时),max 为纵轴建议最大值。</p>
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "hourlyUpDownOkData")
|
|
|
+ @ResponseBody
|
|
|
+ public CommonResp<Map<String, Object>> hourlyUpDownOkData(HttpServletRequest request) {
|
|
|
+ CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
+ String lineSn = trimRequestParam(request.getParameter("lineSn"));
|
|
|
+ String onlineOprno = trimRequestParam(request.getParameter("onlineOprno"));
|
|
|
+ String offlineOprno = trimRequestParam(request.getParameter("offlineOprno"));
|
|
|
+ String queryDate = request.getParameter("queryDate");
|
|
|
+ if (StringUtils.isBlank(onlineOprno) || StringUtils.isBlank(offlineOprno)) {
|
|
|
+ resp.setResult(Global.FALSE);
|
|
|
+ resp.setMessage("onlineOprno、offlineOprno 不能为空");
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ LocalDate day = StringUtils.isNotBlank(queryDate)
|
|
|
+ ? LocalDate.parse(queryDate.trim(), DateTimeFormatter.ISO_LOCAL_DATE)
|
|
|
+ : LocalDate.now();
|
|
|
+ java.time.LocalDateTime startLdt = day.atStartOfDay();
|
|
|
+ java.time.LocalDateTime endLdt = day.plusDays(1).atStartOfDay();
|
|
|
+ Date dayStart = Date.from(startLdt.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ Date dayEnd = Date.from(endLdt.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ Map<String, Object> data = mesProductRecordService.getHourlyUpDownOkStats(
|
|
|
+ lineSn, onlineOprno, offlineOprno, dayStart, dayEnd);
|
|
|
+ resp.setData(data);
|
|
|
+ resp.setResult(Global.TRUE);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e.getMessage(), e);
|
|
|
+ resp.setResult(Global.FALSE);
|
|
|
+ resp.setMessage("查询失败:" + e.getMessage());
|
|
|
+ }
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static String trimRequestParam(String s) {
|
|
|
+ return s == null ? "" : s.trim();
|
|
|
+ }
|
|
|
|
|
|
@RequestMapping(value = "alarmData")
|
|
|
@ResponseBody
|