diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java index 59b8e0be..f5fd7990 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java @@ -4,7 +4,8 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl; -import org.nl.wms.product_manage.sch.tasks.SpeMachineryTask; +import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeEmpTask; +import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeFullTask; import org.nl.wms.product_manage.sch.tasks.WashMachineryTask; import org.nl.wms.product_manage.sch.tasks.callMaterial.WrapCallMaterialTask; import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask; @@ -19,8 +20,8 @@ public class ConventConfig implements SmartLifecycle { @Override public void start() { - AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_FULL, SpringContextHolder.getBean(SpeMachineryTask.class)); - AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_EMP, SpringContextHolder.getBean(SpeMachineryTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_FULL, SpringContextHolder.getBean(SpeFullTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_EMP, SpringContextHolder.getBean(SpeEmpTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_EMP, SpringContextHolder.getBean(WashMachineryTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_SEND_FULL, SpringContextHolder.getBean(PlotterSendMaterialTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_CALL_FULL, SpringContextHolder.getBean(WrapCallMaterialTask.class)); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java index 1c5522cb..91d8e99a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java @@ -57,10 +57,10 @@ public class CodeGenerator { mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://192.168.81.252:3306/hl_one_mes?setUnicode=true&characterEncoding=utf8"); + dsc.setUrl("jdbc:mysql://192.168.46.5:3306/hl_one_mes_test?serverTimezone=GMT&setUnicode=true&characterEncoding=utf8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); - dsc.setPassword("Root.123456"); + dsc.setPassword("123456"); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java index b043d2ef..b91a647c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java @@ -1,25 +1,33 @@ package org.nl.wms.ext.acs.service.impl; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.crypto.digest.MD5; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.nl.common.domain.ConstantParam; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.MapOf; import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.common.utils.PointLockUtils; +import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; +import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehicleService; +import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehicle; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; +import org.nl.wms.scheduler_manage.service.scheduler.SchedulerService; +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /* @@ -33,12 +41,18 @@ public class AgvInstService { @Autowired private ISchBasePointService basePointService; + @Autowired + private SchedulerService schedulerService; + @Autowired + private ISchProcessRouteService schProcessRouteService; + @Autowired + private IPdmBiDeviceService deviceService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchCachelineVehicleService cachelineVehicleService; + - public static void main(String[] args) { - String a = "HCX04JG04_SHCX04"; - MD5 md5 = MD5.create(); - System.out.println(md5.digest(a)); - } //满料请求点位确认 //1.判断当前设备路由表是否配置下一道路由设备,如果不是则说明直接到清洗 @@ -47,59 +61,79 @@ public class AgvInstService { //4.有则创建agv指令, // 没有则创建缓存架任务 public void fullMaster(JSONObject task){ - String point_code = task.getString("point_code1"); String quantity = task.getString("material_qty"); + //获取当前生产工序下一道工序 + Map workprodure = basePointService.findDeviceWorkprodure(task.getString("point_code")); + FlowElement next = getFlowElement(task,workprodure).next(); + String nextPoint = null; + //判断缓存线是不是去深坑清洗:深坑区域15个点:判断空的物料坑位: + String cacheVehile = ""; + Map query = MapOf.of("workprocedure_id", workprodure.get("workprocedure_id") + , "qty", quantity); + if (next.getName().equals("深坑清洗")){ + query.put("material_id",task.getString("material_id")); + } + List> list = deviceService.workproceduceDevices(query); + + if (!CollectionUtils.isEmpty(list)){ + nextPoint = list.get(0).get("point_code"); + }else { + if (next.getParams().get("cacheLine") == null){ + throw new BadRequestException("当前任务下一道工序无可用设备"); + } + nextPoint = next.getParams().get("cacheLine"); + cacheVehile = getCacheVehile(nextPoint, null); + } + if (StringUtils.isBlank(nextPoint)){ + throw new BadRequestException("逻辑非配错误,请检查代码"); + } + basePointService.update(new UpdateWrapper() + .set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint)); + + SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + schBaseTask.setVehicle_code(cacheVehile); + schBaseTask.setPoint_code2(nextPoint); + schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); + schBaseTask.setUpdate_time(new Date()); + taskService.updateById(schBaseTask); + }; + + public FlowElement getFlowElement(JSONObject task,Map workprodure){ + if (CollectionUtils.isEmpty(workprodure)){ + throw new BadRequestException("当前点位所属设备无对应工序"); + } + String point_code = task.getString("point_code1"); + String material_id = task.getString("material_id"); SchBasePoint devicePoint = basePointService.getOne(new QueryWrapper() .eq("point_code", point_code) .eq("is_delete", "0") .eq("is_used", "1") ); - String nextPoint; - //判断缓存线是不是去深坑清洗:深坑区域15个点:判断空的物料坑位: - String cacheVehile = ""; - if (devicePoint.getNext_region_code().equals(ConstantParam.SK_REGION)){ - //查询生坑重量是否超限:深坑需要乘以系数 - JSONArray nextPointList = WQL.getWO("sch_point").addParamMap(MapOf.of("flag","7","region_code", devicePoint.getNext_region_code(),"qty",Integer.valueOf(quantity)*ConstantParam.MATERAIL_RATIO)).process().getResultJSONArray(0); - if (nextPointList.size() == 0){ - throw new BadRequestException("深坑清洗储料仓:"+devicePoint.getNext_region_code()+"无可用点位"); - } - nextPoint = nextPointList.getJSONObject(0).getString("point_code"); - }else { - //专机的话:需要判断专机上料口物料是否满足数量 - JSONArray nextPointList = WQL.getWO("sch_point").addParamMap(MapOf.of("flag","3","region_code", devicePoint.getNext_region_code(),"qty",quantity)).process().getResultJSONArray(0); - if (nextPointList.size() == 0){ - JSONObject cacheLine = WQLObject.getWQLObject("SCH_cacheLine_region_relation").query("region_code = '"+devicePoint.getRegion_code()+"'").uniqueResult(0); - nextPoint = cacheLine.getString("cacheline_code"); - //满料请求:查询缓存线空载具列表 - cacheVehile = getCacheVehile(nextPoint, null); - if (StringUtils.isBlank(cacheVehile)) { - throw new BadRequestException("缓存线:"+nextPoint+"没有可用空载具"); - } - }else { - nextPoint = nextPointList.getJSONObject(0).getString("point_code"); - } + SchProcessRoute processRoute = schProcessRouteService.findByMaterialId(material_id,devicePoint.getRegion_code()); + if (processRoute == null){ + throw new BadRequestException("当前没有配置对应工序调度线路:"+material_id+"/"+devicePoint.getRegion_code()); } - if (StringUtils.isBlank(nextPoint)){ - throw new BadRequestException("设备:"+point_code+"没有可用点位"); + //workprocedure_code,r.workprocedure_id + FlowElement flowElement = schedulerService.currentFlow(processRoute.getProcess_id(), workprodure.get("workprocedure_code")); + if (flowElement == null){ + throw new BadRequestException("当前工序调度线路:"+processRoute.getProcess_id()+"没有对应工序配置"+workprodure.get("workprocedure_code")); } - WQLObject.getWQLObject("sch_base_point").update(MapOf.of("task_id",task.getString("task_id"),"lock_type",StatusEnum.LOCK_ON.getCode(),"point_code = '"+nextPoint+"'")); - task.put("vehicle_code",cacheVehile); - task.put("point_code2",nextPoint); - task.put("task_status",StatusEnum.TASK_START_END_P.getCode()); - task.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("sch_base_task").update(task); - }; + return flowElement; + } //缺料请求:上料位 //1.判断当前设备表对应的缓存线是否开放 //2.根据当前设备绑定的物料id,从缓存线中获取相同物料对应载具列表 //3.agv根据对应载具列表行进扫码匹配:匹配到对应物料则创建点对点任务 - public void callMatter(JSONObject task){ + public void empMatter(JSONObject task){ //参数 String targetDevice = task.getString("next_point_code"); String material_id = task.getString("material_id"); - JSONObject devicePoint = WQLObject.getWQLObject("SCH_BASE_Point").query("point_code = '" + targetDevice + "' and is_delete = 0 and is_used = 1").uniqueResult(0); - JSONObject cacheLine = WQLObject.getWQLObject("SCH_cacheLine_region_relation").query("region_code = '"+devicePoint.getString("region_code")+"' and is_active = '"+StatusEnum.STATUS_TRUE.getCode()+"'").uniqueResult(0); - Assert.notNull(cacheLine, String.format("区域%s对应缓存线信息不存在", devicePoint.getString("region_code"))); + SchBasePoint devicePoint = basePointService.getOne(new QueryWrapper() + .eq("point_code", targetDevice) + .eq("is_delete", "0") + .eq("is_used", "1")); + JSONObject cacheLine = WQLObject.getWQLObject("SCH_cacheLine_region_relation").query("region_code = '"+devicePoint.getRegion_code()+"' and is_active = '"+StatusEnum.STATUS_TRUE.getCode()+"'").uniqueResult(0); + Assert.notNull(cacheLine, String.format("区域%s对应缓存线信息不存在", devicePoint.getRegion_code())); //缓存线位置编码 :缺料请求获取缓存线满载具列表 String startPoint = cacheLine.getString("cacheline_code"); String cacheVehile = getCacheVehile(startPoint, material_id); @@ -107,27 +141,28 @@ public class AgvInstService { throw new BadRequestException("缓存线:"+startPoint+"没有物料"+material_id+"对应可用载具"); } //判断当前物料载具已经任务分配数量:如果>物料已经分配任务。说明满了,不允许再分配 - JSONArray allocateTask = WQLObject.getWQLObject("SCH_base_task").query("point_code1 = '" + startPoint + "' and material_id = '" + material_id + "' and task_status <" + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); + List allocateTask = taskService.list(new QueryWrapper().eq("point_code1", startPoint).eq("material_id", material_id).lt("task_status", StatusEnum.TASK_FINISH.getCode())); if (allocateTask.size()>=cacheVehile.split(",").length){ - log.error("callMatter 缓存线:{}上含有物料:{}的载具分配完,任务id:{}",startPoint,material_id,allocateTask.stream().map(o-> ((JSONObject)o).getString("task_id")).collect(Collectors.joining(","))); + log.error("callMatter 缓存线:{}上含有物料:{}的载具分配完,任务id:{}",startPoint,material_id,allocateTask.stream().map(SchBaseTask::getTask_id).collect(Collectors.joining(","))); throw new BadRequestException(String.format("缓存线%s上含物料%s的载具已分配完",startPoint,material_id)); } - task.put("vehicle_code",cacheVehile); - task.put("start_point_code",startPoint); - task.put("return_point_code",startPoint); - task.put("task_status",StatusEnum.TASK_START_END_P.getCode()); - task.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("SCH_base_task").update(task); + SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + schBaseTask.setVehicle_code(cacheVehile); + schBaseTask.setPoint_code1(startPoint); + schBaseTask.setPoint_code3(startPoint); + schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); + schBaseTask.setUpdate_time(new Date()); + taskService.updateById(schBaseTask); } public String getCacheVehile(String cacheLine,String materialId){ - JSONArray runingTask = WQLObject.getWQLObject("sch_base_task").query("point_code2 = '" + cacheLine + "' and task_status < '" + StatusEnum.TASK_FINISH.getCode() + "'").getResultJSONArray(0); + int count = taskService.count(new QueryWrapper().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode())); String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode(); - JSONArray result = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "6", "vehicle_status", status, "material_id", materialId)).process().getResultJSONArray(0); - if (result.size()>0){ - if (result.size()>runingTask.size()){ - return result.stream().map(a -> ((JSONObject) a).getString("vehicle_code")).collect(Collectors.joining(",")); + List vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId)); + if (vehicle.size()>0){ + if (vehicle.size()>count){ + return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(",")); } } return ""; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java index 2863e6f2..61ee34bf 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java @@ -249,6 +249,15 @@ public class CacheLineHandController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/checkEnd") + @Log("修改缓存线盘点状态") + @ApiOperation("修改缓存线盘点状态") + public ResponseEntity checkEnd(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [盘点] 接口被请求, 请求参数-{}", param); + cacheLineHandService.check(param); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/agvInBoxExceptionQuery") @Log("AGV入箱异常-查询") @ApiOperation("AGV入箱异常-查询") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java index 54547374..a8217424 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java @@ -890,7 +890,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { @Override public void check(JSONObject param) { - String option = param.getString("option"); + String option = param.getString("check_option"); if (StrUtil.isEmpty(option)) { throw new BadRequestException("缺少关键参数option"); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java new file mode 100644 index 00000000..8aae9977 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java @@ -0,0 +1,241 @@ +package org.nl.wms.product_manage.sch.tasks.SpeMachinery; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.enums.InterfaceLogType; +import org.nl.common.enums.StatusEnum; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.ext.acs.service.impl.AgvInstService; +import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; +import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.Map; + +/** + * 专机任务 + */ +@Slf4j +@Service +public class SpeEmpTask extends AbstractAcsTask { + + @Autowired + AgvInstService agvInstService; + private final Map SpeHandles= new HashMap<>(); + private static String OPT_NAME = "ACS回调# "; + + + public SpeEmpTask() { + SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_MAC.name() ,new Spe2Spe()); + SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_CACHE.name() ,new Spe2Cache()); + SpeHandles.put(AcsTaskEnum.TASK_CACHELINE_OUT.name() ,new Cache2Spe()); + } + + @Override + public void updateTaskStatus(JSONObject param,String status) { + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + log.info(InterfaceLogType.ACS_TO_LMS.getDesc()); + // 指令执行中 + JSONObject task = taskTable.query("task_id = '" + param.getString("task_id") + "'").uniqueResult(0); + AcsTaskEnum taskType = AcsTaskEnum.getType(task.getString("task_type"),"TASK_"); + try { + SpeHandles.get(taskType.name()).handle(param,status,task); + }catch (Exception ex){ + log.error(OPT_NAME+"updateStatus error:{}",ex); + throw ex; + } + } + + @Override + @Transactional + public String createTask(JSONObject param) { + + String point_code = param.getString("device_code"); + String quantity = param.getString("quantity"); + String type = param.getString("type"); + JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0); + Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); + JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(chectIndDatabase)){ + Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); + + } + JSONObject form = new JSONObject(MapOf.of("start_point_code","", + "next_point_code",point_code,"return_point_code", "","vehicle_code", + "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); + String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; + + JSONObject task = packageParam(form, taskId); + WQLObject.getWQLObject("SCH_BASE_Task").insert(task); + try { + pointConfirm(task); + //下发 + }catch (Exception ex){ + task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode()); + task.put("remark",ex.getMessage()); + WQLObject.getWQLObject("sch_base_task").update(task); + } + return taskId; + } + + private JSONObject packageParam(JSONObject form, String task_id) { + JSONObject task = new JSONObject(); + 参数封装:{ + AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "REQUEST_"); + task.put("task_id", task_id); + task.put("task_name", taskEnum.getDesc()); + task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + task.put("task_type", form.getString("type")); + task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode()); + task.put("task_status", TaskStatusEnum.CREATED.getCode()); + task.put("point_code1", form.getString("start_point_code")); + task.put("point_code2", form.getString("next_point_code")); + task.put("point_code3", form.getString("return_point_code")); + task.put("vehicle_code2", form.getString("vehicle_code2")); + task.put("vehicle_code", form.getString("vehicle_code")); + task.put("material_id", form.getString("material_id")); + task.put("material_qty", form.getString("quantity")); + task.put("handle_class", this.getClass().getName()); + task.put("finished_type", "1"); + task.put("is_delete", StatusEnum.LOCK_OFF.getCode()); + task.put("create_id", SecurityUtils.getCurrentUserId()); + task.put("create_name", SecurityUtils.getCurrentNickName()); + task.put("update_optid", SecurityUtils.getCurrentUserId()); + task.put("update_optname", SecurityUtils.getCurrentNickName()); + task.put("create_time", DateUtil.now()); + task.put("update_time", DateUtil.now()); + task.put("priority", "1");} + return task; + } + + @Override + public void cancel(String taskId) { + log.info(OPT_NAME+"cancel taskID:{}",taskId); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + //专机-专机 + //专机-缓存线 + //缓存线出库 + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_CANNEL.getCode()),"task_id = '"+taskId+"'"); + + } + interface SpeStatusHandler{ + void handle(JSONObject param,String status,JSONObject task); + } + class Spe2Spe implements SpeStatusHandler{ + @Override + public void handle(JSONObject param, String sta,JSONObject task) { + AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + WQLObject pointTable = WQLObject.getWQLObject("SCH_BASE_Point"); + WQLObject deviceTable = WQLObject.getWQLObject("pdm_bi_device"); + + switch (status){ + case STATUS_START: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + break; + case STATUS_FINISH: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + //到专机:更新设备上料位物料数量 + String point_code2 = task.getString("point_code2"); + JSONObject pointInfo = pointTable.query("point_code = '" + point_code2 + "'").uniqueResult(0); + JSONObject device = deviceTable.query("device_code = '" + pointInfo.getString("device_code") + "'").uniqueResult(0); + task.getDouble("material_qty"); + double currentQty = device.getDouble("deviceinstor_qty") + task.getDouble("material_qty"); + deviceTable.update(MapOf.of("deviceinstor_qty", String.valueOf(currentQty)), "device_code = '" + pointInfo.getString("device_code") + "'"); + break; + case STATUS_CANNEL: + cancel(param.getString("task_id")); + break; + default: + log.error(OPT_NAME+"未定义任务状态:{}",sta); + throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + } + } + } + class Spe2Cache implements SpeStatusHandler{ + @Override + public void handle(JSONObject param, String sta,JSONObject task) { + AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + WQLObject cacheVehTable = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + String workprocedureCode = param.getString("workorder_code"); + String inboxtxm = param.getString("inboxtxm"); + String outboxtxm = param.getString("outboxtxm"); + switch (status){ + case STATUS_START: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + cacheVehTable.delete("vehicle_code = '" + outboxtxm + "'"); + break; + case STATUS_FINISH: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + cacheVehTable.insert(MapOf.of("quantity", task.getString("material_qty"), + "material_id", task.getString("material_id"), + "vehicle_code", inboxtxm, + "vehicle_status", StatusEnum.CACHE_VEL_FULL.getCode(), + //工单,工序? + "workorder_code", workprocedureCode, + "create_time", DateUtil.now(), + "update_time", DateUtil.now() + //物料规格,物料名称 从物料信息表关联查询 + )); + break; + case STATUS_CANNEL: + cancel(param.getString("task_id")); + break; + default: + throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + } + } + } + class Cache2Spe implements SpeStatusHandler{ + @Override + public void handle(JSONObject param, String sta,JSONObject task) { + AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + WQLObject cacheVehTable = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + WQLObject pointTable = WQLObject.getWQLObject("SCH_BASE_Point"); + WQLObject deviceTable = WQLObject.getWQLObject("pdm_bi_device"); + String outboxtxm = param.getString("outboxtxm"); + + switch (status){ + case STATUS_START: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + cacheVehTable.delete("vehicle_code = '" + outboxtxm + "'"); + break; + case STATUS_FINISH: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + + String point_code2 = task.getString("point_code2"); + JSONObject pointInfo = pointTable.query("point_code = '" + point_code2 + "'").uniqueResult(0); + JSONObject device = deviceTable.query("device_code = '" + pointInfo.getString("device_code") + "'").uniqueResult(0); + task.getDouble("material_qty"); + double currentQty = device.getDouble("deviceinstor_qty") + task.getDouble("material_qty"); + deviceTable.update(MapOf.of("deviceinstor_qty", String.valueOf(currentQty)), "device_code = '" + pointInfo.getString("device_code") + "'"); + break; + case STATUS_CANNEL: + cancel(param.getString("task_id")); + break; + default: + throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + } + } + } + + @Override + public void pointConfirm(JSONObject param) { + agvInstService.empMatter(param); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachineryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java similarity index 88% rename from mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachineryTask.java rename to mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java index 272d4877..92eee538 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachineryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.product_manage.sch.tasks; +package org.nl.wms.product_manage.sch.tasks.SpeMachinery; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; @@ -11,9 +11,9 @@ import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; - import org.nl.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.impl.AgvInstService; @@ -23,7 +23,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - import java.util.HashMap; import java.util.Map; @@ -32,7 +31,7 @@ import java.util.Map; */ @Slf4j @Service -public class SpeMachineryTask extends AbstractAcsTask { +public class SpeFullTask extends AbstractAcsTask { @Autowired AgvInstService agvInstService; @@ -40,7 +39,7 @@ public class SpeMachineryTask extends AbstractAcsTask { private static String OPT_NAME = "ACS回调# "; - public SpeMachineryTask() { + public SpeFullTask() { SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_MAC.name() ,new Spe2Spe()); SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_CACHE.name() ,new Spe2Cache()); SpeHandles.put(AcsTaskEnum.TASK_CACHELINE_OUT.name() ,new Cache2Spe()); @@ -73,23 +72,16 @@ public class SpeMachineryTask extends AbstractAcsTask { JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); if (ObjectUtil.isNotEmpty(chectIndDatabase)){ Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); + } + JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0); + JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code, + "next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code", + "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); - } - JSONObject form = null; - if (AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type)){ - JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0); - form = new JSONObject(MapOf.of("start_point_code",point_code, - "next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code", - "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); - } - if (AcsTaskEnum.REQUEST_CALLTYPE_EMP.getCode().equals(type)){ - form = new JSONObject(MapOf.of("start_point_code","", - "next_point_code",point_code,"return_point_code", "","vehicle_code", - "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); - } String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; JSONObject task = packageParam(form, taskId); WQLObject.getWQLObject("SCH_BASE_Task").insert(task); + try { pointConfirm(task); //下发 @@ -246,12 +238,7 @@ public class SpeMachineryTask extends AbstractAcsTask { @Override public void pointConfirm(JSONObject param) { - String type = param.getString("task_type"); - if (AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type)){ - agvInstService.fullMaster(param); - } - if (AcsTaskEnum.REQUEST_CALLTYPE_EMP.getCode().equals(type)){ - agvInstService.callMatter(param); - } + agvInstService.fullMaster(param); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java index 3db7a58e..24dfcd5c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java @@ -19,4 +19,13 @@ public interface IPdmBiDeviceService extends IService { List getNotWorkDeviceByWorkproceduceId(JSONObject param); + /** + * 获取生产工序对应可用设备 + * 重量/物料校验 + * @param param + * @return + */ + List workproceduceDevices(Map param); + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java index 1b0a47c1..43aa1b40 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java @@ -90,7 +90,7 @@ public class PdmBiDevice implements Serializable { private BigDecimal deviceinitinstor_qty; /** - * 设备实时来料仓数 + * 设备实时来料仓数:用于数量校验 */ private BigDecimal deviceinstor_qty; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java index 5549e533..1f9452da 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java @@ -1,5 +1,6 @@ package org.nl.wms.product_manage.service.device.dao.mapper; +import com.alibaba.fastjson.JSONObject; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -17,4 +18,6 @@ import java.util.Map; public interface PdmBiDeviceMapper extends BaseMapper { List getNotWorkDevice(Map query); + + List workproceduceDevices(Map query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml index f8e60447..fa038379 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml @@ -18,4 +18,22 @@ from PDM_produce_workOrder o where '5' > o.workorder_status and o.is_delete = '0' ) + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java index ec77959e..7b7009f0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java @@ -25,4 +25,9 @@ public class PdmBiDeviceServiceImpl extends ServiceImpl getNotWorkDeviceByWorkproceduceId(JSONObject param) { return this.baseMapper.getNotWorkDevice(param); } + + @Override + public List workproceduceDevices(Map param) { + return this.baseMapper.workproceduceDevices(param); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java index e56eed4f..07b3f1ad 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java @@ -6,14 +6,23 @@ package org.nl.wms.scheduler_manage.controller.scheduler; */ import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.TableDataInfo; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; import org.nl.wms.scheduler_manage.service.scheduler.SchedulerService; +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.ProcessElement; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; @RestController @RequestMapping("/api/shceduler") @@ -23,6 +32,9 @@ public class SchedulerController { @Autowired SchedulerService schedulerService; + @Autowired + ISchProcessRouteService processRouteService; + @GetMapping("/all") public ResponseEntity allprocess(){ return new ResponseEntity<>(schedulerService.all(), HttpStatus.OK); @@ -36,4 +48,49 @@ public class SchedulerController { FlowElement element = schedulerService.currentFlow(process, flow); return new ResponseEntity<>(element, HttpStatus.OK); } + + + @GetMapping("/route") + public ResponseEntity route(String blurry){ + QueryWrapper query = new QueryWrapper<>(); + if (StringUtils.isNotEmpty(blurry)){ + query.like("process_id", blurry) + .or() + .like("process_name", blurry) + .or() + .like("material_spec", blurry); + } + List list = processRouteService.list(query); + return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); + } + + @PostMapping("/routeDelete") + public ResponseEntity routeDelete(@RequestBody String[] materialSpecs){ + processRouteService.removeByIds(Arrays.asList(materialSpecs)); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/routeCreate") + public ResponseEntity routeCreate(@RequestBody JSONObject form){ + SchProcessRoute route = form.toJavaObject(SchProcessRoute.class); + ProcessElement process = schedulerService.getProcess(route.getProcess_id()); + if (process == null){ + throw new BadRequestException("当前工序路由id"+route.getProcess_id()+"没有对应xml配置文件配置"); + } + route.setProcess_name(process.getName()); + processRouteService.save(route); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/routeUpdate") + public ResponseEntity routeUpdate(@RequestBody JSONObject form){ + SchProcessRoute route = form.toJavaObject(SchProcessRoute.class); + ProcessElement process = schedulerService.getProcess(route.getProcess_id()); + if (process == null){ + throw new BadRequestException("当前工序路由id"+route.getProcess_id()+"没有对应xml配置文件配置"); + } + route.setProcess_name(process.getName()); + processRouteService.updateById(route); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java index 0fce2d94..a684e26e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java @@ -3,6 +3,9 @@ package org.nl.wms.scheduler_manage.service.cacheline; import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehicle; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +import java.util.Map; + /** *

* 缓存线载具条码表 服务类 @@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ISchCachelineVehicleService extends IService { + List getCachelineVehicle(Map query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java index 6029a4a0..c3bd2e02 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java @@ -3,6 +3,9 @@ package org.nl.wms.scheduler_manage.service.cacheline.dao.mapper; import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehicle; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; +import java.util.Map; + /** *

* 缓存线载具条码表 Mapper 接口 @@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SchCachelineVehicleMapper extends BaseMapper { + List getCachelineVehicle(Map query); + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml index 995c0639..c15858b7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml @@ -2,4 +2,17 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java index 04565cc3..887d11e1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java @@ -6,6 +6,9 @@ import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehicleService import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; + /** *

* 缓存线载具条码表 服务实现类 @@ -17,4 +20,8 @@ import org.springframework.stereotype.Service; @Service public class SchCachelineVehicleServiceImpl extends ServiceImpl implements ISchCachelineVehicleService { + @Override + public List getCachelineVehicle(Map query) { + return this.baseMapper.getCachelineVehicle(query); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java index 065fabdd..f0168faa 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java @@ -39,4 +39,11 @@ public interface ISchBasePointService extends IService { */ void changeActive(JSONObject form); + /** + * 根据设备点位查询设备对应工序 + * @param point_code + * @return + */ + Map findDeviceWorkprodure(String point_code); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java index 9b266290..fb07e862 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java @@ -28,4 +28,6 @@ public interface SchBasePointMapper extends BaseMapper { * @return */ List selectPoint(Map map); + + Map getDeviceWorkprodure(String pointCode); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml index 9ef6d0fd..c4030f11 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml @@ -89,4 +89,11 @@ AND ruledis.load_series >= #{loadSeries} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java index 72567273..e6fda177 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java @@ -140,4 +140,12 @@ public class SchBasePointServiceImpl extends ServiceImpl + * 物料系列调度线路配置表 服务类 + *

+ * + * @author generator + * @since 2023-05-23 + */ +public interface ISchProcessRouteService extends IService { + + SchProcessRoute findByMaterialId(String materialId,String regionCode); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java index 21199dd0..1fd04bbe 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java @@ -10,8 +10,6 @@ import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.ProcessElement; import org.springframework.beans.BeansException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.io.FileSystemResourceLoader; import org.springframework.core.io.Resource; @@ -36,7 +34,6 @@ import java.util.function.Function; */ @Service public class SchedulerService implements BeanPostProcessor { - @Value("${schedulerFile}") private static Map converterMap =new HashMap<>(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/SchProcessRoute.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/SchProcessRoute.java new file mode 100644 index 00000000..2b0faad0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/SchProcessRoute.java @@ -0,0 +1,38 @@ +package org.nl.wms.scheduler_manage.service.scheduler.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 物料系列调度线路配置表 + *

+ * + * @author generator + * @since 2023-05-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sch_process_route") +public class SchProcessRoute implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 规则(物料系列/区域) + */ + @TableId(value ="rule_code" ) + private String rule_code; + + /** + * 袋唯一标识 + */ + private String process_id; + + private String process_name; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/SchProcessRouteMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/SchProcessRouteMapper.java new file mode 100644 index 00000000..46d7f6e2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/SchProcessRouteMapper.java @@ -0,0 +1,17 @@ +package org.nl.wms.scheduler_manage.service.scheduler.dao.mapper; + +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 物料系列调度线路配置表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-23 + */ +public interface SchProcessRouteMapper extends BaseMapper { + + SchProcessRoute findByMaterialId(String materialId); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/xml/SchProcessRouteMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/xml/SchProcessRouteMapper.xml new file mode 100644 index 00000000..97949c68 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/xml/SchProcessRouteMapper.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/impl/SchProcessRouteServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/impl/SchProcessRouteServiceImpl.java new file mode 100644 index 00000000..52464bd3 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/impl/SchProcessRouteServiceImpl.java @@ -0,0 +1,41 @@ +package org.nl.wms.scheduler_manage.service.scheduler.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; +import org.nl.wms.scheduler_manage.service.scheduler.dao.mapper.SchProcessRouteMapper; +import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.system_manage.service.param.ISysParamService; +import org.nl.wms.system_manage.service.param.dao.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 物料系列调度线路配置表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-23 + */ +@Service +public class SchProcessRouteServiceImpl extends ServiceImpl implements ISchProcessRouteService { + + @Autowired + ISysParamService iSysParamService; + + @Override + public SchProcessRoute findByMaterialId(String materialId, String regionCode) { + Param one = iSysParamService.getOne(new QueryWrapper().eq("code", "process_route")); + String value = one.getValue(); + if (value.equals("1")){ + return this.getOne(new QueryWrapper().eq("rule_code",regionCode)); + }else { + if (StringUtils.isNotEmpty(materialId)){ + return this.baseMapper.findByMaterialId(materialId); + } + } + return null; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java index 7b46ef69..e2aacb89 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java @@ -36,9 +36,7 @@ public class FlowConverter implements BaseConverter { } if (XMLStreamConstants.START_ELEMENT == xtr.next()){ System.out.println(xtr.getLocalName()); - Map param = new HashMap(); - param.put(xtr.getAttributeValue(null,"id"),xtr.getAttributeValue(null,"value")); - element.getParams().add(param); + element.getParams().put(xtr.getAttributeValue(null,"id"),xtr.getAttributeValue(null,"value")); i++; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java index 2877451d..d07b61b5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java @@ -3,6 +3,7 @@ package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,7 +17,7 @@ public class FlowElement extends BaseElement { private FlowElement targetRef; private String sourceRefId; private String targetRefId; - private List> params = new ArrayList<>(); + private Map params = new HashMap<>(); @@ -54,11 +55,11 @@ public class FlowElement extends BaseElement { this.targetRefId = targetRefId; } - public List> getParams() { + public Map getParams() { return params; } - public void setParams(List> params) { + public void setParams(Map params) { this.params = params; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java index 47307911..52b2a5ef 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java @@ -1,6 +1,8 @@ package org.nl.wms.scheduler_manage.service.task.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; @@ -26,6 +28,7 @@ public class SchBaseTask implements Serializable { /** * 任务标识 */ + @TableId(value = "task_id") private String task_id; /** diff --git a/mes/hd/nladmin-system/src/main/resources/scheduler.xml b/mes/hd/nladmin-system/src/main/resources/scheduler.xml index c434d833..cde694e2 100644 --- a/mes/hd/nladmin-system/src/main/resources/scheduler.xml +++ b/mes/hd/nladmin-system/src/main/resources/scheduler.xml @@ -2,8 +2,12 @@ - - + + + + + + diff --git a/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue b/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue new file mode 100644 index 00000000..655d7b66 --- /dev/null +++ b/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/mes/qd/src/views/wms/scheduler_manage/scheduler/schedulerRoute.js b/mes/qd/src/views/wms/scheduler_manage/scheduler/schedulerRoute.js new file mode 100644 index 00000000..160ddcfb --- /dev/null +++ b/mes/qd/src/views/wms/scheduler_manage/scheduler/schedulerRoute.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export function getRoutes() { + return request({ + url: '/api/shceduler/route', + method: 'get' + }) +} + +export function add(data) { + return request({ + url: '/api/shceduler/routeCreate', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/shceduler/routeDelete', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: '/api/shceduler/routeUpdate', + method: 'post', + data + }) +} + +export default { getRoutes, add, edit, del }