fix:优化托盘混料出库报错问题;

This commit is contained in:
2025-03-22 22:16:35 +08:00
parent 0341568eb7
commit 73202ff37d
5 changed files with 83 additions and 74 deletions

View File

@@ -5,8 +5,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.constant.DictConstantPool; import org.nl.common.domain.constant.DictConstantPool;
import org.nl.common.domain.exception.BadRequestException; import org.nl.common.domain.exception.BadRequestException;
@@ -19,9 +19,10 @@ import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.Decisi
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
@@ -30,6 +31,7 @@ import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -46,16 +48,15 @@ public class OutStorageTask extends AbstractTask {
private ISchBaseTaskService taskService; private ISchBaseTaskService taskService;
@Autowired @Autowired
private MoveStorageTask moveStorageTask; private MoveStorageTask moveStorageTask;
@Autowired @Autowired
private IStIvtStructattrService iStIvtStructattrService; private IStIvtStructattrService iStIvtStructattrService;
@Autowired @Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService; private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired
private IPmFormDataService iPmFormDataService;
@Override @Override
@Transactional @Transactional
@SneakyThrows
public JSONObject createTask(JSONObject from) { public JSONObject createTask(JSONObject from) {
String vehicle_code = from.getString("vehicle_code"); String vehicle_code = from.getString("vehicle_code");
String target_point = from.getString("target_point"); String target_point = from.getString("target_point");
@@ -87,12 +88,18 @@ public class OutStorageTask extends AbstractTask {
.ne("task_type", StatusEnum.IOBILL_TYPE_MOVE.code("移库")) .ne("task_type", StatusEnum.IOBILL_TYPE_MOVE.code("移库"))
.lt("status", StatusEnum.FORM_STATUS.code("完成"))); .lt("status", StatusEnum.FORM_STATUS.code("完成")));
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
if (!from.getString("task_type").equals(StatusEnum.IOBILL_TYPE_MOVE.code("移库"))) {
//一个托盘绑定多个物料,物料编码相同批号不同,防止生成相同起点终点相同的任务
if (list.get(0).getPoint_code2().equals(target_point)&&list.get(0).getVehicle_code().contains("T")) {
return (JSONObject) JSON.toJSON(list.get(0));
}
} else {
throw new BadRequestException("当前载具存在任务:" + list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); throw new BadRequestException("当前载具存在任务:" + list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
} }
}
StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("vehicle_code", vehicle_code)); StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("vehicle_code", vehicle_code));
log.info("OutStorgeTask出入分配货位信息:{}", struct.toString()); log.info("OutStorgeTask出入分配货位信息:{}", struct.toString());
String end_struct_code = struct.getStruct_code(); String end_struct_code = struct.getStruct_code();
if (struct.getStor_code().equals("FStockId")) { if (struct.getStor_code().equals("FStockId")) {
synchronized ("FStockId") { synchronized ("FStockId") {
end_struct_code = SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct); end_struct_code = SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct);
@@ -115,7 +122,6 @@ public class OutStorageTask extends AbstractTask {
.set(MdPbVehicleMater::getTask_code, task.getTask_code()) .set(MdPbVehicleMater::getTask_code, task.getTask_code())
.eq(MdPbVehicleMater::getVehicle_code, task.getVehicle_code()) .eq(MdPbVehicleMater::getVehicle_code, task.getVehicle_code())
.eq(MdPbVehicleMater::getIs_delete, false)); .eq(MdPbVehicleMater::getIs_delete, false));
//TODO:是否下发
Boolean isSend = from.getBoolean("is_send"); Boolean isSend = from.getBoolean("is_send");
if (isSend) { if (isSend) {
//参数封装调acs接口 //参数封装调acs接口

View File

@@ -414,7 +414,7 @@ public class PdaIOService {
dtl.getPcsn()))); dtl.getPcsn())));
List<MdPbVehicleMater> MdPbVehicleMaters = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>() List<MdPbVehicleMater> MdPbVehicleMaters = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
.in("vehicle_code", vehicles.split(",")) .in("vehicle_code", vehicles.split(","))
.eq("is_delete", false)); .eq("is_delete", false).eq("material_id", dtl.getMaterial_id()));
Map<String, List<MdPbVehicleMater>> pcsnListMap = MdPbVehicleMaters.stream().collect(Collectors.groupingBy(MdPbVehicleMater::getPcsn)); Map<String, List<MdPbVehicleMater>> pcsnListMap = MdPbVehicleMaters.stream().collect(Collectors.groupingBy(MdPbVehicleMater::getPcsn));
for (String disPcsn : pcsnListMap.keySet()) { for (String disPcsn : pcsnListMap.keySet()) {
List<MdPbVehicleMater> currentPcsnMater = pcsnListMap.get(disPcsn); List<MdPbVehicleMater> currentPcsnMater = pcsnListMap.get(disPcsn);

View File

@@ -92,6 +92,9 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
.eq("id", vehicle_id) .eq("id", vehicle_id)
.eq("is_delete", false) .eq("is_delete", false)
.eq("material_id", iostorinvdtl.getMaterial_id())); .eq("material_id", iostorinvdtl.getMaterial_id()));
if (one == null) {
continue;
}
vo.setVehicleMater(one); vo.setVehicleMater(one);
vo.setVehicle_code(one.getVehicle_code()); vo.setVehicle_code(one.getVehicle_code());
vo.setVehicle_id(vehicle_id); vo.setVehicle_id(vehicle_id);

View File

@@ -129,7 +129,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
} else { } else {
//托盘整出需要扣库存,除了二楼料箱整出不扣库存,其他都扣库存 //托盘整出需要扣库存,除了二楼料箱整出不扣库存,其他都扣库存
if (!("2114").equals(point_code2)) { if (!("2114").equals(point_code2)) {
update.set("qty", subtract); update.set("qty", subtract).set("is_delete", 1);
} }
} }
vehicleMaterService.update(update); vehicleMaterService.update(update);

View File

@@ -396,7 +396,7 @@ public class SyncErpBillsScheduleService {
String m_spec = object.getString("m_spec"); String m_spec = object.getString("m_spec");
String m_unit = mainFormData.getUnit_id(); String m_unit = mainFormData.getUnit_id();
PmFormData formData = formDataList.stream().filter(rs1 -> "BD_MATERIAL_1".equals(rs1.getForm_type())).collect(Collectors.toList()).get(0); PmFormData formData = formDataList.stream().filter(rs1 -> "BD_MATERIAL_1".equals(rs1.getForm_type())).collect(Collectors.toList()).get(0);
MdMeMaterialbase materialInfo = iMdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", m_code)); MdMeMaterialbase materialInfo = iMdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", mainFormData.getId()));
if (materialInfo != null) { if (materialInfo != null) {
iMdMeMaterialbaseService.update(new LambdaUpdateWrapper<MdMeMaterialbase>() iMdMeMaterialbaseService.update(new LambdaUpdateWrapper<MdMeMaterialbase>()
.set(MdMeMaterialbase::getMaterial_code, m_code) .set(MdMeMaterialbase::getMaterial_code, m_code)