春风项目四线(合箱线、总装线)
jiang
2024-01-23 eb64c3ede631f9f1ec49260db5190027fa08fb31
Merge remote-tracking branch 'origin/master'
已删除1个文件
已修改22个文件
已添加2个文件
1703 ■■■■ 文件已修改
jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/client/ClientHandler.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/domain/DaOpcuaConfig.java 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/domain/OpcuaConf.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/mapper/DaOpcuaConfigMapper.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/IDaOpcuaConfigService.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/impl/DaOpcuaConfigServiceImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReportingForWork.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/da/opcuaconfig/DaOpcuaConfigMapper.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-quartz/pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/components/itemSelect/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/bs/beatSetting/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/bs/orderScheduling/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/cfkb/Instructions/index.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/opcuaconfig/index.vue 479 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/paramCollection/index.vue 120 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/kb/engineCheck/index.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/pr/tightenReport/index.vue 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java
@@ -51,20 +51,45 @@
            formulaChildInfo.setAddress(formulaChildInfo.getTechRequirement());
            formulaChildInfo.setImg(formulaChildInfo.getPicture());
        }
        return getDataTable(list);
    }
    /**
     * æŸ¥è¯¢å·¥è‰ºæµç¨‹
     * @param bsFormulaChildInfo query
     * @return list
     */
    @PostMapping("/getProductProcess")
    public TableDataInfo getProductProcess(@RequestBody BsFormulaChildInfo bsFormulaChildInfo)
    {
        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.selectBsFormulaChildInfoList(bsFormulaChildInfo);
        for (BsFormulaChildInfo formulaChildInfo : list) {
            formulaChildInfo.setSort(formulaChildInfo.getStepSort());
            formulaChildInfo.setAddress(formulaChildInfo.getTechRequirement());
            formulaChildInfo.setImg(formulaChildInfo.getPicture());
        }
        list = list.stream()
                .filter(x -> !ZERO.equals(x.getSort())).sorted(Comparator.comparing(BsFormulaChildInfo::getSort)).collect(Collectors.toList());
        return getDataTable(list);
    }
    /**
     * æŸ¥è¯¢å·¥è‰ºæµç¨‹
     * @param productProcessQuery query
     * æŸ¥è¯¢å·¥è‰ºæ–‡ä»¶
     * @param bsFormulaChildInfo query
     * @return list
     */
    @PostMapping("/getProductProcess")
    public TableDataInfo getProductProcess(@RequestBody ProductProcessQuery productProcessQuery)
    @PostMapping("/getMainProductProcess")
    public TableDataInfo getMainProductProcess(@RequestBody BsFormulaChildInfo bsFormulaChildInfo)
    {
        List<BsFormulaChildInfo> list = productProcessService.getProductProcess(productProcessQuery);
        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.selectBsFormulaChildInfoList(bsFormulaChildInfo);
        for (BsFormulaChildInfo formulaChildInfo : list) {
            formulaChildInfo.setSort(formulaChildInfo.getStepSort());
            formulaChildInfo.setAddress(formulaChildInfo.getTechRequirement());
            formulaChildInfo.setImg(formulaChildInfo.getPicture());
        }
        list = list.stream()
                .filter(x -> ZERO.equals(x.getSort())).sorted(Comparator.comparing(BsFormulaChildInfo::getSort)).collect(Collectors.toList());
        return getDataTable(list);
    }
jcdm-main/src/main/java/com/jcdm/main/bs/orderScheduling/controller/BsOrderSchedulingController.java
@@ -1,7 +1,10 @@
package com.jcdm.main.bs.orderScheduling.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.jcdm.common.utils.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -51,7 +54,10 @@
    public TableDataInfo list2(BsOrderScheduling bsOrderScheduling)
    {
//        startPage();
        List<BsOrderScheduling> list = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling);
        List<BsOrderScheduling> list = new ArrayList<>();
        if (StringUtils.isNotEmpty(bsOrderScheduling.getOrderNo())){
            list = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling);
        }
        return getDataTable(list);
    }
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/client/ClientHandler.java
@@ -166,7 +166,7 @@
                .findAny()
                .orElse(null);
        try {
            Class<?> clazz = Class.forName(daOpcuaConfig.getrModule());
            Class<?> clazz = Class.forName("com.jcdm.main.da.opcuaconfig.cert.MethodName");
            Method method = clazz.getMethod(daOpcuaConfig.getrFunction(), new Class[] { String.class, String.class });
            method.invoke(clazz.newInstance(),new Object[] {
                    new String(id.getIdentifier().toString()), new String(value.getValue().toString()) });
@@ -219,29 +219,6 @@
        return statusCode.isGood();
    }
    /**
     * æ–¹æ³•æè¿°: è¯»å–多个点位的值
     *
     * @param keys ç‚¹ä½é›†åˆ
     * @return {@link List<DataValue>}
     * @throws
     */
//    public static List<DataValue> readValues2(Set<String> keys){
//        List<NodeId> nodeIdList=new ArrayList<>(500);
//        keys.forEach(e->{
//            NodeId nodeId = new NodeId(2, e);
//            nodeIdList.add(nodeId);
//        });
//        try {
//            List<DataValue> dataValues=client.readValues(0.0, TimestampsToReturn.Both,nodeIdList).get();
//            return dataValues;
//        } catch (InterruptedException | ExecutionException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
    /**
     * æ–¹æ³•æè¿°: è¯»å–多个点位的值
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java
@@ -1,26 +1,32 @@
package com.jcdm.main.da.opcuaconfig.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.jcdm.common.annotation.Log;
import com.jcdm.common.core.controller.BaseController;
import com.jcdm.common.core.domain.AjaxResult;
import com.jcdm.common.core.page.TableDataInfo;
import com.jcdm.common.enums.BusinessType;
import com.jcdm.common.utils.poi.ExcelUtil;
import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import com.jcdm.common.core.page.TableDataInfo;
/**
 * OPCUA参数设置Controller
 * äº¤äº’信号配置Controller
 * 
 * @author yyt
 * @date 2023-12-22
 * @date 2024-01-22
 */
@RestController
@RequestMapping("/da/opcuaconfig")
@@ -29,11 +35,8 @@
    @Autowired
    private IDaOpcuaConfigService daOpcuaConfigService;
    @Autowired
    private IDaParamCollectionService daParamCollectionService;
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     * æŸ¥è¯¢äº¤äº’信号配置列表
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:list')")
    @GetMapping("/list")
@@ -44,28 +47,21 @@
        return getDataTable(list);
    }
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:getconfig')")
    @GetMapping("/getconfig")
    public List<DaOpcuaConfig> getconfig(DaOpcuaConfig daOpcuaConfig)
    {
        return daOpcuaConfigService.selectDaOpcuaConfigList(daOpcuaConfig);
    }
    /**
     * å¯¼å‡ºOPCUA参数设置列表
     * å¯¼å‡ºäº¤äº’信号配置列表
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:export')")
    @Log(title = "OPCUA参数设置", businessType = BusinessType.EXPORT)
    @Log(title = "交互信号配置", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, DaOpcuaConfig daOpcuaConfig)
    {
        List<DaOpcuaConfig> list = daOpcuaConfigService.selectDaOpcuaConfigList(daOpcuaConfig);
        ExcelUtil<DaOpcuaConfig> util = new ExcelUtil<DaOpcuaConfig>(DaOpcuaConfig.class);
        util.exportExcel(response, list, "OPCUA参数设置数据");
        util.exportExcel(response, list, "交互信号配置数据");
    }
    /**
     * èŽ·å–OPCUA参数设置详细信息
     * èŽ·å–交互信号配置详细信息
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:query')")
    @GetMapping(value = "/{id}")
@@ -75,10 +71,10 @@
    }
    /**
     * æ–°å¢žOPCUA参数设置
     * æ–°å¢žäº¤äº’信号配置
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:add')")
    @Log(title = "OPCUA参数设置", businessType = BusinessType.INSERT)
    @Log(title = "交互信号配置", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody DaOpcuaConfig daOpcuaConfig)
    {
@@ -86,10 +82,10 @@
    }
    /**
     * ä¿®æ”¹OPCUA参数设置
     * ä¿®æ”¹äº¤äº’信号配置
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:edit')")
    @Log(title = "OPCUA参数设置", businessType = BusinessType.UPDATE)
    @Log(title = "交互信号配置", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody DaOpcuaConfig daOpcuaConfig)
    {
@@ -97,10 +93,10 @@
    }
    /**
     * åˆ é™¤OPCUA参数设置
     * åˆ é™¤äº¤äº’信号配置
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:remove')")
    @Log(title = "OPCUA参数设置", businessType = BusinessType.DELETE)
    @Log(title = "交互信号配置", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/domain/DaOpcuaConfig.java
@@ -1,15 +1,15 @@
package com.jcdm.main.da.opcuaconfig.domain;
import com.jcdm.common.annotation.Excel;
import com.jcdm.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.jcdm.common.annotation.Excel;
import com.jcdm.common.core.domain.BaseEntity;
/**
 * OPCUA参数设置对象 da_opcua_config
 * äº¤äº’信号配置对象 da_opcua_config
 * 
 * @author yyt
 * @date 2023-12-22
 * @date 2024-01-22
 */
public class DaOpcuaConfig extends BaseEntity
{
@@ -18,41 +18,46 @@
    /** ID */
    private Long id;
    /** æ‰€å±žæ¨¡å— */
    @Excel(name = "所属模块")
    private String module;
    /** $column.columnComment */
    /** èŠ‚点 */
    @Excel(name = "节点")
    private String node;
    /** é•¿åº¦ */
    @Excel(name = "长度")
    /** $column.columnComment */
    private Long length;
    /** ç±»åž‹ */
    @Excel(name = "类型")
    /** æ•°æ®ç±»åž‹ */
    @Excel(name = "数据类型")
    private String sysTypes;
    /** åŠŸèƒ½è¯´æ˜Ž */
    @Excel(name = "功能说明")
    /** $column.columnComment */
    private String functionality;
    /** æ˜¯å¦è®¢é˜… */
    @Excel(name = "是否订阅")
    private Long subscribe;
    /** è®¢é˜…响应模块 */
    @Excel(name = "订阅响应模块")
    private String rModule;
    /** è®¢é˜…响应函数 */
    @Excel(name = "订阅响应函数")
    /** è®¢é˜…类型 */
    @Excel(name = "订阅类型")
    private String rFunction;
    /** å¤‡æ³¨ */
    @Excel(name = "备注")
    private String remarks;
    /** å·¥åºç¼–码 */
    @Excel(name = "工序编码")
    private String process;
    /** å·¥åºåç§° */
    @Excel(name = "工序名称")
    private String processName;
    /** çŠ¶æ€ */
    @Excel(name = "状态")
    private Long state;
    public void setId(Long id) 
    {
@@ -63,15 +68,7 @@
    {
        return id;
    }
    public void setModule(String module)
    {
        this.module = module;
    }
    public String getModule()
    {
        return module;
    }
    public void setNode(String node) 
    {
        this.node = node;
@@ -81,33 +78,12 @@
    {
        return node;
    }
    public void setLength(Long length)
    {
        this.length = length;
    }
    public Long getLength()
    {
        return length;
    }
    public void setSysTypes(String sysTypes)
    {
        this.sysTypes = sysTypes;
    }
    public String getSysTypes() 
    {
        return sysTypes;
    }
    public void setFunctionality(String functionality)
    {
        this.functionality = functionality;
    }
    public String getFunctionality()
    {
        return functionality;
    }
    public void setSubscribe(Long subscribe) 
    {
        this.subscribe = subscribe;
@@ -116,19 +92,6 @@
    public Long getSubscribe() 
    {
        return subscribe;
    }
    public void setrModule(String rModule)
    {
        this.rModule = rModule;
    }
    public String getrModule()
    {
        return rModule;
    }
    public void setrFunction(String rFunction)
    {
        this.rFunction = rFunction;
    }
    public String getrFunction() 
@@ -144,20 +107,46 @@
    {
        return remarks;
    }
    public void setProcess(String process)
    {
        this.process = process;
    }
    public String getProcess()
    {
        return process;
    }
    public void setProcessName(String processName)
    {
        this.processName = processName;
    }
    public String getProcessName()
    {
        return processName;
    }
    public void setState(Long state)
    {
        this.state = state;
    }
    public Long getState()
    {
        return state;
    }
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("module", getModule())
            .append("node", getNode())
            .append("length", getLength())
            .append("sysTypes", getSysTypes())
            .append("functionality", getFunctionality())
            .append("subscribe", getSubscribe())
            .append("rModule", getrModule())
            .append("rFunction", getrFunction())
            .append("remarks", getRemarks())
            .append("process", getProcess())
            .append("processName", getProcessName())
            .append("state", getState())
            .toString();
    }
}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/domain/OpcuaConf.java
ÎļþÒÑɾ³ý
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/mapper/DaOpcuaConfigMapper.java
@@ -5,55 +5,55 @@
import java.util.List;
/**
 * OPCUA参数设置Mapper接口
 * äº¤äº’信号配置Mapper接口
 * 
 * @author yyt
 * @date 2023-12-22
 * @date 2024-01-22
 */
public interface DaOpcuaConfigMapper 
{
    /**
     * æŸ¥è¯¢OPCUA参数设置
     * æŸ¥è¯¢äº¤äº’信号配置
     * 
     * @param id OPCUA参数设置主键
     * @return OPCUA参数设置
     * @param id äº¤äº’信号配置主键
     * @return äº¤äº’信号配置
     */
    public DaOpcuaConfig selectDaOpcuaConfigById(Long id);
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     * æŸ¥è¯¢äº¤äº’信号配置列表
     * 
     * @param daOpcuaConfig OPCUA参数设置1
     * @return OPCUA参数设置集合
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return äº¤äº’信号配置集合
     */
    public List<DaOpcuaConfig> selectDaOpcuaConfigList(DaOpcuaConfig daOpcuaConfig);
    /**
     * æ–°å¢žOPCUA参数设置99
     * æ–°å¢žäº¤äº’信号配置
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return ç»“æžœ
     */
    public int insertDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * ä¿®æ”¹OPCUA参数设置
     * ä¿®æ”¹äº¤äº’信号配置
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return ç»“æžœ
     */
    public int updateDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * åˆ é™¤OPCUA参数设置
     * åˆ é™¤äº¤äº’信号配置
     * 
     * @param id OPCUA参数设置主键
     * @param id äº¤äº’信号配置主键
     * @return ç»“æžœ
     */
    public int deleteDaOpcuaConfigById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤OPCUA参数设置
     * æ‰¹é‡åˆ é™¤äº¤äº’信号配置
     * 
     * @param ids éœ€è¦åˆ é™¤çš„数据主键集合
     * @return ç»“æžœ
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/IDaOpcuaConfigService.java
@@ -5,57 +5,57 @@
import java.util.List;
/**
 * OPCUA参数设置Service接口
 * äº¤äº’信号配置Service接口
 * 
 * @author yyt
 * @date 2023-12-22
 * @date 2024-01-22
 */
public interface IDaOpcuaConfigService 
{
    /**
     * æŸ¥è¯¢OPCUA参数设置
     * æŸ¥è¯¢äº¤äº’信号配置
     * 
     * @param id OPCUA参数设置主键
     * @return OPCUA参数设置
     * @param id äº¤äº’信号配置主键
     * @return äº¤äº’信号配置
     */
    public DaOpcuaConfig selectDaOpcuaConfigById(Long id);
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     * æŸ¥è¯¢äº¤äº’信号配置列表
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @return OPCUA参数设置集合
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return äº¤äº’信号配置集合
     */
    public List<DaOpcuaConfig> selectDaOpcuaConfigList(DaOpcuaConfig daOpcuaConfig);
    /**
     * æ–°å¢žOPCUA参数设置
     * æ–°å¢žäº¤äº’信号配置
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return ç»“æžœ
     */
    public int insertDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * ä¿®æ”¹OPCUA参数设置
     * ä¿®æ”¹äº¤äº’信号配置
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return ç»“æžœ
     */
    public int updateDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * æ‰¹é‡åˆ é™¤OPCUA参数设置
     * æ‰¹é‡åˆ é™¤äº¤äº’信号配置
     * 
     * @param ids éœ€è¦åˆ é™¤çš„OPCUA参数设置主键集合
     * @param ids éœ€è¦åˆ é™¤çš„交互信号配置主键集合
     * @return ç»“æžœ
     */
    public int deleteDaOpcuaConfigByIds(Long[] ids);
    /**
     * åˆ é™¤OPCUA参数设置信息
     * åˆ é™¤äº¤äº’信号配置信息
     * 
     * @param id OPCUA参数设置主键
     * @param id äº¤äº’信号配置主键
     * @return ç»“æžœ
     */
    public int deleteDaOpcuaConfigById(Long id);
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/impl/DaOpcuaConfigServiceImpl.java
@@ -1,18 +1,18 @@
package com.jcdm.main.da.opcuaconfig.service.impl;
import java.util.List;
import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
import com.jcdm.main.da.opcuaconfig.mapper.DaOpcuaConfigMapper;
import com.jcdm.main.da.opcuaconfig.service.IDaOpcuaConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * OPCUA参数设置Service业务层处理
 * äº¤äº’信号配置Service业务层处理
 * 
 * @author yyt
 * @date 2023-12-22
 * @date 2024-01-22
 */
@Service
public class DaOpcuaConfigServiceImpl implements IDaOpcuaConfigService
@@ -21,10 +21,10 @@
    private DaOpcuaConfigMapper daOpcuaConfigMapper;
    /**
     * æŸ¥è¯¢OPCUA参数设置
     * æŸ¥è¯¢äº¤äº’信号配置
     * 
     * @param id OPCUA参数设置主键
     * @return OPCUA参数设置
     * @param id äº¤äº’信号配置主键
     * @return äº¤äº’信号配置
     */
    @Override
    public DaOpcuaConfig selectDaOpcuaConfigById(Long id)
@@ -33,10 +33,10 @@
    }
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     * æŸ¥è¯¢äº¤äº’信号配置列表
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @return OPCUA参数设置
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return äº¤äº’信号配置
     */
    @Override
    public List<DaOpcuaConfig> selectDaOpcuaConfigList(DaOpcuaConfig daOpcuaConfig)
@@ -45,9 +45,9 @@
    }
    /**
     * æ–°å¢žOPCUA参数设置
     * æ–°å¢žäº¤äº’信号配置
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return ç»“æžœ
     */
    @Override
@@ -57,9 +57,9 @@
    }
    /**
     * ä¿®æ”¹OPCUA参数设置
     * ä¿®æ”¹äº¤äº’信号配置
     * 
     * @param daOpcuaConfig OPCUA参数设置
     * @param daOpcuaConfig äº¤äº’信号配置
     * @return ç»“æžœ
     */
    @Override
@@ -69,9 +69,9 @@
    }
    /**
     * æ‰¹é‡åˆ é™¤OPCUA参数设置
     * æ‰¹é‡åˆ é™¤äº¤äº’信号配置
     * 
     * @param ids éœ€è¦åˆ é™¤çš„OPCUA参数设置主键
     * @param ids éœ€è¦åˆ é™¤çš„交互信号配置主键
     * @return ç»“æžœ
     */
    @Override
