yl
2022-07-08 350aef928584da9bb91d2de8646ce42e1f5758c1
生产开报工接口提交
已添加29个文件
已修改35个文件
已删除8个文件
46937 ■■■■■ 文件已修改
.vs/VueWebApi/v16/.suo 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/BasicSettingController.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/DeviceManagerController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/GridReportController.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/ImportExcelController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/MaterialManagerController.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/ProductModelController.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/ProductionManagementController.cs 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Controllers/SystemSettingController.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/BasicSettingBLL.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/GridReportBLL.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/ProductModelBLL.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/BLL/ProductionManagementBLL.cs 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/BasicSettingDAL.cs 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/GridReportDAL.cs 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/ProductModelDAL.cs 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/ProductionManagementDAL.cs 1192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/DLL/DAL/SystemSettingDAL.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Grid/grwebapp.js 499 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Grid/webapp-ws-tutorial.htm 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-06-29.TXT 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-06-30.TXT 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-07-01.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-07-04.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-07-06.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-07-07.TXT 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Logs/2022-07-08.TXT 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Models/ScanStartReportData.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user 449 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/DapperHelper.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/GridMessage.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/ScanStartReport.cs 943 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Tools/SeachEncode.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Views/Shared/Error.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Views/Shared/_Layout.cshtml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Views/Web.config 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Views/_ViewStart.cshtml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/VueWebApi.csproj 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/VueWebApi.csproj.user 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/FastReport.Web.xml 1997 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/FastReport.xml 36237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.dll.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/bin/VueWebApi.xml 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/grf/产品流传单.grf 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/grf/产品流传单A5.grf 450 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/grf/报工产出标签.grf 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/grf/报工打印标签.grf 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Debug/VueWebApi.csproj.AssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Debug/VueWebApi.csproj.CoreCompileInputs.cache 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Debug/VueWebApi.csproj.FileListAbsolute.txt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Debug/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Grid/grwebapp.js 499 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Grid/webapp-ws-tutorial.htm 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Views/Shared/Error.cshtml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Views/Shared/_Layout.cshtml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Views/Web.config 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Views/_ViewStart.cshtml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/grf/产品流传单.grf 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/grf/产品流传单A5.grf 450 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/grf/报工产出标签.grf 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/Package/PackageTmp/grf/报工打印标签.grf 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/TransformWebConfig/original/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/TransformWebConfig/transformed/Web.config 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.CopyComplete 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
VueWebApi/obj/Release/VueWebApi.pdb 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VueWebApi/v16/.suo
Binary files differ
VueWebApi/Controllers/BasicSettingController.cs
@@ -77,8 +77,10 @@
            string OrganName = obj["OrganName"].ToString(); //组织名称
            string Operator = obj["Operator"].ToString(); //操作人员
            int SupUnit = Convert.ToInt32(obj["SupUnit"].ToString());//上级单位
            string RightCode = obj["RightCode"].ToString(); //菜单功能编码
            string numvalue = obj["numvalue"].ToString(); //流水号
            string OperType = obj["OperType"].ToString();  //操作类型
            mes = BasicSettingBLL.AddUpdateOrganization(OrganType, OrganCode, OrganName, Operator, SupUnit, OperType);
            mes = BasicSettingBLL.AddUpdateOrganization(OrganType, OrganCode, OrganName, Operator, SupUnit, RightCode, numvalue, OperType);
            return TJson.toJson(mes);
        }
        #endregion
@@ -135,6 +137,20 @@
        public HttpResponseMessage UserOrganization()
        {
            mes = BasicSettingBLL.UserOrganization();
            return TJson.toJson(mes);
        }
        #endregion
        #region[用户所属班组]
        /// <summary>
        /// ç”¨æˆ·æ‰€å±žç­ç»„
        /// </summary>
        /// <returns></returns>
        [Route(template: "UserGroup")]
        [HttpGet]
        public HttpResponseMessage UserGroup()
        {
            mes = BasicSettingBLL.UserGroup();
            return TJson.toJson(mes);
        }
        #endregion
@@ -280,6 +296,58 @@
        #endregion
        #region[用户组列表查询]
        /// <summary>
        /// ç”¨æˆ·ç»„列表查询
        /// </summary>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "UserGroupSearch")]
        [HttpGet]
        public HttpResponseMessage UserGroupSearch(int page = 0, int rows = 0, string prop = null, string order = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = BasicSettingBLL.UserGroupSearch(startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[用户组新增]
        /// <summary>
        /// ç”¨æˆ·ç»„新增
        /// </summary>
        /// <param name="json">用户组新增提交数据</param>
        /// <returns></returns>
        [Route(template: "UserGroupAdd")]
        [HttpPost]
        public HttpResponseMessage UserGroupAdd(List<StepDefect> json)
        {
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString();
            mes = BasicSettingBLL.UserGroupAdd(json, username);
            return TJson.toJson(mes);
        }
        #endregion
        #region[用户组删除]
        /// <summary>
        /// ç”¨æˆ·ç»„删除
        /// </summary>
        /// <param name="UserGrupCode">用户组编码</param>
        /// <returns></returns>
        [Route(template: "UserGroupDelete")]
        [HttpPost]
        public HttpResponseMessage UserGroupDelete(string UserGrupCode)
        {
            mes = BasicSettingBLL.UserGroupDelete(UserGrupCode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[角色类型列表查询]
        /// <summary>
VueWebApi/Controllers/DeviceManagerController.cs
@@ -12,7 +12,7 @@
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/BasicSetting")]
    [RoutePrefix(prefix: "api/DeviceManager")]
    [ControllerGroup("设备管理", "在线接口")]
    public class DeviceManagerController : ApiController
    {
VueWebApi/Controllers/GridReportController.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using VueWebApi.DLL.BLL;
using VueWebApi.Tools;
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/GridReport")]
    [ControllerGroup("单据打印", "在线接口")]
    public class GridReportController : ApiController
    {
        //定义全局信息返回变量
        ToMessage mes = new ToMessage();
        RedisHelper redis = new RedisHelper();
        #region[MES工单打印]
        /// <summary>
        /// MES工单打印
        /// </summary>
        /// <param name="username">登录用户</param>
        /// <param name="mesordercode">工单编号</param>
        [Route(template: "MesOrderPrintSearch")]
        [HttpPost]
        public HttpResponseMessage MesOrderPrintSearch(string username,string mesordercode)
        {
            mes = GridReportBLL.MesOrderPrintSearch(username,mesordercode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单打印1]
        /// <summary>
        /// MES工单打印1
        /// </summary>
        /// <param name="obj">提交数据</param>
        /// <returns></returns>
        [Route(template: "MesOrderPrintSearch1")]
        [HttpPost]
        public HttpResponseMessage MesOrderPrintSearch1([FromBody] JObject obj)
        {
            string username = obj["username"].ToString();    //登录用户
            string mesordercode = obj["mesordercode"].ToString();    //工单状态码
            mes = GridReportBLL.MesOrderPrintSearch(username, mesordercode);
            return TJson.toJson(mes);
        }
        #endregion
    }
}
VueWebApi/Controllers/ImportExcelController.cs
@@ -16,7 +16,7 @@
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/BasicSetting")]
    [RoutePrefix(prefix: "api/ImportExcel")]
    [ControllerGroup("Excel导入模板验证", "在线接口")]
    public class ImportExcelController : ApiController
    {
VueWebApi/Controllers/MaterialManagerController.cs
@@ -11,7 +11,7 @@
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/BasicSetting")]
    [RoutePrefix(prefix: "api/MaterialManager")]
    [ControllerGroup("物料管理", "在线接口")]
    public class MaterialManagerController : ApiController
    {
VueWebApi/Controllers/ProductModelController.cs
@@ -13,7 +13,7 @@
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/BasicSetting")]
    [RoutePrefix(prefix: "api/ProductModel")]
    [ControllerGroup("制造模型", "在线接口")]
    public class ProductModelController : ApiController
    {
@@ -296,16 +296,16 @@
        #region[工艺路线下拉查询接口]
        #region[工序下拉查询接口]
        /// <summary>
        /// å·¥è‰ºè·¯çº¿ä¸‹æ‹‰æŸ¥è¯¢æŽ¥å£
        /// å·¥åºä¸‹æ‹‰æŸ¥è¯¢æŽ¥å£
        /// </summary>
        /// <returns></returns>
        [Route(template: "RouteSelect")]
        [Route(template: "StepSelect")]
        [HttpGet]
        public HttpResponseMessage RouteSelect()
        public HttpResponseMessage StepSelect()
        {
            mes = ProductModelBLL.RouteSelect();
            mes = ProductModelBLL.StepSelect();
            return TJson.toJson(mes);
        }
        #endregion
@@ -351,7 +351,7 @@
        #region[工艺路线新增]
        /// <summary>
        /// å·¥è‰ºè·¯çº¿æ–°å¢žç¼–辑
        /// å·¥è‰ºè·¯çº¿æ–°å¢ž
        /// </summary>
        /// <param name="id">工艺路线id</param>
        /// <param name="opertype">操作类型(新增)</param>
@@ -359,9 +359,10 @@
        /// <returns></returns>
        [Route(template: "AddUpdateRoute")]
        [HttpPost]
        public HttpResponseMessage AddUpdateRoute(string id, string opertype, RoutEdit json)
        public HttpResponseMessage AddUpdateRoute(string opertype, RoutEdit json,string id=null)
        {
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            //var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            var username = "Admin";
            mes = ProductModelBLL.AddUpdateRoute(id, opertype, username, json);
            return TJson.toJson(mes);
        }
@@ -670,6 +671,14 @@
        #endregion
        #region[节拍工价删除]
        /// <summary>
        /// èŠ‚æ‹å·¥ä»·åˆ é™¤
        /// </summary>
        /// <param name="partcode">产品编码</param>
        /// <param name="routecode">工艺路线编码</param>
        /// <param name="stepcode">工序编码</param>
        /// <param name="eqpcode">设备编码</param>
        /// <returns></returns>
        [Route(template: "DeleteBeatRate")]
        [HttpPost]
        public HttpResponseMessage DeleteBeatRate(string partcode,string routecode,string stepcode,string eqpcode)
VueWebApi/Controllers/ProductionManagementController.cs
@@ -11,7 +11,7 @@
namespace VueWebApi.Controllers
{
    [RoutePrefix(prefix: "api/BasicSetting")]
    [RoutePrefix(prefix: "api/ProductionManagement")]
    [ControllerGroup("生产管理", "在线接口")]
    public class ProductionManagementController : ApiController
    {
@@ -73,7 +73,6 @@
        [HttpPost]
        public HttpResponseMessage MarkSaveErpOrder([FromBody] JObject obj)
        {
            string erporderstus = obj["erporderstus"].ToString();    //订单状态码
            string erpordercode = obj["erpordercode"].ToString(); //订单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string wkshopcode = obj["wkshopcode"].ToString(); //车间编码
@@ -83,7 +82,7 @@
            string ordernum = obj["ordernum"].ToString(); //下单单数
            string relse_qty = obj["relse_qty"].ToString(); //已下单数量
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.MarkSaveErpOrder(erporderstus, erpordercode, partcode, wkshopcode, warehousecode, erpqty, markqty, ordernum, relse_qty,username);
            mes = ProductionManagementBLL.MarkSaveErpOrder(erpordercode, partcode, wkshopcode, warehousecode, erpqty, markqty, ordernum, relse_qty, username);
            return TJson.toJson(mes);
        }
        #endregion
@@ -133,5 +132,347 @@
            return TJson.toJson(mes);
        }
        #endregion
        #region[产品编码查找工艺路线下拉接口]
        /// <summary>
        /// äº§å“ç¼–码查找工艺路线下拉接口
        /// </summary>
        /// <param name="partcode">产品编码</param>
        /// <returns></returns>
        [Route(template: "PartSelectRoute")]
        [HttpGet]
        public HttpResponseMessage PartSelectRoute(string partcode)
        {
            mes = ProductionManagementBLL.PartSelectRoute(partcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产品+工艺路线查找车间下拉接口]
        /// <summary>
        /// äº§å“+工艺路线查找车间下拉接口
        /// </summary>
        /// <param name="partcode">产品编码</param>
        /// <param name="routecode">工艺路线编码</param>
        /// <returns></returns>
        [Route(template: "RouteSelectWkshop")]
        [HttpGet]
        public HttpResponseMessage RouteSelectWkshop(string partcode, string routecode)
        {
            mes = ProductionManagementBLL.RouteSelectWkshop(partcode, routecode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[根据选择工艺路线查看工序接口]
        /// <summary>
        /// æ ¹æ®é€‰æ‹©å·¥è‰ºè·¯çº¿æŸ¥çœ‹å·¥åºæŽ¥å£
        /// </summary>
        /// <param name="routecode">工艺路线编码</param>
        /// <returns></returns>
        [Route(template: "SelectRouteStep")]
        [HttpGet]
        public HttpResponseMessage SelectRouteStep(string routecode)
        {
            mes = ProductionManagementBLL.SelectRouteStep(routecode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单新增、编辑提交]
        /// <summary>
        /// MES工单新增、编辑提交
        /// </summary>
        /// <param name="obj">提交数据</param>
        /// <returns></returns>
        [Route(template: "AddUpdateMesOrder")]
        [HttpPost]
        public HttpResponseMessage AddUpdateMesOrder([FromBody] JObject obj)
        {
            string mesorderstus = obj["mesorderstus"].ToString();    //工单状态码
            string mesordercode = obj["mesordercode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string mesqty = obj["mesqty"].ToString(); //工单数量
            string routecode = obj["routecode"].ToString(); //工艺路线编码
            string wkshopcode = obj["wkshopcode"].ToString();//生产车间编码
            string planstartdate = obj["planstartdate"].ToString(); //计划开始时间
            string planenddate = obj["planenddate"].ToString();     //计划完成时间
            string orderlev = obj["orderlev"].ToString(); //工单等级
            string opertype = obj["OperType"].ToString();  //操作类型
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.AddUpdateMesOrder(mesorderstus, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单删除]
        /// <summary>
        /// MES工单删除
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="m_po">订单编号</param>
        /// <param name="orderqty">工单数量</param>
        /// <returns></returns>
        [Route(template: "DeleteMesOrder")]
        [HttpPost]
        public HttpResponseMessage DeleteMesOrder(string wocode, string m_po, string orderqty)
        {
            mes = ProductionManagementBLL.DeleteMesOrder(wocode, m_po, orderqty);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单关闭]
        /// <summary>
        /// MES工单关闭
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="m_po">订单编号</param>
        /// <returns></returns>
        [Route(template: "ClosedMesOrder")]
        [HttpPost]
        public HttpResponseMessage ClosedMesOrder(string wocode, string m_po)
        {
            mes = ProductionManagementBLL.ClosedMesOrder(wocode, m_po);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单查看工序任务]
        /// <summary>
        /// MES工单查看工序任务
        /// </summary>
        /// <param name="wo_code">工单编号</param>
        /// <returns></returns>
        [Route(template: "SearchWorkStep")]
        [HttpGet]
        public HttpResponseMessage SearchWorkStep(string wo_code)
        {
            mes = ProductionManagementBLL.SearchWorkStep(wo_code);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工扫码获取工单对应工序任务(自制)]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥æ‰«ç èŽ·å–å·¥å•å¯¹åº”å·¥åºä»»åŠ¡(自制)
        /// </summary>
        /// <param name="orderstepqrcode">扫描的二维码信息</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则(默认按照计划开工时间正序)</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepSearch")]
        [HttpGet]
        public HttpResponseMessage MesOrderStepSearch(string orderstepqrcode = null, int page = 0, int rows = 0, string prop = null, string order = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.MesOrderStepSearch(orderstepqrcode, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工扫码获取工单对应工序任务(外协)]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥æ‰«ç èŽ·å–å·¥å•å¯¹åº”å·¥åºä»»åŠ¡(外协)
        /// </summary>
        /// <param name="orderstepqrcode">扫描的二维码信息</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则(默认按照计划开工时间正序)</param>
        /// <returns></returns>
        [Route(template: "MesOrderWxStepSearch")]
        [HttpGet]
        public HttpResponseMessage MesOrderWxStepSearch(string orderstepqrcode = null, int page = 0, int rows = 0, string prop = null, string order = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.MesOrderWxStepSearch(orderstepqrcode, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region [生产开报工:开工(开始/报工)/外协(发料/收料)时条件判断及数据返回接口]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå¼€å·¥(开始/报工)/外协(发料/收料)时条件判断及数据返回接口
        /// </summary>
        /// <param name="OperType">操作类型:自制(ZZ)/外协(WX)</param>
        /// <param name="SelectType">操作类型:外协发料标识(OUT)/外协收料标识(IN)</param>
        /// <param name="orderstepqrcode">扫描二维码信息</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepStart")]
        [HttpGet]
        public HttpResponseMessage MesOrderStepStart(string OperType, string SelectType, string orderstepqrcode)
        {
            mes = ProductionManagementBLL.MesOrderStepStart(OperType, SelectType, orderstepqrcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工:开工时获取设备下拉列表]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå¼€å·¥æ—¶èŽ·å–è®¾å¤‡ä¸‹æ‹‰åˆ—è¡¨
        /// </summary>
        /// <param name="orderstepqrcode">扫描二维码信息</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepStartSelectEqp")]
        [HttpGet]
        public HttpResponseMessage MesOrderStepStartSelectEqp(string orderstepqrcode)
        {
            mes = ProductionManagementBLL.MesOrderStepStartSelectEqp(orderstepqrcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工:报工时获取生产班组下拉框]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥ï¼šæŠ¥å·¥æ—¶èŽ·å–ç”Ÿäº§ç­ç»„ä¸‹æ‹‰æ¡†
        /// </summary>
        /// <returns></returns>
        [Route(template: "MesOrderStepReportSelectUserGroup")]
        [HttpGet]
        public HttpResponseMessage MesOrderStepReportSelectUserGroup()
        {
            mes = ProductionManagementBLL.MesOrderStepReportSelectUserGroup();
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工:根据生产班组查找人员列表]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå¼€å·¥æ—¶èŽ·å–è®¾å¤‡ä¸‹æ‹‰åˆ—è¡¨
        /// </summary>
        /// <param name="usergroupcode">班组编码</param>
        /// <returns></returns>
        [Route(template: "MesOrderGroupSelectUser")]
        [HttpGet]
        public HttpResponseMessage MesOrderGroupSelectUser(string usergroupcode)
        {
            mes = ProductionManagementBLL.MesOrderGroupSelectUser(usergroupcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产报工:报工/外协收料 èŽ·å–ä¸è‰¯åŽŸå› ä¸‹æ‹‰åˆ—è¡¨]
        /// <summary>
        /// ç”Ÿäº§æŠ¥å·¥ï¼šæŠ¥å·¥/外协收料 èŽ·å–ä¸è‰¯åŽŸå› ä¸‹æ‹‰åˆ—è¡¨
        /// </summary>
        /// <param name="orderstepqrcode">扫描二维码信息</param>
        /// <returns></returns>
        [Route(template: "MesOrderStepSelectCause")]
        [HttpGet]
        public HttpResponseMessage MesOrderStepSelectCause(string orderstepqrcode)
        {
            mes = ProductionManagementBLL.MesOrderStepSelectCause(orderstepqrcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工,开工提交]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥,开工提交
        /// </summary>
        /// <param name="obj">开工提交数据</param>
        /// <returns></returns>
        [Route(template: "SavaMesOrderStepStart")]
        [HttpPost]
        public HttpResponseMessage SavaMesOrderStepStart([FromBody] JObject obj)
        {
            string mesordercode = obj["mesordercode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string stepseq = obj["stepseq"].ToString(); //工序序号
            string stepcode = obj["stepcode"].ToString(); //工序编码
            string eqpcode = obj["eqpcode"].ToString(); //设备编码
            string taskqty = obj["taskqty"].ToString(); //任务数量
            string startqty = obj["startqty"].ToString(); //开工数量
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //开工人员
            mes = ProductionManagementBLL.SavaMesOrderStepStart(mesordercode, partcode, stepseq, stepcode, eqpcode, taskqty, startqty, username);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工,报工提交]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥,报工提交
        /// </summary>
        /// <param name="obj">报工提交数据</param>
        /// <returns></returns>
        [Route(template: "SavaMesOrderStepReport")]
        [HttpPost]
        public HttpResponseMessage SavaMesOrderStepReport([FromBody] JObject obj)
        {
            string mesordercode = obj["mesordercode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string stepseq = obj["stepseq"].ToString(); //工序序号
            string stepcode = obj["stepcode"].ToString(); //工序编码
            string eqpcode = obj["eqpcode"].ToString(); //设备编码
            string usergroupcode = obj["usergroupcode"].ToString(); //班组编码
            string reportuser = obj["reportuser"].ToString();  //报工人员
            string taskqty = obj["taskqty"].ToString(); //任务数量
            string startqty = obj["startqty"].ToString(); //开工数量
            string reportqty = obj["reportqty"].ToString(); //报工工数量
            string ngqty = obj["ngqty"].ToString(); //不良数量
            string badcode = obj["badcode"].ToString(); //不良原因编码
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, username);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工,发料提交]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥,发料提交
        /// </summary>
        /// <param name="obj">发料提交数据</param>
        /// <returns></returns>
        [Route(template: "SavaMesOrderStepOut")]
        [HttpPost]
        public HttpResponseMessage SavaMesOrderStepOut([FromBody] JObject obj)
        {
            string mesordercode = obj["mesordercode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string stepseq = obj["stepseq"].ToString(); //工序序号
            string stepcode = obj["stepcode"].ToString(); //工序编码
            string wxcode = obj["wxcode"].ToString(); //外协供应商编码
            string outuser = obj["outuser"].ToString();  //发料人员
            string taskqty = obj["taskqty"].ToString(); //任务数量
            string fqty = obj["fqty"].ToString(); //发料数量
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SavaMesOrderStepOut(mesordercode, partcode, stepseq, stepcode, wxcode, outuser, taskqty, fqty, username);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工,收料提交]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥,收料提交
        /// </summary>
        /// <param name="obj">收料提交数据</param>
        /// <returns></returns>
        [Route(template: "SavaMesOrderStepIn")]
        [HttpPost]
        public HttpResponseMessage SavaMesOrderStepIn([FromBody] JObject obj)
        {
            string mesordercode = obj["mesordercode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string stepseq = obj["stepseq"].ToString(); //工序序号
            string stepcode = obj["stepcode"].ToString(); //工序编码
            string wxcode = obj["wxcode"].ToString(); //外协供应商编码
            string inuser = obj["inuser"].ToString();  //收料人员
            string taskqty = obj["taskqty"].ToString(); //任务数量
            string sqty = obj["sqty"].ToString(); //收料数量
            string ngqty = obj["ngqty"].ToString(); //不良数量
            string badcode = obj["badcode"].ToString(); //不良原因编码
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, username);
            return TJson.toJson(mes);
        }
        #endregion
    }
}
VueWebApi/Controllers/SystemSettingController.cs
@@ -4,6 +4,7 @@
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using VueWebApi.DLL.BLL;
using VueWebApi.Tools;
@@ -55,7 +56,7 @@
            string prefix = obj["prefix"].ToString(); //固定字符
            string filingdate = obj["filingdate"].ToString(); //提交日期
            string incbit = obj["incbit"].ToString(); //自增位数  
            string lm_user = obj["lm_user"].ToString(); //操作人员
            var lm_user = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = SystemSettingBLL.SaveEncodingRules(rightcode, rightname,prefix, filingdate, incbit, lm_user);
            return TJson.toJson(mes);
        }
VueWebApi/DLL/BLL/BasicSettingBLL.cs
@@ -25,9 +25,9 @@
        #endregion
        #region [组织架构新增编辑]
        public static ToMessage AddUpdateOrganization(string organType, string organCode, string organName,string Operator, int supUnit, string operType)
        public static ToMessage AddUpdateOrganization(string organType, string organCode, string organName, string Operator, int supUnit, string RightCode, string numvalue, string operType)
        {
            return BasicSettingDAL.AddUpdateOrganization(organType, organCode, organName, Operator, supUnit,operType);
            return BasicSettingDAL.AddUpdateOrganization(organType, organCode, organName, Operator, supUnit, RightCode, numvalue, operType);
        }
        #endregion
@@ -52,6 +52,13 @@
        public static ToMessage UserOrganization()
        {
            return BasicSettingDAL.UserOrganization();
        }
        #endregion
        #region[用户所属班组]
        public static ToMessage UserGroup()
        {
            return BasicSettingDAL.UserGroup();
        }
        #endregion
@@ -91,6 +98,27 @@
        #endregion
        #region[用户组列表查询]
        public static ToMessage UserGroupSearch(int startNum, int endNum, string prop, string order)
        {
            return BasicSettingDAL.UserGroupSearch(startNum, endNum, prop, order);
        }
        #endregion
        #region[用户组新增]
        public static ToMessage UserGroupAdd(List<StepDefect> json,string username)
        {
            return BasicSettingDAL.UserGroupAdd(json,username);
        }
        #endregion
        #region[用户组删除]
        public static ToMessage UserGroupDelete(string UserGrupCode)
        {
            return BasicSettingDAL.UserGroupDelete(UserGrupCode);
        }
        #endregion
        #region[角色类型查询]
        public static ToMessage RoleTypeSearch(int startNum, int endNum, string prop, string order)
VueWebApi/DLL/BLL/GridReportBLL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using VueWebApi.DLL.DAL;
using VueWebApi.Tools;
namespace VueWebApi.DLL.BLL
{
    public class GridReportBLL
    {
        #region[MES工单打印]
        public static ToMessage MesOrderPrintSearch(string username, string mesordercode)
        {
            return GridReportDAL.MesOrderPrintSearch(username,mesordercode);
        }
        #endregion
    }
}
VueWebApi/DLL/BLL/ProductModelBLL.cs
@@ -113,10 +113,10 @@
        #region[工艺路线下拉查询接口]
        public static ToMessage RouteSelect()
        #region[工序下拉查询接口]
        public static ToMessage StepSelect()
        {
            return ProductModelDAL.RouteSearch();
            return ProductModelDAL.StepSelect();
        }
        #endregion
VueWebApi/DLL/BLL/ProductionManagementBLL.cs
@@ -17,9 +17,9 @@
        #endregion
        #region[ERP订单下达]
        public static ToMessage MarkSaveErpOrder(string erporderstus, string erpordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string username)
        public static ToMessage MarkSaveErpOrder(string erpordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string username)
        {
            return ProductionManagementDAL.MarkSaveErpOrder(erporderstus, erpordercode, partcode, wkshopcode, warehousecode, erpqty, markqty, ordernum, relse_qty, username);
            return ProductionManagementDAL.MarkSaveErpOrder(erpordercode, partcode, wkshopcode, warehousecode, erpqty, markqty, ordernum, relse_qty, username);
        }
        #endregion
@@ -38,5 +38,135 @@
            return ProductionManagementDAL.ErpOrderSearch(mesorderstus, mesordercode, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
        }
        #endregion
        #region[产品编码查找工艺路线下拉接口]
        public static ToMessage PartSelectRoute(string partcode)
        {
            return ProductionManagementDAL.PartSelectRoute(partcode);
        }
        #endregion
        #region[工艺路线查找车间下拉接口]
        public static ToMessage RouteSelectWkshop(string partcode, string routecode)
        {
            return ProductionManagementDAL.RouteSelectWkshop(partcode,routecode);
        }
        #endregion
        #region[根据选择工艺路线查看工序接口]
        public static ToMessage SelectRouteStep(string routecode)
        {
            return ProductionManagementDAL.SelectRouteStep(routecode);
        }
        #endregion
        #region[MES工单新增、编辑提交]
        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        {
            return ProductionManagementDAL.AddUpdateMesOrder(mesorderstus, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
        }
        #endregion
        #region[MES工单删除]
        public static ToMessage DeleteMesOrder(string wocode,string m_po,string orderqty)
        {
            return ProductionManagementDAL.DeleteMesOrder(wocode,m_po, orderqty);
        }
        #endregion
        #region[MES工单关闭]
        public static ToMessage ClosedMesOrder(string wocode, string m_po)
        {
            return ProductionManagementDAL.ClosedMesOrder(wocode, m_po);
        }
        #endregion
        #region[MES工单查看工序任务]
        public static ToMessage SearchWorkStep(string wo_code)
        {
            return ProductionManagementDAL.SearchWorkStep(wo_code);
        }
        #endregion
        #region[生产开报工扫码获取工单对应工序任务]
        public static ToMessage MesOrderStepSearch(string orderstepqrcode, int startNum, int endNum, string prop, string order)
        {
            return ProductionManagementDAL.MesOrderStepSearch(orderstepqrcode, startNum, endNum, prop, order);
        }
        #endregion
        #region[生产开报工扫码获取工单对应工序任务(外协)]
        public static ToMessage MesOrderWxStepSearch(string orderstepqrcode, int startNum, int endNum, string prop, string order)
        {
            return ProductionManagementDAL.MesOrderWxStepSearch(orderstepqrcode, startNum, endNum, prop, order);
        }
        #endregion
        #region [生产开报工:开工(开始/报工)/外协发料时条件判断及数据返回接口]
        public static ToMessage MesOrderStepStart(string OperType,string SelectType, string orderstepqrcode)
        {
            return ProductionManagementDAL.MesOrderStepStart(OperType, SelectType, orderstepqrcode);
        }
        #endregion
        #region[生产开报工:开工时获取设备下拉列表]
        public static ToMessage MesOrderStepStartSelectEqp(string orderstepqrcode)
        {
            return ProductionManagementDAL.MesOrderStepStartSelectEqp(orderstepqrcode);
        }
        #endregion
        #region[生产开报工:报工时获取生产班组下拉框]
        public static ToMessage MesOrderStepReportSelectUserGroup()
        {
            return ProductionManagementDAL.MesOrderStepReportSelectUserGroup();
        }
        #endregion
        #region[生产开报工:根据生产班组查找人员列表]
        public static ToMessage MesOrderGroupSelectUser(string usergroupcode)
        {
            return ProductionManagementDAL.MesOrderGroupSelectUser(usergroupcode);
        }
        #endregion
        #region[生产报工:报工/外协收料 èŽ·å–ä¸è‰¯åŽŸå› ä¸‹æ‹‰åˆ—è¡¨]
        public static ToMessage MesOrderStepSelectCause(string orderstepqrcode)
        {
            return ProductionManagementDAL.MesOrderStepSelectCause(orderstepqrcode);
        }
        #endregion
        #region[生产开报工,开工(开始)提交]
        public static ToMessage SavaMesOrderStepStart(string mesordercode,string partcode,string stepseq,string stepcode,string eqpcode,string taskqty,string startqty,string username)
        {
            return ProductionManagementDAL.SavaMesOrderStepStart(mesordercode, partcode, stepseq, stepcode, eqpcode, taskqty, startqty, username);
        }
        #endregion
        #region[生产开报工,报工提交]
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty,string startqty, string reportqty,string ngqty, string badcode, string username)
        {
            return ProductionManagementDAL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, username);
        }
        #endregion
        #region[生产开报工,发料提交]
        public static ToMessage SavaMesOrderStepOut(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string outuser, string taskqty, string fqty, string username)
        {
            return ProductionManagementDAL.SavaMesOrderStepOut(mesordercode, partcode, stepseq, stepcode, wxcode, outuser, taskqty, fqty, username);
        }
        #endregion
        #region[生产开报工, æ”¶æ–™æäº¤]
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string username)
        {
            return ProductionManagementDAL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, username);
        }
        #endregion
    }
}
VueWebApi/DLL/DAL/BasicSettingDAL.cs
@@ -145,23 +145,22 @@
        #endregion
        #region[新增编辑组织架构]
        public static ToMessage AddUpdateOrganization(string organType, string organCode, string organName, string Operator, int supUnit, string operType)
        public static ToMessage AddUpdateOrganization(string organType, string organCode, string organName, string Operator, int supUnit,string RightCode,string numvalue, string operType)
        {
            string sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                if (operType == "Add")
                {
                    var sql = @"insert into TOrganization(parent_id,org_code,org_name,lm_user,lm_date,description)
                     sql = @"insert into TOrganization(parent_id,org_code,org_name,lm_user,lm_date,description)
                            values(@supUnit,@organCode,@organName,@Operator,@CreateDate,@organType)";
                    dynamicParams.Add("@supUnit", supUnit);
                    dynamicParams.Add("@organCode", organCode);
                    dynamicParams.Add("@organName", organName);
                    dynamicParams.Add("@Operator", Operator);
                    dynamicParams.Add("@CreateDate", DateTime.Now.ToString());
                    dynamicParams.Add("@organType", organType);
                    int cont = DapperHelper.SQL(sql, dynamicParams);
                    if (cont > 0)
                    list.Add(new { str = sql, parm = new { supUnit = supUnit, organCode= organCode, organName= organName, Operator= Operator, CreateDate= DateTime.Now.ToString(), organType= organType } });
                    //sql = @"update T_CodeRules set value=@cunm2  where rightcode=@RightCode";
                    //list.Add(new { str = sql, parm = new { cunm2 = numvalue, RightCode = RightCode } });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        mes.code = "200";
                        mes.count = 0;
@@ -178,7 +177,7 @@
                }
                if (operType == "Update")
                {
                    var sql = @"update TOrganization set description=@organType,org_name=@organName,parent_id=@supUnit,lm_user=@Operator,lm_date=@CreateDate where org_code=@organCode";
                    sql = @"update TOrganization set description=@organType,org_name=@organName,parent_id=@supUnit,lm_user=@Operator,lm_date=@CreateDate where org_code=@organCode";
                    dynamicParams.Add(@"organCode", organCode);
                    dynamicParams.Add("@supUnit", supUnit);
                    dynamicParams.Add("@organName", organName);
@@ -224,7 +223,7 @@
                sql = @"select * from  TOrganization  where parent_id=@orgid";
                dynamicParams.Add(@"orgid", orgid);
                cont = DapperHelper.selectcount(sql, dynamicParams);
                if (cont <= 0)
                if (cont>0)
                {
                    mes.code = "300";
                    mes.Message = "当前组织有下级关联,请先删除下级组织!";
@@ -302,9 +301,11 @@
                //search = search.Substring(3);//截取索引2后面的字符
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select u.id,u.usercode,u.username,u.stu_torgcode,t.org_name,u.password,u.mobile,u.email,u.wagetype,u.enable,u.lm_user,u.lm_date,u.is_role
                var sql = @"select u.id,u.usercode,u.username,g.group_code,g.group_name,u.stu_torgcode,t.org_name,u.password,u.mobile,u.email,u.wagetype,u.enable,u.lm_user,u.lm_date,u.is_role
                            from TUser u
                            left join TOrganization t on u.stu_torgcode=t.org_code where u.is_delete<>1 " + search;
                            left join TOrganization t on u.stu_torgcode=t.org_code
                            left join TGroup g on u.usergroup_code=g.group_code
                            where u.is_delete<>1 " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -354,6 +355,34 @@
                mes.code = "300";
                mes.count = 0;
                mes.data = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[用户所属班组]
        public static ToMessage UserGroup()
        {
            var dynamicParams = new DynamicParameters();
            try
            {
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select group_code,group_name
                            from TGroup
                            where  is_delete<>'1' ";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
                mes.count = total;
                mes.data = data;
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
@@ -690,6 +719,141 @@
        #region[用户组列表查询]
        public static ToMessage UserGroupSearch(int startNum, int endNum, string prop, string order)
        {
            var dynamicParams = new DynamicParameters();
            try
            {
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select group_code,group_name,description
                            from TGroup
                            where  is_delete<>'1' ";
                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 UserGroupAdd(List<StepDefect> json,string username)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                //循环写入用户组表
                for (int i = 0; i < json.Count; i++)
                {
                    sql = @"insert into TGroup(group_code,group_name,description,lm_user,lm_date) values(@groupcode,@groupename,@description,@lm_user,@lm_date)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            groupcode = json[i].code,
                            groupename = json[i].name,
                            description = json[i].flag,
                            lm_user = username,
                            lm_date = DateTime.Now.ToString()
                        }
                    });
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[用户组删除]
        public static ToMessage UserGroupDelete(string UserGrupCode)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                list.Clear();
                sql = @"select *  from TUser where is_delete<>'1' and usergroup_code=@UserGrupCode";
                dynamicParams.Add("@UserGrupCode", UserGrupCode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "该用户组下有关联的用户,不允许删除!";
                    mes.data = null;
                    return mes;
                }
                sql = @"delete TGroup where group_code=@UserGrupCode";
                list.Add(new { str = sql, parm = new { UserGrupCode = UserGrupCode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[角色类型查询]
        public static ToMessage RoleTypeSearch(int startNum, int endNum, string prop, string order)
        {
VueWebApi/DLL/DAL/GridReportDAL.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using VueWebApi.Tools;
namespace VueWebApi.DLL.DAL
{
    public class GridReportDAL
    {
        public static DataTable dt;    //定义全局变量dt
        public static bool res;       //定义全局变量dt
        public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
        public static GridMessage gidmes = new GridMessage(); //定义全局返回信息对象
        public static string strProcName = ""; //定义全局sql变量
        public static List<SqlParameter> listStr = new List<SqlParameter>(); //定义全局参数集合
        public static SqlParameter[] parameters; //定义全局SqlParameter参数数组
        #region[MES工单打印]
        public static ToMessage MesOrderPrintSearch(string username, string mesordercode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            //获取设备类型数据
            sql = @"select A.seq,A.wo_code,P.partcode,P.partname,P.partspec,R.name as routename,M.plan_qty as orderqty,@username as lm_user,@createdate as lm_date,
                        B.stepcode,B.stepname,A.plan_qty,(case when A.good_qty=0 then '' end) as good_qty,(case when A.ng_qty=0 then '' end) as ng_qty,A.wo_code+';'+B.stepcode as stepqrcode
                        from TK_Wrk_Step A
                        left join TK_Wrk_Man M on A.wo_code=M.wo_code
                        left join TFlw_Rout R on A.route_code=R.code
                        left join TMateriel_Info P on M.materiel_code=P.partcode
                        left join TStep B on A.step_code=B.stepcode
                        where A.wo_code=@mesordercode ";
            dynamicParams.Add("@username", username);
            dynamicParams.Add("@createdate", DateTime.Now.ToString());
            dynamicParams.Add("@mesordercode", mesordercode);
            var data = DapperHelper.selectdata(sql, dynamicParams);
            if (data.Rows.Count > 0)
            {
                gidmes.recordset = data;
                mes.code = "200";
                mes.count = 0;
                mes.Message = "查询成功!";
                mes.data = gidmes;
            }
            else
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = "无生产任务数据!";
                mes.data = null;
            }
            return mes;
        }
        #endregion
    }
}
VueWebApi/DLL/DAL/ProductModelDAL.cs
@@ -504,7 +504,7 @@
                }
                if (operType == "Update")
                {
                    var sql = @"update TMateriel_Type set partname=@materialname,partspec=@materialspec,uom_code=@uomcode,materieltype_code=@materialtypecode,stck_code=@warehousecode,
                    var sql = @"update TMateriel_Info set partname=@materialname,partspec=@materialspec,uom_code=@uomcode,materieltype_code=@materialtypecode,stck_code=@warehousecode,
                                maxqty=@maxstockqty,minqty=@minstockqty,lm_user=@username,lm_date=@CreateDate where id=@materialid";
                    dynamicParams.Add("@materialid", materialid);
                    dynamicParams.Add("@materialname", materialname);
@@ -792,7 +792,7 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select code,name,description,enable,lm_user,lm_date
                var sql = @"select id,code,name,description,enable,lm_user,lm_date
                            from TFlw_Rout
                            where is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
@@ -885,7 +885,7 @@
                            is_laststep = "Y";
                        }
                        //新增工艺路线关联工序表
                        sql = @"insert TFlw_Rtdt (rout_code,seq,step_code,first_choke,last_choke,lm_user,lm_date) values()";
                        sql = @"insert TFlw_Rtdt (rout_code,seq,step_code,first_choke,last_choke,lm_user,lm_date) values(@rout_code,@seq,@step_code,@first_choke,@last_choke,@lm_user,@lm_date)";
                        list.Add(new { str = sql, parm = new { rout_code = json.code, seq = Convert.ToInt32(json.Data.Rows[i]["SEQ"].ToString()), step_code = json.Data.Rows[i]["STEPCODE"].ToString(), first_choke = is_firststep, last_choke = is_laststep, lm_user = username, lm_date = DateTime.Now.ToString() } });
                    }
                    bool aa = DapperHelper.DoTransaction(list);
@@ -991,14 +991,14 @@
        #region[工艺路线下拉查询接口]
        public static ToMessage RouteSearch()
        #region[工序下拉查询接口]
        public static ToMessage StepSelect()
        {
            string sql = "";
            try
            {
                //获取工艺路线数据
                sql = @"select code,name from TFlw_Rout where is_delete<>'1' ";
                //获取工序数据
                sql = @"select stepcode,stepname from TStep where is_delete<>'1' ";
                var data = DapperHelper.selecttable(sql);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -1053,7 +1053,7 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select stepcode,stepname,flwtype,enable,descr,lm_user,lm_date,is_eqp,is_defect
                var sql = @"select id,stepcode,stepname,flwtype,enable,descr,lm_user,lm_date,is_eqp,is_defect
                            from TStep
                            where is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
@@ -1187,16 +1187,16 @@
                }
                //删除设备节拍工价表
                sql = @"delete TPrteEqp_Stad  where stepcode=@stepcode";
                sql = @"delete TPrteEqp_Stad  where step_code=@stepcode";
                list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                //删除工序关联工作站表
                sql = @"delete TFlw_Rteqp   where step_code=@stepcode";
                list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                //删除缺陷关联工序表
                sql = @"update TDefect_Step  where step_code=@stepcode";
                sql = @"delete TDefect_Step  where step_code=@stepcode";
                list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                //删除工序
                sql = @"update TStep set is_delete='1' where partcode=@stepcode";
                sql = @"update TStep set is_delete='1' where stepcode=@stepcode";
                list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
@@ -1247,7 +1247,7 @@
                        select distinct A.eqp_code,B.btype  from TFlw_Rteqp A 
                        inner join TCustomer B on A.eqp_code=B.code 
                        where A.step_code=@stepcode and A.is_delete<>'1' and B.is_delete<>'1'
                        ) B on T.code=B.eqp_code where T.btype='WX' and T.is_delete<>'1'";
                        ) B on T.btype=B.btype where T.btype='WX' and T.is_delete<>'1'";
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                for (int i = 0; i < data.Rows.Count; i++)
@@ -1289,9 +1289,10 @@
                              left join(
                              select distinct A.eqp_code  from TFlw_Rteqp A 
                              inner join TEqpInfo B on A.eqp_code=B.code 
                              where B.wksp_code='W001' and A.is_delete<>'1' and B.is_delete<>'1'
                              ) B on A.code=B.eqp_code and A.is_delete<>'1'";
                              where A.step_code=@stepcode and A.is_delete<>'1' and B.is_delete<>'1'
                              ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
                        dynamicParams.Add("@stepcode", stepcode);
                        dynamicParams.Add("@wkspcode", data.Rows[i]["WKSP_CODE"].ToString());
                        var data0 = DapperHelper.selectdata(sql, dynamicParams);
                        for (int j = 0; j < data0.Rows.Count; j++)
                        {
@@ -1334,7 +1335,7 @@
                    sql = @"delete TFlw_Rteqp where step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                    //标记工序表关联工作站标识
                    sql = @"update TStep is_eqp='N' where stepcode=@stepcode";
                    sql = @"update TStep set is_eqp='N' where stepcode=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                }
                else
@@ -1401,7 +1402,7 @@
                //获取工序关联缺陷数据(包含关联标识)
                sql = @"select A.code,A.name,(case when B.defect_code is null then 'N' else 'Y' end) flag from TDefect A
                        left join(
                        select distinct defect_code  from TDefect_Step where step_code='' and is_delete<>'1'
                        select distinct defect_code  from TDefect_Step where step_code=@stepcode and is_delete<>'1'
                        ) B on A.code=B.defect_code";
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
@@ -1442,7 +1443,7 @@
                    sql = @"delete TDefect_Step where step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                    //标记工序表关联工作站标识
                    sql = @"update TStep is_defect='N' where stepcode=@stepcode";
                    sql = @"update TStep set is_defect='N' where stepcode=@stepcode";
                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                }
                else
@@ -1619,7 +1620,7 @@
            {
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select C.partcode,C.partname,B.wksp_code,T.org_name as wksp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                var sql = @"select B.code as eqpcode,B.name as eqpname,B.wksp_code,T.org_name as wksp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice
                            from (
                            select materiel_code, eqp_code,eqp_value,stand_value,cavity_qty,unprice   from TPrteEqp_Stad
                            where materiel_code=@partcode  and route_code=@routecode and step_code=@stepcode 
@@ -1661,7 +1662,7 @@
                if (partcode != "" && partcode != null)
                {
                    search += "and A.materiel_code=@partcode ";
                    dynamicParams.Add("@stepcode", partcode);
                    dynamicParams.Add("@partcode", partcode);
                }
                if (routecode != "" && routecode != null)
                {
VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -65,8 +65,8 @@
                }
                if (creatuser != "" && creatuser != null)
                {
                    search += "and A.createuser like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                    search += "and A.createuser like '%'+@creatuser+'%' ";
                    dynamicParams.Add("@creatuser", creatuser);
                }
                if (search == "")
@@ -80,7 +80,7 @@
                            from TKimp_Ewo A
                            left join TMateriel_Info B on A.materiel_code=B.partcode
                            left join TOrganization C on A.wkshp_code=C.org_code
                            left join T_Sec_Stck D on A.stck_code=D.code " + search;
                            left join T_Sec_Stck D on A.stck_code=D.code where A.is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -99,7 +99,7 @@
        #endregion
        #region[ERP订单下达]
        public static ToMessage MarkSaveErpOrder(string erporderstus, string erpordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string username)
        public static ToMessage MarkSaveErpOrder(string erpordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string username)
        {
            var sql = "";
            List<object> list = new List<object>();
@@ -142,7 +142,7 @@
                            parm = new
                            {
                                wo_code = wo,
                                status = erporderstus,
                                status = "NEW",
                                wkshp_code = wkshopcode,
                                plan_qty = cdqty + (decimal.Parse(markqty) - sumqty),  //末单下单数量=切分数量+(下单数量-累计切分下单数量)
                                stck_code = warehousecode,
@@ -164,7 +164,7 @@
                            parm = new
                            {
                                wo_code = wo,
                                status = erporderstus,
                                status = "NEW",
                                wkshp_code = wkshopcode,
                                plan_qty = cdqty,
                                stck_code = warehousecode,
@@ -237,14 +237,14 @@
            var dynamicParams = new DynamicParameters();
            try
            {
                sql = @"select *  from TK_Wrk_Man where m_po=@erpordercode";
                sql = @"select *  from TK_Wrk_Man where m_po=@erpordercode and status<> 'CLOSED'";
                dynamicParams.Add("@erpordercode", erpordercode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前订单有下达的MES工单,不允许关闭,请先删除或关闭相关工单!";
                    mes.Message = "当前订单有下达未关闭的MES工单,订单不允许关闭,请先删除或关闭相关工单!";
                    mes.data = null;
                }
                else 
@@ -303,7 +303,7 @@
                }
                if (mesordercode != "" && mesordercode != null)
                {
                    search += "and A.wo like '%'+@mesordercode+'%' ";
                    search += "and A.wo_code like '%'+@mesordercode+'%' ";
                    dynamicParams.Add("@mesordercode", mesordercode);
                }
                if (partcode != "" && partcode != null)
@@ -323,13 +323,13 @@
                }
                if (createdate != "" && createdate != null)
                {
                    search += "and A.paydate=@createdate ";
                    search += "and CONVERT(varchar(100),A.lm_date,23)=@createdate ";
                    dynamicParams.Add("@createdate", createdate);
                }
                if (creatuser != "" && creatuser != null)
                {
                    search += "and A.createuser like '%'+@partspec+'%' ";
                    dynamicParams.Add("@partspec", partspec);
                    search += "and A.lm_user like '%'+@creatuser+'%' ";
                    dynamicParams.Add("@creatuser", creatuser);
                }
                if (search == "")
@@ -338,12 +338,14 @@
                }
                // --------------查询指定数据--------------
                var total = 0; //总条数
                var sql = @"select A.status,A.wo,A.materiel_code as partcode,B.partname,B.partspec,A.qty,A.relse_qty,A.wkshp_code,C.org_name as wkshp_name,
                            A.stck_code,D.name as stck_name,A.paydate,A.createuser,A.createdate
                            from TKimp_Ewo A
                var sql = @"select A.status,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.m_po,A.lm_user,A.lm_date
                            from TK_Wrk_Man A
                            left join TMateriel_Info B on A.materiel_code=B.partcode
                            left join TOrganization C on A.wkshp_code=C.org_code
                            left join T_Sec_Stck D on A.stck_code=D.code " + search;
                            left join T_Sec_Stck D on A.stck_code=D.code
                            left join TFlw_Rout E on A.route_code=E.code
                            left join T_Sec_Stck F on A.stck_code=F.code where A.is_delete<>'1' " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -360,5 +362,1163 @@
            return mes;
        }
        #endregion
        #region[产品编码查找工艺路线下拉接口]
        public static ToMessage PartSelectRoute(string partcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取车间下拉框数据
                sql = @"select R.code,R.name  from TMateriel_Info A
                        inner join  TMateriel_Route M on A.partcode=M.materiel_code
                        inner join  TFlw_Rout R on M.route_code=R.code
                        where A.partcode=@partcode ";
                dynamicParams.Add("@partcode", partcode);
                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 RouteSelectWkshop(string partcode, string routecode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取车间下拉框数据
                sql = @"select distinct F.org_code,F.org_name  from TFlw_Rout A
                        inner join  TMateriel_Route M on A.code=M.route_code
                        inner join   TFlw_Rtdt B on A.code=B.rout_code
                        inner join TStep C on B.step_code=C.stepcode
                        inner join TFlw_Rteqp D on C.stepcode=D.step_code
                        inner join TEqpInfo  E on D.eqp_code=E.code
                        left join TOrganization F on E.wksp_code=F.org_code
                        where A.code=@routecode and M.materiel_code=@partcode ";
                dynamicParams.Add("@partcode", partcode);
                dynamicParams.Add("@routecode", routecode);
                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 SelectRouteStep(string routecode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取工艺路线对应工序信息
                sql = @"select A.seq,T.stepcode,T.stepname,T.flwtype,T.descr  from TFlw_Rtdt A
                        left join  TStep T on A.step_code=T.stepcode
                        where A.rout_code=@partcode ";
                dynamicParams.Add("@partcode", routecode);
                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[MES工单新增、编辑提交]
        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
        {
            var sql = "";
            var dynamicParams = new DynamicParameters();
            List<object> list = new List<object>();
            try
            {
                if (opertype == "Add")
                {
                    //写入工单表
                    sql = @"insert into TK_Wrk_Man(wo_code,status,wkshp_code,plan_qty,plan_startdate,plan_enddate,route_code,stck_code,lm_user,lm_date,materiel_code,m_po,piroque)
                                values(@mesordercode,@mesorderstus,@wkshopcode,@mesqty,@planstartdate,@planenddate,@routecode,@stck_code,@username,@CreateDate,@materiel_code,@m_po,@orderlev)";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            mesordercode = mesordercode,
                            mesorderstus = "ALLO", //派发
                            wkshopcode = wkshopcode,
                            mesqty = mesqty,
                            planstartdate = planstartdate,
                            planenddate = planenddate,
                            routecode = routecode,
                            stck_code = "",
                            username = username,
                            CreateDate = DateTime.Now.ToString(),
                            materiel_code = partcode,
                            m_po = "",
                            orderlev = orderlev
                        }
                    });
                    //写入工序任务表
                    sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,plan_qty,plan_startdate,plan_enddate,status,isbott,isend,route_code,lm_user,lm_date)
                            select @mesordercode as wo_code,A.seq,A.step_code,@mesqty as plan_qty,@planstartdate as plan_startdate,@planenddate as plan_enddate,@status as status,
                            A.first_choke,A.last_choke,A.rout_code,@username,@CreateDate
                            from TFlw_Rtdt A
                            left join TStep B on A.step_code=B.stepcode
                            left join TFlw_Rout C on A.rout_code=C.code
                            where A.first_choke='Y' and A.rout_code=@routecode
                            and B.is_delete<>'1' and C.enable='Y' and C.is_delete<>'1'";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            mesordercode = mesordercode,
                            mesqty = mesqty,
                            planstartdate = planstartdate,
                            planenddate = planenddate,
                            routecode = routecode,
                            status = "ALLO",  //派发
                            username = username,
                            CreateDate = DateTime.Now.ToString()
                        }
                    });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "MES工单新建派发成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "MES工单新建派发失败!";
                        mes.data = null;
                    }
                }
                if (opertype == "Update")
                {
                    sql = @"update TK_Wrk_Man set route_code=@routecode,wkshp_code=@wkshopcode,plan_startdate=@planstartdate,plan_enddate=@planenddate,status=@status,piroque=@orderlev,lm_user=@username,lm_date=@CreateDate where wo_code=@mesordercode";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            mesordercode = mesordercode,
                            wkshopcode = wkshopcode,
                            planstartdate = planstartdate,
                            planenddate = planenddate,
                            status = "ALLO",  //派发
                            routecode = routecode,
                            username = username,
                            CreateDate = DateTime.Now.ToString(),
                            orderlev = orderlev
                        }
                    });
                    //写入工序任务表
                    sql = @"insert into TK_Wrk_Step(wo_code,seq,step_code,plan_qty,plan_startdate,plan_enddate,status,isbott,isend,route_code,lm_user,lm_date)
                            select @mesordercode as wo_code,A.seq,A.step_code,@mesqty as plan_qty,@planstartdate as plan_startdate,@planenddate as plan_enddate,@status as status,
                            A.first_choke,A.last_choke,A.rout_code,@username,@CreateDate
                            from TFlw_Rtdt A
                            left join TStep B on A.step_code=B.stepcode
                            left join TFlw_Rout C on A.rout_code=C.code
                            where A.first_choke='Y' and A.rout_code='R001'
                            and B.is_delete<>'1' and C.enable='Y' and C.is_delete<>'1'";
                    list.Add(new
                    {
                        str = sql,
                        parm = new
                        {
                            mesordercode = mesordercode,
                            mesqty = mesqty,
                            planstartdate = planstartdate,
                            planenddate = planenddate,
                            status = "ALLO",  //派发
                            username = username,
                            CreateDate = DateTime.Now.ToString()
                        }
                    });
                    bool aa = DapperHelper.DoTransaction(list);
                    if (aa)
                    {
                        mes.code = "200";
                        mes.count = 0;
                        mes.Message = "修改操作成功!";
                        mes.data = null;
                    }
                    else
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "修改操作失败!";
                        mes.data = null;
                    }
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单删除]
        public static ToMessage DeleteMesOrder(string wocode, string m_po, string orderqty)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //判断工单是否为未开始状态或者已派发状态(满足其中一种都可删除,否则不允许删除)
                sql = @"select *  from TK_Wrk_Man where wo_code=@wocode and status='NEW' or status='ALLO'";
                dynamicParams.Add("@wocode", wocode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    //查询生产订单表数据
                    sql = @"select *  from TKimp_Ewo where wo=@m_po";
                    dynamicParams.Add("@m_po", m_po);
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    decimal relse_qty = decimal.Parse(data0.Rows[0]["RELSE_QTY"].ToString());//以下单数量
                    if ((relse_qty - decimal.Parse(orderqty)) == 0)  //全部撤销 è®¢å•状态回写未开始,已下单数量为0
                    {
                        //回写订单表状态及已下单数量
                        sql = @"update TKimp_Ewo set status='NEW',relse_qty=0  where wo=@m_po";
                        list.Add(new { str = sql, parm = new { m_po = m_po } });
                    }
                    else
                    {
                        //回写订单表状态及已下单数量
                        sql = @"update TKimp_Ewo set status='CREATING',relse_qty=relse_qty-@orderqty  where wo=@m_po";
                        list.Add(new { str = sql, parm = new { m_po = m_po, orderqty = decimal.Parse(orderqty) } });
                    }
                    //删除工单工序表
                    sql = @"delete TK_Wrk_Step  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = wocode } });
                    //删除工单表
                    sql = @"update TK_Wrk_Man set is_delete='1'  where wo_code=@wocode";
                    list.Add(new { str = sql, parm = new { wocode = wocode } });
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "工单执行中或已关闭,不允许删除!";
                    mes.data = null;
                }
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "删除成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "删除失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单关闭]
        public static ToMessage ClosedMesOrder(string wocode, string m_po)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                //关闭工单对应工序任务
                sql = @"update TK_Wrk_Step set status='CLOSED'  where wo_code=@wocode";
                list.Add(new { str = sql, parm = new { wocode = wocode } });
                //回写工单表状态为(关闭)
                sql = @"update TK_Wrk_Man set status='CLOSED'  where wo_code=@wocode";
                list.Add(new { str = sql, parm = new { wocode = wocode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "工单关闭成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "工单关闭失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[MES工单查看工序任务]
        public static ToMessage SearchWorkStep(string wo_code)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //获取工序任务信息
                sql = @"select A.wo_code,A.seq,B.stepcode,B.stepname,A.plan_qty,A.good_qty,A.ng_qty  from  TK_Wrk_Step A
                        left join TStep B on A.step_code=B.stepcode
                        where A.wo_code=@wo_code";
                dynamicParams.Add("@wo_code", wo_code);
                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 MesOrderStepSearch(string orderstepqrcode, int startNum, int endNum, string prop, string order)
        {
            var sql = "";
            string search = "";
            string ordercode = "";
            string stepcode = "";
            var dynamicParams = new DynamicParameters();
            var total = 0; //总条数
            try
            {
                if (orderstepqrcode != "" && orderstepqrcode != null)
                {
                    string[] arra = orderstepqrcode.Split(';');
                    if (arra.Length == 1) //工单号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                    }
                    if (arra.Length == 2) //工单号+工序号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                    if (ordercode != "" && ordercode == null) //工单号不为空,工序号为空
                    {
                        search += "and A.wo_code=@ordercode ";
                        dynamicParams.Add("@ordercode", ordercode);
                    }
                    if (ordercode != "" && ordercode != "") //工单号不为空,工序号不为空
                    {
                        search += "and A.wo_code=@ordercode ";
                        dynamicParams.Add("@ordercode", ordercode);
                        search += "and S.stepcode=@stepcode ";
                        dynamicParams.Add("@stepcode", stepcode);
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "二维码信息为空!";
                    mes.data = null;
                    return mes;
                }
                if (stepcode != "")
                {
                    //查找当前工序属性
                    sql = @"select *  from TStep where TStep where stepcode=@stepcode";
                    dynamicParams.Add("@stepcode", stepcode);
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data0.Rows.Count > 0)
                    {
                        if (data0.Rows[0]["FLWTYPE"].ToString() == "W")
                        {
                            mes.code = "300";
                            mes.count = 0;
                            mes.Message = "当前工序任务为外协工序任务,请前往外协操作页签执行!";
                            mes.data = null;
                            return mes;
                        }
                    }
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.status,A.wo_code,B.route_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                            S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.plan_startdate
                            from TK_Wrk_Step A
                            left join TK_Wrk_Man B on A.wo_code=B.wo_code
                            left join TMateriel_Info M on B.materiel_code=M.partcode
                            left join TStep S on A.step_code=S.stepcode
                            where A.status<>'CLOSED' and S.flwtype='Z'  " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                if (data.ToList().Count > 0)
                {
                    mes.code = "200";
                    mes.count = total;
                    mes.Message = "查询成功!";
                    mes.data = data.ToList();
                    return mes;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "无可执行的生产任务,任务已完成或已关闭!";
                    mes.data = null;
                    return mes;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[生产开报工扫码获取工单对应工序任务(外协)]
        public static ToMessage MesOrderWxStepSearch(string orderstepqrcode, int startNum, int endNum, string prop, string order)
        {
            var sql = "";
            string search = "";
            string ordercode = "";
            string stepcode = "";
            var dynamicParams = new DynamicParameters();
            var total = 0; //总条数
            try
            {
                if (orderstepqrcode != "" && orderstepqrcode != null)
                {
                    string[] arra = orderstepqrcode.Split(';');
                    if (arra.Length == 1) //工单号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                    }
                    if (arra.Length == 2) //工单号+工序号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                    if (ordercode != "" && ordercode == null) //工单号不为空,工序号为空
                    {
                        search += "and A.wo_code=@ordercode ";
                        dynamicParams.Add("@ordercode", ordercode);
                    }
                    if (ordercode != "" && ordercode != "") //工单号不为空,工序号不为空
                    {
                        search += "and A.wo_code=@ordercode ";
                        dynamicParams.Add("@ordercode", ordercode);
                        search += "and S.stepcode=@stepcode ";
                        dynamicParams.Add("@stepcode", stepcode);
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "二维码信息为空!";
                    mes.data = null;
                    return mes;
                }
                if (stepcode != "")
                {
                    //查找当前工序属性
                    sql = @"select *  from TStep where TStep where stepcode=@stepcode";
                    dynamicParams.Add("@stepcode", stepcode);
                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                    if (data0.Rows.Count > 0)
                    {
                        if (data0.Rows[0]["FLWTYPE"].ToString() == "Z")
                        {
                            mes.code = "300";
                            mes.count = 0;
                            mes.Message = "当前工序任务为自制工序任务,请前往自制操作页签执行!";
                            mes.data = null;
                            return mes;
                        }
                    }
                }
                //根据条件查询工单工序任务(自制工序)
                sql = @"select A.status,A.wo_code,B.route_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                            S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.plan_startdate
                            from TK_Wrk_Step A
                            left join TK_Wrk_Man B on A.wo_code=B.wo_code
                            left join TMateriel_Info M on B.materiel_code=M.partcode
                            left join TStep S on A.step_code=S.stepcode
                            where A.status<>'CLOSED' and S.flwtype='W'  " + search;
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                if (data.ToList().Count > 0)
                {
                    mes.code = "200";
                    mes.count = total;
                    mes.Message = "查询成功!";
                    mes.data = data.ToList();
                    return mes;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "无可执行的生产任务,任务已完成或已关闭!";
                    mes.data = null;
                    return mes;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region [生产开报工:开工(开始/报工)/外协发料时条件判断及数据返回接口]
        public static ToMessage MesOrderStepStart(string OperType, string SelectType, string orderstepqrcode)
        {
            var sql = "";
            string search = "";
            string ordercode = "";
            string serialnumber = "";
            string stepcode = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                if (orderstepqrcode != "" && orderstepqrcode != null)
                {
                    string[] arra = orderstepqrcode.Split(';');
                    if (arra.Length == 1) //工单号二维码
                    {
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "二维码信息错误,请扫描工序任务卡或者报工打印标签!";
                        mes.data = null;
                        return mes;
                    }
                    if (arra.Length == 2) //工单号+工序号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                    switch (OperType)
                    {
                        case "ZZ":
                            mes = ScanStartReport.ZZEncodingSeach(ordercode, stepcode);
                            break;
                        case "WX":
                            mes = ScanStartReport.WXEncodingSeach(SelectType, ordercode, stepcode);
                            break;
                        default:
                            break;
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "二维码信息为空!";
                    mes.data = null;
                    return mes;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[生产开报工:开工时获取设备下拉列表]
        public static ToMessage MesOrderStepStartSelectEqp(string orderstepqrcode)
        {
            string sql = "";
            string ordercode = "";
            string stepcode = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                if (orderstepqrcode != "" && orderstepqrcode != null)
                {
                    string[] arra = orderstepqrcode.Split(';');
                    if (arra.Length == 1) //工单号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                    }
                    if (arra.Length == 2) //工单号+工序号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "二维码信息为空!";
                    mes.data = null;
                    return mes;
                }
                //获取工序关联的设备
                sql = @"select B.code,B.name from TFlw_Rteqp A
                        left join TEqpInfo B on A.eqp_code=B.code
                        where A.style='E' and A.step_code=@stepcode";
                dynamicParams.Add("@stepcode", stepcode);
                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 MesOrderStepReportSelectUserGroup()
        {
            string sql = "";
            try
            {
                //获取用户组
                sql = @"select group_code,group_name from TGroup";
                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 MesOrderGroupSelectUser(string usergroupcode)
        {
            string sql = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                //班组获取人员列表
                sql = @"select usercode,username  from TUser where usergroup_code=@stepcode";
                dynamicParams.Add("@usergroupcode", usergroupcode);
                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 MesOrderStepSelectCause(string orderstepqrcode)
        {
            string sql = "";
            string ordercode = "";
            string stepcode = "";
            var dynamicParams = new DynamicParameters();
            try
            {
                if (orderstepqrcode != "" && orderstepqrcode != null)
                {
                    string[] arra = orderstepqrcode.Split(';');
                    if (arra.Length == 1) //工单号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                    }
                    if (arra.Length == 2) //工单号+工序号二维码
                    {
                        ordercode = arra[0]; //获取指定字符串前面的字符
                        stepcode = arra[1]; //获取指定字符串前面的字符
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "二维码信息为空!";
                    mes.data = null;
                    return mes;
                }
                //获取工序关联缺陷
                sql = @"select B.code,B.name from TDefect_Step A
                        left join TDefect B on A.defect_code=B.code
                        where A.step_code=@stepcode";
                dynamicParams.Add("@stepcode", stepcode);
                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 SavaMesOrderStepStart(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string taskqty, string startqty, string username)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                list.Clear();
                //判断是否有开工记录
                sql = @"select *  from TK_Wrk_Record where wo_code=@wo_code and step_code=@step_code  and style='S'";
                dynamicParams.Add("@wo_code", mesordercode);
                dynamicParams.Add("@step_code", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前工序任务已开工!";
                    mes.data = null;
                    return mes;
                }
                //写入开报工记录表
                sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,open_person,open_time,task_qty,start_qty,style,lm_user,lm_date)
                                values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@username,@opentime,@taskqty,@startqty,@style,@lm_user,@lm_date)";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, username = username, opentime = date, taskqty = taskqty, startqty = startqty, style = "S", lm_user = username, lm_date = date } });
                //回写工单工序表状态为START: å¼€å·¥
                sql = @"update TK_Wrk_Step set status='START'  where wo_code=@mesordercode and step_code=@stepcode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
                //回写工单表状态为: å¼€å·¥ï¼šSTART
                sql = @"update TK_Wrk_Man set status='START'  where wo_code=@mesordercode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "开工成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "开工失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[生产开报工,报工提交]
        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode, string username)
        {
            var sql = "";
            string[] arra = new string[] { };
            string[] arra1 = new string[] { };
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                //截取报工人员
                arra = reportuser.Split(';');
                if (ngqty != "" || ngqty != "0")
                {
                    //截取不良原因
                    arra1 = badcode.Split(';');
                }
                list.Clear();
                //判断是否有报工记录(有:修改 æ— ï¼šæ–°å¢ž)
                sql = @"select *  from TK_Wrk_Record where wo_code=@wo_code and step_code=@step_code and style='B'";
                dynamicParams.Add("@wo_code", mesordercode);
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    //修改报工记录
                    sql = @"update TK_Wrk_Record set good_qty=good+@reportqty,ng_qty=ng_qty+@ngqty
                                lm_user=@username,lm_date=@CreateDate where wo_code=@mesordercode and step_code=@stepcode";
                    list.Add(new { str = sql, parm = new { reportqty = decimal.Parse(reportqty), ngqty = decimal.Parse(ngqty), mesordercode = mesordercode, stepcode = stepcode, username = username, CreateDate = date } });
                    //写入子表
                    for (int i = 0; i < arra.Length; i++)
                    {
                        sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date)
                                values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
                        list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
                    }
                    if (badcode != "" || badcode != null)
                    {
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
                        }
                    }
                }
                else
                {
                    //获取主表最大ID
                    sql = @"select IDENT_CURRENT('TK_Wrk_Record')+1 as id";
                    var dt = DapperHelper.selecttable(sql);
                    //写入开报工记录表
                    sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date)
                                values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = username, lm_date = date } });
                    //写入子表
                    for (int i = 0; i < arra.Length; i++)
                    {
                        sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date)
                                values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
                        list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
                    }
                    if (badcode != "" || badcode != null)
                    {
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
                        }
                    }
                }
                //回写工单工序表合格数量、不良数量
                sql = @"update TK_Wrk_Step set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty  where wo_code=@mesordercode and step_code=@stepcode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode,reportqty=reportqty,ngqty=ngqty } });
                //回写工单表合格数量、不良数量
                sql = @"update TK_Wrk_Man set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty  where wo_code=@mesordercode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, reportqty = reportqty, ngqty = ngqty } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "操作成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "操作失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[生产开报工,发料提交]
        public static ToMessage SavaMesOrderStepOut(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string outuser, string taskqty, string fqty, string username)
        {
            var sql = "";
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                list.Clear();
                //判断是否有发料记录(有(同工单+工序+外协供方修改) æ— ï¼šæ–°å¢ž)
                sql = @"select *  from TK_Wrk_OutRecord where wo_code=@wo_code and step_code=@step_code and wx_code=@wxcode and style='F'";
                dynamicParams.Add("@wo_code", mesordercode);
                dynamicParams.Add("@step_code", stepcode);
                dynamicParams.Add("@wx_code", wxcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    //修改发料记录
                    sql = @"update TK_Wrk_OutRecord set fqty=fqty+@fqty,lm_user=@username,lm_date=@CreateDate
                             where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, fqty = decimal.Parse(fqty), username = username, CreateDate = date } });
                    //写入子表
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,wx_code,out_person,out_time,fqty,syle,lm_user,lm_date)
                                values(@m_id,@wx_code,@out_person,@out_time,@fqty,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), wx_code = wxcode, out_person = outuser, out_time = date, fqty = fqty, style = 'F', lm_user = username, lm_date = date } });
                }
                else
                {
                    //获取主表最大ID
                    sql = @"select IDENT_CURRENT('TK_Wrk_OutRecord')+1 as id";
                    var dt = DapperHelper.selecttable(sql);
                    //写入外协记录主表
                    sql = @"insert into  TK_Wrk_OutRecord(wo_code,step_seq,step_code,wx_code,materiel_code,style,fqty,lm_user,lm_date)
                                values(@mesordercode,@stepseq,@stepcode,@wx_code,@partcode,@style,@fqty,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, wx_code = wxcode, partcode = partcode, style = 'F', fqty = fqty, lm_user = username, lm_date = date } });
                    //写入子表
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,wx_code,out_person,out_time,fqty,style,lm_user,lm_date)
                                values(@m_id,@wx_code,@out_person,@out_time,@fqty,@style,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wx_code = wxcode, out_person = outuser, out_time = date, fqty = fqty, style = 'F', lm_user = username, lm_date = date } });
                }
                //回写工单工序表状态为START: å¼€å·¥
                sql = @"update TK_Wrk_Step set status='START'  where wo_code=@mesordercode and step_code=@stepcode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
                //回写工单表状态为: å¼€å·¥ï¼šSTART
                sql = @"update TK_Wrk_Man set status='START'  where wo_code=@mesordercode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "发料成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "发料失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion
        #region[生产开报工, æ”¶æ–™æäº¤]
        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string username)
        {
            var sql = "";
            string[] arra1 = new string[] { };
            List<object> list = new List<object>();
            var dynamicParams = new DynamicParameters();
            try
            {
                string date = DateTime.Now.ToString(); //获取系统时间
                //截取不良原因
                if (ngqty != "" || ngqty != "0")
                {
                    //截取不良原因
                    arra1 = badcode.Split(';');
                }
                list.Clear();
                //判断是否有收料记录(有:(同工单+工序+外协供方修改) æ— ï¼šæ–°å¢ž)
                sql = @"select *  from TK_Wrk_OutRecord where wo_code=@wo_code and step_code=@step_code and wx_code=@wxcode and style='F'";
                dynamicParams.Add("@wo_code", mesordercode);
                dynamicParams.Add("@step_code", stepcode);
                dynamicParams.Add("@wx_code", wxcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    //修改外协记录主表
                    sql = @"update TK_Wrk_OutRecord set sqty=sqty+@sqty,ng_qty=@ngqty,lm_user=@username,lm_date=@CreateDate
                             where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, sqty = decimal.Parse(sqty), ngqty = decimal.Parse(ngqty), username = username, CreateDate = date } });
                    //写入外协记录子表
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,wx_code,in_person,in_time,sqty,ng_qty,syle,lm_user,lm_date)
                                values(@m_id,@wx_code,@in_person,@in_time,@sqty,@ngqty,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), wx_code = wxcode, in_person = inuser, in_time = date, sqty = sqty, ngqty = ngqty, style = 'S', lm_user = username, lm_date = date } });
                    if (badcode != "" || badcode != null)
                    {
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@stepcode,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
                        }
                    }
                }
                else
                {
                    //获取主表最大ID
                    sql = @"select IDENT_CURRENT('TK_Wrk_OutRecord')+1 as id";
                    var dt = DapperHelper.selecttable(sql);
                    //写入外协记录主表
                    sql = @"insert into  TK_Wrk_OutRecord(wo_code,step_seq,step_code,wx_code,materiel_code,style,sqty,ng_qty,lm_user,lm_date)
                                values(@mesordercode,@stepseq,@stepcode,@wx_code,@partcode,@style,@sqty,@ngqty,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, wx_code = wxcode, partcode = partcode, style = 'S', sqty = sqty, ngqty = ngqty, lm_user = username, lm_date = date } });
                    //写入外协记录子表
                    sql = @"insert into  TK_Wrk_RecordSub(m_id,wx_code,in_person,in_time,sqty,ng_qty,style,lm_user,lm_date)
                                values(@m_id,@wxcode,@in_person,@in_time,@sqty,@ng_qty,@style,@lm_user,@lm_date)";
                    list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wxcode = wxcode, in_person = inuser, in_time = date, sqty = sqty, ng_qty = ngqty, style = "S", lm_user = username, lm_date = date } });
                    if (badcode != "" || badcode != null)
                    {
                        //写入缺陷记录表
                        for (int i = 0; i < arra1.Length; i++)
                        {
                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date)
                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@stepcode,@style,@lm_user,@lm_date)";
                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
                        }
                    }
                }
                //回写工单工序表合格数量、不良数量
                sql = @"update TK_Wrk_Step set good_qty=good_qty+@sqty,ng_qty=ng_qty+@ngqty  where wo_code=@mesordercode and step_code=@stepcode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, sqty = sqty, ngqty = ngqty } });
                //回写工单表合格数量、不良数量
                sql = @"update TK_Wrk_Man set good_qty=good_qty+@sqty,ng_qty=ng_qty+@ngqty  where wo_code=@mesordercode";
                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, sqty = sqty, ngqty = ngqty } });
                bool aa = DapperHelper.DoTransaction(list);
                if (aa)
                {
                    mes.code = "200";
                    mes.count = 0;
                    mes.Message = "收成功!";
                    mes.data = null;
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "收料失败!";
                    mes.data = null;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
            }
            return mes;
        }
        #endregion'
    }
}
VueWebApi/DLL/DAL/SystemSettingDAL.cs
@@ -45,7 +45,7 @@
                var total = 0; //总条数
                var sql = @"select A.right_code,A.right_name,B.prefix,B.filingdate,B.incbit  from TRight A
                            left join T_CodeRules B on A.right_code=B.rightcode
                            where "+search+" and A.Type='PC' and A.parent_id<>'0' order by A.right_code,A.right_seq ";
                            where A.Type='PC' and A.parent_id<>'0' " + search + "";
                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                mes.code = "200";
                mes.Message = "查询成功!";
@@ -76,7 +76,7 @@
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    sql = @"update T_CodeRules set prefix=@prefix,filingdate=@filingdate,incbit=@incbit,lm_user=@lm_user,lm_date=@CreateDate where right_code=@rightcode";
                    sql = @"update T_CodeRules set prefix=@prefix,filingdate=@filingdate,incbit=@incbit,lm_user=@lm_user,lm_date=@CreateDate where rightcode=@rightcode";
                    dynamicParams.Add("@prefix", prefix);
                    dynamicParams.Add("@filingdate", filingdate);
                    dynamicParams.Add("@incbit", incbit);
VueWebApi/Grid/grwebapp.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,499 @@
//变量 _grwebapp_url æŒ‡å®šWEB报表客户端安装程序的下载URL,当通过WebSocket通讯不成功时,提示用户用此URL下载程序进行安装。
//或用于自动更新WEB报表客户端时下载新版本,开发者应将 _grwebapp_url æ”¹ä¸ºè‡ªå·±æœåŠ¡å™¨çš„URL,方便用户从可访问的WEB服务器下载
//变量 _grwebapp_version æŒ‡å®šè‡ªåŠ¨æ›´æ–°æ—¶ï¼Œå®¢æˆ·ç«¯ç¨‹åºéœ€è¦çš„ç‰ˆæœ¬å·ï¼Œå¦‚æžœå°äºŽæ­¤ç‰ˆæœ¬å·ï¼Œåˆ™è‡ªåŠ¨è¿›è¡Œæ›´æ–°
var _grwebapp_websocket = null,
    _grwebapp_url = "http://www.rubylong.cn/download/gridreport6-webapp.exe",
    _grwebapp_version = "6.8.2.0",
    webapp_onmessage ; //如果需要响应执行任务后的消息响应,应该写一个名称为 webapp_onmessage çš„ function
function webapp_url_method_valid(url, method) {
    if (!method) {
        if (typeof url == "object") {
            method = url.method;
            url = url.url;
        }
        if (!method) {
            method = /.grf|.txt|.xml|.json/.test(url) ? "GET" : "POST";
        }
    }
    return method;
}
//此函数用于判断一个变量是否为URL字符串,如果类型为字符串且首个非空白字符不为“<”与“{”即判定为URL
//如果参数是一个object对象,且其具有“url”属性,则其是HTTPParam对象,是一个url参数
var webapp_is_url = function (p) {
    var index = 0,
        len = p.length,
        ch;
    //对象如果有url属性,判定为url
    if (typeof p == "object") {
        return !!p.url;
    }
    if (typeof p != "string") {
        return 0;
    }
    //首先找到第一个非空白字符
    while (index < len) {
        ch = p[index];
        if (!/\s/g.test(ch))
            break;
        index++;
    }
    //如果不是xml或json文本串,则判定为url
    return (ch != "{") && (ch != "<") && (p.substr(index, 4) != "_WR_");
};
function webapp_ajax(method, url, callback, cbthis, params) {
    var xmlhttp = new XMLHttpRequest(),
        headers;
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status > 0) {
            callback.call(cbthis, xmlhttp, xmlhttp.status == 200);
        }
    }
    xmlhttp.onerror = function () {
        callback.call(cbthis, xmlhttp, 0);
    }
    if (typeof url == "object") {
        headers = url.headers;
        if (typeof headers == "string") {
            headers = JSON.parse(headers)
        }
        if (!method) {
            method = url.method;
        }
        if (!params) {
            params = url.data;
        }
        url = url.url;
    }
    xmlhttp.open(webapp_url_method_valid(url, method), url, true); //异步请求数据
    if (headers && typeof headers == "object") {
        for (var key in headers) {
            xmlhttp.setRequestHeader(key, headers[key]);
        }
    }
    xmlhttp.send(params);  //POST æˆ– PUT å¯ä»¥ä¼ é€’参数
}
/////////////////////////////////////////////////////////////////////////////
//创建启动WEB报表客户端的URL协议参数
function _gr_up_href(args) {
    return "grwebapp://" + (args ? JSON.stringify(args) : "");
}
//通过URL协议启动WEB报表客户端程序
//参数 appUpdate æŒ‡å®šæ˜¯å¦è‡ªåŠ¨æ›´æ–°WEB报表客户端程序,根据_grwebapp_version与已经安装的程序版本进行比较,按需进行自动升级
function webapp_urlprotocol_startup(appUpdate) {
    var arg = appUpdate ? {
        type: "update",
        url: _grwebapp_url,
        ver: _grwebapp_version
    } : 0;
    window.location.href = _gr_up_href(arg);
}
//如果WEB报表客户端程序未运行,先通过URL协议启动WEB报表客户端程序
//通知WEB报表客户端程序根据模板与数据的URL,以及生成类型等相关参数进行报表生成,
function webapp_urlprotocol_run(args, report_url, data_url) {
    if (report_url) {
        args.report = report_url;
    }
    if (data_url) {
        args.data = data_url;
    }
    window.location.href = _gr_up_href(args);
}
/////////////////////////////////////////////////////////////////////////////
//检查WebSocket是否已经创建并通讯连接成功
function webapp_ws_check(slience) {
    if (!slience) {
        if (!_grwebapp_websocket) {
            alert("WebSocket没有创建,无法发送数据!");
        }
        else if (_grwebapp_websocket.readyState != 1) {
            alert("WebSocket正在连接中,暂不能发送数据!");
        }
    }
    return _grwebapp_websocket && (_grwebapp_websocket.readyState === 1);
}
//创建并通讯连接WebSocket
function webapp_ws_create(onopen) {
    //如果已经创建,且连接正常,则不要再次创建
    if (_grwebapp_websocket && _grwebapp_websocket.readyState === 1) {
        return;
    }
    //判断当前浏览器是否支持WebSocket
    if ('WebSocket' in window) {
        _grwebapp_websocket = new WebSocket("ws://127.0.0.1:22333");
        //连接成功建立的回调方法
        if (onopen) {
            _grwebapp_websocket.onopen = function () {
                //alert("_grwebapp_websocket.onopen");
                onopen();
            }
        }
        debugger;
        //接收到消息的回调方法
        if (window.webapp_onmessage) {
            _grwebapp_websocket.onmessage = function (event) {
                window.webapp_onmessage(event);
            }
        }
        _grwebapp_websocket.onerror = function () {
            var children = document.body.children,
                childrenLen = children.length,
                referNode = childrenLen ? children[0] : null,
                newNode = document.createElement("h3");
            _grwebapp_websocket = null;
            //弹出alert提示信息,可修改为更适合的表述
            //alert("创建WebSocket失败,可能是‘WEB报表客户端程序’在本机没有安装,或在报表网页加载时没有调用‘webapp_urlprotocol_startup’函数进行启动。");
            alert("创建WebSocket失败,可能是WEB报表客户端程序没有启动,或其在本机没有安装,请根据网页顶部的提示进行相应的操作。");
            //在网页最前面加上提示下载的文字,可修改为更适合的表述与界面形式
            //newNode.innerHTML = '特别提示:<a href="' + _grwebapp_url + '">点击下载WEB报表客户端程序</a>,下载后双击下载的文件进行安装,安装完成后重新打开当前网页。';
            newNode.innerHTML = '特别提示:尝试<a href="javascript:webapp_urlprotocol_startup();">启动WEB报表客户端程序</a>。或<a href="' + _grwebapp_url + '">点击下载WEB报表客户端程序</a>,下载后双击下载的文件进行安装,安装完成后重新打开当前网页。';
            document.body.insertBefore(newNode, referNode);
        };
        //连接关闭的回调方法
        _grwebapp_websocket.onclose = function () {
            _grwebapp_websocket = null;
        }
        //感觉这部分可以不要
        //监听窗口关闭事件,当窗口关闭时,主动去关闭_grwebapp_websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
        //window.onbeforeunload = function () {
        //    if (_grwebapp_websocket) {
        //        _grwebapp_websocket.close();
        //    }
        //}
    }
    else {
        alert('当前浏览器不支持HTML5的WebSocket,请选用更新版本的浏览器!')
    }
}
function webapp_build_one(pack, report, report_method, data, data_method, callback_fun, dataParams) {
    if (!report) {
        alert("在参数中没有定义报表模板的url,报表不能生成!");
        return;
    }
    if (data) {
        if (webapp_is_url(data)) {
            webapp_ajax(data_method, data, function (xmlhttp, success) {
                if (success) {
                    pack.data = xmlhttp.responseText;
                    callback_fun();
                }
                else {
                    //alert("载入报表数据失败,响应消息:" + xmlhttp.responseText);
                    window.open(data, "blank");
                }
            }, undefined, dataParams);
        }
        else {
            pack.data = (typeof data == "object") ? JSON.stringify(data) : data;
            callback_fun();
        }
    }
    else {
        pack.data = "";
    }
    if (webapp_is_url(report)) {
        webapp_ajax(report_method, report, function (xmlhttp, success) {
            if (success) {
                pack.report = xmlhttp.responseText;
                callback_fun();
            }
            else {
                //alert("载入报表模板失败,响应消息:" + xmlhttp.responseText);
                window.open(report, "blank");
            }
        });
    }
    else {
        pack.report = (typeof report == "object") ? JSON.stringify(report) : report;
        callback_fun();
    }
}
//将参数通过WebSocket发送给WEB报表客户端,WEB报表客户端执行对应的任务
//参数说明:
//args:
//  æŠ¥è¡¨ç”Ÿæˆç›¸å…³çš„参数,为一个结构体对象或结构体对象数组。
//  å½“参数为数组时,表示是执行批量任务。此时后面的 report ä¸Ž data å‚数不会被用到。
//  ç»“构体对象的各个数据项说明请参考帮助中“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
//report:
//  æŠ¥è¡¨æ¨¡æ¿æ–‡æœ¬ï¼ŒæŠ¥è¡¨å®šä¹‰æ ¼å¼å¿…须为JSON格式。此参数可空,为空表示执行非报表生成任务,或WEB报表客户端通过URL获取报表模板。
//data:
//  æŠ¥è¡¨æ•°æ®æ–‡æœ¬ï¼Œæ­¤å‚数可空,报表无需提供数据,或WEB报表客户端通过URL获取报表数据。
//
//  æŠ¥è¡¨æ•°æ®å¯¹åº”çš„ XML æˆ– JSON æ–‡æœ¬ï¼Œè¯·å‚考帮助“WEB报表(B/S报表)->WEB报表数据”中的说明。
function webapp_ws_run(variant_args, report, data) {
    function run_one(args, reportText, dataText) {
        var msg;
        if (webapp_ws_check()) {
            if (typeof args === "string") {
                args = {
                    type: args
                };
            }
            msg = JSON.stringify(args);
            if (reportText) {
                if (reportText.substr(0, 4) === "_WR_") {
                    msg += reportText.length;
                }
                msg += reportText;
                if (dataText) {
                    msg += dataText;
                }
            }
            _grwebapp_websocket.send(msg);
        }
    } //end of run_one
    if (!webapp_ws_check(1)) {
        //如果WebSocket没有连接,则首先创建并连接WebSocket,并在onopen事件中执行相关的任务
        webapp_ws_create(function () {
            webapp_ws_run(variant_args, report, data);
        });
        return;
    }
    if (Array.isArray(variant_args)) {
        variant_args.forEach(function (args) {
            run_one(args);
        })
    }
    else {
        run_one(variant_args, report, data);
    }
}
//通过 ajax æ–¹å¼èŽ·å–æŠ¥è¡¨æ¨¡æ¿ä¸ŽæŠ¥è¡¨æ•°æ®ï¼Œç„¶åŽé€šè¿‡ WebSocket å‘送相关数据给WEB报表客户端并生成报表
//参数既可以是单个结构体对象,也可以是结构体对象数组。如果是数组,表示成批生成多个报表。
//结构体对象的各个数据项说明请参考帮助中“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分。
function webapp_ws_ajax_run(variant_args) {
    function run_one(args) {
        var report = args.report,
        data = args.data,
        report_method = args.report_method,
        data_method = args.data_method,
        dataUrlParams = args.dataUrlParams,
        pack = {};
        function run() {
            //只有当report与data都赋值之后才运行,即向WEB报表客户端程序发送数据
            if (pack.report && pack.data !== undefined) {
                webapp_ws_run(args, pack.report, pack.data);
            }
        }
        //因为args需要传递给WEBAPP,report与data的url相关的参数不需要传递,所以将其删除掉
        delete args.report;
        delete args.data;
        delete args.report_method;
        delete args.data_method;
        delete args.dataUrlParams;
        webapp_build_one(pack, report, report_method, data, data_method, run, dataUrlParams);
    } //end of run_one
    if (!webapp_ws_check(1)) {
        //如果WebSocket没有连接,则首先创建并连接WebSocket,并在onopen事件中执行相关的任务
        webapp_ws_create(function () {
            webapp_ws_ajax_run(variant_args);
        });
        return;
    }
    if (Array.isArray(variant_args)) {
        variant_args.forEach(function (args) {
            run_one(args);
        });
    }
    else {
        run_one(variant_args);
    }
}
//通过 ajax æ–¹å¼èŽ·å–å¤šä¸ªæŠ¥è¡¨çš„æ¨¡æ¿ä¸Žæ•°æ®ï¼Œç„¶åŽç”¨ WebSocket å°†æ•°æ®ä¸€æ¬¡æ€§å‘送给WEB报表客户端程序。
//实现多个报表同时生成在一个任务中(应用Grid++Report的独立子报表功能实现),达到多个报表同时预览、打印与数据导出
function webapp_ws_ajax_together(args, reports) {
    var reportCount = reports.length,
        reportPacks = [],
        gettedCount = 0; //指示已经获取到数据的报表个数
    function ajaxRequestOne(arg, index) {
        var report = arg.report,
        data = arg.data,
        report_method = arg.report_method,
        data_method = arg.data_method,
        dataUrlParams = arg.dataUrlParams,
        pack = reportPacks[index];
        function try_ws_send() {
            var msg,
                dataMsg = "",
                lengths = [];
            if (pack.report && pack.data !== undefined) {
                if (++gettedCount >= reportCount) { //只有当全部报表的模板与数据都已经获取到之后,才会向WEB报表客户端发送数据
                    msg = JSON.stringify(args);
                    reportPacks.forEach(function (item) {
                        var report = item.report,
                            data = item.data,
                            reportLen = report.length,
                            reportLenText = "";
                        if (report.substr(0, 4) === "_WR_") {
                            reportLenText += reportLen;
                            dataMsg += reportLenText;
                            reportLen += reportLenText.length;
                        }
                        dataMsg += report;
                        if (data) {
                            dataMsg += data;
                        }
                        lengths.push(reportLen + data.length);
                    });
                    msg += JSON.stringify(lengths);
                    msg += dataMsg;
                    _grwebapp_websocket.send(msg);
                }
            }
        }
        webapp_build_one(pack, report, report_method, data, data_method, try_ws_send, dataUrlParams);
    } //end of ajaxRequestOne
    if (!webapp_ws_check(1)) {
        //如果WebSocket没有连接,则首先创建并连接WebSocket,并在onopen事件中执行相关的任务
        webapp_ws_create(function () {
            webapp_ws_ajax_together(args, reports);
        });
        return;
    }
    reports.forEach(function (report, index) {
        reportPacks.push({});
        ajaxRequestOne(report, index);
    });
}
/////////////////////////////////////////////////////////////////////////////
//通过WebSocket向WEB报表客户端发送枚举出当前电脑的所有打印机信息的指令
//在网页的 webapp_onmessage å‡½æ•°ä¸­æŽ¥æ”¶WEB报表客户端返回的结果,具体请参考例子。
function webapp_ws_fun_Printers() {
    webapp_ws_run({
        type: "fun",
        fun: "Printers"
    });
}
//通过WebSocket向WEB报表客户端发送枚举出当前电脑的指定打印机的全部可用纸张的指令
//在网页的 webapp_onmessage å‡½æ•°ä¸­æŽ¥æ”¶WEB报表客户端返回的结果,具体请参考例子
function webapp_ws_fun_PrinterPapers(printer) {
    webapp_ws_run({
        type: "fun",
        fun: "PrinterPapers",
        printer: printer
    });
}
//通过WebSocket向WEB报表客户端发送停止当前报表预览并关闭预览窗口的指令
function webapp_ws_fun_StopPreview() {
    webapp_ws_run({
        type: "fun",
        fun: "StopPreview"
    });
}
/////////////////////////////////////////////////////////////////////////////
//通过WebSocket向WEB报表客户端发送消息进行自动更新检查处理
function webapp_ws_autoupdate() {
    webapp_ws_run({
        type: "update",
        url: _grwebapp_url,
        ver: _grwebapp_version
    });
}
/////////////////////////////////////////////////////////////////////////////
//为URL追加一个名为id的随机数参数,用于防止浏览器缓存。
//报表模板重新设计后,因为浏览器缓存而让报表生成不能反映出新修改的设计结果,URL后追加一个随机数参数可以避免这样的问题
//参数url必须是静态的URL,其后本身无任何参数
//如果模板几乎不怎么修改,可以去掉对本函数的调用
function urlAddRandomNo(url) {
    return url + "?id=" + Math.floor(Math.random() * 10000);
}
//根据当前网页URL获取到当前WEB服务器的根URL,并记录在 window.rootURL ä¸­
function gr_extractRootURL() {
    var path = window.location.pathname,
        index = path.lastIndexOf("/");
    window.rootURL = window.location.protocol + "//" + window.location.host;
    if (index >= 0) {
        path = path.substr(0, index);
        //demmo的根目录在当前页面的1级目录之上
        index = path.lastIndexOf("/");
        if (index >= 0) {
            path = path.substr(0, index);
        }
        window.rootURL += path;
    }
    window.rootURL += "/";
}
//vue中使用将下列注释开放
//export {
//    webapp_url_method_valid,
//    webapp_urlprotocol_startup,
//    webapp_ajax,
//    webapp_ws_ajax_run,
//    webapp_urlprotocol_run,
//    urlAddRandomNo,
//    webapp_onmessage,
//    webapp_ws_fun_StopPreview,
//    webapp_ws_fun_PrinterPapers,
//    webapp_ws_fun_Printers,
//    webapp_ws_ajax_together,
//    webapp_ws_autoupdate,
//    gr_extractRootURL
//}
VueWebApi/Grid/webapp-ws-tutorial.htm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,152 @@
<!DOCTYPE html>
<html>
<head>
    <title>WEB报表客户端使用教程(WebSocket) - é”æµªWEB报表</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="Description" content="锐浪HTML5报表应用WEB报表客户端实现打印与数据导出。" />
    <meta name="Keywords" content="WEB报表,WEB打印,HTML5报表,WEB报表客户端" />
    <script src="grwebapp.js"></script>
    <script language="javascript" type="text/javascript">
        function window_onload() {
            //*这句特别重要*:只有在WEB报表客户端程序后,才能进行WebSocket通讯
            //如果WEB报表客户端程序为开机自启动,以下调用应该去掉。更多说明请参考帮助“WEB报表(B/S报表)->WEB报表客户端->部署与安装”部分中与谷歌Chrome浏览器的相关说明
            webapp_urlprotocol_startup(); //启动WEB报表客户端程序,以便侦听接受 WebSocket æ•°æ®
        }
        //消息响应函数,接受WEB报表客户端执行完打印与数据导出等任务回发的消息
        //如果不要响应任务执行完消息,此函数可以不用定义,直接去掉即可。
        function webapp_onmessage(event) {
            var message = JSON.parse(event.data);
            //在向打印机发送完打印数据后响应的消息,在函数体中完成自己的任务
            function OnPrintEnd() {
                var msg = "报表已经打印,输出打印机:" + message.PrinterName;
                if (message.reportid) {
                    msg += "\r\nreportid = " + message.reportid;
                }
                alert(msg);
            }
            //在执行了数据导出任务后响应的消息,在函数体中完成自己的任务
            function OnExportEnd() {
                var msg = "数据导出已经完成,导出文件:" + message.FileName;
                if (message.reportid) {
                    msg += "\r\nreportid = " + message.reportid;
                }
                alert(msg);
            }
            //alert(event.data);
            if (message.event == "PrintEnd") {
                OnPrintEnd();
            }
            else if (message.event == "ExportEnd") {
                OnExportEnd();
            }
        }
    </script>
</head>
<body onload="window_onload()">
    <h1>锐浪WEB报表客户端使用教程</h1>
    <h3><a href="webapp-overview.htm">关于锐浪WEB报表客户端</a></h3>
    <h3>特别提示:以下链接点击无响应,请下载安装<a href="webapp-download.htm">WEB报表客户端</a></h3>
    <h3>起步例子</h3>
    <p><a href='javascript:ws_ajax_preview();'>打印预览(AJAX)</a>通过AJAX方式获取报表模板与报表数据</p>
    <script language="javascript" type="text/javascript">
        function ws_ajax_preview() {
            //参数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
            var args = {
                report: urlAddRandomNo("../grf/产品流传单A5.grf"),
                data:
                {
                    "recordset": [
                        {
                            "seq": "1",
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "partspec": "φ20",
                            "routename": "测试工艺路线1",
                            "orderqty": 166,
                            "lm_user": "Admin",
                            "lm_date": "2022-06-30",
                            "stepcode": "Step01",
                            "stepname": "测试工序一",
                            "plan_qty1": 166,
                            "good_qty": 0,
                            "ng_qty": 0,
                            "stepqrcode":"PO202206280001_1;Step01"
                        },
                        {
                            "seq": "2",
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "partspec": "φ20",
                            "routename": "测试工艺路线1",
                            "orderqty": 166,
                            "lm_user": "Admin",
                            "lm_date": "2022-06-30",
                            "stepcode": "Step02",
                            "stepname": "测试工序二",
                            "plan_qty1": 166,
                            "good_qty": 0,
                            "ng_qty": 0,
                            "stepqrcode": "PO202206280001_1;Step02"
                        }
                    ]
                },
                //data: "../data/DataCenter.ashx?data=Customer",
                //dataUrlParams: "如果data参数为URL,且其需要额外的参数数据,则定义在此参数中", //例子演示不需要,所以注释掉
                type: "preview",
            };
            webapp_ws_ajax_run(args);
        }
    </script>
    <p> <a href='javascript:ws_ajax_print();'>打印(AJAX)</a>通过AJAX方式获取报表模板与报表数据</p>
    <script language="javascript" type="text/javascript">
        function ws_ajax_print() {
            var args = {
                type: "preview",//print
                //showOptionDlg: true, //如果不显示打印对话框而直接打印,将此行注释去掉即可
                report: urlAddRandomNo("../grf/报工产出标签.grf"),
                //data: "../data/DataCenter.ashx?data=Customer"
                data:
                {
                    "recordset": [
                        {
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "qty": "100",
                            "next_stepname": "测试工序2",
                            "qrcode": "PO202206280001_1;Step02"
                        },
                        {
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "qty": "100",
                            "next_stepname": "测试工序2",
                            "qrcode": "PO202206280001_1;Step02"
                        }
                    ]
                }
            };
            webapp_ws_ajax_run(args);
        }
    </script>
</body>
</html>
VueWebApi/Logs/2022-06-29.TXT
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
 ã€æ—¶é—´ã€‘:2022-06-29 15:10:11,804
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 11
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:“)”附近有语法错误。
引发异常路径:/api/BasicSetting/AddUpdateRoute
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   åœ¨ System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   åœ¨ Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader)
   åœ¨ Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.DoTransaction(List`1 sqlList) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 355
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
 ã€æ—¶é—´ã€‘:2022-06-29 15:29:59,549
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 16
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:关键字 'and' é™„近有语法错误。
关键字 'and' é™„近有语法错误。
引发异常路径:/api/SystemSetting/EncodingRules
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 159
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
 ã€æ—¶é—´ã€‘:2022-06-29 15:41:39,690
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 16
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:除非另外还指定了 TOP、OFFSET æˆ– FOR XML,否则,ORDER BY å­å¥åœ¨è§†å›¾ã€å†…联函数、派生表、子查询和公用表表达式中无效。
除非另外还指定了 TOP、OFFSET æˆ– FOR XML,否则,ORDER BY å­å¥åœ¨è§†å›¾ã€å†…联函数、派生表、子查询和公用表表达式中无效。
引发异常路径:/api/SystemSetting/EncodingRules
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 159
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
 ã€æ—¶é—´ã€‘:2022-06-29 15:59:43,875
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 16
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:列名 'createdate' æ— æ•ˆã€‚
列名 'createdate' æ— æ•ˆã€‚
引发异常路径:/api/SystemSetting/EncodingRules
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   åœ¨ System.Data.SqlClient.SqlDataReader.get_MetaData()
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   åœ¨ System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
   åœ¨ Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 159
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
VueWebApi/Logs/2022-06-30.TXT
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
 ã€æ—¶é—´ã€‘:2022-06-30 17:01:07,146
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 18
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:“is_eqp”附近有语法错误。
引发异常路径:/api/ProductModel/SaveStepAssociationEqp
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   åœ¨ Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader)
   åœ¨ Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.DoTransaction(List`1 sqlList) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 355
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
VueWebApi/Logs/2022-07-01.TXT
VueWebApi/Logs/2022-07-04.TXT
VueWebApi/Logs/2022-07-06.TXT
VueWebApi/Logs/2022-07-07.TXT
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
 ã€æ—¶é—´ã€‘:2022-07-07 15:17:37,063
 ã€çº§åˆ«ã€‘:ERROR
 ã€ç±»åã€‘:日志记录
 ã€çº¿ç¨‹ID】: 14
 ã€æ–‡ä»¶åœ°å€ã€‘:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs ç¬¬25行
 ã€æ—¥å¿—内容】:
消息类型:SqlException
消息内容:必须声明标量变量 "@mesordercode"。
引发异常路径:/api/ProductionManagement/AddUpdateMesOrder
引发异常的方法:OnError
引发异常源:.Net SqlClient Data Provider   åœ¨ System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   åœ¨ System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   åœ¨ System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   åœ¨ System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   åœ¨ System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   åœ¨ System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   åœ¨ Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader)
   åœ¨ Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command)
   åœ¨ Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   åœ¨ VueWebApi.Tools.DapperHelper.SQL(String sql, Object parametere) ä½ç½® D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 323
 ã€æ—¥è®°è¯¦ç»†ã€‘:
---------------------------------------------------------------------------------------------------------------
VueWebApi/Logs/2022-07-08.TXT
VueWebApi/Models/ScanStartReportData.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace VueWebApi.Models
{
    public class ScanStartReportData
    {
        public string wo_code { get; set; }  //工单编号
        public string partnumber { get; set; } //产品编码
        public string partname { get; set; } //产品名称
        public string partspec { get; set; } //产品规格
        public string stepcode { get; set; } //当前工序编码
        public string stepname { get; set; } //当前工序
        public string nextstepcode { get; set; } //下道工序编码
        public string nextstepname { get; set; } //下道工序
        public string stepdesc { get; set; } //工序描述
        public decimal planqty { get; set; } //任务数量
        public decimal startqty { get; set; } //开工数量
        public decimal noreportqty { get; set; } //未报数量
        public decimal reportqty { get; set; } //已报数量
        public decimal noputqty { get; set; } //未收数量
    }
}
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-06-24T08:39:01.1080301Z;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-06-30T07:04:41.6941982Z;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">
@@ -82,6 +82,18 @@
    </File>
    <File Include="bin/Dapper.dll">
      <publishTime>11/03/2021 22:07:30</publishTime>
    </File>
    <File Include="bin/FastReport.Bars.dll">
      <publishTime>06/30/2022 13:48:16</publishTime>
    </File>
    <File Include="bin/FastReport.dll">
      <publishTime>06/30/2022 13:48:06</publishTime>
    </File>
    <File Include="bin/FastReport.Editor.dll">
      <publishTime>06/30/2022 13:48:04</publishTime>
    </File>
    <File Include="bin/FastReport.Web.dll">
      <publishTime>06/30/2022 13:48:36</publishTime>
    </File>
    <File Include="bin/ICSharpCode.SharpZipLib.dll">
      <publishTime>09/19/2021 17:20:28</publishTime>
