hdy
2023-12-23 fdb6c1dda1f7390ed9351eedd93acf29558c7195
Merge remote-tracking branch 'origin/master'
已修改9个文件
已添加10个文件
1214 ■■■■■ 文件已修改
jcdm-admin/src/main/resources/application.yml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/pom.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/domain/DaOpcuaConfig.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/CustomRunner.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/TestCallback.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/mapper/DaOpcuaConfigMapper.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/IDaOpcuaConfigService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/impl/DaOpcuaConfigServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-main/src/main/resources/mapper/da/opcuaconfig/DaOpcuaConfigMapper.xml 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-system/src/main/resources/mapper/system/SysConfigMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-system/src/main/resources/mapper/system/SysDictDataMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-system/src/main/resources/mapper/system/SysNoticeMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-system/src/main/resources/mapper/system/SysRoleMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-ui/src/views/main/da/opcuaconfig/index.vue 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/ry_20231130.sql 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jcdm-admin/src/main/resources/application.yml
@@ -130,3 +130,11 @@
  excludes: /system/notice
  # åŒ¹é…é“¾æŽ¥
  urlPatterns: /system/*,/monitor/*,/tool/*
kangaroohy:
  milo:
    primary: default
    config:
      default:
        endpoint: opc.tcp://127.0.0.1:49320
        security-policy: none
jcdm-main/pom.xml
@@ -21,6 +21,32 @@
        <dependency>
            <groupId>com.jcdm</groupId>
            <artifactId>jcdm-common</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>mybatis-spring</artifactId>
                    <groupId>org.mybatis</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>mybatis</artifactId>
                    <groupId>org.mybatis</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>jsqlparser</artifactId>
                    <groupId>com.github.jsqlparser</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.kangaroohy</groupId>
            <artifactId>milo-spring-boot-starter</artifactId>
            <version>3.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/controller/DaOpcuaConfigController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,112 @@
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.enums.BusinessType;
import com.jcdm.common.utils.poi.ExcelUtil;
import com.jcdm.common.core.page.TableDataInfo;
/**
 * OPCUA参数设置Controller
 *
 * @author yyt
 * @date 2023-12-22
 */
@RestController
@RequestMapping("/da/opcuaconfig")
public class DaOpcuaConfigController extends BaseController
{
    @Autowired
    private IDaOpcuaConfigService daOpcuaConfigService;
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:list')")
    @GetMapping("/list")
    public TableDataInfo list(DaOpcuaConfig daOpcuaConfig)
    {
        startPage();
        List<DaOpcuaConfig> list = daOpcuaConfigService.selectDaOpcuaConfigList(daOpcuaConfig);
        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)
    @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参数设置数据");
    }
    /**
     * èŽ·å–OPCUA参数设置详细信息
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(daOpcuaConfigService.selectDaOpcuaConfigById(id));
    }
    /**
     * æ–°å¢žOPCUA参数设置
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:add')")
    @Log(title = "OPCUA参数设置", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody DaOpcuaConfig daOpcuaConfig)
    {
        return toAjax(daOpcuaConfigService.insertDaOpcuaConfig(daOpcuaConfig));
    }
    /**
     * ä¿®æ”¹OPCUA参数设置
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:edit')")
    @Log(title = "OPCUA参数设置", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody DaOpcuaConfig daOpcuaConfig)
    {
        return toAjax(daOpcuaConfigService.updateDaOpcuaConfig(daOpcuaConfig));
    }
    /**
     * åˆ é™¤OPCUA参数设置
     */
    @PreAuthorize("@ss.hasPermi('da:opcuaconfig:remove')")
    @Log(title = "OPCUA参数设置", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(daOpcuaConfigService.deleteDaOpcuaConfigByIds(ids));
    }
}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/domain/DaOpcuaConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,163 @@
package com.jcdm.main.da.opcuaconfig.domain;
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
 *
 * @author yyt
 * @date 2023-12-22
 */
