rev:修改

This commit is contained in:
2025-07-17 17:55:27 +08:00
parent b4b9e674cb
commit d58e529521
19 changed files with 190 additions and 40 deletions

View File

@@ -0,0 +1,107 @@
package org.nl.start;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
/**
* 随项目启动模块
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class Init implements ApplicationRunner {
@Autowired
private IStructattrService iStructattrService;
@Override
public void run(ApplicationArguments args) throws Exception {
// initTwoAttr(4,30,3,2, "2");
// createAttr();
// initTwoAttr2(9,11,3);
}
/**
* 仓位初始化
* row_num: 当前排
* col_all共多少列
* layer_all 共多少层
*/
private void initTwoAttr2(int row_num, int col_all, int layer_all) {
// 排
String row = row_num + "";
if (row_num < 10) {
row = "0" + row_num + "";
}
for (int j = 1; j < layer_all + 1; j++) {
// 层
String layer_num = j + "";
if (j < 10) {
layer_num = "0" + j;
}
for (int i = 1; i < col_all + 1; i++) {
Structattr json = new Structattr();
json.setStruct_id(org.nl.config.IdUtil.getStringId());
// 列
String col_num = i + "";
if (i < 10) {
col_num = "0" + i;
}
String struct_code = "B" + row + "-" + col_num + "-" + layer_num + "";
// 新增仓位
json.setSect_id("1945408460665524224");
json.setSect_code("ZC01");
json.setSect_name("主存区");
json.setStor_id("1582991156504039424");
json.setStor_code("BA01");
json.setStor_name("北安仓库");
json.setLock_type("0");
json.setRow_num(BigDecimal.valueOf(row_num));
json.setCol_num(BigDecimal.valueOf(i));
json.setLayer_num(BigDecimal.valueOf(j));
json.setBlock_num(BigDecimal.valueOf(1));
json.setStruct_code(struct_code);
json.setStruct_name(row + "" + col_num+ ""+ layer_num +"");
json.setSimple_name(json.getStruct_name());
// 长宽高
json.setZdepth(BigDecimal.valueOf(2700));
json.setWidth(BigDecimal.valueOf(1100));
json.setHeight(BigDecimal.valueOf(4000));
// 载具类型
json.setStoragevehicle_type("3");
json.setCreate_id("1");
json.setCreate_name("管理员");
json.setCreate_time(DateUtil.now());
iStructattrService.save(json);
}
}
}
}

View File

@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2025-06-09
*/
@RestController
@RequestMapping("/api/wms")
@RequestMapping("/api/wms/task")
@Slf4j
public class AcsToWmsController {
@Autowired

View File

@@ -23,7 +23,7 @@ public class AcsResponse extends BaseResponse {
*/
public static AcsResponse requestError(String message) {
AcsResponse result = new AcsResponse();
result.setCode(HttpStatus.HTTP_BAD_REQUEST);
result.setStatus(HttpStatus.HTTP_BAD_REQUEST);
result.setMessage(message);
result.setResponseDate(DateUtil.now());
return result;
@@ -35,7 +35,7 @@ public class AcsResponse extends BaseResponse {
*/
public static AcsResponse requestOkMessage(String message) {
AcsResponse result = new AcsResponse();
result.setCode(HttpStatus.HTTP_OK);
result.setStatus(HttpStatus.HTTP_OK);
result.setMessage(message);
result.setResponseDate(DateUtil.now());
return result;
@@ -47,7 +47,7 @@ public class AcsResponse extends BaseResponse {
*/
public static AcsResponse requestOk() {
AcsResponse result = new AcsResponse();
result.setCode(HttpStatus.HTTP_OK);
result.setStatus(HttpStatus.HTTP_OK);
result.setMessage("请求成功");
result.setResponseDate(DateUtil.now());
return result;

View File

@@ -2,16 +2,21 @@ package org.nl.wms.ext.util;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.json.JSONArray;
import org.nl.config.SpringContextHolder;
import org.nl.system.enums.SysParamConstant;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.service.util.AcsResponse;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* <p>
* ACS工具类
@@ -27,10 +32,15 @@ public class AcsUtil {
/**
* 下发任务
* @param api acs地址
* @param param 下发参数
* @param list 下发参数
* @return AcsResponse
*/
public static <T> AcsResponse notifyAcs(String api, T param) {
public static AcsResponse notifyAcs(String api, List<AcsTaskDto> list) {
JSONArray param = new JSONArray();
list.forEach(row -> {
param.put(JSONObject.parse(JSON.toJSONString(row)));
});
log.info("下发ACS任务的输入参数为-------------------" + param.toString());
// 返回参数
AcsResponse resultAcs;

View File

@@ -35,7 +35,7 @@ public class BaseResponse implements Serializable {
/**
* 结果 200成功
*/
private int code;
private int status;
/**
* 信息
@@ -50,7 +50,7 @@ public class BaseResponse implements Serializable {
public static BaseResponse build(String requestNo) {
BaseResponse response = new BaseResponse();
response.setRequestNo(requestNo);
response.setCode(HttpStatus.HTTP_OK);
response.setStatus(HttpStatus.HTTP_OK);
response.setMessage("请求成功");
response.setResponseDate(DateUtil.now());
return response;
@@ -59,7 +59,7 @@ public class BaseResponse implements Serializable {
public static BaseResponse responseOk(String requestNo) {
BaseResponse response = new BaseResponse();
response.setRequestNo(requestNo);
response.setCode(HttpStatus.HTTP_OK);
response.setStatus(HttpStatus.HTTP_OK);
response.setMessage("请求成功");
response.setResponseDate(DateUtil.now());
return response;
@@ -68,7 +68,7 @@ public class BaseResponse implements Serializable {
public static BaseResponse responseOk(String requestNo, String message) {
BaseResponse response = new BaseResponse();
response.setRequestNo(requestNo);
response.setCode(HttpStatus.HTTP_OK);
response.setStatus(HttpStatus.HTTP_OK);
response.setMessage(message);
response.setResponseDate(DateUtil.now());
return response;
@@ -77,7 +77,7 @@ public class BaseResponse implements Serializable {
public static BaseResponse responseOk(String requestNo, HashMap<String, String> parameters) {
BaseResponse response = new BaseResponse();
response.setRequestNo(requestNo);
response.setCode(HttpStatus.HTTP_OK);
response.setStatus(HttpStatus.HTTP_OK);
response.setMessage("请求成功");
response.setResponseDate(DateUtil.now());
response.setParameters(parameters);
@@ -87,7 +87,7 @@ public class BaseResponse implements Serializable {
public static BaseResponse responseError(String requestNo, String message) {
BaseResponse response = new BaseResponse();
response.setRequestNo(requestNo);
response.setCode(HttpStatus.HTTP_BAD_REQUEST);
response.setStatus(HttpStatus.HTTP_BAD_REQUEST);
response.setMessage(message);
response.setResponseDate(DateUtil.now());
return response;
@@ -96,7 +96,7 @@ public class BaseResponse implements Serializable {
public static BaseResponse responseError(String requestNo, int code, String message) {
BaseResponse response = new BaseResponse();
response.setRequestNo(requestNo);
response.setCode(code);
response.setStatus(code);
response.setMessage(message);
response.setResponseDate(DateUtil.now());
return response;

View File

@@ -99,7 +99,7 @@ public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
// 根据任务配置编码获取所属任务类抽象类
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
AcsResponse acsResponse = task.sendTaskOne(taskDao.getTask_id());
if (acsResponse.getCode() != HttpStatus.HTTP_OK) {
if (acsResponse.getStatus() != HttpStatus.HTTP_OK) {
throw new BadRequestException(acsResponse.getMessage());
}
return PdaResponse.requestOk();

View File

@@ -163,8 +163,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
return this.list();
}
return pointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, region.getRegion_code())
.eq(SchBasePoint::getIs_has_workder, true));
.eq(SchBasePoint::getRegion_code, region.getRegion_code()));
}
@Override

View File

@@ -107,11 +107,11 @@ public abstract class AbstractTask {
} catch (Exception e) {
log.error("任务下发异常: {}", e.getMessage());
resultForAcs.setResponseDate(DateUtil.now());
resultForAcs.setCode(HttpStatus.HTTP_BAD_REQUEST);
resultForAcs.setStatus(HttpStatus.HTTP_BAD_REQUEST);
resultForAcs.setMessage(e.getMessage());
}
// 如果下发完毕,就修改状态
if (resultForAcs.getCode() == HttpStatus.HTTP_OK) {
if (resultForAcs.getStatus() == HttpStatus.HTTP_OK) {
// 查询所有任务
List<SchBaseTask> taskList = taskService.list(
new QueryWrapper<SchBaseTask>().lambda()

View File

@@ -14,7 +14,7 @@ public class AcsTaskDto {
/**
* 任务标识
*/
private String ext_task_uuid;
private String ext_task_id;
/**
* 任务编号

View File

@@ -66,6 +66,9 @@ public class BackInTask extends AbstractTask {
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
taskService.save(task);
// 下发任务
this.sendTaskOne(task.getTask_id());
return task.getTask_id();
}
@@ -75,11 +78,12 @@ public class BackInTask extends AbstractTask {
// 组织下发给acs的数据
AcsTaskDto acsTaskDto = new AcsTaskDto();
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
acsTaskDto.setExt_task_id(taskDao.getTask_id());
acsTaskDto.setTask_code(taskDao.getTask_code());
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
acsTaskDto.setPriority(taskDao.getPriority());
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
acsTaskDto.setTask_type("1");
return acsTaskDto;
}

View File

@@ -64,6 +64,9 @@ public class MoveTask extends AbstractTask {
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
taskService.save(task);
// 下发任务
this.sendTaskOne(task.getTask_id());
return task.getTask_id();
}
@@ -73,11 +76,12 @@ public class MoveTask extends AbstractTask {
// 组织下发给acs的数据
AcsTaskDto acsTaskDto = new AcsTaskDto();
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
acsTaskDto.setExt_task_id(taskDao.getTask_id());
acsTaskDto.setTask_code(taskDao.getTask_code());
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
acsTaskDto.setPriority(taskDao.getPriority());
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
acsTaskDto.setTask_type("1");
return acsTaskDto;
}

View File

@@ -66,6 +66,9 @@ public class PdaPointTask extends AbstractTask {
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
taskService.save(task);
// 下发任务
this.sendTaskOne(task.getTask_id());
return task.getTask_id();
}
@@ -75,11 +78,12 @@ public class PdaPointTask extends AbstractTask {
// 组织下发给acs的数据
AcsTaskDto acsTaskDto = new AcsTaskDto();
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
acsTaskDto.setExt_task_id(taskDao.getTask_id());
acsTaskDto.setTask_code(taskDao.getTask_code());
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
acsTaskDto.setPriority(taskDao.getPriority());
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
acsTaskDto.setTask_type("1");
return acsTaskDto;
}

View File

@@ -59,6 +59,9 @@ public class StInTask extends AbstractTask {
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
taskService.save(task);
// 下发任务
this.sendTaskOne(task.getTask_id());
return task.getTask_id();
}
@@ -68,14 +71,12 @@ public class StInTask extends AbstractTask {
// 组织下发给acs的数据
AcsTaskDto acsTaskDto = new AcsTaskDto();
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
acsTaskDto.setExt_task_id(taskDao.getTask_id());
acsTaskDto.setTask_code(taskDao.getTask_code());
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
if (taskDao.getPoint_code2().contains("-")) {
acsTaskDto.setNext_device_code(taskDao.getPoint_code2().replace('-', '_'));
}
acsTaskDto.setPriority(taskDao.getPriority());
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
acsTaskDto.setTask_type("1");
return acsTaskDto;

View File

@@ -58,6 +58,9 @@ public class StOutTask extends AbstractTask {
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
taskService.save(task);
// 下发任务
this.sendTaskOne(task.getTask_id());
return task.getTask_id();
}
@@ -67,14 +70,12 @@ public class StOutTask extends AbstractTask {
// 组织下发给acs的数据
AcsTaskDto acsTaskDto = new AcsTaskDto();
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
acsTaskDto.setExt_task_id(taskDao.getTask_id());
acsTaskDto.setTask_code(taskDao.getTask_code());
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
if (taskDao.getPoint_code2().contains("-")) {
acsTaskDto.setNext_device_code(taskDao.getPoint_code2().replace('-', '_'));
}
acsTaskDto.setPriority(taskDao.getPriority());
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
acsTaskDto.setTask_type("1");
return acsTaskDto;

View File

@@ -41,6 +41,14 @@ public enum IOSEnum {
, "移入锁", "3", "移出锁", "4", "其他锁","9"
)),
// 存放载具类型
VEHICLE_TYPE_PUT(MapOf.of("1", "1", "2", "2", "3", "3"
, "4", "4")),
// 载具类型
VEHICLE_TYPE(MapOf.of("金属托盘", "00", "小料架", "01", "大料架(短边)", "02"
, "大料架(长边)", "03")),
// 点位状态
POINT_STATUS(MapOf.of("无货", "1", "有货", "2" )),

View File

@@ -723,21 +723,33 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
public Structattr autoDis(JSONObject whereJson) {
String sect_id = whereJson.getString("sect_id");
String storagevehicle_code = whereJson.getString("storagevehicle_code");
// 查询没有任务的仓位号
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = mdPbStoragevehicleinfoMapper.selectOne(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class)
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code,storagevehicle_code)
);
if (ObjectUtil.isEmpty(mdPbStoragevehicleinfo)){
throw new BadRequestException("没有该载具号信息");
}
// 查询没有任务的仓位号 并且根据载具类型分配货位
// 金属托盘 - 3 ,小料架 - 4 大料架(短)-1 ,大料架(长) - 2
List<Structattr> structattrList = iStructattrService.list(new LambdaQueryWrapper<>(Structattr.class)
.eq(Structattr::getSect_id,sect_id)
.eq(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
.and(wrapper -> wrapper.isNull(Structattr::getStoragevehicle_code).or().eq(Structattr::getStoragevehicle_code,""))
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("金属托盘")),
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("3"))
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("小料架")),
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("4"))
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("大料架(短边)")),
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("1"))
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("大料架(长边)")),
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("2"))
);
if (ObjectUtil.isEmpty(structattrList)){
throw new BadRequestException("该库区没有仓位");
}
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = mdPbStoragevehicleinfoMapper.selectOne(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class)
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code,storagevehicle_code)
);
if (ObjectUtil.isEmpty(mdPbStoragevehicleinfo)){
throw new BadRequestException("没有该载具号信息");
}
// 过滤掉不满足载具长宽高的仓位
Structattr structattr = structattrList.stream().filter(st ->
st.getWidth().compareTo(mdPbStoragevehicleinfo.getVehicle_width()) >=0 &&