@@ -372,13 +384,13 @@
      <publishTime>11/28/2018 13:04:24</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll">
      <publishTime>06/28/2022 17:45:56</publishTime>
      <publishTime>07/08/2022 13:39:31</publishTime>
    </File>
    <File Include="bin/VueWebApi.dll.config">
      <publishTime>06/15/2022 15:31:43</publishTime>
    </File>
    <File Include="bin/VueWebApi.pdb">
      <publishTime>06/28/2022 17:45:56</publishTime>
      <publishTime>07/08/2022 13:39:31</publishTime>
    </File>
    <File Include="bin/VueWebApi.xml">
      <publishTime>06/16/2022 14:26:01</publishTime>
@@ -446,6 +458,9 @@
    <File Include="Content/Site.css">
      <publishTime>06/10/2022 08:20:24</publishTime>
    </File>
    <File Include="DisplayViewReport.html">
      <publishTime>06/29/2022 20:36:27</publishTime>
    </File>
    <File Include="Excel/用户清单.xls">
      <publishTime>06/17/2022 17:19:59</publishTime>
    </File>
@@ -469,6 +484,429 @@
    </File>
    <File Include="Global.asax">
      <publishTime>06/10/2022 08:20:24</publishTime>
    </File>
    <File Include="grf/1a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1h.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1i.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1j.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1k.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1l.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1m.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1n.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1o.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1p.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/1q.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2h.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2i.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2j.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2k.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2l.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/2m.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3%40.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3h.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3i.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3j.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3k.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3l.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3m.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3n.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3o.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3p.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3q-1.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3q-2.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3q-3.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/3q.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/4a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/4b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/4c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/4d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/4e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5h.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5i.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5j.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5k.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5l.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5m.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5n.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5o.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/5p.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6h.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6i.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6j.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6k.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6l.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6m.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/6n.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1a2.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1h.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-1i.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-2a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-2b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-2c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-2d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-2e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-2f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-2g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-3a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-3b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-3c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-3d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-3e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-3f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/7-3g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8c.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8d.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8e.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8f.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8g.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8h.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/8i.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/9a.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/9b.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/9x.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/a0.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/a1.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/aaa.grf">
      <publishTime>06/29/2022 19:14:25</publishTime>
    </File>
    <File Include="grf/ds.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/program/data_from_url.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/SummaryToDetail/ChartBar.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/SummaryToDetail/Crosstab.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/SummaryToDetail/Crosstab_Period.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/SummaryToDetail/Detail.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/SummaryToDetail/Summary.grf">
      <publishTime>06/30/2022 09:09:37</publishTime>
    </File>
    <File Include="grf/产品流传单.grf">
      <publishTime>06/30/2022 09:56:18</publishTime>
    </File>
    <File Include="grf/产品流传单A5.grf">
      <publishTime>06/30/2022 19:42:17</publishTime>
    </File>
    <File Include="grf/成品物料标识卡.grf">
      <publishTime>07/07/2022 15:45:42</publishTime>
    </File>
    <File Include="grf/报工产出标签.grf">
      <publishTime>07/07/2022 16:11:14</publishTime>
    </File>
    <File Include="grf/报工打印标签.grf">
      <publishTime>07/07/2022 14:52:14</publishTime>
    </File>
    <File Include="Grid/grwebapp.js">
      <publishTime>06/30/2022 17:10:44</publishTime>
    </File>
    <File Include="Grid/webapp-ws-tutorial.htm">
      <publishTime>07/07/2022 20:19:19</publishTime>
    </File>
    <File Include="index.html">
      <publishTime>06/30/2022 14:02:46</publishTime>
    </File>
    <File Include="js/CreateControl.js">
      <publishTime>06/29/2022 20:23:24</publishTime>
    </File>
    <File Include="libman.json">
      <publishTime>06/10/2022 09:23:15</publishTime>
@@ -506,6 +944,9 @@
    <File Include="Scripts/swagger_lang.js">
      <publishTime>06/16/2022 13:39:23</publishTime>
    </File>
    <File Include="showAll.aspx">
      <publishTime>06/29/2022 20:28:52</publishTime>
    </File>
    <File Include="Views/Shared/Error.cshtml">
      <publishTime>06/10/2022 08:20:24</publishTime>
    </File>
@@ -519,7 +960,7 @@
      <publishTime>06/10/2022 08:20:24</publishTime>
    </File>
    <File Include="Web.config">
      <publishTime>06/24/2022 23:51:54</publishTime>
      <publishTime>06/30/2022 15:04:41</publishTime>
    </File>
  </ItemGroup>
</Project>
VueWebApi/Tools/DapperHelper.cs
@@ -29,8 +29,9 @@
            return connection;
        }
        /// <summary>
        /// Dapper查询返回List<T>
        /// Dapper查询返回List
        /// </summary>
        /// <typeparam name="T">需要返回的对象类型</typeparam>
        /// <param name="sql">Sql语句</param>
@@ -374,6 +375,42 @@
            }
        }
        /// <summary>
        /// å¢žåŠ ï¼Œåˆ é™¤ï¼Œä¿®æ”¹ä½¿ç”¨çš„ äº‹åŠ¡æ–¹æ³•  Sqllist为依次执行
        /// </summary>
        /// <param name="sqlList"></param>
        /// <returns></returns>
        public static int DoTransactionCont(List<object> sqlList)
        {
            int result = 0;
            IDbTransaction tranction = null;
            using (IDbConnection conn = sqlConnection())
            {
                try
                {
                    tranction = conn.BeginTransaction();
                    for (int i = 0; i < sqlList.Count; i++)
                    {
                        result += conn.Execute(sqlList[i].GetType().GetProperty("str").GetValue(sqlList[i], null).ToString(), sqlList[i].GetType().GetProperty("parm").GetValue(sqlList[i], null), tranction);
                    }
                    tranction.Commit();
                }
                catch (Exception ex)
                {
                    //创建日志记录组件实例
                    LogHelper.WriteLog(ex);
                    tranction.Rollback();
                    throw ex;
                }
                finally
                {
                    conn.Dispose();
                    conn.Close();
                }
                return result;
            }
        }
        /// <summary>
        /// Dapper插入 è¿”回自增主键Id
VueWebApi/Tools/GridMessage.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
namespace VueWebApi.Tools
{
    public class GridMessage
    {
        public object recordset { get; set; }
    }
}
VueWebApi/Tools/ScanStartReport.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,943 @@
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using VueWebApi.Models;
namespace VueWebApi.Tools
{
    public class ScanStartReport
    {
        public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
        #region[生产开报工:自制工序任务开报工判断:工单+工序条码]
        /// <summary>
        /// æ‰«ç ä¿¡æ¯ä¸ºå·¥å•+工序条码
        /// </summary>
        /// <param name="ordercode">工单编号</param>
        /// <param name="stepcode">工序编码</param>
        /// <returns></returns>
        public static ToMessage ZZEncodingSeach(string ordercode, string stepcode)
        {
            var sql = "";
            string flwtype = ""; //工序属性
            string isbott = ""; //首道工序
            string isend = "";  //末道工序
            string seq = "";    //工序序号
            List<object> list = new List<object>();
            ScanStartReportData rt = new ScanStartReportData();
            var dynamicParams = new DynamicParameters();
            try
            {
                //1.根据工单+工序查找当前工序是否首道工序
                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend
                        from TK_Wrk_Step A
                        left join  TStep T on A.step_code=T.stepcode
                        left join  TK_Wrk_Man M on A.wo_code=M.wo_code
                        left join  TMateriel_Info P on M.materiel_code=P.partcode
                        where A.wo_code=@ordercode and A.step_code=@stepcode";
                dynamicParams.Add("@ordercode", ordercode);
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //工单号
                    rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //产品编码
                    rt.partname = data.Rows[0]["PARTNAME"].ToString(); //产品名称
                    rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //产品规格
                    rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //工序编码
                    rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //工序名称
                    rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //工序描述
                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                    flwtype = data.Rows[0]["FLWTYPE"].ToString();//获取工序属性
                    isbott = data.Rows[0]["ISBOTT"].ToString();//首道工序
                    isend = data.Rows[0]["ISEND"].ToString();//末道工序
                    seq = data.Rows[0]["SEQ"].ToString();//工序序号
                    //获取当前工序下道工序
                    sql = @"select A.isbott,A.isend,T.stepcode,T.stepname from TK_Wrk_Step A
                            left join  TStep T on A.step_code=T.stepcode
                            where A.wo_code=ordercode and A.step_code=@stepcode and A.seq=@seq+1 ";
                    dynamicParams.Add("@ordercode", ordercode);
                    dynamicParams.Add("@stepcode", stepcode);
                    dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
                    var dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0) //有下道工序
                    {
                        rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//下道工序编码
                        rt.nextstepcode = dt.Rows[0]["STEPNAME"].ToString();//下道工序名称
                    }
                    if (isend == "Y")  //当前工序是末道工序
                    {
                        rt.nextstepcode = data.Rows[0]["STEPCODE"].ToString();//当前工序编码
                        rt.nextstepcode = data.Rows[0]["STEPNAME"].ToString();//当前工序名称
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "当前扫码工序任务不存在!";
                    mes.data = null;
                    return mes;
                }
                switch (flwtype)
                {
                    case "Z":  //自制工序
                        if (isbott == "Y")  //首道工序
                        {
                            //1.首道工序时,判断是否有开工记录
                            sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='S'";
                            dynamicParams.Add("@ordercode", ordercode);
                            dynamicParams.Add("@stepcode", stepcode);
                            var data0 = DapperHelper.selectdata(sql, dynamicParams);
                            if (data0.Rows.Count > 0)  //有开工记录
                            {
                                //首道工序时,判断是否有报工记录
                                sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
                                dynamicParams.Add("@ordercode", ordercode);
                                dynamicParams.Add("@stepcode", stepcode);
                                var data1 = DapperHelper.selectdata(sql, dynamicParams);
                                if (data1.Rows.Count > 0)
                                {
                                    string good_qty = data1.Rows[0]["GOOD_QTY"].ToString();//报工数量
                                    string ng_qty = data1.Rows[0]["NG_QTY"].ToString();// ä¸è‰¯æ•°é‡
                                    decimal kbqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - (decimal.Parse(good_qty) + decimal.Parse(ng_qty)); //剩余可报工数量=任务数量-(报工数量+不良数量)
                                    if (kbqty <= 0)//无可报工数量
                                    {
                                        mes.code = "300";
                                        mes.count = 0;
                                        mes.Message = "当前工序无可报工数量!";
                                        mes.data = null;
                                        return mes;
                                    }
                                    else
                                    {
                                        rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());            //任务数量
                                        rt.startqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());           //开工数量=任务数量
                                        rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - kbqty;  //未报数量=任务数量-已报数量
                                        rt.reportqty = decimal.Parse(good_qty) + decimal.Parse(ng_qty);             //已报数量=报工数量-不良数量
                                        mes.code = "200";
                                        mes.count = 1;
                                        mes.Message = "弹窗报工界面!";
                                        mes.data = rt;
                                    }
                                }
                                else
                                {
                                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                                    rt.startqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //开工数量
                                    rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //未报数量
                                    rt.reportqty = 0;                                                    //已报数量
                                    mes.code = "200";
                                    mes.count = 1;
                                    mes.Message = "弹窗报工界面!";
                                    mes.data = rt;
                                }
                            }
                            else
                            {
                                rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                                rt.startqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //开工数量
                                rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //未报数量
                                rt.reportqty = 0;                                                    //已报数量
                                mes.code = "200";
                                mes.count = 0;
                                mes.Message = "弹窗开工界面!";
                                mes.data = rt;
                            }
                        }
                        else   //非首道工序
                        {
                            //查找当前工序上到工序(自制或者外协)
                            sql = @"select A.step_code,S.stepname,S.flwtype  from TFlw_Rtdt A
                                               left join TK_Wrk_Man M on A.rout_code=M.route_code
                                               left join TStep S on A.step_code=S.stepcode
                                               where M.wo_code=@wocode and A.step_code=@stepcode and A.seq=@seq-1";
                            dynamicParams.Add("@wocode", data.Rows[0]["WO_CODE"].ToString());
                            dynamicParams.Add("@stepcode", data.Rows[0]["STEPCODE"].ToString());
                            dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
                            var data0 = DapperHelper.selectdata(sql, dynamicParams);
                            if (data0.Rows.Count > 0)
                            {
                                //1.非首道工序时,判断本道是否有开工记录
                                sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                dynamicParams.Add("@ordercode", ordercode);
                                dynamicParams.Add("@stepcode", stepcode);
                                var data1 = DapperHelper.selectdata(sql, dynamicParams);
                                if (data1.Rows.Count > 0)//本道有开工记录
                                {
                                    //非首道工序时,判断本道是否有报工记录
                                    sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
                                    dynamicParams.Add("@ordercode", ordercode);
                                    dynamicParams.Add("@stepcode", stepcode);
                                    var data2 = DapperHelper.selectdata(sql, dynamicParams);
                                    if (data2.Rows.Count > 0) //有报工记录
                                    {
                                        if (data1.Rows[0]["FLWTYPE"].ToString() == "Z")  //自制工序
                                        {
                                            //查找上到工序报工记录
                                            sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
                                            dynamicParams.Add("@ordercode", ordercode);
                                            dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                            var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                            if (data3.Rows.Count > 0) //上道有报工
                                            {
                                                string sgood_qty = data3.Rows[0]["GOOD_QTY"].ToString();//上道报工数量
                                                string good_qty = data2.Rows[0]["GOOD_QTY"].ToString();//本道报工数量
                                                string ng_qty = data2.Rows[0]["NG_QTY"].ToString();// æœ¬é“不良数量
                                                decimal sybqty = decimal.Parse(sgood_qty) - decimal.Parse(good_qty) - decimal.Parse(ng_qty);//本道剩余可报数量=上道报工数量-本道报工数量-本道不良数量
                                                if (sybqty <= 0)
                                                {
                                                    mes.code = "300";
                                                    mes.count = 0;
                                                    mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + "无可报数量!";
                                                    mes.data = null;
                                                    return mes;
                                                }
                                                else
                                                {
                                                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                                                    rt.startqty = sybqty;                                                //开工数量=本道剩余可报数量
                                                    rt.noreportqty = sybqty;                                             //未报数量=本道剩余可报数量
                                                    rt.reportqty = 0;                                                    //已报数量
                                                    mes.code = "200";
                                                    mes.count = 1;
                                                    mes.Message = "弹窗报工界面!";
                                                    mes.data = rt;
                                                }
                                            }
                                            else
                                            {
                                                mes.code = "300";
                                                mes.count = 0;
                                                mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæŠ¥å·¥,本道不允许开报工!";
                                                mes.data = null;
                                                return mes;
                                            }
                                        }
                                        if (data1.Rows[0]["FLWTYPE"].ToString() == "W")  //委外工序
                                        {
                                            //查找上到工序收料记录
                                            sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                            dynamicParams.Add("@ordercode", ordercode);
                                            dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                            var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                            if (data3.Rows.Count > 0) //上道有收料
                                            {
                                                decimal sqty = decimal.Parse(data3.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("SQTY"))).Sum().ToString());//上道收料数量
                                                string good_qty = data2.Rows[0]["GOOD_QTY"].ToString();//本道报工数量
                                                string ng_qty = data2.Rows[0]["NG_QTY"].ToString();// æœ¬é“不良数量
                                                decimal sybqty = sqty - decimal.Parse(good_qty) - decimal.Parse(ng_qty);//本道剩余可报数量=上道收料数量-本道报工数量-本道不良数量
                                                if (sybqty <= 0)
                                                {
                                                    mes.code = "300";
                                                    mes.count = 0;
                                                    mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + "无可报数量!";
                                                    mes.data = null;
                                                    return mes;
                                                }
                                                else
                                                {
                                                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                                                    rt.startqty = sybqty;                                                //开工数量=本道剩余可报数量
                                                    rt.noreportqty = sybqty;                                             //未报数量=本道剩余可报数量
                                                    rt.reportqty = 0;                                                    //已报数量
                                                    mes.code = "200";
                                                    mes.count = 1;
                                                    mes.Message = "弹窗报工界面!";
                                                    mes.data = rt;
                                                }
                                            }
                                            else
                                            {
                                                mes.code = "300";
                                                mes.count = 0;
                                                mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæ”¶æ–™,本道不允许开报工,请前往外协操作页执行!";
                                                mes.data = null;
                                                return mes;
                                            }
                                        }
                                    }
                                    else  //本道无报工记录
                                    {
                                        if (data1.Rows[0]["FLWTYPE"].ToString() == "Z")  //自制工序
                                        {
                                            //查找上到工序报工记录
                                            sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
                                            dynamicParams.Add("@ordercode", ordercode);
                                            dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                            var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                            if (data3.Rows.Count > 0) //上道有报工
                                            {
                                                string sgood_qty = data3.Rows[0]["GOOD_QTY"].ToString();//上道报工数量
                                                decimal sybqty = decimal.Parse(sgood_qty);               //本道剩余可报数量=上道报工数量
                                                rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                                                rt.startqty = sybqty;                                                //开工数量=本道剩余可报数量
                                                rt.noreportqty = sybqty;                                             //未报数量=本道剩余可报数量
                                                rt.reportqty = 0;                                                    //已报数量
                                                mes.code = "200";
                                                mes.count = 1;
                                                mes.Message = "弹窗报工界面!";
                                                mes.data = rt;
                                            }
                                            else
                                            {
                                                mes.code = "300";
                                                mes.count = 0;
                                                mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæŠ¥å·¥,本道不允许开报工!";
                                                mes.data = null;
                                                return mes;
                                            }
                                        }
                                        if (data1.Rows[0]["FLWTYPE"].ToString() == "W")  //委外工序
                                        {
                                            //查找上到工序收料记录
                                            sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                            dynamicParams.Add("@ordercode", ordercode);
                                            dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                            var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                            if (data3.Rows.Count > 0) //上道有收料
                                            {
                                                decimal sqty = decimal.Parse(data3.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("SQTY"))).Sum().ToString());//上道收料数量
                                                decimal sybqty = sqty;                   //本道剩余可报数量=上道收料数量
                                                rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                                                rt.startqty = sybqty;                                                //开工数量=本道剩余可报数量
                                                rt.noreportqty = sybqty;                                             //未报数量=本道剩余可报数量
                                                rt.reportqty = 0;                                                    //已报数量
                                                mes.code = "200";
                                                mes.count = 1;
                                                mes.Message = "弹窗报工界面!";
                                                mes.data = rt;
                                            }
                                            else
                                            {
                                                mes.code = "300";
                                                mes.count = 0;
                                                mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæ”¶æ–™,本道不允许开报工,请前往外协操作页执行!";
                                                mes.data = null;
                                                return mes;
                                            }
                                        }
                                    }
                                }
                                else //无开工记录
                                {
                                    if (data1.Rows[0]["FLWTYPE"].ToString() == "Z")  //自制工序
                                    {
                                        //查找上到工序报工记录
                                        sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
                                        dynamicParams.Add("@ordercode", ordercode);
                                        dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                        var data2 = DapperHelper.selectdata(sql, dynamicParams);
                                        if (data2.Rows.Count > 0) //上到工序有报工
                                        {
                                            string good_qty = data2.Rows[0]["GOOD_QTY"].ToString();//报工数量
                                            string ng_qty = data2.Rows[0]["NG_QTY"].ToString();// ä¸è‰¯æ•°é‡
                                            rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                            rt.startqty = decimal.Parse(good_qty);                               //开工数量=(上一道的报工数量)
                                            rt.noreportqty = decimal.Parse(good_qty);                            //未报数量=(上一道的报工数量)
                                            rt.reportqty = 0;                                                    //已报数量
                                            mes.code = "200";
                                            mes.count = 0;
                                            mes.Message = "弹窗开工界面!";
                                            mes.data = rt;
                                        }
                                        else
                                        {
                                            mes.code = "300";
                                            mes.count = 0;
                                            mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæŠ¥å·¥,本道不允许开报工!";
                                            mes.data = null;
                                            return mes;
                                        }
                                    }
                                    if (data1.Rows[0]["FLWTYPE"].ToString() == "W")  //委外工序
                                    {
                                        //查找上道工序外协收料记录
                                        sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                        dynamicParams.Add("@ordercode", ordercode);
                                        dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                        var data2 = DapperHelper.selectdata(sql, dynamicParams);
                                        if (data2.Rows.Count > 0) //上道工序有收料
                                        {
                                            decimal sqty = decimal.Parse(data2.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("SQTY"))).Sum().ToString());//收料数量
                                            decimal ng_qty = decimal.Parse(data2.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("NG_QTY"))).Sum().ToString());// ä¸è‰¯æ•°é‡
                                            rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                            rt.startqty = sqty;                                                  //开工数量=(上一道的收料数量)
                                            rt.noreportqty = sqty;                                               //未报数量=(上一道的收料数量)
                                            rt.reportqty = 0;                                                    //已报数量
                                            mes.code = "200";
                                            mes.count = 0;
                                            mes.Message = "弹窗开工界面!";
                                            mes.data = rt;
                                        }
                                        else
                                        {
                                            mes.code = "300";
                                            mes.count = 0;
                                            mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæ”¶æ–™,本道不允许开报工,请前往外协操作页执行!";
                                            mes.data = null;
                                            return mes;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "未找到当前工序的上道工序信息,请联系管理员核实!";
                                mes.data = null;
                                return mes;
                            }
                        }
                        break;
                    case "W":  //外协工序
                        mes.code = "300";
                        mes.count = 0;
                        mes.Message = "当前标签为外协标签,请前往外协操作标签页扫码!";
                        mes.data = null;
                        break;
                    default:   //自制+外协工序
                        break;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
                return mes;
            }
            return mes;
        }
        #endregion
        #region[生产开报工:外协工序任务开报工判断:工单号+工序]
        /// <summary>
        /// ç”Ÿäº§å¼€æŠ¥å·¥:外协工序任务开报工判断:工单号+工序
        /// </summary>
        /// <param name="OperType">操作类型</param>
        /// <param name="ordercode">工单编号</param>
        /// <param name="stepcode">工序编码</param>
        /// <returns></returns>
        public static ToMessage WXEncodingSeach(string SelectType, string ordercode, string stepcode)
        {
            var sql = "";
            string flwtype = ""; //工序属性
            string isbott = ""; //首道工序
            string isend = "";  //末道工序
            string seq = "";    //工序序号
            List<object> list = new List<object>();
            ScanStartReportData rt = new ScanStartReportData();
            var dynamicParams = new DynamicParameters();
            try
            {
                //1.根据工单+工序查找当前工序是否首道工序
                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend
                        from TK_Wrk_Step A
                        left join  TStep T on A.step_code=T.stepcode
                        left join  TK_Wrk_Man M on A.wo_code=M.wo_code
                        left join  TMateriel_Info P on M.materiel_code=P.partcode
                        where A.wo_code=@ordercode and A.step_code=@stepcode";
                dynamicParams.Add("@ordercode", ordercode);
                dynamicParams.Add("@stepcode", stepcode);
                var data = DapperHelper.selectdata(sql, dynamicParams);
                if (data.Rows.Count > 0)
                {
                    rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //工单号
                    rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //产品编码
                    rt.partname = data.Rows[0]["PARTNAME"].ToString(); //产品名称
                    rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //产品规格
                    rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //工序编码
                    rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //工序名称
                    rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //工序描述
                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //任务数量
                    flwtype = data.Rows[0]["FLWTYPE"].ToString();//获取工序属性
                    isbott = data.Rows[0]["ISBOTT"].ToString();//首道工序
                    isend = data.Rows[0]["ISEND"].ToString();//末道工序
                    seq = data.Rows[0]["SEQ"].ToString();//工序序号
                    //获取当前工序下道工序
                    sql = @"select A.isbott,A.isend,T.stepcode,T.stepname from TK_Wrk_Step A
                            left join  TStep T on A.step_code=T.stepcode
                            where A.wo_code=ordercode and A.step_code=@stepcode and A.seq=@seq+1 ";
                    dynamicParams.Add("@ordercode", ordercode);
                    dynamicParams.Add("@stepcode", stepcode);
                    dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
                    var dt = DapperHelper.selectdata(sql, dynamicParams);
                    if (dt.Rows.Count > 0) //有下道工序
                    {
                        rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//下道工序编码
                        rt.nextstepcode = dt.Rows[0]["STEPNAME"].ToString();//下道工序名称
                    }
                    if (isend == "Y")  //当前工序是末道工序
                    {
                        rt.nextstepcode = data.Rows[0]["STEPCODE"].ToString();//当前工序编码
                        rt.nextstepcode = data.Rows[0]["STEPNAME"].ToString();//当前工序名称
                    }
                }
                else
                {
                    mes.code = "300";
                    mes.count = 0;
                    mes.Message = "未找到当前工序的上道工序信息,请联系管理员核实!";
                    mes.data = null;
                    return mes;
                }
                switch (SelectType)
                {
                    case "OUT": //发料
                        switch (flwtype)
                        {
                            case "Z":
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "当前标签为自制标签,请前往自制操作标签页扫码!";
                                mes.data = null;
                                break;
                            case "W":
                                if (isbott == "Y")  //首道工序
                                {
                                    //1.首道工序时,判断是否有发料记录
                                    sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='F'";
                                    dynamicParams.Add("@ordercode", ordercode);
                                    dynamicParams.Add("@stepcode", stepcode);
                                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                                    if (data0.Rows.Count > 0)  //有发料记录
                                    {
                                        decimal fqty = decimal.Parse(data0.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("FQTY"))).Sum().ToString());//发料数量
                                        decimal ng_qty = decimal.Parse(data0.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("NG_QTY"))).Sum().ToString());// ä¸è‰¯æ•°é‡
                                        decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty;                                           //剩余可发数量
                                        if (kfqty <= 0)
                                        {
                                            mes.code = "300";
                                            mes.count = 0;
                                            mes.Message = "当前工序无可发料数量!";
                                            mes.data = null;
                                            return mes;
                                        }
                                        else
                                        {
                                            rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                            rt.noreportqty = kfqty;                                              //未发数量=剩余可发数量
                                            rt.reportqty = fqty;                                                 //已发数量= å‘料数量
                                            rt.startqty = kfqty;                                                 //发料数量=剩余可发数量
                                            mes.code = "200";
                                            mes.count = 2;
                                            mes.Message = "弹窗发料界面!";
                                            mes.data = rt;
                                        }
                                    }
                                    else
                                    {
                                        rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                        rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //未发数量=任务数量
                                        rt.reportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());   //已发数量=任务数量
                                        rt.startqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());    //发料数量=任务数量
                                        mes.code = "200";
                                        mes.count = 2;
                                        mes.Message = "弹窗发料界面!";
                                        mes.data = rt;
                                    }
                                }
                                else //非首道
                                {
                                    //查找当前工序上到工序(自制或者外协)
                                    sql = @"select A.step_code,S.stepname,S.flwtype  from TFlw_Rtdt A
                                               left join TK_Wrk_Man M on A.rout_code=M.route_code
                                               left join TStep S on A.step_code=S.stepcode
                                               where M.wo_code=@wocode and A.step_code=@stepcode and A.seq=@seq-1";
                                    dynamicParams.Add("@wocode", data.Rows[0]["WO_CODE"].ToString());
                                    dynamicParams.Add("@stepcode", data.Rows[0]["STEPCODE"].ToString());
                                    dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
                                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                                    if (data0.Rows.Count > 0)
                                    {
                                        //1.非首道工序时,判断本道是否有发料记录
                                        sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='F'";
                                        dynamicParams.Add("@ordercode", ordercode);
                                        dynamicParams.Add("@stepcode", stepcode);
                                        var data1 = DapperHelper.selectdata(sql, dynamicParams);
                                        if (data1.Rows.Count > 0)//本道有发料记录
                                        {
                                            if (data0.Rows[0]["FLWTYPE"].ToString() == "Z")  //自制工序
                                            {
                                                //查找上到工序报工记录
                                                sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
                                                dynamicParams.Add("@ordercode", ordercode);
                                                dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                                var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                                if (data3.Rows.Count > 0) //上道有报工
                                                {
                                                    string sgood_qty = data3.Rows[0]["GOOD_QTY"].ToString();//上道报工数量
                                                    decimal sqty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("FQTY"))).Sum().ToString());//本道发料数量
                                                    decimal ng_qty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("NG_QTY"))).Sum().ToString());// æœ¬é“不良数量
                                                    decimal sybqty = decimal.Parse(sgood_qty) - sqty - ng_qty;//本道剩余可发数量=上道报工数量-本道发料数量-本道不良数量
                                                    if (sybqty <= 0)
                                                    {
                                                        mes.code = "300";
                                                        mes.count = 0;
                                                        mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + "无可发数量!";
                                                        mes.data = null;
                                                        return mes;
                                                    }
                                                    else
                                                    {
                                                        rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                                        rt.noreportqty = sybqty;                                             //未发数量=剩余可发数量
                                                        rt.reportqty = sqty + ng_qty;                                        //已发数量= æœ¬é“发料数量+本道不良数量
                                                        rt.startqty = sybqty;                                                //收料数量=剩余可发数量
                                                        mes.code = "200";
                                                        mes.count = 2;
                                                        mes.Message = "弹窗发料界面!";
                                                        mes.data = rt;
                                                    }
                                                }
                                                else  //无报工记录
                                                {
                                                    mes.code = "300";
                                                    mes.count = 0;
                                                    mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæŠ¥å·¥,本道不允许发料!";
                                                    mes.data = null;
                                                    return mes;
                                                }
                                            }
                                            if (data0.Rows[0]["FLWTYPE"].ToString() == "W")  //外协工序
                                            {
                                                //查找上到工序收料记录
                                                sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                                dynamicParams.Add("@ordercode", ordercode);
                                                dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                                var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                                if (data3.Rows.Count > 0) //上道有收料
                                                {
                                                    decimal ssqty = decimal.Parse(data3.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("SQTY"))).Sum().ToString());//上道收料数量
                                                    decimal sqty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("FQTY"))).Sum().ToString());//本道发料数量
                                                    decimal ng_qty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("NG_QTY"))).Sum().ToString());// æœ¬é“不良数量
                                                    decimal sybqty = ssqty - sqty - ng_qty;//本道剩余可发数量=上道收料数量-本道发料数量-本道不良数量
                                                    if (sybqty <= 0)
                                                    {
                                                        mes.code = "300";
                                                        mes.count = 0;
                                                        mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + "无可发数量!";
                                                        mes.data = null;
                                                        return mes;
                                                    }
                                                    else
                                                    {
                                                        rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                                        rt.noreportqty = sybqty;                                             //未发数量=剩余可发数量
                                                        rt.reportqty = sqty + ng_qty;                                        //已发数量= æœ¬é“发料数量+本道不良数量
                                                        rt.startqty = sybqty;                                                //收料数量=剩余可发数量
                                                        mes.code = "200";
                                                        mes.count = 2;
                                                        mes.Message = "弹窗发料界面!";
                                                        mes.data = rt;
                                                    }
                                                }
                                                else  //无报工记录
                                                {
                                                    mes.code = "300";
                                                    mes.count = 0;
                                                    mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæŠ¥å·¥,本道不允许发料!";
                                                    mes.data = null;
                                                    return mes;
                                                }
                                            }
                                        }
                                        else //无发料记录
                                        {
                                            if (data0.Rows[0]["FLWTYPE"].ToString() == "Z")  //自制工序
                                            {
                                                //查找上到工序报工记录
                                                sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
                                                dynamicParams.Add("@ordercode", ordercode);
                                                dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                                var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                                if (data3.Rows.Count > 0) //上道有报工
                                                {
                                                    string sgood_qty = data3.Rows[0]["GOOD_QTY"].ToString();//上道报工数量
                                                    decimal sybqty = decimal.Parse(sgood_qty);//本道剩余可发数量=上道报工数量
                                                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                                    rt.noreportqty = sybqty;                                             //未发数量=剩余可发数量
                                                    rt.reportqty = 0;                                                    //已发数量
                                                    rt.startqty = sybqty;                                                //收料数量=剩余可发数量
                                                    mes.code = "200";
                                                    mes.count = 2;
                                                    mes.Message = "弹窗发料界面!";
                                                    mes.data = rt;
                                                }
                                                else  //无报工记录
                                                {
                                                    mes.code = "300";
                                                    mes.count = 0;
                                                    mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæŠ¥å·¥,本道不允许发料!";
                                                    mes.data = null;
                                                    return mes;
                                                }
                                            }
                                            if (data0.Rows[0]["FLWTYPE"].ToString() == "W")  //外协工序
                                            {
                                                //查找上到工序收料记录
                                                sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                                dynamicParams.Add("@ordercode", ordercode);
                                                dynamicParams.Add("@stepcode", data0.Rows[0]["STEPNAME"].ToString());
                                                var data3 = DapperHelper.selectdata(sql, dynamicParams);
                                                if (data3.Rows.Count > 0) //上道有收料
                                                {
                                                    decimal ssqty = decimal.Parse(data3.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("SQTY"))).Sum().ToString());//上道收料数量
                                                    decimal sybqty = ssqty;//本道剩余可发数量=上道收料数量
                                                    if (sybqty <= 0)
                                                    {
                                                        mes.code = "300";
                                                        mes.count = 0;
                                                        mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + "无可发数量!";
                                                        mes.data = null;
                                                        return mes;
                                                    }
                                                    else
                                                    {
                                                        rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                                        rt.noreportqty = sybqty;                                             //未发数量=剩余可发数量
                                                        rt.reportqty = 0;                                                    //已发数量
                                                        rt.startqty = sybqty;                                                //收料数量=剩余可发数量
                                                        mes.code = "200";
                                                        mes.count = 2;
                                                        mes.Message = "弹窗发料界面!";
                                                        mes.data = rt;
                                                    }
                                                }
                                                else  //无报工记录
                                                {
                                                    mes.code = "300";
                                                    mes.count = 0;
                                                    mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " çš„上道工序:" + data0.Rows[0]["STEPNAME"].ToString() + " æœªæ”¶æ–™,本道不允许发料!";
                                                    mes.data = null;
                                                    return mes;
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        mes.code = "300";
                                        mes.count = 0;
                                        mes.Message = "未找到当前工序的上道工序信息,请联系管理员核实!";
                                        mes.data = null;
                                        return mes;
                                    }
                                }
                                break;
                            default:
                                break;
                        }
                        break;
                    case "IN": //收料
                        switch (flwtype)
                        {
                            case "Z"://自制
                                mes.code = "300";
                                mes.count = 0;
                                mes.Message = "当前标签为自制标签,请前往自制操作标签页扫码!";
                                mes.data = null;
                                break;
                            case "W":
                                if (isbott == "Y")  //首道工序
                                {
                                    //1.首道工序时,判断是否有发料记录
                                    sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='F'";
                                    dynamicParams.Add("@ordercode", ordercode);
                                    dynamicParams.Add("@stepcode", stepcode);
                                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                                    if (data0.Rows.Count > 0)  //有发料记录
                                    {
                                        //1.首道工序时,判断是否有收料记录
                                        sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                        dynamicParams.Add("@ordercode", ordercode);
                                        dynamicParams.Add("@stepcode", stepcode);
                                        var data1 = DapperHelper.selectdata(sql, dynamicParams);
                                        if (data1.Rows.Count > 0) //有收料记录
                                        {
                                            decimal fqty = decimal.Parse(data0.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("FQTY"))).Sum().ToString());//本道发料数量
                                            decimal sqty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("SQTY"))).Sum().ToString());//本道收料数量
                                            decimal ng_qty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("NG_QTY"))).Sum().ToString());//本道不良数量
                                            decimal ksqty = fqty - sqty - ng_qty;                                                                                         //剩余可发数量=本道发料数量-本道收料数量-本道不良数量
                                            if (ksqty <= 0)
                                            {
                                                mes.code = "300";
                                                mes.count = 0;
                                                mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " æ— å¯æ”¶æ–™æ•°é‡!";
                                                mes.data = null;
                                                return mes;
                                            }
                                            else
                                            {
                                                rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                                rt.noreportqty = ksqty;                                              //未收数量=本道发料数量
                                                rt.reportqty = sqty + ng_qty;                                        //已收数量
                                                rt.startqty = fqty;                                                  //收料数量=本道发料数量
                                                mes.code = "200";
                                                mes.count = 3;
                                                mes.Message = "弹窗收料界面!";
                                                mes.data = rt;
                                            }
                                        }
                                        else
                                        {
                                            decimal fqty = decimal.Parse(data0.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("FQTY"))).Sum().ToString());//本道发料数量
                                            rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                            rt.noreportqty = fqty;                                               //未收数量=本道发料数量
                                            rt.reportqty = 0;                                                    //已收数量
                                            rt.startqty = fqty;                                                  //收料数量=本道发料数量
                                            mes.code = "200";
                                            mes.count = 3;
                                            mes.Message = "弹窗收料界面!";
                                            mes.data = rt;
                                        }
                                    }
                                    else
                                    {
                                        mes.code = "300";
                                        mes.count = 0;
                                        mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " æœªå‘æ–™,请先发料!";
                                        mes.data = null;
                                        return mes;
                                    }
                                }
                                else //非首道
                                {
                                    //查找当前工序上到工序(自制或者外协)
                                    sql = @"select A.step_code,S.stepname,S.flwtype  from TFlw_Rtdt A
                                               left join TK_Wrk_Man M on A.rout_code=M.route_code
                                               left join TStep S on A.step_code=S.stepcode
                                               where M.wo_code=@wocode and A.step_code=@stepcode and A.seq=@seq-1";
                                    dynamicParams.Add("@wocode", data.Rows[0]["WO_CODE"].ToString());
                                    dynamicParams.Add("@stepcode", data.Rows[0]["STEPCODE"].ToString());
                                    dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
                                    var data0 = DapperHelper.selectdata(sql, dynamicParams);
                                    if (data0.Rows.Count > 0)
                                    {
                                        //1.非首道工序时,判断本道是否有发料记录
                                        sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='F'";
                                        dynamicParams.Add("@ordercode", ordercode);
                                        dynamicParams.Add("@stepcode", stepcode);
                                        var data1 = DapperHelper.selectdata(sql, dynamicParams);
                                        if (data1.Rows.Count > 0)//本道有发料记录
                                        {
                                            //2.非首道工序时,判断本道是否有收料记录
                                            sql = @"select *   from TK_Wrk_OutRecord where wo_code=@ordercode and step_code=@stepcode and style='S'";
                                            dynamicParams.Add("@ordercode", ordercode);
                                            dynamicParams.Add("@stepcode", stepcode);
                                            var data2 = DapperHelper.selectdata(sql, dynamicParams);
                                            if (data2.Rows.Count > 0) //有收料记录
                                            {
                                                decimal fqty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("FQTY"))).Sum().ToString());//本道发料数量
                                                decimal sqty = decimal.Parse(data2.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("SQTY"))).Sum().ToString());//本道收料数量
                                                decimal ng_qty = decimal.Parse(data2.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("NG_QTY"))).Sum().ToString());//本道不良数量
                                                decimal ksqty = fqty - sqty - ng_qty;                                                                                         //剩余可发数量=本道发料数量-本道收料数量-本道不良数量
                                                if (ksqty <= 0)
                                                {
                                                    mes.code = "300";
                                                    mes.count = 0;
                                                    mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " æ— å¯æ”¶æ–™æ•°é‡!";
                                                    mes.data = null;
                                                    return mes;
                                                }
                                                else
                                                {
                                                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                                    rt.noreportqty = ksqty;                                              //未收数量=本道发料数量
                                                    rt.reportqty = sqty + ng_qty;                                        //已收数量
                                                    rt.startqty = fqty;                                                  //收料数量=本道发料数量
                                                    mes.code = "200";
                                                    mes.count = 3;
                                                    mes.Message = "弹窗收料界面!";
                                                    mes.data = rt;
                                                }
                                            }
                                            else
                                            {
                                                decimal fqty = decimal.Parse(data1.AsEnumerable().Select(d => Convert.ToDouble(d.Field<Int32>("FQTY"))).Sum().ToString());//本道发料数量
                                                rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //任务数量
                                                rt.noreportqty = fqty;                                               //未收数量=本道发料数量
                                                rt.reportqty = 0;                                                    //已收数量
                                                rt.startqty = fqty;                                                  //收料数量=本道发料数量
                                                mes.code = "200";
                                                mes.count = 3;
                                                mes.Message = "弹窗收料界面!";
                                                mes.data = rt;
                                            }
                                        }
                                        else
                                        {
                                            mes.code = "300";
                                            mes.count = 0;
                                            mes.Message = "当前工序:" + data.Rows[0]["STEPNAME"].ToString() + " æœªå‘æ–™,请先发料!";
                                            mes.data = null;
                                            return mes;
                                        }
                                    }
                                    else
                                    {
                                        mes.code = "300";
                                        mes.count = 0;
                                        mes.Message = "未找到当前工序的上道工序信息,请联系管理员核实!";
                                        mes.data = null;
                                        return mes;
                                    }
                                }
                                break;
                            default:
                                break;
                        }
                        break;
                    default:
                        break;
                }
            }
            catch (Exception e)
            {
                mes.code = "300";
                mes.count = 0;
                mes.Message = e.Message;
                mes.data = null;
                return mes;
            }
            return mes;
        }
        #endregion
    }
}
VueWebApi/Tools/SeachEncode.cs
@@ -23,6 +23,7 @@
            int digit2, value2, digit3, digitdiff;
            bool stf;
            List<object> list = new List<object>();
            List<string> listdt = new List<string>();
            var dynamicParams = new DynamicParameters();
            try
            {
@@ -67,16 +68,18 @@
                                }
                                Encode = prefix + fdate + cunm2; //最终编码
                                sql = @"update T_CodeRules set value=@cunm2  where rightcode=@rightcode";
                                dynamicParams.Add("@cunm2", cunm2);
                                dynamicParams.Add("@rightcode", rightcode);
                                list.Add(new { str = sql, parm = dynamicParams });
                                //sql = @"update T_CodeRules set value=@cunm2  where rightcode=@rightcode";
                                //dynamicParams.Add("@cunm2", cunm2);
                                //dynamicParams.Add("@rightcode", rightcode);
                                //list.Add(new { str = sql, parm = dynamicParams });
                                stf = DapperHelper.DoTransaction(list);
                                if (stf)
                                {
                                    listdt.Add(Encode);
                                    listdt.Add(cunm2);
                                    mes.code = "200";
                                    mes.Message = "成功!";
                                    mes.data = Encode;
                                    mes.data = listdt;
                                }
                                else
                                {
@@ -114,16 +117,18 @@
                                Encode = prefix + fdate + cunm2; //最终编码
                                sql = @"update T_CodeRules set value=@cunm2  where rightcode=@rightcode";
                                dynamicParams.Add("@cunm2", cunm2);
                                dynamicParams.Add("@rightcode", rightcode);
                                list.Add(new { str = sql, parm = dynamicParams });
                                //sql = @"update T_CodeRules set value=@cunm2  where rightcode=@rightcode";
                                //dynamicParams.Add("@cunm2", cunm2);
                                //dynamicParams.Add("@rightcode", rightcode);
                                //list.Add(new { str = sql, parm = dynamicParams });
                                stf = DapperHelper.DoTransaction(list);
                                if (stf)
                                {
                                    listdt.Add(Encode);
                                    listdt.Add(cunm2);
                                    mes.code = "200";
                                    mes.Message = "成功!";
                                    mes.data = Encode;
                                    mes.data = listdt;
                                }
                                else
                                {
@@ -159,16 +164,18 @@
                                }
                                Encode = prefix + fdate + cunm2; //最终编码
                                sql = @"update T_CodeRules set value=@cunm2  where rightcode=@rightcode";
                                dynamicParams.Add("@cunm2", cunm2);
                                dynamicParams.Add("@rightcode", rightcode);
                                list.Add(new { str = sql, parm = dynamicParams });
                                //sql = @"update T_CodeRules set value=@cunm2  where rightcode=@rightcode";
                                //dynamicParams.Add("@cunm2", cunm2);
                                //dynamicParams.Add("@rightcode", rightcode);
                                //list.Add(new { str = sql, parm = dynamicParams });
                                stf = DapperHelper.DoTransaction(list);
                                if (stf)
                                {
                                    listdt.Add(Encode);
                                    listdt.Add(cunm2);
                                    mes.code = "200";
                                    mes.Message = "成功!";
                                    mes.data = Encode;
                                    mes.data = listdt;
                                }
                                else
                                {
VueWebApi/Views/Shared/Error.cshtml
ÎļþÒÑɾ³ý
VueWebApi/Views/Shared/_Layout.cshtml
ÎļþÒÑɾ³ý
VueWebApi/Views/Web.config
ÎļþÒÑɾ³ý
VueWebApi/Views/_ViewStart.cshtml
ÎļþÒÑɾ³ý
VueWebApi/VueWebApi.csproj
@@ -52,6 +52,12 @@
    <Reference Include="Dapper, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\Dapper.2.0.123\lib\net461\Dapper.dll</HintPath>
    </Reference>
    <Reference Include="FastReport">
      <HintPath>..\..\..\FastReports\FastReport.Net\FastReport.dll</HintPath>
    </Reference>
    <Reference Include="FastReport.Web">
      <HintPath>..\..\..\FastReports\FastReport.Net\FastReport.Web.dll</HintPath>
    </Reference>
    <Reference Include="ICSharpCode.SharpZipLib, Version=1.3.3.11, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
      <HintPath>..\packages\SharpZipLib.1.3.3\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
    </Reference>
@@ -253,6 +259,7 @@
    <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
    <Compile Include="Controllers\BasicSettingController.cs" />
    <Compile Include="Controllers\DeviceManagerController.cs" />
    <Compile Include="Controllers\GridReportController.cs" />
    <Compile Include="Controllers\ImportExcelController.cs" />
    <Compile Include="Controllers\LoginController.cs" />
    <Compile Include="Controllers\MaterialManagerController.cs" />
@@ -263,6 +270,7 @@
    <Compile Include="DLL\BLL\BasicSettingBLL.cs" />
    <Compile Include="DLL\BLL\DeviceManagerBLL.cs" />
    <Compile Include="DLL\BLL\ExcelCheckBLL.cs" />
    <Compile Include="DLL\BLL\GridReportBLL.cs" />
    <Compile Include="DLL\BLL\LoginBLL.cs" />
    <Compile Include="DLL\BLL\MaterialManagerBLL.cs" />
    <Compile Include="DLL\BLL\ProductionManagementBLL.cs" />
@@ -272,6 +280,7 @@
    <Compile Include="DLL\DAL\BasicSettingDAL.cs" />
    <Compile Include="DLL\DAL\DeviceManagerDAL.cs" />
    <Compile Include="DLL\DAL\ExcelCheckDAL.cs" />
    <Compile Include="DLL\DAL\GridReportDAL.cs" />
    <Compile Include="DLL\DAL\LoginDAL.cs" />
    <Compile Include="DLL\DAL\MaterialManagerDAL.cs" />
    <Compile Include="DLL\DAL\ProductionManagementDAL.cs" />
@@ -287,6 +296,7 @@
    <Compile Include="Models\ObjectDataCont.cs" />
    <Compile Include="Models\RoleUserSubmit.cs" />
    <Compile Include="Models\RoutEdit.cs" />
    <Compile Include="Models\ScanStartReportData.cs" />
    <Compile Include="Models\StepDefect.cs" />
    <Compile Include="Models\StepEqp.cs" />
    <Compile Include="Models\TreeDG.cs" />
@@ -302,6 +312,7 @@
    <Compile Include="Tools\Encrypt.cs" />
    <Compile Include="Tools\ExcelList.cs" />
    <Compile Include="Tools\ExcelModelCheck.cs" />
    <Compile Include="Tools\GridMessage.cs" />
    <Compile Include="Tools\ImportExcel.cs" />
    <Compile Include="Tools\ImportExcelData.cs" />
    <Compile Include="Tools\JwtTools.cs" />
@@ -309,6 +320,7 @@
    <Compile Include="Tools\NPOIHelper.cs" />
    <Compile Include="Tools\RedisHelper.cs" />
    <Compile Include="Tools\Regedit.cs" />
    <Compile Include="Tools\ScanStartReport.cs" />
    <Compile Include="Tools\SeachEncode.cs" />
    <Compile Include="Tools\SessionControllerRouteHandler.cs" />
    <Compile Include="Tools\SessionRouteHandler.cs" />
@@ -325,6 +337,8 @@
    <Content Include="favicon.ico" />
    <Content Include="fonts\glyphicons-halflings-regular.svg" />
    <Content Include="Global.asax" />
    <Content Include="Grid\grwebapp.js" />
    <Content Include="Grid\webapp-ws-tutorial.htm" />
    <Content Include="Scripts\bootstrap.js" />
    <Content Include="Scripts\bootstrap.min.js" />
    <Content Include="Areas\HelpPage\Views\Web.config" />
@@ -349,6 +363,10 @@
    <Content Include="log4net.config" />
    <Content Include="libman.json" />
    <Content Include="Excel\用户清单.xls" />
    <Content Include="grf\产品流传单.grf" />
    <Content Include="grf\产品流传单A5.grf" />
    <Content Include="grf\报工产出标签.grf" />
    <Content Include="grf\报工打印标签.grf" />
    <None Include="Scripts\jquery-3.4.1.intellisense.js" />
    <Content Include="Scripts\jquery-3.4.1.js" />
    <Content Include="Scripts\jquery-3.4.1.min.js" />
@@ -365,10 +383,6 @@
    </Content>
    <Content Include="Areas\HelpPage\Views\_ViewStart.cshtml" />
    <Content Include="Content\Site.css" />
    <Content Include="Views\Web.config" />
    <Content Include="Views\_ViewStart.cshtml" />
    <Content Include="Views\Shared\Error.cshtml" />
    <Content Include="Views\Shared\_Layout.cshtml" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="App_Data\" />
VueWebApi/VueWebApi.csproj.user
@@ -8,17 +8,20 @@
    <IISExpressWindowsAuthentication />
    <IISExpressUseClassicPipelineMode />
    <UseGlobalApplicationHostFile />
    <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
    <LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
    <NameOfLastUsedPublishProfile>D:\新凯迪MES\VueWebApi\VueWebApi\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
    <ProjectView>ProjectFiles</ProjectView>
    <Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
    <Controller_SelectedScaffolderCategoryPath>root/Common/Web API</Controller_SelectedScaffolderCategoryPath>
    <Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
    <Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
    <WebStackScaffolding_ControllerDialogWidth>600</WebStackScaffolding_ControllerDialogWidth>
    <WebStackScaffolding_IsLayoutPageSelected>True</WebStackScaffolding_IsLayoutPageSelected>
    <WebStackScaffolding_IsPartialViewSelected>False</WebStackScaffolding_IsPartialViewSelected>
    <WebStackScaffolding_IsReferencingScriptLibrariesSelected>True</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
    <WebStackScaffolding_IsPartialViewSelected>True</WebStackScaffolding_IsPartialViewSelected>
    <WebStackScaffolding_IsReferencingScriptLibrariesSelected>False</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
    <WebStackScaffolding_LayoutPageFile />
    <WebStackScaffolding_IsAsyncSelected>False</WebStackScaffolding_IsAsyncSelected>
    <View_SelectedScaffolderID>MvcViewScaffolder</View_SelectedScaffolderID>
    <View_SelectedScaffolderCategoryPath>root/Common/MVC/View</View_SelectedScaffolderCategoryPath>
    <WebStackScaffolding_ViewDialogWidth>600</WebStackScaffolding_ViewDialogWidth>
  </PropertyGroup>
  <ProjectExtensions>
    <VisualStudio>
VueWebApi/Web.config
@@ -61,6 +61,8 @@
            <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
            <!--添加打印文件MIME类型-->
            <mimeMap fileExtension=".grf" mimeType="grf/gridreport"/>
        </staticContent>
        <handlers>
VueWebApi/bin/FastReport.Web.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1997 @@
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>FastReport.Web</name>
    </assembly>
    <members>
        <member name="T:FastReport.Web.ToolbarStyle">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarStyle.Small">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarStyle.Large">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.ToolbarIconsStyle">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarIconsStyle.Red">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarIconsStyle.Green">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarIconsStyle.Blue">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarIconsStyle.Black">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarIconsStyle.Custom">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.ToolbarBackgroundStyle">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarBackgroundStyle.Light">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarBackgroundStyle.Medium">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarBackgroundStyle.Dark">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ToolbarBackgroundStyle.Custom">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.WebToolbar">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.WebToolbar.RegisterGlobals(System.String,System.Web.UI.ClientScriptManager,System.Type,System.Boolean)">
            <summary>
            </summary>
            <param name="ID"></param>
            <param name="ClientScript"></param>
            <param name="t"></param>
            <param name="extJquery"></param>
        </member>
        <member name="M:FastReport.Web.WebToolbar.GetCss">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebToolbar.GetHtmlHeader">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebToolbar.GetHtmlBody">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebToolbar.GetHtmlProgress(System.String,System.String)">
            <summary>
            </summary>
            <param name="handlerPath"></param>
            <param name="ID"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebToolbar.GetHtmlFooter">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebToolbar.#ctor(System.String,System.String,System.String,System.Collections.Generic.List{FastReport.Web.ReportTab},System.Boolean)">
            <summary>
            </summary>
            <param name="width"></param>
            <param name="height"></param>
            <param name="guid"></param>
            <param name="tabs"></param>
            <param name="fit"></param>
        </member>
        <member name="P:FastReport.Web.WebToolbar.CurrentTabIndex">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebToolbar.EnableFit">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebToolbar.ReportProperties">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebToolbar.Report">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.Handlers.WebExport">
            <summary>
            Web handler class
            </summary>
        </member>
        <member name="F:FastReport.Web.Handlers.WebExport.WebFarmMode">
            <summary>
            You will need to configure this handler in the web.config file of your
            web and register it with IIS before being able to use it. For more information
            see the following link: http://go.microsoft.com/?linkid=8101007
            </summary>
        </member>
        <member name="M:FastReport.Web.Handlers.WebExport.ProcessRequest(System.Web.HttpContext)">
            <summary>
            Process Request
            </summary>
            <param name="context"></param>
        </member>
        <member name="P:FastReport.Web.Handlers.WebExport.IsReusable">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.WebTemplateMode">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.WebTemplateMode.CSS">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.WebTemplateMode.HTML">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.WebTemplate">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.WebTemplate.SetVariable(System.String,System.String)">
            <summary>
            </summary>
            <param name="key"></param>
            <param name="value"></param>
        </member>
        <member name="M:FastReport.Web.WebTemplate.GetVariable(System.String)">
            <summary>
            </summary>
            <param name="key"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebTemplate.LoadFromStream(System.IO.Stream)">
            <summary>
            </summary>
            <param name="stream"></param>
        </member>
        <member name="M:FastReport.Web.WebTemplate.SavePreparedToStream(System.IO.Stream)">
            <summary>
            </summary>
            <param name="stream"></param>
        </member>
        <member name="M:FastReport.Web.WebTemplate.Prepare(System.String)">
            <summary>
            </summary>
            <param name="template"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebTemplate.Prepare">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebTemplate.#ctor(System.String,FastReport.Web.WebTemplateMode,System.Boolean)">
            <summary>
            </summary>
            <param name="template"></param>
            <param name="templateMode"></param>
            <param name="humanreadable"></param>
        </member>
        <member name="M:FastReport.Web.WebTemplate.#ctor">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebTemplate.Clean">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebTemplate.Prepared">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebTemplate.Source">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebTemplate.Variables">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebTemplate.Mode">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.WebReportCache">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReportCache.CacheAdd(System.String,System.Object,System.Web.Caching.CacheItemRemovedCallback,System.Int32,System.Web.Caching.CacheItemPriority)">
            <summary>
            </summary>
            <param name="Name"></param>
            <param name="Obj"></param>
            <param name="DisposeCallBack"></param>
            <param name="CacheDelay"></param>
            <param name="Priority"></param>
        </member>
        <member name="M:FastReport.Web.WebReportCache.CacheGet(System.String)">
            <summary>
            </summary>
            <param name="Name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportCache.CacheRemove(System.String)">
            <summary>
            </summary>
            <param name="Name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportCache.GetStoragePath(System.Web.HttpContext)">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportCache.GetStorageTimeout">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportCache.GetStorageCleanup">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportCache.CleanStorage(System.String,System.Int32,System.Int32)">
            <summary>
            </summary>
            <param name="FileStoragePath"></param>
            <param name="FileStorageTimeout"></param>
            <param name="FileStorageCleanup"></param>
        </member>
        <member name="M:FastReport.Web.WebReportCache.GetFileStorage(System.String,System.String,System.String)">
            <summary>
            </summary>
            <param name="prefix"></param>
            <param name="suffix"></param>
            <param name="path"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportCache.PutFileStorage(System.String,System.String,System.Object,System.String)">
            <summary>
            </summary>
            <param name="prefix"></param>
            <param name="suffix"></param>
            <param name="value"></param>
            <param name="path"></param>
        </member>
        <member name="T:FastReport.Web.WebReportStyles">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.WebReport">
            <summary>
            Represents the Web Report.
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportCsv(System.Web.HttpContext)">
            <summary>
            Export in CSV format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportText(System.Web.HttpContext)">
            <summary>
            Export in Text format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportDbf(System.Web.HttpContext)">
            <summary>
            Export in DBF format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportPdf(System.Web.HttpContext)">
            <summary>
            Export in PDF format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportPdf(System.Web.HttpContext,System.Boolean)">
            <summary>
            Export in PDF format inline
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportHtml(System.Web.HttpContext,System.Boolean)">
            <summary>
            Export in HTML format inline
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportRtf(System.Web.HttpContext)">
            <summary>
            Export in RTF format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportMht(System.Web.HttpContext)">
            <summary>
            Export in MHT format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportXmlExcel(System.Web.HttpContext)">
            <summary>
            Export in XML (Excel 2003) format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportOds(System.Web.HttpContext)">
            <summary>
            Export in Open Office Spreadsheet format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportOdt(System.Web.HttpContext)">
            <summary>
            Export in Open Office Text format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportXps(System.Web.HttpContext)">
            <summary>
            Export in XPS format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportExcel2007(System.Web.HttpContext)">
            <summary>
            Export in Excel 2007 format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportWord2007(System.Web.HttpContext)">
            <summary>
            Export in Word 2007 format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.ExportPowerPoint2007(System.Web.HttpContext)">
            <summary>
            Export in PowerPoint 2007 format
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.PrintPdf(System.Web.HttpContext)">
            <summary>
            Print in Adobe Acrobat
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.PrintHtml(System.Web.HttpContext)">
            <summary>
            Print in browser
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.OnStartReport(System.EventArgs)">
            <summary>
            Runs on report start
            </summary>
            <param name="e"></param>
        </member>
        <member name="M:FastReport.Web.WebReport.NextPage">
            <summary>
            Force go to next report page
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.PrevPage">
            <summary>
            Force go to previous report page
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.FirstPage">
            <summary>
            Force go to first report page
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.LastPage">
            <summary>
            Force go to last report page
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.SetPage(System.Int32)">
            <summary>
            Force go to "value" report page
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.Prepare">
            <summary>
            Prepare the report
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.Refresh">
            <summary>
            Force refresh of report
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReport.AddTab(FastReport.Report,System.String)">
            <summary>
            Adds new report tab
            </summary>
            <param name="report"></param>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.AddTab(FastReport.Report)">
            <summary>
            Adds new report tab
            </summary>
            <param name="report"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.AddTab(FastReport.Report,System.String,System.Boolean)">
            <summary>
            Adds new report tab
            </summary>
            <param name="report"></param>
            <param name="name"></param>
            <param name="reportDone"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterDataAsp(FastReport.Report,System.Web.UI.IDataSource,System.String)">
            <summary>
            Registers the ASP.NET application data to use it in the report.
            </summary>
            <param name="report">The <b>Report</b> object.</param>
            <param name="data">The application data.</param>
            <param name="name">The name of the data.</param>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterDataAsp(FastReport.Report,System.Collections.IEnumerable,System.String)">
            <summary>
            Registers the ASP.NET application data to use it in the report.
            </summary>
            <param name="report">The <b>Report</b> object.</param>
            <param name="data">The application data.</param>
            <param name="name">The name of the data.</param>
        </member>
        <member name="M:FastReport.Web.WebReport.OnLoad(System.EventArgs)">
            <inheritdoc/>
        </member>
        <member name="M:FastReport.Web.WebReport.OnUnload(System.EventArgs)">
            <inheritdoc/>
        </member>
        <member name="M:FastReport.Web.WebReport.OnInit(System.EventArgs)">
            <inheritdoc/>
        </member>
        <member name="M:FastReport.Web.WebReport.OnPreRender(System.EventArgs)">
            <summary>
            </summary>
            <param name="e"></param>
        </member>
        <member name="M:FastReport.Web.WebReport.RenderContents(System.Web.UI.HtmlTextWriter)">
            <inheritdoc/>
        </member>
        <member name="M:FastReport.Web.WebReport.GetHtml">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.Scripts">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.Styles">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.SetSize(System.Web.UI.WebControls.Unit,System.Web.UI.WebControls.Unit)">
            <summary>
            </summary>
            <param name="width"></param>
            <param name="height"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.SetStartEvent(System.EventHandler)">
            <summary>
            </summary>
            <param name="start"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterData(System.Data.DataSet,System.String)">
            <summary>
            </summary>
            <param name="data"></param>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterData(System.Data.DataRelation,System.String)">
            <summary>
            </summary>
            <param name="data"></param>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterData(System.Data.DataSet)">
            <summary>
            </summary>
            <param name="data"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterData(System.Data.DataTable,System.String)">
            <summary>
            </summary>
            <param name="data"></param>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterData(System.Data.DataView,System.String)">
            <summary>
            </summary>
            <param name="data"></param>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.RegisterData(System.Collections.IEnumerable,System.String)">
            <summary>
            </summary>
            <param name="data"></param>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReport.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:FastReport.Web.WebReport"/> class.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowRtfExport">
            <summary>
            Switch visibility of RTF export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.RtfJpegQuality">
            <summary>
            Gets or sets the quality of Jpeg images in RTF file.
            </summary>
            <remarks>
            Default value is 90. This property will be used if you select Jpeg
            in the <see cref="P:FastReport.Web.WebReport.RtfImageFormat"/> property.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.RtfImageFormat">
            <summary>
            Gets or sets the image format that will be used to save pictures in RTF file.
            </summary>
            <remarks>
            Default value is <b>Metafile</b>. This format is better for exporting such objects as
            <b>MSChartObject</b> and <b>ShapeObject</b>.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.RtfPictures">
            <summary>
            Gets or sets a value indicating that pictures are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.RtfPageBreaks">
            <summary>
            Gets or sets a value indicating that page breaks are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.RtfWysiwyg">
            <summary>
            Gets or sets a value that determines whether the wysiwyg mode should be used
            for better results.
            </summary>
            <remarks>
            Default value is <b>true</b>. In wysiwyg mode, the resulting rtf file will look
            as close as possible to the prepared report. On the other side, it may have a lot
            of small rows/columns, which will make it less editable. If you set this property
            to <b>false</b>, the number of rows/columns in the resulting file will be decreased.
            You will get less wysiwyg, but more editable file.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.RtfCreator">
            <summary>
            Gets or sets the creator of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.RtfAutoSize">
            <summary>
            Gets or sets a value that determines whether the rows in the resulting table
            should calculate its height automatically.
            </summary>
            <remarks>
            Default value for this property is <b>false</b>. In this mode, each row in the
            resulting table has fixed height to get maximum wysiwyg. If you set it to <b>true</b>,
            the height of resulting table will be calculated automatically by the Word processor.
            The document will be more editable, but less wysiwyg.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowMhtExport">
            <summary>
            Switch visibility of MHT (web-archive) export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.MhtPictures">
            <summary>
            Gets or sets a value indicating that pictures are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.MhtWysiwyg">
            <summary>
            Gets or sets a value that determines whether the wysiwyg mode should be used
            for better results.
            </summary>
            <remarks>
            Default value is <b>true</b>. In wysiwyg mode, the resulting rtf file will look
            as close as possible to the prepared report. On the other side, it may have a lot
            of small rows/columns, which will make it less editable. If you set this property
            to <b>false</b>, the number of rows/columns in the resulting file will be decreased.
            You will get less wysiwyg, but more editable file.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowOdsExport">
            <summary>
            Switch visibility of Open Office Spreadsheet (ODS) export in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.OdsPageBreaks">
            <summary>
            Gets or sets a value indicating that page breaks are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.OdsWysiwyg">
            <summary>
            Gets or sets a value that determines whether the wysiwyg mode should be used
            for better results.
            </summary>
            <remarks>
            Default value is <b>true</b>. In wysiwyg mode, the resulting rtf file will look
            as close as possible to the prepared report. On the other side, it may have a lot
            of small rows/columns, which will make it less editable. If you set this property
            to <b>false</b>, the number of rows/columns in the resulting file will be decreased.
            You will get less wysiwyg, but more editable file.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.OdsCreator">
            <summary>
            Gets or sets the creator of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowOdtExport">
            <summary>
            Switch visibility of Open Office Text (ODT) export in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.OdtPageBreaks">
            <summary>
            Gets or sets a value indicating that page breaks are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.OdtWysiwyg">
            <summary>
            Gets or sets a value that determines whether the wysiwyg mode should be used
            for better results.
            </summary>
            <remarks>
            Default value is <b>true</b>. In wysiwyg mode, the resulting rtf file will look
            as close as possible to the prepared report. On the other side, it may have a lot
            of small rows/columns, which will make it less editable. If you set this property
            to <b>false</b>, the number of rows/columns in the resulting file will be decreased.
            You will get less wysiwyg, but more editable file.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.OdtCreator">
            <summary>
            Gets or sets the creator of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowXpsExport">
            <summary>
            Switch visibility of XPS export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowDbfExport">
            <summary>
            Switch visibility of DBF export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowWord2007Export">
            <summary>
            Switch visibility of Word 2007 export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.DocxMatrixBased">
            <summary>
            Enable or disable matrix view of Word 2007 document
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowExcel2007Export">
            <summary>
            Switch visibility of Excel 2007 export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.XlsxPageBreaks">
            <summary>
             Gets or sets a value indicating that page breaks are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.XlsxWysiwyg">
            <summary>
            Gets or sets a value that determines whether the wysiwyg mode should be used
            for better results.
            </summary>
            <remarks>
            Default value is <b>true</b>. In wysiwyg mode, the resulting rtf file will look
            as close as possible to the prepared report. On the other side, it may have a lot
            of small rows/columns, which will make it less editable. If you set this property
            to <b>false</b>, the number of rows/columns in the resulting file will be decreased.
            You will get less wysiwyg, but more editable file.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.XlsxDataOnly">
            <summary>
            Enable or disable of exporting data without any header/group bands.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowPowerPoint2007Export">
            <summary>
            Switch visibility of PowerPoint 2007 export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PptxImageFormat">
            <summary>
            Gets or sets the image format that will be used to save pictures in PowerPoint file.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowXmlExcelExport">
            <summary>
             Switch visibility of XML (Excel) export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.XmlExcelPageBreaks">
            <summary>
             Gets or sets a value indicating that page breaks are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.XmlExcelWysiwyg">
            <summary>
            Gets or sets a value that determines whether the wysiwyg mode should be used
            for better results.
            </summary>
            <remarks>
            Default value is <b>true</b>. In wysiwyg mode, the resulting rtf file will look
            as close as possible to the prepared report. On the other side, it may have a lot
            of small rows/columns, which will make it less editable. If you set this property
            to <b>false</b>, the number of rows/columns in the resulting file will be decreased.
            You will get less wysiwyg, but more editable file.
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.XmlExcelDataOnly">
            <summary>
            Enable or disable of exporting data without any header/group bands.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowPdfExport">
            <summary>
             Switch visibility of PDF (Adobe Acrobat) export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfEmbeddingFonts">
            <summary>
            Enable or disable of embedding the TrueType fonts.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfBackground">
            <summary>
            Enable or disable of exporting the background.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfPrintOptimized">
            <summary>
            Enable or disable of optimization the images for printing.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfOutline">
            <summary>
            Enable or disable of document's Outline.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfDisplayDocTitle">
            <summary>
            Enable or disable of displaying document's title.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfHideToolbar">
            <summary>
            Enable or disable hide the toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfHideMenubar">
            <summary>
            Enable or disable hide the menu's bar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfHideWindowUI">
            <summary>
            Enable or disable hide the Windows UI.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfFitWindow">
            <summary>
            Enable or disable of fitting the window.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfCenterWindow">
            <summary>
             Enable or disable centering the window.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfPrintScaling">
            <summary>
            Enable or disable of scaling the page for shrink to printable area.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfTitle">
            <summary>
            Title of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfAuthor">
            <summary>
            Author of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfSubject">
            <summary>
             Subject of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfKeywords">
            <summary>
             Keywords of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfCreator">
            <summary>
            Creator of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfProducer">
            <summary>
            Producer of the document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfUserPassword">
            <summary>
            Sets the users password.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfOwnerPassword">
            <summary>
            Sets the owner password.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfAllowPrint">
            <summary>
            Enable or disable printing in protected document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfAllowModify">
            <summary>
            Enable or disable modifying in protected document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfAllowCopy">
            <summary>
            Enable or disable copying in protected document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PdfAllowAnnotate">
            <summary>
            Enable or disable annotating in protected document.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowCsvExport">
            <summary>
            Switch visibility of CSV (comma separated values) export in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.CsvSeparator">
            <summary>
            Gets or sets of cells separator.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.CsvDataOnly">
            <summary>
            Enable or disable of exporting data without any header/group bands.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowTextExport">
            <summary>
             Switch visibility of text (plain text) export in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.TextDataOnly">
            <summary>
            Enable or disable of exporting data without any header/group bands.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.TextPageBreaks">
            <summary>
             Gets or sets a value indicating that page breaks are enabled.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.TextAllowFrames">
            <summary>
            Enable or disable frames in text file.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.TextSimpleFrames">
            <summary>
            Enable or disable simple (non graphic) frames in text file.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.TextEmptyLines">
            <summary>
            Enable or disable empty lines in text file.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.AutoWidth">
            <summary>
            Get or sets auto width of report
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ExternalJquery">
            <summary>
            Enable or disable using of external jQuery library
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.AutoHeight">
            <summary>
            Get or sets auto height of report
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.Layers">
            <summary>
            Enable or disable layers mode visualisation
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.Padding">
            <summary>
            Gets or sets Padding of Report section
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.CacheDelay">
            <summary>
            Delay in cache in minutes
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.CachePriority">
            <summary>
            Priority of items in cache
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ReportResourceString">
            <summary>
            Report Resource String
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ReportDataSources">
            <summary>
            Gets or sets report data source(s).
            </summary>
            <remarks>
            To pass several datasources, use ';' delimiter, for example:
            "sqlDataSource1;sqlDataSource2"
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.Pictures">
            <summary>
            Switch the pictures visibility in report
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ReportFile">
            <summary>
            Gets or sets the name of report file.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.LocalizationFile">
            <summary>
            Gets or sets the name of localization file.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.Zoom">
            <summary>
            Set the zoom factor of previewed page between 0..1
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ToolbarStyle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ToolbarIconsStyle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ToolbarBackgroundStyle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowToolbar">
            <summary>
             Switch toolbar visibility
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ButtonsPath">
            <summary>
            Sets the path to custom buttons on site.
            </summary>
            <remarks>
            Pictures should be named:
            Checkbox.gif, Progress.gif, toolbar.png, toolbar_background.png, toolbar_big.png, toolbar_disabled.png, toolbar_disabled.png
            </remarks>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowExports">
            <summary>
             Switch visibility of Exports in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowPrint">
            <summary>
             Switch visibility of Print button in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowFirstButton">
            <summary>
             Switch visibility of First Button in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowPrevButton">
            <summary>
             Switch visibility of Previous Button in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowNextButton">
            <summary>
             Switch visibility of Next Button in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowLastButton">
            <summary>
             Switch visibility of Last Button in toolbar
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowZoomButton">
            <summary>
            Switch visibility of Zoom in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowRefreshButton">
            <summary>
            Switch visibility of Refresh in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ShowPageNumber">
            <summary>
            Switch visibility of Page Number in toolbar.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ToolbarColor">
            <summary>
            Set the Toolbar color.
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PrintInPdf">
            <summary>
            Enable or disable print in PDF
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PrintWindowWidth">
            <summary>
            Sets the width of print window
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.PrintWindowHeight">
            <summary>
            Sets the height of print window
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.Prop">
            <summary>
            Direct access to Properties of report object
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.Tabs">
            <summary>
            Direct access to Tabs
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.CurrentTabIndex">
            <summary>
            Gets or sets current tab index
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.CurrentTab">
            <summary>
            Gets current tab
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.Toolbar">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.Report">
            <summary>
            Direct access to Report object
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.TotalPages">
            <summary>
            Gets total pages of current report
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.State">
            <summary>
            Gets or sets current state of report
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ReportDone">
            <summary>
            Return true if report done
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.CurrentPage">
            <summary>
            Gets or sets number of current page
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReport.ReportGuid">
            <summary>
            Gets or sets guid of report
            </summary>
        </member>
        <member name="E:FastReport.Web.WebReport.StartReport">
            <summary>
            Occurs when report execution is started.
            </summary>
        </member>
        <member name="T:FastReport.Web.Properties.Resources">
            <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
        </member>
        <member name="P:FastReport.Web.Properties.Resources.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:FastReport.Web.Properties.Resources.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="T:FastReport.Web.WebUtils">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.WebUtils.HandlerFileName">
            <summary>
            Contain the filename of httphandler
            </summary>
        </member>
        <member name="M:FastReport.Web.WebUtils.IsAbsolutePhysicalPath(System.String)">
            <summary>
            Determines whether the path is an absolute physical path.
            </summary>
            <param name="path">The path to check.</param>
            <returns><b>true</b> if the path is absolute physical path.</returns>
        </member>
        <member name="M:FastReport.Web.WebUtils.CheckHandlers">
            <summary>
            Check http handlers in web.config
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebUtils.AddHandlers(System.String)">
            <summary>
            Add http handlers in web.config
            </summary>
        </member>
        <member name="M:FastReport.Web.WebUtils.CheckHandlersRuntime">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.WebUtils.GetHandlerError">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebUtils.ReverseString(System.String)">
            <summary>
            </summary>
            <param name="str"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebUtils.GetGUID(System.Web.HttpContext,System.String)">
            <summary>
            </summary>
            <param name="context"></param>
            <param name="id"></param>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebUtils.GetGUID">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="T:FastReport.Web.WebExportItem">
            <summary>
            Class for export item description
            </summary>
        </member>
        <member name="P:FastReport.Web.WebExportItem.File">
            <summary>
            Binary data of exported files
            </summary>
        </member>
        <member name="P:FastReport.Web.WebExportItem.FileName">
            <summary>
            Name of exported file
            </summary>
        </member>
        <member name="P:FastReport.Web.WebExportItem.Format">
            <summary>
            Format of exported file
            </summary>
        </member>
        <member name="P:FastReport.Web.WebExportItem.ContentType">
            <summary>
            MIME type of exported file
            </summary>
        </member>
        <member name="T:FastReport.Web.ReportTab">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.ReportTab.#ctor">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.ReportTab.#ctor(FastReport.Report)">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.ReportTab.#ctor(FastReport.Report,FastReport.Web.WebReportProperties)">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.ReportTab.Name">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.ReportTab.Report">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.ReportTab.Properties">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.ZoomMode">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ZoomMode.Scale">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ZoomMode.Width">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ZoomMode.Page">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.ReportState">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ReportState.Empty">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ReportState.Forms">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ReportState.Report">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ReportState.Done">
            <summary>
            </summary>
        </member>
        <member name="F:FastReport.Web.ReportState.Canceled">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.WebReportProperties">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ToolbarStyle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ToolbarIconsStyle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ToolbarBackgroundStyle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.AutoWidth">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.AutoHeight">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.Layers">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.Padding">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ReportResourceString">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ReportDataSources">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.Pictures">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ExternalJquery">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ReportFile">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.LocalizationFile">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.Zoom">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ZoomMode">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.CacheDelay">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.CachePriority">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowToolbar">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowBottomToolbar">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ButtonsPath">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowExports">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowPrint">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowFirstButton">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowPrevButton">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowNextButton">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowLastButton">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowZoomButton">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowRefreshButton">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowPageNumber">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ToolbarColor">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowRtfExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.RtfJpegQuality">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.RtfImageFormat">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.RtfPictures">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.RtfPageBreaks">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.RtfWysiwyg">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.RtfCreator">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.RtfAutoSize">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowMhtExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.MhtPictures">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.MhtWysiwyg">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowOdsExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.OdsPageBreaks">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.OdsWysiwyg">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.OdsCreator">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowOdtExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.OdtPageBreaks">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.OdtWysiwyg">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.OdtCreator">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowXpsExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowDbfExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowWord2007Export">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.DocxMatrixBased">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowExcel2007Export">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.XlsxPageBreaks">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.XlsxWysiwyg">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.XlsxDataOnly">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowPowerPoint2007Export">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PptxImageFormat">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowXmlExcelExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.XmlExcelPageBreaks">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.XmlExcelWysiwyg">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.XmlExcelDataOnly">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowPdfExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfEmbeddingFonts">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfBackground">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfPrintOptimized">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfOutline">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfDisplayDocTitle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfHideToolbar">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfHideMenubar">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfHideWindowUI">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfFitWindow">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfCenterWindow">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfPrintScaling">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfTitle">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfAuthor">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfSubject">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfKeywords">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfCreator">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfProducer">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfUserPassword">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfOwnerPassword">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfAllowPrint">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfAllowModify">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfAllowCopy">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PdfAllowAnnotate">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowCsvExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.CsvSeparator">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.CsvDataOnly">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ShowTextExport">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.TextDataOnly">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.TextPageBreaks">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.TextAllowFrames">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.TextSimpleFrames">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.TextEmptyLines">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PrintInPdf">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PrintWindowWidth">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.PrintWindowHeight">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ReportDone">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.TotalPages">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.CurrentPage">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.CurrentWidth">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.CurrentHeight">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ToolbarHeight">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.ControlID">
            <summary>
            </summary>
        </member>
        <member name="P:FastReport.Web.WebReportProperties.HandlerURL">
            <summary>
            </summary>
        </member>
        <member name="T:FastReport.Web.WebReportGlobals">
            <summary>
            </summary>
        </member>
        <member name="M:FastReport.Web.WebReportGlobals.Scripts">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportGlobals.ScriptsWOjQuery">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportGlobals.Styles">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="M:FastReport.Web.WebReportGlobals.StylesWOjQuery">
            <summary>
            </summary>
            <returns></returns>
        </member>
    </members>
</doc>
VueWebApi/bin/FastReport.xml
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
VueWebApi/bin/VueWebApi.dll.config
@@ -61,6 +61,8 @@
            <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
            <!--添加打印文件MIME类型-->
            <mimeMap fileExtension=".grf" mimeType="grf/gridreport"/>
        </staticContent>
        <handlers>
VueWebApi/bin/VueWebApi.pdb
Binary files differ
VueWebApi/bin/VueWebApi.xml
@@ -562,6 +562,12 @@
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.UserGroup">
            <summary>
            ç”¨æˆ·æ‰€å±žç­ç»„
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.AddUpdateUser(Newtonsoft.Json.Linq.JObject)">
            <summary>
            ç”¨æˆ·æ¸…单新增编辑
@@ -596,6 +602,30 @@
            ç”¨æˆ·æ¸…单导入
            </summary>
            <param name="files">上传用户清单导入文件</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.UserGroupSearch(System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç”¨æˆ·ç»„列表查询
            </summary>
            <param name="page">页码</param>
            <param name="rows">每页显示条数</param>
            <param name="prop">排序字段</param>
            <param name="order">排序规则</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.UserGroupAdd(System.Collections.Generic.List{VueWebApi.Models.StepDefect})">
            <summary>
            ç”¨æˆ·ç»„新增
            </summary>
            <param name="json">用户组新增提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.UserGroupDelete(System.String)">
            <summary>
            ç”¨æˆ·ç»„删除
            </summary>
            <param name="UserGrupCode">用户组编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.BasicSettingController.RoleTypeSearch(System.Int32,System.Int32,System.String,System.String)">
@@ -835,6 +865,20 @@
            <param name="devicecode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.GridReportController.MesOrderPrintSearch(System.String,System.String)">
            <summary>
            MES工单打印
            </summary>
            <param name="username">登录用户</param>
            <param name="mesordercode">工单编号</param>
        </member>
        <member name="M:VueWebApi.Controllers.GridReportController.MesOrderPrintSearch1(Newtonsoft.Json.Linq.JObject)">
            <summary>
            MES工单打印1
            </summary>
            <param name="obj">提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ImportExcelController.DownLoadExcel(System.String)">
            <summary>
            Excel导入模板下载
@@ -1019,6 +1063,162 @@
            <param name="erpordercode">订单号</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            MES工单查询
            </summary>
            <param name="mesorderstus">工单状态码</param>
            <param name="mesordercode">工单编号</param>
            <param name="partcode">产品编码</param>
            <param name="partname">产品名称</param>
            <param name="partspec">产品规格</param>
            <param name="creatuser">创建人员</param>
            <param name="createdate">创建时间</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.ProductionManagementController.PartSelectRoute(System.String)">
            <summary>
            äº§å“ç¼–码查找工艺路线下拉接口
            </summary>
            <param name="partcode">产品编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.RouteSelectWkshop(System.String,System.String)">
            <summary>
            äº§å“+工艺路线查找车间下拉接口
            </summary>
            <param name="partcode">产品编码</param>
            <param name="routecode">工艺路线编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.SelectRouteStep(System.String)">
            <summary>
            æ ¹æ®é€‰æ‹©å·¥è‰ºè·¯çº¿æŸ¥çœ‹å·¥åºæŽ¥å£
            </summary>
            <param name="routecode">工艺路线编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.AddUpdateMesOrder(Newtonsoft.Json.Linq.JObject)">
            <summary>
            MES工单新增、编辑提交
            </summary>
            <param name="obj">提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.DeleteMesOrder(System.String,System.String,System.String)">
            <summary>
            MES工单删除
            </summary>
            <param name="wocode">工单编号</param>
            <param name="m_po">订单编号</param>
            <param name="orderqty">工单数量</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.ClosedMesOrder(System.String,System.String)">
            <summary>
            MES工单关闭
            </summary>
            <param name="wocode">工单编号</param>
            <param name="m_po">订单编号</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.SearchWorkStep(System.String)">
            <summary>
            MES工单查看工序任务
            </summary>
            <param name="wo_code">工单编号</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepSearch(System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥æ‰«ç èŽ·å–å·¥å•å¯¹åº”å·¥åºä»»åŠ¡(自制)
            </summary>
            <param name="orderstepqrcode">扫描的二维码信息</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.ProductionManagementController.MesOrderWxStepSearch(System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥æ‰«ç èŽ·å–å·¥å•å¯¹åº”å·¥åºä»»åŠ¡(外协)
            </summary>
            <param name="orderstepqrcode">扫描的二维码信息</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.ProductionManagementController.MesOrderStepStart(System.String,System.String,System.String)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå¼€å·¥(开始/报工)/外协(发料/收料)时条件判断及数据返回接口
            </summary>
            <param name="OperType">操作类型:自制(ZZ)/外协(WX)</param>
            <param name="SelectType">操作类型:外协发料标识(OUT)/外协收料标识(IN)</param>
            <param name="orderstepqrcode">扫描二维码信息</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepStartSelectEqp(System.String)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå¼€å·¥æ—¶èŽ·å–è®¾å¤‡ä¸‹æ‹‰åˆ—è¡¨
            </summary>
            <param name="orderstepqrcode">扫描二维码信息</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepReportSelectUserGroup">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥ï¼šæŠ¥å·¥æ—¶èŽ·å–ç”Ÿäº§ç­ç»„ä¸‹æ‹‰æ¡†
            </summary>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderGroupSelectUser(System.String)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥ï¼šå¼€å·¥æ—¶èŽ·å–è®¾å¤‡ä¸‹æ‹‰åˆ—è¡¨
            </summary>
            <param name="usergroupcode">班组编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepSelectCause(System.String)">
            <summary>
            ç”Ÿäº§æŠ¥å·¥ï¼šæŠ¥å·¥/外协收料 èŽ·å–ä¸è‰¯åŽŸå› ä¸‹æ‹‰åˆ—è¡¨
            </summary>
            <param name="orderstepqrcode">扫描二维码信息</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.SavaMesOrderStepStart(Newtonsoft.Json.Linq.JObject)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥,开工提交
            </summary>
            <param name="obj">开工提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.SavaMesOrderStepReport(Newtonsoft.Json.Linq.JObject)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥,报工提交
            </summary>
            <param name="obj">报工提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.SavaMesOrderStepOut(Newtonsoft.Json.Linq.JObject)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥,发料提交
            </summary>
            <param name="obj">发料提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductionManagementController.SavaMesOrderStepIn(Newtonsoft.Json.Linq.JObject)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥,收料提交
            </summary>
            <param name="obj">收料提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductModelController.StockTypeSelect">
            <summary>
            å­˜è´§ç±»åž‹æŽ¥å£
@@ -1134,9 +1334,9 @@
            <param name="json">提交数据对象</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductModelController.RouteSelect">
        <member name="M:VueWebApi.Controllers.ProductModelController.StepSelect">
            <summary>
            å·¥è‰ºè·¯çº¿ä¸‹æ‹‰æŸ¥è¯¢æŽ¥å£
            å·¥åºä¸‹æ‹‰æŸ¥è¯¢æŽ¥å£
            </summary>
            <returns></returns>
        </member>
@@ -1161,9 +1361,9 @@
            <param name="routecode">工艺路线编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductModelController.AddUpdateRoute(System.String,System.String,VueWebApi.Models.RoutEdit)">
        <member name="M:VueWebApi.Controllers.ProductModelController.AddUpdateRoute(System.String,VueWebApi.Models.RoutEdit,System.String)">
            <summary>
            å·¥è‰ºè·¯çº¿æ–°å¢žç¼–辑
            å·¥è‰ºè·¯çº¿æ–°å¢ž
            </summary>
            <param name="id">工艺路线id</param>
            <param name="opertype">操作类型(新增)</param>
@@ -1297,6 +1497,16 @@
            <param name="obj">提交数据</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.ProductModelController.DeleteBeatRate(System.String,System.String,System.String,System.String)">
            <summary>
            èŠ‚æ‹å·¥ä»·åˆ é™¤
            </summary>
            <param name="partcode">产品编码</param>
            <param name="routecode">工艺路线编码</param>
            <param name="stepcode">工序编码</param>
            <param name="eqpcode">设备编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Controllers.SystemSettingController.EncodingRules(System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            ç¼–码规则查询
@@ -1345,7 +1555,15 @@
            </summary>
            <returns></returns>
        </member>
        <!-- Badly formed XML comment ignored for member "M:VueWebApi.Tools.DapperHelper.select``1(System.String,System.Object)" -->
        <member name="M:VueWebApi.Tools.DapperHelper.select``1(System.String,System.Object)">
            <summary>
            Dapper查询返回List
            </summary>
            <typeparam name="T">需要返回的对象类型</typeparam>
            <param name="sql">Sql语句</param>
            <param name="parm"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DapperHelper.selectToDict(System.String,System.Object)">
            <summary>
            Dapper查询返回List字典对象  æ— éœ€æ‰‹åЍWapper对象了 
@@ -1415,6 +1633,13 @@
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DapperHelper.DoTransaction(System.Collections.Generic.List{System.Object})">
            <summary>
            å¢žåŠ ï¼Œåˆ é™¤ï¼Œä¿®æ”¹ä½¿ç”¨çš„ äº‹åŠ¡æ–¹æ³•  Sqllist为依次执行
            </summary>
            <param name="sqlList"></param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.DapperHelper.DoTransactionCont(System.Collections.Generic.List{System.Object})">
            <summary>
            å¢žåŠ ï¼Œåˆ é™¤ï¼Œä¿®æ”¹ä½¿ç”¨çš„ äº‹åŠ¡æ–¹æ³•  Sqllist为依次执行
            </summary>
@@ -1757,6 +1982,23 @@
            <param name="listId"></param>  
            <param name="func"></param>  
        </member>
        <member name="M:VueWebApi.Tools.ScanStartReport.ZZEncodingSeach(System.String,System.String)">
            <summary>
            æ‰«ç ä¿¡æ¯ä¸ºå·¥å•+工序条码
            </summary>
            <param name="ordercode">工单编号</param>
            <param name="stepcode">工序编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.ScanStartReport.WXEncodingSeach(System.String,System.String,System.String)">
            <summary>
            ç”Ÿäº§å¼€æŠ¥å·¥:外协工序任务开报工判断:工单号+工序
            </summary>
            <param name="OperType">操作类型</param>
            <param name="ordercode">工单编号</param>
            <param name="stepcode">工序编码</param>
            <returns></returns>
        </member>
        <member name="M:VueWebApi.Tools.SeachEncode.EncodingSeach(System.String)">
            <summary>
            æ ¹æ®åŠŸèƒ½ç¼–ç èŽ·å–æœ€æ–°è§„åˆ™ç¼–ç 
VueWebApi/grf/²úÆ·Á÷´«µ¥.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,347 @@
Object Report
    Version='6.0.0.6'
    Title='生产任务单'
    PrintAsDesignPaper=F
    Object Font
        Name='宋体'
        Size=135000,0
        Weight=400
        Charset=134
    End
    Object Printer
        Size=11
        Width=14.8
        Height=21
        Oriention=Landscape
        LeftMargin=0
        TopMargin=0
        RightMargin=0
        BottomMargin=0
    End
    Object DetailGrid
        CenterView=T
        ShowColLine=F
        ShowRowLine=F
        Object Border
            Styles=[]
        End
        Object Recordset
            Items Field
                Item
                    Name='PO'
                End
                Item
                    Name='产品代号'
                End
                Item
                    Name='编号'
                End
                Item
                    Name='数量'
                End
                Item
                    Name='条码编号'
                End
                Item
                    Name='产品型号'
                End
                Item
                    Name='颜色'
                End
                Item
                    Name='模具编号'
                End
                Item
                    Name='净重'
                    Type=Currency
                    Format='0.#########;;#'
                End
                Item
                    Name='毛重'
                    Type=Currency
                    Format='0.#########;;#'
                End
                Item
                    Name='喂料批号'
                End
                Item
                    Name='批号'
                End
                Item
                    Name='日期'
                    Type=DateTime
                    Format='yyyy-MM'
                End
                Item
                    Name='品牌'
                End
                Item
                    Name='客户型号'
                End
                Item
                    Name='压机型号'
                End
            End
        End
        Items Column
            Item
                Name='Column3'
                Width=21.0079
            End
        End
        Object ColumnContent
            Height=14.7902
            RowsPerPage=1
            Items ColumnContentCell
                Item
                    Column='Column3'
                    FreeCell=T
                    Items Control
                        Item
                            Type=FreeGrid
                            Name='FreeGrid1'
                            Left=0.185208
                            Top=0.264583
                            Object Border
                                Styles=[DrawLeft|DrawTop|DrawRight|DrawBottom]
                            End
                            ColumnCount=11
                            RowCount=20
                            Items FreeGridColumn
                                Item[1]
                                    Width=1.85208
                                End
                                Item[2]
                                    Width=1.66688
                                End
                                Item[3]
                                    Width=1.85208
                                End
                                Item[4]
                                    Width=1.905
                                End
                                Item[5]
                                    Width=2.16958
                                End
                                Item[6]
                                    Width=1.61396
                                End
                                Item[7]
                                    Width=1.85208
                                End
                                Item[8]
                                    Width=2.35479
                                End
                                Item[9]
                                    Width=2.03729
                                End
                                Item[10]
                                    Width=1.64042
                                End
                                Item[11]
                                    Width=1.48167
                                End
                            End
                            Items FreeGridRow
                                Item[1]
                                    Height=1
                                End
                                Item[2]
                                    Height=0.8
                                End
                                Item[3]
                                    Height=0.8
                                End
                                Item[5]
                                    Height=0.8
                                End
                                Item[6]
                                    Height=0.7
                                End
                                Item[8]
                                    Height=0.7
                                End
                                Item[9]
                                    Height=0.7
                                End
                                Item[10]
                                    Height=0.7
                                End
                                Item[11]
                                    Height=0.7
                                End
                                Item[12]
                                    Height=0.7
                                End
                                Item[13]
                                    Height=0.7
                                End
                                Item[14]
                                    Height=0.7
                                End
                                Item[15]
                                    Height=0.7
                                End
                                Item[16]
                                    Height=0.7
                                End
                                Item[17]
                                    Height=0.7
                                End
                                Item[18]
                                    Height=0.7
                                End
                                Item[19]
                                    Height=0.7
                                End
                                Item[20]
                                    Height=0.7
                                End
                            End
                            Items FreeGridCell
                                Item[1,1]
                                    TextAlign=MiddleCenter
                                    Text='杭州智见科技有限公司'
                                    ColSpan=8
                                End
                                Item[1,9]
                                    FreeCell=T
                                    Items Control
                                        Item
                                            Type=Barcode
                                            Name='Barcode6'
                                            Left=1.5875
                                            Width=2.01083
                                            Height=1.79917
                                            BarcodeType=QRCode
                                            CaptionPosition=None
                                            Text='[#条码编号#]'
                                        End
                                        Item
                                            Type=FieldBox
                                            Name='FieldBox1'
                                            Left=0.608542
                                            Top=2.01083
                                            Width=3.99521
                                            Height=0.396875
                                        End
                                    End
                                    ColSpan=3
                                    RowSpan=3
                                End
                                Item[2,1]
                                    TextAlign=MiddleCenter
                                    Text='产品流传单'
                                    ColSpan=8
                                End
                                Item[3,1]
                                    Text='PO:'
                                    ColSpan=2
                                End
                                Item[3,3]
                                    Text='[#PO#]'
                                    ColSpan=2
                                End
                                Item[3,5]
                                    ColSpan=4
                                End
                                Item[4,1]
                                    Text='产品代号:'
                                    ColSpan=2
                                End
                                Item[4,3]
                                    Text='[#产品代号#]'
                                    ColSpan=2
                                End
                                Item[4,5]
                                    Text='分批号:'
                                End
                                Item[4,6]
                                    ColSpan=2
                                End
                                Item[4,8]
                                    Text='编号:'
                                End
                                Item[4,9]
                                    Text='[#编号#]'
                                    ColSpan=3
                                End
                                Item[5,1]
                                    Text='模具编号:'
                                    ColSpan=2
                                End
                                Item[5,3]
                                    Text='[#模具编号#]'
                                    ColSpan=5
                                End
                                Item[5,8]
                                    Text='喂料批号:'
                                End
                                Item[5,9]
                                    Text='[#喂料批号#]'
                                    ColSpan=3
                                End
                                Item[6,1]
                                    Text='日期'
                                End
                                Item[6,2]
                                    Text='班次'
                                End
                                Item[6,3]
                                    Text='操作工'
                                End
                                Item[6,4]
                                    Text='工序'
                                End
                                Item[6,5]
                                    Text='设备编号'
                                End
                                Item[6,6]
                                    Text='加工数'
                                End
                                Item[6,7]
                                    Text='合格数'
                                End
                                Item[6,8]
                                    Text='分单量'
                                End
                                Item[6,9]
                                    Text='废品数量'
                                End
                                Item[6,10]
                                    Text='检验员'
                                End
                                Item[6,11]
                                    Text='备注'
                                End
                            End
                        End
                    End
                End
            End
        End
        Object ColumnTitle
            Height=0
            Items ColumnTitleCell
                Item
                    GroupTitle=F
                    Column='Column3'
                    Text='Column1'
                End
            End
        End
    End
    Items ReportHeader
        Item
            Name='ReportHeader1'
            Height=0
            RepeatOnPage=T
        End
    End
    Items ReportFooter
        Item
            Name='ReportFooter1'
            Height=0
        End
    End
End
VueWebApi/grf/²úÆ·Á÷´«µ¥A5.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,450 @@
{
    "Version":"6.8.2.2",
    "Title":"你的报表标题",
    "PrintAsDesignPaper":false,
    "Font":{
        "Name":"宋体",
        "Size":105000,
        "Weight":400,
        "Charset":134
    },
    "WatermarkAlignment":"BottomRight",
    "Printer":{
        "Size":11,
        "Width":14.8,
        "Height":21,
        "Oriention":"Landscape",
        "LeftMargin":0.5,
        "TopMargin":0.4,
        "RightMargin":0.5,
        "BottomMargin":0.5
    },
    "DetailGrid":{
        "CenterView":true,
        "Border":{
            "Pen":{
                "Width":1.5
            }
        },
        "Recordset":{
            "Field":[
                {
                    "Name":"工单号",
                    "DBFieldName":"wo_code"
                },
                {
                    "Name":"产品编码",
                    "DBFieldName":"partcode"
                },
                {
                    "Name":"产品名称",
                    "DBFieldName":"partname"
                },
                {
                    "Name":"产品规格",
                    "DBFieldName":"partspec"
                },
                {
                    "Name":"工艺路线",
                    "DBFieldName":"routename"
                },
                {
                    "Name":"工单数量",
                    "DBFieldName":"orderqty"
                },
                {
                    "Name":"打印人员",
                    "DBFieldName":"lm_user"
                },
                {
                    "Name":"打印时间",
                    "DBFieldName":"lm_date"
                },
                {
                    "Name":"工序号",
                    "DBFieldName":"seq"
                },
                {
                    "Name":"工序",
                    "DBFieldName":"stepname"
                },
                {
                    "Name":"加工数量",
                    "DBFieldName":"plan_qty"
                },
                {
                    "Name":"合格数量",
                    "DBFieldName":"good_qty"
                },
                {
                    "Name":"不良数量",
                    "DBFieldName":"ng_qty"
                },
                {
                    "Name":"二维码",
                    "DBFieldName":"stepqrcode"
                }
            ]
        },
        "Column":[
            {
                "Name":"工序号",
                "Width":1.74625
            },
            {
                "Name":"Column5",
                "Width":2.98979
            },
            {
                "Name":"辅数量",
                "Width":4.60375
            },
            {
                "Name":"收料仓库",
                "Width":1.98438
            },
            {
                "Name":"批号",
                "Width":2.01083
            },
            {
                "Name":"Column2",
                "Width":2.40771
            },
            {
                "Name":"Column4",
                "Width":4.20688
            }
        ],
        "ColumnContent":{
            "Height":1.40229,
            "AdjustRowHeight":false,
            "ColumnContentCell":[
                {
                    "Column":"工序号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "TextAlign":"MiddleCenter",
                    "ShrinkFontToFit":true,
                    "DataField":"工序号"
                },
                {
                    "Column":"Column5",
                    "FreeCell":true,
                    "Control":[
                        {
                            "Type":"Barcode",
                            "Name":"Barcode2",
                            "Left":0.608542,
                            "Top":0.1,
                            "Width":1.5875,
                            "Height":1.19063,
                            "BarcodeType":"QRCode",
                            "CaptionPosition":"None",
                            "Text":"[#二维码#]"
                        }
                    ]
                },
                {
                    "Column":"辅数量",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "DataField":"工序"
                },
                {
                    "Column":"收料仓库",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "DataField":"加工数量"
                },
                {
                    "Column":"批号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "DataField":"合格数量"
                },
                {
                    "Column":"Column2",
                    "WordWrap":true,
                    "DataField":"不良数量"
                },
                {
                    "Column":"Column4",
                    "WordWrap":true
                }
            ]
        },
        "ColumnTitle":{
            "Height":0.79375,
            "RepeatStyle":"OnPage",
            "ColumnTitleCell":[
                {
                    "GroupTitle":false,
                    "Column":"工序号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"工序号"
                },
                {
                    "GroupTitle":false,
                    "Column":"Column5",
                    "TextAlign":"MiddleCenter",
                    "Text":"二维码"
                },
                {
                    "GroupTitle":false,
                    "Column":"辅数量",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"工序"
                },
                {
                    "GroupTitle":false,
                    "Column":"收料仓库",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"加工数"
                },
                {
                    "GroupTitle":false,
                    "Column":"批号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"合格数"
                },
                {
                    "GroupTitle":false,
                    "Column":"Column2",
                    "TextAlign":"MiddleCenter",
                    "Text":"不良数量"
                },
                {
                    "GroupTitle":false,
                    "Column":"Column4",
                    "TextAlign":"MiddleCenter",
                    "Text":"备注"
                }
            ]
        }
    },
    "Parameter":[
        {
            "Name":"Parameter1"
        },
        {
            "Name":"Parameter2"
        }
    ],
    "ReportHeader":[
        {
            "Name":"ReportHeader1",
            "Height":3.41313,
            "Control":[
                {
                    "Type":"FreeGrid",
                    "Name":"FreeGrid1",
                    "Dock":"Fill",
                    "Border":{
                        "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]",
                        "Pen":{
                            "Color":"FFFFFF"
                        }
                    },
                    "ColLine":{
                        "Color":"FFFFFF"
                    },
                    "RowLine":{
                        "Color":"FFFFFF"
                    },
                    "FreeGridColumn":[
                        {
                            "index":1,
                            "Width":1.87854
                        },
                        {
                            "index":2,
                            "Width":5.97958
                        },
                        {
                            "index":3,
                            "Width":1.82563
                        },
                        {
                            "index":4,
                            "Width":6.21771
                        },
                        {
                            "index":5,
                            "Width":4.10104
                        }
                    ],
                    "FreeGridRow":[
                        {
                            "index":1,
                            "Height":0.79375
                        },
                        {
                            "index":5,
                            "Height":0.687917
                        }
                    ],
                    "FreeGridCell":[
                        {
                            "row":1,
                            "col":1,
                            "Font":{
                                "Name":"宋体",
                                "Size":142500,
                                "Bold":true,
                                "Charset":134
                            },
                            "TextAlign":"MiddleCenter",
                            "Text":"流程单",
                            "ColSpan":5
                        },
                        {
                            "row":2,
                            "col":1,
                            "Text":"工单号:"
                        },
                        {
                            "row":2,
                            "col":2,
                            "Text":"[#工单号#]"
                        },
                        {
                            "row":2,
                            "col":3,
                            "Text":"产品编码:"
                        },
                        {
                            "row":2,
                            "col":4,
                            "Text":"[#产品编码#]"
                        },
                        {
                            "row":2,
                            "col":5,
                            "FreeCell":true,
                            "Control":[
                                {
                                    "Type":"Barcode",
                                    "Name":"Barcode1",
                                    "Dock":"Right",
                                    "Center":"Both",
                                    "Left":1.29646,
                                    "Width":2.77813,
                                    "BarcodeType":"QRCode",
                                    "CaptionPosition":"None",
                                    "Text":"[#工单号#]"
                                }
                            ],
                            "RowSpan":4
                        },
                        {
                            "row":3,
                            "col":1,
                            "Text":"产品名称:"
                        },
                        {
                            "row":3,
                            "col":2,
                            "Text":"[#产品名称#]"
                        },
                        {
                            "row":3,
                            "col":3,
                            "Text":"产品规格:"
                        },
                        {
                            "row":3,
                            "col":4,
                            "Text":"[#产品规格#]"
                        },
                        {
                            "row":4,
                            "col":1,
                            "Text":"工单数量:"
                        },
                        {
                            "row":4,
                            "col":2,
                            "Text":"[#工单数量#]"
                        },
                        {
                            "row":4,
                            "col":3,
                            "Text":"工艺路线:"
                        },
                        {
                            "row":4,
                            "col":4,
                            "Text":"[#工艺路线#]"
                        },
                        {
                            "row":5,
                            "col":1,
                            "Text":"打印人员:"
                        },
                        {
                            "row":5,
                            "col":2,
                            "Text":"[#打印人员#]"
                        },
                        {
                            "row":5,
                            "col":3,
                            "Text":"打印时间:"
                        },
                        {
                            "row":5,
                            "col":4,
                            "Text":"[#打印时间#]"
                        }
                    ]
                }
            ],
            "RepeatOnPage":true
        }
    ]
}
VueWebApi/grf/±¨¹¤²ú³ö±êÇ©.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
{
    "Version":"6.8.2.2",
    "Title":"你的报表标题",
    "PrintAsDesignPaper":false,
    "Font":{
        "Name":"宋体",
        "Size":52500,
        "Weight":400,
        "Charset":134
    },
    "WatermarkAlignment":"BottomRight",
    "Printer":{
        "Size":256,
        "Width":4,
        "Height":7.5,
        "Oriention":"Landscape",
        "LeftMargin":0.1,
        "TopMargin":0,
        "RightMargin":0.1,
        "BottomMargin":0
    },
    "DetailGrid":{
        "CenterView":true,
        "Border":{
            "Pen":{
                "Width":1.5
            }
        },
        "Recordset":{
            "Field":[
                {
                    "Name":"工单编号",
                    "DBFieldName":"wo_code"
                },
                {
                    "Name":"产品编码",
                    "DBFieldName":"partcode"
                },
                {
                    "Name":"产品名称",
                    "DBFieldName":"partname"
                },
                {
                    "Name":"下道工序",
                    "DBFieldName":"next_stepname"
                },
                {
                    "Name":"数量",
                    "DBFieldName":"qty"
                },
                {
                    "Name":"二维码",
                    "DBFieldName":"qrcode"
                }
            ]
        },
        "ColumnContent":{
            "Height":0,
            "AdjustRowHeight":false
        },
        "ColumnTitle":{
            "Height":0,
            "RepeatStyle":"OnPage"
        }
    },
    "Parameter":[
        {
            "Name":"Parameter1"
        },
        {
            "Name":"Parameter2"
        }
    ],
    "ReportHeader":[
        {
            "Name":"ReportHeader1",
            "Height":3.20146,
            "Control":[
                {
                    "Type":"Line",
                    "Name":"Line1",
                    "Left":0.211667,
                    "Top":0.105833,
                    "Width":6.91333
                },
                {
                    "Type":"Line",
                    "Name":"Line2",
                    "Left":0.21,
                    "Top":3.09563,
                    "Width":6.90729
                },
                {
                    "Type":"Line",
                    "Name":"Line3",
                    "Left":0.2,
                    "Top":0.105833,
                    "Height":2.99
                },
                {
                    "Type":"Line",
                    "Name":"Line4",
                    "Left":7.1,
                    "Top":0.105833,
                    "Height":2.98979
                },
                {
                    "Type":"Line",
                    "Name":"Line5",
                    "Left":2.40771,
                    "Top":0.105833,
                    "Height":2.98979
                },
                {
                    "Type":"Barcode",
                    "Name":"Barcode1",
                    "Left":0.423333,
                    "Top":0.291042,
                    "Width":1.82563,
                    "Height":1.66688,
                    "BarcodeType":"QRCode",
                    "CaptionPosition":"None",
                    "Text":"[#二维码#]"
                },
                {
                    "Type":"Line",
                    "Name":"Line6",
                    "Left":2.40771,
                    "Top":0.873125,
                    "Width":4.68229
                },
                {
                    "Type":"Line",
                    "Name":"Line7",
                    "Left":2.40771,
                    "Top":1.64042,
                    "Width":4.68229
                },
                {
                    "Type":"Line",
                    "Name":"Line8",
                    "Left":0.21,
                    "Top":2.38125,
                    "Width":6.88
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox1",
                    "Left":0.396875,
                    "Top":2.51354,
                    "Width":1.00542,
                    "Height":0.423333,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"数量:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox1",
                    "Left":1.34938,
                    "Top":2.51354,
                    "Width":0.978958,
                    "Height":0.4,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#数量#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox2",
                    "Left":2.51,
                    "Top":0.185208,
                    "Width":1.69333,
                    "Height":0.635,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"工单编号:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox2",
                    "Left":4.20688,
                    "Top":0.185208,
                    "Width":2.75,
                    "Height":0.66,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#工单编号#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox3",
                    "Left":2.51,
                    "Top":0.9525,
                    "Width":1.69333,
                    "Height":0.635,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"产品编码:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox3",
                    "Left":4.23333,
                    "Top":0.9525,
                    "Width":2.75,
                    "Height":0.66,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#产品编码#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox4",
                    "Left":2.54,
                    "Top":1.71979,
                    "Width":1.69,
                    "Height":0.58,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"产品名称:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox4",
                    "Left":4.25979,
                    "Top":1.71979,
                    "Width":2.75167,
                    "Height":0.582083,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#产品名称#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox5",
                    "Left":2.56646,
                    "Top":2.48708,
                    "Width":1.69333,
                    "Height":0.529167,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"下道工序:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox5",
                    "Left":4.28625,
                    "Top":2.48708,
                    "Width":2.75,
                    "Height":0.53,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#下道工序#]"
                }
            ],
            "RepeatOnPage":true
        }
    ]
}
VueWebApi/grf/±¨¹¤´òÓ¡±êÇ©.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
{
    "Version":"6.8.2.2",
    "Title":"生产任务单",
    "PrintAsDesignPaper":false,
    "Font":{
        "Name":"宋体",
        "Size":135000,
        "Weight":400,
        "Charset":134
    },
    "Printer":{
        "Size":256,
        "Width":10,
        "Height":5,
        "LeftMargin":0,
        "TopMargin":0,
        "RightMargin":0,
        "BottomMargin":0
    },
    "DetailGrid":{
        "CenterView":true,
        "ShowColLine":false,
        "ShowRowLine":false,
        "Border":{
            "Styles":"[]"
        },
        "Recordset":{
            "Field":[
                {
                    "Name":"工单编号",
                    "DBFieldName":"wo_code"
                },
                {
                    "Name":"产品编码",
                    "DBFieldName":"partcode"
                },
                {
                    "Name":"产品名称",
                    "DBFieldName":"partname"
                },
                {
                    "Name":"下道工序",
                    "DBFieldName":"next_stepname"
                },
                {
                    "Name":"数量",
                    "DBFieldName":"qty"
                },
                {
                    "Name":"二维码",
                    "DBFieldName":"qrcode"
                }
            ]
        },
        "Column":[
            {
                "Name":"Column3",
                "Width":10.0013
            }
        ],
        "ColumnContent":{
            "Height":5.00063,
            "RowsPerPage":1,
            "ColumnContentCell":[
                {
                    "Column":"Column3",
                    "FreeCell":true,
                    "Control":[
                        {
                            "Type":"FreeGrid",
                            "Name":"FreeGrid1",
                            "Left":0.211667,
                            "Top":0.211667,
                            "Border":{
                                "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]"
                            },
                            "ColumnCount":3,
                            "RowCount":4,
                            "FreeGridColumn":[
                                {
                                    "index":3,
                                    "Width":3.51896
                                }
                            ],
                            "FreeGridRow":[
                                {
                                    "index":1,
                                    "Height":1.19063
                                },
                                {
                                    "index":2,
                                    "Height":1.19063
                                },
                                {
                                    "index":3,
                                    "Height":1.03188
                                },
                                {
                                    "index":4,
                                    "Height":1.08479
                                }
                            ],
                            "FreeGridCell":[
                                {
                                    "row":1,
                                    "col":1,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"Barcode",
                                            "Name":"Barcode1",
                                            "Left":0.079375,
                                            "Top":0.132292,
                                            "Width":2.75167,
                                            "Height":3.04271,
                                            "BarcodeType":"QRCode",
                                            "CaptionPosition":"None",
                                            "Text":"[#二维码#]"
                                        }
                                    ],
                                    "RowSpan":3
                                },
                                {
                                    "row":1,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox3",
                                            "Left":0.079375,
                                            "Top":0.238125,
                                            "Width":1.71979,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"工单编号:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox2",
                                            "Left":1.79917,
                                            "Top":0.238125,
                                            "Width":4.39208,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "WordWrap":true,
                                            "DataField":"数量"
                                        }
                                    ],
                                    "ColSpan":2
                                },
                                {
                                    "row":2,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox4",
                                            "Left":0.08,
                                            "Top":0.24,
                                            "Width":1.7198,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"产品编码:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox3",
                                            "Left":1.79917,
                                            "Top":0.211667,
                                            "Width":4.3291,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"产品编码"
                                        }
                                    ],
                                    "ColSpan":2
                                },
                                {
                                    "row":3,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox5",
                                            "Left":0.08,
                                            "Top":0.24,
                                            "Width":1.7198,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"产品名称:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox4",
                                            "Left":1.79917,
                                            "Top":0.211667,
                                            "Width":4.3291,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"产品名称"
                                        }
                                    ],
                                    "ColSpan":2
                                },
                                {
                                    "row":4,
                                    "col":1,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox1",
                                            "Top":0.211667,
                                            "Width":1.19063,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"数量:"
                                        },
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox2",
                                            "Left":0.238125,
                                            "Top":3.65125,
                                            "Width":1.19063,
                                            "Height":0.608542,
                                            "Text":"数量:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox1",
                                            "Left":1.19063,
                                            "Top":0.211667,
                                            "Width":1.5875,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"数量"
                                        }
                                    ]
                                },
                                {
                                    "row":4,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox6",
                                            "Left":0.08,
                                            "Top":0.24,
                                            "Width":1.7198,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"下道工序:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox5",
                                            "Left":1.79917,
                                            "Top":0.211667,
                                            "Width":4.3291,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"下道工序"
                                        }
                                    ],
                                    "ColSpan":2
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        "ColumnTitle":{
            "Height":0,
            "ColumnTitleCell":[
                {
                    "GroupTitle":false,
                    "Column":"Column3",
                    "Text":"Column1"
                }
            ]
        }
    },
    "ReportHeader":[
        {
            "Name":"ReportHeader1",
            "Height":0,
            "RepeatOnPage":true
        }
    ],
    "ReportFooter":[
        {
            "Name":"ReportFooter1",
            "Height":0
        }
    ]
}
VueWebApi/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Binary files differ
VueWebApi/obj/Debug/VueWebApi.csproj.AssemblyReference.cache
Binary files differ
VueWebApi/obj/Debug/VueWebApi.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
9eca3a694af2cbf87424cd7c2924c1c66317385c
24cdde91ac8c6d255eb178d7de969e3b6dcc461c
VueWebApi/obj/Debug/VueWebApi.csproj.FileListAbsolute.txt
@@ -54,6 +54,8 @@
D:\新凯迪MES\VueWebApi\VueWebApi\bin\Antlr3.Runtime.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\BouncyCastle.Crypto.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\Dapper.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Web.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\ICSharpCode.SharpZipLib.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\JWT.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\log4net.dll
@@ -96,8 +98,12 @@
D:\新凯迪MES\VueWebApi\VueWebApi\bin\System.Web.WebPages.Razor.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\WebActivatorEx.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\WebGrease.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Bars.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Editor.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\BouncyCastle.Crypto.xml
D:\新凯迪MES\VueWebApi\VueWebApi\bin\Dapper.xml
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.xml
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Web.xml
D:\新凯迪MES\VueWebApi\VueWebApi\bin\ICSharpCode.SharpZipLib.pdb
D:\新凯迪MES\VueWebApi\VueWebApi\bin\ICSharpCode.SharpZipLib.xml
D:\新凯迪MES\VueWebApi\VueWebApi\bin\JWT.pdb
@@ -153,3 +159,4 @@
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Debug\VueWebApi.csproj.CopyComplete
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Debug\VueWebApi.dll
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Debug\VueWebApi.pdb
D:\新凯迪MES\VueWebApi\VueWebApi\obj\Debug\VueWebApi.csproj.AssemblyReference.cache
VueWebApi/obj/Debug/VueWebApi.pdb
Binary files differ
VueWebApi/obj/Release/Package/PackageTmp/Grid/grwebapp.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,499 @@
//变量 _grwebapp_url æŒ‡å®šWEB报表客户端安装程序的下载URL,当通过WebSocket通讯不成功时,提示用户用此URL下载程序进行安装。
//或用于自动更新WEB报表客户端时下载新版本,开发者应将 _grwebapp_url æ”¹ä¸ºè‡ªå·±æœåŠ¡å™¨çš„URL,方便用户从可访问的WEB服务器下载
//变量 _grwebapp_version æŒ‡å®šè‡ªåŠ¨æ›´æ–°æ—¶ï¼Œå®¢æˆ·ç«¯ç¨‹åºéœ€è¦çš„ç‰ˆæœ¬å·ï¼Œå¦‚æžœå°äºŽæ­¤ç‰ˆæœ¬å·ï¼Œåˆ™è‡ªåŠ¨è¿›è¡Œæ›´æ–°
var _grwebapp_websocket = null,
    _grwebapp_url = "http://www.rubylong.cn/download/gridreport6-webapp.exe",
    _grwebapp_version = "6.8.2.0",
    webapp_onmessage ; //如果需要响应执行任务后的消息响应,应该写一个名称为 webapp_onmessage çš„ function
