diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaMoveStorService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaMoveStorService.java index abd062b..d1caa5d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaMoveStorService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaMoveStorService.java @@ -21,7 +21,7 @@ public interface PdaMoveStorService { * 组盘确认 * @return PdaResponse */ - PdaResponse move(JSONObject whereJson); + JSONObject move(JSONObject whereJson); /** @@ -29,5 +29,5 @@ public interface PdaMoveStorService { * * @return PdaResponse */ - List querydtl(JSONObject whereJson); + JSONObject querydtl(JSONObject whereJson); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaMoveStorServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaMoveStorServiceImpl.java index 777f4d2..f7d21e7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaMoveStorServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaMoveStorServiceImpl.java @@ -1,7 +1,10 @@ package org.nl.wms.pda_manage.ios_manage.service.impl; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.nl.common.exception.BadRequestException; import org.nl.wms.pda_manage.ios_manage.service.PdaMoveStorService; import org.nl.wms.pda_manage.util.PdaResponse; import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper; @@ -20,19 +23,46 @@ public class PdaMoveStorServiceImpl implements PdaMoveStorService { private StIvtMoveinvdtlMapper stIvtMoveinvdtlMapper; @Override - public PdaResponse move(JSONObject whereJson) { + public JSONObject move(JSONObject whereJson) { // 移出货位编码 String struct_code = whereJson.getString("struct_code"); // 载具号 String vehicle_code = whereJson.getString("vehicle_code"); // 移入货位 String move_struct_code = whereJson.getString("move_struct_code"); + //数组 + JSONArray rows = whereJson.getJSONArray("data"); + if (ObjectUtil.isEmpty(move_struct_code)) { + throw new BadRequestException("移入货位不能为空!"); + } + if (ObjectUtil.isEmpty(rows)) { + throw new BadRequestException("物料明细不能为空!"); + } + //todo 生成移库单、生成移库任务 - return PdaResponse.requestOk(); + + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message","操作成功"); + return ret; } @Override - public List querydtl(JSONObject whereJson) { - return stIvtMoveinvdtlMapper.querydtl(whereJson); + public JSONObject querydtl(JSONObject whereJson) { + // 移出货位编码 + String struct_code = whereJson.getString("struct_code"); + // 载具号 + String vehicle_code = whereJson.getString("vehicle_code"); + + if (ObjectUtil.isEmpty(struct_code) && ObjectUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("货位编码和载具编码不能同时为空!"); + } + List list = stIvtMoveinvdtlMapper.querydtl(whereJson); + + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message","查询成功"); + ret.put("data",list); + return ret; } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchPointService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchPointService.java index 0673a6a..813eb06 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchPointService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchPointService.java @@ -13,7 +13,7 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint; * @author Liuxy * @since 2025-06-06 */ -public interface PdaSchPointService extends IService { +public interface PdaSchPointService { /** * 查询点位信息 @@ -22,7 +22,7 @@ public interface PdaSchPointService extends IService { * } * @return PdaResponse */ - PdaResponse getPoint(JSONObject whereJson); + JSONObject getPoint(JSONObject whereJson); /** * 解绑 @@ -33,7 +33,7 @@ public interface PdaSchPointService extends IService { * } * @return PdaResponse */ - PdaResponse binding(JSONObject whereJson); + JSONObject binding(JSONObject whereJson); /** * 绑定 @@ -44,6 +44,6 @@ public interface PdaSchPointService extends IService { * } * @return PdaResponse */ - PdaResponse dissect(JSONObject whereJson); + JSONObject dissect(JSONObject whereJson); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchTaskService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchTaskService.java index 909ead4..22ce38e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchTaskService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/PdaSchTaskService.java @@ -34,7 +34,7 @@ public interface PdaSchTaskService extends IService { * } * @return PdaResponse */ - PdaResponse queryTask(JSONObject whereJson); + JSONObject queryTask(JSONObject whereJson); /** * 重新下发 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchPointServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchPointServiceImpl.java index abd0337..a45a3f6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchPointServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchPointServiceImpl.java @@ -1,17 +1,22 @@ package org.nl.wms.pda_manage.sch_manage.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpStatus; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper; import org.nl.wms.pda_manage.sch_manage.service.PdaSchPointService; -import org.nl.wms.pda_manage.util.PdaResponse; -import org.nl.wms.sch_manage.service.dao.SchBasePoint; -import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; -import org.springframework.beans.factory.annotation.Autowired; +import org.nl.wms.warehouse_manage.service.dao.mapper.StIvtMoveinvdtlMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.List; + /** *

* 手持点位操作 实现类 @@ -21,43 +26,103 @@ import org.springframework.transaction.annotation.Transactional; * @since 2025-06-06 */ @Service -public class PdaSchPointServiceImpl extends ServiceImpl implements PdaSchPointService { - - /** - * 载具信息服务 - */ - @Autowired - private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; +public class PdaSchPointServiceImpl implements PdaSchPointService { + @Resource + private StIvtMoveinvdtlMapper stIvtMoveinvdtlMapper; + @Resource + private IStructattrService iStructattrService; + @Resource + private StructattrMapper structattrMapper; @Override - public PdaResponse getPoint(JSONObject whereJson) { - SchBasePoint pointDao = this.getById(whereJson.getString("point_code")); - pointDao.setStoragevehicle_code(pointDao.getVehicle_code()); - return PdaResponse.requestParamOk(pointDao); - } + public JSONObject getPoint(JSONObject whereJson) { + // 载具号 + String vehicle_code = whereJson.getString("vehicle_code"); + if (ObjectUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具编码不能为空!"); + } + whereJson.remove("struct_code"); + List list = stIvtMoveinvdtlMapper.querydtl(whereJson); + + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message","查询成功"); + ret.put("data",list); + return ret; + } @Override @Transactional - public PdaResponse binding(JSONObject whereJson) { - this.update( - new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")) - .set(SchBasePoint::getVehicle_code, null) - .set(SchBasePoint::getIos_id, null) + public JSONObject binding(JSONObject whereJson) { + // 载具号 + String vehicle_code = whereJson.getString("vehicle_code"); + + if (ObjectUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具编码不能为空!"); + } + // 载具号 + String struct_code = whereJson.getString("struct_code"); + if (ObjectUtil.isEmpty(struct_code)) { + throw new BadRequestException("点位编码不能为空!"); + } + Structattr struct = structattrMapper.selectOne(new LambdaQueryWrapper() + .eq(Structattr::getStruct_code, struct_code) ); - return PdaResponse.requestOk(); + if(ObjectUtil.isEmpty(struct)){ + throw new BadRequestException("找不到点位:"+struct_code); + } + if(ObjectUtil.isNotEmpty(struct.getStoragevehicle_code())){ + throw new BadRequestException("点位:"+struct_code+"上已有载具号:"+struct.getStoragevehicle_code()+",不允许再次绑定!"); + } + List list = structattrMapper.selectList(new LambdaQueryWrapper() + .eq(Structattr::getStoragevehicle_code, vehicle_code) + ); + if(list.size()>0){ + throw new BadRequestException("载具:"+vehicle_code+"上已绑定在货位:"+list.get(0).getStruct_code()+",不允许再次绑定!"); + } + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, struct_code) + .set(Structattr::getStoragevehicle_code, vehicle_code) + ); + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message","操作成功"); + return ret; } @Override @Transactional - public PdaResponse dissect(JSONObject whereJson) { - // 判断载具是否存在 - iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code")); - this.update( - new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")) - .set(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")) + public JSONObject dissect(JSONObject whereJson) { + // 载具号 + String vehicle_code = whereJson.getString("vehicle_code"); + + if (ObjectUtil.isEmpty(vehicle_code)) { + throw new BadRequestException("载具编码不能为空!"); + } + // 载具号 + String struct_code = whereJson.getString("struct_code"); + if (ObjectUtil.isEmpty(struct_code)) { + throw new BadRequestException("点位编码不能为空!"); + } + Structattr struct = structattrMapper.selectOne(new LambdaQueryWrapper() + .eq(Structattr::getStruct_code, struct_code) + ); + if(ObjectUtil.isEmpty(struct)){ + throw new BadRequestException("找不到点位:"+struct_code); + } + if(ObjectUtil.isEmpty(struct.getStoragevehicle_code())){ + throw new BadRequestException("点位:"+struct_code+"上无载具号:"+vehicle_code+",不需要解绑!"); + } + + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, whereJson.getString("struct_code")) + .set(Structattr::getStoragevehicle_code, null) ); - return PdaResponse.requestOk(); + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message","操作成功"); + return ret; } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java index 9703974..04d1fc1 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java @@ -26,6 +26,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** *

* 手持任务操作 实现类 @@ -84,8 +86,14 @@ public class PdaSchTaskServiceImpl extends ServiceImpl list = this.baseMapper.queryPdaTask(whereJson); + + JSONObject ret = new JSONObject(); + ret.put("status", String.valueOf(HttpStatus.HTTP_OK)); + ret.put("message","查询成功"); + ret.put("data",list); + return ret; } @Override diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java index 0354f30..911a657 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/AutoTask.java @@ -1,6 +1,7 @@ package org.nl.wms.sch_manage.service.util; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; @@ -56,6 +57,7 @@ public class AutoTask { * 定时下发任务 */ private void sendTask() { + System.out.println("定时下发任务开始--------------------------"+ DateUtil.now()); List taskList = taskService.list(new LambdaQueryWrapper() .eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO) .eq(SchBaseTask::getTask_status, TaskStatus.CREATE.getCode())); @@ -67,5 +69,11 @@ public class AutoTask { AbstractTask task = taskFactory.getTask(taskDao.getConfig_code()); task.sendTaskOne(taskDao.getTask_id()); } + try { + Thread.sleep(6000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("定时下发任务结束+++++++++++++++++++++++++++"+ DateUtil.now()); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/config/JobRunner.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/config/JobRunner.java index bf616b2..a7be32c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/config/JobRunner.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/config/JobRunner.java @@ -1,7 +1,9 @@ package org.nl.wms.system_manage.service.quartz.config; +import cn.hutool.core.net.NetUtil; import lombok.RequiredArgsConstructor; import org.nl.wms.system_manage.service.quartz.ISysQuartzJobService; +import org.nl.wms.system_manage.service.quartz.dao.SysQuartzJob; import org.nl.wms.system_manage.service.quartz.utils.QuartzManage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,6 +12,8 @@ import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.util.List; + /** *

* 项目启动时重新激活启用的定时任务 @@ -33,5 +37,28 @@ public class JobRunner implements ApplicationRunner { */ @Override public void run(ApplicationArguments applicationArguments) { + //本机IP + String localIp = NetUtil.getLocalhostStr(); + System.out.println("本机ip:"+localIp); + + log.info("--------------------注入定时任务---------------------"); + List quartzJobs = quartzJobService.findByIsPauseIsFalse(); + quartzJobs.forEach(job -> { + if (judgmentIp(job.getJob_ip())) { + log.info("定时任务:{}, 执行ip: {}, 定时任务开启", job.getJob_name(), localIp); + System.out.println("定时任务: " + job.getJob_name() + ", 执行ip: " + localIp + ", 定时任务开启"); + quartzManage.addJob(job); + } else { + log.info("定时任务 {} 未开启, 本机ip{} 与 调度ip{} 不同", job.getJob_name(), localIp, job.getJob_ip()); + System.out.println("定时任务 " + job.getJob_name() + " 未开启, 本机ip: " + localIp + " 与 调度ip: " + job.getJob_ip() + " 不同"); + } + }); + + log.info("--------------------定时任务注入完成---------------------"); + } + + public static Boolean judgmentIp(String ip) { + return NetUtil.localAddressList(null).stream() + .anyMatch(inet -> ip.equals(inet.getHostAddress())); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/dao/SysQuartzJob.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/dao/SysQuartzJob.java index 3cd0c9f..b2f3814 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/dao/SysQuartzJob.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/dao/SysQuartzJob.java @@ -81,6 +81,8 @@ public class SysQuartzJob implements Serializable { */ private String sub_task; + private String job_ip; + /** * 失败状态 */ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java index ece4f4a..54afc61 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java @@ -13,6 +13,7 @@ import org.nl.wms.system_manage.service.quartz.impl.SysQuartzJobServiceImpl; import org.quartz.DisallowConcurrentExecution; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.quartz.QuartzJobBean; @@ -35,8 +36,8 @@ public class ExecutionJob extends QuartzJobBean { /** * 该处仅供参考 */ - @Resource - @Qualifier("meshandlerPool") + @Autowired + @Qualifier("threadPoolExecutor") private ThreadPoolExecutor EXECUTOR; @Override diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java index 4631369..5e33106 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/system_manage/service/quartz/utils/QuartzManage.java @@ -1,5 +1,6 @@ package org.nl.wms.system_manage.service.quartz.utils; +import cn.hutool.core.net.NetUtil; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.language.LangProcess; @@ -23,10 +24,16 @@ import static org.quartz.TriggerBuilder.newTrigger; public class QuartzManage { private static final String JOB_NAME = "TASK_"; - @Resource(name = "quartzScheduler") + @Resource(name = "scheduler") private Scheduler scheduler; public void addJob(SysQuartzJob quartzJob) { + //本机IP + String localIp = NetUtil.getLocalhostStr(); + System.out.println("本机ip:"+localIp); + if (!judgmentIp(quartzJob.getJob_ip())) { + throw new BadRequestException("本机ip与"+localIp+"调度ip"+quartzJob.getJob_ip()+"不同"); + } try { // 构建job信息 JobDetail jobDetail = JobBuilder.newJob(ExecutionJob.class). @@ -42,18 +49,18 @@ public class QuartzManage { cronTrigger.getJobDataMap().put(SysQuartzJob.JOB_KEY, quartzJob); //重置启动时间 - ((CronTriggerImpl)cronTrigger).setStartTime(new Date()); + ((CronTriggerImpl) cronTrigger).setStartTime(new Date()); //执行定时任务 - scheduler.scheduleJob(jobDetail,cronTrigger); + scheduler.scheduleJob(jobDetail, cronTrigger); // 暂停任务 if (quartzJob.getIs_pause()) { pauseJob(quartzJob); } - } catch (Exception e){ + } catch (Exception e) { log.error("创建定时任务失败", e); - throw new BadRequestException(LangProcess.msg("error_Create")); + throw new BadRequestException("创建定时任务失败"); } } @@ -157,4 +164,8 @@ public class QuartzManage { throw new BadRequestException(LangProcess.msg("error_Detele")); } } + public static Boolean judgmentIp(String ip) { + return NetUtil.localAddressList(null).stream() + .anyMatch(inet -> ip.equals(inet.getHostAddress())); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/mapper/StIvtMoveinvdtlMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/mapper/StIvtMoveinvdtlMapper.xml index fa4eb2b..0390f36 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/mapper/StIvtMoveinvdtlMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/dao/mapper/StIvtMoveinvdtlMapper.xml @@ -39,6 +39,7 @@