diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java index 10f237f..d6335f9 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/NDCAgvService.java @@ -46,14 +46,7 @@ public interface NDCAgvService { */ public byte[] sendAgvOneModeInst(int phase, int index, int result, int startPoint, int nextPoint, int startHigh, int nextHigh); - /** - * 下发二号agv指令 - * @param phase - * @param index - * @param result - * @return - */ - public byte[] sendAgvTwoModeInst(int phase, int index, int result); + /** * 下发一号agv指令 @@ -65,6 +58,17 @@ public interface NDCAgvService { public byte[] sendAgvOneModeInst(int phase, int index, int result); + /** + * 下发二次分配 + * @param phase + * @param index + * @param result + * @return + */ + public byte[] sendAgvTwoModeInst(int phase, int index, int result,Instruction inst); + + + /** * 下发充电任务 * diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index f1e0269..b4bfc6a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -80,7 +80,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { public void sendAgvInstToNDC(String agv_system_type, Instruction inst) { if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { String instcode = inst.getInstruction_code(); - int type = Integer.parseInt(inst.getInstruction_type()); + Integer type = Integer.parseInt(inst.getInstruction_type()); int priority = Integer.parseInt(inst.getPriority()) + 128; DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); @@ -109,7 +109,11 @@ public class NDCAgvServiceImpl implements NDCAgvService { str1 += "/priority:" + hexToString(prioritylow & 0xFF); System.out.println(str); System.out.println(str1); - byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, + String car_type=inst.getCar_type(); + byte[] b=new byte[]{}; + + if(car_type.equals("1")&& type.equals(1)){ + b = new byte[]{(byte) 0X87, (byte) 0XCD, (byte) 0X00, (byte) 0X08, (byte) 0X00, (byte) 0X12, (byte) 0X00, (byte) 0X01, @@ -122,7 +126,62 @@ public class NDCAgvServiceImpl implements NDCAgvService { (byte) typehigh, (byte) typelow, (byte) qhdhigh, (byte) qhdlow, (byte) fhdhigh, (byte) fhdlow - }; + };}else if(car_type.equals("2")&& type.equals(1)){ + int car_width=Integer.parseInt(inst.getCar_width()); + byte car_width1=(byte) IntToHexHigh(car_width); + byte car_width2=(byte) IntToHexLow(car_width); + b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X14, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X71, + (byte) 0X00, (byte) 0X10, + (byte) 0X01, prioritylow, + (byte) 0X00, (byte) 0X01, + (byte) ikeyhigh, (byte) ikeylow, + (byte) ikeyhigh, (byte) ikeylow, + (byte) typehigh, (byte) typelow, + (byte) qhdhigh, (byte) qhdlow, + (byte) fhdhigh, (byte) fhdlow, + (byte) car_width1,(byte) car_width2, + };}else if(car_type.equals("1")&& type.equals(2)){ + fhdhigh=2; + fhdlow=3; + b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X12, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X71, + (byte) 0X00, (byte) 0X0E, + (byte) 0X01, prioritylow, + (byte) 0X00, (byte) 0X01, + (byte) ikeyhigh, (byte) ikeylow, + (byte) ikeyhigh, (byte) ikeylow, + (byte) typehigh, (byte) typelow, + (byte) qhdhigh, (byte) qhdlow, + (byte) fhdhigh, (byte) fhdlow + };}else if(car_type.equals("2")&& type.equals(2)){ + fhdhigh=2; + fhdlow=3; + int car_width=Integer.parseInt(inst.getCar_width()); + byte car_width1=(byte) IntToHexHigh(car_width); + byte car_width2=(byte) IntToHexLow(car_width); + b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X14, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X71, + (byte) 0X00, (byte) 0X10, + (byte) 0X01, prioritylow, + (byte) 0X00, (byte) 0X01, + (byte) ikeyhigh, (byte) ikeylow, + (byte) ikeyhigh, (byte) ikeylow, + (byte) typehigh, (byte) typelow, + (byte) qhdhigh, (byte) qhdlow, + (byte) fhdhigh, (byte) fhdlow, + (byte) car_width1,(byte) car_width2, + };} + log.info("下发AGV作业指令--{}", str1); OneNDCSocketConnectionAutoRun.write(b); System.out.println("下发agv指令数据:" + Bytes2HexString(b)); @@ -160,9 +219,39 @@ public class NDCAgvServiceImpl implements NDCAgvService { } + @Override - public byte[] sendAgvTwoModeInst(int phase, int index, int result) { - return new byte[0]; + public byte[] sendAgvTwoModeInst(int phase, int index, int result,Instruction inst) { + if (phase < 0 || index < 0) { + return null; + } + DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); + int finish_code = deviceService.queryAddressBydeviceCode(inst.getNext_point_code()); + log.info("最终指{}",inst.getNext_point_code()); + byte indexhigh = (byte) IntToHexHigh(index); + byte indexlow = (byte) IntToHexLow(index); + byte phasehigh = (byte) IntToHexHigh(phase); + byte phaselow = (byte) IntToHexLow(phase); + byte resulthigh = (byte) IntToHexHigh(result); + byte resultlow = (byte) IntToHexLow(result); + byte finish_code1= (byte) IntToHexHigh(finish_code); + byte finish_code2 = (byte) IntToHexLow(finish_code); + byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X0C, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X6D, + (byte) 0X00, (byte) 0X08, + (byte) indexhigh, (byte) indexlow, + (byte) 0X01, (byte) 0X12, + (byte) phasehigh, (byte) phaselow, + (byte) finish_code1, (byte) finish_code2 + }; + + log.info("反馈agv二次分配动作数据--index:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF) + ",phase:" + hexToString(phasehigh & 0xFF) + hexToString(phaselow & 0xFF)); + + System.out.println("反馈agv二次分配动作数据:" + Bytes2HexString(b)); + return b; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java index 3790e19..51ed655 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/rest/DeviceController.java @@ -1,13 +1,18 @@ package org.nl.acs.device.rest; +import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import org.nl.acs.device.device_driver.DriverTypeEnum; +import org.nl.acs.device.domain.Device; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.dto.DeviceDto; import org.nl.common.logging.annotation.Log; +import org.nl.common.utils.IdUtil; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -19,7 +24,12 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; /** * @author jiaolm @@ -356,4 +366,50 @@ public class DeviceController { deviceService.excelImport(file, request); return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/batchSaveAttr") + @SaIgnore + public ResponseEntity batchSaveDevice(@Validated @RequestBody JSONObject config) { + int 排 = config.getInteger("x"); + int 列 = config.getInteger("y"); + int 层 = config.getInteger("z"); + String pre = config.getString("pre"); + String now = DateUtil.now(); + ArrayList list = new ArrayList<>(); + for (int x = 1; x <= 排; x++) { + for (int y = 1; y <= 列; y++) { + for (int z = 1; z <= 层; z++) { + Device device = new Device(); + device.setDevice_id(IdUtil.getStringId()); + String nx = "" + x; + String ny = "" + y; + String nz = "" + z; + if(x<10){ + nx="0"+nx; + } + if(y<10){ + ny="0"+ny; + } + device.setDevice_code(pre+nx+ny+"0"+nz); + device.setDevice_name(pre+nx+ny+"0"+nz); + device.setDevice_type("station"); + device.setIs_config("false"); + device.setIs_route("false"); + device.setDriver_code("standard_ordinary_site"); + device.setIs_active("1"); + device.setSeq_num(BigDecimal.valueOf(1)); + device.setIs_delete("0"); + device.setCreate_by("admin"); + device.setCreate_time("2025-12-26 17:29:33"); + list.add(device); + } + } + } + Lists.partition(list,1000).stream().map((Function, CompletableFuture>) o->CompletableFuture.runAsync(() -> { + for (Device stIvtStructattr : o) { + deviceService.save(stIvtStructattr); + } + })).parallel().forEach(CompletableFuture::join); + + return new ResponseEntity<>(HttpStatus.OK); + } } 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 5964abd..e3a0594 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 @@ -33,6 +33,7 @@ import org.nl.acs.opc.DeviceAppService; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; +import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.system.service.lucene.LuceneExecuteLogService; @@ -166,11 +167,26 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //取货完毕 //(需要WCS反馈) } else if (phase == 0x05) { + task.setTask_status("8"); + taskserver.update(task); data = ndcAgvService.sendAgvOneModeInst(phase, index, 0); log.info("agv进入" + device_code + "取货完成"); flag = true; } else if (phase == 0x06) { - data = getData(data, index, inst, task); + JSONObject feed_jo = new JSONObject(); + feed_jo.put("task_id", task.getExt_task_id()); + feed_jo.put("task_code", task.getTask_code()); + feed_jo.put("task_status","10"); + JSONArray ja = new JSONArray(); + ja.add(feed_jo); + acsToWmsService.feedTaskStatus(ja); + Instruction inst1 = instructionService.findBytaskCode(inst.getTask_id()); + log.info("二次分配指令终点是{}",inst1.getNext_point_code()); + if(inst1.getNext_point_code().equals("CKFPW")){ + throw new BadRequestException("没有出库点位了请释放"); + } + data=ndcAgvService.sendAgvTwoModeInst(phase,index,0,inst1); + flag = true; //到达放货点 //(需要WCS反馈) } else if (phase == 0x07) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java index 94bedb0..02aa0c2 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_ordinary_site/StandardOrdinarySiteDeviceDriver.java @@ -14,6 +14,7 @@ import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java index e9d6cc3..c237a23 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/data/one/CreateTaskRequest.java @@ -87,13 +87,7 @@ public class CreateTaskRequest extends BaseRequest { /** * 任务标识 */ - private String ext_task_id; - - - - - - + private String ext_task_uuid; /** @@ -226,4 +220,10 @@ public class CreateTaskRequest extends BaseRequest { * 17 木箱堆叠行架任务 */ private String class_type; -} + /** + * 车辆类型 1 ps20 2 RT + */ + private String car_type; + private String car_width; + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index be591d5..537bbd5 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.yomahub.tlog.hutoolhttp.TLogHutoolhttpInterceptor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,6 +24,9 @@ import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingRequest; import org.nl.acs.ext.wms.data.one.ApplyLabelingAndBindingResponse; import org.nl.acs.ext.wms.data.one.BaseRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.domain.InstructionMybatis; +import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; @@ -54,6 +58,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Autowired DeviceExecuteLogService logServer; + @Autowired + InstructionService instructionService; + @Autowired private LuceneExecuteLogService luceneLogService; @@ -161,6 +168,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (ObjectUtil.isNotEmpty(result2) && result2.getStatus() == 200) { type = "info"; JSONObject jo = JSONObject.parseObject(result2.body()); + if(!StrUtil.isEmpty(jo.getString("finish_code"))){ + String finish_code=jo.getString("finish_code"); + if(taskDto.getCar_type().equals("2")){ + finish_code=finish_code+"-R"; + } + taskDto.setNext_point_code(finish_code); + taskDto.setNext_device_code(finish_code); + taskDto.setTask_status("1"); + taskService.update(taskDto); + Instruction instruction=instructionService.findBytaskCode(taskDto.getTask_id()); + instruction.setNext_device_code(finish_code); + instruction.setNext_point_code(finish_code); + instructionService.update(instruction); + //找到最新的一条指令 + } log.info("feedbackTaskStatusToWms-----输出参数{}", jo.toString()); LuceneLogDto luceneLogDto = new LuceneLogDto(4,"feedTaskStatus", String.valueOf(result2.getStatus()), String.valueOf(data), String.valueOf(result2.body()), "ACS向WMS反馈任务状态"); @@ -169,6 +191,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } else { type = "error"; } + return null; } finally { MDC.remove(log_file_type); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index d4d6f97..eb9ca29 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -76,19 +76,26 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { String data = datas.get(i).toString(); CreateTaskRequest request = JsonUtl.format(data, CreateTaskRequest.class); String paper_array = request.getPaper_array(); - String ext_task_id = request.getExt_task_id(); + String ext_task_id = request.getExt_task_uuid(); String task_code = request.getTask_code(); + //车辆类型 + String car_type=request.getCar_type(); + String car_width=request.getCar_width(); String start_device_code = request.getStart_device_code(); String start_device_code2 = request.getStart_device_code2(); String next_device_code = request.getNext_device_code(); String next_device_code2 = request.getNext_device_code2(); String put_device_code = request.getPut_device_code(); + String task_type = request.getTask_type(); + if(task_type.equals("1")&&car_type.equals("2")){ + start_device_code=start_device_code+"-R"; + } String priority = request.getPriority(); String vehicle_code = request.getVehicle_code(); String vehicle_code2 = request.getVehicle_code2(); String vehicle_type = request.getVehicle_type(); String route_plan_code = request.getRoute_plan_code(); - String task_type = request.getTask_type(); + String class_type = request.getClass_type(); String truss_type = request.getTruss_type(); Integer agv_action_type = request.getAgv_action_type(); @@ -300,6 +307,8 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("size", JSONUtil.toJsonStr(size)); jo.put("version", JSONUtil.toJsonStr(version)); jo.put("bushing_num", JSONUtil.toJsonStr(bushing_num)); + jo.put("car_type",car_type); + jo.put("car_width",car_width); if (!StrUtil.isEmpty(ext_task_id)) { jo.put("ext_task_id", ext_task_id); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java index 1a59e9f..6474fce 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/domain/InstructionMybatis.java @@ -232,6 +232,10 @@ public class InstructionMybatis extends CommonModel implemen /** AGV系统类型 */ private String agv_system_type; + private String car_type; + + private String car_width; + public void copyFrom(Instruction source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java index 0502aae..2b246a9 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/InstructionService.java @@ -444,4 +444,10 @@ public interface InstructionService extends CommonService { * @return */ Boolean querySameNextDeviceCodeInstByOut(String nextDeviceCode); + + /** + * + * + */ + Instruction findBytaskCode(String task_id); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java index aca8e7e..2e239bb 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java @@ -363,5 +363,6 @@ public class InstructionDto implements Serializable { * 单工位堆垛机101-199 双工位堆垛机201-255 */ private String to_device_code; - + private String car_type; + private String car_width; } 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 a86ab9d..deabd73 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 @@ -11,6 +11,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; @@ -243,6 +244,7 @@ public class InstructionServiceImpl extends CommonServiceImpl insPage = instructionMapper.selectPage(queryPage, wrapper); final JSONObject json = (JSONObject) JSON.toJSON(ConvertUtil.convertPage(insPage, InstructionDto.class)); return json; @@ -362,9 +364,9 @@ public class InstructionServiceImpl extends CommonServiceImpl shortPathsList = - routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - RouteLineDto route = null; - for (int i = 0; i < shortPathsList.size(); i++) { - RouteLineDto routeLineDto = shortPathsList.get(i); - String route_device = routeLineDto.getDevice_code(); - String route_next_device = routeLineDto.getNext_device_code(); - if (route_device.equals(dto.getStart_device_code()) - && route_next_device.equals(dto.getNext_device_code())) { - route = routeLineDto; - break; - } - } - if (ObjectUtil.isEmpty(route)) { - throw new BadRequestException(LangProcess.msg("error_isNull", "route")); - } - if (StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { +// List shortPathsList = +// routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); +// RouteLineDto route = null; +// for (int i = 0; i < shortPathsList.size(); i++) { +// RouteLineDto routeLineDto = shortPathsList.get(i); +// String route_device = routeLineDto.getDevice_code(); +// String route_next_device = routeLineDto.getNext_device_code(); +// if (route_device.equals(dto.getStart_device_code()) +// && route_next_device.equals(dto.getNext_device_code())) { +// route = routeLineDto; +// break; +// } +// } +// if (ObjectUtil.isEmpty(route)) { +// throw new BadRequestException(LangProcess.msg("error_isNull", "route")); +// } +// if (StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { NDCAgvService ndcAgvService = SpringContextHolder.getBean(NDCAgvService.class); ndcAgvService.sendAgvInstToNDC(task.getAgv_system_type(), dto); - } +// } //判断是否是仙工AGV /* if(CommonFinalParam.ONE.equals(route.getType())){ HttpResponse response = xiangGongAgvService.sendOrderSequencesToXZ(dto); @@ -642,6 +645,9 @@ public class InstructionServiceImpl extends CommonServiceImpl(instructionMapper) + .eq(InstructionMybatis::getTask_id, task_id) + .orderByDesc(InstructionMybatis::getCreate_time) + .last("LIMIT 1") // 关键:限制结果只返回第一条 + .one(); + if (ObjectUtil.isEmpty(ins)) { + return null; + } + return ConvertUtil.convert(ins, Instruction.class); + } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/route/service/impl/RouteLineServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/route/service/impl/RouteLineServiceImpl.java index d695c6e..3d1371b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/route/service/impl/RouteLineServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/route/service/impl/RouteLineServiceImpl.java @@ -673,7 +673,7 @@ public class RouteLineServiceImpl extends CommonServiceImpl implements Serializable { /** 交互字段 */ private String interaction_json; + private String car_type; + + private String car_width; + public void copyFrom(Task source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskStatusEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskStatusEnum.java index 4a08c7f..70a2a6f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskStatusEnum.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/enums/TaskStatusEnum.java @@ -16,6 +16,7 @@ public enum TaskStatusEnum { READY("0", "READY", "就绪"), BUSY("1", "BUSY", "执行中"), FINISHED("2", "FINISHED", "完成"), + FINISHEDMOVE("4", "FINISHEDMOVE", "取货完成"), CANCEL("3", "CANCEL", "取消"), ERROR("99", "ERROR", "异常"); 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 dd87c90..9e20fbd 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 @@ -286,6 +286,13 @@ public interface TaskService extends CommonService { */ void finish(String ids); + /** + * 取货完成 + * + * @param ids + */ + void finishmove(String ids); + /** * 取消任务 * diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index a68ce5c..a2a9f50 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -311,4 +311,7 @@ public class TaskDto implements Serializable { * 行架任务类型 */ private String truss_type; + + private String car_type; + private String car_width; } 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 b6f3770..59f5be1 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 @@ -55,6 +55,7 @@ import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.FileUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.StringUtils; import org.nl.config.SpringContextHolder; import org.nl.config.language.LangProcess; import org.nl.system.service.param.ISysParamService; @@ -192,6 +193,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme List taskList = new LambdaQueryChainWrapper<>(taskMapper) .eq(Task::getTask_status, task_status) .eq(Task::getIs_delete, "0") + .orderByAsc(Task::getCreate_time) + .orderByAsc(Task::getTask_code) .list(); return ConvertUtil.convertList(taskList, TaskDto.class); } @@ -230,7 +233,14 @@ public class TaskServiceImpl extends CommonServiceImpl impleme wrapper.lt(Task::getTask_status, TaskStatusEnum.FINISHED.getIndex()); } } - wrapper.le(Task::getTask_status, 1); + + // 关键修改:替换原有的 wrapper.le(Task::getTask_status, 1) + // 方案1:使用 in 方法,直接指定需要的 task_status 值(推荐,简洁高效) + wrapper.in(Task::getTask_status, 1, 4 ,10 ,0); + +// 方案2:使用 or 拼接 eq 条件(效果与方案1一致,适合复杂条件扩展) +// wrapper.eq(Task::getTask_status, 1).or().eq(Task::getTask_status, 4); + wrapper.orderByDesc(Task::getCreate_time); IPage taskPage = taskMapper.selectPage(queryPage, wrapper); final JSONObject json = (JSONObject) JSON.toJSON(ConvertUtil.convertPage(taskPage, TaskDto.class)); @@ -330,6 +340,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme if (!StrUtil.isEmpty(create_time) && !StrUtil.isEmpty(end_time)) { wrapper.between(Task::getCreate_time, create_time, end_time); } + wrapper.orderByDesc(Task::getCreate_time); IPage taskPage = taskMapper.selectPage(queryPage, wrapper); final JSONObject json = (JSONObject) JSON.toJSON(ConvertUtil.convertPage(taskPage, TaskDto.class)); JSONArray array = json.getJSONArray("content"); @@ -488,6 +499,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task_code = CodeUtil.getNewCode("TASK_NO"); task_code = CommonFinalParam.HYPHEN_ + task_code; } + String start_point_code; String next_point_code = dto.getNext_point_code(); String start_device_code = dto.getStart_device_code(); @@ -495,6 +507,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String route_plan_code = dto.getRoute_plan_code(); dto.setCreate_by("auto"); dto.setUpdate_by(currentUsername); + dto.setCar_type(dto.getCar_type()); + dto.setCar_width(dto.getCar_width()); dto.setUpdate_time(now); dto.setCreate_time(now); dto.setTask_code(task_code); @@ -510,13 +524,13 @@ public class TaskServiceImpl extends CommonServiceImpl impleme // 判断起点终点设备类型 String startDeviceType = deviceAppService.findDeviceTypeByCode(dto.getStart_device_code()); String nextDeviceType = deviceAppService.findDeviceTypeByCode(dto.getNext_device_code()); - if (routeLineService - .getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code) - .size() - == 0) { - throw new BadRequestException(dto.getStart_point_code() + "->" + dto.getNext_point_code() + " " + LangProcess.msg("route_isNull")); - } - String createTaskCheck = paramService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); +// if (routeLineService +// .getShortPathLines(dto.getStart_device_code(), dto.getNext_device_code(), plan_code) +// .size() +// == 0) { +// throw new BadRequestException(dto.getStart_point_code() + "->" + dto.getNext_point_code() + " " + LangProcess.msg("route_isNull")); +// } +// String createTaskCheck = paramService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device nextdevice = appService.findDeviceByCode(next_device_code); @@ -538,61 +552,61 @@ public class TaskServiceImpl extends CommonServiceImpl impleme next_point_code = next_device_code + CommonFinalParam.HYPHEN_ + dto.getTo_y() + CommonFinalParam.HYPHEN_ + dto.getTo_z(); dto.setNext_point_code(next_point_code); } - if (StrUtil.equals(createTaskCheck, CommonFinalParam.ONE)) { - // 判断起点为输送设备 - if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { - - } - - if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { - } - } else { - // 判断起点为输送设备 - if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { - } - - if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { - // if (nextdevice.getDeviceDriver() instanceof - // StandardOrdinarySiteDeviceDriver) { - // standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) - // nextdevice.getDeviceDriver(); - // if (nextdevice.getHas_goods() != 0) { - // throw new Exception("任务终点需满足无货!"); - // } - // } - - JSONObject jo = new JSONObject(); - JSONObject jo2 = new JSONObject(); - if (!StrUtil.isEmpty(dto.getMaterial())) { - if (!StrUtil.equals(dto.getMaterial(), CommonFinalParam.ONE)) { - jo.put("hasGoodStatus", "2"); - jo.put("material_type", dto.getMaterial()); - } else { - jo.put("hasGoodStatus", CommonFinalParam.ONE); - jo.put("material_type", CommonFinalParam.ONE); - } - - } else { - jo.put("hasGoodStatus", CommonFinalParam.ONE); - jo.put("material_type", CommonFinalParam.ONE); - } - jo.put("device_code", dto.getStart_device_code()); - jo.put("quantity", dto.getQuantity()); - jo.put("remark", dto.getRemark()); - jo.put("batch", startdevice.getBatch()); - jo.put("islock", "true"); - deviceService.changeDeviceStatus(jo); - Device deviceByCode = deviceAppService.findDeviceByCode(dto.getNext_device_code()); - jo2.put("device_code", dto.getNext_device_code()); - jo2.put("hasGoodStatus", deviceByCode.getHas_goods()); - jo2.put("quantity", deviceByCode.getQuantity()); - jo2.put("remark", deviceByCode.getRemark()); - jo2.put("material_type", deviceByCode.getMaterial_type()); - jo2.put("batch", deviceByCode.getBatch()); - jo2.put("islock", "true"); - deviceService.changeDeviceStatus(jo2); - } - } +// if (StrUtil.equals(createTaskCheck, CommonFinalParam.ONE)) { +// // 判断起点为输送设备 +// if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { +// +// } +// +// if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { +// } +// } else { +// // 判断起点为输送设备 +// if (StrUtil.equals(DeviceType.conveyor.toString(), startDeviceType)) { +// } +// +// if (StrUtil.equals(DeviceType.conveyor.toString(), nextDeviceType)) { +// // if (nextdevice.getDeviceDriver() instanceof +// // StandardOrdinarySiteDeviceDriver) { +// // standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) +// // nextdevice.getDeviceDriver(); +// // if (nextdevice.getHas_goods() != 0) { +// // throw new Exception("任务终点需满足无货!"); +// // } +// // } +// +// JSONObject jo = new JSONObject(); +// JSONObject jo2 = new JSONObject(); +// if (!StrUtil.isEmpty(dto.getMaterial())) { +// if (!StrUtil.equals(dto.getMaterial(), CommonFinalParam.ONE)) { +// jo.put("hasGoodStatus", "2"); +// jo.put("material_type", dto.getMaterial()); +// } else { +// jo.put("hasGoodStatus", CommonFinalParam.ONE); +// jo.put("material_type", CommonFinalParam.ONE); +// } +// +// } else { +// jo.put("hasGoodStatus", CommonFinalParam.ONE); +// jo.put("material_type", CommonFinalParam.ONE); +// } +// jo.put("device_code", dto.getStart_device_code()); +// jo.put("quantity", dto.getQuantity()); +// jo.put("remark", dto.getRemark()); +// jo.put("batch", startdevice.getBatch()); +// jo.put("islock", "true"); +// deviceService.changeDeviceStatus(jo); +// Device deviceByCode = deviceAppService.findDeviceByCode(dto.getNext_device_code()); +// jo2.put("device_code", dto.getNext_device_code()); +// jo2.put("hasGoodStatus", deviceByCode.getHas_goods()); +// jo2.put("quantity", deviceByCode.getQuantity()); +// jo2.put("remark", deviceByCode.getRemark()); +// jo2.put("material_type", deviceByCode.getMaterial_type()); +// jo2.put("batch", deviceByCode.getBatch()); +// jo2.put("islock", "true"); +// deviceService.changeDeviceStatus(jo2); +// } +// } Task entity = ConvertUtil.convert(dto, Task.class); taskMapper.insert(entity); tasks.add(dto); @@ -736,7 +750,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme //反馈上位系统任务状态 //判断是否为WMS下发的任务,如果是反馈任务状态给WMS String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); - if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { + if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")&& !StrUtil.equals(dto.getTask_status(), "8")) { this.feedWmsTaskStatus(entity); } } @@ -780,6 +794,14 @@ public class TaskServiceImpl extends CommonServiceImpl impleme this.feedWmsTaskStatus(entity); } } + @Override + @Transactional(rollbackFor = Exception.class) + public void finishmove(String id) { + TaskDto entity = this.findById(id); + entity.setTask_status(TaskStatusEnum.FINISHEDMOVE.getIndex()); + Task task = ConvertUtil.convert(entity, Task.class); + taskMapper.updateById(task); + } @Override @Transactional(rollbackFor = Exception.class) @@ -828,6 +850,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String taskid = acsTask.getTask_id(); String taskcode = acsTask.getTask_code(); + String car_type=acsTask.getCar_type(); String vehiclecode = acsTask.getVehicle_code(); String priority = acsTask.getPriority(); String start_point_code = acsTask.getStart_point_code(); @@ -842,34 +865,34 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String next_point_code2 = acsTask.getNext_point_code2(); String agv_system_type = acsTask.getAgv_system_type(); String task_type = acsTask.getTask_type(); - /** 开始平均分解校验 */ - String this_device_code = - this.queryAssignedByDevice(acsTask.getStart_device_code(), acsTask.getNext_device_code()); - if (StrUtil.isEmpty(this_device_code)) { - List shortPathsList = - routeLineService.getShortPathLines( - start_device_code, acsTask.getNext_device_code(), route_plan_code); - RouteLineDto routeLineDto = shortPathsList.get(0); - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; - } - } - next_device_code = pathlist.get(index); - } else { - next_device_code = this_device_code; - } - if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { - next_point_code = next_device_code + CommonFinalParam.HYPHEN_ + acsTask.getTo_y() + CommonFinalParam.HYPHEN_ + acsTask.getTo_z(); - } else { - next_point_code = next_device_code; - } +// /** 开始平均分解校验 */ +// String this_device_code = +// this.queryAssignedByDevice(acsTask.getStart_device_code(), acsTask.getNext_device_code()); +// if (StrUtil.isEmpty(this_device_code)) { +// List shortPathsList = +// routeLineService.getShortPathLines( +// start_device_code, acsTask.getNext_device_code(), route_plan_code); +// RouteLineDto routeLineDto = shortPathsList.get(0); +// String path = routeLineDto.getPath(); +// String type = routeLineDto.getType(); +// String[] str = path.split("->"); +// List pathlist = Arrays.asList(str); +// int index = 0; +// for (int m = 0; m < pathlist.size(); m++) { +// if (pathlist.get(m).equals(start_device_code)) { +// index = m + 1; +// break; +// } +// } +// next_device_code = pathlist.get(index); +// } else { +// next_device_code = this_device_code; +// } +// if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { +// next_point_code = next_device_code + CommonFinalParam.HYPHEN_ + acsTask.getTo_y() + CommonFinalParam.HYPHEN_ + acsTask.getTo_z(); +// } else { +// next_point_code = next_device_code; +// } Instruction instdto = new Instruction(); instdto.setInstruction_type(task_type); @@ -878,6 +901,10 @@ public class TaskServiceImpl extends CommonServiceImpl impleme instdto.setRemark(acsTask.getRemark()); instdto.setMaterial(acsTask.getMaterial()); instdto.setQuantity(acsTask.getQuantity()); + instdto.setCar_type(car_type); + if(car_type.equals("2")){ + instdto.setCar_width(acsTask.getCar_width()); + } instdto.setTask_id(taskid); instdto.setTask_code(taskcode); instdto.setVehicle_code(vehiclecode); @@ -898,7 +925,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme instdto.setNext_point_code2(next_point_code2); instdto.setAgv_system_type(agv_system_type); instdto.setAgv_inst_type(CommonFinalParam.ONE); - instructionservice.create2(instdto); + instructionservice.create(instdto); acsTask.setTask_status(CommonFinalParam.ONE); this.update(acsTask); @@ -1036,24 +1063,24 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String to_y = null; String to_z = null; if (StrUtil.contains(start_point_code, "-") && StrUtil.count(start_point_code, "-") == 2) { - String[] start_point = start_point_code.split("-"); - task.setFrom_x(start_point[0]); - task.setStart_device_code(start_point[0]); - if (Integer.parseInt(start_point[1]) < 10 && start_point[1].length() == 1) { - from_y = "0" + start_point[1]; - task.setFrom_y(from_y); - } else { - from_y = start_point[1]; - task.setFrom_y(from_y); - } - if (Integer.parseInt(start_point[2]) < 10 && start_point[2].length() == 1) { - from_z = "0" + start_point[2]; - task.setFrom_z(from_z); - } else { - from_z = start_point[2]; - } - task.setStart_point_code(task.getStart_device_code() + "-" + from_y + "-" + from_z); - task.setStart_device_code(task.getStart_device_code()); +// String[] start_point = start_point_code.split("-"); +// task.setFrom_x(start_point[0]); +// task.setStart_device_code(start_point[0]); +// if (Integer.parseInt(start_point[1]) < 10 && start_point[1].length() == 1) { +// from_y = "0" + start_point[1]; +// task.setFrom_y(from_y); +// } else { +// from_y = start_point[1]; +// task.setFrom_y(from_y); +// } +// if (Integer.parseInt(start_point[2]) < 10 && start_point[2].length() == 1) { +// from_z = "0" + start_point[2]; +// task.setFrom_z(from_z); +// } else { +// from_z = start_point[2]; +// } +// task.setStart_point_code(task.getStart_device_code() + "-" + from_y + "-" + from_z); +// task.setStart_device_code(task.getStart_device_code()); } else { String start_device = deviceAppService.findDeviceByCode(start_point_code).getDeviceDriverDefination().getFitDeviceTypes().get(0).name(); @@ -1108,35 +1135,8 @@ public class TaskServiceImpl extends CommonServiceImpl impleme task.setNext_device_code(task.getNext_device_code()); } else { - String next_device = deviceAppService.findDeviceByCode(next_point_code).getDeviceDriverDefination().getFitDeviceTypes().get(0).name(); - if (StrUtil.equals("storage", next_device)) { - if (StrUtil.isEmpty(task.getTo_x())) { - throw new BadRequestException("货位信息终点需要包含列信息"); - } - if (StrUtil.isEmpty(task.getTo_y())) { - throw new BadRequestException("货位信息终点需要包含层信息"); - } - if (Integer.parseInt(task.getTo_y()) < 10 && task.getTo_y().length() == 1) { - to_y = "0" + task.getTo_y(); - task.setTo_y(to_y); - } else { - to_y = task.getTo_y(); - } - if (Integer.parseInt(task.getTo_z()) < 10 && task.getTo_z().length() == 1) { - to_z = "0" + task.getTo_z(); - task.setTo_z(to_z); - } else { - to_z = task.getTo_z(); - } - task.setTo_x(next_point_code); - task.setNext_point_code(next_point_code + "-" + to_y + "-" + to_z); - task.setNext_device_code(next_point_code); - - } else { task.setNext_point_code(next_point_code); task.setNext_device_code(next_point_code); - - } } return task; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java index 8f372ef..810791c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/task/AutoCreateInst.java @@ -54,6 +54,7 @@ public class AutoCreateInst { if (StrUtil.equals(acsTask.getTask_type(), TaskTypeEnum.Truss_Task.getIndex()) && !StrUtil.startWith(acsTask.getTask_code(), "-")) { continue; } + Boolean flag=false; String taskid = acsTask.getTask_id(); String taskcode = acsTask.getTask_code(); String task_type = acsTask.getTask_type(); @@ -62,6 +63,100 @@ public class AutoCreateInst { String is_send = acsTask.getIs_send(); String start_device_code = acsTask.getStart_device_code(); + String start_point=null; + if(start_device_code.contains("BCPRK")){ + String[] parts = start_device_code.split("-", 2); + start_point=parts[0]; + }else if(start_device_code.contains("CPRK")){ + String[] parts = start_device_code.split("-", 2); + start_point=parts[0]; + } + if(start_point != null) { + if (start_point.equals("CPRK1")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("CPRK1")) { + flag = true; + } + } + } else if (start_point.equals("CPRK2")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("CPRK2")) { + flag = true; + } + } + } else if (start_point.equals("CPRK3")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("CPRK3")) { + flag = true; + } + } + } else if (start_point.equals("CPRK4")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("CPRK4")) { + flag = true; + } + } + } else if (start_point.equals("BCPRK1")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("BCPRK1")) { + flag = true; + } + } + } else if (start_point.equals("BCPRK2")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("BCPRK2")) { + flag = true; + } + } + } else if (start_point.equals("BCPRK3")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("BCPRK3")) { + flag = true; + } + } + } else if (start_point.equals("BCPRK4")) { + List list1 = taskserver.queryAllByStatus("1"); + for (int j = 0; j < list1.size(); j++) { + String start_device_code1 = list1.get(j).getStart_device_code(); + String[] parts = start_device_code1.split("-", 2); + start_point = parts[0]; + if (start_point.equals("BCPRK4")) { + flag = true; + } + } + } + } + if (flag){ + continue; + } String start_point_code = acsTask.getStart_point_code(); String put_device_code = acsTask.getPut_device_code(); @@ -76,37 +171,38 @@ public class AutoCreateInst { String start_height = acsTask.getStart_height(); String next_height = acsTask.getNext_height(); + String car_type=acsTask.getCar_type(); + String car_width=acsTask.getCar_width(); if (StrUtil.equals(is_send, "0")) { continue; } - //校验路由关系 - List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); - if (ObjectUtils.isEmpty(shortPathsList)) { - acsTask.setRemark("路由不通无法生成指令"); - taskserver.updateByCodeFromCache(acsTask); - continue; - } - - if (!StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { - continue; - } - - RouteLineDto routeLineDto = shortPathsList.get(0); - String path = routeLineDto.getPath(); - String type = routeLineDto.getType(); - String[] str = path.split("->"); - List pathlist = Arrays.asList(str); - int index = 0; - for (int m = 0; m < pathlist.size(); m++) { - if (pathlist.get(m).equals(start_device_code)) { - index = m + 1; - break; - } - } - next_device_code = pathlist.get(index); +// //校验路由关系 +// List shortPathsList = routeLineService.getShortPathLines(start_device_code, next_device_code, route_plan_code); +// if (ObjectUtils.isEmpty(shortPathsList)) { +// acsTask.setRemark("路由不通无法生成指令"); +// taskserver.updateByCodeFromCache(acsTask); +// continue; +// } +// +// if (!StrUtil.equals(shortPathsList.get(0).getType(), CommonFinalParam.ONE)) { +// continue; +// } +// RouteLineDto routeLineDto = shortPathsList.get(0); +// String path = routeLineDto.getPath(); +// String type = routeLineDto.getType(); +// String[] str = path.split("->"); +// List pathlist = Arrays.asList(str); +// int index = 0; +// for (int m = 0; m < pathlist.size(); m++) { +// if (pathlist.get(m).equals(start_device_code)) { +// index = m + 1; +// break; +// } +// } +// next_device_code = pathlist.get(index); if (StrUtil.equals(appService.findDeviceTypeByCode(next_device_code), "storage")) { next_point_code = next_device_code + "-" + acsTask.getTo_y() + "-" + acsTask.getTo_z(); @@ -128,14 +224,14 @@ public class AutoCreateInst { instdto.setCreate_time(now); instdto.setCreate_by(SecurityUtils.getCurrentNickName()); - instdto.setStart_device_code(start_device_code); + instdto.setStart_device_code(start_point_code); instdto.setStart_point_code(start_point_code); instdto.setPut_device_code(put_device_code); instdto.setPut_point_code(put_point_code); instdto.setNext_device_code(next_device_code); instdto.setNext_point_code(next_point_code); - - + instdto.setCar_type(car_type); + instdto.setCar_width(car_width); instdto.setPriority(priority); instdto.setInstruction_status(InstructionStatusEnum.READY.getIndex()); instdto.setExecute_device_code(start_point_code); diff --git a/acs/nladmin-ui/src/i18n/langs/task/zh.js b/acs/nladmin-ui/src/i18n/langs/task/zh.js index 6c734df..31d1bd5 100644 --- a/acs/nladmin-ui/src/i18n/langs/task/zh.js +++ b/acs/nladmin-ui/src/i18n/langs/task/zh.js @@ -23,7 +23,9 @@ export default { 'start_or_end': '起点或终点', 'time': '时间段', 'empty_shaft_position': '空轴位', - 'extension_field': '扩展字段' + 'extension_field': '扩展字段', + 'car_type': '车辆类型', + 'car_width': '货叉宽度' }, 'select': { 'automated_warehouse_task_type': '立库任务类型', diff --git a/acs/nladmin-ui/src/views/acs/task/index.vue b/acs/nladmin-ui/src/views/acs/task/index.vue index 83fa582..63a0f02 100644 --- a/acs/nladmin-ui/src/views/acs/task/index.vue +++ b/acs/nladmin-ui/src/views/acs/task/index.vue @@ -138,6 +138,25 @@ /> + + + + + + + + { + /** + * 根据编码获取载具 + * @param storagevehicle_stype 载具类型细分 + * @return 实体类 + */ + MdPbStoragevehicletype getByCode(String storagevehicle_stype); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbStoragevehicletype.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbStoragevehicletype.java new file mode 100644 index 0000000..8725530 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbStoragevehicletype.java @@ -0,0 +1,32 @@ +package org.nl.wms.basedata_manage.service.dao; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 载具信息表 + *

+ * + * @author Zjj + * @since 2025-12-17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_pb_storagevehicletype") +public class MdPbStoragevehicletype { + private static final long serialVersionUID = 1L; + private String storagevehicle_stype; + /** + * 1.木栈板 2.胶合栈板 3.烟熏栈板 4.纸栈板 + */ + private String storagevehicle_btype; + private String storagevehicle_size; + /** + * 1.RT16 2.PS20 3.RT16和PS20 + */ + private String suitable_car; + private String storagevehicle_name; + private String car_width; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleinfoMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleinfoMapper.java index b87f9d0..93878e2 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleinfoMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleinfoMapper.java @@ -13,4 +13,5 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; */ public interface MdPbStoragevehicleinfoMapper extends BaseMapper { + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicletypeMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicletypeMapper.java new file mode 100644 index 0000000..5fbec21 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicletypeMapper.java @@ -0,0 +1,19 @@ +package org.nl.wms.basedata_manage.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype; + + +/** + *

+ * 载具类型表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-05-14 + */ +public interface MdPbStoragevehicletypeMapper extends BaseMapper { + + +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicletypeMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicletypeMapper.xml new file mode 100644 index 0000000..9d3f0e8 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicletypeMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java index 764c6da..f9e3f02 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dto/StrategyStructParam.java @@ -42,6 +42,8 @@ public class StrategyStructParam { */ private String storagevehicle_code; + private String suitable_car; + /** * 载具明细:混料的话则是数组 */ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java index 3bc153e..209a4c0 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java @@ -17,7 +17,9 @@ import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; @@ -40,12 +42,13 @@ import java.util.Set; public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl implements IMdPbStoragevehicleinfoService { @Autowired private ISysDictService dictService; - + @Autowired + private IMdPbStoragevehicletypeService iMdPbStoragevehicletypeService; @Override public IPage queryAll(Map whereJson, PageQuery page) { // 查询条件 LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); - String search = MapUtil.getStr(whereJson, "storagevehicle_code"); + String search = MapUtil.getStr(whereJson, "vehicle_code"); String storagevehicle_type = MapUtil.getStr(whereJson, "storagevehicle_type"); if (ObjectUtil.isNotEmpty(search)) { @@ -75,21 +78,23 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl().eq("para1", dto.getString("storagevehicle_type"))); - if (dict==null){ - throw new BadRequestException("此载具类型"+dto.getString("vehicle_type")+"没有配置字典值"); - } +// Dict dict = dictService.getOne(new QueryWrapper().eq("para1", dto.getString("storagevehicle_type"))); +// if (dict==null){ +// throw new BadRequestException("此载具类型"+dto.getString("vehicle_type")+"没有配置字典值"); +// } + MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(dto.getString("storagevehicle_type")); + JSONArray resultCodeArr = new JSONArray(); MdPbStoragevehicleinfo vehicleInfo = dto.toJavaObject(MdPbStoragevehicleinfo.class); MdPbStoragevehicleinfo entity = new MdPbStoragevehicleinfo(); entity.setStoragevehicle_id(IdUtil.getStringId()); entity.setStoragevehicle_code(dto.getString("storagevehicle_code")); - entity.setStoragevehicle_name(dict.getLabel()); + entity.setStoragevehicle_name(mdPbStoragevehicletype.getStoragevehicle_name()); entity.setCreate_name(SecurityUtils.getCurrentNickName()); entity.setCreate_time(DateUtil.now()); entity.setCreate_id(SecurityUtils.getCurrentUserId()); entity.setIs_used(vehicleInfo.getIs_used()); - entity.setStoragevehicle_type(dict.getValue()); + entity.setStoragevehicle_type(mdPbStoragevehicletype.getStoragevehicle_btype()); entity.setVehicle_height(vehicleInfo.getVehicle_height()); entity.setVehicle_width(vehicleInfo.getVehicle_width()); entity.setVehicle_long(vehicleInfo.getVehicle_long()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicletypeServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicletypeServiceImpl.java new file mode 100644 index 0000000..abd8a32 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicletypeServiceImpl.java @@ -0,0 +1,27 @@ +package org.nl.wms.basedata_manage.service.impl; + + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype; +import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicletypeMapper; +import org.springframework.stereotype.Service; + +@Service +public class MdPbStoragevehicletypeServiceImpl extends ServiceImpl implements IMdPbStoragevehicletypeService { + @Override + public MdPbStoragevehicletype getByCode(String storagevehicle_stype) { + MdPbStoragevehicletype one = this.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicletype::getStoragevehicle_stype, storagevehicle_stype) + ); + if (ObjectUtil.isEmpty(one)) { + throw new BadRequestException("载具类型为【"+storagevehicle_stype+"】的不存在!"); + } + return one; + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index ba9a3d6..5ec4106 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -128,6 +128,7 @@ public class StructattrServiceImpl extends ServiceImpl strategy = one.getStrategy(); Map decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class); - QueryWrapper query = new QueryWrapper() - .eq("is_used", true) + QueryWrapper query = new QueryWrapper(); + if ("3".equals(param.getSuitable_car())) { + query.eq("is_used", true) .eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定")) .eq("sect_code", param.getSect_code()) - .isNull("storagevehicle_code"); + .ne("width",1) + .and(wrapper -> wrapper.isNull("storagevehicle_code") + .or() + .eq("storagevehicle_code", " ")); + } else if("2".equals(param.getSuitable_car())){ + query.eq("is_used", true) + .eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定")) + .eq("sect_code", param.getSect_code()) + .eq("width",1) + .ne("layer_num",4) + .and(wrapper -> wrapper.isNull("storagevehicle_code") + .or() + .eq("storagevehicle_code", " ")); + } else if ("1".equals(param.getSuitable_car())){ + query.eq("is_used", true) + .eq("lock_type",IOSEnum.LOCK_TYPE.code("未锁定")) + .eq("sect_code", param.getSect_code()) + .eq("layer_num",4) + .and(wrapper -> wrapper.isNull("storagevehicle_code") + .or() + .eq("storagevehicle_code", " ")); + } List list = this.list(query); for (String decisionerType : strategy) { Decisioner decisioner = decisionerMap.get(decisionerType); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java index 3def196..8d68e49 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/strategyConfig/decisioner/impl/base/NearbyRuleHandler.java @@ -46,6 +46,7 @@ public class NearbyRuleHandler extends Decisioner { */ @Override public List handler(List list, JSONObject param) { + if (CollectionUtils.isEmpty(list)) { throw new BadRequestException("当前分配策略无可用货位"); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java index 9a1a897..12d7b54 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/controller/AcsToWmsController.java @@ -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 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java index 7994fef..4158f47 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java @@ -16,8 +16,12 @@ public enum ResultAcsStatus { /** * 完成 */ - FINISHED("2", "完成", "完成"); + FINISHED("2", "完成", "完成"), + /** + * 取货完成 + */ + MOVEFINISH("10","取货完成","取货完成"); ResultAcsStatus(String code, String name, String desc) { this.code = code; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java index 5eac0b0..0770006 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java @@ -2,14 +2,19 @@ package org.nl.wms.ext_manage.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.wms.ext_manage.enums.ResultAcsStatus; import org.nl.wms.ext_manage.service.AcsToWmsService; +import org.nl.wms.sch_manage.enums.PointStatusEnum; 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.SchBasePointMapper; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.TaskFactory; import org.redisson.api.RLock; @@ -18,7 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import javax.annotation.Resource; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -46,18 +54,25 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Autowired private ISchBaseTaskService iSchBaseTaskService; + @Autowired + private ISchBasePointService iSchBasePointService; + /** * 任务工厂服务 */ @Autowired private TaskFactory taskFactory; + @Autowired + private SchBasePointMapper schBasePointMapper; @Override @Transactional(rollbackFor = Exception.class) @SneakyThrows public Map receiveTaskStatusAcs(String string) { log.info("acs向lms反馈任务状态,请求参数:--------------------------------------" + string); + JSONObject data=new JSONObject(); JSONArray array = JSONArray.parseArray(string); + String finish_code=null; //返回处理失败的任务 JSONArray errArr = new JSONArray(); for (int i = 0; i < array.size(); i++) { @@ -78,6 +93,36 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 完成 status = TaskStatus.FINISHED; iSchBaseTaskService.updateById(taskObj); + } else if(ResultAcsStatus.MOVEFINISH.getCode().equals(acs_task_status)){ + if(!taskObj.getPoint_code2().equals("CKFPW")){ + log.info("任务号{}已经申请二次分配",taskObj.getTask_code()); + finish_code=taskObj.getPoint_code2(); + }else{ + log.info("任务号{}开始申请二次分配",taskObj.getTask_code()); + String region_code=null; + if(taskObj.getConfig_code().equals("STOutTask")){ + region_code="CKQ"; + } + List regionCode = schBasePointMapper.selectList(new LambdaQueryWrapper() + .eq(SchBasePoint::getRegion_code,region_code) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getLock_up,"0") + .eq(SchBasePoint::getIs_used,"1") + .orderByDesc(SchBasePoint::getOut_order_seq) + ); + if (CollectionUtils.isEmpty(regionCode)){ + throw new BadRequestException("当前库区"+regionCode+"无可用点位"); + } + finish_code=regionCode.get(0).getPoint_code(); + SchBasePoint schBasePoint=new SchBasePoint(); + schBasePoint=iSchBasePointService.getByCode(finish_code); + schBasePoint.setLock_up(true); + iSchBasePointService.update(schBasePoint); + taskObj.setPoint_code2(finish_code); + taskObj.setTask_status(TaskStatus.FINISHFP.getCode()); + iSchBaseTaskService.update(taskObj); + } + status = TaskStatus.FINISHFP; } else { // 取消 status = TaskStatus.CANCELED; @@ -98,7 +143,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); + result.put("data", data); + result.put("finish_code",finish_code); result.put("errArr", errArr); log.info("acs向lms反馈任务状态,返回参数:--------------------------------------" + result.toString()); return result; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskStatus.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskStatus.java index 948b804..cd6297c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskStatus.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskStatus.java @@ -26,6 +26,10 @@ public enum TaskStatus { * 执行中 */ EXECUTING("4", "执行中", "执行中"), + /** + * 分配完成 + */ + FINISHFP("8", "执行中", "执行中"), /** * 完成 */ @@ -40,6 +44,7 @@ public enum TaskStatus { UNFINISHED("7", "未完成", "未完成"); + TaskStatus(String code, String name, String desc) { this.code = code; this.name = name; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java index 20e26a2..a83f0a4 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java @@ -159,4 +159,5 @@ public class SchBasePoint implements Serializable { private String task_warn; @TableField(exist = false) private String storagevehicle_code; + private Boolean lock_up; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java index 57c2b5a..ee6ac89 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java @@ -123,4 +123,6 @@ public class SchBaseTask implements Serializable { @TableField(exist = false) private String task_name; + private String car_type; + private String car_width; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml index 78579c4..2fa4a80 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml @@ -50,16 +50,19 @@ AND p.is_used = #{whereJson.is_used} - - - - AND (p.ing_task_code IS NOT NULL AND p.ing_task_code ]]> '') - - - - AND (p.ing_task_code IS NULL OR p.ing_task_code = '') - - + + AND p.lock_up = #{whereJson.lock_up} + + + + + + + + + + + ORDER BY p.region_code, p.point_code, p.point_type diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dto/SchBasePointQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dto/SchBasePointQuery.java index 5915a56..b7f111a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dto/SchBasePointQuery.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dto/SchBasePointQuery.java @@ -16,6 +16,6 @@ public class SchBasePointQuery implements Serializable { private String point_type; private String point_status; private Boolean is_used; - private Boolean lock_type; + private Boolean lock_up; private Boolean parent_point; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index 4211c28..c78ab90 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -192,9 +192,12 @@ public class SchBasePointServiceImpl extends ServiceImpl pointList = data.toJavaList(SchBasePoint.class); - pointList.forEach(point -> point.setIng_task_code(lockType ? "" : "-")); + for (SchBasePoint point : pointList) { + point.setLock_up(lockType); + } +// pointList.forEach(point -> point.setIng_task_code(lockType ? "" : "-")); this.updateBatchById(pointList); } 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 07846ea..8f2958d 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 @@ -73,7 +73,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl params; + + /** + * 车辆类型 1 ps20 2 RT + */ + private String car_type; + private String car_width; } 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..f08a69c 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 @@ -39,7 +39,7 @@ public class AutoTask { //定时任务 @SneakyThrows public void run() { - RLock lock = redissonClient.getLock(this.getClass().getName()); + RLock lock = redissonClient.getLock(this.getClass().getName()); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { if (tryLock) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckInTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckInTask.java new file mode 100644 index 0000000..6480b0a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckInTask.java @@ -0,0 +1,159 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; +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.SchBaseTask; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_manage.enums.IOSEnum; +import org.nl.wms.warehouse_manage.service.dao.StIvtCheckdtl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component(value = "CheckInTask") +@TaskType("CheckInTask") +public class CheckInTask extends AbstractTask { + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + /** + * 点位服务 + */ + @Autowired + private ISchBasePointService iSchBasePointService; + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(json.getString("TaskCode")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(json.getString("task_type")); + task.setPoint_code1(json.getString("PickingLocation")); + task.setPoint_code2(json.getString("PlacedLocation")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setGroup_id(json.getString("group_id")); + task.setCar_type(json.getString("car_type")); + task.setCar_width(json.getString("car_width")); + task.setPriority(json.getString("Priority")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + return task.getTask_id(); + } + @Override + @Transactional + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + // 更新明细状态 + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(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.setTask_type("1"); + acsTaskDto.setCar_type(taskDao.getCar_type()); + if(StringUtils.isNoneBlank(taskDao.getCar_width())){ + acsTaskDto.setCar_width(taskDao.getCar_width()); + } + return acsTaskDto; + } + @Override + public void backMes(String task_code) { + } + @Override + @Transactional + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 完成任务 + this.taskConfirm(taskObj.getTask_code()); + // 更新任务状态 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); + } + @Transactional + public void taskConfirm(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + // 更新终点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code2()) + .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) + ); + } + @Override + @Transactional + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj); + } + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新任务状态 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckOutTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckOutTask.java new file mode 100644 index 0000000..390a5c7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckOutTask.java @@ -0,0 +1,156 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; +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.SchBaseTask; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component(value = "CheckOutTask") +@TaskType("CheckOutTask") +public class CheckOutTask extends AbstractTask { + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + /** + * 点位服务 + */ + @Autowired + private ISchBasePointService iSchBasePointService; + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(json.getString("TaskCode")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(json.getString("task_type")); + task.setPoint_code1(json.getString("PickingLocation")); + task.setPoint_code2(json.getString("PlacedLocation")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setGroup_id(json.getString("group_id")); + task.setCar_type(json.getString("car_type")); + task.setCar_width(json.getString("car_width")); + task.setPriority(json.getString("Priority")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + return task.getTask_id(); + } + @Override + @Transactional + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + // 更新明细状态 + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(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.setTask_type("2"); + acsTaskDto.setCar_type(taskDao.getCar_type()); + if(StringUtils.isNoneBlank(taskDao.getCar_width())){ + acsTaskDto.setCar_width(taskDao.getCar_width()); + } + return acsTaskDto; + } + @Override + public void backMes(String task_code) { + } + @Override + @Transactional + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 完成任务 + this.taskConfirm(taskObj.getTask_code()); + // 更新任务状态 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); + } + @Transactional + public void taskConfirm(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + // 更新起点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) + ); + } + @Override + @Transactional + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj); + } + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新任务状态 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java index d0c79d2..3ff6a9e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java @@ -4,10 +4,14 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.apache.commons.lang3.StringUtils; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.IdUtil;; import org.nl.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; +import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBaseTaskService; import org.nl.wms.sch_manage.service.dao.SchBaseTask; @@ -18,6 +22,9 @@ import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService; import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis; import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper; +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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -41,6 +48,16 @@ public class StInTask extends AbstractTask { @Resource private IOStorInvDisMapper ioStorInvDisMapper; + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; + + @Autowired + private MdPbGroupplateMapper mdPbGroupplateMapper; + @Autowired + private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; + @Autowired + private MdPbStoragevehicleinfoMapper mdPbStoragevehicleinfoMapper; + @Override public String create(JSONObject json) { SchBaseTask task = new SchBaseTask(); @@ -52,7 +69,8 @@ public class StInTask extends AbstractTask { task.setPoint_code2(json.getString("PlacedLocation")); task.setVehicle_code(json.getString("vehicle_code")); task.setGroup_id(json.getString("group_id")); - task.setRequest_param(json.toString()); + task.setCar_type(json.getString("car_type")); + task.setCar_width(json.getString("car_width")); task.setPriority(json.getString("Priority")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); @@ -62,6 +80,7 @@ public class StInTask extends AbstractTask { } @Override + @Transactional public AcsTaskDto sendAcsParam(String taskId) { SchBaseTask taskDao = taskService.getById(taskId); @@ -71,12 +90,12 @@ public class StInTask extends AbstractTask { 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.setTask_type("1"); - + acsTaskDto.setCar_type(taskDao.getCar_type()); + if(StringUtils.isNoneBlank(taskDao.getCar_width())){ + acsTaskDto.setCar_width(taskDao.getCar_width()); + } return acsTaskDto; } @@ -123,9 +142,9 @@ public class StInTask extends AbstractTask { if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } - if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) { - throw new BadRequestException("任务状态必须为生成才能取消任务"); - } +// if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) { +// throw new BadRequestException("任务状态必须为生成才能取消任务"); +// } this.cancelTask(taskObj); } @@ -145,6 +164,17 @@ public class StInTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void cancelTask(SchBaseTask taskObj) { + rawAssistIStorService.taskCancel(taskObj); + //删除托盘和组盘 + GroupPlate groupPlate=new GroupPlate(); + String storagevehicle_code=taskObj.getVehicle_code(); + groupPlate=iMdPbGroupplateService.getByCode(storagevehicle_code); + mdPbGroupplateMapper.deleteById(groupPlate); + MdPbStoragevehicleinfo mdPbStoragevehicleinfo=new MdPbStoragevehicleinfo(); + mdPbStoragevehicleinfo=iMdPbStoragevehicleinfoService.getByCode(storagevehicle_code); + //将载具信息清除 + mdPbStoragevehicleinfoMapper.deleteById(mdPbStoragevehicleinfo); + // 取消任务 taskService.update(new LambdaUpdateWrapper() .set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是")) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java index 8d8d5b4..4cd22c6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StOutTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.apache.commons.lang3.StringUtils; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.IdUtil;; @@ -51,6 +52,8 @@ public class StOutTask extends AbstractTask { task.setPoint_code1(json.getString("PickingLocation")); task.setPoint_code2(json.getString("PlacedLocation")); task.setVehicle_code(json.getString("vehicle_code")); + task.setCar_type(json.getString("car_type")); + task.setCar_width(json.getString("car_width")); task.setGroup_id(json.getString("group_id")); task.setRequest_param(json.toString()); task.setPriority(json.getString("Priority")); @@ -71,12 +74,12 @@ public class StOutTask extends AbstractTask { 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.setTask_type("1"); - + acsTaskDto.setTask_type("2"); + acsTaskDto.setCar_type(taskDao.getCar_type()); + if(StringUtils.isNoneBlank(taskDao.getCar_width())){ + acsTaskDto.setCar_width(taskDao.getCar_width()); + } return acsTaskDto; } @@ -140,7 +143,7 @@ public class StOutTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void cancelTask(SchBaseTask taskObj) { - + outBillService.taskCancel(taskObj); // 取消任务 taskService.update(new LambdaUpdateWrapper() .set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是")) 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..f7150ad 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 @@ -2,6 +2,7 @@ package org.nl.wms.system_manage.service.quartz.config; 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 +11,8 @@ import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.util.List; + /** *

* 项目启动时重新激活启用的定时任务 @@ -33,5 +36,9 @@ public class JobRunner implements ApplicationRunner { */ @Override public void run(ApplicationArguments applicationArguments) { + log.info("--------------------注入定时任务---------------------"); + List quartzJobs = quartzJobService.findByIsPauseIsFalse(); + quartzJobs.forEach(quartzManage::addJob); + log.info("--------------------定时任务注入完成---------------------"); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java index dc726dd..416f6b4 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/enums/IOSConstant.java @@ -84,6 +84,12 @@ public class IOSConstant { */ public final static String CHECK_POINT_CODE = "BCPCK5-9"; + + /** + * 出库分配点 + */ + public final static String CKFPW_POINT_CODE = "CKFPW"; + /** * 数字1 */ 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 a100503..7280bc6 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 @@ -55,6 +55,12 @@ public interface IInBillService extends IService { void taskFinish(SchBaseTask task); + /** + * 入库任务取消 + * @param task + */ + void taskCancel(SchBaseTask task); + List getDisDtl(Map whereJson); Structattr autoDis(JSONObject whereJson); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IOutBillService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IOutBillService.java index 422c557..d545f97 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IOutBillService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/IOutBillService.java @@ -145,7 +145,7 @@ public interface IOutBillService extends IService { * * @param whereJson / */ - String allSetPoint(JSONObject whereJson); + void allSetPoint(JSONObject whereJson); /** * 出库单强制确认(更新仓位以及库存信息) @@ -167,5 +167,12 @@ public interface IOutBillService extends IService { */ void taskFinish(SchBaseTask task); + /** + * 出库任务取消 + * @param task + */ + void taskCancel(SchBaseTask task); + + IOStorInv getByCode(String bill_code); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/dto/IOStorInvDtlDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/dto/IOStorInvDtlDto.java index 2a9c7d0..73daa12 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/dto/IOStorInvDtlDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/dto/IOStorInvDtlDto.java @@ -29,4 +29,6 @@ public class IOStorInvDtlDto extends IOStorInvDtl { * 载具编号 */ private String storagevehicle_code; + + private String turnout_struct_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 20e54ac..d2fbf8c 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 @@ -21,11 +21,9 @@ import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IBsrealStorattrService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService; import org.nl.wms.basedata_manage.service.IStructattrService; -import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; -import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; -import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; -import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.basedata_manage.service.dao.*; import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; import org.nl.wms.basedata_manage.service.dto.StrategyMater; @@ -109,6 +107,9 @@ public class InBillServiceImpl extends ServiceImpl i @Resource private IWmsToWmsService iWmsToWmsService; + + @Resource + private IMdPbStoragevehicletypeService iMdPbStoragevehicletypeService; @Override public IPage pageQuery(Map whereJson, PageQuery page) { HashMap map = new HashMap<>(); @@ -269,22 +270,21 @@ public class InBillServiceImpl extends ServiceImpl i int row_size = 0; JSONObject io_mst = new JSONObject(); String iostorinv_id = IdUtil.getStringId(); - String bill_code= (String) whereJson.get("bill_code"); - IOStorInv ioStorInv=new IOStorInv(); - if(ObjectUtil.isNotEmpty(this.getByCode(bill_code))){ - throw new BadRequestException("此入库批次号已经存在"); - } + String source_name= (String) whereJson.get("bill_code"); + String bill_code = CodeUtil.getNewCode("IN_STORE_CODE"); io_mst.put("iostorinv_id", iostorinv_id); io_mst.put("bill_code", bill_code); + io_mst.put("source_name", source_name); io_mst.put("io_type", IOSEnum.IO_TYPE.code("入库")); io_mst.put("bill_type", StatusEnum.IOBILL_TYPE_IN.code("生产入库")); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = formatter.format(new Date()); io_mst.put("biz_date",formattedDate); - BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById("1985609822694936576"); + BsrealStorattr bsrealStorattr = iBsrealStorattrService.findByCode((String) whereJson.get("stor_code")); + String stor_id=bsrealStorattr.getStor_id(); String stor_code = bsrealStorattr.getStor_code(); String stor_name = bsrealStorattr.getStor_name(); - io_mst.put("stor_id","1985609822694936576"); + io_mst.put("stor_id",stor_id); io_mst.put("stor_code", stor_code); io_mst.put("stor_name", stor_name); io_mst.put("remark", whereJson.get("remark")); @@ -596,6 +596,9 @@ public class InBillServiceImpl extends ServiceImpl i JSONObject mst = JSONObject.parseObject(JSON.toJSONString(param)); String iostorinvId = param.getString("iostorinv_id"); String storagevehicleCode = param.getString("storagevehicle_code"); + String storagevehicle_stype=param.getString("storagevehicle_type"); + MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(storagevehicle_stype); + String suitable_car=mdPbStoragevehicletype.getSuitable_car(); //判断该分配明细是否已经分配货位 List disList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class) .eq(IOStorInvDis::getIostorinv_id, iostorinvId) @@ -632,6 +635,7 @@ public class InBillServiceImpl extends ServiceImpl i .sect_code(param.getString("sect_code")) .stor_code(param.getString("stor_code")) .storagevehicle_code(param.getString("storagevehicle_code")) + .suitable_car(suitable_car) .strategyMaters(maters) .build()); Structattr struct = structattrs.get(0); @@ -778,14 +782,28 @@ public class InBillServiceImpl extends ServiceImpl i @Transactional(rollbackFor = Exception.class) public void divPoint1(Map whereJson) { String point_code = (String) whereJson.get("point_code"); - + String struct_code= (String) whereJson.get("struct_code"); + Structattr structattr=new Structattr(); + String car_type=null; + String car_width=null; + structattr=iStructattrService.getByCode(struct_code); + if(structattr.getLayer_num().equals(4)){ + car_type="2"; + String storagevehicle_stype=(String) whereJson.get("storagevehicle_type"); + MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(storagevehicle_stype); + car_width=mdPbStoragevehicletype.getCar_width(); + }else{ + car_type="1"; + } //创建任务 JSONObject task_form = new JSONObject(); task_form.put("task_type", "STInTask"); task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); task_form.put("PickingLocation", point_code); - task_form.put("PlacedLocation", whereJson.get("struct_code")); + task_form.put("PlacedLocation", struct_code); task_form.put("vehicle_code", whereJson.get("storagevehicle_code")); + task_form.put("car_type",car_type); + task_form.put("car_width",car_width); StInTask stInTask = SpringContextHolder.getBean("STInTask"); String task_id = stInTask.create(task_form); @@ -954,6 +972,9 @@ public class InBillServiceImpl extends ServiceImpl i IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper().eq(IOStorInv::getIostorinv_id,iostorinv_id)); //获取单据编号 String bill_code=ioStorInv.getBill_code(); + // + // + String source_name=ioStorInv.getSource_name(); //解锁库位 JSONObject finish_map = new JSONObject(); finish_map.put("struct_code", structCode); @@ -1005,13 +1026,16 @@ public class InBillServiceImpl extends ServiceImpl i //回传给wms TOWMSMSG towmsmsg=new TOWMSMSG(); towmsmsg.setType("0"); - towmsmsg.setBill_code(bill_code); - towmsmsg.setStatus("Finish"); + 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::getStoragevehicle_code,task.getVehicle_code())); + 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_code,groupPlate.getMaterial_id())); jo.put("material_name",mdMeMaterialbase.getMaterial_name()); jo.put("material_code",mdMeMaterialbase.getMaterial_code()); @@ -1021,6 +1045,43 @@ public class InBillServiceImpl extends ServiceImpl i towmsmsg.setTableData(tableData); iWmsToWmsService.FinishOutTask(towmsmsg); } + @Override + @Transactional(rollbackFor = Exception.class) + public void taskCancel(SchBaseTask task) { + List ioStorInvDis = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class) + .eq(IOStorInvDis::getTask_id, task.getTask_id()) + ); + if (CollectionUtils.isEmpty(ioStorInvDis)) { + throw new BadRequestException("未找到任务对应的分配明细"); + } + //解锁库位 + JSONObject finish_map = new JSONObject(); + finish_map.put("struct_code", task.getPoint_code2()); + finish_map.put("storagevehicle_code",null); + finish_map.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); + finish_map.put("inv_type", null); + finish_map.put("inv_id", null); + finish_map.put("inv_code", null); + iStructattrService.updateStatusByCode("2", finish_map); + String iostorinvId = ioStorInvDis.get(0).getIostorinv_id(); + String storagevehicleCode = ioStorInvDis.get(0).getStoragevehicle_code(); + String structCode = ioStorInvDis.get(0).getStruct_code(); + IOStorInvDis item1 = ioStorInvDis.get(0); + //获取出入库单标识 + String iostorinv_id=item1.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.setType("0"); + towmsmsg.setBill_code(source_name); + towmsmsg.setStatus("4"); + JSONObject jo=new JSONObject(); + jo.put("storagevehicle_code",task.getVehicle_code()); + List tableData=new ArrayList<>(); + tableData.add(jo); + towmsmsg.setTableData(tableData); + iWmsToWmsService.FinishOutTask(towmsmsg); + } @Override public List getDisDtl(Map whereJson) { 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 c2ffdef..22fabb9 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 @@ -21,9 +21,11 @@ import org.nl.common.utils.IdUtil;; import org.nl.config.SpringContextHolder; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IBsrealStorattrService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicletypeService; import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicletype; import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.basedata_manage.service.dao.mapper.MdMeMaterialbaseMapper; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; @@ -112,6 +114,9 @@ public class OutBillServiceImpl extends ServiceImpl i @Resource private IWmsToWmsService iWmsToWmsService; + + @Resource + private IMdPbStoragevehicletypeService iMdPbStoragevehicletypeService; @Override public IPage pageQuery(Map whereJson, PageQuery page, String[] stor_id, String[] bill_status, String[] bill_type) { HashMap map = new HashMap<>(whereJson); @@ -242,6 +247,8 @@ public class OutBillServiceImpl extends ServiceImpl i } } + + @Override public void deleteAll(String[] ids) { String currentUserId = SecurityUtils.getCurrentUserId(); @@ -347,14 +354,12 @@ public class OutBillServiceImpl extends ServiceImpl i String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); String iostorinv_id = IdUtil.getStringId(); - String bill_code= (String) map.get("bill_code"); - IOStorInv ioStorInv=new IOStorInv(); - if(ObjectUtil.isNotEmpty(this.getByCode(bill_code))){ - throw new BadRequestException("此入库批次号已经存在"); - } + String source_name= (String) map.get("bill_code"); + String bill_code = CodeUtil.getNewCode("OUT_STORE_CODE"); BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById("1985609822694936576"); map.put("iostorinv_id", iostorinv_id); map.put("bill_code", bill_code); + map.put("source_name", source_name); SimpleDateFormat formatter = new SimpleDateFormat("yyyy -MM-dd"); String formattedDate = formatter.format(new Date()); map.put("biz_date",formattedDate); @@ -379,7 +384,7 @@ public class OutBillServiceImpl extends ServiceImpl i for (int i = 0; i < array.size(); i++) { JSONObject row = array.getJSONObject(i); // 校验计划数量不能为零 - double plan_qty = row.getDoubleValue("Plan_qty"); + double plan_qty = row.getDoubleValue("plan_qty"); if (Double.compare(plan_qty, 0.0) == 0) { throw new BadRequestException("数量不能为0"); } @@ -397,10 +402,10 @@ public class OutBillServiceImpl extends ServiceImpl i ioStorInvDtl.put("source_bill_code", row.getString("source_bill_code")); ioStorInvDtl.put("source_bill_type", row.getString("source_bill_type")); ioStorInvDtl.put("source_billdtl_id", row.getString("source_billdtl_id")); - ioStorInvDtl.put("plan_qty", row.get("Plan_qty")); + ioStorInvDtl.put("plan_qty", row.get("plan_qty")); ioStorInvDtl.put("remark", row.getString("remark")); ioStorInvDtl.put("assign_qty", "0"); - ioStorInvDtl.put("unassign_qty", row.get("Plan_qty")); + ioStorInvDtl.put("unassign_qty", row.get("plan_qty")); ioStorInvDtlMapper.insert(ioStorInvDtl.toJavaObject(IOStorInvDtl.class)); @@ -584,7 +589,8 @@ public class OutBillServiceImpl extends ServiceImpl i mater.setMaterial_id(material_id); List list = new ArrayList<>(); list.add(mater); - Structattr outAllocation = iStructattrService.getByCode(whereJson.getString("turnout_struct_code")); +// Structattr outAllocation = iStructattrService.getByCode(whereJson.getString("turnout_struct_code")); + Structattr outAllocation = iStructattrService.getByCode(tableData.getJSONObject(i).getString("turnout_struct_code")); int seq_no = 1; BigDecimal allocation_canuse_qty=BigDecimal.ZERO; // //分配明细 @@ -594,9 +600,9 @@ public class OutBillServiceImpl extends ServiceImpl i ioStorInvDis.setIostorinvdtl_id(dtl.getIostorinvdtl_id()); ioStorInvDis.setSeq_no((seq_no++)+""); ioStorInvDis.setSect_id(outAllocation.getSect_id()); - ioStorInvDis.setPcsn(tableData.getJSONObject(0).getString("pcsn")); - ioStorInvDis.setMaterial_id(tableData.getJSONObject(0).getString("material_code")); - ioStorInvDis.setMaterial_code(tableData.getJSONObject(0).getString("material_code")); + ioStorInvDis.setPcsn(tableData.getJSONObject(i).getString("pcsn")); + ioStorInvDis.setMaterial_id(tableData.getJSONObject(i).getString("material_code")); + ioStorInvDis.setMaterial_code(tableData.getJSONObject(i).getString("material_code")); ioStorInvDis.setSect_name(outAllocation.getSect_name()); ioStorInvDis.setSect_code(outAllocation.getSect_code()); ioStorInvDis.setStruct_id(outAllocation.getStruct_id()); @@ -604,10 +610,10 @@ public class OutBillServiceImpl extends ServiceImpl i ioStorInvDis.setStruct_code(outAllocation.getStruct_code()); ioStorInvDis.setStoragevehicle_code(outAllocation.getStoragevehicle_code()); ioStorInvDis.setIs_issued(BaseDataEnum.IS_YES_NOT.code("否")); - ioStorInvDis.setQty_unit_id(tableData.getJSONObject(0).getString("qty_unit_id")); - ioStorInvDis.setQty_unit_name(tableData.getJSONObject(0).getString("qty_unit_name")); + ioStorInvDis.setQty_unit_id(tableData.getJSONObject(i).getString("qty_unit_id")); + ioStorInvDis.setQty_unit_name(tableData.getJSONObject(i).getString("qty_unit_name")); ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("未生成")); - String Plan_qty=tableData.getJSONObject(0).getString("Plan_qty"); + String Plan_qty=tableData.getJSONObject(i).getString("plan_qty"); BigDecimal bigDecimal = new BigDecimal(Plan_qty); ioStorInvDis.setPlan_qty(bigDecimal); //锁定货位 @@ -621,21 +627,21 @@ public class OutBillServiceImpl extends ServiceImpl i iStructattrService.updateStatusByCode("0",lock_map); //更新组盘表冻结数量状态 iMdPbGroupPlateService.update(new LambdaUpdateWrapper() - .set(GroupPlate::getFrozen_qty, tableData.getJSONObject(0).getString("qty")) + .set(GroupPlate::getFrozen_qty, tableData.getJSONObject(i).getString("qty")) .set(GroupPlate::getUpdate_time, now) .eq(GroupPlate::getStoragevehicle_code, outAllocation.getStoragevehicle_code()) - .eq(GroupPlate::getPcsn, tableData.getJSONObject(0).getString("pcsn")) + .eq(GroupPlate::getPcsn, tableData.getJSONObject(i).getString("pcsn")) .eq(GroupPlate::getMaterial_id, whereJson.getString("material_code")) .eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))); //生成分配明细 ioStorInvDisMapper.insert(ioStorInvDis); // allocation_canuse_qty = allocation_canuse_qty.add(outAllocation.getFrozen_qty()); allocation_canuse_qty=bigDecimal; - //分配完成 结束分配 - unassign_qty=unassign_qty.subtract(allocation_canuse_qty); - if (unassign_qty.doubleValue() <= 0){ - break; - } +// //分配完成 结束分配 +// unassign_qty=unassign_qty.subtract(allocation_canuse_qty); +// if (unassign_qty.doubleValue() <= 0){ +// break; +// } //更新详情 @@ -1133,7 +1139,7 @@ public class OutBillServiceImpl extends ServiceImpl i @Override @Transactional - public String allSetPoint(JSONObject whereJson) { + public void allSetPoint(JSONObject whereJson) { //出库点 if (StrUtil.isBlank(whereJson.getString("region_code"))){ throw new BadRequestException("未选择出库区"); @@ -1141,13 +1147,17 @@ public class OutBillServiceImpl extends ServiceImpl i List regionCode = schBasePointMapper.selectList(new LambdaQueryWrapper() .eq(SchBasePoint::getRegion_code, whereJson.getString("region_code")) .eq(SchBasePoint::getPoint_status,PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getIs_used,true) + .eq(SchBasePoint::getLock_up,"0") ); if (CollectionUtils.isEmpty(regionCode)){ throw new BadRequestException("当前库区"+regionCode+"无可用点位"); } - String pointCode=regionCode.get(0).getPoint_code(); - - +// String pointCode=regionCode.get(0).getPoint_code(); +// SchBasePoint schBasePoint=new SchBasePoint(); +// schBasePoint=iSchBasePointService.getByCode(pointCode); +// schBasePoint.setLock_up("1"); +// iSchBasePointService.update(schBasePoint); String iostorinv_id = whereJson.getString("iostorinv_id"); //查询主表信息 IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinv_id); @@ -1167,13 +1177,28 @@ public class OutBillServiceImpl extends ServiceImpl i for (String storageVehicleCode : groupDis.keySet()) { List disList = groupDis.get(storageVehicleCode); IOStorInvDis item = disList.get(0); + String struct_code= item.getStruct_code(); + Structattr structattr=new Structattr(); + String car_type=null; + String car_width=null; + structattr=iStructattrService.getByCode(struct_code); + if(structattr.getLayer_num().equals(4)){ + car_type="2"; + String storagevehicle_stype=(String) whereJson.get("storagevehicle_type"); + MdPbStoragevehicletype mdPbStoragevehicletype=iMdPbStoragevehicletypeService.getByCode(storagevehicle_stype); + car_width=mdPbStoragevehicletype.getCar_width(); + }else{ + car_type="1"; + } //创建任务 JSONObject task_form = new JSONObject(); task_form.put("task_type", "STOutTask"); task_form.put("TaskCode",CodeUtil.getNewCode("TASK_CODE")); - task_form.put("PickingLocation", item.getStruct_code()); - task_form.put("PlacedLocation", pointCode); + task_form.put("PickingLocation", struct_code); + task_form.put("PlacedLocation", IOSConstant.CKFPW_POINT_CODE); task_form.put("vehicle_code", item.getStoragevehicle_code()); + task_form.put("car_type",car_type); + task_form.put("car_width",car_width); StOutTask stOutTask = SpringContextHolder.getBean("STOutTask"); String task_id = stOutTask.create(task_form); for (IOStorInvDis itemDis : disList) { @@ -1183,11 +1208,10 @@ public class OutBillServiceImpl extends ServiceImpl i dis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("生成")); dis.setTask_id(task_id); dis.setIs_issued(BaseDataEnum.IS_YES_NOT.code("是")); - dis.setPoint_code(pointCode); +// dis.setPoint_code(pointCode); ioStorInvDisMapper.updateById(dis); } } - return pointCode; } @Override @@ -1197,7 +1221,7 @@ public class OutBillServiceImpl extends ServiceImpl i String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - String iostorinv_id = whereJson.getString("iostorinv_id"); + String iostorinv_id = whereJson.getString("iostorinv_ id"); //查询主表信息 IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinv_id); @@ -1342,6 +1366,8 @@ public class OutBillServiceImpl extends ServiceImpl i IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper().eq(IOStorInv::getIostorinv_id,iostorinv_id)); //获取单据编号 String bill_code=ioStorInv.getBill_code(); + // + String source_name=ioStorInv.getSource_name(); //解锁库位 JSONObject finish_map = new JSONObject(); finish_map.put("struct_code", item.getStruct_code()); @@ -1356,6 +1382,7 @@ public class OutBillServiceImpl extends ServiceImpl i point_code2=iSchBasePointService.getByCode(task.getPoint_code2()); point_code2.setVehicle_code(task.getVehicle_code()); point_code2.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); + point_code2.setLock_up(false); iSchBasePointService.update(point_code2); //库存变动:根据冻结数更新物料库存 StructattrChangeDto changeDto = StructattrChangeDto.builder() @@ -1398,13 +1425,15 @@ public class OutBillServiceImpl extends ServiceImpl i //回传给wms TOWMSMSG towmsmsg=new TOWMSMSG(); towmsmsg.setType("1"); - towmsmsg.setBill_code(bill_code); - towmsmsg.setStatus("Finish"); + 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::getStoragevehicle_code,task.getVehicle_code())); + 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()); @@ -1415,6 +1444,43 @@ public class OutBillServiceImpl extends ServiceImpl i iWmsToWmsService.FinishOutTask(towmsmsg); } + @Override + @Transactional(rollbackFor = Exception.class) + public void taskCancel(SchBaseTask task) { + //解锁库位 + JSONObject finish_map = new JSONObject(); + finish_map.put("struct_code", task.getPoint_code1()); + finish_map.put("storagevehicle_code",null); + finish_map.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")); + finish_map.put("inv_type", null); + finish_map.put("inv_id", null); + finish_map.put("inv_code", null); + iStructattrService.updateStatusByCode("2", finish_map); + List disList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class) + .eq(IOStorInvDis::getTask_id, task.getTask_id()) + ); + // 完成当前任务对应的所有分配明细 + for (IOStorInvDis ioStorInvDis : disList) { + ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class) + .set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) + .eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id())); + } + IOStorInvDis item = disList.get(0); + //获取出入库单标识 + 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.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<>(); + tableData.add(jo); + towmsmsg.setTableData(tableData); + iWmsToWmsService.FinishOutTask(towmsmsg); + } @Override public IOStorInv getByCode(String bill_code){ IOStorInv one = this.getOne( diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/controller/WmsToIWmscontroller.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/controller/WmsToIWmscontroller.java index 6974c74..b534adf 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/controller/WmsToIWmscontroller.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/controller/WmsToIWmscontroller.java @@ -1,19 +1,30 @@ package org.nl.wms.wbwms.controller; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; +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.wbwms.service.WmsToIWmsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; + @RestController @RequiredArgsConstructor @RequestMapping("/api/ext/wms") @@ -21,12 +32,20 @@ import org.springframework.web.bind.annotation.RestController; public class WmsToIWmscontroller { @Autowired WmsToIWmsService wmsToIWmsService; + @Autowired + IStructattrService iStructattrService; @PostMapping("/release") @Log("WMS释放出库终点位置") @SaIgnore public ResponseEntity release(@RequestBody JSONObject param) { return new ResponseEntity<>(wmsToIWmsService.release(param), HttpStatus.OK); } + @PostMapping("/groupCheck") + @Log("WMS待检区任务推送") + @SaIgnore + public ResponseEntity groupCheck(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmsToIWmsService.groupCheck(param), HttpStatus.OK); + } @PostMapping("/group") @Log("WMS入库任务推送") @SaIgnore @@ -49,6 +68,61 @@ public class WmsToIWmscontroller { @Log("WMS盘点任务推送") @SaIgnore public ResponseEntity checkBillTask(@RequestBody JSONObject param) { - return new ResponseEntity<>(wmsToIWmsService.checkBillTask(param), HttpStatus.OK); + return new ResponseEntity<>(wmsToIWmsService. checkBillTask(param), HttpStatus.OK); + } + @PostMapping("/batchSaveAttr") + @SaIgnore + public ResponseEntity batchSaveAttr(@Validated @RequestBody JSONObject config) { + int 排 = config.getInteger("x"); + int 列 = config.getInteger("y"); + int 层 = config.getInteger("z"); + String sect_code = config.getString("sect_code"); + String stor_code = config.getString("stor_code"); + String pre = config.getString("pre"); + String now = DateUtil.now(); + ArrayList list = new ArrayList<>(); + for (int x = 1; x <= 排; x++) { + for (int y = 1; y <= 列; y++) { + for (int z = 1; z <= 层; z++) { + Structattr attr = new Structattr(); + attr.setStruct_id(IdUtil.getStringId()); + attr.setSect_code(sect_code); + attr.setStor_code(stor_code); + String nx = "" + x; + String ny = "" + y; + String nz = "" + z; + if(x<10){ + nx="0"+nx; + } + if(y<10){ + ny="0"+ny; + } + attr.setStruct_code(pre+nx+ny+"0"+nz); + attr.setStruct_name(pre+nx+ny+"0"+nz); + attr.setCreate_id("1"); + attr.setRow_num(x); + attr.setCol_num(y); + attr.setBlock_num(5); + attr.setLayer_num(z); + attr.setCreate_time(now); + attr.setCreate_name("Admin"); + attr.setStor_id("1985609997907791872"); + attr.setSect_id("1985610807760785408"); + attr.setSect_name("1楼半成品"); + attr.setStor_name("1楼半成品"); + attr.setIs_used(true); + attr.setIs_tempstruct("0"); + attr.setLock_type("0"); + list.add(attr); + } + } + } + Lists.partition(list,1000).stream().map((Function, CompletableFuture>) o->CompletableFuture.runAsync(() -> { + for (Structattr stIvtStructattr : o) { + iStructattrService.save(stIvtStructattr); + } + })).parallel().forEach(CompletableFuture::join); + + return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/WmsToIWmsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/WmsToIWmsService.java index 974d53c..1c32681 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/WmsToIWmsService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/wbwms/service/WmsToIWmsService.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Service; public interface WmsToIWmsService { WmstoIWmsResponse release(JSONObject param); WmstoIWmsResponse groupTask (JSONObject param); + WmstoIWmsResponse groupCheck(JSONObject param); WmstoIWmsResponse outBillTask (JSONObject param); WmstoIWmsResponse moveTask(JSONObject param); WmstoIWmsResponse checkBillTask(JSONObject param); 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 173953c..7109c7c 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,9 +1,11 @@ package org.nl.wms.wbwms.service.impl; import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; @@ -75,11 +77,13 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService { public JSONObject FinishOutTask(TOWMSMSG towmsmsg) { JSONObject result = new JSONObject(); // 系统参数类 + JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(towmsmsg), JSONObject.class); + log.info("FinishOutTask请求参数是:-------------------" + jsonObject.toString()); String wmsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.WMS_URL).getValue(); wmsUrl = wmsUrl + WMSConstant.INOUT_WMS_API; try { String resultMsg = HttpRequest.post(wmsUrl) - .body(String.valueOf(towmsmsg)) + .body(String.valueOf(jsonObject)) .execute().body(); result = JSONObject.parseObject(resultMsg); log.info("FinishOutTask接口输出参数为:-------------------" + result.toString()); @@ -98,6 +102,8 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService { @Override public JSONObject FinishMoveTask(MoveToWmsMsg moveToWmsMsg) { JSONObject result = new JSONObject(); + + log.info("FinishMoveTask请求参数是:-------------------" + moveToWmsMsg.toString()); // 系统参数类 String wmsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.WMS_URL).getValue(); wmsUrl = wmsUrl + WMSConstant.MOVE_WMS_API; @@ -116,6 +122,7 @@ public class IWmsToWmsServiceImpl implements IWmsToWmsService { @Override public JSONObject FinishCheckTask(CheckToWmsMsg checkToWmsMsg) { JSONObject result = new JSONObject(); + log.info("FinishMoveTask请求参数是:-------------------" + checkToWmsMsg.toString()); // 系统参数类 String wmsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.WMS_URL).getValue(); wmsUrl = wmsUrl + WMSConstant.CHECK_WMS_API; 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 76e50c5..876ff8b 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 @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -19,10 +20,14 @@ import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMapper; import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper; import org.nl.wms.sch_manage.enums.PointStatusEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; +import org.nl.wms.sch_manage.service.util.tasks.CheckInTask; +import org.nl.wms.sch_manage.service.util.tasks.CheckOutTask; import org.nl.wms.sch_manage.service.util.tasks.MoveTask; import org.nl.wms.sch_manage.service.util.tasks.StInTask; import org.nl.wms.warehouse_manage.enums.IOSEnum; @@ -34,6 +39,7 @@ import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; import org.nl.wms.warehouse_manage.service.IStIvtCheckmstService; import org.nl.wms.warehouse_manage.service.IStIvtMoveinvService; import org.nl.wms.warehouse_manage.service.dao.GroupPlate; +import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.warehouse_manage.service.dto.CheckInsertDto; import org.nl.wms.wbwms.service.WmsToIWmsService; import org.nl.wms.wbwms.service.dto.WmstoIWmsResponse; @@ -61,6 +67,10 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { private GroupController groupController; @Autowired private IOStorInvDisMapper ioStorInvDisMapper; + @Resource + private SchBasePointMapper schBasePointMapper; + @Resource + private StructattrMapper structattrMapper; @Autowired IInBillService iInBillService; @Autowired @@ -69,6 +79,10 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { private IStIvtCheckmstService iStIvtCheckmstService; @Autowired private IMdPbGroupplateService iMdPbGroupplateService; + @Autowired + private MdPbStoragevehicleinfoMapper mdPbStoragevehicleinfoMapper; + @Autowired + private MdPbGroupplateMapper mdPbGroupplateMapper; /** * 移库任务配置类 */ @@ -78,6 +92,7 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { IStIvtMoveinvService iStIvtMoveinvService; @Override public WmstoIWmsResponse release(JSONObject parm) { + log.info("WMS释放点位的请求参数为:-------------------" + parm.toString()); //IWMS出库终点位置 String turnout_destination_code=parm.getString("turnout_destination_code"); SchBasePoint schBasePoint=new SchBasePoint(); @@ -87,14 +102,22 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { schBasePoint=iSchBasePointService.getByCode(turnout_destination_code); //载具编码 String storagevehicle_code=schBasePoint.getVehicle_code(); - iSchBasePointService.unLockPoint(turnout_destination_code); - //将组盘状态改为出库 - groupPlate=iMdPbGroupplateService.getByCode(storagevehicle_code); - groupPlate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("出库")); - iMdPbGroupplateService.update(groupPlate); +// iSchBasePointService.unLockPoint(turnout_destination_code); + if(StringUtils.isNotEmpty(storagevehicle_code)) { + //将组盘状态改为出库 + groupPlate = iMdPbGroupplateService.getByCode(storagevehicle_code); + mdPbGroupplateMapper.deleteById(groupPlate); + } schBasePoint.setVehicle_code(""); schBasePoint.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + schBasePoint.setLock_up(false); iSchBasePointService.update(schBasePoint); + MdPbStoragevehicleinfo mdPbStoragevehicleinfo=new MdPbStoragevehicleinfo(); + if(StringUtils.isNotEmpty(storagevehicle_code)) { + mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getByCode(storagevehicle_code); + //将载具信息清除 + mdPbStoragevehicleinfoMapper.deleteById(mdPbStoragevehicleinfo); + } }catch (Exception e){ result.setCode("404"); result.setMsg("未找到出库货位"); @@ -102,14 +125,19 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { } result.setMsg("出库位释放成功"); result.setCode(String.valueOf(HttpStatus.OK.value())); + log.info("WMS释放点位的返回参数为:-------------------" + result.toString()); return result; } @Override @Transactional public WmstoIWmsResponse groupTask(JSONObject parm) { + log.info("WMS入库请求参数参数为:-------------------" + parm.toString()); if(StringUtils.isBlank(parm.getString("point_code"))){ throw new BadRequestException("未传入地面入库点"); } + if(!ObjectUtil.isNotEmpty(iSchBasePointService.getByCode(parm.getString("point_code")))){ + throw new BadRequestException("传入的地面入库点不存在"); + } if(StringUtils.isBlank(parm.getString("storagevehicle_code"))){ throw new BadRequestException("未传入载具码"); } @@ -136,11 +164,79 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { data.put("urnin_struct_code",point_code1); data.put("bill_code",parm.getString("bill_code")); result.setData(data); + log.info("WMS入库返回参数为:-------------------" + result.toString()); return result; } + @Override + @Transactional + public WmstoIWmsResponse groupCheck(JSONObject parm) { + log.info("WMS待检区请求参数参数为:-------------------" + parm.toString()); + if(StringUtils.isBlank(parm.getString("point_code"))){ + throw new BadRequestException("未传入地面入库点"); + } + if(StringUtils.isBlank(parm.getString("task_type"))){ + throw new BadRequestException("未传入任务类型"); + } + if(StringUtils.isBlank(parm.getString("storagevehicle_type"))){ + throw new BadRequestException("未传入托盘类型"); + } + String car_type=null; + String car_width="685"; + if(parm.getString("task_type").equals("1")){ + List regionCode = structattrMapper.selectList(new LambdaQueryWrapper() + .eq(Structattr::getSect_code, "1BCDJQ") + .eq(Structattr::getIs_used,true) + .eq(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定")) + .isNull(Structattr::getStoragevehicle_code)); + String pointCode=regionCode.get(0).getStruct_code(); + if(StringUtils.isBlank(pointCode)){ + throw new BadRequestException("待检区域无库存"); + } + if(parm.getString("storagevehicle_type").equals("BCPHDL")){ + car_type="1"; + }else{ + car_type="2"; + } + //创建任务 + JSONObject task_form = new JSONObject(); + task_form.put("task_type", "CheckInTask"); + task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + task_form.put("PickingLocation", parm.getString("point_code")); + task_form.put("PlacedLocation", pointCode); + task_form.put("vehicle_code", parm.getString("storagevehicle_type")); + task_form.put("car_type",car_type); + task_form.put("car_width",car_width); + CheckInTask checkInTask = SpringContextHolder.getBean("CheckInTask"); + String task_id = checkInTask.create(task_form); + } else if(parm.getString("task_type").equals("2")){ + if(parm.getString("storagevehicle_type").equals("BCPHDL")){ + car_type="1"; + }else{ + car_type="2"; + } + //创建任务 + JSONObject task_form = new JSONObject(); + task_form.put("task_type", "STInTask"); + task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + task_form.put("PickingLocation",parm.getString("point_code")); + task_form.put("PlacedLocation", "CKFPW"); + task_form.put("vehicle_code",parm.getString("storagevehicle_type")); + task_form.put("car_type",car_type); + task_form.put("car_width",car_width); + CheckOutTask checkOutTask = SpringContextHolder.getBean("CheckOutTask"); + String task_id = checkOutTask.create(task_form); + } + WmstoIWmsResponse result = new WmstoIWmsResponse(); + result.setCode(String.valueOf(HttpStatus.OK.value())); + result.setMsg("待检区任务生成成功"); + result.setTotalElements(0); + return result; + } + @Override @Transactional public WmstoIWmsResponse outBillTask(JSONObject parm) { + log.info("WMS出库请求参数参数为:-------------------" + parm.toString()); WmstoIWmsResponse result = new WmstoIWmsResponse(); JSONArray tableData = parm.getJSONArray("tableData"); String storage_code=tableData.getJSONObject(0).getString("storage_code"); @@ -157,7 +253,7 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { } parm.put("sect_id",structattr.getSect_id()); parm.put("stor_id",structattr.getStor_id()); - parm.put("turnout_struct_code",turnout_struct_code); +// parm.put("turnout_struct_code",turnout_struct_code); JSONObject j1=new JSONObject(); j1.put("tableData",tableData); j1.put("bill_type",parm.getString("bill_type")); @@ -165,26 +261,28 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { //新增出库单 String iostorinv_id=iOutBillService.insertDtl1(j1); parm.put("iostorinv_id",iostorinv_id); - //分配库位 + // String stuct_code=iOutBillService.allDiv1(parm); //生成出库任务 parm.put("point_code",stuct_code); parm.put("region_code","CKQ"); - String pointCode=iOutBillService.allSetPoint(parm); + iOutBillService.allSetPoint(parm); JSONObject data=new JSONObject(); - data.put("bill_code",iostorinv_id); - data.put("urnin_struct_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); result.setData(data); + log.info("WMS出库返回参数参数为:-------------------" + result.toString()); return result; } @Override @Transactional public WmstoIWmsResponse moveTask(JSONObject parm) { + log.info("WMS移库请求参数参数为:-------------------" + parm.toString()); WmstoIWmsResponse result = new WmstoIWmsResponse(); JSONArray tableData = parm.getJSONArray("tableData"); //移出位置 @@ -209,12 +307,14 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { JSONObject data=new JSONObject(); data.put("bill_code",bill_code); result.setData(data); + log.info("WMS移库返回参数参数为:-------------------" + result.toString()); return result; } @Override @Transactional public WmstoIWmsResponse checkBillTask(JSONObject parm) { + log.info("WMS盘点请求参数参数为:-------------------" + parm.toString()); WmstoIWmsResponse result = new WmstoIWmsResponse(); CheckInsertDto checkInsertDto=new CheckInsertDto(); String check_id=IdUtil.getStringId(); @@ -247,8 +347,8 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService { result.setCode(String.valueOf(HttpStatus.OK.value())); result.setMsg("盘点任务生成成功"); JSONObject data=new JSONObject(); - data.put("bill_code",parm.getString("check_code")); result.setData(data); + log.info("WMS盘点返回参数参数为:-------------------" + result.toString()); return result; } } diff --git a/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index 3d79928..f51170f 100644 --- a/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -1,30 +1,44 @@ + nlAdmin + value="%cyan(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %blue(%msg%n)"/> - + + + + - + true ${log.pattern} + + + ${LOG_HOME}/%d{yyyy-MM-dd}.%i.log - 10 + 30 - 100MB + 120MB 20GB @@ -32,78 +46,116 @@ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - - - - - ${LOG_HOME}/ErpLog/%d{yyyy-MM-dd}.%i.log - - 7 - - 100MB - - 20GB - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n - - - - - 2 - 500 - - - - 2 - 500 - + - - - system - lms - - - logLevel - %level - - - requestMethod - %X{requestMethod} - - - requestTime - %d{yyyy-MM-dd HH:mm:ss.SSS} - - - requestIp - %X{requestIp} - - - thread - %thread - - - logger - %logger - - + + DEBUG + ACCEPT + DENY + - + + 512 + + + 0 + 500 + + - + - s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -146,8 +198,27 @@ + + - - - + + + + + + + + + + + + + + + + + + + + diff --git a/nladmin-ui/public/config.js b/nladmin-ui/public/config.js index ce71425..db95c26 100644 --- a/nladmin-ui/public/config.js +++ b/nladmin-ui/public/config.js @@ -3,7 +3,7 @@ window.g = { VUE_APP_BASE_API: 'http://127.0.0.1:8011' }, prod: { - VUE_APP_BASE_API: 'http://127.0.0.1:8011' + VUE_APP_BASE_API: 'http://10.62.3.156:8011' } } diff --git a/nladmin-ui/src/views/wms/basedata/group/index.vue b/nladmin-ui/src/views/wms/basedata/group/index.vue index a03fa64..9382640 100644 --- a/nladmin-ui/src/views/wms/basedata/group/index.vue +++ b/nladmin-ui/src/views/wms/basedata/group/index.vue @@ -159,7 +159,7 @@ @@ -225,6 +225,7 @@ export default { url: 'api/group', optShow: { add: true, + del: false, reset: true }, idField: 'group_id', diff --git a/nladmin-ui/src/views/wms/sch/point/index.vue b/nladmin-ui/src/views/wms/sch/point/index.vue index 63e1494..0e9a4ca 100644 --- a/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/nladmin-ui/src/views/wms/sch/point/index.vue @@ -87,7 +87,7 @@ 启用 + + + + + + + + + + + {{ item.label }} @@ -402,6 +413,7 @@ const defaultForm = { is_auto: 'true', remark: null, is_used: 'true', + lock_up: 'false', can_vehicle_types: null } export default { @@ -425,7 +437,7 @@ export default { }, query: { is_used: 'true', - lock_type: false + lock_up: 'false' } }) }, @@ -454,7 +466,8 @@ export default { pointStatusList: [], pointStatusDialogList: [], pointTypesDialogList: [], - pointDialog: false + pointDialog: false, + downloadLoading: false } }, created() { @@ -544,7 +557,7 @@ export default { changeLock(data) { const param = {} param.data = data - param.lock_type = this.crud.query.lock_type + param.lock_up = !this.crud.query.lock_up crudSchBasePoint.changeLock(param).then(res => { this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.toQuery()