修复bug:

1. 105~107口入库时添加库存的物料号未完全区分
2. 添加点位映射, LK-[X] => 10[X]
3. 添加获取2号3号库的库位实时使用率接口
This commit is contained in:
李宇奇 2025-04-20 14:59:49 +08:00
parent 16a9981ece
commit bd9eb7101d
6 changed files with 87 additions and 10 deletions

View File

@ -0,0 +1,14 @@
package com.wms_main.constant.enums.wms;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum WmsLocationNumEnums {
LOCATION_NUM_2(316, "2号库"),
LOCATION_NUM_3(540, "3号库");
private final Integer code;
private final String desc;
}

View File

@ -44,4 +44,9 @@ public class YcwmsController {
public YcwmsResponse<List<StockResp>> stock(@RequestBody StockReq request) { public YcwmsResponse<List<StockResp>> stock(@RequestBody StockReq request) {
return ycwmsControllerService.stock(request); return ycwmsControllerService.stock(request);
} }
@GetMapping("/getAvailPercent")
public YcwmsResponse<Object> getAvailPercent(String equipmentId) {
return ycwmsControllerService.getAvailPercent(equipmentId);
}
} }

View File

@ -76,4 +76,17 @@ public class ConvertUtils {
default -> ""; default -> "";
}; };
} }
public static String convertPointToDestination(String point) {
return switch (point) {
case "LK-1" -> "101";
case "LK-2" -> "102";
case "LK-3" -> "103";
case "LK-4" -> "104";
case "LK-5" -> "105";
case "LK-6" -> "106";
case "LK-7" -> "107";
default -> "";
};
}
} }

View File

@ -13,4 +13,5 @@ public interface IYcwmsControllerService {
YcwmsResponse<Object> orderIn(OrderInReq request); YcwmsResponse<Object> orderIn(OrderInReq request);
YcwmsResponse<Object> orderOut(OrderOutReq request); YcwmsResponse<Object> orderOut(OrderOutReq request);
YcwmsResponse<List<StockResp>> stock(StockReq request); YcwmsResponse<List<StockResp>> stock(StockReq request);
YcwmsResponse<Object> getAvailPercent(String equipmentId);
} }

View File

@ -53,7 +53,14 @@ public class WcsControllerServiceImpl implements IWcsControllerService {
if(targetLocation == null) { if(targetLocation == null) {
return WcsApiResponse.error("没有空闲库位,请稍后再试", null); return WcsApiResponse.error("没有空闲库位,请稍后再试", null);
} }
String goodsId567 = point.equals("105") ? "3" : "2"; String goodsId567 = "";
if (point.equals("105")) {
goodsId567 = "2";
} else if (point.equals("106")) {
goodsId567 = "3";
} else {
goodsId567 = "4";
}
String vehicleId = UUIDUtils.getNewUUID(); String vehicleId = UUIDUtils.getNewUUID();
// 插入一条默认入库单 // 插入一条默认入库单
TAppOrderIn orderIn = new TAppOrderIn(); TAppOrderIn orderIn = new TAppOrderIn();

View File

@ -1,8 +1,9 @@
package com.wms_main.service.controller.serviceImpl; package com.wms_main.service.controller.serviceImpl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.wms_main.constant.enums.wms.OrderStatusEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wms_main.constant.enums.wms.WmsApiResponseCodeEnums; import com.wms_main.constant.enums.wms.*;
import com.wms_main.dao.ITAppLocationService;
import com.wms_main.dao.ITAppOrderInService; import com.wms_main.dao.ITAppOrderInService;
import com.wms_main.dao.ITAppOrderOutService; import com.wms_main.dao.ITAppOrderOutService;
import com.wms_main.dao.ITAppStockService; import com.wms_main.dao.ITAppStockService;
@ -10,9 +11,11 @@ import com.wms_main.model.bo.erp.ErpGoodsDetail;
import com.wms_main.model.bo.erp.ErpVehicleNoResp; import com.wms_main.model.bo.erp.ErpVehicleNoResp;
import com.wms_main.model.dto.request.ycwms.*; import com.wms_main.model.dto.request.ycwms.*;
import com.wms_main.model.dto.response.ycwms.YcwmsResponse; import com.wms_main.model.dto.response.ycwms.YcwmsResponse;
import com.wms_main.model.po.TAppLocation;
import com.wms_main.model.po.TAppOrderIn; import com.wms_main.model.po.TAppOrderIn;
import com.wms_main.model.po.TAppOrderOut; import com.wms_main.model.po.TAppOrderOut;
import com.wms_main.model.po.TAppStock; import com.wms_main.model.po.TAppStock;
import com.wms_main.repository.utils.ConvertUtils;
import com.wms_main.repository.utils.StringUtils; import com.wms_main.repository.utils.StringUtils;
import com.wms_main.repository.utils.UUIDUtils; import com.wms_main.repository.utils.UUIDUtils;
import com.wms_main.service.api.IExternalApiService; import com.wms_main.service.api.IExternalApiService;
@ -35,6 +38,7 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
private final ITAppOrderInService appOrderInService; private final ITAppOrderInService appOrderInService;
private final ITAppOrderOutService appOrderOutService; private final ITAppOrderOutService appOrderOutService;
private final ITAppStockService appStockService; private final ITAppStockService appStockService;
private final ITAppLocationService appLocationService;
private final IExternalApiService externalApiService; private final IExternalApiService externalApiService;
@Override @Override
@ -55,6 +59,7 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
return YcwmsResponse.error("入库单已存在,请勿重复推送", null); return YcwmsResponse.error("入库单已存在,请勿重复推送", null);
} }
String vehicleNo = request.getVehicleNo(); String vehicleNo = request.getVehicleNo();
String inStand = ConvertUtils.convertPointToDestination(request.getInStand());
List<ErpGoodsDetail> erpGoodsDetails = new ArrayList<>(); List<ErpGoodsDetail> erpGoodsDetails = new ArrayList<>();
try { try {
YcwmsResponse<ErpVehicleNoResp> erpResp = externalApiService.getVehicleNoData(vehicleNo); YcwmsResponse<ErpVehicleNoResp> erpResp = externalApiService.getVehicleNoData(vehicleNo);
@ -74,13 +79,17 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
Iterator<OrderInGoodsDetail> iterator = mesGoodsDetails.iterator(); Iterator<OrderInGoodsDetail> iterator = mesGoodsDetails.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
OrderInGoodsDetail goodsDetail = iterator.next(); OrderInGoodsDetail goodsDetail = iterator.next();
// boolean matchFound = erpGoodsDetails.stream().anyMatch(erpGoodsDetail ->
// erpGoodsDetail.getGoodsId().equals(goodsDetail.getGoodsId()) &&
// erpGoodsDetail.getGoodsBarcode().equals(goodsDetail.getGoodsBarcode()) &&
// Objects.equals(erpGoodsDetail.getQuantity(), goodsDetail.getQuantity()) &&
// erpGoodsDetail.getGoodsType().equals(goodsDetail.getGoodsType()) &&
// Objects.equals(erpGoodsDetail.getSpecification(), goodsDetail.getSpecification())
// );
boolean matchFound = erpGoodsDetails.stream().anyMatch(erpGoodsDetail -> boolean matchFound = erpGoodsDetails.stream().anyMatch(erpGoodsDetail ->
erpGoodsDetail.getGoodsId().equals(goodsDetail.getGoodsId()) && erpGoodsDetail.getGoodsId().equals(goodsDetail.getGoodsId()) &&
erpGoodsDetail.getGoodsBarcode().equals(goodsDetail.getGoodsBarcode()) &&
Objects.equals(erpGoodsDetail.getQuantity(), goodsDetail.getQuantity()) && Objects.equals(erpGoodsDetail.getQuantity(), goodsDetail.getQuantity()) &&
erpGoodsDetail.getGoodsType().equals(goodsDetail.getGoodsType()) && erpGoodsDetail.getGoodsType().equals(goodsDetail.getGoodsType()));
Objects.equals(erpGoodsDetail.getSpecification(), goodsDetail.getSpecification())
);
if (matchFound) { if (matchFound) {
// 找到匹配的任务删除该 goodsDetail // 找到匹配的任务删除该 goodsDetail
iterator.remove(); iterator.remove();
@ -99,7 +108,7 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
orderIn.setOrderId(request.getOrderId()); orderIn.setOrderId(request.getOrderId());
orderIn.setVehicleNo(request.getVehicleNo()); orderIn.setVehicleNo(request.getVehicleNo());
orderIn.setVehicleSize(request.getVehicleSize()); orderIn.setVehicleSize(request.getVehicleSize());
orderIn.setInStand(request.getInStand()); orderIn.setInStand(inStand);
orderIn.setClientId(request.getClientId()); orderIn.setClientId(request.getClientId());
orderIn.setGoodsId(goodsDetail.getGoodsId()); orderIn.setGoodsId(goodsDetail.getGoodsId());
orderIn.setGoodsName(goodsDetail.getGoodsName()); orderIn.setGoodsName(goodsDetail.getGoodsName());
@ -210,5 +219,33 @@ public class YcwmsControllerServiceImpl implements IYcwmsControllerService {
return YcwmsResponse.success(respList); return YcwmsResponse.success(respList);
} }
public YcwmsResponse<Object> getAvailPercent(String equipmentId) {
if (equipmentId == null || equipmentId.isEmpty()) {
return YcwmsResponse.error("参数错误", null);
}
if (equipmentId.equals("1")) {
return YcwmsResponse.error("该库无成品物料", null);
} else if (equipmentId.equals("2")) {
Integer queryId = Integer.parseInt(equipmentId);
Long locationNum = appLocationService.count(
new LambdaQueryWrapper<TAppLocation>()
.eq(TAppLocation::getEquipmentId, queryId)
.eq(TAppLocation::getLocationType, WmsLocationTypeEnums.TYPE_PRODUCT.getCode())
.eq(TAppLocation::getIsOccupy, WmsLocationOccupyStatusEnums.OCCUPY.getCode())
);
Double percent = Double.parseDouble(locationNum.toString()) / WmsLocationNumEnums.LOCATION_NUM_2.getCode();
return YcwmsResponse.success(percent);
} else if (equipmentId.equals("3")) {
Integer queryId = Integer.parseInt(equipmentId);
Long locationNum = appLocationService.count(
new LambdaQueryWrapper<TAppLocation>()
.eq(TAppLocation::getEquipmentId, queryId)
.eq(TAppLocation::getLocationType, WmsLocationTypeEnums.TYPE_PRODUCT.getCode())
.eq(TAppLocation::getIsOccupy, WmsLocationOccupyStatusEnums.OCCUPY.getCode())
);
Double percent = Double.parseDouble(locationNum.toString()) / WmsLocationNumEnums.LOCATION_NUM_3.getCode();
return YcwmsResponse.success(percent);
}
return YcwmsResponse.error("equipmentId无效", null);
}
} }