fix:退料/退空桶

This commit is contained in:
zhengxuming
2025-08-05 15:43:20 +08:00
parent bbaaa3d7de
commit fc1e53879b
8 changed files with 104 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
package org.nl.wms.ext_manage.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -11,6 +12,7 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
@@ -130,10 +132,16 @@ public class MesToWmsServiceImpl implements MesToWmsService {
@Transactional(rollbackFor = Exception.class)
public MesResponse callMaterial(MesCallMaterialRequestDto dto) {
log.info("MES下发设备叫料信息输入参数-------------------: {}", dto);
RLock lock = redissonClient.getLock(dto.getTask_code());
boolean tryLock = lock.tryLock(1, TimeUnit.SECONDS);
try {
if (tryLock) {
if(dto.getIsManual() != null && dto.getIsManual()){
dto.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
}
String pointCode = dto.getDevice_code();
SchBasePoint outPoint = pointService.getById(pointCode);
if (null == outPoint) {
@@ -392,6 +400,10 @@ public class MesToWmsServiceImpl implements MesToWmsService {
if (tryLock) {
log.info("MES下发设备退料信息输入参数--------------------------------------" + MesResponse.requestOk());
if(dto.getIsManual() != null && dto.getIsManual()){
dto.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
}
//根据料桶号去载具表匹配料桶类型
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getByCode(dto.getVehicle_code());
@@ -405,13 +417,36 @@ public class MesToWmsServiceImpl implements MesToWmsService {
throw new BadRequestException("未找到载具编码为" + dto.getVehicle_code() + "的载具入库库区,请检查字典中是否维护!");
}
//查询库区
Sectattr sectattr = sectattrService.findByCode(dict.getPara1());
//通过
JSONObject param = new JSONObject();
param.put("vehicle_code",dto.getVehicle_code());
param.put("site_code",dto.getDevice_code());
param.put("sect_id",sectattr.getSect_id());
pdaIosInService.confirmIn(param);
if(dto.getIsManual() != null && dto.getIsManual()){
param.put("create_mode", "手动" );
} else{
param.put("create_mode", "自动" );
}
param.put("task_code", dto.getTask_code());
//退料
if("1".equals(dto.getTask_type())){
param.put("sect_code",sectattr.getSect_code());
param.put("vehicle_code",dto.getVehicle_code());
param.put("storagevehicle_code", param.getString("vehicle_code"));
param.put("qty","1");
param.put("stor_id",sectattr.getStor_id());
pdaIosInService.confirmReturnMaterial(param);
} else if("2".equals(dto.getTask_type())){
//退空桶
param.put("vehicle_code",dto.getVehicle_code());
param.put("site_code",dto.getDevice_code());
param.put("sect_id",sectattr.getSect_id());
param.put("sect_code",sectattr.getSect_code());
pdaIosInService.vehicleInConfirm(param);
} else{
throw new BadRequestException("任务类型有误请传入1或2");
}
return MesResponse.requestOk();
} else {
throw new BadRequestException("任务标识为:" + dto.getTask_code() + "的任务正在操作中!");

View File

@@ -443,7 +443,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
params.put("material_code", whereJson.getString("material_code"));
params.put("qty", whereJson.getString("qty"));
params.put("pcsn", whereJson.getString("pcsn"));
Structattr attrDao = iRawAssistIStorService.getStructattr(whereJson);
Structattr attrDao = iRawAssistIStorService.getStructattr(params);
//确定起点
SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, whereJson.getString("site_code")));
if (ObjectUtil.isEmpty(schBasePoint)) {

View File

@@ -10,6 +10,7 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.IdUtil;;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.ext_manage.service.WmsToMesService;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
@@ -23,6 +24,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* @Author: Liuxy
* @Description: 余料回库类
@@ -50,11 +53,22 @@ public class BackInTask extends AbstractTask {
@Autowired
private IStructattrService iStructattrService;
/**
* WMS回传MES
*/
@Autowired
private WmsToMesService wmsToMesService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
if(json.containsKey("task_code")){
task.setTask_code(json.getString("task_code"));
} else {
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
}
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("config_code"));
task.setPoint_code1(json.getString("point_code1"));
@@ -155,6 +169,14 @@ public class BackInTask extends AbstractTask {
taskObj.setRemark("已完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskService.updateById(taskObj);
//如果是自动的回调MES接口将task_code传给mes
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status",200);
jsonObject.put("message","成功");
wmsToMesService.uploadMes(jsonObject);
}
}
@Transactional
@@ -170,5 +192,13 @@ public class BackInTask extends AbstractTask {
taskObj.setRemark("已取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskService.updateById(taskObj);
//反馈到MES系统
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status",400);
jsonObject.put("message","任务被取消");
wmsToMesService.uploadMes(jsonObject);
}
}
}

View File

@@ -10,6 +10,7 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.IdUtil;;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.ext_manage.service.WmsToMesService;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
@@ -50,11 +51,21 @@ public class VehicleInTask extends AbstractTask {
@Autowired
private IStructattrService iStructattrService;
/**
* WMS回传MES
*/
@Autowired
private WmsToMesService wmsToMesService;
@Override
public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
if(json.containsKey("task_code")){
task.setTask_code(json.getString("task_code"));
} else {
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
}
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("config_code"));
task.setPoint_code1(json.getString("point_code1"));
@@ -156,6 +167,14 @@ public class VehicleInTask extends AbstractTask {
taskObj.setRemark("已完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskService.updateById(taskObj);
//如果是自动的回调MES接口将task_code传给mes
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status",200);
jsonObject.put("message","成功");
wmsToMesService.uploadMes(jsonObject);
}
}
@Transactional
@@ -171,5 +190,13 @@ public class VehicleInTask extends AbstractTask {
taskObj.setRemark("已取消");
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
taskService.updateById(taskObj);
//反馈到MES系统
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status",400);
jsonObject.put("message","任务被取消");
wmsToMesService.uploadMes(jsonObject);
}
}
}

View File

@@ -245,7 +245,7 @@ public class DownEmptyUpFullTask extends AbstractTask {
//反馈到MES系统
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status","200");
jsonObject.put("status",200);
jsonObject.put("message","成功");
wmsToMesService.uploadMes(jsonObject);
}
@@ -303,7 +303,7 @@ public class DownEmptyUpFullTask extends AbstractTask {
//反馈到MES系统
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status","400");
jsonObject.put("status",400);
jsonObject.put("message","任务被取消");
wmsToMesService.uploadMes(jsonObject);
}

View File

@@ -181,7 +181,7 @@ public class SeparateMaterialTask extends AbstractTask {
//反馈到MES系统
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status","200");
jsonObject.put("status",200);
jsonObject.put("message","成功");
wmsToMesService.uploadMes(jsonObject);
}
@@ -238,7 +238,7 @@ public class SeparateMaterialTask extends AbstractTask {
//反馈到MES系统
if("自动".equals(taskObj.getCreate_mode())){
JSONObject jsonObject=new JSONObject();
jsonObject.put("status","400");
jsonObject.put("status",400);
jsonObject.put("message","任务被取消");
wmsToMesService.uploadMes(jsonObject);
}

View File

@@ -31,7 +31,6 @@ public class MesManualBackMaterialRequestDto {
private String remark;
@NotBlank(message = "任务号不可为空")
private String task_code;
@NotBlank(message = "任务类型不可为空")

View File

@@ -27,7 +27,6 @@ public class MesManualCallMaterialRequestDto {
private String remark;
@NotBlank(message = "任务号不可为空")
private String task_code;
@NotBlank(message = "任务类型不可为空")