From 60414655e7db5afe70998760eef8981a2f8e3c17 Mon Sep 17 00:00:00 2001 From: ludj Date: Sun, 25 Jun 2023 16:44:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/nl/wms/common/KilnUtil.java | 2 +- .../wms/ext/acs/rest/AcsToWmsController.java | 10 ++ .../wms/ext/acs/service/AcsToWmsService.java | 8 ++ .../acs/service/impl/AcsToWmsServiceImpl.java | 120 ++++++++++++++++++ .../acs/service/impl/WmsToJnServiceImpl.java | 9 +- .../org/nl/wms/ext/acs/wql/WMSTOJN_001.wql | 41 +++--- .../wms/sch/manage/buss/FmjToPackIngTask.java | 15 +++ .../sch/manage/buss/SendEmptyVehicleTask.java | 9 ++ .../wms/sch/manage/buss/SendMaterialTask.java | 10 ++ .../nl/wms/sch/manage/buss/ToPackIngTask.java | 21 ++- .../src/main/java/org/nl/wms/wms.xls | Bin 402944 -> 430592 bytes 11 files changed, 218 insertions(+), 27 deletions(-) diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java index 007db01..91367c1 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/common/KilnUtil.java @@ -42,7 +42,7 @@ public class KilnUtil { KilnQueue.offer(vehicle_code); //更新窑设备记录表 WQLObject recordTable = WQLObject.getWQLObject("pdm_bi_kilnrecord"); - JSONObject vehicleObj = recordTable.query("vehicle_code='"+vehicle_code+"'and out_time=''").uniqueResult(0); + JSONObject vehicleObj = recordTable.query("vehicle_code='"+vehicle_code+"'and out_time=''","in_time desc").uniqueResult(0); if (ObjectUtil.isEmpty(vehicleObj)) { throw new BadRequestException("未找到信息"); } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 1b0b2e7..ab9678d 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -137,4 +137,14 @@ public class AcsToWmsController { public ResponseEntity deleteTask(@RequestBody Map whereJson) { return new ResponseEntity<>(acsToWmsService.deleteTask(whereJson), HttpStatus.OK); } + + @PostMapping("/switchStation") + //@Log("ACS机械手给WMS发送任务") + @ApiOperation("ACS分拣机械手切换工位") + public ResponseEntity switchStation(@RequestBody Map whereJson) { + return new ResponseEntity<>( acsToWmsService.switchStation(whereJson),HttpStatus.OK); + } + + + } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 8f2c43b..d91952b 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -130,4 +130,12 @@ public interface AcsToWmsService { */ Map deleteTask(Map jsonObject); + + + /** + * 切盘操作 + * @return Map + */ + Map switchStation(Map jsonObject); + } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index fe36d93..214ce91 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -1,6 +1,7 @@ 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; @@ -110,6 +111,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { jsonObject.put("start_point_code", device_code); jsonObject.put("create_mode", "01"); jsonObject.put("group_id", group_id); + + // 假如是半托缓存的几个位置,强制去包装 String area_type = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("area_type"); if (StrUtil.equals(area_type, AreaEnum.BTHCQ.getCode())) { @@ -151,6 +154,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (StrUtil.isEmpty(vehicle_code)) { throw new BadRequestException("载具不能为空!"); } + KilnUtil.outKiln(vehicle_code); JSONObject vehicleObj = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='" + vehicle_code + "'", "create_time desc").uniqueResult(0); if (ObjectUtil.isEmpty(vehicleObj)) { throw new BadRequestException("为找到载具号为'" + vehicle_code + "'的组盘信息!"); @@ -995,6 +999,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } + public static JSONObject getProduceInfoByCode(String code) { // 根据 设备点位去找生产任务信息 // 1 根据点位去找设备,去找对应的设备信息 @@ -1008,4 +1013,119 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return productTaskObj; } + + @Transactional + @Override + public Map switchStation(Map jsonObject) { + log.debug("ACS的switchStation请求参数为:" + jsonObject); + + //载具点位记录表【SCH_BASE_vehiclePointRecord】 + WQLObject recordTab = WQLObject.getWQLObject("SCH_BASE_vehiclePointRecord"); + //机械手编码 + String point_code = MapUtil.getStr(jsonObject, "device_code"); + //当前码垛位 + String present_palleting_station = MapUtil.getStr(jsonObject, "present_palleting_station"); + //当前拆垛位 + String present_stripping_station = MapUtil.getStr(jsonObject, "present_stripping_station"); + //上一个拆剁位,=0 时表示未开始抓取 + String last_stripping_station = MapUtil.getStr(jsonObject, "last_stripping_station"); //上一个拆剁位,=0 时表示未开始抓取 + //上一次码垛位 + String last_palleting_station = MapUtil.getStr(jsonObject, "last_palleting_station"); + + + //FJJXS1 拆 FJJXS2 码垛位 FJJXS3 拆码垛 + //托盘物料组盘表【st_buss_vehiclegroup】 + WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup"); + //点位基础表【SCH_BASE_Point】 + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); + + + //更新上一个拆剁位或者码垛位结束时间 + if (!StrUtil.equals("0", last_stripping_station) && StrUtil.isNotEmpty(last_stripping_station)) { + JSONObject point = pointTab.query("point_code = '" + last_stripping_station + "'").uniqueResult(0); + JSONObject p1 = recordTab.query("is_delete = '0' and vehicle_code = '" + point.getString("vehicle_code") + "' and (end_time = '' or end_time is null)").uniqueResult(0); + if (ObjectUtil.isNotEmpty(p1)) { + p1.put("end_time", DateUtil.now()); + recordTab.update(p1); + } + + } + + //更新上一个拆剁位或者码垛位结束时间 + if (!StrUtil.equals("0", last_palleting_station) && StrUtil.isNotEmpty(last_palleting_station)) { + JSONObject point = pointTab.query("point_code = '" + last_palleting_station + "'").uniqueResult(0); + JSONObject p1 = recordTab.query("is_delete = '0' and vehicle_code = '" + point.getString("vehicle_code") + "' and (end_time = '' or end_time is null)").uniqueResult(0); + if (ObjectUtil.isNotEmpty(p1)) { + p1.put("end_time", DateUtil.now()); + recordTab.update(p1); + } + + } + + + + + // 分拣机械手拆码垛(上料)位(钢托盘组盘信息) + if (StrUtil.equals("FJJXSSLW101", present_stripping_station) || StrUtil.equals("FJJXSSLW102", present_stripping_station) || StrUtil.equals("FJJXSSLW301", present_stripping_station) || StrUtil.equals("FJJXSSLW302", present_stripping_station)) { + JSONObject point = pointTab.query("point_code = '" + present_stripping_station + "'").uniqueResult(0); + + JSONObject param = new JSONObject(); + param.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("point_code", present_stripping_station); + param.put("vehicle_code", point.getString("vehicle_code")); + + //根据载具号获取到组盘信息 + JSONObject groupObj = groupTab.query("vehicle_code = '" + point.getString("vehicle_code") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(groupObj)) { + param.put("material_move_id", groupObj.getString("material_move_id")); + param.put("producetask_id", groupObj.getString("producetask_id")); + } + param.put("start_time", DateUtil.now()); + recordTab.insert(param); + + //根据上料位钢托盘物料信息更新下料位木托盘信息 + if (StrUtil.equals("FJJXSSLW101", present_stripping_station) || StrUtil.equals("FJJXSSLW102", present_stripping_station)) { + JSONObject record1 = recordTab.query("is_delete='0' and (point_code='FJJXSXLW201' or point_code='FJJXSXLW202') and (end_time = '' or end_time is null)").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)) { + record1.put("source_record_id", param.getString("record_id")); + recordTab.update(record1); + } + } else { + JSONObject record1 = recordTab.query("is_delete='0' and (point_code='FJJXSXLW301' or point_code='FJJXSXLW301') and (end_time = '' or end_time is null)").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)) { + record1.put("source_record_id", param.getString("record_id")); + recordTab.update(record1); + } + } + } + + //分拣机械手下料(码垛)位 + if (StrUtil.equals("FJJXSXLW201", present_palleting_station) || StrUtil.equals("FJJXSXLW202", present_palleting_station) || StrUtil.equals("FJJXSXLW301", present_palleting_station) || StrUtil.equals("FJJXSXLW302", present_palleting_station)) { + //根据上料位钢托盘物料信息更新下料位木托盘信息 + String source_record_id = ""; + if (StrUtil.equals("FJJXSXLW201", present_palleting_station) || StrUtil.equals("FJJXSXLW202", present_palleting_station)) { + JSONObject record1 = recordTab.query("is_delete='0' and (point_code='FJJXSSLW101' or point_code='FJJXSSLW102') and (end_time = '' or end_time is null)").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)) source_record_id = record1.getString("record_id"); + } else { + JSONObject record1 = recordTab.query("is_delete='0' and (point_code='FJJXSSLW301' or point_code='FJJXSSLW302') and (end_time = '' or end_time is null)").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)) source_record_id = record1.getString("record_id"); + } + + JSONObject point = pointTab.query("point_code = '" + present_palleting_station + "'").uniqueResult(0); + JSONObject param = new JSONObject(); + param.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("source_record_id", source_record_id); + param.put("point_code", present_palleting_station); + param.put("vehicle_code", point.getString("vehicle_code")); + param.put("start_time", DateUtil.now()); + recordTab.insert(param); + } + + + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "机械手切换申请成功!"); + result.put("data", new JSONObject()); + return result; + } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java index 053108a..9a19629 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToJnServiceImpl.java @@ -18,6 +18,7 @@ import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -571,10 +572,16 @@ public class WmsToJnServiceImpl implements WmsToJnService { .addParam("vehicle_code", vehicle_code) .process() .uniqueResult(0); + Date date = DateUtil.date(); + //产品入库批次号(唯一) + String pc = DateUtil.format(date, "yyyyMMddHHmmss"); + mstObj.put("PC",pc); + mstObj.put("RECORD_TIME",DateUtil.now()); + JSONArray dtlarr = WQL.getWO("WMSTOJN_001") .addParam("flag", "8") - .addParam("record_id", mstObj.getString("record_id")) + .addParam("vehicle_code", vehicle_code) .process() .getResultJSONArray(0); mstObj.put("DETAILS", dtlarr); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/WMSTOJN_001.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/WMSTOJN_001.wql index 81f8575..a10e923 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/WMSTOJN_001.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/wql/WMSTOJN_001.wql @@ -84,6 +84,7 @@ OPTION 输入.vehicle_code <> "" kiln.vehicle_code = 输入.vehicle_code ENDOPTION + ORDER BY in_time desc ENDSELECT ENDQUERY ENDIF @@ -170,20 +171,16 @@ IF 输入.flag = "5" IF 输入.flag = "8" QUERY - SELECT - dtl.material_move_id AS ID, - task.ext_shoporder_no AS SHOPORDERNO, - dtl.vehicle_code AS STOCKNO, - "0" AS QTY - FROM - st_buss_vehiclerelarecordtl dtl - LEFT JOIN st_buss_vehicleRelaRecord mst ON mst.record_id = dtl.record_id - LEFT JOIN pdm_mg_producetask task ON task.producetask_id = dtl.producetask_id - where - 1=1 - OPTION 输入.record_id <> "" - record.record_id = 输入.record_id - ENDOPTION + SELECT + r.material_move_id as ID , + t.ext_shoporder_no as SHOPORDERNO, + r.vehicle_code as STOCKNO, + 0 as QTY + FROM + SCH_BASE_vehiclePointRecord r + LEFT JOIN pdm_mg_producetask t on r.producetask_id=t.producetask_id + WHERE + record_id IN ( SELECT source_record_id FROM SCH_BASE_vehiclePointRecord WHERE vehicle_code = 输入.vehicle_code ) ENDSELECT ENDQUERY ENDIF @@ -193,19 +190,17 @@ IF 输入.flag = "8" IF 输入.flag = "9" QUERY SELECT - material.material_code AS ITEMCODE, - mst.pc AS pc, - mst.vehicle_code AS PROD_STOCKNO, - mst.packing_time AS RECORD_TIME, - vehiclegroup.qty AS TOTALQTY + '' as SHOPORDERNO, + v.material_code as ITEMCODE, + r.vehicle_code as PROD_STOCKNO, + v.qty as TOTALQTY FROM - st_buss_vehicleRelaRecord mst - LEFT JOIN st_buss_vehiclegroup vehiclegroup ON vehiclegroup.vehicle_code = mst.vehicle_code - LEFT JOIN md_me_material material ON material.material_id = mst.material_id + SCH_BASE_vehiclePointRecord r + LEFT JOIN st_buss_vehiclegroup v ON v.vehicle_code = r.vehicle_code where 1=1 OPTION 输入.vehicle_code <> "" - mst.vehicle_code = 输入.vehicle_code + r.vehicle_code = 输入.vehicle_code ENDOPTION ENDSELECT ENDQUERY diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java index d013854..8b92b97 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/FmjToPackIngTask.java @@ -107,6 +107,8 @@ public class FmjToPackIngTask extends AbstractAcsTask { } param.put("struct_id", startPointDto.getPoint_id()); ivtService.addIvtFlow(param, IvtChangeTypeEnum.SUB_IVT); + + //调用mes接口 HashMap map = new HashMap(); map.put("vehicle_code",jsonTask.getString("vehicle_code")); @@ -143,6 +145,8 @@ public class FmjToPackIngTask extends AbstractAcsTask { String pcsn = ivtObj.getString("pcsn"); String vehicle_code = ivtObj.getString("vehicle_code"); WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); + + if (StrUtil.isEmpty(start_point_code)) { throw new BadRequestException("起点不能为空!"); } @@ -218,6 +222,17 @@ public class FmjToPackIngTask extends AbstractAcsTask { taskObj.put("create_time", DateUtil.now()); taskObj.put("is_delete", "0"); taskTable.insert(taskObj); + + //结束木托和钢托绑定时间 + // 载具点位记录表【SCH_BASE_vehiclePointRecord】 + WQLObject recordTab = WQLObject.getWQLObject("SCH_BASE_vehiclePointRecord"); + JSONObject record1 = recordTab.query("is_delete='0' and point_code = '"+start_point_code+"' and (end_time = '' or end_time is null)","start_time desc").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)){ + record1.put("end_time", DateUtil.now()); + recordTab.update(record1); + } + + return task_id; } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java index 7aa3ba5..73384d4 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendEmptyVehicleTask.java @@ -158,6 +158,15 @@ public class SendEmptyVehicleTask extends AbstractAcsTask { taskObj.put("create_time", DateUtil.now()); taskObj.put("is_delete", "0"); taskTable.insert(taskObj); + + //结束木托和钢托绑定时间 + // 载具点位记录表【SCH_BASE_vehiclePointRecord】 + WQLObject recordTab = WQLObject.getWQLObject("SCH_BASE_vehiclePointRecord"); + JSONObject record1 = recordTab.query("is_delete='0' and point_code = '"+start_point_code+"' and (end_time = '' or end_time is null)","start_time desc").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)){ + record1.put("end_time", DateUtil.now()); + recordTab.update(record1); + } return task_id; } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java index ac955ab..47fd17f 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/SendMaterialTask.java @@ -260,6 +260,7 @@ public class SendMaterialTask extends AbstractAcsTask { qty_unit_id = BussConstant.YZ_IN_QTY_UNIT_ID; bill_type = BillTypeEnum.SZRK.getCode(); endArea_type = AreaEnum.CYHCHJ.getCode(); + break; // 分拣工序 case FJGX: @@ -357,6 +358,15 @@ public class SendMaterialTask extends AbstractAcsTask { groupTable.update(groupInfo); } } + + //结束木托和钢托绑定时间 + // 载具点位记录表【SCH_BASE_vehiclePointRecord】 + WQLObject recordTab = WQLObject.getWQLObject("SCH_BASE_vehiclePointRecord"); + JSONObject record1 = recordTab.query("is_delete='0' and point_code = '"+start_point_code+"' and (end_time = '' or end_time is null)","start_time desc").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)){ + record1.put("end_time", DateUtil.now()); + recordTab.update(record1); + } return task_id; } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java index a00e622..cee0b25 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/ToPackIngTask.java @@ -60,8 +60,15 @@ public class ToPackIngTask extends AbstractAcsTask { WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 将起点的载具清除 JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0); - // 假如起点是码垛位置则不需要更新 + startPointObj.put("lock_type", "00"); + startPointObj.put("point_status", "00"); + startPointObj.put("vehicle_code", ""); + startPointObj.put("update_time", DateUtil.now()); + pointTab.update(startPointObj); + + /* // 假如起点是码垛位置则不需要更新 if (!(StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW201") + || StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW202") || StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW301") || StrUtil.equals(jsonTask.getString("start_point_code"), "FJJXSXLW302"))) { @@ -71,7 +78,17 @@ public class ToPackIngTask extends AbstractAcsTask { startPointObj.put("vehicle_code", ""); startPointObj.put("update_time", DateUtil.now()); pointTab.update(startPointObj); + }*/ + //结束木托和钢托绑定时间 + // 载具点位记录表【SCH_BASE_vehiclePointRecord】 + WQLObject recordTab = WQLObject.getWQLObject("SCH_BASE_vehiclePointRecord"); + JSONObject record1 = recordTab.query("is_delete='0' and point_code = '"+jsonTask.getString("start_point_code")+"' and (end_time = '' or end_time is null) and vehicle_code = '"+jsonTask.getString("vehicle_code")+"'","start_time desc").uniqueResult(0); + if (ObjectUtil.isNotEmpty(record1)){ + record1.put("end_time", DateUtil.now()); + recordTab.update(record1); } + + // 调用mes接口 HashMap map = new HashMap(); map.put("vehicle_code", jsonTask.getString("vehicle_code")); @@ -82,7 +99,7 @@ public class ToPackIngTask extends AbstractAcsTask { WQLObject group_Table = WQLObject.getWQLObject("st_buss_vehiclegroup"); JSONObject groupObj = group_Table.query("vehicle_code='" + jsonTask.getString("vehicle_code") + "' and is_delete='0'").uniqueResult(0); if (ObjectUtil.isNotEmpty(groupObj)) { - groupObj.put("is_delete", "0"); + groupObj.put("is_delete", "1"); group_Table.update(groupObj); } } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls b/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls index 18e7f2a1180a3ea5f1736ea91f191cf9b311a11e..422862d8ff2c3c25b863ba9c2a416f914fdacba9 100644 GIT binary patch delta 49319 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 delta 25788 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