From 29878a0518eecb6071dad9d6512a8dad25b5ddf7 Mon Sep 17 00:00:00 2001 From: "ZHOUZ\\Noble'lift" <1014987728@qq.com> Date: Thu, 13 Oct 2022 14:44:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nladmin-system/pom.xml | 6 + .../org/nl/wms/basedata/master/wql/mdme.xls | Bin 159744 -> 172544 bytes .../wms/ext/sap/rest/SapToLmsController.java | 4 + .../sap/service/impl/SapToLmsServiceImpl.java | 5 + .../main/java/org/nl/wms/log/LokiLogType.java | 9 +- .../nl/wms/pda/mps/rest/OutController.java | 6 +- .../nl/wms/pda/mps/service/OutService.java | 2 +- .../pda/mps/service/impl/OutServiceImpl.java | 43 +++++- .../mps/service/impl/ShippingServiceImpl.java | 13 +- .../java/org/nl/wms/sch/service/wql/sch.xls | Bin 173056 -> 173056 bytes .../org/nl/wms/sch/tasks/CutConveyorTask.java | 137 ++++++++++++++++++ .../org/nl/wms/sch/tasks/CutTrussTask.java | 123 ++++++++++++++++ 12 files changed, 335 insertions(+), 13 deletions(-) create mode 100644 nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java create mode 100644 nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java diff --git a/nladmin-system/pom.xml b/nladmin-system/pom.xml index 62cc48878..fea3951b7 100644 --- a/nladmin-system/pom.xml +++ b/nladmin-system/pom.xml @@ -194,6 +194,12 @@ **/*.* + + ${basedir}/src/main/resources + + **/*.* + + diff --git a/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdme.xls b/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdme.xls index 266d7dc7dfe5a26420ea7e4ad60dc4a9b5c3a45a..f9f0f2c94c7af385844ffa3a9a156e528fb21f1a 100644 GIT binary patch delta 31841 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 SxJe4-KoBF8)^hN0=Kljc+2OeW delta 18819 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.getMaterialInfo(rows), HttpStatus.OK); } + @SaIgnore @PostMapping("/getDeliveryInfo") @Log("SAP给LMS推送交货单信息") @ApiOperation("SAP给LMS推送物料信息") @@ -37,6 +40,7 @@ public class SapToLmsController { return new ResponseEntity<>(sapToLmsService.getDeliveryInfo(jo), HttpStatus.OK); } + @SaIgnore @PostMapping("/getReturnDeliveryInfo") @Log("SAP给LMS推送退货交货单信息") @ApiOperation("SAP给LMS推送退货交货单信息") diff --git a/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java b/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java index ba4dd52ae..4bf9e62fb 100644 --- a/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java @@ -7,6 +7,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.ext.sap.service.SapToLmsService; +import org.nl.wms.log.LokiLog; +import org.nl.wms.log.LokiLogType; import org.springframework.stereotype.Service; @Service @@ -14,6 +16,7 @@ import org.springframework.stereotype.Service; @Slf4j public class SapToLmsServiceImpl implements SapToLmsService { + @LokiLog(type = LokiLogType.SAP_TO_LMS) @Override public JSONObject getMaterialInfo(JSONArray rows) { if (ObjectUtil.isEmpty(rows)) { @@ -30,6 +33,7 @@ public class SapToLmsServiceImpl implements SapToLmsService { return jo; } + @LokiLog(type = LokiLogType.SAP_TO_LMS) @Override public JSONObject getDeliveryInfo(JSONObject jo) { @@ -46,6 +50,7 @@ public class SapToLmsServiceImpl implements SapToLmsService { return result; } + @LokiLog(type = LokiLogType.SAP_TO_LMS) @Override public JSONObject getReturnDeliveryInfo(JSONObject jo) { /** diff --git a/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java b/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java index dc971d166..9ffddf0c2 100644 --- a/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java +++ b/nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java @@ -6,11 +6,14 @@ package org.nl.wms.log; * @Date: 2022/10/11 */ public enum LokiLogType { - DEFAULT( "默认"), - LMS_TO_MES( "LMS请求MES"), - MES_TO_LMS( "MES请求LMS"); + DEFAULT("默认"), + LMS_TO_MES("LMS请求MES"), + MES_TO_LMS("MES请求LMS"), + LMS_TO_SAP("LMS请求MES"), + SAP_TO_LMS("MES请求LMS"); private String desc; + LokiLogType(String desc) { } diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java index da511ace9..ec10ae48b 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java @@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor -@Api(tags = "子卷套管") +@Api(tags = "子卷出站") @RequestMapping("api/pda/out") @Slf4j public class OutController { @@ -32,8 +32,8 @@ public class OutController { } @PostMapping("/confirm") - @Log("套轴确认") - @ApiOperation("套轴确认") + @Log("子卷出站") + @ApiOperation("子卷出站") public ResponseEntity confirm(@RequestBody JSONObject whereJson) { outService.confirm(whereJson); return new ResponseEntity<>(HttpStatus.OK); diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/OutService.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/OutService.java index c7ab82b61..5ce17b7e1 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/OutService.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/OutService.java @@ -17,6 +17,6 @@ public interface OutService { * @param whereJson / * @return JSONObject */ - JSONObject confirm(JSONObject whereJson); + void confirm(JSONObject whereJson); } diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java index ffdaaa3b4..537a37c83 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/OutServiceImpl.java @@ -1,11 +1,15 @@ package org.nl.wms.pda.mps.service.impl; +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.checkerframework.checker.units.qual.K; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.pda.mps.service.OutService; import org.nl.wms.pda.mps.service.ShippingService; import org.springframework.stereotype.Service; @@ -33,11 +37,40 @@ public class OutServiceImpl implements OutService { @Override - public JSONObject confirm(JSONObject whereJson) { - JSONObject result = new JSONObject(); - result.put("code", "1"); - result.put("desc", "查询成功"); - return result; + public void confirm(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + + //查询该点位对应的机台编号 + 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)){ + throw new BadRequestException("未查询到对应的分切机!"); + } + + 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 = '1'").uniqueResult(0); + + 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)){ + 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("task_type","010403"); + } diff --git a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java index 95647060d..5f33c8274 100644 --- a/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java +++ b/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/ShippingServiceImpl.java @@ -11,6 +11,7 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.pda.mps.service.CasingService; import org.nl.wms.pda.mps.service.ShippingService; +import org.nl.wms.sch.tasks.CutConveyorTask; import org.springframework.stereotype.Service; import java.util.HashMap; @@ -20,6 +21,7 @@ import java.util.HashMap; @Slf4j public class ShippingServiceImpl implements ShippingService { + private final CutConveyorTask cutConveyorTask; @Override public JSONArray queryMaterialInfo(JSONObject whereJson) { @@ -52,7 +54,11 @@ public class ShippingServiceImpl implements ShippingService { } //如果查询到给ACS下发一个输送线任务 - + JSONObject form = new JSONObject(); + form.put("point_code1",empty_vehicle.getString("point_code")); + form.put("point_code2","SS01"); + form.put("task_type","010401"); + cutConveyorTask.createTask(form); } @Override @@ -77,6 +83,11 @@ public class ShippingServiceImpl implements ShippingService { .addParam("flag", "4").process().uniqueResult(0); //下发输送线任务 + JSONObject form = new JSONObject(); + form.put("point_code1","SS02"); + form.put("point_code2",empty_point.getString("point_code")); + form.put("task_type","010401"); + cutConveyorTask.createTask(form); } diff --git a/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls b/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/sch.xls index b42dae6228df3a05c20a53decb986cf4019b91bf..38227be4200d4aae015e855aef13bc07c07af97a 100644 GIT binary patch delta 395 zcmZoT!PRhrYeNnT>jvEw^&*oCSw8cAc)qw^-Iuc#z<{uZpJs$&l)h+ zf*HPsP{vs(W4o^rV>>UW4Fdy%0}wMz7QCjw=fJ=QWHJIpfGoD{+zyP9OuPY?mVk{H zSiY=Yq`lCIaeJW?(`OA{Fdt~G!a1P$_QGr?bw0*r+h%cL}YTMv^A z%d6x!oYVPwnG~jf>tPaMbezuJ%k+0~-Kz_j!c? delta 393 zcmZoT!PRhrYeNnTtHZ_}p#qZ&Sw8bRXf6#ExOamQEYe)ay1kHWt(V*0GX3+4l@oiGU~zP&J;Nu7_8Vf)NVrk_Gg3=GqGdYP1_Z|h-_ zVMz^s!#SO=mq}szw;m=DM%U@wy-fd@ixQKkEA%i)ZCC4KVqs+36h2+2pJ_Lf>$2%D z`J=HA{gm#Kjb0K}GbS^xk5 diff --git a/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java b/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java new file mode 100644 index 000000000..52fcf86f5 --- /dev/null +++ b/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java @@ -0,0 +1,137 @@ +package org.nl.wms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.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.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.service.PointService; +import org.nl.wms.sch.service.dto.PointDto; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class CutConveyorTask extends AbstractAcsTask { + private final String THIS_CLASS = CutConveyorTask.class.getName(); + + @Override + @Transactional + public void updateTaskStatus(JSONObject taskObj, String status) { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt"); + + String task_id = taskObj.getString("task_id"); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status,"0")) { + // 取消删除任务 + taskTab.delete("task_id = '"+task_id+"'"); + } + + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + + if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + // 更改任务状态为完成 + jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonTask.put("update_optname", SecurityUtils.getCurrentUsername()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + + String point_code1 = jsonTask.getString("point_code1"); + String point_code2 = jsonTask.getString("point_code2"); + + if (jsonTask.getString("task_type").equals("010401")){ + // 校验终点是否存在 + JSONObject jsonIvt = ivtTab.query("point_code ='" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonIvt)) { + throw new BadRequestException("未找到可用点位:" + point_code2); + } + + // 更新分切输送库存状态 + jsonIvt.put("point_status", "01"); + ivtTab.update(jsonIvt); + } + if (jsonTask.getString("task_type").equals("010402")){ + // 校验终点是否存在 + JSONObject jsonIvt = ivtTab.query("point_code ='" + point_code2 + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonIvt)) { + throw new BadRequestException("未找到可用点位:" + point_code2); + } + + // 更新分切输送库存状态 + jsonIvt.put("point_status", "03"); + ivtTab.update(jsonIvt); + } + } + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + @Transactional + public String createTask(JSONObject form) { + WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task"); + Long currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + JSONObject json = new JSONObject(); + json.put("task_id", IdUtil.getSnowflake(1,1).nextId()); + json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + json.put("task_type", form.getString("task_type")); + json.put("task_status", "01"); + json.put("point_code1", form.getString("point_code1")); + json.put("point_code2", form.getString("point_code2")); + json.put("handle_class", THIS_CLASS); + 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","5" ); + tab.insert(json); + + return json.getString("task_id"); + } + + @Override + @Transactional + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } + +} diff --git a/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java b/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java new file mode 100644 index 000000000..7b3fa5d0a --- /dev/null +++ b/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java @@ -0,0 +1,123 @@ +package org.nl.wms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.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.core.bean.WQLObject; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class CutTrussTask extends AbstractAcsTask { + private final String THIS_CLASS = CutTrussTask.class.getName(); + + @Override + @Transactional + public void updateTaskStatus(JSONObject taskObj, String status) { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); + WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt"); + + String task_id = taskObj.getString("task_id"); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status,"0")) { + // 取消删除任务 + taskTab.delete("task_id = '"+task_id+"'"); + } + + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + + if(StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + // 更改任务状态为完成 + jsonTask.put("task_status",TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); + jsonTask.put("update_optname", SecurityUtils.getCurrentUsername()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + + + if (jsonTask.getString("task_type").equals("010403")){ + // 校验终点是否存在 + JSONObject jsonIvt = ivtTab.query("point_code ='" + point_code1 + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonIvt)) { + throw new BadRequestException("未找到可用点位:" + point_code2); + } + + // 更新分切输送库存状态 + jsonIvt.put("point_status", "01"); + ivtTab.update(jsonIvt); + } + } + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + @Transactional + public String createTask(JSONObject form) { + WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task"); + Long currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + JSONObject json = new JSONObject(); + json.put("task_id", IdUtil.getSnowflake(1,1).nextId()); + json.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + json.put("task_type", form.getString("task_type")); + json.put("task_status", "01"); + json.put("point_code1", form.getString("point_code1")); + json.put("point_code2", form.getString("point_code2")); + json.put("point_code3", form.getString("point_code3")); + json.put("point_code4", form.getString("point_code4")); + json.put("handle_class", THIS_CLASS); + 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","5" ); + tab.insert(json); + + return json.getString("task_id"); + } + + @Override + @Transactional + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + @Override + public void pullBack(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } + +}