diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index 5ad66129..59f55a06 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -74,6 +74,7 @@ public enum AcsTaskEnum { REQUEST_WASH_EMP("10","清洗机器空框请求"),//清洗机下料位 REQUEST_WASH_FULL_ERROR("11","清洗机-满料异常请求"),//去半成品入库 异常位 REQUEST_WASH_PLOTTER_EMP("12","刻字上料空框回库"), + REQUEST_HRBCP_TASK("18","三线半成品任务申请"), ///api/dict/dictDetail/api/dict/dictDetail/api/dict/dictDetail AGV_SYSTEM_NB("1","诺宝机器人任务"), diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java index 641ec5df..b7da6746 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java @@ -16,6 +16,7 @@ import org.nl.wms.scheduler_manage.service.extendtask.packageWrap.WrapSendEmptyT import org.nl.wms.scheduler_manage.service.extendtask.plotter.PlotterSendMaterialTask; import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialQZTask; import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialTask; +import org.nl.wms.storage_manage.semimanagehr.service.extendtask.IosHrTask; import org.springframework.context.SmartLifecycle; import org.springframework.context.annotation.Configuration; @@ -37,6 +38,7 @@ public class ConventConfig implements SmartLifecycle { AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_EMP, SpringContextHolder.getBean(WashCallEmptyTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_FULL_ERROR, SpringContextHolder.getBean(WashSendMaterialQZTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_PLOTTER_EMP, SpringContextHolder.getBean(EngraveSendEmpTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_HRBCP_TASK, SpringContextHolder.getBean(IosHrTask.class)); System.out.println("初始化Task_Collent完成777"+AcsToWmsServiceImpl.Task_Collent.size()); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java index 0fa7616e..a4132620 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/rest/AcsToWmsController.java @@ -120,12 +120,12 @@ public class AcsToWmsController { return new ResponseEntity<>( HttpStatus.OK); } - @PostMapping("/deviceApply") - @Log("海柔半成品任务申请") - //("海柔半成品任务申请") + @PostMapping("/anomaly") + @Log("异常反馈接口") + //("异常反馈接口") @SaIgnore - public ResponseEntity deviceApply(@RequestBody JSONObject string) { - return new ResponseEntity<>(acsToWmsService.deviceApply(string),HttpStatus.OK); + public ResponseEntity anomaly(@RequestBody JSONObject string) { + return new ResponseEntity<>(acsToWmsService.anomaly(string),HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/AcsToWmsService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/AcsToWmsService.java index 13eaebdf..d63d5e54 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/AcsToWmsService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/AcsToWmsService.java @@ -86,13 +86,12 @@ public interface AcsToWmsService { /** * * @param json { - * type: 类型 - * device_code1: 设备1 - * barcode1: 条码1 - * device_code2: 设备2 - * barcode2: 条码2 + * task_id:"", + * status:"满入-4" + * } + * @return json { + * point_code2:"新分配货位" * } - * @return / */ - Map deviceApply(JSONObject json); + Map anomaly(JSONObject json); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/WmsToAcsService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/WmsToAcsService.java index 3f72ef1e..0c480a26 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/WmsToAcsService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/WmsToAcsService.java @@ -20,6 +20,7 @@ public interface WmsToAcsService { Map issueTaskToAcs(JSONArray arr); Map issueTaskToAcs2(JSONArray arr); Map issueTaskToAcs3(JSONArray arr); + Map issueTaskToAcs4(JSONArray arr); /** * WMS客户端--->ACS服务端 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java index db4635ae..0bbdcc13 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/AcsToWmsServiceImpl.java @@ -23,6 +23,10 @@ import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext_manage.acs.service.AcsToWmsService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; import org.nl.wms.pda_manage.pda.service.CacheLineHandService; import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask; import org.nl.wms.scheduler_manage.service.task.TaskService; @@ -33,8 +37,12 @@ import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; +import org.nl.wms.storage_manage.productmanage.util.RuleUtil; import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvEmpBcpService; import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; @@ -65,9 +73,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ @Autowired private ISchBaseTaskService itaskService; @Autowired + private IStIvtSectattrService sectattrService; // 库区服务 + @Autowired + private DivRuleCpService divRuleCpService; // 分配规则服务 + @Autowired private IStIvtIostorinvHrBcpInService iStIvtIostorinvHrBcpInService; @Autowired - private IStIvtIostorinvEmpBcpService iStIvtIostorinvEmpBcpService; + private IStIvtStructattrService structattrService; // 仓位服务 @Override public Map apply(JSONObject param) { @@ -351,87 +363,73 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ } @Override - public Map deviceApply(JSONObject json) { + public Map anomaly(JSONObject json) { /* - * 1.申请入满箱任务 - * 2.申请入空箱任务 - * 3.申请出满箱任务 - * 4.申请出空箱任务 + * 满入-4:重新分配个货位,有货货位锁定 */ + String task_id = json.getString("task_id"); + String status = json.getString("status"); // 4-满入 + HashMap result = new HashMap<>(); - String type = json.getString("type"); - try { - String device_code1 = json.getString("device_code1"); - String barcode1 = json.getString("barcode1"); - if (ObjectUtil.isEmpty(device_code1)) throw new BadRequestException("设备不能为空!"); + SchBaseTask taskDao = itaskService.getById(task_id); + if (ObjectUtil.isEmpty(taskDao)) throw new BadRequestException("任务不存在!"); - if (StrUtil.equals(type, "1")) { - /* 1.申请入满箱任务 */ + // 调用入库分配规则 + StIvtSectattr sect = sectattrService.getOne( + new QueryWrapper().lambda() + .eq(StIvtSectattr::getSect_name, "海柔半成品库区") + ); + JSONObject jo = new JSONObject(); + jo.put("sect_id", sect.getSect_id()); + jo.put("stor_id", sect.getStor_id()); + jo.put("rule_type", RuleUtil.PRODUCTION_IN_1); + StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo); + if (ObjectUtil.isEmpty(stIvtStructattr)) throw new BadRequestException("仓位不足!"); - if (ObjectUtil.isEmpty(barcode1)) throw new BadRequestException("条码不能为空!"); + // 更新单据入库仓位 + StIvtIostorinvHrBcp invDao = iStIvtIostorinvHrBcpInService.getOne( + new QueryWrapper().lambda() + .eq(StIvtIostorinvHrBcp::getTask_id, task_id) + , false + ); + if (ObjectUtil.isEmpty(invDao)) throw new BadRequestException("未找到对应入库单据!"); - JSONObject param = new JSONObject(); - param.put("device_code",device_code1); - param.put("barcode",barcode1); + // 锁定原仓位 + structattrService.update( + new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, invDao.getStruct_id()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("其他锁")) + ); - // 1.调用入库服务 - iStIvtIostorinvHrBcpInService.fullIn(param); + invDao.setStruct_id(stIvtStructattr.getStruct_id()); + invDao.setStruct_code(stIvtStructattr.getStruct_code()); + invDao.setStruct_name(stIvtStructattr.getStruct_name()); + iStIvtIostorinvHrBcpInService.updateById(invDao); - // 2.判断device_code2、barcode2 是否为空 - if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) { + // 更新任务入库仓位 + taskDao.setPoint_code3(stIvtStructattr.getStruct_code()); + itaskService.updateById(taskDao); - param.put("device_code",json.getString("device_code2")); - param.put("barcode",json.getString("barcode2")); - iStIvtIostorinvHrBcpInService.fullIn(param); - } - } else if (StrUtil.equals(type, "2")) { - /* 2.申请入空箱任务 */ + // 锁定新货位 + structattrService.update( + new UpdateWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, stIvtStructattr.getStruct_id()) + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("入库锁")) + ); - if (ObjectUtil.isEmpty(barcode1)) throw new BadRequestException("条码不能为空!"); - - JSONObject param = new JSONObject(); - param.put("device_code",device_code1); - param.put("barcode",barcode1); - - // 1.调用空托盘入库服务 - iStIvtIostorinvEmpBcpService.InEmp(param); - - // 2.判断device_code2、barcode2 是否为空 - if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) { - param.put("device_code",json.getString("device_code2")); - param.put("barcode",json.getString("barcode2")); - iStIvtIostorinvEmpBcpService.InEmp(param); - } - } else if (StrUtil.equals(type, "3")) { - /* 3.申请出满箱任务 */ - - } else if (StrUtil.equals(type, "4")) { - /* 4.申请出空箱任务 */ - - JSONObject param = new JSONObject(); - param.put("device_code",device_code1); - param.put("barcode",barcode1); - - // 1.调用空托盘出库库服务 - iStIvtIostorinvEmpBcpService.OutEmp(param); - - // 2.判断device_code2、barcode2 是否为空 - if (ObjectUtil.isNotEmpty(json.getString("device_code2"))) { - param.put("device_code",json.getString("device_code2")); - iStIvtIostorinvEmpBcpService.OutEmp(param); - } - } + result.put("point_code2", stIvtStructattr.getStruct_code()); } catch (Exception e) { result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("message", e.getMessage()); return result; } + result.put("status", HttpStatus.OK.value()); - result.put("message", "下发成功!"); + result.put("message", "操作成功"); return result; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java index 4e2ffbe3..05dd50f8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/acs/service/impl/WmsToAcsServiceImpl.java @@ -110,6 +110,33 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{ return AcsUtil.notifyAcs(api, form); } + @Override + public Map issueTaskToAcs4(JSONArray arr) { + JSONArray form = new JSONArray(); + for (Object o : arr) { + JSONObject task = (JSONObject) o; + if (task.get("is_send")==null){ + task.put("is_send",true); + } + JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id") + , "task_code", task.getString("task_code") + , "task_group_id", task.getString("task_group_id") + , "start_point_code", task.getString("point_code1") + , "next_point_code", task.getString("point_code3") + , "task_type", "18" + , "storage_task_type", task.getString("acs_task_type") + , "task_group_id", StringUtils.isBlank(task.getString("task_group_id"))? IdUtil.getStringId():task.getString("task_group_id") + , "priority", task.getString("priority") + , "is_send", task.getBoolean("is_send")?"1":"0" + , "vehicle_code", task.getString("vehicle_code") + , "agv_system_type", task.getString("agv_system_type") + )); + form.add(param); + } + String api = "api/wms/task"; + return AcsUtil.notifyAcs(api, form); + } + @Override public Map cancelToAcs(JSONArray arr) { String api = "api/wms/cancelTask"; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/extendtask/IosHrTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/extendtask/IosHrTask.java new file mode 100644 index 00000000..3523757e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/extendtask/IosHrTask.java @@ -0,0 +1,116 @@ +package org.nl.wms.storage_manage.semimanagehr.service.extendtask; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvEmpBcpService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/* + * @author Liuxy + * @Date 2023/9/13 20:23 + */ +@Service +@Slf4j +public class IosHrTask extends AbstractAcsTask { + + @Autowired + private IStIvtIostorinvHrBcpInService iStIvtIostorinvHrBcpInService; + + @Autowired + private IStIvtIostorinvEmpBcpService iStIvtIostorinvEmpBcpService; + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + + } + + @Override + public String createTask(JSONObject json) { + /* + * 13.申请入满箱任务 + * 17.申请入空箱任务 + * 14.申请出满箱任务 + * 16.申请出空箱任务 + */ + String type = json.getString("item_type"); + + String device_code1 = json.getString("device_code1"); + String barcode1 = json.getString("barcode1"); + + if (ObjectUtil.isEmpty(device_code1)) throw new BadRequestException("设备不能为空!"); + + if (StrUtil.equals(type, "13")) { + /* 1.申请入满箱任务 */ + + if (ObjectUtil.isEmpty(barcode1)) throw new BadRequestException("条码不能为空!"); + + JSONObject param = new JSONObject(); + param.put("device_code", device_code1); + param.put("barcode", barcode1); + + // 1.调用入库服务 + iStIvtIostorinvHrBcpInService.fullIn(param); + + // 2.判断device_code2、barcode2 是否为空 + if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) { + + param.put("device_code", json.getString("device_code2")); + param.put("barcode", json.getString("barcode2")); + iStIvtIostorinvHrBcpInService.fullIn(param); + } + } else if (StrUtil.equals(type, "17")) { + /* 2.申请入空箱任务 */ + + if (ObjectUtil.isEmpty(barcode1)) throw new BadRequestException("条码不能为空!"); + + JSONObject param = new JSONObject(); + param.put("device_code", device_code1); + param.put("barcode", barcode1); + + // 1.调用空托盘入库服务 + iStIvtIostorinvEmpBcpService.InEmp(param); + + // 2.判断device_code2、barcode2 是否为空 + if (ObjectUtil.isNotEmpty(json.getString("device_code2")) && ObjectUtil.isNotEmpty(json.getString("barcode2"))) { + param.put("device_code", json.getString("device_code2")); + param.put("barcode", json.getString("barcode2")); + iStIvtIostorinvEmpBcpService.InEmp(param); + } + } else if (StrUtil.equals(type, "14")) { + /* 3.申请出满箱任务 */ + + } else if (StrUtil.equals(type, "16")) { + /* 4.申请出空箱任务 */ + + JSONObject param = new JSONObject(); + param.put("device_code", device_code1); + param.put("barcode", barcode1); + + // 1.调用空托盘出库库服务 + iStIvtIostorinvEmpBcpService.OutEmp(param); + + // 2.判断device_code2、barcode2 是否为空 + if (ObjectUtil.isNotEmpty(json.getString("device_code2"))) { + param.put("device_code", json.getString("device_code2")); + iStIvtIostorinvEmpBcpService.OutEmp(param); + } + } + return null; + } + + @Override + public void cancel(String task_id) { + + } + + @Override + public void pointConfirm(JSONObject param) { + + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java index 1a89659e..af606523 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java @@ -270,7 +270,7 @@ public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpSe // 1.下发任务 WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class); - Map result = bean.issueTaskToAcs3(param); + Map result = bean.issueTaskToAcs4(param); // 反馈失败报错 if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java index c6fd9f6d..5a0f1e19 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpInServiceImpl.java @@ -535,7 +535,7 @@ public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl result = bean.issueTaskToAcs3(param); + Map result = bean.issueTaskToAcs4(param); // 反馈失败报错 if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpOutServiceImpl.java index 0c4846fa..03de9a83 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpOutServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvHrBcpOutServiceImpl.java @@ -494,7 +494,7 @@ public class StIvtIostorinvHrBcpOutServiceImpl extends ServiceImpl result = bean.issueTaskToAcs3(param); + Map result = bean.issueTaskToAcs4(param); // 反馈失败报错 if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) {