diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java index 8dd3dc5c5..74d5d3e5f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.gson.JsonObject; import lombok.SneakyThrows; import org.nl.b_lms.pdm_manage.enums.SUBEnum; import org.nl.b_lms.sch.tasks.TwoExcepionalMoveTask; @@ -603,21 +604,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl, List> basicCheck(JSONObject whereJson) { // 任务表 WQLObject taskService = WQLObject.getWQLObject("sch_base_task"); - StIvtIostorinv mstDao = this.getById(whereJson.getLongValue("iostorinv_id")); - - //判断是否有正在执行中的任务 -// List arr = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "' and is_delete ='0'") -// .getResultJSONArray(0).toJavaList(JSONObject.class); -// -// if (ObjectUtil.isNotEmpty(arr)) { -// throw new BadRequestException("当前有出库任务正在执行,请稍后在试!"); -// } // 查询此明细所有未生成的分配明细 List disDaoList = stIvtIostorinvdisMapper.getNotCreateDis(whereJson); @@ -625,6 +616,20 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl arr2 = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status < '" + TaskStatusEnum.FINISHED.getCode() + "' and is_delete ='0'") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + Map> taskGroup = arr2.stream() + .collect(Collectors.groupingBy(row -> row.getString("task_group_id"))); + + if (taskGroup.size() >= 3) { + throw new BadRequestException("当前有三种不同规格的木箱正在出库,请稍后在试!"); + } + /* * 下发任务 * 1.根据木箱 长、宽、高、订单号、物料分组 @@ -633,29 +638,79 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl> compositeKey = row -> Arrays.asList(row.getString("box_length"), row.getString("box_width"), - row.getString("box_high"),row.getString("sale_order_name"), - row.getString("material_id") + row.getString("box_high"),row.getString("sale_order_name"), + row.getString("material_id") ); Map, List> groupingDisMap = disDaoList.stream().collect(Collectors.groupingBy(compositeKey, Collectors.toList())); + // 判断是否有异常任务 + String exceptionPointCode = exceptionPointCode(disDaoList); + if (ObjectUtil.isNotEmpty(exceptionPointCode)) { + throw new BadRequestException(exceptionPointCode); + } + return groupingDisMap; + } + + @Override + public void allSetPoint2(JSONObject whereJson) { + // 任务表 + WQLObject taskService = WQLObject.getWQLObject("sch_base_task"); + StIvtIostorinv mstDao = this.getById(whereJson.getLongValue("iostorinv_id")); + + Map, List> groupingDisMap = this.basicCheck(whereJson); + + // 所有分配明细集合 + List disTaskMangeList = new ArrayList<>(); + // 需移库集合 + List moveTaskMangeList = new ArrayList<>(); + // 需出库集合 + Map> outTaskMangeMap = new HashMap<>(); + for (List disLikeList : groupingDisMap.values()) { // 调用任务生成处理 - List taskMangeList = createTaskMange(disLikeList,mstDao.getIostorinv_id().toString()); - - // 创建任务并下发一组任务 - createTask(taskMangeList,disLikeList,whereJson.getString("point_code")); + JSONObject taskMange = createTaskMange(disLikeList, mstDao.getIostorinv_id().toString()); + moveTaskMangeList.addAll(taskMange.getJSONArray("move").toJavaList(JSONObject.class)); + // TODO -- + outTaskMangeMap.put(IdUtil.getStringId(), taskMange.getJSONArray("out").toJavaList(JSONObject.class)); + disTaskMangeList.addAll(disLikeList); + // TODO -- + // 创建任务 + // createTask(taskMange.getJSONArray("out").toJavaList(JSONObject.class),disLikeList,whereJson.getString("point_code")); } - // 下发任务:判断当前单据是否有正在执行的的任务 + // 下发移库任务 + if (ObjectUtil.isNotEmpty(moveTaskMangeList)) { + outBussManageService.createMove2(moveTaskMangeList); + } + + // TODO -- + // 创建出库任务 + try { + for (List outTaskMangeList : outTaskMangeMap.values()) { + createTask(outTaskMangeList,disTaskMangeList,whereJson.getString("point_code")); + } + } finally { + // 下发出库任务:判断当前单据是否有正在执行的的任务 + JSONArray disArr = taskService.query("table_fk = '" + mstDao.getIostorinv_id().toString() + "' and is_delete = '0' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "'") + .getResultJSONArray(0); + + if (ObjectUtil.isEmpty(disArr)) { + TwoOutTask twoOutTask = new TwoOutTask(); + twoOutTask.immediateNotifyAcs(null); + } + } + // TODO -- + + /* // 下发任务:判断当前单据是否有正在执行的的任务 JSONArray disArr = taskService.query("table_fk = '" + mstDao.getIostorinv_id().toString() + "' and is_delete = '0' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "'") .getResultJSONArray(0); if (ObjectUtil.isEmpty(disArr)) { TwoOutTask twoOutTask = new TwoOutTask(); twoOutTask.immediateNotifyAcs(null); - } + }*/ } @@ -1090,42 +1145,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl 生成任务的集合 */ - private List createTaskMange(List disLikeList, String iostorinv_id) { + private JSONObject createTaskMange(List disLikeList, String iostorinv_id) { // 仓位表 WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); @@ -1279,9 +1300,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl attrRowList, String iostorinv_id) { + @Transactional + public JSONObject ifBoxStop(JSONObject jsonAttr, List attrRowList, String iostorinv_id) { // 仓位表 WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); // 子卷包装关系表 @@ -1472,6 +1498,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl taskMangeList,List disLikeList, String point_code) { + public void createTask(List taskMangeList,List disLikeList, String point_code) { // 任务表 WQLObject taskService = WQLObject.getWQLObject("sch_base_task"); // 点位表 @@ -1661,12 +1688,20 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl row.getString("task_id").equals(json.getString("task_code"))) .collect(Collectors.toList()).get(0); @@ -1760,10 +1795,136 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl disLikeList = where.getJSONArray("disLikeList").toJavaList(JSONObject.class); + List taskList = where.getJSONArray("taskList").toJavaList(JSONObject.class); + + // 确定起点 + String start_device_code = json.getString("struct_code"); + + // 确定终点: 根据仓位所在排确定终点 + String end_device_code = ""; + if("1".equals(flag)){ + end_device_code = IsEndCode2(json); + }else{ + end_device_code = IsEndCode(json); + } + + // 过滤此仓位的分配明细 + List disDaoList = disLikeList.stream() + .filter(row -> row.getString("struct_code").equals(json.getString("struct_code"))) + .map(row -> JSONObject.parseObject(JSONObject.toJSONString(row), StIvtIostorinvdis.class)) + .collect(Collectors.toList()); + + // 判断是否是异常货位 + if (json.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("出库异常锁"))) { + /* + * 判断异常货位上的任务是否完成 + * 完成:生成完成任务的point_code2 当做起点的任务 + * 未完成:只更新分配明细状态为生成 + */ + JSONObject jsonTask = taskList.stream() + .filter(row -> row.getString("task_id").equals(json.getString("task_code"))) + .collect(Collectors.toList()).get(0); + + + // 完成 + if (jsonTask.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) { + start_device_code = jsonTask.getString("point_code2"); + is_auto_issue = IOSEnum.IS_SEND.code("否"); + } else { + // 未完成:只更新分配明细状态不更新任务id + disDaoList.forEach(row -> { + row.setWork_status(IOSEnum.WORK_STATUS.code("生成")); + row.setTask_id(Long.parseLong(task_group_id)); + }); + iStIvtIostorinvdisService.updateBatchById(disDaoList); + + // 标记任务 + jsonTask.put("is_auto_issue",IOSEnum.IS_SEND.code("否")); + taskService.update(jsonTask); + return; + } + } + + // 查询木箱对应的载具 + JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(jsonVeExt)) { + throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code")); + } + + // 生成任务 + JSONObject jsonTaskParam = new JSONObject(); + jsonTaskParam.put("task_type", "010711"); + jsonTaskParam.put("point_code1", start_device_code); + jsonTaskParam.put("point_code2", end_device_code); + jsonTaskParam.put("vehicle_code", json.getString("storagevehicle_code")); + jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code")); + jsonTaskParam.put("containerType", json.getString("storagevehicle_type")); + jsonTaskParam.put("task_group_id", task_group_id); + jsonTaskParam.put("is_auto_issue", is_auto_issue); + JSONObject request_param = new JSONObject(); + BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code")) + ); + request_param.put("containerType", boxDao.getVehicle_type()); + jsonTaskParam.put("request_param", request_param); + jsonTaskParam.put("table_fk", disDaoList.get(0).getIostorinv_id().toString()); + + if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")) || + json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("无"))) + { + jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("浅"))); + } else { + jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("深"))); + } + jsonTaskParam.put("request_param", jsonTaskParam); + + TwoOutTask twoOutTask = new TwoOutTask(); + String task_id = twoOutTask.createTask(jsonTaskParam); + + // 更新分配明细 + JSONObject jsonPoint = schBasePointService.query("point_code = '" + end_device_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonPoint)) { + throw new BadRequestException("出库点位不存在:"+end_device_code); + } + + disDaoList.forEach(row -> { + row.setWork_status(IOSEnum.WORK_STATUS.code("生成")); + row.setTask_id(Long.parseLong(task_id)); + row.setPoint_id(jsonPoint.getLongValue("point_id")); + }); + iStIvtIostorinvdisService.updateBatchById(disDaoList); + } + /** * 创建任务 * @param taskMangeList:仓位集合 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java index d72e02b3a..48ed6ad91 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java @@ -501,6 +501,278 @@ public class OutBussManageServiceImpl implements OutBussManageService { } + @Override + public void createMove2(List list) { + //子卷包装关系表 + WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation"); + + //物料表 + WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); + // 载具扩展属性表 + WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); + + // 获取子卷包装集合 + String vehilcle_in = list.stream() + .map(row -> row.getString("storagevehicle_code")) + .collect(Collectors.joining("','")); + + List subList = subTab.query("package_box_sn IN ('" + vehilcle_in + "')") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + // 查询物料集合 + String materialCode_in = subList.stream() + .map(row -> row.getString("product_name")) + .collect(Collectors.joining("','")); + + List materList = materTab.query("material_code IN ('" + materialCode_in + "')") + .getResultJSONArray(0).toJavaList(JSONObject.class); + + + for (int i = 0; i < list.size(); i++) { + JSONObject json = list.get(i); + // TODO-- + createForMove(json,subList,materList); + // TODO-- +/* + // 生成移库单传入参数 + JSONObject mapParam = new JSONObject(); + // 明细参数 + JSONArray table = new JSONArray(); + + mapParam.put("bill_type", IOSEnum.MOVE_TYPE.code("出库移库")); + mapParam.put("buss_type", IOSEnum.MOVE_TYPE.code("出库移库")); + mapParam.put("bill_status", IOSEnum.MOVE_STATUS.code("提交")); + mapParam.put("biz_date", DateUtil.today()); + mapParam.put("stor_code", json.getString("stor_code")); + mapParam.put("stor_id", json.getString("stor_id")); + mapParam.put("stor_name", json.getString("stor_name")); + mapParam.put("is_task", IOSEnum.IS_NOTANDYES.code("是")); + + // 过滤对应物料 + JSONObject jsonSub = subList.stream() + .filter(row -> row.getString("package_box_sn").equals(json.getString("storagevehicle_code"))) + .collect(Collectors.toList()).get(0); + + JSONObject jsonMater = materList.stream() + .filter(row -> row.getString("material_code").equals(jsonSub.getString("product_name"))) + .collect(Collectors.toList()).get(0); + + // 查询移入货位 + JSONObject moveParam = new JSONObject(); + moveParam.put("stor_id", json.getString("stor_id")); + moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId()); + moveParam.put("box_no", json.getString("storagevehicle_code")); + moveParam.put("material_id", jsonMater.getString("material_id")); + //根据木箱高度,判断入库仓位的高度、 + String height = ""; + String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); + String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue(); + // 查询木箱信息 + BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code")) + ); + + String box_high = boxDao.getBox_high(); + if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) { + height = "('1','2','3')"; + } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) { + height = "('2','3')"; + } else { + height = "('3')"; + } + moveParam.put("height", height); + moveParam.put("vehicle_type", boxDao.getVehicle_type()); + // 移库巷道 + moveParam.put("move_block_num",json.getString("block_num")); + + // TODO JSONObject jsonMove = inBussManageService.getOneStruct(moveParam); + JSONObject jsonMove = twoInBussManageService.getOneStruct(moveParam); + + // 查询移出货位的库存物料 + JSONObject jsonMoveIvt = WQL.getWO("ST_OUTIVT03") + .addParam("flag", "6") + .addParam("struct_id", json.getString("struct_id")) + .process().uniqueResult(0); + + // 移库单明细 + JSONObject jsonMoveDtl = new JSONObject(); + jsonMoveDtl.put("is_task", "2"); + jsonMoveDtl.put("turnout_sect_id", json.getLongValue("sect_id")); + jsonMoveDtl.put("turnout_sect_code", json.getString("sect_code")); + jsonMoveDtl.put("turnout_sect_name", json.getString("sect_name")); + jsonMoveDtl.put("turnout_struct_id", json.getLongValue("struct_id")); + jsonMoveDtl.put("turnout_struct_code", json.getString("struct_code")); + jsonMoveDtl.put("turnout_struct_name", json.getString("struct_name")); + jsonMoveDtl.put("material_id", jsonMoveIvt.getLongValue("material_id")); + jsonMoveDtl.put("pcsn", jsonMoveIvt.getString("pcsn")); + jsonMoveDtl.put("quality_scode", IOSEnum.QUALITY_SCODE.code("合格品")); + jsonMoveDtl.put("qty_unit_id", jsonMoveIvt.getLongValue("qty_unit_id")); + jsonMoveDtl.put("qty_unit_name", jsonMoveIvt.getString("unit_name")); + jsonMoveDtl.put("qty", jsonMoveIvt.getDoubleValue("canuse_qty")); + jsonMoveDtl.put("storagevehicle_code", json.getString("storagevehicle_code")); + jsonMoveDtl.put("turnin_sect_id", jsonMove.getLongValue("sect_id")); + jsonMoveDtl.put("turnin_sect_code", jsonMove.getString("sect_code")); + jsonMoveDtl.put("turnin_sect_name", jsonMove.getString("sect_name")); + jsonMoveDtl.put("turnin_struct_id", jsonMove.getLongValue("struct_id")); + jsonMoveDtl.put("turnin_struct_code", jsonMove.getString("struct_code")); + jsonMoveDtl.put("turnin_struct_name", jsonMove.getString("struct_name")); + + // 查询木箱对应的载具 + JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(jsonVeExt)) { + throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code")); + } + + // 生成任务 + JSONObject param2 = new JSONObject(); + param2.put("task_type", "010709"); + param2.put("vehicle_code", json.getString("storagevehicle_code")); + param2.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code")); + param2.put("point_code1", json.getString("struct_code")); + param2.put("point_code2", jsonMove.getString("struct_code")); + + HandMoveStorAcsTask handMoveStorAcsTask = new HandMoveStorAcsTask(); + String move_task_id = handMoveStorAcsTask.createTask(param2); + + // 回显移库明细任务id + jsonMoveDtl.put("task_id", move_task_id); + table.add(jsonMoveDtl); + + mapParam.put("tableData", table); + // 调用移库单新增方法 + handMoveStorService.insertDtl2(mapParam); + + // 下发任务 + handMoveStorAcsTask.immediateNotifyAcs(null);*/ + } + } + + /** + * 移库事务处理 + * @param json 移库仓位个体 + * @param subList 子卷包装关系集合 + * @param materList 物料集合 + */ + @Transactional + public void createForMove(JSONObject json, List subList, List materList) { + // 载具扩展属性表 + WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); + // 生成移库单传入参数 + JSONObject mapParam = new JSONObject(); + // 明细参数 + JSONArray table = new JSONArray(); + + mapParam.put("bill_type", IOSEnum.MOVE_TYPE.code("出库移库")); + mapParam.put("buss_type", IOSEnum.MOVE_TYPE.code("出库移库")); + mapParam.put("bill_status", IOSEnum.MOVE_STATUS.code("提交")); + mapParam.put("biz_date", DateUtil.today()); + mapParam.put("stor_code", json.getString("stor_code")); + mapParam.put("stor_id", json.getString("stor_id")); + mapParam.put("stor_name", json.getString("stor_name")); + mapParam.put("is_task", IOSEnum.IS_NOTANDYES.code("是")); + + // 过滤对应物料 + JSONObject jsonSub = subList.stream() + .filter(row -> row.getString("package_box_sn").equals(json.getString("storagevehicle_code"))) + .collect(Collectors.toList()).get(0); + + JSONObject jsonMater = materList.stream() + .filter(row -> row.getString("material_code").equals(jsonSub.getString("product_name"))) + .collect(Collectors.toList()).get(0); + + // 查询移入货位 + JSONObject moveParam = new JSONObject(); + moveParam.put("stor_id", json.getString("stor_id")); + moveParam.put("sect_id", RegionTypeEnum.TWO_BZC01.getId()); + moveParam.put("box_no", json.getString("storagevehicle_code")); + moveParam.put("material_id", jsonMater.getString("material_id")); + //根据木箱高度,判断入库仓位的高度、 + String height = ""; + String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue(); + String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue(); + // 查询木箱信息 + BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code")) + ); + + String box_high = boxDao.getBox_high(); + if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) { + height = "('1','2','3')"; + } else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) { + height = "('2','3')"; + } else { + height = "('3')"; + } + moveParam.put("height", height); + moveParam.put("vehicle_type", boxDao.getVehicle_type()); + // 移库巷道 + moveParam.put("move_block_num",json.getString("block_num")); + + // TODO JSONObject jsonMove = inBussManageService.getOneStruct(moveParam); + JSONObject jsonMove = twoInBussManageService.getOneStruct(moveParam); + + // 查询移出货位的库存物料 + JSONObject jsonMoveIvt = WQL.getWO("ST_OUTIVT03") + .addParam("flag", "6") + .addParam("struct_id", json.getString("struct_id")) + .process().uniqueResult(0); + + // 移库单明细 + JSONObject jsonMoveDtl = new JSONObject(); + jsonMoveDtl.put("is_task", "2"); + jsonMoveDtl.put("turnout_sect_id", json.getLongValue("sect_id")); + jsonMoveDtl.put("turnout_sect_code", json.getString("sect_code")); + jsonMoveDtl.put("turnout_sect_name", json.getString("sect_name")); + jsonMoveDtl.put("turnout_struct_id", json.getLongValue("struct_id")); + jsonMoveDtl.put("turnout_struct_code", json.getString("struct_code")); + jsonMoveDtl.put("turnout_struct_name", json.getString("struct_name")); + jsonMoveDtl.put("material_id", jsonMoveIvt.getLongValue("material_id")); + jsonMoveDtl.put("pcsn", jsonMoveIvt.getString("pcsn")); + jsonMoveDtl.put("quality_scode", IOSEnum.QUALITY_SCODE.code("合格品")); + jsonMoveDtl.put("qty_unit_id", jsonMoveIvt.getLongValue("qty_unit_id")); + jsonMoveDtl.put("qty_unit_name", jsonMoveIvt.getString("unit_name")); + jsonMoveDtl.put("qty", jsonMoveIvt.getDoubleValue("canuse_qty")); + jsonMoveDtl.put("storagevehicle_code", json.getString("storagevehicle_code")); + jsonMoveDtl.put("turnin_sect_id", jsonMove.getLongValue("sect_id")); + jsonMoveDtl.put("turnin_sect_code", jsonMove.getString("sect_code")); + jsonMoveDtl.put("turnin_sect_name", jsonMove.getString("sect_name")); + jsonMoveDtl.put("turnin_struct_id", jsonMove.getLongValue("struct_id")); + jsonMoveDtl.put("turnin_struct_code", jsonMove.getString("struct_code")); + jsonMoveDtl.put("turnin_struct_name", jsonMove.getString("struct_name")); + + // 查询木箱对应的载具 + JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'") + .uniqueResult(0); + if (ObjectUtil.isEmpty(jsonVeExt)) { + throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code")); + } + + // 生成任务 + JSONObject param2 = new JSONObject(); + param2.put("task_type", "010709"); + param2.put("vehicle_code", json.getString("storagevehicle_code")); + param2.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code")); + param2.put("point_code1", json.getString("struct_code")); + param2.put("point_code2", jsonMove.getString("struct_code")); + + HandMoveStorAcsTask handMoveStorAcsTask = new HandMoveStorAcsTask(); + String move_task_id = handMoveStorAcsTask.createTask(param2); + + // 回显移库明细任务id + jsonMoveDtl.put("task_id", move_task_id); + table.add(jsonMoveDtl); + + mapParam.put("tableData", table); + // 调用移库单新增方法 + handMoveStorService.insertDtl2(mapParam); + + // 下发任务 + handMoveStorAcsTask.immediateNotifyAcs(null); + } + @Override public void createMove2(List list, Consumer allTransactionConsumer) { //子卷包装关系表 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBussManageService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBussManageService.java index ee2d23362..3952c7f9c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBussManageService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/service/OutBussManageService.java @@ -67,6 +67,12 @@ public interface OutBussManageService { */ void createMove(List list); + /** + * 创建移库单2 + * @param list 需要创建移库单的仓位 + */ + void createMove2(List list); + /** * 创建移库单 * @param list 需要创建移库单的仓位 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java index 6b3f5ad22..885f911b9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java @@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.b_lms.sch.tasks.TwoSendOutTask; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvOutService; import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService; @@ -52,8 +51,6 @@ public class CheckOutBillController { private final OutBoxManageService outBoxManageService; - private final TwoSendOutTask twoSendOutTask; - @GetMapping @Log("查询出库单") @@ -211,11 +208,12 @@ public class CheckOutBillController { @PostMapping("/allSetPoint") @Log("一键设置") + public ResponseEntity allSetPoint(@RequestBody JSONObject whereJson) { if (whereJson.getString("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) { - iStIvtIostorinvOutService.allSetPoint(whereJson); + iStIvtIostorinvOutService.allSetPoint2(whereJson); } else { - checkOutBillService.allSetPointByNoTran(whereJson); + checkOutBillService.allSetPoint(whereJson); } return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @@ -440,20 +438,6 @@ public class CheckOutBillController { return new ResponseEntity<>(HttpStatus.OK); } - @PostMapping("/testSendOut2") - @Log("发货区测试2") - @SaIgnore - public ResponseEntity testSendOut2(@RequestBody JSONObject whereJson) { - //创建任务 - JSONObject task_jo = new JSONObject(); - task_jo.put("point_code1", whereJson.getString("point1")); - task_jo.put("point_code2", whereJson.getString("point2")); - task_jo.put("vehicle_code", whereJson.getString("vehicle_code")); - task_jo.put("task_type", "010708"); - twoSendOutTask.createTask(task_jo); - return new ResponseEntity<>(HttpStatus.OK); - } - @PostMapping("/testIn") @Log("申请入库") public ResponseEntity testIn(@RequestBody JSONObject whereJson) {