diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java index 0fbd502c..2828483b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/AcsUtil.java @@ -86,4 +86,40 @@ public class AcsUtil { } return result; } + + public static JSONObject notifyAcs(String api, JSONObject list) { + log.info("下发ACS参数----------------------------------------+"+api+",---"+list.toString()); + //判断是否连接ACS系统 + String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); + JSONObject result = new JSONObject(); + if (StrUtil.equals(StatusEnum.STATUS_FLASE.getCode(), isConnect)) { + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功,但未连接ACS!"); + result.put("data", new JSONObject()); + return result; + } + + //ACS地址:127.0.0.1:8010 + String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("acs_url").getValue(); + + String url = acsUrl + api; + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(list)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + log.info("ACS相应参数----------------------------------------+"+api+",---"+result.toString()); + + } catch (Exception e) { + log.info("ACS反馈异常----------------------------------------+"+api+",---"+e.getMessage()); + String msg = e.getMessage(); + //ConnectException: Connection refused: connect + //网络不通 + result.put("status", HttpStatus.BAD_REQUEST); + result.put("message", "网络不通,操作失败!"); + result.put("data", new JSONObject()); + result.put("error", msg); + } + return result; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 9c552a7a..69dc0067 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -103,7 +103,7 @@ public class AcsToWmsController { return new ResponseEntity<>(HttpStatus.OK); } - @PostMapping("/feedcachelineVe") + @PostMapping("/feedCacheLineBarcodes") @Log("向wms反馈缓存载具信息") @ApiOperation("向wms反馈缓存载具信息") @SaIgnore diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java index ac38b245..63187126 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/WmsToAcsService.java @@ -57,4 +57,11 @@ public interface WmsToAcsService { * @return */ Map replaceDevice(JSONArray arr); + + /** + * 变更设备电气信号 + * @param arr + * @return + */ + Map action(JSONArray arr); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 143e3ceb..8145063d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -283,7 +283,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ String vehicleCode = collect[i]; cachePosition.put("vehicle_code",vehicleCode.equals("0")?"": vehicleCode); if (vehicleCode.equals("99999")){ - cachePosition.put("err_type", StatusEnum.CACHE_POINT_SCAN_ERROR.getCode()); + cachePosition.put("err_type", StatusEnum.CACHE_POINT_ERROR.getCode()); } positionTab.update(cachePosition,"position_code = '"+cachePosition.getString("position_code")+"'"); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 9f93f2b8..f36c814a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -97,4 +97,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{ return AcsUtil.notifyAcs(api, arr); } + @Override + public Map action(JSONArray arr) { + String api = "api/wms/action"; + return AcsUtil.notifyAcs(api, arr); + } + } 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 a87a9156..2863e6f2 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 @@ -145,7 +145,7 @@ public class CacheLineHandController { @PostMapping("/cacheLineOutBoxExceptionQuery") @Log("缓存线出箱异常-查询") @ApiOperation("缓存线出箱异常-查询") - public ResponseEntity cacheLineOutBoxExceptionQuery(@RequestBody JSONObject param) { + public ResponseEntity cacheLineOutBoxExceptionQuery(@RequestBody JSONObject param) { log.info("海亮缓存线手持服务 [缓存线出箱异常-查询] 接口被请求, 请求参数-{}", param); //参数校验 if (StringUtils.isBlank(param.getString("wcsdevice_code"))) { @@ -240,6 +240,15 @@ public class CacheLineHandController { return new ResponseEntity<>(cacheLineHandService.deleteBox(param), HttpStatus.OK); } + @PostMapping("/check") + @Log("修改缓存线盘点状态") + @ApiOperation("修改缓存线盘点状态") + public ResponseEntity check(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [盘点] 接口被请求, 请求参数-{}", param); + cacheLineHandService.check(param); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/agvInBoxExceptionQuery") @Log("AGV入箱异常-查询") @ApiOperation("AGV入箱异常-查询") @@ -274,15 +283,6 @@ public class CacheLineHandController { return new ResponseEntity<>(HttpStatus.OK); } - @PostMapping("/setBlankPos") - @Log("设置缓存线货位为空位置") - @ApiOperation("设置缓存线货位为空位置") - public ResponseEntity setBlankPos(@RequestBody JSONObject param) { - log.info("海亮缓存线手持服务 [设置缓存线货位为空位置] 接口被请求, 请求参数-{}", param); - cacheLineHandService.setBlankPos(param); - return new ResponseEntity<>(HttpStatus.OK); - } - @PostMapping("/cacheLineExcepOpt") @Log("缓存线异常处理") @ApiOperation("缓存线异常处理") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java index a3508f5c..77e2d448 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/CacheLineHandService.java @@ -164,7 +164,7 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/24 */ - CommonResult cacheLineOutBoxExceptionConfirm(JSONObject param); + JSONObject cacheLineOutBoxExceptionConfirm(JSONObject param); /** * 空箱初始化--出入空箱 @@ -184,7 +184,7 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/24 */ - CommonResult setfullBox(JSONObject param); + JSONObject setfullBox(JSONObject param); /** * 设置空框 @@ -233,15 +233,6 @@ public interface CacheLineHandService{ */ void agvOutBoxExceptionConfirm(JSONObject param); - /** - * 设置缓存线货位为空位置 - * - * @param param 查询参数 - * @author gbx - * @date 2023/3/24 - */ - void setBlankPos(JSONObject param); - /** * 缓存线出箱异常-查询 * @@ -250,7 +241,7 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/24 */ - JSONArray cacheLineOutBoxExceptionQuery(JSONObject param); + List cacheLineOutBoxExceptionQuery(JSONObject param); /** * 缓存线异常处理 @@ -260,7 +251,7 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/24 */ - CommonResult cacheLineExcepOpt(JSONObject param); + JSONObject cacheLineExcepOpt(JSONObject param); /** * 倒料操作 @@ -301,4 +292,11 @@ public interface CacheLineHandService{ * @param param */ JSONObject deleteBox(JSONObject param); + + /** + * 删除箱子 + * + * @param param + */ + void check(JSONObject param); } 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 3521cd4b..54547374 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 @@ -24,12 +24,21 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.pda_manage.pda.dto.MaterialDto; import org.nl.wms.pda_manage.pda.service.CacheLineHandService; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; +import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelinePositionService; +import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehilematerialService; +import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelinePosition; +import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial; import org.nl.wms.scheduler_manage.service.cacheline.dao.mapper.SchCachelinePositionMapper; import org.nl.wms.scheduler_manage.service.cacheline.dao.mapper.SchCachelineVehilematerialMapper; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.scheduler_manage.service.task.dao.mapper.SchBaseTaskMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.scheduling.annotation.Async; @@ -37,8 +46,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ThreadPoolExecutor; import java.util.stream.Collectors; /** @@ -64,6 +73,16 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { private SchCachelineVehilematerialMapper vehilematerialMapper; @Autowired private SchCachelinePositionMapper positionMapper; + @Autowired + private SchBaseTaskMapper taskMapper; + @Autowired + private ISchCachelinePositionService positionService; + @Autowired + private ISchCachelineVehilematerialService vehilematerialService; + @Autowired + private IMdMeMaterialbaseService materialbaseService; + @Autowired + private ISchBaseTaskService taskService; @Override public JSONArray dropdownListQuery(String param, String type) { @@ -76,6 +95,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { return WQL.getWO("PDA_QUERY").addParam("flag", "6").addParam("condition", param).process().getResultJSONArray(0); } + @Override public JSONArray appUpdate() { return WQL.getWO("PDA_QUERY").addParam("flag", "11").process().getResultJSONArray(0); } @@ -371,64 +391,56 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { */ @Override @Transactional(rollbackFor = Exception.class) - public CommonResult setfullBox(JSONObject param) { + public JSONObject setfullBox(JSONObject param) { //物料ID String semimanufactures_uuid = param.getString("material_uuid"); // 缓存线位置编码 String position_code = param.getString("position_code"); // 料箱码 String vehicle_code = param.getString("vehicle_code"); - //工序 - // String workprocedure_code = param.getString("workprocedure_code"); // 缓存线 String cacheLine_code = param.getString("wcsdevice_code"); String weight = param.getString("weight"); String quantity = param.getString("quantity"); + if (StringUtils.isBlank(quantity) || param.getInteger("quantity") <= 0) { throw new BadRequestException("数量必须大于0!"); } - //缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - // 缓存线位置 - JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "'").uniqueResult(0); - if (vehiobj == null) { + + SchCachelinePosition vehiobj = positionService.getOne(new QueryWrapper().eq("position_code", position_code)); + + if (ObjectUtil.isEmpty(vehiobj)) { throw new BadRequestException("位置不存在,设置有误!"); } - //工序表 - //WQLObject wpTab = WQLObject.getWQLObject("pdm_bi_workprocedure"); - //物料表 - WQLObject meTab = WQLObject.getWQLObject("md_me_materialbase"); - // 查询工序信息 - // JSONObject wpObj = wpTab.query("workprocedure_code = '" + workprocedure_code + "'").uniqueResult(0); - // if(ObjectUtil.isEmpty(wpObj)) { - // throw new BadRequestException("工序查询错误,请检查工序"); - // } - JSONObject meObj = meTab.query("material_id = '" + semimanufactures_uuid + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(meObj)) { + + MdMeMaterialbase mater = materialbaseService.getOne(new QueryWrapper().eq("material_id", semimanufactures_uuid)); + if (ObjectUtil.isEmpty(mater)) { throw new BadRequestException("物料查询错误,请检查物料"); } - vehiobj.put("vehicle_code", vehicle_code); + //2.缓存线位置通过扫码绑定料箱条码 - positionTab.update(vehiobj, "position_code = '" + position_code + "'"); - // 缓存线载具物料表 - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + vehiobj.setVehicle_code(vehicle_code); + positionService.updateById(vehiobj); + //3.先删除料箱的所有关联信息,包括物料,工序,生产区域 - ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); - // 物料信息 - HashMap json = new HashMap<>(); + vehilematerialService.removeByMap(MapOf.of("vehicle_code", vehicle_code)); + + JSONObject json = new JSONObject(); json.put("vehmaterial_id", IdUtil.getStringId()); json.put("vehicle_code", vehicle_code); json.put("cacheLine_code", cacheLine_code); - json.put("material_id", meObj.getString("material_id")); + json.put("material_id", mater.getMaterial_id()); json.put("weight", weight); json.put("quantity", quantity); - // json.put("workprocedure_code", wpObj.getString("workprocedure_code")); - // json.put("workprocedure_name", wpObj.getString("workprocedure_name")); //有箱有料 json.put("vehicle_status", StatusEnum.CACHE_VEL_FULL.getCode()); json.put("create_time", DateUtil.now()); //4.重新新建该缓存线位置上的料箱为满箱及所属工序,生产区域等信息 - return RestBusinessTemplate.execute(() -> ivtTab.insert(json).getSucess()); + vehilematerialService.save(json.toJavaObject(SchCachelineVehilematerial.class)); + + JSONObject res = new JSONObject(); + res.put("message", "设置成功"); + return res; } @Override @@ -440,19 +452,23 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { String vehicle_code = param.getString("vehicle_code"); // 缓存线 String wcsdevice_code = param.getString("wcsdevice_code"); - // 缓存线载具物料表 - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - // 缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "'").uniqueResult(0); - if (vehiobj == null) { + + + SchCachelinePosition vehiobj = positionService.getOne(new QueryWrapper().eq("position_code", position_code)); + if (ObjectUtil.isEmpty(vehiobj)) { throw new BadRequestException("位置不存在,设置有误!"); } + //1.缓存线位置通过扫码绑定料箱条码 - vehiobj.put("vehicle_code", vehicle_code); - positionTab.update(vehiobj, "position_code = '" + position_code + "'"); + vehiobj.setVehicle_code(vehicle_code); + positionService.updateById(vehiobj); + + //2.先删除料箱的所有关联信息,包括物料,工序,生产区域 - ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); + vehilematerialService.removeByMap(MapOf.of("vehicle_code", vehicle_code)); + + + // 3.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 JSONObject json = new JSONObject(); json.put("vehmaterial_id", IdUtil.getStringId()); json.put("vehicle_code", vehicle_code); @@ -464,30 +480,13 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { json.put("workprocedure_code", ""); json.put("workprocedure_name", ""); json.put("create_time", DateUtil.now()); - // 3.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 - ivtTab.insert(json); + vehilematerialService.save(json.toJavaObject(SchCachelineVehilematerial.class)); + JSONObject res = new JSONObject(); res.put("message", "设置成功"); return res; } - @Override - public void setBlankPos(JSONObject param) { - // 层数 - String layer_num = param.getString("layer_num"); - // 顺序号 - String seat_order_num = param.getString("seat_order_num"); - // 缓存线编码 - String wcsdevice_code = param.getString("wcsdevice_code"); - // 缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - JSONObject json = positionTab.query("order_no = " + seat_order_num + " and layer_num = " + layer_num + " and cacheLine_code like '%" + wcsdevice_code + "%'").uniqueResult(0); - // 状态设置为空位 - json.put("is_empty", "1"); - json.put("vehicle_code", ""); - positionTab.update(json); - } - /** * 出入空箱,出入类型 inOut_type 1 入空箱 2 出空箱 缓存线编码 wcsdevice_code 料箱码 vehicle_code * @@ -546,26 +545,27 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { * 缓存线位置编码 position_code */ @Override - public JSONArray cacheLineOutBoxExceptionQuery(JSONObject param) { + public List cacheLineOutBoxExceptionQuery(JSONObject param) { String wcsdevice_code = param.getString("wcsdevice_code"); String position_code = param.getString("position_code"); //根据缓存线编码和缓存线点位查找任务ID - JSONObject posiObj = WQLObject.getWQLObject("sch_cacheline_position").query("cacheLine_code = '" + wcsdevice_code + "' and position_code = '" + position_code + "'").uniqueResult(0); + + SchCachelinePosition cachelinePosition = positionService.getOne(new QueryWrapper().eq("cacheLine_code", wcsdevice_code).eq("position_code", position_code)); //查不到点位信息 - if (null == posiObj) { + if (ObjectUtil.isEmpty(cachelinePosition)) { throw new BadRequestException("未找到该缓存线的点位信息!"); } //查不到任务信息 - if (StringUtils.isBlank(posiObj.getString("task_code"))) { + if (StrUtil.isEmpty(cachelinePosition.getTask_code())) { throw new BadRequestException("未找到该缓存线的点位的任务信息!"); } - JSONArray jsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "10").addParam("task_code", posiObj.getString("task_code")).process().getResultJSONArray(0); + //JSONArray jsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "10").addParam("task_code", posiObj.getString("task_code")).process().getResultJSONArray(0); + List task_list = taskMapper.getTaskInfo(MapOf.of("task_code", cachelinePosition.getTask_code())); //缓存线编码 - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject row = jsonArray.getJSONObject(i); - row.put("wcsdevice_code", wcsdevice_code); - } - return jsonArray; + task_list.forEach(task -> { + task.put("wcsdevice_code", wcsdevice_code); + }); + return task_list; } /** @@ -576,54 +576,53 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { * 料箱码 vehicle_code */ @Override - public CommonResult cacheLineOutBoxExceptionConfirm(JSONObject param) { + public JSONObject cacheLineOutBoxExceptionConfirm(JSONObject param) { String inOut_type = param.getString("inOut_type"); String cacheLine_code = param.getString("wcsdevice_code"); String position_code = param.getString("position_code"); String vehicle_code = param.getString("vehicle_code"); - //缓存线位置表 - WQLObject positionTab = WQLObject.getWQLObject("sch_cacheline_position"); - // 缓存线载具物料表 - WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + //1.确定缓存线点位 - JSONObject vehiobj = positionTab.query("position_code = '" + position_code + "' and cacheLine_code = '" + cacheLine_code + "'").uniqueResult(0); + SchCachelinePosition vehiobj = positionService.getOne(new QueryWrapper().eq("position_code", position_code)); + //2.绑定新料箱条码(入满箱或者入空箱),设置缓存线点位不为空 - vehiobj.put("vehicle_code", vehicle_code); - vehiobj.put("is_empty", "0"); - //非雪花算法生产的ID为主键数据更新下需要拼接条件 - positionTab.update(vehiobj, "position_code = '" + position_code + "'"); + vehiobj.setVehicle_code(vehicle_code); + vehiobj.setIs_empty("0"); + positionService.updateById(vehiobj); + //3.删除入料箱之前的所有关联信息,包括物料,工序,生产区域 - ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); + vehilematerialService.removeByMap(MapOf.of("vehicle_code", vehicle_code)); + //4.初始化料箱 - HashMap json = new HashMap<>(); + JSONObject json = new JSONObject(); json.put("vehicle_code", vehicle_code); json.put("cacheLine_code", cacheLine_code); json.put("vehmaterial_id", IdUtil.getStringId()); json.put("create_time", DateUtil.now()); + // 出空箱入满箱扫码异常 if (StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { //5.通过缓存线位置表当前执行任务id,获取任务信息中的物料信息 - JSONObject positionInfo = positionTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); + SchCachelinePosition positionInfo = positionService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)); //查不到点位信息 - if (null == positionInfo) { + if (ObjectUtil.isEmpty(positionInfo)) { throw new BadRequestException("未找到该缓存线的点位信息!"); } //获取当前任务信息 - JSONObject instructObj = WQLObject.getWQLObject("sch_base_task").query("task_code = '" + positionInfo.getString("task_code") + "'").uniqueResult(0); + SchBaseTask instructObj = taskService.getOne(new QueryWrapper().eq("task_code", positionInfo.getTask_code())); //查不到点位信息 - if (null == instructObj) { + if (ObjectUtil.isEmpty(instructObj)) { throw new BadRequestException("未找到该任务信息!"); } //获取物料信息 - JSONObject meObj = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + instructObj.get("material_id") + "'").uniqueResult(0); - //查不到点位信息 - if (null == meObj) { - throw new BadRequestException("未找到该物料信息!"); + MdMeMaterialbase mater = materialbaseService.getOne(new QueryWrapper().eq("material_id", instructObj.getMaterial_id())); + if (ObjectUtil.isEmpty(mater)) { + throw new BadRequestException("物料查询错误,请检查物料"); } //6.重新新建该缓存线位置上的料箱为满箱及所属工序,生产区域等信息 - json.put("material_id", meObj.getString("material_id")); - json.put("quantity", instructObj.getString("material_qty")); - json.put("product_area", instructObj.getString("product_area")); + json.put("material_id", mater.getMaterial_id()); + json.put("quantity", instructObj.getMaterial_qty()); + json.put("product_area", instructObj.getProduct_area()); json.put("vehicle_status", StatusEnum.CACHE_VEL_EMT.getCode()); } // 出满箱入空箱 @@ -638,7 +637,12 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { json.put("workprocedure_name", ""); json.put("product_area", ""); } - return RestBusinessTemplate.execute(() -> ivtTab.insert(json).getSucess()); + + vehilematerialService.save(json.toJavaObject(SchCachelineVehilematerial.class)); + + JSONObject res = new JSONObject(); + res.put("message", "设置成功"); + return res; } /** @@ -673,12 +677,11 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { JSONObject jsonObject = new JSONObject(); // 1 扫码异常-入箱扫码 2 出箱扫码 jsonObject.put("type", type); - jsonObject.put("position_code", position_code); +// jsonObject.put("position_code", position_code); jsonObject.put("device_code", device_code); jsonObject.put("vehicle_code", vehicle_code); - jsonArray.add(jsonObject); try { - return RestBusinessTemplate.execute(() -> AcsUtil.notifyAcs("api/wms/issuedBarcode", jsonArray)); + return RestBusinessTemplate.execute(() -> AcsUtil.notifyAcs("api/wms/issuedBarcode", jsonObject)); } catch (NullPointerException e) { throw new BadRequestException(e.toString()); } @@ -689,27 +692,19 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { */ @Override @Transactional(rollbackFor = Exception.class) - public CommonResult cacheLineExcepOpt(JSONObject param) { + public JSONObject cacheLineExcepOpt(JSONObject param) { // 缓存线编码 String wcsdevice_code = param.getString("wcsdevice_code"); // opt_type 1-暂停、2-启动,默认为1暂停 - String type = StatusEnum.PAUSE_CACHELINE.getCode(); String opt_type = param.getString("opt_type"); - if (StatusEnum.START_CACHELINE.getCode().equals(opt_type)) { - type = "0"; - } - JSONArray jsonArray = new JSONArray(); JSONObject jsonObject = new JSONObject(); - //下发接收的,恢复是0,暂停是1 - jsonObject.put("type", type); + jsonObject.put("type", opt_type); //缓存线编码 - jsonObject.put("wcsdevice_code", wcsdevice_code); - jsonArray.add(jsonObject); - try { - return RestBusinessTemplate.execute(() -> AcsUtil.notifyAcs("api/wms/puaseCacheLine", jsonArray)); - } catch (NullPointerException e) { - throw new BadRequestException(e.toString()); - } + jsonObject.put("device_code", wcsdevice_code); + AcsUtil.notifyAcs("api/wms/puaseCacheLine", jsonObject); + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; } /** @@ -873,12 +868,50 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { public JSONObject deleteBox(JSONObject param) { JSONObject res = new JSONObject(); res.put("message", "删除失败"); - WQLObject cvTab = WQLObject.getWQLObject("SCH_CacheLine_VehileMaterial"); String vehicleCode = param.getString("vehicle_code"); + String position_code = param.getString("position_code"); if (ObjectUtil.isNotEmpty(vehicleCode)) { - cvTab.delete("vehicle_code = '" + vehicleCode + "'"); + //删除载具物料表 + vehilematerialService.removeByMap(MapOf.of("vehicle_code", vehicleCode)); + + //维护点位的载具字段 + SchCachelinePosition vehiobj = positionService.getOne(new QueryWrapper().eq("position_code", position_code)); + if (ObjectUtil.isEmpty(vehiobj)) { + throw new BadRequestException("位置不存在,设置有误!"); + } + //缓存线位置通过扫码绑定料箱条码 + vehiobj.setVehicle_code(""); + positionService.updateById(vehiobj); + res.put("message", "删除成功"); } return res; } + + @Override + public void check(JSONObject param) { + String option = param.getString("option"); + if (StrUtil.isEmpty(option)) { + throw new BadRequestException("缺少关键参数option"); + } + + String device_code = param.getString("device_code"); + String code = ""; + if (option.equals("0")) { + code = "to_start_checking"; + } + if (option.equals("1")) { + code = "to_check_finish"; + } + String value = "1"; + JSONObject jo = new JSONObject(); + jo.put("device_code", device_code); + jo.put("code", code); + jo.put("value", value); + + JSONArray ja = new JSONArray(); + ja.add(jo); + wmsToAcsService.action(ja); + + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls index 78870a96..aa248e2c 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 709a0f1a..27a74b13 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -519,7 +519,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl resp = wmsToAcsService.order(array); if (((int)resp.get("status")) == (HttpStatus.BAD_REQUEST.value())){ throw new BadRequestException(String.valueOf(resp.get("message"))); 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 new file mode 100644 index 00000000..e56eed4f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java @@ -0,0 +1,39 @@ +package org.nl.wms.scheduler_manage.controller.scheduler; + +/* + * @author ZZQ + * @Date 2023/5/22 14:27 + */ + +import cn.dev33.satoken.annotation.SaIgnore; +import org.nl.wms.scheduler_manage.service.scheduler.SchedulerService; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; +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; + +@RestController +@RequestMapping("/api/shceduler") +@SaIgnore +public class SchedulerController { + + @Autowired + SchedulerService schedulerService; + + @GetMapping("/all") + public ResponseEntity allprocess(){ + return new ResponseEntity<>(schedulerService.all(), HttpStatus.OK); + } + @GetMapping("/process") + public ResponseEntity allprocess(String process){ + return new ResponseEntity<>(schedulerService.getProcess(process), HttpStatus.OK); + } + @GetMapping("/processFlow") + public ResponseEntity allprocess(String process,String flow){ + FlowElement element = schedulerService.currentFlow(process, flow); + return new ResponseEntity<>(element, HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelinePosition.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelinePosition.java index 292c198a..13fe6a6a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelinePosition.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelinePosition.java @@ -1,6 +1,8 @@ package org.nl.wms.scheduler_manage.service.cacheline.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; @@ -24,6 +26,7 @@ public class SchCachelinePosition implements Serializable { /** * 缓存线位置表-位置编码 */ + @TableId(value = "position_code") private String position_code; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehicle.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehicle.java index 7f01476c..18566c8c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehicle.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehicle.java @@ -1,6 +1,8 @@ package org.nl.wms.scheduler_manage.service.cacheline.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; @@ -24,6 +26,7 @@ public class SchCachelineVehicle implements Serializable { /** * 缓存线载具表-编码 */ + @TableId(value = "vehicle_code") private String vehicle_code; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehilematerial.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehilematerial.java index 2a9eacef..dff414eb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehilematerial.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/SchCachelineVehilematerial.java @@ -1,6 +1,8 @@ package org.nl.wms.scheduler_manage.service.cacheline.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; @@ -24,6 +26,7 @@ public class SchCachelineVehilematerial implements Serializable { /** * 载具物料表-物料标识 */ + @TableId(value = "vehmaterial_id") private String vehmaterial_id; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml index 173b21e0..0ba7cc41 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelinePositionMapper.xml @@ -30,6 +30,6 @@ ORDER BY - scp.cacheline_code, scp.layer_num, scp.positionorder_no, scp.cache_line_no + scp.cacheline_code, scp.layer_num desc, scp.positionorder_no, scp.cache_line_no diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java index cd6deaea..33ea146a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java @@ -1,28 +1,21 @@ package org.nl.wms.scheduler_manage.service.region.impl; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; -import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.WqlUtil; -import org.nl.wms.product_manage.sch.service.dto.RegionDto; -import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.region.ISchBaseRegionService; import org.nl.wms.scheduler_manage.service.region.dao.SchBaseRegion; import org.nl.wms.scheduler_manage.service.region.dao.mapper.SchBaseRegionMapper; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.ProcessElement; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +24,6 @@ import org.springframework.util.Assert; import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -169,4 +161,9 @@ public class SchBaseRegionServiceImpl extends ServiceImpl converterMap =new HashMap<>(); + + + public List all(){ + List readall = XmlReadUtil.readall(); + return readall; + } + + public ProcessElement getProcess(String processId){ + ProcessElement processElement = XmlReadUtil.readProcess(processId); + return processElement; + } + + public FlowElement currentFlow(String processId,String flowId){ + ProcessElement processElement = XmlReadUtil.readProcess(processId); + if (processElement!=null){ + return processElement.flowId(flowId); + } + return null; + } + + static class XmlReadUtil{ + + static FileSystemResourceLoader loader = new FileSystemResourceLoader(); + + @SneakyThrows + public static ProcessElement readProcess(String processId){//生成参数: + Function function = xtr -> { + try { + while (xtr.hasNext()){ + if (XMLStreamConstants.START_ELEMENT == xtr.next()){ + System.out.println(xtr.getLocalName()+"___"+processId); + if (xtr.getLocalName().equals("process") && xtr.getAttributeValue(0).equals(processId)){ + BaseConverter converter = converterMap.get(xtr.getLocalName()); + return (ProcessElement)converter.process(xtr); + } + } + } + }catch (Exception ex){ + throw new BadRequestException(ex.getMessage()); + } + return null; + }; + ProcessElement processElement = readXml("classpath:/scheduler.xml", function); + return processElement; + } + + @SneakyThrows + public static List readall() { + //生成参数: + Function function = xtr -> { + List list = new ArrayList<>(); + try { + while (xtr.hasNext()) { + if (XMLStreamConstants.START_ELEMENT == xtr.next()) { + System.out.println(xtr.getLocalName()); + BaseConverter converter = converterMap.get(xtr.getLocalName()); + if (converter != null) { + list.add(converter.process(xtr)); + } + } + } + }catch (Exception ex){ + throw new BadRequestException(ex.getMessage()); + } + return list; + }; + List baseElements = readXml("classpath:/scheduler.xml", function); + return baseElements; + } + private static T readXml(String path, Function function) throws IOException, XMLStreamException { + FileInputStream inputStream = null; + InputStreamReader streamReader = null; + Resource resource = loader.getResource(path); + try { + inputStream = new FileInputStream(resource.getFile()); + streamReader = new InputStreamReader(inputStream, "UTF-8"); + //TODO:schama校验 + XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(streamReader); + return function.apply(reader); + }finally { + if (streamReader!=null){ + streamReader.close(); + } + if (inputStream!=null){ + inputStream.close(); + } + } + } + } + + + @Override + public Object postProcessAfterInitialization(@NotNull Object bean, String beanName) throws BeansException { + if (bean instanceof BaseConverter){ + converterMap.put(beanName,(BaseConverter)bean); + } + return bean; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseConverter.java new file mode 100644 index 00000000..a1652130 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseConverter.java @@ -0,0 +1,24 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import java.util.HashMap; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +public interface BaseConverter { + BaseElement process(XMLStreamReader xtr) throws XMLStreamException; + + default void setBaseLabel(BaseElement element,XMLStreamReader xtr,String...labels){ + Map map = new HashMap<>(); + for (String label : labels) { + map.put(label,xtr.getAttributeValue(null,label)); + } + element.setAttributeValue(map); + element.setId(xtr.getAttributeValue(null,"id")); + element.setName(xtr.getAttributeValue(null,"name")); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseElement.java new file mode 100644 index 00000000..3fa3e924 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseElement.java @@ -0,0 +1,61 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter; + +import lombok.Data; + +import javax.xml.stream.XMLStreamReader; +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class BaseElement implements Serializable { + private String id; + private String name; + private int xmlRowNumber; + private int xmlColumnNumber; + private Map attributeValue; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getXmlRowNumber() { + return xmlRowNumber; + } + + public void setXmlRowNumber(int xmlRowNumber) { + this.xmlRowNumber = xmlRowNumber; + } + + public int getXmlColumnNumber() { + return xmlColumnNumber; + } + + public void setXmlColumnNumber(int xmlColumnNumber) { + this.xmlColumnNumber = xmlColumnNumber; + } + + public Map getAttributeValue() { + return attributeValue; + } + + public void setAttributeValue(Map attributeValue) { + this.attributeValue = attributeValue; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndConverter.java new file mode 100644 index 00000000..48a7bea6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndConverter.java @@ -0,0 +1,24 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamReader; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("end") +public class EndConverter implements BaseConverter { + String[] labels = new String[]{"id","name","sourceRef"}; + @Override + public BaseElement process(XMLStreamReader xtr) { + EndElement element = new EndElement(); + setBaseLabel(element,xtr,labels); + element.setSourceRefId(xtr.getAttributeValue(null,"sourceRef")); + element.setTargetRefId(xtr.getAttributeValue(null,"targetRef")); + return element; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndElement.java new file mode 100644 index 00000000..d3c705b9 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndElement.java @@ -0,0 +1,9 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class EndElement extends FlowElement { + +} 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 new file mode 100644 index 00000000..7b46ef69 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java @@ -0,0 +1,49 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import lombok.SneakyThrows; +import org.apache.commons.lang3.StringUtils; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("flow") +public class FlowConverter implements BaseConverter { + String[] labels = new String[]{"id","name","sourceRef","targetRef"}; + @Override + @SneakyThrows + public BaseElement process(XMLStreamReader xtr) { + FlowElement element = new FlowElement(); + setBaseLabel(element,xtr,labels); + element.setSourceRefId(xtr.getAttributeValue(null,"sourceRef")); + element.setTargetRefId(xtr.getAttributeValue(null,"targetRef")); + String has = xtr.getAttributeValue(null, "has"); + if (StringUtils.isNotEmpty(has)){ + int i = 0; + while (true){ + if (i == Integer.valueOf(has)){ + break; + } + 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); + i++; + } + } + } + return element; + } + +} 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 new file mode 100644 index 00000000..2877451d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java @@ -0,0 +1,64 @@ +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.List; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class FlowElement extends BaseElement { + + private FlowElement sourceRef; + private FlowElement targetRef; + private String sourceRefId; + private String targetRefId; + private List> params = new ArrayList<>(); + + + + public FlowElement pre() { + return sourceRef; + } + + public FlowElement next() { + return targetRef; + } + + + protected void setSourceRef(FlowElement sourceRef) { + this.sourceRef = sourceRef; + } + + + protected void setTargetRef(FlowElement targetRef) { + this.targetRef = targetRef; + } + + protected String getSourceRefId() { + return sourceRefId; + } + + protected void setSourceRefId(String sourceRefId) { + this.sourceRefId = sourceRefId; + } + + protected String getTargetRefId() { + return targetRefId; + } + + protected void setTargetRefId(String targetRefId) { + this.targetRefId = targetRefId; + } + + public List> getParams() { + return params; + } + + public void setParams(List> params) { + this.params = params; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/GatwayConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/GatwayConverter.java new file mode 100644 index 00000000..d69ae9ba --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/GatwayConverter.java @@ -0,0 +1,20 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamReader; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("gatway") +public class GatwayConverter implements BaseConverter { + + @Override + public BaseElement process(XMLStreamReader xtr) { + return null; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessConverter.java new file mode 100644 index 00000000..c643d91b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessConverter.java @@ -0,0 +1,46 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import com.alibaba.fastjson.JSON; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import java.util.HashMap; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("process") +public class ProcessConverter implements BaseConverter { + String[] labels = new String[]{"id","name"}; + @Autowired + private Map converterMap; + + @Override + public BaseElement process(XMLStreamReader xtr) throws XMLStreamException { + ProcessElement element = new ProcessElement(); + setBaseLabel(element,xtr,labels); + while (xtr.hasNext()){ + if (XMLStreamConstants.START_ELEMENT == xtr.next()){ + String localName = xtr.getLocalName(); + element.getFlowElements().add((FlowElement) converterMap.get(localName).process(xtr)); + if (localName.equals("end")){ + break; + } + } + } + Map eleMap = element.getFlowElements().stream().collect(HashMap::new, (k, v) -> k.put(v.getId(), v), HashMap::putAll); + for (FlowElement flowElement : element.getFlowElements()) { + flowElement.setTargetRef(eleMap.get(flowElement.getTargetRefId())); + flowElement.setSourceRef(eleMap.get(flowElement.getSourceRefId())); + } + element.setStartElement(eleMap.get("start")); + return element; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessElement.java new file mode 100644 index 00000000..4174ddb4 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessElement.java @@ -0,0 +1,43 @@ +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.List; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class ProcessElement extends BaseElement { + + private StartElement startElement; + + private List flowElements = new ArrayList<>(); + + public List getFlowElements() { + return flowElements; + } + + public FlowElement flowId(String flowId){ + for (FlowElement flowElement : flowElements) { + if (flowElement.getId().equals(flowId)){ + return flowElement; + } + } + return null; + } + + public void setFlowElements(List flowElements) { + this.flowElements = flowElements; + } + + public StartElement getStartElement() { + return startElement; + } + + + public void setStartElement(BaseElement startElement) { + this.startElement = (StartElement)startElement; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartConverter.java new file mode 100644 index 00000000..fc47259f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartConverter.java @@ -0,0 +1,25 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamReader; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("start") +public class StartConverter implements BaseConverter { + String[] labels = new String[]{"id","name","targetRef"}; + @Override + public BaseElement process(XMLStreamReader xtr) { + StartElement element = new StartElement(); + setBaseLabel(element,xtr,labels); + element.setSourceRefId(xtr.getAttributeValue(null,"sourceRef")); + element.setTargetRefId(xtr.getAttributeValue(null,"targetRef")); + return element; + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartElement.java new file mode 100644 index 00000000..72804de5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartElement.java @@ -0,0 +1,9 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class StartElement extends FlowElement { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java index a279122d..b7630924 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/SchBaseTaskMapper.java @@ -1,8 +1,12 @@ package org.nl.wms.scheduler_manage.service.task.dao.mapper; +import org.apache.ibatis.annotations.Param; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; +import java.util.Map; + /** *

* 任务表 Mapper 接口 @@ -13,4 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SchBaseTaskMapper extends BaseMapper { + List getTaskInfo (@Param("map") Map map); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml index 7150f8ae..68475c66 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/mapper/xml/SchBaseTaskMapper.xml @@ -2,4 +2,33 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index 26bbbcb5..a204117e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -321,6 +321,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtStructattr::getStruct_id,struct_id) - ); + attrDao = iStIvtStructattrService.getById(struct_id); } if (ObjectUtil.isEmpty(attrDao.getStruct_code())) throw new BadRequestException("未找到仓位!"); @@ -346,7 +344,18 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue index 22120111..fda420da 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue @@ -223,6 +223,7 @@ import StructDiv from '@/views/wms/pub/StructDialog' import crudProductIn from '@/views/wms/storage_manage/product/productIn/productin' import crudPoint from '@/views/wms/scheduler_manage/point/point' import AddBox from '@/views/wms/storage_manage/product/productIn/AddBox' +import crudSectattr from '@/api/wms/basedata/st/sectattr' export default { name: 'DivDialog', @@ -285,7 +286,7 @@ export default { }, methods: { open() { - crudProductIn.getSect({ 'stor_id': this.storId }).then(res => { + crudSectattr.getSect({ 'stor_id': this.storId }).then(res => { this.sects = res.content }) const area_type = 'A1_RK01'