|
|
@ -482,14 +482,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
// 木托盘号(4)##物料编码(12)##数量(2-3)##吨量(单重X数量)##生产日期(2023/11/04)##客户编码##订单号(12)#型号##产品名称##客户名称**
|
|
|
|
String requestNo = param.getString("requestNo"); |
|
|
|
ApplyTaskRequest baseRequest = param.toJavaObject(ApplyTaskRequest.class); |
|
|
|
if (baseRequest.getVehicle_code() == null) { |
|
|
|
String vehicleCode = TaskUtils.defaultVehicleCode(baseRequest.getVehicle_code()); |
|
|
|
if (vehicleCode == null) { |
|
|
|
return ApplyTaskResponse.responseError(requestNo, "载具编码不能为空!"); |
|
|
|
} |
|
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getOneByVehicleCode( |
|
|
|
baseRequest.getVehicle_code(), GroupBindMaterialStatusEnum.UNBOUND.getValue()); |
|
|
|
vehicleCode, GroupBindMaterialStatusEnum.UNBOUND.getValue()); |
|
|
|
if (groupInfo == null) { |
|
|
|
throw new BadRequestException("载具号「" + vehicleCode + "」的组盘信息不存在"); |
|
|
|
} |
|
|
|
String materialId = groupInfo.getMaterial_id(); |
|
|
|
MdBaseMaterial baseMaterial = materialService.getById(materialId); |
|
|
|
if (ObjectUtil.isEmpty(baseMaterial)) { |
|
|
|
throw new BadRequestException("物料id: " + materialId + " 不存在,请同步物料"); |
|
|
|
} |
|
|
|
BigDecimal materialQty = ObjectUtil.isNotEmpty(groupInfo.getMaterial_qty()) |
|
|
|
? BigDecimal.valueOf(groupInfo.getMaterial_qty()) : BigDecimal.valueOf(0); |
|
|
|
String singleWeightStr = baseMaterial.getSingle_weight(); |
|
|
@ -497,7 +504,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
BigDecimal multiply = materialQty.multiply(singleWeight); |
|
|
|
// 获取工单
|
|
|
|
PdmBdWorkorder workorder = workorderService.getByCode(groupInfo.getWorkorder_code()); |
|
|
|
if (ObjectUtil.isEmpty(workorder)) { |
|
|
|
throw new BadRequestException("工单不存在,请检查工单:" + groupInfo.getWorkorder_code()); |
|
|
|
} |
|
|
|
String extData = workorder.getExt_data(); |
|
|
|
if (ObjectUtil.isEmpty(extData)) { |
|
|
|
throw new BadRequestException("工单[ " + workorder.getWorkorder_code() + " ]外部数据为空"); |
|
|
|
} |
|
|
|
JSONObject object = JSONObject.parseObject(extData); |
|
|
|
log.info("包装数据:{}", object); |
|
|
|
String custerNo = object.getString("custer_no"); |
|
|
@ -510,7 +523,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
custer = wmsToMesService.getCusterByName(custerNo); |
|
|
|
} |
|
|
|
// 组合
|
|
|
|
sb.append(baseRequest.getVehicle_code()).append("##") |
|
|
|
sb.append(vehicleCode).append("##") |
|
|
|
.append(baseMaterial.getMaterial_code()).append("##") |
|
|
|
.append(groupInfo.getMaterial_qty()).append("##") |
|
|
|
.append(multiply).append("##") |
|
|
@ -946,7 +959,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
ApplySignalStatusRequest actionRequest = param.toJavaObject(ApplySignalStatusRequest.class); |
|
|
|
String deviceCode = actionRequest.getDevice_code(); |
|
|
|
RLock lock = redissonClient.getLock(deviceCode); |
|
|
|
boolean tryLock = lock.tryLock(3, TimeUnit.SECONDS); |
|
|
|
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); |
|
|
|
try { |
|
|
|
if (tryLock) { |
|
|
|
String move = null; |
|
|
@ -988,6 +1001,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
// hint: 特殊处理
|
|
|
|
specialOperation(schBasePoint); |
|
|
|
log.info("点位" + schBasePoint.getPoint_code() + "更新之后:{}", schBasePoint); |
|
|
|
} else { |
|
|
|
throw new BadRequestException("系统繁忙,请稍后再试"); |
|
|
|
} |
|
|
|
} finally { |
|
|
|
if (tryLock) { |
|
|
|