1
hwh
2024-08-23 3d1df57ccc06c0c84813fac71f19ee5a4187b3da
1
10个文件已修改
2个文件已添加
5115 ■■■■■ 已修改文件
Admin.NET/WCS.Application/PLC/PLCService.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/PLC/PLCUtil.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcOutput.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationOutput.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Service/WcsTaskMonitor/WcsTaskMonitorService.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/WCS.Application.csproj 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/.env.production 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/dist.rar 补丁 | 查看 | 原始文档 | blame | 历史
Web/src/views/login/index.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Web/stats.html 4842 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -12,32 +12,47 @@
        switch (mod.Type)
        {
            case PLCTypeEnum.StackingMachine:
                if (mod.Value == 820)
                //写死测试读string
                var (res, val) = mod.PLCUtil.GetPlcDBValue(PLCDataTypeEnum.String, "DB100", "64");
                Console.WriteLine("DB100.64----" + val);
                //测试批量读取
                Dictionary<string, PLCDataTypeEnum> listaddress = new Dictionary<string, PLCDataTypeEnum>();
                foreach (var modStation in mod.listStation)
                {
                    //测试写入830
                    var result = mod.PLCUtil.SetPlcDBValue(mod.PosType.Value, mod.DbNumber, mod.PlcPos, "830");
                    //写入是否成功
                    if (result.IsSucceed)
                    listaddress.Add(modStation.PlcPos, modStation.PosType.Value);
                }
                var result = mod.PLCUtil.GetPlcBatchDBValue(listaddress);
                if (result.Value.Count > 0)
                {
                    foreach (var value in result.Value)
                    {
                        Console.WriteLine("地址" + value.Key + "----值" + value, value);
                    }
                }
                if (!result.IsSucceed)
                {
                    foreach (var err in result.ErrList)
                    {
                        Console.WriteLine(err);
                    }
                    if (result.Value.Count > 0)//有错误的也有成功的
                    {
                    }
                }
                if (mod.Value == 820)
                {
                    //测试写入830
                    //var result = mod.PLCUtil.SetPlcDBValue(mod.PosType.Value, mod.DbNumber, mod.PlcPos, "830");
                    ////写入是否成功
                    //if (result.IsSucceed)
                    //{
                    //}
                }
                else if (mod.Value == 840)
                {
                    //测试批量读取
                    Dictionary<string, PLCDataTypeEnum> listaddress = new Dictionary<string, PLCDataTypeEnum>();
                    foreach (var modStation in mod.listStation)
                    {
                        listaddress.Add(modStation.PlcPos, modStation.PosType.Value);
                    }
                    var result = mod.PLCUtil.GetPlcBatchDBValue(listaddress);
                    if (!result.IsSucceed)
                    {
                        if (result.Value.Count > 0)//有错误的也有成功的
                        {
                        }
                    }
                }
                else if (mod.Value == 860)
                {
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -10,7 +10,7 @@
    private static List<WcsStation> listPlcStation;
    private static List<PLCUtil> listPlcUtil = new List<PLCUtil>();
    private static CancellationTokenSource cts = new CancellationTokenSource();//取消线程标识
    private static CancellationTokenSource cts;//取消线程标识
    public static event EventHandler DeviceValueChangeEvent;
    static PLCTaskAction()
@@ -85,16 +85,16 @@
                            var (result, value) = modPlcUtil.GetPlcDBValue(modDevice.PosType.Value, modDevice.DbNumber, modDevice.PlcPos);
                            if (result.IsSucceed)
                            {
                                if (value != 0)
                                {
                                    var dto = modDevice.Adapt<WcsDeviceDto>();
                                    dto.Value = value;
                                    dto.Type = _modplc.Type;
                                    dto.PLCUtil = modPlcUtil;
                                    dto.listStation = listPlcStation.Where(s => s.DeviceId == modDevice.Id).ToList();
                                    //这里触发值变更事件
                                    DeviceValueChangeEvent?.Invoke(dto, EventArgs.Empty);
                                }
                                //if (value != 0)
                                //{
                                var dto = modDevice.Adapt<WcsDeviceDto>();
                                dto.Value = value;
                                dto.Type = _modplc.Type;
                                dto.PLCUtil = modPlcUtil;
                                dto.listStation = listPlcStation.Where(s => s.DeviceId == modDevice.Id).ToList();
                                //这里触发值变更事件
                                DeviceValueChangeEvent?.Invoke(dto, EventArgs.Empty);
                                //}
                            }
                            else
                            {
Admin.NET/WCS.Application/PLC/PLCUtil.cs
@@ -80,6 +80,9 @@
            case PLCDataTypeEnum.Double:
                result = _client.ReadDouble(address);
                break;
            case PLCDataTypeEnum.String:
                result = _client.ReadString(address);
                break;
            default:
                result = new IoTClient.Result<object>();
                break;
Admin.NET/WCS.Application/Service/WcsPlc/Dto/WcsPlcOutput.cs
@@ -41,6 +41,50 @@
    /// </summary>
    public string? Text { get; set; }
    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime? CreateTime { get; set; }
    /// <summary>
    /// 更新时间
    /// </summary>
    public DateTime? UpdateTime { get; set; }
    /// <summary>
    /// 创建者Id
    /// </summary>
    public long? CreateUserId { get; set; }
    /// <summary>
    /// 创建者姓名
    /// </summary>
    public string? CreateUserName { get; set; }
    /// <summary>
    /// 修改者Id
    /// </summary>
    public long? UpdateUserId { get; set; }
    /// <summary>
    /// 修改者姓名
    /// </summary>
    public string? UpdateUserName { get; set; }
    /// <summary>
    /// 创建者部门Id
    /// </summary>
    public long? CreateOrgId { get; set; }
    /// <summary>
    /// 创建者部门名称
    /// </summary>
    public string? CreateOrgName { get; set; }
    /// <summary>
    /// 软删除
    /// </summary>
    public bool IsDelete { get; set; }
}
Admin.NET/WCS.Application/Service/WcsStation/Dto/WcsStationOutput.cs
@@ -10,42 +10,85 @@
    /// 主键Id
    /// </summary>
    public long Id { get; set; }
    /// <summary>
    /// 设备ID
    /// </summary>
    public long DeviceId { get; set; }
    public long DeviceId { get; set; }
    /// <summary>
    /// 设备ID 描述
    /// </summary>
    public string? DeviceIdText { get; set; }
    public string? DeviceIdText { get; set; }
    /// <summary>
    /// 工位号
    /// </summary>
    public string? StationNum { get; set; }
    /// <summary>
    /// 偏移量
    /// </summary>
    public string? PlcPos { get; set; }
    /// <summary>
    /// 流程字类型
    /// </summary>
    public PLCDataTypeEnum? PosType { get; set; }
    /// <summary>
    /// 显示屏ip地址
    /// </summary>
    public string? LedIP { get; set; }
    /// <summary>
    /// 描述
    /// </summary>
    public string? Text { get; set; }
    }
    /// <summary>
    /// 创建时间
    /// </summary>
    public DateTime? CreateTime { get; set; }
    /// <summary>
    /// 更新时间
    /// </summary>
    public DateTime? UpdateTime { get; set; }
    /// <summary>
    /// 创建者Id
    /// </summary>
    public long? CreateUserId { get; set; }
    /// <summary>
    /// 创建者姓名
    /// </summary>
    public string? CreateUserName { get; set; }
    /// <summary>
    /// 修改者Id
    /// </summary>
    public long? UpdateUserId { get; set; }
    /// <summary>
    /// 修改者姓名
    /// </summary>
    public string? UpdateUserName { get; set; }
    /// <summary>
    /// 创建者部门Id
    /// </summary>
    public long? CreateOrgId { get; set; }
    /// <summary>
    /// 创建者部门名称
    /// </summary>
    public string? CreateOrgName { get; set; }
    /// <summary>
    /// 软删除
    /// </summary>
    public bool IsDelete { get; set; }
}
Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
@@ -1,11 +1,4 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core.Service;
using Microsoft.AspNetCore.Http;

namespace WCS.Application;
/// <summary>
Admin.NET/WCS.Application/Service/WcsTaskMonitor/WcsTaskMonitorService.cs
@@ -1,11 +1,4 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core.Service;
using Microsoft.AspNetCore.Http;

namespace WCS.Application;
/// <summary>
Admin.NET/WCS.Application/WCS.Application.csproj
@@ -123,9 +123,6 @@
  <ItemGroup>
    <ProjectReference Include="..\Admin.NET.Core\Admin.NET.Core.csproj" />
    <ProjectReference Include="..\Plugins\Admin.NET.Plugin.ApprovalFlow\Admin.NET.Plugin.ApprovalFlow.csproj" />
    <ProjectReference Include="..\Plugins\Admin.NET.Plugin.DingTalk\Admin.NET.Plugin.DingTalk.csproj" />
    <ProjectReference Include="..\Plugins\Admin.NET.Plugin.GoView\Admin.NET.Plugin.GoView.csproj" />
  </ItemGroup>
</Project>
Web/.env.production
@@ -2,4 +2,4 @@
ENV = production
# 线上环境接口地址
VITE_API_URL =
VITE_API_URL = http://localhost:5005
Web/dist.rar
Binary files differ
Web/src/views/login/index.vue
@@ -8,7 +8,7 @@
                    <span class="login-left-logo-text-msg">{{ getThemeConfig.globalViceTitleMsg }}</span>
                </div>
            </div>
            <el-carousel height="500px" class="login-carousel">
            <!-- <el-carousel height="500px" class="login-carousel">
                <el-carousel-item>
                    <img :src="loginIconTwo" class="login-icon-group-icon" />
                </el-carousel-item>