function webapp_url_method_valid(url, method) {
    if (!method) {
        if (typeof url == "object") {
            method = url.method;
            url = url.url;
        }
        if (!method) {
            method = /.grf|.txt|.xml|.json/.test(url) ? "GET" : "POST";
        }
    }
    return method;
}
//此函数用于判断一个变量是否为URL字符串,如果类型为字符串且首个非空白字符不为“<”与“{”即判定为URL
//如果参数是一个object对象,且其具有“url”属性,则其是HTTPParam对象,是一个url参数
var webapp_is_url = function (p) {
    var index = 0,
        len = p.length,
        ch;
    //对象如果有url属性,判定为url
    if (typeof p == "object") {
        return !!p.url;
    }
    if (typeof p != "string") {
        return 0;
    }
    //首先找到第一个非空白字符
    while (index < len) {
        ch = p[index];
        if (!/\s/g.test(ch))
            break;
        index++;
    }
    //如果不是xml或json文本串,则判定为url
    return (ch != "{") && (ch != "<") && (p.substr(index, 4) != "_WR_");
};
function webapp_ajax(method, url, callback, cbthis, params) {
    var xmlhttp = new XMLHttpRequest(),
        headers;
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status > 0) {
            callback.call(cbthis, xmlhttp, xmlhttp.status == 200);
        }
    }
    xmlhttp.onerror = function () {
        callback.call(cbthis, xmlhttp, 0);
    }
    if (typeof url == "object") {
        headers = url.headers;
        if (typeof headers == "string") {
            headers = JSON.parse(headers)
        }
        if (!method) {
            method = url.method;
        }
        if (!params) {
            params = url.data;
        }
        url = url.url;
    }
    xmlhttp.open(webapp_url_method_valid(url, method), url, true); //异步请求数据
    if (headers && typeof headers == "object") {
        for (var key in headers) {
            xmlhttp.setRequestHeader(key, headers[key]);
        }
    }
    xmlhttp.send(params);  //POST æˆ– PUT å¯ä»¥ä¼ é€’参数
}
/////////////////////////////////////////////////////////////////////////////
//创建启动WEB报表客户端的URL协议参数
function _gr_up_href(args) {
    return "grwebapp://" + (args ? JSON.stringify(args) : "");
}
//通过URL协议启动WEB报表客户端程序
//参数 appUpdate æŒ‡å®šæ˜¯å¦è‡ªåŠ¨æ›´æ–°WEB报表客户端程序,根据_grwebapp_version与已经安装的程序版本进行比较,按需进行自动升级
function webapp_urlprotocol_startup(appUpdate) {
    var arg = appUpdate ? {
        type: "update",
        url: _grwebapp_url,
        ver: _grwebapp_version
    } : 0;
    window.location.href = _gr_up_href(arg);
}
//如果WEB报表客户端程序未运行,先通过URL协议启动WEB报表客户端程序
//通知WEB报表客户端程序根据模板与数据的URL,以及生成类型等相关参数进行报表生成,
function webapp_urlprotocol_run(args, report_url, data_url) {
    if (report_url) {
        args.report = report_url;
    }
    if (data_url) {
        args.data = data_url;
    }
    window.location.href = _gr_up_href(args);
}
/////////////////////////////////////////////////////////////////////////////
//检查WebSocket是否已经创建并通讯连接成功
function webapp_ws_check(slience) {
    if (!slience) {
        if (!_grwebapp_websocket) {
            alert("WebSocket没有创建,无法发送数据!");
        }
        else if (_grwebapp_websocket.readyState != 1) {
            alert("WebSocket正在连接中,暂不能发送数据!");
        }
    }
    return _grwebapp_websocket && (_grwebapp_websocket.readyState === 1);
}
//创建并通讯连接WebSocket
function webapp_ws_create(onopen) {
    //如果已经创建,且连接正常,则不要再次创建
    if (_grwebapp_websocket && _grwebapp_websocket.readyState === 1) {
        return;
    }
    //判断当前浏览器是否支持WebSocket
    if ('WebSocket' in window) {
        _grwebapp_websocket = new WebSocket("ws://127.0.0.1:22333");
        //连接成功建立的回调方法
        if (onopen) {
            _grwebapp_websocket.onopen = function () {
                //alert("_grwebapp_websocket.onopen");
                onopen();
            }
        }
        debugger;
        //接收到消息的回调方法
        if (window.webapp_onmessage) {
            _grwebapp_websocket.onmessage = function (event) {
                window.webapp_onmessage(event);
            }
        }
        _grwebapp_websocket.onerror = function () {
            var children = document.body.children,
                childrenLen = children.length,
                referNode = childrenLen ? children[0] : null,
                newNode = document.createElement("h3");
            _grwebapp_websocket = null;
            //弹出alert提示信息,可修改为更适合的表述
            //alert("创建WebSocket失败,可能是‘WEB报表客户端程序’在本机没有安装,或在报表网页加载时没有调用‘webapp_urlprotocol_startup’函数进行启动。");
            alert("创建WebSocket失败,可能是WEB报表客户端程序没有启动,或其在本机没有安装,请根据网页顶部的提示进行相应的操作。");
            //在网页最前面加上提示下载的文字,可修改为更适合的表述与界面形式
            //newNode.innerHTML = '特别提示:<a href="' + _grwebapp_url + '">点击下载WEB报表客户端程序</a>,下载后双击下载的文件进行安装,安装完成后重新打开当前网页。';
            newNode.innerHTML = '特别提示:尝试<a href="javascript:webapp_urlprotocol_startup();">启动WEB报表客户端程序</a>。或<a href="' + _grwebapp_url + '">点击下载WEB报表客户端程序</a>,下载后双击下载的文件进行安装,安装完成后重新打开当前网页。';
            document.body.insertBefore(newNode, referNode);
        };
        //连接关闭的回调方法
        _grwebapp_websocket.onclose = function () {
            _grwebapp_websocket = null;
        }
        //感觉这部分可以不要
        //监听窗口关闭事件,当窗口关闭时,主动去关闭_grwebapp_websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
        //window.onbeforeunload = function () {
        //    if (_grwebapp_websocket) {
        //        _grwebapp_websocket.close();
        //    }
        //}
    }
    else {
        alert('当前浏览器不支持HTML5的WebSocket,请选用更新版本的浏览器!')
    }
}
function webapp_build_one(pack, report, report_method, data, data_method, callback_fun, dataParams) {
    if (!report) {
        alert("在参数中没有定义报表模板的url,报表不能生成!");
        return;
    }
    if (data) {
        if (webapp_is_url(data)) {
            webapp_ajax(data_method, data, function (xmlhttp, success) {
                if (success) {
                    pack.data = xmlhttp.responseText;
                    callback_fun();
                }
                else {
                    //alert("载入报表数据失败,响应消息:" + xmlhttp.responseText);
                    window.open(data, "blank");
                }
            }, undefined, dataParams);
        }
        else {
            pack.data = (typeof data == "object") ? JSON.stringify(data) : data;
            callback_fun();
        }
    }
    else {
        pack.data = "";
    }
    if (webapp_is_url(report)) {
        webapp_ajax(report_method, report, function (xmlhttp, success) {
            if (success) {
                pack.report = xmlhttp.responseText;
                callback_fun();
            }
            else {
                //alert("载入报表模板失败,响应消息:" + xmlhttp.responseText);
                window.open(report, "blank");
            }
        });
    }
    else {
        pack.report = (typeof report == "object") ? JSON.stringify(report) : report;
        callback_fun();
    }
}
//将参数通过WebSocket发送给WEB报表客户端,WEB报表客户端执行对应的任务
//参数说明:
//args:
//  æŠ¥è¡¨ç”Ÿæˆç›¸å…³çš„参数,为一个结构体对象或结构体对象数组。
//  å½“参数为数组时,表示是执行批量任务。此时后面的 report ä¸Ž data å‚数不会被用到。
//  ç»“构体对象的各个数据项说明请参考帮助中“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
//report:
//  æŠ¥è¡¨æ¨¡æ¿æ–‡æœ¬ï¼ŒæŠ¥è¡¨å®šä¹‰æ ¼å¼å¿…须为JSON格式。此参数可空,为空表示执行非报表生成任务,或WEB报表客户端通过URL获取报表模板。
//data:
//  æŠ¥è¡¨æ•°æ®æ–‡æœ¬ï¼Œæ­¤å‚数可空,报表无需提供数据,或WEB报表客户端通过URL获取报表数据。
//
//  æŠ¥è¡¨æ•°æ®å¯¹åº”çš„ XML æˆ– JSON æ–‡æœ¬ï¼Œè¯·å‚考帮助“WEB报表(B/S报表)->WEB报表数据”中的说明。
function webapp_ws_run(variant_args, report, data) {
    function run_one(args, reportText, dataText) {
        var msg;
        if (webapp_ws_check()) {
            if (typeof args === "string") {
                args = {
                    type: args
                };
            }
            msg = JSON.stringify(args);
            if (reportText) {
                if (reportText.substr(0, 4) === "_WR_") {
                    msg += reportText.length;
                }
                msg += reportText;
                if (dataText) {
                    msg += dataText;
                }
            }
            _grwebapp_websocket.send(msg);
        }
    } //end of run_one
    if (!webapp_ws_check(1)) {
        //如果WebSocket没有连接,则首先创建并连接WebSocket,并在onopen事件中执行相关的任务
        webapp_ws_create(function () {
            webapp_ws_run(variant_args, report, data);
        });
        return;
    }
    if (Array.isArray(variant_args)) {
        variant_args.forEach(function (args) {
            run_one(args);
        })
    }
    else {
        run_one(variant_args, report, data);
    }
}
//通过 ajax æ–¹å¼èŽ·å–æŠ¥è¡¨æ¨¡æ¿ä¸ŽæŠ¥è¡¨æ•°æ®ï¼Œç„¶åŽé€šè¿‡ WebSocket å‘送相关数据给WEB报表客户端并生成报表
//参数既可以是单个结构体对象,也可以是结构体对象数组。如果是数组,表示成批生成多个报表。
//结构体对象的各个数据项说明请参考帮助中“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分。
function webapp_ws_ajax_run(variant_args) {
    function run_one(args) {
        var report = args.report,
        data = args.data,
        report_method = args.report_method,
        data_method = args.data_method,
        dataUrlParams = args.dataUrlParams,
        pack = {};
        function run() {
            //只有当report与data都赋值之后才运行,即向WEB报表客户端程序发送数据
            if (pack.report && pack.data !== undefined) {
                webapp_ws_run(args, pack.report, pack.data);
            }
        }
        //因为args需要传递给WEBAPP,report与data的url相关的参数不需要传递,所以将其删除掉
        delete args.report;
        delete args.data;
        delete args.report_method;
        delete args.data_method;
        delete args.dataUrlParams;
        webapp_build_one(pack, report, report_method, data, data_method, run, dataUrlParams);
    } //end of run_one
    if (!webapp_ws_check(1)) {
        //如果WebSocket没有连接,则首先创建并连接WebSocket,并在onopen事件中执行相关的任务
        webapp_ws_create(function () {
            webapp_ws_ajax_run(variant_args);
        });
        return;
    }
    if (Array.isArray(variant_args)) {
        variant_args.forEach(function (args) {
            run_one(args);
        });
    }
    else {
        run_one(variant_args);
    }
}
//通过 ajax æ–¹å¼èŽ·å–å¤šä¸ªæŠ¥è¡¨çš„æ¨¡æ¿ä¸Žæ•°æ®ï¼Œç„¶åŽç”¨ WebSocket å°†æ•°æ®ä¸€æ¬¡æ€§å‘送给WEB报表客户端程序。
//实现多个报表同时生成在一个任务中(应用Grid++Report的独立子报表功能实现),达到多个报表同时预览、打印与数据导出
function webapp_ws_ajax_together(args, reports) {
    var reportCount = reports.length,
        reportPacks = [],
        gettedCount = 0; //指示已经获取到数据的报表个数
    function ajaxRequestOne(arg, index) {
        var report = arg.report,
        data = arg.data,
        report_method = arg.report_method,
        data_method = arg.data_method,
        dataUrlParams = arg.dataUrlParams,
        pack = reportPacks[index];
        function try_ws_send() {
            var msg,
                dataMsg = "",
                lengths = [];
            if (pack.report && pack.data !== undefined) {
                if (++gettedCount >= reportCount) { //只有当全部报表的模板与数据都已经获取到之后,才会向WEB报表客户端发送数据
                    msg = JSON.stringify(args);
                    reportPacks.forEach(function (item) {
                        var report = item.report,
                            data = item.data,
                            reportLen = report.length,
                            reportLenText = "";
                        if (report.substr(0, 4) === "_WR_") {
                            reportLenText += reportLen;
                            dataMsg += reportLenText;
                            reportLen += reportLenText.length;
                        }
                        dataMsg += report;
                        if (data) {
                            dataMsg += data;
                        }
                        lengths.push(reportLen + data.length);
                    });
                    msg += JSON.stringify(lengths);
                    msg += dataMsg;
                    _grwebapp_websocket.send(msg);
                }
            }
        }
        webapp_build_one(pack, report, report_method, data, data_method, try_ws_send, dataUrlParams);
    } //end of ajaxRequestOne
    if (!webapp_ws_check(1)) {
        //如果WebSocket没有连接,则首先创建并连接WebSocket,并在onopen事件中执行相关的任务
        webapp_ws_create(function () {
            webapp_ws_ajax_together(args, reports);
        });
        return;
    }
    reports.forEach(function (report, index) {
        reportPacks.push({});
        ajaxRequestOne(report, index);
    });
}
/////////////////////////////////////////////////////////////////////////////
//通过WebSocket向WEB报表客户端发送枚举出当前电脑的所有打印机信息的指令
//在网页的 webapp_onmessage å‡½æ•°ä¸­æŽ¥æ”¶WEB报表客户端返回的结果,具体请参考例子。
function webapp_ws_fun_Printers() {
    webapp_ws_run({
        type: "fun",
        fun: "Printers"
    });
}
//通过WebSocket向WEB报表客户端发送枚举出当前电脑的指定打印机的全部可用纸张的指令
//在网页的 webapp_onmessage å‡½æ•°ä¸­æŽ¥æ”¶WEB报表客户端返回的结果,具体请参考例子
function webapp_ws_fun_PrinterPapers(printer) {
    webapp_ws_run({
        type: "fun",
        fun: "PrinterPapers",
        printer: printer
    });
}
//通过WebSocket向WEB报表客户端发送停止当前报表预览并关闭预览窗口的指令
function webapp_ws_fun_StopPreview() {
    webapp_ws_run({
        type: "fun",
        fun: "StopPreview"
    });
}
/////////////////////////////////////////////////////////////////////////////
//通过WebSocket向WEB报表客户端发送消息进行自动更新检查处理
function webapp_ws_autoupdate() {
    webapp_ws_run({
        type: "update",
        url: _grwebapp_url,
        ver: _grwebapp_version
    });
}
/////////////////////////////////////////////////////////////////////////////
//为URL追加一个名为id的随机数参数,用于防止浏览器缓存。
//报表模板重新设计后,因为浏览器缓存而让报表生成不能反映出新修改的设计结果,URL后追加一个随机数参数可以避免这样的问题
//参数url必须是静态的URL,其后本身无任何参数
//如果模板几乎不怎么修改,可以去掉对本函数的调用
function urlAddRandomNo(url) {
    return url + "?id=" + Math.floor(Math.random() * 10000);
}
//根据当前网页URL获取到当前WEB服务器的根URL,并记录在 window.rootURL ä¸­
function gr_extractRootURL() {
    var path = window.location.pathname,
        index = path.lastIndexOf("/");
    window.rootURL = window.location.protocol + "//" + window.location.host;
    if (index >= 0) {
        path = path.substr(0, index);
        //demmo的根目录在当前页面的1级目录之上
        index = path.lastIndexOf("/");
        if (index >= 0) {
            path = path.substr(0, index);
        }
        window.rootURL += path;
    }
    window.rootURL += "/";
}
//vue中使用将下列注释开放
//export {
//    webapp_url_method_valid,
//    webapp_urlprotocol_startup,
//    webapp_ajax,
//    webapp_ws_ajax_run,
//    webapp_urlprotocol_run,
//    urlAddRandomNo,
//    webapp_onmessage,
//    webapp_ws_fun_StopPreview,
//    webapp_ws_fun_PrinterPapers,
//    webapp_ws_fun_Printers,
//    webapp_ws_ajax_together,
//    webapp_ws_autoupdate,
//    gr_extractRootURL
//}
VueWebApi/obj/Release/Package/PackageTmp/Grid/webapp-ws-tutorial.htm
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,257 @@
<!DOCTYPE html>
<html>
<head>
    <title>WEB报表客户端使用教程(WebSocket) - é”æµªWEB报表</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="Description" content="锐浪HTML5报表应用WEB报表客户端实现打印与数据导出。" />
    <meta name="Keywords" content="WEB报表,WEB打印,HTML5报表,WEB报表客户端" />
    <script src="grwebapp.js"></script>
    <script language="javascript" type="text/javascript">
        function window_onload() {
            //*这句特别重要*:只有在WEB报表客户端程序后,才能进行WebSocket通讯
            //如果WEB报表客户端程序为开机自启动,以下调用应该去掉。更多说明请参考帮助“WEB报表(B/S报表)->WEB报表客户端->部署与安装”部分中与谷歌Chrome浏览器的相关说明
            webapp_urlprotocol_startup(); //启动WEB报表客户端程序,以便侦听接受 WebSocket æ•°æ®
        }
        //消息响应函数,接受WEB报表客户端执行完打印与数据导出等任务回发的消息
        //如果不要响应任务执行完消息,此函数可以不用定义,直接去掉即可。
        function webapp_onmessage(event) {
            var message = JSON.parse(event.data);
            //在向打印机发送完打印数据后响应的消息,在函数体中完成自己的任务
            function OnPrintEnd() {
                var msg = "报表已经打印,输出打印机:" + message.PrinterName;
                if (message.reportid) {
                    msg += "\r\nreportid = " + message.reportid;
                }
                alert(msg);
            }
            //在执行了数据导出任务后响应的消息,在函数体中完成自己的任务
            function OnExportEnd() {
                var msg = "数据导出已经完成,导出文件:" + message.FileName;
                if (message.reportid) {
                    msg += "\r\nreportid = " + message.reportid;
                }
                alert(msg);
            }
            //alert(event.data);
            if (message.event == "PrintEnd") {
                OnPrintEnd();
            }
            else if (message.event == "ExportEnd") {
                OnExportEnd();
            }
        }
    </script>
