设备点检记录导出接口去掉分页参数,设备保养记录查询、明细查询、导出(接口开发)
已添加8个文件
已修改28个文件
已删除1个文件
1128 ■■■■■ 文件已修改
.vs/VueWebApi/v16/.suo 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/App_Start/Startup.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/DeviceManagerController.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/ProductionManagementController.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/SendController.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/DeviceManagerBLL.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/BasicSettingDAL.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/DeviceManagerDAL.cs 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/KanBanManagerentDAL.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/LoginDAL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/ProductionManagementDAL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Hubs/ChatHub.cs 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Hubs/ChatHub2.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-09-07.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-09-08.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-09-09.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/ImportExcelData.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/TestSocket.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/VueWebApi.csproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.dll.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.xml 142 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml 142 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/TransformWebConfig/original/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/TransformWebConfig/transformed/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/packages.config 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/Fleck.1.2.0/.signature.p7s 补丁 | 查看 | 原始文档 | blame | 历史
packages/Fleck.1.2.0/Fleck.1.2.0.nupkg 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VueWebApi/v16/.suo
Binary files differ
VueWebApi/App_Start/Startup.cs
@@ -15,10 +15,37 @@
        {
            // æœ‰å…³å¦‚何配置应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=316888
            //允许跨域
            app.UseCors(CorsOptions.AllowAll);
            //app.UseCors(CorsOptions.AllowAll);
            //app.MapSignalR("Hubs/chatHub", new HubConfiguration());
            app.MapSignalR();
            //app.MapSignalR();
            //自己设定访问路径,同时设置Hub配置项,无需指定启动的Hub类,因为它们被自动识别
            // è¿žæŽ¥æ ‡è¯†
            //app.Map("/signalr", map =>
            //{
            //     //跨域
            //    map.UseCors(CorsOptions.AllowAll);
            //    var hubConfiguration = new HubConfiguration
            //    {
            //        EnableJSONP = true
            //    };
            //     //启动配置
            //     map.RunSignalR(hubConfiguration);
            //});
            // è¿žæŽ¥æ ‡è¯†
            app.Map("/signalr", map =>
            {
                //跨域
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration
                {
                    EnableJSONP = true
                };
                //启动配置
                map.RunSignalR(hubConfiguration);
            });
        }
    }
}
VueWebApi/Controllers/DeviceManagerController.cs
@@ -665,7 +665,7 @@
        }
        #endregion
        #region[设备保养记录明细查询]
        #region[设备点检记录明细查询]
        /// <summary>
        /// è®¾å¤‡ä¿å…»è®°å½•明细查询
        /// </summary>
@@ -680,5 +680,111 @@
        }
        #endregion
        #region[设备点检记录导出]
        /// <summary>
        /// è®¾å¤‡ç‚¹æ£€è®°å½•导出
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <param name="eqpcode">设备编号</param>
        /// <param name="eqpname">设备名称</param>
        /// <param name="stanedname">标准名称</param>
        /// <param name="checkuser">点检人员</param>
        /// <param name="checkdate">点检时间</param>
        /// <returns></returns>
        [Route(template: "DeviceCheckTakeOutExcel")]
        [HttpGet]
        public HttpResponseMessage DeviceCheckTakeOutExcel(string wkshopcode = null, string eqpcode = null, string eqpname = null, string stanedname = null, string checkuser = null, string checkdate = null)
        {
            string checkopendate = "";  //点检开始时间
            string checkclosedate = "";    //点检结束时间
            if (checkdate != "" && checkdate != null)
            {
                checkopendate = checkdate.Split('~')[0].ToString();
                checkclosedate = checkdate.Split('~')[1].ToString();
            }
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = DeviceManagerBLL.DeviceCheckTakeOutExcel(wkshopcode, eqpcode, eqpname, stanedname, checkuser, checkopendate, checkclosedate);
            return TJson.toJson(mes);
        }
        #endregion
        #region[设备保养记录查询]
        /// <summary>
        /// è®¾å¤‡ä¿å…»è®°å½•查询
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <param name="eqpcode">设备编号</param>
        /// <param name="eqpname">设备名称</param>
        /// <param name="stanedname">标准名称</param>
        /// <param name="repairuser">保养人员</param>
        /// <param name="repairdate">保养时间</param>
        /// <param name="repairresult">保养结果</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "DeviceRepairTakeSearch")]
        [HttpGet]
        public HttpResponseMessage DeviceRepairTakeSearch(int page, int rows, string prop, string order, string wkshopcode = null, string eqpcode = null, string eqpname = null, string stanedname = null, string repairuser = null, string repairdate = null,string repairresult=null)
        {
            string repairopendate = "";  //点检开始时间
            string repairclosedate = "";    //点检结束时间
            if (repairdate != "" && repairdate != null)
            {
                repairopendate = repairdate.Split('~')[0].ToString();
                repairclosedate = repairdate.Split('~')[1].ToString();
            }
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = DeviceManagerBLL.DeviceRepairTakeSearch(wkshopcode, eqpcode, eqpname, stanedname, repairuser, repairopendate, repairclosedate, repairresult, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[设备保养记录明细查询]
        /// <summary>
        /// è®¾å¤‡ä¿å…»è®°å½•明细查询
        /// </summary>
        /// <param name="bywo">设备保养单号</param>
        /// <returns></returns>
        [Route(template: "DeviceRepairSubTakeSearch")]
        [HttpGet]
        public HttpResponseMessage DeviceRepairSubTakeSearch(string bywo)
        {
            mes = DeviceManagerBLL.DeviceRepairSubTakeSearch(bywo);
            return TJson.toJson(mes);
        }
        #endregion
        #region[设备保养记录导出]
        /// <summary>
        /// è®¾å¤‡ä¿å…»è®°å½•导出
        /// </summary>
        /// <param name="wkshopcode">车间编码</param>
        /// <param name="eqpcode">设备编号</param>
        /// <param name="eqpname">设备名称</param>
        /// <param name="stanedname">标准名称</param>
        /// <param name="repairuser">保养人员</param>
        /// <param name="repairdate">保养时间</param>
        /// <param name="repairresult">保养结果</param>
        /// <returns></returns>
        [Route(template: "DeviceRepairTakeOutExcel")]
        [HttpGet]
        public HttpResponseMessage DeviceRepairTakeOutExcel(string wkshopcode = null, string eqpcode = null, string eqpname = null, string stanedname = null, string repairuser = null, string repairdate = null, string repairresult = null)
        {
            string repairopendate = "";  //点检开始时间
            string repairclosedate = "";    //点检结束时间
            if (repairdate != "" && repairdate != null)
            {
                repairopendate = repairdate.Split('~')[0].ToString();
                repairclosedate = repairdate.Split('~')[1].ToString();
            }
            mes = DeviceManagerBLL.DeviceRepairTakeOutExcel(wkshopcode, eqpcode, eqpname, stanedname, repairuser, repairopendate, repairclosedate, repairresult);
            return TJson.toJson(mes);
        }
        #endregion
    }
}
VueWebApi/Controllers/ProductionManagementController.cs
@@ -672,6 +672,11 @@
        #endregion
        #region[MES工单批量关闭提交]
        /// <summary>
        /// MES工单批量关闭提交
        /// </summary>
        /// <param name="dt">工单号数组对象</param>
        /// <returns></returns>
        [Route(template: "MesOrderBitchClosedSeave")]
        [HttpPost]
        public HttpResponseMessage MesOrderBitchClosedSeave(DataTable dt)
@@ -684,6 +689,11 @@
        #endregion
        #region[MES工单批量反关闭]
        /// <summary>
        /// MES工单批量反关闭
        /// </summary>
        /// <param name="dt">工单号数组对象</param>
        /// <returns></returns>
        [Route(template: "MesOrderBitchAntiClosedSeave")]
        [HttpPost]
        public HttpResponseMessage MesOrderBitchAntiClosedSeave(DataTable dt)
VueWebApi/Controllers/SendController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using VueWebApi.Tools;
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/Send")]
    [ControllerGroup("消息提醒", "在线接口")]
    public class SendController : ApiController
    {
        private readonly ClientWebSocket webSocket = new ClientWebSocket();
        private readonly CancellationToken _cancellation = new CancellationToken();
        [HttpGet]
        public async Task SendMsg(string msg)
        {
            await webSocket.ConnectAsync(new Uri("ws://localhost:8001"), _cancellation);
            var sendBytes = Encoding.UTF8.GetBytes(msg);//发送的数据
            var bsend = new ArraySegment<byte>(sendBytes);
            await webSocket.SendAsync(bsend, WebSocketMessageType.Binary, true, _cancellation);
            await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "1", _cancellation);
            webSocket.Dispose();
        }
        //http://localhost:port/api/Send/Init
        [HttpGet]
        public string Init()
        {
            TestSocket.Instance.socketServer();
            return "success";
        }
        [HttpGet]
        public string Msg(string userid, string msg)
        {
            var _msg = TestSocket.Instance.Send(userid, msg);
            return _msg;
        }
    }
}
VueWebApi/DLL/BLL/DeviceManagerBLL.cs
@@ -260,11 +260,41 @@
        }
        #endregion
        #region[设备保养记录明细查询]
        #region[设备点检记录明细查询]
        public static ToMessage DeviceCheckSubTakeSearch(string djwo)
        {
            return DeviceManagerDAL.DeviceCheckSubTakeSearch(djwo);
        }
        #endregion
        #region[设备点检记录导出]
        public static ToMessage DeviceCheckTakeOutExcel(string wkshopcode, string eqpcode, string eqpname, string stanedname, string checkuser, string checkopendate, string checkclosedate)
        {
            return DeviceManagerDAL.DeviceCheckTakeOutExcel(wkshopcode, eqpcode, eqpname, stanedname, checkuser, checkopendate, checkclosedate);
        }
        #endregion
        #region[设备保养记录查询]
        public static ToMessage DeviceRepairTakeSearch(string wkshopcode, string eqpcode, string eqpname, string stanedname, string repairuser, string repairopendate, string repairclosedate, string repairresult, int startNum, int endNum, string prop, string order)
        {
            return DeviceManagerDAL.DeviceCheckTakeSearch(wkshopcode, eqpcode, eqpname, stanedname, repairuser, repairopendate, repairclosedate, repairresult, startNum, endNum, prop, order);
        }
        #endregion
        #region[设备保养记录明细查询]
        public static ToMessage DeviceRepairSubTakeSearch(string bywo)
        {
            return DeviceManagerDAL.DeviceRepairSubTakeSearch(bywo);
        }
        #endregion
        #region[设备保养记录导出]
        public static ToMessage DeviceRepairTakeOutExcel(string wkshopcode, string eqpcode, string eqpname, string stanedname, string repairuser, string repairopendate, string repairclosedate, string repairresult)
        {
            return DeviceManagerDAL.DeviceRepairTakeOutExcel(wkshopcode, eqpcode, eqpname, stanedname, repairuser, repairopendate, repairclosedate, repairresult);
        }
        #endregion
    }
}
VueWebApi/DLL/DAL/BasicSettingDAL.cs
@@ -320,7 +320,7 @@
                            left join TOrganization t on u.stu_torgcode=t.org_code 
                            left join TGroup g on u.usergroup_code=g.group_code
                            left join TUser S on u.lm_user=S.usercode
                            where u.is_delete<>1 " + search;
                            where u.is_delete='0' and u.userclassid='0' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -589,7 +589,7 @@
                {
                    sql = @"select B.role_code as code,B.role_name as name,(case when C.role_code is null then 'N' else 'Y' end) flag from TRole B 
                             left join(select role_code  from TUserRoleRelation where user_code=@usercode) C on B.role_code=C.role_code
                             where B.roletype_code=@roletype_code  and B.is_delete='0'";
                             where B.roletype_code=@roletype_code  and B.is_delete='0' and B.is_system='0'";
                    dynamicParams.Add("@roletype_code", data[i].code);
                    dynamicParams.Add("@usercode", usercode);
                    var data0 = DapperHelper.select<TreeObejctCn>(sql, dynamicParams);
@@ -1084,7 +1084,7 @@
                            from TRole A
                            left join TRoleType  B on A.roletype_code=B.roletype_code
                            left join TUser T on A.lm_user=T.usercode
                            where  A.is_delete<>'1' " + search;
                            where  A.is_delete='0' and A.is_system='0' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -1270,7 +1270,7 @@
                             left join TOrganization B on A.stu_torgcode=B.org_code
                             left join (
                                select distinct user_code  from TUserRoleRelation where role_code=@rolecode
                             ) C on A.usercode=C.user_code where A.is_delete<>'1' " + search;
                             ) C on A.usercode=C.user_code where A.is_delete='0' and A.userclassid='0' " + search;
                dynamicParams.Add("@rolecode", rolecode);
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
VueWebApi/DLL/DAL/DeviceManagerDAL.cs
@@ -1970,7 +1970,7 @@
        }
        #endregion
        #region[设备保养记录明细查询]
        #region[设备点检记录明细查询]
        public static ToMessage DeviceCheckSubTakeSearch(string djwo)
        {
            string sql = "";
@@ -1998,5 +1998,318 @@
            return mes;
        }
        #endregion
        #region[设备点检记录导出]
        public static ToMessage DeviceCheckTakeOutExcel(string wkshopcode, string eqpcode, string eqpname, string stanedname, string checkuser, string checkopendate, string checkclosedate)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wkshopcode != "" && wkshopcode != null)
                {
                    search += "and T.org_code=@wkshopcode ";
                    dynamicParams.Add("@wkshopcode", wkshopcode);
                }
                if (eqpcode != "" && eqpcode != null)
                {
                    search += "and A.eqp_code like '%'+@eqpcode+'%' ";
                    dynamicParams.Add("@eqpcode", eqpcode);
                }
                if (eqpname != "" && eqpname != null)
                {
                    search += "and E.name like '%'+@eqpname+'%' ";
                    dynamicParams.Add("@eqpname", eqpname);
                }
                if (stanedname != "" && stanedname != null)
                {
                    search += "and M.name like '%'+@stanedname+'%' ";
                    dynamicParams.Add("@stanedname", stanedname);
                }
                if (checkuser != "" && checkuser != null)
                {
                    search += "and A.chk_user like '%'+@checkuser+'%' ";
                    dynamicParams.Add("@checkuser", checkuser);
                }
                if (checkopendate != "" && checkopendate != null)
                {
                    search += "and A.chk_date between @checkopendate and @checkclosedate ";
                    dynamicParams.Add("@checkopendate", checkopendate + " 00:00:00");
                    dynamicParams.Add("@checkclosedate", checkclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.djwo ORDER BY B.eqpchkdeta_code) = 1 THEN A.djwo
                            ELSE ''END AS '点检单号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY E.wksp_code ORDER BY B.eqpchkdeta_code) = 1 THEN T.org_name
                            ELSE ''END AS '生产车间',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqp_code ORDER BY B.eqpchkdeta_code) = 1 THEN A.eqp_code
                            ELSE ''END AS '设备编号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqp_code ORDER BY B.eqpchkdeta_code) = 1 THEN E.name
                            ELSE ''END AS '设备名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqpchkmain_code ORDER BY B.eqpchkdeta_code) = 1 THEN A.eqpchkmain_code
                            ELSE ''END AS '点检标准编码',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqpchkmain_code ORDER BY B.eqpchkdeta_code) = 1 THEN M.name
                            ELSE ''END AS '点检标准名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.chk_user ORDER BY B.eqpchkdeta_code) = 1 THEN A.chk_user
                            ELSE ''END AS '检验人员',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.chk_result ORDER BY B.eqpchkdeta_code) = 1 THEN A.chk_result
                            ELSE ''END AS '检验结果',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.chk_date ORDER BY B.eqpchkdeta_code) = 1 THEN A.chk_date
                            END AS '检验时间',
                            B.seq as '点检部位序号',H.code '点检部位编码',H.name '点检部位名称',B.result '点检结果',B.chk_value '数值',B.remark '备注'
                            from TEqpchk_Proc_Main A
                            left join TEqpchk_Proc_Deta B on A.djwo=B.djwo
                            left join TEqpInfo E on A.eqp_code=E.code
                            left join TEqpchk_Main M on A.eqpchkmain_code=M.code
                            left join TOrganization T on E.wksp_code=T.org_code
                            left join TEqpchk_Item H on B.eqpchkdeta_code=H.code
                            where T.description='W' " + search;
                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
                data.TableName = "Table"; //设置DataTable的名称
                string msg = DownLoad.DataTableToExcel(data, "工序检验记录");
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = msg;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[设备保养记录查询]
        public static ToMessage DeviceCheckTakeSearch(string wkshopcode, string eqpcode, string eqpname, string stanedname, string repairuser, string repairopendate, string repairclosedate, string repairresult, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wkshopcode != "" && wkshopcode != null)
                {
                    search += "and T.org_code=@wkshopcode ";
                    dynamicParams.Add("@wkshopcode", wkshopcode);
                }
                if (eqpcode != "" && eqpcode != null)
                {
                    search += "and A.eqp_code like '%'+@eqpcode+'%' ";
                    dynamicParams.Add("@eqpcode", eqpcode);
                }
                if (eqpname != "" && eqpname != null)
                {
                    search += "and E.name like '%'+@eqpname+'%' ";
                    dynamicParams.Add("@eqpname", eqpname);
                }
                if (stanedname != "" && stanedname != null)
                {
                    search += "and M.name like '%'+@stanedname+'%' ";
                    dynamicParams.Add("@stanedname", stanedname);
                }
                if (repairuser != "" && repairuser != null)
                {
                    search += "and A.maint_user like '%'+@repairuser+'%' ";
                    dynamicParams.Add("@repairuser", repairuser);
                }
                if (repairopendate != "" && repairopendate != null)
                {
                    search += "and A.maint_date between @repairopendate and @repairclosedate ";
                    dynamicParams.Add("@repairopendate", repairopendate + " 00:00:00");
                    dynamicParams.Add("@repairclosedate", repairclosedate + " 23:59:59");
                }
                if (repairresult != "" && repairresult != null)
                {
                    search += "and A.maint_result=@repairresult ";
                    dynamicParams.Add("@repairresult", repairresult);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.bywo,T.org_code,T.org_name,A.eqp_code,E.name as eqp_name,M.code as stanedcode,M.name as stanedname,A.maint_cyc,
                            A.maint_user,A.maint_result,A.maint_date
                            from TEqpmaint_Proc_Main A
                            left join TEqpInfo E on A.eqp_code=E.code
                            left join TEqpmai_Main M on A.eqpmaint_code=M.code
                            left join TOrganization T on E.wksp_code=T.org_code
                            where T.description='W' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data.ToList();
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[设备保养记录明细查询]
        public static ToMessage DeviceRepairSubTakeSearch(string bywo)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select A.seq,T.code as itemcode,T.name as itemname,A.result,A.maint_value,A.remark
                        from TEqpmaint_Proc_Deta A
                        left join TEqpmai_Item T on A.eqpmaideta_code=T.code
                        where A.bywo=@bywo";
                dynamicParams.Add("@bywo", bywo);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[设备保养记录导出]
        public static ToMessage DeviceRepairTakeOutExcel(string wkshopcode, string eqpcode, string eqpname, string stanedname, string repairuser, string repairopendate, string repairclosedate, string repairresult)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wkshopcode != "" && wkshopcode != null)
                {
                    search += "and T.org_code=@wkshopcode ";
                    dynamicParams.Add("@wkshopcode", wkshopcode);
                }
                if (eqpcode != "" && eqpcode != null)
                {
                    search += "and A.eqp_code like '%'+@eqpcode+'%' ";
                    dynamicParams.Add("@eqpcode", eqpcode);
                }
                if (eqpname != "" && eqpname != null)
                {
                    search += "and E.name like '%'+@eqpname+'%' ";
                    dynamicParams.Add("@eqpname", eqpname);
                }
                if (stanedname != "" && stanedname != null)
                {
                    search += "and M.name like '%'+@stanedname+'%' ";
                    dynamicParams.Add("@stanedname", stanedname);
                }
                if (repairuser != "" && repairuser != null)
                {
                    search += "and A.maint_user like '%'+@repairuser+'%' ";
                    dynamicParams.Add("@repairuser", repairuser);
                }
                if (repairopendate != "" && repairopendate != null)
                {
                    search += "and A.chk_date between @repairopendate and @repairclosedate ";
                    dynamicParams.Add("@repairopendate", repairopendate + " 00:00:00");
                    dynamicParams.Add("@repairclosedate", repairclosedate + " 23:59:59");
                }
                if (repairresult != "" && repairresult != null)
                {
                    search += "and A.maint_result=@repairresult ";
                    dynamicParams.Add("@repairresult", repairresult);
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.bywo ORDER BY B.eqpmaideta_code) = 1 THEN A.bywo
                            ELSE ''END AS '保养单号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY E.wksp_code ORDER BY B.eqpmaideta_code) = 1 THEN T.org_name
                            ELSE ''END AS '生产车间',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqp_code ORDER BY B.eqpmaideta_code) = 1 THEN A.eqp_code
                            ELSE ''END AS '设备编号',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqp_code ORDER BY B.eqpmaideta_code) = 1 THEN E.name
                            ELSE ''END AS '设备名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqpmaint_code ORDER BY B.eqpmaideta_code) = 1 THEN A.eqpmaint_code
                            ELSE ''END AS '保养标准编码',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.eqpmaint_code ORDER BY B.eqpmaideta_code) = 1 THEN M.name
                            ELSE ''END AS '保养标准名称',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.maint_cyc ORDER BY B.eqpmaideta_code) = 1 THEN A.maint_cyc
                            ELSE ''END AS '保养周期',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.maint_user ORDER BY B.eqpmaideta_code) = 1 THEN A.maint_user
                            ELSE ''END AS '保养人员',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.maint_result ORDER BY B.eqpmaideta_code) = 1 THEN A.maint_result
                            ELSE ''END AS '保养结果',
                            CASE WHEN
                            ROW_NUMBER() OVER (PARTITION BY A.maint_date ORDER BY B.eqpmaideta_code) = 1 THEN A.maint_date
                            END AS '保养时间',
                            B.seq as '保养部位序号',H.code '保养部位编码',H.name '保养部位名称',B.result '保养结果',B.maint_value '数值',B.remark '备注'
                            from TEqpmaint_Proc_Main A
                            left join TEqpmaint_Proc_Deta B on A.bywo=B.bywo
                            left join TEqpInfo E on A.eqp_code=E.code
                            left join TEqpmai_Main M on A.eqpmaint_code=M.code
                            left join TOrganization T on E.wksp_code=T.org_code
                            left join TEqpmai_Item H on B.eqpmaideta_code=H.code
                            where T.description='W' " + search;
                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
                data.TableName = "Table"; //设置DataTable的名称
                string msg = DownLoad.DataTableToExcel(data, "工序检验记录");
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = msg;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebApi/DLL/DAL/KanBanManagerentDAL.cs
@@ -446,4 +446,5 @@
        }
        #endregion
    }
}
}
VueWebApi/DLL/DAL/LoginDAL.cs
@@ -25,7 +25,7 @@
        {
            //执行sql
            strProcName = "select *  from [dbo].[TUser] where usercode=@username and password=@password";
            strProcName = "select *  from [dbo].[TUser] where usercode=@username and password=@password and is_delete='0'";
            //创建参数
            listStr.Add(new SqlParameter("@username", username));
            listStr.Add(new SqlParameter("@password", password));
VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -2487,10 +2487,10 @@
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //关闭工单对应工序任务
                    sql = @"update TK_Wrk_Step set status='CLOSED'  where wo_code=@wocode";
                    sql = @"update TK_Wrk_Step set status='START'  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = dt.Rows[i]["WO_CODE"].ToString() } });
                    //回写工单表状态为(关闭)
                    sql = @"update TK_Wrk_Man set status='CLOSED',closeuser=@username,closedate=@closedate  where wo_code=@wocode";
                    sql = @"update TK_Wrk_Man set status='START',closeuser=@username,closedate=@closedate  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = dt.Rows[i]["WO_CODE"].ToString(), username = username, closedate = DateTime.Now.ToString() } });
                }
                bool aa = DapperHelper.DoTransaction(list);
