diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pick/PdaPickController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pick/PdaPickController.java index dac79f33..068a94da 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pick/PdaPickController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pick/PdaPickController.java @@ -84,7 +84,7 @@ public class PdaPickController { //生成拣选明细:传主表信息 Assert.noNullElements(new Object[]{pickTask,pickTask.getId(),pickTask.getPick_vehicle_23(),pickTask.getPick_vehicle_13(),pickTask.getIs_move(),pickTask.getPoint_code(),pickTask.getProduct_area(),pickTask.getStor_code()},"拣选确认异常,请求参数不能为空"); RedissonUtils.lock(() -> { - pickingService.pdaPick(pickTask); + pickingService.pdaPickTask(pickTask); }, pickTask.getCode()+"手持拣选操作", null); return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java index c208ab61..9b218c47 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/pick/service/PickingService.java @@ -34,6 +34,7 @@ import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -296,14 +297,24 @@ public class PickingService { } } + + /** + * 手持拣选功能 + * @param pickTask + */ + public void pdaPickTask(PickTask pickTask) { + PickingService pickingService = SpringContextHolder.getBean(PickingService.class); + FlowContinueEvent continueEvent = pickingService.pdaPick(pickTask); + BussEventMulticaster.Publish(continueEvent); + } @Transactional - public void pdaPick(PickTask pickTask) { + public FlowContinueEvent pdaPick(PickTask pickTask) { PmFormData mst = iFormDataService.getById(pickTask.getId()); if (mst==null||mst.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))||mst.getStatus().equals(StatusEnum.FORM_STATUS.code("取消"))){ throw new BadRequestException("拣选作业不存在或已完成"); - } + }//只能有一条明细 List dtls = iFormDataService.getByParentId(pickTask.getId()); - if (CollectionUtils.isEmpty(dtls)||dtls.size()>0){ + if (CollectionUtils.isEmpty(dtls)||dtls.size()>1){ throw new BadRequestException("拣选作业明细数据异常"); } PmFormData dtl = dtls.get(0); @@ -342,7 +353,66 @@ public class PickingService { out.put("form_data",outof); array.add(in); array.add(out); + //更新主要单据执行中 + mst.setStatus(StatusEnum.FORM_STATUS.code("已分配")); + iFormDataService.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("已分配")) + .set("update_time",DateUtil.now()) + .set("update_name",SecurityUtils.getCurrentNickName()) + .eq("id",pickTask.getId()) + ); this.savePickTask(array); - this.taskOpen((JSONObject) JSONObject.toJSON(mst)); + if (StringUtils.isEmpty(mst.getProc_inst_id())) { + throw new BadRequestException("下发失败:当前单据不存在流程实例id"); + } + if (!mst.getStatus().equals(StatusEnum.FORM_STATUS.code("已分配"))) { + throw new BadRequestException("下发失败:当前单据未分配或者一下发"); + } + JSONObject mstJ = (JSONObject) JSON.toJSON(mst); + ExecutionDto dto = new ExecutionDto(); + dto.setForm_id(mst.getId()); + dto.setForm_type(mst.getForm_type()); + dto.setSource_form_type(mst.getSource_form_type()); + dto.setSource_form_id(mst.getSource_form_id()); + dto.setT(mstJ); + dto.setItem(packageT(mstJ, "id")); + JSONObject form_data = mstJ.getJSONObject("form_data"); + String platform = form_data.getString("point_code"); + String sourceVehicle = mstJ.getString("vehicle_code"); + List> converys = new ArrayList<>(); + for (ExecutionDto executionDto : dto.getItem()) { + for (ExecutionDto executionDto1 : executionDto.getItem()) { + JSONObject dis = executionDto1.getT(); + if (!"false".equals(dis.getJSONObject("form_data").getString("is_move"))) { + String vehicle_code = dis.getString("vehicle_code"); + BmVehicleInfo vehicleInfo = iBmVehicleInfoService.getOne(new QueryWrapper().eq("vehicle_code", vehicle_code)); + if (vehicleInfo==null || vehicleInfo.getH()==null ||vehicleInfo.getH().intValue()<1){ + throw new BadRequestException(vehicle_code+"载具信息不存在,请确认载具基础表载具及高度信息是否完整"); + } + if (vehicle_code.equals(sourceVehicle)) { + converys.add(MapOf.of("c",platform,"v",vehicleInfo.getH())); + } else { + converys.add(MapOf.of("c",Pick_Convery.get(platform),"v",vehicleInfo.getH())); + } + } + } + } + System.out.println("拣选平台输送线分配信息"+converys); + for (Map convery : converys) { + wmsToAcsService.toCommand((String)convery.get("c"), "1",(Integer) convery.get("v")); + } + + PickingService pickingService = SpringContextHolder.getBean(this.getClass()); + pickingService.disGroup(mst); + iFormDataService.update(new UpdateWrapper() + .set("status",StatusEnum.FORM_STATUS.code("执行中")) + .eq("id",mst.getId())); + //只有透传才有vehicle_code参数否则只有inst_id + FlowContinueEvent continueEvent = new FlowContinueEvent(mst.getProc_inst_id(), (PermeateFunction) (inst_id, vehicle_code) -> iMdPbVehicleMaterService.update(new UpdateWrapper() + .set("proc_inst_id",inst_id) + .eq("is_delete",false) + .eq("vehicle_code",vehicle_code)), null) + .setDto(dto); + return continueEvent; } }