public class DaOpcuaConfig extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** ID */
    private Long id;
    /** æ‰€å±žæ¨¡å— */
    @Excel(name = "所属模块")
    private String module;
    /** èŠ‚点 */
    @Excel(name = "节点")
    private String node;
    /** é•¿åº¦ */
    @Excel(name = "长度")
    private Long length;
    /** ç±»åž‹ */
    @Excel(name = "类型")
    private String sysTypes;
    /** åŠŸèƒ½è¯´æ˜Ž */
    @Excel(name = "功能说明")
    private String functionality;
    /** æ˜¯å¦è®¢é˜… */
    @Excel(name = "是否订阅")
    private Long subscribe;
    /** è®¢é˜…响应模块 */
    @Excel(name = "订阅响应模块")
    private String rModule;
    /** è®¢é˜…响应函数 */
    @Excel(name = "订阅响应函数")
    private String rFunction;
    /** å¤‡æ³¨ */
    @Excel(name = "备注")
    private String remarks;
    public void setId(Long id)
    {
        this.id = id;
    }
    public Long getId()
    {
        return id;
    }
    public void setModule(String module)
    {
        this.module = module;
    }
    public String getModule()
    {
        return module;
    }
    public void setNode(String node)
    {
        this.node = node;
    }
    public String getNode()
    {
        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;
    }
    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()
    {
        return rFunction;
    }
    public void setRemarks(String remarks)
    {
        this.remarks = remarks;
    }
    public String getRemarks()
    {
        return remarks;
    }
    @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())
            .toString();
    }
}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/CustomRunner.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.jcdm.main.da.opcuaconfig.init;
import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
import com.kangaroohy.milo.service.MiloService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@Slf4j
public class CustomRunner implements ApplicationRunner {
    @Autowired
    private MiloService miloService;
    @Override
    public void run(ApplicationArguments args) throws Exception {
        sub();
    }
    private void sub() throws Exception {
        List<String> ids = new ArrayList<>();
        ids.add("nbu01.OP1010.PalletID");
//        miloService.subscriptionFromOpcUa(ids, (id, value) -> log.info("subscription ç‚¹ä½ï¼š{} è®¢é˜…到消息:{}", id, value));
        TestCallback testCallback = new TestCallback();
        miloService.subscriptionFromOpcUa(ids,testCallback);
    }
}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/init/TestCallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.jcdm.main.da.opcuaconfig.init;
import com.jcdm.main.da.opcuaconfig.controller.DaOpcuaConfigController;
import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
@Component
public class TestCallback implements SubscriptionCallback {
//    public List<DaOpcuaConfig> b = null;
//    @Autowired
//    private DaOpcuaConfigController daOpcuaConfigController;
//    public void onSubscribe(String identifier, Object value) {
//        if (b == null || 0 > b.size()) {
//            DaOpcuaConfig daOpcuaConfig=new DaOpcuaConfig();
//            daOpcuaConfig.setSubscribe(1L);
//            b=daOpcuaConfigController.getconfig(daOpcuaConfig);
//        }
//        //使用Stream API在List<T>中查找元素
//        DaOpcuaConfig opcuaConf = b.stream()
//                .filter(customer ->identifier.equals(customer.getNode()))
//                .findAny()
//                .orElse(null);
//        try {
//            Class<?> clazz = Class.forName(opcuaConf.getrModule());
//            Method method = clazz.getMethod(opcuaConf.getrFunction(), new Class[] { String.class,
//                    String.class });
//            method.invoke(clazz.newInstance(),new Object[] {
//                    new String(identifier), new String(value.toString()) });
//        } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException |
//                 InvocationTargetException e) {
//            e.printStackTrace();
//        }
//    }
    public void onSubscribe(String identifier, Object value) {
        if(identifier.equals("nbu01.OP1010.PalletID")){
            switch(value.toString()) {
                case "Q":
                    System.out.println("订阅回调成功QQQ");
                    break;
                case "T":
                    System.out.println("订阅回调成功TTT");
                    break;
                case "F":
                    System.out.println("订阅回调成功");
                    break;
                default:
                    break;
            }
        }
    }
}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/mapper/DaOpcuaConfigMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.jcdm.main.da.opcuaconfig.mapper;
import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
import java.util.List;
/**
 * OPCUA参数设置Mapper接口
 *
 * @author yyt
 * @date 2023-12-22
 */
