报表-条码未扫查询Controller

using Newtonsoft.Json;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;

namespace Midea.Web.Areas.MES.Controllers
{
    [Authorize]
    public class MoUnScannedBarcodeController : BaseController
    {
        [Permission("A0A9C60518F94422BB86BA471223DCB6", "未扫条码查询", "未扫条码查询")]
        public ActionResult Index()
        {
            List<SelectListItem> MO_Status = new List<SelectListItem>();
            MO_Status.Add(new SelectListItem() { Text = "请选择作业状态", Value = "" });
            MO_Status.Add(new SelectListItem() { Text = "已终检未下线", Value = "Online" });
            MO_Status.Add(new SelectListItem() { Text = "已下线未入库", Value = "Offline" });

            ViewData.Add("MO_Status", MO_Status);

        

            return View();
        }
        #region 原有方式

        public ActionResult LoadData_old(string moCodeStr, string beginL, string beginR,
            string mitemDesc, string workShopStr, string lineCodeStr, string mo_status, string mostatus)
        {
            int start = Convert.ToInt32(Request.Params["start"]);//起始数
            int rowsize = Convert.ToInt32(Request.Params["length"]);  //长度
            int draw = Convert.ToInt32(Request.Params["draw"]);//画的页数
            int pageindex = (start / rowsize) + 1;

            beginL = string.IsNullOrWhiteSpace(beginL) ? string.Empty : beginL.Trim();
            beginR = string.IsNullOrWhiteSpace(beginR) ? string.Empty : beginR.Trim();

            var data = MESDomain.MES.MoUnScannedBarcode.QueryUnScannedBarcode(
                moCodeStr,
                beginL == string.Empty ? null : new Nullable<DateTime>(DateTime.Parse(beginL)),
                beginR == string.Empty ? null : new Nullable<DateTime>(DateTime.Parse(beginR)),
                mitemDesc, workShopStr, lineCodeStr
                , CurUserDefaultInvOrgID, mo_status, mostatus,pageindex, rowsize);

            return Json(new DataTablesResultInfo(data.Items, draw, data.ItemCount, data.ItemCount), JsonRequestBehavior.AllowGet);
        }

        #region 导出
        public EmptyResult ExportData_old(string postjson)
        {
            //如果查询条件为空
            if (postjson == "")
            {
                postjson = Request.QueryString["postjson"];
            }
            //获取查询条件并反序列化json字符
            paramModel model = Newtonsoft.Json.JsonConvert.DeserializeObject<paramModel>(postjson);

            int totalrow = 0;
            int pageIndex = 1;
            int pageSize = 65535;
            var result = MESDomain.MES.MoUnScannedBarcode.QueryUnScannedBarcode(
                model.MOCODE,
                model.BEGINDATE == string.Empty ? null : new Nullable<DateTime>(DateTime.Parse(model.BEGINDATE)),
                model.ENDDATE == string.Empty ? null : new Nullable<DateTime>(DateTime.Parse(model.ENDDATE)),
                model.MITEMDESC, model.WORKSHOP, model.LINECODE
                , CurUserDefaultInvOrgID, model.MOSTATUS,model.MOstaus2, pageIndex, pageSize);

            var workbook = new XSSFWorkbook();
            var ms = new MemoryStream();
            int iCurrentRowIndex = 0;

            //时间格式
            var dateTimeCellStyle = workbook.CreateCellStyle();
            dateTimeCellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("yyyy-MM-dd HH:mm:ss");

            // 新增页。 
            ISheet sheet = workbook.CreateSheet("未扫条码查询");
            //报表列头
            IRow rowTableHeader = sheet.CreateRow(iCurrentRowIndex);

            rowTableHeader.CreateCell(0).SetCellValue("未扫描条码");
            rowTableHeader.CreateCell(1).SetCellValue("作业名称");
            rowTableHeader.CreateCell(2).SetCellValue("车间代码");
            rowTableHeader.CreateCell(3).SetCellValue("生产线代码");
            rowTableHeader.CreateCell(4).SetCellValue("当前工序");
            rowTableHeader.CreateCell(5).SetCellValue("当前工序描述");
            rowTableHeader.CreateCell(6).SetCellValue("装配件描述");
            rowTableHeader.CreateCell(7).SetCellValue("维护人员");
            rowTableHeader.CreateCell(8).SetCellValue("维护日期");
            rowTableHeader.CreateCell(9).SetCellValue("维护时间");
            iCurrentRowIndex++;

            foreach (var item in result.Items)
            {
                IRow currentRow = sheet.CreateRow(iCurrentRowIndex);

                currentRow.CreateCell(0).SetCellValue(item.BarcodeCode);
                currentRow.CreateCell(1).SetCellValue(item.MoName);
                currentRow.CreateCell(2).SetCellValue(item.WorkshopCode);
                currentRow.CreateCell(3).SetCellValue(item.LineCode);
                currentRow.CreateCell(4).SetCellValue(item.ProcessName);
                currentRow.CreateCell(5).SetCellValue(item.ProcessDesc);
                currentRow.CreateCell(6).SetCellValue(item.MaterialDesc);
                currentRow.CreateCell(7).SetCellValue(item.Maintainer);
                currentRow.CreateCell(8).SetCellValue(item.MaintenanceDate);
                currentRow.CreateCell(9).SetCellValue(item.MaintenanceTime);
                iCurrentRowIndex++;

            }

            workbook.Write(ms);
            Response.AddHeader("Content-Disposition",
             string.Format("attachment; filename={0}_{1}.xls",
                 Server.UrlEncode("作业未扫条码查询"),
                 DateTime.Now.ToString("yyyyMMddHHmmss")
             ));
            Response.BinaryWrite(ms.ToArray());
            return new EmptyResult();
        }
        #endregion
        #endregion

