测量点配置
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));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,100 @@
|
||||
package com.ktg.mes.md.controller;
|
||||
|
||||
import com.ktg.common.annotation.Log;
|
||||
import com.ktg.common.core.controller.BaseController;
|
||||
import com.ktg.common.core.domain.AjaxResult;
|
||||
import com.ktg.common.core.page.TableDataInfo;
|
||||
import com.ktg.common.enums.BusinessType;
|
||||
import com.ktg.common.utils.poi.ExcelUtil;
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingConfigVo;
|
||||
import com.ktg.mes.md.service.IMdScreenBindingService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/mes/md/screenbinding")
|
||||
public class MdScreenBindingController extends BaseController {
|
||||
@Autowired
|
||||
private IMdScreenBindingService mdScreenBindingService;
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(MdScreenBinding mdScreenBinding) {
|
||||
startPage();
|
||||
List<MdScreenBinding> list = mdScreenBindingService.selectMdScreenBindingList(mdScreenBinding);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:export')")
|
||||
@Log(title = "看板绑定", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, MdScreenBinding mdScreenBinding) {
|
||||
List<MdScreenBinding> list = mdScreenBindingService.selectMdScreenBindingList(mdScreenBinding);
|
||||
ExcelUtil<MdScreenBinding> util = new ExcelUtil<MdScreenBinding>(MdScreenBinding.class);
|
||||
util.exportExcel(response, list, "看板绑定数据");
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:query')")
|
||||
@GetMapping("/{bindingId}")
|
||||
public AjaxResult getInfo(@PathVariable("bindingId") Long bindingId) {
|
||||
return AjaxResult.success(mdScreenBindingService.selectMdScreenBindingByBindingId(bindingId));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:query')")
|
||||
@GetMapping("/config")
|
||||
public AjaxResult getConfig(@RequestParam(value = "screenCode", required = false) String screenCode) {
|
||||
return AjaxResult.success(mdScreenBindingService.getScreenBindingConfig(screenCode));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:add')")
|
||||
@Log(title = "看板绑定", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody MdScreenBinding mdScreenBinding) {
|
||||
mdScreenBinding.setCreateBy(getUsername());
|
||||
return toAjax(mdScreenBindingService.insertMdScreenBinding(mdScreenBinding));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:edit')")
|
||||
@Log(title = "看板绑定", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody MdScreenBinding mdScreenBinding) {
|
||||
mdScreenBinding.setUpdateBy(getUsername());
|
||||
return toAjax(mdScreenBindingService.updateMdScreenBinding(mdScreenBinding));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:edit')")
|
||||
@Log(title = "看板绑定配置", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/config")
|
||||
public AjaxResult saveConfig(@RequestBody ScreenBindingConfigVo configVo) {
|
||||
mdScreenBindingService.saveScreenBindingConfig(configVo, getUsername());
|
||||
return AjaxResult.success("保存成功", mdScreenBindingService.getScreenBindingConfig(configVo.getScreenCode()));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:remove')")
|
||||
@Log(title = "看板绑定", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{bindingIds}")
|
||||
public AjaxResult remove(@PathVariable Long[] bindingIds) {
|
||||
return toAjax(mdScreenBindingService.deleteMdScreenBindingByBindingIds(bindingIds));
|
||||
}
|
||||
|
||||
@PreAuthorize("@ss.hasPermi('mes:md:screenbinding:remove')")
|
||||
@Log(title = "看板绑定配置", businessType = BusinessType.CLEAN)
|
||||
@DeleteMapping("/config")
|
||||
public AjaxResult resetConfig(@RequestParam(value = "screenCode", required = false) String screenCode) {
|
||||
mdScreenBindingService.resetScreenBindingConfig(screenCode);
|
||||
return AjaxResult.success("已恢复默认配置", mdScreenBindingService.getScreenBindingConfig(screenCode));
|
||||
}
|
||||
}
|
||||
258
ktg-mes/src/main/java/com/ktg/mes/md/domain/MdScreenBinding.java
Normal file
258
ktg-mes/src/main/java/com/ktg/mes/md/domain/MdScreenBinding.java
Normal file
@ -0,0 +1,258 @@
|
||||
package com.ktg.mes.md.domain;
|
||||
|
||||
import com.ktg.common.annotation.Excel;
|
||||
import com.ktg.common.core.domain.BaseEntity;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
|
||||
public class MdScreenBinding extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long bindingId;
|
||||
|
||||
@Excel(name = "看板编码")
|
||||
private String screenCode;
|
||||
|
||||
private Long workshopId;
|
||||
|
||||
@Excel(name = "车间编码")
|
||||
private String workshopCode;
|
||||
|
||||
@Excel(name = "车间名称")
|
||||
private String workshopName;
|
||||
|
||||
@Excel(name = "绑定范围")
|
||||
private String bindingScope;
|
||||
|
||||
@Excel(name = "设备卡片ID")
|
||||
private Long machineId;
|
||||
|
||||
@Excel(name = "绑定键")
|
||||
private String bindingKey;
|
||||
|
||||
@Excel(name = "绑定名称")
|
||||
private String bindingName;
|
||||
|
||||
@Excel(name = "来源类型")
|
||||
private String sourceType;
|
||||
|
||||
private Long pointId;
|
||||
|
||||
@Excel(name = "测量点编码")
|
||||
private String pointCode;
|
||||
|
||||
@Excel(name = "测量点名称")
|
||||
private String pointName;
|
||||
|
||||
@Excel(name = "固定值")
|
||||
private String fixedValue;
|
||||
|
||||
@Excel(name = "默认值")
|
||||
private String defaultValue;
|
||||
|
||||
@Excel(name = "展示单位")
|
||||
private String displayUnit;
|
||||
|
||||
@Excel(name = "保留位数")
|
||||
private Integer precisionDigit;
|
||||
|
||||
@Excel(name = "状态样式")
|
||||
private String statusClass;
|
||||
|
||||
@Excel(name = "排序号")
|
||||
private Integer sortNum;
|
||||
|
||||
@Excel(name = "启用状态")
|
||||
private String enableFlag;
|
||||
|
||||
public Long getBindingId() {
|
||||
return bindingId;
|
||||
}
|
||||
|
||||
public void setBindingId(Long bindingId) {
|
||||
this.bindingId = bindingId;
|
||||
}
|
||||
|
||||
public String getScreenCode() {
|
||||
return screenCode;
|
||||
}
|
||||
|
||||
public void setScreenCode(String screenCode) {
|
||||
this.screenCode = screenCode;
|
||||
}
|
||||
|
||||
public Long getWorkshopId() {
|
||||
return workshopId;
|
||||
}
|
||||
|
||||
public void setWorkshopId(Long workshopId) {
|
||||
this.workshopId = workshopId;
|
||||
}
|
||||
|
||||
public String getWorkshopCode() {
|
||||
return workshopCode;
|
||||
}
|
||||
|
||||
public void setWorkshopCode(String workshopCode) {
|
||||
this.workshopCode = workshopCode;
|
||||
}
|
||||
|
||||
public String getWorkshopName() {
|
||||
return workshopName;
|
||||
}
|
||||
|
||||
public void setWorkshopName(String workshopName) {
|
||||
this.workshopName = workshopName;
|
||||
}
|
||||
|
||||
public String getBindingScope() {
|
||||
return bindingScope;
|
||||
}
|
||||
|
||||
public void setBindingScope(String bindingScope) {
|
||||
this.bindingScope = bindingScope;
|
||||
}
|
||||
|
||||
public Long getMachineId() {
|
||||
return machineId;
|
||||
}
|
||||
|
||||
public void setMachineId(Long machineId) {
|
||||
this.machineId = machineId;
|
||||
}
|
||||
|
||||
public String getBindingKey() {
|
||||
return bindingKey;
|
||||
}
|
||||
|
||||
public void setBindingKey(String bindingKey) {
|
||||
this.bindingKey = bindingKey;
|
||||
}
|
||||
|
||||
public String getBindingName() {
|
||||
return bindingName;
|
||||
}
|
||||
|
||||
public void setBindingName(String bindingName) {
|
||||
this.bindingName = bindingName;
|
||||
}
|
||||
|
||||
public String getSourceType() {
|
||||
return sourceType;
|
||||
}
|
||||
|
||||
public void setSourceType(String sourceType) {
|
||||
this.sourceType = sourceType;
|
||||
}
|
||||
|
||||
public Long getPointId() {
|
||||
return pointId;
|
||||
}
|
||||
|
||||
public void setPointId(Long pointId) {
|
||||
this.pointId = pointId;
|
||||
}
|
||||
|
||||
public String getPointCode() {
|
||||
return pointCode;
|
||||
}
|
||||
|
||||
public void setPointCode(String pointCode) {
|
||||
this.pointCode = pointCode;
|
||||
}
|
||||
|
||||
public String getPointName() {
|
||||
return pointName;
|
||||
}
|
||||
|
||||
public void setPointName(String pointName) {
|
||||
this.pointName = pointName;
|
||||
}
|
||||
|
||||
public String getFixedValue() {
|
||||
return fixedValue;
|
||||
}
|
||||
|
||||
public void setFixedValue(String fixedValue) {
|
||||
this.fixedValue = fixedValue;
|
||||
}
|
||||
|
||||
public String getDefaultValue() {
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public void setDefaultValue(String defaultValue) {
|
||||
this.defaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public String getDisplayUnit() {
|
||||
return displayUnit;
|
||||
}
|
||||
|
||||
public void setDisplayUnit(String displayUnit) {
|
||||
this.displayUnit = displayUnit;
|
||||
}
|
||||
|
||||
public Integer getPrecisionDigit() {
|
||||
return precisionDigit;
|
||||
}
|
||||
|
||||
public void setPrecisionDigit(Integer precisionDigit) {
|
||||
this.precisionDigit = precisionDigit;
|
||||
}
|
||||
|
||||
public String getStatusClass() {
|
||||
return statusClass;
|
||||
}
|
||||
|
||||
public void setStatusClass(String statusClass) {
|
||||
this.statusClass = statusClass;
|
||||
}
|
||||
|
||||
public Integer getSortNum() {
|
||||
return sortNum;
|
||||
}
|
||||
|
||||
public void setSortNum(Integer sortNum) {
|
||||
this.sortNum = sortNum;
|
||||
}
|
||||
|
||||
public String getEnableFlag() {
|
||||
return enableFlag;
|
||||
}
|
||||
|
||||
public void setEnableFlag(String enableFlag) {
|
||||
this.enableFlag = enableFlag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("bindingId", getBindingId())
|
||||
.append("screenCode", getScreenCode())
|
||||
.append("workshopId", getWorkshopId())
|
||||
.append("workshopCode", getWorkshopCode())
|
||||
.append("workshopName", getWorkshopName())
|
||||
.append("bindingScope", getBindingScope())
|
||||
.append("machineId", getMachineId())
|
||||
.append("bindingKey", getBindingKey())
|
||||
.append("bindingName", getBindingName())
|
||||
.append("sourceType", getSourceType())
|
||||
.append("pointId", getPointId())
|
||||
.append("pointCode", getPointCode())
|
||||
.append("pointName", getPointName())
|
||||
.append("fixedValue", getFixedValue())
|
||||
.append("defaultValue", getDefaultValue())
|
||||
.append("displayUnit", getDisplayUnit())
|
||||
.append("precisionDigit", getPrecisionDigit())
|
||||
.append("statusClass", getStatusClass())
|
||||
.append("sortNum", getSortNum())
|
||||
.append("enableFlag", getEnableFlag())
|
||||
.append("remark", getRemark())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
.append("updateTime", getUpdateTime())
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
package com.ktg.mes.md.domain.vo;
|
||||
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ScreenBindingConfigVo {
|
||||
private String screenCode;
|
||||
|
||||
private Long workshopId;
|
||||
|
||||
private String workshopCode;
|
||||
|
||||
private String workshopName;
|
||||
|
||||
private String updatedAt;
|
||||
|
||||
private List<MdScreenBinding> basicBindings = new ArrayList<MdScreenBinding>();
|
||||
|
||||
private List<ScreenBindingMachineConfig> machineConfigs = new ArrayList<ScreenBindingMachineConfig>();
|
||||
|
||||
public String getScreenCode() {
|
||||
return screenCode;
|
||||
}
|
||||
|
||||
public void setScreenCode(String screenCode) {
|
||||
this.screenCode = screenCode;
|
||||
}
|
||||
|
||||
public Long getWorkshopId() {
|
||||
return workshopId;
|
||||
}
|
||||
|
||||
public void setWorkshopId(Long workshopId) {
|
||||
this.workshopId = workshopId;
|
||||
}
|
||||
|
||||
public String getWorkshopCode() {
|
||||
return workshopCode;
|
||||
}
|
||||
|
||||
public void setWorkshopCode(String workshopCode) {
|
||||
this.workshopCode = workshopCode;
|
||||
}
|
||||
|
||||
public String getWorkshopName() {
|
||||
return workshopName;
|
||||
}
|
||||
|
||||
public void setWorkshopName(String workshopName) {
|
||||
this.workshopName = workshopName;
|
||||
}
|
||||
|
||||
public String getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(String updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
public List<MdScreenBinding> getBasicBindings() {
|
||||
return basicBindings;
|
||||
}
|
||||
|
||||
public void setBasicBindings(List<MdScreenBinding> basicBindings) {
|
||||
this.basicBindings = basicBindings;
|
||||
}
|
||||
|
||||
public List<ScreenBindingMachineConfig> getMachineConfigs() {
|
||||
return machineConfigs;
|
||||
}
|
||||
|
||||
public void setMachineConfigs(List<ScreenBindingMachineConfig> machineConfigs) {
|
||||
this.machineConfigs = machineConfigs;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,38 @@
|
||||
package com.ktg.mes.md.domain.vo;
|
||||
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ScreenBindingMachineConfig {
|
||||
private Long id;
|
||||
|
||||
private String statusClass;
|
||||
|
||||
private List<MdScreenBinding> bindings = new ArrayList<MdScreenBinding>();
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getStatusClass() {
|
||||
return statusClass;
|
||||
}
|
||||
|
||||
public void setStatusClass(String statusClass) {
|
||||
this.statusClass = statusClass;
|
||||
}
|
||||
|
||||
public List<MdScreenBinding> getBindings() {
|
||||
return bindings;
|
||||
}
|
||||
|
||||
public void setBindings(List<MdScreenBinding> bindings) {
|
||||
this.bindings = bindings;
|
||||
}
|
||||
}
|
||||
@ -15,6 +15,8 @@ public interface MdMeasurePointMapper {
|
||||
|
||||
MdMeasurePoint checkPointNameUnique(MdMeasurePoint mdMeasurePoint);
|
||||
|
||||
List<MdMeasurePoint> selectMdMeasurePointByPointCodes(String[] pointCodes);
|
||||
|
||||
int insertMdMeasurePoint(MdMeasurePoint mdMeasurePoint);
|
||||
|
||||
int updateMdMeasurePoint(MdMeasurePoint mdMeasurePoint);
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
package com.ktg.mes.md.mapper;
|
||||
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MdScreenBindingMapper {
|
||||
MdScreenBinding selectMdScreenBindingByBindingId(Long bindingId);
|
||||
|
||||
List<MdScreenBinding> selectMdScreenBindingList(MdScreenBinding mdScreenBinding);
|
||||
|
||||
List<MdScreenBinding> selectMdScreenBindingByScreenCode(String screenCode);
|
||||
|
||||
int insertMdScreenBinding(MdScreenBinding mdScreenBinding);
|
||||
|
||||
int batchInsertMdScreenBinding(List<MdScreenBinding> list);
|
||||
|
||||
int updateMdScreenBinding(MdScreenBinding mdScreenBinding);
|
||||
|
||||
int deleteMdScreenBindingByBindingId(Long bindingId);
|
||||
|
||||
int deleteMdScreenBindingByBindingIds(Long[] bindingIds);
|
||||
|
||||
int deleteMdScreenBindingByScreenCode(String screenCode);
|
||||
}
|
||||
@ -3,7 +3,9 @@ package com.ktg.mes.md.service;
|
||||
import com.ktg.mes.md.domain.MdMeasurePoint;
|
||||
import com.ktg.mes.md.domain.MeasurePointHistoryItem;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IMdMeasurePointService {
|
||||
MdMeasurePoint selectMdMeasurePointByPointId(Long pointId);
|
||||
@ -27,4 +29,6 @@ public interface IMdMeasurePointService {
|
||||
MdMeasurePoint queryLatestValue(String pointCode);
|
||||
|
||||
List<MeasurePointHistoryItem> queryHistory(String pointCode, String range, String interval, String startTime, String endTime);
|
||||
|
||||
Map<String, MdMeasurePoint> selectMdMeasurePointMapByPointCodes(Collection<String> pointCodes);
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
package com.ktg.mes.md.service;
|
||||
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingConfigVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IMdScreenBindingService {
|
||||
MdScreenBinding selectMdScreenBindingByBindingId(Long bindingId);
|
||||
|
||||
List<MdScreenBinding> selectMdScreenBindingList(MdScreenBinding mdScreenBinding);
|
||||
|
||||
List<MdScreenBinding> selectMdScreenBindingByScreenCode(String screenCode);
|
||||
|
||||
int insertMdScreenBinding(MdScreenBinding mdScreenBinding);
|
||||
|
||||
int updateMdScreenBinding(MdScreenBinding mdScreenBinding);
|
||||
|
||||
int deleteMdScreenBindingByBindingIds(Long[] bindingIds);
|
||||
|
||||
int deleteMdScreenBindingByBindingId(Long bindingId);
|
||||
|
||||
ScreenBindingConfigVo getScreenBindingConfig(String screenCode);
|
||||
|
||||
int saveScreenBindingConfig(ScreenBindingConfigVo configVo, String operName);
|
||||
|
||||
int resetScreenBindingConfig(String screenCode);
|
||||
}
|
||||
@ -12,7 +12,10 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class MdMeasurePointServiceImpl implements IMdMeasurePointService {
|
||||
@ -104,6 +107,20 @@ public class MdMeasurePointServiceImpl implements IMdMeasurePointService {
|
||||
return mdMeasurePointInfluxService.queryHistory(point, range, interval, startTime, endTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, MdMeasurePoint> selectMdMeasurePointMapByPointCodes(Collection<String> pointCodes) {
|
||||
Map<String, MdMeasurePoint> result = new LinkedHashMap<String, MdMeasurePoint>();
|
||||
if (pointCodes == null || pointCodes.isEmpty()) {
|
||||
return result;
|
||||
}
|
||||
List<MdMeasurePoint> list = mdMeasurePointMapper.selectMdMeasurePointByPointCodes(pointCodes.toArray(new String[0]));
|
||||
for (MdMeasurePoint point : list) {
|
||||
mdMeasurePointInfluxService.fillLatestValue(point);
|
||||
result.put(point.getPointCode(), point);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void fillWorkshopInfo(MdMeasurePoint mdMeasurePoint) {
|
||||
if (mdMeasurePoint.getWorkshopId() == null) {
|
||||
mdMeasurePoint.setWorkshopCode(null);
|
||||
|
||||
@ -0,0 +1,245 @@
|
||||
package com.ktg.mes.md.service.impl;
|
||||
|
||||
import com.ktg.common.utils.DateUtils;
|
||||
import com.ktg.common.utils.StringUtils;
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
import com.ktg.mes.md.domain.MdWorkshop;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingConfigVo;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingMachineConfig;
|
||||
import com.ktg.mes.md.mapper.MdScreenBindingMapper;
|
||||
import com.ktg.mes.md.service.IMdScreenBindingService;
|
||||
import com.ktg.mes.md.service.IMdWorkshopService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class MdScreenBindingServiceImpl implements IMdScreenBindingService {
|
||||
@Autowired
|
||||
private MdScreenBindingMapper mdScreenBindingMapper;
|
||||
|
||||
@Autowired
|
||||
private IMdWorkshopService mdWorkshopService;
|
||||
|
||||
@Override
|
||||
public MdScreenBinding selectMdScreenBindingByBindingId(Long bindingId) {
|
||||
return mdScreenBindingMapper.selectMdScreenBindingByBindingId(bindingId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MdScreenBinding> selectMdScreenBindingList(MdScreenBinding mdScreenBinding) {
|
||||
return mdScreenBindingMapper.selectMdScreenBindingList(mdScreenBinding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MdScreenBinding> selectMdScreenBindingByScreenCode(String screenCode) {
|
||||
return mdScreenBindingMapper.selectMdScreenBindingByScreenCode(screenCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertMdScreenBinding(MdScreenBinding mdScreenBinding) {
|
||||
fillWorkshopInfo(mdScreenBinding);
|
||||
normalizeBinding(mdScreenBinding);
|
||||
mdScreenBinding.setCreateTime(DateUtils.getNowDate());
|
||||
return mdScreenBindingMapper.insertMdScreenBinding(mdScreenBinding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updateMdScreenBinding(MdScreenBinding mdScreenBinding) {
|
||||
fillWorkshopInfo(mdScreenBinding);
|
||||
normalizeBinding(mdScreenBinding);
|
||||
mdScreenBinding.setUpdateTime(DateUtils.getNowDate());
|
||||
return mdScreenBindingMapper.updateMdScreenBinding(mdScreenBinding);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteMdScreenBindingByBindingIds(Long[] bindingIds) {
|
||||
return mdScreenBindingMapper.deleteMdScreenBindingByBindingIds(bindingIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteMdScreenBindingByBindingId(Long bindingId) {
|
||||
return mdScreenBindingMapper.deleteMdScreenBindingByBindingId(bindingId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ScreenBindingConfigVo getScreenBindingConfig(String screenCode) {
|
||||
String actualScreenCode = StringUtils.isEmpty(screenCode) ? ScreenBindingDefaults.DEFAULT_SCREEN_CODE : screenCode.trim();
|
||||
List<MdScreenBinding> list = mdScreenBindingMapper.selectMdScreenBindingByScreenCode(actualScreenCode);
|
||||
if (list == null || list.isEmpty()) {
|
||||
return ScreenBindingDefaults.createDefaultConfig(actualScreenCode);
|
||||
}
|
||||
return buildConfigVo(actualScreenCode, list);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int saveScreenBindingConfig(ScreenBindingConfigVo configVo, String operName) {
|
||||
String actualScreenCode = StringUtils.isEmpty(configVo.getScreenCode()) ? ScreenBindingDefaults.DEFAULT_SCREEN_CODE : configVo.getScreenCode().trim();
|
||||
List<MdScreenBinding> rows = flattenConfig(actualScreenCode, configVo, operName);
|
||||
mdScreenBindingMapper.deleteMdScreenBindingByScreenCode(actualScreenCode);
|
||||
if (rows.isEmpty()) {
|
||||
return 1;
|
||||
}
|
||||
return mdScreenBindingMapper.batchInsertMdScreenBinding(rows);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int resetScreenBindingConfig(String screenCode) {
|
||||
String actualScreenCode = StringUtils.isEmpty(screenCode) ? ScreenBindingDefaults.DEFAULT_SCREEN_CODE : screenCode.trim();
|
||||
return mdScreenBindingMapper.deleteMdScreenBindingByScreenCode(actualScreenCode);
|
||||
}
|
||||
|
||||
private List<MdScreenBinding> flattenConfig(String screenCode, ScreenBindingConfigVo configVo, String operName) {
|
||||
List<MdScreenBinding> rows = new ArrayList<MdScreenBinding>();
|
||||
List<MdScreenBinding> basicBindings = configVo.getBasicBindings() == null ? new ArrayList<MdScreenBinding>() : configVo.getBasicBindings();
|
||||
for (MdScreenBinding binding : basicBindings) {
|
||||
MdScreenBinding normalized = copyBinding(binding);
|
||||
normalized.setScreenCode(screenCode);
|
||||
normalized.setBindingScope(ScreenBindingDefaults.SCOPE_BASIC);
|
||||
normalized.setMachineId(0L);
|
||||
normalized.setCreateBy(operName);
|
||||
normalized.setCreateTime(DateUtils.getNowDate());
|
||||
fillWorkshopInfo(normalized, configVo);
|
||||
normalizeBinding(normalized);
|
||||
rows.add(normalized);
|
||||
}
|
||||
List<ScreenBindingMachineConfig> machineConfigs = configVo.getMachineConfigs() == null ? new ArrayList<ScreenBindingMachineConfig>() : configVo.getMachineConfigs();
|
||||
for (ScreenBindingMachineConfig machineConfig : machineConfigs) {
|
||||
List<MdScreenBinding> bindings = machineConfig.getBindings() == null ? new ArrayList<MdScreenBinding>() : machineConfig.getBindings();
|
||||
for (MdScreenBinding binding : bindings) {
|
||||
MdScreenBinding normalized = copyBinding(binding);
|
||||
normalized.setScreenCode(screenCode);
|
||||
normalized.setBindingScope(ScreenBindingDefaults.SCOPE_MACHINE);
|
||||
normalized.setMachineId(machineConfig.getId() == null ? 0L : machineConfig.getId());
|
||||
normalized.setStatusClass(StringUtils.isEmpty(machineConfig.getStatusClass()) ? binding.getStatusClass() : machineConfig.getStatusClass());
|
||||
normalized.setCreateBy(operName);
|
||||
normalized.setCreateTime(DateUtils.getNowDate());
|
||||
fillWorkshopInfo(normalized, configVo);
|
||||
normalizeBinding(normalized);
|
||||
rows.add(normalized);
|
||||
}
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
private ScreenBindingConfigVo buildConfigVo(String screenCode, List<MdScreenBinding> list) {
|
||||
ScreenBindingConfigVo configVo = new ScreenBindingConfigVo();
|
||||
configVo.setScreenCode(screenCode);
|
||||
if (!list.isEmpty()) {
|
||||
MdScreenBinding first = list.get(0);
|
||||
configVo.setWorkshopId(first.getWorkshopId());
|
||||
configVo.setWorkshopCode(first.getWorkshopCode());
|
||||
configVo.setWorkshopName(first.getWorkshopName());
|
||||
configVo.setUpdatedAt(first.getUpdateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", first.getUpdateTime())
|
||||
: first.getCreateTime() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", first.getCreateTime()) : null);
|
||||
}
|
||||
Map<Long, ScreenBindingMachineConfig> machineMap = new LinkedHashMap<Long, ScreenBindingMachineConfig>();
|
||||
for (MdScreenBinding binding : list) {
|
||||
if (ScreenBindingDefaults.SCOPE_BASIC.equals(binding.getBindingScope())) {
|
||||
configVo.getBasicBindings().add(copyBinding(binding));
|
||||
continue;
|
||||
}
|
||||
Long machineId = binding.getMachineId() == null ? 0L : binding.getMachineId();
|
||||
ScreenBindingMachineConfig machineConfig = machineMap.get(machineId);
|
||||
if (machineConfig == null) {
|
||||
machineConfig = new ScreenBindingMachineConfig();
|
||||
machineConfig.setId(machineId);
|
||||
machineConfig.setStatusClass(binding.getStatusClass());
|
||||
machineMap.put(machineId, machineConfig);
|
||||
}
|
||||
machineConfig.getBindings().add(copyBinding(binding));
|
||||
}
|
||||
configVo.setMachineConfigs(new ArrayList<ScreenBindingMachineConfig>(machineMap.values()));
|
||||
return configVo;
|
||||
}
|
||||
|
||||
private void fillWorkshopInfo(MdScreenBinding binding) {
|
||||
if (binding.getWorkshopId() == null) {
|
||||
binding.setWorkshopCode(null);
|
||||
binding.setWorkshopName(null);
|
||||
return;
|
||||
}
|
||||
MdWorkshop workshop = mdWorkshopService.selectMdWorkshopByWorkshopId(binding.getWorkshopId());
|
||||
if (workshop != null) {
|
||||
binding.setWorkshopCode(workshop.getWorkshopCode());
|
||||
binding.setWorkshopName(workshop.getWorkshopName());
|
||||
}
|
||||
}
|
||||
|
||||
private void fillWorkshopInfo(MdScreenBinding binding, ScreenBindingConfigVo configVo) {
|
||||
if (binding.getWorkshopId() == null && configVo.getWorkshopId() != null) {
|
||||
binding.setWorkshopId(configVo.getWorkshopId());
|
||||
}
|
||||
fillWorkshopInfo(binding);
|
||||
if (binding.getWorkshopId() == null) {
|
||||
binding.setWorkshopCode(configVo.getWorkshopCode());
|
||||
binding.setWorkshopName(configVo.getWorkshopName());
|
||||
}
|
||||
}
|
||||
|
||||
private void normalizeBinding(MdScreenBinding binding) {
|
||||
if (StringUtils.isEmpty(binding.getScreenCode())) {
|
||||
binding.setScreenCode(ScreenBindingDefaults.DEFAULT_SCREEN_CODE);
|
||||
}
|
||||
if (StringUtils.isEmpty(binding.getBindingScope())) {
|
||||
binding.setBindingScope(ScreenBindingDefaults.SCOPE_BASIC);
|
||||
}
|
||||
if (binding.getMachineId() == null) {
|
||||
binding.setMachineId(0L);
|
||||
}
|
||||
if (StringUtils.isEmpty(binding.getSourceType())) {
|
||||
binding.setSourceType(ScreenBindingDefaults.SOURCE_FIXED);
|
||||
}
|
||||
if (binding.getSortNum() == null) {
|
||||
binding.setSortNum(1);
|
||||
}
|
||||
if (StringUtils.isEmpty(binding.getEnableFlag())) {
|
||||
binding.setEnableFlag("Y");
|
||||
}
|
||||
if (StringUtils.isEmpty(binding.getStatusClass())) {
|
||||
binding.setStatusClass("is-running");
|
||||
}
|
||||
if (ScreenBindingDefaults.SOURCE_FIXED.equals(binding.getSourceType())) {
|
||||
binding.setPointId(null);
|
||||
binding.setPointCode(null);
|
||||
binding.setPointName(null);
|
||||
}
|
||||
}
|
||||
|
||||
private MdScreenBinding copyBinding(MdScreenBinding source) {
|
||||
MdScreenBinding target = new MdScreenBinding();
|
||||
target.setBindingId(source.getBindingId());
|
||||
target.setScreenCode(source.getScreenCode());
|
||||
target.setWorkshopId(source.getWorkshopId());
|
||||
target.setWorkshopCode(source.getWorkshopCode());
|
||||
target.setWorkshopName(source.getWorkshopName());
|
||||
target.setBindingScope(source.getBindingScope());
|
||||
target.setMachineId(source.getMachineId());
|
||||
target.setBindingKey(source.getBindingKey());
|
||||
target.setBindingName(source.getBindingName());
|
||||
target.setSourceType(source.getSourceType());
|
||||
target.setPointId(source.getPointId());
|
||||
target.setPointCode(source.getPointCode());
|
||||
target.setPointName(source.getPointName());
|
||||
target.setFixedValue(source.getFixedValue());
|
||||
target.setDefaultValue(source.getDefaultValue());
|
||||
target.setDisplayUnit(source.getDisplayUnit());
|
||||
target.setPrecisionDigit(source.getPrecisionDigit());
|
||||
target.setStatusClass(source.getStatusClass());
|
||||
target.setSortNum(source.getSortNum());
|
||||
target.setEnableFlag(source.getEnableFlag());
|
||||
target.setRemark(source.getRemark());
|
||||
target.setCreateBy(source.getCreateBy());
|
||||
target.setCreateTime(source.getCreateTime());
|
||||
target.setUpdateBy(source.getUpdateBy());
|
||||
target.setUpdateTime(source.getUpdateTime());
|
||||
return target;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,167 @@
|
||||
package com.ktg.mes.md.service.impl;
|
||||
|
||||
import com.ktg.common.utils.DateUtils;
|
||||
import com.ktg.mes.board.domain.WorkshopBoardData;
|
||||
import com.ktg.mes.md.domain.MdScreenBinding;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingConfigVo;
|
||||
import com.ktg.mes.md.domain.vo.ScreenBindingMachineConfig;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public final class ScreenBindingDefaults {
|
||||
public static final String DEFAULT_SCREEN_CODE = "WORKSHOP_BOARD_DEFAULT";
|
||||
public static final String SCOPE_BASIC = "BASIC";
|
||||
public static final String SCOPE_MACHINE = "MACHINE";
|
||||
public static final String SOURCE_FIXED = "FIXED";
|
||||
public static final String SOURCE_POINT = "POINT";
|
||||
|
||||
private ScreenBindingDefaults() {
|
||||
}
|
||||
|
||||
public static ScreenBindingConfigVo createDefaultConfig(String screenCode) {
|
||||
WorkshopBoardData boardData = createFallbackBoardData();
|
||||
String actualScreenCode = screenCode == null || screenCode.trim().isEmpty() ? DEFAULT_SCREEN_CODE : screenCode.trim();
|
||||
ScreenBindingConfigVo configVo = new ScreenBindingConfigVo();
|
||||
configVo.setScreenCode(actualScreenCode);
|
||||
configVo.setUpdatedAt(DateUtils.getTime());
|
||||
configVo.setBasicBindings(createDefaultBasicBindings(boardData, actualScreenCode));
|
||||
configVo.setMachineConfigs(createDefaultMachineConfigs(boardData, actualScreenCode));
|
||||
return configVo;
|
||||
}
|
||||
|
||||
public static WorkshopBoardData createFallbackBoardData() {
|
||||
WorkshopBoardData data = new WorkshopBoardData();
|
||||
data.getHeader().put("screenCode", "HY-CJKB-001");
|
||||
data.getHeader().put("ownerName", "张主管");
|
||||
|
||||
data.getSummary().put("total", "17");
|
||||
data.getSummary().put("online", "15");
|
||||
data.getSummary().put("running", "15");
|
||||
data.getSummary().put("stop", "2");
|
||||
data.getSummary().put("startRate", "88.2%");
|
||||
|
||||
data.getFaultList().add(row("deviceNo", "8#", "faultTime", "09:25", "faultDesc", "模温异常", "owner", "李工", "recoverTime", "10:10"));
|
||||
data.getFaultList().add(row("deviceNo", "16#", "faultTime", "11:40", "faultDesc", "液压压力波动", "owner", "王工", "recoverTime", "13:00"));
|
||||
data.getFaultList().add(row("deviceNo", "5#", "faultTime", "13:18", "faultDesc", "送料传感器告警", "owner", "赵工", "recoverTime", "13:45"));
|
||||
|
||||
data.getMaintenanceList().add(row("deviceNo", "2#", "project", "保养润滑系统", "planTime", "2026-03-23 16:00", "status", "待执行"));
|
||||
data.getMaintenanceList().add(row("deviceNo", "11#", "project", "校验温控模块", "planTime", "2026-03-23 18:00", "status", "待执行"));
|
||||
data.getMaintenanceList().add(row("deviceNo", "14#", "project", "更换过滤组件", "planTime", "2026-03-24 09:00", "status", "已排期"));
|
||||
|
||||
data.getMachineList().add(machineRow(6L, "6#", "MA2500/1000G", "运行", "is-running", "自动", "13小时", "600个", "2026.3.16-3.18", "25110914", "5000个", "30%", "23W 中间盖", "7037C 灰", "重点订单"));
|
||||
data.getMachineList().add(machineRow(12L, "12#", "MA1600/540G", "运行", "is-running", "自动", "8小时", "305个", "2026.3.23-3.25", "25110953", "2800个", "27%", "中盖件", "灰色", "正常生产"));
|
||||
data.getMachineList().add(machineRow(5L, "5#", "MA2500 2S/1000", "运行", "is-running", "自动", "6小时", "210个", "2026.3.22-3.24", "25110937", "3600个", "19%", "卡扣件", "7035 灰", "待维修"));
|
||||
data.getMachineList().add(machineRow(11L, "11#", "MA3600/2250G", "运行", "is-running", "自动", "15小时", "720个", "2026.3.23-3.25", "25110950", "6500个", "33%", "大型壳体", "深蓝", "计划保养"));
|
||||
data.getMachineList().add(machineRow(17L, "17#", "MA1600/540G", "运行", "is-running", "自动", "12小时", "510个", "2026.3.23-3.25", "25110961", "3600个", "53%", "面框件", "冷白", "正常生产"));
|
||||
data.getMachineList().add(machineRow(4L, "4#", "MA2500/1000G", "运行", "is-running", "自动", "10小时", "488个", "2026.3.21-3.22", "25110931", "4500个", "61%", "28W 外壳", "米白", "正常生产"));
|
||||
data.getMachineList().add(machineRow(10L, "10#", "MA2500/1000G", "运行", "is-running", "自动", "13小时", "610个", "2026.3.23-3.24", "25110946", "5100个", "44%", "挡板件", "黑色", "正常生产"));
|
||||
data.getMachineList().add(machineRow(16L, "16#", "570", "运行", "is-running", "自动", "5小时", "190个", "2026.3.23-3.25", "25110959", "2400个", "18%", "小型卡件", "浅灰", "液压检修"));
|
||||
data.getMachineList().add(machineRow(3L, "3#", "MA2500/1000G", "运行", "is-running", "自动", "8小时", "360个", "2026.3.20-3.22", "25110925", "3000个", "58%", "17W 支架", "银色", "等待换模"));
|
||||
data.getMachineList().add(machineRow(9L, "9#", "MA2500/1000G", "运行", "is-running", "自动", "14小时", "680个", "2026.3.23-3.24", "25110945", "5400个", "52%", "导流板", "银灰", "正常生产"));
|
||||
data.getMachineList().add(machineRow(15L, "15#", "MA1600/540G", "运行", "is-running", "自动", "11小时", "460个", "2026.3.23-3.25", "25110957", "3500个", "41%", "转接件", "深灰", "正常生产"));
|
||||
data.getMachineList().add(machineRow(2L, "2#", "MA2500/1000G", "运行", "is-running", "自动", "11小时", "520个", "2026.3.18-3.20", "25110918", "4200个", "42%", "26W 面板", "黑色", "夜班优先"));
|
||||
data.getMachineList().add(machineRow(8L, "8#", "MA2500/1000G", "运行", "is-running", "自动", "9小时", "430个", "2026.3.22-3.24", "25110941", "4600个", "36%", "封边件", "白色", "温控波动"));
|
||||
data.getMachineList().add(machineRow(14L, "14#", "MA1600/540G", "运行", "is-running", "自动", "10小时", "395个", "2026.3.23-3.25", "25110955", "3200个", "38%", "扣合件", "亮黑", "正常生产"));
|
||||
data.getMachineList().add(machineRow(1L, "1#", "MA2500/1000G", "运行", "is-running", "自动", "13小时", "600个", "2026.3.16-3.18", "25110914", "5000个", "30%", "23W 中间盖", "7037C 灰", "重点订单"));
|
||||
data.getMachineList().add(machineRow(7L, "7#", "MA2500/1000G", "运行", "is-running", "自动", "4小时", "120个", "2026.3.22-3.24", "25110940", "3000个", "12%", "结构件", "深灰", "人工调试"));
|
||||
data.getMachineList().add(machineRow(13L, "13#", "MA1600/540G", "运行", "is-running", "自动", "7小时", "280个", "2026.3.23-3.25", "25110954", "2600个", "31%", "面罩件", "暖白", "待料"));
|
||||
|
||||
data.getDetailRealtime().add(row("name", "温度一段(A15)", "current", "186℃", "currentTime", "14:20:15", "target", "185℃", "targetTime", "14:05:00", "orderValue", "188℃", "orderTime", "08:30:00"));
|
||||
data.getDetailRealtime().add(row("name", "温度二段(A16)", "current", "192℃", "currentTime", "14:20:15", "target", "190℃", "targetTime", "14:05:00", "orderValue", "192℃", "orderTime", "08:30:00"));
|
||||
data.getDetailRealtime().add(row("name", "射胶压力(A243)", "current", "12.3MPa", "currentTime", "14:20:10", "target", "12.0MPa", "targetTime", "14:00:00", "orderValue", "12.5MPa", "orderTime", "08:30:00"));
|
||||
|
||||
data.getDetailSetting().add(row("name", "开模行程(A060)", "setting", "320mm", "settingTime", "13:15:00", "orderValue", "325mm", "orderTime", "08:30:00"));
|
||||
data.getDetailSetting().add(row("name", "锁模压力(A061)", "setting", "86%", "settingTime", "13:15:00", "orderValue", "85%", "orderTime", "08:30:00"));
|
||||
data.getDetailSetting().add(row("name", "保压时间(A062)", "setting", "4.5s", "settingTime", "13:15:00", "orderValue", "4.8s", "orderTime", "08:30:00"));
|
||||
|
||||
data.getDetailProduction().add(row("name", "上模循环时(A37)", "value", "28.6s", "collectTime", "14:20:11"));
|
||||
data.getDetailProduction().add(row("name", "一模产出数", "value", "2", "collectTime", "14:20:11"));
|
||||
data.getDetailProduction().add(row("name", "累计良品数", "value", "598", "collectTime", "14:20:11"));
|
||||
return data;
|
||||
}
|
||||
|
||||
private static List<MdScreenBinding> createDefaultBasicBindings(WorkshopBoardData boardData, String screenCode) {
|
||||
List<MdScreenBinding> result = new ArrayList<MdScreenBinding>();
|
||||
result.add(binding(screenCode, SCOPE_BASIC, 0L, "header.screenCode", "看板编号", boardData.getHeader().get("screenCode"), 1, "is-running"));
|
||||
result.add(binding(screenCode, SCOPE_BASIC, 0L, "header.ownerName", "管理责任人", boardData.getHeader().get("ownerName"), 2, "is-running"));
|
||||
result.add(binding(screenCode, SCOPE_BASIC, 0L, "summary.total", "设备总数", boardData.getSummary().get("total"), 3, "is-running"));
|
||||
result.add(binding(screenCode, SCOPE_BASIC, 0L, "summary.online", "在线数量", boardData.getSummary().get("online"), 4, "is-running"));
|
||||
result.add(binding(screenCode, SCOPE_BASIC, 0L, "summary.running", "运行数量", boardData.getSummary().get("running"), 5, "is-running"));
|
||||
result.add(binding(screenCode, SCOPE_BASIC, 0L, "summary.stop", "停止数量", boardData.getSummary().get("stop"), 6, "is-running"));
|
||||
result.add(binding(screenCode, SCOPE_BASIC, 0L, "summary.startRate", "开机率", boardData.getSummary().get("startRate"), 7, "is-running"));
|
||||
return result;
|
||||
}
|
||||
|
||||
private static List<ScreenBindingMachineConfig> createDefaultMachineConfigs(WorkshopBoardData boardData, String screenCode) {
|
||||
List<ScreenBindingMachineConfig> result = new ArrayList<ScreenBindingMachineConfig>();
|
||||
int sortBase = 100;
|
||||
for (Map<String, Object> machine : boardData.getMachineList()) {
|
||||
Long machineId = toLong(machine.get("id"));
|
||||
ScreenBindingMachineConfig machineConfig = new ScreenBindingMachineConfig();
|
||||
machineConfig.setId(machineId);
|
||||
machineConfig.setStatusClass(String.valueOf(machine.get("statusClass")));
|
||||
List<MdScreenBinding> bindings = new ArrayList<MdScreenBinding>();
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "statusText", "状态文本", machine.get("statusText"), sortBase + 1, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "name", "设备编号", machine.get("name"), sortBase + 2, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "model", "设备型号", machine.get("model"), sortBase + 3, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "mode", "运行模式", machine.get("mode"), sortBase + 4, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "runtime", "今日开机时间", machine.get("runtime"), sortBase + 5, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "output", "今日计件数", machine.get("output"), sortBase + 6, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "progress", "任务进度", machine.get("progress"), sortBase + 7, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "workDate", "工单日期", machine.get("workDate"), sortBase + 8, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "batchNo", "批次号", machine.get("batchNo"), sortBase + 9, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "planQty", "计划产量", machine.get("planQty"), sortBase + 10, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "productModel", "产品型号", machine.get("productModel"), sortBase + 11, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "color", "颜色", machine.get("color"), sortBase + 12, machineConfig.getStatusClass()));
|
||||
bindings.add(binding(screenCode, SCOPE_MACHINE, machineId, "remark", "备注", machine.get("remark"), sortBase + 13, machineConfig.getStatusClass()));
|
||||
machineConfig.setBindings(bindings);
|
||||
result.add(machineConfig);
|
||||
sortBase += 100;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static MdScreenBinding binding(String screenCode, String scope, Long machineId, String key, String name, Object fixedValue, int sortNum, String statusClass) {
|
||||
MdScreenBinding binding = new MdScreenBinding();
|
||||
binding.setScreenCode(screenCode);
|
||||
binding.setBindingScope(scope);
|
||||
binding.setMachineId(machineId);
|
||||
binding.setBindingKey(key);
|
||||
binding.setBindingName(name);
|
||||
binding.setSourceType(SOURCE_FIXED);
|
||||
binding.setFixedValue(fixedValue == null ? "" : String.valueOf(fixedValue));
|
||||
binding.setSortNum(sortNum);
|
||||
binding.setEnableFlag("Y");
|
||||
binding.setStatusClass(statusClass);
|
||||
return binding;
|
||||
}
|
||||
|
||||
private static Map<String, Object> machineRow(Long id, String name, String model, String statusText, String statusClass, String mode,
|
||||
String runtime, String output, String workDate, String batchNo, String planQty,
|
||||
String progress, String productModel, String color, String remark) {
|
||||
return row("id", id, "name", name, "model", model, "statusText", statusText, "statusClass", statusClass, "mode", mode,
|
||||
"runtime", runtime, "output", output, "workDate", workDate, "batchNo", batchNo, "planQty", planQty,
|
||||
"progress", progress, "productModel", productModel, "color", color, "remark", remark);
|
||||
}
|
||||
|
||||
private static Map<String, Object> row(Object... values) {
|
||||
Map<String, Object> result = new LinkedHashMap<String, Object>();
|
||||
for (int index = 0; index < values.length; index += 2) {
|
||||
result.put(String.valueOf(values[index]), values[index + 1]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static 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