From 182d4f498b583a550f9330dd47f74f7343ab96d1 Mon Sep 17 00:00:00 2001 From: 18188916393 <2562295436@qq.com> Date: Thu, 1 Sep 2022 15:43:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=80=9F=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/ext/acs/rest/WmsToAcsController.java | 1 + .../wms/ext/acs/rest/WmsToJnController.java | 26 ++++ .../wms/ext/acs/service/WmsToJnService.java | 33 +++++ .../acs/service/impl/AcsToWmsServiceImpl.java | 2 - .../acs/service/impl/WmsToJnServiceImpl.java | 136 ++++++++++++++++++ .../org/nl/wms/ext/acs/wql/WMSTOJN_001.wql | 86 ++++++++++- .../service/impl/HandLoginServiceImpl.java | 17 --- .../wms/sch/manage/buss/CallMaterialTask.java | 21 ++- .../wms/sch/manage/buss/SendMaterialTask.java | 18 ++- .../src/main/java/org/nl/wms/wms.xls | Bin 399872 -> 399872 bytes 10 files changed, 313 insertions(+), 27 deletions(-) diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java index e548a1e..8b7732c 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java @@ -74,4 +74,5 @@ public class WmsToAcsController { + } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToJnController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToJnController.java index 33a3984..049116e 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToJnController.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToJnController.java @@ -101,4 +101,30 @@ public class WmsToJnController { return new ResponseEntity<>(WmsToJnService.queryCurrentOrder(whereJson), HttpStatus.OK); } + @PostMapping("/feedBackInWait") + @Log("反馈入冷却缓冲区") + @ApiOperation("反馈冷却缓冲区") + public ResponseEntity feedBackInWait(@RequestBody Map whereJson) { + return new ResponseEntity<>(WmsToJnService.feedBackInWait(whereJson), HttpStatus.OK); + } + + @PostMapping("/feedBackOutWait") + @Log("反馈出冷却缓冲区") + @ApiOperation("反馈出冷却缓冲区") + public ResponseEntity feedBackOutWait(@RequestBody Map whereJson) { + return new ResponseEntity<>(WmsToJnService.feedBackOutWait(whereJson), HttpStatus.OK); + } + @PostMapping("/feedBackInPartStock") + @Log("反馈半木托入临时库区") + @ApiOperation("反馈半木托入临时库区") + public ResponseEntity feedBackInPartStock(@RequestBody Map whereJson) { + return new ResponseEntity<>(WmsToJnService.feedBackInPartStock(whereJson), HttpStatus.OK); + } + @PostMapping("/feedBackOutPartStock") + @Log("反馈半木托出临时库区") + @ApiOperation("反馈半木托出临时库区") + public ResponseEntity feedBackOutPartStock(@RequestBody Map whereJson) { + return new ResponseEntity<>(WmsToJnService.feedBackOutPartStock(whereJson), HttpStatus.OK); + } + } diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToJnService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToJnService.java index 870c25b..556817a 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToJnService.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToJnService.java @@ -94,5 +94,38 @@ public interface WmsToJnService { Map queryCurrentOrder(Map whereJson); + /** + * 反馈冷却缓冲区 + * + * @param + * @return Map + */ + + Map feedBackInWait(Map whereJson); + /** + * 反馈出冷却缓冲区 + * + * @param + * @return Map + */ + + Map feedBackOutWait(Map whereJson); + /** + * 反馈半木托入临时库区 + * + * @param + * @return Map + */ + + Map feedBackInPartStock(Map whereJson); + /** + * 反馈半木托出临时库区 + * + * @param + * @return Map + */ + + Map feedBackOutPartStock(Map whereJson); + } 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 6244af7..82ae078 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 @@ -110,8 +110,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { Double stewing_time = materiralObj.getDouble("stewing_time"); jsonObject.put("stewing_time", stewing_time); String area_type = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("area_type"); - - //假如是压制下料的几个位置,则要考虑是入输送线 还是入立体库 if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) { //1.首先更新所有输送线的点位状态 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 0957ec5..93a0229 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 @@ -489,5 +489,141 @@ public class WmsToJnServiceImpl implements WmsToJnService { return joo; } + @Override + public Map feedBackInWait(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "InWait"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "10").addParam("task_id", task_id).process().uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject); + log.info("诺力请求嘉耐反馈入冷却缓冲区入参{}", obj.toString()); + String returnResultMsg = HttpRequest.post(URL + method) + .body(String.valueOf(obj)).timeout(timeout) + .execute().body(); + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈入冷却缓冲区成功!"); + } else { + log.info("诺力请求嘉耐反馈入冷却缓冲区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈入冷却缓冲区出参{}", returnResultMsg); + return null; + } + + @Override + public Map feedBackOutWait(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "outWait"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "11").addParam("task_id", task_id).process().uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject); + log.info("诺力请求嘉耐反馈出冷却缓冲区入参{}", obj.toString()); + String returnResultMsg = HttpRequest.post(URL + method) + .body(String.valueOf(obj)).timeout(timeout) + .execute().body(); + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈出冷却缓冲区成功!"); + } else { + log.info("诺力请求嘉耐反馈出冷却缓冲区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈出冷却缓冲区出参{}", returnResultMsg); + return null; + } + + @Override + public Map feedBackInPartStock(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "InPartStock"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "12").addParam("task_id", task_id).process().uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject); + log.info("诺力请求嘉耐反馈半木托入临时库区入参{}", obj.toString()); + String returnResultMsg = HttpRequest.post(URL + method) + .body(String.valueOf(obj)).timeout(timeout) + .execute().body(); + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈半木托入临时库区成功!"); + } else { + log.info("诺力请求嘉耐反馈半木托入临时库区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈半木托入临时库区出参{}", returnResultMsg); + return null; + } + + @Override + public Map feedBackOutPartStock(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_feedbackrecord"); + String value = WQLObject.getWQLObject("sys_param").query("code='IS_CONNECT_JN'").uniqueResult(0).getString("value"); + if (StrUtil.equals(value, "0")) { + return null; + } + String method = "outWait"; + String task_id = (String) whereJson.get("task_id"); + JSONObject jsonObject = WQL.getWO("WMSTOJN_001").addParam("flag", "13").addParam("task_id", task_id).process().uniqueResult(0); + JSONObject obj = new JSONObject(); + obj.put("ticker", "WLXT"); + obj.put("stringData", jsonObject); + log.info("诺力请求嘉耐反馈半木托出临时库区入参{}", obj.toString()); + String returnResultMsg = HttpRequest.post(URL + method) + .body(String.valueOf(obj)).timeout(timeout) + .execute().body(); + JSONObject returnResult = JSONObject.parseObject(returnResultMsg); + String returnStatus = returnResult.getString("status"); + if (StrUtil.isNotEmpty(returnStatus) && returnStatus.equals("1")) { + log.info("诺力请求嘉耐反馈半木托出临时库区成功!"); + } else { + log.info("诺力请求嘉耐反馈半木托出临时库区失败!"); + JSONObject jo = new JSONObject(); + jo.put("record_id", IdUtil.getSnowflake(1, 1).nextId()); + jo.put("method", method); + jo.put("content", obj); + jo.put("create_time", DateUtil.now()); + wo.insert(jo); + } + log.info("诺力请求嘉耐反馈半木托出临时库区出参{}", returnResultMsg); + return null; + } + } 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 4b51743..61f33e7 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 @@ -199,4 +199,88 @@ IF 输入.flag = "8" ENDOPTION ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF + + + IF 输入.flag = "10" + QUERY + SELECT DISTINCT + vehicle_group.material_move_id AS ID, + task.update_time AS INWAITDATE, + task.next_point_code AS LOCDESC + FROM + sch_base_task task + LEFT JOIN st_buss_vehiclegroup vehicle_group ON vehicle_group.vehicle_code = task.vehicle_code + where + 1=1 + OPTION 输入.task_id <> "" + task.task_id = 输入.task_id + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "11" + QUERY + SELECT DISTINCT + vehicle_group.material_move_id AS ID, + task.update_time AS OUTWAITDATE + FROM + sch_base_task task + LEFT JOIN st_buss_vehiclegroup vehicle_group ON vehicle_group.vehicle_code = task.vehicle_code + where + 1=1 + OPTION 输入.task_id <> "" + task.task_id = 输入.task_id + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + + +IF 输入.flag = "12" + QUERY + SELECT DISTINCT + material.material_code AS ITEMCODE, + vehicle_group.qty, + task.next_point_code AS LOCDESC, + "" AS SHOPORDERNO, + task.update_time AS INDATE + FROM + sch_base_task task + LEFT JOIN st_buss_vehiclegroup vehicle_group ON vehicle_group.vehicle_code = task.vehicle_code + LEFT JOIN st_buss_vehicleRelaRecord recordmst ON recordmst.vehicle_code = task.vehicle_code + LEFT JOIN st_buss_vehicleRelaRecordtl recorddtl ON recorddtl.record_id = recordmst.record_id + LEFT JOIN md_me_material material ON material.material_id = recordmst.material_id + where + 1=1 + OPTION 输入.task_id <> "" + task.task_id = 输入.task_id + ENDOPTION + ENDSELECT + ENDQUERY +ENDIF + +IF 输入.flag = "13" + QUERY + SELECT DISTINCT + material.material_code AS ITEMCODE, + vehicle_group.qty, + task.start_point_code AS LOCDESC, + "" AS SHOPORDERNO, + task.update_time AS INDATE + FROM + sch_base_task task + LEFT JOIN st_buss_vehiclegroup vehicle_group ON vehicle_group.vehicle_code = task.vehicle_code + LEFT JOIN st_buss_vehicleRelaRecord recordmst ON recordmst.vehicle_code = task.vehicle_code + LEFT JOIN st_buss_vehicleRelaRecordtl recorddtl ON recorddtl.record_id = recordmst.record_id + LEFT JOIN md_me_material material ON material.material_id = recordmst.material_id + where + 1=1 + OPTION 输入.task_id <> "" + task.task_id = 输入.task_id + ENDOPTION + ENDSELECT + ENDQUERY +ENDIF \ No newline at end of file diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/impl/HandLoginServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/impl/HandLoginServiceImpl.java index ddf6dae..357d385 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/impl/HandLoginServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pda/login/service/impl/HandLoginServiceImpl.java @@ -44,22 +44,6 @@ public class HandLoginServiceImpl implements HandLoginService { JSONObject resultJson = new JSONObject(); String user = jsonObject.get("user"); String password = jsonObject.get("password"); - String device_id = jsonObject.get("device_id"); - if (StrUtil.isEmpty("user")) { - resultJson.put("code", "0"); - resultJson.put("desc", "用户不能为空"); - return resultJson; - } - if (StrUtil.isEmpty("device_id")) { - resultJson.put("code", "0"); - resultJson.put("desc", "设备不能为空"); - return resultJson; - } - if (StrUtil.isEmpty("password")) { - resultJson.put("code", "0"); - resultJson.put("desc", "密码不能为空!"); - return resultJson; - } boolean is_match = false; Long account_id = 0L; try { @@ -86,7 +70,6 @@ public class HandLoginServiceImpl implements HandLoginService { final JwtUserDto jwtUserDto = (JwtUserDto) authentication.getPrincipal(); // 保存在线信息 onlineUserService.save(jwtUserDto, token, null); - JSONObject jo = new JSONObject(); jo.put("user_name", user); jo.put("token", properties.getTokenStartWith() + token); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java index 2d593f6..72b94c8 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/sch/manage/buss/CallMaterialTask.java @@ -13,6 +13,7 @@ import org.nl.utils.SpringContextHolder; import org.nl.wms.WorkProcedureEnum; import org.nl.wms.common.SortingUtil; import org.nl.wms.common.StructFindUtil; +import org.nl.wms.ext.acs.service.impl.WmsToJnServiceImpl; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.AreaEnum; import org.nl.wms.sch.manage.BillTypeEnum; @@ -123,8 +124,8 @@ public class CallMaterialTask extends AbstractAcsTask { StrUtil.equals(next_point_code, "FJJXSXLW301") || StrUtil.equals(next_point_code, "FJJXSXLW302")) { JSONObject jo = new JSONObject(); - jo.put("device_code",next_point_code); - jo.put("vehicle_code",vehicle_code); + jo.put("device_code", next_point_code); + jo.put("vehicle_code", vehicle_code); SortingUtil.record(jo); } //如果是上料位置 则需要去找点位记录表上的托盘记录 @@ -146,6 +147,18 @@ public class CallMaterialTask extends AbstractAcsTask { startPointObj.put("vehicle_code", ""); pointTab.update(startPointObj); taskTab.update(jsonTask); + //2是出窑缓存货架,调用反馈出冷却缓冲区 + //3是木托盘缓存货架,调用反馈半木托出临时库区 + String point_type = startPointObj.getString("point_type"); + JSONObject jo = new JSONObject(); + jo.put("task_id", task_id); + WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); + if (StrUtil.equals(point_type, AreaEnum.CYHCHJ.getCode())) { + // wmsToJnServiceImpl.feedBackOutWait(jo); + } + if (StrUtil.equals(point_type, AreaEnum.MTPQ.getCode())) { + // wmsToJnServiceImpl.feedBackOutPartStock(jo); + } } } @@ -208,7 +221,7 @@ public class CallMaterialTask extends AbstractAcsTask { String pcsn = form.getString("pcsn"); String is_full = form.getString("is_full"); String workprocedure_id = form.getString("workprocedure_id"); - String group_device= form.getString("group_device"); + String group_device = form.getString("group_device"); WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task"); String iostorinv_id = form.getString("iostorinv_id"); if (StrUtil.isEmpty(next_point_code)) { @@ -314,7 +327,7 @@ public class CallMaterialTask extends AbstractAcsTask { param.put("area_type", startArea_type); param.put("workprocedure_id", ivt_workprocedure_id); param.put("is_full", is_full); - param.put("group_device",group_device); + param.put("group_device", group_device); JSONObject outStructObj = StructFindUtil.getOutStruct(param); if (ObjectUtil.isEmpty(outStructObj)) { throw new BadRequestException("未找到合适的出库仓位!"); 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 d726352..7e7622c 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 @@ -122,11 +122,23 @@ public class SendMaterialTask extends AbstractAcsTask { startPointObj.put("vehicle_code", ""); pointTab.update(startPointObj); taskTab.update(jsonTask); - //调用接口反馈给嘉耐 搬运任务 + String point_type = endpointObj.getString("point_type"); + //1压机下料货架调用接口反馈给嘉耐 搬运任务 + //2是出窑缓存货架,调用反馈入冷却缓冲区 + //3是木托盘缓存货架,调用反馈半木托入临时库区 JSONObject jo = new JSONObject(); jo.put("task_id", task_id); WmsToJnServiceImpl wmsToJnServiceImpl = new WmsToJnServiceImpl(); - // wmsToJnServiceImpl.feedBackCarryRecord(jo); + if (StrUtil.equals(point_type,AreaEnum.RYHCHJ.getCode())){ + // wmsToJnServiceImpl.feedBackCarryRecord(jo); + } + if (StrUtil.equals(point_type,AreaEnum.CYHCHJ.getCode())){ + // wmsToJnServiceImpl.feedBackInWait(jo); + } + if (StrUtil.equals(point_type,AreaEnum.MTPQ.getCode())){ + // wmsToJnServiceImpl.feedBackInPartStock(jo); + } + } } @@ -347,7 +359,7 @@ public class SendMaterialTask extends AbstractAcsTask { JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code) .process().uniqueResult(0); if (StrUtil.equals(WorkProcedureEnum.YZGX.getCode(), workInfo.getString("workprocedure_code")) - ||StrUtil.equals(WorkProcedureEnum.FJGX.getCode(), workInfo.getString("workprocedure_code"))) { + || StrUtil.equals(WorkProcedureEnum.FJGX.getCode(), workInfo.getString("workprocedure_code"))) { WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup"); JSONObject groupInfo = groupTable.query("group_id='" + group_id + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(groupInfo)) { 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 e1ae4e95e21005453a50b281e7a785fcc8437261..fe959cd2a29f0effcb8e700d724bc414ce6d2e41 100644 GIT binary patch delta 20285 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 delta 20585 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