Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
TakeStock
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pengjinyang
TakeStock
Commits
1500b34d
Commit
1500b34d
authored
Jul 22, 2019
by
pengjinyang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交
parent
03e33f5d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
88 additions
and
11 deletions
+88
-11
ExpressionExtensions.cs
Common/Extensions/ExpressionExtensions.cs
+20
-3
SearchOrderInputDto.cs
TakeStock.Application/TakeStock/Dto/SearchOrderInputDto.cs
+2
-0
SearchScheduleInputDto.cs
...Stock.Application/TakeStock/Dto/SearchScheduleInputDto.cs
+16
-0
TakeStockAppService.cs
TakeStock.Application/TakeStock/TakeStockAppService.cs
+50
-8
No files found.
Common/Extensions/ExpressionExtensions.cs
View file @
1500b34d
...
...
@@ -9,6 +9,11 @@ namespace Common.Extensions
/// </summary>
public
static
class
ExpressionExtensions
{
public
static
Expression
<
Func
<
T
,
bool
>>
True
<
T
>()
{
return
f
=>
true
;
}
public
static
Expression
<
Func
<
T
,
bool
>>
False
<
T
>()
{
return
f
=>
false
;
}
/// <summary>
/// 或拼接
/// </summary>
...
...
@@ -30,11 +35,23 @@ namespace Common.Extensions
/// <param name="expr1"></param>
/// <param name="expr2"></param>
/// <returns></returns>
//public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2)
//{
// var invokedExpr = Expression.Invoke(expr2, expr1.Parameters.Cast<Expression>());
// return Expression.Lambda<Func<T, bool>>
// (Expression.And(expr1.Body, invokedExpr), expr1.Parameters);
//}
/// <summary>
/// 与拼接
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="expr1"></param>
/// <param name="expr2"></param>
/// <returns></returns>
public
static
Expression
<
Func
<
T
,
bool
>>
And
<
T
>(
this
Expression
<
Func
<
T
,
bool
>>
expr1
,
Expression
<
Func
<
T
,
bool
>>
expr2
)
{
var
invokedExpr
=
Expression
.
Invoke
(
expr2
,
expr1
.
Parameters
.
Cast
<
Expression
>());
return
Expression
.
Lambda
<
Func
<
T
,
bool
>>
(
Expression
.
And
(
expr1
.
Body
,
invokedExpr
),
expr1
.
Parameters
);
return
Expression
.
Lambda
<
Func
<
T
,
bool
>>(
Expression
.
And
(
expr1
.
Body
,
expr2
.
Body
),
expr1
.
Parameters
);
}
}
}
TakeStock.Application/TakeStock/Dto/SearchOrderInputDto.cs
View file @
1500b34d
...
...
@@ -12,5 +12,7 @@ namespace TakeStock.Application.TakeStock.Dto
public
string
Code
{
get
;
set
;
}
public
TSOrderState
?
State
{
get
;
set
;
}
public
string
Skus
{
get
;
set
;
}
}
}
TakeStock.Application/TakeStock/Dto/SearchScheduleInputDto.cs
View file @
1500b34d
...
...
@@ -8,7 +8,23 @@ namespace TakeStock.Application.TakeStock.Dto
public
class
SearchScheduleInputDto
{
public
string
Code
{
get
;
set
;
}
public
string
OrderCodes
{
get
;
set
;
}
public
string
WarehouseCode
{
get
;
set
;
}
public
TSScheduleState
?
State
{
get
;
set
;
}
/// <summary>
/// 盘点人Id
/// </summary>
public
int
ExecutorId
{
get
;
set
;
}
/// <summary>
/// 系统自动盘点
/// </summary>
public
bool
?
IsAutomation
{
get
;
set
;
}
public
string
Skus
{
get
;
set
;
}
}
}
TakeStock.Application/TakeStock/TakeStockAppService.cs
View file @
1500b34d
...
...
@@ -6,6 +6,7 @@ using Newtonsoft.Json;
using
Newtonsoft.Json.Linq
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Linq.Expressions
;
using
System.Threading.Tasks
;
using
TakeStock.Application.TakeStock.Dto
;
...
...
@@ -58,11 +59,39 @@ namespace TakeStock.Application.TakeStock
private
Expression
<
Func
<
TakeStockSchedule
,
bool
>>
ScheduleQuery
(
SearchScheduleInputDto
search
)
{
Expression
<
Func
<
TakeStockSchedule
,
bool
>>
expr
=
s
=>
true
;
Expression
<
Func
<
TakeStockSchedule
,
bool
>>
expr
=
ExpressionExtensions
.
True
<
TakeStockSchedule
>()
;
if
(!
string
.
IsNullOrWhiteSpace
(
search
.
Code
))
expr
.
And
(
s
=>
s
.
Code
.
Equals
(
search
.
Code
));
{
Expression
<
Func
<
TakeStockSchedule
,
bool
>>
temp
=
s
=>
s
.
Code
.
Equals
(
search
.
Code
);
expr
=
Expression
.
Lambda
<
Func
<
TakeStockSchedule
,
bool
>>(
Expression
.
And
(
expr
.
Body
,
temp
.
Body
),
expr
.
Parameters
);
//expr.And(s => s.Code.Equals(search.Code));
}
if
(
search
.
State
!=
null
)
expr
.
And
(
s
=>
s
.
State
.
Equals
(
search
.
State
));
{
Expression
<
Func
<
TakeStockSchedule
,
bool
>>
temp
=
s
=>
s
.
State
.
Equals
(
search
.
State
);
expr
=
Expression
.
Lambda
<
Func
<
TakeStockSchedule
,
bool
>>(
Expression
.
And
(
expr
.
Body
,
temp
.
Body
),
expr
.
Parameters
);
//expr.And(s => s.State.Equals(search.State));
}
if
(!
string
.
IsNullOrWhiteSpace
(
search
.
WarehouseCode
))
{
Expression
<
Func
<
TakeStockSchedule
,
bool
>>
temp
=
s
=>
s
.
WarehouseCode
.
Equals
(
search
.
WarehouseCode
);
expr
=
Expression
.
Lambda
<
Func
<
TakeStockSchedule
,
bool
>>(
Expression
.
And
(
expr
.
Body
,
temp
.
Body
),
expr
.
Parameters
);
//expr.And(s => s.State.Equals(search.State));
}
if
(
search
.
IsAutomation
!=
null
)
{
Expression
<
Func
<
TakeStockSchedule
,
bool
>>
temp
=
s
=>
s
.
IsAutomation
.
Equals
(
search
.
IsAutomation
);
expr
=
Expression
.
Lambda
<
Func
<
TakeStockSchedule
,
bool
>>(
Expression
.
And
(
expr
.
Body
,
temp
.
Body
),
expr
.
Parameters
);
//expr.And(s => s.State.Equals(search.State));
}
//if (!string.IsNullOrWhiteSpace(search.Skus))
//{
// string[] skus = search.Skus.Split(';');
// Expression<Func<TakeStockSchedule, bool>> temp = o => skus.Contains(o.Sku);
// expr = Expression.Lambda<Func<TakeStockSchedule, bool>>(Expression.And(expr.Body, temp.Body), expr.Parameters);
//}
return
expr
;
}
...
...
@@ -89,13 +118,26 @@ namespace TakeStock.Application.TakeStock
private
Expression
<
Func
<
TakeStockOrder
,
bool
>>
OrderQuery
(
SearchOrderInputDto
search
)
{
Expression
<
Func
<
TakeStockOrder
,
bool
>>
expr
=
s
=>
s
.
ScheduleId
==
search
.
ScheduleId
;
//if (search.ScheduleId > 0)
// expr.And();
Expression
<
Func
<
TakeStockOrder
,
bool
>>
expr
=
ExpressionExtensions
.
True
<
TakeStockOrder
>();
if
(!
string
.
IsNullOrWhiteSpace
(
search
.
Code
))
expr
.
And
(
s
=>
s
.
Code
.
Equals
(
search
.
Code
));
{
Expression
<
Func
<
TakeStockOrder
,
bool
>>
temp
=
o
=>
o
.
Code
.
Equals
(
search
.
Code
);
expr
=
Expression
.
Lambda
<
Func
<
TakeStockOrder
,
bool
>>(
Expression
.
And
(
expr
.
Body
,
temp
.
Body
),
expr
.
Parameters
);
//expr.And(s => s.Code.Equals(search.Code));
}
if
(
search
.
State
!=
null
)
expr
.
And
(
s
=>
s
.
State
.
Equals
(
search
.
State
));
{
Expression
<
Func
<
TakeStockOrder
,
bool
>>
temp
=
o
=>
o
.
State
.
Equals
(
search
.
State
);
expr
=
Expression
.
Lambda
<
Func
<
TakeStockOrder
,
bool
>>(
Expression
.
And
(
expr
.
Body
,
temp
.
Body
),
expr
.
Parameters
);
//expr.And(s => s.State.Equals(search.State));
}
if
(!
string
.
IsNullOrWhiteSpace
(
search
.
Skus
))
{
string
[]
skus
=
search
.
Skus
.
Split
(
';'
);
Expression
<
Func
<
TakeStockOrder
,
bool
>>
temp
=
o
=>
skus
.
Contains
(
o
.
Sku
);
expr
=
Expression
.
Lambda
<
Func
<
TakeStockOrder
,
bool
>>(
Expression
.
And
(
expr
.
Body
,
temp
.
Body
),
expr
.
Parameters
);
}
return
expr
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment