Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cloud-fb
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
王衍超
cloud-fb
Commits
08abb45c
Commit
08abb45c
authored
Apr 30, 2021
by
杨清松
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
临时销售计划校验
parent
57378297
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
108 additions
and
3 deletions
+108
-3
SalesPlanDao.java
.../src/main/java/com/xyst/dinas/sales/dao/SalesPlanDao.java
+19
-0
SalesPlanServiceImpl.java
...st/dinas/sales/internal/service/SalesPlanServiceImpl.java
+80
-3
SalesPlanService.java
...n/java/com/xyst/dinas/sales/service/SalesPlanService.java
+2
-0
SalesPlanController.java
...in/java/com/xyst/dinas/sales/web/SalesPlanController.java
+7
-0
No files found.
backend/xyst.dinas.sales/src/main/java/com/xyst/dinas/sales/dao/SalesPlanDao.java
View file @
08abb45c
...
...
@@ -157,4 +157,23 @@ public class SalesPlanDao {
});
}
/**
* 查找指定时间范围内的已提交或已审批的销售计划
* @param startTime
* @param endTime
* @return
*/
public
List
<
KObject
>
querySalesPlanByTime
(
Date
startTime
,
Date
endTime
)
{
return
template
.
execute
(
session
->{
String
hql
=
"from "
+
SalesPlanConstant
.
ENTITY
+
" where planningCycle.startTime >=:startTime and planningCycle.endTime <=:endTime"
+
" and (approveState = 1 or approveState =2)"
;
Query
<
KObject
>
query
=
session
.
createQuery
(
hql
,
KObject
.
class
);
query
.
setParameter
(
"startTime"
,
startTime
);
query
.
setParameter
(
"endTime"
,
endTime
);
List
<
KObject
>
resultList
=
query
.
getResultList
();
return
resultList
;
});
}
}
backend/xyst.dinas.sales/src/main/java/com/xyst/dinas/sales/internal/service/SalesPlanServiceImpl.java
View file @
08abb45c
...
...
@@ -30,6 +30,7 @@ import com.beecode.xlib.utils.StringUtil;
import
com.jiuqi.np.syntax.parser.ANTLRParser.ifthen_eval_return
;
import
com.xyst.dinas.biz.constant.DinasTypeConstant
;
import
com.xyst.dinas.biz.constant.PlanningCycleConstant
;
import
com.xyst.dinas.biz.service.PlanningCycleService
;
import
com.xyst.dinas.biz.service.StationService
;
import
com.xyst.dinas.contract.constant.ContractConstant
;
import
com.xyst.dinas.project.constant.ProjectFiledConstant
;
...
...
@@ -57,6 +58,9 @@ public class SalesPlanServiceImpl implements SalesPlanService{
private
NeedPlanService
needPlanService
;
@Autowired
private
PlanningCycleService
planningCycleService
;
@Autowired
private
StaffService
staffService
;
@Transactional
...
...
@@ -312,6 +316,7 @@ public class SalesPlanServiceImpl implements SalesPlanService{
verifyMap
.
put
(
"dinasTypeName"
,
jsonObject
.
getString
(
"dinasTypeName"
));
verifyMap
.
put
(
"projectName"
,
jsonObject
.
getString
(
"projectName"
));
verifyMap
.
put
(
"distributedVolum"
,
distributedVolum
);
verifyMap
.
put
(
"contractAmount"
,
jsonObject
.
getBigDecimal
(
"contractAmount"
));
verifyList
.
add
(
verifyMap
);
}
}
...
...
@@ -336,7 +341,7 @@ public class SalesPlanServiceImpl implements SalesPlanService{
if
(
salesTempPlanByTimeList
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
salesTempPlanByTimeList
.
size
();
i
++)
{
KObject
salesTempPlan
=
salesTempPlanByTimeList
.
get
(
i
);
List
<
KObject
>
salesPlanTempDetails
=
salesTempPlan
.
get
(
"SalesPlanTempDetail"
).
toList
();
List
<
KObject
>
salesPlanTempDetails
=
salesTempPlan
.
get
(
"SalesPlanTempDetail
s
"
).
toList
();
KObject
salesPlanTempDetail
=
salesPlanTempDetails
.
stream
().
filter
(
detail
->
detail
.
get
(
"dinasType"
).
getUuid
(
"id"
).
equals
(
dinasTypeId
)).
findAny
().
orElse
(
null
);
if
(
salesPlanTempDetail
!=
null
)
{
totalSalesPlanAmount
=
totalSalesPlanAmount
.
add
(
salesPlanTempDetail
.
getBigDecimal
(
"salesPlanAmount"
));
...
...
@@ -377,7 +382,7 @@ public class SalesPlanServiceImpl implements SalesPlanService{
if
(
salesTempPlanByTimeList
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
salesTempPlanByTimeList
.
size
();
i
++)
{
KObject
salesTempPlan
=
salesTempPlanByTimeList
.
get
(
i
);
List
<
KObject
>
salesPlanTempDetails
=
salesTempPlan
.
get
(
"SalesPlanTempDetail"
).
toList
();
List
<
KObject
>
salesPlanTempDetails
=
salesTempPlan
.
get
(
"SalesPlanTempDetail
s
"
).
toList
();
KObject
salesPlanTempDetail
=
salesPlanTempDetails
.
stream
().
filter
(
detail
->
detail
.
get
(
"dinasType"
).
getUuid
(
"id"
).
equals
(
dinasTypeId
)).
findAny
().
orElse
(
null
);
if
(
salesPlanTempDetail
!=
null
)
{
totalSalesPlanAmount
=
totalSalesPlanAmount
.
add
(
salesPlanTempDetail
.
getBigDecimal
(
"salesPlanAmount"
));
...
...
@@ -393,7 +398,79 @@ public class SalesPlanServiceImpl implements SalesPlanService{
return
ResponseObj
.
success
(
"提交成功"
);
}
@Override
public
Object
submitTempSalesPlan
(
JSONObject
jsonObject
)
{
List
<
Map
<
String
,
Object
>>
verifyTempSalesPlanList
=
verifyTempSalesPlan
(
jsonObject
);
if
(
verifyTempSalesPlanList
.
size
()
>
0
)
{
return
ResponseObj
.
success
(
"校验不通过"
,
verifyTempSalesPlanList
);
}
else
{
return
ResponseObj
.
success
(
null
);
}
}
public
List
<
Map
<
String
,
Object
>>
verifyTempSalesPlan
(
JSONObject
jsonObject
)
{
//获取计划周期
UUID
planningCycleId
=
UUID
.
fromString
(
jsonObject
.
getJSONObject
(
"planningCycle"
).
getString
(
"id"
));
KObject
planningCycle
=
planningCycleService
.
load
(
planningCycleId
);
//计划周期
Date
startTime
=
planningCycle
.
getDate
(
PlanningCycleConstant
.
startTime
);
Date
endTime
=
planningCycle
.
getDate
(
PlanningCycleConstant
.
endTime
);
UUID
contractId
=
UUID
.
fromString
(
jsonObject
.
getJSONObject
(
"contract"
).
getString
(
"id"
));
//根据开始时间和结束时间查询临时销售计划
List
<
KObject
>
salesTempPlanByTimeList
=
salesPlanDao
.
querySalesTempPlanByTime
(
startTime
,
endTime
,
contractId
);
//根据开始时间和结束时间查询销售计划
List
<
KObject
>
salesPlanByTimeList
=
salesPlanDao
.
querySalesPlanByTime
(
startTime
,
endTime
);
//获取临时销售计划明细
JSONArray
salesPlanTempDetails
=
jsonObject
.
getJSONArray
(
"SalesPlanTempDetails"
);
List
<
Map
<
String
,
Object
>>
verifyList
=
new
ArrayList
<
Map
<
String
,
Object
>>();
if
(
salesPlanTempDetails
.
length
()
>
0
)
{
for
(
int
i
=
0
;
i
<
salesPlanTempDetails
.
length
();
i
++)
{
JSONObject
salesPlanTempDetail
=
salesPlanTempDetails
.
getJSONObject
(
i
);
//获取砂石类型
UUID
dinasTypeId
=
UUID
.
fromString
(
salesPlanTempDetail
.
getJSONObject
(
"dinasType"
).
getString
(
"id"
));
BigDecimal
contractAvailableAmount
=
salesPlanTempDetail
.
getBigDecimal
(
"contractAvailableAmount"
);
//合同可用余量
BigDecimal
actualSaleAmount
=
salesPlanTempDetail
.
getBigDecimal
(
"actualSaleAmount"
);
//实际销售量
BigDecimal
salesPlanAmount
=
salesPlanTempDetail
.
getBigDecimal
(
"salesPlanAmount"
);
//本期分配量
//查询同一计划周期内,同一个合同和砂石类型下的临时销售计划分配量之和
//筛选同一个砂石类型下的明细
//计算临时销售计划本期分配量之和
BigDecimal
totalTempSalesPlanAmount
=
new
BigDecimal
(
"0"
);
if
(
salesTempPlanByTimeList
.
size
()
>
0
)
{
for
(
int
k
=
0
;
k
<
salesTempPlanByTimeList
.
size
();
k
++)
{
KObject
salesTempPlan
=
salesTempPlanByTimeList
.
get
(
k
);
List
<
KObject
>
oldSalesPlanTempDetails
=
salesTempPlan
.
get
(
"SalesPlanTempDetails"
).
toList
();
KObject
oldSalesPlanTempDetail
=
oldSalesPlanTempDetails
.
stream
().
filter
(
detail
->
detail
.
get
(
"dinasType"
).
getUuid
(
"id"
).
equals
(
dinasTypeId
)).
findAny
().
orElse
(
null
);
if
(
oldSalesPlanTempDetail
!=
null
)
{
totalTempSalesPlanAmount
=
totalTempSalesPlanAmount
.
add
(
oldSalesPlanTempDetail
.
getBigDecimal
(
"salesPlanAmount"
));
}
}
}
//查询同一计划周期内,同一个合同和砂石类型下的销售计划分配量之和
BigDecimal
totalSalesPlanAmount
=
new
BigDecimal
(
"0"
);
if
(
salesPlanByTimeList
.
size
()
>
0
)
{
for
(
int
k
=
0
;
k
<
salesPlanByTimeList
.
size
();
k
++)
{
KObject
salesPlan
=
salesPlanByTimeList
.
get
(
k
);
List
<
KObject
>
oldSalesPlanDetails
=
salesPlan
.
get
(
"SalesPlanDetails"
).
toList
();
KObject
oldSalesPlanDetail
=
oldSalesPlanDetails
.
stream
().
filter
(
detail
->
detail
.
get
(
"dinasType"
).
getUuid
(
"id"
).
equals
(
dinasTypeId
)
&&
detail
.
get
(
"contract"
).
getUuid
(
"id"
).
equals
(
contractId
)).
findAny
().
orElse
(
null
);
if
(
oldSalesPlanDetail
!=
null
)
{
//合同与砂石类型共同筛选
totalSalesPlanAmount
=
totalSalesPlanAmount
.
add
(
oldSalesPlanDetail
.
getBigDecimal
(
"planAmount"
));
}
}
}
//可分配量 <=合同可用余量+实际销售量 - 临时销售计划分配量之和 - 日常销售计划分配量
BigDecimal
distributedVolum
=
contractAvailableAmount
.
add
(
actualSaleAmount
).
subtract
(
totalTempSalesPlanAmount
).
subtract
(
totalSalesPlanAmount
);
if
(
salesPlanAmount
.
compareTo
(
BigDecimal
.
ZERO
)
!=
0
&&
(
salesPlanAmount
.
compareTo
(
distributedVolum
)
>
-
1
||
salesPlanAmount
.
compareTo
(
contractAvailableAmount
)
>
-
1
))
{
//大于等于
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"dinasTypeName"
,
salesPlanTempDetail
.
getString
(
"dinasTypeName"
));
map
.
put
(
"distributedVolum"
,
distributedVolum
);
map
.
put
(
"contractAvailableAmount"
,
salesPlanTempDetail
.
getBigDecimal
(
"contractAvailableAmount"
));
verifyList
.
add
(
map
);
}
}
}
return
verifyList
;
}
...
...
backend/xyst.dinas.sales/src/main/java/com/xyst/dinas/sales/service/SalesPlanService.java
View file @
08abb45c
...
...
@@ -56,5 +56,7 @@ public interface SalesPlanService {
public
List
<
Map
<
String
,
Object
>>
modify
(
JSONObject
jsonObject
);
public
Object
submitSalesPlan
(
UUID
jsonObject
);
public
Object
submitTempSalesPlan
(
JSONObject
jsonObject
);
}
backend/xyst.dinas.sales/src/main/java/com/xyst/dinas/sales/web/SalesPlanController.java
View file @
08abb45c
...
...
@@ -146,5 +146,12 @@ public class SalesPlanController {
return
ResponseObj
.
error
(
"操作失败"
,
null
);
}
}
//临时销售计划提交
@PostMapping
(
"/tempSalesPlan/submit"
)
public
Object
submitTempSalesPlan
(
@RequestBody
String
body
)
{
Object
jObject
=
salesPlanService
.
submitTempSalesPlan
(
new
JSONObject
(
body
));
return
jObject
;
}
}
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