测量点配置
This commit is contained in:
@ -0,0 +1,21 @@
|
||||
package com.ktg.mes.board.controller;
|
||||
|
||||
import com.ktg.common.core.domain.AjaxResult;
|
||||
import com.ktg.mes.board.service.IWorkshopBoardService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/mes/board/workshop")
|
||||
public class WorkshopBoardController {
|
||||
@Autowired
|
||||
private IWorkshopBoardService workshopBoardService;
|
||||
|
||||
@GetMapping("/data")
|
||||
public AjaxResult data(@RequestParam(value = "screenCode", required = false) String screenCode) {
|
||||
return AjaxResult.success(workshopBoardService.getBoardData(screenCode));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,88 @@
|
||||
package com.ktg.mes.board.domain;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class WorkshopBoardData {
|
||||
private Map<String, Object> header = new LinkedHashMap<String, Object>();
|
||||
|
||||
private Map<String, Object> summary = new LinkedHashMap<String, Object>();
|
||||
|
||||
private List<Map<String, Object>> faultList = new ArrayList<Map<String, Object>>();
|
||||
|
||||
private List<Map<String, Object>> maintenanceList = new ArrayList<Map<String, Object>>();
|
||||
|
||||
private List<Map<String, Object>> machineList = new ArrayList<Map<String, Object>>();
|
||||
|
||||
private List<Map<String, Object>> detailRealtime = new ArrayList<Map<String, Object>>();
|
||||
|
||||
private List<Map<String, Object>> detailSetting = new ArrayList<Map<String, Object>>();
|
||||
|
||||
private List<Map<String, Object>> detailProduction = new ArrayList<Map<String, Object>>();
|
||||
|
||||
public Map<String, Object> getHeader() {
|
||||
return header;
|
||||
}
|
||||
|
||||
public void setHeader(Map<String, Object> header) {
|
||||
this.header = header;
|
||||
}
|
||||
|
||||
public Map<String, Object> getSummary() {
|
||||
return summary;
|
||||
}
|
||||
|
||||
public void setSummary(Map<String, Object> summary) {
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getFaultList() {
|
||||
return faultList;
|
||||
}
|
||||
|
||||
public void setFaultList(List<Map<String, Object>> faultList) {
|
||||
this.faultList = faultList;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getMaintenanceList() {
|
||||
return maintenanceList;
|
||||
}
|
||||
|
||||
public void setMaintenanceList(List<Map<String, Object>> maintenanceList) {
|
||||
this.maintenanceList = maintenanceList;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getMachineList() {
|
||||
return machineList;
|
||||
}
|
||||
|
||||
public void setMachineList(List<Map<String, Object>> machineList) {
|
||||
this.machineList = machineList;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getDetailRealtime() {
|
||||
return detailRealtime;
|
||||
}
|
||||
|
||||
public void setDetailRealtime(List<Map<String, Object>> detailRealtime) {
|
||||
this.detailRealtime = detailRealtime;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getDetailSetting() {
|
||||
return detailSetting;
|
||||
}
|
||||
|
||||
public void setDetailSetting(List<Map<String, Object>> detailSetting) {
|
||||
this.detailSetting = detailSetting;
|
||||
}
|
||||
|
||||
public List<Map<String, Object>> getDetailProduction() {
|
||||
return detailProduction;
|
||||
}
|
||||
|
||||
public void setDetailProduction(List<Map<String, Object>> detailProduction) {
|
||||
this.detailProduction = detailProduction;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
package com.ktg.mes.board.service;
|
||||
|
||||
import com.ktg.mes.board.domain.WorkshopBoardData;
|
||||
|
||||
public interface IWorkshopBoardService {
|
||||
WorkshopBoardData getBoardData(String screenCode);
|
||||
}
|
||||
@ -0,0 +1,152 @@
|
||||
package com.ktg.mes.board.service.impl;
|
||||
|
||||
import com.ktg.common.utils.StringUtils;
|
||||
import com.ktg.mes.board.domain.WorkshopBoardData;
|
||||
import com.ktg.mes.board.service.IWorkshopBoardService;
|
||||
import com.ktg.mes.md.domain.MdMeasurePoint;
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingConfigVo;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingMachineConfig;
|
||||
import com.ktg.mes.md.service.IMdMeasurePointService;
|
||||
import com.ktg.mes.md.service.IMdScreenBindingService;
|
||||
import com.ktg.mes.md.service.impl.ScreenBindingDefaults;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class WorkshopBoardServiceImpl implements IWorkshopBoardService {
|
||||
@Autowired
|
||||
private IMdScreenBindingService mdScreenBindingService;
|
||||
|
||||
@Autowired
|
||||
private IMdMeasurePointService mdMeasurePointService;
|
||||
|
||||
@Override
|
||||
public WorkshopBoardData getBoardData(String screenCode) {
|
||||
ScreenBindingConfigVo configVo = mdScreenBindingService.getScreenBindingConfig(screenCode);
|
||||
Map<String, MdMeasurePoint> pointMap = mdMeasurePointService.selectMdMeasurePointMapByPointCodes(collectPointCodes(configVo));
|
||||
return buildBoardData(configVo, pointMap);
|
||||
}
|
||||
|
||||
private Collection<String> collectPointCodes(ScreenBindingConfigVo configVo) {
|
||||
List<String> result = new ArrayList<String>();
|
||||
for (MdScreenBinding binding : configVo.getBasicBindings()) {
|
||||
collectPointCode(result, binding);
|
||||
}
|
||||
for (ScreenBindingMachineConfig machineConfig : configVo.getMachineConfigs()) {
|
||||
for (MdScreenBinding binding : machineConfig.getBindings()) {
|
||||
collectPointCode(result, binding);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void collectPointCode(List<String> result, MdScreenBinding binding) {
|
||||
if (binding == null || !ScreenBindingDefaults.SOURCE_POINT.equals(binding.getSourceType()) || StringUtils.isEmpty(binding.getPointCode())) {
|
||||
return;
|
||||
}
|
||||
if (!result.contains(binding.getPointCode())) {
|
||||
result.add(binding.getPointCode());
|
||||
}
|
||||
}
|
||||
|
||||
private WorkshopBoardData buildBoardData(ScreenBindingConfigVo configVo, Map<String, MdMeasurePoint> pointMap) {
|
||||
WorkshopBoardData fallback = ScreenBindingDefaults.createFallbackBoardData();
|
||||
applyBasicBindings(configVo.getBasicBindings(), fallback, pointMap);
|
||||
applyMachineBindings(configVo.getMachineConfigs(), fallback, pointMap);
|
||||
return fallback;
|
||||
}
|
||||
|
||||
private void applyBasicBindings(List<MdScreenBinding> bindings, WorkshopBoardData boardData, Map<String, MdMeasurePoint> pointMap) {
|
||||
for (MdScreenBinding binding : bindings) {
|
||||
String bindingKey = binding.getBindingKey();
|
||||
if (StringUtils.isEmpty(bindingKey) || bindingKey.indexOf(".") < 0) {
|
||||
continue;
|
||||
}
|
||||
String[] segments = bindingKey.split("\\.");
|
||||
if (segments.length != 2) {
|
||||
continue;
|
||||
}
|
||||
if ("header".equals(segments[0])) {
|
||||
boardData.getHeader().put(segments[1], resolveBindingValue(binding, pointMap));
|
||||
} else if ("summary".equals(segments[0])) {
|
||||
boardData.getSummary().put(segments[1], resolveBindingValue(binding, pointMap));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void applyMachineBindings(List<ScreenBindingMachineConfig> machineConfigs, WorkshopBoardData boardData, Map<String, MdMeasurePoint> pointMap) {
|
||||
Map<Long, ScreenBindingMachineConfig> machineMap = new LinkedHashMap<Long, ScreenBindingMachineConfig>();
|
||||
for (ScreenBindingMachineConfig machineConfig : machineConfigs) {
|
||||
machineMap.put(machineConfig.getId(), machineConfig);
|
||||
}
|
||||
List<Map<String, Object>> newMachineList = new ArrayList<Map<String, Object>>();
|
||||
for (Map<String, Object> machine : boardData.getMachineList()) {
|
||||
Long machineId = toLong(machine.get("id"));
|
||||
ScreenBindingMachineConfig machineConfig = machineMap.get(machineId);
|
||||
if (machineConfig == null) {
|
||||
newMachineList.add(machine);
|
||||
continue;
|
||||
}
|
||||
Map<String, Object> newMachine = new LinkedHashMap<String, Object>(machine);
|
||||
if (StringUtils.isNotEmpty(machineConfig.getStatusClass())) {
|
||||
newMachine.put("statusClass", machineConfig.getStatusClass());
|
||||
}
|
||||
for (MdScreenBinding binding : machineConfig.getBindings()) {
|
||||
newMachine.put(binding.getBindingKey(), resolveBindingValue(binding, pointMap));
|
||||
}
|
||||
newMachineList.add(newMachine);
|
||||
}
|
||||
boardData.setMachineList(newMachineList);
|
||||
}
|
||||
|
||||
private String resolveBindingValue(MdScreenBinding binding, Map<String, MdMeasurePoint> pointMap) {
|
||||
String value;
|
||||
if (ScreenBindingDefaults.SOURCE_POINT.equals(binding.getSourceType()) && StringUtils.isNotEmpty(binding.getPointCode())) {
|
||||
MdMeasurePoint point = pointMap.get(binding.getPointCode());
|
||||
value = point == null ? null : point.getLatestValue();
|
||||
} else {
|
||||
value = binding.getFixedValue();
|
||||
}
|
||||
if (StringUtils.isEmpty(value)) {
|
||||
value = binding.getDefaultValue();
|
||||
}
|
||||
if (StringUtils.isEmpty(value)) {
|
||||
return "--";
|
||||
}
|
||||
String formatted = formatNumber(value, binding.getPrecisionDigit());
|
||||
if (StringUtils.isEmpty(binding.getDisplayUnit()) || formatted.contains(binding.getDisplayUnit())) {
|
||||
return formatted;
|
||||
}
|
||||
return formatted + binding.getDisplayUnit();
|
||||
}
|
||||
|
||||
private String formatNumber(String value, Integer precisionDigit) {
|
||||
if (precisionDigit == null) {
|
||||
return value;
|
||||
}
|
||||
try {
|
||||
BigDecimal decimal = new BigDecimal(value);
|
||||
return decimal.setScale(precisionDigit, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
|
||||
} catch (Exception ex) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
private Long toLong(Object value) {
|
||||
if (value == null) {
|
||||
return 0L;
|
||||
}
|
||||
if (value instanceof Number) {
|
||||
return ((Number) value).longValue();
|
||||
}
|
||||
return Long.valueOf(String.valueOf(value));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user