Merge branch 'refs/heads/develop' into dev_zhangke
This commit is contained in:
commit
beb4011729
|
|
@ -13,6 +13,7 @@ import com.nflg.wms.admin.util.NoUtil;
|
|||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
import com.nflg.wms.common.constant.BarCodeProcessStage;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
|
||||
|
|
@ -24,10 +25,7 @@ import com.nflg.wms.common.pojo.qo.*;
|
|||
import com.nflg.wms.common.pojo.vo.*;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.WmsInCostcenterBack;
|
||||
import com.nflg.wms.repository.entity.WmsInCostcenterBackItem;
|
||||
import com.nflg.wms.repository.entity.WmsInCostcenterBackTicket;
|
||||
import com.nflg.wms.repository.entity.WmsInCostcenterBackTicketItem;
|
||||
import com.nflg.wms.repository.entity.*;
|
||||
import com.nflg.wms.repository.service.*;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
|
|
@ -80,6 +78,12 @@ public class InCostCenterBackController extends BaseController {
|
|||
@Resource
|
||||
private BasdeSerialNumberControllerService serialNumberControllerService;
|
||||
|
||||
@Resource
|
||||
private IWmsWarehouseService warehouseService;
|
||||
|
||||
@Resource
|
||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||
|
||||
/**
|
||||
* 查询SAP领料订单数据
|
||||
*/
|
||||
|
|
@ -181,9 +185,8 @@ public class InCostCenterBackController extends BaseController {
|
|||
if (StrUtil.isBlank(vo.getLgort2())) {
|
||||
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
|
||||
}
|
||||
if (StrUtil.isNotBlank(vo.getLgort2()) && StrUtil.isBlank(vo.getLgpbe())) {
|
||||
vo.setLgpbe(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), vo.getLgort2())));
|
||||
}
|
||||
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
|
||||
vo.setIsDisableLocation(warehouseService.isEnableLocation(order.getWerks(), vo.getLgort2()));
|
||||
return vo;
|
||||
}).toList()
|
||||
)
|
||||
|
|
@ -208,8 +211,17 @@ public class InCostCenterBackController extends BaseController {
|
|||
.setCreateTime(LocalDateTime.now());
|
||||
List<WmsInCostcenterBackItem> datas = inCostcenterBackItemService.getList(order.getId());
|
||||
List<InMaterialScanRecord> records = new ArrayList<>();
|
||||
// List<MaterialQRCodeContentDTO> dtos = new ArrayList<>();
|
||||
List<WmsInCostcenterBackTicketItem> ticketItems = new ArrayList<>();
|
||||
Set<String> allQrCodes = new HashSet<>();
|
||||
request.getItems().forEach(it -> {
|
||||
it.getItems().forEach(item -> {
|
||||
allQrCodes.addAll(item.getQrCodes());
|
||||
});
|
||||
});
|
||||
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
|
||||
.lt(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
||||
.in(WmsQrCodeMaster::getBarcodeCode, allQrCodes)
|
||||
.list();
|
||||
request.getItems().forEach(it -> {
|
||||
WmsInCostcenterBackItem item = datas.stream().filter(d -> Objects.equals(it.getOrderItemId(), d.getId())).findFirst().orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项无效");
|
||||
|
|
@ -217,40 +229,52 @@ public class InCostCenterBackController extends BaseController {
|
|||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setOrderItemId(item.getId())
|
||||
.setLgpbe(StrUtil.join(",", it.getBinNos()))
|
||||
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostcenterBackSubmitItemQRQO::getBinNo).toList()))
|
||||
.setNum(BigDecimal.ZERO);
|
||||
ticketItems.add(ti);
|
||||
it.getQrCodes().forEach(qrCode -> {
|
||||
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
// dtos.add(qrCodeContent);
|
||||
String materialNo = qrCodeContent.getMaterialNo();
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
|
||||
.throwMessage("订单项与物料不符");
|
||||
item.setLeft(item.getLeft().subtract(qrCodeContent.getNum()));
|
||||
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
ti.setNum(ti.getNum().add(qrCodeContent.getNum()));
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(2)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketItemId(ti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(qrCodeContent.getBatchNo())
|
||||
.setSerialNo(qrCodeContent.getSerialNo())
|
||||
.setFactoryNo(order.getWerks())
|
||||
.setWarehouseNo(request.getLgort())
|
||||
.setBinNos(StrUtil.split(it.getBinNos(), "/"))
|
||||
.setUniqNo(qrCodeContent.getUniqNo())
|
||||
.setNum(qrCodeContent.getNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
it.getItems().forEach(iit -> {
|
||||
iit.getQrCodes().forEach(qrCode -> {
|
||||
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
String materialNo = qrCodeContent.getMaterialNo();
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
|
||||
.throwMessage("订单项与物料不符");
|
||||
item.setLeft(item.getLeft().subtract(qrCodeContent.getNum()));
|
||||
VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
ti.setNum(ti.getNum().add(qrCodeContent.getNum()));
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(2)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketItemId(ti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(qrCodeContent.getBatchNo())
|
||||
.setSerialNo(qrCodeContent.getSerialNo())
|
||||
.setFactoryNo(order.getWerks())
|
||||
.setWarehouseNo(request.getLgort())
|
||||
.setBinNo(iit.getBinNo())
|
||||
.setUniqNo(qrCodeContent.getUniqNo())
|
||||
.setNum(qrCodeContent.getNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
|
||||
.filter(q -> StrUtil.equals(q.getBarcodeCode(), qrCode))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("二维码" + qrCode + "无效");
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
qrCodeMaster.setFactoryCode(order.getWerks());
|
||||
qrCodeMaster.setStorageLocation(request.getLgort());
|
||||
qrCodeMaster.setBinLocation(iit.getBinNo());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
});
|
||||
});
|
||||
});
|
||||
inCostcenterBackItemService.updateBatchById(datas);
|
||||
inMaterialScanRecordRespository.saveAll(records);
|
||||
inCostcenterBackTicketItemService.saveBatch(ticketItems);
|
||||
inCostcenterBackService.lambdaUpdate()
|
||||
.set(WmsInCostcenterBack::getSapStatus, true)
|
||||
|
|
@ -260,6 +284,7 @@ public class InCostCenterBackController extends BaseController {
|
|||
.set(WmsInCostcenterBack::getState, datas.stream().map(WmsInCostcenterBackItem::getLeft).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(BigDecimal.ZERO) > 0 ? 1 : 2)
|
||||
.eq(WmsInCostcenterBack::getId, order.getId())
|
||||
.update();
|
||||
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
||||
inventoryService.in(records.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
||||
.values()
|
||||
|
|
@ -299,6 +324,7 @@ public class InCostCenterBackController extends BaseController {
|
|||
ticket.setDocYear(vo.getEMJahr());
|
||||
ticket.setMatDoc(vo.getEMblnr());
|
||||
inCostcenterBackTicketService.save(ticket);
|
||||
inMaterialScanRecordRespository.saveAll(records);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import com.nflg.wms.admin.util.NoUtil;
|
|||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
import com.nflg.wms.common.constant.BarCodeProcessStage;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.document.InMaterialScanRecord;
|
||||
|
|
@ -23,10 +24,7 @@ import com.nflg.wms.common.pojo.qo.*;
|
|||
import com.nflg.wms.common.pojo.vo.*;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceBack;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceBackItem;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceBackTicket;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceBackTicketItem;
|
||||
import com.nflg.wms.repository.entity.*;
|
||||
import com.nflg.wms.repository.service.*;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
|
|
@ -76,6 +74,15 @@ public class InProduceBackController extends BaseController {
|
|||
@Resource
|
||||
private BasdeSerialNumberControllerService serialNumberControllerService;
|
||||
|
||||
@Resource
|
||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||
|
||||
@Resource
|
||||
private IWmsStorageService storageService;
|
||||
|
||||
@Resource
|
||||
private IWmsWarehouseService warehouseService;
|
||||
|
||||
/**
|
||||
* 查询SAP领料订单数据
|
||||
*/
|
||||
|
|
@ -185,10 +192,11 @@ public class InProduceBackController extends BaseController {
|
|||
.map(item -> new OutProduceItemVO()
|
||||
.setId(item.getId())
|
||||
.setLgort2(order.getLgort2())
|
||||
.setLgpbe(item.getLgpbe())
|
||||
.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getDwerk(), order.getLgort2()))
|
||||
.setMaktx2(item.getMaktx2())
|
||||
.setMatnr(item.getMatnr())
|
||||
.setNum(item.getSqsl().subtract(item.getNum()))
|
||||
.setIsDisableLocation(warehouseService.isEnableLocation(order.getDwerk(), order.getLgort2()))
|
||||
).toList()
|
||||
)
|
||||
);
|
||||
|
|
@ -213,55 +221,77 @@ public class InProduceBackController extends BaseController {
|
|||
// List<MaterialQRCodeContentDTO> dtos = new ArrayList<>();
|
||||
List<WmsInProduceBackTicketItem> ticketItems = new ArrayList<>();
|
||||
Multimap<String, String> input2 = ArrayListMultimap.create();
|
||||
request.getQrCodes().forEach(qrCode -> {
|
||||
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
Set<String> allQrCodes = new HashSet<>();
|
||||
request.getItems().forEach(it -> {
|
||||
allQrCodes.addAll(it.getQrCodes());
|
||||
});
|
||||
List<WmsQrCodeMaster> qrCodeMasters = qrCodeMasterService.lambdaQuery()
|
||||
.lt(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
||||
.in(WmsQrCodeMaster::getBarcodeCode, allQrCodes)
|
||||
.list();
|
||||
request.getItems().forEach(iit -> {
|
||||
iit.getQrCodes().forEach(qrCode -> {
|
||||
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
// dtos.add(qrCodeContent);
|
||||
String materialNo = qrCodeContent.getMaterialNo();
|
||||
WmsInProduceBackItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要退料");
|
||||
String materialNo = qrCodeContent.getMaterialNo();
|
||||
WmsInProduceBackItem item = datas.stream().filter(d -> StrUtil.equals(d.getMatnr(), materialNo)).findFirst().orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + materialNo + "不需要退料");
|
||||
// VUtil.trueThrowBusinessError(List.of("3","4").contains(item.getLbprt()) && StrUtil.isBlank(qrCodeContent.getSerialNo()))
|
||||
// .throwMessage("物料" + materialNo + "必须有序列号");
|
||||
// if (List.of("3","4").contains(item.getLbprt())){
|
||||
// input2.put(item.getRspos(),qrCodeContent.getSerialNo());
|
||||
// }
|
||||
input2.put(item.getRspos(), qrCodeContent.getSerialNo());
|
||||
WmsInProduceBackTicketItem pti = ticketItems.stream()
|
||||
.filter(ti -> Objects.equals(ti.getProduceBackItemId(), item.getId()))
|
||||
.findFirst()
|
||||
.orElseGet(() -> {
|
||||
WmsInProduceBackTicketItem ti = new WmsInProduceBackTicketItem()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setProduceBackItemId(item.getId())
|
||||
.setNum(BigDecimal.ZERO);
|
||||
ticketItems.add(ti);
|
||||
return ti;
|
||||
});
|
||||
BigDecimal num = item.getSqsl().subtract(item.getNum());
|
||||
VUtil.trueThrowBusinessError(num.compareTo(qrCodeContent.getNum()) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
item.setNum(item.getNum().add(qrCodeContent.getNum()));
|
||||
pti.setNum(pti.getNum().add(qrCodeContent.getNum()));
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(1)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketItemId(pti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(qrCodeContent.getBatchNo())
|
||||
.setSerialNo(qrCodeContent.getSerialNo())
|
||||
.setUniqNo(qrCodeContent.getUniqNo())
|
||||
.setFactoryNo(order.getDwerk())
|
||||
.setWarehouseNo(request.getLgort())
|
||||
input2.put(item.getRspos(), qrCodeContent.getSerialNo());
|
||||
WmsInProduceBackTicketItem pti = ticketItems.stream()
|
||||
.filter(ti -> Objects.equals(ti.getProduceBackItemId(), item.getId()))
|
||||
.findFirst()
|
||||
.orElseGet(() -> {
|
||||
WmsInProduceBackTicketItem ti = new WmsInProduceBackTicketItem()
|
||||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setProduceBackItemId(item.getId())
|
||||
.setNum(BigDecimal.ZERO);
|
||||
ticketItems.add(ti);
|
||||
return ti;
|
||||
});
|
||||
BigDecimal num = item.getSqsl().subtract(item.getNum());
|
||||
VUtil.trueThrowBusinessError(num.compareTo(qrCodeContent.getNum()) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
item.setNum(item.getNum().add(qrCodeContent.getNum()));
|
||||
pti.setNum(pti.getNum().add(qrCodeContent.getNum()));
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(1)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketItemId(pti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(qrCodeContent.getBatchNo())
|
||||
.setSerialNo(qrCodeContent.getSerialNo())
|
||||
.setUniqNo(qrCodeContent.getUniqNo())
|
||||
.setFactoryNo(order.getDwerk())
|
||||
.setWarehouseNo(request.getLgort())
|
||||
// .setBinNos(StrUtil.split(it.getBinNos(), "/"))
|
||||
.setNum(qrCodeContent.getNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
.setNum(qrCodeContent.getNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
|
||||
.filter(q -> StrUtil.equals(q.getBarcodeCode(), qrCode))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("二维码" + qrCode + "无效");
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
qrCodeMaster.setFactoryCode(order.getDwerk());
|
||||
qrCodeMaster.setStorageLocation(request.getLgort());
|
||||
qrCodeMaster.setBinLocation(iit.getBinNo());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
});
|
||||
});
|
||||
inProduceBackItemService.updateBatchById(datas);
|
||||
inMaterialScanRecordRespository.saveAll(records);
|
||||
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
||||
inProduceBackTicketItemService.saveBatch(ticketItems);
|
||||
inventoryService.in(records.stream()
|
||||
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
|
||||
|
|
@ -310,6 +340,7 @@ public class InProduceBackController extends BaseController {
|
|||
.set(WmsInProduceBack::getState, inNum.compareTo(totalNum) >= 0 ? 2 : 1)
|
||||
.eq(WmsInProduceBack::getId, order.getId())
|
||||
.update();
|
||||
inMaterialScanRecordRespository.saveAll(records);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -108,6 +108,12 @@ public class InProduceOrderController extends BaseController {
|
|||
@Resource
|
||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||
|
||||
@Resource
|
||||
private IWmsStorageService storageService;
|
||||
|
||||
@Resource
|
||||
private IWmsWarehouseService warehouseService;
|
||||
|
||||
/**
|
||||
* 从SAP查询生产订单信息
|
||||
* @param no 生产订单号
|
||||
|
|
@ -367,21 +373,21 @@ public class InProduceOrderController extends BaseController {
|
|||
if (Objects.equals(type, 0)) {
|
||||
child.setMustScan(false);
|
||||
}
|
||||
child.setBinNos(binService.getBinNos(child.getMaterialNo(), child.getFactoryNo(), child.getWarehouseNo()));
|
||||
child.setBinNo(binService.getBinNo(child.getMaterialNo(), child.getFactoryNo(), child.getWarehouseNo()));
|
||||
});
|
||||
datas.addAll(children);
|
||||
});
|
||||
return ApiResult.success(datas);
|
||||
} else {
|
||||
list.forEach(it -> {
|
||||
it.setBinNos(binService.getBinNos(it.getMaterialNo(), it.getFactoryNo(), it.getWarehouseNo()));
|
||||
it.setBinNo(binService.getBinNo(it.getMaterialNo(), it.getFactoryNo(), it.getWarehouseNo()));
|
||||
});
|
||||
return ApiResult.success(list);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 收货(PDA使用)
|
||||
* 入库(PDA使用)
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@Transactional
|
||||
|
|
@ -413,8 +419,18 @@ public class InProduceOrderController extends BaseController {
|
|||
List<String> materialNos = new ArrayList<>();
|
||||
List<InMaterialScanRecord> records = new ArrayList<>();
|
||||
Map<Long, String> warehouseNoChange = new HashMap<>();
|
||||
Set<String> allQrCodes = new HashSet<>();
|
||||
request.getMaterials().forEach(it -> {
|
||||
it.getItems().forEach(item -> {
|
||||
allQrCodes.addAll(item.getQrCodes());
|
||||
});
|
||||
});
|
||||
List<WmsQrCodeMaster> qrCodeMasters = CollectionUtil.isEmpty(allQrCodes) ? Collections.emptyList() : qrCodeMasterService.lambdaQuery()
|
||||
.lt(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
||||
.in(WmsQrCodeMaster::getBarcodeCode, allQrCodes)
|
||||
.list();
|
||||
datas.forEach(it -> {
|
||||
InProduceOrderReceiveMaterialQO materialQO = request.getItems()
|
||||
InProduceOrderReceiveMaterialQO materialQO = request.getMaterials()
|
||||
.stream()
|
||||
.filter(q -> StrUtil.equals(q.getMaterialNo(), it.getMaterialNo()))
|
||||
.findFirst()
|
||||
|
|
@ -422,7 +438,7 @@ public class InProduceOrderController extends BaseController {
|
|||
if (Objects.isNull(materialQO)) {
|
||||
materialNos.add(it.getMaterialNo());
|
||||
} else {
|
||||
VUtil.trueThrowBusinessError(it.isMustScan() && CollectionUtil.isEmpty(materialQO.getQrCodes()))
|
||||
VUtil.trueThrowBusinessError(it.isMustScan() && CollectionUtil.isEmpty(materialQO.getItems()))
|
||||
.throwMessage(materialQO.getMaterialNo() + "需要提供扫码信息");
|
||||
if (!StrUtil.equals(it.getWarehouseNo(), materialQO.getWarehouseNo())) {
|
||||
warehouseNoChange.put(it.getId(), materialQO.getWarehouseNo());
|
||||
|
|
@ -437,34 +453,48 @@ public class InProduceOrderController extends BaseController {
|
|||
}
|
||||
}
|
||||
if (it.isMustScan()) {
|
||||
BigDecimal num = BigDecimal.ZERO;
|
||||
for (String qrCode : materialQO.getQrCodes()) {
|
||||
MaterialQRCodeContentDTO content = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
if (Objects.nonNull(content.getNum())) {
|
||||
num = num.add(content.getNum());
|
||||
materialQO.getItems().forEach(item -> {
|
||||
BigDecimal num = BigDecimal.ZERO;
|
||||
for (String qrCode : item.getQrCodes()) {
|
||||
MaterialQRCodeContentDTO content = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
if (Objects.nonNull(content.getNum())) {
|
||||
num = num.add(content.getNum());
|
||||
}
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(4)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(it.getId())
|
||||
.setTicketItemId(it.getId())
|
||||
.setMaterialNo(it.getMaterialNo())
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(content.getBatchNo())
|
||||
.setSerialNo(content.getSerialNo())
|
||||
.setUniqNo(content.getUniqNo())
|
||||
.setFactoryNo(it.getFactoryNo())
|
||||
.setWarehouseNo(it.getWarehouseNo())
|
||||
.setBinNo(item.getBinNo())
|
||||
.setNum(content.getNum())
|
||||
.setUnit(it.getUnit())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasters.stream()
|
||||
.filter(q -> StrUtil.equals(q.getBarcodeCode(), qrCode))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("二维码" + qrCode + "无效");
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
qrCodeMaster.setFactoryCode(it.getFactoryNo());
|
||||
qrCodeMaster.setStorageLocation(it.getWarehouseNo());
|
||||
qrCodeMaster.setBinLocation(item.getBinNo());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
}
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(4)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(it.getId())
|
||||
.setTicketItemId(it.getId())
|
||||
.setMaterialNo(it.getMaterialNo())
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(content.getBatchNo())
|
||||
.setSerialNo(content.getSerialNo())
|
||||
.setUniqNo(content.getUniqNo())
|
||||
.setFactoryNo(it.getFactoryNo())
|
||||
.setWarehouseNo(it.getWarehouseNo())
|
||||
.setBinNos(StrUtil.split(materialQO.getBinNos(), "/"))
|
||||
.setNum(content.getNum())
|
||||
.setUnit(it.getUnit())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
}
|
||||
if (num.compareTo(it.getNum()) != 0) {
|
||||
materialNos.add(it.getMaterialNo());
|
||||
}
|
||||
if (num.compareTo(it.getNum()) != 0) {
|
||||
materialNos.add(it.getMaterialNo());
|
||||
}
|
||||
});
|
||||
}
|
||||
// if (!order.getList()) {
|
||||
// //是否更改了储位
|
||||
|
|
@ -511,6 +541,9 @@ public class InProduceOrderController extends BaseController {
|
|||
.map(InMaterialScanRecord::getSerialNo)
|
||||
.toList();
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(qrCodeMasters)) {
|
||||
qrCodeMasterService.updateBatchById(qrCodeMasters);
|
||||
}
|
||||
inventoryService.in(list.stream()
|
||||
.filter(it -> Objects.equals(it.getParentId(), 0L))
|
||||
.map(it -> new InventoryDTO()
|
||||
|
|
@ -522,7 +555,6 @@ public class InProduceOrderController extends BaseController {
|
|||
.setSerialNo(it.getSernr())
|
||||
).toList()
|
||||
);
|
||||
inMaterialScanRecordRespository.saveAll(records);
|
||||
if (CollectionUtil.isNotEmpty(warehouseNoChange)) {
|
||||
produceOrderItemService.updateBatchById(
|
||||
warehouseNoChange.entrySet()
|
||||
|
|
@ -541,6 +573,7 @@ public class InProduceOrderController extends BaseController {
|
|||
order.setUpdateBy(UserUtil.getUserName());
|
||||
order.setUpdateTime(LocalDateTime.now());
|
||||
produceOrderService.updateById(order);
|
||||
inMaterialScanRecordRespository.saveAll(records);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ import com.nflg.wms.common.pojo.dto.MaterialQRCodeContentDTO;
|
|||
import com.nflg.wms.common.pojo.dto.QrCodeMasterPrintDTO;
|
||||
import com.nflg.wms.common.pojo.qo.*;
|
||||
import com.nflg.wms.common.pojo.vo.*;
|
||||
import com.nflg.wms.common.util.NumberUtil;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.*;
|
||||
|
|
@ -47,7 +46,6 @@ import java.time.Instant;
|
|||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
|
|
@ -243,39 +241,41 @@ public class InProduceOrderSurplusController extends BaseController {
|
|||
.setId(IdUtil.getSnowflakeNextId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setOrderItemId(item.getId())
|
||||
.setLgpbe(StrUtil.join(",", it.getBinNos()))
|
||||
.setLgpbe(StrUtil.join(",", it.getItems().stream().map(InCostcenterBackSubmitItemQRQO::getBinNo).toList()))
|
||||
.setNum(BigDecimal.ZERO);
|
||||
ticketItems.add(ti);
|
||||
it.getQrCodes().forEach(qrCode -> {
|
||||
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
String materialNo = qrCodeContent.getMaterialNo();
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
|
||||
.throwMessage("订单项与物料不符");
|
||||
item.setLeftNum(item.getLeftNum().subtract(qrCodeContent.getNum()));
|
||||
VUtil.trueThrowBusinessError(item.getLeftNum().compareTo(BigDecimal.ZERO) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
ti.setNum(ti.getNum().add(qrCodeContent.getNum()));
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(7)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setTicketItemId(ti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setMaterialDesc(qrCodeContent.getMaterialDesc())
|
||||
.setUnit(item.getMeins())
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(qrCodeContent.getBatchNo())
|
||||
.setSerialNo(qrCodeContent.getSerialNo())
|
||||
.setFactoryNo(order.getDwerk())
|
||||
.setWarehouseNo(ticket.getLgort())
|
||||
.setBinNos(StrUtil.split(it.getBinNos(), "/"))
|
||||
.setUniqNo(qrCodeContent.getUniqNo())
|
||||
.setRspos(item.getRspos())
|
||||
.setNum(qrCodeContent.getNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
it.getItems().forEach(iit -> {
|
||||
iit.getQrCodes().forEach(qrCode -> {
|
||||
MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode);
|
||||
String materialNo = qrCodeContent.getMaterialNo();
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr()))
|
||||
.throwMessage("订单项与物料不符");
|
||||
item.setLeftNum(item.getLeftNum().subtract(qrCodeContent.getNum()));
|
||||
VUtil.trueThrowBusinessError(item.getLeftNum().compareTo(BigDecimal.ZERO) < 0)
|
||||
.throwMessage("物料" + materialNo + "的入库数量超出申请数量");
|
||||
ti.setNum(ti.getNum().add(qrCodeContent.getNum()));
|
||||
records.add(new InMaterialScanRecord()
|
||||
.setSource(7)
|
||||
.setSourceId(order.getId())
|
||||
.setSourceItemId(item.getId())
|
||||
.setTicketId(ticket.getId())
|
||||
.setTicketItemId(ti.getId())
|
||||
.setMaterialNo(materialNo)
|
||||
.setMaterialDesc(qrCodeContent.getMaterialDesc())
|
||||
.setUnit(item.getMeins())
|
||||
.setContent(qrCode)
|
||||
.setBatchNo(qrCodeContent.getBatchNo())
|
||||
.setSerialNo(qrCodeContent.getSerialNo())
|
||||
.setFactoryNo(order.getDwerk())
|
||||
.setWarehouseNo(ticket.getLgort())
|
||||
.setBinNo(iit.getBinNo())
|
||||
.setUniqNo(qrCodeContent.getUniqNo())
|
||||
.setRspos(item.getRspos())
|
||||
.setNum(qrCodeContent.getNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(Instant.now())
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
inProduceOrderSurplusItemService.updateBatchById(datas);
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public class OutPurchaseController extends BaseController {
|
|||
public ApiResult<ZWM3A05VO> searchSAP(@Valid @RequestBody @NotNull zwm3A05QO request) {
|
||||
ZWM3A05VO result = sapService.zwm3A05(request);
|
||||
result.getItems().parallelStream().forEach(it -> {
|
||||
it.setBinNos(binService.getBinNos(it.getMatnr(), result.getWerks(), it.getLgort()));
|
||||
it.setBinNos(binService.getBinNo(it.getMatnr(), result.getWerks(), it.getLgort()));
|
||||
});
|
||||
return ApiResult.success(result);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -881,7 +881,7 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
log.error("{},{},{}未从SAP的ZIM_004接口查询仓库为空", it.getExternalOrderNo(), it.getSupplierCode(), it.getPackageNo());
|
||||
} else {
|
||||
it.setWarehouseNo(dto.getWarehouseNo());
|
||||
it.setBinNos(binService.getBinNos(it.getPackageNo(), dto.getWerks(), dto.getWarehouseNo()));
|
||||
it.setBinNos(binService.getBinNo(it.getPackageNo(), dto.getWerks(), dto.getWarehouseNo()));
|
||||
// if (dto.getTransportNum().compareTo(new BigDecimal(it.getNum()))<0){
|
||||
// it.setNum(dto.getTransportNum().intValue());
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -484,7 +484,7 @@ public class TransferCompanyController extends BaseController {
|
|||
.setMatnr(item.getMatnr())
|
||||
.setMaktx(item.getMaktx())
|
||||
.setNum(item.getNum())
|
||||
.setBinIn(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), ticket.getWerks(), ticket.getLgort())))
|
||||
.setBinIn(StrUtil.join("/", storageService.getBinNo(item.getMatnr(), ticket.getWerks(), ticket.getLgort())))
|
||||
).toList()
|
||||
)
|
||||
);
|
||||
|
|
@ -515,7 +515,7 @@ public class TransferCompanyController extends BaseController {
|
|||
.setSerialNo(record.getSerialNo())
|
||||
.setFactoryNo(ticket.getWerks())
|
||||
.setWarehouseNo(qo.getLgort1())
|
||||
.setBinNos(Objects.isNull(itemQo) ? Collections.emptyList() : StrUtil.split(itemQo.getBinNos(), "/"))
|
||||
.setBinNo(Objects.isNull(itemQo) ? "" : itemQo.getBinNos())
|
||||
.setUniqNo(record.getUniqNo())
|
||||
.setRspos(record.getRspos())
|
||||
.setNum(record.getNum())
|
||||
|
|
|
|||
|
|
@ -212,8 +212,8 @@ public class TransferFactoryController extends BaseController {
|
|||
.setLgort(order.getLgort())
|
||||
.setNum(item.getLeft())
|
||||
.setMeins(item.getMeins())
|
||||
.setBinIn(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getUmlgo())))
|
||||
.setBinOut(StrUtil.join("/", storageService.getBinNos(item.getMatnr(), order.getWerks(), order.getLgort())));
|
||||
.setBinIn(StrUtil.join("/", storageService.getBinNo(item.getMatnr(), order.getWerks(), order.getUmlgo())))
|
||||
.setBinOut(StrUtil.join("/", storageService.getBinNo(item.getMatnr(), order.getWerks(), order.getLgort())));
|
||||
vo.setQiTao(type > 0);
|
||||
if (Objects.equals(type, 1)) {
|
||||
vo.setChildren(bomService.getChildrenVO(item.getMatnr()));
|
||||
|
|
@ -446,8 +446,8 @@ public class TransferFactoryController extends BaseController {
|
|||
.setLgort(ticket.getLgort())
|
||||
.setLgort1(ticket.getUmlgo())
|
||||
.setNum(it.getNum())
|
||||
.setBinIn(StrUtil.join("/", storageService.getBinNos(it.getMatnr(), ticket.getWerks(), ticket.getUmlgo())))
|
||||
.setBinOut(StrUtil.join("/", storageService.getBinNos(it.getMatnr(), ticket.getWerks(), ticket.getLgort())))
|
||||
.setBinIn(StrUtil.join("/", storageService.getBinNo(it.getMatnr(), ticket.getWerks(), ticket.getUmlgo())))
|
||||
.setBinOut(StrUtil.join("/", storageService.getBinNo(it.getMatnr(), ticket.getWerks(), ticket.getLgort())))
|
||||
).toList())
|
||||
);
|
||||
}
|
||||
|
|
@ -479,12 +479,13 @@ public class TransferFactoryController extends BaseController {
|
|||
.setSerialNo(record.getSerialNo())
|
||||
.setFactoryNo(ticket.getWerks())
|
||||
.setWarehouseNo(qo.getLgort1())
|
||||
.setBinNos(StrUtil.split(qo.getItems()
|
||||
.setBinNo(qo.getItems()
|
||||
.stream()
|
||||
.filter(it -> Objects.equals(it.getId(), record.getTicketItemId()))
|
||||
.findFirst()
|
||||
.orElse(new InSubmitItemQO())
|
||||
.getBinNos(), "/"))
|
||||
.getBinNos()
|
||||
)
|
||||
.setUniqNo(record.getUniqNo())
|
||||
.setRspos(record.getRspos())
|
||||
.setNum(record.getNum())
|
||||
|
|
|
|||
|
|
@ -17,22 +17,7 @@ public class BinService {
|
|||
@Resource
|
||||
private IWmsStorageService storageService;
|
||||
|
||||
@Resource
|
||||
private SapService sapService;
|
||||
|
||||
public String getBinNos(String materialNo, String factory, String warehouseNo) {
|
||||
Set<String> bins = storageService.getBinNos(materialNo, factory, warehouseNo);
|
||||
// if (CollectionUtil.isNotEmpty(bins)){
|
||||
// return String.join("/",bins);
|
||||
// }else {
|
||||
// List<SAPSyncFromDTO> dtos = sapService.zwm3A01(factory, List.of(warehouseNo), List.of(materialNo), null, null);
|
||||
// if (CollectionUtil.isEmpty(dtos)){
|
||||
// log.error("{},{},{}未从SAP的ZWM3A01接口查询到数据", factory, warehouseNo, materialNo);
|
||||
// return null;
|
||||
// }else {
|
||||
// return dtos.get(0).getBinNos();
|
||||
// }
|
||||
// }
|
||||
return String.join("/",bins);
|
||||
public String getBinNo(String materialNo, String factory, String warehouseNo) {
|
||||
return storageService.getBinNo(materialNo, factory, warehouseNo);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,9 +45,9 @@ public class InMaterialScanRecord {
|
|||
private String warehouseNo;
|
||||
|
||||
/**
|
||||
* 储位列表
|
||||
* 储位
|
||||
*/
|
||||
private List<String> binNos;
|
||||
private String binNo;
|
||||
|
||||
/**
|
||||
* 二维码内容
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
|
@ -16,15 +17,10 @@ public class InCostcenterBackSubmitItemQO {
|
|||
@NotNull
|
||||
private Long orderItemId;
|
||||
|
||||
/**
|
||||
* 实际入库储位编号列表
|
||||
*/
|
||||
@NotBlank
|
||||
private String binNos;
|
||||
|
||||
/**
|
||||
* 二维码列表
|
||||
*/
|
||||
@Valid
|
||||
@NotEmpty
|
||||
private List<String> qrCodes;
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class InCostcenterBackSubmitItemQRQO {
|
||||
|
||||
/**
|
||||
* 实际入库储位编号列表
|
||||
*/
|
||||
private String binNo;
|
||||
|
||||
/**
|
||||
* 二维码列表
|
||||
*/
|
||||
@NotEmpty
|
||||
private List<String> qrCodes;
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
|
@ -21,6 +22,7 @@ public class InProduceBackSubmitQO {
|
|||
/**
|
||||
* 二维码列表
|
||||
*/
|
||||
@Valid
|
||||
@NotEmpty
|
||||
private List<String> qrCodes;
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -17,15 +19,12 @@ public class InProduceOrderReceiveMaterialQO {
|
|||
/**
|
||||
* 仓库编号
|
||||
*/
|
||||
@NotBlank
|
||||
private String warehouseNo;
|
||||
|
||||
/**
|
||||
* 储位编号列表
|
||||
*/
|
||||
private String binNos;
|
||||
|
||||
/**
|
||||
* 二维码列表
|
||||
*/
|
||||
private List<String> qrCodes;
|
||||
@Valid
|
||||
private List<InCostcenterBackSubmitItemQRQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,5 +21,5 @@ public class InProduceOrderReceiveQO {
|
|||
*/
|
||||
@Valid
|
||||
@NotEmpty
|
||||
private List<InProduceOrderReceiveMaterialQO> items;
|
||||
private List<InProduceOrderReceiveMaterialQO> materials;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class InProduceOrderItemVO {
|
|||
/**
|
||||
* 储位
|
||||
*/
|
||||
private String binNos;
|
||||
private String binNo;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
|
|
|
|||
|
|
@ -76,4 +76,10 @@ public class OutProduceItemVO {
|
|||
public boolean getUseChildren() {
|
||||
return CollectionUtil.isNotEmpty(children);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否启用储位管理
|
||||
*/
|
||||
@JsonProperty("isDisableLocation")
|
||||
private Boolean isDisableLocation;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public interface WmsStorageMapper extends BaseMapper<WmsStorage> {
|
|||
|
||||
List<String> getWarehouseNo(String factoryNo, String materialNo);
|
||||
|
||||
String getBinNos(String materialNo, String factoryNo, String warehouseNo);
|
||||
String getBinNo(String materialNo, String factoryNo, String warehouseNo);
|
||||
|
||||
List<StorageVO> searchNonSync();
|
||||
|
||||
|
|
|
|||
|
|
@ -32,4 +32,6 @@ public interface WmsWarehouseMapper extends BaseMapper<WmsWarehouse> {
|
|||
List<WarehouseVO> getListByIds(List<Long> list);
|
||||
|
||||
WarehouseVO getInfo(Long id);
|
||||
|
||||
Boolean isEnableLocation(String factoryNo, String warehouseNo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public interface IWmsStorageService extends IService<WmsStorage> {
|
|||
|
||||
List<String> getWarehouseNo(String factoryNo, String materialNo);
|
||||
|
||||
Set<String> getBinNos(String materialNo, @NotBlank String factoryNo, String warehouseNo);
|
||||
String getBinNo(String materialNo, @NotBlank String factoryNo, String warehouseNo);
|
||||
|
||||
List<StorageVO> searchNonSync();
|
||||
|
||||
|
|
|
|||
|
|
@ -43,4 +43,6 @@ public interface IWmsWarehouseService extends IService<WmsWarehouse> {
|
|||
List<WarehouseVO> getListByIds(List<Long> list);
|
||||
|
||||
WarehouseVO getInfo(Long id);
|
||||
|
||||
Boolean isEnableLocation(String factoryNo, String warehouseNo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,8 +102,8 @@ public class WmsStorageServiceImpl extends ServiceImpl<WmsStorageMapper, WmsStor
|
|||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getBinNos(String materialNo, String factoryNo, String warehouseNo) {
|
||||
return new HashSet<>(StrUtil.split(baseMapper.getBinNos(materialNo,factoryNo,warehouseNo), ","));
|
||||
public String getBinNo(String materialNo, String factoryNo, String warehouseNo) {
|
||||
return baseMapper.getBinNo(materialNo,factoryNo,warehouseNo);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -120,4 +120,9 @@ public class WmsWarehouseServiceImpl extends ServiceImpl<WmsWarehouseMapper, Wms
|
|||
public WarehouseVO getInfo(Long id) {
|
||||
return baseMapper.getInfo(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isEnableLocation(String factoryNo, String warehouseNo) {
|
||||
return baseMapper.isEnableLocation(factoryNo, warehouseNo);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@
|
|||
WHERE s.material_no = #{materialNo} and di."value" = #{factoryNo}
|
||||
</select>
|
||||
|
||||
<select id="getBinNos" resultType="java.lang.String">
|
||||
<select id="getBinNo" resultType="java.lang.String">
|
||||
SELECT bin.no
|
||||
FROM wms_storage s
|
||||
INNER JOIN wms_bin bin ON s.bin_id = bin.id
|
||||
|
|
|
|||
|
|
@ -77,4 +77,11 @@
|
|||
left join dictionary_item di on w.factory_id = di.id
|
||||
where w.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="isEnableLocation" resultType="java.lang.Boolean">
|
||||
SELECT wh.is_disable_location
|
||||
FROM wms_warehouse wh
|
||||
INNER JOIN dictionary_item di ON wh.factory_id=di."id"
|
||||
WHERE di."value"=#{factoryNo} AND wh."no"=#{warehouseNo}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.nflg.wms.common.pojo.qo.*;
|
|||
import com.nflg.wms.common.pojo.vo.ShipmentMaterialCodeQRVO;
|
||||
import com.nflg.wms.common.pojo.vo.ShipmentMaterialCodeItemVO;
|
||||
import com.nflg.wms.common.util.EecExcelUtil;
|
||||
import com.nflg.wms.common.util.NumberUtil;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.*;
|
||||
|
|
@ -113,12 +114,35 @@ public class MaterialCodeController extends BaseController {
|
|||
/**
|
||||
* 清单-删除
|
||||
*/
|
||||
@Transactional
|
||||
@PostMapping("delete")
|
||||
public ApiResult<Void> delete(@RequestBody @NotEmpty List<Long> ids) {
|
||||
materialCodeService.lambdaUpdate()
|
||||
List<Long> idsForDelete = materialCodeService.lambdaQuery()
|
||||
.select(WmsShipmentMaterialCode::getId)
|
||||
.eq(WmsShipmentMaterialCode::getStatus, 0)
|
||||
.in(WmsShipmentMaterialCode::getId, ids)
|
||||
.remove();
|
||||
.list()
|
||||
.stream()
|
||||
.map(WmsShipmentMaterialCode::getId)
|
||||
.toList();
|
||||
if (CollectionUtil.isNotEmpty(idsForDelete)) {
|
||||
materialCodeService.removeByIds(idsForDelete);
|
||||
materialCodeForwardService.lambdaUpdate()
|
||||
.in(WmsShipmentMaterialCodeForward::getMaterialCodeId)
|
||||
.remove();
|
||||
idsForDelete = materialCodeItemService.lambdaQuery()
|
||||
.in(WmsShipmentMaterialCodeItem::getMaterialCodeId, idsForDelete)
|
||||
.list()
|
||||
.stream()
|
||||
.map(WmsShipmentMaterialCodeItem::getId)
|
||||
.toList();
|
||||
if (CollectionUtil.isNotEmpty(idsForDelete)) {
|
||||
materialCodeItemService.removeByIds(idsForDelete);
|
||||
materialCodeItemQrService.lambdaUpdate()
|
||||
.in(WmsShipmentMaterialCodeItemQr::getItemId, idsForDelete)
|
||||
.remove();
|
||||
}
|
||||
}
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
@ -193,21 +217,21 @@ public class MaterialCodeController extends BaseController {
|
|||
log.debug("第{}行:{}", row.getRowNum(), row);
|
||||
if (row.getRowNum() == 1) {
|
||||
materialCode.setCustomerName(row.getString(2));
|
||||
VUtil.trueThrowBusinessError(StrUtil.isNotBlank(materialCode.getCustomerName()))
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(materialCode.getCustomerName()))
|
||||
.throwMessage("客户名称不能为空");
|
||||
} else if (row.getRowNum() == 2) {
|
||||
materialCode.setDeviceNo(row.getString(2));
|
||||
VUtil.trueThrowBusinessError(StrUtil.isNotBlank(materialCode.getDeviceNo()))
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(materialCode.getDeviceNo()))
|
||||
.throwMessage("设备编号不能为空");
|
||||
materialCode.setOrderDate(row.getLocalDate(6).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||
VUtil.trueThrowBusinessError(StrUtil.isNotBlank(materialCode.getOrderDate()))
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(materialCode.getOrderDate()))
|
||||
.throwMessage("订单日期不能为空");
|
||||
} else if (row.getRowNum() == 3) {
|
||||
materialCode.setSoNo(row.getString(2));
|
||||
VUtil.trueThrowBusinessError(StrUtil.isNotBlank(materialCode.getSoNo()))
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(materialCode.getSoNo()))
|
||||
.throwMessage("销售订单号不能为空");
|
||||
materialCode.setMaterialNo(row.getString(6));
|
||||
VUtil.trueThrowBusinessError(StrUtil.isNotBlank(materialCode.getMaterialNo()))
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(materialCode.getMaterialNo()))
|
||||
.throwMessage("设备料号不能为空");
|
||||
} else if (row.getRowNum() > 4 && StrUtil.isNotBlank(row.getString(1))) {
|
||||
WmsShipmentMaterialCodeItem item = new WmsShipmentMaterialCodeItem();
|
||||
|
|
@ -225,6 +249,8 @@ public class MaterialCodeController extends BaseController {
|
|||
item.setBoxNo(row.getString(9));
|
||||
item.setCreateBy(UserUtil.getUserName());
|
||||
item.setCreateTime(LocalDateTime.now());
|
||||
item.setPackingNum(NumberUtil.calculateLabelNum(item.getNum(), item.getMinPackagingNum()));
|
||||
item.setPackingLeft(item.getPackingNum());
|
||||
items.add(item);
|
||||
qrs.add(new WmsShipmentMaterialCodeItemQr()
|
||||
.setItemId(item.getId())
|
||||
|
|
@ -271,18 +297,20 @@ public class MaterialCodeController extends BaseController {
|
|||
item.setId(IdUtil.getSnowflakeNextId());
|
||||
item.setCreateBy(UserUtil.getUserName());
|
||||
item.setCreateTime(LocalDateTime.now());
|
||||
BigDecimal result = item.getNum().divide(item.getMinPackagingNum(), 3, RoundingMode.HALF_UP);
|
||||
BigDecimal decimalValue = result.remainder(BigDecimal.ONE);
|
||||
item.setPackingNum(decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue());
|
||||
// BigDecimal result = item.getNum().divide(item.getMinPackagingNum(), 3, RoundingMode.HALF_UP);
|
||||
// BigDecimal decimalValue = result.remainder(BigDecimal.ONE);
|
||||
// item.setPackingNum(decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue());
|
||||
item.setPackingNum(NumberUtil.calculateLabelNum(item.getNum(), item.getMinPackagingNum()));
|
||||
item.setPackingLeft(item.getPackingNum());
|
||||
int count = decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue();
|
||||
// int count = decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue();
|
||||
for (int i = 1; i <= item.getPackingNum(); i++) {
|
||||
materialCodeItemQrService.save(new WmsShipmentMaterialCodeItemQr()
|
||||
.setItemId(item.getId())
|
||||
.setNo(KeyUtil.next())
|
||||
.setNum(i == count && decimalValue.compareTo(BigDecimal.ZERO) > 0 ? decimalValue : item.getMinPackagingNum())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setItemId(item.getId())
|
||||
.setNo(KeyUtil.next())
|
||||
// .setNum(i == count && decimalValue.compareTo(BigDecimal.ZERO) > 0 ? decimalValue : item.getMinPackagingNum())
|
||||
.setNum(NumberUtil.getPackageNum(item.getNum(), item.getMinPackagingNum(), item.getPackingNum(), i))
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
);
|
||||
}
|
||||
materialCodeItemService.save(item);
|
||||
|
|
@ -318,16 +346,17 @@ public class MaterialCodeController extends BaseController {
|
|||
materialCodeItemQrService.lambdaUpdate()
|
||||
.eq(WmsShipmentMaterialCodeItemQr::getItemId, item.getId())
|
||||
.remove();
|
||||
BigDecimal result = item.getNum().divide(item.getMinPackagingNum(), 3, RoundingMode.HALF_UP);
|
||||
BigDecimal decimalValue = result.remainder(BigDecimal.ONE);
|
||||
item.setPackingNum(decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue());
|
||||
// BigDecimal result = item.getNum().divide(item.getMinPackagingNum(), 3, RoundingMode.HALF_UP);
|
||||
// BigDecimal decimalValue = result.remainder(BigDecimal.ONE);
|
||||
// item.setPackingNum(decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue());
|
||||
item.setPackingNum(NumberUtil.calculateLabelNum(item.getNum(), item.getMinPackagingNum()));
|
||||
item.setPackingLeft(item.getPackingNum());
|
||||
int count = decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue();
|
||||
// int count = decimalValue.compareTo(BigDecimal.ZERO) > 0 ? result.intValue() + 1 : result.intValue();
|
||||
for (int i = 1; i <= item.getPackingNum(); i++) {
|
||||
materialCodeItemQrService.save(new WmsShipmentMaterialCodeItemQr()
|
||||
.setItemId(item.getId())
|
||||
.setNo(KeyUtil.next())
|
||||
.setNum(i == count && decimalValue.compareTo(BigDecimal.ZERO) > 0 ? decimalValue : item.getMinPackagingNum())
|
||||
.setNum(NumberUtil.getPackageNum(item.getNum(), item.getMinPackagingNum(), item.getPackingNum(), i))
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
);
|
||||
|
|
@ -551,7 +580,7 @@ public class MaterialCodeController extends BaseController {
|
|||
return exportItemZip(datas);
|
||||
}
|
||||
|
||||
private ResponseEntity<byte[]> exportItemZip(List<ShipmentMaterialCodeQRVO> datas) throws Exception{
|
||||
private ResponseEntity<byte[]> exportItemZip(List<ShipmentMaterialCodeQRVO> datas) throws Exception {
|
||||
Map<String, String> iamges = materialService.lambdaQuery()
|
||||
.select(WmsShipmentMaterial::getNo, WmsShipmentMaterial::getImage)
|
||||
.in(WmsShipmentMaterial::getNo, datas.stream().map(ShipmentMaterialCodeQRVO::getMaterialNo).collect(Collectors.toSet()))
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue