Commit bd2afb45 authored by chicheng's avatar chicheng

到货打印添加每箱数量

parent 9dd3cb9e
...@@ -42,5 +42,7 @@ public class PurcdDto { ...@@ -42,5 +42,7 @@ public class PurcdDto {
private String cd034; private String cd034;
@ApiModelProperty("批号") @ApiModelProperty("批号")
private String udf07; private String udf07;
@ApiModelProperty("货品每箱数量")
private BigDecimal mb073;
} }
...@@ -21,4 +21,6 @@ public class PurcdPrintParams { ...@@ -21,4 +21,6 @@ public class PurcdPrintParams {
private String cd003; private String cd003;
@ApiModelProperty("标签个数") @ApiModelProperty("标签个数")
private Integer count; private Integer count;
@ApiModelProperty("货品每箱数量")
private Integer mb073;
} }
...@@ -5,6 +5,7 @@ import lombok.Data; ...@@ -5,6 +5,7 @@ import lombok.Data;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Id; import javax.persistence.Id;
import java.math.BigDecimal;
/** /**
* <p>Title: Invmb</p> * <p>Title: Invmb</p>
...@@ -20,6 +21,8 @@ public class Invmb extends EntityBase { ...@@ -20,6 +21,8 @@ public class Invmb extends EntityBase {
@Id @Id
@ApiModelProperty("品号") @ApiModelProperty("品号")
private String mb001; private String mb001;
@ApiModelProperty("货品每箱数量")
private BigDecimal mb073;
@ApiModelProperty("品名") @ApiModelProperty("品名")
private String mb002; private String mb002;
@ApiModelProperty("规格") @ApiModelProperty("规格")
......
...@@ -69,7 +69,11 @@ public class PurccService { ...@@ -69,7 +69,11 @@ public class PurccService {
.findById(purccMapper.toPurccID(criteria)) .findById(purccMapper.toPurccID(criteria))
//.filter(i -> i.getCompany().trim().equals(currentActor.getCompany().trim())) //.filter(i -> i.getCompany().trim().equals(currentActor.getCompany().trim()))
.map(purccMapper::toPurccDto); .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; return purccDto;
} }
...@@ -147,7 +151,7 @@ public class PurccService { ...@@ -147,7 +151,7 @@ public class PurccService {
if (purcdPrintParamsList == null || purcdPrintParamsList.isEmpty()) { if (purcdPrintParamsList == null || purcdPrintParamsList.isEmpty()) {
return; 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()) { if (purcdPrintParamsList.isEmpty()) {
return; return;
} }
...@@ -160,43 +164,40 @@ public class PurccService { ...@@ -160,43 +164,40 @@ public class PurccService {
purcdPrintParamsList.forEach(i -> { purcdPrintParamsList.forEach(i -> {
purcdDao.findById(new PurcdId(i.getCd001(), i.getCd002(), i.getCd003())).ifPresent(j -> { purcdDao.findById(new PurcdId(i.getCd001(), i.getCd002(), i.getCd003())).ifPresent(j -> {
Optional<Purcc> optionalPurcc = purccDao.findById(new PurccId(i.getCd001(), i.getCd002())); Optional<Purcc> optionalPurcc = purccDao.findById(new PurccId(i.getCd001(), i.getCd002()));
// 根据每箱数量拆分标签数量:每箱为空或0时只打1张;否则按箱拆分,如到货500、每箱200 -> 200,200,100
Integer perBox = i.getMb073();
java.util.List<BigDecimal> quantities = splitQuantityByPerBox(j.getCd008(), perBox == null ? 0 : perBox);
List<PrintField> objectMap = new ArrayList<>(); for (BigDecimal qty : quantities) {
objectMap.add(PrintField.of("DH_Type", j.getCd001().trim())); List<PrintField> objectMap = new ArrayList<>();
objectMap.add(PrintField.of("DH_No", j.getCd002().trim())); objectMap.add(PrintField.of("DH_Type", j.getCd001().trim()));
objectMap.add(PrintField.of("CG_No", j.getCd011().trim())); objectMap.add(PrintField.of("DH_No", j.getCd002().trim()));
objectMap.add(PrintField.of("P_No", j.getCd004().trim())); objectMap.add(PrintField.of("CG_No", j.getCd011().trim()));
objectMap.add(PrintField.of("P_Name", j.getCd005().trim())); objectMap.add(PrintField.of("P_No", j.getCd004().trim()));
objectMap.add(PrintField.of("P_Spec", j.getCd006().trim())); objectMap.add(PrintField.of("P_Name", j.getCd005().trim()));
objectMap.add(PrintField.of("DH_QTY", j.getCd008().setScale(2, RoundingMode.HALF_UP).toPlainString())); objectMap.add(PrintField.of("P_Spec", j.getCd006().trim()));
objectMap.add(PrintField.of("DH_QTY", qty.toString().trim()));
// 获取默认库位
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", ""));
}
// 品号-(空)-单别-单号-序号
// 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));
objectMap.add(PrintField.of("EFFECTIVE_DATE", j.getUdf06().trim()));
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("CD017", j.getCd017().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);
// 打印数量 // 获取默认库位
for (Integer printNumber = 1; printNumber < i.getCount(); printNumber++) { 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", ""));
}
String qrCode = j.getCd004();
objectMap.add(PrintField.of("QRCode", qrCode));
objectMap.add(PrintField.of("EFFECTIVE_DATE", j.getUdf06().trim()));
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("CD017", j.getCd017().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); codeList.add(objectMap);
} }
}); });
...@@ -325,6 +326,28 @@ public class PurccService { ...@@ -325,6 +326,28 @@ public class PurccService {
return prefix + seqStr; return prefix + seqStr;
} }
/**
* 按每箱数量拆分为多张标签数量。每箱为空或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) { private String getNewCc002(String tg001) {
String prefix = DateUtil.currentDateString(); String prefix = DateUtil.currentDateString();
return purccDao.findFirstByCc001AndCc002StartingWithOrderByCc002Desc(tg001, prefix) return purccDao.findFirstByCc001AndCc002StartingWithOrderByCc002Desc(tg001, prefix)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment