From 65734963c57f33e91f4d69f3244a63f924a8dc0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Sat, 13 May 2023 17:42:10 +0800 Subject: [PATCH] =?UTF-8?q?add=20PDA=E9=80=81=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acs/service/impl/AcsToWmsServiceImpl.java | 17 ++- .../org/nl/wms/pda/rest/PdaController.java | 18 +++ .../org/nl/wms/pda/service/PdaService.java | 8 ++ .../wms/pda/service/impl/PdaServiceImpl.java | 129 ++++++++++++++++-- .../org/nl/wms/pdm/service/dto/DeviceDto.java | 5 + .../pdm/service/impl/DeviceServiceImpl.java | 1 + .../org/nl/wms/pdm/wql/PDM_BI_DEVICE01.wql | 5 +- .../call/material/SZCallMaterialTask.java | 18 --- .../src/main/java/org/nl/wms/wms.xls | Bin 283648 -> 283136 bytes lms/nladmin-ui/src/utils/nladmin.js | 8 +- .../src/views/wms/pdm/device/index.vue | 58 ++++++-- .../views/wms/pdm/workerorder/hl/index.vue | 4 + .../src/views/wms/pdm/workerorder/index.vue | 1 + .../src/views/wms/pub/DeviceDialog.vue | 5 +- 14 files changed, 227 insertions(+), 50 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 466e3d0..c1e86e7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -25,6 +25,7 @@ import org.nl.wms.sch.task.call.empty.GTKCallEmptyTask; import org.nl.wms.sch.task.call.empty.HLCallEmptyTask; import org.nl.wms.sch.task.call.empty.YZCallEmptyTask; import org.nl.wms.sch.task.call.material.FJCallMaterialTask; +import org.nl.wms.sch.task.call.material.SZCallMaterialTask; import org.nl.wms.sch.task.call.material.YZCallMaterialTask; import org.nl.wms.sch.task.send.empty.FJSendEmptyTask; import org.nl.wms.sch.task.send.empty.YZSendEmptyTask; @@ -75,6 +76,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private final YZSendEmptyTask yzSendEmptyTask; + private final SZCallMaterialTask szCallMaterialTask; + /** * task_id:任务标识 * task_code:任务编码 @@ -313,14 +316,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { break; case "2": // 叫料 - JSONObject workorder = TaskUtils.hasWorkOrder(point); - method_param.put("workorder", workorder); - switch (region) { case YZ: + JSONObject workorder = TaskUtils.hasWorkOrder(point); + method_param.put("workorder", workorder); task_code = yzCallMaterialTask.createTask(method_param); break; + case SZ: + task_code = szCallMaterialTask.createTask(method_param); + break; case FJ: + workorder = TaskUtils.hasWorkOrder(point); + method_param.put("workorder", workorder); task_code = fjCallMaterialTask.createTask(method_param); break; default: @@ -329,7 +336,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { break; case "3": // 送空 - workorder = WQLObject + JSONObject workorder = WQLObject .getWQLObject("pdm_bd_workorder") .query("is_delete = '0' AND device_code = '" + point.getString("device_code") + "' AND order_status = '3'") .uniqueResult(0); @@ -347,6 +354,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } JSONObject vd_update = new JSONObject(); vd_update.put("is_delete", TrueOrFalse.TRUE.value()); + TaskUtils.addACSUpdateColum(vd_update); WQLObject .getWQLObject("st_ivt_vehicle_detail") .update(vd_update, "vehicle_type = " + vehicle_type + " AND vehicle_code = '" + vehicle_code + "'"); @@ -364,6 +372,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { method_param.put("vehicle_code", vehicle_code); vd_update = new JSONObject(); vd_update.put("is_delete", TrueOrFalse.TRUE.value()); + TaskUtils.addACSUpdateColum(vd_update); WQLObject .getWQLObject("st_ivt_vehicle_detail") .update(vd_update, "vehicle_type = '2' AND vehicle_code = '" + vehicle_code + "'"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java index f4572eb..6da4a8d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/rest/PdaController.java @@ -140,4 +140,22 @@ public class PdaController { pdaService.callMaterial(point_code, param.toJSONString()); return PdaUtils.buildSuccessResultJSON(null); } + + @PostMapping("/sendEmpty") + @Log("送空") + @ApiOperation("送空") + @PdaAnnotation + public JSONObject sendEmpty(@RequestBody JSONObject param) { + String point_code = param.getString("point_code"); + if (StrUtil.isBlank(point_code)) { + throw new BadRequestException("点位编码不能为空!"); + } + String vehicle_code = param.getString("vehicle_code"); + if (StrUtil.isBlank(vehicle_code)) { + throw new BadRequestException("载具编码不能为空!"); + } + + pdaService.sendEmpty(point_code, vehicle_code, param.toJSONString()); + return PdaUtils.buildSuccessResultJSON(null); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java index 576d37f..9eaa038 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/PdaService.java @@ -61,4 +61,12 @@ public interface PdaService { * @param point_code 点位编码 */ void callMaterial(String point_code, String request_param); + + /** + * 送空 + * + * @param point_code 点位编码 + * @param vehicle_code 载具编码 + */ + void sendEmpty(String point_code, String vehicle_code, String request_param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java index 8ab4e7c..44efceb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java @@ -13,12 +13,16 @@ import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.basedata.eum.TrueOrFalse; +import org.nl.wms.basedata.eum.VehicleType; import org.nl.wms.pda.service.PdaService; import org.nl.wms.sch.manage.ACSSystem; import org.nl.wms.sch.manage.CreateMode; +import org.nl.wms.sch.manage.PointStatus; import org.nl.wms.sch.manage.Region; import org.nl.wms.sch.task.call.material.FJCallMaterialTask; import org.nl.wms.sch.task.call.material.YZCallMaterialTask; +import org.nl.wms.sch.task.send.empty.FJSendEmptyTask; +import org.nl.wms.sch.task.send.empty.YZSendEmptyTask; import org.nl.wms.sch.task.send.material.FJSendMaterialTask; import org.nl.wms.sch.task.send.material.HLSendMaterialTask; import org.nl.wms.sch.task.send.material.YZSendMaterialTask; @@ -45,19 +49,31 @@ public class PdaServiceImpl implements PdaService { private final FJCallMaterialTask fjCallMaterialTask; + private final YZSendEmptyTask yzSendEmptyTask; + + private final FJSendEmptyTask fjSendEmptyTask; + @Override public JSONArray region(String func) { switch (func) { case "send_material": // 送料 - case "call_material": - // 送料 return WQL .getWO("PDA") .addParam("flag", "1") .addParam("where", "('HL', 'YZ', 'FJ')") .process() .getResultJSONArray(0); + case "call_material": + // 叫料 + case "send_empty": + // 送空 + return WQL + .getWO("PDA") + .addParam("flag", "1") + .addParam("where", "('YZ', 'FJ')") + .process() + .getResultJSONArray(0); default: throw new BadRequestException("未知功能!"); } @@ -131,6 +147,36 @@ public class PdaServiceImpl implements PdaService { default: throw new BadRequestException(region.label() + "没有叫料点位!"); } + case "send_empty": + // 送空 + switch (region) { + case YZ: + JSONArray result = WQL + .getWO("PDA") + .addParam("flag", "2") + .addParam("region_code", region_code) + .addParam("point_type", "('2', '3')") + .process() + .getResultJSONArray(0); + result.addAll(WQL + .getWO("PDA") + .addParam("flag", "2") + .addParam("region_code", Region.KLHJ.value()) + .addParam("point_type", "('3')") + .process() + .getResultJSONArray(0)); + return result; + case FJ: + return WQL + .getWO("PDA") + .addParam("flag", "2") + .addParam("region_code", region_code) + .addParam("point_type", "('1')") + .process() + .getResultJSONArray(0); + default: + throw new BadRequestException(region.label() + "没有送空点位!"); + } default: throw new BadRequestException("未知功能!"); } @@ -174,11 +220,11 @@ public class PdaServiceImpl implements PdaService { TaskUtils.isLocked(point); JSONObject workorder = TaskUtils.hasWorkOrder(point); String vehicle_type = workorder.getString("vehicle_type"); - String device_code = workorder.getString("device_code"); WQLObject vd_table = WQLObject.getWQLObject("st_ivt_vehicle_detail"); JSONObject vd_update = new JSONObject(); vd_update.put("is_delete", TrueOrFalse.TRUE.value()); - vd_table.update(vd_update, "vehicle_type = '" + vehicle_type + "' AND vehicle_code = '" + vehicle_code + "'"); + TaskUtils.addCurrentUpdateColum(vd_update); + vd_table.update(vd_update, "is_delete = '0' AND vehicle_type = '" + vehicle_type + "' AND vehicle_code = '" + vehicle_code + "'"); // 组盘 JSONObject vd = new JSONObject(); @@ -191,17 +237,25 @@ public class PdaServiceImpl implements PdaService { vd.put("is_full", is_full); vd.put("workorder_id", workorder.getString("workorder_id")); vd.put("point_code", point_code); - vd.put("create_id", SecurityUtils.getCurrentUserId()); - vd.put("create_name", SecurityUtils.getCurrentNickName()); + Long user_id = SecurityUtils.getCurrentUserId(); + vd.put("create_id", user_id); + String nick_name = SecurityUtils.getCurrentNickName(); + vd.put("create_name", nick_name); vd.put("create_time", DateUtil.now()); - vd.put("is_delete", "0"); - if (device_code.startsWith("FJ")) { + vd.put("is_delete", TrueOrFalse.FALSE.value()); + + String region_code = point.getString("region_code"); + vd.put("is_fire", TrueOrFalse.FALSE.value()); + if (Region.FJ.value().equals(region_code)) { vd.put("is_fire", TrueOrFalse.TRUE.value()); } - vd.put("is_in_kiln", TrueOrFalse.trueOrFalse(is_full) ? TrueOrFalse.TRUE.value() : TrueOrFalse.FALSE.value()); - if (device_code.startsWith("FJ")) { + vd.put("is_in_kiln", is_full); + if (Region.FJ.value().equals(region_code)) { vd.put("is_in_kiln", TrueOrFalse.FALSE.value()); } + if (Region.FJ.value().equals(region_code)) { + vd.put("is_package", TrueOrFalse.TRUE.value()); + } vd_table.insert(vd); Region region = Region.get(point.getString("region_code")); @@ -211,8 +265,8 @@ public class PdaServiceImpl implements PdaService { method_param.put("vd", vd); method_param.put("create_mode", CreateMode.SCCJ.value()); method_param.put("request_param", request_param); - method_param.put("create_id", SecurityUtils.getCurrentUserId()); - method_param.put("create_name", SecurityUtils.getCurrentNickName()); + method_param.put("create_id", user_id); + method_param.put("create_name", nick_name); switch (region) { case HL: @@ -250,6 +304,7 @@ public class PdaServiceImpl implements PdaService { method_param.put("create_name", SecurityUtils.getCurrentNickName()); switch (region) { + case KLHJ: case YZ: yzCallMaterialTask.createTask(method_param); break; @@ -260,4 +315,54 @@ public class PdaServiceImpl implements PdaService { throw new BadRequestException("[" + region.label() + "] 不能发起叫料任务!"); } } + + @Override + public void sendEmpty(String point_code, String vehicle_code, String request_param) { + JSONObject point = WQLObject + .getWQLObject("sch_base_point") + .query("is_used = '1' AND point_code = '" + point_code + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(point)) { + throw new BadRequestException("[" + point_code + "] 已删除或未启用!"); + } + + JSONObject workorder = WQLObject + .getWQLObject("pdm_bd_workorder") + .query("is_delete = '0' AND device_code = '" + point.getString("device_code") + "' AND order_status = '3'") + .uniqueResult(0); + + Region region = Region.get(point.getString("region_code")); + JSONObject method_param = new JSONObject(); + method_param.put("point", point); + method_param.put("workorder", workorder); + method_param.put("create_mode", CreateMode.SCCJ.value()); + method_param.put("request_param", request_param); + method_param.put("create_id", SecurityUtils.getCurrentUserId()); + method_param.put("create_name", SecurityUtils.getCurrentNickName()); + + switch (region) { + case KLHJ: + WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); + point.put("vehicle_type", VehicleType.CUP.value()); + point.put("vehicle_code", vehicle_code); + point.put("point_status", PointStatus.NOT_EMPTY.value()); + TaskUtils.addCurrentUpdateColum(point); + point_table.update(point); + JSONObject point_update = new JSONObject(); + point_update.put("vehicle_type", ""); + point_update.put("vehicle_code", ""); + point_update.put("point_status", PointStatus.EMPTY.value()); + TaskUtils.addCurrentUpdateColum(point_update); + point_table.update(point_update, "region_code = 'KLHJ' AND point_type = '2' AND vehicle_type = '1' AND vehicle_code = '" + vehicle_code + "'"); + case YZ: + yzSendEmptyTask.createTask(method_param); + break; + case FJ: + method_param.put("vehicle_code", vehicle_code); + fjSendEmptyTask.createTask(method_param); + break; + default: + throw new BadRequestException("[" + region.label() + "] 不能发起送空任务!"); + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java index 34e6f92..736ed46 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/DeviceDto.java @@ -77,4 +77,9 @@ public class DeviceDto implements Serializable { * 设备产能 */ private BigDecimal productivity; + + /** + * 是否工单设备 + */ + private String is_workorder; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java index fca055b..c3c4cdd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/DeviceServiceImpl.java @@ -46,6 +46,7 @@ public class DeviceServiceImpl implements DeviceService { if (!StrUtil.isEmpty(search)) { map.put("search", "%" + search + "%"); } + map.put("is_workorder", MapUtil.getStr(whereJson, "is_workorder")); map.put("region_str", MapUtil.getStr(whereJson, "region_str")); JSONObject json = WQL.getWO("PDM_BI_DEVICE01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "device.device_model ASC, device.device_code ASC"); return json; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_DEVICE01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_DEVICE01.wql index b2de6a3..87eb529 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_DEVICE01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_BI_DEVICE01.wql @@ -16,6 +16,7 @@ 输入.flag TYPEAS s_string 输入.search TYPEAS s_string 输入.region_str TYPEAS f_string + 输入.is_workorder TYPEAS s_string [临时表] @@ -58,7 +59,9 @@ OPTION 输入.region_str <> "" device.region_code IN 输入.region_str ENDOPTION - + OPTION 输入.is_workorder <> "" + device.is_workorder = 输入.is_workorder + ENDOPTION ENDSELECT ENDPAGEQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/SZCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/SZCallMaterialTask.java index 709bbe5..f90783e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/SZCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/SZCallMaterialTask.java @@ -22,24 +22,6 @@ import org.springframework.stereotype.Component; public class SZCallMaterialTask extends AbstractAcsTask { - @Override - public void autoCreate() { - JSONArray points = WQL.getWO("CALL_MATERIAL_TASK").addParam("flag", "2").process().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(points) && !points.isEmpty()) { - JSONObject form = new JSONObject(); - form.put("create_mode", CreateMode.ZDSC.value()); - form.put("create_id", AutoCreate.id); - form.put("create_name", AutoCreate.nick_name); - form.put("request_param", "auto"); - for (int i = 0; i < points.size(); i++) { - JSONObject point = points.getJSONObject(i); - form.put("point", point); - this.createTask(form); - } - } - } - - @Override public void updateTaskStatus(JSONObject task, String status) { if (TaskStatus.EXECUTING.value().equals(status)) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index de3b32e166c6aee8132ba6c5569a9957e4f01ce8..de1dabd5ec63ecadab67d5f6d6b3e4a4a293faf2 100644 GIT binary patch delta 48635 zcmeIb349bq^FQ1@Gr7pk8IF(*AtZqWl8_4o+?<3vTms6GK*AHwga8`O4Tp#~7|nq4 z_~7v%A|ePRQ4yjjmk1G&>p_SJiXsRI$|2@o)jhMjGds(n_~`S#zunJl&wjhQy1Tl% zs=8-pw`8S%$*ca026$W~gv_S!A-~mD8n>=6i9RDpbkuqmVT8~iVn)}j=JO8Iwc#7f z#yxzP&IdYDI!&?&tt(5fNn?F#V!E>oPO!enLLKbW)_4jE+HQ%8CI9?@o%2!`*g2G?n_lVQ7ghRI$AHqq9Rf

~eDA@*EHj(y#m76*?-%!jneMogsn3tP-;FaoJ|jpJ0; z2APYo^uy5Aw<-{Gr7!e(c6dgq*YlpOT@Q1rpsBC*4jwy*@qfG_YNABNCsqvSSX~mE zRhs;K{f5Q!dDf|6PY*90KKKEw=;w8%9pWo<9#cv``}0 z!De(lec_0EsqYJ3rT=-QiQ7>(q};#$*H`+B-t7oI-$eqU5V!L!OM|5bmRjUs_gW*i zfV?_LBQ5CtQow}#-Ak_)Rz3J*>&t^{$u}a7s`^?Znmac+e+)1^<+3^|4IxwD6f}

Nmnbqz> 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ⓈuR3(oyAdEM_5)80J11yPQ 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 V=^>kU3hwj20PY= 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 diff --git a/lms/nladmin-ui/src/utils/nladmin.js b/lms/nladmin-ui/src/utils/nladmin.js index e6bc266..ab52624 100644 --- a/lms/nladmin-ui/src/utils/nladmin.js +++ b/lms/nladmin-ui/src/utils/nladmin.js @@ -234,14 +234,16 @@ export async function blobValidate(data) { * 注:prop,title有一个必传 */ export function flexWidth(prop, tableData, title, num = 0) { - if (tableData.length === 0) { // 表格没数据不做处理 - return - } let flexWidth = 0// 初始化表格列宽 let columnContent = ''// 占位最宽的内容 const canvas = document.createElement('canvas') const context = canvas.getContext('2d') context.font = '14px Microsoft YaHei' + if (tableData.length === 0) { // 表格没数据采用标题 + const width = context.measureText(title) + flexWidth = width.width + 20 + num + return flexWidth + 'px' + } // 获取占位最宽的内容 let index = 0 for (let i = 0; i < tableData.length; i++) { // 循环表格内容,获取表格内容中最长的数据 diff --git a/lms/nladmin-ui/src/views/wms/pdm/device/index.vue b/lms/nladmin-ui/src/views/wms/pdm/device/index.vue index e482a32..7f36884 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/device/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/device/index.vue @@ -33,7 +33,7 @@ :title="crud.status.title" width="600px" > - + @@ -44,7 +44,6 @@ @@ -60,7 +59,6 @@ @@ -75,6 +73,10 @@ + + + + @@ -97,16 +99,46 @@ @selection-change="crud.selectionChangeHandler" > - - - - + + + + - - + + + + +