一些优化

This commit is contained in:
曹鹏飞 2025-09-19 17:01:06 +08:00
parent 8500640600
commit c4dab5bf7f
10 changed files with 162 additions and 53 deletions

View File

@ -384,7 +384,7 @@ public class InProduceBackController extends BaseController {
}
/**
* 导出退料库单
* 导出退料库单
*/
@GetMapping("exportTicket")
public void exportTicket(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
@ -406,6 +406,6 @@ public class InProduceBackController extends BaseController {
variables.put("base", base);
variables.put("pages", PdfPageDTO.create(list, 17, new InProduceBackTicketItemVO()));
String html = ThymeleafUtil.generator("/template/", "生产退料单", ".html", variables);
PdfGeneratorUtil.generatePdf("生产退料库单" + order.getNo(), html, response);
PdfGeneratorUtil.generatePdf("生产退料库单" + order.getNo(), html, response);
}
}

View File

@ -253,8 +253,8 @@ public class OutAssistanceController extends BaseController {
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);

View File

@ -244,8 +244,8 @@ public class OutCostCenterController extends BaseController {
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);

View File

@ -435,8 +435,8 @@ public class OutProduceController extends BaseController {
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(order.getDwerk())
.setWarehouseNo(request.getLgort())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);

View File

@ -13,6 +13,7 @@ import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.admin.util.NoUtil;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.InventoryDTO;
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
import com.nflg.wms.common.pojo.dto.ZWM3A06Input1DTO;
import com.nflg.wms.common.pojo.dto.ZWM3A06Input2DTO;
@ -23,6 +24,7 @@ import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.WmsOutPurchase;
import com.nflg.wms.repository.entity.WmsOutPurchaseItem;
import com.nflg.wms.repository.service.IWmsInventoryService;
import com.nflg.wms.repository.service.IWmsOutPurchaseItemService;
import com.nflg.wms.repository.service.IWmsOutPurchaseService;
import com.nflg.wms.starter.BaseController;
@ -37,6 +39,7 @@ import java.time.Instant;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 采购退库管理
@ -63,6 +66,9 @@ public class OutPurchaseController extends BaseController {
@Resource
private BasdeSerialNumberControllerService serialNumberControllerService;
@Resource
private IWmsInventoryService inventoryService;
/**
* 获取采购退库信息PDA使用
* @return 要退库的物料信息列表
@ -77,7 +83,7 @@ public class OutPurchaseController extends BaseController {
}
/**
* 保存
* 保存PDA使用
* @param request 采购退库信息
* @return 保存结果
*/
@ -170,6 +176,18 @@ public class OutPurchaseController extends BaseController {
outPurchaseService.save(order);
outPurchaseItemService.saveBatch(items);
outMaterialScanRecordRespository.saveAll(records);
inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values()
.stream()
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
Pair<String, String> result = sapService.zwm3A06(order.getEbeln(), input1, input2);
outPurchaseService.lambdaUpdate()
.set(WmsOutPurchase::getMatDoc, result.getKey())

View File

@ -6,11 +6,13 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.nflg.wms.admin.pojo.document.InMaterialScanRecord;
import com.nflg.wms.admin.pojo.document.OutMaterialScanRecord;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A17Item2DTO;
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.SapService;
@ -21,6 +23,7 @@ import com.nflg.wms.admin.util.ThymeleafUtil;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.dto.AllocationOrderDTO;
import com.nflg.wms.common.pojo.dto.InventoryDTO;
import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*;
@ -65,6 +68,9 @@ public class TransferCompanyController extends BaseController {
@Resource
private OutMaterialScanRecordRespository outMaterialScanRecordRespository;
@Resource
private InMaterialScanRecordRespository inMaterialScanRecordRespository;
@Resource
private IWmsTransferCompanyService transferCompanyService;
@ -260,6 +266,18 @@ public class TransferCompanyController extends BaseController {
.update();
transferCompanyTicketItemService.saveBatch(ticketItems);
outMaterialScanRecordRespository.saveAll(records);
inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values()
.stream()
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
ZWM00_MB116VO vo = sapService.zwm00_mb116(new ZWM00_MB116QO()
.setEbeln(order.getEbeln())
.setUsnam(UserUtil.getUserName())
@ -331,8 +349,28 @@ public class TransferCompanyController extends BaseController {
TransferCompanyTicketVO ticket = transferCompanyTicketService.getByNo(qo.getNo());
VUtil.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("出库单不存在");
VUtil.trueThrowBusinessError(!Objects.equals(ticket.getState(), 0)).throwMessage("出库单无效");
List<OutMaterialScanRecord> records = outMaterialScanRecordRespository.findByTicketId(ticket.getId());
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(records)).throwMessage("未找到出库扫码记录");
List<OutMaterialScanRecord> records1 = outMaterialScanRecordRespository.findByTicketId(ticket.getId());
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(records1)).throwMessage("未找到出库扫码记录");
List<InMaterialScanRecord> records = new ArrayList<>();
records1.forEach(record -> {
records.add(new InMaterialScanRecord()
.setSource(6)
.setSourceId(record.getSourceId())
.setSourceItemId(record.getSourceItemId())
.setTicketItemId(record.getTicketItemId())
.setMaterialNo(record.getMaterialNo())
.setContent(record.getContent())
.setBatchNo(record.getBatchNo())
.setSerialNo(record.getSerialNo())
.setFactoryNo(qo.getLgort1())
.setWarehouseNo(qo.getItems().stream().filter(it -> Objects.equals(it.getId(), record.getTicketItemId())).findFirst().get().getBinNos())
.setUniqNo(record.getUniqNo())
.setRspos(record.getRspos())
.setNum(record.getNum())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
});
List<TransferCompanyItemVO> items = transferCompanyTicketItemService.getList(ticket.getId());
items.removeIf(it -> qo.getItems().stream().anyMatch(q -> Objects.equals(q.getId(), it.getId())));
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(items))
@ -343,10 +381,23 @@ public class TransferCompanyController extends BaseController {
.setBinNos1(q.getBinNos())
).toList();
transferCompanyTicketItemService.updateBatchById(ticketItems);
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.values()
.stream()
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
inMaterialScanRecordRespository.saveAll(records);
Pair<Pair<String, String>, Pair<String, String>> vos = sapService.zwm3a17(new ZWM3A17DTO()
.setEbeln(ticket.getEbeln())
.setUsnam(UserUtil.getUserName())
.setItem1(records.stream().collect(Collectors.groupingBy(OutMaterialScanRecord::getKey4))
.setItem1(records1.stream().collect(Collectors.groupingBy(OutMaterialScanRecord::getKey4))
.values()
.stream()
.map(ls -> new ZWM3A17Item1DTO()
@ -360,7 +411,7 @@ public class TransferCompanyController extends BaseController {
.setKZKRI("")
).toList()
)
.setItem2(records.stream().collect(Collectors.groupingBy(OutMaterialScanRecord::getKey5))
.setItem2(records1.stream().collect(Collectors.groupingBy(OutMaterialScanRecord::getKey5))
.keySet()
.stream()
.map(key -> new ZWM3A17Item2DTO()

View File

@ -5,8 +5,10 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.nflg.wms.admin.pojo.document.InMaterialScanRecord;
import com.nflg.wms.admin.pojo.document.OutMaterialScanRecord;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
import com.nflg.wms.admin.repository.InMaterialScanRecordRespository;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.SapService;
@ -64,6 +66,9 @@ public class TransferFactoryController extends BaseController {
@Resource
private OutMaterialScanRecordRespository outMaterialScanRecordRespository;
@Resource
private InMaterialScanRecordRespository inMaterialScanRecordRespository;
@Resource
private IWmsTransferFactoryService transferFactoryService;
@ -242,23 +247,23 @@ public class TransferFactoryController extends BaseController {
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
.throwMessage("物料" + materialNo + "的出库数量超出申请限制");
records.add(new OutMaterialScanRecord()
.setSource(4)
// .setSourceId(order.getId())
// .setSourceItemId(item.getId())
.setTicketId(ticket.getId())
.setTicketItemId(pti.getId())
.setMaterialNo(materialNo)
.setUnit(item.getMeins())
.setRspos(item.getRspos())
.setContent(qrCode)
.setBatchNo(qrCodeContent.getBatchNo())
.setSerialNo(qrCodeContent.getSerialNo())
.setUniqNo(qrCodeContent.getUniqNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort())
.setNum(qrCodeContent.getNum())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
.setSource(4)
.setSourceId(order.getId())
.setSourceItemId(item.getId())
.setTicketId(ticket.getId())
.setTicketItemId(pti.getId())
.setMaterialNo(materialNo)
.setUnit(item.getMeins())
.setRspos(item.getRspos())
.setContent(qrCode)
.setBatchNo(qrCodeContent.getBatchNo())
.setSerialNo(qrCodeContent.getSerialNo())
.setUniqNo(qrCodeContent.getUniqNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(request.getLgort())
.setNum(qrCodeContent.getNum())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
});
transferFactoryTicketItemService.saveBatch(ticketItems);
@ -269,6 +274,18 @@ public class TransferFactoryController extends BaseController {
.set(WmsTransferFactory::getUpdateTime, LocalDateTime.now())
.eq(WmsTransferFactory::getId, order.getId())
.update();
inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values()
.stream()
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
return ApiResult.success();
}
@ -314,31 +331,40 @@ public class TransferFactoryController extends BaseController {
items.removeIf(it -> qo.getItems().stream().anyMatch(q -> Objects.equals(q.getId(), it.getId())));
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(items))
.throwMessage("以下物料未设置入库储位:" + StrUtil.join(",", items.stream().map(TransferFactoryItemVO::getMatnr).toList()));
List<OutMaterialScanRecord> records = outMaterialScanRecordRespository.findByTicketId(ticket.getId());
inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.values()
.stream()
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(qo.getLgort1())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
List<OutMaterialScanRecord> records1 = outMaterialScanRecordRespository.findByTicketId(ticket.getId());
List<InMaterialScanRecord> records = new ArrayList<>();
records1.forEach(record -> {
records.add(new InMaterialScanRecord()
.setSource(5)
.setSourceId(record.getSourceId())
.setSourceItemId(record.getSourceItemId())
.setTicketItemId(record.getTicketItemId())
.setMaterialNo(record.getMaterialNo())
.setContent(record.getContent())
.setBatchNo(record.getBatchNo())
.setSerialNo(record.getSerialNo())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(qo.getLgort1())
.setUniqNo(record.getUniqNo())
.setRspos(record.getRspos())
.setNum(record.getNum())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
});
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.values()
.stream()
.map(list -> new InventoryDTO()
.setMaterialNo(list.get(0).getMaterialNo())
.setBatchNumber(list.get(0).getBatchNo())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(qo.getLgort1())
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
.setFactoryNo(list.get(0).getFactoryNo())
.setWarehouseNo(list.get(0).getWarehouseNo())
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
inMaterialScanRecordRespository.saveAll(records);
List<TransferFactoryItemVO> ticketItems = transferFactoryTicketItemService.getList(ticket.getId());
ZWM00MB113DTO vo = sapService.zwm00_mb113(new ZWM00MB113QO()
.setIRsnum(ticket.getRsnum())
@ -351,7 +377,7 @@ public class TransferFactoryController extends BaseController {
.setWerks(ticket.getWerks())
.setLgort(qo.getLgort1())).toList()
)
.setT_list2(records.stream()
.setT_list2(records1.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey6))
.values()
.stream()

View File

@ -69,7 +69,7 @@ public class InMaterialScanRecord {
private BigDecimal num;
/**
* 来源1生产退料2成本中心退料3采购退库4生产订单入库
* 来源1生产退料2成本中心退料3采购退库4生产订单入库5:厂内调拨6转储单
*/
private Integer source;
@ -103,6 +103,8 @@ public class InMaterialScanRecord {
*/
private String ebeln;
private String rspos;
/**
* 创建人
*/
@ -117,7 +119,7 @@ public class InMaterialScanRecord {
private String key;
public String getKey() {
return this.materialNo + "|" + this.batchNo;
return this.materialNo + "|" + this.batchNo + "|" + this.factoryNo + "|" + this.warehouseNo;
}
@Transient
@ -126,4 +128,18 @@ public class InMaterialScanRecord {
public String getKey1() {
return this.ebeln + "|" + this.ebelp + "|" + materialNo + "|" + serialNo;
}
@Transient
private String key2;
public String getKey2() {
return this.rspos + "|" + this.serialNo;
}
@Transient
private String key3;
public String getKey3() {
return ebelp + "|" + this.materialNo + "|" + this.batchNo;
}
}

View File

@ -118,7 +118,7 @@ public class OutMaterialScanRecord {
private String key;
public String getKey() {
return this.materialNo + "|" + this.batchNo;
return this.materialNo + "|" + this.batchNo + "|" + this.factoryNo + "|" + this.warehouseNo;
}
@Transient

View File

@ -530,8 +530,6 @@ public class UserControllerService {
new Workbook()
.addSheet(new ListSheet<>(data))
.writeTo(osOut);
try (ByteArrayInputStream isIn = new ByteArrayInputStream(osOut.toByteArray())) {
return ApiResult.error(STATE.DataNoCheckPass, "导入文件失败", fileUploadService.upload("temp/" + DateTimeUtil.format(LocalDate.now(), "yyyyMMdd") + "/" + IdUtil.fastUUID() + ".xlsx", isIn));
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"));
}