package com.ruoyi.api.controller; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.device.ssj.service.IDeviceSsjService; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.service.IMydoJobService; /** * 大屏接口Controller * * @author ruoyi */ @Anonymous @RestController @RequestMapping("/api/screen") public class ScreenController extends BaseController { @Autowired private IDeviceSsjService deviceSsjService; @Autowired private IMydoJobService mydoJobService; // 定义各区域输送机编号数组 private static final Map> AREA_SSJ_CODES = new HashMap<>(); // 静态初始化输送机编号数组 static { // 区域输送机编号 AREA_SSJ_CODES.put(1, Arrays.asList( "L1001", "G1004" )); // // 1区域输送机编号 // AREA_SSJ_CODES.put(1, Arrays.asList( // "L2007", "L2008", "L2005", "L2006", "L2013" // )); // // // 2区域输送机编号 // AREA_SSJ_CODES.put(2, Arrays.asList( // "L2003", "L2004", "L2012", "L2001", "L2002" // )); // // // 3区域输送机编号 // AREA_SSJ_CODES.put(3, Arrays.asList( // "L1001", "L1002", "L1011" // )); // // // 4区域输送机编号 // AREA_SSJ_CODES.put(4, Arrays.asList( // "L1003", "L1004", "L1012" // )); } /** * 根据区域编号查询输送机列表 * * @param areaNum 区域编号(1-4) * @return 输送机数据列表 */ @PostMapping("/ssj/{areaNum}") public AjaxResult getSsjListByArea(@PathVariable("areaNum") Integer areaNum) { if (areaNum < 1 || areaNum > 4) { return AjaxResult.error("区域编号必须在1-4之间"); } // 获取该区域的输送机编号数组 List ssjCodes = AREA_SSJ_CODES.get(areaNum); if (ssjCodes == null || ssjCodes.isEmpty()) { return AjaxResult.error("未找到该区域的输送机编号配置"); } // 查询所有输送机 List allSsjList = deviceSsjService.selectDeviceSsjList(null); // 根据编号数组筛选输送机 List filteredList = allSsjList.stream() .filter(ssj -> ssj.getDeviceCode() != null && ssjCodes.contains(ssj.getDeviceCode().trim())) .collect(Collectors.toList()); // 转换为前端需要的数据格式 List> resultList = new ArrayList<>(); // 创建作业信息列表 List jobList = new ArrayList<>(); for (DeviceSsj ssj : filteredList) { Map map = new HashMap<>(); map.put("id", ssj.getDeviceCode()); map.put("name", ssj.getName()); map.put("kx", getSsjKx(ssj.getKx())); map.put("dw", getSsjDw(ssj.getDw())); map.put("sbzt", getSSzt(ssj.getSszt())); // map.put("trayCode", ssj.getTrayCode()); map.put("allowPut", String.valueOf(ssj.getAllowPut())); map.put("traySize", String.valueOf(ssj.getTraySize())); map.put("exception", getSSzt(ssj.getSszt())); map.put("taskNo", ssj.getTaskNo()); resultList.add(map); // 如果taskNo大于0,查询对应的作业信息 if (ssj.getTaskNo() > 0) { MydoJob job = mydoJobService.selectJobByTaskNo(String.valueOf(ssj.getTaskNo())); if (job != null) { if("1".equals(job.getInOrOut())){ job.setInOrOut("生产入库"); job.setExitId(job.getEntranceId()); }else if("2".equals(job.getInOrOut())){ job.setInOrOut("退货入库"); job.setExitId(job.getEntranceId()); }else if("3".equals(job.getInOrOut())){ job.setInOrOut("其他入库"); job.setExitId(job.getEntranceId()); }else if("5".equals(job.getInOrOut())){ job.setInOrOut("盘点入库"); job.setExitId(job.getEntranceId()); }else if("21".equals(job.getInOrOut())){ job.setInOrOut("物资出库"); }else if("26".equals(job.getInOrOut())){ job.setInOrOut("盘点出库"); } jobList.add(job); } } } // 返回结果包含data和job两个字段 Map result = new HashMap<>(); result.put("ssj", resultList); result.put("job", jobList); return AjaxResult.success(result); } private String getSsjDw(int dw) { if(dw == 1){ return "到位"; }else{ return "未到位"; } } private String getSsjKx(int kx) { if(kx == 1){ return "空闲"; }else{ return "不空闲"; } } private String getSSzt(int sszt) { String msg = ""; switch (sszt) { case 1: msg = "手动"; break; case 2: msg = "自动"; break; case 3: msg = "运行"; break; case 4: msg = "输送超时"; break; case 5: msg = "断路器跳闸"; break; case 6: msg = "变频器报警"; break; case 7: msg = "开关任务异常"; break; case 8: msg = "急停"; break; case 9: msg = "输送超界"; break; } return msg; } private String getBjxx(int bjxx) { String msg = ""; switch (bjxx) { case 1: msg = "前超长"; break; case 2: msg = "后超长"; break; case 3: msg = "左超宽"; break; case 4: msg = "右超宽"; break; case 5: msg = "超高"; break; case 6: msg = "无任务"; break; case 7: msg = "未扫到条码"; break; case 8: msg = "称重异常"; break; } return msg; } }