Commit bd2afb45 authored by chicheng's avatar chicheng

到货打印添加每箱数量

parent 9dd3cb9e
......@@ -42,5 +42,7 @@ public class PurcdDto {
private String cd034;
@ApiModelProperty("批号")
private String udf07;
@ApiModelProperty("货品每箱数量")
private BigDecimal mb073;
}
......@@ -21,4 +21,6 @@ public class PurcdPrintParams {
private String cd003;
@ApiModelProperty("标签个数")
private Integer count;
@ApiModelProperty("货品每箱数量")
private Integer mb073;
}
......@@ -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("规格")
......
......@@ -69,7 +69,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;
}
......@@ -147,7 +151,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;
}
......@@ -160,43 +164,40 @@ public class PurccService {
purcdPrintParamsList.forEach(i -> {
purcdDao.findById(new PurcdId(i.getCd001(), i.getCd002(), i.getCd003())).ifPresent(j -> {
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<>();
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().setScale(2, RoundingMode.HALF_UP).toPlainString()));
// 获取默认库位
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 (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()));
// 打印数量
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);
}
});
......@@ -325,6 +326,28 @@ public class PurccService {
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) {
String prefix = DateUtil.currentDateString();
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