From 2b091a8cfccb22de8e9445e85fdb2d131fa72bea Mon Sep 17 00:00:00 2001 From: "ZHOUZ\\Noble'lift" <1014987728@qq.com> Date: Tue, 11 Oct 2022 18:30:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/wms/pda/mps/rest/OutController.java | 3 +- .../wms/pda/mps/rest/ShippingController.java | 6 +- .../wms/pda/mps/service/ShippingService.java | 7 ++- .../mps/service/impl/ShippingServiceImpl.java | 52 +++++++++++++----- .../java/org/nl/wms/pda/mps/wql/PDA_02.wql | 40 +++++++++++++- .../java/org/nl/wms/sch/service/wql/sch.xls | Bin 171008 -> 172544 bytes 6 files changed, 84 insertions(+), 24 deletions(-) diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java index 50fd0b866..ecd00b480 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java @@ -34,6 +34,7 @@ public class OutController { @Log("套轴确认") @ApiOperation("套轴确认") public ResponseEntity confirm(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(casingService.confirm(whereJson), HttpStatus.OK); + casingService.confirm(whereJson); + return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/ShippingController.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/ShippingController.java index 46e932246..a4680e4b4 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/ShippingController.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/ShippingController.java @@ -35,13 +35,15 @@ public class ShippingController { @Log("呼叫载具") @ApiOperation("呼叫载具") public ResponseEntity needVehicle(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(shippingService.needVehicle(whereJson), HttpStatus.OK); + shippingService.needVehicle(whereJson); + return new ResponseEntity<>(HttpStatus.OK); } @PostMapping("/confirm") @Log("套轴确认") @ApiOperation("套轴确认") public ResponseEntity confirm(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(shippingService.confirm(whereJson), HttpStatus.OK); + shippingService.confirm(whereJson); + return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/ShippingService.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/ShippingService.java index 16d572fe1..5a0efa529 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/ShippingService.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/ShippingService.java @@ -1,5 +1,6 @@ package org.nl.wms.pda.mps.service; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public interface ShippingService { @@ -9,20 +10,20 @@ public interface ShippingService { * @param whereJson / * @return JSONObject */ - JSONObject queryMaterialInfo(JSONObject whereJson); + JSONArray queryMaterialInfo(JSONObject whereJson); /** * 呼叫载具 * @param whereJson / * @return JSONObject */ - JSONObject needVehicle(JSONObject whereJson); + void needVehicle(JSONObject whereJson); /** * 配送确认 * @param whereJson / * @return JSONObject */ - JSONObject confirm(JSONObject whereJson); + void confirm(JSONObject whereJson); } diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java index ed41e9374..2b3184272 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java @@ -1,12 +1,19 @@ package org.nl.wms.pda.mps.service.impl; +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.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; import org.nl.wms.pda.mps.service.CasingService; import org.nl.wms.pda.mps.service.ShippingService; import org.springframework.stereotype.Service; +import java.util.HashMap; + @Service @RequiredArgsConstructor @Slf4j @@ -14,27 +21,42 @@ public class ShippingServiceImpl implements ShippingService { @Override - public JSONObject queryMaterialInfo(JSONObject whereJson) { - JSONObject result = new JSONObject(); - result.put("code", "1"); - result.put("desc", "查询成功"); - return result; + public JSONArray queryMaterialInfo(JSONObject whereJson) { + String product_area = whereJson.getString("product_area"); + String qzzno = whereJson.getString("qzzno"); + + HashMap map = new HashMap(); + map.put("flag", "3"); + if (StrUtil.isNotEmpty(product_area)) { + map.put("product_area", product_area); + } + if (StrUtil.isNotEmpty(qzzno)) { + map.put("qzzno", qzzno); + } + JSONArray rows = WQL.getWO("PDA_02").addParamMap(map).process().getResultJSONArray(0); + return rows; } @Override - public JSONObject needVehicle(JSONObject whereJson) { - JSONObject result = new JSONObject(); - result.put("code", "1"); - result.put("desc", "查询成功"); - return result; + public void needVehicle(JSONObject whereJson) { + JSONObject cut_jo = whereJson.getJSONObject("cut_jo"); + //查询离该分切计划包含机台最近的一个空载具 + JSONObject empty_vehicle = WQL.getWO("PDA_02") + .addParam("sort_seq",cut_jo.getString("sort_seq")) + .addParam("product_area",cut_jo.getString("product_area")) + .addParam("point_location",cut_jo.getString("point_location")) + .addParam("flag","3").process().uniqueResult(0); + if (ObjectUtil.isEmpty(empty_vehicle)){ + throw new BadRequestException("未查询到可用的空载具!"); + } + + //如果查询到给ACS下发一个桁架任务 + } @Override - public JSONObject confirm(JSONObject whereJson) { - JSONObject result = new JSONObject(); - result.put("code", "1"); - result.put("desc", "查询成功"); - return result; + public void confirm(JSONObject whereJson) { + } diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_02.wql b/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_02.wql index 4a1b391d1..79ba51640 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_02.wql +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_02.wql @@ -17,6 +17,9 @@ 输入.product_area TYPEAS s_string 输入.material_code TYPEAS s_string 输入.point_code TYPEAS s_string + 输入.qzzno TYPEAS s_string + 输入.sort_seq TYPEAS s_string + 输入.point_location TYPEAS s_string [临时表] @@ -83,17 +86,48 @@ plan.FRP_material, plan.FRP_description, plan.FRP_model, - plan.workorder_id + plan.workorder_id, + ivt.sort_seq, + ivt.product_area, + ivt.point_location FROM PDM_BI_SlittingProductionPlan plan LEFT JOIN st_ivt_cutpointivt ivt ON ivt.ext_code = plan.resource_name WHERE plan.STATUS < 2 AND - is_child_tz_ok = 0 + is_child_tz_ok = 1 + AND + is_child_ps_ok = 0 OPTION 输入.product_area <> "" ivt.product_area = 输入.product_area ENDOPTION + OPTION 输入.qzzno <> "" + plan.qzzno = 输入.qzzno + ENDOPTION ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + ivt.* + FROM + st_ivt_deliverypointivt ivt + WHERE + 1=1 + OPTION 输入.product_area <> "" + ivt.product_area = 输入.product_area + ENDOPTION + OPTION 输入.product_area <> "" + ivt.point_location = 输入.point_location + ENDOPTION + ORDER BY + abs(3-输入.sort_seq),point_code + ENDSELECT + ENDQUERY + ENDIF + + + diff --git a/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls b/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls index 39d58047ede2f0c53ffc7e7937165a5e5cb9133b..dd24a8e17c3e2de625d4508c5a12683eace46a7e 100644 GIT binary patch delta 19454 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 KQ