diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index 92616bf..918f4fd 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -19,10 +19,12 @@ import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.impl.InstructionServiceImpl; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.task.enums.NoticeTypeEnum; import org.nl.config.SpringContextHolder; import org.nl.system.service.dict.ISysDictService; import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.lucene.LuceneExecuteLogService; +import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.impl.SysParamServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -69,6 +71,8 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { LuceneExecuteLogService luceneExecuteLogService; @Autowired ISysDictService dictService; + @Autowired + ISysNoticeService iSysNoticeService; public OneNDCSocketConnectionAutoRun() { this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut); @@ -94,8 +98,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); ip = paramService.findByCode(AcsConfig.AGVURL).getValue(); port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue()); - - + int instCode = 0; try { byte[] b = new byte[1024]; s = new Socket(ip, port); @@ -152,6 +155,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno)); } if (ikey != 0) { + instCode =ikey; inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); if (ObjectUtil.isEmpty(inst)) { inst = instructionService.findByCode(String.valueOf(ikey)); @@ -354,12 +358,12 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } catch (Exception e) { System.out.println("Agv链接异常"); - log.info("Agv链接异常"); + iSysNoticeService.createNotice("指令号"+instCode+",异常信息:"+e.getMessage(), "警告:NDC断联", NoticeTypeEnum.EXCEPTION.getCode()); log.error("agv连接出现异常:{}", e); if (ObjectUtil.isNotEmpty(s)) { s.close(); } - System.out.println(e.getMessage()); + //System.out.println(e.getMessage()); e.printStackTrace(); } finally { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 3a16f61..32055e3 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -183,10 +183,15 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //到达取货点 //(需要WCS反馈) } else if (phase == 0x03) { - inst.setExecute_status("1"); - instructionService.update(inst); - data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); - flag = true; + inst.setExecute_status("1"); + instructionService.update(inst); + //添加车号 + if (StringUtils.isBlank(task.getCar_no())) { + task.setCar_no(String.valueOf(carno)); + } + taskserver.update(task); + data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); + flag = true; } else if (phase == 0x04) { data = getData(data, index, inst, task); //取货完毕 diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 434db20..d4dc973 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -707,7 +707,7 @@ public class InstructionServiceImpl extends CommonServiceImpl(taskMapper) .eq(Task::getTask_id, insttaskid) .one(); @@ -790,7 +785,8 @@ public class InstructionServiceImpl extends CommonServiceImpl finish(@RequestBody String id) { - taskService.finish(id); + taskService.finishByHand(id); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java index 5e67ff7..0106c0c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/TaskService.java @@ -301,6 +301,9 @@ public interface TaskService extends CommonService { */ void finish(String ids); + + void finishByHand(String id); + /** * 取货完成 * diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index fb48ef1..864429f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -33,7 +32,6 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.dto.DeviceAssignedDto; import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.history.ErrorUtil; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.enums.InstructionStatusEnum; @@ -63,7 +61,6 @@ import org.nl.config.SpringContextHolder; import org.nl.config.language.LangProcess; import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -75,7 +72,6 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -856,19 +852,29 @@ public class TaskServiceImpl extends CommonServiceImpl impleme } } + @Override + @Transactional(rollbackFor = Exception.class) + public void finishByHand(String id) { + id =id+"-"; + this.finish(id); + } + @Override @Transactional(rollbackFor = Exception.class) public void finish(String id) { + boolean isByhand = false; + if (id.contains("-")) { + id = id.substring(0, id.indexOf("-")); + isByhand = true; + } TaskDto entity = this.findById(id); if (entity == null) { throw new BadRequestException(LangProcess.msg("error_sysAuth")); } - InstructionDto instdto = instructionService.findByTaskid(id, "instruction_status <2 "); if (instdto != null) { throw new BadRequestException(LangProcess.msg("task_insHas")); } - String currentUsername = SecurityUtils.getCurrentUsername(); String now = DateUtil.now(); entity.setUpdate_time(now); @@ -876,6 +882,9 @@ public class TaskServiceImpl extends CommonServiceImpl impleme entity.setTask_status(TaskStatusEnum.FINISHED.getIndex()); //车辆执行任务完成计时字段 entity.setTo_y(now); + if (isByhand) { + entity.setRemark("该任务由人工手动强制完成"); + } Task task = ConvertUtil.convert(entity, Task.class); if (StringUtils.isNotBlank(entity.getTo_x())) { DateTime toXTime = DateUtil.parse(entity.getTo_x()); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java index eac87a4..a16a864 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java @@ -57,9 +57,13 @@ public class SysLogServiceImpl extends ServiceImpl impleme LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.eq(ObjectUtil.isNotEmpty(log_type), SysLog::getLog_type, log_type) .eq(ObjectUtil.isNotEmpty(username), SysLog::getUsername, username) - .like(ObjectUtil.isNotEmpty(blurry), SysLog::getDescription, blurry) .le(ObjectUtil.isNotEmpty(end_time), SysLog::getCreate_time, end_time) .ge(ObjectUtil.isNotEmpty(begin_time), SysLog::getCreate_time, begin_time) + .and(ObjectUtil.isNotEmpty(blurry), wrapper -> + wrapper.like(SysLog::getDescription, blurry) + .or() + .like(SysLog::getParams, blurry) + ) .orderByDesc(SysLog::getCreate_time); IPage page = new Page<>(pageable.getPage()+1, pageable.getSize()); logMapper.selectPage(page, lam); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java index 0f58aa0..c7e538a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java @@ -161,32 +161,20 @@ public class SysNoticeServiceImpl extends ServiceImpl sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper() - .eq(SysNotice::getNotice_title, title) - .eq(SysNotice::getHave_read, NoticeEnum.HAVE_READ_OFF.getValue())); + String dealStatus = NoticeEnum.DEAL_STATUS_NO.getValue(); + String haveRead = NoticeEnum.HAVE_READ_OFF.getValue(); SysNotice noticeDto = SysNotice.builder() .notice_id(IdUtil.getSnowflake(1, 1).nextIdStr()) .notice_type(type) .notice_title(title) .notice_content(msg) - .deal_status(NoticeEnum.DEAL_STATUS_NO.getValue()) - .have_read(NoticeEnum.HAVE_READ_OFF.getValue()) + .deal_status(dealStatus) + .have_read(haveRead) .create_time(DateUtil.now()) .build(); - if (ObjectUtil.isNotEmpty(sysNotices)) { - noticeDto.setNotice_id(sysNotices.get(0).getNotice_id()); - } - // 插入/修改 - this.saveOrUpdate(noticeDto); - JSONObject res = new JSONObject(); - res.put("data", "notice_message_update"); - SocketMsg messageInfo = new SocketMsg(res, MsgType.INFO); - try { - webSocketServer.sendInfo(messageInfo, "messageInfo"); - } catch (IOException e) { - throw new BadRequestException(LangProcess.msg("error_Send")); - } + sysNoticeMapper.insert(noticeDto); } + + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java index d1e618d..969d5eb 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java @@ -1,5 +1,6 @@ package org.nl.system.service.quartz.utils; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.yomahub.tlog.task.quartz.TLogQuartzJobBean; @@ -96,6 +97,7 @@ public class ExecutionJob extends TLogQuartzJobBean { // 任务状态 0:成功 1:失败 logDto.setIs_success(false); logDto.setException_detail(ThrowableUtil.getStackTrace(e)); + logDto.setCreate_time(DateUtil.now()); // 任务如果失败了则暂停 if (quartzJob.getPause_after_failure() != null && quartzJob.getPause_after_failure()) { quartzJob.setIs_pause(false); @@ -103,8 +105,8 @@ public class ExecutionJob extends TLogQuartzJobBean { quartzJobService.updateIsPause(quartzJob); } //异常时候打印日志 - log.info(logDto.toString()); - quartzLogMapper.insert(logDto); + log.error(logDto.toString()); + //quartzLogMapper.insert(logDto); } finally { } diff --git a/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml index b1bcc54..6bc5a0d 100644 --- a/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml +++ b/acs/nladmin-system/nlsso-server/src/main/resources/config/application.yml @@ -6,7 +6,7 @@ spring: freemarker: check-template-location: false profiles: - active: dev + active: prod # active: dev # active: prod jackson: diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java index 8f2958d..1583652 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java @@ -12,29 +12,29 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; -import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; -import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper; import org.nl.wms.sch_manage.service.dto.SchBaseTaskQuery; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.TaskFactory; +import org.nl.wms.warehouse_manage.inAndOut.service.impl.OutBillServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @author Liuxy @@ -45,6 +45,9 @@ import java.util.stream.Stream; @Service public class SchBaseTaskServiceImpl extends ServiceImpl implements ISchBaseTaskService { + @Autowired + private OutBillServiceImpl outBillServiceImpl; + @Autowired private SchBaseTaskMapper schBaseTaskMapper; @@ -70,6 +73,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl impleme @Override public IPage queryAll(Map whereJson, PageQuery pageable) { - String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry"))?whereJson.get("blurry").toString():null; - String log_type = ObjectUtil.isNotEmpty(whereJson.get("log_type"))?whereJson.get("log_type").toString():null; - String username = ObjectUtil.isNotEmpty(whereJson.get("username"))?whereJson.get("username").toString():null; - String begin_time = ObjectUtil.isNotEmpty(whereJson.get("begin_time"))?whereJson.get("begin_time").toString():null; - String end_time = ObjectUtil.isNotEmpty(whereJson.get("end_time"))?whereJson.get("end_time").toString():null; + String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry")) ? whereJson.get("blurry").toString() : null; + String log_type = ObjectUtil.isNotEmpty(whereJson.get("log_type")) ? whereJson.get("log_type").toString() : null; + String username = ObjectUtil.isNotEmpty(whereJson.get("username")) ? whereJson.get("username").toString() : null; + String begin_time = ObjectUtil.isNotEmpty(whereJson.get("begin_time")) ? whereJson.get("begin_time").toString() : null; + String end_time = ObjectUtil.isNotEmpty(whereJson.get("end_time")) ? whereJson.get("end_time").toString() : null; LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.eq(ObjectUtil.isNotEmpty(log_type), SysLog::getLog_type, log_type) .eq(ObjectUtil.isNotEmpty(username), SysLog::getUsername, username) .le(ObjectUtil.isNotEmpty(end_time), SysLog::getCreate_time, end_time) .ge(ObjectUtil.isNotEmpty(begin_time), SysLog::getCreate_time, begin_time) - .and(wrapper -> { - wrapper.like(ObjectUtil.isNotEmpty(blurry), SysLog::getDescription, blurry) - .or() - .like(ObjectUtil.isNotEmpty(blurry), SysLog::getParams, blurry); - }) + .and(ObjectUtil.isNotEmpty(blurry), wrapper -> + wrapper.like(SysLog::getDescription, blurry) + .or() + .like(SysLog::getParams, blurry) + ) .orderByDesc(SysLog::getCreate_time); - IPage page = new Page<>(pageable.getPage()+1, pageable.getSize()); + IPage page = new Page<>(pageable.getPage() + 1, pageable.getSize()); logMapper.selectPage(page, lam); return page; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IInBillService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IInBillService.java index 7280bc6..0e5d494 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IInBillService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IInBillService.java @@ -8,6 +8,7 @@ import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInv; +import org.nl.wms.warehouse_manage.inAndOut.service.dto.TOWMSMSG; import org.nl.wms.warehouse_manage.service.dto.GroupPlateDto; import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDisDto; import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDtlDto; @@ -69,4 +70,5 @@ public interface IInBillService extends IService { IOStorInv getByCode(String bill_code); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java index 3559c7e..01b11bb 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java @@ -53,6 +53,7 @@ import org.nl.wms.warehouse_manage.service.dto.GroupPlateDto; import org.nl.wms.warehouse_manage.service.impl.MdPbGroupplateServiceImpl; import org.nl.wms.wbwms.service.IWmsToWmsService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; @@ -1065,7 +1066,8 @@ public class InBillServiceImpl extends ServiceImpl i List tableData = new ArrayList<>(); tableData.add(jo); towmsmsg.setTableData(tableData); - iWmsToWmsService.FinishOutTask(towmsmsg); + //iWmsToWmsService.FinishOutTask(towmsmsg); + notifyWmsAsync(towmsmsg); } @Override @Transactional(rollbackFor = Exception.class) @@ -1111,7 +1113,8 @@ public class InBillServiceImpl extends ServiceImpl i List tableData=new ArrayList<>(); tableData.add(jo); towmsmsg.setTableData(tableData); - iWmsToWmsService.FinishOutTask(towmsmsg); + notifyWmsAsync(towmsmsg); + // iWmsToWmsService.FinishOutTask(towmsmsg); } @Override @@ -1167,4 +1170,12 @@ public class InBillServiceImpl extends ServiceImpl i ); return one; } + /** + * 异步回传WMS + */ + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + public void notifyWmsAsync(TOWMSMSG task) { + // 调用WMS接口 + iWmsToWmsService.FinishOutTask(task); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java index 20052f3..eb2fb83 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/OutBillServiceImpl.java @@ -12,7 +12,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import lombok.extern.log4j.Log4j; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; @@ -38,6 +37,8 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; import org.nl.wms.sch_manage.service.util.tasks.StOutTask; +import org.nl.wms.system_manage.service.logging.dao.SysLog; +import org.nl.wms.system_manage.service.logging.dao.mapper.SysLogMapper; import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService; @@ -50,11 +51,15 @@ import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvMapper; import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDisDto; import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDtlDto; import org.nl.wms.warehouse_manage.inAndOut.service.dto.TOWMSMSG; +import org.nl.wms.warehouse_manage.record.service.dao.StIvtStructivtflow; +import org.nl.wms.warehouse_manage.record.service.dao.mapper.StIvtStructivtflowMapper; import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; import org.nl.wms.warehouse_manage.service.dao.GroupPlate; import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.wbwms.service.IWmsToWmsService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -71,11 +76,13 @@ import java.util.stream.Collectors; */ @Service @Slf4j -public class OutBillServiceImpl extends ServiceImpl implements IOutBillService { - +public class OutBillServiceImpl extends ServiceImpl implements IOutBillService { + @Autowired + private SysLogMapper logMapper; @Resource private IOStorInvMapper ioStorInvMapper; - + @Autowired + private StIvtStructivtflowMapper stIvtStructivtflowMapper; @Resource private IOStorInvDisMapper ioStorInvDisMapper; @@ -1347,6 +1354,60 @@ public class OutBillServiceImpl extends ServiceImpl i } + @Transactional(rollbackFor = Exception.class) + public void taskFinish1(SchBaseTask task) { + List disList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class) + .eq(IOStorInvDis::getTask_id, task.getTask_id()) + ); + if (ObjectUtil.isEmpty(disList)) { + return; + } + IOStorInvDis item = disList.get(0); + //获取出入库单标识 + String iostorinv_id = item.getIostorinv_id(); + IOStorInv ioStorInv = ioStorInvMapper.selectOne(new LambdaQueryWrapper().eq(IOStorInv::getIostorinv_id, iostorinv_id)); + if (ObjectUtil.isEmpty(ioStorInv)) { + return; + } + String source_name = ioStorInv.getSource_name(); + //回传给wms + TOWMSMSG towmsmsg = new TOWMSMSG(); + towmsmsg.setType("1"); + towmsmsg.setBill_code(source_name); + towmsmsg.setStatus("200"); + JSONObject jo = new JSONObject(); + jo.put("storagevehicle_code", task.getVehicle_code()); + jo.put("struct_name", task.getPoint_code2()); + jo.put("struct_code", task.getPoint_code2()); + List list = stIvtStructivtflowMapper.selectList( + new LambdaQueryWrapper() + .eq(StIvtStructivtflow::getVehicle_code, task.getVehicle_code()) + .eq(StIvtStructivtflow::getGrowth, false) + .orderByDesc(StIvtStructivtflow::getUpdate_time) + ); + if (ObjectUtil.isNotEmpty(list)) { + MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_id, list.get(0).getMaterial_id())); + if (ObjectUtil.isNotEmpty(mdMeMaterialbase)) { + jo.put("material_name", mdMeMaterialbase.getMaterial_name()); + jo.put("material_code", mdMeMaterialbase.getMaterial_code()); + jo.put("qty", list.get(0).getQty()); + } else { + jo.put("material_name", ""); + jo.put("material_code", ""); + jo.put("qty", ""); + } + } else { + jo.put("material_name", ""); + jo.put("material_code", ""); + jo.put("qty", ""); + } + List tableData = new ArrayList<>(); + tableData.add(jo); + towmsmsg.setTableData(tableData); + // iWmsToWmsService.FinishOutTask(towmsmsg); + notifyWmsAsync(towmsmsg); + } + /** * 任务完成,减库存 * 1.解锁库位 @@ -1406,7 +1467,20 @@ public class OutBillServiceImpl extends ServiceImpl i point_code2.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); point_code2.setLock_up(false); iSchBasePointService.update(point_code2); - log.info("任务号:{}完成,解锁库位:{}", task.getTask_code(),point_code2); + log.info("任务号:{}完成,解锁库位:{}", task.getTask_code(), point_code2); + //日志记录 + SysLog logDto = new SysLog(); + logDto.setRequest_ip("localhost"); + logDto.setAddress("localhost"); + logDto.setMethod("taskFinish"); + logDto.setUsername(""); + logDto.setDescription("操作成功!"); + logDto.setBrowser("browser"); + logDto.setLog_id(cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextIdStr()); + logDto.setCreate_time(DateUtil.now()); + logDto.setLog_type("INFO"); + logDto.setParams("任务完成:" + task.getTask_code() + ",解锁库位成功:-------------------" + point_code2); + logMapper.insert(logDto); //库存变动:根据冻结数更新物料库存 StructattrChangeDto changeDto = StructattrChangeDto.builder() .inv(item.getIostorinv_id()) @@ -1415,8 +1489,8 @@ public class OutBillServiceImpl extends ServiceImpl i iStructattrService.changeStruct(changeDto); // 查询该明细下是否还有未完成的分配明细 int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) - .eq(IOStorInvDis::getIostorinvdtl_id,item.getIostorinvdtl_id()) - .ne(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) + .eq(IOStorInvDis::getIostorinvdtl_id, item.getIostorinvdtl_id()) + .ne(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成")) ); // 明细 IOStorInvDtl ioStorInvDtl = ioStorInvDtlMapper.selectById(item.getIostorinvdtl_id()); @@ -1446,25 +1520,26 @@ public class OutBillServiceImpl extends ServiceImpl i } } //回传给wms - TOWMSMSG towmsmsg=new TOWMSMSG(); + TOWMSMSG towmsmsg = new TOWMSMSG(); towmsmsg.setType("1"); towmsmsg.setBill_code(source_name); towmsmsg.setStatus("200"); - JSONObject jo=new JSONObject(); - jo.put("storagevehicle_code",task.getVehicle_code()); - jo.put("struct_name",task.getPoint_code2()); - jo.put("struct_code",task.getPoint_code2()); -// GroupPlate groupPlate=mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper() -// .eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库")) -// .eq(GroupPlate::getStoragevehicle_code,task.getVehicle_code())); -// MdMeMaterialbase mdMeMaterialbase=mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_id,groupPlate.getMaterial_id())); -// jo.put("material_name",mdMeMaterialbase.getMaterial_name()); -// jo.put("material_code",mdMeMaterialbase.getMaterial_code()); -// jo.put("qty",groupPlate.getQty()); -// List tableData=new ArrayList<>(); -// tableData.add(jo); -// towmsmsg.setTableData(tableData); -// iWmsToWmsService.FinishOutTask(towmsmsg); + JSONObject jo = new JSONObject(); + jo.put("storagevehicle_code", task.getVehicle_code()); + jo.put("struct_name", task.getPoint_code2()); + jo.put("struct_code", task.getPoint_code2()); + GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper() + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + .eq(GroupPlate::getStoragevehicle_code, task.getVehicle_code())); + MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper().eq(MdMeMaterialbase::getMaterial_id, groupPlate.getMaterial_id())); + jo.put("material_name", mdMeMaterialbase.getMaterial_name()); + jo.put("material_code", mdMeMaterialbase.getMaterial_code()); + jo.put("qty", groupPlate.getQty()); + List tableData = new ArrayList<>(); + tableData.add(jo); + towmsmsg.setTableData(tableData); + // iWmsToWmsService.FinishOutTask(towmsmsg); + notifyWmsAsync(towmsmsg); } @Override @@ -1502,19 +1577,31 @@ public class OutBillServiceImpl extends ServiceImpl i String iostorinv_id = item.getIostorinv_id(); IOStorInv ioStorInv = ioStorInvMapper.selectOne(new LambdaQueryWrapper().eq(IOStorInv::getIostorinv_id, iostorinv_id)); String source_name = ioStorInv.getSource_name(); - TOWMSMSG towmsmsg=new TOWMSMSG(); + TOWMSMSG towmsmsg = new TOWMSMSG(); towmsmsg.setType("1"); towmsmsg.setBill_code(source_name); towmsmsg.setStatus("4"); - JSONObject jo=new JSONObject(); - jo.put("storagevehicle_code",task.getVehicle_code()); - List tableData=new ArrayList<>(); + JSONObject jo = new JSONObject(); + jo.put("storagevehicle_code", task.getVehicle_code()); + List tableData = new ArrayList<>(); tableData.add(jo); towmsmsg.setTableData(tableData); - iWmsToWmsService.FinishOutTask(towmsmsg); + // iWmsToWmsService.FinishOutTask(towmsmsg); + notifyWmsAsync(towmsmsg); } + + /** + * 异步回传WMS + */ + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + public void notifyWmsAsync(TOWMSMSG task) { + // 调用WMS接口 + iWmsToWmsService.FinishOutTask(task); + } + + @Override - public IOStorInv getByCode(String bill_code){ + public IOStorInv getByCode(String bill_code) { IOStorInv one = this.getOne( new QueryWrapper().lambda() .eq(IOStorInv::getBill_code, bill_code) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/IWmsToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/IWmsToWmsServiceImpl.java index e7632c4..e1dd836 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/IWmsToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/IWmsToWmsServiceImpl.java @@ -1,5 +1,7 @@ package org.nl.wms.wbwms.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONArray; @@ -10,6 +12,8 @@ import org.nl.config.SpringContextHolder; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.system_manage.enums.SysParamConstant; +import org.nl.wms.system_manage.service.logging.dao.SysLog; +import org.nl.wms.system_manage.service.logging.dao.mapper.SysLogMapper; import org.nl.wms.system_manage.service.param.dao.Param; import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl; import org.nl.wms.warehouse_manage.enums.IOSConstant; @@ -29,6 +33,9 @@ import java.time.LocalDateTime; public class IWmsToWmsServiceImpl implements IWmsToWmsService { @Autowired MdMeMaterialbaseMapper mdMeMaterialbaseMapper; + @Autowired + private SysLogMapper logMapper; + @Override public JSONObject ObtainMateria() { @@ -80,7 +87,7 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService { return null; } } - JSONObject result; + JSONObject result = new JSONObject(); // 系统参数类 JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(towmsmsg), JSONObject.class); log.info("FinishOutTask请求参数是:-------------------" + jsonObject.toString()); @@ -93,8 +100,33 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService { result = JSONObject.parseObject(resultMsg); log.info("FinishOutTask接口输出参数为:-------------------" + result.toString()); } catch (Exception e) { - throw new BadRequestException("WMS inishOutTask接口提示错误:" + e.getMessage()); + SysLog logDto = new SysLog(); + logDto.setRequest_ip(wmsUrl); + logDto.setAddress(wmsUrl); + logDto.setMethod("FinishOutTask"); + logDto.setUsername("MES"); + logDto.setDescription("回传异常!"); + logDto.setBrowser("browser"); + logDto.setLog_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + logDto.setCreate_time(DateUtil.now()); + logDto.setLog_type("ERROR"); + logDto.setParams("WMS inishOutTask接口提示错误,请求参数:" + jsonObject + ",错误信息:" + e.getMessage()); + logMapper.insert(logDto); + log.error("WMS inishOutTask接口提示错误:" + e.getMessage()); + // throw new BadRequestException("WMS inishOutTask接口提示错误:" + e.getMessage()); } + SysLog logDto = new SysLog(); + logDto.setRequest_ip(wmsUrl); + logDto.setAddress(wmsUrl); + logDto.setMethod("FinishOutTask"); + logDto.setUsername("MES"); + logDto.setDescription("回传成功!"); + logDto.setBrowser("browser"); + logDto.setLog_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + logDto.setCreate_time(DateUtil.now()); + logDto.setLog_type("INFO"); + logDto.setParams("反馈mes系统成功!参数为:-------------------" + jsonObject.toString()); + logMapper.insert(logDto); return result; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/WmsToIWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/WmsToIWmsServiceImpl.java index 25fdec7..f12f7ba 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/WmsToIWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/impl/WmsToIWmsServiceImpl.java @@ -394,36 +394,36 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { @Transactional public WmstoIWmsResponse outBillTask(JSONObject parm) { log.info("WMS 出库请求参数参数为:-------------------" + parm.toString()); - if ("1002".equals(parm.getString("bill_type"))) { - int count = iSchBaseTaskService.count(new LambdaQueryWrapper() - .and(w -> w.like(SchBaseTask::getPoint_code2, "BCPRK6") - .or() - .like(SchBaseTask::getPoint_code2, "BCPCK6")) - .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) - ); - if (count > 0) { - throw new BadRequestException("CNC区域有出库或入库任务未完成,请检查!"); - } - //CNC出库区 - List regionCode = iSchBasePointService.list(new LambdaQueryWrapper() - .like(SchBasePoint::getPoint_code, "BCPCK6") - .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) - .eq(SchBasePoint::getLock_up, "0") - .eq(SchBasePoint::getIs_used, "1") - .orderByDesc(SchBasePoint::getOut_order_seq) - ); - if (ObjectUtils.isEmpty(regionCode)) { - throw new BadRequestException("当前库区无可用点位"); - } - String finishCode = regionCode.get(0).getPoint_code(); - SchBasePoint schBasePoint; - schBasePoint = iSchBasePointService.getByCode(finishCode); - schBasePoint.setLock_up(true); - iSchBasePointService.update(schBasePoint); - parm.put("point_code2", finishCode); - } WmstoIWmsResponse result = new WmstoIWmsResponse(); RedissonUtils.lock(() -> { + if ("1002".equals(parm.getString("bill_type"))) { + int count = iSchBaseTaskService.count(new LambdaQueryWrapper() + .and(w -> w.like(SchBaseTask::getPoint_code2, "BCPRK6") + .or() + .like(SchBaseTask::getPoint_code2, "BCPCK6")) + .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) + ); + if (count > 0) { + throw new BadRequestException("CNC区域有出库或入库任务未完成,请检查!"); + } + //CNC出库区 + List regionCode = iSchBasePointService.list(new LambdaQueryWrapper() + .like(SchBasePoint::getPoint_code, "BCPCK6") + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getLock_up, "0") + .eq(SchBasePoint::getIs_used, "1") + .orderByDesc(SchBasePoint::getOut_order_seq) + ); + if (ObjectUtils.isEmpty(regionCode)) { + throw new BadRequestException("当前库区无可用点位"); + } + String finishCode = regionCode.get(0).getPoint_code(); + SchBasePoint schBasePoint; + schBasePoint = iSchBasePointService.getByCode(finishCode); + schBasePoint.setLock_up(true); + iSchBasePointService.update(schBasePoint); + parm.put("point_code2", finishCode); + } JSONArray tableData = parm.getJSONArray("tableData"); if (CollectionUtils.isEmpty(tableData)) { throw new BadRequestException("tableData 不能为空"); @@ -451,7 +451,7 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { if (!storage_code.equals(structattr.getStoragevehicle_code())) { throw new BadRequestException("该仓位存放托盘与所传托盘的编码不对" + "传入的托盘号:" + storage_code + ",现在存放的托盘号:" + structattr.getStoragevehicle_code()); } - if (!"0".equals(structattr.getLock_type())) { + if (!"0".equals(structattr.getLock_type())&&StringUtils.isBlank(structattr.getStor_type())) { throw new BadRequestException("传入点位有任务:" + turnout_struct_code); } if (structattr.getLayer_num() > 3 && "1002".equals(parm.getString("bill_type"))) { @@ -476,8 +476,8 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { parm.put("point_code",stuct_code); parm.put("region_code","CKQ"); iOutBillService.allSetPoint(parm); -// data.put("bill_code",iostorinv_id); -// data.put("turnout_destination_code",pointCode); + // data.put("bill_code",iostorinv_id); + // data.put("turnout_destination_code",pointCode); result.setCode(String.valueOf(HttpStatus.OK.value())); result.setMsg("出库任务生成成功"); result.setTotalElements(0);