Zend Studio9,10版本配置SVN并导入SVN项目教程

Continue Read..

zend studio 10.x版本,配合pc上的svn1.8+版本,

http://subclipse.tigris.org/update_1.10.x

除了Subclipse Integration for Mylyn 3.x (Optional)【Subclipse 集成到 Mylyn 3.x(可选)】不要选之外,其它的都选上;

 

 

 

 

http://jingyan.baidu.com/article/29697b9132b52eab20de3ca8.html

 

php 开发过程中,一个项目比较大的话,就需要很多人共同来完成。那么怎样来管理之间的相互配合,分工等呢??那么SVN这个神器就有用处了。SVN:代码版本管理软件。更多svn详细信息请查阅相关文档,这里就不详细介绍了。

 

工具/原料

  •  Zend Studio9开发工具

  • update_1.8.x插件

  •  如果没有zendstudio工具,参考http://jingyan.baidu.com/article/c275f6bac3502de33d7567a2.html

  •  svn插件地址:http://subclipse.tigris.org/update_1.8.x

方法/步骤

  1. 1

     打开Zend studio开发工具,点菜单栏的help->Install New Software...;如下图所示:

  2. 2

    在弹出窗口的 Work with 栏输入:http://subclipse.tigris.org/update_1.8.x,然后点 Add按钮

  3. 3

    弹出Add Repository窗口; 如果在下边出现两项:Subclipse 和SVNkit两项的话,直接关闭该窗口;在Name栏输入;subversion; 在Location栏输入;http://subclipse.tigris.org/update_1.8.x,然后点ok 按钮;在如下图所示:

  4. 4

    或者栏输入:http://subclipse.tigris.org/update_1.8.x,后等一会,直接出现:Subclipse 和SVNkit两项,直接选中这两个;然后点击下一步;

  5. 5

     在下边出现两项:Subclipse 和SVNkit,两个都选中,并将Subclipse中的:Subclipse Integration for Myiyn 3.x (optional)这项不要选中,然后点击Next按钮;如下图所示:

  6. 6

    点击:Next  按钮;如图所示:

  7. 7

    选中 I accept the terms of the license agreement,并点击Next按钮;如下图所示:

  8. 8

     正在安装界面;如下图所示:

  9. 9

    安装过程中,弹出的Security Warning对话框,点击OK按钮;如下图所示:

  10. 10

     安装完之后,弹出Software updates对话框,则点击Restart Now重启zendstudio;如下图所示:

  11. 11

     重启完成后,在PHP Explore 区域空白处右键,选择Import;如下图所示:

  12. 12

    然后再弹出的窗口中找到SVN菜单,并选中Project from SVN(从SVN 检出项目),再点击Next按钮;如下图所示:

  13. 13

     选中 Create a  new Repository location(创建新的资源位置) ,并点击Next按钮;如下图所示:

  14. 14

     配置链接SVN服务器信息,填写完成之后点击Next按钮;如下图所示:

  15. 15

    点击:Finish按钮;如下图所示:

  16. 16

     在弹出的Check out as 窗口中点击:Finish按钮;如下图所示:

  17. 17

     选中检测出的项目,并点击OK按钮;如下图所示:

  18. 18

     正在从svn服务器将项目下载到本地;如下图所示:

  19. 19

    从SVN服务器导入项目完成,如下图所示:

    END

注意事项

  •  安装svn插件时的:work with地址,一定要填写正确;

  •  链接SVN服务器时的配置信息要正确。

【HTML5】本地存储

Continue Read..
<!DOCTYPE html>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>本地存储</title>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport">

/*
var userData = {
name:"cuzn",
tel:"13652547474"
};
localStorage.setItem("xx",JSON.stringify(userData));
*/
var aa = JSON.parse(localStorage.getItem("xx"));
alert(aa.name);

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

yii请求转发(proxy)

Continue Read..

        目前web开发流行restful方式,app与api分离,app对外服务,数据操作交给api层,api的域名不对外解析,处在内网中.

        在做支付的时候,支付网关放在了api层,用户在第三方支付成功后,notify和return的通知没有办法访问到内网的api地址,

        我们也不希望将api对外暴露,这时候就需要一个专门的转发(proxy)了.

        需求:

        api的payment控制器下有好几个支付平台接口,每个平台都有notify和return,

        希望第三方的回调请求app层,有app层的proxyController转发请求到api去

    

        首先可以想到在proxyController中写多个方法,与api的payment控制器下方法一一对应,但是这种方式太麻烦了,以后添加新支付平台的时候又需要修改,于是我们可以改进下,任何请求到达proxyController的时候,都直接转发到api的payment控制器的对应方法去.

        在Ccontroller中的run()中,写了框架寻找action的方式

