Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
E
erp-service
Project
Project
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
ximai
erp-service
Commits
602490a3
Commit
602490a3
authored
Feb 24, 2026
by
chicheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
到货打印添加每箱数量
parent
d6d7e4de
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
66 additions
and
33 deletions
+66
-33
PurcdDto.java
...ain/java/com/topsunit/scanservice/ximai/dto/PurcdDto.java
+2
-0
PurcdPrintParams.java
.../com/topsunit/scanservice/ximai/dto/PurcdPrintParams.java
+4
-0
Invmb.java
...ain/java/com/topsunit/scanservice/ximai/entity/Invmb.java
+3
-0
PurccService.java
.../com/topsunit/scanservice/ximai/service/PurccService.java
+57
-33
No files found.
src/main/java/com/topsunit/scanservice/ximai/dto/PurcdDto.java
View file @
602490a3
...
...
@@ -40,5 +40,7 @@ public class PurcdDto {
private
BigDecimal
cd018
;
private
BigDecimal
cd019
;
private
String
cd034
;
@ApiModelProperty
(
"货品每箱数量"
)
private
BigDecimal
mb073
;
}
src/main/java/com/topsunit/scanservice/ximai/dto/PurcdPrintParams.java
View file @
602490a3
...
...
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
org.apiguardian.api.API
;
import
java.math.BigDecimal
;
/**
* <p>Title: PurcdPrintParams</p>
* <p>Description: 到货条码打印参数</p>
...
...
@@ -22,4 +24,6 @@ public class PurcdPrintParams {
private
String
cd003
;
@ApiModelProperty
(
"标签个数"
)
private
Integer
count
;
@ApiModelProperty
(
"货品每箱数量"
)
private
Integer
mb073
;
}
src/main/java/com/topsunit/scanservice/ximai/entity/Invmb.java
View file @
602490a3
...
...
@@ -5,6 +5,7 @@ import lombok.Data;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
java.math.BigDecimal
;
/**
* <p>Title: Invmb</p>
...
...
@@ -20,6 +21,8 @@ public class Invmb extends EntityBase {
@Id
@ApiModelProperty
(
"品号"
)
private
String
mb001
;
@ApiModelProperty
(
"货品每箱数量"
)
private
BigDecimal
mb073
;
@ApiModelProperty
(
"品名"
)
private
String
mb002
;
@ApiModelProperty
(
"规格"
)
...
...
src/main/java/com/topsunit/scanservice/ximai/service/PurccService.java
View file @
602490a3
...
...
@@ -66,7 +66,11 @@ public class PurccService {
.
findById
(
purccMapper
.
toPurccID
(
criteria
))
//.filter(i -> i.getCompany().trim().equals(currentActor.getCompany().trim()))
.
map
(
purccMapper:
:
toPurccDto
);
purccDto
.
ifPresent
(
i
->
i
.
setPurcds
(
purccMapper
.
toPurcdDtoList
(
purcdDao
.
findByCd001AndCd002
(
criteria
.
getCc001
(),
criteria
.
getCc002
()))));
purccDto
.
ifPresent
(
i
->
{
List
<
PurcdDto
>
purcds
=
purccMapper
.
toPurcdDtoList
(
purcdDao
.
findByCd001AndCd002
(
criteria
.
getCc001
(),
criteria
.
getCc002
()));
purcds
.
forEach
(
dto
->
invmbDao
.
findById
(
dto
.
getCd004
()).
ifPresent
(
invmb
->
dto
.
setMb073
(
invmb
.
getMb073
())));
i
.
setPurcds
(
purcds
);
});
return
purccDto
;
}
...
...
@@ -144,7 +148,7 @@ public class PurccService {
if
(
purcdPrintParamsList
==
null
||
purcdPrintParamsList
.
isEmpty
())
{
return
;
}
purcdPrintParamsList
=
printParams
.
getPurcdPrintParamsList
().
stream
().
filter
(
i
->
i
.
getCount
()
>
0
).
collect
(
Collectors
.
toList
());
purcdPrintParamsList
=
printParams
.
getPurcdPrintParamsList
().
stream
().
filter
(
i
->
i
.
getCount
()
!=
null
&&
i
.
getCount
()
>
0
).
collect
(
Collectors
.
toList
());
if
(
purcdPrintParamsList
.
isEmpty
())
{
return
;
}
...
...
@@ -158,41 +162,39 @@ public class PurccService {
purcdDao
.
findById
(
new
PurcdId
(
i
.
getCd001
(),
i
.
getCd002
(),
i
.
getCd003
())).
ifPresent
(
j
->
{
Optional
<
Purcc
>
optionalPurcc
=
purccDao
.
findById
(
new
PurccId
(
i
.
getCd001
(),
i
.
getCd002
()));
List
<
PrintField
>
objectMap
=
new
ArrayList
<>();
objectMap
.
add
(
PrintField
.
of
(
"DH_Type"
,
j
.
getCd001
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"DH_No"
,
j
.
getCd002
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"CG_No"
,
j
.
getCd011
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"P_No"
,
j
.
getCd004
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"P_Name"
,
j
.
getCd005
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"P_Spec"
,
j
.
getCd006
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"DH_QTY"
,
j
.
getCd008
().
toString
().
trim
()));
// 根据每箱数量拆分标签数量:每箱为空或0时只打1张;否则按箱拆分,如到货500、每箱200 -> 200,200,100
Integer
perBox
=
i
.
getMb073
();
java
.
util
.
List
<
BigDecimal
>
quantities
=
splitQuantityByPerBox
(
j
.
getCd008
(),
perBox
==
null
?
0
:
perBox
);
// 获取默认库位
Optional
<
Invmc
>
invmcOptional
=
getDefaultInvmc
(
j
.
getCd004
());
if
(
invmcOptional
.
isPresent
())
{
objectMap
.
add
(
PrintField
.
of
(
"DH_KW"
,
invmcOptional
.
get
().
getMc015
().
trim
()));
}
else
{
objectMap
.
add
(
PrintField
.
of
(
"DH_KW"
,
""
));
}
for
(
BigDecimal
qty
:
quantities
)
{
List
<
PrintField
>
objectMap
=
new
ArrayList
<>();
objectMap
.
add
(
PrintField
.
of
(
"DH_Type"
,
j
.
getCd001
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"DH_No"
,
j
.
getCd002
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"CG_No"
,
j
.
getCd011
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"P_No"
,
j
.
getCd004
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"P_Name"
,
j
.
getCd005
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"P_Spec"
,
j
.
getCd006
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"DH_QTY"
,
qty
.
toString
().
trim
()));
// 品号-(空)-单别-单号-序号
// String qrCode = String.format("%s-%s-%s-%s-%s", j.getCd004().trim(), "", j.getCd001().trim(), j.getCd002().trim(), j.getCd003().trim());
String
qrCode
=
j
.
getCd004
();
objectMap
.
add
(
PrintField
.
of
(
"QRCode"
,
qrCode
));
Optional
<
Invmc
>
invmcOptional
=
getDefaultInvmc
(
j
.
getCd004
());
if
(
invmcOptional
.
isPresent
())
{
objectMap
.
add
(
PrintField
.
of
(
"DH_KW"
,
invmcOptional
.
get
().
getMc015
().
trim
()));
}
else
{
objectMap
.
add
(
PrintField
.
of
(
"DH_KW"
,
""
));
}
objectMap
.
add
(
PrintField
.
of
(
"CD006"
,
j
.
getCd006
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"UDF01"
,
j
.
getUdf01
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"UDF02"
,
j
.
getUdf02
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"CC010"
,
optionalPurcc
.
map
(
Purcc:
:
getCc010
)
.
map
(
DateUtil:
:
stringToLocalDate
)
.
map
(
DateUtil:
:
localDateToStandardString
)
.
orElse
(
""
)));
objectMap
.
add
(
PrintField
.
of
(
"CC006"
,
optionalPurcc
.
map
(
Purcc:
:
getCc006
).
orElse
(
""
)));
codeList
.
add
(
objectMap
);
String
qrCode
=
j
.
getCd004
();
objectMap
.
add
(
PrintField
.
of
(
"QRCode"
,
qrCode
));
// 打印数量
for
(
Integer
printNumber
=
1
;
printNumber
<
i
.
getCount
();
printNumber
++)
{
objectMap
.
add
(
PrintField
.
of
(
"CD006"
,
j
.
getCd006
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"UDF01"
,
j
.
getUdf01
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"UDF02"
,
j
.
getUdf02
().
trim
()));
objectMap
.
add
(
PrintField
.
of
(
"CC010"
,
optionalPurcc
.
map
(
Purcc:
:
getCc010
)
.
map
(
DateUtil:
:
stringToLocalDate
)
.
map
(
DateUtil:
:
localDateToStandardString
)
.
orElse
(
""
)));
objectMap
.
add
(
PrintField
.
of
(
"CC006"
,
optionalPurcc
.
map
(
Purcc:
:
getCc006
).
orElse
(
""
)));
codeList
.
add
(
objectMap
);
}
});
...
...
@@ -290,6 +292,28 @@ public class PurccService {
}
}
/**
* 按每箱数量拆分为多张标签数量。每箱为空或0时返回 [本次到货数量] 一张;否则按箱拆,如 500/200 -> [200, 200, 100]
*/
private
List
<
BigDecimal
>
splitQuantityByPerBox
(
BigDecimal
totalQty
,
int
perBox
)
{
List
<
BigDecimal
>
list
=
new
ArrayList
<>();
if
(
totalQty
==
null
||
totalQty
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
list
;
}
if
(
perBox
<=
0
)
{
list
.
add
(
totalQty
);
return
list
;
}
BigDecimal
per
=
BigDecimal
.
valueOf
(
perBox
);
BigDecimal
remaining
=
totalQty
;
while
(
remaining
.
compareTo
(
BigDecimal
.
ZERO
)
>
0
)
{
BigDecimal
piece
=
remaining
.
min
(
per
);
list
.
add
(
piece
);
remaining
=
remaining
.
subtract
(
piece
);
}
return
list
;
}
private
String
getNewCc002
(
String
tg001
)
{
String
prefix
=
DateUtil
.
currentDateString
();
return
purccDao
.
findFirstByCc001AndCc002StartingWithOrderByCc002Desc
(
tg001
,
prefix
)
...
...
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