物流改写

liweidong
绫Umbrella 2 weeks ago
parent 0804456476
commit 96d33468c3
  1. 41
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/enums/DistinguishRegionsEnum.java
  2. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/dto/ReturnToWarehouseDto.java
  3. 13
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationRegionVo.java
  4. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/OrderBoxController.java
  5. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IOrderBoxService.java
  6. 92
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java

@ -0,0 +1,41 @@
package org.springblade.desk.logistics.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.desk.jobtransfer.pojo.enums.SkillEnum;
import java.util.Arrays;
@Getter
@AllArgsConstructor
public enum DistinguishRegionsEnum {
Post_plating_warehouse_operation_center("镀后库作业中心", "logistics_anagement_region");
final String wcName;
final String code;
public static Boolean includeByWcName(String wcName) {
Boolean result=false;
DistinguishRegionsEnum[] values = values();
for (DistinguishRegionsEnum distinguishRegions : values) {
if (distinguishRegions.getWcName().equals(wcName)) {
return true;
}
}
return result;
}
public static String wcNameByCode(String wcName) {
String result="";
DistinguishRegionsEnum[] values = values();
for (DistinguishRegionsEnum distinguishRegions : values) {
if (distinguishRegions.getWcName().equals(wcName)) {
return distinguishRegions.getCode();
}
}
return result;
}
}

@ -14,4 +14,6 @@ public class ReturnToWarehouseDto {
private String startStationCode;
//终点id
private Long endWcId ;
//区域
private String stationRegion ;
}

@ -0,0 +1,13 @@
package org.springblade.desk.logistics.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
@Schema(description = "获取区域和站点返回")
public class StationRegionVo {
String stationRegion;
List<String> stationCodeList;
}

@ -30,6 +30,7 @@ import org.springblade.desk.logistics.service.IOrderBoxService;
import org.springblade.desk.logistics.service.IStationService;
import org.springblade.desk.logistics.service.ITaskService;
import org.springblade.system.cache.DictCache;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
@ -82,6 +83,15 @@ public class OrderBoxController extends BladeController {
public R getBSWORKCENTER() {
return iOrderBoxService.returnToWarehouseList();
}
@GetMapping("/stationRegion-list")
@ApiOperationSupport(order = 8)
@Operation(
summary = "获取作业中心",
description = "获取当前作业中心名称"
)
public R getStationRegion() {
return iOrderBoxService.getStationRegion();
}
@PostMapping("/box-binding")
@ -131,12 +141,24 @@ public class OrderBoxController extends BladeController {
* 回调作业中心list
*/
@GetMapping("/getQuantity-Location")
@ApiOperationSupport(order = 7)
@ApiOperationSupport(order = 9)
@Operation(summary = "订单位置和重量", description = "获取箱条码对应的订单位置与作业中心")
public R getQuantityLocation(@RequestParam String boxBarcode) {
return iOrderBoxService.getQuantityLocation(boxBarcode);
}
/**
* 回调作业中心list
*/
@GetMapping("/demos")
@ApiOperationSupport(order = 9)
@Operation(summary = "订单位置和重量", description = "获取箱条码对应的订单位置与作业中心")
public R demos(@RequestParam String boxBarcode) {
String logisticsAnagementRegion = DictCache.getValue("logistics_anagement_region", boxBarcode);
System.out.println("logisticsAnagementRegion = " + logisticsAnagementRegion);
// return iOrderBoxService.getQuantityLocation(boxBarcode);
return null;
}
}

@ -54,4 +54,6 @@ public interface IOrderBoxService {
R getBoxbarcodeDetails(String boxBarcode);
R getStationNameBoxBarcode(String stationCode);
R getStationRegion();
}

@ -14,6 +14,7 @@ import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.dashboard.pojo.entity.BsWorkCenterEntity;
import org.springblade.desk.dashboard.service.IBsWorkCenterService;
import org.springblade.desk.logistics.enums.DistinguishRegionsEnum;
import org.springblade.desk.logistics.pojo.dto.BoxBindingDto;
import org.springblade.desk.logistics.pojo.dto.ReturnToWarehouseDto;
import org.springblade.desk.logistics.pojo.entity.*;
@ -26,6 +27,7 @@ import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springblade.system.cache.DictCache;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -1025,10 +1027,17 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
if (workCenter != null) {
detailsVO.setWcName(workCenter.getWcName());
}
//判断是否是镀后库作业中心
if (DistinguishRegionsEnum.includeByWcName(workCenter.getWcName())) {
List<YieldOrder> yieldOrderList = yieldOrderService.list(new LambdaQueryWrapper<YieldOrder>().eq(YieldOrder::getCardNo, orderList.get(0).getCardNo()));
String code = DistinguishRegionsEnum.wcNameByCode(workCenter.getWcName());
String logisticsAnagementRegion = DictCache.getValue(code, yieldOrderList.get(0).getUseDept());
detailsVO.setStationRegion(logisticsAnagementRegion);
return R.data(detailsVO);
}
// 设置工位区域
List<StationCenter> stationCenterList = stationCenterService.list(
new LambdaQueryWrapper<StationCenter>().eq(StationCenter::getWcId, wcId)
new LambdaQueryWrapper<StationCenter>().eq(StationCenter::getWcId, wcId)
);
if (stationCenterList!=null||stationCenterList.size()!=0) {
@ -1064,55 +1073,21 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
return R.data(stationNameBoxBarcodeVO);
}
@Override
public R getStationRegion() {
List<StationVO> freeStationList = stationService.getStatusStationList(STATUS_FREE, null,CONVEYOR_LINE_RECEIVE_ONLY,false);
List<String> stationRegionList = freeStationList.stream().map(StationVO::getStationRegion).distinct().collect(Collectors.toUnmodifiableList());
ArrayList<StationRegionVo> list = new ArrayList<>();
for (String stationRegion : stationRegionList) {
StationRegionVo stationRegionVo = new StationRegionVo();
stationRegionVo.setStationRegion(stationRegion);
List<String> stationList = freeStationList.stream().filter(s -> stationRegion.equals(s.getStationRegion())).map(StationVO::getStationCode).distinct().collect(Collectors.toUnmodifiableList());
stationRegionVo.setStationCodeList(stationList);
list.add(stationRegionVo);
}
// public R<?> boxBinding1(BoxBindingDto boxBinding) {
// log.info("【箱条码绑定】开始处理 - 绑定参数:{}", boxBinding);
//
// // 1. 基础参数校验
// R<?> paramCheckResult = validateBoxBindingParams(boxBinding);
// if (!paramCheckResult.isSuccess()) {
// return paramCheckResult;
// }
// String boxBarcode = boxBinding.getBoxBarcode();
// List<String> orderCardNoList = boxBinding.getOrderIdList();
//
// // 2. 订单有效性校验
// R<?> orderValidResult = validateOrderExist(orderCardNoList);
// if (!orderValidResult.isSuccess()) {
// return orderValidResult;
// }
// List<YieldOrder> yieldOrderList = (List<YieldOrder>) orderValidResult.getData();
// List<Long> orderIdList = yieldOrderList.stream()
// .map(YieldOrder::getId)
// .collect(Collectors.toList());
//
// // 3. 校验箱条码是否存在运行中任务
// R<?> boxTaskCheckResult = checkBoxBarcodeRunningTask(boxBarcode);
// if (!boxTaskCheckResult.isSuccess()) {
// return boxTaskCheckResult;
// }
//
// // 4. 校验订单是否已绑定
//// R<?> orderBindCheckResult = checkOrderIdBoundStatus(orderIdList);
//// if (!orderBindCheckResult.isSuccess()) {
//// return orderBindCheckResult;
//// }
//
// // 5. 订单重量校验(超限则拒绝绑定)
// BigDecimal totalWeight = calculateOrderTotalWeight(orderIdList);
// if (totalWeight.compareTo(MAX_BOX_WEIGHT_THRESHOLD) > 0) {
// String errorMsg = String.format("箱条码%s绑定的订单总重量%.2fkg,超过最大阈值%.2fkg",
// boxBarcode, totalWeight, MAX_BOX_WEIGHT_THRESHOLD);
// log.warn("【箱条码绑定】{}", errorMsg);
// return R.fail(errorMsg + ",请重新进行绑定");
// }
// // 6.
//
// // 6. 保存绑定关系
// return saveOrderBoxBinding(boxBarcode, new ArrayList<>(orderIdList));
// }
return R.data(list);
}
@ -1158,6 +1133,23 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
// 从结果中获取最终确定的 wcId(第一次会赋值)
wcId = (Long) checkResult.getData();
}
//判断是不是镀后库作业中心
if(DistinguishRegionsEnum.includeByWcName( bsWorkCenterService.getById(wcId).getWcName())){
List<String> deptList = yieldOrderService.list(new LambdaQueryWrapper<YieldOrder>().in(YieldOrder::getCardNo, orderBindList)).stream().map(s -> s.getUseDept()).toList();
String code = DistinguishRegionsEnum.wcNameByCode(bsWorkCenterService.getById(wcId).getWcName());
String stationRegion="";
for (String s : deptList) {
String logisticsAnagementRegion = DictCache.getValue(code, s);
if (logisticsAnagementRegion==null) {
return R.fail("站点区域异常");
}else if (stationRegion==null) {
stationRegion= logisticsAnagementRegion;
}
if (!stationRegion.equals(logisticsAnagementRegion)) {
return R.fail("站点区域异常,站点区域配送不统一");
}
}
}
// 4. 校验箱条码是否存在运行中任务
R<?> boxTaskCheckResult = checkBoxBarcodeRunningTask(boxBarcode);
if (!boxTaskCheckResult.isSuccess()) {

Loading…
Cancel
Save