public function run($actionID)
	{
		if(($action=$this->createAction($actionID))!==null)
		{
			if(($parent=$this->getModule())===null)
				$parent=Yii::app();
			if($parent->beforeControllerAction($this,$action))
			{
				$this->runActionWithFilters($action,$this->filters());
				$parent->afterControllerAction($this,$action);
			}
		}
		else
			$this->missingAction($actionID);
	}

        这里可以看出,请求proxyController的方法不存在时,会直接报错,

        我们可以在proxyController中重载run()方法,让他在proxyController中createAction失败的时候,

        去api的payment中找对应的方法,代码如下

//重写寻找action处理
	public function run($actionID)
	{
		if(($action=$this->createAction($actionID))!==null)
		{
			if(($parent=$this->getModule())===null)
				$parent=Yii::app();
			if($parent->beforeControllerAction($this,$action))
			{
				$this->runActionWithFilters($action,$this->filters());
				$parent->afterControllerAction($this,$action);
			}
		}
		else
		{
			//$this->missingAction($actionID);
			$this->destinationURL = Yii::app()->payment_api->host.'/Payment/'.$actionID;
			$method = $_SERVER['REQUEST_METHOD'];
			$response = $this->proxy_request($this->destinationURL, ($method == "GET" ? $_GET : $_POST), $method);
			//var_dump($response);exit;
			$headerArray = explode("\r\n", $response['header']);
			//var_dump($headerArray);//exit;
			foreach($headerArray as $k=>$v) {
				header($v);
			}
			echo $response['content'];
		}
			
	}

这样,就降低了程序的维护成本,以后新增或修改支付接口不用在去管这个proxy了


proxyController代码如下,destinationURL更改为目标地址

<?php
/*
 * @author
 * @version $Id$
 * 由php-transparent-proxy代码更改
 * https://github.com/eslachance/php-transparent-proxy/blob/master/proxy.php
 * 
 * 任何访问此控制器的请求,被转发到http://api/Payment/方法名
 * example:
 * 访问
 * http://app/proxy/ali_notify
 * 请求被转发到
 * http://api/Payment/ali_notify
 */
class ProxyController extends CController{
	
	// Destination URL: Where this proxy leads to.
	public $destinationURL = '';
	
	//重写寻找action处理
	public function run($actionID)
	{
		if(($action=$this->createAction($actionID))!==null)
		{
			if(($parent=$this->getModule())===null)
				$parent=Yii::app();
			if($parent->beforeControllerAction($this,$action))
			{
				$this->runActionWithFilters($action,$this->filters());
				$parent->afterControllerAction($this,$action);
			}
		}
		else
		{
			//$this->missingAction($actionID);
			$this->destinationURL = Yii::app()->payment_api->host.'/Payment/'.$actionID;
			$method = $_SERVER['REQUEST_METHOD'];
			$response = $this->proxy_request($this->destinationURL, ($method == "GET" ? $_GET : $_POST), $method);
			//var_dump($response);exit;
			$headerArray = explode("\r\n", $response['header']);
			//var_dump($headerArray);//exit;
			foreach($headerArray as $k=>$v) {
				header($v);
			}
			echo $response['content'];
		}
			
	}
	
