zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
@@ -121,7 +121,7 @@ * @return */ @GetMapping("/container/converyor/{code}") public R containerConveyor(@PathVariable String code) { public R containerConveyor(@PathVariable String code) throws Exception { if (StringUtil.isNullOrEmpty(code)) { return R.error("容器编码不能为空!!!"); } @@ -150,9 +150,7 @@ throw new CoolException("当前任务订单号不能为空!!"); } wcsApiService.slapLightLogic(request); return R.ok(); return wcsApiService.slapLightLogic(request); } zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
@@ -4,10 +4,6 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.cfg.CoercionAction; import com.fasterxml.jackson.databind.cfg.CoercionInputShape; import com.zy.asrs.framework.common.R; import com.zy.asrs.framework.exception.CoolException; import com.zy.asrs.wms.apis.wcs.entity.domain.SystemProperties; @@ -23,8 +19,6 @@ import com.zy.asrs.wms.asrs.service.*; import io.jsonwebtoken.lang.Collections; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -37,7 +31,6 @@ import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -281,14 +274,12 @@ * @return */ @Override public synchronized R containerConveryor(String code) { List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, code)); if (tasks.isEmpty()) { return R.error("容器码任务不存在!!"); } else if (tasks.size() > 1) { return R.error("容器码任务错误!!"); @Transactional(rollbackFor = Exception.class) public synchronized R containerConveryor(String code) throws Exception{ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, code)); if (Objects.isNull(task)) { throw new CoolException("容器码任务不存在!!"); } tasks.forEach(task -> { try { ConveyorStarParam conveyorStarParam = new ConveyorStarParam(); conveyorStarParam.setSlotCode(task.getOriginSite()) @@ -307,11 +298,6 @@ HttpEntity httpEntity = new HttpEntity<>(conveyorStarParam, headers); log.info("请求地址:{},请求参数:{}", HttpEssUtils.CONVEYOR_START, JSONObject.toJSONString(conveyorStarParam)); ResponseEntity<String> exchange = restTemplate.exchange("http://192.168.2.200:9046/conveyor/moveContainer", HttpMethod.POST, httpEntity, String.class); // HttpHeaders headers = new HttpHeaders(); // headers.add("Content-Type", "application/json"); // HttpEntity httpEntity = new HttpEntity<>(params, headers); // // 请求 // ResponseEntity<String> exchange = restTemplate.exchange(HttpEssUtils.CONVEYOR_START, HttpMethod.POST, httpEntity, String.class); log.info("下发流动通知 返回结果:{}", exchange); if (exchange.getBody() == null) { throw new CoolException("下发流动通知失败!!"); @@ -322,7 +308,6 @@ if (task.getTaskType() == 103 || task.getTaskType() == 107) { //更新库存信息,修改任务状态为4 (RCS容器流动任务已下发) workService.pickTask(task.getId()); // taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getId, task.getId()).set(Task::getTaskSts, TaskStsType.WCS_CONVEYOR_START)) } else { taskService.update(new LambdaUpdateWrapper<Task>() .eq(Task::getId, task.getId()) @@ -334,9 +319,8 @@ } } } catch (Exception ex) { log.error(ex.getMessage()); log.error("UNK", ex); } }); return R.ok(); } @@ -355,10 +339,11 @@ * 拍灯拣料逻辑,详细说明见接口调用说明 * * @param request * @return */ @Override @Transactional(rollbackFor = Exception.class) public void slapLightLogic(Map<String, Object> request) { public R slapLightLogic(Map<String, Object> request) { String taskNo = request.get("taskNo").toString(); String orderNo = request.get("orderNo").toString(); @@ -370,19 +355,17 @@ //* 1. 判断当前容器是否还有物料未拣,未拣完闪灯,拣完通知容器流动,并灭灯 SlapLightControlParam slapParam = new SlapLightControlParam(); MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); //默认流动 boolean converyor = false; //判断当前任务是否还有物料未拣 if (!checked(orderNo, taskNo)) { log.info("未完成闪灯请求地址:{},请求参数:{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam)); //调用三方接口,闪灯不做操作 // 设置请求参数 params.add("params", JSONObject.toJSONString(slapParam)); log.info("未完成闪灯请求地址:{},请求参数:{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam)); throw new CoolException("当前任务未完成,不能执行此操作!!"); // params.add("params", JSONObject.toJSONString(slapParam)); } else { //调用三方接口,灭灯通知容器流动, 传灭灯参数 //todo 判断当前订单是否完成,完成灭灯,未完成保持拣货状态亮灯 Order one = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo)); if (Objects.isNull(one)) { throw new CoolException("当前订单明细不存在!!"); } @@ -410,36 +393,22 @@ } } } converyor = true; params.add("params", JSONObject.toJSONString(slapParam)); log.info("完成灭灯请求地址:{},请求参数:{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam)); } if (converyor) { Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, request.get("taskNo"))); if (Objects.isNull(task)) { throw new CoolException("任务不存在!!"); } try { containerConveryor(task.getBarcode()); } catch (Exception e) { log.error("执行异常:UNK", e); throw new CoolException(e.getMessage()); } // HttpHeaders headers = new HttpHeaders(); // headers.add("Content-Type", "application/json"); // HttpEntity httpEntity = new HttpEntity<>(params, headers); // // 请求 // ResponseEntity<CommonReponse> exchange = restTemplate.exchange(SystemProperties.CONVEYOR_START, HttpMethod.POST, httpEntity, CommonReponse.class); // log.info("下发流动通知 返回结果:{}", exchange); // if (exchange.getBody() == null) { // throw new CoolException("下发流动通知失败!!"); // } else { // CommonReponse response = exchange.getBody(); // if (response.getCode() == 0) { // if (!converyor) { // //* 2. 容器流动判断,如果料箱没有物料 code传200, 有物料传100 执行回库任务,修改任务状态为 调用containerConveryor(taskNo)方法 // containerConveryor(request.get("taskNo").toString()); // } // } // } return R.ok(); } /** zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java
@@ -13,9 +13,9 @@ void receiveTaskStatus(TasksStatusCallbackParam callbackParam, String stockType, Long hostId); R containerConveryor(String code); R containerConveryor(String code) throws Exception; void slapLightLogic(Map<String, Object> request); R slapLightLogic(Map<String, Object> request); R rfidCallback(RfidSingalRequest request); zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -531,39 +531,6 @@ } }); Set<Long> waveIds = orderList.stream().map(Order::getWaveId).collect(Collectors.toSet()); if (waveIds.isEmpty()) { throw new CoolException("波次信息为空!!"); } List<Wave> waves = waveService.list(new LambdaQueryWrapper<Wave>().in(Wave::getId, waveIds)); for (Wave wave : waves) { WaveLog waveLog = new WaveLog(); waveLog.sync(wave); waveLog.setId(null); if (!waveLogService.save(waveLog)) { throw new CoolException("波次转历史失败"); } List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId())); for (WaveDetl waveDetl : waveDetls) { WaveDetlLog waveDetlLog = new WaveDetlLog(); waveDetlLog.sync(waveDetl); waveDetlLog.setId(null); waveDetlLog.setWaveId(waveLog.getId()); if (!waveDetlLogService.save(waveDetlLog)) { throw new CoolException("波次明细转历史失败"); } if (!waveDetlService.removeById(waveDetl.getId())) { throw new CoolException("波次明细删除失败"); } } if (!waveService.removeById(wave.getId())) { throw new CoolException("波次删除失败"); } } Set<Long> ordersSet = orderList.stream().map(Order::getId).collect(Collectors.toSet()); List<PlatformDetl> platDetls = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>().in(PlatformDetl::getOrderId, ordersSet)); if (platDetls.isEmpty()) { zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java
@@ -200,7 +200,10 @@ platformDetl.setPlatformId(pl.getId()); platformDetl.setPlatformNo(pl.getPlatformNo()); List<PlatformDetl> list = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>().eq(PlatformDetl::getTaskDetlId, waveSeed.getTaskDetlId()).eq(PlatformDetl::getOrderDetlId, waveSeed.getOrderDetlId()).eq(PlatformDetl::getMatnr, waveSeed.getMatnr())); List<PlatformDetl> list = platformDetlService.list(new LambdaQueryWrapper<PlatformDetl>() .eq(PlatformDetl::getTaskDetlId, waveSeed.getTaskDetlId()) .eq(PlatformDetl::getOrderDetlId, waveSeed.getOrderDetlId()) .eq(PlatformDetl::getMatnr, waveSeed.getMatnr())); if (!list.isEmpty()) { throw new CoolException("订单已入集货区!!"); } zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -422,6 +422,11 @@ } } } } /** zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
@@ -10,6 +10,10 @@ import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType; import com.zy.asrs.wms.asrs.entity.enums.TaskStsType; import com.zy.asrs.wms.asrs.service.*; import com.zy.asrs.wms.asrs.service.impl.WaveDetlLogServiceImpl; import com.zy.asrs.wms.asrs.service.impl.WaveDetlServiceImpl; import com.zy.asrs.wms.asrs.service.impl.WaveLogServiceImpl; import com.zy.asrs.wms.asrs.service.impl.WaveServiceImpl; import com.zy.asrs.wms.system.entity.Dict; import com.zy.asrs.wms.system.service.DictService; import com.zy.asrs.wms.utils.OrderUtils; @@ -42,6 +46,69 @@ private WaveSeedService waveSeedService; @Autowired private DictService dictService; @Autowired private WaveServiceImpl waveService; @Autowired private WaveLogServiceImpl waveLogService; @Autowired private WaveDetlServiceImpl waveDetlService; @Autowired private WaveDetlLogServiceImpl waveDetlLogService; /** * @author Ryan * @date 2025/6/20 * @description: 波次加入历史档 * @version 1.0 */ @Scheduled(cron = "0/30 * * * * ? ") @Transactional(rollbackFor = Exception.class) public void addWaveHistories() { List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, TaskStsType.COMPLETE_OUT.id)); if (tasks.isEmpty()) { return; } for (Task task : tasks) { List<TaskDetl> detls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getTaskId, task.getId())); if (detls.isEmpty()) { continue; } Set<Long> waveIds = detls.stream().map(TaskDetl::getWaveId).collect(Collectors.toSet()); if (waveIds.isEmpty()) { throw new CoolException("波次信息为空!!"); } List<Wave> waves = waveService.list(new LambdaQueryWrapper<Wave>().in(Wave::getId, waveIds)); for (Wave wave : waves) { WaveLog waveLog = new WaveLog(); waveLog.sync(wave); waveLog.setId(null); if (!waveLogService.save(waveLog)) { throw new CoolException("波次转历史失败"); } List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId())); for (WaveDetl waveDetl : waveDetls) { WaveDetlLog waveDetlLog = new WaveDetlLog(); waveDetlLog.sync(waveDetl); waveDetlLog.setId(null); waveDetlLog.setWaveId(waveLog.getId()); if (!waveDetlLogService.save(waveDetlLog)) { throw new CoolException("波次明细转历史失败"); } if (!waveDetlService.removeById(waveDetl.getId())) { throw new CoolException("波次明细删除失败"); } } if (!waveService.removeById(wave.getId())) { throw new CoolException("波次删除失败"); } } } } /** * modifty: