add:增加料箱/托盘称重检测功能。

This commit is contained in:
2026-02-03 14:50:31 +08:00
parent a1ad4321d0
commit 22a6d7b90a
2 changed files with 22 additions and 19 deletions

View File

@@ -577,6 +577,9 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
k3CloudApi
);
if (materialInfo == null) {
log.error(item.get(0).getVehicle_code()
+ "上的物料:" + r.getMaterial_code()
+ "在ERP系统上检索不到相关物料信息请检查");
throw new BadRequestException(
"weightError-载具" + item.get(0).getVehicle_code()
+ "上的物料:" + r.getMaterial_code()
@@ -584,6 +587,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
);
}
r.setSingle_weight(materialInfo.getNet_weight());
r.setAssist_unit_id(materialInfo.getAssist_unit_id());
}
//过滤出需要称重校验的物料(单重 > 0
List<MdPbVehicleMaterVo> validItems = item.stream()
@@ -597,6 +601,9 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
try {
actualWeightKg = new BigDecimal(w.trim());
} catch (Exception e) {
log.error(item.get(0).getVehicle_code()
+ "在称重站点上:" + deviceCode + w
+ "称重数据格式非法,请检查!");
throw new BadRequestException("weightError-称重数据格式非法:" + deviceCode + w);
}
} else {
@@ -619,10 +626,13 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
}
}
} catch (Exception ex) {
log.error("获取称重失败" + deviceCode + ex.getMessage());
log.error(item.get(0).getVehicle_code() + "获取称重失败" + deviceCode + ex.getMessage());
}
}
if (actualWeightKg.compareTo(BigDecimal.ZERO) <= 0) {
log.error(item.get(0).getVehicle_code()
+ "在称重站点上:" + deviceCode + w
+ "反馈称重为0称重异常请检查。");
throw new BadRequestException(
String.format("weightError-该点位:%s反馈称重为0称重异常请检查。", deviceCode)
);
@@ -630,6 +640,8 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
//查询出入库配置规则
Param byCode = iSysParamService.findByCode(item.get(0).getVehicle_code().contains("T") ? "tp_range" : "lx_range");
if (byCode == null || StringUtils.isEmpty(byCode.getValue())) {
log.error(item.get(0).getVehicle_code()
+ "未配置托盘或料箱的误差值,请检查。");
throw new BadRequestException("weightError-未配置托盘或料箱的误差值,请检查。");
}
// 误差值
@@ -650,8 +662,9 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
.reduce(BigDecimal.ZERO, BigDecimal::add);
//实际称重换算克
BigDecimal actualWeightG = actualWeightKg.multiply(BigDecimal.valueOf(1000));
BigDecimal netWeight = BigDecimal.ZERO;
// 净重 = 实际称重 - 载具皮重
BigDecimal netWeight = actualWeightG.subtract(BigDecimal.valueOf(weight));
netWeight = actualWeightG.subtract(BigDecimal.valueOf(weight));
if (netWeight.compareTo(BigDecimal.ZERO) < 0) {
netWeight = BigDecimal.ZERO;
}
@@ -660,9 +673,10 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
.subtract(materialWeight)
.abs();
if (diffWeight.compareTo(relativeError) > 0) {
log.error(item.get(0).getVehicle_code()+ "的物料数量为:" + validItems.get(0).getQty()
+ ",上报重量为:" + actualWeightKg + ",载具重量为:" + weight + ",去皮重量为:" + netWeight + ",与物料实际重量:" + materialWeight + ",进行对比已超过误差值" + diffWeight + ",不允许入库,请检查。");
throw new BadRequestException(
String.format("weightError-该载具:%s称重重量为%s与物料实际重量:%s进行对比已超过误差值%sg不允许入库请检查。",
item.get(0).getVehicle_code(), netWeight, materialWeight, diffWeight)
(item.get(0).getVehicle_code() + "的物料数量为:" + validItems.get(0).getQty() + ",上报重量为:" + actualWeightKg + "kg载具重量为:" + weight + "g" + ",物料单重为:" + validItems.get(0).getSingle_weight() + validItems.get(0).getAssist_unit_id() +",去皮重量为:" + netWeight + "g与物料实际重量:" + materialWeight + "g进行对比已超过误差值" + diffWeight + "g不允许入库请检查。")
);
}
}

View File

@@ -437,17 +437,13 @@ public class SyncErpBillsScheduleService {
if (ObjectUtils.isNotEmpty(formDataList)) {
String assistUint = "0";
String netWeight = "0";
JSONArray uintJsonArray = JSONObject.parseObject(JSON.toJSONString(r)).getJSONArray("MaterialStock");
if (ObjectUtils.isNotEmpty(uintJsonArray)) {
JSONObject u1 = JSONObject.parseObject(JSON.toJSONString(uintJsonArray.get(0)));
JSONObject u2 = u1.getJSONObject("AuxUnitID");
assistUint = u2 != null ? u2.getString("Number") : "0";
}
JSONArray netWeightArray = JSONObject.parseObject(JSON.toJSONString(r)).getJSONArray("MaterialBase");
if (ObjectUtils.isNotEmpty(netWeightArray)) {
JSONObject u1 = JSONObject.parseObject(JSON.toJSONString(netWeightArray.get(0)));
String u2 = u1.getString("NETWEIGHT");
netWeight = StringUtils.isNotBlank(u2) ? u2 : "0";
JSONObject u3 = u1.getJSONObject("WEIGHTUNITID");
assistUint = u3 != null ? "kg".equals(u3.getString("Number"))||"MX041".equals(u3.getString("Number"))?"kg":"g" : "g";
}
PmFormData mainFormData = formDataList.stream().filter(rs1 -> "BD_MATERIAL".equals(rs1.getForm_type())).collect(Collectors.toList()).get(0);
JSONObject object = mainFormData.getForm_data();
@@ -464,15 +460,8 @@ public class SyncErpBillsScheduleService {
materialBase.setQty_unit_id(m_unit);
materialBase.setAssist_unit_id(assistUint);
BigDecimal netWeightGet = new BigDecimal(netWeight);
//辅助单位净重为kg
if (netWeightGet.compareTo(BigDecimal.ZERO) > 0 && assistUint.contains("kg")) {
BigDecimal newWeightGet = netWeightGet.multiply(new BigDecimal(1000));
materialBase.setNet_weight(newWeightGet);
materialBase.setNearby_weight(newWeightGet);
} else {
materialBase.setNet_weight(netWeightGet);
materialBase.setNearby_weight(netWeightGet);
}
materialBase.setPrint_no(formData.getPcsn());
if (materialInfo != null) {
iMdMeMaterialbaseService.update(new LambdaUpdateWrapper<MdMeMaterialbase>()