Pārlūkot izejas kodu

添加新报表每小时工序产量分析表

konghe 1 gadu atpakaļ
vecāks
revīzija
9946b87c11
2 mainītis faili ar 362 papildinājumiem un 0 dzēšanām
  1. 142 0
      wwwroot/mes/rpt/rpt423/rpt.ashx
  2. 220 0
      wwwroot/mes/rpt/rpt423/rpt_index.html

+ 142 - 0
wwwroot/mes/rpt/rpt423/rpt.ashx

@@ -0,0 +1,142 @@
+<%@ WebHandler Language="C#" Class="rpt" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Data;
+using System.Text;
+using System.Collections;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+
+public class rpt : IHttpHandler, IReadOnlySessionState
+{
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            DateTime dateBegin;
+            DateTime dateEnd;
+            string procedureId = context.Request["procedureidMaster[]"] is object ? context.Request["procedureidMaster[]"].ToString() : "0";
+            if (procedureId == "0" && context.Request["procedureidMaster"] is object) procedureId = context.Request["procedureidMaster"].ToString();
+            if (procedureId == "") procedureId = "0";
+            string goodstypeCode = context.Request["goodstypecodeMaster"] is object ? context.Request["goodstypecodeMaster"].ToString() : "";
+            string goodsidMaster = context.Request["goodsidMaster[]"] is object ? context.Request["goodsidMaster[]"] : "0";
+            if (goodsidMaster == "0" && context.Request["goodsidMaster"] is object) goodsidMaster = context.Request["goodsidMaster"].ToString();
+            if (goodsidMaster == "") goodsidMaster = "0";
+            //主表
+            if (context.Request["m"].ToString() == "0")
+            {
+                dateBegin = Convert.ToDateTime(context.Request["datebeginMaster"]);
+                dateEnd = Convert.ToDateTime(context.Request["dateendMaster"]);
+
+                string sqlwhere = "";
+                if (!string.IsNullOrEmpty(goodstypeCode) && goodstypeCode != "0")
+                {
+                    sqlwhere += " and gt.goodstypeCode=" + goodstypeCode;
+                }
+                if (!string.IsNullOrEmpty(goodsidMaster) && goodsidMaster != "0")
+                {
+                    sqlwhere += " and g.GOODSID in(" + goodsidMaster + ")";
+                }
+                var timespan = dateEnd - dateBegin;
+                if (timespan.TotalHours > 48 || timespan.TotalHours <= 0 || procedureId == "0")
+                {
+                    //context.Response.Write(new JsonResult(JsonStatus.loginError) { message = "必须选择数据来源和生产工序!" }.ToJson());
+                    return;
+                }
+                string lie = "";
+                string sum = "";
+                string casestr = "";
+                for (int i = 1; i <= timespan.TotalHours; i++)
+                {
+                    lie += i + ",";
+                    sum += "sum(点" + i + ") \"" + ((i + dateBegin.Hour > 24 ? (i + dateBegin.Hour - 24) : (i + dateBegin.Hour)) - 1) + "点至" + (i + dateBegin.Hour > 24 ? (i + dateBegin.Hour - 24) : (i + dateBegin.Hour)) + "点\",";
+                    casestr += "case when createtime<@DATEBEGIN@+ INTERVAL '" + i + "' HOUR and createtime>@DATEBEGIN@ + INTERVAL '" + (i - 1) + "' HOUR then 1 else 0 end as 点" + i + ",";
+                }
+                lie = lie.Trim(',');
+                sum = sum.Trim(',');
+                casestr = casestr.Trim(',');
+
+                //读取报表数据
+                string sqlStr = @"
+				select   productionlineid 生产线,
+       goodstypename 产品类别,
+       goodscode 产品编码,
+       goodsspecification 产品介绍,
+       GOODSMODEL 产品型号,
+       GLAZETYPE 产品规格,
+			 sum(合计) 合计,
+            {sum}
+			 from (
+select  b.*,1 合计,
+			{casestr}
+from ( select
+       pd.productionlineid,
+       gt2.goodstypename goodstypename2,
+       gt.goodstypename,
+       g.goodscode,
+       g.goodsspecification,
+       g.GOODSMODEL,
+       dd.dictionaryvalue GLAZETYPE,
+			 pd.createtime			 
+  from tp_pm_productiondata pd
+ inner join tp_mst_goods g
+    on g.goodsid = pd.goodsid
+ inner join tp_mst_goodstype gt
+    on gt.goodstypeid = g.goodstypeid
+ inner join tp_mst_goodstype gt2
+    on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+   and gt2.accountid = gt.accountid
+ inner join tp_mst_datadictionary dd
+    on dd.dictionaryid = g.GLAZETYPEID
+ where  pd.accountid = 1
+   and pd.productionlineid = 1
+   and pd.createtime >= @DATEBEGIN@
+   and pd.createtime < @DATEEND@
+   {sqlwhere}
+   AND((pd.procedureid = 11 AND pd.valueflag = '1' AND(pd.checkflag = '1' OR pd.checkflag IS NULL)) OR 
+    (pd.procedureid = 104 AND pd.checkflag = '1') OR (pd.procedureid NOT IN(11,104) AND pd.valueflag = '1'))   and instr(',' || {procedureId} || ',', ',' || pd.procedureid || ',') > 0
+	 and pd.procedureid={procedureId}
+    AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = 1828 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId))) b 
+		left join (
+select  {lie}  from dual) numlie on 1=1 ) detail
+ group by 
+       productionlineid,
+       goodstypename,
+       goodstypename,
+       goodscode,
+       goodsspecification,
+       GOODSMODEL,
+       GLAZETYPE
+                ".Replace("{lie}", lie)
+                .Replace("{sum}", sum)
+                .Replace("{sqlwhere}", sqlwhere)
+                .Replace("{procedureId}", procedureId)
+                .Replace("{casestr}", casestr);
+
+                //获取查询条件
+                List<CDAParameter> sqlPara = new List<CDAParameter>();
+                sqlPara.Add(new CDAParameter("DATEBEGIN", dateBegin, DataType.DateTime));
+                sqlPara.Add(new CDAParameter("DATEEND", dateEnd, DataType.DateTime));
+
+                JsonResult data = Easyui.ExecuteJsonResult(conn, sqlStr, sqlPara);
+                context.Response.Write(data.ToJson());
+            }
+        }
+
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+
+}

