From ed8511c07c26f21d5eb4b82cbd4d7f6389b68d45 Mon Sep 17 00:00:00 2001 From: "ZHOUZ\\Noble'lift" <1014987728@qq.com> Date: Fri, 9 Dec 2022 13:16:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/exception/InterfaceException.java | 41 ++ .../java/org/nl/wms/basedata/st/wql/stivt.xls | Bin 306176 -> 306688 bytes .../mes/service/impl/MesToLmsServiceImpl.java | 11 +- .../sap/service/impl/SapToLmsServiceImpl.java | 35 ++ .../pda/mps/rest/HandleBakingController.java | 40 ++ .../pda/mps/service/HandleBakingService.java | 22 + .../service/impl/HandleBakingServiceImpl.java | 463 ++++++++++++++++++ .../impl/RawAssistIStorServiceImpl.java | 2 +- .../st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql | 18 + .../service/impl/CheckOutBillServiceImpl.java | 3 + .../st/outbill/wql/QST_IVT_CHECKOUTBILL.wql | 11 +- .../impl/InAndOutRetrunServiceImpl.java | 96 +++- .../st/returns/wql/QST_IVT_INANDOUTRETRUN.wql | 10 + .../src/views/wms/st/inAndOutReturn/index.vue | 26 +- .../src/views/wms/st/inbill/DivDialog.vue | 6 + .../src/views/wms/st/outbill/index.vue | 10 + .../wms/statistics/ioStorQuery/index.vue | 26 +- 17 files changed, 779 insertions(+), 41 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/common/exception/InterfaceException.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/HandleBakingController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/HandleBakingService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/common/exception/InterfaceException.java b/lms/nladmin-system/src/main/java/org/nl/modules/common/exception/InterfaceException.java new file mode 100644 index 000000000..d5e771177 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/modules/common/exception/InterfaceException.java @@ -0,0 +1,41 @@ +/* + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.nl.modules.common.exception; + +import lombok.Getter; +import org.springframework.http.HttpStatus; + +import static org.springframework.http.HttpStatus.BAD_REQUEST; + +/** + * @author Zheng Jie + * @date 2018-11-23 + * 统一异常处理 + */ +@Getter +public class BadRequestException extends RuntimeException{ + + private Integer status = BAD_REQUEST.value(); + + public BadRequestException(String msg){ + super(msg); + } + + public BadRequestException(HttpStatus status,String msg){ + super(msg); + this.status = status.value(); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index c5bd82cce99c5283f24d6f3b629fb4e659c42635..e1e2d8fae1c2cd6cf5273d1e2e6c89be47aef3ec 100644 GIT binary patch delta 34612 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 Z7R%jZ{e#5y8LXx&Er(yx)gQV2{~sHi5vl+H 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 9aae10810..270a7c92d 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 @@ -275,7 +275,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { if (ObjectUtil.isEmpty(bakingTimer)) throw new BadRequestException("烘烤时间不能为空"); String point_code = ""; - JSONObject jsonCoolIvt = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '03'").uniqueResult(0); + JSONObject jsonCoolIvt = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '04'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonCoolIvt)) { JSONObject jsonPoint = pointTab.query("material_code ='" + containerName + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(jsonPoint)) point_code = jsonPoint.getString("point_code"); @@ -740,24 +740,21 @@ public class MesToLmsServiceImpl implements MesToLmsService { try { // String is_mesTolms = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("is_mesTolms").getValue(); // if (StrUtil.equals(is_mesTolms, "1")) { - String isUnPlanProductionBox = param.getString("isUnPlanProductionBox"); // 生产订单 + String isUnPlanProductionBox = param.getString("isUnPlanProductionBox"); // 是否计划外子卷 String QuanlityInBox = param.getString("QuanlityInBox"); // 产品编码 String QualityGuaranPeriod = param.getString("QualityGuaranPeriod"); // 保质期 String ProductName = param.getString("ProductName"); // 来源卷位置 String Description = param.getString("Description"); // 来源卷位置 String DateOfFGInbound = param.getString("DateOfFGInbound"); // 来源卷位置 + String BoxWeight = param.getString("BoxWeight"); // 来源卷位置 String box_type = param.getString("Attribute1"); // 木箱料号 String box_length = param.getString("Attribute2"); // 木箱料号 String box_width = param.getString("Attribute3"); // 木箱料号 String box_high = param.getString("Attribute4"); // 木箱料号 - - double BoxWeight = 0; // 木箱自身重量 - JSONArray details = param.getJSONArray("details"); if (ObjectUtil.isEmpty(details)) throw new BadRequestException("明细为空"); for (int i = 0; i < details.size(); i++) { JSONObject detail = details.getJSONObject(i); - BoxWeight = NumberUtil.add(BoxWeight, detail.getDoubleValue("NetWeight")); String PackageBoxSN = detail.getString("PackageBoxSN"); // 分切订单类型 String ContainerName = detail.getString("ContainerName"); // 子卷号 @@ -787,7 +784,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { jo.put("box_width", box_width); jo.put("box_high", box_high); jo.put("quanlity_in_box", QuanlityInBox); -// jo.put("box_weight", BoxWeight); + jo.put("box_weight", BoxWeight); if (QualityGuaranPeriod.equals("0天")){ jo.put("quality_guaran_period", "90天"); }else { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java index 8061fbcd0..2f12780fe 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java @@ -39,6 +39,8 @@ public class SapToLmsServiceImpl implements SapToLmsService { for (int i = 0; i < rows.size(); i++) { JSONObject row = rows.getJSONObject(i); String MATNR = row.getString("MATNR"); + String MATNR01 = row.getString("MATNR01"); + String MEINS = row.getString("MEINS"); if (StrUtil.isEmpty(MATNR)) { throw new BadRequestException("物料编码不能为空!"); } @@ -48,6 +50,39 @@ public class SapToLmsServiceImpl implements SapToLmsService { } else { WQLObject.getWQLObject("md_me_materialbaseext").update(row); } + + JSONObject base_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '"+MATNR+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(base_jo)){ + JSONObject mater_base_jo = new JSONObject(); + mater_base_jo.put("material_id",IdUtil.getSnowflake(1,1).nextId()); + mater_base_jo.put("material_code",MATNR); + mater_base_jo.put("material_name",MATNR01); + JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("unit_code = '"+MEINS+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(unit)){ + throw new BadRequestException("未查询到相关计量单位,请进行维护!"); + } + mater_base_jo.put("base_unit_id",unit.getString("measure_unit_id")); + mater_base_jo.put("create_id", "1"); + mater_base_jo.put("create_name", "管理员"); + mater_base_jo.put("create_time", DateUtil.now()); + mater_base_jo.put("update_optid", "1"); + mater_base_jo.put("update_optname", "管理员"); + mater_base_jo.put("update_time", DateUtil.now()); + mater_base_jo.put("is_used","1"); + mater_base_jo.put("is_delete","0"); + WQLObject.getWQLObject("md_me_materialbase").insert(mater_base_jo); + }else { + base_jo.put("material_name",MATNR01); + JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("unit_code = '"+MEINS+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(unit)){ + throw new BadRequestException("未查询到相关计量单位,请进行维护!"); + } + base_jo.put("base_unit_id",unit.getString("measure_unit_id")); + base_jo.put("update_optid", "1"); + base_jo.put("update_optname", "管理员"); + base_jo.put("update_time", DateUtil.now()); + WQLObject.getWQLObject("md_me_materialbase").update(base_jo); + } } } catch (Exception exception) { result.put("RTYPE", "E"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/HandleBakingController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/HandleBakingController.java new file mode 100644 index 000000000..95b68136c --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/HandleBakingController.java @@ -0,0 +1,40 @@ +package org.nl.wms.pda.mps.rest; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.pda.mps.service.BakingService; +import org.nl.wms.pda.mps.service.RawFoilService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "烘烤工序") +@RequestMapping("api/pda/baking") +@Slf4j +public class BakingController { + + private final BakingService bakingService; + + @PostMapping("/ovenInAndOut") + @Log("烘箱出入") + @ApiOperation("烘箱出入") + public ResponseEntity queryRawFoil(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(bakingService.ovenInAndOut(whereJson),HttpStatus.OK); + } + + @PostMapping("/inCoolIvt") + @Log("入冷却") + @ApiOperation("入冷却") + public ResponseEntity inCoolIvt(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(bakingService.inCoolIvt(whereJson),HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/HandleBakingService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/HandleBakingService.java new file mode 100644 index 000000000..ef53194c7 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/HandleBakingService.java @@ -0,0 +1,22 @@ +package org.nl.wms.pda.mps.service; + +import com.alibaba.fastjson.JSONObject; + +public interface BakingService { + + /** + * 烘箱出入 + * @param whereJson / + * @return JSONObject + */ + JSONObject ovenInAndOut(JSONObject whereJson); + + /** + * 入冷却 + * @param whereJson / + * @return JSONObject + */ + JSONObject inCoolIvt(JSONObject whereJson); + + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java new file mode 100644 index 000000000..f7b972b53 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/HandleBakingServiceImpl.java @@ -0,0 +1,463 @@ +package org.nl.wms.pda.mps.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.SecurityUtils; +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.pda.mps.eum.RegionTypeEnum; +import org.nl.wms.pda.mps.service.BakingService; +import org.nl.wms.sch.tasks.InCoolIvtTask; +import org.nl.wms.sch.tasks.InHotTask; +import org.nl.wms.sch.tasks.OutHotTask; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class BakingServiceImpl implements BakingService { + + /* + * 业务流程: + * 入烤箱: + * 1.首先需要找到无任务的暂存位 并创建两条任务 + * 2。下发冷却区 --> 烘烤区的任务 等待反馈完成 + * 3.插入烤箱区出入主表和明细表 + * 出烤箱: + * 1.烤箱时间到后 查找无任务的暂存位 并创建2条任务 + * 2.1下发烤箱区 --> 暂存位 的任务 + * 2.2插入烤箱区出入明细表 + * 3.查找对应冷却区空位 + * 4.在下发暂存位 --> 冷却区的任务 + * 问题: + * 1.第二条任务出现异常后 如何再次触发 + */ + @Override + @Transactional + public JSONObject ovenInAndOut(JSONObject whereJson) { + + String option = whereJson.getString("option"); // 1-入箱 2-出箱 + + WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表 + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 + WQLObject coolIvtTab = WQLObject.getWQLObject("ST_IVT_CoolPointIvt"); // 冷却区点位库存表 + 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")) { + // 入箱 + String container_name = whereJson.getString("container_name"); // 母卷号 + String temperature = whereJson.getString("temperature"); // 温度 + String hours = whereJson.getString("hours"); // 时间 + String point_code1 = whereJson.getString("point_code"); // 点位 + + if (ObjectUtil.isEmpty(container_name)) throw new BadRequestException("母卷号不能为空"); + if (ObjectUtil.isEmpty(temperature)) throw new BadRequestException("温度不能为空"); + if (ObjectUtil.isEmpty(hours)) throw new BadRequestException("时间不能为空"); + if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("点位不能为空"); + + /* + * 根据点位判断是 冷却区入烘箱还是暂存区入烘箱 + */ + JSONObject jsonPointZc = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(jsonPointZc)) { + /* + * 暂存区入烘箱 + */ + // 1.查询烘箱对应的空位 + JSONObject jsonMap = new JSONObject(); + jsonMap.put("flag", "1"); + jsonMap.put("product_area",jsonPointZc.getString("product_area")); + jsonMap.put("temperature",temperature); + jsonMap.put("point_location",jsonPointZc.getString("point_location")); + JSONObject jsonHotIvt = WQL.getWO("PDA_BAKING_01").addParamMap(jsonMap).process().uniqueResult(0); + if (ObjectUtil.isEmpty(jsonHotIvt)) throw new BadRequestException("烘烤区没有对应空位"); + // 2.创建暂存位 --> 烘烤区任务 + JSONObject param = new JSONObject(); + param.put("type", "2"); // 1- 冷却区入烘箱 2- 暂存位入烘箱 + param.put("point_code1", point_code1); + param.put("point_code2", jsonHotIvt.getString("point_code")); + + InHotTask inHotTask = new InHotTask(); + String task_id = inHotTask.createTask(param); + + // 3.插入主表 + 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); + + JSONObject hotParam = new JSONObject(); + hotParam.put("container_name", container_name); + hotParam.put("workorder_id", jsonRaw.getString("workorder_id")); + hotParam.put("material_id", jsonMater.getString("material_id")); + hotParam.put("qty", jsonRaw.get("productin_qty")); + hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id")); + hotParam.put("task_id", task_id); + hotParam.put("start_point_code", point_code1); + hotParam.put("next_point_code", jsonHotIvt.getString("point_code")); + hotParam.put("temperature", temperature); + hotParam.put("oven_time", hours); + this.createHotIoMst(hotParam); + } else { + /* + * 冷却区入烘箱 + */ + + // 1.根据冷却区此母卷的点位找到对应的暂存区、找到空位 +// JSONObject jsonCoolIvt = coolIvtTab.query("container_name ='" + container_name + "' and is_used = '1' and full_point_status = '02' and cool_ivt_status = '01'").uniqueResult(0); + JSONObject jsonCoolIvt = coolIvtTab.query("full_point_code = '" + point_code1 + "'and container_name = '" + container_name + "' and is_used = '1' and full_point_status = '02' and cool_ivt_status = '01'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonCoolIvt)) throw new BadRequestException("点位不存在或母卷不存在"); + + String product_area = jsonCoolIvt.getString("product_area"); // 生产区域 + String point_location = jsonCoolIvt.getString("point_location"); // 位置 + String reging_id = ""; + + switch (product_area) { + case "A1": + reging_id = RegionTypeEnum.A_HKZC.getId(); + break; + case "A2": + reging_id = RegionTypeEnum.B_HKZC.getId(); + break; + case "A3": + reging_id = RegionTypeEnum.C_HKZC.getId(); + break; + case "A4": + reging_id = RegionTypeEnum.D_HKZC.getId(); + break; + } + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("reging_id", reging_id); + map.put("point_location", point_location); + + JSONArray pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(pointArr)) { + if (StrUtil.equals(point_location, "0")) map.put("point_location", "1"); + if (StrUtil.equals(point_location, "1")) map.put("point_location", "0"); + pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().getResultJSONArray(0); + + if (ObjectUtil.isEmpty(pointArr)) throw new BadRequestException("没有空暂存位"); + } + + // 2.判断暂存位是否有任务:找到无任务的暂存位 、查询烘箱对应的空位 + String point_code2 = ""; + for (int i = 0; i < pointArr.size(); i++) { + JSONObject jsonPoint = pointArr.getJSONObject(i); + String point_code = jsonPoint.getString("point_code"); + + JSONObject json_point_code1 = taskTab.query("point_code1 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + JSONObject json_point_code2 = taskTab.query("point_code2 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + JSONObject json_point_code3 = taskTab.query("point_code3 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + JSONObject json_point_code4 = taskTab.query("point_code4 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(json_point_code1) && ObjectUtil.isEmpty(json_point_code2) && ObjectUtil.isEmpty(json_point_code3) && ObjectUtil.isEmpty(json_point_code4)) { + point_code2 = point_code; + break; + } + } + if (ObjectUtil.isEmpty(point_code2)) throw new BadRequestException("没有空暂存位"); + + // 查询烘箱对应的空位 + + JSONObject jsonMap = new JSONObject(); + jsonMap.put("flag", "1"); + jsonMap.put("product_area",product_area); + jsonMap.put("temperature",temperature); + jsonMap.put("point_location",map.getString("point_location")); + JSONObject jsonHotIvt = WQL.getWO("PDA_BAKING_01").addParamMap(jsonMap).process().uniqueResult(0); + if (ObjectUtil.isEmpty(jsonHotIvt)) throw new BadRequestException("烘烤区没有对应空位"); + + // 3.创建冷却区 --> 烘烤区任务 + JSONObject param = new JSONObject(); + param.put("type", "1"); // 1- 冷却区入烘箱 2- 暂存位入烘箱 + param.put("point_code1", point_code1); + param.put("point_code2", point_code2); + param.put("point_code3", jsonHotIvt.getString("point_code")); + + // 创建冷却区 --> 暂存位的任务 + InHotTask inHotTask = new InHotTask(); + String task_id = inHotTask.createTask(param); + + // 4.插入烘箱区出入主表 + 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 hotParam = new JSONObject(); + hotParam.put("container_name", container_name); + hotParam.put("workorder_id", jsonRaw.getString("workorder_id")); + hotParam.put("material_id", jsonMater.getString("material_id")); + hotParam.put("qty", jsonRaw.get("productin_qty")); + hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id")); + hotParam.put("task_id", task_id); + hotParam.put("start_point_code", point_code1); + hotParam.put("next_point_code", jsonHotIvt.getString("point_code")); + hotParam.put("temperature", temperature); + hotParam.put("oven_time", hours); + this.createHotIoMst(hotParam); + + + // 生成冷却区出入表 + Long currentUserId = 2L; + String currentUsername = "mes用户"; + + 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", 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", 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"); + jsonCool.put("create_id", currentUserId); + jsonCool.put("create_name", currentUsername); + jsonCool.put("create_time", DateUtil.now()); + jsonCool.put("update_optid", currentUserId); + jsonCool.put("update_optname", currentUsername); + jsonCool.put("update_time", DateUtil.now()); + jsonCool.put("confirm_optid", currentUserId); + jsonCool.put("confirm_optname", currentUsername); + jsonCool.put("confirm_time", DateUtil.now()); + coolTab.insert(jsonCool); + } + } else if (StrUtil.equals(option, "2")) { + // 出箱 + String point_code1 = whereJson.getString("point_code"); + if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("出箱点位不能为空"); + JSONObject jsonHotIvt = hosIvtTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonHotIvt)) throw new BadRequestException("点位不存在"); + + // 1.查询暂存位有没有空位 + String product_area = jsonHotIvt.getString("product_area"); + String reging_id = ""; + switch (product_area) { + case "A1": + reging_id = RegionTypeEnum.A_HKZC.getId(); + break; + case "A2": + reging_id = RegionTypeEnum.B_HKZC.getId(); + break; + case "A3": + reging_id = RegionTypeEnum.C_HKZC.getId(); + break; + case "A4": + reging_id = RegionTypeEnum.D_HKZC.getId(); + break; + } + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("reging_id", reging_id); + map.put("point_location", jsonHotIvt.getString("point_location")); + + JSONArray pointArr = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(pointArr)) throw new BadRequestException("没有空暂存位"); + + // 2.判断暂存位是否有任务:找到无任务的暂存位 + String point_code2 = ""; + for (int i = 0; i < pointArr.size(); i++) { + JSONObject jsonPoint = pointArr.getJSONObject(i); + String point_code = jsonPoint.getString("point_code"); + + JSONObject json_point_code1 = taskTab.query("point_code1 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + JSONObject json_point_code2 = taskTab.query("point_code2 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + JSONObject json_point_code3 = taskTab.query("point_code3 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + JSONObject json_point_code4 = taskTab.query("point_code4 = '" + point_code + "' and task_status != '07' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(json_point_code1) && ObjectUtil.isEmpty(json_point_code2) && ObjectUtil.isEmpty(json_point_code3) && ObjectUtil.isEmpty(json_point_code4)) { + point_code2 = point_code; + break; + } + } + if (ObjectUtil.isEmpty(point_code2)) throw new BadRequestException("没有空暂存位"); + // 3.创建任务 + 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); + + // 4.插入烘箱区出入明细表 + JSONObject jsonHotReMst = hosReMstTab.query("container_name = '" + jsonHotIvt.getString("container_name") + "' and bill_status <> '50' and is_delete = '0'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonHotReMst)) throw new BadRequestException("烘箱区出入主表不存在"); + + // 创建明细 + JSONObject hotParam = new JSONObject(); + hotParam.put("task_id", task_id); + hotParam.put("iostorinv_id", jsonHotReMst.getString("iostorinv_id")); + hotParam.put("start_point_code", point_code1); + hotParam.put("next_point_code", point_code2); + hotParam.put("temperature", jsonHotIvt.getString("temperature")); + this.createHotDtl(hotParam); + } + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; + } + + @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 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"); // 暂存位:起点 + String container_name = whereJson.getString("container_name"); // 母卷号 + + if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("点位不能为空"); + if (ObjectUtil.isEmpty(container_name)) throw new BadRequestException("母卷号不能为空"); + + // 1.获取此暂存位的生产区域和上下位置 + JSONObject jsonPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonPoint)) throw new BadRequestException("点位不存在"); + + // 2.找冷却区空货位 + JSONObject map = new JSONObject(); + map.put("flag", "2"); + map.put("product_area", jsonPoint.getString("product_area")); + map.put("point_location", jsonPoint.getString("point_location")); + + JSONObject jsonCooIvt = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); + // 如果为空 + if (ObjectUtil.isEmpty(jsonCooIvt)) { + if (StrUtil.equals(jsonPoint.getString("point_location"), "0")) map.put("point_location", "1"); + if (StrUtil.equals(jsonPoint.getString("point_location"), "1")) map.put("point_location", "0"); + jsonCooIvt = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0); + } + if (ObjectUtil.isEmpty(jsonCooIvt)) throw new BadRequestException("冷却区空位不足"); + + // 3.创建任务 + JSONObject param = new JSONObject(); + param.put("point_code1", point_code1); + param.put("point_code2", jsonCooIvt.getString("full_point_code")); + param.put("container_name", container_name); + + + InCoolIvtTask inCoolIvtTask = new InCoolIvtTask(); + String task_id = inCoolIvtTask.createTask(param); + + // 4.插入明细 + JSONObject jsonHotMst = hotMstTab.query("container_name = '" + container_name + "' and is_delete = '0' and bill_status <> '50'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonHotMst)) throw new BadRequestException("烘烤区出入主表不存在"); + JSONObject hotParam = new JSONObject(); + hotParam.put("task_id", task_id); + hotParam.put("iostorinv_id", jsonHotMst.getString("iostorinv_id")); + hotParam.put("start_point_code", point_code1); + hotParam.put("next_point_code", jsonCooIvt.getString("full_point_code")); + this.createHotDtl(hotParam); + + // 生成冷却区出入表 + Long currentUserId = 2L; + String currentUsername = "mes用户"; + + 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", jsonMater.getString("material_id")); + jsonCool.put("pcsn", container_name); + jsonCool.put("bill_status", "10"); + 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")); + jsonCool.put("create_mode", "03"); + jsonCool.put("create_id", currentUserId); + jsonCool.put("create_name", currentUsername); + jsonCool.put("create_time", DateUtil.now()); + jsonCool.put("update_optid", currentUserId); + jsonCool.put("update_optname", currentUsername); + jsonCool.put("update_time", DateUtil.now()); + jsonCool.put("confirm_optid", currentUserId); + jsonCool.put("confirm_optname", currentUsername); + jsonCool.put("confirm_time", DateUtil.now()); + coolTab.insert(jsonCool); + + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; + } + + @Transactional + public String createHotIoMst(JSONObject param) { + /* + * 创建烘箱区出入主表 + */ + WQLObject hotMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); // 烘箱区出入主表 + + JSONObject jsonHotMst = new JSONObject(); + jsonHotMst.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonHotMst.put("bill_code", CodeUtil.getNewCode("HOT_BILL_CODE")); + jsonHotMst.put("container_name", param.getString("container_name")); + jsonHotMst.put("workorder_id", param.getString("workorder_id")); + jsonHotMst.put("material_id", param.get("material_id")); + jsonHotMst.put("qty", param.getString("qty")); + jsonHotMst.put("bill_status", "50"); + jsonHotMst.put("qty_unit_id", param.getString("qty_unit_id")); + jsonHotMst.put("start_point_code", param.getString("start_point_code")); + jsonHotMst.put("end_point_code", param.getString("end_point_code")); + jsonHotMst.put("create_mode", "03"); + jsonHotMst.put("task_id", param.getString("task_id")); + jsonHotMst.put("task_type", param.getString("task_type")); + jsonHotMst.put("temperature", param.getString("temperature")); + jsonHotMst.put("oven_time", param.getString("oven_time")); + jsonHotMst.put("create_id", 2); + jsonHotMst.put("create_name", "mes用户"); + jsonHotMst.put("create_time", DateUtil.now()); + jsonHotMst.put("confirm_optid", 2); + jsonHotMst.put("confirm_optname", "mes用户"); + jsonHotMst.put("confirm_time", DateUtil.now()); + hotMstTab.insert(jsonHotMst); + + return jsonHotMst.getString("iostorinv_id"); + } + + @Transactional + public void createHotDtl(JSONObject param) { + /* + * 创建烘箱区出入明细表 + */ + WQLObject hotDtlTab = WQLObject.getWQLObject("ST_IVT_HotRegionIODtl"); // 烘箱区出入明细表 + + JSONObject jsonHotDtl = new JSONObject(); + jsonHotDtl.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonHotDtl.put("bill_code", ""); + jsonHotDtl.put("start_point_code", param.getString("start_point_code")); + jsonHotDtl.put("next_point_code", param.getString("next_point_code")); + jsonHotDtl.put("temperature", param.getString("temperature")); + jsonHotDtl.put("oven_time", param.getString("oven_time")); + jsonHotDtl.put("task_type", "1"); + jsonHotDtl.put("task_id", param.getString("task_id")); + jsonHotDtl.put("create_id", 2); + jsonHotDtl.put("create_name", "mes用户"); + jsonHotDtl.put("create_time", DateUtil.now()); + jsonHotDtl.put("dtl_status", "10"); + hotDtlTab.insert(jsonHotDtl); + } + + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index 5e660012a..f65651984 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -448,7 +448,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { HashMap map = rows.get(0); //判断该载具是否已经分配货位或者起点 - JSONArray now_dis_rows = WQLObject.getWQLObject("st_ivt_iostorinvdis").query("box_no = '" + map.get("box_no") + "' AND work_status < '99' AND (struct_id <> '' AND struct_id is not null)").getResultJSONArray(0); + JSONArray now_dis_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag","17").addParam("box_no",map.get("box_no")).process().getResultJSONArray(0); if (now_dis_rows.size() > 0) { throw new BadRequestException("该木箱已经分配过货位,无法继续分配!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql index 49633ecf6..8365d9484 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql @@ -22,6 +22,7 @@ 输入.stor_id TYPEAS s_string 输入.bill_status TYPEAS s_string 输入.bill_type TYPEAS s_string + 输入.box_no TYPEAS s_string 输入.container_name TYPEAS s_string 输入.package_box_sn TYPEAS s_string 输入.iostorinv_id TYPEAS s_string @@ -633,6 +634,23 @@ ENDQUERY ENDIF + IF 输入.flag = "17" + QUERY + SELECT + * + FROM + st_ivt_iostorinvdis dis + LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id + WHERE + dis.box_no = 输入.box_no + AND work_status < '99' + AND ( struct_id <> '' AND struct_id IS NOT NULL ) + AND mst.is_delete = '0' + AND mst.bill_status < '99' + ENDSELECT + ENDQUERY + ENDIF + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 912056d35..33df6b742 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -79,6 +79,9 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { if (StrUtil.isNotEmpty(map.get("material_code"))) { map.put("material_code", "%" + map.get("material_code") + "%"); } + if (StrUtil.isNotEmpty(map.get("vbeln"))) { + map.put("vbeln", "%" + map.get("vbeln") + "%"); + } //获取人员对应的仓库 UserStorServiceImpl userStorService = new UserStorServiceImpl(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql index bcf93e5fc..821e65fd5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql @@ -20,6 +20,7 @@ 输入.username TYPEAS s_string 输入.create_mode TYPEAS s_string 输入.bill_type TYPEAS s_string + 输入.vbeln TYPEAS s_string 输入.stor_id TYPEAS s_string 输入.iostorinv_id TYPEAS s_string 输入.buss_type TYPEAS s_string @@ -71,14 +72,16 @@ IF 输入.flag = "1" PAGEQUERY - SELECT + SELECT DISTINCT ios.*, cu.shd_dtl_num, cu.cust_name, + dtl.vbeln, cu.cust_simple_name FROM ST_IVT_IOStorInv ios LEFT JOIN md_cs_customerbase cu ON ios.cust_code = cu.cust_code + LEFT JOIN st_ivt_iostorinvdtl dtl ON ios.iostorinv_id = dtl.iostorinv_id WHERE ios.io_type = '1' and ios.is_delete='0' @@ -92,6 +95,10 @@ ios.io_type = 输入.io_type ENDOPTION + OPTION 输入.vbeln <> "" + dtl.vbeln like 输入.vbeln + ENDOPTION + OPTION 输入.bill_type <> "" ios.bill_type = 输入.bill_type ENDOPTION @@ -574,7 +581,7 @@ st_ivt_iostorinvdis dis LEFT JOIN md_me_materialbase mater ON dis.material_id = mater.material_id LEFT JOIN sch_base_point point ON dis.point_id = point.point_id - INNER JOIN sch_base_task task ON dis.task_id = task.task_id + LEFT JOIN sch_base_task task ON dis.task_id = task.task_id WHERE 1=1 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java index 1e363eab7..e9144ea41 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java @@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.common.utils.dto.CurrentUser; import org.nl.modules.system.service.impl.ParamServiceImpl; @@ -19,9 +20,13 @@ import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl; import org.nl.wms.ext.sap.service.impl.LmsToSapServiceImpl; import org.nl.wms.st.returns.service.InAndOutReturnService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionCallbackWithoutResult; +import org.springframework.transaction.support.TransactionTemplate; import java.util.ArrayList; import java.util.HashMap; @@ -34,6 +39,7 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class InAndOutRetrunServiceImpl implements InAndOutReturnService { + private final TransactionTemplate transactionTemplate; @Override public Map pageQuery(Map whereJson, Pageable page) { @@ -50,6 +56,8 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { map.put("begin_time", MapUtil.getStr(whereJson, "begin_time")); map.put("end_time", MapUtil.getStr(whereJson, "end_time")); map.put("pcsn", MapUtil.getStr(whereJson, "pcsn")); + map.put("is_writeoff", MapUtil.getStr(whereJson, "is_writeoff")); + map.put("vbeln", MapUtil.getStr(whereJson, "vbeln")); if (!ObjectUtil.isEmpty(bill_code)) map.put("bill_code", "%" + bill_code + "%"); if (!ObjectUtil.isEmpty(material_search)) map.put("material_search", "%" + material_search + "%"); if (!ObjectUtil.isEmpty(box_no)) map.put("box_no", "%" + box_no + "%"); @@ -92,7 +100,6 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { String stor_id = jo_mst.getString("stor_id"); JSONObject stor_jo = WQLObject.getWQLObject("ST_IVT_BSRealStorAttr").query("stor_id = '" + stor_id + "'").uniqueResult(0); String lgort = stor_jo.getString("ext_id"); - String is_virtualstore = stor_jo.getString("is_virtualstore"); String is_productstore = stor_jo.getString("is_productstore"); //生产入库 if (StrUtil.equals(bill_type, "0001")) { @@ -107,6 +114,11 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { paramMesMst.put("PackageBoxSN", box_row.getString("box_no")); paramMesMst.put("User", box_row.getString("confirm_optname")); new LmsToMesServiceImpl().childRollFGInboundComplete(paramMesMst); + + jo_mst.put("is_upload", "1"); + jo_mst.put("upload_mes", "1"); + jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId()); + jo_mst.put("upload_time", DateUtil.now()); } } @@ -139,6 +151,12 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToMesServiceImpl().childRollFGOutboundComplete(paramMesMst); + + jo_mst.put("upload_mes", "1"); + if (jo_mst.getString("upload_sap").equals("1")) { + jo_mst.put("is_upload", "1"); + } + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } // 调拨出库 @@ -170,6 +188,10 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToMesServiceImpl().childRollFGOutboundComplete(paramMesMst); + + jo_mst.put("upload_mes", "1"); + jo_mst.put("is_upload", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } // 改切出库 @@ -186,6 +208,11 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { mes_jo.put("package_box_sn", source_dtl.getString("box_no")); mes_jo.put("warehouse", "3"); new LmsToMesServiceImpl().cutPlanMomRollDeliveryComplete(mes_jo); + + jo_mst.put("upload_mes", "1"); + if (jo_mst.getString("upload_sap").equals("1")) { + jo_mst.put("is_upload", "1"); + } } } } @@ -215,7 +242,6 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { String stor_id = jo_mst.getString("stor_id"); JSONObject stor_jo = WQLObject.getWQLObject("ST_IVT_BSRealStorAttr").query("stor_id = '" + stor_id + "'").uniqueResult(0); String lgort = stor_jo.getString("ext_id"); - String is_virtualstore = stor_jo.getString("is_virtualstore"); String is_productstore = stor_jo.getString("is_productstore"); //退货入库 if (StrUtil.equals(bill_type, "0002")) { @@ -276,6 +302,10 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToSapServiceImpl().returnDelivery(param); + + jo_mst.put("upload_sap", "1"); + jo_mst.put("is_upload", "1"); + } // 销售出库 @@ -339,6 +369,11 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToSapServiceImpl().returnDelivery(param); + + jo_mst.put("upload_sap", "1"); + if (jo_mst.getString("upload_mes").equals("1") || is_productstore.equals("0")) { + jo_mst.put("is_upload", "1"); + } } // 改切出库 @@ -394,26 +429,18 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 System.out.println(paramMst.toString()); new LmsToSapServiceImpl().returnMoveDtl(paramMst); + + jo_mst.put("upload_sap", "1"); + if (jo_mst.getString("upload_mes").equals("1")) { + jo_mst.put("is_upload", "1"); + } } } } } - @Transactional(rollbackFor = Exception.class) @Override public void disupload(JSONObject whereJson) { - //出库分配表 - WQLObject wo_dis = WQLObject.getWQLObject("ST_IVT_IOStorInvDis"); - //出库明细表 - WQLObject wo_dtl = WQLObject.getWQLObject("ST_IVT_IOStorInvDtl"); - //出库主表 - WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_IOStorInv"); - // 物料表 - WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); - // 库区表 - WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr"); - // 子卷包装关系表 - WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); JSONArray rows = whereJson.getJSONArray("rows"); @@ -423,6 +450,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId()); jo_mst.put("upload_time", DateUtil.now()); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); + } } @@ -451,7 +479,6 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { String stor_id = jo_mst.getString("stor_id"); JSONObject stor_jo = WQLObject.getWQLObject("ST_IVT_BSRealStorAttr").query("stor_id = '" + stor_id + "'").uniqueResult(0); String lgort = stor_jo.getString("ext_id"); - String is_virtualstore = stor_jo.getString("is_virtualstore"); String is_productstore = stor_jo.getString("is_productstore"); //生产入库 if (StrUtil.equals(bill_type, "0001")) { @@ -465,7 +492,13 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { JSONObject paramMesMst = new JSONObject(); paramMesMst.put("PackageBoxSN", box_row.getString("box_no")); paramMesMst.put("User", box_row.getString("confirm_optname")); + new LmsToMesServiceImpl().childRollFGInboundComplete(paramMesMst); + + jo_mst.put("is_upload", "1"); + jo_mst.put("upload_mes", "1"); + jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId()); + jo_mst.put("upload_time", DateUtil.now()); } } @@ -528,6 +561,12 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToSapServiceImpl().returnDelivery(param); + + jo_mst.put("upload_sap", "1"); + jo_mst.put("is_upload", "1"); + jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId()); + jo_mst.put("upload_time", DateUtil.now()); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } // 销售出库 if (StrUtil.equals(bill_type, "1001")) { @@ -591,8 +630,12 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToSapServiceImpl().returnDelivery(param); + jo_mst.put("upload_sap", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); + + // 2.回传mes - if (is_productstore.equals("1")){ + if (is_productstore.equals("1")) { JSONObject paramMesMst = new JSONObject(); String userName = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); String passWord = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); @@ -619,6 +662,10 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToMesServiceImpl().childRollFGOutboundComplete(paramMesMst); + + jo_mst.put("upload_mes", "1"); + jo_mst.put("is_upload", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } } @@ -656,6 +703,9 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToSapServiceImpl().returnMoveDtl(paramMst); + jo_mst.put("upload_sap", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); + //调用母卷配送到位接口 JSONObject mes_jo = new JSONObject(); @@ -665,6 +715,10 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { mes_jo.put("package_box_sn", disArr.getJSONObject(0).getString("box_no")); mes_jo.put("warehouse", "3"); new LmsToMesServiceImpl().cutPlanMomRollDeliveryComplete(mes_jo); + + jo_mst.put("upload_mes", "1"); + jo_mst.put("is_upload", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } // 调拨出库 @@ -696,12 +750,12 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { // 调用接口回传 new LmsToMesServiceImpl().childRollFGOutboundComplete(paramMesMst); + + jo_mst.put("upload_mes", "1"); + jo_mst.put("is_upload", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } - jo_mst.put("is_upload", "1"); - jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId()); - jo_mst.put("upload_time", DateUtil.now()); - WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql index cc7bbf6c0..bf8b68c6b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/wql/QST_IVT_INANDOUTRETRUN.wql @@ -22,6 +22,7 @@ 输入.is_upload TYPEAS s_string 输入.begin_time TYPEAS s_string 输入.end_time TYPEAS s_string + 输入.vbeln TYPEAS s_string 输入.bill_status TYPEAS s_string 输入.iostorinv_id TYPEAS s_string 输入.bill_code TYPEAS s_string @@ -29,6 +30,7 @@ 输入.io_type TYPEAS s_string 输入.material_type_id TYPEAS f_string 输入.iostorinv_id TYPEAS s_string + 输入.is_writeoff TYPEAS s_string 输入.ids TYPEAS f_string 输入.box_no TYPEAS s_string 输入.in_stor_id TYPEAS f_string @@ -61,6 +63,7 @@ SELECT DISTINCT mst.*, dtl.source_bill_type, + dtl.vbeln, user.nick_name AS upload_name FROM st_ivt_iostorinv mst @@ -80,6 +83,10 @@ dtl.pcsn = 输入.pcsn ENDOPTION + OPTION 输入.is_writeoff <> "" + mst.is_writeoff = 输入.is_writeoff + ENDOPTION + OPTION 输入.bill_status <> "" mst.bill_status = 输入.bill_status ENDOPTION @@ -114,6 +121,9 @@ OPTION 输入.end_time <> "" mst.input_time <= 输入.end_time ENDOPTION + OPTION 输入.vbeln <> "" + dtl.vbeln = 输入.vbeln + ENDOPTION OPTION 输入.material_search <> "" ( mb.material_code like 输入.material_search diff --git a/lms/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue b/lms/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue index bdd9db55b..996089c67 100644 --- a/lms/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue @@ -204,6 +204,8 @@ + +