@@ -81,9 +81,9 @@
    }
    /**
     * åˆ é™¤OPCUA参数设置信息
     * åˆ é™¤äº¤äº’信号配置信息
     * 
     * @param id OPCUA参数设置主键
     * @param id äº¤äº’信号配置主键
     * @return ç»“æžœ
     */
    @Override
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReceivingServices.java
@@ -2,6 +2,9 @@
import cn.hutool.json.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.jcdm.main.da.collectionParamConf.service.IDaCollectionParamConfService;
@@ -40,16 +43,28 @@
//        test1();
//        String serviceUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_MES_005_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
//
//        String serviceUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_BC_001_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
////        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
////                "   <soapenv:Header/>\n" +
////                "   <soapenv:Body>\n" +
////                "      <urn:ZPP_CF_MES_005>\n" +
////                "         <!--Optional:-->\n" +
////                "         <IV_WERKS>1000</IV_WERKS>\n" +
////                "         <!--Optional:-->\n" +
////                "         <IV_ZSCTZD>A0055577</IV_ZSCTZD>\n" +
////                "      </urn:ZPP_CF_MES_005>\n" +
////                "   </soapenv:Body>\n" +
////                "</soapenv:Envelope>";
//        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
//                "   <soapenv:Header/>\n" +
//                "   <soapenv:Body>\n" +
//                "      <urn:ZPP_CF_MES_005>\n" +
//                "         <!--Optional:-->\n" +
//                "         <IV_WERKS>1000</IV_WERKS>\n" +
//                "         <!--Optional:-->\n" +
//                "         <IV_ZSCTZD>A0055577</IV_ZSCTZD>\n" +
//                "      </urn:ZPP_CF_MES_005>\n" +
//                "      <urn:ZPP_BC_001>\n" +
//                "         <IV_AUFNR>000010569212</IV_AUFNR>\n" +
//                "          <IV_VORNR>0010</IV_VORNR>\n" +
//                "           <IV_LMNGA>1</IV_LMNGA>\n" +
//                "           <IV_XMNGA>0</IV_XMNGA>   \n" +
//                "         <IV_STATU>1</IV_STATU>  \n" +
//                "      </urn:ZPP_BC_001>\n" +
//                "   </soapenv:Body>\n" +
//                "</soapenv:Envelope>";
//        // HttpClient发送SOAP请求
@@ -79,10 +94,10 @@
//            InputStream is = postMethod.getResponseBodyAsStream();
//            // èŽ·å–请求结果字符串
//            String result = IOUtils.toString(is);
//            String jsonStr = xmlToJSON2(result);
//            Gson gson = new Gson();
//            // å°†json字符串转换成对象
//            ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
////            String jsonStr = xmlToJSON2(result);
////            Gson gson = new Gson();
////            // å°†json字符串转换成对象
////            ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
//            System.out.println("返回结果:" + result);
//        } else {
//            System.out.println("错误代码:" + status + ":" + postMethod.getResponseBodyAsString());
@@ -195,4 +210,33 @@
        return etData.toString();
    }
    /**
     * æ–¹å¼--è´°
     * ä½¿ç”¨hutool工具包中的工具转化
     * @param xmlStr
     * @return
     */
    public static String xmlToJSON3(String xmlStr){
        String status = "";
        if(xmlStr.contains("EV_STATUS")){
            JSONObject jsonObject1 = cn.hutool.json.XML.toJSONObject(xmlStr, true);
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode rootNode = null;
            try {
                rootNode = objectMapper.readTree(String.valueOf(jsonObject1));
            } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
            }
            String evStatus = rootNode
                    .path("SOAP:Envelope")
                    .path("SOAP:Body")
                    .path("n0:ZPP_BC_001.Response")
                    .path("EV_STATUS")
                    .asText();
            status = evStatus;
        }
        return status;
    }
}
jcdm-main/src/main/java/com/jcdm/main/webservice/service/ReportingForWork.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.jcdm.main.webservice.service;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
public class ReportingForWork {
    public static void main(String[] args) throws IOException {
        String serviceUrl = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_BC_001_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
//        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
//                "   <soapenv:Header/>\n" +
//                "   <soapenv:Body>\n" +
//                "      <urn:ZPP_CF_MES_005>\n" +
//                "         <!--Optional:-->\n" +
//                "         <IV_WERKS>1000</IV_WERKS>\n" +
//                "         <!--Optional:-->\n" +
//                "         <IV_ZSCTZD>A0055577</IV_ZSCTZD>\n" +
//                "      </urn:ZPP_CF_MES_005>\n" +
//                "   </soapenv:Body>\n" +
//                "</soapenv:Envelope>";
        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
                "   <soapenv:Header/>\n" +
                "   <soapenv:Body>\n" +
                "      <urn:ZPP_BC_001>\n" +
                "         <IV_AUFNR>000010569212</IV_AUFNR>\n" +
                "          <IV_VORNR>0010</IV_VORNR>\n" +
                "           <IV_LMNGA>1</IV_LMNGA>\n" +
                "           <IV_XMNGA>0</IV_XMNGA>   \n" +
                "         <IV_STATU>1</IV_STATU>  \n" +
                "      </urn:ZPP_BC_001>\n" +
                "   </soapenv:Body>\n" +
                "</soapenv:Envelope>";
        // HttpClient发送SOAP请求
        int timeout = 10000;
        HttpClient client = new HttpClient();
        //如果需要用户名密码验证;不需要验证登录则不需要以下4行
        String username = "POMESUSER";
        String password = "12345tgb";
        UsernamePasswordCredentials creds = new UsernamePasswordCredentials(username, password);
        client.getState().setCredentials(AuthScope.ANY, creds);
        PostMethod postMethod = new PostMethod(serviceUrl);
        // è®¾ç½®è¿žæŽ¥è¶…æ—¶
        client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
        // è®¾ç½®è¯»å–时间超时
        client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
        // ç„¶åŽæŠŠSoap请求数据添加到PostMethod中
        RequestEntity requestEntity = new StringRequestEntity(content, "text/xml", "UTF-8");
        // è®¾ç½®è¯·æ±‚头部,否则可能会报 â€œno SOAPAction header” çš„错误
        postMethod.setRequestHeader("SOAPAction", "");
        // è®¾ç½®è¯·æ±‚体
        postMethod.setRequestEntity(requestEntity);
        int status = client.executeMethod(postMethod);
        if (status == 200) {// æˆåŠŸ
            InputStream is = postMethod.getResponseBodyAsStream();
            // èŽ·å–请求结果字符串
            String result = IOUtils.toString(is);
//            String jsonStr = xmlToJSON2(result);
//            Gson gson = new Gson();
//            // å°†json字符串转换成对象
//            ItemList itemList = gson.fromJson(jsonStr, ItemList.class);
            System.out.println("返回结果:" + result);
        } else {
            System.out.println("错误代码:" + status + ":" + postMethod.getResponseBodyAsString());
        }
    }
}
jcdm-main/src/main/resources/mapper/da/opcuaconfig/DaOpcuaConfigMapper.xml
@@ -6,32 +6,29 @@
    
    <resultMap type="DaOpcuaConfig" id="DaOpcuaConfigResult">
        <result property="id"    column="id"    />
        <result property="module"    column="module"    />
        <result property="node"    column="node"    />
        <result property="length"    column="length"    />
        <result property="sysTypes"    column="sys_types"    />
        <result property="functionality"    column="functionality"    />
        <result property="subscribe"    column="subscribe"    />
        <result property="rModule"    column="r_module"    />
        <result property="rFunction"    column="r_function"    />
        <result property="remarks"    column="remarks"    />
        <result property="process"    column="process"    />
        <result property="processName"    column="process_name"    />
        <result property="state"    column="state"    />
    </resultMap>
    <sql id="selectDaOpcuaConfigVo">
        select id, module, node, length, sys_types, functionality, subscribe, r_module, r_function, remarks from da_opcua_config
        select id, node,sys_types, subscribe, r_function, remarks, process, process_name, state from da_opcua_config
    </sql>
    <select id="selectDaOpcuaConfigList" parameterType="DaOpcuaConfig" resultMap="DaOpcuaConfigResult">
        <include refid="selectDaOpcuaConfigVo"/>
        <where>  
            <if test="module != null  and module != ''"> and module like concat('%', #{module}, '%')</if>
            <if test="node != null  and node != ''"> and node like concat('%', #{node}, '%')</if>
            <if test="length != null "> and length = #{length}</if>
            <if test="node != null  and node != ''"> and node = #{node}</if>
            <if test="sysTypes != null  and sysTypes != ''"> and sys_types = #{sysTypes}</if>
            <if test="functionality != null  and functionality != ''"> and functionality like concat('%', #{functionality}, '%')</if>
            <if test="subscribe != null "> and subscribe = #{subscribe}</if>
            <if test="rModule != null  and rModule != ''"> and r_module like concat('%', #{rModule}, '%')</if>
            <if test="rFunction != null  and rFunction != ''"> and r_function like concat('%', #{rFunction}, '%')</if>
            <if test="rFunction != null  and rFunction != ''"> and r_function = #{rFunction}</if>
            <if test="process != null  and process != ''"> and process = #{process}</if>
            <if test="processName != null  and processName != ''"> and process_name like concat('%', #{processName}, '%')</if>
            <if test="state != null "> and state = #{state}</if>
        </where>
    </select>
    
@@ -40,46 +37,41 @@
        where id = #{id}
    </select>
        
    <insert id="insertDaOpcuaConfig" parameterType="DaOpcuaConfig">
    <insert id="insertDaOpcuaConfig" parameterType="DaOpcuaConfig" useGeneratedKeys="true" keyProperty="id">
        insert into da_opcua_config
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="module != null">module,</if>
            <if test="node != null">node,</if>
            <if test="length != null">length,</if>
            <if test="sysTypes != null">sys_types,</if>
            <if test="functionality != null">functionality,</if>
            <if test="node != null and node != ''">node,</if>
            <if test="sysTypes != null and sysTypes != ''">sys_types,</if>
            <if test="subscribe != null">subscribe,</if>
            <if test="rModule != null">r_module,</if>
            <if test="rFunction != null">r_function,</if>
            <if test="rFunction != null and rFunction != ''">r_function,</if>
            <if test="remarks != null">remarks,</if>
            <if test="process != null">process,</if>
            <if test="processName != null">process_name,</if>
            <if test="state != null">state,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="module != null">#{module},</if>
            <if test="node != null">#{node},</if>
            <if test="length != null">#{length},</if>
            <if test="sysTypes != null">#{sysTypes},</if>
            <if test="functionality != null">#{functionality},</if>
            <if test="node != null and node != ''">#{node},</if>
            <if test="sysTypes != null and sysTypes != ''">#{sysTypes},</if>
            <if test="subscribe != null">#{subscribe},</if>
            <if test="rModule != null">#{rModule},</if>
            <if test="rFunction != null">#{rFunction},</if>
            <if test="rFunction != null and rFunction != ''">#{rFunction},</if>
            <if test="remarks != null">#{remarks},</if>
            <if test="process != null">#{process},</if>
            <if test="processName != null">#{processName},</if>
            <if test="state != null">#{state},</if>
         </trim>
    </insert>
    <update id="updateDaOpcuaConfig" parameterType="DaOpcuaConfig">
        update da_opcua_config
        <trim prefix="SET" suffixOverrides=",">
            <if test="module != null">module = #{module},</if>
            <if test="node != null">node = #{node},</if>
            <if test="length != null">length = #{length},</if>
            <if test="sysTypes != null">sys_types = #{sysTypes},</if>
            <if test="functionality != null">functionality = #{functionality},</if>
            <if test="node != null and node != ''">node = #{node},</if>
            <if test="sysTypes != null and sysTypes != ''">sys_types = #{sysTypes},</if>
            <if test="subscribe != null">subscribe = #{subscribe},</if>
            <if test="rModule != null">r_module = #{rModule},</if>
            <if test="rFunction != null">r_function = #{rFunction},</if>
            <if test="rFunction != null and rFunction != ''">r_function = #{rFunction},</if>
            <if test="remarks != null">remarks = #{remarks},</if>
            <if test="process != null">process = #{process},</if>
            <if test="processName != null">process_name = #{processName},</if>
            <if test="state != null">state = #{state},</if>
        </trim>
        where id = #{id}
    </update>
jcdm-main/src/main/resources/mapper/da/paramCollection/DaParamCollectionMapper.xml
@@ -38,6 +38,7 @@
        <include refid="selectDaParamCollectionVo"/>
        <where>  
            <if test="workOrderNo != null  and workOrderNo != ''"> and work_order_no = #{workOrderNo}</if>
            <if test="type != null  and type != ''"> and type = #{type}</if>
            <if test="sfcCode != null  and sfcCode != ''"> and sfc_code = #{sfcCode}</if>
            <if test="productCode != null  and productCode != ''"> and product_code = #{productCode}</if>
            <if test="productionLine != null  and productionLine != ''"> and production_line = #{productionLine}</if>
jcdm-quartz/pom.xml
@@ -35,6 +35,11 @@
            <artifactId>jcdm-common</artifactId>
        </dependency>
        <dependency>
            <groupId>com.jcdm</groupId>
            <artifactId>jcdm-main</artifactId>
        </dependency>
    </dependencies>
</project>
jcdm-quartz/src/main/java/com/jcdm/quartz/task/RyTask.java
@@ -1,7 +1,13 @@
package com.jcdm.quartz.task;
import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling;
import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService;
import com.jcdm.main.webservice.service.ReceivingServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.jcdm.common.utils.StringUtils;
import java.util.List;
/**
 * å®šæ—¶ä»»åŠ¡è°ƒåº¦æµ‹è¯•
@@ -25,4 +31,58 @@
    {
        System.out.println("执行无参方法");
    }
    @Autowired
    private IBsOrderSchedulingService bsOrderSchedulingService;
    String url = "http://podqapp.cfmoto.com.cn:50200/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_BC_001_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES";
    public void workReportingTasks(){
        report10();
        report20();
    }
    public void report10(){
        BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
        bsOrderScheduling.setReport10("0");
        List<BsOrderScheduling> bsOrderSchedulings = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling);
        for (BsOrderScheduling orderScheduling : bsOrderSchedulings) {
            String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0010"));
            String status = ReceivingServices.xmlToJSON3(xmlResult);
            if(status.equals("1")){
                orderScheduling.setReport10("1");
                int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
                System.out.println("更新状态成功");
            }
        }
    }
    public void report20(){
        BsOrderScheduling bsOrderScheduling = new BsOrderScheduling();
        bsOrderScheduling.setReport20("0");
        List<BsOrderScheduling> bsOrderSchedulings = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling);
        for (BsOrderScheduling orderScheduling : bsOrderSchedulings) {
            String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0790"));
            String status = ReceivingServices.xmlToJSON3(xmlResult);
            if(status.equals("1")){
                orderScheduling.setReport10("1");
                int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling);
                System.out.println("更新状态成功");
            }
        }
    }
    public static String getProductionPlanInformationXml(String orderNo,String location){
        String content = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:sap-com:document:sap:rfc:functions\">\n" +
                "   <soapenv:Header/>\n" +
                "   <soapenv:Body>\n" +
                "      <urn:ZPP_BC_001>\n" +
                "         <IV_AUFNR>"+orderNo+"</IV_AUFNR>\n" +
                "          <IV_VORNR>"+location+"</IV_VORNR>\n" +
                "           <IV_LMNGA>1</IV_LMNGA>\n" +
                "           <IV_XMNGA>0</IV_XMNGA>   \n" +
                "         <IV_STATU>1</IV_STATU>  \n" +
                "      </urn:ZPP_BC_001>\n" +
                "   </soapenv:Body>\n" +
                "</soapenv:Envelope>";
        return content;
    }
}
jcdm-ui/src/api/main/bs/formulaChild/formulaChild.js
@@ -18,6 +18,15 @@
  })
}
// æŸ¥è¯¢å·¥è‰ºæ–‡ä»¶
export function getMainProductProcess(query) {
  return request({
    url: '/bs/formulaChild/getMainProductProcess',
    method: 'post',
    data: query
  })
}
// æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯è¯¦ç»†
export function getFormulaChild(id) {
  return request({
jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js
@@ -1,6 +1,6 @@
import request from '@/utils/request'
// æŸ¥è¯¢OPCUA参数设置列表
// æŸ¥è¯¢äº¤äº’信号配置列表
export function listOpcuaconfig(query) {
  return request({
    url: '/da/opcuaconfig/list',
@@ -9,7 +9,7 @@
  })
}
// æŸ¥è¯¢OPCUA参数设置详细
// æŸ¥è¯¢äº¤äº’信号配置详细
export function getOpcuaconfig(id) {
  return request({
    url: '/da/opcuaconfig/' + id,
@@ -17,7 +17,7 @@
  })
}
// æ–°å¢žOPCUA参数设置
// æ–°å¢žäº¤äº’信号配置
export function addOpcuaconfig(data) {
  return request({
    url: '/da/opcuaconfig',
@@ -26,7 +26,7 @@
  })
}
// ä¿®æ”¹OPCUA参数设置
// ä¿®æ”¹äº¤äº’信号配置
export function updateOpcuaconfig(data) {
  return request({
    url: '/da/opcuaconfig',
@@ -35,7 +35,7 @@
  })
}
// åˆ é™¤OPCUA参数设置
// åˆ é™¤äº¤äº’信号配置
export function delOpcuaconfig(id) {
  return request({
    url: '/da/opcuaconfig/' + id,
jcdm-ui/src/components/itemSelect/index.vue
@@ -220,4 +220,4 @@
    }
  }
};
</script>
</script>
jcdm-ui/src/views/main/bs/beatSetting/index.vue
@@ -78,7 +78,7 @@
          </el-table-column>
          <el-table-column label="产品名称" align="center" prop="productName">
          </el-table-column>
          <el-table-column label="节拍" align="center" prop="beat">
          <el-table-column label="节拍(S)" align="center" prop="beat">
          </el-table-column>
          <el-table-column fixed="right" width="200" label="操作" align="center" class-name="small-padding fixed-width">
            <template slot-scope="scope">
jcdm-ui/src/views/main/bs/orderScheduling/index.vue
@@ -242,7 +242,7 @@
<!--          <el-table-column label="备注" align="center" prop="remarks">-->
<!--          </el-table-column>-->
          <el-table-column fixed="right" width="200" label="操作" align="center" class-name="small-padding fixed-width">
<!--          <el-table-column fixed="right" width="200" label="操作" align="center" class-name="small-padding fixed-width">
            <template slot-scope="scope">
              <el-button
                size="mini"
@@ -263,7 +263,7 @@
                v-hasPermi="['bs:orderScheduling:remove']"
              >删除</el-button>
            </template>
          </el-table-column>
          </el-table-column>-->
        </el-table>
    </el-card>
jcdm-ui/src/views/main/cfkb/Instructions/index.vue
@@ -69,17 +69,35 @@
      </el-col>
    </el-row>
    <div>
      <el-dialog
        title="工艺文件"
        :visible.sync="dialogVisible"
        width="70%"
        @close="closeMethod"
      >
        <div><el-image style="height: 1090px;width: 960px;margin-left: 33px" :src="mainProcessSrc"></el-image></div>
        <span slot="footer" class="dialog-footer">
    <el-button type="primary" @click="dialogVisible = false" style="margin-right: 80px">ç¡® å®š</el-button>
  </span>
      </el-dialog>
    </div>
  </div>
</template>
<script>
import {listFormulaChild, getProductProcess} from "@/api/main/bs/formulaChild/formulaChild";
import {getMainProductProcess, getProductProcess} from "@/api/main/bs/formulaChild/formulaChild";
import {listStationConf,getIp} from "@/api/main/sc/stationConf";
export default {
  name: "index",
  data() {
    return {
      dialogVisible: false,
      mainProcessSrc: '',
      mainProcess: [],
      isClickd: '', // åˆå§‹åŒ–为未点击状态
      locationCode: "未配置",
      locationName: "未配置工位",
@@ -173,6 +191,9 @@
      });
    },
    closeMethod(){
      this.mainProcessSrc = ''
    },
    //获取当前时间
    getNowTime () {
      let speed = 1000
@@ -242,7 +263,13 @@
      this.getUpOrDown(1)
    },
    processDocuments(){
      getMainProductProcess(this.queryParams).then(res => {
        this.mainProcess = res.rows
        if (res.rows!=null && res.rows.length>0){
          this.mainProcessSrc = res.rows[0].img
        }
      })
      this.dialogVisible = true
    },
    changeProducts(val){
@@ -257,7 +284,7 @@
      /** æŸ¥è¯¢é…æ–¹é…ç½®å­ä¿¡æ¯åˆ—表 */
      this.queryParams.productCode = val;
      this.queryParams.processesCode = this.locationCode
      listFormulaChild(this.queryParams).then(response => {
      getProductProcess(this.queryParams).then(response => {
        this.tableData = [];
        this.cleanImg()
        this.tableData = response.rows;
@@ -340,6 +367,12 @@
.active {
  background-color: #31b431; /* ç‚¹å‡»åŽçš„背景色 */
}
::v-deep .el-dialog {
  height: 90%;
  overflow-y: auto;
}
::v-deep .el-dialog__footer{
  margin-top: 10px;
}
</style>
jcdm-ui/src/views/main/da/opcuaconfig/index.vue
@@ -1,206 +1,173 @@
<template>
  <div class="app-container">
    <el-card class="box-card">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="所属模块" prop="module">
        <el-input
          v-model="queryParams.module"
          placeholder="请输入所属模块"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="节点" prop="node">
        <el-input
          v-model="queryParams.node"
          placeholder="请输入节点"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="长度" prop="length">
        <el-input
          v-model="queryParams.length"
          placeholder="请输入长度"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="类型" prop="sysTypes">
        <el-select v-model="queryParams.sysTypes" placeholder="请选择类型" clearable>
<!--          <el-option-->
<!--            v-for="dict in dict.type.${dictType}"-->
<!--            :key="dict.value"-->
<!--            :label="dict.label"-->
<!--            :value="dict.value"-->
<!--          />-->
        </el-select>
      </el-form-item>
      <el-form-item style="float: right">
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
        <el-button type="warning" icon="el-icon-copy-document" size="mini" @click="advancedQuery">高级查询</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-form :model="queryParams" ref="queryParams" size="small" :inline="true" v-show="advancedShowSearch" label-width="68px">
      <el-form-item label="订阅响应模块" prop="rModule">
        <el-input
          v-model="queryParams.rModule"
          placeholder="请输入订阅响应模块"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="订阅响应函数" prop="rFunction">
        <el-input
          v-model="queryParams.rFunction"
          placeholder="请输入订阅响应函数"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="功能说明" prop="functionality">
        <el-input
          v-model="queryParams.functionality"
          placeholder="请输入功能说明"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="是否订阅" prop="subscribe">
        <el-select v-model="queryParams.subscribe" placeholder="请选择是否订阅" clearable>
          <!--          <el-option-->
          <!--            v-for="dict in dict.type.${dictType}"-->
          <!--            :key="dict.value"-->
          <!--            :label="dict.label"-->
          <!--            :value="dict.value"-->
          <!--          />-->
        </el-select>
      </el-form-item>
    </el-form>
        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
          <el-form-item label="节点" prop="node">
            <el-input
              v-model="queryParams.node"
              placeholder="请输入节点"
              clearable
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="订阅类型" prop="rFunction">
            <el-select v-model="queryParams.rFunction" placeholder="请选择订阅类型" clearable>
              <el-option
                v-for="dict in dict.type.subscription_type"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </el-select>
          </el-form-item>
          <el-form-item label="工序编码" prop="process">
            <el-select v-model="queryParams.process" placeholder="请选择工序编码" clearable>
<!--              <el-option-->
<!--                v-for="dict in dict.type.${dictType}"-->
<!--                :key="dict.value"-->
<!--                :label="dict.label"-->
<!--                :value="dict.value"-->
<!--              />-->
            </el-select>
          </el-form-item>
          <el-form-item label="工序名称" prop="processName">
            <el-input
              v-model="queryParams.processName"
              placeholder="请输入工序名称"
              clearable
              @keyup.enter.native="handleQuery"
            />
          </el-form-item>
          <el-form-item label="状态" prop="state">
            <el-select v-model="queryParams.state"  placeholder="请选择状态" clearable>
              <el-option
                v-for="dict in dict.type.sys_normal_disable"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
              />
            </el-select>
          </el-form-item>
          <el-form-item style="float: right">
            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
          </el-form-item>
        </el-form>
    </el-card>
    <el-card style="margin-top: 10px" class="box-card">
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-hasPermi="['da:opcuaconfig:add']"
        >新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['da:opcuaconfig:edit']"
        >修改</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-delete"
          size="mini"
          :disabled="multiple"
          @click="handleDelete"
          v-hasPermi="['da:opcuaconfig:remove']"
        >删除</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          size="mini"
          @click="handleExport"
          v-hasPermi="['da:opcuaconfig:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
        <el-row :gutter="10" class="mb8">
          <el-col :span="1.5">
            <el-button
              type="primary"
              plain
              icon="el-icon-plus"
              size="mini"
              @click="handleAdd"
              v-hasPermi="['main:opcuaconfig:add']"
            >新增</el-button>
          </el-col>
          <el-col :span="1.5">
            <el-button
              type="success"
              plain
              icon="el-icon-edit"
              size="mini"
              :disabled="single"
              @click="handleUpdate"
              v-hasPermi="['main:opcuaconfig:edit']"
            >修改</el-button>
          </el-col>
          <el-col :span="1.5">
            <el-button
              type="danger"
              plain
              icon="el-icon-delete"
              size="mini"
              :disabled="multiple"
              @click="handleDelete"
              v-hasPermi="['main:opcuaconfig:remove']"
            >删除</el-button>
          </el-col>
          <el-col :span="1.5">
            <el-button
              type="warning"
              plain
              icon="el-icon-download"
              size="mini"
              @click="handleExport"
              v-hasPermi="['main:opcuaconfig:export']"
            >导出</el-button>
          </el-col>
          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
        </el-row>
    <el-table v-loading="loading" border :data="opcuaconfigList" @selection-change="handleSelectionChange" v-if="opcuaconfigList.length > 0">
      <el-table-column type="selection" width="55" align="center" />
<!--      <el-table-column label="ID" align="center" prop="id" />-->
      <el-table-column label="所属模块" align="center" prop="module">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.module"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="节点" align="center" prop="node">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.node"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="长度" align="center" prop="length">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.length"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="类型" align="center" prop="sysTypes">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.sysTypes"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="功能说明" align="center" prop="functionality">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.functionality"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="是否订阅" align="center" prop="subscribe">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.subscribe"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="订阅响应模块" align="center" prop="rModule">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.rModule"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="订阅响应函数" align="center" prop="rFunction">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.rFunction"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="备注" align="center" prop="remarks">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.remarks"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column fixed="right" label="操作" width="200" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="success"
            plain
            style="width: 72px"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['da:opcuaconfig:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="danger"
            plain
            style="width: 72px"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['da:opcuaconfig:remove']"
          >删除</el-button>
        </template>
      </el-table-column>
    </el-table>
      <el-empty v-else>
        <span slot="description">暂无数据</span>
      </el-empty>
        <el-table border v-loading="loading" :data="opcuaconfigList" @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="55" align="center" />
<!--          <el-table-column label="ID" align="center" prop="id" />-->
          <el-table-column label="工序编码" align="center" prop="process">
            <!--            <template slot-scope="scope">-->
            <!--              <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.process"/>-->
            <!--            </template>-->
          </el-table-column>
          <el-table-column label="工序名称" align="center" prop="processName">
            <!--            <template slot-scope="scope">-->
            <!--              <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.processName"/>-->
            <!--            </template>-->
          </el-table-column>
          <el-table-column label="节点" align="center" prop="node">
<!--            <template slot-scope="scope">-->
<!--              <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.node"/>-->
<!--            </template>-->
          </el-table-column>
          <el-table-column label="数据类型" align="center" prop="sysTypes">
            <template slot-scope="scope">
              <dict-tag :options="dict.type.data_type" :value="scope.row.sysTypes"/>
            </template>
          </el-table-column>
          <el-table-column label="是否订阅" align="center" prop="subscribe">
            <template slot-scope="scope">
              <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.subscribe"/>
            </template>
          </el-table-column>
          <el-table-column label="订阅类型" align="center" prop="rFunction">
            <template slot-scope="scope">
              <dict-tag :options="dict.type.subscription_type" :value="scope.row.rFunction"/>
            </template>
          </el-table-column>
          <el-table-column label="备注" align="center" prop="remarks">
<!--            <template slot-scope="scope">-->
<!--              <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.remarks"/>-->
<!--            </template>-->
          </el-table-column>
          <el-table-column label="状态" align="center" prop="state">
            <template slot-scope="scope">
              <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.state"/>
            </template>
          </el-table-column>
          <el-table-column fixed="right" width="200" label="操作" align="center" class-name="small-padding fixed-width">
            <template slot-scope="scope">
              <el-button
                size="mini"
                type="success"
                plain
                style="width: 72px"
                icon="el-icon-edit"
                @click="handleUpdate(scope.row)"
                v-hasPermi="['da:opcuaconfig:edit']"
              >修改</el-button>
              <el-button
                size="mini"
                type="danger"
                plain
                style="width: 72px"
                icon="el-icon-delete"
                @click="handleDelete(scope.row)"
                v-hasPermi="['main:opcuaconfig:remove']"
              >删除</el-button>
            </template>
          </el-table-column>
        </el-table>
    </el-card>
    <pagination
@@ -211,49 +178,70 @@
      @pagination="getList"
    />
    <!-- æ·»åŠ æˆ–修改OPCUA参数设置对话框 -->
    <!-- æ·»åŠ æˆ–修改交互信号配置对话框 -->
    <el-dialog v-dialogpop-up :title="title" :visible.sync="open" width="500px" append-to-body>
      <span slot="title">
        <i class="el-icon-s-order"></i>
        {{titleName}}
      </span>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="所属模块" prop="module">
          <el-input v-model="form.module" placeholder="请输入所属模块" />
        </el-form-item>
        <el-form-item label="节点" prop="node">
          <el-input v-model="form.node" placeholder="请输入节点" />
        </el-form-item>
        <el-form-item label="长度" prop="length">
          <el-input v-model="form.length" placeholder="请输入长度" />
        </el-form-item>
        <el-form-item label="类型" prop="sysTypes">
          <el-select v-model="form.sysTypes" placeholder="请选择类型">
<!--            <el-option-->
<!--              v-for="dict in dict.type.${dictType}"-->
<!--              :key="dict.value"-->
<!--              :label="dict.label"-->
<!--              :value="dict.value"-->
<!--            ></el-option>-->
        <el-form-item label="数据类型" prop="sysTypes">
          <el-select v-model="form.sysTypes" placeholder="请选择数据类型">
            <el-option
              v-for="dict in dict.type.data_type"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="功能说明" prop="functionality">
          <el-input v-model="form.functionality" placeholder="请输入功能说明" />
        </el-form-item>
        <el-form-item label="是否订阅" prop="subscribe">
          <el-select v-model="form.subscribe" placeholder="请选择是否订阅">
<!--            <el-option-->
<!--              v-for="dict in dict.type.${dictType}"-->
<!--              :key="dict.value"-->
<!--              :label="dict.label"-->
<!--              :value="parseInt(dict.value)"-->
<!--            ></el-option>-->
            <el-option
              v-for="dict in dict.type.sys_yes_no"
              :key="dict.value"
              :label="dict.label"
              :value="parseInt(dict.value)"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="订阅响应模块" prop="rModule">
          <el-input v-model="form.rModule" placeholder="请输入订阅响应模块" />
        </el-form-item>
        <el-form-item label="订阅响应函数" prop="rFunction">
          <el-input v-model="form.rFunction" placeholder="请输入订阅响应函数" />
        <el-form-item label="订阅类型" prop="rFunction">
          <el-select v-model="form.rFunction" placeholder="请选择订阅类型">
            <el-option
              v-for="dict in dict.type.subscription_type"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="备注" prop="remarks">
          <el-input v-model="form.remarks" placeholder="请输入备注" />
        </el-form-item>
        <el-form-item label="工序编码" prop="process">
          <el-radio-group v-model="form.process">
<!--            <el-radio-->
<!--              v-for="dict in dict.type.${dictType}"-->
<!--              :key="dict.value"-->
<!--              :label="dict.value"-->
<!--            >{{dict.label}}</el-radio>-->
          </el-radio-group>
        </el-form-item>
        <el-form-item label="工序名称" prop="processName">
          <el-input v-model="form.processName" placeholder="请输入工序名称" />
        </el-form-item>
        <el-form-item label="状态" prop="state">
          <el-select v-model="form.state" placeholder="请选择状态">
            <el-option
              v-for="dict in dict.type.sys_normal_disable"
              :key="dict.value"
              :label="dict.label"
              :value="parseInt(dict.value)"
            ></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
@@ -269,10 +257,12 @@
export default {
  name: "Opcuaconfig",
  dicts: ['subscription_type', 'sys_yes_no', 'sys_normal_disable', 'data_type'],
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      titleName: "",
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•ä¸ªç¦ç”¨
@@ -283,9 +273,8 @@
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // OPCUA参数设置表格数据
      // äº¤äº’信号配置表格数据
      opcuaconfigList: [],
      advancedShowSearch: false,
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
@@ -294,14 +283,12 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        module: null,
        node: null,
        length: null,
        sysTypes: null,
        functionality: null,
        subscribe: null,
        rModule: null,
        rFunction: null,
        process: null,
        processName: null,
        state: null
      },
      // è¡¨å•å‚æ•°
      form: {},
@@ -310,6 +297,18 @@
        id: [
          { required: true, message: "ID不能为空", trigger: "blur" }
        ],
        node: [
          { required: true, message: "节点不能为空", trigger: "blur" }
        ],
        sysTypes: [
          { required: true, message: "数据类型不能为空", trigger: "change" }
        ],
        subscribe: [
          { required: true, message: "是否订阅不能为空", trigger: "change" }
        ],
        rFunction: [
          { required: true, message: "订阅类型不能为空", trigger: "change" }
        ],
      }
    };
  },
@@ -317,10 +316,7 @@
    this.getList();
  },
  methods: {
    advancedQuery(){
      this.advancedShowSearch = (this.advancedShowSearch) ? this.advancedShowSearch = false : this.advancedShowSearch = true;
    },
    /** æŸ¥è¯¢OPCUA参数设置列表 */
    /** æŸ¥è¯¢äº¤äº’信号配置列表 */
    getList() {
      this.loading = true;
      listOpcuaconfig(this.queryParams).then(response => {
@@ -346,7 +342,10 @@
        subscribe: null,
        rModule: null,
        rFunction: null,
        remarks: null
        remarks: null,
        process: null,
        processName: null,
        state: null
      };
      this.resetForm("form");
    },
@@ -370,7 +369,7 @@
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加OPCUA参数设置";
      this.titleName = "添加交互信号配置";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
@@ -379,7 +378,7 @@
      getOpcuaconfig(id).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改OPCUA参数设置";
        this.titleName = "修改交互信号配置";
      });
    },
    /** æäº¤æŒ‰é’® */
@@ -405,7 +404,7 @@
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除OPCUA参数设置编号为"' + ids + '"的数据项?').then(function() {
      this.$modal.confirm('是否确认删除交互信号配置编号为"' + ids + '"的数据项?').then(function() {
        return delOpcuaconfig(ids);
      }).then(() => {
        this.getList();
jcdm-ui/src/views/main/da/paramCollection/index.vue
@@ -73,99 +73,41 @@
    <el-table v-loading="loading" border :data="paramCollectionList" @selection-change="handleSelectionChange" v-if="paramCollectionList.length > 0">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="主键id" align="center" prop="id" />
      <el-table-column label="工单编号" align="center" prop="workOrderNo">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.workOrderNo"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="总成序列号" align="center" width="100" prop="sfcCode">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.sfcCode"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="产品编号" align="center" prop="productCode">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.productCode"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="产线编号" align="center" prop="productionLine">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.productionLine"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="工位编号" align="center" prop="locationCode">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.locationCode"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="设备编号" align="center" prop="equipmentNo">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.equipmentNo"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="参数编码" align="center" prop="paramCode">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.paramCode"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="参数值" align="center" prop="paramValue">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.paramValue"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="参数上限" align="center" prop="paramUpper">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.paramUpper"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="参数下限" align="center" prop="paramLower">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.paramLower"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="标准值" align="center" prop="paramStandard">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.paramStandard"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="采集时间" align="center" prop="collectionTime" width="180">
      <el-table-column label="工单编号" align="center" prop="workOrderNo"></el-table-column>
      <el-table-column label="总成序列号" align="center" width="140" prop="sfcCode" ></el-table-column>
      <el-table-column label="产品编号" align="center" prop="productCode"></el-table-column>
      <el-table-column label="产线编号" align="center" prop="productionLine"></el-table-column>
      <el-table-column label="工位编号" align="center" prop="locationCode"></el-table-column>
      <el-table-column label="设备编号" align="center" prop="equipmentNo"></el-table-column>
      <el-table-column label="参数编码" align="center" prop="paramCode"></el-table-column>
      <el-table-column label="参数值" align="center" prop="paramValue"></el-table-column>
      <el-table-column label="参数上限" align="center" prop="paramUpper"></el-table-column>
      <el-table-column label="参数下限" align="center" prop="paramLower"></el-table-column>
      <el-table-column label="采集时间" align="center" prop="collectionTime" width="100">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.collectionTime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="状态" align="center" prop="state">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.state"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="参数名称" align="center" prop="paramName">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.paramName"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="单位" align="center" prop="unit">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.unit"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="类型" align="center" prop="type">
<!--        <template slot-scope="scope">-->
<!--          <dict-tag :options="dict.type.${column.dictType}" :value="scope.row.type"/>-->
<!--        </template>-->
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
      <el-table-column label="状态" align="center" prop="state"></el-table-column>
      <el-table-column label="参数名称" align="center" prop="paramName" width="150" ></el-table-column>
      <el-table-column label="单位" align="center" prop="unit"></el-table-column>
      <el-table-column label="类型" align="center" prop="type"></el-table-column>
      <el-table-column fixed="right" width="200" label="操作" align="center" class-name="small-padding fixed-width" >
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            type="success"
            plain
            style="width: 72px"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['main:paramCollection:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            type="danger"
            plain
            style="width: 72px"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['main:paramCollection:remove']"
@@ -230,18 +172,6 @@
            placeholder="请选择采集时间">
          </el-date-picker>
        </el-form-item>
<!--        <el-form-item label="预留字段1" prop="spareField1">-->
<!--          <el-input v-model="form.spareField1" type="textarea" placeholder="请输入内容" />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="预留字段2" prop="spareField2">-->
<!--          <el-input v-model="form.spareField2" type="textarea" placeholder="请输入内容" />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="创建用户" prop="createUser">-->
<!--          <el-input v-model="form.createUser" type="textarea" placeholder="请输入内容" />-->
<!--        </el-form-item>-->
<!--        <el-form-item label="更改用户" prop="updateUser">-->
<!--          <el-input v-model="form.updateUser" type="textarea" placeholder="请输入内容" />-->
<!--        </el-form-item>-->
        <el-form-item label="状态" prop="state">
          <el-input v-model="form.state" placeholder="请输入状态" />
        </el-form-item>
@@ -253,12 +183,6 @@
        </el-form-item>
        <el-form-item label="类型" prop="type">
          <el-select v-model="form.type" placeholder="请选择类型">
<!--            <el-option-->
<!--              v-for="dict in dict.type.${dictType}"-->
<!--              :key="dict.value"-->
<!--              :label="dict.label"-->
<!--              :value="dict.value"-->
<!--            ></el-option>-->
          </el-select>
        </el-form-item>
      </el-form>
jcdm-ui/src/views/main/kb/engineCheck/index.vue
@@ -1,6 +1,6 @@
<template>
  <div class="app-container">
    <el-card  style="height: 70px;margin-bottom: 10px" class="box-card" >
    <el-card   class="box-card" >
      <template>
        <div class="container">
          <el-row type="flex" justify="center"  style="text-align: center" >
@@ -11,50 +11,41 @@
        </div>
      </template>
    </el-card>
   <el-row :gutter="5"  style="margin-top: 10px">
     <el-col :span="10" style=" height:600px;width:800px"  >
       <el-card class="bottom-card">
         <el-descriptions :column="1" >
           <el-descriptions-item>
   <el-row :gutter="0"  >
     <el-col :span="14">
       <el-card   class="box-card" >
             <el-form ref="form" :model="form"  label-width="200px" style="height: 60px;margin-top: 20px" >
               <el-form-item prop="engineNo" >
               <span slot="label" style="font-size:45px;color:black"><strong>发动机号</strong></span>
               <span slot="label" style="font-size:40px;color:black"><strong>发动机号</strong></span>
                 <el-input style="font-size:30px" v-model="form.engineNo" placeholder="请输入发动机号" clearable  @keyup.enter.native="EngineNohandleChange" >
                   <el-button slot="append" plain type="info" @click="EngineNohandleChange(form.engineNo)" icon="el-icon-search"></el-button>
                 </el-input>
               </el-form-item>
             </el-form>
           </el-descriptions-item>
           <el-descriptions-item>
             <el-form ref="form" :model="form"  label-width="200px" style="height: 60px;margin-top: 20px" >
               <el-form-item   prop="productType" >
                  <span slot="label" style="font-size:45px;color:black"><strong>机型</strong></span>
                  <span slot="label" style="font-size:40px;color:black"><strong>机型</strong></span>
                 <el-input disabled style="font-size:30px"  value="form.productType" v-model="form.productType" placeholder="" />
               </el-form-item>
             </el-form>
           </el-descriptions-item>
           <el-descriptions-item>
             <el-form ref="form" :model="form"  label-width="200px" style="height: 60px;margin-top: 20px" >
               <el-form-item   prop="orderNo" >
               <span  slot="label" style="font-size:45px;color:black"><strong>工单编号</strong></span>
               <span  slot="label" style="font-size:40px;color:black"><strong>工单编号</strong></span>
                 <el-input disabled style="font-size:30px" v-model="form.orderNo" placeholder="" />
               </el-form-item>
             </el-form>
           </el-descriptions-item>
           <el-descriptions-item>
             <el-form ref="form" :model="form"  label-width="200px" style="height: 60px;margin-top: 20px" >
               <el-form-item   prop="currentWorkstation" >
               <span slot="label" style="font-size:45px;color:black"><strong>质量状态</strong></span>
               <span slot="label" style="font-size:40px;color:black"><strong>质量状态</strong></span>
                 <el-input disabled style="font-size:30px" v-model:value="form.add" placeholder="" />
               </el-form-item>
             </el-form>
           </el-descriptions-item>
         </el-descriptions>
         <el-divider></el-divider>
         <el-row :gutter="10" class="mb8" type="flex" justify="center"  style="text-align: center">
           <el-col :span="1.5">
             <el-button plain  :disabled="buttondisabled" type="primary" style="width:400px;height:160px" v-hasPermi="['bs:formula:add']" @click="forceOnline">
               <span   class="el-icon-thumb"   style="font-size:45px;color:black"></span>
               <span   class="el-icon-thumb"   style="font-size:40px;color:black"></span>
               <span style="font-size:45px;color:black"><strong>强制上线</strong></span>
             </el-button>
           </el-col>
@@ -62,17 +53,17 @@
       </el-card>
     </el-col>
     <el-col :span="14"  inline style="height:600px;width:600px  ">
     <el-col :span="10"  inline >
       <el-tabs type="border-card"  >
         <el-card>
         <el-col :span="14"style="height: 270px;width:800px  ">
         <el-col :span="14"style="height: 248px;width:800px  ">
           <span style="font-size:25px"><strong>质量状态</strong></span>
           <el-divider></el-divider>
           {{this.form.engineCheckList}}
         </el-col>
         </el-card>
         <el-card style="margin-top: 10px" >
         <el-col :span="14"style="height: 270px;width:800px  ">
         <el-col :span="14"style="height: 248px;width:800px  ">
           <span style="font-size:25px"><strong>最终结果</strong></span>
           <el-divider></el-divider>
           {{queryParams.productType}}
@@ -163,7 +154,6 @@
          else{
            this.reset();
            this.buttondisabled = true
            // this.$modal.msgError('输入的发动机号有误');
            const h = this.$createElement;
            this.$message({
              message: h('p',null, [
@@ -202,7 +192,6 @@
<style scoped>
::v-deep .el-input__inner{
  height: 50px;
  width: 450px;
}
::v-deep .el-form-item__label {
  line-height: 50px;
jcdm-ui/src/views/main/pr/tightenReport/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,203 @@
<template>
  <div class="app-container">
    <el-card class="box-card" >
      <el-form :model="queryParams" ref="queryForm" :inline="true"  v-show="showSearch" label-width="68px" >
        <el-form-item label-width="120" label="箱体编码:" prop="sfcCode">
          <el-input clearable
            v-model="queryParams.sfcCode"
            placeholder="请输入箱体编码"
            @keyup.enter.native="handleQuery"/>
        </el-form-item>
        <el-form-item label-width="120" label="工位号:" prop="locationCode">
          <el-input clearable
            v-model="queryParams.locationCode"
            placeholder="请输入工位号"
            @keyup.enter.native="handleQuery"/>
        </el-form-item>
        <el-form-item label-width="120"  label="采集时间" prop="startDate">
            <el-date-picker
              v-model="dateRange"
              type="daterange"
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期">
            </el-date-picker>
        </el-form-item>
        <el-form-item style="float: right">
          <el-button type="primary" icon="el-icon-refresh" @click="handleQuery">查询</el-button>
          <el-button type=""    icon="el-icon-refresh"  @click="resetQuery">重置</el-button>
        </el-form-item>
      </el-form>
    </el-card>
    <el-card style="margin-top: 10px" class="box-card">
      <el-table v-loading="loading" border :data="tightenReportList" @selection-change="handleSelectionChange" v-if="tightenReportList.length > 0">
        <el-table-column type="selection" width="55" align="center" />
        <el-table-column label="箱体编码" align="center" width="200" prop="sfcCode"></el-table-column>
        <el-table-column label="工位" align="center" prop="locationCode"></el-table-column>
        <el-table-column label="参数编码" align="center" prop="paramCode"></el-table-column>
        <el-table-column label="参数名称" align="center" prop="paramName"></el-table-column>
        <el-table-column label="参数值" align="center" prop="paramValue"></el-table-column>
        <el-table-column label="采集时间" align="center" prop="collectionTime" width="180">
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.collectionTime, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column label="状态" align="center" prop="state"></el-table-column>
        <el-table-column label="单位" align="center" prop="unit"></el-table-column>
      </el-table>
      <el-empty v-else>
        <span slot="description">暂无数据</span>
      </el-empty>
    </el-card>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
  </div>
</template>
<script>
import { listParamCollection, getParamCollection, delParamCollection, addParamCollection, updateParamCollection } from "@/api/main/da/paramCollection/paramCollection";
export default {
  name: "index",
  computed: {
  },
  dicts: ['sys_normal_disable','order_scheduling_produce_status','print_status'],
  components: {
  },
  data(){
    return{
      dateRange: '',
      // ç”¨äºŽå­˜å‚¨é€‰æ‹©çš„日期范围
      total: 0,
      ids: [],
      tightenReportList: [],
      loading: true,
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        workOrderNo: null,
        sfcCode: null,
        productCode: null,
        productionLine: null,
        locationCode: null,
        equipmentNo: null,
        paramCode: null,
        paramValue: null,
        paramUpper: null,
        paramLower: null,
        paramStandard: null,
        collectionTime: null,
        spareField1: null,
        spareField2: null,
        createUser: null,
        createTime: null,
        updateUser: null,
        updateTime: null,
        state: null,
        paramName: null,
        unit: null,
        type: '拧紧数据',
        startDate: null,
        endDate: null
      },
    }
  },
  created() {
    this.getList();
  },
  methods: {
    //   async fetchData() {
    //     // æž„建API请求的URL,使用选择的日期范围作为查询参数
    //     const url = `@/api/main/da/paramCollection/paramCollection?startDate=${this.dateRange[0]}&endDate=${this.dateRange[1]}`;
    //
    //     try {
    //       // å‘送API请求,获取查询结果
    //       const response = await fetch(url);
    //       const data = await response.json();
    //       console.log(data); // å¤„理查询结果,比如在控制台输出或显示在页面上
    //     } catch (error) {
    //       console.error('Error fetching data:', error);
    //     }
    //   },
    // },
    reset() {
      this.form = {
        id: null,
        workOrderNo: null,
        sfcCode: null,
        productCode: null,
        productionLine: null,
        locationCode: null,
        equipmentNo: null,
        paramCode: null,
        paramValue: null,
        paramUpper: null,
        paramLower: null,
        paramStandard: null,
        collectionTime: null,
        spareField1: null,
        spareField2: null,
        createUser: null,
        createTime: null,
        updateUser: null,
        updateTime: null,
        state: null,
        paramName: null,
        unit: null,
        type: '拧紧数据',
      };
      this.resetForm("form");
    },
    /** æœç´¢æŒ‰é’®æ“ä½œ */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    // å¤šé€‰æ¡†é€‰ä¸­æ•°æ®
    handleSelectionChange(selection) {
      this.ids = selection.map(item => item.id)
      this.single = selection.length !== 1
      this.multiple = !selection.length
    },
    getList() {
      this.loading = true;
      listParamCollection(this.queryParams).then(response => {
        this.tightenReportList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
  },
}
</script>
<style scoped>
::v-deep .el-form-item__label{
  font-size: large;
}
::v-deep .el-card__body{
  padding: 15px 20px 0px 20px;
}
</style>