</head>
<body onload="window_onload()">
    <h1>锐浪WEB报表客户端使用教程</h1>
    <h3><a href="webapp-overview.htm">关于锐浪WEB报表客户端</a></h3>
    <h3>特别提示:以下链接点击无响应,请下载安装<a href="webapp-download.htm">WEB报表客户端</a></h3>
    <h3>起步例子</h3>
    <p><a href='javascript:ws_ajax_preview();'>打印预览(AJAX)</a>通过AJAX方式获取报表模板与报表数据</p>
    <script language="javascript" type="text/javascript">
        function ws_ajax_preview() {
            //参数具体说明请参考帮助文档中的“WEB报表(B/S报表)->WEB报表客户端->启动参数说明”部分
            var args = {
                /*report: urlAddRandomNo("../grf/产品流传单A5.grf"),*/
                report: urlAddRandomNo("https://121.196.36.24:8001/grf/产品流传单A5.grf"),
                data:
                {
                    "recordset": [
                        {
                            "seq": "1",
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "partspec": "φ20",
                            "routename": "测试工艺路线1",
                            "orderqty": 166,
                            "lm_user": "Admin",
                            "lm_date": "2022-06-30",
                            "stepcode": "Step01",
                            "stepname": "测试工序一",
                            "plan_qty1": 166,
                            "good_qty": 0,
                            "ng_qty": 0,
                            "stepqrcode":"PO202206280001_1;Step01"
                        },
                        {
                            "seq": "2",
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "partspec": "φ20",
                            "routename": "测试工艺路线1",
                            "orderqty": 166,
                            "lm_user": "Admin",
                            "lm_date": "2022-06-30",
                            "stepcode": "Step02",
                            "stepname": "测试工序二",
                            "plan_qty1": 166,
                            "good_qty": 0,
                            "ng_qty": 0,
                            "stepqrcode": "PO202206280001_1;Step02"
                        }
                    ]
                },
                //data: "../data/DataCenter.ashx?data=Customer",
                //dataUrlParams: "如果data参数为URL,且其需要额外的参数数据,则定义在此参数中", //例子演示不需要,所以注释掉
                type: "preview",
            };
            webapp_ws_ajax_run(args);
        }
    </script>
    <p> <a href='javascript:ws_ajax_print();'>打印(AJAX)</a>通过AJAX方式获取报表模板与报表数据</p>
    <script language="javascript" type="text/javascript">
        function ws_ajax_print() {
            var args = {
                type: "preview",//print
                //showOptionDlg: true, //如果不显示打印对话框而直接打印,将此行注释去掉即可
                report: urlAddRandomNo("../grf/报工产出标签.grf"),
                //data: "../data/DataCenter.ashx?data=Customer"
                data:
                {
                    "recordset": [
                        {
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "qty": "100",
                            "next_stepname": "测试工序2",
                            "qrcode": "PO202206280001_1;Step02"
                        },
                        {
                            "wo_code": "PO202206280001_1",
                            "partcode": "1403-001-0001",
                            "partname": "圆钢F45MnVSφ20",
                            "qty": "100",
                            "next_stepname": "测试工序2",
                            "qrcode": "PO202206280001_1;Step02"
                        }
                    ]
                }
            };
            webapp_ws_ajax_run(args);
        }
    </script>
    <p><a href='javascript:ws_ajax_export_xls();'>导出Excel(AJAX)</a>通过AJAX方式获取报表模板与报表数据</p>
    <script language="javascript" type="text/javascript">
        function ws_ajax_export_xls() {
            var args = {
                type: "xls",
                report: urlAddRandomNo("../grf/1a.grf"),
                data: "../data/DataCenter.ashx?data=Customer",
                reportid: "1a" //这个参数不是必须的,只是用于回发消息标识报表身份
            };
            webapp_ws_ajax_run(args);
        }
    </script>
    <h3>自定义打印参数</h3>
    <p> <a href='javascript:print_arguments();'>自定义打印参数</a>:指定打印机,设置逐份打印与打印份数。</p>
    <script language="javascript" type="text/javascript">
        function print_arguments() {
            var args = {
                type: "print",   //如果是要进行打印,将 type è®¾ç½®ä¸º print
                report: urlAddRandomNo("../grf/1a.grf"),
                data: "../data/DataCenter.ashx?data=Customer",
                PrinterName: "Microsoft Print to PDF", //指定要输出的打印机名称
                Collate: false,  //不按逐份方式打印
                Copies: 5        //共打印5份
            }
            webapp_ws_ajax_run(args);
        }
    </script>
    <p> <a href='javascript:export_xls_custom();'>自定义导出Excel</a>:设置合适的选项参数,将数据导出为连续的表格,页眉页脚不导出,不显示导出参数对话框等。</p>
    <script language="javascript" type="text/javascript">
        function export_xls_custom() {
            var args = {
                report:urlAddRandomNo("../grf/1a.grf"),
                data: "../data/DataCenter.ashx?data=Customer",
                type: "xls",
                ExportPageBreak: false,
                ExportPageHeaderFooter: false,
                SameAsPrint: false,
                showOptionDlg: false,  //指定不显示导出选项对话框
                filename: "d:\\temp\\gridreport.xls", //指定导出的文件路径与文件名
                //open: false  //指定导出后不自动打开文件
            }
            webapp_ws_ajax_run(args);
        }
    </script>
    <h3>更多应用方式</h3>
    <p><a href='javascript:ws_data_from_string();'>打印预览(报表数据来自字符串)</a>:通过WebSocket直接将网页中的字符串数据传递给WEB报表客户端。</p>
    <script language="javascript" type="text/javascript">
        function ws_data_from_string() {
            var args = {
                type: "preview", //设置不同的属性可以执行不同的任务,如:preview print pdf xls csv txt rtf img grd
                report: urlAddRandomNo("../grf/1a.grf"),
                //实际应用中,data应该为程序中通过各种途径获取到的数据,最后要将数据转换为报表需要的XML或JSON格式的字符串数据
                data:"<xml>" +
                    "<row><CustomerID>HUNGC</CustomerID><CompanyName>五金机械</CompanyName><ContactName>苏先生</ContactName><ContactTitle>销售代表</ContactTitle></row>" +
                    "<row><CustomerID>CENTC</CustomerID><CompanyName>三捷实业</CompanyName><ContactName>王先生</ContactName><ContactTitle>市场经理</ContactTitle></row>" +
                    "<row><CustomerID>CACTU</CustomerID><CompanyName>威航货运</CompanyName><ContactName>刘先生</ContactName><ContactTitle>销售代理</ContactTitle></row>" +
                    "</xml>",
                    reportid: "ws_data_from_string" //这个参数不是必须的,只是用于回发消息标识报表身份
                };
            webapp_ws_ajax_run(args);
        }
    </script>
    <p><a href='javascript:ws_data_from_object();'>打印预览(报表数据来自JSON对象)</a>:通过WebSocket直接将网页中的JSON对象数据传递给WEB报表客户端。</p>
    <script language="javascript" type="text/javascript">
        function ws_data_from_object() {
            var args = {
                type: "preview", //设置不同的属性可以执行不同的任务,如:preview print pdf xls csv txt rtf img grd
                report: urlAddRandomNo("../grf/1a.grf"),
                //实际应用中,data应该为程序中通过各种途径获取到的数据,最后要将数据转换为报表需要的XML或JSON格式的字符串数据
                data:
                {
                    "recordset": [
                        {
                            "CustomerID": "ALFKI",
                            "CompanyName": "三川实业有限公司",
                            "ContactName": "刘小姐",
                            "Address": "大崇明路 50 å·",
                            "City": "天津",
                            "Region": "华北",
                            "PostalCode": "343567",
                            "Phone": "(030) 30074321"
                        },
                        {
                            "CustomerID": "ANATR",
                            "CompanyName": "东南实业",
                            "ContactName": "王先生",
                            "Address": "承德西路 80 å·",
                            "City": "天津",
                            "Region": "华北",
                            "PostalCode": "234575",
                            "Phone": "(030) 35554729"
                        }
                    ]
                },
                reportid: "ws_data_from_object" //这个参数不是必须的,只是用于回发消息标识报表身份
            };
            webapp_ws_ajax_run(args);
        }
    </script>
