Commit 602490a3 authored by chicheng's avatar chicheng

到货打印添加每箱数量

parent d6d7e4de
......@@ -40,5 +40,7 @@ public class PurcdDto {
private BigDecimal cd018;
private BigDecimal cd019;
private String cd034;
@ApiModelProperty("货品每箱数量")
private BigDecimal mb073;
}
......@@ -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;
}
......@@ -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("规格")
......
......@@ -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)
......
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