测量点配置

This commit is contained in:
2026-03-28 09:01:16 +08:00
parent 868e3568d7
commit c1258dae5d
17 changed files with 1425 additions and 0 deletions

View File

@ -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));
}
}

View File

@ -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;
}
}

View File

@ -0,0 +1,7 @@
package com.ktg.mes.board.service;
import com.ktg.mes.board.domain.WorkshopBoardData;
public interface IWorkshopBoardService {
WorkshopBoardData getBoardData(String screenCode);
}

View File

@ -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));
}
}

View File

@ -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));
}
}

View 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();
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -15,6 +15,8 @@ public interface MdMeasurePointMapper {
MdMeasurePoint checkPointNameUnique(MdMeasurePoint mdMeasurePoint); MdMeasurePoint checkPointNameUnique(MdMeasurePoint mdMeasurePoint);
List<MdMeasurePoint> selectMdMeasurePointByPointCodes(String[] pointCodes);
int insertMdMeasurePoint(MdMeasurePoint mdMeasurePoint); int insertMdMeasurePoint(MdMeasurePoint mdMeasurePoint);
int updateMdMeasurePoint(MdMeasurePoint mdMeasurePoint); int updateMdMeasurePoint(MdMeasurePoint mdMeasurePoint);

View File

@ -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);
}

View File

@ -3,7 +3,9 @@ package com.ktg.mes.md.service;
import com.ktg.mes.md.domain.MdMeasurePoint; import com.ktg.mes.md.domain.MdMeasurePoint;
import com.ktg.mes.md.domain.MeasurePointHistoryItem; import com.ktg.mes.md.domain.MeasurePointHistoryItem;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map;
public interface IMdMeasurePointService { public interface IMdMeasurePointService {
MdMeasurePoint selectMdMeasurePointByPointId(Long pointId); MdMeasurePoint selectMdMeasurePointByPointId(Long pointId);
@ -27,4 +29,6 @@ public interface IMdMeasurePointService {
MdMeasurePoint queryLatestValue(String pointCode); MdMeasurePoint queryLatestValue(String pointCode);
List<MeasurePointHistoryItem> queryHistory(String pointCode, String range, String interval, String startTime, String endTime); List<MeasurePointHistoryItem> queryHistory(String pointCode, String range, String interval, String startTime, String endTime);
Map<String, MdMeasurePoint> selectMdMeasurePointMapByPointCodes(Collection<String> pointCodes);
} }

View File

@ -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);
}

View File

@ -12,7 +12,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
public class MdMeasurePointServiceImpl implements IMdMeasurePointService { public class MdMeasurePointServiceImpl implements IMdMeasurePointService {
@ -104,6 +107,20 @@ public class MdMeasurePointServiceImpl implements IMdMeasurePointService {
return mdMeasurePointInfluxService.queryHistory(point, range, interval, startTime, endTime); 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) { private void fillWorkshopInfo(MdMeasurePoint mdMeasurePoint) {
if (mdMeasurePoint.getWorkshopId() == null) { if (mdMeasurePoint.getWorkshopId() == null) {
mdMeasurePoint.setWorkshopCode(null); mdMeasurePoint.setWorkshopCode(null);

View File

@ -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;
}
}

View File

@ -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));
}
}

View File

@ -69,6 +69,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
limit 1 limit 1
</select> </select>
<select id="selectMdMeasurePointByPointCodes" resultMap="MdMeasurePointResult">
<include refid="selectMdMeasurePointVo"/>
where point_code in
<foreach collection="array" item="pointCode" open="(" separator="," close=")">
#{pointCode}
</foreach>
</select>
<insert id="insertMdMeasurePoint" parameterType="MdMeasurePoint" useGeneratedKeys="true" keyProperty="pointId"> <insert id="insertMdMeasurePoint" parameterType="MdMeasurePoint" useGeneratedKeys="true" keyProperty="pointId">
insert into md_measure_point insert into md_measure_point
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">

View File

@ -0,0 +1,187 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ktg.mes.md.mapper.MdScreenBindingMapper">
<resultMap type="MdScreenBinding" id="MdScreenBindingResult">
<result property="bindingId" column="binding_id"/>
<result property="screenCode" column="screen_code"/>
<result property="workshopId" column="workshop_id"/>
<result property="workshopCode" column="workshop_code"/>
<result property="workshopName" column="workshop_name"/>
<result property="bindingScope" column="binding_scope"/>
<result property="machineId" column="machine_id"/>
<result property="bindingKey" column="binding_key"/>
<result property="bindingName" column="binding_name"/>
<result property="sourceType" column="source_type"/>
<result property="pointId" column="point_id"/>
<result property="pointCode" column="point_code"/>
<result property="pointName" column="point_name"/>
<result property="fixedValue" column="fixed_value"/>
<result property="defaultValue" column="default_value"/>
<result property="displayUnit" column="display_unit"/>
<result property="precisionDigit" column="precision_digit"/>
<result property="statusClass" column="status_class"/>
<result property="sortNum" column="sort_num"/>
<result property="enableFlag" column="enable_flag"/>
<result property="remark" column="remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectMdScreenBindingVo">
select binding_id, screen_code, workshop_id, workshop_code, workshop_name, binding_scope, machine_id,
binding_key, binding_name, source_type, point_id, point_code, point_name, fixed_value,
default_value, display_unit, precision_digit, status_class, sort_num, enable_flag,
remark, create_by, create_time, update_by, update_time
from md_screen_binding
</sql>
<select id="selectMdScreenBindingByBindingId" parameterType="Long" resultMap="MdScreenBindingResult">
<include refid="selectMdScreenBindingVo"/>
where binding_id = #{bindingId}
</select>
<select id="selectMdScreenBindingList" parameterType="MdScreenBinding" resultMap="MdScreenBindingResult">
<include refid="selectMdScreenBindingVo"/>
<where>
<if test="screenCode != null and screenCode != ''">and screen_code like concat('%', #{screenCode}, '%')</if>
<if test="workshopId != null">and workshop_id = #{workshopId}</if>
<if test="bindingScope != null and bindingScope != ''">and binding_scope = #{bindingScope}</if>
<if test="machineId != null">and machine_id = #{machineId}</if>
<if test="bindingKey != null and bindingKey != ''">and binding_key = #{bindingKey}</if>
<if test="sourceType != null and sourceType != ''">and source_type = #{sourceType}</if>
<if test="pointCode != null and pointCode != ''">and point_code like concat('%', #{pointCode}, '%')</if>
<if test="enableFlag != null and enableFlag != ''">and enable_flag = #{enableFlag}</if>
</where>
order by screen_code asc, binding_scope asc, machine_id asc, sort_num asc, binding_id asc
</select>
<select id="selectMdScreenBindingByScreenCode" parameterType="String" resultMap="MdScreenBindingResult">
<include refid="selectMdScreenBindingVo"/>
where screen_code = #{screenCode}
order by binding_scope asc, machine_id asc, sort_num asc, binding_id asc
</select>
<insert id="insertMdScreenBinding" parameterType="MdScreenBinding" useGeneratedKeys="true" keyProperty="bindingId">
insert into md_screen_binding
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="screenCode != null and screenCode != ''">screen_code,</if>
<if test="workshopId != null">workshop_id,</if>
<if test="workshopCode != null and workshopCode != ''">workshop_code,</if>
<if test="workshopName != null and workshopName != ''">workshop_name,</if>
<if test="bindingScope != null and bindingScope != ''">binding_scope,</if>
<if test="machineId != null">machine_id,</if>
<if test="bindingKey != null and bindingKey != ''">binding_key,</if>
<if test="bindingName != null and bindingName != ''">binding_name,</if>
<if test="sourceType != null and sourceType != ''">source_type,</if>
<if test="pointId != null">point_id,</if>
<if test="pointCode != null and pointCode != ''">point_code,</if>
<if test="pointName != null and pointName != ''">point_name,</if>
<if test="fixedValue != null">fixed_value,</if>
<if test="defaultValue != null">default_value,</if>
<if test="displayUnit != null">display_unit,</if>
<if test="precisionDigit != null">precision_digit,</if>
<if test="statusClass != null">status_class,</if>
<if test="sortNum != null">sort_num,</if>
<if test="enableFlag != null and enableFlag != ''">enable_flag,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="screenCode != null and screenCode != ''">#{screenCode},</if>
<if test="workshopId != null">#{workshopId},</if>
<if test="workshopCode != null and workshopCode != ''">#{workshopCode},</if>
<if test="workshopName != null and workshopName != ''">#{workshopName},</if>
<if test="bindingScope != null and bindingScope != ''">#{bindingScope},</if>
<if test="machineId != null">#{machineId},</if>
<if test="bindingKey != null and bindingKey != ''">#{bindingKey},</if>
<if test="bindingName != null and bindingName != ''">#{bindingName},</if>
<if test="sourceType != null and sourceType != ''">#{sourceType},</if>
<if test="pointId != null">#{pointId},</if>
<if test="pointCode != null and pointCode != ''">#{pointCode},</if>
<if test="pointName != null and pointName != ''">#{pointName},</if>
<if test="fixedValue != null">#{fixedValue},</if>
<if test="defaultValue != null">#{defaultValue},</if>
<if test="displayUnit != null">#{displayUnit},</if>
<if test="precisionDigit != null">#{precisionDigit},</if>
<if test="statusClass != null">#{statusClass},</if>
<if test="sortNum != null">#{sortNum},</if>
<if test="enableFlag != null and enableFlag != ''">#{enableFlag},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<insert id="batchInsertMdScreenBinding" parameterType="java.util.List">
insert into md_screen_binding
(
screen_code, workshop_id, workshop_code, workshop_name, binding_scope, machine_id,
binding_key, binding_name, source_type, point_id, point_code, point_name,
fixed_value, default_value, display_unit, precision_digit, status_class, sort_num,
enable_flag, remark, create_by, create_time, update_by, update_time
)
values
<foreach collection="list" item="item" separator=",">
(
#{item.screenCode}, #{item.workshopId}, #{item.workshopCode}, #{item.workshopName}, #{item.bindingScope}, #{item.machineId},
#{item.bindingKey}, #{item.bindingName}, #{item.sourceType}, #{item.pointId}, #{item.pointCode}, #{item.pointName},
#{item.fixedValue}, #{item.defaultValue}, #{item.displayUnit}, #{item.precisionDigit}, #{item.statusClass}, #{item.sortNum},
#{item.enableFlag}, #{item.remark}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}
)
</foreach>
</insert>
<update id="updateMdScreenBinding" parameterType="MdScreenBinding">
update md_screen_binding
<trim prefix="SET" suffixOverrides=",">
<if test="screenCode != null and screenCode != ''">screen_code = #{screenCode},</if>
<if test="workshopId != null">workshop_id = #{workshopId},</if>
<if test="workshopCode != null">workshop_code = #{workshopCode},</if>
<if test="workshopName != null">workshop_name = #{workshopName},</if>
<if test="bindingScope != null and bindingScope != ''">binding_scope = #{bindingScope},</if>
<if test="machineId != null">machine_id = #{machineId},</if>
<if test="bindingKey != null and bindingKey != ''">binding_key = #{bindingKey},</if>
<if test="bindingName != null and bindingName != ''">binding_name = #{bindingName},</if>
<if test="sourceType != null and sourceType != ''">source_type = #{sourceType},</if>
<if test="pointId != null">point_id = #{pointId},</if>
<if test="pointCode != null">point_code = #{pointCode},</if>
<if test="pointName != null">point_name = #{pointName},</if>
<if test="fixedValue != null">fixed_value = #{fixedValue},</if>
<if test="defaultValue != null">default_value = #{defaultValue},</if>
<if test="displayUnit != null">display_unit = #{displayUnit},</if>
<if test="precisionDigit != null">precision_digit = #{precisionDigit},</if>
<if test="statusClass != null">status_class = #{statusClass},</if>
<if test="sortNum != null">sort_num = #{sortNum},</if>
<if test="enableFlag != null and enableFlag != ''">enable_flag = #{enableFlag},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where binding_id = #{bindingId}
</update>
<delete id="deleteMdScreenBindingByBindingId" parameterType="Long">
delete from md_screen_binding where binding_id = #{bindingId}
</delete>
<delete id="deleteMdScreenBindingByBindingIds" parameterType="Long">
delete from md_screen_binding where binding_id in
<foreach item="bindingId" collection="array" open="(" separator="," close=")">
#{bindingId}
</foreach>
</delete>
<delete id="deleteMdScreenBindingByScreenCode" parameterType="String">
delete from md_screen_binding where screen_code = #{screenCode}
</delete>
</mapper>