Commit 602490a3 authored by chicheng's avatar chicheng

到货打印添加每箱数量

parent d6d7e4de
...@@ -40,5 +40,7 @@ public class PurcdDto { ...@@ -40,5 +40,7 @@ public class PurcdDto {
private BigDecimal cd018; private BigDecimal cd018;
private BigDecimal cd019; private BigDecimal cd019;
private String cd034; private String cd034;
@ApiModelProperty("货品每箱数量")
private BigDecimal mb073;
} }
...@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.apiguardian.api.API; import org.apiguardian.api.API;
import java.math.BigDecimal;
/** /**
* <p>Title: PurcdPrintParams</p> * <p>Title: PurcdPrintParams</p>
* <p>Description: 到货条码打印参数</p> * <p>Description: 到货条码打印参数</p>
...@@ -22,4 +24,6 @@ public class PurcdPrintParams { ...@@ -22,4 +24,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("规格")
......
...@@ -66,7 +66,11 @@ public class PurccService { ...@@ -66,7 +66,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;
} }
...@@ -144,7 +148,7 @@ public class PurccService { ...@@ -144,7 +148,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;
} }
...@@ -158,41 +162,39 @@ public class PurccService { ...@@ -158,41 +162,39 @@ public class PurccService {
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()));
List<PrintField> objectMap = new ArrayList<>(); // 根据每箱数量拆分标签数量:每箱为空或0时只打1张;否则按箱拆分,如到货500、每箱200 -> 200,200,100
objectMap.add(PrintField.of("DH_Type", j.getCd001().trim())); Integer perBox = i.getMb073();
objectMap.add(PrintField.of("DH_No", j.getCd002().trim())); java.util.List<BigDecimal> quantities = splitQuantityByPerBox(j.getCd008(), perBox == null ? 0 : perBox);
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()));
// 获取默认库位 for (BigDecimal qty : quantities) {
Optional<Invmc> invmcOptional = getDefaultInvmc(j.getCd004()); List<PrintField> objectMap = new ArrayList<>();
if (invmcOptional.isPresent()) { objectMap.add(PrintField.of("DH_Type", j.getCd001().trim()));
objectMap.add(PrintField.of("DH_KW", invmcOptional.get().getMc015().trim())); objectMap.add(PrintField.of("DH_No", j.getCd002().trim()));
} else { objectMap.add(PrintField.of("CG_No", j.getCd011().trim()));
objectMap.add(PrintField.of("DH_KW", "")); 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()));
// 品号-(空)-单别-单号-序号 Optional<Invmc> invmcOptional = getDefaultInvmc(j.getCd004());
// String qrCode = String.format("%s-%s-%s-%s-%s", j.getCd004().trim(), "", j.getCd001().trim(), j.getCd002().trim(), j.getCd003().trim()); if (invmcOptional.isPresent()) {
String qrCode = j.getCd004(); objectMap.add(PrintField.of("DH_KW", invmcOptional.get().getMc015().trim()));
objectMap.add(PrintField.of("QRCode", qrCode)); } else {
objectMap.add(PrintField.of("DH_KW", ""));
}
objectMap.add(PrintField.of("CD006", j.getCd006().trim())); String qrCode = j.getCd004();
objectMap.add(PrintField.of("UDF01", j.getUdf01().trim())); objectMap.add(PrintField.of("QRCode", qrCode));
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);
// 打印数量 objectMap.add(PrintField.of("CD006", j.getCd006().trim()));
for (Integer printNumber = 1; printNumber < i.getCount(); printNumber++) { 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); codeList.add(objectMap);
} }
}); });
...@@ -290,6 +292,28 @@ public class PurccService { ...@@ -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) { 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