|
|
@@ -3,10 +3,23 @@ package com.jeesite.modules.mes.web;
|
|
|
import com.jeesite.common.config.Global;
|
|
|
import com.jeesite.common.entity.Page;
|
|
|
import com.jeesite.common.lang.StringUtils;
|
|
|
+import com.jeesite.common.mybatis.mapper.query.QueryType;
|
|
|
import com.jeesite.common.web.BaseController;
|
|
|
+import com.jeesite.modules.mes.entity.MesDevice;
|
|
|
+import com.jeesite.modules.mes.entity.MesDeviceAlarm;
|
|
|
+import com.jeesite.modules.mes.entity.MesLineProcess;
|
|
|
+import com.jeesite.modules.mes.entity.MesProductRecord;
|
|
|
import com.jeesite.modules.mes.entity.MesProductScreen;
|
|
|
import com.jeesite.modules.mes.resp.CommonResp;
|
|
|
+import com.jeesite.modules.mes.service.MesDeviceAlarmService;
|
|
|
+import com.jeesite.modules.mes.service.MesDeviceService;
|
|
|
+import com.jeesite.modules.mes.service.MesLineProcessService;
|
|
|
+import com.jeesite.modules.mes.service.MesProductRecordService;
|
|
|
import com.jeesite.modules.mes.service.MesProductScreenService;
|
|
|
+import com.jeesite.modules.mes.service.MesRepairService;
|
|
|
+import com.jeesite.modules.mes.service.MesScrapService;
|
|
|
+import com.jeesite.modules.sys.entity.EmpUser;
|
|
|
+import com.jeesite.modules.sys.service.EmpUserService;
|
|
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
@@ -19,11 +32,14 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
- * 大屏展示配置Controller
|
|
|
+ * 大屏展示配置Controller(含大屏专用只读接口,无权限注解)
|
|
|
* @author mes
|
|
|
* @version 2026-08-12
|
|
|
*/
|
|
|
@@ -33,6 +49,20 @@ public class MesProductScreenController extends BaseController {
|
|
|
|
|
|
@Autowired
|
|
|
private MesProductScreenService mesProductScreenService;
|
|
|
+ @Autowired
|
|
|
+ private MesDeviceAlarmService mesDeviceAlarmService;
|
|
|
+ @Autowired
|
|
|
+ private MesRepairService mesRepairService;
|
|
|
+ @Autowired
|
|
|
+ private MesScrapService mesScrapService;
|
|
|
+ @Autowired
|
|
|
+ private MesLineProcessService mesLineProcessService;
|
|
|
+ @Autowired
|
|
|
+ private MesProductRecordService mesProductRecordService;
|
|
|
+ @Autowired
|
|
|
+ private MesDeviceService mesDeviceService;
|
|
|
+ @Autowired
|
|
|
+ private EmpUserService empUserService;
|
|
|
|
|
|
@ModelAttribute
|
|
|
public MesProductScreen get(String id, boolean isNewRecord) {
|
|
|
@@ -92,6 +122,121 @@ public class MesProductScreenController extends BaseController {
|
|
|
return resp;
|
|
|
}
|
|
|
|
|
|
+ /** 大屏:待处理设备报警列表(替代 mesDeviceAlarm/listData) */
|
|
|
+ @RequestMapping(value = "alertList")
|
|
|
+ @ResponseBody
|
|
|
+ public Page<MesDeviceAlarm> alertList(MesDeviceAlarm mesDeviceAlarm,
|
|
|
+ HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ if (StringUtils.isBlank(mesDeviceAlarm.getState())) {
|
|
|
+ mesDeviceAlarm.setState("0");
|
|
|
+ }
|
|
|
+ mesDeviceAlarm.setPage(new Page<>(request, response));
|
|
|
+ return mesDeviceAlarmService.findPage(mesDeviceAlarm);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 大屏:当天返修/报废数量(替代 mesRepair/listData + mesScrap/listData 计数) */
|
|
|
+ @RequestMapping(value = "repairScrapCount")
|
|
|
+ @ResponseBody
|
|
|
+ public CommonResp<Map<String, Object>> repairScrapCount() {
|
|
|
+ CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ String start = today.format(fmt) + " 00:00:00";
|
|
|
+ String end = today.plusDays(1).format(fmt) + " 00:00:00";
|
|
|
+ Map<String, Object> data = new HashMap<>();
|
|
|
+ try {
|
|
|
+ Long repair = mesRepairService.countByDateRange(start, end);
|
|
|
+ Long scrap = mesScrapService.countByDateRange(start, end);
|
|
|
+ data.put("repairCount", repair == null ? 0 : repair);
|
|
|
+ data.put("scrapCount", scrap == null ? 0 : scrap);
|
|
|
+ resp.setData(data);
|
|
|
+ resp.setResult(Global.TRUE);
|
|
|
+ } catch (Exception e) {
|
|
|
+ data.put("repairCount", 0);
|
|
|
+ data.put("scrapCount", 0);
|
|
|
+ resp.setData(data);
|
|
|
+ resp.setResult(Global.FALSE);
|
|
|
+ resp.setMessage(e.getMessage());
|
|
|
+ }
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 大屏:工序列表(替代 mesLineProcess/listData) */
|
|
|
+ @RequestMapping(value = "lineProcessList")
|
|
|
+ @ResponseBody
|
|
|
+ public Page<MesLineProcess> lineProcessList(MesLineProcess mesLineProcess,
|
|
|
+ HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ mesLineProcess.getSqlMap().getWhere().and("a.pid", QueryType.IS_NULL, "");
|
|
|
+ mesLineProcess.setPage(new Page<>(request, response));
|
|
|
+ return mesLineProcessService.findPage(mesLineProcess);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 大屏:生产记录分页(替代 mesProductRecord/listData) */
|
|
|
+ @RequestMapping(value = "recordList")
|
|
|
+ @ResponseBody
|
|
|
+ public Page<MesProductRecord> recordList(MesProductRecord mesProductRecord,
|
|
|
+ HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ mesProductRecord.setPage(new Page<>(request, response));
|
|
|
+ mesProductRecord.getSqlMap().getOrder().setOrderBy("a.id DESC");
|
|
|
+ return mesProductRecordService.findPage(mesProductRecord);
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 大屏:生产部人数(替代 sys/empUser/listData) */
|
|
|
+ @RequestMapping(value = "peopleCount")
|
|
|
+ @ResponseBody
|
|
|
+ public CommonResp<Map<String, Object>> peopleCount() {
|
|
|
+ CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
+ Map<String, Object> data = new HashMap<>();
|
|
|
+ int peopleCount = 0;
|
|
|
+ try {
|
|
|
+ List<EmpUser> users = empUserService.findUserList(new EmpUser());
|
|
|
+ if (users != null) {
|
|
|
+ for (EmpUser u : users) {
|
|
|
+ if (u == null || u.getEmployee() == null || u.getEmployee().getOffice() == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String officeName = u.getEmployee().getOffice().getOfficeName();
|
|
|
+ if (officeName == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String normalized = officeName.replaceAll("\\s", "");
|
|
|
+ if ("生产部".equals(normalized) || normalized.matches(".*[/\\\\>]+生产部$")) {
|
|
|
+ peopleCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data.put("peopleCount", peopleCount);
|
|
|
+ resp.setData(data);
|
|
|
+ resp.setResult(Global.TRUE);
|
|
|
+ } catch (Exception e) {
|
|
|
+ data.put("peopleCount", 0);
|
|
|
+ resp.setData(data);
|
|
|
+ resp.setResult(Global.FALSE);
|
|
|
+ resp.setMessage(e.getMessage());
|
|
|
+ }
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 大屏:设备数量(替代 mesDevice/listData 计数) */
|
|
|
+ @RequestMapping(value = "deviceCount")
|
|
|
+ @ResponseBody
|
|
|
+ public CommonResp<Map<String, Object>> deviceCount() {
|
|
|
+ CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
+ Map<String, Object> data = new HashMap<>();
|
|
|
+ try {
|
|
|
+ Long count = mesDeviceService.findCount(new MesDevice());
|
|
|
+ data.put("deviceCount", count == null ? 0 : count);
|
|
|
+ resp.setData(data);
|
|
|
+ resp.setResult(Global.TRUE);
|
|
|
+ } catch (Exception e) {
|
|
|
+ data.put("deviceCount", 0);
|
|
|
+ resp.setData(data);
|
|
|
+ resp.setResult(Global.FALSE);
|
|
|
+ resp.setMessage(e.getMessage());
|
|
|
+ }
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
private int parseIntSafe(String val) {
|
|
|
if (StringUtils.isBlank(val)) {
|
|
|
return 0;
|
|
|
@@ -102,4 +247,4 @@ public class MesProductScreenController extends BaseController {
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+}
|