public interface DaOpcuaConfigMapper
{
    /**
     * æŸ¥è¯¢OPCUA参数设置
     *
     * @param id OPCUA参数设置主键
     * @return OPCUA参数设置
     */
    public DaOpcuaConfig selectDaOpcuaConfigById(Long id);
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return OPCUA参数设置集合
     */
    public List<DaOpcuaConfig> selectDaOpcuaConfigList(DaOpcuaConfig daOpcuaConfig);
    /**
     * æ–°å¢žOPCUA参数设置
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return ç»“æžœ
     */
    public int insertDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * ä¿®æ”¹OPCUA参数设置
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return ç»“æžœ
     */
    public int updateDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * åˆ é™¤OPCUA参数设置
     *
     * @param id OPCUA参数设置主键
     * @return ç»“æžœ
     */
    public int deleteDaOpcuaConfigById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤OPCUA参数设置
     *
     * @param ids éœ€è¦åˆ é™¤çš„数据主键集合
     * @return ç»“æžœ
     */
    public int deleteDaOpcuaConfigByIds(Long[] ids);
}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/IDaOpcuaConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.jcdm.main.da.opcuaconfig.service;
import com.jcdm.main.da.opcuaconfig.domain.DaOpcuaConfig;
import java.util.List;
/**
 * OPCUA参数设置Service接口
 *
 * @author yyt
 * @date 2023-12-22
 */
public interface IDaOpcuaConfigService
{
    /**
     * æŸ¥è¯¢OPCUA参数设置
     *
     * @param id OPCUA参数设置主键
     * @return OPCUA参数设置
     */
    public DaOpcuaConfig selectDaOpcuaConfigById(Long id);
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return OPCUA参数设置集合
     */
    public List<DaOpcuaConfig> selectDaOpcuaConfigList(DaOpcuaConfig daOpcuaConfig);
    /**
     * æ–°å¢žOPCUA参数设置
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return ç»“æžœ
     */
    public int insertDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * ä¿®æ”¹OPCUA参数设置
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return ç»“æžœ
     */
    public int updateDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig);
    /**
     * æ‰¹é‡åˆ é™¤OPCUA参数设置
     *
     * @param ids éœ€è¦åˆ é™¤çš„OPCUA参数设置主键集合
     * @return ç»“æžœ
     */
    public int deleteDaOpcuaConfigByIds(Long[] ids);
    /**
     * åˆ é™¤OPCUA参数设置信息
     *
     * @param id OPCUA参数设置主键
     * @return ç»“æžœ
     */
    public int deleteDaOpcuaConfigById(Long id);
}
jcdm-main/src/main/java/com/jcdm/main/da/opcuaconfig/service/impl/DaOpcuaConfigServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
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;
/**
 * OPCUA参数设置Service业务层处理
 *
 * @author yyt
 * @date 2023-12-22
 */
