From 27d5e5fafe0bc0a6a085435cca0c4f5d21cf14f7 Mon Sep 17 00:00:00 2001 From: "ZHOUZ\\Noble'lift" <1014987728@qq.com> Date: Fri, 9 Dec 2022 13:19:17 +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 --- .../wms/ext/acs/rest/AcsToWmsController.java | 9 + .../wms/ext/acs/service/AcsToWmsService.java | 9 + .../acs/service/impl/AcsToWmsServiceImpl.java | 62 +++ .../pda/mps/rest/HandleBakingController.java | 26 +- .../wms/pda/mps/rest/RawFoilController.java | 14 +- .../pda/mps/service/HandleBakingService.java | 6 +- .../wms/pda/mps/service/RawFoilService.java | 7 +- .../mps/service/impl/BakingServiceImpl.java | 48 +- .../service/impl/HandleBakingServiceImpl.java | 467 ++++++------------ .../pda/mps/service/impl/OutServiceImpl.java | 94 ++-- .../mps/service/impl/RawFoilServiceImpl.java | 104 ++-- .../org/nl/wms/pda/mps/wql/PDA_RAWFOIL_01.wql | 11 +- .../nl/wms/pda/st/rest/CoolInController.java | 7 + .../nl/wms/pda/st/service/CoolInService.java | 7 + .../st/service/impl/CoolInServiceImpl.java | 25 +- .../java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql | 14 + .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 250880 -> 251904 bytes .../org/nl/wms/sch/tasks/CallEmpReelTask.java | 41 +- .../java/org/nl/wms/sch/tasks/InHotTask.java | 76 +-- 19 files changed, 491 insertions(+), 536 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 0fe289f57..a2a951b56 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -58,4 +58,13 @@ public class AcsToWmsController { public ResponseEntity againApply(@RequestBody String task_id) { return new ResponseEntity<>(acsToWmsService.againApply(task_id), HttpStatus.OK); } + + @PostMapping("/deviceApply") + @Log("申请贴标、捆扎") + @ApiOperation("申请贴标、捆扎") + public ResponseEntity deviceApply(@RequestBody JSONObject jo) { + return new ResponseEntity<>(acsToWmsService.deviceApply(jo), HttpStatus.OK); + } + + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 17e953807..f6c2de94d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -51,4 +51,13 @@ public interface AcsToWmsService { */ JSONObject apply(JSONObject whereJson); + /** + * ACS客户端--->LMS服务端 + * 申请贴标、捆扎 + * + * @param whereJson 条件 + * @return JSONObject + */ + JSONObject deviceApply(JSONObject whereJson); + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 6783bae44..85c14113c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -2,15 +2,19 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.date.DateUtil; 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.system.service.impl.ParamServiceImpl; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.log.LokiLog; import org.nl.wms.log.LokiLogType; +import org.nl.wms.pda.st.service.PrintService; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.TaskService; import org.springframework.http.HttpStatus; @@ -25,8 +29,10 @@ import java.util.Map; @RequiredArgsConstructor @Slf4j public class AcsToWmsServiceImpl implements AcsToWmsService { + private final TaskService taskService; + private final PrintService printService; /** * task_id:任务标识 * task_code:任务编码 @@ -185,4 +191,60 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return null; } + + @Override + public JSONObject deviceApply(JSONObject whereJson) { + String vehicle_code = whereJson.getString("vehicle_code"); + String type = whereJson.getString("type"); + if (StrUtil.isEmpty(vehicle_code)){ + throw new BadRequestException("木箱码不能为空!"); + } + if (StrUtil.isEmpty(type)){ + throw new BadRequestException("任务类型不能为空!"); + } + + JSONObject result = new JSONObject(); + + JSONObject sub_jo = WQLObject.getWQLObject("").query("package_box_sn = '"+vehicle_code+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(sub_jo)){ + throw new BadRequestException("未查询到该木箱对应的包装关系!"); + } + if (type.equals("1")){ + //贴标申请 + String print_type = sub_jo.getString("print_type"); + if (StrUtil.isEmpty(print_type)){ + throw new BadRequestException("请指定一台打印机进行打印!"); + } + + String print_code = ""; + switch (print_type){ + case "1": + print_code = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("print_device1").getValue(); + break; + case "2": + print_code = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("print_device2").getValue(); + break; + default: + throw new BadRequestException("未查询到对应打印机!"); + } + JSONObject print_info = WQLObject.getWQLObject("pdm_bi_printinfo").query("print_name = '"+print_code+"'").uniqueResult(0); + JSONObject print_jo = new JSONObject(); + print_jo.put("box_no",vehicle_code); + print_jo.put("print_type",print_info.getString("print_id")); + printService.customerPrint(print_jo); + }else if (type.equals("2")){ + //捆扎申请 + String box_length = sub_jo.getString("box_length"); + String box_width = sub_jo.getString("box_width"); + String box_high = sub_jo.getString("box_high"); + result.put("box_length",box_length); + result.put("box_width",box_width); + result.put("box_high",box_high); + }else { + throw new BadRequestException("请输入正确的任务类型!"); + } + return result; + } + + } 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 index 95b68136c..5f0a012c8 100644 --- 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 @@ -7,7 +7,7 @@ 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.nl.wms.pda.mps.service.HandleBakingService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -17,24 +17,24 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor -@Api(tags = "烘烤工序") -@RequestMapping("api/pda/baking") +@Api(tags = "人工烘烤") +@RequestMapping("api/pda/handleBaking") @Slf4j -public class BakingController { +public class HandleBakingController { - private final BakingService bakingService; + private final HandleBakingService handleBakingService; @PostMapping("/ovenInAndOut") - @Log("烘箱出入") - @ApiOperation("烘箱出入") + @Log("手工烘箱出入") + @ApiOperation("手工烘箱出入") public ResponseEntity queryRawFoil(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(bakingService.ovenInAndOut(whereJson),HttpStatus.OK); + return new ResponseEntity<>(handleBakingService.ovenInAndOut(whereJson),HttpStatus.OK); } - @PostMapping("/inCoolIvt") - @Log("入冷却") - @ApiOperation("入冷却") - public ResponseEntity inCoolIvt(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(bakingService.inCoolIvt(whereJson),HttpStatus.OK); + @PostMapping("/checkConfirm") + @Log("库存变更") + @ApiOperation("库存变更") + public ResponseEntity checkConfirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(handleBakingService.checkConfirm(whereJson),HttpStatus.OK); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java index 730720912..2b98898f7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.logging.annotation.Log; +import org.nl.modules.wql.core.content.HttpContext; import org.nl.wms.pda.mps.service.RawFoilService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -34,14 +35,20 @@ public class RawFoilController { @Log("查询生箔生产进度") @ApiOperation("查询生箔生产进度") public ResponseEntity queryRawFoil(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(rawFoilService.queryRawFoil(whereJson), HttpStatus.OK); + HttpContext ctx = new HttpContext("11"); + ctx.setPage((String) (whereJson.get("page"))); + ctx.setRows((String) (whereJson.get("size"))); + return new ResponseEntity<>(rawFoilService.queryRawFoil(whereJson, ctx), HttpStatus.OK); } @PostMapping("/queryRawFoilList") @Log("查询生箔工单") @ApiOperation("查询生箔工单") public ResponseEntity queryRawFoilList(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(rawFoilService.queryRawFoilList(whereJson), HttpStatus.OK); + HttpContext ctx = new HttpContext("11"); + ctx.setPage((String) (whereJson.get("page"))); + ctx.setRows((String) (whereJson.get("size"))); + return new ResponseEntity<>(rawFoilService.queryRawFoilList(whereJson, ctx), HttpStatus.OK); } @PostMapping("/needEmptyAxis") @@ -55,8 +62,7 @@ public class RawFoilController { @Log("确认下卷") @ApiOperation("确认下卷") public ResponseEntity confirmBlanking(@RequestBody JSONObject whereJson) { - rawFoilService.confirmBlanking(whereJson); - return new ResponseEntity<>(HttpStatus.OK); + return new ResponseEntity<>(rawFoilService.confirmBlanking(whereJson), HttpStatus.OK); } @PostMapping("/finishBlanking") 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 index ef53194c7..5fb0d9532 100644 --- 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 @@ -2,7 +2,7 @@ package org.nl.wms.pda.mps.service; import com.alibaba.fastjson.JSONObject; -public interface BakingService { +public interface HandleBakingService { /** * 烘箱出入 @@ -12,11 +12,11 @@ public interface BakingService { JSONObject ovenInAndOut(JSONObject whereJson); /** - * 入冷却 + * 检测确认 * @param whereJson / * @return JSONObject */ - JSONObject inCoolIvt(JSONObject whereJson); + JSONObject checkConfirm(JSONObject whereJson); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java index 3d4925524..ca1fbfda7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java @@ -2,6 +2,7 @@ package org.nl.wms.pda.mps.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.nl.modules.wql.core.content.HttpContext; public interface RawFoilService { @@ -16,14 +17,14 @@ public interface RawFoilService { * @param whereJson / * @return JSONObject */ - JSONObject queryRawFoil(JSONObject whereJson); + JSONObject queryRawFoil(JSONObject whereJson, HttpContext ctx); /** * 查询生箔工单 * @param whereJson / * @return JSONObject */ - JSONObject queryRawFoilList(JSONObject whereJson); + JSONObject queryRawFoilList(JSONObject whereJson, HttpContext ctx); /** * 呼叫空卷轴 @@ -37,7 +38,7 @@ public interface RawFoilService { * @param whereJson / * @return JSONObject */ - void confirmBlanking(JSONObject whereJson); + JSONObject confirmBlanking(JSONObject whereJson); /** * 下卷完成 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 5cd909667..f7b972b53 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 @@ -70,7 +70,7 @@ public class BakingServiceImpl implements BakingService { if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("点位不能为空"); /* - * 根据点位判断是 冷却却入烘箱还是暂存区入烘箱 + * 根据点位判断是 冷却区入烘箱还是暂存区入烘箱 */ JSONObject jsonPointZc = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(jsonPointZc)) { @@ -94,19 +94,22 @@ public class BakingServiceImpl implements BakingService { InHotTask inHotTask = new InHotTask(); String task_id = inHotTask.createTask(param); - // 3.插入明细明细 - JSONObject jsonHotReMst = hosReMstTab.query("container_name = '" + container_name + "' and bill_status <> '50' and is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonHotReMst)) throw new BadRequestException("烘箱区出入主表不存在"); + // 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("iostorinv_id", jsonHotReMst.getString("iostorinv_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.createHotDtl(hotParam); + this.createHotIoMst(hotParam); } else { /* * 冷却区入烘箱 @@ -187,27 +190,24 @@ public class BakingServiceImpl implements BakingService { InHotTask inHotTask = new InHotTask(); String task_id = inHotTask.createTask(param); - // 4.插入烘箱区出入主表 和 明细表 + // 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("task_id", task_id); hotParam.put("workorder_id", jsonRaw.getString("workorder_id")); - hotParam.put("material_id", jsonMater.get("material_id")); - hotParam.put("qty", jsonMater.get("productin_qty")); - hotParam.put("qty_unit_id", jsonMater.get("base_unit_id")); - // 创建主表 - String iostorinv_id = this.createHotIoMst(hotParam); - // 创建明细 - hotParam.put("iostorinv_id", iostorinv_id); - hotParam.put("start_point_code", point_code2); + 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.createHotDtl(hotParam); + this.createHotIoMst(hotParam); + // 生成冷却区出入表 Long currentUserId = 2L; @@ -416,13 +416,21 @@ 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("bill_status", "10"); + 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"); @@ -436,8 +444,8 @@ public class BakingServiceImpl implements BakingService { WQLObject hotDtlTab = WQLObject.getWQLObject("ST_IVT_HotRegionIODtl"); // 烘箱区出入明细表 JSONObject jsonHotDtl = new JSONObject(); - jsonHotDtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId()); - jsonHotDtl.put("iostorinv_id", param.getString("iostorinv_id")); + 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")); 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 f7b972b53..3dfad6099 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,12 +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.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.pda.mps.service.HandleBakingService; import org.nl.wms.sch.tasks.InCoolIvtTask; import org.nl.wms.sch.tasks.InHotTask; import org.nl.wms.sch.tasks.OutHotTask; @@ -24,7 +24,7 @@ import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @Slf4j -public class BakingServiceImpl implements BakingService { +public class HandleBakingServiceImpl implements HandleBakingService { /* * 业务流程: @@ -56,254 +56,155 @@ public class BakingServiceImpl implements BakingService { WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 + // 入箱 + String container_name = whereJson.getString("container_name"); // 母卷号 + String temperature = whereJson.getString("temperature"); // 温度 + String hours = whereJson.getString("hours"); // 时间 + String point_code1 = whereJson.getString("point_code"); // 起点 + String next_point_code = whereJson.getString("next_point_code"); // 终点 + + Long currentUserId = 2L; + String currentUsername = "默认用户"; + + 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("物料不存在"); 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("点位不能为空"); + if (ObjectUtil.isEmpty(point_code1)) throw new BadRequestException("起点不能为空!"); + if (ObjectUtil.isEmpty(next_point_code)) 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")); + //插入冷却区出入库单表 + // 生成冷却区出入表 + 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", "50"); + jsonCool.put("qty_unit_id", jsonMater.getString("base_unit_id")); + jsonCool.put("start_point_code", point_code1); + jsonCool.put("end_point_code", next_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); - InHotTask inHotTask = new InHotTask(); - String task_id = inHotTask.createTask(param); + // 更新冷却区库存状态 + JSONObject jsonCoolIvt = coolIvtTab.query("full_point_code = '" + point_code1 + "'").uniqueResult(0); - // 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); + jsonCoolIvt.put("full_point_status", "01"); + jsonCoolIvt.put("container_name", ""); + jsonCoolIvt.put("workorder_id", ""); + jsonCoolIvt.put("ivt_qty", "0"); + jsonCoolIvt.put("instorage_time", ""); + jsonCoolIvt.put("update_optid", currentUserId); + jsonCoolIvt.put("update_optname", currentUsername); + jsonCoolIvt.put("update_time", DateUtil.now()); + coolIvtTab.update(jsonCoolIvt); - // 生成冷却区出入表 - 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("container_name", container_name); + hotParam.put("io_type", "0"); + 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("start_point_code", point_code1); - hotParam.put("next_point_code", point_code2); - hotParam.put("temperature", jsonHotIvt.getString("temperature")); - this.createHotDtl(hotParam); + hotParam.put("next_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); + jsonHotIvt.put("point_status", "02"); + jsonHotIvt.put("container_name", container_name); + jsonHotIvt.put("workorder_id", jsonRaw.getString("workorder_id")); + jsonHotIvt.put("ivt_qty", jsonRaw.getString("productin_qty")); + jsonHotIvt.put("instorage_time", DateUtil.now()); + jsonHotIvt.put("update_optid", currentUserId); + jsonHotIvt.put("update_optname", currentUsername); + jsonHotIvt.put("update_time", DateUtil.now()); + hosIvtTab.update(jsonHotIvt); + + } else if (StrUtil.equals(option, "2")) { + + //插入烘箱出入库记录表 + JSONObject hotParam = new JSONObject(); + hotParam.put("container_name", container_name); + hotParam.put("io_type", "1"); + 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("start_point_code", point_code1); + hotParam.put("next_point_code", next_point_code); + hotParam.put("temperature", temperature); + hotParam.put("oven_time", hours); + this.createHotIoMst(hotParam); + + //维护烘箱库存信息 + JSONObject jsonHotIvt = hosIvtTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); + // 更新烘箱区库存状态 + jsonHotIvt.put("point_status", "01"); + jsonHotIvt.put("container_name", ""); + jsonHotIvt.put("workorder_id", ""); + jsonHotIvt.put("ivt_qty", 0); + jsonHotIvt.put("instorage_time", ""); + jsonHotIvt.put("update_optid", currentUserId); + jsonHotIvt.put("update_optname", currentUsername); + jsonHotIvt.put("update_time", DateUtil.now()); + hosIvtTab.update(jsonHotIvt); + + //生成冷却区入库记录 + 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("start_point_code", point_code1); + jsonCool.put("end_point_code", next_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 jsonIvt = coolIvtTab.query("full_point_code ='" + next_point_code + "'").uniqueResult(0); + jsonIvt.put("full_point_status", "02"); + jsonIvt.put("cool_ivt_status", "03"); + jsonIvt.put("instorage_time", DateUtil.now()); + jsonIvt.put("container_name", jsonRaw.getString("container_name")); + jsonIvt.put("workorder_id", jsonRaw.getString("workorder_id")); + jsonIvt.put("ivt_qty", jsonRaw.getString("productin_qty")); + coolIvtTab.update(jsonIvt); } JSONObject result = new JSONObject(); result.put("message", "操作成功!"); @@ -312,90 +213,24 @@ public class BakingServiceImpl implements BakingService { @Override @Transactional - public JSONObject inCoolIvt(JSONObject whereJson) { - WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位点 - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 - WQLObject hotMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); // 烘箱出入主表 - WQLObject coolTab = WQLObject.getWQLObject("ST_IVT_CoolRegionIO"); // 冷却区出入表 - WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 - WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表 + public JSONObject checkConfirm(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + String container_name = whereJson.getString("container_name"); - - 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 (StrUtil.isEmpty(point_code)){ + throw new BadRequestException("点位不能为空!"); + } + if (StrUtil.isEmpty(container_name)){ + throw new BadRequestException("母卷不能为空!"); } - 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); + 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)){ + throw new BadRequestException("点位上子卷不符!"); + } - - 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); + cool_ivt.put("cool_ivt_status","04"); JSONObject result = new JSONObject(); result.put("message", "操作成功!"); 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 9311e94f0..a17453c58 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 @@ -37,8 +37,8 @@ public class OutServiceImpl implements OutService { } JSONArray rows = WQL.getWO("PDA_02").addParamMap(map).process().getResultJSONArray(0); JSONObject jo = new JSONObject(); - jo.put("data",rows); - jo.put("message","查询成功!"); + jo.put("data", rows); + jo.put("message", "查询成功!"); return jo; } @@ -52,7 +52,7 @@ public class OutServiceImpl implements OutService { JSONArray rows = whereJson.getJSONArray("cut_rows"); - if (rows.size()>2){ + if (rows.size() > 2) { throw new BadRequestException("最多选择两个子卷进行操作!"); } @@ -65,30 +65,30 @@ public class OutServiceImpl implements OutService { //对子卷任务进行校验 for (int i = 0; i < rows.size(); i++) { - JSONObject row = rows.getJSONObject(i); - if (StrUtil.isEmpty(split_group)){ + JSONObject row = rows.getJSONObject(i); + if (StrUtil.isEmpty(split_group)) { split_group = row.getString("split_group"); resource_name = row.getString("resource_name"); order_type = row.getString("order_type"); - if (order_type.equals("1")){ + if (order_type.equals("1")) { parent_container_name = row.getString("parent_container_name"); - }else { + } else { restruct_container_name = row.getString("restruct_container_name"); package_box_sn = row.getString("package_box_sn"); } - }else { - if (!split_group.equals(row.getString("split_group"))){ + } else { + if (!split_group.equals(row.getString("split_group"))) { throw new BadRequestException("两个子卷的分切组必须相同!"); } - if (!resource_name.equals(row.getString("resource_name"))){ + if (!resource_name.equals(row.getString("resource_name"))) { throw new BadRequestException("两个子卷的机台编号必须相同!"); } - if (order_type.equals("1")){ - if (!parent_container_name.equals(row.getString("parent_container_name"))){ + if (order_type.equals("1")) { + if (!parent_container_name.equals(row.getString("parent_container_name"))) { throw new BadRequestException("两个子卷的母卷号必须相同!"); } - }else { - if (!restruct_container_name.equals(row.getString("restruct_container_name")) || !package_box_sn.equals(row.getString("package_box_sn"))){ + } else { + if (!restruct_container_name.equals(row.getString("restruct_container_name")) || !package_box_sn.equals(row.getString("package_box_sn"))) { throw new BadRequestException("两个子卷的改制子卷必须相同!"); } } @@ -96,20 +96,20 @@ public class OutServiceImpl implements OutService { } //查询该点位对应的机台编号 - JSONObject cut_ivt = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("up_point_code ='"+point_code+"' OR down_point_code ='"+point_code+"'").uniqueResult(0); + JSONObject cut_ivt = WQLObject.getWQLObject("ST_IVT_CutPointIvt").query("up_point_code ='" + point_code + "' OR down_point_code ='" + point_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(cut_ivt)){ + if (ObjectUtil.isEmpty(cut_ivt)) { throw new BadRequestException("未查询到对应的分切机!"); } String cut_qzzno = rows.getJSONObject(0).getString("qzzno"); //判断是否末次下卷 - if (is_last.equals("1")){ + if (is_last.equals("1")) { //查询该分切机邻近位置的空载具的输送线点位 JSONObject empty_vehicle = WQL.getWO("PDA_02") .addParam("sort_seq", cut_ivt.getString("sort_seq")) - .addParam("sql_str", " ORDER BY abs("+cut_ivt.getString("sort_seq")+"-sort_seq),point_code") + .addParam("sql_str", " ORDER BY abs(" + cut_ivt.getString("sort_seq") + "-sort_seq),point_code") .addParam("product_area", cut_ivt.getString("product_area")) .addParam("point_location", cut_ivt.getString("point_location")) .addParam("flag", "3").process().uniqueResult(0); @@ -118,78 +118,78 @@ public class OutServiceImpl implements OutService { } JSONObject jo = new JSONObject(); - jo.put("point_code1",point_code); - jo.put("point_code2",empty_vehicle.getString("point_code")); - jo.put("vehicle_code",cut_qzzno); - jo.put("task_type","010404"); + jo.put("point_code1", point_code); + jo.put("point_code2", empty_vehicle.getString("point_code")); + jo.put("vehicle_code", cut_qzzno); + jo.put("task_type", "010404"); cutTrussTask.createTask(jo); - }else { + } else { String ext_code = cut_ivt.getString("ext_code"); //查询该机台编号已经配送完成,套轴完成但是未完成的分切计划 - JSONObject slitting = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("resource_name = '"+ext_code+"' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND status = '03'").uniqueResult(0); + JSONObject slitting = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("resource_name = '" + ext_code + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND status = '03'").uniqueResult(0); - if (ObjectUtil.isEmpty(slitting)){ + if (ObjectUtil.isEmpty(slitting)) { throw new BadRequestException("该分切机没有对应完成配送完成的气涨轴!"); } String qzzno = slitting.getString("qzzno"); //查询该气涨轴所在输送线位置 - JSONObject delivery_point = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").query("qzzno = '"+qzzno+"' AND point_status = '03'").uniqueResult(0); - if (ObjectUtil.isEmpty(delivery_point)){ + JSONObject delivery_point = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").query("qzzno = '" + qzzno + "' AND point_status = '03'").uniqueResult(0); + if (ObjectUtil.isEmpty(delivery_point)) { throw new BadRequestException("未查询到对应的输送线点位!"); } JSONObject jo = new JSONObject(); - jo.put("point_code1",delivery_point.getString("point_code")); - jo.put("point_code2",point_code); - jo.put("point_code3",point_code); - jo.put("point_code4",delivery_point.getString("point_code")); - jo.put("vehicle_code",delivery_point.getString("qzzno")); - jo.put("vehicle_code2",cut_qzzno); - jo.put("task_type","010403"); + 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_code4", point_code); + jo.put("vehicle_code", delivery_point.getString("qzzno")); + jo.put("vehicle_code2", cut_qzzno); + jo.put("task_type", "010403"); cutTrussTask.createTask(jo); } JSONObject result = new JSONObject(); - result.put("message","操作成功!"); + result.put("message", "操作成功!"); return result; } @Override public JSONObject conveyPointQuery(JSONObject whereJson) { String product_area = whereJson.getString("product_area"); - HashMap map = new HashMap<>(); - map.put("flag","10"); - if (StrUtil.isNotEmpty(product_area)){ - map.put("product_area",product_area); + HashMap map = new HashMap<>(); + map.put("flag", "10"); + if (StrUtil.isNotEmpty(product_area)) { + map.put("product_area", product_area); } - JSONArray deliver_rows = WQL.getWO("PDA_02").addParam("product_area",product_area).addParam("flag","").process().getResultJSONArray(0); + JSONArray deliver_rows = WQL.getWO("PDA_02").addParam("product_area", product_area).addParam("flag", "").process().getResultJSONArray(0); JSONObject jo = new JSONObject(); - jo.put("data",deliver_rows); - jo.put("message","查询成功!"); + jo.put("data", deliver_rows); + jo.put("message", "查询成功!"); return jo; } @Override public JSONObject conveyConfirm(JSONObject whereJson) { String point_code = whereJson.getString("point_code"); - if (StrUtil.isEmpty(point_code)){ + if (StrUtil.isEmpty(point_code)) { throw new BadRequestException("起点不能为空!"); } //如果查询到给ACS下发一个输送线任务 JSONObject form = new JSONObject(); - form.put("point_code1",point_code); - form.put("point_code2","SS01"); - form.put("task_type","010401"); + form.put("point_code1", point_code); + form.put("point_code2", "SS01"); + form.put("task_type", "010401"); CutConveyorTask cutConveyorTask = new CutConveyorTask(); cutConveyorTask.createTask(form); JSONObject jo = new JSONObject(); - jo.put("message","查询成功!"); + jo.put("message", "查询成功!"); return jo; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java index 5208c218e..09141446c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java @@ -15,6 +15,7 @@ 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.modules.wql.core.content.HttpContext; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.pda.mps.service.RawFoilService; @@ -44,7 +45,7 @@ public class RawFoilServiceImpl implements RawFoilService { } @Override - public JSONObject queryRawFoil(JSONObject whereJson) { + public JSONObject queryRawFoil(JSONObject whereJson, HttpContext ctx) { String point_code = whereJson.getString("point_code"); String container_name = whereJson.getString("container_name"); String product_area = whereJson.getString("product_area"); @@ -61,10 +62,11 @@ public class RawFoilServiceImpl implements RawFoilService { map.put("product_area", "A1"); }*/ - JSONArray arr = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().getResultJSONArray(0); - for (int i = 0; i < arr.size(); i++) { + JSONObject arr = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).pageQuery(ctx,"container_name"); + JSONArray rows = arr.getJSONArray("content"); + for (int i = 0; i < rows.size(); i++) { JSONObject json = new JSONObject(); - JSONObject jsonObject = arr.getJSONObject(i); + JSONObject jsonObject = rows.getJSONObject(i); String theory_height = jsonObject.getString("theory_height"); String eqp_velocity = jsonObject.getString("eqp_velocity"); @@ -84,9 +86,9 @@ public class RawFoilServiceImpl implements RawFoilService { if (betweenDay > 0) { json.put("color_type", "1"); - }else if(betweenDay <= 0 && betweenDay >= -30) { + } else if (betweenDay <= 0 && betweenDay >= -30) { json.put("color_type", "2"); - }else { + } else { json.put("color_type", "0"); } @@ -102,20 +104,22 @@ public class RawFoilServiceImpl implements RawFoilService { } JSONObject jo = new JSONObject(); jo.put("data", resultArr); + jo.put("size",arr.getString("totalElements")); jo.put("message", "查询成功!"); return jo; - + } @Override - public JSONObject queryRawFoilList(JSONObject whereJson) { + public JSONObject queryRawFoilList(JSONObject whereJson, HttpContext ctx) { JSONObject map = new JSONObject(); map.put("flag", "5"); map.put("point_code", whereJson.getString("point_code")); map.put("container_name", whereJson.getString("container_name")); - JSONArray resultJSONArray = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().getResultJSONArray(0); + JSONObject resultJSONArray = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).pageQuery(ctx,"container_name"); JSONObject jo = new JSONObject(); - jo.put("data", resultJSONArray); + jo.put("data", resultJSONArray.getJSONArray("content")); + jo.put("size",resultJSONArray.getString("totalElements")); jo.put("message", "查询成功!"); return jo; } @@ -124,10 +128,7 @@ public class RawFoilServiceImpl implements RawFoilService { @Transactional(rollbackFor = Exception.class) public JSONObject needEmptyAxis(JSONObject whereJson) { - WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表 - WQLObject regionTab = WQLObject.getWQLObject("ST_IVT_CoolRegionIO"); // 冷却区出入表 - WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料信息表 WQLObject sbTab = WQLObject.getWQLObject("ST_IVT_SbPointIvt"); // 生箔点位库存表 @@ -139,6 +140,7 @@ public class RawFoilServiceImpl implements RawFoilService { if (ObjectUtil.isEmpty(jsonSb)) throw new BadRequestException("生箔点位不存在"); String start_pint_code = ""; + String point_code4 = ""; // 2.根据就近原则查对应空卷抽 JSONObject map = new JSONObject(); map.put("flag", "1"); @@ -147,43 +149,16 @@ public class RawFoilServiceImpl implements RawFoilService { JSONObject jsonIvt = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0); // 3.如果没找到则继续找下一节点 if (ObjectUtil.isEmpty(jsonIvt)) { - String point_location = jsonSb.getString("point_location"); + /*String point_location = jsonSb.getString("point_location"); if (StrUtil.equals(point_location, "0")) map.put("point_location", "1"); if (StrUtil.equals(point_location, "1")) map.put("point_location", "0"); - JSONObject jsonIvt_tow = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0); - - if (ObjectUtil.isEmpty(jsonIvt_tow)) throw new BadRequestException("没有空卷轴"); - start_pint_code = jsonIvt_tow.getString("empty_point_code"); + JSONObject jsonIvt_tow = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0);*/ + throw new BadRequestException("未查询到可用点位"); } else { start_pint_code = jsonIvt.getString("empty_point_code"); + point_code4 = jsonIvt.getString("full_point_code"); } - //查询满轴存放点位 - // 2.根据就近原则查对应空卷抽 - String point_code4= ""; - JSONObject map4 = new JSONObject(); - map4.put("flag", "2"); - map4.put("product_area", jsonSb.getString("product_area")); - map4.put("point_location", jsonSb.getString("point_location")); - JSONObject jsonIvt4 = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map4).process().uniqueResult(0); - // 3.如果没找到则继续找下一节点 - if (ObjectUtil.isEmpty(jsonIvt4)) { - String point_location = jsonSb.getString("point_location"); - if (StrUtil.equals(point_location, "0")) { - map4.put("point_location", "1"); - } - if (StrUtil.equals(point_location, "1")) { - map4.put("point_location", "0"); - } - JSONObject jsonIvt_tow = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map4).process().uniqueResult(0); - - if (ObjectUtil.isEmpty(jsonIvt_tow)) { - throw new BadRequestException("没有空位"); - } - point_code4 = jsonIvt_tow.getString("full_point_code"); - } else { - point_code4 = jsonIvt4.getString("full_point_code"); - } // 起点和终点确定 生成任务 JSONObject param = new JSONObject(); param.put("point_code1", start_pint_code); @@ -194,34 +169,7 @@ public class RawFoilServiceImpl implements RawFoilService { param.put("material_code", jsonRaw.getString("container_name")); CallEmpReelTask callEmpReelTask = new CallEmpReelTask(); - String task_id = callEmpReelTask.createTask(param); - - // 插入入库单 - Long currentUserId = SecurityUtils.getCurrentUserId(); - String currentUsername = SecurityUtils.getCurrentUsername(); - - JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonMater)) throw new BadRequestException("产品不存在"); - - JSONObject jsonRegion = new JSONObject(); - jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); - jsonRegion.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); - jsonRegion.put("io_type", "1"); - jsonRegion.put("material_id", jsonMater.getString("material_id")); - jsonRegion.put("pcsn", jsonRaw.getString("container_name")); - jsonRegion.put("vehicle_code", ""); - jsonRegion.put("qty", jsonRaw.getString("productin_qty")); - jsonRegion.put("qty_unit_id", jsonMater.get("base_unit_id")); - jsonRegion.put("bill_status", "10"); - jsonRegion.put("start_point_code", jsonSb.getString("point_code")); - jsonRegion.put("end_point_code", point_code4); - jsonRegion.put("cust_id", ""); - jsonRegion.put("create_mode", "03"); - jsonRegion.put("task_id", task_id); - jsonRegion.put("create_id", currentUserId); - jsonRegion.put("create_name", currentUsername); - jsonRegion.put("create_time", DateUtil.now()); - regionTab.insert(jsonRegion); + callEmpReelTask.createTask(param); // 更新工单状态 jsonRaw.put("status", "02"); @@ -233,7 +181,7 @@ public class RawFoilServiceImpl implements RawFoilService { } @Override - public void confirmBlanking(JSONObject whereJson) { + public JSONObject confirmBlanking(JSONObject whereJson) { WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单 WQLObject sbTab = WQLObject.getWQLObject("st_ivt_sbpointivt"); // 生箔点位库存表 @@ -244,7 +192,7 @@ public class RawFoilServiceImpl implements RawFoilService { //查询该母卷号对应的任务 String container_name = whereJson.getString("container_name"); - JSONObject task_jo = WQLObject.getWQLObject("SCH_BASE_Task").query("material_code = '"+container_name+"' and task_status <> '07'").uniqueResult(0); + JSONObject task_jo = WQLObject.getWQLObject("SCH_BASE_Task").query("material_code = '" + container_name + "' and task_status <> '07'").uniqueResult(0); // 查询生箔点位库存表 JSONObject jsonSb = sbTab.query("ext_code = '" + jsonRaw.getString("resource_name") + "'and is_used = '1'").uniqueResult(0); @@ -261,12 +209,16 @@ public class RawFoilServiceImpl implements RawFoilService { JSONObject result = wmsToAcsService.updateTask(paramArr); if (!StrUtil.equals(result.getString("status"), "200")) { - throw new BadRequestException("操作失败:"+result.getString("message ")); + throw new BadRequestException("操作失败:" + result.getString("message ")); } // 更新工单状态为确认下卷 - jsonRaw.put("status","03"); + jsonRaw.put("status", "03"); rawTab.update(jsonRaw); + + JSONObject jo = new JSONObject(); + jo.put("message", "操作成功!"); + return jo; } @Override diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_RAWFOIL_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_RAWFOIL_01.wql index e58c87257..e219b68c5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_RAWFOIL_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/wql/PDA_RAWFOIL_01.wql @@ -51,6 +51,8 @@ ST_IVT_CoolPointIvt ivt WHERE ivt.empty_point_status = '02' + AND + ivt.full_point_status = '01' AND NOT EXISTS ( SELECT @@ -126,7 +128,7 @@ ENDIF IF 输入.flag = "4" - QUERY + PAGEQUERY SELECT der.* FROM @@ -148,11 +150,11 @@ ENDOPTION ENDSELECT - ENDQUERY + ENDPAGEQUERY ENDIF IF 输入.flag = "5" - QUERY + PAGEQUERY SELECT ( CASE @@ -176,7 +178,6 @@ der.product_area AS product_area, der.update_time AS update_time, ivt.point_location, - ivt.product_area, der.workorder_id FROM PDM_BI_RawFoilWorkOrder der @@ -194,7 +195,7 @@ ENDOPTION ENDSELECT - ENDQUERY + ENDPAGEQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/rest/CoolInController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/rest/CoolInController.java index 875677caa..4d4a16553 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/rest/CoolInController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/rest/CoolInController.java @@ -47,4 +47,11 @@ public class CoolInController { return new ResponseEntity<>(coolInService.confirmInstor(whereJson),HttpStatus.OK); } + @PostMapping("/statusList") + @Log("状态下拉框") + @ApiOperation("状态下拉框") + public ResponseEntity statusList(@RequestBody JSONObject whereJson){ + return new ResponseEntity<>(coolInService.statusList(whereJson),HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/CoolInService.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/CoolInService.java index a15d4b181..1a76a96d2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/CoolInService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/CoolInService.java @@ -25,4 +25,11 @@ public interface CoolInService { * @return JSONObject / */ JSONObject confirmInstor(JSONObject whereJson); + + /** + * 状态下拉框 + * @param whereJson / + * @return JSONObject / + */ + JSONObject statusList(JSONObject whereJson); } 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 3ef5d9563..ee585cf52 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,9 +62,14 @@ 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 is_used = '1'").uniqueResult(0); + JSONObject jsonCoolIvt = coolIvtTab.query("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); + if (ObjectUtil.isNotEmpty(task_jo)){ + throw new BadRequestException("该点位存在未完成的任务,不允许绑定!"); + } /* // 插入冷却区出入库单据 JSONObject jsonCool = new JSONObject(); jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1,1).nextId()); @@ -90,12 +95,17 @@ public class CoolInServiceImpl implements CoolInService { JSONObject json = coolIvtTab.query("container_name = '" + raw_jo.getString("container_name") + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(json)) throw new BadRequestException("此母卷库存已存在"); + //查询对应母卷信息 + JSONObject mom_jo = WQLObject.getWQLObject("pdm_bi_rawfoilworkorder").query("container_name = '"+raw_jo.getString("container_name")+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(mom_jo)){ + throw new BadRequestException("未查询到该母卷对应工单!"); + } // 更新冷却区库存 jsonCoolIvt.put("full_point_status", "02"); - if (StrUtil.equals(is_bake, "0")) jsonCoolIvt.put("cool_ivt_status", "01"); - if (StrUtil.equals(is_bake, "1")) jsonCoolIvt.put("cool_ivt_status", "03"); + jsonCoolIvt.put("cool_ivt_status", is_bake); jsonCoolIvt.put("container_name", raw_jo.getString("container_name")); jsonCoolIvt.put("workorder_id", raw_jo.getString("workorder_id")); + jsonCoolIvt.put("ivt_qty", raw_jo.getString("productin_qty")); jsonCoolIvt.put("instorage_time", DateUtil.now()); jsonCoolIvt.put("update_optid", currentUserId); jsonCoolIvt.put("create_name", currentUsername); @@ -106,4 +116,13 @@ public class CoolInServiceImpl implements CoolInService { result.put("message", "入库成功!"); return result; } + + @Override + public JSONObject statusList(JSONObject whereJson) { + JSONArray rows = WQL.getWO("PDA_COOLIN").addParam("flag","2").process().getResultJSONArray(0); + JSONObject jo = new JSONObject(); + jo.put("data", rows); + jo.put("message", "查询成功!"); + return jo; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql index 3736d6414..8dd18747b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_COOLIN.wql @@ -79,3 +79,17 @@ ENDSELECT ENDPAGEQUERY ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + label AS text, + value + FROM + sys_dict_detail + WHERE + dict_id = '115' + + ENDSELECT + ENDQUERY + ENDIF 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 ec9cf12ec455946437b83620d5a64fec08784a6e..7fe8287c66c82bb88885686824c1ea7c8a46f2c9 100644 GIT binary patch delta 40170 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 G_J06l6N4E5 delta 37412 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 P^u|ZJ#@V4y@XY@K;akBE diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java index 5f7853b7d..262f92ed0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java @@ -73,7 +73,7 @@ public class CallEmpReelTask extends AbstractAcsTask { taskTab.delete("task_id = '" + task_id + "'"); // 删除冷却区出入单据 - coolTab.delete("task_id = '"+task_id+"'"); + // coolTab.delete("task_id = '"+task_id+"'"); // 更新生箔工单状态为开始、清除称重信息 JSONObject jsonRaw = rawTab.query("container_name ='" + jsonTask.getString("material_code") + "' AND status <> '09' AND is_delete = '0'").uniqueResult(0); @@ -88,10 +88,10 @@ public class CallEmpReelTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - // 更新冷却区出入表 状态为执行中 + /*// 更新冷却区出入表 状态为执行中 JSONObject jsonCool = coolTab.query("task_id = '" + task_id + "'").uniqueResult(0); jsonCool.put("bill_status", "40"); - coolTab.update(jsonCool); + coolTab.update(jsonCool);*/ // 更新生箔工单称重信息 String weight = taskObj.getString("weight"); @@ -169,15 +169,32 @@ public class CallEmpReelTask extends AbstractAcsTask { ivtTab.update(jsonIvt2); } - // 更新冷却区出入表 - JSONObject jsonCool = coolTab.query("task_id = '" + task_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonCool)) { - jsonCool.put("bill_status", "50"); - jsonCool.put("confirm_optid", SecurityUtils.getCurrentUserId()); - jsonCool.put("confirm_optname", SecurityUtils.getCurrentUsername()); - jsonCool.put("confirm_time", DateUtil.now()); - coolTab.update(jsonCool); - } + // 插入入库单 + Long currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + JSONObject jsonMater = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonMater)) throw new BadRequestException("产品不存在"); + + JSONObject jsonRegion = new JSONObject(); + jsonRegion.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonRegion.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE")); + jsonRegion.put("io_type", "1"); + jsonRegion.put("material_id", jsonMater.getString("material_id")); + jsonRegion.put("pcsn", jsonRaw.getString("container_name")); + jsonRegion.put("vehicle_code", ""); + jsonRegion.put("qty", jsonRaw.getString("productin_qty")); + jsonRegion.put("qty_unit_id", jsonMater.get("base_unit_id")); + jsonRegion.put("bill_status", "50"); + jsonRegion.put("start_point_code", point_code2); + jsonRegion.put("end_point_code", point_code4); + jsonRegion.put("cust_id", ""); + jsonRegion.put("create_mode", "03"); + jsonRegion.put("task_id", task_id); + jsonRegion.put("create_id", currentUserId); + jsonRegion.put("create_name", currentUsername); + jsonRegion.put("create_time", DateUtil.now()); + coolTab.insert(jsonRegion); } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java index c0ef42337..8ccab706e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java @@ -70,7 +70,7 @@ public class InHotTask extends AbstractAcsTask { String task_id = taskObj.getString("task_id"); JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); - if (StrUtil.equals(status,"0")) { + if (StrUtil.equals(status, "0")) { // 判断此条明细是否是冷却区 -> 烘箱,是则删除主表 if (ObjectUtil.isNotEmpty(jsonTask.getString("point_code3"))) { @@ -78,18 +78,18 @@ public class InHotTask extends AbstractAcsTask { 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")+"'"); + hotMstTab.delete("iostorinv_id = '" + jsonHotDtl.getString("iostorinv_id") + "'"); // 删除冷却出入表 - coolIoTab.delete("task_id = '"+task_id+"'"); + coolIoTab.delete("task_id = '" + task_id + "'"); } // 取消删除任务 - taskTab.delete("task_id = '"+task_id+"'"); + taskTab.delete("task_id = '" + task_id + "'"); // 删除烘箱明细 - hotDtlTab.delete("task_id = '"+task_id+"'"); - } + hotDtlTab.delete("task_id = '" + task_id + "'"); + } if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { // 更新任务状态为执行中 @@ -115,12 +115,12 @@ public class InHotTask extends AbstractAcsTask { } } - if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { Long currentUserId = SecurityUtils.getCurrentUserId(); String currentUsername = SecurityUtils.getCurrentUsername(); // 更改任务状态为完成 - jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); jsonTask.put("update_optid", currentUserId); jsonTask.put("update_optname", currentUsername); jsonTask.put("update_time", DateUtil.now()); @@ -146,10 +146,10 @@ public class InHotTask extends AbstractAcsTask { // 更新烘箱区库存状态 JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); jsonHotIvt.put("point_status", "02"); - jsonHotIvt.put("container_name",jsonHotMst.getString("container_name")); - jsonHotIvt.put("workorder_id",jsonHotMst.getString("workorder_id") ); - jsonHotIvt.put("ivt_qty",jsonHotMst.getString("qty") ); - jsonHotIvt.put("instorage_time",DateUtil.now() ); + jsonHotIvt.put("container_name", jsonHotMst.getString("container_name")); + jsonHotIvt.put("workorder_id", jsonHotMst.getString("workorder_id")); + jsonHotIvt.put("ivt_qty", jsonHotMst.getString("qty")); + jsonHotIvt.put("instorage_time", DateUtil.now()); jsonHotIvt.put("update_optid", currentUserId); jsonHotIvt.put("update_optname", currentUsername); jsonHotIvt.put("update_time", DateUtil.now()); @@ -191,10 +191,10 @@ public class InHotTask extends AbstractAcsTask { // 更新烘箱区库存状态 JSONObject jsonHotIvt = hotIvtTab.query("point_code = '" + jsonTask.getString("point_code3") + "'").uniqueResult(0); jsonHotIvt.put("point_status", "02"); - jsonHotIvt.put("container_name",container_name ); - jsonHotIvt.put("workorder_id",workorder_id ); - jsonHotIvt.put("ivt_qty",ivt_qty ); - jsonHotIvt.put("instorage_time",DateUtil.now() ); + jsonHotIvt.put("container_name", container_name); + jsonHotIvt.put("workorder_id", workorder_id); + jsonHotIvt.put("ivt_qty", ivt_qty); + jsonHotIvt.put("instorage_time", DateUtil.now()); jsonHotIvt.put("update_optid", currentUserId); jsonHotIvt.put("update_optname", currentUsername); jsonHotIvt.put("update_time", DateUtil.now()); @@ -209,7 +209,7 @@ public class InHotTask extends AbstractAcsTask { String passWord = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); param.put("iContainerName", jsonHotMst.getString("container_name")); param.put("iResourceName", hot_point_code); - param.put("iMoveInDate", DateUtil. now()); + param.put("iMoveInDate", DateUtil.now()); param.put("iPlanBakingTemperature", jsonHotDtl.getDoubleValue("temperature")); param.put("iPlanBakingTimer", jsonHotDtl.getDoubleValue("oven_time")); param.put("UserName", userName); @@ -244,17 +244,17 @@ public class InHotTask extends AbstractAcsTask { String point_code1 = form.getString("point_code1"); String point_code2 = form.getString("point_code2"); String point_code3 = form.getString("point_code3"); - if (cutConveyorTask.isSingleTask(point_code1)){ - throw new BadRequestException("点位:"+point_code1+"存在未完成的任务!"); + if (cutConveyorTask.isSingleTask(point_code1)) { + throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!"); } - if (cutConveyorTask.isSingleTask(point_code2)){ - throw new BadRequestException("点位:"+point_code2+"存在未完成的任务!"); + if (cutConveyorTask.isSingleTask(point_code2)) { + throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!"); } - if (cutConveyorTask.isSingleTask(point_code3)){ - throw new BadRequestException("点位:"+point_code3+"存在未完成的任务!"); + if (cutConveyorTask.isSingleTask(point_code3)) { + throw new BadRequestException("点位:" + point_code3 + "存在未完成的任务!"); } JSONObject json = new JSONObject(); - json.put("task_id",IdUtil.getSnowflake(1,1).nextId()); + json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); json.put("task_type", "010201"); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); @@ -266,25 +266,34 @@ public class InHotTask extends AbstractAcsTask { json.put("create_id", currentUserId); json.put("create_name", currentUsername); json.put("create_time", DateUtil.now()); - json.put("priority","1" ); - json.put("acs_task_type","1" ); + json.put("priority", "1"); + json.put("acs_task_type", "1"); tab.insert(json); task_id = json.getString("task_id"); + + //更新对应点位库存为已裹膜 + JSONObject cool_ivt = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + form.getString("point_code1") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(cool_ivt)) { + throw new BadRequestException("未查询到对应的冷却区点位!"); + } + cool_ivt.put("cool_ivt_status", "02"); + WQLObject.getWQLObject("st_ivt_coolpointivt").update(cool_ivt); + } if (StrUtil.equals(form.getString("type"), "2")) { String point_code1 = form.getString("point_code1"); String point_code2 = form.getString("point_code2"); - if (cutConveyorTask.isSingleTask(point_code1)){ - throw new BadRequestException("点位:"+point_code1+"存在未完成的任务!"); + if (cutConveyorTask.isSingleTask(point_code1)) { + throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!"); } - if (cutConveyorTask.isSingleTask(point_code2)){ - throw new BadRequestException("点位:"+point_code2+"存在未完成的任务!"); + if (cutConveyorTask.isSingleTask(point_code2)) { + throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!"); } JSONObject json = new JSONObject(); - json.put("task_id",IdUtil.getSnowflake(1,1).nextId()); + json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); json.put("task_type", "010203"); json.put("task_status", "01"); @@ -295,8 +304,8 @@ public class InHotTask extends AbstractAcsTask { json.put("create_id", currentUserId); json.put("create_name", currentUsername); json.put("create_time", DateUtil.now()); - json.put("priority","1" ); - json.put("acs_task_type","1" ); + json.put("priority", "1"); + json.put("acs_task_type", "1"); tab.insert(json); task_id = json.getString("task_id"); } @@ -311,7 +320,6 @@ public class InHotTask extends AbstractAcsTask { } - @Override public void cancel(String task_id) {