Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
hg-smart
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
platform
hg-smart
Commits
36762c5d
Commit
36762c5d
authored
Jul 08, 2024
by
wuwenlong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
产副品制造成本核算dev
parent
67c1e27a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
102 additions
and
16 deletions
+102
-16
HGCB005.java
src/main/java/com/baosight/hggp/hg/cb/domain/HGCB005.java
+21
-0
HGCB005.xml
src/main/java/com/baosight/hggp/hg/cb/sql/HGCB005.xml
+7
-0
HGCBTools.java
src/main/java/com/baosight/hggp/hg/cb/tools/HGCBTools.java
+69
-16
HGCWTools.java
src/main/java/com/baosight/hggp/hg/cw/tools/HGCWTools.java
+5
-0
No files found.
src/main/java/com/baosight/hggp/hg/cb/domain/HGCB005.java
View file @
36762c5d
...
...
@@ -97,6 +97,8 @@ public class HGCB005 extends DaoEPBase {
public
static
final
String
INSERT
=
"HGCB005.insert"
;
public
static
final
String
UPDATE
=
"HGCB005.update"
;
public
static
final
String
DELETE
=
"HGCB005.delete"
;
public
static
final
String
DELETE_BY_CONDITION
=
"HGCB005.delete_by_condition"
;
private
Long
id
=
new
Long
(
0
);
private
String
accountCode
=
" "
;
/* 企业编码*/
...
...
@@ -133,6 +135,25 @@ public class HGCB005 extends DaoEPBase {
private
String
processName
=
" "
;
/* 工序名称*/
private
Long
processOrder
=
new
Long
(
0
);
/* 加工顺序*/
private
BigDecimal
costWeight
=
new
BigDecimal
(
0
);
private
BigDecimal
costWeightValue
=
new
BigDecimal
(
0
);
public
BigDecimal
getCostWeight
()
{
return
costWeight
;
}
public
void
setCostWeight
(
BigDecimal
costWeight
)
{
this
.
costWeight
=
costWeight
;
}
public
BigDecimal
getCostWeightValue
()
{
return
costWeightValue
;
}
public
void
setCostWeightValue
(
BigDecimal
costWeightValue
)
{
this
.
costWeightValue
=
costWeightValue
;
}
/**
* initialize the metadata.
*/
...
...
src/main/java/com/baosight/hggp/hg/cb/sql/HGCB005.xml
View file @
36762c5d
...
...
@@ -350,6 +350,13 @@
id = #id#
</delete>
<delete
id=
"delete_by_condition"
>
DELETE FROM ${hggpSchema}.HGCB005 WHERE
company_code = #companyCode#,
<!-- 公司编码 -->
account_year = #accountYear#,
<!-- 会计期(年) -->
account_month = #accountMonth#
<!-- 会计期(月) -->
</delete>
<update
id=
"update"
>
UPDATE ${hggpSchema}.HGCB005
SET
...
...
src/main/java/com/baosight/hggp/hg/cb/tools/HGCBTools.java
View file @
36762c5d
...
...
@@ -15,14 +15,12 @@ import com.baosight.hggp.hg.cb.domain.HGCB005;
import
com.baosight.hggp.hg.cg.domain.HGCG003
;
import
com.baosight.hggp.hg.constant.HGConstant
;
import
com.baosight.hggp.hg.constant.HGSqlConstant
;
import
com.baosight.hggp.hg.cw.domain.HGCW001
;
import
com.baosight.hggp.hg.cw.domain.HGCW012
;
import
com.baosight.hggp.hg.cw.domain.HGCW012A
;
import
com.baosight.hggp.hg.cw.domain.HGCW013
;
import
com.baosight.hggp.hg.cw.domain.*
;
import
com.baosight.hggp.hg.cw.tools.HGCWTools
;
import
com.baosight.hggp.hg.kc.domain.*
;
import
com.baosight.hggp.hg.kc.tools.HGKCTools
;
import
com.baosight.hggp.hg.pz.domain.HGPZ005
;
import
com.baosight.hggp.hg.pz.domain.HGPZ005A
;
import
com.baosight.hggp.hg.pz.domain.HGPZ007
;
import
com.baosight.hggp.hg.pz.tools.HGPZTools
;
import
com.baosight.hggp.hg.sc.domain.HGSC005A
;
...
...
@@ -620,6 +618,10 @@ public class HGCBTools {
}
public
static
class
THGCB005
{
public
static
void
deleteByCondition
(
Map
params
){
DaoBase
.
getInstance
().
delete
(
HGCB005
.
DELETE_BY_CONDITION
,
params
);
}
/**
* 同步数据
*
...
...
@@ -639,22 +641,73 @@ public class HGCBTools {
//入库单按项目编码、产品编码、存货工序ID、规格、单重分组,分别取正向入库单数量、重量和退回数量
//生成制造成本基础数据
List
<
HGCB005
>
hgcb005List
=
constractHGCB005
(
hgcw001
,
hgkc003List
);
//通过存货工序ID查询工序权重
List
<
Long
>
processIds
=
Optional
.
ofNullable
(
hgcb005List
).
orElse
(
new
ArrayList
<>()).
stream
().
map
(
HGCB005:
:
getInventProcessId
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
processIds
)){
List
<
HGPZ005
>
hgpz005List
=
HGPZTools
.
HgPz005
.
getIds
(
processIds
);
Map
<
Long
,
HGPZ005
>
hgpz005Map
=
Optional
.
ofNullable
(
hgpz005List
).
orElse
(
new
ArrayList
<>()).
stream
().
collect
(
Collectors
.
toMap
(
HGPZ005:
:
getId
,
o
->
o
,
(
o1
,
o2
)->
o1
));
//设置权重
setingCostWeight
(
hgcb005List
);
//计算项目总成本
Map
<
String
,
BigDecimal
>
totalAmoutMap
=
calculateProjAmout
(
hgcw001
);
//计算产副品成本:权重值*项目总费用=产副品制造总成本;总成本/数量=单位成本
Optional
.
ofNullable
(
hgcb005List
).
orElse
(
new
ArrayList
<>()).
stream
().
forEach
(
o
->
{
BigDecimal
totalAmout
=
totalAmoutMap
.
get
(
o
.
getProjCode
());
o
.
setTotalCost
(
totalAmout
.
multiply
(
o
.
getCostWeightValue
()).
setScale
(
6
,
RoundingMode
.
HALF_UP
));
o
.
setUnitCost
(
o
.
getTotalCost
().
divide
(
o
.
getQuantity
(),
6
,
RoundingMode
.
HALF_UP
));
});
//按公司删除当前会计起的成本核算数据
Map
cb005DeleteParam
=
new
HashMap
();
cb005DeleteParam
.
put
(
HGCB005
.
FIELD_company_code
,
hgcw001
.
getCompanyCode
());
cb005DeleteParam
.
put
(
HGCB005
.
FIELD_account_year
,
hgcw001
.
getAccountYear
());
cb005DeleteParam
.
put
(
HGCB005
.
FIELD_account_month
,
hgcw001
.
getAccountPeriod
().
substring
(
4
));
deleteByCondition
(
cb005DeleteParam
);
//保存新的成本核算数据
if
(
CollectionUtils
.
isNotEmpty
(
hgcb005List
)){
DaoBase
.
getInstance
().
insertBatch
(
HGCB005
.
INSERT
,
hgcb005List
);
}
//通过业务账期信息查询类型为分摊的费用归集数据,按项目分组金额求和
//计算成本:入库重量*工序权重=产副品权重,SUM(产副品权重)=项目权重,产副品权重/项目权重*总费用=产副品制造总成本
}
}
private
static
Map
<
String
,
BigDecimal
>
calculateProjAmout
(
HGCW001
hgcw001
){
//通过业务账期信息查询类型为分摊的费用归集数据,按项目分组金额求和
Map
cw052ParamMap
=
new
HashMap
();
cw052ParamMap
.
put
(
HGCW052
.
FIELD_COMPANY_CODE
,
hgcw001
.
getCompanyCode
());
cw052ParamMap
.
put
(
HGCW052
.
FIELD_YEAR
,
hgcw001
.
getAccountYear
());
cw052ParamMap
.
put
(
HGCW052
.
FIELD_MONTH
,
hgcw001
.
getAccountPeriod
().
substring
(
4
));
cw052ParamMap
.
put
(
HGCW052
.
FIELD_IS_SHARE
,
CommonConstant
.
YesNo
.
YES_1
);
List
<
HGCW052
>
hgcw052List
=
HGCWTools
.
HgCw052
.
listByCondition
(
cw052ParamMap
);
Map
<
String
,
BigDecimal
>
totalAmoutMap
=
Optional
.
ofNullable
(
hgcw052List
).
orElse
(
new
ArrayList
<>()).
stream
().
collect
(
Collectors
.
groupingBy
(
o
->
o
.
getItemCode
(),
Collectors
.
reducing
(
BigDecimal
.
ZERO
,
HGCW052:
:
getAmount
,
BigDecimal:
:
add
))
);
return
totalAmoutMap
;
}
private
static
void
setingCostWeight
(
List
<
HGCB005
>
hgcb005List
){
//通过存货工序ID查询工序权重
List
<
Long
>
processIds
=
Optional
.
ofNullable
(
hgcb005List
).
orElse
(
new
ArrayList
<>()).
stream
().
map
(
HGCB005:
:
getInventProcessId
).
collect
(
Collectors
.
toList
());
List
<
HGPZ005A
>
hgpz005aList
=
HGPZTools
.
HgPz005A
.
queryByIds
(
processIds
);
Map
<
Long
,
HGPZ005A
>
hgpz005aMap
=
Optional
.
ofNullable
(
hgpz005aList
).
orElse
(
new
ArrayList
<>()).
stream
().
collect
(
Collectors
.
toMap
(
HGPZ005A:
:
getId
,
o
->
o
,
(
o1
,
o2
)->
o1
));
//设置权重,入库重量*工序权重=产副品权重
Optional
.
ofNullable
(
hgcb005List
).
orElse
(
new
ArrayList
<>()).
stream
().
forEach
(
o
->
{
HGPZ005A
hgpz005a
=
hgpz005aMap
.
get
(
o
.
getInventProcessId
());
AssertUtils
.
isNull
(
hgpz005a
,
String
.
format
(
"产品[%s]%s工艺工序配置缺失"
,
o
.
getProductCode
(),
o
.
getProductName
()));
o
.
setCostWeight
(
o
.
getTotalWeight
().
multiply
(
hgpz005a
.
getCostWeight
()).
setScale
(
6
,
RoundingMode
.
HALF_UP
));
});
//按项目分组求总权重,SUM(产副品权重)=项目权重
Map
<
String
,
BigDecimal
>
totalCostWeightMap
=
Optional
.
ofNullable
(
hgcb005List
).
orElse
(
new
ArrayList
<>()).
stream
().
collect
(
Collectors
.
groupingBy
(
HGCB005:
:
getProjCode
,
Collectors
.
reducing
(
BigDecimal
.
ZERO
,
HGCB005:
:
getCostWeight
,
BigDecimal:
:
add
)));
//设置权重值 = 产副品权重/项目权重
Optional
.
ofNullable
(
hgcb005List
).
orElse
(
new
ArrayList
<>()).
stream
().
forEach
(
o
->
{
BigDecimal
projCostWeight
=
totalCostWeightMap
.
get
(
o
.
getProjCode
());
AssertUtils
.
isTrue
(
Objects
.
isNull
(
projCostWeight
)||
BigDecimal
.
ZERO
.
compareTo
(
projCostWeight
)>=
0
,
String
.
format
(
"项目[%s]%s总权重等于或小于0"
,
o
.
getProjCode
(),
o
.
getProjName
()));
o
.
setCostWeightValue
(
o
.
getCostWeight
().
divide
(
projCostWeight
,
6
,
RoundingMode
.
HALF_UP
));
});
}
private
static
List
<
HGCB005
>
constractHGCB005
(
HGCW001
hgcw001
,
List
<
HGKC003
>
hgkc003List
){
List
<
HGCB005
>
hgcb005List
=
Optional
.
ofNullable
(
hgkc003List
).
orElse
(
new
ArrayList
<>()).
stream
().
collect
(
Collectors
.
toMap
(
o
->
o
.
getProjCode
()+
"-"
+
o
.
getPrdtCode
()+
"-"
+
o
.
getInventProcessId
()+
"-"
+
o
.
getPrdtSpec
()+
"-"
+
o
.
getInvUnitWeight
(),
...
...
src/main/java/com/baosight/hggp/hg/cw/tools/HGCWTools.java
View file @
36762c5d
...
...
@@ -784,7 +784,12 @@ public class HGCWTools {
}
}
public
static
class
HgCw052
{
public
static
List
<
HGCW052
>
listByCondition
(
Map
param
)
{
return
DaoBase
.
getInstance
().
query
(
HGCW052
.
QUERY
,
param
);
}
}
public
static
class
HgCw055
{
public
static
void
save
(
List
<
Map
>
rows
,
UserVO
userVO
)
{
// AssertUtils.isNull(contractNumber, "合同号不能为空!");
...
...
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