From 1259a360a3f0c74f3d190f1ad7abc17b055eab00 Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 2 Nov 2022 14:27:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/ext/acs/rest/WmsToAcsController.java | 9 ++ .../wms/ext/acs/service/WmsToAcsService.java | 7 + .../acs/service/impl/WmsToAcsServiceImpl.java | 6 + .../mes/service/impl/LmsToMesServiceImpl.java | 2 +- .../mes/service/impl/MesToLmsServiceImpl.java | 114 ++++++++++++++-- .../wms/pda/mps/rest/RawFoilController.java | 1 - .../nl/wms/pda/mps/service/BakingService.java | 2 +- .../wms/pda/mps/service/RawFoilService.java | 4 +- .../mps/service/impl/BakingServiceImpl.java | 71 +++------- .../mps/service/impl/RawFoilServiceImpl.java | 129 +++++++----------- .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 246784 -> 246784 bytes .../src/main/java/org/nl/wms/sch/sch.xls | Bin 177152 -> 177152 bytes .../org/nl/wms/sch/tasks/CallEmpReelTask.java | 36 +++-- .../org/nl/wms/sch/tasks/InCoolIvtTask.java | 11 +- .../java/org/nl/wms/sch/tasks/InHotTask.java | 19 ++- .../java/org/nl/wms/sch/tasks/OutHotTask.java | 16 ++- .../src/views/wms/st/outbill/DivDialog.vue | 11 +- 17 files changed, 265 insertions(+), 173 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java index 4b72d308b..51816c776 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/WmsToAcsController.java @@ -79,4 +79,13 @@ public class WmsToAcsController { } + @PostMapping("/updateTask") + @Log("WMS向acs发送更新任务状态") + @ApiOperation("WMS向acs发送更新任务状态") + public ResponseEntity updateTask(@RequestBody Map whereJson) { + JSONArray arr = JSONArray.parseArray(JSON.toJSONString(whereJson.get("data"))); + return new ResponseEntity<>(wmsToAcsService.updateTask(arr), HttpStatus.OK); + } + + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index 3735345de..5fc098b00 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -55,4 +55,11 @@ public interface WmsToAcsService { * @return */ JSONObject getPointStatus(JSONArray whereJson); + + /** + * 更新任务状态 + * @param arr / + * @return JSONObject + */ + JSONObject updateTask(JSONArray arr); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 9c28278bb..5a611446d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -54,4 +54,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return AcsUtil.notifyAcs(api, whereJson); } + @Override + public JSONObject updateTask(JSONArray whereJson) { + String api = "api/wms/updateTask"; + return AcsUtil.notifyAcs(api, whereJson); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java index 1aa35985c..56249c0ed 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java @@ -20,7 +20,7 @@ import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor @Slf4j -public class LmsToMesServiceImpl implements LmsToMesService { +public class LmsToMesServiceImpl implements LmsToMesService { /** * LMS的PDA操作AGV下卷,AGV称重完成后AGV称重信息发送MES diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java index 23c336677..6d99246bd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java @@ -10,9 +10,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.ext.mes.service.MesToLmsService; import org.nl.wms.log.LokiLog; import org.nl.wms.log.LokiLogType; +import org.nl.wms.pda.mps.service.impl.BakingServiceImpl; import org.springframework.stereotype.Service; import sun.security.krb5.internal.crypto.Des; @@ -210,13 +212,40 @@ public class MesToLmsServiceImpl implements MesToLmsService { @Override public JSONObject momRollFoilComplete(JSONObject param) { log.info("momRollFoilComplete接口输入参数为:-------------------" + param.toString()); - JSONObject result = new JSONObject(); - result.put("RTYPE", "S"); - result.put("RTMSG", "操作成功!"); - result.put("RTOAL", 1); - result.put("RTDAT", null); - System.out.println(result); + + WQLObject sbTab = WQLObject.getWQLObject("st_ivt_sbpointivt"); // 生箔点位库存表 + + try { + String resourceName = param.getString("ResourceName"); + if (ObjectUtil.isEmpty(resourceName)) throw new BadRequestException("机台编码不能为空"); + + JSONObject jsonSb = sbTab.query("ext_code = '" + resourceName + "' and is_used = '1'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonSb)) throw new BadRequestException("点位设备不存在"); + + // 下发ACS更改任务状态 + JSONArray paramArr = new JSONArray(); + JSONObject json = new JSONObject(); + json.put("device_code", jsonSb.getString("point_code")); + json.put("option ", "2"); + paramArr.add(json); + + JSONObject resultAcs = new WmsToAcsServiceImpl().updateTask(paramArr); + if (!StrUtil.equals(resultAcs.getString("status"), "200")) { + throw new BadRequestException(resultAcs.getString("message ")); + } + + result.put("RTYPE", "S"); + result.put("RTMSG", "操作成功!"); + result.put("RTOAL", 1); + result.put("RTDAT", resultAcs); + } catch (Exception e) { + result.put("RTYPE", "1"); + result.put("RTMSG", "操作失败!"+e.getMessage()); + result.put("RTOAL", 1); + result.put("RTDAT", null); + } + log.info("momRollFoilComplete接口输出参数为:-------------------" + result.toString()); return result; } @@ -230,13 +259,74 @@ public class MesToLmsServiceImpl implements MesToLmsService { @Override public JSONObject momRollBakeNextSpecTransfer(JSONObject param) { log.info("momRollBakeNextSpecTransfer接口输入参数为:-------------------" + param.toString()); - JSONObject result = new JSONObject(); - result.put("RTYPE", "S"); - result.put("RTMSG", "操作成功!"); - result.put("RTOAL", 1); - result.put("RTDAT", null); - System.out.println(result); + + WQLObject coolIvtTab = WQLObject.getWQLObject("ST_IVT_CoolPointIvt"); // 冷却区点位库存表 + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 + + JSONObject jsonParam = new JSONObject(); + try { + String containerName = param.getString("ContainerName"); // 母卷号 + String nextSpec = param.getString("NextSpec"); // 下工序:1-入烘箱,2-入冷却 + String bakingTemperature = param.getString("BakingTemperature"); // 温度 + String bakingTimer = param.getString("BakingTimer"); // 烘烤时间 + + if (ObjectUtil.isEmpty(containerName)) throw new BadRequestException("母卷号不能为空"); + if (ObjectUtil.isEmpty(nextSpec)) throw new BadRequestException("下工序不能为空"); + + if (StrUtil.equals(nextSpec, "1")) { + /* + * 入烘箱 + */ + if (ObjectUtil.isEmpty(bakingTemperature)) throw new BadRequestException("温度不能为空"); + if (ObjectUtil.isEmpty(bakingTimer)) throw new BadRequestException("烘烤时间不能为空"); + + JSONObject jsonCoolIvt = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '03'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonCoolIvt)) throw new BadRequestException("母卷不存在或已烘烤完成"); + + // 调用接口输入参数 + jsonParam.put("option", "1"); + jsonParam.put("container_name", containerName); + jsonParam.put("temperature", bakingTemperature); + jsonParam.put("hours", bakingTimer); + jsonParam.put("point_code", jsonCoolIvt.getString("full_point_code")); + + // 调用手持接口 + BakingServiceImpl bakingService = new BakingServiceImpl(); + bakingService.ovenInAndOut(jsonParam); + + result.put("RTYPE", "S"); + result.put("RTMSG", "操作成功!"); + result.put("RTOAL", 1); + result.put("RTDAT", null); + } else { + /* + * 入冷却区 + */ + JSONObject jsonPoint = pointTab.query("material_code = '" + containerName + "' and is_delete = '0' and is_used = '1'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonPoint)) throw new BadRequestException("母卷不存在"); + + // 调用接口输入参数 + jsonParam.put("point_code", jsonPoint.getString("point_code")); + jsonParam.put("container_name", containerName); + + // 调用手持接口 + BakingServiceImpl bakingService = new BakingServiceImpl(); + bakingService.inCoolIvt(jsonParam); + + result.put("RTYPE", "S"); + result.put("RTMSG", "操作成功!"); + result.put("RTOAL", 1); + result.put("RTDAT", null); + } + } catch (Exception e) { + result.put("RTYPE", "1"); + result.put("RTMSG", "操作失败!"+e.getMessage()); + result.put("RTOAL", 1); + result.put("RTDAT", null); + } + + log.info("momRollBakeNextSpecTransfer接口输出参数为:-------------------" + result.toString()); return result; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java index 51122feeb..730720912 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java @@ -48,7 +48,6 @@ public class RawFoilController { @Log("呼叫空轴") @ApiOperation("呼叫空轴") public ResponseEntity needEmptyAxis(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(rawFoilService.needEmptyAxis(whereJson), HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java index 2131c05e3..ef53194c7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java @@ -12,7 +12,7 @@ public interface BakingService { JSONObject ovenInAndOut(JSONObject whereJson); /** - * 烘箱出入 + * 入冷却 * @param whereJson / * @return JSONObject */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java index dc1251681..3d4925524 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java @@ -26,14 +26,14 @@ public interface RawFoilService { JSONObject queryRawFoilList(JSONObject whereJson); /** - * 确认下卷 + * 呼叫空卷轴 * @param whereJson / * @return JSONObject */ JSONObject needEmptyAxis(JSONObject whereJson); /** - * 查询生箔工单 + * 下卷确认 * @param whereJson / * @return JSONObject */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java index 4fb6b9900..90a3993ab 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java @@ -53,6 +53,8 @@ public class BakingServiceImpl implements BakingService { WQLObject hosIvtTab = WQLObject.getWQLObject("ST_IVT_HotPointIvt"); // 烤箱区点位库存表 WQLObject hosReMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); // 烤箱区出入主表 WQLObject coolTab = WQLObject.getWQLObject("ST_IVT_CoolRegionIO"); // 冷却区出入表 + WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 + WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 if (StrUtil.equals(option, "1")) { @@ -100,15 +102,6 @@ public class BakingServiceImpl implements BakingService { hotParam.put("temperature", temperature); hotParam.put("oven_time", hours); this.createHotDtl(hotParam); - - // 4.下发任务 - /*JSONObject jsonObject = inHotTask.renotifyAcs(task_id); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - // 成功返回 更新任务状态 - JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); - jsonTask.put("task_status", "05"); - taskTab.update(jsonTask); - }*/ } else { /* * 冷却区入烘箱 @@ -201,15 +194,19 @@ public class BakingServiceImpl implements BakingService { Long currentUserId = SecurityUtils.getCurrentUserId(); String currentUsername = SecurityUtils.getCurrentUsername(); + JSONObject jsonRaw = rawTab.query("container_name = '" + container_name + "' and is_delete = '0'").uniqueResult(0); + JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonMater)) throw new BadRequestException("物料不存在"); + JSONObject jsonCool = new JSONObject(); jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "1"); - jsonCool.put("material_id", ""); - jsonCool.put("pcsn", ""); + jsonCool.put("material_id", jsonMater.getString("material_id")); + jsonCool.put("pcsn", container_name); jsonCool.put("bill_status", "10"); jsonCool.put("task_id", task_id); - jsonCool.put("qty_unit_id", "1"); + jsonCool.put("qty_unit_id", jsonMater.getString("base_unit_id")); jsonCool.put("start_point_code", point_code1); jsonCool.put("end_point_code", jsonHotIvt.getString("point_code")); jsonCool.put("create_mode", "03"); @@ -223,19 +220,6 @@ public class BakingServiceImpl implements BakingService { jsonCool.put("confirm_optname", currentUsername); jsonCool.put("confirm_time", DateUtil.now()); coolTab.insert(jsonCool); - - // 5.下发任务 - /* JSONObject jsonObject = inHotTask.renotifyAcs(task_id); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - // 成功返回 更新任务状态 - JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); - jsonTask.put("task_status", "05"); - taskTab.update(jsonTask); - - // 更新烘烤区主表状态为执行中 - JSONObject jsonHotMst = hosReMstTab.query("container_name = '" + container_name + "' and is_delete = '0'").uniqueResult(0); - jsonHotMst.put("bill_status", "40"); - }*/ } } else if (StrUtil.equals(option, "2")) { // 出箱 @@ -287,6 +271,7 @@ public class BakingServiceImpl implements BakingService { JSONObject param = new JSONObject(); param.put("point_code1", point_code1); param.put("point_code2", point_code2); + param.put("material_code", jsonHotIvt.getString("container_name")); OutHotTask outHotTask = new OutHotTask(); String task_id = outHotTask.createTask(param); @@ -301,15 +286,6 @@ public class BakingServiceImpl implements BakingService { hotParam.put("start_point_code", point_code1); hotParam.put("next_point_code", point_code2); this.createHotDtl(hotParam); - - // 5.下发任务 - /* JSONObject jsonObject = outHotTask.immediateNotifyAcs(); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - // 成功返回 更新任务状态 - JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); - jsonTask.put("task_status", "05"); - taskTab.update(jsonTask); - }*/ } JSONObject result = new JSONObject(); result.put("message", "操作成功!"); @@ -319,10 +295,12 @@ public class BakingServiceImpl implements BakingService { @Override @Transactional public JSONObject inCoolIvt(JSONObject whereJson) { - WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); - WQLObject hotMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位点 + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 + WQLObject hotMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); // 烘箱出入主表 WQLObject coolTab = WQLObject.getWQLObject("ST_IVT_CoolRegionIO"); // 冷却区出入表 + WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 + WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 String point_code1 = whereJson.getString("point_code"); // 暂存位:起点 @@ -373,14 +351,18 @@ public class BakingServiceImpl implements BakingService { Long currentUserId = SecurityUtils.getCurrentUserId(); String currentUsername = SecurityUtils.getCurrentUsername(); + JSONObject jsonRaw = rawTab.query("container_name = '" + container_name + "' and is_delete = '0'").uniqueResult(0); + JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonMater)) throw new BadRequestException("物料不存在"); + JSONObject jsonCool = new JSONObject(); jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); jsonCool.put("io_type", "0"); - jsonCool.put("material_id", ""); - jsonCool.put("pcsn", ""); + jsonCool.put("material_id", jsonMater.getString("material_id")); + jsonCool.put("pcsn", container_name); jsonCool.put("bill_status", "10"); - jsonCool.put("qty_unit_id", "1"); + jsonCool.put("qty_unit_id", jsonMater.get("base_unit_id")); jsonCool.put("task_id", task_id); jsonCool.put("start_point_code", point_code1); jsonCool.put("end_point_code", jsonCooIvt.getString("full_point_code")); @@ -396,15 +378,6 @@ public class BakingServiceImpl implements BakingService { jsonCool.put("confirm_time", DateUtil.now()); coolTab.insert(jsonCool); - // 5.下发任务 - /* JSONObject jsonObject = inCoolIvtTask.immediateNotifyAcs(); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - // 成功返回 更新任务状态 - JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0); - jsonTask.put("task_status", "05"); - taskTab.update(jsonTask); - }*/ - JSONObject result = new JSONObject(); result.put("message", "操作成功!"); return result; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java index 11b5589be..30ad55b2a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java @@ -16,6 +16,7 @@ import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.pda.mps.service.RawFoilService; import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.tasks.CallEmpReelTask; @@ -124,6 +125,9 @@ public class RawFoilServiceImpl implements RawFoilService { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); + WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_CoolRegionIO"); // 冷却区出入表 + WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料信息表 + JSONObject raw_jo = whereJson.getJSONObject("raw_jo"); JSONObject jsonRaw = rawTab.query("workorder_id = '" + raw_jo.getString("workorder_id") + "'").uniqueResult(0); @@ -187,6 +191,33 @@ public class RawFoilServiceImpl implements RawFoilService { CallEmpReelTask callEmpReelTask = new CallEmpReelTask(); String task_id = callEmpReelTask.createTask(param); + // 插入入库单 + Long currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonMater)) throw new BadRequestException("产品不存在"); + + JSONObject jsonRegion = new JSONObject(); + jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonRegion.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); + jsonRegion.put("io_type", "1"); + jsonRegion.put("material_id", jsonMater.getString("material_id")); + jsonRegion.put("pcsn", jsonRaw.getString("container_name")); + jsonRegion.put("vehicle_code", ""); + jsonRegion.put("qty", jsonRaw.getString("productin_qty")); + jsonRegion.put("qty_unit_id", jsonMater.get("base_unit_id")); + jsonRegion.put("bill_status", "10"); + jsonRegion.put("start_point_code", jsonRaw.getString("point_code")); + jsonRegion.put("end_point_code", point_code4); + jsonRegion.put("cust_id", ""); + jsonRegion.put("create_mode", "03"); + jsonRegion.put("task_id", task_id); + jsonRegion.put("create_id", currentUserId); + jsonRegion.put("create_name", currentUsername); + jsonRegion.put("create_time", DateUtil.now()); + regionTab.insert(jsonRegion); + // 更新工单状态 jsonRaw.put("status", "02"); rawTab.update(jsonRaw); @@ -198,7 +229,8 @@ public class RawFoilServiceImpl implements RawFoilService { @Override public void confirmBlanking(JSONObject whereJson) { - WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); + WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单 + WQLObject sbTab = WQLObject.getWQLObject("st_ivt_sbpointivt"); // 生箔点位库存表 JSONObject raw_jo = whereJson.getJSONObject("raw_jo"); JSONObject jsonRaw = rawTab.query("workorder_id = '" + raw_jo.getString("workorder_id") + "'").uniqueResult(0); @@ -207,9 +239,25 @@ public class RawFoilServiceImpl implements RawFoilService { //查询该母卷号对应的任务 String container_name = whereJson.getString("container_name"); - JSONObject task_jo = WQLObject.getWQLObject("SCH_BASE_Task").query("material_code = '"+container_name+"'").uniqueResult(0); + JSONObject task_jo = WQLObject.getWQLObject("SCH_BASE_Task").query("material_code = '"+container_name+"' and task_status <> '07'").uniqueResult(0); + + // 查询生箔点位库存表 + JSONObject jsonSb = sbTab.query("ext_code = '" + jsonRaw.getString("resource_name") + "'and is_used = '1'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonSb)) throw new BadRequestException("点位不存在"); //下发ACS,执行取满放空的AGV动作 + JSONArray paramArr = new JSONArray(); + JSONObject param = new JSONObject(); + param.put("device_code", jsonSb.getString("point_code")); + param.put("option ", "1"); + paramArr.add(param); + + WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); + JSONObject result = wmsToAcsService.updateTask(paramArr); + + if (!StrUtil.equals(result.getString("status"), "200")) { + throw new BadRequestException("操作失败:"+result.getString("message ")); + } // 更新工单状态为确认下卷 jsonRaw.put("status","03"); @@ -220,92 +268,15 @@ public class RawFoilServiceImpl implements RawFoilService { public JSONObject finishBlanking(JSONObject whereJson) { JSONObject raw_jo = whereJson.getJSONObject("raw_jo"); - String start_pint_code = raw_jo.getString("point_code"); - - WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_CoolRegionIO"); // 冷却区出入表 - WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 - - //查询该母卷号对应的任务 - String container_name = raw_jo.getString("container_name"); - JSONObject task_jo = WQLObject.getWQLObject("SCH_BASE_Task").query("material_code = '"+container_name+"'").uniqueResult(0); JSONObject jsonRaw = rawTab.query("mfg_order_name = '" + raw_jo.getString("mfg_order_name") + "'").uniqueResult(0); if (!StrUtil.equals(jsonRaw.getString("status"), "03")) throw new BadRequestException("工单不为确认下卷"); - /*// 2.根据就近原则查对应空卷抽 - JSONObject map = new JSONObject(); - map.put("flag", "2"); - map.put("product_area", jsonPoint.getProduct_area()); - map.put("point_location", jsonPoint.getPoint_location()); - JSONObject jsonIvt = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0); - // 3.如果没找到则继续找下一节点 - if (ObjectUtil.isEmpty(jsonIvt)) { - String point_location = jsonPoint.getPoint_location(); - if (StrUtil.equals(point_location, "0")) map.put("point_location", "1"); - if (StrUtil.equals(point_location, "1")) map.put("point_location", "0"); - JSONObject jsonIvt_tow = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0); - - if (ObjectUtil.isEmpty(jsonIvt_tow)) throw new BadRequestException("没有空位"); - end_point_code = jsonIvt_tow.getString("full_point_code"); - } else { - end_point_code = jsonIvt.getString("full_point_code"); - } - - // 4.起点和终点确定 生成任务 - JSONObject param = new JSONObject(); - param.put("start_pint_code", start_pint_code); - param.put("end_pint_code", end_point_code); - String task_id = bookTwoConfirmTask.createTask(param);*/ - - // 插入入库单 - Long currentUserId = SecurityUtils.getCurrentUserId(); - String currentUsername = SecurityUtils.getCurrentUsername(); - - // 测试暂时注释 -// JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); - - JSONObject jsonRegion = new JSONObject(); - jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); - jsonRegion.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); - jsonRegion.put("io_type", "1"); - // 测试暂时注释 -// jsonRegion.put("material_id", jsonMater.getString("material_id")); - jsonRegion.put("pcsn", ""); - jsonRegion.put("vehicle_code", ""); - jsonRegion.put("qty", jsonRaw.getString("productin_qty")); - jsonRegion.put("qty_unit_id", "1"); - jsonRegion.put("bill_status", "10"); - jsonRegion.put("start_point_code", task_jo.getString("point_code2")); - jsonRegion.put("end_point_code", task_jo.getString("point_code4")); - jsonRegion.put("cust_id", ""); - jsonRegion.put("create_mode", "03"); - jsonRegion.put("task_id", task_jo.getString("task_id")); - jsonRegion.put("create_id", currentUserId); - jsonRegion.put("create_name", currentUsername); - jsonRegion.put("create_time", DateUtil.now()); - regionTab.insert(jsonRegion); - // 更新工单状态为下卷完成 jsonRaw.put("status", "04"); rawTab.update(jsonRaw); - // 下发任务入库任务 - /*CallEmpReelTask callEmpReelTask = new CallEmpReelTask(); - JSONObject jsonObject = callEmpReelTask.renotifyAcs(task_jo.getString("task_id")); - if (StrUtil.equals(jsonObject.getString("status"), "200")) { - // 成功返回 更新任务状态 - JSONObject jsonTask = taskTab.query("task_id ='" + task_jo.getString("task_id") + "'").uniqueResult(0); - jsonTask.put("task_status", "05"); - taskTab.update(jsonTask); - // 更新出入表状态 - jsonRegion.put("bill_status", "30"); - jsonRegion.put("update_optid", currentUserId); - jsonRegion.put("update_optname", currentUsername); - jsonRegion.put("update_time", DateUtil.now()); - regionTab.update(jsonRegion); - }*/ JSONObject jo = new JSONObject(); jo.put("message", "操作成功!"); return jo; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index 0c256b0b84d9bd9e34d74367b0b2b0f7d581ec66..298b67d10548c5e0eeb1284a1b491532cfa6048b 100644 GIT binary patch delta 8358 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 J{Vv|>{{fH!Nb>*y delta 8374 zcmai330zax(w}p0Sd}dx39`y2TS!6>0){mPWY@N8ZLL@r++L|#TX|10+Qs_n=X%uJ zrxwMkb)ndbn6_5bE~r&d+iI-~Xx(=d>W0cU=O(f!R?d$*_ssmyoSFZbJ2!+Gvz=zl zcKYgH66=Ot8wT#VPA5rbk!pHha@BE0A64}a*N>4^lY618xNUXY*|A}OTGYV}ji__) zVNJum9XvRW%z6FgJT%@-M1`Ma2=fj>Xezh07n(s?RjrnS^`Z8;VuV*U~ z@$EC+3LP>vuM)2nqkOdz5<*J?WO%I$V%ORLnMVjl@pp?ez*fc%{zxMIP9wV^^l_(F zrNtT<*x6cdi*;zH)+e5Et?RSLAX;PRqtqhP-Wsq5>2Q8&X0;Tk3 zkTnUXj=?Pcf4YX#l3*qMELe_cyn6xqpM5>wnj4}d5sXKopi4v2NhGZck$EVQMv>FS z1qC~Oclv@PR^&xRbNyx1A+!fg3r(U4p?1!#q=$=uXj&2~BfaRhPz*glN)km%oXk{^ zIC1tgF>iEcNVksGMzOFT<5f!| zHS9W6BcqkQmUiNVLwNEJ)(h9)0zxzTKgf@mco%hT9>xu~g*R?;_AKJ-V0 zlpfK@D-wG7NziBxs4&Wlj>EIdG`QljsyOD3rFT6}PT$bj(W4PgOw*e=W!$yjUPq@V zFim;9l0NE#Cmk@WjV}Gf1O^+rk*Npe@Mc;48z+RmFU2=``ZgpUwDNP2dSOcGB`&rZEg)ZEeM<5sLz z?2(p^Tg9`QGY7&;0j71VB+RH!KJAv(ola4>Gv5a0dnlGUTEs($6ia@dA>AX6?Z7kQ zJMMs$Wx!I<`OvG0Qu{beneg2)Wm>Nara1|AG)CjZs7_PjLxCknuj7+^Ds322mYB{$ zV{Sc|TY^R2+EcLhTCM0#OGq-bw?-Pg=~RQ1o==q1^XV#Tm4PH;2Qc(iQ3LKUx35Y} zh*d7DsiBBJ8!km%VU#B=&2bYCc!}PJW*MYtUz(AQKCt~~SmW_aiNm4{nK)S+C#9P+ z@g0#arFogw9`Wo@S%$4#I*3mtI?iNuP@W;Om-!?$Y?rO)`2?AW$QXJd6Wbj=KDmZ& zRFfs8JF?{X7)55uY|LDDr_ouVmZs~6jm1Kcr3+x2%3@xQW+}zy=$(ztF@t%?&3@cl82Ad+{mSoFu2gjTzxnKo7g^QtyIk-P|4P%ZE zYXaC7PKBFktjWRli*4gkj@-Nt;4v3<%mVYx&8Jp*h|E(_@4VcK<$3-bNfO^3Nn&$K zqBr`>)JbBUAniqfjIux@MB3Z*&d#W9)hE-(SimW?4j-Llv7}R(AEIZPh(4k>vFgmN z6`#y$wr()Z77eXG95?4s-l2;1yM#_0>(k{xwuC`iTA+oNzTb_z*SY$B z=jsQYtD8l2k9NLahrnW61r&D(=@E6A>rJcYxsu1Uq1clif7h8FS=^KMo8!R&N6);e zp{L(+=Ge!#adJ9sN%x93mSnmcw_$U@M~jdl!-bEKz(;m$E+HR}8ZoA6j$;AS`M8>O z6Gjz|m^y9FAf|h_r&)J4mlX9F$8?S`Go0yoGG?}aakqSi@{2X2eBb>d_raj#BBmSu zYMZXqcB=K{k3b3sXk^)-&?-{UE+-D0022UlOs=c7g%Ug^`jvggA7BU4?r z+ICs%UO3KWVa0~uZ>gK@huBs|d@?ZTu)p)?A3ku(9urU#?A&Et{mr^Kjqs-57~SpV zQ)|DySiJM*^#Axz>e6qS)o-QT(OI+i2IL1$|La`_Jzh zocD4{oo1}=)T>q5yMI*{)z%nmy6K90>b*X@7j=D%E+gxQTSEp94lT0w+Wy|z%hk6> zN~h0Et^HTb>kVDwOWyjb%jtu6&fM6#SG#rh7R|XK2`kn6uK#%M+K0vS|J9}8#KB3r zRVJ@<`pZks{dzHP)0T_XvDuNP?;mO_3v&<2_YHe%&55JVQR?xRM&&jp2l~&I8iEEG zr3>xGF8z7#pgA{7b`EKN@Xnd3-etd}jF@=+_N2Iy`2TL}zpDFstKrGkmn20G)P8)w z>Jj5dM$F2*>v||ES9VBJ1p5+S_V2w*Bm4W&E@u_LpkStB@~Cb5S4_L}$>J-a2W6F! zU&O7?;(mj77KCVIjjt@yPaWm8sJP1~J6^hZG{w_+=iuPb!@+j1y!7#fL-EJL8`tZW zTnyh=y5ma4i24)5H~&7~`@q4IL;l?KOIc{)#n^Uw`bt_~|a>SD9k zwd`|;^=k(0@I5)rxI(jAb3S5#k4-)I%A%Y3cmI6vr}^B9J==8i4Obd<7pD`sm235~ zBZ9AP-^r%?+Y^gNonCRI@bTN%oG++u?i*6m^lOgJ>+7M*KWGd*a>_Vvr{e7!#pfPR zm@>Si-mCV1Yu?+K@1)dyGwoQd&>TPFlyCF!odbS66`Wlj-7;r%On!p#vy=mGf4a!G zcC*)ps?d>FSLr72nf97}y>spIdU=V{Wq*}@G^hJxI~<%}^}z=f#l7j5U(0jxx6gP)^Eup9$Jd1Eu)yI^2nV_^6q zos9A%$}=c4Tyeey=O_=LjCKR)Ujgtf%0no%-2me7Pq|W*#-H&<;SLa439uAp&uswn zWdM6nD)IAKxCvQ6Df%x|4+H#) z%sl)RAO#ta{EiG^<_}ONxf?OsqX26#xVRIcoAZA8RV;x{-w@`NH0IvN7&`knRcn(0o#MYb#sKLbcUjS&r#D-nM zI>LmuT*g{aU{U=03cza2Y}ZwQ%a~c;>$o{)L~f#E%tX}yFc>pQy=B_%Kn{1cKST&z zvm&tGR;UjkWv0HKWG^wE65mi&;0`>#tm;U|VGC9Ghc<@wjHQm)!Xx~!k0C-mdd31n zAJ*ujo^%{$ADF^3mU?1q6rEuBXhar7CtaWG1P`t=C!!B5TeM+~h(27O>jMw7oevvJ ztU@;*@{a3q%X%qzA|1yG4q>?uG1!Q=IJww=P!1WN!tW9cFTr%Bte7Fl8k^%uc{7cm4ef04FfEyl#op-so`%zDP{ z(|T3{JpP^`SaMM1FHXDQ^bF}LI%BodVUe(_C+X$TQN@K2{Zp!!o>i?5d1m3cXH~(W zq?fUSdrSEEtaOaTqG!d|8J-{~@ z;JXo5u#gB`CQlE$R^M011`Co^`4#fiFcs;^d1Ajjf`E4~0uC|e*n6gthg`yCf-k(* z*xT>X7W)md)q-LEZ;~gYK^T@nrjlF2$qe!`xh<$NNgj$BnM9A`C$q545@*>=Gztrt zXcB(UA_3%Y;htG|Ws9?9vlz+59bq;TO+uMjdB`l9%tD?cLUc?t3B#E9Tlml{)|+hy zn7Ar5FmX+A%N2#zEQXlH46|5c7JGBa7l@pYCn6U!aozMy9_d5umAhslsn zW_Crq+=35#0siKAl4tEMol2l&E`g?%1SWk=VB-%24pp<@SC|?m5%(bU*l6*{;(qS_ z3K5|n4izn!!-cqsJ*s&5epmT;z)GlXzXle=+H){}!V zaU3j5;e^uxWVvbhIWp8H>^}Jqz7yEVFjo)A^F}i<;d$z8L+=xR%K{f%aGyMPnDUy4 zl{4Z4EO^BW@Wm4DrgLZu39;a_{uwVU>BikB4~6;e+#K@I%)~v@S6%@n?F~GZbL0@hySx%Q%(RkijYS_MIbjCg=Y}=4vP6^!3T3joP7{1D(?n! z={QU3$t9sM_T*Za2w^r;V+iNU+}MPP(5Yr|GfZ3&8_s2g-XkfNkS1eD&wr5anKp%U z`yG+VbPImo3sP7a&v`hb{|pO$;|u(s$>jFgBEGB&fmtUg*b@8Z(w5aHw}Lkpa%n_ z;7~v`j$UY0;4BvJHFy_`C_UcyfmHl%)PO6ZQKNxkn2H)L>eC=f^vOIJ5T7Ehi$a09Ae*2cxCVpVAvlirY$qKL*|ViYN{(He{* zO&{GSRgK$6r)i3(rsBS7QE@RT3fwS7qli|iaHo{Gv=l`Y2A8HyjqQ`BwpGWNZl&>! ziO%N#10N&K-J-?+3)3Ew?k2|x+$_$tcsAeHowo)np>#OsDmbp>t$7LX!mZJq$HED= zgdo;cP_5*B?9@;IBQb8RFlZ&8+d7RE$~#W2R`IFrto=Gpm#^acwzFRAI87+!qqrhY zXc*0P7Z&`+O%%Q_Ye{YKWkaxTe4ppQdV!b zZTxH2yh~5?sUG=DZ6^P(&zcJ>KKrHG5cfoX%<=t|_P4BZR>sY~HDJct#wYri!RxFg z>zaGyF8RrC;(=G)|NF!+A!CF^-F)4Gkkgm52M3uT-5@7PCXVQd*6N%{+) zmhtnsh|xmmm;7O(7Mj20O+54mp|YHrP3OvaHwo!!y1#|jaCvDlY0)ZuN-woOH8n<) zn%4f;-@(35ztjZ(XmzwEHC3Ze)ti4&pRP~v*Xp%~*ciP=o1(%BW4~!C)09g7BeKoJ WAK>g}+>?sc#Zwon@O9tu_Wuv!PZ8$; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/sch.xls b/lms/nladmin-system/src/main/java/org/nl/wms/sch/sch.xls index 29551439fcf4199ec2a28f004901cbd1fed81329..21ba511d2e4c3d58370778b935bb81b99adaadf7 100644 GIT binary patch delta 13922 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 '09' AND is_delete = '0'").uniqueResult(0); + jsonRaw.put("status", "01"); + jsonRaw.put("productin_qty", 0); + rawTab.update(jsonRaw); } if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + // 更新冷却区出入表 状态为执行中 JSONObject jsonCool = coolTab.query("task_id = '" + task_id + "'").uniqueResult(0); jsonCool.put("bill_status", "40"); coolTab.update(jsonCool); - // 更新任务状态为执行中 - jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); - jsonTask.put("update_time", DateUtil.now()); - taskTab.update(jsonTask); + // 更新生箔工单称重信息 + String weight = taskObj.getString("weight"); + if (ObjectUtil.isNotEmpty(weight)) { + JSONObject jsonRaw = rawTab.query("container_name ='" + jsonTask.getString("material_code") + "' AND status <> '09' AND is_delete = '0'").uniqueResult(0); + + jsonRaw.put("productin_qty", taskObj.getDoubleValue(weight)); + rawTab.update(jsonRaw); + } } if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { @@ -178,7 +196,7 @@ public class CallEmpReelTask extends AbstractAcsTask { JSONObject json = new JSONObject(); json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); - json.put("task_status", "01"); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("material_code", form.getString("material_code")); json.put("point_code1", form.getString("point_code1")); json.put("point_code2", form.getString("point_code2")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java index 973e60d0b..15a1df10c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java @@ -74,6 +74,12 @@ public class InCoolIvtTask extends AbstractAcsTask { if (StrUtil.equals(status,"0")) { // 取消删除任务 taskTab.delete("task_id = '"+task_id+"'"); + + // 删除烘箱任务明细 + hotDtlTab.delete("task_id = '"+task_id+"'"); + + // 删除冷却区出入表 + coolTab.delete("task_id = '"+task_id+"'"); } if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { @@ -106,7 +112,8 @@ public class InCoolIvtTask extends AbstractAcsTask { // 更新暂存位状态为空位 JSONObject jsonPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); - jsonPoint.put("point_status","00"); + jsonPoint.put("point_status","1"); + jsonPoint.put("material_code",""); pointTab.update(jsonPoint); // 更新冷却库存状态 @@ -168,7 +175,7 @@ public class InCoolIvtTask extends AbstractAcsTask { json.put("task_id",IdUtil.getSnowflake(1,1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); json.put("task_type", "010204"); - json.put("task_status", "01"); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", point_code1); json.put("point_code2", point_code2); json.put("material_code", form.getString("container_name")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java index e0de33eab..6bd68ef90 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java @@ -69,9 +69,21 @@ public class InHotTask extends AbstractAcsTask { JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); if (StrUtil.equals(status,"0")) { + // 判断此条明细是否是冷却区 -> 烘箱,是则删除主表 + if (ObjectUtil.isNotEmpty(jsonTask.getString("point_code3"))) { + + JSONObject jsonHotDtl = hotDtlTab.query("task_id = '" + task_id + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonHotDtl)) throw new BadRequestException("明细单据不存在"); + + hotMstTab.delete("iostorinv_id = '"+jsonHotDtl.getString("iostorinv_id")+"'"); + } + // 取消删除任务 taskTab.delete("task_id = '"+task_id+"'"); - } + + // 删除烘箱明细 + hotDtlTab.delete("task_id = '"+task_id+"'"); + } if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { // 更新任务状态为执行中 @@ -131,7 +143,8 @@ public class InHotTask extends AbstractAcsTask { // 更新暂存区点位状态为空位 JSONObject jsonPoint = pointTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); - jsonPoint.put("point_status", "00"); + jsonPoint.put("point_status", "1"); + jsonPoint.put("material_code", ""); pointTab.update(jsonPoint); } else { /* @@ -213,7 +226,7 @@ public class InHotTask extends AbstractAcsTask { json.put("task_id",IdUtil.getSnowflake(1,1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); json.put("task_type", "010201"); - json.put("task_status", "01"); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("point_code1")); json.put("point_code2", form.getString("point_code2")); json.put("point_code3", form.getString("point_code3")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java index 91824afaf..5eeb4bcf6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java @@ -68,6 +68,9 @@ public class OutHotTask extends AbstractAcsTask { if (StrUtil.equals(status,"0")) { // 取消删除任务 taskTab.delete("task_id = '"+task_id+"'"); + + // 删除出入烘箱任务明细 + hotDtlTab.delete("task_id = '"+task_id+"'"); } if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { @@ -81,10 +84,6 @@ public class OutHotTask extends AbstractAcsTask { jsonHotDtl.put("dtl_status", "40"); hotDtlTab.update(jsonHotDtl); - // 更新主表状态 -// JSONObject jsonHotMst = hotMstTab.query("iostorinv_id = '" + jsonHotDtl.getString("iostorinv_id") + "'").uniqueResult(0); -// jsonHotMst.put("bill_status", "40"); -// hotMstTab.update(jsonHotMst); } if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { @@ -110,12 +109,14 @@ public class OutHotTask extends AbstractAcsTask { JSONObject jsonHotMst = hotMstTab.query("iostorinv_id = '" + jsonHotDtl.getString("iostorinv_id") + "'").uniqueResult(0); // 更新暂存区点位状态 + JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); + JSONObject jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); - jsonPoint2.put("point_status", "02"); + jsonPoint2.put("point_status", "2"); + jsonPoint2.put("material_code", jsonHotIvt.getString("container_name")); pointTab.update(jsonPoint2); // 更新烘箱区库存状态 - JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); jsonHotIvt.put("point_status", "00"); jsonHotIvt.put("container_name","" ); jsonHotIvt.put("workorder_id","" ); @@ -160,9 +161,10 @@ public class OutHotTask extends AbstractAcsTask { json.put("task_id",IdUtil.getSnowflake(1,1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); json.put("task_type", "010202"); - json.put("task_status", "01"); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("point_code1")); json.put("point_code2", form.getString("point_code2")); + json.put("material_code", form.getString("material_code")); json.put("sort_seq", "1"); json.put("handle_class", THIS_CLASS); json.put("create_id", currentUserId); diff --git a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue index 5cea98a79..068f9f5c6 100644 --- a/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue @@ -138,19 +138,16 @@ disabled /> - - +