        class paramModel
        {
            public string MOCODE { get; set; }

            public string BEGINDATE { get; set; }
            public string ENDDATE { get; set; }
            public string MITEMDESC { get; set; }
            public string WORKSHOP { get; set; }
            public string LINECODE { get; set; }
            public string MOSTATUS { get; set; }

            public string MOstaus2 { get; set; }

        }

        /// <summary>
        /// 时间间隔大于三个月校验
        /// </summary>
        /// <param name="StartDate"></param>
        /// <param name="EndDate"></param>
        /// <returns></returns>
        public ActionResult UnScannedDateTimeValidate(Nullable<DateTime> StartDate = null, Nullable<DateTime> EndDate = null)
        {
            DateTime StartDateTime = StartDate == null ? DateTime.Now : Convert.ToDateTime(StartDate);
            DateTime EndDateTime = EndDate == null ? DateTime.Now : Convert.ToDateTime(EndDate);
            if (StartDateTime.AddMonths(3) < EndDateTime)
            {
                return Json(new JsonResultInfo(JsonResultInfo.FLAG_ERROR, null));
            }
            return Json(new JsonResultInfo(JsonResultInfo.FLAG_SUCCESS, null, ""));
        }
        #region 包调用方式
        public ActionResult LoadData(string moCodeStr, string beginL, string beginR,
            string mitemDesc, string workShopStr, string lineCodeStr, string mo_status, string mostatus)
        {

            int start = Convert.ToInt32(Request.Params["start"]);//起始数
            int rowsize = Convert.ToInt32(Request.Params["length"]);  //长度
            int draw = Convert.ToInt32(Request.Params["draw"]);//画的页数
            int pageindex = (start / rowsize) + 1;
            int page_total = 0;
            beginL = string.IsNullOrWhiteSpace(beginL) ? string.Empty : beginL.Trim();
            beginR = string.IsNullOrWhiteSpace(beginR) ? string.Empty : beginR.Trim();
            DateTime? begindate = null;
            DateTime? enddate = null;
            if (beginL != string.Empty)
            {
                begindate = DateTime.Parse(beginL);
            }
            if (beginR != string.Empty)
            {
                enddate = DateTime.Parse(beginR);
            }

            ICollection<VW_SFC_MO_UNSCANNED_BARCODE> data = null;
            data = MESDomain.MES.MoUnScannedBarcode.QueryUnScannedBarcodeData(moCodeStr, begindate, enddate, mitemDesc,
                workShopStr, lineCodeStr, CurUserDefaultInvOrgID, mo_status,mostatus, pageindex, rowsize, out page_total);

            var json = from q in data
                       select new
                       {
                            BarcodeCode=q.BARCODE,
                            MoName = q.MO_NAME,
                            WorkshopCode = q.WORKSHOP_NAME,
                            LineCode = q.LINE_NAME,
                            ProcessName = q.PROCESS_CODE,
                            ProcessDesc = q.PROCESS_DESC,
                            MaterialDesc = q.MITEM_DESC,
                            Maintainer = q.MAINTAINER,
                            MaintenanceDate = q.MAINTENANCE_DATETIME == null ? string.Empty : q.MAINTENANCE_DATETIME.Value.ToString("yyyy-MM-dd"),
                            MaintenanceTime =q.MAINTENANCE_DATETIME==null?string.Empty:q.MAINTENANCE_DATETIME.Value.ToString("HH:mm:ss")
                       
                       };
            return Json(new DataTablesResultInfo(json, draw, page_total, page_total), JsonRequestBehavior.AllowGet); 
        }

        public EmptyResult ExportData(string postjson)
        {
            //如果查询条件为空
            if (postjson == "")
            {
                postjson = Request.QueryString["postjson"];
            }
            //获取查询条件并反序列化json字符
            paramModel model = Newtonsoft.Json.JsonConvert.DeserializeObject<paramModel>(postjson);

            int totalrow = 0;
            int pageIndex = 1;
            int pageSize = 165535;

 
            DateTime? begindate = null;
            DateTime? enddate = null;
            if (!string.IsNullOrWhiteSpace(model.BEGINDATE))
            {
                begindate = DateTime.Parse(model.BEGINDATE);
            }
            if (!string.IsNullOrWhiteSpace( model.ENDDATE))
            {
                enddate = DateTime.Parse(model.ENDDATE);
            }
            ICollection<VW_SFC_MO_UNSCANNED_BARCODE> data = null;
            data = MESDomain.MES.MoUnScannedBarcode.QueryUnScannedBarcodeData(
                model.MOCODE,
                begindate,
                enddate,
                model.MITEMDESC, model.WORKSHOP, model.LINECODE
                , CurUserDefaultInvOrgID, model.MOSTATUS,model.MOstaus2, pageIndex, pageSize, out totalrow);

            var json = from q in data
                       select new
                       {
                           BarcodeCode = q.BARCODE,
                           MoName = q.MO_NAME,
                           WorkshopCode = q.WORKSHOP_NAME,
                           LineCode = q.LINE_NAME,
                           ProcessName = q.PROCESS_CODE,

                           ProcessDesc = q.PROCESS_DESC,
                           MaterialDesc = q.MITEM_DESC,
                           Maintainer = q.MAINTAINER,
                           MaintenanceDate = q.MAINTENANCE_DATETIME == null ? string.Empty : q.MAINTENANCE_DATETIME.Value.ToString("yyyy-MM-dd"),
                           MaintenanceTime = q.MAINTENANCE_DATETIME == null ? string.Empty : q.MAINTENANCE_DATETIME.Value.ToString("HH:mm:ss")

                       };

            var workbook = new XSSFWorkbook();
            var ms = new MemoryStream();
            int iCurrentRowIndex = 0;

            //时间格式
            var dateTimeCellStyle = workbook.CreateCellStyle();
            dateTimeCellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("yyyy-MM-dd HH:mm:ss");

            // 新增页。 
            ISheet sheet = workbook.CreateSheet("作业未扫条码查询");
            //报表列头
            IRow rowTableHeader = sheet.CreateRow(iCurrentRowIndex);

            rowTableHeader.CreateCell(0).SetCellValue("未扫描条码");
            rowTableHeader.CreateCell(1).SetCellValue("作业名称");
            rowTableHeader.CreateCell(2).SetCellValue("车间代码");
            rowTableHeader.CreateCell(3).SetCellValue("生产线代码");
            rowTableHeader.CreateCell(4).SetCellValue("当前工序");
            rowTableHeader.CreateCell(5).SetCellValue("当前工序描述");
            rowTableHeader.CreateCell(6).SetCellValue("装配件描述");
            rowTableHeader.CreateCell(7).SetCellValue("维护人员");
            rowTableHeader.CreateCell(8).SetCellValue("维护日期");
            rowTableHeader.CreateCell(9).SetCellValue("维护时间");
            iCurrentRowIndex++;

            foreach (var item in json)
            {
                IRow currentRow = sheet.CreateRow(iCurrentRowIndex);

                currentRow.CreateCell(0).SetCellValue(item.BarcodeCode);
                currentRow.CreateCell(1).SetCellValue(item.MoName);
                currentRow.CreateCell(2).SetCellValue(item.WorkshopCode);
                currentRow.CreateCell(3).SetCellValue(item.LineCode);
                currentRow.CreateCell(4).SetCellValue(item.ProcessName);
                currentRow.CreateCell(5).SetCellValue(item.ProcessDesc);
                currentRow.CreateCell(6).SetCellValue(item.MaterialDesc);
                currentRow.CreateCell(7).SetCellValue(item.Maintainer);
                currentRow.CreateCell(8).SetCellValue(item.MaintenanceDate);
                currentRow.CreateCell(9).SetCellValue(item.MaintenanceTime);
                iCurrentRowIndex++;

            }

            workbook.Write(ms);
            Response.AddHeader("Content-Disposition",
             string.Format("attachment; filename={0}_{1}.xls",
                 Server.UrlEncode("作业未扫条码查询"),
                 DateTime.Now.ToString("yyyyMMddHHmmss")
             ));
            Response.BinaryWrite(ms.ToArray());
            return new EmptyResult();
        }

        #endregion

    }
}
时间: 2024-07-30 13:48:51

报表-条码未扫查询Controller的相关文章

脚本填报表的条件查询

在上一篇<脚本模式下的填报表制作>中,我们详细讲述了如何使用脚本进行数据处理.制作填报表,今天我们盘道一下脚本模式下如何实现条件查询. 一.需求描述 然后再进行增删改操作.例如,先过滤出所关心城市的客户信息,然后再对查询结果进行更新操作.那么,实现这个需求需要解决两个问题: 1. 如何让条件录入更加人性化 2. 脚本模式下如何实现参数的接收处理和数据过滤? 二.实现难点 多城市值传入时,脚本中如何处理参数并实现数据过滤: 参数模板中如何实现地区和城市之间的关联过滤. 三.操作步骤 第一步  制

odoo报表条码无法显示解决[转]

当服务器为Linux(Ubuntu)时,ODOO打印的报表上是有条码的,却显示空白框框.问题在于服务器上没有安装条码的字体,reportlab渲染条码图形失败,导致显示不正常. 将附件中的字体下载,解压得到pfbfer文件夹,放到 /usr/share/fonts/type1之下即可,注意文件权限. 此处下载-->pfbfer (声明:作者原创内容,欢迎指正.收藏.转载.引用.改编... 原文转载请注明出处) 原文地址 http://www.odooeasy.com/index.php?id=1

润乾报表实现模糊查询

FineReport实现java报表参数查询的效果图

Java报表-参数联动与自动查询 Java报表-大数据量查询 Java报表-动态列查询 Java报表-复选框多值查询 Java报表-供应商信息模糊查询 Java报表-库存查询每页显示固定 Java报表-下拉树与动态显示查询 Java报表-自定义时间段查询 FineReport实现java报表参数查询的效果图

JEPLUS图报表 查询报表——JEPLUS软件快速开发平台

JEPLUS图报表 查询报表 我们在配置完报表之后会发现数据太多,当我们需要查询某一条数据时很浪费时间,我们可以给他配置查询报表上面配置查询条件我们可以根据我们配置好的类型来查询我们需要的数据. 一.效果展示 二.实现步骤 1.首先还是先实现一个简单报表 2.在JEPLUS中提供了简单的查询配置. 在这里我们可以配置是否启用 背景颜色,查询按钮 查询参数 只需要在 查询信息里面配置完我们需要的查询参数 我们就可以实现我们的查询报表了. 查看原文及阅读更多 原文地址:http://blog.51c

报表工具怎么做模糊查询

在数据查询系统中,我们常常会遇到精准查询和模糊查询.我们知道,对于关系数据库,使用精准查询可以直接在 sql 里面使用"where 字段 = 参数值"来过滤对应的数据,而要实现模糊查询,我们使用的就是 like 的形式.那么,在报表里面该如何使用 like 方式实现模糊查询来过滤数据呢? 下面,我们结合润乾报表自带的 hsql 数据库中的客户表,来做一个模糊查询的示例. 例如:在下拉框中通过模糊查询显示所有姓名里面带有"王"字的联系人,当用户选择后进行精准查询.并且

【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表

这个项目终于接近尾声了,注册功能我就不做了,关于注册功能我的另一篇博客详细的介绍了一下注册的表单验证,可以直接把功能加到本项目中,修改一下相关的跳转即可,就不再做了.另外,目前这个项目只有action层和service层,dao层我还没抽取,做完这个报表,我把dao层抽取一下,再对整个项目做个总结,差不多就可以上传源码了,到时候欢迎大家下载~ 这一节主要做一下最后一个功能:使用JsChart这个工具来显示商品的销售报表,JsChart是很好用的一款制作报表的工具,之所以好用,是因为它的官方实例做

连载:(二)循序渐进,通过XML配置,实现通用于WinForm(.Net)、WebForm(Asp.Net+JQuery+EasyUI)表单、报表--原理

连载:(二)循序渐进,通过XML配置,实现通用于WinForm(.Net).WebForm(Asp.Net+JQuery+EasyUI)表单.报表 --原理 作者:长江支流 本原理,适用于Window Form的CS,也适用于ASP.Net的BS. 在描述原理之前,先来看个传统的ORM写代码的例子. 实体映射 现在很多架构实现ORM,去动态的生成代码,实现数据增.删.改.查的功能. 实体的映射关系,是通过代码的方式进行映射的,是否可以通过XML文件,来配置实例的映射关系,答案是肯定的. 代码映射

eclipse birt报表开发入门

在开发中,报表或多或少会涉及到,有些报表可能比较简单,而有些报表可能很复杂.无论如何,这些报表功能的开发都是可以通过一些公共的组件来实现的,比如我现在所在的这家公司,如果想要制作报表,只需要配置下报表配置下就可以了(这个报表是通过特定实现的报表语言实现了,支持内部自定义的语言,最终将这些相应的数据保存到数据库中,对报表中的一些事物进行了抽象,比如:报表模型, 查询参数.).如果要自己手动的一步一步的编写报表,那么相对会比较麻烦,如果能提供一个框架,只需要进行一些配置就可以完成自定义报表,那岂不很