班组工资报表开发、人员工资明细报表开发、不良明细报表开发、品质异常报表开发、维修明细报表开发
已添加5个文件
已修改20个文件
1593 ■■■■■ 文件已修改
.vs/VueWebApi/v16/.suo 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/ReportManagerController.cs 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/SendController.cs 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/ReportManagerBLL.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/AppDeviceManageDAL.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/ReportManagerDAL.cs 693 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/HtmlPage1.html 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-09-14.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-09-15.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-09-16.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/TestSocket.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/VueWebApi.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Web.config 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.dll.config 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.xml 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/HtmlPage1.html 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Web.config 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/TransformWebConfig/original/Web.config 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/TransformWebConfig/transformed/Web.config 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VueWebApi/v16/.suo
Binary files differ
VueWebApi/Controllers/ReportManagerController.cs
@@ -106,8 +106,8 @@
        [HttpGet]
        public HttpResponseMessage GroupSalaryReportSearch(int page, int rows, string prop, string order, string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null, string groupcode = null, string username = null, string operdate = null)
        {
            string operopendate = "";  //收料开始时间
            string operclosedate = "";    //收料结束时间
            string operopendate = "";  //报工开始时间
            string operclosedate = "";    //报工结束时间
            if (operdate != "" && operdate != null)
            {
                operopendate = operdate.Split('~')[0].ToString();
@@ -120,5 +120,262 @@
        }
        #endregion
        #region[班组工资报表记录查看报工人员]
        /// <summary>
        /// ç­ç»„工资报表记录查看报工人员
        /// </summary>
        /// <param name="id">报工记录主表id</param>
        /// <returns></returns>
        [Route(template: "GroupSalaryReportSearchUser")]
        [HttpGet]
        public HttpResponseMessage GroupSalaryReportSearchUser(string id)
        {
            mes = ReportManagerBLL.GroupSalaryReportSearchUser(id);
            return TJson.toJson(mes);
        }
        #endregion
        #region[班组工资报表记录导出]
        /// <summary>
        /// ç­ç»„工资报表记录查询
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">规格型号</param>
        /// <param name="stepname">工序名称</param>
        /// <param name="groupcode">生产班组</param>
        /// <param name="username">操作人员</param>
        /// <param name="operdate">操作时间</param>
        /// <returns></returns>
        [Route(template: "GroupSalaryReportExcelSearch")]
        [HttpGet]
        public HttpResponseMessage GroupSalaryReportExcelSearch(string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null, string groupcode = null, string username = null, string operdate = null)
        {
            string operopendate = "";  //报工开始时间
            string operclosedate = "";    //报工结束时间
            if (operdate != "" && operdate != null)
            {
                operopendate = operdate.Split('~')[0].ToString();
                operclosedate = operdate.Split('~')[1].ToString();
            }
            mes = ReportManagerBLL.GroupSalaryReportExcelSearch(wocode, partcode, partname, partspec, stepname, groupcode, username, operopendate, operclosedate);
            return TJson.toJson(mes);
        }
        #endregion
        #region[人员工资明细报表]
        /// <summary>
        /// äººå‘˜å·¥èµ„明细报表
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">规格型号</param>
        /// <param name="stepname">工序名称</param>
        /// <param name="groupcode">生产班组</param>
        /// <param name="reportname">报工人员</param>
        /// <param name="reportdate">报工时间</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "PeopleSalaryReportSearch")]
        [HttpGet]
        public HttpResponseMessage PeopleSalaryReportSearch(int page, int rows, string prop, string order, string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null, string groupcode = null, string reportname = null, string reportdate = null)
        {
            string reportopendate = "";  //报工开始时间
            string reportclosedate = "";    //报工结束时间
            if (reportdate != "" && reportdate != null)
            {
                reportopendate = reportdate.Split('~')[0].ToString();
                reportclosedate = reportdate.Split('~')[1].ToString();
            }
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ReportManagerBLL.PeopleSalaryReportSearch(wocode, partcode, partname, partspec, stepname, groupcode, reportname, reportopendate, reportclosedate, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[人员工资明细报表导出]
        /// <summary>
        /// äººå‘˜å·¥èµ„明细报表导出
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">规格型号</param>
        /// <param name="stepname">工序名称</param>
        /// <param name="groupcode">生产班组</param>
        /// <param name="reportname">报工人员</param>
        /// <param name="reportdate">报工时间</param>
        /// <returns></returns>
        [Route(template: "PeopleSalaryReportExcelSearch")]
        [HttpGet]
        public HttpResponseMessage PeopleSalaryReportExcelSearch(string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null, string groupcode = null, string reportname = null, string reportdate = null)
        {
            string reportopendate = "";  //报工开始时间
            string reportclosedate = "";    //报工结束时间
            if (reportdate != "" && reportdate != null)
            {
                reportopendate = reportdate.Split('~')[0].ToString();
                reportclosedate = reportdate.Split('~')[1].ToString();
            }
            mes = ReportManagerBLL.PeopleSalaryReportExcelSearch(wocode, partcode, partname, partspec, stepname, groupcode, reportname, reportopendate, reportclosedate);
            return TJson.toJson(mes);
        }
        #endregion
        #region[不良明细报表]
        /// <summary>
        /// ä¸è‰¯æ˜Žç»†æŠ¥è¡¨
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">规格型号</param>
        /// <param name="stepname">工序名称</param>
        /// <param name="defectcode">缺陷代码</param>
        /// <param name="defectname">缺陷名称</param>
        /// <param name="reportname">报工人员</param>
        /// <param name="reportdate">报工时间</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "DefectDetailsReportSearch")]
        [HttpGet]
        public HttpResponseMessage DefectDetailsReportSearch(int page, int rows, string prop, string order, string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null,string defectcode=null,string defectname=null, string reportname = null, string reportdate = null)
        {
            string reportopendate = "";  //报工开始时间
            string reportclosedate = "";    //报工结束时间
            if (reportdate != "" && reportdate != null)
            {
                reportopendate = reportdate.Split('~')[0].ToString();
                reportclosedate = reportdate.Split('~')[1].ToString();
            }
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ReportManagerBLL.DefectDetailsReportSearch(wocode, partcode, partname, partspec, stepname, defectcode, defectname, reportname, reportopendate, reportclosedate, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[不良明细报表导出]
        /// <summary>
        /// ä¸è‰¯æ˜Žç»†æŠ¥è¡¨å¯¼å‡º
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">规格型号</param>
        /// <param name="stepname">工序名称</param>
        /// <param name="defectcode">缺陷代码</param>
        /// <param name="defectname">缺陷名称</param>
        /// <param name="reportname">报工人员</param>
        /// <param name="reportdate">报工时间</param>
        /// <returns></returns>
        [Route(template: "DefectDetailsReportExcelSearch")]
        [HttpGet]
        public HttpResponseMessage DefectDetailsReportExcelSearch(string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null, string defectcode = null, string defectname = null, string reportname = null, string reportdate = null)
        {
            string reportopendate = "";  //报工开始时间
            string reportclosedate = "";    //报工结束时间
            if (reportdate != "" && reportdate != null)
            {
                reportopendate = reportdate.Split('~')[0].ToString();
                reportclosedate = reportdate.Split('~')[1].ToString();
            }
            mes = ReportManagerBLL.DefectDetailsReportExcelSearch(wocode, partcode, partname, partspec, stepname, defectcode, defectname, reportname, reportopendate, reportclosedate);
            return TJson.toJson(mes);
        }
        #endregion
        #region[品质异常排行报表(取报工不良记录缺陷分组汇总条数)]
        /// <summary>
        /// å“è´¨å¼‚常排行报表
        /// </summary>
        /// <returns></returns>
        [Route(template: "QuaneryDefectReportSearch")]
        [HttpGet]
        public HttpResponseMessage QuaneryDefectReportSearch()
        {
            mes = ReportManagerBLL.QuaneryDefectReportSearch();
            return TJson.toJson(mes);
        }
        #endregion
        #region[维修明细报表]
        /// <summary>
        /// ç»´ä¿®æ˜Žç»†æŠ¥è¡¨
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">规格型号</param>
        /// <param name="stepname">工序名称</param>
        /// <param name="style">操作类型</param>
        /// <param name="defectname">缺陷名称</param>
        /// <param name="repairname">维修人员</param>
        /// <param name="repairdate">维修时间</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "MaintenanceDetailsReportSearch")]
        [HttpGet]
        public HttpResponseMessage MaintenanceDetailsReportSearch(int page, int rows, string prop, string order, string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null, string style = null, string defectname = null, string repairname = null, string repairdate = 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 = ReportManagerBLL.MaintenanceDetailsReportSearch(wocode, partcode, partname, partspec, stepname, style, defectname, repairname, repairopendate, repairclosedate, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[维修明细报表导出]
        /// <summary>
        /// ç»´ä¿®æ˜Žç»†æŠ¥è¡¨å¯¼å‡º
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">规格型号</param>
        /// <param name="stepname">工序名称</param>
        /// <param name="style">操作类型</param>
        /// <param name="defectname">缺陷名称</param>
        /// <param name="repairname">维修人员</param>
        /// <param name="repairdate">维修时间</param>
        /// <returns></returns>
        [Route(template: "MaintenanceDetailsReportExcelSearch")]
        [HttpGet]
        public HttpResponseMessage MaintenanceDetailsReportExcelSearch(string wocode = null, string partcode = null, string partname = null, string partspec = null, string stepname = null, string style = null, string defectname = null, string repairname = null, string repairdate = null)
        {
            string repairopendate = "";  //维修开始时间
            string repairclosedate = "";    //维修结束时间
            if (repairdate != "" && repairdate != null)
            {
                repairopendate = repairdate.Split('~')[0].ToString();
                repairclosedate = repairdate.Split('~')[1].ToString();
            }
            mes = ReportManagerBLL.MaintenanceDetailsReportExcelSearch(wocode, partcode, partname, partspec, stepname, style, defectname, repairname, repairopendate, repairclosedate);
            return TJson.toJson(mes);
        }
        #endregion
    }
}
VueWebApi/Controllers/SendController.cs
@@ -1,48 +1,109 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.WebSockets;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Web.WebSockets;
using VueWebApi.Tools;
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/Send")]
    [RoutePrefix(prefix: "Send")]
    [ControllerGroup("消息提醒", "在线接口")]
    public class SendController : ApiController
    {
        private readonly ClientWebSocket webSocket = new ClientWebSocket();
        private readonly CancellationToken _cancellation = new CancellationToken();
        /// <summary>
        /// ç™»å½•用户建立WebSocket服务连接
        /// </summary>
        /// <param name="clientName">登录用户信息</param>
        /// <returns></returns>
        [HttpGet]
        public async Task SendMsg(string msg)
        public HttpResponseMessage GetConnect(string clientName)
        {
            await webSocket.ConnectAsync(new Uri("ws://localhost:8001"), CancellationToken.None);
            var sendBytes = Encoding.UTF8.GetBytes(msg);//发送的数据
            HttpContext.Current.AcceptWebSocketRequest(ProcessRequest); //在服务器端接受Web Socket请求,传入的函数作为Web Socket的处理函数,待Web Socket建立后该函数会被调用,在该函数中可以对Web Socket进行消息收发
            return Request.CreateResponse(HttpStatusCode.SwitchingProtocols); //构造同意切换至Web Socket的Response.
        }
        ///记录客户端
        private static List<WebSocket> _sockets = new List<WebSocket>();
        ///接受信息和发送信息
        public async Task ProcessRequest(AspNetWebSocketContext context)
        {
            try
            {
                var socket = context.WebSocket;//传入的context中有当前的web socket对象
                _sockets.Add(socket);//此处将web socket对象加入一个静态列表中
                //进入一个无限循环,当web socket close是循环结束
                while (true)
                {
                    var buffer = new ArraySegment<byte>(new byte[1024]);
                    var receivedResult = await socket.ReceiveAsync(buffer, CancellationToken.None);//对web socket进行异步接收数据
                    if (receivedResult.MessageType == WebSocketMessageType.Close)
                    {
                        await socket.CloseAsync(WebSocketCloseStatus.Empty, string.Empty, CancellationToken.None);//如果client发起close请求,对client进行ack
                        _sockets.Remove(socket);
                        break;
                    }
                    if (socket.State == System.Net.WebSockets.WebSocketState.Open)
                    {
                        string recvMsg = Encoding.UTF8.GetString(buffer.Array, 0, receivedResult.Count);
                        var recvBytes = Encoding.UTF8.GetBytes(recvMsg);
                        var sendBuffer = new ArraySegment<byte>(recvBytes);
                        foreach (var innerSocket in _sockets)//当接收到文本消息时,对当前服务器上所有web socket连接进行广播
                        {
                            if (innerSocket != socket)
                            {
                                await innerSocket.SendAsync(sendBuffer, WebSocketMessageType.Text, true, CancellationToken.None);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        //客户端发送消息
        private async void SendMsg(object data)
        {
            try
            {
                await webSocket.ConnectAsync(new Uri("wss://121.196.36.24:8001/api/Send?clientName=" + 123), _cancellation);
                var sendBytes = ObjectToBytes(data);//发送的数据
            var bsend = new ArraySegment<byte>(sendBytes);
            await webSocket.SendAsync(bsend, WebSocketMessageType.Binary, true, _cancellation);
            await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "1", _cancellation);
            webSocket.Dispose();
                webSocket.Dispose();//记得一定要释放不然服务端还产生很多连接
        }
        //http://localhost:port/api/Send/Init
        [HttpGet]
        public string Init()
            catch (Exception ex)
        {
            TestSocket.Instance.socketServer();
            return "success";
                throw new Exception(ex.Message);
        }
        [HttpGet]
        public string Msg(string userid, string msg)
        }
        public static byte[] ObjectToBytes(object obj)
        {
            var _msg = TestSocket.Instance.Send(userid, msg);
            return _msg;
            using (MemoryStream ms = new MemoryStream())
            {
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(ms, obj);
                return ms.GetBuffer();
            }
        }
    }
}
VueWebApi/DLL/BLL/ReportManagerBLL.cs
@@ -30,5 +30,72 @@
            return ReportManagerDAL.GroupSalaryReportSearch(wocode, partcode, partname, partspec, stepname, groupcode, username, operopendate, operclosedate, startNum, endNum, prop, order);
        }
        #endregion
        #region[班组工资报表记录查看报工人员]
        public static ToMessage GroupSalaryReportSearchUser(string id)
        {
            return ReportManagerDAL.GroupSalaryReportSearchUser(id);
        }
        #endregion
        #region[班组工资报表记录导出]
        public static ToMessage GroupSalaryReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string groupcode, string username, string operopendate, string operclosedate)
        {
            return ReportManagerDAL.GroupSalaryReportExcelSearch(wocode, partcode, partname, partspec, stepname, groupcode, username, operopendate, operclosedate);
        }
        #endregion
        #region[人员工资明细报表]
        public static ToMessage PeopleSalaryReportSearch(string wocode, string partcode, string partname, string partspec, string stepname, string groupcode, string reportname, string reportopendate, string reportclosedate, int startNum, int endNum, string prop, string order)
        {
            return ReportManagerDAL.PeopleSalaryReportSearch(wocode, partcode, partname, partspec, stepname, groupcode, reportname, reportopendate, reportclosedate, startNum, endNum, prop, order);
        }
        #endregion
        #region[人员工资明细报表导出]
        public static ToMessage PeopleSalaryReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string groupcode, string reportname, string reportopendate, string reportclosedate)
        {
            return ReportManagerDAL.PeopleSalaryReportExcelSearch(wocode, partcode, partname, partspec, stepname, groupcode, reportname, reportopendate, reportclosedate);
        }
        #endregion
        #region[不良明细报表]
        public static ToMessage DefectDetailsReportSearch(string wocode, string partcode, string partname, string partspec, string stepname, string defectcode, string defectname, string reportname, string reportopendate, string reportclosedate, int startNum, int endNum, string prop, string order)
        {
            return ReportManagerDAL.DefectDetailsReportSearch(wocode, partcode, partname, partspec, stepname, defectcode, defectname, reportname, reportopendate, reportclosedate, startNum, endNum, prop, order);
        }
        #endregion
        #region[不良明细报表导出]
        public static ToMessage DefectDetailsReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string defectcode, string defectname, string reportname, string reportopendate, string reportclosedate)
        {
            return ReportManagerDAL.DefectDetailsReportExcelSearch(wocode, partcode, partname, partspec, stepname, defectcode, defectname, reportname, reportopendate, reportclosedate);
        }
        #endregion
        #region[品质异常排行报表(取报工不良记录缺陷分组汇总条数)]
        public static ToMessage QuaneryDefectReportSearch()
        {
            return ReportManagerDAL.QuaneryDefectReportSearch();
        }
        #endregion
        #region[维修明细报表]
        public static ToMessage MaintenanceDetailsReportSearch(string wocode, string partcode, string partname, string partspec, string stepname, string style, string defectname, string repairname, string repairopendate, string repairclosedate, int startNum, int endNum, string prop, string order)
        {
            return ReportManagerDAL.MaintenanceDetailsReportSearch(wocode, partcode, partname, partspec, stepname, style, defectname, repairname, repairopendate, repairclosedate, startNum, endNum, prop, order);
        }
        #endregion
        #region[维修明细报表导出]
        public static ToMessage MaintenanceDetailsReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string style, string defectname, string repairname, string repairopendate, string repairclosedate)
        {
            return ReportManagerDAL.MaintenanceDetailsReportExcelSearch(wocode, partcode, partname, partspec, stepname, style, defectname, repairname, repairopendate, repairclosedate);
        }
        #endregion
    }
}
VueWebApi/DLL/DAL/AppDeviceManageDAL.cs
@@ -45,7 +45,7 @@
                else
                {
                    mes.code = "300";
                    mes.Message = "当前设备异常!";
                    mes.Message = "当前设备/工位不存在或异常!";
                    mes.data = data;
                }
            }
VueWebApi/DLL/DAL/ReportManagerDAL.cs
@@ -202,7 +202,7 @@
                            where " + search;
                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
                data.TableName = "Table"; //设置DataTable的名称
                string msg = DownLoad.DataTableToExcel(data, "委外报工记录");
                string msg = DownLoad.DataTableToExcel(data, "委外报工记录报表");
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
@@ -276,7 +276,7 @@
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select distinct A.wo_code,M.partcode,M.partname,M.partspec,T.stepcode,T.stepname,A.task_qty,G.group_code,G.group_name,A.good_qty,isnull(S.unprice,0) as unprice,U.username as lm_user,A.lm_date
                var sql = @"select distinct A.id,A.wo_code,M.partcode,M.partname,M.partspec,T.stepcode,T.stepname,A.task_qty,G.group_code,G.group_name,A.good_qty,isnull(S.unprice,0) as unprice,A.good_qty*isnull(S.unprice,0) as usermoney,U.username as lm_user,A.lm_date
                            from TK_Wrk_Record A
                            inner join TK_Wrk_RecordSub B on A.id=B.m_id
                            inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code and P.isend='Y'
@@ -303,5 +303,694 @@
            return mes;
        }
        #endregion
        #region[班组工资报表记录查看报工人员]
        public static ToMessage GroupSalaryReportSearchUser(string id)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取报工人员
                sql = @"select U.usercode,U.username   from TK_Wrk_RecordSub A
                        inner join TUser U on A.report_person=U.usercode
                        where m_id=@id";
                dynamicParams.Add("@id", id);
                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 GroupSalaryReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string groupcode, string username, string operopendate, string operclosedate)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and A.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and M.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and M.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and M.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and T.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (groupcode != "" && groupcode != null)
                {
                    search += "and G.group_code=@groupcode ";
                    dynamicParams.Add("@groupcode", groupcode);
                }
                if (username != "" && username != null)
                {
                    search += "and U.username like '%'+@username+'%' ";
                    dynamicParams.Add("@username", username);
                }
                if (operopendate != "" && operopendate != null)
                {
                    search += "and A.lm_date between @operopendate and @operclosedate ";
                    dynamicParams.Add("@operopendate", operopendate + " 00:00:00");
                    dynamicParams.Add("@operclosedate", operclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select distinct A.wo_code as å·¥å•编号,M.partcode as äº§å“ç¼–码,M.partname as äº§å“åç§°,M.partspec as äº§å“è§„æ ¼,
                            T.stepcode as å·¥åºç¼–码,T.stepname as å·¥åºåç§°,A.task_qty as ä»»åŠ¡æ•°é‡,G.group_code as ç­ç»„编码,G.group_name as ç­ç»„名称,
                            A.good_qty as æŠ¥å·¥æ•°é‡,isnull(S.unprice,0) as å·¥åºå•ä»·,A.good_qty*isnull(S.unprice,0) as è®¡ä»¶å·¥èµ„,U.username as æ“ä½œäººå‘˜,A.lm_date as æ“ä½œæ—¶é—´
                            from TK_Wrk_Record A
                            inner join TK_Wrk_RecordSub B on A.id=B.m_id
                            inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code and P.isend='Y'
                            left  join TK_Wrk_Man K on A.wo_code=K.wo_code
                            left  join TGroup G on B.usergroup_code=G.group_code
                            left  join TPrteEqp_Stad S on A.materiel_code=S.materiel_code and A.eqp_code=S.eqp_code and A.step_code=S.step_code and K.route_code=S.route_code and K.wkshp_code=S.wkspcode
                            left  join TMateriel_Info M on A.materiel_code=M.partcode
                            left  join TStep T on A.step_code=T.stepcode
                            left  join TUser U on A.lm_user=U.usercode
                            where " + 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 PeopleSalaryReportSearch(string wocode, string partcode, string partname, string partspec, string stepname, string groupcode, string reportname, string reportopendate, string reportclosedate, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and A.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and M.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and M.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and M.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and T.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (groupcode != "" && groupcode != null)
                {
                    search += "and G.group_code=@groupcode ";
                    dynamicParams.Add("@groupcode", groupcode);
                }
                if (reportname != "" && reportname != null)
                {
                    search += "and U.username like '%'+@reportname+'%' ";
                    dynamicParams.Add("@reportname", reportname);
                }
                if (reportopendate != "" && reportopendate != null)
                {
                    search += "and B.report_date between @reportopendate and @reportclosedate ";
                    dynamicParams.Add("@reportopendate", reportopendate + " 00:00:00");
                    dynamicParams.Add("@reportclosedate", reportclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select distinct A.wo_code,M.partcode,M.partname,M.partspec,T.stepcode,T.stepname,A.task_qty,G.group_code,G.group_name,B.report_qty,isnull(S.unprice,0) as unprice,B.report_qty*isnull(S.unprice,0) as usermoney,U.username as lm_user,B.report_date
                            from TK_Wrk_Record A
                            inner join TK_Wrk_RecordSub B on A.id=B.m_id
                            inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code and P.isend='Y'
                            left  join TK_Wrk_Man K on A.wo_code=K.wo_code
                            left  join TGroup G on B.usergroup_code=G.group_code
                            left  join TPrteEqp_Stad S on A.materiel_code=S.materiel_code and A.eqp_code=S.eqp_code and A.step_code=S.step_code and K.route_code=S.route_code and K.wkshp_code=S.wkspcode
                            left  join TMateriel_Info M on A.materiel_code=M.partcode
                            left  join TStep T on A.step_code=T.stepcode
                            left  join TUser U on B.report_person=U.usercode
                            where " + 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 PeopleSalaryReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string groupcode, string reportname, string reportopendate, string reportclosedate)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and A.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and M.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and M.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and M.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and T.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (groupcode != "" && groupcode != null)
                {
                    search += "and G.group_code=@groupcode ";
                    dynamicParams.Add("@groupcode", groupcode);
                }
                if (reportname != "" && reportname != null)
                {
                    search += "and U.username like '%'+@reportname+'%' ";
                    dynamicParams.Add("@reportname", reportname);
                }
                if (reportopendate != "" && reportopendate != null)
                {
                    search += "and B.report_date between @reportopendate and @reportclosedate ";
                    dynamicParams.Add("@reportopendate", reportopendate + " 00:00:00");
                    dynamicParams.Add("@reportclosedate", reportclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select distinct A.wo_code as å·¥å•编号,M.partcode as äº§å“ç¼–码,M.partname as äº§å“åç§°,M.partspec as äº§å“è§„æ ¼,T.stepcode as å·¥åºç¼–码,T.stepname as å·¥åºåç§°,
                            A.task_qty as ä»»åŠ¡æ•°é‡,G.group_code as ç”Ÿäº§ç­ç»„编码,G.group_name as ç”Ÿäº§ç­ç»„名称,B.report_qty as æŠ¥å·¥æ•°é‡,isnull(S.unprice,0) as å·¥åºå•ä»·,
                            B.report_qty*isnull(S.unprice,0) as è®¡ä»¶å·¥èµ„,U.username as æŠ¥å·¥äººå‘˜,B.report_date as æŠ¥å·¥æ—¶é—´
                            from TK_Wrk_Record A
                            inner join TK_Wrk_RecordSub B on A.id=B.m_id
                            inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code and P.isend='Y'
                            left  join TK_Wrk_Man K on A.wo_code=K.wo_code
                            left  join TGroup G on B.usergroup_code=G.group_code
                            left  join TPrteEqp_Stad S on A.materiel_code=S.materiel_code and A.eqp_code=S.eqp_code and A.step_code=S.step_code and K.route_code=S.route_code and K.wkshp_code=S.wkspcode
                            left  join TMateriel_Info M on A.materiel_code=M.partcode
                            left  join TStep T on A.step_code=T.stepcode
                            left  join TUser U on B.report_person=U.usercode
                            where " + 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 DefectDetailsReportSearch(string wocode, string partcode, string partname, string partspec, string stepname, string defectcode, string defectname, string reportname, string reportopendate, string reportclosedate, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and A.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and M.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and M.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and M.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and T.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (defectcode != "" && defectcode != null)
                {
                    search += "and T.stepcode like '%'+@defectcode+'%' ";
                    dynamicParams.Add("@defectcode", defectcode);
                }
                if (defectname != "" && defectname != null)
                {
                    search += "and T.stepname like '%'+@defectname+'%' ";
                    dynamicParams.Add("@defectname", defectname);
                }
                if (reportname != "" && reportname != null)
                {
                    search += "and U.username like '%'+@reportname+'%' ";
                    dynamicParams.Add("@reportname", reportname);
                }
                if (reportopendate != "" && reportopendate != null)
                {
                    search += "and A.lm_date between @reportopendate and @reportclosedate ";
                    dynamicParams.Add("@reportopendate", reportopendate + " 00:00:00");
                    dynamicParams.Add("@reportclosedate", reportclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.wo_code,M.partcode,M.partname,M.partspec,T.stepcode,T.stepname,P.plan_qty,A.defect_qty,
                            F.code as defect_code,F.name as defect_name,A.style,U.username as lm_user,A.lm_date
                            from CSR_WorkRecord_Defect A
                            inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code
                            left  join TMateriel_Info M on A.partnumber=M.partcode
                            left  join TStep T on A.step_code=T.stepcode
                            left  join TDefect F on A.defect_code=F.code
                            left  join TUser U on A.lm_user=U.usercode
                            where " + 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 DefectDetailsReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string defectcode, string defectname, string reportname, string reportopendate, string reportclosedate)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and A.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and M.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and M.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and M.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and T.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (defectcode != "" && defectcode != null)
                {
                    search += "and T.stepcode like '%'+@defectcode+'%' ";
                    dynamicParams.Add("@defectcode", defectcode);
                }
                if (defectname != "" && defectname != null)
                {
                    search += "and T.stepname like '%'+@defectname+'%' ";
                    dynamicParams.Add("@defectname", defectname);
                }
                if (reportname != "" && reportname != null)
                {
                    search += "and U.username like '%'+@reportname+'%' ";
                    dynamicParams.Add("@reportname", reportname);
                }
                if (reportopendate != "" && reportopendate != null)
                {
                    search += "and A.lm_date between @reportopendate and @reportclosedate ";
                    dynamicParams.Add("@reportopendate", reportopendate + " 00:00:00");
                    dynamicParams.Add("@reportclosedate", reportclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.wo_code as å·¥å•编号,M.partcode as äº§å“ç¼–码,M.partname as äº§å“åç§°,M.partspec as äº§å“è§„æ ¼,T.stepcode as å·¥åºç¼–码,
                            T.stepname as å·¥åºåç§°,P.plan_qty as ä»»åŠ¡æ•°é‡,A.defect_qty as ä¸è‰¯æ•°é‡,F.code as ç¼ºé™·ä»£ç ,F.name as ç¼ºé™·åç§°,
                            (case when A.style='B' then '报工' when A.style='S' then '收料'  end) as '操作类型',U.username as æ“ä½œäººå‘˜,A.lm_date as æ“ä½œæ—¶é—´
                            from CSR_WorkRecord_Defect A
                            inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code
                            left  join TMateriel_Info M on A.partnumber=M.partcode
                            left  join TStep T on A.step_code=T.stepcode
                            left  join TDefect F on A.defect_code=F.code
                            left  join TUser U on A.lm_user=U.usercode
                            where " + 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 QuaneryDefectReportSearch()
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取报工不良分组统计数据
                sql = @"select AA.cont,AA.name  from (
                        select count(*) cont,F.name   from CSR_WorkRecord_Defect  A
                        left  join TDefect F on A.defect_code=F.code
                        group by F.code,F.name
                        ) as AA order by AA.cont desc";
                var data = DapperHelper.selecttable(sql);
                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 MaintenanceDetailsReportSearch(string wocode, string partcode, string partname, string partspec, string stepname, string style, string defectname, string repairname, string repairopendate, string repairclosedate, int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and AA.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and AA.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and AA.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and AA.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and AA.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (style != "" && style != null)
                {
                    search += "and AA.style=@style ";
                    dynamicParams.Add("@style", style);
                }
                if (defectname != "" && defectname != null)
                {
                    search += "and AA.defect_name like '%'+@defectname+'%' ";
                    dynamicParams.Add("@defectname", defectname);
                }
                if (repairname != "" && repairname != null)
                {
                    search += "and AA.lm_user like '%'+@repairname+'%' ";
                    dynamicParams.Add("@repairname", repairname);
                }
                if (repairopendate != "" && repairopendate != null)
                {
                    search += "and AA.lm_date between @repairopendate and @repairclosedate ";
                    dynamicParams.Add("@repairopendate", repairopendate + " 00:00:00");
                    dynamicParams.Add("@repairclosedate", repairclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select AA.wo_code,AA.partcode,AA.partname,AA.partspec,AA.stepcode,AA.stepname,(case when AA.style='B' then '报工' when AA.style='S' then '收料' end) as style,
                            AA.plan_qty,AA.repair_qty,AA.bad_qty,AA.defect_code,AA.defect_name,AA.lm_user,AA.lm_date
                            from(
                            select F.wo_code,M.partcode,M.partname,M.partspec,S.stepcode,S.stepname,F.style,P.plan_qty,F.repair_qty,F.bad_qty,F.defect_code,
                            defect_name = STUFF(( SELECT ',' + T.name
                            FROM TDefect as T
                            where PATINDEX('%,' + RTRIM(T.code) + ',%',',' + F.defect_code + ',')>0
                            ORDER BY PATINDEX('%,' + RTRIM(T.code) + ',%',',' + F.defect_code + ',')
                            FOR XML PATH('')), 1, 1,''),U.username as lm_user,F.lm_date
                            from CSR_WorkRecord_DefectHandle as F
                            inner join TK_Wrk_Step P on F.wo_code=P.wo_code and F.step_code=P.step_code
                            left  join TMateriel_Info M on F.partnumber=M.partcode
                            left  join TStep S on F.step_code=S.stepcode
                            left  join TUser U on F.lm_user=U.usercode
                            ) as AA
                            where " + 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 MaintenanceDetailsReportExcelSearch(string wocode, string partcode, string partname, string partspec, string stepname, string style, string defectname, string repairname, string repairopendate, string repairclosedate)
        {
            var dynamicParams = new DynamicParameters();
            string search = "";
            try
            {
                if (wocode != "" && wocode != null)
                {
                    search += "and AA.wo_code like '%'+@wocode+'%' ";
                    dynamicParams.Add("@wocode", wocode);
                }
                if (partcode != "" && partcode != null)
                {
                    search += "and AA.partcode like '%'+@partcode+'%' ";
                    dynamicParams.Add("@partcode", partcode);
                }
                if (partname != "" && partname != null)
                {
                    search += "and AA.partname like '%'+@partname+'%' ";
                    dynamicParams.Add("@partname", partname);
                }
                if (partspec != "" && partspec != null)
                {
                    search += "and AA.partspec like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                }
                if (stepname != "" && stepname != null)
                {
                    search += "and AA.stepname like '%'+@stepname+'%' ";
                    dynamicParams.Add("@stepname", stepname);
                }
                if (style != "" && style != null)
                {
                    search += "and AA.style=@style ";
                    dynamicParams.Add("@style", style);
                }
                if (defectname != "" && defectname != null)
                {
                    search += "and AA.defect_name like '%'+@defectname+'%' ";
                    dynamicParams.Add("@defectname", defectname);
                }
                if (repairname != "" && repairname != null)
                {
                    search += "and AA.lm_user like '%'+@repairname+'%' ";
                    dynamicParams.Add("@repairname", repairname);
                }
                if (repairopendate != "" && repairopendate != null)
                {
                    search += "and AA.lm_date between @repairopendate and @repairclosedate ";
                    dynamicParams.Add("@repairopendate", repairopendate + " 00:00:00");
                    dynamicParams.Add("@repairclosedate", repairclosedate + " 23:59:59");
                }
                if (search == "")
                {
                    search = "and 1=1 ";
                }
                search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select AA.wo_code as å·¥å•编号,AA.partcode as äº§å“ç¼–码,AA.partname as äº§å“åç§°,AA.partspec as äº§å“è§„æ ¼,AA.stepcode as å·¥åºç¼–码,AA.stepname as å·¥åºåç§°,
                            (case when AA.style='B' then '报工' when AA.style='S' then '收料' end) as æ“ä½œç±»åž‹,
                            AA.plan_qty as ä»»åŠ¡æ•°é‡,AA.repair_qty as ç»´ä¿®æ•°é‡,AA.bad_qty as æŠ¥åºŸæ•°é‡,AA.defect_name as ç¼ºé™·åç§°,AA.lm_user as ç»´ä¿®äººå‘˜,AA.lm_date as ç»´ä¿®æ—¶é—´
                            from(
                            select F.wo_code,M.partcode,M.partname,M.partspec,S.stepcode,S.stepname,F.style,P.plan_qty,F.repair_qty,F.bad_qty,F.defect_code,
                            defect_name = STUFF(( SELECT ',' + T.name
                            FROM TDefect as T
                            where PATINDEX('%,' + RTRIM(T.code) + ',%',',' + F.defect_code + ',')>0
                            ORDER BY PATINDEX('%,' + RTRIM(T.code) + ',%',',' + F.defect_code + ',')
                            FOR XML PATH('')), 1, 1,''),U.username as lm_user,F.lm_date
                            from CSR_WorkRecord_DefectHandle as F
                            inner join TK_Wrk_Step P on F.wo_code=P.wo_code and F.step_code=P.step_code
                            left  join TMateriel_Info M on F.partnumber=M.partcode
                            left  join TStep S on F.step_code=S.stepcode
                            left  join TUser U on F.lm_user=U.usercode
                            ) as AA
                            where " + 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/HtmlPage1.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    <title></title>
    <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.11.3.min.js"></script>
    <script>
        var ws;
        $().ready(function () {
            $('#conn').click(function () {
                ws = new WebSocket('wss://121.196.36.24:8001' + '/api/Send?clientName=' + '456');
                $('#msg').append('<p>正在连接</p>');
                ws.onopen = function () {
                    $('#msg').append('<p>已经连接</p>');
                }
                ws.onmessage = function (evt) {
                    $('#msg').append('<p>' + evt.data + '</p>');
                }
                ws.onerror = function (evt) {
                    $('#msg').append('<p>' + JSON.stringify(evt) + '</p>');
                }
                ws.onclose = function () {
                    $('#msg').append('<p>已经关闭</p>');
                }
            });
            $('#close').click(function () {
                ws.close();
            });
            $('#send').click(function () {
                if (ws.readyState == WebSocket.OPEN) {
                    ws.send($("#to").val() + "|" + $('#content').val());
                }
                else {
                    $('#tips').text('连接已经关闭');
                }
            });
        });
    </script>
</head>
<body>
    <div>
        <input id="user" type="text" />
        <input id="conn" type="button" value="连接" />
        <input id="close" type="button" value="关闭" /><br />
        <span id="tips"></span>
        <input id="content" type="text" />
        <input id="send" type="button" value="发送" /><br />
        <input id="to" type="text" />目的用户
        <div id="msg">
        </div>
    </div>
</body>
</html>
VueWebApi/Logs/2022-09-14.TXT
VueWebApi/Logs/2022-09-15.TXT
VueWebApi/Logs/2022-09-16.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-12T05:07:40.5119225Z;True|2022-09-09T15:21:48.4251654+08:00;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>
    <History>True|2022-09-16T06:31:58.5334673Z;True|2022-09-16T09:04:53.3449040+08:00;True|2022-09-15T15:15:18.3159768+08:00;True|2022-09-14T17:46:23.0171281+08:00;True|2022-09-14T17:43:44.4370239+08:00;True|2022-09-14T17:34:30.3167863+08:00;True|2022-09-14T17:33:00.5148855+08:00;True|2022-09-14T17:06:32.0879029+08:00;True|2022-09-14T16:50:12.7189783+08:00;True|2022-09-14T16:47:48.3868826+08:00;True|2022-09-14T16:42:35.3830356+08:00;True|2022-09-14T16:41:37.8545801+08:00;True|2022-09-14T16:36:47.0944090+08:00;True|2022-09-14T16:26:00.8638173+08:00;True|2022-09-14T16:13:43.6329252+08:00;True|2022-09-14T16:04:16.8093275+08:00;True|2022-09-14T16:02:54.4702614+08:00;True|2022-09-14T15:57:15.9623104+08:00;True|2022-09-14T15:54:23.8745601+08:00;True|2022-09-14T15:49:40.1730864+08:00;True|2022-09-14T15:42:08.2811334+08:00;True|2022-09-14T15:26:40.0417771+08:00;True|2022-09-14T15:24:30.2187269+08:00;True|2022-09-14T15:16:30.3856771+08:00;True|2022-09-14T15:09:22.4313367+08:00;True|2022-09-14T14:59:14.3795036+08:00;True|2022-09-14T14:53:26.8923244+08:00;True|2022-09-14T14:44:00.6688344+08:00;True|2022-09-14T14:41:53.3908108+08:00;True|2022-09-14T14:40:40.3787118+08:00;True|2022-09-14T14:28:39.2273279+08:00;True|2022-09-14T14:27:13.3566861+08:00;True|2022-09-14T14:25:25.4360688+08:00;True|2022-09-14T14:20:42.9734032+08:00;True|2022-09-14T13:51:39.1303401+08:00;True|2022-09-14T13:25:34.8906041+08:00;True|2022-09-14T13:19:28.9172079+08:00;True|2022-09-14T13:18:09.5900815+08:00;True|2022-09-14T10:58:58.0910068+08:00;True|2022-09-14T10:57:11.4834444+08:00;True|2022-09-14T10:45:39.8943674+08:00;True|2022-09-14T10:38:15.2282286+08:00;True|2022-09-14T10:36:54.8259640+08:00;True|2022-09-14T10:14:12.1218790+08:00;True|2022-09-14T10:13:20.0625618+08:00;True|2022-09-14T10:10:15.3538379+08:00;True|2022-09-14T10:07:09.4796434+08:00;True|2022-09-14T10:06:02.0382235+08:00;True|2022-09-14T09:57:12.0082796+08:00;True|2022-09-14T09:52:29.4689029+08:00;True|2022-09-14T09:47:26.7205193+08:00;True|2022-09-14T09:38:56.4089520+08:00;True|2022-09-14T09:32:34.9863473+08:00;True|2022-09-12T13:07:40.5119225+08:00;True|2022-09-09T15:21:48.4251654+08:00;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">
@@ -720,16 +720,16 @@
      <publishTime>12/24/2021 15:38:29</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll">
      <publishTime>09/12/2022 13:07:28</publishTime>
      <publishTime>09/16/2022 14:31:51</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll.config">
      <publishTime>06/15/2022 15:31:43</publishTime>
    </File>
    <File Include="bin/VueWebApi.pdb">
      <publishTime>09/12/2022 13:07:28</publishTime>
      <publishTime>09/16/2022 14:31:51</publishTime>
    </File>
    <File Include="bin/VueWebApi.xml">
      <publishTime>09/12/2022 13:07:27</publishTime>
      <publishTime>09/16/2022 14:31:51</publishTime>
    </File>
    <File Include="bin/WebActivatorEx.dll">
      <publishTime>02/08/2013 16:42:28</publishTime>
@@ -1280,6 +1280,9 @@
    <File Include="Grid/webapp-ws-tutorial.htm">
      <publishTime>07/08/2022 15:15:11</publishTime>
    </File>
    <File Include="HtmlPage1.html">
      <publishTime>09/14/2022 17:56:08</publishTime>
    </File>
    <File Include="Hubs/HubsMessage.html">
      <publishTime>09/08/2022 17:51:08</publishTime>
    </File>
@@ -1518,7 +1521,7 @@
      <publishTime>06/10/2022 08:20:24</publishTime>
    </File>
    <File Include="Web.config">
      <publishTime>09/12/2022 13:07:39</publishTime>
      <publishTime>09/16/2022 14:31:57</publishTime>
    </File>
  </ItemGroup>
</Project>
VueWebApi/Tools/TestSocket.cs
@@ -18,7 +18,9 @@
        public void socketServer()
        {
            string serverIP = System.Configuration.ConfigurationManager.AppSettings["FileIP"]; //服务器IP地址
            try
            {
                string serverIP = System.Configuration.ConfigurationManager.AppSettings["serverIP"]; //服务器IP地址
            var server = new WebSocketServer(serverIP);
            server.Start(socket =>//服务开始
            {
@@ -45,6 +47,12 @@
                };
            });
        }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        /// <summary>
        /// å‘送消息
VueWebApi/VueWebApi.csproj
@@ -418,6 +418,7 @@
    <Content Include="Global.asax" />
    <Content Include="Grid\grwebapp.js" />
    <Content Include="Grid\webapp-ws-tutorial.htm" />
    <Content Include="HtmlPage1.html" />
    <Content Include="Hubs\HubsMessage2.html" />
    <Content Include="Hubs\HubsMessage1.html" />
    <Content Include="Hubs\HubsMessage.html" />
VueWebApi/Web.config
@@ -25,6 +25,7 @@
        <!--key失效时间30秒-->
        <add key="RedisKeyTimeCont" value="120" />
        <!--Excel导出模板配置IP-->
        <add key="serverIP" value="wss://121.196.36.24:8001" />
        <add key="FileIP" value="http://121.196.36.24:8001/" />
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
VueWebApi/bin/VueWebApi.dll.config
@@ -25,6 +25,7 @@
        <!--key失效时间30秒-->
        <add key="RedisKeyTimeCont" value="120" />
        <!--Excel导出模板配置IP-->
        <add key="serverIP" value="wss://121.196.36.24:8001" />
        <add key="FileIP" value="http://121.196.36.24:8001/" />
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
VueWebApi/bin/VueWebApi.pdb
Binary files differ
VueWebApi/bin/VueWebApi.xml
@@ -556,6 +556,146 @@
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.GroupSalaryReportSearchUser(System.String)">
            <summary>
            ç­ç»„工资报表记录查看报工人员
            </summary>
            <param name="id">报工记录主表id</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.GroupSalaryReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ç­ç»„工资报表记录查询
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="groupcode">生产班组</param>
            <param name="username">操作人员</param>
            <param name="operdate">操作时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.PeopleSalaryReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            äººå‘˜å·¥èµ„明细报表
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="groupcode">生产班组</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</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.ReportManagerController.PeopleSalaryReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            äººå‘˜å·¥èµ„明细报表导出
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="groupcode">生产班组</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.DefectDetailsReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ä¸è‰¯æ˜Žç»†æŠ¥è¡¨
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="defectcode">缺陷代码</param>
            <param name="defectname">缺陷名称</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</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.ReportManagerController.DefectDetailsReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ä¸è‰¯æ˜Žç»†æŠ¥è¡¨å¯¼å‡º
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="defectcode">缺陷代码</param>
            <param name="defectname">缺陷名称</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.QuaneryDefectReportSearch">
            <summary>
            å“è´¨å¼‚常排行报表
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.MaintenanceDetailsReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ç»´ä¿®æ˜Žç»†æŠ¥è¡¨
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="style">操作类型</param>
            <param name="defectname">缺陷名称</param>
            <param name="repairname">维修人员</param>
            <param name="repairdate">维修时间</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.ReportManagerController.MaintenanceDetailsReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ç»´ä¿®æ˜Žç»†æŠ¥è¡¨å¯¼å‡º
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="style">操作类型</param>
            <param name="defectname">缺陷名称</param>
            <param name="repairname">维修人员</param>
            <param name="repairdate">维修时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.SendController.GetConnect(System.String)">
            <summary>
            ç™»å½•用户建立WebSocket服务连接
            </summary>
            <param name="clientName">登录用户信息</param>
            <returns></returns>
        </member>
        <member name="F:VueWebApi.Controllers.SendController._sockets">
            è®°å½•客户端
        </member>
        <member name="M:VueWebApi.Controllers.SendController.ProcessRequest(System.Web.WebSockets.AspNetWebSocketContext)">
            æŽ¥å—信息和发送信息
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.CheckScanDeviceQrCodeData(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,扫描工位/设备二维码
VueWebApi/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
Binary files differ
VueWebApi/obj/Release/Package/PackageTmp/HtmlPage1.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    <title></title>
    <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.11.3.min.js"></script>
    <script>
        var ws;
        $().ready(function () {
            $('#conn').click(function () {
                ws = new WebSocket('wss://121.196.36.24:8001' + '/api/Send?clientName=' + '456');
                $('#msg').append('<p>正在连接</p>');
                ws.onopen = function () {
                    $('#msg').append('<p>已经连接</p>');
                }
                ws.onmessage = function (evt) {
                    $('#msg').append('<p>' + evt.data + '</p>');
                }
                ws.onerror = function (evt) {
                    $('#msg').append('<p>' + JSON.stringify(evt) + '</p>');
                }
                ws.onclose = function () {
                    $('#msg').append('<p>已经关闭</p>');
                }
            });
            $('#close').click(function () {
                ws.close();
            });
            $('#send').click(function () {
                if (ws.readyState == WebSocket.OPEN) {
                    ws.send($("#to").val() + "|" + $('#content').val());
                }
                else {
                    $('#tips').text('连接已经关闭');
                }
            });
        });
    </script>
</head>
<body>
    <div>
        <input id="user" type="text" />
        <input id="conn" type="button" value="连接" />
        <input id="close" type="button" value="关闭" /><br />
        <span id="tips"></span>
        <input id="content" type="text" />
        <input id="send" type="button" value="发送" /><br />
        <input id="to" type="text" />目的用户
        <div id="msg">
        </div>
    </div>
</body>
</html>
VueWebApi/obj/Release/Package/PackageTmp/Web.config
@@ -25,6 +25,7 @@
    <!--key失效时间30秒-->
    <add key="RedisKeyTimeCont" value="120" />
    <!--Excel导出模板配置IP-->
    <add key="serverIP" value="wss://121.196.36.24:8001" />
    <add key="FileIP" value="http://121.196.36.24:8001/" />
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
Binary files differ
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
@@ -506,6 +506,196 @@
            </summary>
            <param name="documentPath">The physical path to XML document.</param>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.OutSourceReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            å§”外报表记录查询
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="suppername">供方名称</param>
            <param name="type">操作类型</param>
            <param name="receivdate">收料时间</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.ReportManagerController.OutSourceReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            å§”外报表记录导出
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="suppername">供方名称</param>
            <param name="type">操作类型</param>
            <param name="receivdate">收料时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.GroupSalaryReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ç­ç»„工资报表记录查询
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="groupcode">生产班组</param>
            <param name="username">操作人员</param>
            <param name="operdate">操作时间</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.ReportManagerController.GroupSalaryReportSearchUser(System.String)">
            <summary>
            ç­ç»„工资报表记录查看报工人员
            </summary>
            <param name="id">报工记录主表id</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.GroupSalaryReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ç­ç»„工资报表记录查询
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="groupcode">生产班组</param>
            <param name="username">操作人员</param>
            <param name="operdate">操作时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.PeopleSalaryReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            äººå‘˜å·¥èµ„明细报表
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="groupcode">生产班组</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</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.ReportManagerController.PeopleSalaryReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            äººå‘˜å·¥èµ„明细报表导出
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="groupcode">生产班组</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.DefectDetailsReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ä¸è‰¯æ˜Žç»†æŠ¥è¡¨
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="defectcode">缺陷代码</param>
            <param name="defectname">缺陷名称</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</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.ReportManagerController.DefectDetailsReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ä¸è‰¯æ˜Žç»†æŠ¥è¡¨å¯¼å‡º
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="defectcode">缺陷代码</param>
            <param name="defectname">缺陷名称</param>
            <param name="reportname">报工人员</param>
            <param name="reportdate">报工时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.QuaneryDefectReportSearch">
            <summary>
            å“è´¨å¼‚常排行报表
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ReportManagerController.MaintenanceDetailsReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ç»´ä¿®æ˜Žç»†æŠ¥è¡¨
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="style">操作类型</param>
            <param name="defectname">缺陷名称</param>
            <param name="repairname">维修人员</param>
            <param name="repairdate">维修时间</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.ReportManagerController.MaintenanceDetailsReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            ç»´ä¿®æ˜Žç»†æŠ¥è¡¨å¯¼å‡º
            </summary>
            <param name="wocode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">规格型号</param>
            <param name="stepname">工序名称</param>
            <param name="style">操作类型</param>
            <param name="defectname">缺陷名称</param>
            <param name="repairname">维修人员</param>
            <param name="repairdate">维修时间</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.SendController.GetConnect(System.String)">
            <summary>
            ç™»å½•用户建立WebSocket服务连接
            </summary>
            <param name="clientName">登录用户信息</param>
            <returns></returns>
        </member>
        <member name="F:VueWebApi.Controllers.SendController._sockets">
            è®°å½•客户端
        </member>
        <member name="M:VueWebApi.Controllers.SendController.ProcessRequest(System.Web.WebSockets.AspNetWebSocketContext)">
            æŽ¥å—信息和发送信息
        </member>
        <member name="M:VueWebApi.Controllers.AppDeviceManageController.CheckScanDeviceQrCodeData(System.String)">
            <summary>
            æ—¥å¸¸ç‚¹æ£€,扫描工位/设备二维码
VueWebApi/obj/Release/TransformWebConfig/original/Web.config
@@ -25,6 +25,7 @@
        <!--key失效时间30秒-->
        <add key="RedisKeyTimeCont" value="120" />
        <!--Excel导出模板配置IP-->
        <add key="serverIP" value="wss://121.196.36.24:8001" />
        <add key="FileIP" value="http://121.196.36.24:8001/" />
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
VueWebApi/obj/Release/TransformWebConfig/transformed/Web.config
@@ -25,6 +25,7 @@
    <!--key失效时间30秒-->
    <add key="RedisKeyTimeCont" value="120" />
    <!--Excel导出模板配置IP-->
    <add key="serverIP" value="wss://121.196.36.24:8001" />
    <add key="FileIP" value="http://121.196.36.24:8001/" />
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
VueWebApi/obj/Release/VueWebApi.pdb
Binary files differ