VueWebApi/Hubs/ChatHub.cs
@@ -1,10 +1,11 @@
using Microsoft.AspNet.SignalR;
using Dapper;
using Microsoft.AspNet.SignalR;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using VueWebApi.Models;
using VueWebApi.Tools;
namespace VueWebApi.Hubs
{
@@ -29,6 +30,7 @@
        /// <param name="cont">消息内容</param>
        public void SendByGroup(string name1, string name2, string cont)
        {
            LogHelper.WriteLogData("登录人员:" + name1 + "发送人:" + name2 + "发送内容:" + cont);
            //Client内为用户的id,是唯一的,SendMessage函数是前端函数,意思是服务器将该消息推送至前端
            //Clients.Client(_connections[name2]).SendMessage("来自用户:" + name1 + " å†…容:" + cont + "" + DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss") + "的消息推送!");
            Clients.Client(_connections[name2]).SendMessage("来自用户:" + name1 + " å†…容:" + cont + "" + DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss") + "的消息推送!");
@@ -36,17 +38,18 @@
        public void SendByGroups(string name1, DataTable name2, string cont)
        {
            var departmentIDs = name2.AsEnumerable().ToList().Select(x => x.Field<string>("name")).ToList();
            var FindPublicBaseDic = _connections.Where(d => departmentIDs.Contains(d.Key)).Select(x=>x.Value).ToList();
            var FindPublicBaseDic = _connections.Where(d => departmentIDs.Contains(d.Key)).Select(x => x.Value).ToList();
            Clients.Clients(FindPublicBaseDic).SendMessage("来自用户:" + name1 + " å†…容:" + cont + "" + DateTime.Now.ToString("yyyy/MM/ddhh:mm:ss") + "的消息推送!");
        }
        /// <summary>
        /// ç”¨æˆ·ä¸Šçº¿å‡½æ•°
        /// ç”¨æˆ·ä¸Šçº¿å‡½æ•°(单用户)
        /// </summary>
        /// <param name="name">用户名</param>
        public void SendLogin(string name)
        {
            LogHelper.WriteLogData("登录人员:" + name);
            if (!userList.Contains(name))
            {
                userList.Add(name);
@@ -61,9 +64,37 @@
            //新用户上线,服务器广播该用户名
            Clients.All.loginUser(userList);
        }
        /// <summary>
        /// ç”¨æˆ·ä¸Šçº¿å‡½æ•°(多用户)
        /// </summary>
        /// <param name="code">用户名集合</param>
        public void SendLogins(string code)
        {
            string[] selects = Array.ConvertAll<string, string>(code.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string分割转string[]
            //查找系统用户
            var sql = @"select usercode as code,username as name
                            from TUser
                            where  is_delete='0' and enable='Y' and usercode in @usercode";
            var data = DapperHelper.selectlist(sql, new { shopcode = selects.ToArray() });
            for (int i = 0; i < data.Rows.Count; i++)
            {
                if (!userList.Contains(data.Rows[i]["name"].ToString()))
                {
                    userList.Add(data.Rows[i]["name"].ToString());
                    //这里便是将用户id和姓名联系起来
                    _connections.Add(data.Rows[i]["name"].ToString(), Context.ConnectionId);
                }
                else
                {
                    //每次登陆id会发生变化
                    _connections[data.Rows[i]["name"].ToString()] = Context.ConnectionId;
                }
            }
            //新用户上线,服务器广播该用户名
            Clients.All.loginUser(userList);
        }
    }
    public class UserInfo
    {
        public static IList<string> userList = new List<string>();
VueWebApi/Hubs/ChatHub2.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
using Microsoft.AspNet.SignalR;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using VueWebApi.Models;
using VueWebApi.Tools;
namespace VueWebApi.Hubs
{
    public class ChatHub2 : Hub
    {
        /// < summary>
        ///
        /// </ summary>
        public static List<string> Users = new List<string>();
        /// <summary>
        /// æœªè¿žæŽ¥äº‹ä»¶
        /// </summary>
        /// <returns></returns>
        public override Task OnConnected()
        {
            LogHelper.WriteLogData("执行OnConnected");
            string clientId = GetClientId();
            if (Users.IndexOf(clientId) == -1)
            {
                Users.Add(clientId);
            }
            Send(Users.Count);
            var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
            context.Clients.Client(clientId).updateUserName(clientId);
            return base.OnConnected();
        }
        /// <summary>
        /// é‡æ–°è¿žæŽ¥äº‹ä»¶
        /// </summary>
        /// <returns></returns>
        public override Task OnReconnected()
        {
            LogHelper.WriteLogData("执行OnReconnected");
            string clientId = GetClientId();
            if (Users.IndexOf(clientId) == -1)
            {
                Users.Add(clientId);
            }
            Send(Users.Count);
            return base.OnReconnected();
        }
        /// <summary>
        /// æ–­å¼€è¿žæŽ¥äº‹ä»¶
        /// </summary>
        /// <param name="stopCalled"></param>
        /// <returns></returns>
        public override Task OnDisconnected(bool stopCalled)
        {
            LogHelper.WriteLogData("执行OnDisconnected");
            string clientId = GetClientId();
            if (Users.IndexOf(clientId) > -1)
            {
                Users.Remove(clientId);
            }
            Send(Users.Count);
            return base.OnDisconnected(stopCalled);
        }
        /// <summary>
        /// è¿™å¯¹äºŽæ¯ä¸ªå®¢æˆ·ç«¯éƒ½æ˜¯å”¯ä¸€çš„,用于标识连接。
        /// </summary>
        /// <returns></returns>
        private string GetClientId()
        {
            string clientId = "";
            //从应用程序传递的客户ID
            if (Context.QueryString["clientId"] != null)
            {
                clientId = this.Context.QueryString["clientId"];
            }
            if (string.IsNullOrEmpty(clientId.Trim()))
            {
                clientId = Context.ConnectionId;
            }
            LogHelper.WriteLogData("执行1:" + clientId);
            return clientId;
        }
        /// <summary>
        /// Sends the update user count to the listening view.
        /// </summary>
        /// <param name="count">
        /// The count.
        /// </param>
        public void Send(int count)
        {
            LogHelper.WriteLogData("执行count:" + count);
            // Call the addNewMessageToPage method to update clients.
            var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
            context.Clients.All.updateUsersOnlineCount(count);
        }
        /// <summary>
        /// è‡ªå·±å†™çš„一个服务端方法Hello.
        /// </summary>
        /// <param name="msg">参数
        /// </param>
        public void Hello(string msg)
        {
            LogHelper.WriteLogData("执行msg:" + msg);
            var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
            context.Clients.All.clientMethod("server:" + msg);
        }
    }
}
VueWebApi/Logs/2022-09-07.TXT
VueWebApi/Logs/2022-09-08.TXT
VueWebApi/Logs/2022-09-09.TXT
VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_PublishTargetUrl>D:\网站发布\XKDMesApi</_PublishTargetUrl>
    <History>True|2022-09-06T10:29:29.2671862Z;True|2022-09-06T16:41:04.2719822+08:00;True|2022-09-06T14:17:31.6896132+08:00;True|2022-09-06T13:14:39.9657702+08:00;True|2022-09-05T13:34:47.0627238+08:00;True|2022-09-05T11:07:59.2835592+08:00;True|2022-09-02T14:01:56.1233378+08:00;True|2022-08-31T23:40:49.5468281+08:00;True|2022-08-31T22:15:50.0388123+08:00;True|2022-08-31T19:20:24.7693742+08:00;True|2022-08-31T19:00:06.8271626+08:00;True|2022-08-31T18:45:08.6483670+08:00;True|2022-08-31T16:59:34.8244511+08:00;True|2022-08-31T15:39:51.0653019+08:00;True|2022-08-31T15:25:32.5277796+08:00;True|2022-08-31T13:31:48.5734692+08:00;True|2022-08-31T12:59:02.1022191+08:00;True|2022-08-31T10:06:03.2043884+08:00;True|2022-08-30T17:36:34.5932064+08:00;True|2022-08-30T17:18:12.4582841+08:00;True|2022-08-30T12:55:16.4084322+08:00;True|2022-08-30T10:12:08.0975252+08:00;True|2022-08-30T09:12:46.2845546+08:00;True|2022-08-30T08:58:47.8389468+08:00;True|2022-08-29T17:21:17.7779579+08:00;True|2022-08-29T17:17:49.5334583+08:00;True|2022-08-29T16:53:46.6019453+08:00;True|2022-08-29T16:46:50.8158231+08:00;True|2022-08-29T12:25:19.0140888+08:00;True|2022-08-26T17:02:52.4614637+08:00;True|2022-08-26T16:52:47.8585471+08:00;True|2022-08-26T16:47:02.5766798+08:00;True|2022-08-26T16:36:15.5793109+08:00;True|2022-08-26T16:15:55.1795297+08:00;True|2022-08-26T16:00:22.2697361+08:00;False|2022-08-26T15:58:16.7347649+08:00;True|2022-08-26T15:22:29.6367466+08:00;True|2022-08-25T20:02:24.4685508+08:00;True|2022-08-25T19:50:42.8601696+08:00;True|2022-08-25T15:56:20.3615518+08:00;True|2022-08-25T15:48:16.9923580+08:00;True|2022-08-25T15:27:07.9474640+08:00;True|2022-08-25T13:11:36.9626131+08:00;True|2022-08-24T14:10:58.2790665+08:00;True|2022-08-24T11:43:10.4463552+08:00;True|2022-08-24T08:02:17.9871411+08:00;True|2022-08-23T22:50:41.0238571+08:00;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History>
    <History>True|2022-09-09T07:21:48.4251654Z;True|2022-09-09T14:45:54.9315147+08:00;True|2022-09-09T11:01:18.2619729+08:00;True|2022-09-09T09:35:40.9779148+08:00;True|2022-09-09T09:26:51.9854326+08:00;True|2022-09-09T09:11:48.8023373+08:00;True|2022-09-09T09:05:45.5528883+08:00;True|2022-09-08T17:47:35.2628987+08:00;True|2022-09-08T17:43:32.6700813+08:00;True|2022-09-08T17:01:23.6259930+08:00;True|2022-09-08T16:55:57.2305777+08:00;True|2022-09-08T16:35:37.3631720+08:00;True|2022-09-08T16:19:13.9122228+08:00;True|2022-09-08T16:04:07.7348285+08:00;True|2022-09-08T16:00:49.9961701+08:00;True|2022-09-08T15:16:03.0110619+08:00;True|2022-09-08T10:19:46.2872822+08:00;True|2022-09-08T10:11:15.5386438+08:00;True|2022-09-08T08:19:02.5242539+08:00;True|2022-09-08T08:18:11.7308721+08:00;True|2022-09-07T11:39:27.2463573+08:00;True|2022-09-07T10:40:57.8877369+08:00;True|2022-09-07T10:37:10.1517098+08:00;True|2022-09-07T10:30:08.7782107+08:00;True|2022-09-07T10:23:52.8534200+08:00;True|2022-09-07T10:09:31.6994230+08:00;True|2022-09-07T10:01:16.2683112+08:00;True|2022-09-07T09:51:47.6282546+08:00;True|2022-09-06T19:11:45.1701913+08:00;True|2022-09-06T18:29:29.2671862+08:00;True|2022-09-06T16:41:04.2719822+08:00;True|2022-09-06T14:17:31.6896132+08:00;True|2022-09-06T13:14:39.9657702+08:00;True|2022-09-05T13:34:47.0627238+08:00;True|2022-09-05T11:07:59.2835592+08:00;True|2022-09-02T14:01:56.1233378+08:00;True|2022-08-31T23:40:49.5468281+08:00;True|2022-08-31T22:15:50.0388123+08:00;True|2022-08-31T19:20:24.7693742+08:00;True|2022-08-31T19:00:06.8271626+08:00;True|2022-08-31T18:45:08.6483670+08:00;True|2022-08-31T16:59:34.8244511+08:00;True|2022-08-31T15:39:51.0653019+08:00;True|2022-08-31T15:25:32.5277796+08:00;True|2022-08-31T13:31:48.5734692+08:00;True|2022-08-31T12:59:02.1022191+08:00;True|2022-08-31T10:06:03.2043884+08:00;True|2022-08-30T17:36:34.5932064+08:00;True|2022-08-30T17:18:12.4582841+08:00;True|2022-08-30T12:55:16.4084322+08:00;True|2022-08-30T10:12:08.0975252+08:00;True|2022-08-30T09:12:46.2845546+08:00;True|2022-08-30T08:58:47.8389468+08:00;True|2022-08-29T17:21:17.7779579+08:00;True|2022-08-29T17:17:49.5334583+08:00;True|2022-08-29T16:53:46.6019453+08:00;True|2022-08-29T16:46:50.8158231+08:00;True|2022-08-29T12:25:19.0140888+08:00;True|2022-08-26T17:02:52.4614637+08:00;True|2022-08-26T16:52:47.8585471+08:00;True|2022-08-26T16:47:02.5766798+08:00;True|2022-08-26T16:36:15.5793109+08:00;True|2022-08-26T16:15:55.1795297+08:00;True|2022-08-26T16:00:22.2697361+08:00;False|2022-08-26T15:58:16.7347649+08:00;True|2022-08-26T15:22:29.6367466+08:00;True|2022-08-25T20:02:24.4685508+08:00;True|2022-08-25T19:50:42.8601696+08:00;True|2022-08-25T15:56:20.3615518+08:00;True|2022-08-25T15:48:16.9923580+08:00;True|2022-08-25T15:27:07.9474640+08:00;True|2022-08-25T13:11:36.9626131+08:00;True|2022-08-24T14:10:58.2790665+08:00;True|2022-08-24T11:43:10.4463552+08:00;True|2022-08-24T08:02:17.9871411+08:00;True|2022-08-23T22:50:41.0238571+08:00;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History>
  </PropertyGroup>
  <ItemGroup>
    <File Include="Areas/HelpPage/HelpPage.css">
@@ -103,6 +103,9 @@
    </File>
    <File Include="bin/FastReport.Web.dll">
      <publishTime>06/30/2022 13:48:36</publishTime>
    </File>
    <File Include="bin/Fleck.dll">
      <publishTime>04/22/2021 11:48:12</publishTime>
    </File>
    <File Include="bin/ICSharpCode.SharpZipLib.dll">
      <publishTime>09/19/2021 17:20:28</publishTime>
@@ -717,16 +720,16 @@
      <publishTime>12/24/2021 15:38:29</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll">
      <publishTime>09/06/2022 18:29:23</publishTime>
      <publishTime>09/09/2022 15:21:41</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll.config">
      <publishTime>06/15/2022 15:31:43</publishTime>
    </File>
    <File Include="bin/VueWebApi.pdb">
      <publishTime>09/06/2022 18:29:23</publishTime>
      <publishTime>09/09/2022 15:21:41</publishTime>
    </File>
    <File Include="bin/VueWebApi.xml">
      <publishTime>09/06/2022 18:29:23</publishTime>
      <publishTime>09/09/2022 15:21:40</publishTime>
    </File>
    <File Include="bin/WebActivatorEx.dll">
      <publishTime>02/08/2013 16:42:28</publishTime>
@@ -1278,13 +1281,13 @@
      <publishTime>07/08/2022 15:15:11</publishTime>
    </File>
    <File Include="Hubs/HubsMessage.html">
      <publishTime>09/05/2022 13:26:13</publishTime>
      <publishTime>09/08/2022 17:51:08</publishTime>
    </File>
    <File Include="Hubs/HubsMessage1.html">
      <publishTime>09/02/2022 09:22:02</publishTime>
      <publishTime>09/08/2022 17:47:19</publishTime>
    </File>
    <File Include="Hubs/HubsMessage2.html">
      <publishTime>08/31/2022 08:55:18</publishTime>
      <publishTime>09/08/2022 17:47:18</publishTime>
    </File>
    <File Include="Image/1.png">
      <publishTime>08/11/2022 08:20:52</publishTime>
@@ -1515,7 +1518,7 @@
      <publishTime>06/10/2022 08:20:24</publishTime>
    </File>
    <File Include="Web.config">
      <publishTime>09/06/2022 18:29:28</publishTime>
      <publishTime>09/09/2022 15:21:47</publishTime>
    </File>
  </ItemGroup>
</Project>
VueWebApi/Tools/ImportExcelData.cs
@@ -1271,7 +1271,7 @@
                return Message;
            }
            else if (excelTable[0].Columns.Count != 10)
            else if (excelTable[0].Columns.Count != 9)
            {
                code = "300";
                Message = "节拍工价模板不符合规范,请检查列名字段数";
@@ -2408,8 +2408,8 @@
                }
                //判断工艺路线是否关联工序
                sql = @"select R.name,S.stepname  from TFlw_Rtdt A
                        inner join TFlw_Rout R on A.route_code=M.code
                        inner join TStep S on R.step_code=S.stepcode
                        inner join TFlw_Rout R on A.rout_code=R.code
                        inner join TStep S on A.step_code=S.stepcode
                        where R.name=@routename and S.stepname=@stepname";
                dynamicParams.Add("@routename", excelTable.Rows[i][2].ToString().Trim());
                dynamicParams.Add("@stepname", excelTable.Rows[i][3].ToString().Trim());
@@ -2423,7 +2423,7 @@
                    list.Add(erro);
                }
                //判断工序是否关联设备
               sql = @"select R.name,S.stepname  from TFlw_Rteqp A
               sql = @"select E.name,S.stepname  from TFlw_Rteqp A
                        inner join TStep S on A.step_code=S.stepcode
                        inner join TEqpInfo E on A.eqp_code=E.code
                        where S.stepname=@stepname and E.name=@eqpname";
@@ -3312,7 +3312,7 @@
                    var data = DapperHelper.selectdata(sql, dynamicParams);
                    if (data.Rows.Count > 0)
                    {
                        partcode = data.Rows[0]["partname"].ToString();
                        partcode = data.Rows[0]["partcode"].ToString();
                    }
                    else 
                    {
@@ -3326,7 +3326,7 @@
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data0.Rows.Count > 0)
                    {
                        routecode = data.Rows[0]["code"].ToString();
                        routecode = data0.Rows[0]["code"].ToString();
                    }
                    else
                    {
@@ -3340,7 +3340,7 @@
                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data1.Rows.Count > 0)
                    {
                        stepcode = data.Rows[0]["stepcode"].ToString();
                        stepcode = data1.Rows[0]["stepcode"].ToString();
                    }
                    else
                    {
@@ -3354,7 +3354,7 @@
                    var data4 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data4.Rows.Count > 0)
                    {
                        eqpcode = data.Rows[0]["code"].ToString();
                        eqpcode = data4.Rows[0]["code"].ToString();
                    }
                    else
                    {
@@ -3368,7 +3368,7 @@
                    var data5 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data5.Rows.Count > 0)
                    {
                        wkspcode = data.Rows[0]["wksp_code"].ToString();
                        wkspcode = data5.Rows[0]["wksp_code"].ToString();
                    }
                    else
                    {
VueWebApi/Tools/TestSocket.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
using Fleck;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace VueWebApi.Tools
{
    public class TestSocket
    {
        #region å•例模式
        private static readonly Lazy<TestSocket> lazy = new Lazy<TestSocket>(() => new TestSocket());
        public static TestSocket Instance { get { return lazy.Value; } }
        #endregion
        private string msg = "默认信息";
        Dictionary<string, IWebSocketConnection> allSockets = new Dictionary<string, IWebSocketConnection>();
        public void socketServer()
        {
            string serverIP = System.Configuration.ConfigurationManager.AppSettings["FileIP"]; //服务器IP地址
            var server = new WebSocketServer(serverIP);
            server.Start(socket =>//服务开始
            {
                var userid = socket.ConnectionInfo.Path.Split('?')[1].Split('=')[1];
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    allSockets.Add(userid, socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    allSockets.Remove(userid);
                };
                socket.OnMessage = message =>
                {
                    //客户端交互的消息
                    //System.Timers.Timer t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒;
                    //t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
                    //t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
                    //t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
                    allSockets.ToList().ForEach(s => s.Value.Send("Echo: " + msg));
                };
            });
        }
        /// <summary>
        /// å‘送消息
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public string Send(string userid, string msg)
        {
            var _msg = $"{DateTime.Now.ToString("HH:mm:ss")}:{msg}";
            allSockets[userid].Send(_msg);
            return _msg;
        }
    }
}
VueWebApi/VueWebApi.csproj
@@ -59,6 +59,9 @@
    <Reference Include="FastReport.Web">
      <HintPath>..\..\..\FastReports\FastReport.Net\FastReport.Web.dll</HintPath>
    </Reference>
    <Reference Include="Fleck, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Fleck.1.2.0\lib\net45\Fleck.dll</HintPath>
    </Reference>
    <Reference Include="ICSharpCode.SharpZipLib, Version=1.3.3.11, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
      <HintPath>..\packages\SharpZipLib.1.3.3\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
    </Reference>
@@ -305,6 +308,7 @@
    <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" />
    <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
    <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
    <Compile Include="Controllers\SendController.cs" />
    <Compile Include="Hubs\ChatHub.cs" />
    <Compile Include="Controllers\AppDeviceManageController.cs" />
    <Compile Include="Controllers\BasicSettingController.cs" />
@@ -352,6 +356,7 @@
    <Compile Include="Global.asax.cs">
      <DependentUpon>Global.asax</DependentUpon>
    </Compile>
    <Compile Include="Hubs\ChatHub2.cs" />
    <Compile Include="Models\AppDevicecCheck.cs" />
    <Compile Include="Models\EqpRepair.cs" />
    <Compile Include="Models\ExcelErro.cs" />
@@ -394,6 +399,7 @@
    <Compile Include="Tools\SeachEncode.cs" />
    <Compile Include="Tools\SessionControllerRouteHandler.cs" />
    <Compile Include="Tools\SessionRouteHandler.cs" />
    <Compile Include="Tools\TestSocket.cs" />
    <Compile Include="Tools\TJson.cs" />
    <Compile Include="Tools\ToMessage.cs" />
    <Compile Include="Util\EntityHelper.cs" />
VueWebApi/Web.config
@@ -16,6 +16,8 @@
        <!--<add key="DBServer" value="Data Source=.;Initial Catalog=vmes;Integrated Security=True" />-->
        <!--服务器环境-->
        <add key="DBServer" value="Data Source=121.196.36.24,1533;Initial Catalog=vmes;User ID=sa;Password=xkd@20220602;pooling=false" />
        <!--大岛服务器环境-->
        <!--<add key="DBServer" value="Data Source=192.168.2.138;Initial Catalog=vmes;User ID=sa;Password=Dd@20220727;pooling=false" />-->
        <!--redis数据库链接配置ip-->
        <add key="RedisConnIp" value="127.0.0.1" />
        <!--redis数据库链接配置端口号-->
VueWebApi/bin/VueWebApi.dll.config
@@ -16,6 +16,8 @@
        <!--<add key="DBServer" value="Data Source=.;Initial Catalog=vmes;Integrated Security=True" />-->
        <!--服务器环境-->
        <add key="DBServer" value="Data Source=121.196.36.24,1533;Initial Catalog=vmes;User ID=sa;Password=xkd@20220602;pooling=false" />
        <!--大岛服务器环境-->
        <!--<add key="DBServer" value="Data Source=192.168.2.138;Initial Catalog=vmes;User ID=sa;Password=Dd@20220727;pooling=false" />-->
        <!--redis数据库链接配置ip-->
        <add key="RedisConnIp" value="127.0.0.1" />
        <!--redis数据库链接配置端口号-->
VueWebApi/bin/VueWebApi.pdb
Binary files differ
VueWebApi/bin/VueWebApi.xml
@@ -506,31 +506,6 @@
            </summary>
            <param name="documentPath">The physical path to XML document.</param>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub.userList">
            <summary>
            é™æ€ç”¨æˆ·åˆ—表
            </summary>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub._connections">
            <summary>
            ç”¨æˆ·çš„connectionID与用户名对照表
            </summary>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendByGroup(System.String,System.String,System.String)">
            <summary>
            å‘送函数,前端触发该函数给服务器,服务器在将消息发送给前端,(Clients.All.(函数名)是全体广播,另外Clients提供了组播,广播排除,组播排除,指定用户播发等等)
            è¯¥å‡½æ•°ååœ¨å‰ç«¯ä½¿ç”¨æ—¶ä¸€å®šè¦æ³¨æ„ï¼Œå‰ç«¯è°ƒç”¨è¯¥å‡½æ•°æ—¶ï¼Œå‡½æ•°é¦–字母一定要小写
            </summary>
            <param name="name1">发起者</param>
            <param name="name2">消息接收者</param>
            <param name="cont">消息内容</param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendLogin(System.String)">
            <summary>
            ç”¨æˆ·ä¸Šçº¿å‡½æ•°
            </summary>
            <param name="name">用户名</param>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.CheckScanDeviceQrCodeData(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,扫描工位/设备二维码
@@ -1127,6 +1102,22 @@
            <param name="djwo">设备点检单号</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckTakeOutExcel(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ç‚¹æ£€è®°å½•导出
            </summary>
            <param name="wkshopcode">车间编码</param>
            <param name="eqpcode">设备编号</param>
            <param name="eqpname">设备名称</param>
            <param name="stanedname">标准名称</param>
            <param name="checkuser">点检人员</param>
            <param name="checkdate">点检时间</param>
            <param name="page">页码</param>
            <param name="rows">每页显示条数</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ErpSyncMesController.SeaveSearchUnit">
            <summary>
            åˆ¶é€ æ¨¡åž‹ï¼šå•位同步
@@ -1306,6 +1297,13 @@
            <summary>
            å¤§å²›ä»“库看板,右下原料库库top5库存排行
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.KanBanManagerentController.WkspReportNotice(System.String)">
            <summary>
            è½¦é—´çœ‹æ¿å…¬å‘Š
            </summary>
            <param name="shopcode">车间编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.LoginController.LoginSave(System.String,System.String,System.String)">
@@ -1713,6 +1711,20 @@
            <param name="rows">每页显示条数</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderBitchClosedSeave(System.Data.DataTable)">
            <summary>
            MES工单批量关闭提交
            </summary>
            <param name="dt">工单号数组对象</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderBitchAntiClosedSeave(System.Data.DataTable)">
            <summary>
            MES工单批量反关闭
            </summary>
            <param name="dt">工单号数组对象</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductModelController.StockTypeSelect">
@@ -2200,6 +2212,78 @@
            </summary>
            <param name="id">id</param>
            <returns></returns>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub.userList">
            <summary>
            é™æ€ç”¨æˆ·åˆ—表
            </summary>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub._connections">
            <summary>
            ç”¨æˆ·çš„connectionID与用户名对照表
            </summary>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendByGroup(System.String,System.String,System.String)">
            <summary>
            å‘送函数,前端触发该函数给服务器,服务器在将消息发送给前端,(Clients.All.(函数名)是全体广播,另外Clients提供了组播,广播排除,组播排除,指定用户播发等等)
            è¯¥å‡½æ•°ååœ¨å‰ç«¯ä½¿ç”¨æ—¶ä¸€å®šè¦æ³¨æ„ï¼Œå‰ç«¯è°ƒç”¨è¯¥å‡½æ•°æ—¶ï¼Œå‡½æ•°é¦–字母一定要小写
            </summary>
            <param name="name1">发起者</param>
            <param name="name2">消息接收者</param>
            <param name="cont">消息内容</param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendLogin(System.String)">
            <summary>
            ç”¨æˆ·ä¸Šçº¿å‡½æ•°(单用户)
            </summary>
            <param name="name">用户名</param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendLogins(System.String)">
            <summary>
            ç”¨æˆ·ä¸Šçº¿å‡½æ•°(多用户)
            </summary>
            <param name="code">用户名集合</param>
        </member>
        <!-- Badly formed XML comment ignored for member "F:VueWebApi.Hubs.ChatHub2.Users" -->
        <member name="M:VueWebApi.Hubs.ChatHub2.OnConnected">
            <summary>
            æœªè¿žæŽ¥äº‹ä»¶
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.OnReconnected">
            <summary>
            é‡æ–°è¿žæŽ¥äº‹ä»¶
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.OnDisconnected(System.Boolean)">
            <summary>
            æ–­å¼€è¿žæŽ¥äº‹ä»¶
            </summary>
            <param name="stopCalled"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.GetClientId">
            <summary>
            è¿™å¯¹äºŽæ¯ä¸ªå®¢æˆ·ç«¯éƒ½æ˜¯å”¯ä¸€çš„,用于标识连接。
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.Send(System.Int32)">
            <summary>
            Sends the update user count to the listening view.
            </summary>
            <param name="count">
            The count.
            </param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.Hello(System.String)">
            <summary>
            è‡ªå·±å†™çš„一个服务端方法Hello.
            </summary>
            <param name="msg">参数
            </param>
        </member>
        <member name="M:VueWebApi.WebApiApplication.Init">
            <summary>
@@ -2768,6 +2852,14 @@
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.TestSocket.Send(System.String,System.String)">
            <summary>
            å‘送消息
            </summary>
            <param name="userid"></param>
            <param name="msg"></param>
            <returns></returns>
        </member>
        <member name="T:VueWebApi.Util.ObjectValueParser`1">
            <summary>
            å€¼è½¬æ¢å™¨
VueWebApi/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
Binary files differ
VueWebApi/obj/Release/Package/PackageTmp/Web.config
@@ -16,6 +16,8 @@
    <!--<add key="DBServer" value="Data Source=.;Initial Catalog=vmes;Integrated Security=True" />-->
    <!--服务器环境-->
    <add key="DBServer" value="Data Source=121.196.36.24,1533;Initial Catalog=vmes;User ID=sa;Password=xkd@20220602;pooling=false" />
    <!--大岛服务器环境-->
    <!--<add key="DBServer" value="Data Source=192.168.2.138;Initial Catalog=vmes;User ID=sa;Password=Dd@20220727;pooling=false" />-->
    <!--redis数据库链接配置ip-->
    <add key="RedisConnIp" value="127.0.0.1" />
    <!--redis数据库链接配置端口号-->
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
Binary files differ
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
@@ -506,31 +506,6 @@
            </summary>
            <param name="documentPath">The physical path to XML document.</param>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub.userList">
            <summary>
            é™æ€ç”¨æˆ·åˆ—表
            </summary>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub._connections">
            <summary>
            ç”¨æˆ·çš„connectionID与用户名对照表
            </summary>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendByGroup(System.String,System.String,System.String)">
            <summary>
            å‘送函数,前端触发该函数给服务器,服务器在将消息发送给前端,(Clients.All.(函数名)是全体广播,另外Clients提供了组播,广播排除,组播排除,指定用户播发等等)
            è¯¥å‡½æ•°ååœ¨å‰ç«¯ä½¿ç”¨æ—¶ä¸€å®šè¦æ³¨æ„ï¼Œå‰ç«¯è°ƒç”¨è¯¥å‡½æ•°æ—¶ï¼Œå‡½æ•°é¦–字母一定要小写
            </summary>
            <param name="name1">发起者</param>
            <param name="name2">消息接收者</param>
            <param name="cont">消息内容</param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendLogin(System.String)">
            <summary>
            ç”¨æˆ·ä¸Šçº¿å‡½æ•°
            </summary>
            <param name="name">用户名</param>
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.CheckScanDeviceQrCodeData(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,扫描工位/设备二维码
@@ -1127,6 +1102,22 @@
            <param name="djwo">设备点检单号</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckTakeOutExcel(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            è®¾å¤‡ç‚¹æ£€è®°å½•导出
            </summary>
            <param name="wkshopcode">车间编码</param>
            <param name="eqpcode">设备编号</param>
            <param name="eqpname">设备名称</param>
            <param name="stanedname">标准名称</param>
            <param name="checkuser">点检人员</param>
            <param name="checkdate">点检时间</param>
            <param name="page">页码</param>
            <param name="rows">每页显示条数</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ErpSyncMesController.SeaveSearchUnit">
            <summary>
            åˆ¶é€ æ¨¡åž‹ï¼šå•位同步
@@ -1306,6 +1297,13 @@
            <summary>
            å¤§å²›ä»“库看板,右下原料库库top5库存排行
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.KanBanManagerentController.WkspReportNotice(System.String)">
            <summary>
            è½¦é—´çœ‹æ¿å…¬å‘Š
            </summary>
            <param name="shopcode">车间编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.LoginController.LoginSave(System.String,System.String,System.String)">
@@ -1713,6 +1711,20 @@
            <param name="rows">每页显示条数</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderBitchClosedSeave(System.Data.DataTable)">
            <summary>
            MES工单批量关闭提交
            </summary>
            <param name="dt">工单号数组对象</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderBitchAntiClosedSeave(System.Data.DataTable)">
            <summary>
            MES工单批量反关闭
            </summary>
            <param name="dt">工单号数组对象</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductModelController.StockTypeSelect">
@@ -2200,6 +2212,78 @@
            </summary>
            <param name="id">id</param>
            <returns></returns>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub.userList">
            <summary>
            é™æ€ç”¨æˆ·åˆ—表
            </summary>
        </member>
        <member name="F:VueWebApi.Hubs.ChatHub._connections">
            <summary>
            ç”¨æˆ·çš„connectionID与用户名对照表
            </summary>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendByGroup(System.String,System.String,System.String)">
            <summary>
            å‘送函数,前端触发该函数给服务器,服务器在将消息发送给前端,(Clients.All.(函数名)是全体广播,另外Clients提供了组播,广播排除,组播排除,指定用户播发等等)
            è¯¥å‡½æ•°ååœ¨å‰ç«¯ä½¿ç”¨æ—¶ä¸€å®šè¦æ³¨æ„ï¼Œå‰ç«¯è°ƒç”¨è¯¥å‡½æ•°æ—¶ï¼Œå‡½æ•°é¦–字母一定要小写
            </summary>
            <param name="name1">发起者</param>
            <param name="name2">消息接收者</param>
            <param name="cont">消息内容</param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendLogin(System.String)">
            <summary>
            ç”¨æˆ·ä¸Šçº¿å‡½æ•°(单用户)
            </summary>
            <param name="name">用户名</param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub.SendLogins(System.String)">
            <summary>
            ç”¨æˆ·ä¸Šçº¿å‡½æ•°(多用户)
            </summary>
            <param name="code">用户名集合</param>
        </member>
        <!-- Badly formed XML comment ignored for member "F:VueWebApi.Hubs.ChatHub2.Users" -->
        <member name="M:VueWebApi.Hubs.ChatHub2.OnConnected">
            <summary>
            æœªè¿žæŽ¥äº‹ä»¶
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.OnReconnected">
            <summary>
            é‡æ–°è¿žæŽ¥äº‹ä»¶
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.OnDisconnected(System.Boolean)">
            <summary>
            æ–­å¼€è¿žæŽ¥äº‹ä»¶
            </summary>
            <param name="stopCalled"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.GetClientId">
            <summary>
            è¿™å¯¹äºŽæ¯ä¸ªå®¢æˆ·ç«¯éƒ½æ˜¯å”¯ä¸€çš„,用于标识连接。
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.Send(System.Int32)">
            <summary>
            Sends the update user count to the listening view.
            </summary>
            <param name="count">
            The count.
            </param>
        </member>
        <member name="M:VueWebApi.Hubs.ChatHub2.Hello(System.String)">
            <summary>
            è‡ªå·±å†™çš„一个服务端方法Hello.
            </summary>
            <param name="msg">参数
            </param>
        </member>
        <member name="M:VueWebApi.WebApiApplication.Init">
            <summary>
@@ -2768,6 +2852,14 @@
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.TestSocket.Send(System.String,System.String)">
            <summary>
            å‘送消息
            </summary>
            <param name="userid"></param>
            <param name="msg"></param>
            <returns></returns>
        </member>
        <member name="T:VueWebApi.Util.ObjectValueParser`1">
            <summary>
            å€¼è½¬æ¢å™¨
VueWebApi/obj/Release/TransformWebConfig/original/Web.config
@@ -16,6 +16,8 @@
        <!--<add key="DBServer" value="Data Source=.;Initial Catalog=vmes;Integrated Security=True" />-->
        <!--服务器环境-->
        <add key="DBServer" value="Data Source=121.196.36.24,1533;Initial Catalog=vmes;User ID=sa;Password=xkd@20220602;pooling=false" />
        <!--大岛服务器环境-->
        <!--<add key="DBServer" value="Data Source=192.168.2.138;Initial Catalog=vmes;User ID=sa;Password=Dd@20220727;pooling=false" />-->
        <!--redis数据库链接配置ip-->
        <add key="RedisConnIp" value="127.0.0.1" />
        <!--redis数据库链接配置端口号-->
VueWebApi/obj/Release/TransformWebConfig/transformed/Web.config
@@ -16,6 +16,8 @@
    <!--<add key="DBServer" value="Data Source=.;Initial Catalog=vmes;Integrated Security=True" />-->
    <!--服务器环境-->
    <add key="DBServer" value="Data Source=121.196.36.24,1533;Initial Catalog=vmes;User ID=sa;Password=xkd@20220602;pooling=false" />
    <!--大岛服务器环境-->
    <!--<add key="DBServer" value="Data Source=192.168.2.138;Initial Catalog=vmes;User ID=sa;Password=Dd@20220727;pooling=false" />-->
    <!--redis数据库链接配置ip-->
    <add key="RedisConnIp" value="127.0.0.1" />
    <!--redis数据库链接配置端口号-->
VueWebApi/obj/Release/VueWebApi.csproj.AssemblyReference.cache
Binary files differ
VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
0268dd956a59170e26c4362cabfd5184d6d53b51
fcefa153b5fd93331a16d7f1527b6f7835134536
VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
@@ -152,6 +152,7 @@
D:\新凯迪MES\VueWebApi\VueWebApi\bin\Dapper.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Web.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\Fleck.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\ICSharpCode.SharpZipLib.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\JWT.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\log4net.dll
@@ -280,7 +281,6 @@
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Deployment.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Razor.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.AssemblyReference.cache
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CoreCompileInputs.cache
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CopyComplete
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Release\VueWebApi.dll
VueWebApi/obj/Release/VueWebApi.pdb
Binary files differ
VueWebApi/packages.config
@@ -3,6 +3,7 @@
  <package id="Antlr" version="3.5.0.2" targetFramework="net461" />
  <package id="bootstrap" version="3.4.1" targetFramework="net461" />
  <package id="Dapper" version="2.0.123" targetFramework="net461" />
  <package id="Fleck" version="1.2.0" targetFramework="net461" />
  <package id="jQuery" version="3.4.1" targetFramework="net461" />
  <package id="JWT" version="8.9.0" targetFramework="net461" />
  <package id="log4net" version="2.0.14" targetFramework="net461" />
packages/Fleck.1.2.0/.signature.p7s
Binary files differ
packages/Fleck.1.2.0/Fleck.1.2.0.nupkg
Binary files differ