diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToLmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToLmsController.java deleted file mode 100644 index 1374af4..0000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToLmsController.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.nl.wms.ext.acs.rest; - -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.annotation.Log; -import org.nl.wms.ext.acs.service.AcsToLmsService; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -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; - - -@RestController -@RequiredArgsConstructor -@Api(tags = "acs接收wms") -@RequestMapping("/api/acsToLms/task") -@Slf4j -public class AcsToLmsController { - private final AcsToLmsService acsToLmsService; - - @PostMapping("/taskResult") - @Log("任务反馈") - @ApiOperation("任务反馈") - public ResponseEntity taskResult(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(acsToLmsService.taskResult(whereJson), HttpStatus.OK); - } - - @PostMapping("/apply") - @Log("申请任务") - @ApiOperation("申请任务") - public ResponseEntity apply(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(acsToLmsService.apply(whereJson), HttpStatus.OK); - } -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 37e474e..b789bf8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -2,6 +2,7 @@ package org.nl.wms.ext.acs.rest; +import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -23,19 +24,12 @@ import java.util.Map; **/ @RestController @RequiredArgsConstructor -@Api(tags = "acs接收wms") -@RequestMapping("/api/acsToWms/task") +@Api(tags = "acs接收lms") +@RequestMapping("/api/wms/task") @Slf4j public class AcsToWmsController { private final AcsToWmsService acsToWmsService; - @PostMapping("/apply") - @Log("ACS给WMS发送任务") - @ApiOperation("ACS给WMS发送任务") - public ResponseEntity receiveTaskFromAcs(@RequestBody Map whereJson) { - return new ResponseEntity<>(acsToWmsService.receiveTaskFromAcs(whereJson), HttpStatus.OK); - } - @PostMapping("/status") @Log("ACS给WMS反馈任务状态") @ApiOperation("ACS给WMS反馈任务状态") @@ -49,4 +43,11 @@ public class AcsToWmsController { public ResponseEntity orderFinish(@RequestBody String string) { return new ResponseEntity<>(acsToWmsService.orderFinish(string), HttpStatus.OK); } + + @PostMapping("/apply") + @Log("申请任务") + @ApiOperation("申请任务") + public ResponseEntity apply(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java index eec803c..14877fc 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java @@ -27,7 +27,7 @@ import java.util.Map; @RestController @RequiredArgsConstructor @Api(tags = "wms发送acs") -@RequestMapping("/api/wmsToAcs/task") +@RequestMapping("/api/wms/task") @Slf4j public class WmsToAcsController { private final WmsToAcsService wmsToAcsService; @@ -72,5 +72,12 @@ public class WmsToAcsController { return new ResponseEntity<>(wmsToAcsService.orderStatusUpdate(arr), HttpStatus.OK); } + @PostMapping("/querydevice") + @Log("WMS向acs发送获取点位状态") + @ApiOperation("WMS向acs发送获取点位状态") + public ResponseEntity getPointStatus(@RequestBody JSONArray whereJson) { + return new ResponseEntity<>(wmsToAcsService.getPointStatus(whereJson), HttpStatus.OK); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToLmsService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToLmsService.java deleted file mode 100644 index 81de6d0..0000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToLmsService.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.nl.wms.ext.acs.service; - -import com.alibaba.fastjson.JSONObject; - -import java.util.Map; - -public interface AcsToLmsService { - - /** - * ACS客户端--->LMS服务端 - * 任务反馈 - * - * @param whereJson 条件 - * @return JSONObject - */ - JSONObject taskResult(JSONObject whereJson); - - /** - * ACS客户端--->LMS服务端 - * 任务申请 - * - * @param whereJson 条件 - * @return JSONObject - */ - JSONObject apply(JSONObject whereJson); -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index f3193a1..a82f446 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -1,18 +1,11 @@ package org.nl.wms.ext.acs.service; +import com.alibaba.fastjson.JSONObject; + import java.util.Map; public interface AcsToWmsService { - /** - * ACS客户端--->WMS服务端 - * ACS向WMS申请任务 - * - * @param jsonObject 条件 - * @return Map - */ - - Map receiveTaskFromAcs(Map jsonObject); /** * ACS客户端--->WMS服务端 @@ -39,4 +32,13 @@ public interface AcsToWmsService { * @return */ Map orderFinish(String string); + + /** + * ACS客户端--->LMS服务端 + * 任务申请 + * + * @param whereJson 条件 + * @return JSONObject + */ + JSONObject apply(JSONObject whereJson); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index 0b34d75..3735345 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -49,4 +49,10 @@ public interface WmsToAcsService { * @return */ Map orderStatusUpdate(JSONArray arr); + + /** + * 获取点位状态 + * @return + */ + JSONObject getPointStatus(JSONArray whereJson); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToLmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToLmsServiceImpl.java deleted file mode 100644 index fc85099..0000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToLmsServiceImpl.java +++ /dev/null @@ -1,341 +0,0 @@ -package org.nl.wms.ext.acs.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.security.SecurityUtil; -import org.nl.exception.BadRequestException; -import org.nl.modules.system.util.CodeUtil; -import org.nl.utils.SecurityUtils; -import org.nl.utils.SpringContextHolder; -import org.nl.wms.ext.acs.service.AcsToLmsService; -import org.nl.wms.pdm.service.DeviceService; -import org.nl.wms.pdm.service.dto.DeviceDto; -import org.nl.wms.sch.service.PointService; -import org.nl.wms.sch.tasks.CallEmpVehicleTask; -import org.nl.wms.sch.tasks.CallMaterialTask; -import org.nl.wms.sch.tasks.SendEmpVehicleTask; -import org.nl.wms.sch.tasks.SendMaterialTask; -import org.nl.wql.WQL; -import org.nl.wql.core.bean.WQLObject; -import org.nl.wql.core.engine.object.WO; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@RequiredArgsConstructor -@Slf4j -public class AcsToLmsServiceImpl implements AcsToLmsService { - - @Override - public JSONObject taskResult(JSONObject whereJson) { - return null; - } - - @Override - @Transactional - public JSONObject apply(JSONObject whereJson) { - String type = whereJson.getString("type"); - String point_code = whereJson.getString("point_code"); - String vehicle_num = whereJson.getString("vehicle_num"); - String vehicle_type = whereJson.getString("vehicle_type"); - String vehicle_code = whereJson.getString("vehicle_code"); - String qty = whereJson.getString("qty"); - - if (ObjectUtil.isEmpty(type)) throw new BadRequestException("类型不能为空"); - if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空"); - - WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord");// 空载具作业记录表 - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表 - WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); // 区域出入库表 - - /* - * 根据type判断是什么业务类型: - * 1.共挤线申请空盘 - * 2.共挤线满托入库 - * 3.油漆线申请空盘 - * 4.油漆线申请物料 - * 5.油漆线空盘入库 - * 6.一楼空盘入库 (有载具号) - */ - JSONObject resuft = new JSONObject(); - try { - if (StrUtil.equals(type, "1")) { - // 1.共挤线申请空盘: 调用空托盘出库处理类创建任务 - if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); - - JSONObject param = new JSONObject(); - param.put("next_point_code", point_code); - param.put("qty", vehicle_num); - // 创建任务 - String task_id = SpringContextHolder.getBean(CallEmpVehicleTask.class).createTask(param); - - // 插入空载具作业记录表 - JSONObject jsonEmpParam = new JSONObject(); - jsonEmpParam.put("vehicle_qty",vehicle_num); - jsonEmpParam.put("task_id",task_id); - jsonEmpParam.put("io_type","1"); - this.createEmp(jsonEmpParam); - //TODO 下发 - - // 成功返回 - resuft.put("status", "200"); - resuft.put("message", ""); - } else if (StrUtil.equals(type, "2")) { - // 2.共挤线满托入库: 调用物料入库处理类创建任务 - if (ObjectUtil.isEmpty(qty)) throw new BadRequestException("物料数量不能为空"); - - JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); - String task_id = SpringContextHolder.getBean(SendMaterialTask.class).createTask(param); - - JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - // 插入区域出入库表 - param.put("next_point_code", jsonTask.getString("next_point_code")); - param.put("qty", qty); - param.put("task_id", task_id); - param.put("io_type", "0"); - JSONObject json = this.inCreateRegion(param); - // 回显任务载具类型 - jsonTask.put("vehicle_type", json.getString("vehicle_type")); - taskTab.update(jsonTask); - //TODO 下发 - - // 返回成功 - resuft.put("status", "200"); - resuft.put("message", ""); - } else if (StrUtil.equals(type, "3")) { - // 3.油漆线申请空盘: 调用空托盘出库处理类创建任务 - if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); - - JSONObject param = new JSONObject(); - param.put("next_point_code", point_code); - param.put("qty", vehicle_num); - // 创建任务 - String task_id = SpringContextHolder.getBean(CallEmpVehicleTask.class).createTask(param); - - // 插入空载具作业记录表 - JSONObject jsonEmpParam = new JSONObject(); - jsonEmpParam.put("vehicle_qty",vehicle_num); - jsonEmpParam.put("task_id",task_id); - jsonEmpParam.put("io_type","1"); - this.createEmp(jsonEmpParam); - //TODO 下发 - - // 成功返回 - resuft.put("status", "200"); - resuft.put("message", ""); - } else if (StrUtil.equals(type, "4")) { - // 4.油漆线申请物料: 调用物料出库库处理类创建任务 - JSONObject param = new JSONObject(); - param.put("next_point_code",point_code); - param.put("io_type","1"); - // 插入区域出库单 - JSONObject json = this.outCreateRegion(param); - - param.put("vehicle_type", json.getString("vehicle_type")); - param.put("material_id", json.getString("material_id")); - param.put("create_mode", json.getString("create_mode")); - param.put("iostorinv_id", json.getString("iostorinv_id")); - // 创建任务 - String task_id = SpringContextHolder.getBean(CallMaterialTask.class).createTask(param); - - JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - // 回显出库单:起始点位、起始区域、任务id - JSONObject jsonRegion = regionTab.query("iostorinv_id = '" + json.getString("iostorinv_id") + "'").uniqueResult(0); - jsonRegion.put("start_point_code", jsonTask.getString("start_point_code")); - Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("start_point_code")).getRegion_id(); - jsonRegion.put("start_region_id", String.valueOf(start_region_id)); - jsonRegion.put("task_id", Long.valueOf(task_id)); - regionTab.update(jsonRegion); - //TODO 下发 - - // 成功返回 - resuft.put("status", "200"); - resuft.put("message", ""); - } else if (StrUtil.equals(type, "5")) { - // 5.油漆线空盘入库: 调用空托盘入库处理类创建任务 - if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); - - JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); - param.put("qty", vehicle_num); - // 创建任务 - String task_id = SpringContextHolder.getBean(SendEmpVehicleTask.class).createTask(param); - - // 插入空载具作业记录表 - JSONObject jsonEmpParam = new JSONObject(); - jsonEmpParam.put("vehicle_qty",vehicle_num); - jsonEmpParam.put("task_id",task_id); - jsonEmpParam.put("io_type","0"); - this.createEmp(jsonEmpParam); - //TODO 下发 - - // 成功返回 - resuft.put("status", "200"); - resuft.put("message", ""); - } else if (StrUtil.equals(type, "6")) { - // 6.一楼空盘入库 (有载具号): 调用空托盘入库处理类创建任务 - if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); - if (ObjectUtil.isEmpty(vehicle_code)) throw new BadRequestException("载具号不能为空"); - - JSONObject param = new JSONObject(); - param.put("start_point_code", point_code); - param.put("qty", vehicle_num); - param.put("vehicle_code", vehicle_code); - // 创建任务 - String task_id = SpringContextHolder.getBean(SendEmpVehicleTask.class).createTask(param); - - // 插入空载具作业记录表 - JSONObject jsonEmpParam = new JSONObject(); - jsonEmpParam.put("vehicle_qty",vehicle_num); - jsonEmpParam.put("task_id",task_id); - jsonEmpParam.put("io_type","0"); - this.createEmp(jsonEmpParam); - //TODO 下发 - - // 成功返回 - resuft.put("status", "200"); - resuft.put("message", ""); - } - } catch (Exception e) { - resuft.put("status",((BadRequestException) e).getStatus()); - resuft.put("message",e.getMessage()); - } - return resuft; - } - - @Transactional - public void createEmp(JSONObject json) { - String vehicle_qty = json.getString("vehicle_qty"); - String task_id = json.getString("task_id"); - String io_type = json.getString("io_type"); - - WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord");// 空载具作业记录表 - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表 - - JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - - JSONObject jsonEmp = new JSONObject(); - jsonEmp.put("record_uuid", IdUtil.getSnowflake(1,1).nextId()); - jsonEmp.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE")); - jsonEmp.put("io_type", io_type); - jsonEmp.put("bill_status", "20"); - jsonEmp.put("vehicle_qty", vehicle_qty); - jsonEmp.put("start_point_code", jsonTask.getString("start_point_code")); - Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("start_point_code")).getRegion_id(); - jsonEmp.put("start_region_id", start_region_id); - jsonEmp.put("next_point_code", jsonTask.getString("next_point_code")); - Long next_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("next_point_code")).getRegion_id(); - jsonEmp.put("end_region_id", next_region_id); - jsonEmp.put("task_uuid", task_id); - jsonEmp.put("create_id", SecurityUtils.getCurrentUserId()); - jsonEmp.put("create_name", SecurityUtils.getNickName()); - jsonEmp.put("create_time", DateUtil.now()); - empTab.insert(jsonEmp); - } - - @Transactional - public JSONObject inCreateRegion(JSONObject json) { - String start_point_code = json.getString("start_point_code"); - String next_point_code = json.getString("next_point_code"); - String qty = json.getString("qty"); - Long task_id = json.getLongValue("task_id"); - String io_type = json.getString("io_type"); - - WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); - WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); - - - JSONObject jsonRegion = new JSONObject(); - jsonRegion.put("iostorinv_id",IdUtil.getSnowflake(1,1).nextId()); - jsonRegion.put("bill_code",CodeUtil.getNewCode("IN_STORE_CODE")); - jsonRegion.put("io_type",io_type); - jsonRegion.put("bill_status","20"); - // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 - String device_code = start_point_code.substring(0, start_point_code.indexOf("-")); - - DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); - DeviceDto deviceDto = deviceBean.findByCode(device_code); - if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在"); - JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在"); - - jsonRegion.put("material_id",jsonOrder.getString("material_id")); - jsonRegion.put("qty",qty); - JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); - jsonRegion.put("qty_unit_id",jsonMater.getString("base_unit_id")); - - jsonRegion.put("start_point_code",start_point_code); - Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(start_point_code).getRegion_id(); - jsonRegion.put("start_region_id",String.valueOf(start_region_id)); - jsonRegion.put("end_point_code",next_point_code); - Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); - jsonRegion.put("end_region_id",String.valueOf(end_region_id)); - - jsonRegion.put("create_mode","02"); - jsonRegion.put("task_id",task_id); - jsonRegion.put("create_id",SecurityUtils.getCurrentUserId()); - jsonRegion.put("create_name",SecurityUtils.getNickName()); - jsonRegion.put("create_time",DateUtil.now()); - regionTab.insert(jsonRegion); - - JSONObject resuft = new JSONObject(); - resuft.put("vehicle_type", jsonOrder.getString("vehicle_type")); - resuft.put("material_id", jsonRegion.getString("material_id")); - resuft.put("create_mode", jsonRegion.getString("create_mode")); - return resuft; - } - - @Transactional - public JSONObject outCreateRegion(JSONObject json) { - String next_point_code = json.getString("next_point_code"); - String io_type = json.getString("io_type"); - - WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); - WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); - - JSONObject jsonRegion = new JSONObject(); - jsonRegion.put("iostorinv_id",IdUtil.getSnowflake(1,1).nextId()); - jsonRegion.put("bill_code",CodeUtil.getNewCode("OUT_STORE_CODE")); - jsonRegion.put("io_type",io_type); - jsonRegion.put("bill_status","20"); - // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 - String device_code = next_point_code.substring(0, next_point_code.indexOf("-")); - - DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); - DeviceDto deviceDto = deviceBean.findByCode(device_code); - if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在"); - JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在"); - - jsonRegion.put("material_id",jsonOrder.getString("material_id")); - jsonRegion.put("qty","100"); // 暂时先按照100 - JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); - jsonRegion.put("qty_unit_id",jsonMater.getString("base_unit_id")); - - jsonRegion.put("end_point_code",next_point_code); - Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); - jsonRegion.put("end_region_id",String.valueOf(end_region_id)); - - jsonRegion.put("create_mode","02"); - jsonRegion.put("create_id",SecurityUtils.getCurrentUserId()); - jsonRegion.put("create_name",SecurityUtils.getNickName()); - jsonRegion.put("create_time",DateUtil.now()); - regionTab.insert(jsonRegion); - - // 需回显起始点位、起始区域、任务id - JSONObject resuft = new JSONObject(); - resuft.put("iostorinv_id",jsonRegion.getString("iostorinv_id")); - resuft.put("vehicle_type",jsonOrder.getString("vehicle_type")); - resuft.put("create_mode",jsonRegion.getString("create_mode")); - resuft.put("material_id",jsonOrder.getString("material_id")); - return resuft; - } -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 6245386..910cd9a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -2,20 +2,31 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; import org.nl.utils.SecurityUtils; +import org.nl.utils.SpringContextHolder; import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.pdm.service.DeviceService; +import org.nl.wms.pdm.service.dto.DeviceDto; +import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.service.TaskService; import org.nl.wms.sch.service.dto.TaskDto; +import org.nl.wms.sch.tasks.*; import org.nl.wql.core.bean.WQLObject; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -27,31 +38,6 @@ import java.util.Map; public class AcsToWmsServiceImpl implements AcsToWmsService { private final TaskService taskService; - @Override - public Map receiveTaskFromAcs(Map jsonObject) { - JSONObject result = new JSONObject(); - //{"point_code":"1002","container_code":"T666666","param":{"height":2,"weight":0}} - //更新分配表生成出入库单局,生成指令 - JSONObject.parseObject(JSON.toJSONString(jsonObject)).getJSONObject("param"); - - //点位编码 - String point_code = MapUtil.getStr(jsonObject, "device_code"); - //载具号 - String vehicle_code = MapUtil.getStr(jsonObject, "container_code"); - JSONObject param = JSONObject.parseObject(JSON.toJSONString(jsonObject.get("param"))); - //高度 - String height = param.getString("height"); - //重量 - String weight = param.getString("weight"); - - result.put("status", HttpStatus.OK.value()); - - result.put("message", "ACS向WMS申请任务成功!"); - result.put("data", new JSONObject()); - result.put("errArr", new JSONArray()); - return result; - } - /** * task_uuid:任务标识 * task_code:任务编码 @@ -67,7 +53,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONArray errArr = new JSONArray(); for (int i = 0; i < array.size(); i++) { JSONObject row = array.getJSONObject(i); - String task_uuid = row.getString("task_uuid"); + String task_uuid = row.getString("task_id"); TaskDto taskDto = taskService.findById(task_uuid); String processing_class = taskDto.getHandle_class(); //1:执行中,2:完成 ,3:acs取消 @@ -80,6 +66,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if ("2".equals(acs_task_status)) { status = TaskStatusEnum.FINISHED.getCode(); } + if ("3".equals(acs_task_status)) { + status = "0"; + } // 任务处理类 try { Class clz = Class.forName(processing_class); @@ -132,22 +121,385 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { public Map orderFinish(String string) { JSONObject orderJson = JSONObject.parseObject(string); String ext_order_id = orderJson.getString("ext_order_id"); - // JSONArray array = JSONArray.parseArray(string); + // JSONArray array = JSONArray.parseArray(string); String now = DateUtil.now(); WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); JSONObject map = new JSONObject(); - map.put("produceorder_id",ext_order_id); - map.put("order_status","04"); + map.put("produceorder_id", ext_order_id); + map.put("order_status", "04"); map.put("update_optid", 1111111111); map.put("device_id", ""); map.put("update_optname", "acs"); map.put("update_time", now); map.put("realproduceend_date", now); - wo.update(map,"produceorder_id = '"+ext_order_id+"'"); + wo.update(map, "produceorder_id = '" + ext_order_id + "'"); JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务状态反馈成功!"); return result; } + @Override + @Transactional + public JSONObject apply(JSONObject whereJson) { + String type = whereJson.getString("type"); + String point_code = whereJson.getString("point_code"); + String vehicle_num = whereJson.getString("vehicle_num"); + String vehicle_type = whereJson.getString("vehicle_type"); + String vehicle_code = whereJson.getString("vehicle_code"); + String qty = whereJson.getString("qty"); + + if (ObjectUtil.isEmpty(type)) throw new BadRequestException("类型不能为空"); + if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空"); + + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord");// 空载具作业记录表 + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表 + WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); // 区域出入库表 + + + /* + * 根据type判断是什么业务类型: + * 1.共挤线申请空盘 + * 2.共挤线满托入库 + * 3.油漆线申请空盘 + * 4.油漆线申请物料 + * 5.油漆线空盘入库 + * 6.一楼空盘入库 (有载具号) + * 7.油漆线->输送线 + */ + JSONObject resuft = new JSONObject(); + try { + if (StrUtil.equals(type, "1")) { + // 1.共挤线申请空盘: 调用空托盘出库处理类创建任务 + if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); + + JSONObject param = new JSONObject(); + param.put("next_point_code", point_code); + param.put("qty", vehicle_num); + // 创建任务 + CallEmpVehicleTask taskBean = SpringContextHolder.getBean(CallEmpVehicleTask.class); + String task_id = taskBean.createTask(param); + + // 插入空载具作业记录表 + JSONObject jsonEmpParam = new JSONObject(); + jsonEmpParam.put("vehicle_qty", vehicle_num); + jsonEmpParam.put("task_id", task_id); + jsonEmpParam.put("io_type", "1"); + this.createEmp(jsonEmpParam); + // 下发 + JSONObject jsonObject = taskBean.renotifyAcs(task_id); + if (StrUtil.equals(jsonObject.getString("status"), "200")) { + // 成功返回 更新任务状态 + resuft.put("status", "200"); + resuft.put("message", ""); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } else { + throw new BadRequestException(jsonObject.getString("message")); + } + + } else if (StrUtil.equals(type, "2")) { + // 2.共挤线满托入库: 调用物料入库处理类创建任务 + if (ObjectUtil.isEmpty(qty) || (StrUtil.equals(qty, "0"))) throw new BadRequestException("物料数量不能为空或者为0"); + + JSONObject param = new JSONObject(); + param.put("start_point_code", point_code); + SendMaterialTask taskBean = SpringContextHolder.getBean(SendMaterialTask.class); + String task_id = taskBean.createTask(param); + + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + // 插入区域出入库表 + param.put("next_point_code", jsonTask.getString("next_point_code")); + param.put("qty", qty); + param.put("task_id", task_id); + param.put("io_type", "0"); + JSONObject json = this.inCreateRegion(param); + // 回显任务载具类型 + jsonTask.put("vehicle_type", json.getString("vehicle_type")); + taskTab.update(jsonTask); + + // 下发 + JSONObject jsonObject = taskBean.renotifyAcs(task_id); + if (StrUtil.equals(jsonObject.getString("status"), "200")) { + // 成功返回 更新任务状态 + resuft.put("status", "200"); + resuft.put("message", ""); + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } else { + throw new BadRequestException(jsonObject.getString("message")); + } + } else if (StrUtil.equals(type, "3")) { + // 3.油漆线申请空盘: 调用空托盘出库处理类创建任务 + if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); + + JSONObject param = new JSONObject(); + param.put("next_point_code", point_code); + param.put("qty", vehicle_num); + // 创建任务 + CallEmpVehicleTask taskBean = SpringContextHolder.getBean(CallEmpVehicleTask.class); + String task_id = taskBean.createTask(param); + + // 插入空载具作业记录表 + JSONObject jsonEmpParam = new JSONObject(); + jsonEmpParam.put("vehicle_qty", vehicle_num); + jsonEmpParam.put("task_id", task_id); + jsonEmpParam.put("io_type", "1"); + this.createEmp(jsonEmpParam); + + // 下发 + JSONObject jsonObject = taskBean.renotifyAcs(task_id); + if (StrUtil.equals(jsonObject.getString("status"), "200")) { + // 成功返回 更新任务状态 + resuft.put("status", "200"); + resuft.put("message", ""); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } else { + throw new BadRequestException(jsonObject.getString("message")); + } + } else if (StrUtil.equals(type, "4")) { + // 4.油漆线申请物料: 调用物料出库库处理类创建任务 + JSONObject param = new JSONObject(); + param.put("next_point_code", point_code); + param.put("io_type", "1"); + // 插入区域出库单 + JSONObject json = this.outCreateRegion(param); + + param.put("vehicle_type", json.getString("vehicle_type")); + param.put("material_id", json.getString("material_id")); + param.put("create_mode", json.getString("create_mode")); + param.put("iostorinv_id", json.getString("iostorinv_id")); + // 创建任务 + CallMaterialTask taskBean = SpringContextHolder.getBean(CallMaterialTask.class); + String task_id = taskBean.createTask(param); + + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + // 回显出库单:起始点位、起始区域、任务id + JSONObject jsonRegion = regionTab.query("iostorinv_id = '" + json.getString("iostorinv_id") + "'").uniqueResult(0); + jsonRegion.put("start_point_code", jsonTask.getString("start_point_code")); + Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("start_point_code")).getRegion_id(); + jsonRegion.put("start_region_id", String.valueOf(start_region_id)); + jsonRegion.put("task_id", Long.valueOf(task_id)); + regionTab.update(jsonRegion); + + // 下发 + JSONObject jsonObject = taskBean.renotifyAcs(task_id); + if (StrUtil.equals(jsonObject.getString("status"), "200")) { + // 成功返回 更新任务状态 + resuft.put("status", "200"); + resuft.put("message", ""); + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } else { + throw new BadRequestException(jsonObject.getString("message")); + } + } else if (StrUtil.equals(type, "5")) { + // 5.油漆线空盘入库: 调用空托盘入库处理类创建任务 + if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); + + JSONObject param = new JSONObject(); + param.put("start_point_code", point_code); + param.put("qty", vehicle_num); + // 创建任务 + SendEmpVehicleTask taskBean = SpringContextHolder.getBean(SendEmpVehicleTask.class); + String task_id = taskBean.createTask(param); + + // 插入空载具作业记录表 + JSONObject jsonEmpParam = new JSONObject(); + jsonEmpParam.put("vehicle_qty", vehicle_num); + jsonEmpParam.put("task_id", task_id); + jsonEmpParam.put("io_type", "0"); + this.createEmp(jsonEmpParam); + // 下发 + JSONObject jsonObject = taskBean.renotifyAcs(task_id); + if (StrUtil.equals(jsonObject.getString("status"), "200")) { + // 成功返回 更新任务状态 + resuft.put("status", "200"); + resuft.put("message", ""); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } else { + throw new BadRequestException(jsonObject.getString("message")); + } + + } else if (StrUtil.equals(type, "6")) { + // 6.一楼空盘入库 (有载具号): 调用空托盘入库处理类创建任务 + if (ObjectUtil.isEmpty(vehicle_num)) throw new BadRequestException("数量不能为空"); + if (ObjectUtil.isEmpty(vehicle_code)) throw new BadRequestException("载具号不能为空"); + + JSONObject param = new JSONObject(); + param.put("start_point_code", point_code); + param.put("qty", vehicle_num); + param.put("vehicle_code", vehicle_code); + // 创建任务 + SendEmpVehicleTask taskBean = SpringContextHolder.getBean(SendEmpVehicleTask.class); + String task_id = taskBean.createTask(param); + + // 插入空载具作业记录表 + JSONObject jsonEmpParam = new JSONObject(); + jsonEmpParam.put("vehicle_qty", vehicle_num); + jsonEmpParam.put("task_id", task_id); + jsonEmpParam.put("io_type", "0"); + this.createEmp(jsonEmpParam); + // 下发 + JSONObject jsonObject = taskBean.renotifyAcs(task_id); + if (StrUtil.equals(jsonObject.getString("status"), "200")) { + // 成功返回 更新任务状态 + resuft.put("status", "200"); + resuft.put("message", ""); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + jsonTask.put("task_status", "05"); + taskTab.update(jsonTask); + } else { + throw new BadRequestException(jsonObject.getString("message")); + } + } else if (StrUtil.equals(type, "7")) { + JSONObject param = new JSONObject(); + param.put("start_point_code", point_code); + // 1.生成起点确定的任务 + SpringContextHolder.getBean(PointToPointTask.class).createTask(param); + + resuft.put("status", "200"); + resuft.put("message", ""); + } + } catch (Exception e) { + resuft.put("status", ((BadRequestException) e).getStatus()); + resuft.put("message", e.getMessage()); + } + return resuft; + } + + @Transactional + public void createEmp(JSONObject json) { + String vehicle_qty = json.getString("vehicle_qty"); + String task_id = json.getString("task_id"); + String io_type = json.getString("io_type"); + + WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord");// 空载具作业记录表 + WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");// 空载具作业记录表 + + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + JSONObject jsonEmp = new JSONObject(); + jsonEmp.put("record_uuid", IdUtil.getSnowflake(1,1).nextId()); + jsonEmp.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE")); + jsonEmp.put("io_type", io_type); + jsonEmp.put("bill_status", "20"); + jsonEmp.put("vehicle_qty", vehicle_qty); + jsonEmp.put("start_point_code", jsonTask.getString("start_point_code")); + Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("start_point_code")).getRegion_id(); + jsonEmp.put("start_region_id", start_region_id); + jsonEmp.put("next_point_code", jsonTask.getString("next_point_code")); + Long next_region_id = SpringContextHolder.getBean(PointService.class).findByCode(jsonTask.getString("next_point_code")).getRegion_id(); + jsonEmp.put("end_region_id", next_region_id); + jsonEmp.put("task_uuid", task_id); + jsonEmp.put("create_id", SecurityUtils.getCurrentUserId()); + jsonEmp.put("create_name", SecurityUtils.getNickName()); + jsonEmp.put("create_time", DateUtil.now()); + empTab.insert(jsonEmp); + } + + @Transactional + public JSONObject inCreateRegion(JSONObject json) { + String start_point_code = json.getString("start_point_code"); + String next_point_code = json.getString("next_point_code"); + String qty = json.getString("qty"); + Long task_id = json.getLongValue("task_id"); + String io_type = json.getString("io_type"); + + WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); + WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); + + + JSONObject jsonRegion = new JSONObject(); + jsonRegion.put("iostorinv_id",IdUtil.getSnowflake(1,1).nextId()); + jsonRegion.put("bill_code",CodeUtil.getNewCode("IN_STORE_CODE")); + jsonRegion.put("io_type",io_type); + jsonRegion.put("bill_status","20"); + // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 + String device_code = start_point_code.substring(0, start_point_code.indexOf("_")); + + DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); + DeviceDto deviceDto = deviceBean.findByCode(device_code); + if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在"); + JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在"); + + jsonRegion.put("material_id",jsonOrder.getString("material_id")); + jsonRegion.put("qty",qty); + JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); + jsonRegion.put("qty_unit_id",jsonMater.getString("base_unit_id")); + + jsonRegion.put("start_point_code",start_point_code); + Long start_region_id = SpringContextHolder.getBean(PointService.class).findByCode(start_point_code).getRegion_id(); + jsonRegion.put("start_region_id",String.valueOf(start_region_id)); + jsonRegion.put("end_point_code",next_point_code); + Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); + jsonRegion.put("end_region_id",String.valueOf(end_region_id)); + + jsonRegion.put("create_mode","02"); + jsonRegion.put("task_id",task_id); + jsonRegion.put("create_id",SecurityUtils.getCurrentUserId()); + jsonRegion.put("create_name",SecurityUtils.getNickName()); + jsonRegion.put("create_time",DateUtil.now()); + regionTab.insert(jsonRegion); + + JSONObject resuft = new JSONObject(); + resuft.put("vehicle_type", jsonOrder.getString("vehicle_type")); + resuft.put("material_id", jsonRegion.getString("material_id")); + resuft.put("create_mode", jsonRegion.getString("create_mode")); + return resuft; + } + + @Transactional + public JSONObject outCreateRegion(JSONObject json) { + String next_point_code = json.getString("next_point_code"); + String io_type = json.getString("io_type"); + + WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_regionIO"); + WQLObject orderTab = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); + + JSONObject jsonRegion = new JSONObject(); + jsonRegion.put("iostorinv_id",IdUtil.getSnowflake(1,1).nextId()); + jsonRegion.put("bill_code",CodeUtil.getNewCode("OUT_STORE_CODE")); + jsonRegion.put("io_type",io_type); + jsonRegion.put("bill_status","20"); + // 根据起点点位找到起点设备,根据设备找到对应工单, 根据工单找到对应物料及托盘类型 + String device_code = next_point_code.substring(0, next_point_code.indexOf("_")); + + DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); + DeviceDto deviceDto = deviceBean.findByCode(device_code); + if (ObjectUtil.isEmpty(deviceDto)) throw new BadRequestException("此设备不存在"); + JSONObject jsonOrder = orderTab.query("device_id = '" + deviceDto.getDevice_id() + "' and order_status = '02' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonOrder)) throw new BadRequestException("此设备未在生产中或不存在"); + + jsonRegion.put("material_id",jsonOrder.getString("material_id")); + jsonRegion.put("qty","100"); // 暂时先按照100 + JSONObject jsonMater = materTab.query("material_id ='" + jsonOrder.getString("material_id") + "'").uniqueResult(0); + jsonRegion.put("qty_unit_id",jsonMater.getString("base_unit_id")); + + jsonRegion.put("end_point_code",next_point_code); + Long end_region_id = SpringContextHolder.getBean(PointService.class).findByCode(next_point_code).getRegion_id(); + jsonRegion.put("end_region_id",String.valueOf(end_region_id)); + + jsonRegion.put("create_mode","02"); + jsonRegion.put("create_id",SecurityUtils.getCurrentUserId()); + jsonRegion.put("create_name",SecurityUtils.getNickName()); + jsonRegion.put("create_time",DateUtil.now()); + regionTab.insert(jsonRegion); + + // 需回显起始点位、起始区域、任务id + JSONObject resuft = new JSONObject(); + resuft.put("iostorinv_id",jsonRegion.getString("iostorinv_id")); + resuft.put("vehicle_type",jsonOrder.getString("vehicle_type")); + resuft.put("create_mode",jsonRegion.getString("create_mode")); + resuft.put("material_id",jsonOrder.getString("material_id")); + return resuft; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index c602b0a..9c28278 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -48,4 +48,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return AcsUtil.notifyAcs(api, arr); } + @Override + public JSONObject getPointStatus(JSONArray whereJson) { + String api = "api/wms/querydevice"; + return AcsUtil.notifyAcs(api, whereJson); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java new file mode 100644 index 0000000..a7d036e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/auto/AutoQueryTask.java @@ -0,0 +1,140 @@ +package org.nl.wms.ext.auto; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.utils.SpringContextHolder; +import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.sch.tasks.PointToPointTask; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class AutoQueryTask { + + private final WmsToAcsService wmsToAcsService; + + @Transactional + public void run() { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + + PointToPointTask pointTaskBean = SpringContextHolder.getBean(PointToPointTask.class); + + // 1.查找起点为油漆线 物料下料位的任务 + JSONArray taskArr = WQL.getWO("AUTO_QUERYTASK").addParam("flag", "1").process().getResultJSONArray(0); + + for (int i = 0; i < taskArr.size(); i++) { + JSONObject jsonTask = taskArr.getJSONObject(i); + /* + * 1.查找输送线有没有空位 输送线1对1关系 调用获取点位状态接口 + * 2.判断有空位的输送线是否有任务:起点和终点都要判断 + * 输送线点位:SSX01A1 - SSX01A2 ,SSX01B1 - SSX01B2 + */ + // 2.查找输送线空位,调用获取点位状态接口 + JSONArray paramArr = new JSONArray(); + + JSONObject pointA1 = new JSONObject(); + pointA1.put("device_code", "SSX01A1"); + paramArr.add(pointA1); + + JSONObject pointA2 = new JSONObject(); + pointA2.put("device_code", "SSX01A2"); + paramArr.add(pointA2); + + JSONObject pointB1 = new JSONObject(); + pointB1.put("device_code", "SSX01B1"); + paramArr.add(pointB1); + + JSONObject pointB2 = new JSONObject(); + pointB2.put("device_code", "SSX01B2"); + paramArr.add(pointB2); + + JSONObject result = wmsToAcsService.getPointStatus(paramArr); + + if (StrUtil.equals(result.getString("status"), "200")) { + JSONObject jsonPointAfter = new JSONObject(); // 处理后的json + + JSONArray dataArr = result.getJSONArray("data"); + // 3.处理返回的数据,处理后为json,key为点位编码,value为状态 + for (int j = 0; j < dataArr.size(); j++) { + JSONObject jsonObject = dataArr.getJSONObject(j); + + String device_code = jsonObject.getString("barcode"); + switch (device_code) { + case "SSX01A1" : + jsonPointAfter.put("SSX01A1",jsonObject.getString("move")); + break; + case "SSX01A2" : + jsonPointAfter.put("SSX01A2",jsonObject.getString("move")); + break; + case "SSX01B1" : + jsonPointAfter.put("SSX01B1",jsonObject.getString("move")); + break; + case "SSX01B2" : + jsonPointAfter.put("SSX01B2",jsonObject.getString("move")); + break; + } + } + JSONObject map = new JSONObject(); + // 4.1判断SSX01A1 、 SSX01A2是否是空位 无任务 + if (StrUtil.equals(jsonPointAfter.getString("SSX01A1"), "0") && StrUtil.equals(jsonPointAfter.getString("SSX01A2"), "0")) { + // 4.2如果都是空位 则判断是否有正在进行的任务 + map.put("flag", "2"); + map.put("start_point_code", "('SSX01A1','SSX01A2')"); + // 查找起点是否有任务 + JSONArray is_stara = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); + // 查询终点是否有任务 + map.put("flag", "3"); + map.put("end_point_code", "('SSX01A1','SSX01A2')"); + JSONArray is_end = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); + + if (ObjectUtil.isEmpty(is_stara) && ObjectUtil.isEmpty(is_end)) { + // 4.3.更新任务终点点位 + jsonTask.put("next_point_code", "SSX01A2"); + taskTab.update(jsonTask); + // 4.4.下发ACS + JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); + + if (StrUtil.equals(jsonResultAcs.getString("status"), "200")) { + // 4.5.下发成功、更新任务状态 + jsonTask.put("task_status", "02"); + taskTab.update(jsonTask); + } + } + // 5.1判断SSX01B1 、 SSX01B2是否是空位 无任务 + } else if (StrUtil.equals(jsonPointAfter.getString("SSX01B1"), "0") && StrUtil.equals(jsonPointAfter.getString("SSX01B2"), "0")) { + // 5.2如果都是空位 则判断是否有正在进行的任务 + map.put("flag", "2"); + map.put("start_point_code", "('SSX01B1','SSX01B2')"); + // 查找起点是否有任务 + JSONArray is_stara = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); + // 查询终点是否有任务 + map.put("flag", "3"); + map.put("end_point_code", "('SSX01B1','SSX01B2')"); + JSONArray is_end = WQL.getWO("AUTO_QUERYTASK").addParamMap(map).process().getResultJSONArray(0); + + if (ObjectUtil.isEmpty(is_stara) && ObjectUtil.isEmpty(is_end)) { + // 5.3.更新任务终点点位 + jsonTask.put("next_point_code", "SSX01B2"); + taskTab.update(jsonTask); + // 5.4.下发ACS + JSONObject jsonResultAcs = pointTaskBean.renotifyAcs(jsonTask.getString("task_id")); + + if (StrUtil.equals(jsonResultAcs.getString("status"), "200")) { + // 4.5.下发成功、更新任务状态 + jsonTask.put("task_status", "02"); + taskTab.update(jsonTask); + } + } + } + } + } + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql new file mode 100644 index 0000000..a381a99 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/wql/AUTO_QUERYTASK.wql @@ -0,0 +1,92 @@ +[交易说明] + 交易名: 二楼到一楼业务 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.start_point_code TYPEAS s_string + 输入.end_point_code TYPEAS s_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + task.* + FROM + SCH_BASE_Task task + WHERE + task.is_delete = '0' + AND task.task_status = '01' + AND task.start_point_code in ('YQX01_WX','YQX02_WX') + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + task.* + FROM + SCH_BASE_Task task + WHERE + task.is_delete = '0' + AND task.task_status <> '99' + + OPTION 输入.start_point_code <> "" + task.start_point_code in 输入.start_point_code + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + task.* + FROM + SCH_BASE_Task task + WHERE + task.is_delete = '0' + AND task.task_status <> '99' + + OPTION 输入.end_point_code <> "" + task.next_point_code in 输入.end_point_code + ENDOPTION + + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java index e303713..b00cfd4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/AbstractAcsTask.java @@ -115,11 +115,13 @@ public abstract class AbstractAcsTask { AcsTaskDto taskDto = new AcsTaskDto(); taskDto.setTask_id(json.getString("task_id")); taskDto.setTask_code(json.getString("task_code")); - taskDto.setTask_type("1"); - taskDto.setRoute_plan_code("normal"); taskDto.setStart_device_code(json.getString("start_point_code")); taskDto.setNext_device_code(json.getString("next_point_code")); + taskDto.setPriority("1"); taskDto.setVehicle_code(json.getString("vehicle_code")); + taskDto.setTask_type("1"); + taskDto.setRoute_plan_code("normal"); + jsonArray.add(JSONObject.parse(JSON.toJSONString(taskDto))); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java index 5af69dc..7606859 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java @@ -215,6 +215,7 @@ public class PointServiceImpl implements PointService { structMap.put("region_id", json.getString("region_id")); structMap.put("source_id", json.getString("struct_id")); structMap.put("point_type", "01"); + structMap.put("is_host", "0"); structMap.put("is_used", json.getString("is_used")); structMap.put("create_id", currentUserId); structMap.put("create_name", nickName); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls index bf2bc1f..281a5db 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java index a694818..4ab7988 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpVehicleTask.java @@ -22,6 +22,7 @@ import org.nl.wms.sch.service.dto.PointDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.HashMap; @@ -33,15 +34,30 @@ public class CallEmpVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = CallEmpVehicleTask.class.getName(); @Override + @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - // 完成任务 + String task_id = taskObj.getString("task_id"); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status,"0")) { + // 取消删除任务 + taskTab.delete("task_id = '"+task_id+"'"); + } + + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("car_no", taskObj.getString("car_no")); + taskTab.update(jsonTask); + } + if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { // 更改任务状态为完成 - JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0); jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); jsonTask.put("update_optname", SecurityUtils.getCurrentUsername()); @@ -57,7 +73,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { if (ObjectUtil.isEmpty(start_point_code)) throw new BadRequestException("未找到可用点位:" + next_point_code); // 1.更新点位数量 2.解锁点位 - JSONObject jsonEmp = empTab.query("task_uuid = '" + taskObj.getString("task_id") + "'").uniqueResult(0); + JSONObject jsonEmp = empTab.query("task_uuid = '" + task_id + "'").uniqueResult(0); int vehicle_qty = JSONObject.parseObject(JSON.toJSONString(start_point_code)).getIntValue("vehicle_qty"); BigDecimal vehicle_qty_point = NumberUtil.sub(String.valueOf(vehicle_qty), String.valueOf(jsonEmp.getIntValue("vehicle_qty"))); @@ -89,6 +105,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { } @Override + @Transactional public String createTask(JSONObject form) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); @@ -163,6 +180,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { } @Override + @Transactional public void forceFinish(String task_id) { JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); @@ -178,6 +196,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { } + @Transactional public JSONObject findBeginPoint(JSONObject json) { String next_point_code = json.getString("next_point_code"); String vehicle_qty = json.getString("vehicle_qty"); @@ -193,7 +212,7 @@ public class CallEmpVehicleTask extends AbstractAcsTask { JSONObject jsonRegionEnd = regionTab.query("region_id ='" + jsonPointEnd.getString("region_id") + "'").uniqueResult(0); // 根据起点找到对应设备,根据设备查询工单表中 - 正在运行的工单中的载具类型 - String device_code = next_point_code.substring(0, next_point_code.indexOf("-")); + String device_code = next_point_code.substring(0, next_point_code.indexOf("_")); DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); DeviceDto deviceDto = deviceBean.findByCode(device_code); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java index 71391f9..b3c794b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java @@ -38,6 +38,12 @@ public class CallMaterialTask extends AbstractAcsTask { String task_id = taskObj.getString("task_id"); WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status,"0")) { + // 取消删除任务 + taskTab.delete("task_id = '"+task_id+"'"); + } + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { //更新任务状态为执行中 jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java index 39685b2..68d4610 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointToPointTask.java @@ -8,7 +8,9 @@ import org.nl.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; import org.nl.utils.SecurityUtils; import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wql.core.bean.WQLObject; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; @@ -17,29 +19,36 @@ import java.util.HashMap; */ public class PointToPointTask extends AbstractAcsTask { @Override + @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getNickName(); - String now = DateUtil.now(); - HashMap map = new HashMap(); - //1:执行中,2:完成 ,3:acs取消 - if (status.equals("1")) { - map.put("task_status", "03"); - map.put("car_no", taskObj.getString("car_no")); + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + + String task_id = taskObj.getString("task_id"); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status,"0")) { + // 取消删除任务 + taskTab.delete("task_id = '"+task_id+"'"); } - if (status.equals("2")) { - map.put("lock_type", "00"); - map.put("point_status", "00"); - map.put("vehicle_code", ""); - JSONObject task = WQLObject.getWQLObject("SCH_BASE_Task").query("taskdtl_id = '" + taskObj.getString("taskdtl_id") + "'").uniqueResult(0); - WQLObject.getWQLObject("SCH_BASE_Point").update(map, "point_code = '" + task.getString("start_point_code") + "'"); - map.put("task_status", "99"); + + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("car_no", taskObj.getString("car_no")); + taskTab.update(jsonTask); + } + + if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + // 完成 + jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonTask.put("update_optname", SecurityUtils.getCurrentUsername()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + } - map.put("update_optid", currentUserId); - map.put("update_optname", nickName); - map.put("update_time", now); - WQLObject.getWQLObject("SCH_BASE_Task").update(map, "taskdtl_id = '" + taskObj.getString("taskdtl_id") + "'"); - } @Override public void findStartPoint() { @@ -52,6 +61,7 @@ public class PointToPointTask extends AbstractAcsTask { } @Override + @Transactional public String createTask(JSONObject form) { String start_point_code = form.getString("start_point_code"); String next_point_code = form.getString("next_point_code"); @@ -60,25 +70,25 @@ public class PointToPointTask extends AbstractAcsTask { if (StrUtil.isEmpty(start_point_code)) { throw new BadRequestException("起点不能为空!"); } - if (StrUtil.isEmpty(next_point_code)) { + /* if (StrUtil.isEmpty(next_point_code)) { throw new BadRequestException("终点不能为空!"); } if (StrUtil.isEmpty(vehicle_code)) { throw new BadRequestException("载具不能为空!"); - } + }*/ String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; JSONObject task = new JSONObject(); task.put("taskdtl_id", taskdtl_id); task.put("task_id", taskdtl_id); task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - task.put("task_type", "11"); - task.put("taskdtl_type", "10"); + task.put("task_type", "05"); + task.put("taskdtl_type", "05"); task.put("task_status", "01"); task.put("start_point_code", start_point_code); task.put("next_point_code", next_point_code); task.put("vehicle_code", vehicle_code); task.put("handle_class", this.getClass().getName()); - task.put("finished_type", "01"); + task.put("finished_type", "00"); task.put("is_delete", "0"); Long currentUserId = SecurityUtils.getCurrentUserId(); task.put("create_id", currentUserId); @@ -93,17 +103,9 @@ public class PointToPointTask extends AbstractAcsTask { } @Override - public void forceFinish(String taskdtl_id) { - //任务表 - WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task"); - - JSONObject task = wo_Task.query("task_status<>'99' and taskdtl_id='" + taskdtl_id + "'").uniqueResult(0); - if (task == null) { - throw new BadRequestException("查询不到可以完成的任务记录!"); - } - JSONObject jo = new JSONObject(); - jo.put("taskdtl_id", taskdtl_id); - this.updateTaskStatus(jo, "2"); + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java index bcb256e..f2ade01 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendEmpVehicleTask.java @@ -24,6 +24,7 @@ import org.nl.wms.sch.service.dto.PointDto; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.HashMap; @@ -35,15 +36,30 @@ public class SendEmpVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = SendEmpVehicleTask.class.getName(); @Override + @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); - // 完成任务 + String task_id = taskObj.getString("task_id"); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status,"0")) { + // 取消删除任务 + taskTab.delete("task_id = '"+task_id+"'"); + } + + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + jsonTask.put("car_no", taskObj.getString("car_no")); + taskTab.update(jsonTask); + } + if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { // 更改任务状态为完成 - JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0); jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); jsonTask.put("update_optname", SecurityUtils.getCurrentUsername()); @@ -61,7 +77,7 @@ public class SendEmpVehicleTask extends AbstractAcsTask { if (ObjectUtil.isEmpty(nextDto)) throw new BadRequestException("未找到可用点位:" + nextDto); // 1.更新点位数量 2.解锁点位 - JSONObject jsonEmp = empTab.query("task_uuid = '" + taskObj.getString("task_id") + "'").uniqueResult(0); + JSONObject jsonEmp = empTab.query("task_uuid = '" + task_id + "'").uniqueResult(0); int vehicle_qty = JSONObject.parseObject(JSON.toJSONString(nextDto)).getIntValue("vehicle_qty"); BigDecimal vehicle_qty_point = NumberUtil.add(String.valueOf(vehicle_qty), String.valueOf(jsonEmp.getIntValue("vehicle_qty"))); @@ -92,6 +108,7 @@ public class SendEmpVehicleTask extends AbstractAcsTask { } @Override + @Transactional public String createTask(JSONObject form) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject empTab = WQLObject.getWQLObject("st_ivt_EmptyVehicleRecord"); @@ -169,6 +186,7 @@ public class SendEmpVehicleTask extends AbstractAcsTask { } @Override + @Transactional public void forceFinish(String task_id) { JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); @@ -184,6 +202,7 @@ public class SendEmpVehicleTask extends AbstractAcsTask { } + @Transactional public JSONObject findEndPoint(JSONObject json) { String start_point_code = json.getString("start_point_code"); String vehicle_qty = json.getString("vehicle_qty"); @@ -204,7 +223,7 @@ public class SendEmpVehicleTask extends AbstractAcsTask { // 根据起点找到对应设备,根据设备查询工单表中 - 正在运行的工单中的载具类型 String device_code = ""; if (ObjectUtil.isEmpty(vehicle_code)) { - device_code = start_point_code.substring(0, start_point_code.indexOf("-")); + device_code = start_point_code.substring(0, start_point_code.indexOf("_")); } String vehicle_type = ""; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java index 473801e..4726413 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java @@ -46,6 +46,12 @@ public class SendMaterialTask extends AbstractAcsTask { String task_id = taskObj.getString("task_id"); WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status,"0")) { + // 取消删除任务 + taskTab.delete("task_id = '"+task_id+"'"); + } + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { //更新任务状态为执行中 jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); @@ -60,21 +66,6 @@ public class SendMaterialTask extends AbstractAcsTask { WQLObject.getWQLObject("ST_IVT_regionIO").update(map, "task_id='" + jsonTask.getString("task_id") + "'"); } - if (TaskStatusEnum.ISSUE.getCode().equals(status)) { - // 下发任务 - this.renotifyAcs(task_id); - // 更新任务状态和单据状态 - jsonTask.put("task_status",TaskStatusEnum.ISSUE.getCode()); - jsonTask.put("car_no", taskObj.getString("car_no")); - jsonTask.put("update_time", DateUtil.now()); - taskTab.update(jsonTask); - - WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_regionIO"); - JSONObject mstObj = mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0); - mstObj.put("bill_status","30"); - mstTab.update(mstObj); - } - if (TaskStatusEnum.FINISHED.getCode().equals(status)) { // 更新任务状态为完成 jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java index 32ebe54..60b1df5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RegionioInServiceImpl.java @@ -210,7 +210,7 @@ public class RegionioInServiceImpl implements RegionioInService { form.put("iostorinv_id", iostorinv_id); // 根据起点点位 找到对应设备,根据设备找到对应工单,根据工单获取载具类型 - String device_code = start_point_code.substring(0, start_point_code.indexOf("-")); + String device_code = start_point_code.substring(0, start_point_code.indexOf("_")); DeviceService deviceBean = SpringContextHolder.getBean(DeviceService.class); DeviceDto deviceDto = deviceBean.findByCode(device_code);