rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java
@@ -5,6 +5,7 @@ import com.vincent.rsf.server.api.entity.params.ContainerWaveParam; import com.vincent.rsf.server.api.entity.params.WavePickItemsParams; import com.vincent.rsf.server.api.service.PdaOutStockService; import com.vincent.rsf.server.manager.entity.TaskItem; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -14,6 +15,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; @Api(tags = "PDA出库操作接口") @RequestMapping("/pda") @@ -77,6 +79,26 @@ return pdaOutStockService.saveWavePick(containerWaveParam,getLoginUserId()); } @PreAuthorize("hasAuthority('manager:task:list')") @PostMapping("/task/items") @ApiOperation("查询出库任务拣货明细") public R getTaskItem(@RequestBody Map<String, String> params) { if (Objects.isNull(params.get("barcode"))) { return R.error("托盘码不能为空"); } return pdaOutStockService.getTaskItems(params); } @PreAuthorize("hasAuthority('manager:task:list')") @ApiOperation("波次出库单明细换绑") @PostMapping("/task/item/update") public R modifyTaskItem(@RequestBody List<TaskItem> items) { if (Objects.isNull(items) || items.isEmpty()) { return R.error("参数不能为空!!"); } return pdaOutStockService.modifyTaskItem(items); } } rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaOutStockService.java
@@ -4,6 +4,7 @@ import com.vincent.rsf.server.api.entity.dto.ContainerWaveDto; import com.vincent.rsf.server.api.entity.params.ContainerWaveParam; import com.vincent.rsf.server.api.entity.params.WavePickItemsParams; import com.vincent.rsf.server.manager.entity.TaskItem; import java.util.List; import java.util.Map; @@ -34,4 +35,20 @@ * @version 1.0 */ R wavePickItems(WavePickItemsParams items); /** * @author Ryan * @date 2025/11/19 * @description: 获取拣货明细 * @version 1.0 */ R getTaskItems(Map<String, String> params); /** * @author Ryan * @date 2025/11/19 * @description: 修改出库任务档明细票号 * @version 1.0 */ R modifyTaskItem(List<TaskItem> item); } rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -8,6 +8,7 @@ import com.vincent.rsf.server.api.entity.params.ContainerWaveParam; import com.vincent.rsf.server.api.entity.params.WavePickItemsParams; import com.vincent.rsf.server.api.service.PdaOutStockService; import com.vincent.rsf.server.common.utils.FieldsUtils; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.AsnExceStatus; import com.vincent.rsf.server.manager.enums.TaskStsType; @@ -335,6 +336,73 @@ return R.ok(); } /** * @author Ryan * @date 2025/11/19 * @description: 获取出库任务拣货明细 * @version 1.0 */ @Override public R getTaskItems(Map<String, String> params) { if (Objects.isNull(params.get("barcode"))) { throw new CoolException("拖盘码不能为空!!"); } List<Integer> integers = Arrays.asList(TaskType.TASK_TYPE_OUT.type, TaskType.TASK_TYPE_EMPITY_OUT.type, TaskType.TASK_TYPE_PICK_AGAIN_OUT.type, TaskType.TASK_TYPE_CHECK_OUT.type); Task task = taskService.getOne(new LambdaQueryWrapper<Task>() .in(Task::getTaskType, integers) .eq(Task::getBarcode, params.get("barcode")), false); if (Objects.isNull(task)) { return R.error("托盘所在任务不存在!!"); } List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); taskItems.forEach(taskItem -> { if (!Objects.isNull(taskItem.getFieldsIndex())) { Map<String, String> fields = FieldsUtils.getFields(taskItem.getFieldsIndex()); taskItem.setExtendFields(fields); } }); return R.ok().add(taskItems); } /** * @author Ryan * @date 2025/11/19 * @description: 修改出库任务档明细票号 * @version 1.0 */ @Override @Transactional(rollbackFor = Exception.class) public R modifyTaskItem(List<TaskItem> items) { if (Objects.isNull(items) || items.isEmpty()) { return R.error("参数不能为空!!"); } for (TaskItem item : items) { if (Objects.isNull(item.getCrushNo())) { continue; } TaskItem byId = taskItemService.getById(item.getId()); if (!Objects.isNull(byId.getFieldsIndex())) { Map<String, String> fields = FieldsUtils.getFields(byId.getFieldsIndex()); byId.setExtendFields(fields); } if (byId.getExtendFields().get("crushNo").equals(item.getCrushNo())) { continue; } FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>() .eq(FieldsItem::getValue, item.getCrushNo()) .last("limit 1")); if (Objects.isNull(fieldsItem)) { throw new CoolException("库存不存在!!"); } String uuid = fieldsItem.getUuid(); item.setFieldsIndex(uuid).setExtendFields(null); if (!taskItemService.updateById(item)) { throw new CoolException("任务明细修改失败"); } } return R.ok(); } /** * @author Ryan rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaitPakinController.java
@@ -123,7 +123,6 @@ throw new CoolException("该条码已被"+isBarcodeSta.getStationName()+"站绑定"); } } return waitPakinService.removePakin(Arrays.asList(ids)); } rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
@@ -179,6 +179,10 @@ @ApiModelProperty(value= "添加人员") private Long createBy; /**现品票号*/ @TableField(exist = false) private String crushNo; /** * 添加时间 */ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -514,7 +514,6 @@ throw new CoolException(e.getMessage()); } Double workQty = Math.round((orderItem.getWorkQty() + locItem.getOutQty()) * 100) / 100.0; orderItem.setUpdateBy(loginUserId).setUpdateTime(new Date()).setWorkQty(workQty);