	public function proxy_request($url, $data, $method) {
		// Based on post_request from http://www.jonasjohn.de/snippets/php/post-request.htm
		$ip = $this->getIp();
		// Convert the data array into URL Parameters like a=b&foo=bar etc.
		$data = http_build_query($data);
		$datalength = strlen($data);
	
		// parse the given URL
		$url = parse_url($url);
	
		if ($url['scheme'] != 'http') {
			die('Error: Only HTTP request are supported !');
		}
	
		// extract host and path:
		$host = $url['host'];
		$path = $url['path'];
	
		// open a socket connection on port 80 - timeout: 30 sec
		$fp = fsockopen($host, 80, $errno, $errstr, 30);
	
		if ($fp){
			// send the request headers:
			if($method == "POST") {
				fputs($fp, "POST $path HTTP/1.1\r\n");
			} else {
				fputs($fp, "GET $path?$data HTTP/1.1\r\n");
			}
			fputs($fp, "Host: $host\r\n");
			fputs($fp, "X-Forwarded-For: $ip\r\n");
			fputs($fp, "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n");
	
			if(!function_exists('apache_request_headers')) {
				// Function is from: http://www.electrictoolbox.com/php-get-headers-sent-from-browser/
				function apache_request_headers() {
					$headers = array();
					foreach($_SERVER as $key => $value) {
						if(substr($key, 0, 5) == 'HTTP_') {
							$headers[str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))))] = $value;
						}
					}
					return $headers;
				}
			}
			$requestHeaders = apache_request_headers();
			while ((list($header, $value) = each($requestHeaders))) {
				if($header == "Content-Length") {
					fputs($fp, "Content-Length: $datalength\r\n");
				} else if($header !== "Connection" && $header !== "Host" && $header !== "Content-length") {
					fputs($fp, "$header: $value\r\n");
				}
			}
			fputs($fp, "Connection: close\r\n\r\n");
			fputs($fp, $data);
	
			$result = '';
			while(!feof($fp)) {
				// receive the results of the request
				$result .= fgets($fp, 128);
			}
		}else {
			return array(
					'status' => 'err',
					'error' => "$errstr ($errno)"
			);
		}
	
		// close the socket connection:
		fclose($fp);
	
		// split the result header from the content
		$result = explode("\r\n\r\n", $result, 2);
		$header = isset($result[0]) ? $result[0] : '';
		$content = isset($result[1]) ? $result[1] : '';
	
		// return as structured array:
		return array(
				'status' => 'ok',
				'header' => $header,
				'content' => $content
		);
	}
	
	// Figure out requester's IP to shipt it to X-Forwarded-For
	public function getIp(){
		$ip = '';
		if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
			$ip = $_SERVER['HTTP_CLIENT_IP'];
			//echo "HTTP_CLIENT_IP: ".$ip;
		} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
			$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
			//echo "HTTP_X_FORWARDED_FOR: ".$ip;
		} else {
			$ip = $_SERVER['REMOTE_ADDR'];
			//echo "REMOTE_ADDR: ".$ip;
		}
		return $ip;
	}
	
}



声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

[转载]Linux系统下查看目录大小

Continue Read..

作者:iamlaosong

http://blog.csdn.net/iamlaosong/article/details/7085178

 我们有个系统每天要下载数据,为了检查下载数据是否正常,需要查看下载数据目录大小,因为每天的数据都差不多,如果变化太大就说明不正常。查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小;du *,就是查看当前目录下各子目录和文件的大小。

为了提高查看效果,我们需要对结果进行排序,因为du的命令结果很乱,例如:

从大到小排列:du ems_data | sort -nr

按目录名排列:du ems_data | sort +1 -2

选出排在前面的10个:du ems_data | sort -rn | head

选出排在后面的10个:du ems_data  | sort -rn | tail

当前目录的大小:du -sh .

===================================================

附:linux中du命令参数的用法,并用示例进一步说明其使用方法。

Du命令功能说明:统计目录(或文件)所占磁盘空间的大小。

语  法:du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-depth=<目录层数>][--help][--version][目录或文件]

常用参数:

-a或--all  为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。

-b或--bytes 显示目录或文件大小时,以byte为单位。

-c或--total 除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。

-D或--dereference-args 显示指定符号连接的源文件大小。

-h或--human-readable 以K,M,G为单位,提高信息的可读性。

-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。

-k或--kilobytes 以1024 bytes为单位。

-l或--count-links 重复计算硬件连接的文件。

-L<符号连接>或--dereference<符号连接> 显示选项中所指定符号连接的源文件大小。

-m或--megabytes 以1MB为单位。

-s或--summarize 仅显示总计,即当前目录的大小。

-S或--separate-dirs 显示每个目录的大小时,并不含其子目录的大小。

-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。

-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。

--exclude=<目录或文件> 略过指定的目录或文件。

--max-depth=<目录层数> 超过指定层数的目录后,予以忽略。

--help 显示帮助。

--version 显示版本信息。

linux中的du命令使用示例:

1> 要显示一个目录树及其每个子树的磁盘使用情况

du /home/linux

这在/home/linux目录及其每个子目录中显示了磁盘块数。

2> 要通过以1024字节为单位显示一个目录树及其每个子树的磁盘使用情况

du -k /home/linux

这在/home/linux目录及其每个子目录中显示了 1024 字节磁盘块数。

3> 以MB为单位显示一个目录树及其每个子树的磁盘使用情况

du -m /home/linux

这在/home/linux目录及其每个子目录中显示了 MB 磁盘块数。

4> 以GB为单位显示一个目录树及其每个子树的磁盘使用情况

du -g /home/linux