</body>
</html>
VueWebApi/obj/Release/Package/PackageTmp/Views/Shared/Error.cshtml
ÎļþÒÑɾ³ý
VueWebApi/obj/Release/Package/PackageTmp/Views/Shared/_Layout.cshtml
ÎļþÒÑɾ³ý
VueWebApi/obj/Release/Package/PackageTmp/Views/Web.config
ÎļþÒÑɾ³ý
VueWebApi/obj/Release/Package/PackageTmp/Views/_ViewStart.cshtml
ÎļþÒÑɾ³ý
VueWebApi/obj/Release/Package/PackageTmp/Web.config
@@ -61,6 +61,8 @@
      <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <!--添加打印文件MIME类型-->
      <mimeMap fileExtension=".grf" mimeType="grf/gridreport" />
    </staticContent>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
Binary files differ
VueWebApi/obj/Release/Package/PackageTmp/grf/²úÆ·Á÷´«µ¥.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,347 @@
Object Report
    Version='6.0.0.6'
    Title='生产任务单'
    PrintAsDesignPaper=F
    Object Font
        Name='宋体'
        Size=135000,0
        Weight=400
        Charset=134
    End
    Object Printer
        Size=11
        Width=14.8
        Height=21
        Oriention=Landscape
        LeftMargin=0
        TopMargin=0
        RightMargin=0
        BottomMargin=0
    End
    Object DetailGrid
        CenterView=T
        ShowColLine=F
        ShowRowLine=F
        Object Border
            Styles=[]
        End
        Object Recordset
            Items Field
                Item
                    Name='PO'
                End
                Item
                    Name='产品代号'
                End
                Item
                    Name='编号'
                End
                Item
                    Name='数量'
                End
                Item
                    Name='条码编号'
                End
                Item
                    Name='产品型号'
                End
                Item
                    Name='颜色'
                End
                Item
                    Name='模具编号'
                End
                Item
                    Name='净重'
                    Type=Currency
                    Format='0.#########;;#'
                End
                Item
                    Name='毛重'
                    Type=Currency
                    Format='0.#########;;#'
                End
                Item
                    Name='喂料批号'
                End
                Item
                    Name='批号'
                End
                Item
                    Name='日期'
                    Type=DateTime
                    Format='yyyy-MM'
                End
                Item
                    Name='品牌'
                End
                Item
                    Name='客户型号'
                End
                Item
                    Name='压机型号'
                End
            End
        End
        Items Column
            Item
                Name='Column3'
                Width=21.0079
            End
        End
        Object ColumnContent
            Height=14.7902
            RowsPerPage=1
            Items ColumnContentCell
                Item
                    Column='Column3'
                    FreeCell=T
                    Items Control
                        Item
                            Type=FreeGrid
                            Name='FreeGrid1'
                            Left=0.185208
                            Top=0.264583
                            Object Border
                                Styles=[DrawLeft|DrawTop|DrawRight|DrawBottom]
                            End
                            ColumnCount=11
                            RowCount=20
                            Items FreeGridColumn
                                Item[1]
                                    Width=1.85208
                                End
                                Item[2]
                                    Width=1.66688
                                End
                                Item[3]
                                    Width=1.85208
                                End
                                Item[4]
                                    Width=1.905
                                End
                                Item[5]
                                    Width=2.16958
                                End
                                Item[6]
                                    Width=1.61396
                                End
                                Item[7]
                                    Width=1.85208
                                End
                                Item[8]
                                    Width=2.35479
                                End
                                Item[9]
                                    Width=2.03729
                                End
                                Item[10]
                                    Width=1.64042
                                End
                                Item[11]
                                    Width=1.48167
                                End
                            End
                            Items FreeGridRow
                                Item[1]
                                    Height=1
                                End
                                Item[2]
                                    Height=0.8
                                End
                                Item[3]
                                    Height=0.8
                                End
                                Item[5]
                                    Height=0.8
                                End
                                Item[6]
                                    Height=0.7
                                End
                                Item[8]
                                    Height=0.7
                                End
                                Item[9]
                                    Height=0.7
                                End
                                Item[10]
                                    Height=0.7
                                End
                                Item[11]
                                    Height=0.7
                                End
                                Item[12]
                                    Height=0.7
                                End
                                Item[13]
                                    Height=0.7
                                End
                                Item[14]
                                    Height=0.7
                                End
                                Item[15]
                                    Height=0.7
                                End
                                Item[16]
                                    Height=0.7
                                End
                                Item[17]
                                    Height=0.7
                                End
                                Item[18]
                                    Height=0.7
                                End
                                Item[19]
                                    Height=0.7
                                End
                                Item[20]
                                    Height=0.7
                                End
                            End
                            Items FreeGridCell
                                Item[1,1]
                                    TextAlign=MiddleCenter
                                    Text='杭州智见科技有限公司'
                                    ColSpan=8
                                End
                                Item[1,9]
                                    FreeCell=T
                                    Items Control
                                        Item
                                            Type=Barcode
                                            Name='Barcode6'
                                            Left=1.5875
                                            Width=2.01083
                                            Height=1.79917
                                            BarcodeType=QRCode
                                            CaptionPosition=None
                                            Text='[#条码编号#]'
                                        End
                                        Item
                                            Type=FieldBox
                                            Name='FieldBox1'
                                            Left=0.608542
                                            Top=2.01083
                                            Width=3.99521
                                            Height=0.396875
                                        End
                                    End
                                    ColSpan=3
                                    RowSpan=3
                                End
                                Item[2,1]
                                    TextAlign=MiddleCenter
                                    Text='产品流传单'
                                    ColSpan=8
                                End
                                Item[3,1]
                                    Text='PO:'
                                    ColSpan=2
                                End
                                Item[3,3]
                                    Text='[#PO#]'
                                    ColSpan=2
                                End
                                Item[3,5]
                                    ColSpan=4
                                End
                                Item[4,1]
                                    Text='产品代号:'
                                    ColSpan=2
                                End
                                Item[4,3]
                                    Text='[#产品代号#]'
                                    ColSpan=2
                                End
                                Item[4,5]
                                    Text='分批号:'
                                End
                                Item[4,6]
                                    ColSpan=2
                                End
                                Item[4,8]
                                    Text='编号:'
                                End
                                Item[4,9]
                                    Text='[#编号#]'
                                    ColSpan=3
                                End
                                Item[5,1]
                                    Text='模具编号:'
                                    ColSpan=2
                                End
                                Item[5,3]
                                    Text='[#模具编号#]'
                                    ColSpan=5
                                End
                                Item[5,8]
                                    Text='喂料批号:'
                                End
                                Item[5,9]
                                    Text='[#喂料批号#]'
                                    ColSpan=3
                                End
                                Item[6,1]
                                    Text='日期'
                                End
                                Item[6,2]
                                    Text='班次'
                                End
                                Item[6,3]
                                    Text='操作工'
                                End
                                Item[6,4]
                                    Text='工序'
                                End
                                Item[6,5]
                                    Text='设备编号'
                                End
                                Item[6,6]
                                    Text='加工数'
                                End
                                Item[6,7]
                                    Text='合格数'
                                End
                                Item[6,8]
                                    Text='分单量'
                                End
                                Item[6,9]
                                    Text='废品数量'
                                End
                                Item[6,10]
                                    Text='检验员'
                                End
                                Item[6,11]
                                    Text='备注'
                                End
                            End
                        End
                    End
                End
            End
        End
        Object ColumnTitle
            Height=0
            Items ColumnTitleCell
                Item
                    GroupTitle=F
                    Column='Column3'
                    Text='Column1'
                End
            End
        End
    End
    Items ReportHeader
        Item
            Name='ReportHeader1'
            Height=0
            RepeatOnPage=T
        End
    End
    Items ReportFooter
        Item
            Name='ReportFooter1'
            Height=0
        End
    End
End
VueWebApi/obj/Release/Package/PackageTmp/grf/²úÆ·Á÷´«µ¥A5.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,450 @@
{
    "Version":"6.8.2.2",
    "Title":"你的报表标题",
    "PrintAsDesignPaper":false,
    "Font":{
        "Name":"宋体",
        "Size":105000,
        "Weight":400,
        "Charset":134
    },
    "WatermarkAlignment":"BottomRight",
    "Printer":{
        "Size":11,
        "Width":14.8,
        "Height":21,
        "Oriention":"Landscape",
        "LeftMargin":0.5,
        "TopMargin":0.4,
        "RightMargin":0.5,
        "BottomMargin":0.5
    },
    "DetailGrid":{
        "CenterView":true,
        "Border":{
            "Pen":{
                "Width":1.5
            }
        },
        "Recordset":{
            "Field":[
                {
                    "Name":"工单号",
                    "DBFieldName":"wo_code"
                },
                {
                    "Name":"产品编码",
                    "DBFieldName":"partcode"
                },
                {
                    "Name":"产品名称",
                    "DBFieldName":"partname"
                },
                {
                    "Name":"产品规格",
                    "DBFieldName":"partspec"
                },
                {
                    "Name":"工艺路线",
                    "DBFieldName":"routename"
                },
                {
                    "Name":"工单数量",
                    "DBFieldName":"orderqty"
                },
                {
                    "Name":"打印人员",
                    "DBFieldName":"lm_user"
                },
                {
                    "Name":"打印时间",
                    "DBFieldName":"lm_date"
                },
                {
                    "Name":"工序号",
                    "DBFieldName":"seq"
                },
                {
                    "Name":"工序",
                    "DBFieldName":"stepname"
                },
                {
                    "Name":"加工数量",
                    "DBFieldName":"plan_qty"
                },
                {
                    "Name":"合格数量",
                    "DBFieldName":"good_qty"
                },
                {
                    "Name":"不良数量",
                    "DBFieldName":"ng_qty"
                },
                {
                    "Name":"二维码",
                    "DBFieldName":"stepqrcode"
                }
            ]
        },
        "Column":[
            {
                "Name":"工序号",
                "Width":1.74625
            },
            {
                "Name":"Column5",
                "Width":2.98979
            },
            {
                "Name":"辅数量",
                "Width":4.60375
            },
            {
                "Name":"收料仓库",
                "Width":1.98438
            },
            {
                "Name":"批号",
                "Width":2.01083
            },
            {
                "Name":"Column2",
                "Width":2.40771
            },
            {
                "Name":"Column4",
                "Width":4.20688
            }
        ],
        "ColumnContent":{
            "Height":1.40229,
            "AdjustRowHeight":false,
            "ColumnContentCell":[
                {
                    "Column":"工序号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "TextAlign":"MiddleCenter",
                    "ShrinkFontToFit":true,
                    "DataField":"工序号"
                },
                {
                    "Column":"Column5",
                    "FreeCell":true,
                    "Control":[
                        {
                            "Type":"Barcode",
                            "Name":"Barcode2",
                            "Left":0.608542,
                            "Top":0.1,
                            "Width":1.5875,
                            "Height":1.19063,
                            "BarcodeType":"QRCode",
                            "CaptionPosition":"None",
                            "Text":"[#二维码#]"
                        }
                    ]
                },
                {
                    "Column":"辅数量",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "DataField":"工序"
                },
                {
                    "Column":"收料仓库",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "DataField":"加工数量"
                },
                {
                    "Column":"批号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "WordWrap":true,
                    "DataField":"合格数量"
                },
                {
                    "Column":"Column2",
                    "WordWrap":true,
                    "DataField":"不良数量"
                },
                {
                    "Column":"Column4",
                    "WordWrap":true
                }
            ]
        },
        "ColumnTitle":{
            "Height":0.79375,
            "RepeatStyle":"OnPage",
            "ColumnTitleCell":[
                {
                    "GroupTitle":false,
                    "Column":"工序号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"工序号"
                },
                {
                    "GroupTitle":false,
                    "Column":"Column5",
                    "TextAlign":"MiddleCenter",
                    "Text":"二维码"
                },
                {
                    "GroupTitle":false,
                    "Column":"辅数量",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"工序"
                },
                {
                    "GroupTitle":false,
                    "Column":"收料仓库",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"加工数"
                },
                {
                    "GroupTitle":false,
                    "Column":"批号",
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "TextAlign":"MiddleCenter",
                    "Text":"合格数"
                },
                {
                    "GroupTitle":false,
                    "Column":"Column2",
                    "TextAlign":"MiddleCenter",
                    "Text":"不良数量"
                },
                {
                    "GroupTitle":false,
                    "Column":"Column4",
                    "TextAlign":"MiddleCenter",
                    "Text":"备注"
                }
            ]
        }
    },
    "Parameter":[
        {
            "Name":"Parameter1"
        },
        {
            "Name":"Parameter2"
        }
    ],
    "ReportHeader":[
        {
            "Name":"ReportHeader1",
            "Height":3.41313,
            "Control":[
                {
                    "Type":"FreeGrid",
                    "Name":"FreeGrid1",
                    "Dock":"Fill",
                    "Border":{
                        "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]",
                        "Pen":{
                            "Color":"FFFFFF"
                        }
                    },
                    "ColLine":{
                        "Color":"FFFFFF"
                    },
                    "RowLine":{
                        "Color":"FFFFFF"
                    },
                    "FreeGridColumn":[
                        {
                            "index":1,
                            "Width":1.87854
                        },
                        {
                            "index":2,
                            "Width":5.97958
                        },
                        {
                            "index":3,
                            "Width":1.82563
                        },
                        {
                            "index":4,
                            "Width":6.21771
                        },
                        {
                            "index":5,
                            "Width":4.10104
                        }
                    ],
                    "FreeGridRow":[
                        {
                            "index":1,
                            "Height":0.79375
                        },
                        {
                            "index":5,
                            "Height":0.687917
                        }
                    ],
                    "FreeGridCell":[
                        {
                            "row":1,
                            "col":1,
                            "Font":{
                                "Name":"宋体",
                                "Size":142500,
                                "Bold":true,
                                "Charset":134
                            },
                            "TextAlign":"MiddleCenter",
                            "Text":"流程单",
                            "ColSpan":5
                        },
                        {
                            "row":2,
                            "col":1,
                            "Text":"工单号:"
                        },
                        {
                            "row":2,
                            "col":2,
                            "Text":"[#工单号#]"
                        },
                        {
                            "row":2,
                            "col":3,
                            "Text":"产品编码:"
                        },
                        {
                            "row":2,
                            "col":4,
                            "Text":"[#产品编码#]"
                        },
                        {
                            "row":2,
                            "col":5,
                            "FreeCell":true,
                            "Control":[
                                {
                                    "Type":"Barcode",
                                    "Name":"Barcode1",
                                    "Dock":"Right",
                                    "Center":"Both",
                                    "Left":1.29646,
                                    "Width":2.77813,
                                    "BarcodeType":"QRCode",
                                    "CaptionPosition":"None",
                                    "Text":"[#工单号#]"
                                }
                            ],
                            "RowSpan":4
                        },
                        {
                            "row":3,
                            "col":1,
                            "Text":"产品名称:"
                        },
                        {
                            "row":3,
                            "col":2,
                            "Text":"[#产品名称#]"
                        },
                        {
                            "row":3,
                            "col":3,
                            "Text":"产品规格:"
                        },
                        {
                            "row":3,
                            "col":4,
                            "Text":"[#产品规格#]"
                        },
                        {
                            "row":4,
                            "col":1,
                            "Text":"工单数量:"
                        },
                        {
                            "row":4,
                            "col":2,
                            "Text":"[#工单数量#]"
                        },
                        {
                            "row":4,
                            "col":3,
                            "Text":"工艺路线:"
                        },
                        {
                            "row":4,
                            "col":4,
                            "Text":"[#工艺路线#]"
                        },
                        {
                            "row":5,
                            "col":1,
                            "Text":"打印人员:"
                        },
                        {
                            "row":5,
                            "col":2,
                            "Text":"[#打印人员#]"
                        },
                        {
                            "row":5,
                            "col":3,
                            "Text":"打印时间:"
                        },
                        {
                            "row":5,
                            "col":4,
                            "Text":"[#打印时间#]"
                        }
                    ]
                }
            ],
            "RepeatOnPage":true
        }
    ]
}
VueWebApi/obj/Release/Package/PackageTmp/grf/±¨¹¤²ú³ö±êÇ©.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
{
    "Version":"6.8.2.2",
    "Title":"你的报表标题",
    "PrintAsDesignPaper":false,
    "Font":{
        "Name":"宋体",
        "Size":52500,
        "Weight":400,
        "Charset":134
    },
    "WatermarkAlignment":"BottomRight",
    "Printer":{
        "Size":256,
        "Width":4,
        "Height":7.5,
        "Oriention":"Landscape",
        "LeftMargin":0.1,
        "TopMargin":0,
        "RightMargin":0.1,
        "BottomMargin":0
    },
    "DetailGrid":{
        "CenterView":true,
        "Border":{
            "Pen":{
                "Width":1.5
            }
        },
        "Recordset":{
            "Field":[
                {
                    "Name":"工单编号",
                    "DBFieldName":"wo_code"
                },
                {
                    "Name":"产品编码",
                    "DBFieldName":"partcode"
                },
                {
                    "Name":"产品名称",
                    "DBFieldName":"partname"
                },
                {
                    "Name":"下道工序",
                    "DBFieldName":"next_stepname"
                },
                {
                    "Name":"数量",
                    "DBFieldName":"qty"
                },
                {
                    "Name":"二维码",
                    "DBFieldName":"qrcode"
                }
            ]
        },
        "ColumnContent":{
            "Height":0,
            "AdjustRowHeight":false
        },
        "ColumnTitle":{
            "Height":0,
            "RepeatStyle":"OnPage"
        }
    },
    "Parameter":[
        {
            "Name":"Parameter1"
        },
        {
            "Name":"Parameter2"
        }
    ],
    "ReportHeader":[
        {
            "Name":"ReportHeader1",
            "Height":3.20146,
            "Control":[
                {
                    "Type":"Line",
                    "Name":"Line1",
                    "Left":0.211667,
                    "Top":0.105833,
                    "Width":6.91333
                },
                {
                    "Type":"Line",
                    "Name":"Line2",
                    "Left":0.21,
                    "Top":3.09563,
                    "Width":6.90729
                },
                {
                    "Type":"Line",
                    "Name":"Line3",
                    "Left":0.2,
                    "Top":0.105833,
                    "Height":2.99
                },
                {
                    "Type":"Line",
                    "Name":"Line4",
                    "Left":7.1,
                    "Top":0.105833,
                    "Height":2.98979
                },
                {
                    "Type":"Line",
                    "Name":"Line5",
                    "Left":2.40771,
                    "Top":0.105833,
                    "Height":2.98979
                },
                {
                    "Type":"Barcode",
                    "Name":"Barcode1",
                    "Left":0.423333,
                    "Top":0.291042,
                    "Width":1.82563,
                    "Height":1.66688,
                    "BarcodeType":"QRCode",
                    "CaptionPosition":"None",
                    "Text":"[#二维码#]"
                },
                {
                    "Type":"Line",
                    "Name":"Line6",
                    "Left":2.40771,
                    "Top":0.873125,
                    "Width":4.68229
                },
                {
                    "Type":"Line",
                    "Name":"Line7",
                    "Left":2.40771,
                    "Top":1.64042,
                    "Width":4.68229
                },
                {
                    "Type":"Line",
                    "Name":"Line8",
                    "Left":0.21,
                    "Top":2.38125,
                    "Width":6.88
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox1",
                    "Left":0.396875,
                    "Top":2.51354,
                    "Width":1.00542,
                    "Height":0.423333,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"数量:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox1",
                    "Left":1.34938,
                    "Top":2.51354,
                    "Width":0.978958,
                    "Height":0.4,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#数量#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox2",
                    "Left":2.51,
                    "Top":0.185208,
                    "Width":1.69333,
                    "Height":0.635,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"工单编号:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox2",
                    "Left":4.20688,
                    "Top":0.185208,
                    "Width":2.75,
                    "Height":0.66,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#工单编号#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox3",
                    "Left":2.51,
                    "Top":0.9525,
                    "Width":1.69333,
                    "Height":0.635,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"产品编码:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox3",
                    "Left":4.23333,
                    "Top":0.9525,
                    "Width":2.75,
                    "Height":0.66,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#产品编码#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox4",
                    "Left":2.54,
                    "Top":1.71979,
                    "Width":1.69,
                    "Height":0.58,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"产品名称:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox4",
                    "Left":4.25979,
                    "Top":1.71979,
                    "Width":2.75167,
                    "Height":0.582083,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#产品名称#]"
                },
                {
                    "Type":"StaticBox",
                    "Name":"StaticBox5",
                    "Left":2.56646,
                    "Top":2.48708,
                    "Width":1.69333,
                    "Height":0.529167,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"下道工序:"
                },
                {
                    "Type":"MemoBox",
                    "Name":"MemoBox5",
                    "Left":4.28625,
                    "Top":2.48708,
                    "Width":2.75,
                    "Height":0.53,
                    "PaddingTop":0,
                    "Font":{
                        "Name":"宋体",
                        "Size":90000,
                        "Weight":400,
                        "Charset":134
                    },
                    "Text":"[#下道工序#]"
                }
            ],
            "RepeatOnPage":true
        }
    ]
}
VueWebApi/obj/Release/Package/PackageTmp/grf/±¨¹¤´òÓ¡±êÇ©.grf
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
{
    "Version":"6.8.2.2",
    "Title":"生产任务单",
    "PrintAsDesignPaper":false,
    "Font":{
        "Name":"宋体",
        "Size":135000,
        "Weight":400,
        "Charset":134
    },
    "Printer":{
        "Size":256,
        "Width":10,
        "Height":5,
        "LeftMargin":0,
        "TopMargin":0,
        "RightMargin":0,
        "BottomMargin":0
    },
    "DetailGrid":{
        "CenterView":true,
        "ShowColLine":false,
        "ShowRowLine":false,
        "Border":{
            "Styles":"[]"
        },
        "Recordset":{
            "Field":[
                {
                    "Name":"工单编号",
                    "DBFieldName":"wo_code"
                },
                {
                    "Name":"产品编码",
                    "DBFieldName":"partcode"
                },
                {
                    "Name":"产品名称",
                    "DBFieldName":"partname"
                },
                {
                    "Name":"下道工序",
                    "DBFieldName":"next_stepname"
                },
                {
                    "Name":"数量",
                    "DBFieldName":"qty"
                },
                {
                    "Name":"二维码",
                    "DBFieldName":"qrcode"
                }
            ]
        },
        "Column":[
            {
                "Name":"Column3",
                "Width":10.0013
            }
        ],
        "ColumnContent":{
            "Height":5.00063,
            "RowsPerPage":1,
            "ColumnContentCell":[
                {
                    "Column":"Column3",
                    "FreeCell":true,
                    "Control":[
                        {
                            "Type":"FreeGrid",
                            "Name":"FreeGrid1",
                            "Left":0.211667,
                            "Top":0.211667,
                            "Border":{
                                "Styles":"[DrawLeft|DrawTop|DrawRight|DrawBottom]"
                            },
                            "ColumnCount":3,
                            "RowCount":4,
                            "FreeGridColumn":[
                                {
                                    "index":3,
                                    "Width":3.51896
                                }
                            ],
                            "FreeGridRow":[
                                {
                                    "index":1,
                                    "Height":1.19063
                                },
                                {
                                    "index":2,
                                    "Height":1.19063
                                },
                                {
                                    "index":3,
                                    "Height":1.03188
                                },
                                {
                                    "index":4,
                                    "Height":1.08479
                                }
                            ],
                            "FreeGridCell":[
                                {
                                    "row":1,
                                    "col":1,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"Barcode",
                                            "Name":"Barcode1",
                                            "Left":0.079375,
                                            "Top":0.132292,
                                            "Width":2.75167,
                                            "Height":3.04271,
                                            "BarcodeType":"QRCode",
                                            "CaptionPosition":"None",
                                            "Text":"[#二维码#]"
                                        }
                                    ],
                                    "RowSpan":3
                                },
                                {
                                    "row":1,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox3",
                                            "Left":0.079375,
                                            "Top":0.238125,
                                            "Width":1.71979,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"工单编号:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox2",
                                            "Left":1.79917,
                                            "Top":0.238125,
                                            "Width":4.39208,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "WordWrap":true,
                                            "DataField":"数量"
                                        }
                                    ],
                                    "ColSpan":2
                                },
                                {
                                    "row":2,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox4",
                                            "Left":0.08,
                                            "Top":0.24,
                                            "Width":1.7198,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"产品编码:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox3",
                                            "Left":1.79917,
                                            "Top":0.211667,
                                            "Width":4.3291,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"产品编码"
                                        }
                                    ],
                                    "ColSpan":2
                                },
                                {
                                    "row":3,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox5",
                                            "Left":0.08,
                                            "Top":0.24,
                                            "Width":1.7198,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"产品名称:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox4",
                                            "Left":1.79917,
                                            "Top":0.211667,
                                            "Width":4.3291,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"产品名称"
                                        }
                                    ],
                                    "ColSpan":2
                                },
                                {
                                    "row":4,
                                    "col":1,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox1",
                                            "Top":0.211667,
                                            "Width":1.19063,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"数量:"
                                        },
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox2",
                                            "Left":0.238125,
                                            "Top":3.65125,
                                            "Width":1.19063,
                                            "Height":0.608542,
                                            "Text":"数量:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox1",
                                            "Left":1.19063,
                                            "Top":0.211667,
                                            "Width":1.5875,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"数量"
                                        }
                                    ]
                                },
                                {
                                    "row":4,
                                    "col":2,
                                    "FreeCell":true,
                                    "Control":[
                                        {
                                            "Type":"StaticBox",
                                            "Name":"StaticBox6",
                                            "Left":0.08,
                                            "Top":0.24,
                                            "Width":1.7198,
                                            "Height":0.608542,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "Text":"下道工序:"
                                        },
                                        {
                                            "Type":"FieldBox",
                                            "Name":"FieldBox5",
                                            "Left":1.79917,
                                            "Top":0.211667,
                                            "Width":4.3291,
                                            "Height":0.6085,
                                            "Font":{
                                                "Name":"宋体",
                                                "Size":105000,
                                                "Weight":400,
                                                "Charset":134
                                            },
                                            "DataField":"下道工序"
                                        }
                                    ],
                                    "ColSpan":2
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        "ColumnTitle":{
            "Height":0,
            "ColumnTitleCell":[
                {
                    "GroupTitle":false,
                    "Column":"Column3",
                    "Text":"Column1"
                }
            ]
        }
    },
    "ReportHeader":[
        {
            "Name":"ReportHeader1",
            "Height":0,
            "RepeatOnPage":true
        }
    ],
    "ReportFooter":[
        {
            "Name":"ReportFooter1",
            "Height":0
        }
    ]
}
VueWebApi/obj/Release/TransformWebConfig/original/Web.config
@@ -61,6 +61,8 @@
            <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
            <mimeMap fileExtension=".json" mimeType="application/json" />
            <!--添加打印文件MIME类型-->
            <mimeMap fileExtension=".grf" mimeType="grf/gridreport"/>
        </staticContent>
        <handlers>
VueWebApi/obj/Release/TransformWebConfig/transformed/Web.config
@@ -61,6 +61,8 @@
      <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <!--添加打印文件MIME类型-->
      <mimeMap fileExtension=".grf" mimeType="grf/gridreport" />
    </staticContent>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
VueWebApi/obj/Release/VueWebApi.csproj.CopyComplete
VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
5d8d719063c73a5c06cd8873bc89ea569af1241b
f6225c264d26e4a01256c6511852917a12739a76
VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
@@ -153,3 +153,9 @@
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Deployment.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Razor.resources.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Web.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Bars.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Editor.dll
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.xml
D:\新凯迪MES\VueWebApi\VueWebApi\bin\FastReport.Web.xml
VueWebApi/obj/Release/VueWebApi.pdb
Binary files differ