@@ -18,7 +18,7 @@
                <el-carousel-item>
                    <img :src="loginIconTwo2" class="login-icon-group-icon" />
                </el-carousel-item>
            </el-carousel>
            </el-carousel> -->
        </div>
        <div class="login-right flex">
            <div class="login-right-warp flex-margin">
@@ -32,16 +32,16 @@
                                <el-tab-pane :label="$t('message.label.one1')" name="account">
                                    <Account />
                                </el-tab-pane>
                                <el-tab-pane :label="$t('message.label.two2')" name="mobile">
                                <!-- <el-tab-pane :label="$t('message.label.two2')" name="mobile">
                                    <Mobile />
                                </el-tab-pane>
                                </el-tab-pane> -->
                            </el-tabs>
                        </div>
                        <Scan v-if="state.isScan" />
                        <div class="login-content-main-scan" @click="state.isScan = !state.isScan">
                        <!-- <div class="login-content-main-scan" @click="state.isScan = !state.isScan">
                            <i class="iconfont" :class="state.isScan ? 'icon-diannao1' : 'icon-barcode-qr'"></i>
                            <div class="login-content-main-scan-delta"></div>
                        </div>
                        </div> -->
                    </div>
                </div>
            </div>
@@ -88,16 +88,21 @@
.login-container {
    height: 100%;
    background-color: rgba(53, 62, 84);
    .login-left {
        width: 50%;
        width: 20%;
        position: fixed;
        z-index: 100;
        height: 100%;
        float: left;
        // float: left;
        justify-content: center;
        .login-carousel {
            position: relative;
            top: 50%;
            transform: translateY(-50%);
        }
        .login-left-logo {
            display: flex;
            align-items: center;
@@ -106,19 +111,23 @@
            left: 30px;
            z-index: 1;
            animation: logoAnimation 0.3s ease;
            img {
                // width: 100px;
                height: 64px;
            }
            .login-left-logo-text {
                display: flex;
                flex-direction: column;
                span {
                    margin-left: 20px;
                    font-size: 28px;
                    font-weight: 700;
                    color: var(--el-color-white);
                }
                .login-left-logo-text-msg {
                    padding-top: 5px;
                    font-size: 14px;
@@ -126,6 +135,7 @@
                }
            }
        }
        .login-icon-group-icon {
            width: 85%;
            height: 85%;
@@ -135,15 +145,19 @@
            transform: translateY(-50%) translate3d(0, 0, 0);
        }
    }
    .login-right {
        width: 50%;
        float: right;
        width: 60%;
        // float: right;
        margin-left: auto;
        margin-right: auto;
        background: var(--el-color-white);
        background-image: url('../../assets/bg.svg');
        background-size: 100% auto;
        background-position: 50% calc(50% - 15px);
        background-attachment: fixed;
        background-repeat: no-repeat;
        .login-right-warp {
            border: 1px solid var(--el-color-primary-light-3);
            border-radius: 3px;
@@ -151,12 +165,14 @@
            position: relative;
            overflow: hidden;
            background-color: var(--el-color-white);
            .login-right-warp-one,
            .login-right-warp-two {
                position: absolute;
                display: block;
                width: inherit;
                height: inherit;
                &::before,
                &::after {
                    content: '';
@@ -164,6 +180,7 @@
                    z-index: 1;
                }
            }
            .login-right-warp-one {
                &::before {
                    filter: hue-rotate(0deg);
@@ -174,6 +191,7 @@
                    background: linear-gradient(90deg, transparent, var(--el-color-primary));
                    animation: loginLeft 3s linear infinite;
                }
                &::after {
                    filter: hue-rotate(0deg);
                    top: -100%;
@@ -185,6 +203,7 @@
                    animation-delay: 0.7s;
                }
            }
            .login-right-warp-two {
                &::before {
                    filter: hue-rotate(0deg);
@@ -196,6 +215,7 @@
                    animation: loginRight 3s linear infinite;
                    animation-delay: 1.4s;
                }
                &::after {
                    filter: hue-rotate(0deg);
                    bottom: -100%;
@@ -207,10 +227,12 @@
                    animation-delay: 2.1s;
                }
            }
            .login-right-warp-main {
                display: flex;
                flex-direction: column;
                height: 100%;
                .login-right-warp-main-title {
                    height: 130px;
                    line-height: 130px;
@@ -222,9 +244,11 @@
                    animation-delay: 0.3s;
                    color: var(--el-color-primary);
                }
                .login-right-warp-main-form {
                    flex: 1;
                    padding: 0 50px 50px;
                    .login-content-main-scan {
                        position: absolute;
                        top: 0;
@@ -235,6 +259,7 @@
                        cursor: pointer;
                        transition: all ease 0.3s;
                        color: var(--el-color-primary);
                        &-delta {
                            position: absolute;
                            width: 35px;
@@ -245,11 +270,13 @@
                            background: var(--el-color-white);
                            transform: rotate(-45deg);
                        }
                        &:hover {
                            opacity: 1;
                            transition: all ease 0.3s;
                            color: var(--el-color-primary) !important;
                        }
                        i {
                            width: 47px;
                            height: 50px;
@@ -263,6 +290,7 @@
                }
            }
        }
        /* 在这里可以添加一个伪元素来覆盖原内容,实现磨砂效果 */
        .login-right-warp::before {
            content: '';
@@ -272,17 +300,19 @@
            width: 100%;
            height: 100%;
            background-color: rgba(255, 255, 255, 1);
            filter: blur(4px); /* 调整模糊半径以改变磨砂效果强度 */
            filter: blur(4px);
            /* 调整模糊半径以改变磨砂效果强度 */
            z-index: 1;
        }
        /* 保持原有内容可见,放置在伪元素下方 */
        .login-right-warp > * {
        .login-right-warp>* {
            position: relative;
            z-index: 2;
        }
    }
}
.copyright,
.icp {
    position: absolute;
@@ -290,39 +320,48 @@
    transform: translateX(-50%);
    white-space: nowrap;
}
@media screen and (min-width: 1200px) {
    .login-right-warp {
        width: 500px;
    }
    .copyright,
    .icp {
        left: 75%;
        color: var(--el-text-color-secondary);
    }
    .icp {
        .el-link {
            color: var(--el-text-color-secondary);
        }
    }
}
@media screen and (max-width: 1200px) {
    .copyright,
    .icp {
        left: 50%;
        color: var(--el-color-white);
    }
    .icp {
        .el-link {
            color: var(--el-color-white);
        }
    }
}
@media screen and (max-width: 580px) {
    .copyright,
    .icp {
        left: 50%;
        color: var(--el-text-color-secondary);
    }
    .icp {
        .el-link {
            color: var(--el-text-color-secondary);
Web/stats.html
New file
Diff too large