From c8cb2bfabc2e948a2d70ee9bb7b3338fe051aa50 Mon Sep 17 00:00:00 2001 From: "ZHOUZ\\Noble'lift" <1014987728@qq.com> Date: Sat, 10 Dec 2022 10:49:38 +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 --- .../service/impl/LocalStorageServiceImpl.java | 171 +++++++++++++----- .../mes/service/impl/LmsToMesServiceImpl.java | 6 +- .../mps/service/impl/BakingServiceImpl.java | 45 +++-- .../service/impl/HandleBakingServiceImpl.java | 46 ++++- .../pda/mps/service/impl/OutServiceImpl.java | 2 +- .../wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql | 3 +- .../st/service/impl/CoolInServiceImpl.java | 4 +- .../org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql | 53 ++---- .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 251904 -> 293888 bytes .../org/nl/wms/sch/tasks/CallEmpReelTask.java | 10 +- .../org/nl/wms/sch/tasks/InCoolIvtTask.java | 28 +-- .../java/org/nl/wms/sch/tasks/InHotTask.java | 48 +---- .../java/org/nl/wms/sch/tasks/OutHotTask.java | 31 +--- .../service/impl/CheckOutBillServiceImpl.java | 4 +- .../impl/InAndOutRetrunServiceImpl.java | 6 + .../views/wms/pdm/ivt/hotpointivt/taskDtl.vue | 25 +-- 16 files changed, 256 insertions(+), 226 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java index e1c2ed2cc..837f4e5d2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/tools/service/impl/LocalStorageServiceImpl.java @@ -19,7 +19,6 @@ 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.excel.EasyExcel; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; @@ -150,28 +149,82 @@ public class LocalStorageServiceImpl implements LocalStorageService { Long currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); String now = DateUtil.now(); - List> listMap = EasyExcel.read(path).sheet(0).doReadSync(); -// listMap.remove(0); - for (int i = 2; i < 86; i++) { + //List> listMap = EasyExcel.read(path).sheet(1).doReadSync(); + List> listMap = new ArrayList<>(); + for (int i = 3; i < listMap.size(); i++) { Map map = listMap.get(i); - String package_box_sn = String.valueOf(map.get(17)); - String container_name = String.valueOf(map.get(9)); - String sale_order = String.valueOf(map.get(15)); - String no = String.valueOf(map.get(16)); - String customer_name = String.valueOf(map.get(21)); - String customer_description = String.valueOf(map.get(22)); + + /*//外库,计划内 + String package_box_sn = String.valueOf(map.get(16)); + String container_name = String.valueOf(map.get(8)); + String sale_order = String.valueOf(map.get(14)); + String no = String.valueOf(map.get(15)); + String customer_name = String.valueOf(map.get(20)); + String sap_pcsn = String.valueOf(map.get(9)); + String customer_description = String.valueOf(map.get(21)); + String product_name = String.valueOf(map.get(1)); + String product_description = String.valueOf(map.get(2)); + String date_of_FG_inbound = String.valueOf(map.get(11)); + String width = String.valueOf(map.get(22)); + String thickness = String.valueOf(map.get(23)); + String net_weight = String.valueOf(map.get(3)); + String length = String.valueOf(map.get(25)); + String is_un_plan_production = "0";*/ + + /*//外库,计划外分切 + String package_box_sn = String.valueOf(map.get(26)); + String container_name = String.valueOf(map.get(33)); + String sale_order = String.valueOf(map.get(29)); + //String no = String.valueOf(map.get(15)); + String customer_name = String.valueOf(map.get(30)); + String sap_pcsn = String.valueOf(map.get(33)); + String customer_description = String.valueOf(map.get(31)); String product_name = String.valueOf(map.get(2)); String product_description = String.valueOf(map.get(3)); - String date_of_FG_inbound = String.valueOf(map.get(11)); - String width = String.valueOf(map.get(23)); - String thickness = String.valueOf(map.get(24)); - String net_weight = String.valueOf(map.get(4)); - String length = String.valueOf(map.get(26)); - String is_un_plan_production = String.valueOf(map.get(27)); + String date_of_FG_inbound = String.valueOf(map.get(25)); + String width = String.valueOf(map.get(34)); + String thickness = String.valueOf(map.get(35)); + String net_weight = String.valueOf(map.get(37)); + String length = String.valueOf(map.get(38)); + String is_un_plan_production = "1";*/ - if (StrUtil.isEmpty(package_box_sn)) { + //成品库,计划内 + String package_box_sn = String.valueOf(map.get(18)); + String container_name = String.valueOf(map.get(10)); + String sale_order = String.valueOf(map.get(16)); + String no = String.valueOf(map.get(17)); + String customer_name = String.valueOf(map.get(22)); + String sap_pcsn = String.valueOf(map.get(9)); + String customer_description = String.valueOf(map.get(23)); + String product_name = String.valueOf(map.get(2)); + String product_description = String.valueOf(map.get(3)); + String date_of_FG_inbound = String.valueOf(map.get(12)); + String width = String.valueOf(map.get(24)); + String thickness = String.valueOf(map.get(25)); + String net_weight = String.valueOf(map.get(4)); + String length = String.valueOf(map.get(27)); + String is_un_plan_production = "0"; + + /*//成品库,计划外 + String package_box_sn = String.valueOf(map.get(26)); + String container_name = String.valueOf(map.get(34)); + String sale_order = String.valueOf(map.get(29)); + //String no = String.valueOf(map.get(17)); + String customer_name = String.valueOf(map.get(30)); + String sap_pcsn = String.valueOf(map.get(33)); + String customer_description = String.valueOf(map.get(31)); + String product_name = String.valueOf(map.get(2)); + String product_description = String.valueOf(map.get(3)); + String date_of_FG_inbound = String.valueOf(map.get(25)); + String width = String.valueOf(map.get(36)); + String thickness = String.valueOf(map.get(37)); + String net_weight = String.valueOf(map.get(5)); + String length = String.valueOf(map.get(40)); + String is_un_plan_production = "1";*/ + + /*if (StrUtil.isEmpty(package_box_sn)) { throw new BadRequestException("第" + (i + 2) + "行的木箱唯一码为空!"); - } + }*/ if (StrUtil.isEmpty(sale_order)) { throw new BadRequestException("第" + (i + 2) + "行的销售订单及行号为空!"); } @@ -203,17 +256,14 @@ public class LocalStorageServiceImpl implements LocalStorageService { throw new BadRequestException("第" + (i + 2) + "行的计划外分切的子卷为空!"); } - String material_code = String.valueOf(map.get(5)); - if (StrUtil.isEmpty(material_code)) { - continue; - } JSONObject jo = new JSONObject(); jo.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); jo.put("package_box_sn", package_box_sn); - jo.put("sap_pcsn", container_name); + jo.put("sap_pcsn", sap_pcsn); // jo.put("box_weight", BoxWeight); jo.put("quality_guaran_period", "90"); jo.put("sale_order_name", sale_order + "-" + no); + //jo.put("sale_order_name", sale_order); jo.put("customer_name", customer_name); jo.put("customer_description", customer_description); jo.put("product_name", product_name); @@ -221,6 +271,16 @@ public class LocalStorageServiceImpl implements LocalStorageService { jo.put("date_of_FG_inbound", date_of_FG_inbound); jo.put("container_name", container_name); jo.put("width", width); + if (StrUtil.isEmpty(thickness) || thickness.equals("null")) { + //查询物料中的厚度 + JSONObject mater = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + jo.getString("product_name") + "'").uniqueResult(0); + String code = mater.getString("material_name"); + code = code.replace("|", ","); + String[] split = code.split(","); + String last = split[2]; + String[] s = last.split("微"); + thickness = s[0]; + } jo.put("thickness", thickness); jo.put("net_weight", net_weight); jo.put("length", length); @@ -238,41 +298,66 @@ public class LocalStorageServiceImpl implements LocalStorageService { for (int i = 0; i < rows.size(); i++) { JSONObject row = rows.getJSONObject(i); String package_box_sn = row.getString("package_box_sn"); + if (StrUtil.isEmpty(package_box_sn) || package_box_sn.equals("null")) { + continue; + } double total_weight = 0; - JSONArray box_rows = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '"+package_box_sn+"'").getResultJSONArray(0); + JSONArray box_rows = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + package_box_sn + "'").getResultJSONArray(0); + + //判断该木箱是否已经存在库内 + JSONObject str_jo = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + row.get("package_box_sn") + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(str_jo)) { + throw new BadRequestException("木箱:" + row.get("package_box_sn") + "已存在库内,请对数据进行核实!"); + } + + //判断是否属于外库 + JSONObject goal_row = box_rows.getJSONObject(0); + JSONObject stor_jo = new JSONObject(); + if (goal_row.getString("remark").contains("外库")){ + stor_jo = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("is_virtualstore = '1'").uniqueResult(0); + }else { + stor_jo = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("is_productstore = '1'").uniqueResult(0); + } + //查询一个空的虚拟区货位 - JSONObject struct = WQL.getWO("PDA_ST_01").addParam("flag", "3").process().uniqueResult(0); + JSONObject struct = WQL.getWO("PDA_ST_01").addParam("flag", "3").addParam("stor_id", stor_jo.getString("stor_id")).process().uniqueResult(0); for (int j = 0; j < box_rows.size(); j++) { JSONObject box_row = box_rows.getJSONObject(j); JSONObject ivt_jo = new JSONObject(); //插入库存数据 - ivt_jo.put("stockrecord_id",IdUtil.getSnowflake(1,1).nextId()); - ivt_jo.put("struct_id",struct.getString("struct_id")); - ivt_jo.put("struct_code",struct.getString("struct_code")); - ivt_jo.put("struct_name",struct.getString("struct_name")); - ivt_jo.put("region_id",""); - ivt_jo.put("quality_scode","01"); - ivt_jo.put("pcsn",box_row.getString("container_name")); - ivt_jo.put("canuse_qty",box_row.getString("net_weight")); - ivt_jo.put("frozen_qty",0); - ivt_jo.put("ivt_qty",box_row.getString("net_weight")); - ivt_jo.put("instorage_time",DateUtil.now()); - JSONObject mater = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '"+box_row.getString("product_name")+"'").uniqueResult(0); - ivt_jo.put("material_id",mater.getString("material_id")); - ivt_jo.put("qty_unit_id",mater.getString("base_unit_id")); + ivt_jo.put("stockrecord_id", IdUtil.getSnowflake(1, 1).nextId()); + ivt_jo.put("struct_id", struct.getString("struct_id")); + ivt_jo.put("struct_code", struct.getString("struct_code")); + ivt_jo.put("struct_name", struct.getString("struct_name")); + ivt_jo.put("region_id", ""); + ivt_jo.put("quality_scode", "01"); + ivt_jo.put("pcsn", box_row.getString("container_name")); + ivt_jo.put("canuse_qty", box_row.getString("net_weight")); + ivt_jo.put("frozen_qty", 0); + ivt_jo.put("ivt_qty", box_row.getString("net_weight")); + ivt_jo.put("instorage_time", DateUtil.now()); + JSONObject mater = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + box_row.getString("product_name") + "'").uniqueResult(0); + ivt_jo.put("material_id", mater.getString("material_id")); + ivt_jo.put("qty_unit_id", mater.getString("base_unit_id")); WQLObject.getWQLObject("st_ivt_structivt").insert(ivt_jo); total_weight += box_row.getDoubleValue("net_weight"); } //更新总重量 - HashMap sub_map = new HashMap<>(); - sub_map.put("box_weight",total_weight+""); - sub_map.put("status","2"); + HashMap sub_map = new HashMap<>(); + //sub_map.put("box_weight", total_weight + ""); + //sub_map.put("quanlity_in_box", box_rows.size() + ""); + sub_map.put("status", "2"); WQLObject.getWQLObject("pdm_bi_subpackagerelation").update(sub_map,"package_box_sn = '"+package_box_sn+"'"); //更新仓位字段 - struct.put("storagevehicle_code",package_box_sn); + struct.put("storagevehicle_code", package_box_sn); WQLObject.getWQLObject("st_ivt_structattr").update(struct); + + //更新点位字段 + HashMap point_map = new HashMap<>(); + point_map.put("vehicle_code", package_box_sn); + WQLObject.getWQLObject("SCH_BASE_Point").update(point_map, "point_code = '" + struct.getString("struct_code") + "'"); } } } 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 951de6162..2e672fe3e 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 @@ -136,7 +136,11 @@ public class LmsToMesServiceImpl implements LmsToMesService { return result; } - JSONArray list = new JSONArray(); + + String UserName = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); + String Password = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); + param.put("UserName",UserName); + param.put("Password",Password); // String url = acsUrl + api; String url = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_URL").getValue(); 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 f7b972b53..8b6f5b0a5 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 @@ -42,7 +42,7 @@ public class BakingServiceImpl implements BakingService { * 1.第二条任务出现异常后 如何再次触发 */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public JSONObject ovenInAndOut(JSONObject whereJson) { String option = whereJson.getString("option"); // 1-入箱 2-出箱 @@ -80,9 +80,9 @@ public class BakingServiceImpl implements BakingService { // 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")); + 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.创建暂存位 --> 烘烤区任务 @@ -103,6 +103,7 @@ public class BakingServiceImpl implements BakingService { 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("io_type", "1"); hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id")); hotParam.put("task_id", task_id); hotParam.put("start_point_code", point_code1); @@ -173,9 +174,9 @@ public class BakingServiceImpl implements BakingService { 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")); + 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("烘烤区没有对应空位"); @@ -202,8 +203,9 @@ public class BakingServiceImpl implements BakingService { 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("io_type", "0"); hotParam.put("start_point_code", point_code1); - hotParam.put("next_point_code", jsonHotIvt.getString("point_code")); + hotParam.put("end_point_code", jsonHotIvt.getString("point_code")); hotParam.put("temperature", temperature); hotParam.put("oven_time", hours); this.createHotIoMst(hotParam); @@ -292,18 +294,22 @@ public class BakingServiceImpl implements BakingService { 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 last_hot_mst = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst").query("container_name = '" + jsonHotIvt.getString("container_name") + "' AND io_type = '0' order by confirm_time desc").uniqueResult(0); - // 创建明细 JSONObject hotParam = new JSONObject(); + hotParam.put("container_name", last_hot_mst.getString("container_name")); + hotParam.put("workorder_id", last_hot_mst.getString("workorder_id")); + hotParam.put("material_id", last_hot_mst.getString("material_id")); + hotParam.put("qty", last_hot_mst.get("qty")); + hotParam.put("io_type", "1"); + hotParam.put("qty_unit_id", last_hot_mst.getString("qty_unit_id")); 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); + hotParam.put("end_point_code", point_code2); + hotParam.put("temperature", last_hot_mst.getString("temperature")); + hotParam.put("oven_time", last_hot_mst.getString("oven_time")); + this.createHotIoMst(hotParam); } JSONObject result = new JSONObject(); result.put("message", "操作成功!"); @@ -311,7 +317,7 @@ public class BakingServiceImpl implements BakingService { } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public JSONObject inCoolIvt(JSONObject whereJson) { WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位点 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 @@ -356,7 +362,7 @@ public class BakingServiceImpl implements BakingService { InCoolIvtTask inCoolIvtTask = new InCoolIvtTask(); String task_id = inCoolIvtTask.createTask(param); - // 4.插入明细 + /* // 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(); @@ -364,7 +370,7 @@ public class BakingServiceImpl implements BakingService { 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); + this.createHotDtl(hotParam);*/ // 生成冷却区出入表 Long currentUserId = 2L; @@ -416,6 +422,7 @@ public class BakingServiceImpl implements BakingService { jsonHotMst.put("workorder_id", param.getString("workorder_id")); jsonHotMst.put("material_id", param.get("material_id")); jsonHotMst.put("qty", param.getString("qty")); + jsonHotMst.put("io_type", param.getString("io_type")); 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")); 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 index 3dfad6099..40b285dee 100644 --- 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 @@ -9,9 +9,12 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.service.impl.ParamServiceImpl; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl; import org.nl.wms.pda.mps.eum.RegionTypeEnum; import org.nl.wms.pda.mps.service.BakingService; import org.nl.wms.pda.mps.service.HandleBakingService; @@ -47,11 +50,8 @@ public class HandleBakingServiceImpl implements HandleBakingService { 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"); // 物料表 @@ -63,6 +63,12 @@ public class HandleBakingServiceImpl implements HandleBakingService { String point_code1 = whereJson.getString("point_code"); // 起点 String next_point_code = whereJson.getString("next_point_code"); // 终点 + JSONObject cool_ivt = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code1 + "'").uniqueResult(0); + String on_container_name = cool_ivt.getString("container_name"); + if (!on_container_name.equals(container_name)) { + throw new BadRequestException("点位上子卷不符!"); + } + Long currentUserId = 2L; String currentUsername = "默认用户"; @@ -127,13 +133,16 @@ public class HandleBakingServiceImpl implements HandleBakingService { hotParam.put("qty", jsonRaw.get("productin_qty")); hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id")); hotParam.put("start_point_code", point_code1); - hotParam.put("next_point_code", next_point_code); + hotParam.put("end_point_code", next_point_code); hotParam.put("temperature", temperature); hotParam.put("oven_time", hours); this.createHotIoMst(hotParam); // 更新烘箱区库存状态 JSONObject jsonHotIvt = hosIvtTab.query("point_code = '" + next_point_code + "'").uniqueResult(0); + if (StrUtil.isNotEmpty(jsonHotIvt.getString("container_name"))){ + throw new BadRequestException("目的点上存在母卷!"); + } jsonHotIvt.put("point_status", "02"); jsonHotIvt.put("container_name", container_name); jsonHotIvt.put("workorder_id", jsonRaw.getString("workorder_id")); @@ -198,6 +207,9 @@ public class HandleBakingServiceImpl implements HandleBakingService { //更新冷却区库存 JSONObject jsonIvt = coolIvtTab.query("full_point_code ='" + next_point_code + "'").uniqueResult(0); + if (StrUtil.isNotEmpty(jsonIvt.getString("container_name"))){ + throw new BadRequestException("目的点上存在母卷!"); + } jsonIvt.put("full_point_status", "02"); jsonIvt.put("cool_ivt_status", "03"); jsonIvt.put("instorage_time", DateUtil.now()); @@ -217,20 +229,33 @@ public class HandleBakingServiceImpl implements HandleBakingService { String point_code = whereJson.getString("point_code"); String container_name = whereJson.getString("container_name"); - if (StrUtil.isEmpty(point_code)){ + if (StrUtil.isEmpty(point_code)) { throw new BadRequestException("点位不能为空!"); } - if (StrUtil.isEmpty(container_name)){ + if (StrUtil.isEmpty(container_name)) { throw new BadRequestException("母卷不能为空!"); } - JSONObject cool_ivt = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '"+point_code+"'").uniqueResult(0); - String on_container_name = cool_ivt.getString("on_container_name"); - if (!on_container_name.equals(container_name)){ + JSONObject cool_ivt = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code + "'").uniqueResult(0); + String on_container_name = cool_ivt.getString("container_name"); + if (!on_container_name.equals(container_name)) { throw new BadRequestException("点位上子卷不符!"); } - cool_ivt.put("cool_ivt_status","04"); + cool_ivt.put("cool_ivt_status", "04"); + + //调用回传MES的半成品入库接口 + // 将入冷却信息发送给mes + JSONObject param = new JSONObject(); + String userName = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); + String passWord = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); + param.put("iContainerName", on_container_name); + param.put("iArrivalTime", DateUtil.now()); + param.put("iWarehouse", 2); + param.put("UserName", userName); + param.put("PassWord", passWord); + + new LmsToMesServiceImpl().momRollSemiFGInboundComplete(param); JSONObject result = new JSONObject(); result.put("message", "操作成功!"); @@ -252,6 +277,7 @@ public class HandleBakingServiceImpl implements HandleBakingService { jsonHotMst.put("material_id", param.get("material_id")); jsonHotMst.put("qty", param.getString("qty")); jsonHotMst.put("bill_status", "50"); + jsonHotMst.put("io_type", param.get("io_type")); 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")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java index a17453c58..3868e5ab8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java @@ -145,7 +145,7 @@ public class OutServiceImpl implements OutService { JSONObject jo = new JSONObject(); jo.put("point_code1", point_code); jo.put("point_code2", delivery_point.getString("point_code")); - jo.put("point_code3", delivery_point.getString("point_code")); + jo.put("point_code3",delivery_point.getString("point_code")); jo.put("point_code4", point_code); jo.put("vehicle_code", delivery_point.getString("qzzno")); jo.put("vehicle_code2", cut_qzzno); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql index a9119791e..eb49c6aea 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_OVENINANDOUT_01.wql @@ -76,6 +76,7 @@ WHERE is_used = '1' AND full_point_status = '01' + AND empty_point_status = '01' AND NOT EXISTS ( SELECT @@ -95,7 +96,7 @@ OPTION 输入.point_location <> "" point_location = 输入.point_location ENDOPTION - + ORDER BY sort_seq desc ENDSELECT ENDQUERY ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/CoolInServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/CoolInServiceImpl.java index ee585cf52..621f860b6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/CoolInServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/CoolInServiceImpl.java @@ -62,11 +62,11 @@ public class CoolInServiceImpl implements CoolInService { String is_bake = whereJson.getString("is_bake"); // 是否烘烤完成 // 查询终点在冷却区是否存在 - JSONObject jsonCoolIvt = coolIvtTab.query("point_code = '" + point_code + "' and full_point_status = '01' and empty_point_status = '01' and is_used = '1'").uniqueResult(0); + JSONObject jsonCoolIvt = coolIvtTab.query("full_point_code = '" + point_code + "' and full_point_status = '01' and empty_point_status = '01' and is_used = '1'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonCoolIvt)) throw new BadRequestException("此点位不存在或被占用"+point_code); //查询该点位是否存在任务 - JSONObject task_jo = WQLObject.getWQLObject("").query("(point_code1 like '%"+jsonCoolIvt.getString("point_code")+"%' OR point_code2 like '%"+jsonCoolIvt.getString("point_code")+"%') AND is_delete = '0' AND task_status < '07'").uniqueResult(0); + JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("(point_code1 like '%"+jsonCoolIvt.getString("point_code")+"%' OR point_code2 like '%"+jsonCoolIvt.getString("point_code")+"%') AND is_delete = '0' AND task_status < '07'").uniqueResult(0); if (ObjectUtil.isNotEmpty(task_jo)){ throw new BadRequestException("该点位存在未完成的任务,不允许绑定!"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql index d5de49bb8..f4d00dc48 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql @@ -20,6 +20,7 @@ 输入.is_used TYPEAS s_string 输入.begin_time TYPEAS s_string 输入.end_time TYPEAS s_string + 输入.container_name TYPEAS s_string 输入.bill_code TYPEAS s_string 输入.dtl_status TYPEAS s_string 输入.task_code TYPEAS s_string @@ -83,34 +84,18 @@ SELECT mst.bill_code, mst.container_name, - dtl.start_point_code, - dtl.next_point_code, - dtl.temperature, - dtl.oven_time, - dtl.create_name, - dtl.create_time, - dtl.confirm_optname, - dtl.confirm_time, - ( - CASE - dtl.dtl_status - WHEN '10' THEN '生成' - WHEN '40' THEN '执行中' - WHEN '50' THEN '确认' - END - ) AS dtl_status, - ( - CASE - dtl.task_type - WHEN '0' THEN 'AGV任务' - WHEN '1' THEN '桁架任务' - END - ) AS task_type, + mst.start_point_code, + mst.end_point_code, + mst.temperature, + mst.oven_time, + mst.create_name, + mst.create_time, + mst.confirm_optname, + mst.confirm_time, task.task_code FROM - ST_IVT_HotRegionIODtl dtl - LEFT JOIN ST_IVT_HotRegionIOMst mst ON mst.iostorinv_id = dtl.iostorinv_id - LEFT JOIN sch_base_task task ON task.task_id = dtl.task_id + ST_IVT_HotRegionIOMst mst + LEFT JOIN sch_base_task task ON task.task_id = mst.task_id WHERE mst.is_delete = '0' @@ -119,28 +104,28 @@ mst.bill_code = 输入.bill_code ENDOPTION - OPTION 输入.dtl_status <> "" - dtl.dtl_status = 输入.dtl_status - ENDOPTION - OPTION 输入.task_code <> "" task.task_code like 输入.task_code ENDOPTION OPTION 输入.start_point_code <> "" - dtl.start_point_code like 输入.start_point_code + mst.start_point_code like 输入.start_point_code ENDOPTION OPTION 输入.next_point_code <> "" - dtl.next_point_code like 输入.next_point_code + mst.end_point_code like 输入.next_point_code ENDOPTION OPTION 输入.begin_time <> "" - dtl.create_time >= 输入.begin_time + mst.create_time >= 输入.begin_time ENDOPTION OPTION 输入.end_time <> "" - dtl.create_time <= 输入.end_time + mst.create_time <= 输入.end_time + ENDOPTION + + OPTION 输入.end_time <> "" + mst.container_name = 输入.container_name ENDOPTION ENDSELECT 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 7fe8287c66c82bb88885686824c1ea7c8a46f2c9..79deffb3c3a2be626a3fbdf1e4011fd1ae635621 100644 GIT binary patch delta 86639 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 U=eK*l+fZpwsfMCp{PR9=PI3zai_7 z1N}F96c=az)b=&L4;qqJmZC*riNFVs2q<8oy<}1Nbk%6bZ*|sE)9~MZ)x>%fT}5J< z|Cd(XP6?^F`IlC^u1a84eLS&aNvK~FJXLL1?m1kt2rL?m z2Hnyo6F(j1sSVXu+UyB0Sn;>EiDSMO^`B_Nw6H|se4=&r$!Ya9WBY8;+(GM@pK*rw zw6J7~Fa3fUt@Y85htajGIDU>V{nFRR_|lJT-N2WA_v%x8Z{kb8f%X-?xA6S}-y(d! z#P@4_Z{tfpQ}Zpp^nVT!&+l>kQI)kP|EwI^r##%xxkFdqyZr8nJtqtI{+xs19@RRE zWoS`rG+RxX>=)G0Y?Zl|)LL}0*?N#huh?ww2LIABiVZ|FX)KEM7a3u;(iNiEVA*bU zWV;pCR~39bE8stClpX)LhN@uqR)KoD_CZy_=B+|9Dy%E5D)^ceVwDU8LA}u++Bgq{ z-3->=xutI4*j7>#;x8*FGJR|V?O&9tS17Lf*c#fm1w8#w1p3+<*|O5pL>pg_!d5>0 zxtQ*2iw}tGy6BU{5o_!x#4KN1IdR$7R=M5uk65`iDHCC`={{(Am`xZv`)B^y!gsIz ze*NPEm#*GB_RWC9YwVPeqj9lGtO^^!X_I8P9!ej0$4Fs;V!EI0=^p-Uja{zy{R^XVxX=CmwYY!igrTD>U>j?j9FJj<#;ULf zkHvrdY{?aaujIaR0K6$(XYd6i=q7Ao+pHZA5Z$q&={s~(+T?oKBGcbCOZ%FO|M=V5 z(=jo?))>cv%mCXl?(;SO8j{{>YpW>+1=>;qzUGOkiZ-~NZHOoxWXtg#H+ouHqv2wG zkgb_-pNW&l4x1=$2H9F_I93R@9q?&0k$BANU~3|RLu~23_BIp8j~^wXdBDG2hh=L0nQNl?B*GpdZd)DvV-Bq>G`}Wp?{$@p`DOvA;cwu4e~{ zNu6v7GGoN z>Jn(9&)@o*`LVJhrMs~F)$dI1T4`ac`HEOM6+Qji< zKqQP{!YJX4v{kP%YC(m}DE0>0$NzOs(CjI(n`%e))>nEyD6D8HRv%NpR_gD21Euv}; zCHmR`u`=2gG5AsaW@%XyiIOL427>ds4+@5gCqpC~H4SQtX|B1xzJ zC7bGB+I{?^5yOc75cJ>dVTdQwdx*gDwt89@O(d3waoM(v?;p@d#FemB7f%9gsrJfk z@Bj{{QT{bqo_73t!F3T>!M0qh6(!bJuvHD49NjQB7Vd2~T2^Cdppq4BRmHsuws0+N zg0NMzb@f@;0SzzStZb_!ZdSB~6wIz@%L@0s{p9xT+fT$_^=xhJvIL_YQLv-FE!8H^ z3j!P1F4@9wKlvJ?$QMm>ee1c4RI%Wv#zej#7aQ9sxp8Z( z*Eek3q)|*mEY!!wG;J5#6f5*?lG`?pYmBA&HcjGYPLIbbeq5urjT^>bF+MIKreTAo z4OmR;`1Wxz@mPIt+n_;w>jq8y8#O4no@EPdu_oWvh91cJEW?P#!`*z_^q^~;vG7Qo z<8Mv0Ju7e{3hiY?hiFed#jO{J)hGS0B%b1y2`iku>PE|ePk7$yHS!2z`Ty-ly9IcZ zU4_$QT?bFzm&0LJ^mr?_wx;C?EV&h{QHi(U3{*~&0Cu2~{Q*ZL`AcQ{8^}E}d!=P(u}bvQ-(q)^y(PDcAENAa zeG#c~zEga81pn_j^3b;^tT%&Bd!E>6_8M~Lt1*h56uID2XbdhF8>4}2QpQ4Kw? ziNRBuSbWt3oMZ%G?LkYxl{Tz3N{#TCCmH|7p>{jao8W`TN#b6ty^Od}-yRg2j$h6k zh2|Q9PC4Xf7enRZdE_48R1#}CaKU2)=fY?rf^jhZ}kd{q0<=&;OzG?6(bY7^|f&yF5Gc_Jdnky%ka(}zxG zX(I-9Yu~<88`dta@xW($cB>cL_L*m@EeMSQo!o3^1%)0WVdLFr?}k7cn~ae5gC`C4F^ zstmX+*>wccGR!!LI6Cag;Ecv1YPB%vtn0@*cF#>I?ri9+wdfmtYh`t6+CKC6Aye((Ki~%T=QAK#4L(pLqPj{4dMN zeZ*i+5WeuKb$2Xncfpc&L3pxQn4`28Co)yCM;6F{R-L*%L0q|#Aj!mSciW5>pGa&* z$?WnPalCvEqs3!I|D3}n`xKj*d(QgM`kqk7dOr?KWAyRX@CH9|wY7PIv7nzk5UmTg z_-jHW(&qPe*M(Yg?IyulKV&zBx(n-{4Og#HcQp{NdOA!JmQ2#6PT#s*lw@X>;k+Xn@u;R?IAdVR0b(B7 z`$J-&(7<`O@MX1`S9cl=P?~mt%s!A_(-dC6hNM)fXme!^$<=FW_Dv5byVhhIHa3&m zB;EtfCrI9nH1VgNv}lfH-|4?ca*lq|oZ~uCt9L~77ae-tpEVJ^gN$i|!oY>^wBmKG zIKs|{#W8KI>FbOC%C}zEuCtD4F|&?ohqd1>?D$$cRljimBiys*%Izd)kW=pqkq+Nq zt!9#S9>hyfUele;#M=XT=qC%Hozu}(rEsXf3~thzK0YVT8zIR}3nNf4eC;CZ z>8d_{9?dBSf8{tR;S@)ZVg6?3hi1NKR$?Az7s8Jbp@;$0xR;uFpqXFVfoB=13ae3L z9|lGJCNOq0x!AK|#Qn0O-28afu7wzC%3KJ?%UF`Ik0N%Ibs?5#+E93GSt_#iDz!VK! z$JjFF&ccd{W1zuTW{pGoGl0B6zqi9eR4GIUxJn^~cemi~iL0!gp=Zo-Gw*g;97&bw z9tYI+7oa-Qz&vk@sk0U&EsG+JV6WK`y-kO7w7{hzOK%4m^2Z7NcP&)Yw>$YV{#`;l z>tJ)nd&oAAi5Rt}Ah_w426&&pwwhjO1Ox4CgaW(`MyJw?ji8U8Y{Xf>kKRp_4XA*A z-UPt0X)qdwm#7*9^<+J$d|X`z3BJD-Jn78OfPP%G+TV(E|MnOZ z`&zIQ%)7M}Qzj;6F=X(7n{a&SE&@3w1{Ft8{DqjKs7U?Bu2dPZo}ByBv7=|dp&!S< zmi}&UN_E#@giT3*CoF;4$ndKOMzNNp8#_@1H*uIcVRIU)cBF|G?dF!#Wxf1#x@QJV zVUfM*R3C%6slIN2H)(n|=;FF=$kadqyJXQOv|9dhJh+$ZYYR} 烘箱,是则删除主表 - 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") + "'"); - - // 删除冷却出入表 - coolIoTab.delete("task_id = '" + task_id + "'"); - } - // 取消删除任务 taskTab.delete("task_id = '" + task_id + "'"); - - // 删除烘箱明细 - hotDtlTab.delete("task_id = '" + task_id + "'"); } if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { @@ -96,23 +79,6 @@ public class InHotTask extends AbstractAcsTask { jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - - // 更新明细表状态 - JSONObject jsonHotDtl = hotDtlTab.query("task_id = '" + task_id + "'").uniqueResult(0); - 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 (ObjectUtil.isNotEmpty(jsonTask.getString("point_code3"))) { - JSONObject jsonCoolIo = coolIoTab.query("task_id = '" + task_id + "'").uniqueResult(0); - jsonCoolIo.put("bill_status", "40"); - coolIoTab.update(jsonCoolIo); - } } if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { @@ -126,16 +92,8 @@ public class InHotTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - // 更新明细表 - JSONObject jsonHotDtl = hotDtlTab.query("task_id = '" + task_id + "'").uniqueResult(0); - jsonHotDtl.put("dtl_status", "50"); - jsonHotDtl.put("confirm_optid", currentUserId); - jsonHotDtl.put("confirm_optname", currentUsername); - jsonHotDtl.put("confirm_time", DateUtil.now()); - hotDtlTab.update(jsonHotDtl); - // 更新主表: 什么时候更新主表 - JSONObject jsonHotMst = hotMstTab.query("iostorinv_id = '" + jsonHotDtl.getString("iostorinv_id") + "'").uniqueResult(0); + JSONObject jsonHotMst = hotMstTab.query("task_id = '" + task_id + "'").uniqueResult(0); String hot_point_code = ""; // 判断此任务是否有三个点位 @@ -210,8 +168,8 @@ public class InHotTask extends AbstractAcsTask { param.put("iContainerName", jsonHotMst.getString("container_name")); param.put("iResourceName", hot_point_code); param.put("iMoveInDate", DateUtil.now()); - param.put("iPlanBakingTemperature", jsonHotDtl.getDoubleValue("temperature")); - param.put("iPlanBakingTimer", jsonHotDtl.getDoubleValue("oven_time")); + param.put("iPlanBakingTemperature", jsonHotMst.getDoubleValue("temperature")); + param.put("iPlanBakingTimer", jsonHotMst.getDoubleValue("oven_time")); param.put("UserName", userName); param.put("PassWord", passWord); 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 615be71fb..a588e23dc 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 @@ -62,7 +62,6 @@ public class OutHotTask extends AbstractAcsTask { WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 WQLObject hotIvtTab = WQLObject.getWQLObject("ST_IVT_HotPointIvt"); // 烘箱区库存表 WQLObject hotMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); // 烘箱区出入主表 - WQLObject hotDtlTab = WQLObject.getWQLObject("ST_IVT_HotRegionIODtl"); // 烘箱区出入明细表 String task_id = taskObj.getString("task_id"); JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); @@ -71,8 +70,7 @@ public class OutHotTask extends AbstractAcsTask { // 取消删除任务 taskTab.delete("task_id = '" + task_id + "'"); - // 删除出入烘箱任务明细 - hotDtlTab.delete("task_id = '" + task_id + "'"); + hotMstTab.delete("task_id = '" + task_id + "'"); } if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { @@ -81,11 +79,6 @@ public class OutHotTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - // 更新明细表状态 - JSONObject jsonHotDtl = hotDtlTab.query("task_id = '" + task_id + "'").uniqueResult(0); - jsonHotDtl.put("dtl_status", "40"); - hotDtlTab.update(jsonHotDtl); - } if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { @@ -101,22 +94,8 @@ public class OutHotTask extends AbstractAcsTask { JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); - // 更新明细表 - JSONObject jsonHotDtl = hotDtlTab.query("task_id = '" + task_id + "'").uniqueResult(0); - - Date date1 = DateUtil.parse(jsonHotIvt.getString("instorage_time")); - Date date2 = DateUtil.parse(DateUtil.now()); - long betweenDay = DateUtil.between(date1, date2, DateUnit.MINUTE); - - jsonHotDtl.put("dtl_status", "50"); - jsonHotDtl.put("confirm_optid", currentUserId); - jsonHotDtl.put("confirm_optname", currentUsername); - jsonHotDtl.put("confirm_time", DateUtil.now()); - jsonHotDtl.put("oven_time", Double.valueOf(betweenDay)); - hotDtlTab.update(jsonHotDtl); - // 更新主表: 什么时候更新主表 - JSONObject jsonHotMst = hotMstTab.query("iostorinv_id = '" + jsonHotDtl.getString("iostorinv_id") + "'").uniqueResult(0); + JSONObject jsonHotMst = hotMstTab.query("task_id = '" + task_id + "'").uniqueResult(0); // 更新暂存区点位状态 JSONObject jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); @@ -140,10 +119,8 @@ public class OutHotTask extends AbstractAcsTask { param.put("iContainerName", jsonHotMst.getString("container_name")); param.put("iResourceName", jsonHotIvt.getString("point_code")); param.put("iMoveOutDate", DateUtil.now()); - param.put("iabxActualBakingTemperature", jsonHotDtl.getDoubleValue("temperature")); - param.put("iabxActualBakingTimer", jsonHotDtl.getDoubleValue("oven_time")); - param.put("UserName", ""); - param.put("PassWord", ""); + param.put("iabxActualBakingTemperature", jsonHotMst.getDoubleValue("temperature")); + param.put("iabxActualBakingTimer", jsonHotMst.getDoubleValue("oven_time")); JSONObject result = new LmsToMesServiceImpl().momRollBakeOutBound(param); } 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 9486be46c..2c837d99e 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 @@ -2088,11 +2088,13 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { from_start.put("storagevehicle_code", ""); storPublicService.updateStructAndPoint(from_start); + //查询对应明细 + JSONObject dtl_jo = WQLObject.getWQLObject("st_ivt_iostorinvdtl").query("iostorinvdtl_id = '"+dis.getString("iostorinvdtl_id")+"'").uniqueResult(0); // 更新子卷包装关系表 状态 - 3 JSONObject jsonSub = subTab.query("container_name = '" + dis.getString("pcsn") + "' and status = '2'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonSub)) throw new BadRequestException("此子卷不存在或不为入库状态:" + dis.getString("pcsn")); // 如果是拆分入库则将包装关系改为生成状态 - if (jo_mst.getString("bill_type").equals("1005")){ + if (jo_mst.getString("bill_type").equals("1005") || (jo_mst.getString("bill_type").equals("1009") && StrUtil.isNotEmpty(dtl_jo.getString("source_bill_code")))){ jsonSub.put("status", "0"); } else { jsonSub.put("status", "3"); 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 e9144ea41..feb52b0fb 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 @@ -119,6 +119,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { jo_mst.put("upload_mes", "1"); jo_mst.put("upload_optid", SecurityUtils.getCurrentUserId()); jo_mst.put("upload_time", DateUtil.now()); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } } @@ -213,6 +214,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { if (jo_mst.getString("upload_sap").equals("1")) { jo_mst.put("is_upload", "1"); } + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } } } @@ -305,6 +307,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { jo_mst.put("upload_sap", "1"); jo_mst.put("is_upload", "1"); + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } @@ -374,6 +377,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { if (jo_mst.getString("upload_mes").equals("1") || is_productstore.equals("0")) { jo_mst.put("is_upload", "1"); } + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } // 改切出库 @@ -434,6 +438,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { if (jo_mst.getString("upload_mes").equals("1")) { jo_mst.put("is_upload", "1"); } + WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } } } @@ -499,6 +504,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { jo_mst.put("upload_mes", "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-ui/src/views/wms/pdm/ivt/hotpointivt/taskDtl.vue b/lms/nladmin-ui/src/views/wms/pdm/ivt/hotpointivt/taskDtl.vue index b426e68ce..0d697db0a 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/ivt/hotpointivt/taskDtl.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/ivt/hotpointivt/taskDtl.vue @@ -51,22 +51,15 @@ @keyup.enter.native="crud.toQuery" /> - - + - - + class="filter-item" + @keyup.enter.native="crud.toQuery" + /> - - + -