fix:优化托盘混料出库报错问题;
This commit is contained in:
@@ -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接口
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user