+ 220 - 0
wwwroot/mes/rpt/rpt423/rpt_index.html

@@ -0,0 +1,220 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8" />
+    <meta name="keywords" content="dongke,mes,ibossmes">
+    <meta name="description" content="制造企业生产过程执行管理系统">
+    <meta name="author" content="xuwei">
+    <title>东科软件</title>
+    <script src="/plugins/xeasyui/xeasyui.min.js"></script>
+    <link href="/plugins/xeasyui/toolbar.min.css" rel="stylesheet" />
+</head>
+<body class="easyui-layout">
+
+    <!--上部工具条-->
+    <div id="toolbarLayout" data-options="border:false,region:'north',title:'',iconCls:'icon-grid'">
+        <div class="i-toolbar">
+            <a href="javascript:void(0)" id="btnSearch" title="搜索" class="easyui-linkbutton" iconcls="icon-search" plain="true" toggle="true" onclick="tbSearch()">搜索</a>
+            <a href="javascript:void(0)" id="btnExport" title="导出" class="easyui-linkbutton" iconcls="icon-excel" plain="true" onclick="tbExport()">导出</a>
+            <!--<a href="javascript:void(0)" id="btnColumn" class="easyui-menubutton" data-options="menu:'#btnColumnMenu',iconCls:'icon-undo'">列显示</a>-->
+            <!--<div id="btnColumnMenu" style="width:150px;" ></div>-->
+            <a href="javascript:void(0)" id="btnReload" title="刷新" class="easyui-linkbutton" iconcls="icon-reload" plain="true" onclick="tbReload()">刷新</a>
+            <a href="javascript:void(0)" id="btnHelp" title="帮助" class="easyui-linkbutton" iconcls="icon-help" plain="true" onclick="tbHelp()">帮助</a>
+            <div id="tbSearchDiv" style="display:block;padding:10px;">
+                <form id="ffMaster">
+                    <div>
+                        开始日期:
+                        <input class="easyui-datetimebox" id="datebeginMaster" name="datebeginMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:165px; height:32px;">
+                        截止日期:
+                        <input class="easyui-datetimebox" id="dateendMaster" name="dateendMaster" data-options="required:true,prompt:'',tipPosition:'top'" style="width:165px; height:32px;">
+                        生产工序
+                        <input class="easyui-combobox" id="procedureidMaster" name="procedureidMaster" data-options="required:true,prompt:'',tipPosition:'top',url:'../../rpt/rpt.ashx?m=getProcedure&select=1',method:'get',valueField:'PROCEDUREID',textField:'PROCEDURENAME',panelHeight:'300px',editable:'true'" style="width:200px;height:32px;">
+                        产品类别
+                        <input class="easyui-combotree" id="goodstypecodeMaster" name="goodstypecodeMaster" data-options="required:false,prompt:'',tipPosition:'top',url:'../../rpt/rpt.ashx?m=getGoodsType',method:'get',panelHeight:'200px',editable:true" style="width:180px;height:32px;">
+                        产品编码
+                        <input class="easyui-combobox" id="goodsidMaster" name="goodsidMaster" data-options="required:false,prompt:'',tipPosition:'top',url:'../../rpt/rpt.ashx?m=getGoods&select=1',method:'get',valueField:'GOODSID',textField:'GOODSCODE',panelHeight:'300px',editable:'true',multiple:true" style="width:200px;height:32px;">
+                        
+                        <a href="javascript:void(0)" id="btnSearchSubmit" title="清空" class="easyui-linkbutton" plain="false" onclick="toClear()">清空</a>
+                        <a href="javascript:void(0)" id="btnSearchSubmit" title="搜索" class="easyui-linkbutton" plain="false" onclick="tbSearchSubmit()">搜索</a>
+                    </div>
+                </form>
+            </div>
+        </div>
+    </div>
+
+    <!--中部-->
+    <div id="tableLayout" data-options="border:false,region:'center',split:true,title:'',iconCls:'icon-grid'" title="East" style="width:700px;">
+        <div id="tableTabs" class="easyui-tabs" data-options="border:false" style="width: 100%; height: 100%">
+            <!--表格-->
+                <table class="easyui-datagrid"
+                       id="DataGrid0"
+                       data-options="method:'get',border:false,singleSelect:true,fit:true,fitColumns:true,onDblClickRow: dgDblclickrow">
+                    <thead data-options="frozen:true">
+                        <tr>
+                        </tr>
+                    </thead>
+                </table>
+        </div>
+    </div>
+
+    <script type="text/javascript">
+
+        function formatterUA(value, row, index) {
+            return Math.round(value*10000) / 100 + '%';
+        }
+
+        $(document).ready(function () {
+            var ctime = new Date();
+            var beginDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + ctime.getDate() + " 7:00:00";
+            var endDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + (ctime.getDate() + 1) + " 7:00:00";
+            $("#datebeginMaster").datebox("setValue", beginDate);
+            $("#dateendMaster").datebox("setValue", endDate);
+
+            //tbSearchSubmit();
+
+        });
+
+        //主表双击事件
+        function dgDblclickrow(index, row) {
+            $("#tableTabs").tabs("select", 1);
+            LoadDataGridDetail(index, row);
+        }
+
+        // 清空恢复默认值 陈强
+        function toClear() {
+            var ctime = new Date();
+            var beginDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + ctime.getDate() + " 7:00:00";
+            var endDate = ctime.getFullYear() + "-" + (ctime.getMonth() + 1) + "-" + (ctime.getDate() + 1) + " 7:00:00";
+            $("#datebeginMaster").datebox("setValue", beginDate);
+            $("#dateendMaster").datebox("setValue", endDate);
+        }
+
+        //加载子表数据
+        function LoadDataGridDetail(index, row) {
+            //加载子表1
+            //var id = $('#DataGridMaster').datagrid('getSelections')[0]['SID'];
+            var id = row['工序编号'];
+            $('#DataGrid1').datagridLoad({
+                idField: '工序编号',
+                url: 'rpt.ashx?m=1&id=' + id + '&goodstypecodeMaster=' + $('#goodstypecodeMaster').combotree('getValue') + '&goodsidMaster=' + $("#goodsidMaster").combobox('getValues'),
+                pageSize: 10,
+                fixWidth: 160,
+                mergeWidth: 100,
+                splitChar: '_'
+            });
+        }
+
+        //搜索提交
+        function tbSearchSubmit() {
+            var index = $('#tableTabs').tabs('getTabIndex', $('#tableTabs').tabs('getSelected'));
+
+            if (index == 0) {
+                if ($('#ffMaster').form("validate")) {
+                    $('#DataGrid' + index).datagridLoadRpt({
+                        title: '',
+                        idField: 'SID',
+                        queryParams: $('#ffMaster').serializeJson(),
+                        url: 'rpt.ashx?m=' + 0 + '&id=' + request('id'),
+                        pageSize: 10,
+                        fixWidth: 100,
+                        mergeWidth: 120,
+                        splitChar: '$'
+                    });
+                }
+            }
+
+            if (index == 1) {
+                if ($('#ffMaster').form("validate")) {
+                    $('#DataGrid' + index).datagridLoadRpt({
+                        title: '',
+                        idField: 'SID',
+                        queryParams: $('#ffMaster').serializeJson(),
+                        url: 'rpt.ashx?m=' + index,
+                        pageSize: 10,
+                        fixWidth: 100,
+                        mergeWidth: 120,
+                        splitChar: '$'
+                    });
+                }
+            }
+
+        }
+
+        //导出
+        function tbExport() {
+            var index = $('#tableTabs').tabs('getTabIndex', $('#tableTabs').tabs('getSelected'));
+
+            if (index == 0) {
+                //加载表头
+                var fields1 = $('#DataGrid' + index).datagrid('getColumnFields');
+                var fields2 = $('#DataGrid' + index).datagrid('getColumnFields', true);
+                var fields = fields2.concat(fields1);
+                var headers = [];
+                for (var i = 0; i < fields.length; i++) {
+                    //headers.push($('#DataGridMaster').datagrid('getColumnOption', fields[i])['title']);
+                    headers.push(fields[i]);
+                }
+                $('#DataGrid' + index).datagridExport({
+                    headers: headers,
+                    fileName: '导出数据(在产产品汇总表).xls',
+                    workSheet: '导出数据(在产产品汇总表)'
+                });
+            }
+
+            if (index == 1) {
+                //加载表头
+                var fields1 = $('#DataGrid' + index).datagrid('getColumnFields');
+                var fields2 = $('#DataGrid' + index).datagrid('getColumnFields', true);
+                var fields = fields2.concat(fields1);
+                var headers = [];
+                for (var i = 0; i < fields.length; i++) {
+                    //headers.push($('#DataGridMaster').datagrid('getColumnOption', fields[i])['title']);
+                    headers.push(fields[i]);
+                }
+                $('#DataGrid' + index).datagridExport({
+                    headers: headers,
+                    fileName: '导出数据(在产产品明细表).xls',
+                    workSheet: '导出数据(在产产品明细表)'
+                });
+            }
+
+            //$('#DataGridMaster').datagridExport({
+            //    headers: headers,
+            //    fileName: '导出数据(表名).xls',
+            //    workSheet: '导出数据(表名)'
+            //});
+
+            //导出多sheet
+            //$.dataGridToExcel(
+            //    ['DataGridMaster', 'DataGridDetail1', 'DataGridDetail2'],
+            //    ['表名','表名明细表1', '表名明细表2'],
+            //    "导出数据(表名).xls"
+            //);
+        }
+
+        //搜索按钮
+        function tbSearch() {
+            $('#tbSearchDiv').toggle();
+            //$('#DataGridMaster').datagrid('resize');
+            $('#toolbarLayout').panel('resize', { height: 'auto' });
+            $('body').layout('resize');
+            $('#tableTabs').tabs('resize');
+        }
+
+        //刷新
+        function tbReload() {
+            tbSearchSubmit();
+        }
+
+        //帮助事件
+        function tbHelp() {
+            $('#DataGrid0').datagridDialog({
+                title: '帮助',
+                width: 640,
+                height: 480,
+                url: 'rpt_help.html'
+            });
+        }
+    </script>
+</body>
+</html>