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
59559289
Commit
59559289
authored
Apr 29, 2021
by
杨清松
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
销售计划编辑增加可分配余量字段
parent
e2b722b1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
32 deletions
+46
-32
SalesPlanDetail.java
...ain/java/com/xyst/dinas/sales/entity/SalesPlanDetail.java
+8
-0
SalesPlanServiceImpl.java
...st/dinas/sales/internal/service/SalesPlanServiceImpl.java
+38
-32
No files found.
backend/xyst.dinas.sales/src/main/java/com/xyst/dinas/sales/entity/SalesPlanDetail.java
View file @
59559289
package
com
.
xyst
.
dinas
.
sales
.
entity
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.UUID
;
/**
* 销售计划明细
...
...
@@ -32,6 +33,7 @@ public class SalesPlanDetail implements Serializable{
private
Double
stockAmount
;
private
Double
planAmount
;
private
Double
actualSaleAmount
;
private
BigDecimal
distributedVolum
;
public
UUID
getMasterId
()
{
...
...
@@ -142,6 +144,12 @@ public class SalesPlanDetail implements Serializable{
public
void
setActualSaleAmount
(
Double
actualSaleAmount
)
{
this
.
actualSaleAmount
=
actualSaleAmount
;
}
public
BigDecimal
getDistributedVolum
()
{
return
distributedVolum
;
}
public
void
setDistributedVolum
(
BigDecimal
distributedVolum
)
{
this
.
distributedVolum
=
distributedVolum
;
}
}
backend/xyst.dinas.sales/src/main/java/com/xyst/dinas/sales/internal/service/SalesPlanServiceImpl.java
View file @
59559289
...
...
@@ -194,7 +194,13 @@ public class SalesPlanServiceImpl implements SalesPlanService{
salesPlanDetail
.
setStockAmount
(
detail
.
getDouble
(
SalesPlanConstant
.
stockAmount
));
salesPlanDetail
.
setPlanAmount
(
detail
.
getDouble
(
SalesPlanConstant
.
planAmount
));
salesPlanDetail
.
setActualSaleAmount
(
detail
.
getDouble
(
SalesPlanConstant
.
actualSaleAmount
));
//计算销售计划可分配余量
JSONObject
jsonObject
=
new
JSONObject
(
salesPlanDetail
);
KObject
planningCycle
=
salesPlanKObject
.
get
(
"planningCycle"
);
Date
startTime
=
planningCycle
.
getDate
(
"startTime"
);
Date
endTime
=
planningCycle
.
getDate
(
"endTime"
);
BigDecimal
distributedVolum
=
calcDistributedVolum
(
jsonObject
,
startTime
,
endTime
);
salesPlanDetail
.
setDistributedVolum
(
distributedVolum
);
salesPlanDetails
.
add
(
salesPlanDetail
);
}
salesPlan
.
setSalesPlanDetails
(
salesPlanDetails
);
...
...
@@ -299,36 +305,7 @@ public class SalesPlanServiceImpl implements SalesPlanService{
//List<KObject> salesPlanDetails = salesplan.get(SalesPlanConstant.SalesPlanDetails).toList();
for
(
int
k
=
0
;
k
<
jsonArray
.
length
();
k
++)
{
JSONObject
jsonObject
=
jsonArray
.
getJSONObject
(
k
);
//}
//for (KObject salesPlanDetail : salesPlanDetails) {
//合同可用余量
BigDecimal
contractAmount
=
jsonObject
.
getBigDecimal
(
"contractAmount"
);
//实际销售量
BigDecimal
actualSaleAmount
=
jsonObject
.
getBigDecimal
(
"actualSaleAmount"
);
//查询临时销售计划分配量之和
//根据销售计划周期内的所有临时销售计划
UUID
contractId
=
UUID
.
fromString
(
jsonObject
.
getString
(
SalesPlanConstant
.
contract
));
//根据开始时间和结束时间查询临时销售计划
List
<
KObject
>
salesTempPlanByTimeList
=
salesPlanDao
.
querySalesTempPlanByTime
(
startTime
,
endTime
,
contractId
);
//获取砂石类型
UUID
dinasTypeId
=
UUID
.
fromString
(
jsonObject
.
getString
((
SalesPlanConstant
.
dinasType
)));
//筛选同一个砂石类型下的明细
//计算临时销售计划本期分配量之和
BigDecimal
totalSalesPlanAmount
=
new
BigDecimal
(
"0"
);
if
(
salesTempPlanByTimeList
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
salesTempPlanByTimeList
.
size
();
i
++)
{
KObject
salesTempPlan
=
salesTempPlanByTimeList
.
get
(
i
);
List
<
KObject
>
salesPlanTempDetails
=
salesTempPlan
.
get
(
"SalesPlanTempDetail"
).
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"
));
}
}
}
//可分配量 <=合同可用余量+实际销售量 - 临时销售计划分配量之和
BigDecimal
distributedVolum
=
contractAmount
.
add
(
actualSaleAmount
).
subtract
(
totalSalesPlanAmount
);
BigDecimal
distributedVolum
=
calcDistributedVolum
(
jsonObject
,
startTime
,
endTime
);
if
(
jsonObject
.
getBigDecimal
(
"planAmount"
).
compareTo
(
BigDecimal
.
ZERO
)
!=
0
&&
jsonObject
.
getBigDecimal
(
"planAmount"
).
compareTo
(
distributedVolum
)
>
-
1
)
{
//大于等于
Map
<
String
,
Object
>
verifyMap
=
new
HashMap
<
String
,
Object
>();
verifyMap
.
put
(
"contractName"
,
jsonObject
.
getString
(
"contractName"
));
...
...
@@ -336,11 +313,40 @@ public class SalesPlanServiceImpl implements SalesPlanService{
verifyMap
.
put
(
"projectName"
,
jsonObject
.
getString
(
"projectName"
));
verifyMap
.
put
(
"distributedVolum"
,
distributedVolum
);
verifyList
.
add
(
verifyMap
);
//return verifyMap;
}
}
return
verifyList
;
}
public
BigDecimal
calcDistributedVolum
(
JSONObject
jsonObject
,
Date
startTime
,
Date
endTime
)
{
//合同可用余量
BigDecimal
contractAmount
=
jsonObject
.
getBigDecimal
(
"contractAmount"
);
//实际销售量
BigDecimal
actualSaleAmount
=
jsonObject
.
getBigDecimal
(
"actualSaleAmount"
);
//查询临时销售计划分配量之和
//根据销售计划周期内的所有临时销售计划
UUID
contractId
=
UUID
.
fromString
(
jsonObject
.
getString
(
SalesPlanConstant
.
contract
));
//根据开始时间和结束时间查询临时销售计划
List
<
KObject
>
salesTempPlanByTimeList
=
salesPlanDao
.
querySalesTempPlanByTime
(
startTime
,
endTime
,
contractId
);
//获取砂石类型
UUID
dinasTypeId
=
UUID
.
fromString
(
jsonObject
.
getString
((
SalesPlanConstant
.
dinasType
)));
//筛选同一个砂石类型下的明细
//计算临时销售计划本期分配量之和
BigDecimal
totalSalesPlanAmount
=
new
BigDecimal
(
"0"
);
if
(
salesTempPlanByTimeList
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
salesTempPlanByTimeList
.
size
();
i
++)
{
KObject
salesTempPlan
=
salesTempPlanByTimeList
.
get
(
i
);
List
<
KObject
>
salesPlanTempDetails
=
salesTempPlan
.
get
(
"SalesPlanTempDetail"
).
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"
));
}
}
}
//可分配量 <=合同可用余量+实际销售量 - 临时销售计划分配量之和
BigDecimal
distributedVolum
=
contractAmount
.
add
(
actualSaleAmount
).
subtract
(
totalSalesPlanAmount
);
return
distributedVolum
;
}
@Override
public
Object
submitSalesPlan
(
UUID
salesPlanId
)
{
...
...
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