Merge remote-tracking branch 'refs/remotes/惠信/dev_zhangke' into rakor

This commit is contained in:
曹鹏飞 2025-09-24 16:38:05 +08:00
commit eaa57a56f4
1 changed files with 40 additions and 34 deletions

View File

@ -58,16 +58,22 @@ public class BomControllerService {
@Transactional
public void add(@Valid BomMaterialDTO dto) {
VUtil.trueThrowBusinessError(StrUtil.isBlank(dto.getMaterialNo())).throwMessage("物料编号不能为空");
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(dto.getChildren())).throwMessage("子级物料不可以为空!");
BigDecimal totalWight = dto.getChildren().stream()
.map(child -> child.getMaterialWeight() != null ? child.getMaterialWeight() : new BigDecimal(0))
.reduce(BigDecimal.ZERO, BigDecimal::add);
WmsBom parent = new WmsBom()
.setParentId(0L)
.setNo(dto.getMaterialNo())
.setDescribe(dto.getMaterialDesc())
.setDrawingNo(dto.getDrawingNo())
.setWeight(dto.getMaterialWeight())
.setNum(dto.getNum())
.setWeight(totalWight)
.setNum(new BigDecimal(1))
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
bomService.add(parent, dto.getChildren().stream().map(it-> new WmsBom()
bomService.add(parent, dto.getChildren().stream().map(it -> new WmsBom()
.setNo(it.getMaterialNo())
.setDescribe(it.getMaterialDesc())
.setDrawingNo(it.getDrawingNo())
@ -86,7 +92,7 @@ public class BomControllerService {
.setDrawingNo(it.getDrawingNo())
.setWeight(it.getMaterialWeight())
.setNum(it.getNum());
if (Objects.isNull(wmsBom.getId())){
if (Objects.isNull(wmsBom.getId())) {
wmsBom.setParentId(request.getId());
wmsBom.setCreateBy(UserUtil.getUserName());
wmsBom.setCreateTime(LocalDateTime.now());
@ -108,14 +114,14 @@ public class BomControllerService {
} else {
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(getResultName(file.getOriginalFilename()), StandardCharsets.UTF_8));
try(ByteArrayOutputStream osOut = new ByteArrayOutputStream()) {
try (ByteArrayOutputStream osOut = new ByteArrayOutputStream()) {
new Workbook()
.addSheet(new ListSheet<>(data))
.writeTo(osOut);
try(ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
return ApiResult.error(STATE.DataNoCheckPass, "导入文件失败", fileUploadService.upload("temp/" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "/" + IdUtil.fastUUID() + ".xlsx", isIn, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
}
}catch (Exception e){
} catch (Exception e) {
return ApiResult.error(STATE.BusinessError, "保存文件出错");
}
}
@ -135,7 +141,7 @@ public class BomControllerService {
if (Objects.isNull(pm)) {
sb.append("父级物料编号无效");
} else {
WmsBom pb=bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).eq(WmsBom::getNo, dto.getParentNo()).one();
WmsBom pb = bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).eq(WmsBom::getNo, dto.getParentNo()).one();
if (Objects.isNull(pb)) {
pb = new WmsBom()
.setId(IdUtil.getSnowflakeNextId())
@ -152,12 +158,12 @@ public class BomControllerService {
}
if (StrUtil.isBlank(dto.getChildNo())) {
sb.append("子级物料编号不能为空;");
}else {
} else {
BomMaterialDTO cm = bomMaterialService.getMaterialInfo(dto.getChildNo());
if (Objects.isNull(cm)) {
sb.append("子级物料编号无效;");
}else if (bom.getParentId()!=0L){
WmsBom cb=bomService.lambdaQuery().eq(WmsBom::getParentId, bom.getParentId()).eq(WmsBom::getNo, dto.getChildNo()).one();
} else if (bom.getParentId() != 0L) {
WmsBom cb = bomService.lambdaQuery().eq(WmsBom::getParentId, bom.getParentId()).eq(WmsBom::getNo, dto.getChildNo()).one();
if (Objects.isNull(cb)) {
bom.setNo(dto.getChildNo())
.setDrawingNo(cm.getDrawingNo())
@ -175,18 +181,18 @@ public class BomControllerService {
}
if (StrUtil.isBlank(dto.getNum())) {
sb.append("数量不能为空;");
} else if (!NumberUtils.isCreatable(dto.getNum())){
} else if (!NumberUtils.isCreatable(dto.getNum())) {
sb.append("数量格式错误;");
}else {
} else {
bom.setNum(new BigDecimal(dto.getNum()));
}
dto.setError(sb.toString());
}
if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError()))) {
if (CollectionUtil.isNotEmpty(bomForSave)){
if (CollectionUtil.isNotEmpty(bomForSave)) {
bomService.saveBatch(bomForSave);
}
if (CollectionUtil.isNotEmpty(bomForUpdate)){
if (CollectionUtil.isNotEmpty(bomForUpdate)) {
bomService.updateBatchById(bomForUpdate);
}
return true;
@ -194,25 +200,25 @@ public class BomControllerService {
return false;
}
private String getResultName(String name){
int index=name.lastIndexOf(".");
return name.substring(0,index)+"_结果"+"."+name.substring(index+1);
private String getResultName(String name) {
int index = name.lastIndexOf(".");
return name.substring(0, index) + "_结果" + "." + name.substring(index + 1);
}
public void exportSelect(HttpServletResponse response, List<Long> ids) throws IOException {
if (CollectionUtil.isEmpty(ids)){
if (CollectionUtil.isEmpty(ids)) {
exportTemplate(response);
}else {
} else {
List<WmsBom> parents = bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).in(WmsBom::getId, ids).list();
if (CollectionUtil.isEmpty(parents)){
if (CollectionUtil.isEmpty(parents)) {
exportTemplate(response);
return;
}
List<BomExportExcelDTO> datas=new ArrayList<>();
parents.forEach(p->{
List<WmsBom> children=bomService.lambdaQuery().eq(WmsBom::getParentId, p.getId()).list();
if (CollectionUtil.isNotEmpty(children)){
datas.addAll(children.stream().map(c->new BomExportExcelDTO()
List<BomExportExcelDTO> datas = new ArrayList<>();
parents.forEach(p -> {
List<WmsBom> children = bomService.lambdaQuery().eq(WmsBom::getParentId, p.getId()).list();
if (CollectionUtil.isNotEmpty(children)) {
datas.addAll(children.stream().map(c -> new BomExportExcelDTO()
.setParentNo(p.getNo())
.setParentDrawingNo(p.getDrawingNo())
.setParentDesc(p.getDescribe())
@ -222,7 +228,7 @@ public class BomControllerService {
.setNum(String.valueOf(c.getNum()))).toList());
}
});
if (CollectionUtil.isEmpty(datas)){
if (CollectionUtil.isEmpty(datas)) {
exportTemplate(response);
return;
}
@ -237,7 +243,7 @@ public class BomControllerService {
private void exportTemplate(HttpServletResponse response) throws IOException {
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("齐套导入模板.xlsx", StandardCharsets.UTF_8));
List<BomExportExcelDTO> datas=new ArrayList<>();
List<BomExportExcelDTO> datas = new ArrayList<>();
datas.add(new BomExportExcelDTO()
.setParentNo("父级物料编号")
.setParentDrawingNo("父级物料图号")
@ -252,11 +258,11 @@ public class BomControllerService {
}
public void exportSearch(HttpServletResponse response, @Valid BomSearchQO request) throws IOException {
List<BomMaterialVO> list=bomService.searchNonPage(request);
List<BomExportExcelDTO> datas=new ArrayList<>();
list.forEach(p->{
if (CollectionUtil.isNotEmpty(p.getChildren())){
datas.addAll(p.getChildren().stream().map(c->new BomExportExcelDTO()
List<BomMaterialVO> list = bomService.searchNonPage(request);
List<BomExportExcelDTO> datas = new ArrayList<>();
list.forEach(p -> {
if (CollectionUtil.isNotEmpty(p.getChildren())) {
datas.addAll(p.getChildren().stream().map(c -> new BomExportExcelDTO()
.setParentNo(p.getMaterialNo())
.setParentDrawingNo(p.getDrawingNo())
.setParentDesc(p.getMaterialDesc())
@ -266,7 +272,7 @@ public class BomControllerService {
.setNum(String.valueOf(c.getNum()))).toList());
}
});
if (CollectionUtil.isEmpty(datas)){
if (CollectionUtil.isEmpty(datas)) {
datas.add(new BomExportExcelDTO());
}
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);