diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java index c9c60d44a..1d92ff64b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/controller/PdmBiSubpackagerelationController.java @@ -103,7 +103,7 @@ public class PdmBiSubpackagerelationController { } @PostMapping("/updateEntityList") - @Log("子卷分配木箱规格") + @Log("子卷装箱") //@SaCheckPermission("@el.check(updateEntityList)") public ResponseEntity updateEntityList(@RequestBody JSONObject whereJson) { pdmBiSubpackagerelationService.updateEntityList(whereJson); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java index 994fe22fc..55c9d1b81 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java @@ -24,6 +24,7 @@ import org.nl.common.utils.SecurityUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.modules.common.exception.BadRequestException; +import org.nl.system.service.param.ISysParamService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.nl.common.domain.query.PageQuery; @@ -61,7 +62,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) { - return pdmBiSubpackagerelationMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper() .lambda()); } @@ -175,7 +176,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl entityList, List packagerelationList, String boxType) { + JSONObject boxInfo = new JSONObject(); + boxInfo.put("device_code", "ZXQ_1_1"); + boxInfo.put("material_code", "MX61103"); + String workorderId = "1597797877554483219"; + //子卷个数 + boxInfo.put("num", "1"); + String boxSn = outBoxManageService.outBox(boxInfo); + if (StringUtils.isBlank(boxSn)) { + throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!"); + } + //更新子卷包装关系更新木箱号 + UpdateWrapper updateWrapper1 = new UpdateWrapper<>(); + updateWrapper1.set("package_box_sn", boxSn); + updateWrapper1.eq("workorder_id", workorderId); + pdmBiSubpackagerelationMapper.update(null, updateWrapper1); + } + + + + + private void transferToPacking1(List packagerelationList) { + JSONObject jo = new JSONObject(); + //子卷号 + String containerName = "A1652211050505A2"; + //获取纸管长度 + String frpDescription = "1300"; + //获取木箱高度等级 + String height = "730"; + //起点 + String point_code1 = "ZXQ_1_9"; + //终点 + String point_code2 = "ZXQ_1_1"; + //托盘类型 1小托盘 2大托盘 + String containerType = "2"; + //木箱高度等级 + String heightLevel = ""; + String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); + String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue(); + if (Integer.parseInt(height) <= Integer.parseInt(heightLevel1)) { + heightLevel = "1"; + } else if (Integer.parseInt(height) > Integer.parseInt(heightLevel1) && Integer.parseInt(height) <= Integer.parseInt(heightLevel2)) { + heightLevel = "2"; + } else { + heightLevel = "3"; + } + jo.put("point_code1", point_code1); + jo.put("point_code2", point_code2); + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")); + jo.put("vehicle_code", containerName); + jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo.put("is_send", "1"); + JSONObject param = new JSONObject(); + //木箱最大数量 + param.put("maxNo", "1"); + //木箱放入子卷数量 + param.put("boxNo", "1"); + //是否最后子卷 + param.put("lastOne", "1"); + //子卷号 + param.put("barcode", containerName); + //子卷长度 + param.put("len", frpDescription); + //木箱高度等级 + param.put("heightLevel", heightLevel); + //托盘类型 1小托盘 2大托盘 + param.put("containerType", containerType); + jo.put("request_param", param.toString()); + zxDjwTask.createTask(jo); + } + + /** * 空木箱出库 @@ -265,7 +342,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl 待检区,木箱码不能为空!"); + throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!"); } //更新子卷包装关系更新木箱号 UpdateWrapper updateWrapper1 = new UpdateWrapper<>(); @@ -276,6 +353,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl装箱区agv任务 */ @@ -318,12 +396,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl packagerelationList) { //下发装箱区->装箱对接位桁架任务 JSONObject jo = new JSONObject(); jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")); //todo 测试,装箱点位-1-1 - jo.put("point_code1", "ZXQ_1_9"); + jo.put("point_code1", "ZXQ_1_8"); //todo 测试,装箱对接位01 jo.put("point_code2", "ZXQ_1_1"); jo.put("vehicle_code", packagerelationList.get(0).getContainer_name()); @@ -356,13 +437,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery pageable); + /** + * 查询没有搬运任务的空的目标点位 + * @param ivtType 点位类型 + * @param ivtStatus 库存状态 + * @return List + */ + List checkEndPointTask(String ivtType, String ivtStatus); + + + + + /** * 创建 * @@ -52,6 +66,9 @@ public interface IbstIvtPackageinfoivtService extends IService ids); + + + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java index 57c1e8192..6cc4662e3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java @@ -1,20 +1,27 @@ package org.nl.b_lms.sch.point.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import cn.hutool.core.date.DateUtil; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.utils.SecurityUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.nl.common.domain.query.PageQuery; import javax.annotation.Resource; +import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; /** @@ -30,6 +37,14 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl checkEndPointTask(String ivtType, String ivtStatus) { + List bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper + .selectList(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .eq(BstIvtPackageinfoivt::getPoint_status, ivtType) + .eq(BstIvtPackageinfoivt::getIvt_status,ivtStatus) + .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + List taskList = taskService.list(new LambdaUpdateWrapper() + //未完成任务 + .lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .and( + r -> r.in(SchBaseTask::getPoint_code2, bstIvtPackageinfoivtList) + )); + return bstIvtPackageinfoivtList.stream().filter(r->! taskList.stream().map(SchBaseTask::getPoint_code2).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList()); + } + + + /** * 创建 * diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java index fd91c6756..4c33fefe3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -109,6 +109,10 @@ public class SchBaseTaskServiceImpl extends ServiceImpl Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) { throw new BadRequestException("任务已执行不能取消"); } - // 更新任务表删除字段 map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是")); - // 解锁仓位 JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定")); attrTab.update(jsonAttr); } - map.put("update_optid", SecurityUtils.getCurrentUserId()); map.put("update_optname", SecurityUtils.getCurrentNickName()); map.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java index 05197bbc2..81c4b1f54 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutEmpTask.java @@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import static org.nl.wms.util.TaskUtil.getRoutePlanCode; + /** * 二期空托盘出库任务类 * Created by Lxy on 2024/1/19. @@ -45,6 +47,7 @@ public class TwoOutEmpTask extends AbstractAcsTask { .task_code(json.getString("task_code")) .task_type(json.getString("acs_task_type")) .start_device_code(json.getString("point_code1")) + .route_plan_code(getRoutePlanCode(json.getString("point_code1"))) .next_device_code(json.getString("point_code2")) .vehicle_code(json.getString("vehicle_code")) .priority(json.getString("priority")) @@ -167,7 +170,6 @@ public class TwoOutEmpTask extends AbstractAcsTask { json.put("create_time", DateUtil.now()); json.put("priority", "1"); json.put("acs_task_type", "7"); - WQLObject.getWQLObject("SCH_BASE_Task").insert(json); return json.getString("task_id"); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutExceptionalTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutExceptionalTask.java index 81ce93f2e..74ad6b44f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutExceptionalTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutExceptionalTask.java @@ -18,6 +18,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import static org.nl.wms.util.TaskUtil.getRoutePlanCode; + /** * 二期出库异常任务类 * Created by Lxy on 2024/1/19. @@ -50,6 +52,7 @@ public class TwoOutExceptionalTask extends AbstractAcsTask { .vehicle_code(json.getString("vehicle_code")) .priority(json.getString("priority")) .class_type(json.getString("task_type")) + .route_plan_code(getRoutePlanCode(json.getString("point_code1"))) .dtl_type(String.valueOf(dtl_type)) .remark(json.getString("remark")) .build(); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java index 43c8da7f6..21753695c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoOutTask.java @@ -29,6 +29,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static org.nl.wms.util.TaskUtil.getRoutePlanCode; + /** * Created by Lxy on 2021/12/22. */ @@ -74,6 +76,7 @@ public class TwoOutTask extends AbstractAcsTask { .next_device_code(json.getString("point_code2")) .vehicle_code(json.getString("vehicle_code")) .interaction_json(json.getJSONObject("request_param")) + .route_plan_code(getRoutePlanCode(json.getString("point_code1"))) .priority(json.getString("priority")) .class_type(json.getString("task_type")) .dtl_type(String.valueOf(dtl_type)) @@ -131,6 +134,7 @@ public class TwoOutTask extends AbstractAcsTask { // 调用标识完成 StIvtIostorinvOutServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvOutServiceImpl.class); bean.finishTask(jsonTask); + // 判断此任务组是否全部完成 JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'") .getResultJSONArray(0); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java index e25acb39e..7b5d04e7e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoSendOutTask.java @@ -26,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import static org.nl.wms.util.TaskUtil.getRoutePlanCode; + @Service @RequiredArgsConstructor @Slf4j @@ -54,6 +56,7 @@ public class TwoSendOutTask extends AbstractAcsTask { .priority(json.getString("priority")) .class_type(json.getString("task_type")) .dtl_type(String.valueOf(dtl_type)) + .route_plan_code(getRoutePlanCode(json.getString("point_code1"))) .remark(json.getString("remark")) .build(); resultList.add(dto); @@ -127,13 +130,13 @@ public class TwoSendOutTask extends AbstractAcsTask { 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_code", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_type", form.getString("task_type")); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); json.put("point_code1", form.getString("point_code1")); + json.put("route_plan_code", getRoutePlanCode(json.getString("point_code1"))); json.put("point_code2", form.getString("point_code2")); json.put("vehicle_code", form.getString("vehicle_code")); json.put("handle_class", THIS_CLASS); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java index e258f040d..63728eb59 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/DjqTask.java @@ -4,7 +4,9 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.RequiredArgsConstructor; @@ -72,10 +74,10 @@ public class DjqTask extends AbstractAcsTask { .priority(r.getPriority()) .remark(r.getRemark()) .product_area(r.getProduct_area()) - .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统")) + .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) //.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务")) //.dtl_type(r.getDtl_type()) - //.params(r.getParams()) + .interaction_json(JSON.parseObject(r.getRequest_param())) .build(); resultList.add(dto); }); @@ -103,17 +105,24 @@ public class DjqTask extends AbstractAcsTask { packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //3更新库存记录 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); - //4.查询是否有未下发的输送线->满轴位任务,有就下发 - List notIssueTaskList = taskService.list(new LambdaUpdateWrapper() - //确定起点 + //4.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务 + List taskList = taskService.list(new LambdaQueryWrapper() + //确定起点未下发 + .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()) + .eq(SchBaseTask::getPoint_code1, "NBJ1002") .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) - .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())); - if (CollectionUtils.isNotEmpty(notIssueTaskList)) { - JSONObject jo = (JSONObject) JSONObject.toJSON(notIssueTaskList.get(0)); - jo.put("point_code2", schBaseTask.getPoint_code1()); - jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); - jo.put("is_send", true); - mzhcwTask.createTask(jo); + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + ); + if (CollectionUtils.isNotEmpty(taskList)) { + SchBaseTask task = taskList.get(0); + task.setPoint_code2(schBaseTask.getPoint_code1()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setUpdate_time(DateUtil.now()); + task.setUpdate_optid(SecurityUtils.getCurrentUserId()); + task.setUpdate_optname(SecurityUtils.getCurrentNickName()); + taskService.update(task); + //任务下发 + mzhcwTask.immediateNotifyAcs(task.getTask_id().toString()); } } // 取消 @@ -207,4 +216,6 @@ public class DjqTask extends AbstractAcsTask { schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); taskService.update(schBaseTask); } + + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java index b9a81ce8b..fa3a26b43 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/GzqTask.java @@ -3,7 +3,9 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.RequiredArgsConstructor; @@ -67,10 +69,10 @@ public class GzqTask extends AbstractAcsTask { .priority(r.getPriority()) .remark(r.getRemark()) .product_area(r.getProduct_area()) - .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统")) + .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) //.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务")) //.dtl_type(r.getDtl_type()) - //.params(r.getParams()) + .interaction_json(JSON.parseObject(r.getRequest_param())) .build(); resultList.add(dto); }); @@ -95,17 +97,24 @@ public class GzqTask extends AbstractAcsTask { packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //更新库存记录 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); - //3.查询是否有未下发的输送线->满轴位任务,有就下发 - List notIssueTaskList = taskService.list(new LambdaUpdateWrapper() - //确定起点 + //3.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务 + List taskList = taskService.list(new LambdaQueryWrapper() + //确定起点未下发 + .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()) + .eq(SchBaseTask::getPoint_code1, "NBJ1002") .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) - .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())); - if (CollectionUtils.isNotEmpty(notIssueTaskList)) { - JSONObject jo = (JSONObject) JSONObject.toJSON(notIssueTaskList.get(0)); - jo.put("point_code2", schBaseTask.getPoint_code1()); - jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); - jo.put("is_send", true); - mzhcwTask.createTask(jo); + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) + ); + if (CollectionUtils.isNotEmpty(taskList)) { + SchBaseTask task = taskList.get(0); + task.setPoint_code2(schBaseTask.getPoint_code1()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setUpdate_time(DateUtil.now()); + task.setUpdate_optid(SecurityUtils.getCurrentUserId()); + task.setUpdate_optname(SecurityUtils.getCurrentNickName()); + taskService.update(task); + //任务下发 + mzhcwTask.immediateNotifyAcs(task.getTask_id().toString()); } } // 取消 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java index cb7be9a16..fefee83f8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/KzjhcwTask.java @@ -4,12 +4,15 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.task.dao.SchBaseTask; @@ -25,13 +28,14 @@ import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** - * 3 目标空载具缓存位, 待检区或管制区 -> 空载具缓存位 , 补空载具, agv任务 + * 3 目标空载具缓存位, 装箱区 -> 空载具缓存位 , 补空载具, agv任务 * * @author gbx * @since 2024-01-24 @@ -48,10 +52,8 @@ public class KzjhcwTask extends AbstractAcsTask { @Resource private IbstIvtPackageinfoivtService packageinfoivtService; - - @Resource - private KzjhcwTask kzjhcwTask; + private SsxDjwTask ssxDjwTask; @Override @@ -74,10 +76,10 @@ public class KzjhcwTask extends AbstractAcsTask { .priority(r.getPriority()) .remark(r.getRemark()) .product_area(r.getProduct_area()) - .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统")) + .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) //.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务")) //.dtl_type(r.getDtl_type()) - //.params(r.getParams()) + .interaction_json(JSON.parseObject(r.getRequest_param())) .build(); resultList.add(dto); }); @@ -87,8 +89,7 @@ public class KzjhcwTask extends AbstractAcsTask { @Override @Transactional(rollbackFor = Exception.class) public void updateTaskStatus(JSONObject taskObj, String status) { - SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper().eq( SchBaseTask::getTask_id, taskObj.getString("task_id")), false); - ; + SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false); if (schBaseTask == null) { throw new BadRequestException("待检区或管制区 -> 空载具缓存位更新接口任务号为空!"); } @@ -102,28 +103,25 @@ public class KzjhcwTask extends AbstractAcsTask { //2.改变起点点位状态 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //更新库存记录 - packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); - //3.待检区搬运空载具到空载具缓存位完毕,判断是否有未下发的空载具送输送线任务,有就下发 - List bstIvtPackageinfoivtList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")) - .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - //待检区和管控区点位 - List djqPointList = bstIvtPackageinfoivtList.stream().filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status()) - || PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())).collect(Collectors.toList()); + packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).eq("point_code", schBaseTask.getPoint_code2())); + //3.装箱区搬运空载具到空载具缓存位完毕,判断是否存在确定终点的空载具缓存位->输送线任务,存在就下发任务 List taskList = taskService.list(new LambdaQueryWrapper() - //确定起点未下发 - .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()) - .and(r -> - r.in(SchBaseTask::getPoint_code1, djqPointList) - ) - ); - taskList.forEach(r -> { - //任务下发 - kzjhcwTask.immediateNotifyAcs(r.getTask_id().toString()); - } + //确定终点未下发 + .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode()) + .eq(SchBaseTask::getPoint_code2, "NBJ1002") + .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")) ); + if (CollectionUtils.isNotEmpty(taskList)) { + SchBaseTask task = taskList.get(0); + task.setPoint_code1(schBaseTask.getPoint_code2()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setUpdate_time(DateUtil.now()); + task.setUpdate_optid(SecurityUtils.getCurrentUserId()); + task.setUpdate_optname(SecurityUtils.getCurrentNickName()); + taskService.update(task); + //任务下发 + ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString()); + } } // 取消 if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { @@ -215,4 +213,36 @@ public class KzjhcwTask extends AbstractAcsTask { schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); taskService.update(schBaseTask); } + + /** + * 装箱区->空载具缓存位补空 + */ + public void toKzjHcw(String pointCode) { + //存在空载具缓存位无空载具的点位 + List kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空")); + String pointCode1 = null; + JSONObject toKzjHcwTask = new JSONObject(); + if (StringUtils.isNotBlank(pointCode)) { + pointCode1 = pointCode; + } else { + //查询装箱区有空载具 + List zxqPointList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区")) + .eq(BstIvtPackageinfoivt::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + //装箱区有空载具 + if (CollectionUtils.isNotEmpty(zxqPointList)) { + pointCode1 = zxqPointList.get(0).getPoint_code(); + } + } + //去装箱区搬运空载具 + if (CollectionUtils.isNotEmpty(kzjIvtList) && pointCode1 != null) { + toKzjHcwTask.put("point_code1", pointCode1); + //送到到任意空载具缓存位 + toKzjHcwTask.put("point_code2", kzjIvtList.get(0).getPoint_code()); + toKzjHcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)")); + this.createTask(toKzjHcwTask); + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java index 53d4d63b3..f1555a5b4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/MzhcwTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -94,10 +95,10 @@ public class MzhcwTask extends AbstractAcsTask { .priority(r.getPriority()) .remark(r.getRemark()) .product_area(r.getProduct_area()) - //.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统")) + //.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) //.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务")) //.dtl_type(r.getDtl_type()) - //.params(r.getParams()) + .interaction_json(JSON.parseObject(r.getRequest_param())) .build(); resultList.add(dto); }); @@ -121,65 +122,69 @@ public class MzhcwTask extends AbstractAcsTask { //1.更改任务状态为完成 schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode()); //2.改变起点点位状态 - packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); + //packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //更新库存记录 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); //3.任务一、待检区AGV搬运任务,查询子卷信息,去分切计划表查找定级数据,桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区 - if (StringUtils.isBlank(schBaseTask.getVehicle_code())) { - throw new BadRequestException("子卷号不能为空!"); - } - PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper() - .eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code())); - if (containerInfo == null) { - throw new BadRequestException("找不到子卷信息!"); - } - //子卷等级 - String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel(); - // if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(level))) { - // throw new BadRequestException("非法的子卷等级!"); + // if (StringUtils.isBlank(schBaseTask.getVehicle_code())) { + // throw new BadRequestException("子卷号不能为空!"); // } - //查询待检区和管制区库位情况 + //PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper() + //.eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code())); + // if (containerInfo == null) { + //todo 现场测试,子卷号不在包装关系表中 + // throw new BadRequestException("找不到子卷信息!"); + // } + //子卷等级 + // String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel(); + // if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(level))) { + // throw new BadRequestException("非法的子卷等级!"); + // } + //String level ="1"; + //查询库位信息 List bstIvtPackageinfoivtList = packageinfoivtService .list(new LambdaUpdateWrapper() .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - // JSONObject toDjqTask = new JSONObject(); - // //获取子卷号 - // toDjqTask.put("vehicle_code", containerInfo.getContainer_name()); - // // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务 - // if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) { - // List djqPointList = bstIvtPackageinfoivtList.stream() - // .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status()) - // && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); - // if (CollectionUtils.isEmpty(djqPointList)) { - // throw new BadRequestException("待检区暂无空余库位!"); - // } - // toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); - // toDjqTask.put("point_code1", schBaseTask.getPoint_code2()); - // toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code()); - // djqTask.createTask(toDjqTask); - // } else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) { - // List gkqPointList = bstIvtPackageinfoivtList.stream() - // .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status()) - // && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); - // if (CollectionUtils.isEmpty(gkqPointList)) { - // throw new BadRequestException("管控区暂无空余库位!"); - // } - // toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区")); - // toDjqTask.put("point_code1", schBaseTask.getPoint_code2()); - // toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code()); - // gzqTask.createTask(toDjqTask); - // } - //4.创建空载具到输送线任务 - // if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) { + // JSONObject toDjqTask = new JSONObject(); + // //获取子卷号 + // toDjqTask.put("vehicle_code", schBaseTask.getVehicle_code()); + // // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务 + // if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) { + // List djqPointList = bstIvtPackageinfoivtList.stream() + // .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status()) + // && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())&& r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList()); + // if (CollectionUtils.isEmpty(djqPointList)) { + // throw new BadRequestException("待检区暂无空余库位!"); + // } + // toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); + // toDjqTask.put("point_code1", schBaseTask.getPoint_code2()); + // toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code()); + // // djqTask.createTask(toDjqTask); + // } else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) { + // List gkqPointList = bstIvtPackageinfoivtList.stream() + // .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status()) + // && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())&& r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList()); + // if (CollectionUtils.isEmpty(gkqPointList)) { + // throw new BadRequestException("管控区暂无空余库位!"); + // } + // toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区")); + // toDjqTask.put("point_code1", schBaseTask.getPoint_code2()); + // toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code()); + // //gzqTask.createTask(toDjqTask); + // } + //4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务 + //如果是输送线->满轴缓存位任务 + if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) { List kzjPointList = bstIvtPackageinfoivtList.stream() .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status()) && PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList()); JSONObject toSsxTask = new JSONObject(); toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); - toSsxTask.put("vehicle_code", containerInfo.getContainer_name()); - //判断空载具缓存位是否有空载具库存,有就叫桁架去任一一个位置搬空载具 + toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code()); + //toSsxTask.put("vehicle_code", containerInfo.getContainer_name()); + //判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具 if (CollectionUtils.isNotEmpty(kzjPointList)) { //直接创建搬运空载具任务 toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code()); @@ -187,49 +192,53 @@ public class MzhcwTask extends AbstractAcsTask { toSsxTask.put("point_code2", schBaseTask.getPoint_code1()); ssxDjwTask.createTask(toSsxTask); } else { - //空载具缓存位没有可用的库存:判断是否有正在搬运空载具过来的任务,有的话不创建 - //没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。 - List packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))); - //todo 查找正在搬运到待检区的任务,假设只有一个 - List taskList = taskService.list(new LambdaUpdateWrapper() - //执行中 - .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) - .and( - r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList) - )); - //没有正在搬运空载具过来的任务,创建搬运空载具任务 - if (CollectionUtils.isEmpty(taskList)) { - //查询待检区或管制区有空载具的 - List djqOrGzqPointList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - List djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList()); - //待检区库位有空载具 - if (CollectionUtils.isNotEmpty(djqPointList)) { - List kzjPoint = packageinfoivtList.stream() - .filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())) - .sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)) - .collect(Collectors.toList()); - //创建搬运空载具任务 - JSONObject toKzjhcwTask = new JSONObject(); - if (CollectionUtils.isNotEmpty(djqPointList)) { - //优先去待检区取空载具 - toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code()); - } else { - - toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code()); - } - toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)")); - //送到到任意空载具缓存位 - toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code()); - toKzjhcwTask.put("vehicle_code", containerInfo.getContainer_name()); - kzjhcwTask.createTask(toKzjhcwTask); - } - } - //} + // //空载具缓存位空载具:判断是否有正在搬运空载具过来的任务,有的话不创建 + // //没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。 + // List packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper() + // .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) + // .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))); + // //todo 查找正在搬运到待检区的任务,假设只有一个 + // List taskList = taskService.list(new LambdaUpdateWrapper() + // //执行中 + // .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) + // .and( + // r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList) + // )); + // //没有正在搬运空载具过来的任务,创建搬运空载具任务 + // if (CollectionUtils.isEmpty(taskList)) { + // //查询待检区或管制区有空载具的 + // List djqOrGzqPointList = packageinfoivtService + // .list(new LambdaUpdateWrapper() + // .in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区")) + // .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + // List djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList()); + // //待检区库位有空载具 + // if (CollectionUtils.isNotEmpty(djqPointList)) { + // List kzjPoint = packageinfoivtList.stream() + // .filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())) + // .sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)) + // .collect(Collectors.toList()); + // //创建搬运空载具任务 + // JSONObject toKzjhcwTask = new JSONObject(); + // if (CollectionUtils.isNotEmpty(djqPointList)) { + // //优先去待检区取空载具 + // toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code()); + // } else { + // + // toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code()); + // } + // toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)")); + // //送到到任意空载具缓存位 + // toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code()); + // //toKzjhcwTask.put("vehicle_code", containerInfo.getContainer_name()); + // toKzjhcwTask.put("vehicle_code", schBaseTask.getVehicle_code()); + // kzjhcwTask.createTask(toKzjhcwTask); + // } + //} + } + } else { + //四个点任务,改变pointCode3点位状态 + packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code3())); } } // 取消 @@ -262,9 +271,9 @@ public class MzhcwTask extends AbstractAcsTask { throw new BadRequestException("起点不能为空"); } String pointCode2 = form.getString("point_code2"); - if (StrUtil.isBlank(pointCode2)) { - throw new BadRequestException("下一点不能为空"); - } + // if (StrUtil.isBlank(pointCode2)) { + // throw new BadRequestException("下一点不能为空"); + // } //是否立即下发 boolean isSend = !StrUtil.isNotBlank(form.getString("is_send")) || BooleanUtil.toBoolean(form.getString("is_send")); SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder() @@ -322,6 +331,36 @@ public class MzhcwTask extends AbstractAcsTask { schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName()); taskService.update(schBaseTask); } - + /** + * 满轴缓存位->待检区 + */ + public void toDjq(String pointCode) { + //查询空载具缓存位是否有空载具 + List djQIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空")); + String pointCode1 = null; + JSONObject toDjqTask = new JSONObject(); + if (StringUtils.isNotBlank(pointCode)) { + pointCode1 = pointCode; + } else { + //查询满轴位是否有子卷且不存在进行中的任务 + List mzPointList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")) + .eq(BstIvtPackageinfoivt::getIs_used, IOSEnum.IS_NOTANDYES.code("是")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + //装箱区有空载具 + if (CollectionUtils.isNotEmpty(mzPointList)) { + pointCode1 = mzPointList.get(0).getPoint_code(); + } + } + //去装箱区搬运空载具 + if (CollectionUtils.isNotEmpty(djQIvtList) && pointCode1 != null) { + toDjqTask.put("point_code1", pointCode1); + //送到到任意空载具缓存位 + toDjqTask.put("point_code2", djQIvtList.get(0).getPoint_code()); + toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)")); + this.createTask(toDjqTask); + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java index a7f4267db..ee9c2ccee 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/SsxDjwTask.java @@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -51,6 +52,9 @@ public class SsxDjwTask extends AbstractAcsTask { @Resource private KzjhcwTask kzjhcwTask; + @Resource + private SsxDjwTask ssxDjwTask; + @Override @@ -73,10 +77,10 @@ public class SsxDjwTask extends AbstractAcsTask { .priority(r.getPriority()) .remark(r.getRemark()) .product_area(r.getProduct_area()) - //.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统")) + //.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) //.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务")) //.dtl_type(r.getDtl_type()) - //.params(r.getParams()) + .interaction_json(JSON.parseObject(r.getRequest_param())) .build(); resultList.add(dto); }); @@ -100,24 +104,23 @@ public class SsxDjwTask extends AbstractAcsTask { //2.改变起点点位状态 packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1())); //更新库存记录 - packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); + //packageinfoivtService.update(new UpdateWrapper().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2())); //3.空载具缓存位到输送线送空任务完成,去待检区或管制区补空载具 - List djqPointList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - //有空载具 - if (CollectionUtils.isNotEmpty(djqPointList)) { - //创建搬运空载具任务 - JSONObject toKzjhcwTask = new JSONObject(); - toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)")); - toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code()); - //任务起点为补空载具终点 - toKzjhcwTask.put("point_code2", schBaseTask.getPoint_code1()); - kzjhcwTask.createTask(toKzjhcwTask); - } + // List zxqPointList = packageinfoivtService + // .list(new LambdaUpdateWrapper() + // .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区")) + // .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")) + // .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + // .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + // //有空载具,创建搬运空载具任务 + // if (CollectionUtils.isNotEmpty(zxqPointList)) { + // JSONObject toKzjhcwTask = new JSONObject(); + // toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)")); + // toKzjhcwTask.put("point_code1", zxqPointList.get(0).getPoint_code()); + // //任务起点为补空载具终点 + // toKzjhcwTask.put("point_code2", schBaseTask.getPoint_code1()); + // kzjhcwTask.createTask(toKzjhcwTask); + // } } // 取消 if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { @@ -141,13 +144,13 @@ public class SsxDjwTask extends AbstractAcsTask { throw new BadRequestException("业务类型不能为空"); } String vehicleCode = form.getString("vehicle_code"); - if (StrUtil.isBlank(vehicleCode)) { - throw new BadRequestException("载具号不能为空"); - } + // if (StrUtil.isBlank(vehicleCode)) { + // throw new BadRequestException("载具号不能为空"); + // } String pointCode1 = form.getString("point_code1"); - if (StrUtil.isBlank(pointCode1)) { - throw new BadRequestException("起点不能为空"); - } + // if (StrUtil.isBlank(pointCode1)) { + // throw new BadRequestException("起点不能为空"); + // } String pointCode2 = form.getString("point_code2"); if (StrUtil.isBlank(pointCode2)) { throw new BadRequestException("下一点不能为空"); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java index a5cb1a534..ffec28c70 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxDjwTask.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; @@ -49,7 +51,8 @@ import java.util.stream.Collectors; @Slf4j public class ZxDjwTask extends AbstractAcsTask { - + @Resource + private KzjhcwTask kzjhcwTask; @Resource private DjqTask djqTask; @Resource @@ -82,13 +85,13 @@ public class ZxDjwTask extends AbstractAcsTask { .start_device_code2(r.getPoint_code3()) .next_device_code2(r.getPoint_code4()) .vehicle_code(r.getVehicle_code()) + .interaction_json(JSON.parseObject(r.getRequest_param())) .priority(r.getPriority()) .remark(r.getRemark()) .product_area(r.getProduct_area()) - //.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统")) + //.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) //.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务")) //.dtl_type(r.getDtl_type()) - //.params(r.getParams()) .build(); resultList.add(dto); }); @@ -132,24 +135,8 @@ public class ZxDjwTask extends AbstractAcsTask { bstIvtBoxinfo.setIs_packing("1"); bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo); } - //5.装箱区->装箱对接位桁架任务完成后,创建搬运空载具任务,放空(装箱区->待检区) - List djqOrGzqPointList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - List djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList()); - JSONObject toDjqOrGzqTask = new JSONObject(); - toDjqOrGzqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(装箱区->待检区)")); - //装箱区->待检区起点为桁架任务的起点 - toDjqOrGzqTask.put("point_code1", schBaseTask.getPoint_code1()); - if (CollectionUtils.isNotEmpty(djqPointList)) { - //优先送到待检区 - toDjqOrGzqTask.put("point_code2", djqPointList.get(0).getPoint_code()); - } else { - toDjqOrGzqTask.put("point_code2", djqOrGzqPointList.get(0).getPoint_code()); - } - toDjqOrGzqTask.put("vehicle_code", containerInfo.getContainer_name()); - djqTask.createTask(toDjqOrGzqTask); + //创建装箱区->空载具缓存位补空任务 + kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1()); } // 取消 if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { @@ -165,6 +152,10 @@ public class ZxDjwTask extends AbstractAcsTask { taskService.update(schBaseTask); } + + + + @Override public String createTask(JSONObject form) { Assert.notNull(form, "请求参数不能为空"); @@ -193,6 +184,7 @@ public class ZxDjwTask extends AbstractAcsTask { .point_code2(pointCode2) .point_code3(form.getString("point_code3")) .point_code4(form.getString("point_code4")) + .request_param(form.getString("request_param")) .task_id(org.nl.common.utils.IdUtil.getStringId()) .task_code(org.nl.common.utils.IdUtil.getStringId()) .handle_class(THIS_CLASS) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java index d043ea516..7c48ff64a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/ZxqTask.java @@ -27,10 +27,12 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; +import org.nl.system.service.param.ISysParamService; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -69,6 +71,9 @@ public class ZxqTask extends AbstractAcsTask { @Resource private BstIvtBoxinfoMapper bstIvtBoxinfoMapper; + @Resource + private ISysParamService iSysParamService; + private final String THIS_CLASS = ZxqTask.class.getName(); @@ -93,7 +98,7 @@ public class ZxqTask extends AbstractAcsTask { .remark(r.getRemark()) .product_area(r.getProduct_area()) .interaction_json(JSON.parseObject(r.getRequest_param())) - .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统")) + .agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务")) //.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务")) //.dtl_type(r.getDtl_type()) .build(); @@ -161,6 +166,9 @@ public class ZxqTask extends AbstractAcsTask { } } } + + + //扩展参数 JSONObject param = new JSONObject(); //获取木箱信息,未包装的木箱 @@ -168,6 +176,20 @@ public class ZxqTask extends AbstractAcsTask { if (bstIvtBoxinfo == null) { throw new BadRequestException("找不到木箱信息!"); } + //获取木箱高度等级 + String height = ""; + String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); + String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue(); + String box_high = bstIvtBoxinfo.getBox_high(); + if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) { + height = "1"; + } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) { + height = "2"; + } else { + height = "3"; + } + //木箱高度等级 + param.put("heightLevel", height); //木箱最大数量 param.put("maxNo", bstIvtBoxinfo.getNum()); //托盘类型 1小托盘 2大托盘 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendEmptyVehicle.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendEmptyVehicle.java index 0e575bffe..c517fd614 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendEmptyVehicle.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendEmptyVehicle.java @@ -9,6 +9,7 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.tasks.first_floor_area.KzjhcwTask; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.enums.PackageInfoIvtEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.stereotype.Component; @@ -16,6 +17,8 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Comparator; import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; @@ -27,71 +30,13 @@ public class AutoSendEmptyVehicle { private KzjhcwTask kzjhcwTask; - @Resource - private IschBaseTaskService taskService; - - - @Resource - private IbstIvtPackageinfoivtService packageinfoivtService; - public void run() { this.sendKzjHcwEmptyVehicle(); } + //装箱区->待检区补空任务 void sendKzjHcwEmptyVehicle() { - //查询空载具缓存位是否有空载具 - List bstIvtPackageinfoivtList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - List kzjPointList = bstIvtPackageinfoivtList.stream() - .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status()) - && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); - //如果空载具缓存位都为空,则去搬运空载具 - if (CollectionUtils.isEmpty(kzjPointList)) { - //空载具缓存位没有可用的库存:判断是否有正在搬运空载具过来的任务,有的话不创建 - //没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。 - List packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位")) - .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))); - //todo 查找正在搬运到待检区的任务,假设只有一个 - List taskList = taskService.list(new LambdaUpdateWrapper() - //执行中 - .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) - .and( - r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList) - )); - //没有正在搬运空载具过来的任务,创建搬运空载具任务 - if (CollectionUtils.isEmpty(taskList)) { - //查询待检区或管制区有空载具的 - List djqOrGzqPointList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区")) - .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - List djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList()); - //待检区库位有空载具 - if (CollectionUtils.isNotEmpty(djqPointList)) { - List kzjPoint = packageinfoivtList.stream() - .filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())) - .sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)) - .collect(Collectors.toList()); - //创建搬运空载具任务 - JSONObject toKzjhcwTask = new JSONObject(); - if (CollectionUtils.isNotEmpty(djqPointList)) { - //优先去待检区取空载具 - toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code()); - } else { - toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code()); - } - toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)")); - //送到到任意空载具缓存位 - toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code()); - //todo 载具号 - toKzjhcwTask.put("vehicle_code", "containerInfo.getContainer_name()"); - kzjhcwTask.createTask(toKzjhcwTask); - } - } - } + kzjhcwTask.toKzjHcw(""); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToDjq.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToDjq.java new file mode 100644 index 000000000..efa442745 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/first_floor_area/auto/AutoSendToDjq.java @@ -0,0 +1,101 @@ +package org.nl.b_lms.sch.tasks.first_floor_area.auto; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; +import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper; +import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask; +import org.nl.b_lms.sch.tasks.first_floor_area.GzqTask; +import org.nl.common.enums.ContainerLevelEnum; +import org.nl.common.enums.PackageInfoIvtEnum; +import org.nl.modules.common.exception.BadRequestException; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + + +@Slf4j +@Component +public class AutoSendToDjq { + + @Resource + private DjqTask djqTask; + @Resource + private GzqTask gzqTask; + + @Resource + private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper; + + @Resource + private IPdmBiSlittingproductionplanService productionPlanService; + + public void run() { + this.sendMzqToDjq(); + } + + //装箱区->待检区补空任务 + void sendMzqToDjq() { +// //满轴位有子卷 +// List bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper +// .selectList(new LambdaUpdateWrapper() +// .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) +// .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")) +// .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷")) +// .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); +// if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) { +// String containerName = bstIvtPackageinfoivtList.get(0).getContainer_name(); +// String pointCode = bstIvtPackageinfoivtList.get(0).getPoint_code(); +// //查询子卷信息,去分切计划表查找定级数据,桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区 +// PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper() +// .eq(PdmBiSlittingproductionplan::getContainer_name, containerName)); +// if (containerInfo == null) { +// throw new BadRequestException("找不到子卷信息!"); +// } +// //子卷等级 +// String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel(); +// String finalLevel = level; +// if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(finalLevel))) { +// throw new BadRequestException("非法的子卷等级!"); +// } +// level = "1"; +// JSONObject toDjqTask = new JSONObject(); +// toDjqTask.put("vehicle_code", containerName); +// // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务 +// String finalLevel1 = level; +// if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(finalLevel1))) { +// List djqPointList = bstIvtPackageinfoivtList.stream() +// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status()) +// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList()); +// if (CollectionUtils.isEmpty(djqPointList)) { +// throw new BadRequestException("待检区暂无空余库位!"); +// } +// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); +// toDjqTask.put("point_code1", pointCode); +// toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code()); +// djqTask.createTask(toDjqTask); +// } else { +// String finalLevel2 = level; +// if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(finalLevel2))) { +// List gkqPointList = bstIvtPackageinfoivtList.stream() +// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status()) +// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList()); +// if (CollectionUtils.isEmpty(gkqPointList)) { +// throw new BadRequestException("管控区暂无空余库位!"); +// } +// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区")); +// toDjqTask.put("point_code1", pointCode); +// toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code()); +// gzqTask.createTask(toDjqTask); +// } +// } +// } + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java index 4190e5649..147fa5ae2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/enums/IOSEnum.java @@ -59,9 +59,11 @@ public enum IOSEnum { OUT_CANCEL_TYPE(MapOf.of("全部取消", "1","自动取消","2","删除一个","3")), //仓位锁定类型 - LOCK_TYPE(MapOf.of("未锁定", "1", "入库锁", "2", "出库锁", "3", "空托盘出库锁", "4", - "空托盘入库锁", "5", "移出锁", "6", "移入锁", "7","木箱入库锁","8","木箱出库锁","9", - "出库异常锁","10","货位异常锁", "11","其它", "99" + LOCK_TYPE(MapOf.of("未锁定", "1", "入库锁", "2", "出库锁", "3", + "空托盘出库锁", "4", "空托盘入库锁", "5", + "移出锁", "6", "移入锁", "7","木箱入库锁","8", + "木箱出库锁","9","出库异常锁","10", + "货位异常锁", "11","其它", "99" )), //仓库id diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java index 0da224599..d3f278381 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java @@ -540,14 +540,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl arr = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "' and is_delete ='0'") - .getResultJSONArray(0).toJavaList(JSONObject.class); - - if (ObjectUtil.isNotEmpty(arr)) { - throw new BadRequestException("当前有出库任务正在执行,请稍后在试!"); - } - + //判断是否有正在执行中的任务 +// List arr = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "' and is_delete ='0'") +// .getResultJSONArray(0).toJavaList(JSONObject.class); +// +// if (ObjectUtil.isNotEmpty(arr)) { +// throw new BadRequestException("当前有出库任务正在执行,请稍后在试!"); +// } // 查询此明细所有未生成的分配明细 List disDaoList = stIvtIostorinvdisMapper.getNotCreateDis(whereJson); @@ -848,7 +847,6 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl().lambda() .eq(StIvtIostorinvdis::getTask_id, whereJson.getString("task_id")) ); - StIvtIostorinvdis disDao = disDaoList.get(0); // 查询主表 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java index ee37f1706..16c05ebf9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java @@ -525,8 +525,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl().lambda() - .eq(BstIvtBoxinfo::getBox_no, jsonObject.getString("box_no")) - ); List pcsnList = Arrays.asList(material_barcode.split(",")); // 查询子卷包装关系 - List subList = subTab.query("container_name in ('"+String.join("','", pcsnList)+"') and status IN ( '0', '1')") + List subList = subTab.query("container_name in ('" + String.join("','", pcsnList) + "') and status in ('0','1')") .getResultJSONArray(0).toJavaList(JSONObject.class); if (ObjectUtil.isEmpty(subList)) { throw new BadRequestException("未查询到子卷包装信息!"); } - + if (StringUtils.isBlank(subList.get(0).getString("package_box_sn"))) { + throw new BadRequestException("木箱号不能为空!"); + } + BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxinfo::getBox_no, subList.get(0).getString("package_box_sn")) + ); // 主表 JSONObject mst = new JSONObject(); mst.put("stor_id", IOSEnum.STOR_ID.code("二期")); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java index b1b54b543..9fc3b88b1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/LashManageServiceImpl.java @@ -127,7 +127,6 @@ public class LashManageServiceImpl implements LashManageService { jsonPoint.put("vehicle_code",""); is_move = IOSEnum.IS_NOTANDYES.code("是"); } - end_point = jsonPoint.getString("point_code"); schBasePointMapper.updateById(JSON.parseObject(jsonPoint.toString(), SchBasePoint.class)); @@ -209,6 +208,7 @@ public class LashManageServiceImpl implements LashManageService { result.put("width", boxDao.getBox_width()); result.put("height", boxDao.getBox_high()); result.put("case", boxDao.getMaterial_code()); + //result.put("isBinding", IOSEnum.IS_SEND.code("否")); result.put("isBinding", IOSEnum.IS_SEND.code("是")); result.put("isLabeling", IOSEnum.IS_SEND.code("否")); @@ -217,6 +217,7 @@ public class LashManageServiceImpl implements LashManageService { result.put("printDevice", "1"); result.put("printQty", "1"); + //第一次捆扎次数 result.put("bundleTimes", "1"); return result; diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java index e7310c446..09408f133 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/SendOutManageServiceImpl.java @@ -194,7 +194,7 @@ public class SendOutManageServiceImpl implements SendOutManageService { //创建任务 JSONObject task_jo = new JSONObject(); task_jo.put("point_code1", whereJson.getString("device_code")); - task_jo.put("point_code2", point_code); + task_jo.put("point_code2", "CK2023"); task_jo.put("vehicle_code", whereJson.getString("vehicle_code")); task_jo.put("task_type", "010708"); TwoSendOutTask taskBean = new TwoSendOutTask(); @@ -203,7 +203,7 @@ public class SendOutManageServiceImpl implements SendOutManageService { // 锁住点位 ischBasePointService.update( new UpdateWrapper().lambda() - .eq(SchBasePoint::getPoint_code, point_code) + .eq(SchBasePoint::getPoint_code, "CK2023") .set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它")) .set(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code")) ); diff --git a/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java b/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java index 2b7cf7dd3..587221681 100644 --- a/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/common/enums/PackageInfoIvtEnum.java @@ -21,14 +21,14 @@ public enum PackageInfoIvtEnum { POINT_STATUS(MapOf.of("满轴缓存位", "1", "空载具缓存位", "2", "待检区", "3", "管制区", "4", "装箱区", "5", "装箱位", "6")), //任务类型 - TASK_TYPE(MapOf.of("输送线->满轴缓存位", "010701", "满轴缓存位->待检区", "010702", "满轴缓存位->管制区", "010703", "放空(空载具缓存位->输送线)", - "010704", "取空(待检区->空载具缓存位)", "010705", "待检区->管制区", "010706","管制区->待检区", "010707","待检区->装箱区", "010708", "装箱区->装箱对接位", "010709","放空(装箱区->待检区)", "010710","输送线四个点任务", "010711")), + TASK_TYPE(MapOf.of("输送线->满轴缓存位", "010901", "满轴缓存位->待检区", "010902", "满轴缓存位->管制区", "010903", "放空(空载具缓存位->输送线)", + "010904", "取空(待检区->空载具缓存位)", "010905", "待检区->管制区", "010906","管制区->待检区", "010907","待检区->装箱区", "010908", "装箱区->装箱对接位", "010909","放空(装箱区->待检区)", "010910","输送线四个点任务", "010911")), //ACS任务类型 ACS_TASK_TYPE(MapOf.of("agv任务", "1", "桁架任务", "6")), //ACS系统类型 - AGV_SYSTEM_TYPE(MapOf.of("1楼叉车系统", "1", "2楼1区域AGV系统", "2", "2楼2区域AGV系统", "3")), + AGV_SYSTEM_TYPE(MapOf.of("1楼诺宝任务", "1", "2楼1区域AGV系统", "2", "1楼叉车任务", "3")), //桁架任务类型 TRUSS_TYPE(MapOf.of("点对点任务", "1", "下卷拔轴任务", "6", "换轴任务", "7","放轴任务", "8")), diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java b/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java index 05968a0ad..04b54cfe8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java @@ -61,8 +61,8 @@ public class ExecutionJob extends TLogQuartzJobBean { logDto.setCron_expression(quartzJob.getCron_expression()); try { // 执行任务 - System.out.println("--------------------------------------------------------------"); - System.out.println("任务开始执行,任务名称:" + quartzJob.getJob_name()); + //System.out.println("--------------------------------------------------------------"); + //System.out.println("任务开始执行,任务名称:" + quartzJob.getJob_name()); QuartzRunnable task = new QuartzRunnable(quartzJob.getBean_name(), quartzJob.getMethod_name(), quartzJob.getParams()); Future future = EXECUTOR.submit(task); @@ -74,8 +74,8 @@ public class ExecutionJob extends TLogQuartzJobBean { } // 任务状态 logDto.setIs_success(true); - System.out.println("任务执行完毕,任务名称:" + quartzJob.getJob_name() + ", 执行时间:" + times + "毫秒"); - System.out.println("--------------------------------------------------------------"); + // System.out.println("任务执行完毕,任务名称:" + quartzJob.getJob_name() + ", 执行时间:" + times + "毫秒"); + //System.out.println("--------------------------------------------------------------"); // 判断是否存在子任务 if (StrUtil.isNotEmpty(quartzJob.getSub_task())) { String[] tasks = quartzJob.getSub_task().split("[,,]"); @@ -86,8 +86,8 @@ public class ExecutionJob extends TLogQuartzJobBean { if (StrUtil.isNotEmpty(uuid)) { redisUtils.set(uuid, false); } - System.out.println("任务执行失败,任务名称:" + quartzJob.getJob_name()); - System.out.println("--------------------------------------------------------------"); + //System.out.println("任务执行失败,任务名称:" + quartzJob.getJob_name()); + // System.out.println("--------------------------------------------------------------"); long times = System.currentTimeMillis() - startTime; logDto.setTime(times); // 任务状态 0:成功 1:失败 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 cdd7d1113..d715e72b6 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 @@ -26,6 +26,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.service.IschBaseTaskService; import org.nl.b_lms.sch.tasks.TwoBoxExcepTask; import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask; +import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask; import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo; @@ -139,6 +140,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Resource private MzhcwTask mzhcwTask; + @Resource + private SsxDjwTask ssxDjwTask; + + @Autowired private ISysParamService iSysParamService; @@ -1733,9 +1738,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } /** - * 成品子卷到达一楼输送线 + * 二楼到一楼,成品子卷到达一楼输送线 */ @Override + @Transactional(rollbackFor = Exception.class) + @SneakyThrows public JSONObject sendProductToFirstFloor(JSONObject whereJson) { // JSONObject whereJson 应该传子卷号,设备号,车间号 // 先查询满轴缓存位是否有可用库位,有创建搬运任务 @@ -1748,78 +1755,87 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) { throw new BadRequestException("接口sendProductToFirstFloor,任务号或子卷号参数为空!"); } - //1.查询满轴缓存位是否有空位 - List bstIvtPackageinfoivtList = packageinfoivtService - .list(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) - .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); - List mzPointList = bstIvtPackageinfoivtList.stream() - .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位").equals(r.getPoint_status()) - && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); - JSONObject jo = new JSONObject(); - jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); - jo.put("vehicle_code", whereJson.getString("material_barcode")); - //2.创建输送线->满轴位桁架任务, - String point_code1 = whereJson.getString("device_code"); - jo.put("point_code1", point_code1); - if (CollectionUtils.isNotEmpty(mzPointList)) { - //任意一个满轴缓存位为终点 - jo.put("point_code2", mzPointList.get(0).getPoint_code()); - List kzjPointList = bstIvtPackageinfoivtList.stream() - .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status()) - && PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList()); - //空载具缓存位有空载具 - if (CollectionUtils.isNotEmpty(kzjPointList)) { - jo.put("point_code3", kzjPointList.get(0).getPoint_code()); - //终点为输送线点位 - jo.put("point_code4", whereJson.getString("device_code")); - jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); + RLock lock = redissonClient.getLock(whereJson.getString("material_barcode")); + boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + try { + if (tryLock) { + //1.查询满轴缓存位是否有空位 + List bstIvtPackageinfoivtList = packageinfoivtService + .list(new LambdaUpdateWrapper().eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + List mzPointList = bstIvtPackageinfoivtList.stream() + .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位").equals(r.getPoint_status()) + && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); + JSONObject jo = new JSONObject(); + jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo.put("vehicle_code", whereJson.getString("material_barcode")); + //2.创建输送线->满轴位桁架任务, + String point_code1 = whereJson.getString("device_code"); + jo.put("point_code1", point_code1); + if (CollectionUtils.isNotEmpty(mzPointList)) { + //任意一个满轴缓存位为终点 + jo.put("point_code2", mzPointList.get(0).getPoint_code()); + List kzjPointList = bstIvtPackageinfoivtList.stream() + .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status()) + && PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList()); + //空载具缓存位有空载具 + if (CollectionUtils.isNotEmpty(kzjPointList)) { + jo.put("point_code3", kzjPointList.get(0).getPoint_code()); + //终点为输送线点位 + jo.put("point_code4", whereJson.getString("device_code")); + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")); + } else { + //空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务 + // 创建前先判断是否有已创建相同任务 + List existTaskList = taskService.list(new LambdaUpdateWrapper() + .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")) + .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode()) + .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))); + if (CollectionUtils.isEmpty(existTaskList)) { + JSONObject jo1 = new JSONObject(); + jo1.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")); + jo1.put("point_code2", "NBJ1002"); + jo1.put("task_status", TaskStatusEnum.SURE_END.getCode()); + jo1.put("is_send", false); + ssxDjwTask.createTask(jo1); + } + } + jo.put("is_send", true); + mzhcwTask.createTask(jo); + result.put("status", HttpStatus.OK.value()); + result.put("message", "反馈成功!"); + } else { + // 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; + // 创建前先判断是否有已创建相同任务 + List existTaskList = taskService.list(new LambdaUpdateWrapper() + .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) + .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))); + //如果有就不创建,没有就创建 + if (CollectionUtils.isEmpty(existTaskList)) { + //只确定起点NBJ1002 + JSONObject jo2 = new JSONObject(); + jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); + jo2.put("point_code1", "NBJ1002"); + jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); + jo2.put("is_send", false); + mzhcwTask.createTask(jo2); + } + } } else { - jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")); + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "任务正在创建中!"); } - jo.put("is_send", true); - mzhcwTask.createTask(jo); - result.put("status", HttpStatus.OK.value()); - result.put("message", "反馈成功!"); - return result; - } else { - //3.满轴缓存位点位,查找正在搬运到待检区的任务 - List packageinfoivtList = packageinfoivtService - .list(new LambdaUpdateWrapper() - .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))); - //todo 查找正在起点为满轴缓存位点位,且执行中搬运到待检区或管制区的任务,如果有一个或多个,现场其实有多个车正在搬运过去 - List taskList = taskService.list(new LambdaUpdateWrapper() - //执行中 - .nested( - r -> r.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")) - .or().eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"))) - .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) - .and( - r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList) - )); - //4.满轴缓存位无空闲库位,且无执行中搬运到待检区或管制区的任务,则报错! - if (CollectionUtils.isEmpty(taskList)) { - throw new BadRequestException("接口sendProductToFirstFloor,满轴缓存位暂无空闲库位!"); + } finally { + if (tryLock) { + lock.unlock(); } - // 5.如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发; - // 创建前先判断是否有已创建相同任务 - List existTaskList = taskService.list(new LambdaUpdateWrapper() - .eq(SchBaseTask::getPoint_code1, point_code1) - .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())); - //6.如果有就不创建,没有就创建 - // 等这边空出来点位,也就是满轴位->待检区或管制区任务完成后,再补发; - if (CollectionUtils.isEmpty(existTaskList)) { - //暂时只确定起点,正在搬运的满轴位->待检区的点位,暂不作为终点 - //jo.put("point_code2", taskList.get(0).getPoint_code1()); - jo.put("task_status", TaskStatusEnum.SURE_START.getCode()); - jo.put("is_send", false); - mzhcwTask.createTask(jo); - } - result.put("status", HttpStatus.OK.value()); - result.put("message", "操作成功!"); - return result; } + return result; } + @Override @Transactional(rollbackFor = Exception.class) @SneakyThrows @@ -1908,7 +1924,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { log.info("applyTwo返回参数:---------------------------------------------" + result.toString()); return result; } - } finally { + }catch (Exception ex){ + log.info("applyTwo申请任务异常,任务类型为:---------------------------------------------"+type+"异常信息为"+ex.toString()); + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message","申请任务异常,任务类型为:"+type+"异常信息为"+ex.toString()); + return result; + } + finally { if (tryLock) { lock.unlock(); } @@ -2182,20 +2204,24 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String device_code = param.getString("device_code"); String material_barcode = param.getString("material_barcode"); String vehicle_code = param.getString("vehicle_code"); - if (device_code.equals("RK1018")) { - JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(vehicle_info)) { - throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!"); + //干燥剂模板 + String desiccantTemplate = "4"; + //是否开盖 + String isUncap = "1"; + if (StringUtils.isNotBlank(vehicle_code)) { + if (device_code.equals("RK1018")) { + JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(vehicle_info)) { + throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!"); + } + material_barcode = vehicle_info.getString("pcsn"); } - material_barcode = vehicle_info.getString("pcsn"); } - // 查询木箱信息 BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( new QueryWrapper().lambda() .eq(BstIvtBoxinfo::getBox_no, material_barcode) ); - //根据木箱高度,判断入库仓位的高度 String height = ""; String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); @@ -2209,6 +2235,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { height = "3"; } JSONObject jsonObject = new JSONObject(); + jsonObject.put("boxLength", boxDao.getBox_length()); + jsonObject.put("boxWidth", boxDao.getBox_width()); + jsonObject.put("boxHigh", boxDao.getBox_high()); + jsonObject.put("desiccantTemplate", desiccantTemplate); + jsonObject.put("isUncap", isUncap); jsonObject.put("heightLevel", height); jsonObject.put("status", HttpStatus.OK.value()); return jsonObject; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java index d9219d585..d37274860 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsTaskDto.java @@ -55,6 +55,11 @@ public class AcsTaskDto { * 备注 */ private String remark; + + /** + * 大小托盘路由类型 + */ + private String route_plan_code; /** * 扩展参数 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java index db83368d7..79a096006 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java @@ -49,8 +49,7 @@ public class AcsUtil { log.info(product_area); throw new BadRequestException("未查询到区域对应的acs地址!"); } - //String url =acs_url + api; - String url =acs_url+ api; + String url =acs_url + api; try { JSONArray rows = new JSONArray(); rows.add(jo); @@ -58,7 +57,7 @@ public class AcsUtil { .body(String.valueOf(rows)) .execute().body(); result = JSONObject.parseObject(resultMsg); - log.info("ACS相应参数----------------------------------------+" + api + ",---" + result.toString()); + log.info("下发acs任务成功,返回参数----------------------------------------+" + api + ",---" + result.toString()); } catch (Exception e) { String msg = e.getMessage(); //ConnectException: Connection refused: connect @@ -67,9 +66,11 @@ public class AcsUtil { result.put("status", HttpStatus.BAD_REQUEST); result.put("message", "网络不通,操作失败!"); result.put("data", new JSONObject()); + log.info("下发ACS任务失败,原因是:----------------------------------------+"+ msg); } //acs抛异常这里 if (!StrUtil.equals(result.getString("status"), "200")) { + log.info("下发acs任务失败,原因是:----------------------------------------+"+ result.getString("message")); throw new BadRequestException(result.getString("message")); } else { //如果向ACS下发任务,变更任务状态为下发 @@ -84,6 +85,7 @@ public class AcsUtil { } } + log.info("下发acs任务,结果是:----------------------------------------+"+ result); return result; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java index b2daf1aae..a3d4170ee 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java @@ -97,11 +97,11 @@ public class TaskServiceImpl implements TaskService { map.put("is_delete", whereJson.getString("is_delete")); } //获取人员对应的区域 - UserAreaServiceImpl userAreaService = new UserAreaServiceImpl(); - String in_area_id = userAreaService.getInArea(); - if (ObjectUtil.isNotEmpty(in_area_id)) { - map.put("in_area_id", in_area_id); - } + // UserAreaServiceImpl userAreaService = new UserAreaServiceImpl(); + // String in_area_id = userAreaService.getInArea(); + // if (ObjectUtil.isNotEmpty(in_area_id)) { + // map.put("in_area_id", in_area_id); + // } JSONObject json = WQL.getWO("QSCH_TASK_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time desc"); JSONArray content = json.getJSONArray("content"); JSONArray res = new JSONArray(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java index 0b7cb5dd3..a1ff9386f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/StorPublicServiceImpl.java @@ -215,7 +215,6 @@ public class StorPublicServiceImpl implements StorPublicService { map.put("storagevehicle_code", storagevehicle_code); } } - // 获取仓位物料信息 JSONObject jo_in = WQL.getWO("QST_IVT_STORPUBLIC").addParamMap(map).process().uniqueResult(0); switch (change_type_scode) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java index 48d752f43..ce9f22658 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java @@ -217,7 +217,6 @@ public class CheckOutBillController { } else { checkOutBillService.allSetPoint(whereJson); } - return new ResponseEntity<>(HttpStatus.NO_CONTENT); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java b/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java index e69de29bb..89fc9ede4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/util/TaskUtil.java @@ -0,0 +1,15 @@ +package org.nl.wms.util; + +public class TaskUtil { + + /** + * 一楼立库获取托盘路由方案two大托盘,normal小托盘 + */ + public static String getRoutePlanCode(String location) { + if (location.contains("L1-") || location.contains("L2-") || location.contains("L3-") || location.contains("L4-")) { + return "two"; + } else { + return "normal"; + } + } +} \ No newline at end of file diff --git a/lms/nladmin-system/src/test/java/org/nl/init/CreatePointTest.java b/lms/nladmin-system/src/test/java/org/nl/init/CreatePointTest.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/lms/nladmin-system/src/test/java/org/nl/init/EventTest.java b/lms/nladmin-system/src/test/java/org/nl/init/EventTest.java new file mode 100644 index 000000000..bfcaa63c9 --- /dev/null +++ b/lms/nladmin-system/src/test/java/org/nl/init/EventTest.java @@ -0,0 +1,264 @@ +package org.nl.init; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper; +import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation; +import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper; +import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt; +import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper; +import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService; +import org.nl.b_lms.sch.tasks.first_floor_area.*; +import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService; +import org.nl.common.enums.ContainerLevelEnum; +import org.nl.common.enums.PackageInfoIvtEnum; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +@Slf4j +@ExtendWith(SpringExtension.class) +@SpringBootTest +@DisplayName("event test") +public class EventTest { + + @Resource + private ZxqTask zxqTask; + @Resource + private ZxDjwTask zxDjwTask; + + @Resource + private ISysParamService iSysParamService; + + @Resource + private DjqTask djqTask; + @Resource + private GzqTask gzqTask; + + @Resource + private KzjhcwTask kzjhcwTask; + + @Resource + private OutBoxManageService outBoxManageService; + + @Resource + private IbstIvtPackageinfoivtService packageinfoivtService; + + @Resource + private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper; + + /** + * 装箱区->空载具缓存位补空 + */ + @Test + public void zxToKzjHcw() { + kzjhcwTask.toKzjHcw(""); + } + + /** + * 满轴->待检 + */ + @Test + public void mzToDj() { + //子卷成色等级 + String level = "1"; + //子卷号 + String containerName = "1"; + //起点 + String pointCode1 = "2"; + //查询库位信息 + List bstIvtPackageinfoivtList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + JSONObject toDjqTask = new JSONObject(); + //获取子卷号 + toDjqTask.put("vehicle_code", containerName); + // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务 + if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) { + List djqPointList = bstIvtPackageinfoivtList.stream() + .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status()) + && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(djqPointList)) { + throw new BadRequestException("待检区暂无空余库位!"); + } + toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区")); + toDjqTask.put("point_code1", pointCode1); + toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code()); + djqTask.createTask(toDjqTask); + } else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) { + List gkqPointList = bstIvtPackageinfoivtList.stream() + .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status()) + && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(gkqPointList)) { + throw new BadRequestException("管控区暂无空余库位!"); + } + toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区")); + toDjqTask.put("point_code1", pointCode1); + toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code()); + gzqTask.createTask(toDjqTask); + } + } + + /** + * 待检->装箱 + */ + @Test + public void djToZx() { + //子卷号 + String containerName = ""; + //起点 + String pointCode1 = ""; + //木箱 + String boxSn = ""; + //装箱区点位 + List zxqPointList = packageinfoivtService + .list(new LambdaUpdateWrapper() + .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区")) + .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")) + .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")) + //装箱区1 + .eq(BstIvtPackageinfoivt::getBlock, "1") + .orderByAsc(BstIvtPackageinfoivt::getSort_seq)); + JSONObject jo = new JSONObject(); + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")); + jo.put("vehicle_code", containerName); + jo.put("point_code1", pointCode1); + //木箱号 + jo.put("vehicle_code2", boxSn); + //装箱区没满,则确定起点与终点,如果满了则只确定起点 + if (CollectionUtils.isNotEmpty(zxqPointList)) { + jo.put("point_code2", zxqPointList.get(0).getPoint_code()); + } + zxqTask.createTask(jo); + } + + + /** + * 空木箱出库 + */ + @Test + public void outBox() { + JSONObject boxInfo = new JSONObject(); + boxInfo.put("device_code", "ZXQ_1_1"); + boxInfo.put("material_code", "MX61102"); + String workorderId = "1597797877554483218"; + //子卷个数 + boxInfo.put("num", "1"); + String boxSn = outBoxManageService.outBox(boxInfo); + if (StringUtils.isBlank(boxSn)) { + throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!"); + } + //更新子卷包装关系更新木箱号 + UpdateWrapper updateWrapper1 = new UpdateWrapper<>(); + updateWrapper1.set("package_box_sn", boxSn); + updateWrapper1.eq("workorder_id", workorderId); + pdmBiSubpackagerelationMapper.update(null, updateWrapper1); + } + + /** + * 装箱区->装箱对接位桁架任务 + */ + @Test + public void transferToPacking() { + JSONObject jo = new JSONObject(); + //子卷号 + String containerName = "A1642211060505E2"; + //获取纸管长度 + String frpDescription = "1300"; + //获取木箱高度等级 + String height = "730"; + //起点 + String point_code1 = "ZXQ_1_9"; + //终点 + String point_code2 = "ZXQ_1_1"; + //托盘类型 1小托盘 2大托盘 + String containerType = "2"; + //木箱高度等级 + String heightLevel = ""; + String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); + String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue(); + if (Integer.parseInt(height) <= Integer.parseInt(heightLevel1)) { + heightLevel = "1"; + } else if (Integer.parseInt(height) > Integer.parseInt(heightLevel1) && Integer.parseInt(height) <= Integer.parseInt(heightLevel2)) { + heightLevel = "2"; + } else { + heightLevel = "3"; + } + jo.put("point_code1", point_code1); + jo.put("point_code2", point_code2); + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")); + jo.put("vehicle_code", containerName); + jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo.put("is_send", "1"); + JSONObject param = new JSONObject(); + //木箱最大数量 + param.put("maxNo", "1"); + //木箱放入子卷数量 + param.put("boxNo", "1"); + //是否最后子卷 + param.put("lastOne", "1"); + //子卷号 + param.put("barcode", containerName); + //子卷长度 + param.put("len", frpDescription); + //木箱高度等级 + param.put("heightLevel", heightLevel); + //托盘类型 1小托盘 2大托盘 + param.put("containerType", containerType); + jo.put("request_param", param.toString()); + zxDjwTask.createTask(jo); + } + + /** + * 装箱区->装箱对接位桁架任务2 + */ + @Test + public void transferToPacking1() { + //下发装箱区->装箱对接位桁架任务 + JSONObject jo = new JSONObject(); + //子卷号 + String containerName = ""; + //获取纸管长度 + String frpDescription = ""; + //起点 + String point_code1 = "ZXQ_1_8"; + //终点 + String point_code2 = "ZXQ_1_1"; + jo.put("point_code1", point_code1); + jo.put("point_code2", point_code2); + jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位")); + jo.put("vehicle_code", containerName); + jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务")); + jo.put("is_send", "1"); + JSONObject param = new JSONObject(); + //木箱最大数量 + param.put("maxNo", "1"); + //木箱放入子卷数量 + param.put("boxNo", "1"); + //是否最后子卷 + param.put("lastOne", "1"); + //子卷号 + param.put("barcode", containerName); + //子卷长度 + param.put("len", frpDescription); + //托盘类型 1小托盘 2大托盘 + param.put("containerType", "1"); + jo.put("request_param", param.toString()); + zxDjwTask.createTask(jo); + } +} diff --git a/lms/nladmin-ui/src/views/monitor/server/index.vue b/lms/nladmin-ui/src/views/monitor/server/index.vue index 920861ea6..3e46bbd81 100644 --- a/lms/nladmin-ui/src/views/monitor/server/index.vue +++ b/lms/nladmin-ui/src/views/monitor/server/index.vue @@ -24,7 +24,7 @@
CPU使用率
-
+
CPU使用率
{{ data.cpu.name }}
@@ -249,7 +249,6 @@ export default { } } -