这在/home/linux目录及其每个子目录中显示了 GB 磁盘块数。

5>查看当前目录下所有目录以及子目录的大小:

du -h .

“.”代表当前目录下。也可以换成一个明确的路径

-h表示用K、M、G的人性化形式显示

6>查看当前目录下user目录的大小,并不想看其他目录以及其子目录:

du -sh user

-s表示总结的意思,即只列出一个总结的值

du -h --max-depth=0 user

--max-depth=n表示只深入到第n层目录,此处设置为0,即表示不深入到子目录。

7>列出user目录及其子目录下所有目录和文件的大小:

du -ah user

-a表示包括目录和文件

8>列出当前目录中的目录名不包括xyz字符串的目录的大小:

du -h --exclude=’*xyz*’

9>想在一个屏幕下列出更多的关于user目录及子目录大小的信息:

du -0h user

-0(杠零)表示每列出一个目录的信息,不换行,而是直接输出下一个目录的信息。

10>只显示一个目录树的全部磁盘使用情况

du  -s /home/linux

注意:参数是多个字符时,前面的减号“–”是两个。

sql获取状态或数量

Continue Read..

html:

<div class="lists-tab-tags01">

                    <a <%=status == "-1"?"class=cur":"" %> href="ChestApplyMgr.aspx?status=-1&schestkey=<%=schestkey %>&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                        title="点击">全部状态(<%=all %>)</a> |<a <%=status == "0"?"class=cur":"" %> href="ChestApplyMgr.aspx?status=0&schestkey=<%=schestkey %>&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                            title="点击">未审核(<%=newapply %>)</a> |<a <%=status == "7"?"class=cur":"" %> href="ChestApplyMgr.aspx?status=7&schestkey=<%=schestkey %>&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                                title="点击">已审核(<%=approveapply %>)</a> |<a <%=status == "6"?"class=cur":"" %> href="ChestApplyMgr.aspx?status=6&schestkey=<%=schestkey %>&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                                    title="点击">已撤销(<%=cancelapply %>)</a>

                </div>

 

后台:

if (!IsPostBack)

        {            

            if (Request.QueryString["start"] != null)

                tbStart.Text = Request.QueryString["start"].ToString();

 

            if (Request.QueryString["end"] != null)

                tbEnd.Text = Request.QueryString["end"].ToString();

 

            ViewState["chestkey"] = schestkey;

 

            //绑定药柜

            BindChestApplys();

 

            if (Request.QueryString["chestkey"] != null)

                ddl_yg.SelectedValue = Request.QueryString["chestkey"].ToString();

 

            //绑定状态及数量

            BindChestApplyStatusCount();

        }

 

#region 数量/状态

    public int newapply

    {

        get

        {

            return ViewState["newapply"] == null ? 0 : (int)ViewState["newapply"];

        }

        set

        {

            ViewState["newapply"] = value;

        }

    }

 

    public int approveapply

    {

        get

        {

            return ViewState["approveapply"] == null ? 0 : (int)ViewState["approveapply"];

        }

        set

        {

            ViewState["approveapply"] = value;

        }

    }

 

    public int cancelapply

    {

        get

        {

            return ViewState["cancelapply"] == null ? 0 : (int)ViewState["cancelapply"];

        }

        set

        {

            ViewState["cancelapply"] = value;

        }

    }

 

    public int all

    {

        get

        {

            return ViewState["all"] == null ? 0 : (int)ViewState["all"];

        }

        set

        {

            ViewState["all"] = value;

        }

    }

 

    #endregion

 

 //绑定药柜及其申领数量

    private void BindChestApplyStatusCount()

    {

        newapply = 0;

        cancelapply = 0;

        approveapply = 0;

        string strwhere = " ";

 

        if (schestkey != "0")

            strwhere += " and a.ChestKey = '" + schestkey+"'";

       

        if (tbStart.Text != "")

            strwhere += " and CONVERT(varchar(100), a.ApplyLocalDtm, 23) >= '" + tbStart.Text + "'";

 

        if (tbEnd.Text != "")

            strwhere += " and CONVERT(varchar(100), a.ApplyLocalDtm, 23) <= '" + tbEnd.Text + "'";

 

        DataTable dt = new DataTable();

        dt = apply.BindChestApplyStatusCount(strwhere);

 

        all = dt.Rows.Count;

 

        for (int i = 0; i < dt.Rows.Count; i++)

        {

            if (Convert.ToInt32(dt.Rows[i][0]) == ApplyRecordState.New.GetHashCode())

                newapply++;

            if (Convert.ToInt32(dt.Rows[i][0]) == ApplyRecordState.Canceled.GetHashCode())

                cancelapply++;

            //if (Convert.ToInt32(dt.Rows[i][0]) == ApplyRecordState.Approved.GetHashCode())

            if (Convert.ToInt32(dt.Rows[i][0]) == ApplyRecordState.ForTaking.GetHashCode()

            || Convert.ToInt32(dt.Rows[i][0]) == ApplyRecordState.Taked.GetHashCode() 

            || Convert.ToInt32(dt.Rows[i][0]) == ApplyRecordState.Loaded.GetHashCode()

        || Convert.ToInt32(dt.Rows[i][0]) == ApplyRecordState.Approved.GetHashCode())

                approveapply++;

        }

    }

 

sql:

public DataTable BindChestApplyStatusCount(string strwhere)

        {

            DataTable dt = null;

 

//            string sql = @" select state from ms_item.ApplyRecord a

//             where chestkey != '0' and chestkey is not null " + strwhere;

 

            string sql = @" select a.state from ms_item.ApplyRecord a left join ms_station.Chest b on a.chestkey=b.chestkey

             where a.chestkey != '0' and b.chesttype=1 and a.chestkey is not null " + strwhere;

 

            DataSet ds = SqlHelper.ExecSqlDs(sql);

            if (ds != null && ds.Tables[0] != null)

            {

                dt = ds.Tables[0];

            }

            return dt;

        }

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

linq获取状态或数量

Continue Read..

html:

<div class="lists-tab-tags01">

                    <a <%=status == "-1"?"class=cur":"" %> href="UnShelveRecordMgr.aspx?status=-1&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                        title="点击">全部状态(<%=alls %>)</a> |<a <%=status == "0"?"class=cur":"" %> href="UnShelveRecordMgr.aspx?status=0&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                            title="点击">待下架(<%=news%>)</a> |<a <%=status == "1"?"class=cur":"" %> href="UnShelveRecordMgr.aspx?status=1&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                                title="点击">处理中(<%=doings%>)</a>|<a <%=status == "3"?"class=cur":"" %> href="UnShelveRecordMgr.aspx?status=3&chestkey=<%=chestkey %>&start=<%=tbStart.Text %>&end=<%=tbEnd.Text %>"

                                    title="点击">已完成(<%=finishs%>)</a>

                </div>

 

后台:

if (!IsPostBack)

        {

            BindUStatusCounts();

        }

 

    #region 下架单状态

    public int alls

    {//全部

        get

        {

            return ViewState["alls"] == null ? 0 : (int)ViewState["alls"];

        }

        set

        {

            ViewState["alls"] = value;

        }

    }

    public int news         //待下架

    {

        get

        {

            return ViewState["news"] == null ? 0 : (int)ViewState["news"];

        }

        set

        {

            ViewState["news"] = value;

        }

    }

    public int doings         //处理中

    {

        get

        {

            return ViewState["doings"] == null ? 0 : (int)ViewState["doings"];

        }

        set

        {

            ViewState["doings"] = value;

        }

    }

    public int finishs         //已完成

    {

        get

        {

            return ViewState["finishs"] == null ? 0 : (int)ViewState["finishs"];

        }

        set

        {

            ViewState["finishs"] = value;

        }

    }

    #endregion

private void BindUStatusCounts()

    {

        #region 搜索条件

 

        if (string.IsNullOrEmpty(this.tbStart.Text) && string.IsNullOrEmpty(this.tbEnd.Text))

        {

            tbStart.Text = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")).AddDays(-3).ToString("yyyy-MM-dd");

            tbEnd.Text = DateTime.Now.ToString("yyyy-MM-dd");

        }

 

        if (!string.IsNullOrEmpty(tbStart.Text))

            datest = tbStart.Text;

 

        if (!string.IsNullOrEmpty(tbEnd.Text))

            dateend = tbEnd.Text;

        #endregion

 

        var urss = new UnShelveRecordServices();

        List<UnShelveRecordServices.UStatusCount> usc = urss.GetUStatusCount(string.IsNullOrEmpty(tbStart.Text) ? DateTime.Now.AddHours(-24) : Convert.ToDateTime(tbStart.Text + " 00:00"),

            string.IsNullOrEmpty(tbEnd.Text) ? DateTime.Now.AddHours(24) : Convert.ToDateTime(tbEnd.Text + " 23:59"),

            (string.IsNullOrEmpty(ddl_yg.SelectedValue) ? "0" : ddl_yg.SelectedValue));

 

        #region 状态数量

        //新建

        if (usc.Select(C => C.UStatus == UnShelveState.New.GetHashCode()).Count() > 0)

            news = usc.Where(C => C.UStatus == UnShelveState.New.GetHashCode()).Select(C => C.Count).Sum();

        else

            news = 0;

 

        //处理中

        if (usc.Select(C => C.UStatus == UnShelveState.Processing.GetHashCode()).Count() > 0)

            doings = usc.Where(C => C.UStatus == UnShelveState.Processing.GetHashCode()).Select(C => C.Count).Sum();

        else

            doings = 0;

 

        //已完成

        if (usc.Select(C => C.UStatus == UnShelveState.Finished.GetHashCode()).Count() > 0)

            finishs = usc.Where(C => C.UStatus == UnShelveState.Finished.GetHashCode()).Select(C => C.Count).Sum();

        else

            finishs = 0;

 

        alls = news + doings + finishs;

        #endregion

    }

 

linq:

/// <summary>

        /// 下架单状态,数量

        /// </summary>

        public class UStatusCount

        {

            public UStatusCount() { }

            public UStatusCount(int ustatus, int count)

            {

                this.UStatus = ustatus;

                this.Count = count;

            }

            public int UStatus { get; set; }

            public int Count { get; set; }

 

        }

 

        /// <summary>

        /// 获取下架单状态数量方法

        /// </summary>

        public List<UStatusCount> GetUStatusCount(DateTime dtFrom, DateTime dtTo, string key)

        {

            MS_Entities entities = MyDynEntities;

 

            var result = entities.UnShelveRecord.Join(entities.Chest, c => c.ChestKey, x => x.ChestKey, (usr, ch) => new { usr, ch })

                .Where(c => c.usr.UnShelveTime >= dtFrom && c.usr.UnShelveTime <= dtTo && c.ch.ChestType != -1);

            if (key != "0")

                result = result.Where(c => c.usr.ChestKey.Contains(key));

 

            var ag = result.GroupBy(c => new { c.usr.State });

            List<UStatusCount> usc = new List<UStatusCount>();

 

            foreach (var a in ag)

            {

                usc.Add(new UStatusCount(a.Key.State.Value, a.Count()));

            }

 

            return usc;

        }


声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

分页获取数据列表

Continue Read..

html:

<div class="lists-table">

                    <table cellpadding="0" cellspacing="0" border="0">

                        <thead>

                            <tr>

                                <th class="tabSort-header">

                                    <a class="tabSort-header-inner" list="name">

                                        <p>

                                            下架单号 <span class="sort"></span>

                                        </p>

                                    </a>

                                </th>

                                <th class="tabSort-header">

                                    <a class="tabSort-header-inner" list="ip">

                                        <p>

                                            药柜名称<span class="sort"></span></p>

                                    </a>

                                </th>

                                <th class="tabSort-header">

                                    <a class="tabSort-header-inner" list="examtimediget">

                                        <p>

                                            操作人<span class="sort"></span></p>

                                    </a>

                                </th>

                                <th class="tabSort-header">

                                    <a class="tabSort-header-inner" list="examtimediget">

                                        <p>

                                            创建时间<span class="sort"></span></p>

                                    </a>

                                </th>

                                <th class="tabSort-header">

                                    <a class="tabSort-header-inner" list="leak">

                                        <p>

                                            状态<span class="sort"></span></p>

                                    </a>

                                </th>

                            </tr>

                        </thead>

                        <tbody id="safeOpr">

                            <asp:Repeater ID="RepeaterUnshelveRe" runat="server" OnItemDataBound="RepeaterUnshelveRe_ItemDataBound">

                                <ItemTemplate>

                                    <tr>

                                        <td>

                                            <a href="UnShelveRecordDetailMgr.aspx?UnShelveRecordKey=<%#Eval("UnShelveRecordKey") %>"><%#Eval("UnShelveRecordNo")%></a>

                                        </td>

                                        <td>

                                            <div class="tdof" title="<%#Eval("NameText")%>" style="width: 250px;">

                                                <%#Eval("NameText")%></div>

                                        </td>

                                        <td>

                                            <%#Eval("OperatorName")%>

                                        </td>

                                        <td><%#Eval("UnShelveTime","{0:yyyy-MM-dd HH:mm}")%></td>

                                        

                                        <td><asp:Label Text='<%#Eval("State") %>' ID="lblState" runat="server"></asp:Label></td>

                                        

                                    </tr>

                                </ItemTemplate>

                            </asp:Repeater>

                        </tbody>

                        <%if (RepeaterUnshelveRe.Items.Count == 0)

                          {%>

                        <tr>

                            <td colspan="6" class="nodata">

                                没有数据可供显示

                            </td>

                        </tr>

                        <%} %>

                    </table>

                </div>

                <webdiyer:AspNetPager ID="AspNetPager1" runat="server" CssClass="paginator" CurrentPageButtonClass="cpb"

                    EnableTheming="true" FirstPageText="首页" HorizontalAlign="right" LastPageText="尾页"

                    NextPageText="下一页" PageIndexBoxType="DropDownList" PageSize="15" PrevPageText="上一页"

                    ShowPageIndexBox="Always" TextBeforePageIndexBox="跳转到: " UrlPaging="false" Width="100%"

                    OnPageChanged="PageChanged">

                </webdiyer:AspNetPager>

 

后台方法:

if (!IsPostBack)

        {

            SelectUSR();

        }

private void SelectUSR()

    {

        var usrs = new UnShelveRecordServices();

        int count = 0;

        AnesMS.DataModel.Entity.UnShelveState? unshelState = null;

 

        if (status != "-1")

        {

            int usrstatus = 0;

            int.TryParse(status, out usrstatus);

            unshelState = (AnesMS.DataModel.Entity.UnShelveState)usrstatus;

        }

 

        if (!string.IsNullOrEmpty(ddl_yg.SelectedValue))

        {

            chestkey = ddl_yg.SelectedValue;

        }

 

        var ds = usrs.GetUnShelveRecordList((string.IsNullOrEmpty(ddl_yg.SelectedValue) ? "0" : ddl_yg.SelectedValue),

            unshelState,

            string.IsNullOrEmpty(tbStart.Text) ? DateTime.Now.AddHours(-24) : Convert.ToDateTime(tbStart.Text + " 00:00"),

            string.IsNullOrEmpty(tbEnd.Text) ? DateTime.Now.AddHours(24) : Convert.ToDateTime(tbEnd.Text + " 23:59"),

            out count, (IsPostBack? this.AspNetPager1.CurrentPageIndex:pagenum), this.AspNetPager1.PageSize);

 

        if (ds == null) return;

        //分页控件初始参数

        this.AspNetPager1.RecordCount = count;

        if (IsPostBack)

            pagenum = this.AspNetPager1.CurrentPageIndex;

 

        if (ds != null && ds.Count > 0)

        {

            RepeaterUnshelveRe.DataSource = ds;

        }

        RepeaterUnshelveRe.DataBind();

    }

 

    protected void RepeaterUnshelveRe_ItemDataBound(object sender, RepeaterItemEventArgs e)

    {

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

        {

            DataRowView drv = e.Item.DataItem as DataRowView;

            

            //获取状态

            ((Label)e.Item.FindControl("lblState")).Text = GetEnumDesc(typeof(UnShelveState), Enum.Parse(typeof(UnShelveState), ((Label)e.Item.FindControl("lblState")).Text));

            if (((Label)e.Item.FindControl("lblState")).Text == "已完成")

            {

                ((Label)e.Item.FindControl("lblState")).ForeColor = System.Drawing.Color.FromName("#174B73");

            }

            else if (((Label)e.Item.FindControl("lblState")).Text == "待下架")

            {

                ((Label)e.Item.FindControl("lblState")).ForeColor = System.Drawing.Color.Red;

            }

            else if (((Label)e.Item.FindControl("lblState")).Text == "处理中")

            {

                ((Label)e.Item.FindControl("lblState")).ForeColor = System.Drawing.Color.Green;

            }

            else if (((Label)e.Item.FindControl("lblState")).Text == "已下架")

            {

                ((Label)e.Item.FindControl("lblState")).ForeColor = System.Drawing.Color.FromName("#8CC852");

            }

            //else

            //{

            //    ((Label)e.Item.FindControl("lblState")).ForeColor = System.Drawing.Color.FromName("#FF007F");//#FF00FF  8CC852  174B73

            //}

        }

    }

 

    protected void PageChanged(object sender, EventArgs e)

    {

        SelectUSR();

    }

 

linq:

/// <summary>

        /// 下架单页面:列表

        /// </summary>

        public IList<USRChInfo> GetUnShelveRecordList(string chestkey,UnShelveState? state, DateTime dtFrom, DateTime dtTo, out int count, int curPage = 1, int pageSize = 15)

        {

            try

            {

                var entity = MyDynEntities;

                count = 0;

                var status_Int = state.GetHashCode();

 

                IQueryable<USRChInfo> query = entity.UnShelveRecord.Join<UnShelveRecord, Chest, string, USRChInfo>(entity.Chest, x => x.ChestKey, c => c.ChestKey, (x, y) =>

                    new USRChInfo

                    {

                        UnShelveRecordKey=x.UnShelveRecordKey,

                        UnShelveRecordNo = x.UnShelveRecordNo,

                        ChestKey=x.ChestKey,

                        NameText = y.NameText,

                        ChestType=y.ChestType,

                        OperatorKey = x.OperatorKey,

                        OperatorName=x.OperatorName,

                        UnShelveTime = x.UnShelveTime,

                        State = x.State

                    }).Where(c => c.UnShelveTime >= dtFrom && c.UnShelveTime <= dtTo && c.ChestType!=-1);

                if (chestkey != "0")

                    query = query.Where(c => chestkey.Contains(c.ChestKey));

                if (state != null && status_Int!=-1)

                    query = query.Where(c => c.State == status_Int);

                count = query.Count();

                if (curPage > 0 && pageSize > 0)

                {

                    query = query.OrderByDescending(c => c.UnShelveTime).Skip((curPage - 1) * pageSize).Take(pageSize);

                }

                else

                    query = query.OrderByDescending(c => c.UnShelveTime);

 

                var QueryResult = query.OrderByDescending(c=>c.UnShelveTime).ToList();

                return QueryResult;

 

            }

            catch (Exception ex)

            {

                count = 0;

                LogHelper.Instance.CreateLog(ex);

                return null;

            }

        }


 

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

获取两个表的某字段

Continue Read..
info:
public class CChestInfo {
        public string ChestKey { get;set; }
        public string ChestUID { get; set; }
        public int? ChestType { get; set; }
        public string ItemKey { get; set; }
    }

方法:
public IList<CChestInfo> GetChestKeyByItemKey(IList<string> ItemKeys)
        {
            try
            {
                var entity = MyDynEntities;
                IQueryable<CChestInfo> query = entity.CellContent.Join<CellContent, Chest, string, CChestInfo>(entity.Chest, x => x.ChestKey, c => c.ChestKey, (x, y) =>
                    new CChestInfo
                    {
                        ChestKey = x.ChestKey,
                        ItemKey = x.ItemKey,
                        ChestType=y.ChestType,
                        ChestUID = y.ChestUID,                        
                    }).Where(c=>c.ChestType!=-1);
                query = query.Where(c => ItemKeys.Contains(c.ItemKey));
                var QueryResult = query.Distinct().ToList();
                return QueryResult;

            }
            catch (Exception ex)
            {
                LogHelper.Instance.CreateLog(ex);
                return null;
            }
        }

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

单条或多条添加

Continue Read..
public UnShelveRecord InsertUnShelveRecord(UnShelveRecord usr)
        {
            using (var entity = MyDynEntities)
            {
                DbTransaction trans = null;
                try
                {
                    entity.Connection.Open();
                    trans = entity.Connection.BeginTransaction();
                    entity.UnShelveRecord.AddObject(usr);
                    entity.SaveChanges();

                    //提交事务
                    trans.Commit();
                    return usr;
                }
                catch (Exception ex)
                {
                    if (trans != null)
                        trans.Rollback();

                    LogHelper.Instance.CreateLog(ex);
                    return null;
                }
            }
        }

        public IList<UnShelveRecord> InsertUnShelveRecord(IList<UnShelveRecord> usrs)
        {
            using (var entity = MyDynEntities)
            {
                DbTransaction trans = null;
                try
                {
                    entity.Connection.Open();
                    trans = entity.Connection.BeginTransaction();
                    usrs.ToList().ForEach(e => entity.UnShelveRecord.AddObject(e));
                    entity.SaveChanges();
                    //提交事务
                    trans.Commit();
                    return usrs;
                }
                catch (Exception ex)
                {
                    if (trans != null)
                        trans.Rollback();

                    LogHelper.Instance.CreateLog(ex);
                    return null;
                }
            }
        }

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

获取子表信息

Continue Read..
public IList<UnShelveRecordDetail> GetUnShelveRecordDetail(string usrkey)
        {
            try {
                var entity = MyDynEntities;
                var resultQuery = entity.UnShelveRecordDetail.Where(e => e.UnShelveRecordKey == usrkey).ToList();
                return resultQuery;
            }
            catch (Exception ex)
            {
                LogHelper.Instance.CreateLog(ex);
                return null;
            }
        }

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权