@Service
public class DaOpcuaConfigServiceImpl implements IDaOpcuaConfigService
{
    @Autowired
    private DaOpcuaConfigMapper daOpcuaConfigMapper;
    /**
     * æŸ¥è¯¢OPCUA参数设置
     *
     * @param id OPCUA参数设置主键
     * @return OPCUA参数设置
     */
    @Override
    public DaOpcuaConfig selectDaOpcuaConfigById(Long id)
    {
        return daOpcuaConfigMapper.selectDaOpcuaConfigById(id);
    }
    /**
     * æŸ¥è¯¢OPCUA参数设置列表
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return OPCUA参数设置
     */
    @Override
    public List<DaOpcuaConfig> selectDaOpcuaConfigList(DaOpcuaConfig daOpcuaConfig)
    {
        return daOpcuaConfigMapper.selectDaOpcuaConfigList(daOpcuaConfig);
    }
    /**
     * æ–°å¢žOPCUA参数设置
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return ç»“æžœ
     */
    @Override
    public int insertDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig)
    {
        return daOpcuaConfigMapper.insertDaOpcuaConfig(daOpcuaConfig);
    }
    /**
     * ä¿®æ”¹OPCUA参数设置
     *
     * @param daOpcuaConfig OPCUA参数设置
     * @return ç»“æžœ
     */
    @Override
    public int updateDaOpcuaConfig(DaOpcuaConfig daOpcuaConfig)
    {
        return daOpcuaConfigMapper.updateDaOpcuaConfig(daOpcuaConfig);
    }
    /**
     * æ‰¹é‡åˆ é™¤OPCUA参数设置
     *
     * @param ids éœ€è¦åˆ é™¤çš„OPCUA参数设置主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteDaOpcuaConfigByIds(Long[] ids)
    {
        return daOpcuaConfigMapper.deleteDaOpcuaConfigByIds(ids);
    }
    /**
     * åˆ é™¤OPCUA参数设置信息
     *
     * @param id OPCUA参数设置主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteDaOpcuaConfigById(Long id)
    {
        return daOpcuaConfigMapper.deleteDaOpcuaConfigById(id);
    }
}
jcdm-main/src/main/resources/mapper/da/opcuaconfig/DaOpcuaConfigMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
<?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.jcdm.main.da.opcuaconfig.mapper.DaOpcuaConfigMapper">
    <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"    />
    </resultMap>
    <sql id="selectDaOpcuaConfigVo">
        select id, module, node, length, sys_types, functionality, subscribe, r_module, r_function, remarks 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="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>
        </where>
    </select>
    <select id="selectDaOpcuaConfigById" parameterType="Long" resultMap="DaOpcuaConfigResult">
        <include refid="selectDaOpcuaConfigVo"/>
        where id = #{id}
    </select>
    <insert id="insertDaOpcuaConfig" parameterType="DaOpcuaConfig">
        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="subscribe != null">subscribe,</if>
            <if test="rModule != null">r_module,</if>
            <if test="rFunction != null">r_function,</if>
            <if test="remarks != null">remarks,</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="subscribe != null">#{subscribe},</if>
            <if test="rModule != null">#{rModule},</if>
            <if test="rFunction != null">#{rFunction},</if>
            <if test="remarks != null">#{remarks},</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="subscribe != null">subscribe = #{subscribe},</if>
            <if test="rModule != null">r_module = #{rModule},</if>
            <if test="rFunction != null">r_function = #{rFunction},</if>
            <if test="remarks != null">remarks = #{remarks},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteDaOpcuaConfigById" parameterType="Long">
        delete from da_opcua_config where id = #{id}
    </delete>
    <delete id="deleteDaOpcuaConfigByIds" parameterType="String">
        delete from da_opcua_config where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
jcdm-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
@@ -86,7 +86,7 @@
             <if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if>
             <if test="status != null and status != ''">#{status},</if>
             <if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if>
             sysdate()
             getdate()
         )
    </insert>
jcdm-system/src/main/resources/mapper/system/SysConfigMapper.xml
@@ -85,7 +85,7 @@
            <if test="configType != null and configType != ''">#{configType},</if>
            <if test="createBy != null and createBy != ''">#{createBy},</if>
            <if test="remark != null and remark != ''">#{remark},</if>
             sysdate()
             getdate()
        )
    </insert>
     
@@ -98,7 +98,7 @@
            <if test="configType != null and configType != ''">config_type = #{configType},</if>
            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
            <if test="remark != null">remark = #{remark},</if>
             update_time = sysdate()
             update_time = getdate()
        </set>
        where config_id = #{configId}
    </update>
jcdm-system/src/main/resources/mapper/system/SysDictDataMapper.xml
@@ -117,7 +117,7 @@
             <if test="status != null">#{status},</if>
             <if test="remark != null and remark != ''">#{remark},</if>
             <if test="createBy != null and createBy != ''">#{createBy},</if>
             sysdate()
             getdate()
         )
    </insert>
    
jcdm-system/src/main/resources/mapper/system/SysNoticeMapper.xml
@@ -58,7 +58,7 @@
            <if test="status != null and status != ''">#{status}, </if>
            <if test="remark != null and remark != ''">#{remark},</if>
             <if test="createBy != null and createBy != ''">#{createBy},</if>
             sysdate()
             getdate()
        )
    </insert>
     
@@ -70,7 +70,7 @@
            <if test="noticeContent != null">notice_content = #{noticeContent}, </if>
            <if test="status != null and status != ''">status = #{status}, </if>
            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
             update_time = sysdate()
             update_time = getdate()
        </set>
        where notice_id = #{noticeId}
    </update>
jcdm-system/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -131,7 +131,7 @@
             <if test="status != null and status != ''">#{status},</if>
             <if test="remark != null and remark != ''">#{remark},</if>
             <if test="createBy != null and createBy != ''">#{createBy},</if>
             sysdate()
             getdate()
         )
    </insert>
    
jcdm-ui/src/api/main/da/opcuaconfig/opcuaconfig.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
import request from '@/utils/request'
// æŸ¥è¯¢OPCUA参数设置列表
export function listOpcuaconfig(query) {
  return request({
    url: '/da/opcuaconfig/list',
    method: 'get',
    params: query
  })
}
// æŸ¥è¯¢OPCUA参数设置详细
export function getOpcuaconfig(id) {
  return request({
    url: '/da/opcuaconfig/' + id,
    method: 'get'
  })
}
// æ–°å¢žOPCUA参数设置
export function addOpcuaconfig(data) {
  return request({
    url: '/da/opcuaconfig',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹OPCUA参数设置
export function updateOpcuaconfig(data) {
  return request({
    url: '/da/opcuaconfig',
    method: 'put',
    data: data
  })
}
// åˆ é™¤OPCUA参数设置
export function delOpcuaconfig(id) {
  return request({
    url: '/da/opcuaconfig/' + id,
    method: 'delete'
  })
}
jcdm-ui/src/views/main/da/opcuaconfig/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,405 @@
<template>
  <div class="app-container">
    <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 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-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>
        <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-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-table 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="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 label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['da:opcuaconfig:edit']"
          >修改</el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['da:opcuaconfig:remove']"
          >删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <!-- æ·»åŠ æˆ–修改OPCUA参数设置对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <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-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-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>
        <el-form-item label="备注" prop="remarks">
          <el-input v-model="form.remarks" placeholder="请输入备注" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">ç¡® å®š</el-button>
        <el-button @click="cancel">取 æ¶ˆ</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { listOpcuaconfig, getOpcuaconfig, delOpcuaconfig, addOpcuaconfig, updateOpcuaconfig } from "@/api/main/da/opcuaconfig/opcuaconfig";
export default {
  name: "Opcuaconfig",
  data() {
    return {
      // é®ç½©å±‚
      loading: true,
      // é€‰ä¸­æ•°ç»„
      ids: [],
      // éžå•ä¸ªç¦ç”¨
      single: true,
      // éžå¤šä¸ªç¦ç”¨
      multiple: true,
      // æ˜¾ç¤ºæœç´¢æ¡ä»¶
      showSearch: true,
      // æ€»æ¡æ•°
      total: 0,
      // OPCUA参数设置表格数据
      opcuaconfigList: [],
      // å¼¹å‡ºå±‚标题
      title: "",
      // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚
      open: false,
      // æŸ¥è¯¢å‚æ•°
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        module: null,
        node: null,
        length: null,
        sysTypes: null,
        functionality: null,
        subscribe: null,
        rModule: null,
        rFunction: null,
      },
      // è¡¨å•å‚æ•°
      form: {},
      // è¡¨å•æ ¡éªŒ
      rules: {
        id: [
          { required: true, message: "ID不能为空", trigger: "blur" }
        ],
      }
    };
  },
  created() {
    this.getList();
  },
  methods: {
    /** æŸ¥è¯¢OPCUA参数设置列表 */
    getList() {
      this.loading = true;
      listOpcuaconfig(this.queryParams).then(response => {
        this.opcuaconfigList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    // å–消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
    // è¡¨å•é‡ç½®
    reset() {
      this.form = {
        id: null,
        module: null,
        node: null,
        length: null,
        sysTypes: null,
        functionality: null,
        subscribe: null,
        rModule: null,
        rFunction: null,
        remarks: null
      };
      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
    },
    /** æ–°å¢žæŒ‰é’®æ“ä½œ */
    handleAdd() {
      this.reset();
      this.open = true;
      this.title = "添加OPCUA参数设置";
    },
    /** ä¿®æ”¹æŒ‰é’®æ“ä½œ */
    handleUpdate(row) {
      this.reset();
      const id = row.id || this.ids
      getOpcuaconfig(id).then(response => {
        this.form = response.data;
        this.open = true;
        this.title = "修改OPCUA参数设置";
      });
    },
    /** æäº¤æŒ‰é’® */
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          if (this.form.id != null) {
            updateOpcuaconfig(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              this.getList();
            });
          } else {
            addOpcuaconfig(this.form).then(response => {
              this.$modal.msgSuccess("新增成功");
              this.open = false;
              this.getList();
            });
          }
        }
      });
    },
    /** åˆ é™¤æŒ‰é’®æ“ä½œ */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除OPCUA参数设置编号为"' + ids + '"的数据项?').then(function() {
        return delOpcuaconfig(ids);
      }).then(() => {
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {});
    },
    /** å¯¼å‡ºæŒ‰é’®æ“ä½œ */
    handleExport() {
      this.download('da/opcuaconfig/export', {
        ...this.queryParams
      }, `opcuaconfig_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>
pom.xml
@@ -177,6 +177,18 @@
                <version>${jcdm.version}</version>
            </dependency>
            <dependency>
                <groupId>com.kangaroohy</groupId>
                <artifactId>milo-spring-boot-starter</artifactId>
                <version>3.0.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
                <version>2.12.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
sql/ry_20231130.sql
@@ -23,16 +23,16 @@
-- ----------------------------
-- åˆå§‹åŒ–-部门表数据
-- ----------------------------
insert into sys_dept values(100,  0,   '0',          '若依科技',   0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(101,  100, '0,100',      '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(102,  100, '0,100',      '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(103,  101, '0,100,101',  '研发部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(104,  101, '0,100,101',  '市场部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(105,  101, '0,100,101',  '测试部门',   3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(106,  101, '0,100,101',  '财务部门',   4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(107,  101, '0,100,101',  '运维部门',   5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(108,  102, '0,100,102',  '市场部门',   1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(109,  102, '0,100,102',  '财务部门',   2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null);
insert into sys_dept values(100,  0,   '0',          '江宸',   0, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(101,  100, '0,100',      '深圳总公司', 1, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(102,  100, '0,100',      '长沙分公司', 2, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(103,  101, '0,100,101',  '研发部门',   1, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(104,  101, '0,100,101',  '市场部门',   2, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(105,  101, '0,100,101',  '测试部门',   3, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(106,  101, '0,100,101',  '财务部门',   4, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(107,  101, '0,100,101',  '运维部门',   5, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(108,  102, '0,100,102',  '市场部门',   1, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
insert into sys_dept values(109,  102, '0,100,102',  '财务部门',   2, '江宸', '15888888888', 'ry@qq.com', '0', '0', 'admin', getdate(), '', null);
-- ----------------------------
@@ -65,8 +65,8 @@
-- ----------------------------
-- åˆå§‹åŒ–-用户信息表数据
-- ----------------------------
insert into sys_user values(1,  103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '管理员');
insert into sys_user values(2,  105, 'ry',    '若依', '00', 'ry@qq.com',  '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '测试员');
insert into sys_user values(1,  103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', getdate(), 'admin', sysdate(), '', null, '管理员');
insert into sys_user values(2,  105, 'ry',    '若依', '00', 'ry@qq.com',  '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', getdate(), 'admin', sysdate(), '', null, '测试员');
-- ----------------------------