rsf-admin/src/page/orders/check/CheckOrderList.jsx
@@ -236,7 +236,7 @@ const notify = useNotify(); const refresh = useRefresh(); const cancelOrder = async () => { const { data: { code, data, msg } } = await request.get(`/outStock/cancel/${record?.id}`); const { data: { code, data, msg } } = await request.get(`/check/cancel/${record?.id}`); if (code === 200) { notify(msg); refresh() rsf-admin/src/page/orders/check/CheckOrderSiteDialog.jsx
@@ -22,7 +22,7 @@ const getSiteNos = async () => { const { data: { code, data, msg } } = await request.get('/outStock/tasks/sites'); const { data: { code, data, msg } } = await request.get('/check/tasks/sites'); if (code === 200) { setSiteNos(data); } else { rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java
@@ -11,9 +11,10 @@ import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; import com.vincent.rsf.server.manager.entity.WkOrder; import com.vincent.rsf.server.manager.entity.WkOrderItem; import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate; import com.vincent.rsf.server.manager.enums.CheckExceStatus; import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.manager.service.CheckOrderService; import com.vincent.rsf.server.system.constant.SerialRuleCode; @@ -28,6 +29,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @Api("盘点") @RestController @@ -95,7 +97,19 @@ @OperationLog("Delete 字典数据集") @PostMapping("/check/remove/{ids}") public R remove(@PathVariable Long[] ids) { if (!checkOrderService.removeByIds(Arrays.asList(ids))) { if (Objects.isNull(ids)) { throw new RuntimeException("盘点单ID不能为空!!"); } List<WkOrder> wkOrders = checkOrderService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, Arrays.asList(ids))); if (wkOrders.isEmpty()) { return R.ok(); } List<WkOrder> orders = wkOrders.stream().filter(order -> order.getExceStatus().equals(CheckExceStatus.CHECK_ORDER_STATUS_UN_EXCE.val)).collect(Collectors.toList()); if (orders.isEmpty()) { return R.ok(); } List<Long> orderIds = orders.stream().map(WkOrder::getId).collect(Collectors.toList()); if (!checkOrderService.removeByIds(orderIds)) { return R.error("Delete Fail"); } return R.ok("Delete Success").add(ids); @@ -138,7 +152,7 @@ } @PostMapping("/check/items/save") @ApiOperation("保存主单及明细") @ApiOperation("保存盘点单及明细") @PreAuthorize("hasAuthority('manager:check:save')") public R saveOutStock(@RequestBody AsnOrderAndItemsParams params) throws Exception { if (Objects.isNull(params)) { @@ -147,6 +161,42 @@ return checkOrderService.saveCheckOrder(params, getLoginUserId()); } @ApiOperation("盘点单信息修改") @PostMapping("/check/items/update") @PreAuthorize("hasAuthority('manager:check:update')") public R orderAndrItemUpdate(@RequestBody AsnOrderAndItemsParams params) throws Exception { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); } return checkOrderService.updateOrderItem(params, getLoginUserId()); } @PostMapping("/outStock/order/getOutTaskItems") @ApiOperation("盘点出库预览") @PreAuthorize("hasAuthority('manager:outStock:list')") public R getOrderOutTaskItem(@RequestBody OrderOutTaskParam param) { if (Cools.isEmpty(param)) { return R.error("参数不能为空"); } return checkOrderService.genCheckPreview(param); } /** * 获取出库站点 * @return */ @GetMapping("/check/tasks/sites") @ApiOperation("获取盘点出库口") @PreAuthorize("hasAuthority('manager:check:list')") public R getSiteNos() { return checkOrderService.getSiteNos(); } /** * @author Ryan * @description 下载模板 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; import com.vincent.rsf.server.manager.entity.WkOrder; import org.springframework.web.multipart.MultipartFile; @@ -15,4 +16,10 @@ R saveCheckOrder(AsnOrderAndItemsParams params, Long loginUserId); R cancelCheckOrder(Long id); R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId); R getSiteNos(); R genCheckPreview(OrderOutTaskParam param); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
@@ -9,16 +9,15 @@ import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; import com.vincent.rsf.server.manager.entity.DeviceSite; import com.vincent.rsf.server.manager.entity.WkOrder; import com.vincent.rsf.server.manager.entity.WkOrderItem; import com.vincent.rsf.server.manager.entity.Matnr; import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate; import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.mapper.CheckOrderMapper; import com.vincent.rsf.server.manager.service.AsnOrderItemService; import com.vincent.rsf.server.manager.service.CheckOrderItemService; import com.vincent.rsf.server.manager.service.CheckOrderService; import com.vincent.rsf.server.manager.service.MatnrService; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import org.apache.commons.lang3.StringUtils; @@ -40,6 +39,8 @@ private CheckOrderItemService checkOrderItemService; @Autowired private AsnOrderItemService asnOrderItemService; @Autowired private DeviceSiteService deviceSiteService; /** * @author Ryan @@ -165,6 +166,60 @@ } /** * @param * @return * @author Ryan * @description 修改主单及明细 * @time 2025/4/29 13:47 */ @Override public R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) { WkOrder orders = params.getOrders(); if (Objects.isNull(orders)) { throw new CoolException("主单信息不能为空!!"); } if (Objects.isNull(orders.getId())) { throw new CoolException("数据错误:单据ID不能为空!!"); } if (!this.updateById(orders)) { throw new CoolException("主单修改失败!!"); } if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) { throw new CoolException("明细参数不能为空!!"); } try { svaeOrUpdateOrderItem(params, loginUserId); } catch (Exception e) { throw new CoolException(e.getMessage()); } return R.ok(); } /** * @author Ryan * @date 2025/7/16 * @description: 获取盘点出入站口 * @version 1.0 */ @Override public R getSiteNos() { List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type); List<DeviceSite> sites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>().in(DeviceSite::getType, list).groupBy(DeviceSite::getSite)); return R.ok().add(sites); } /** * @author Ryan * @date 2025/7/16 * @description: 盘点出库预览 * @version 1.0 */ @Override public R genCheckPreview(OrderOutTaskParam param) { return null; } /** * @author Ryan * @date 2025/7/16 * @description: 取消盘点单据 @@ -218,6 +273,4 @@ throw new CoolException("计划收货数量修改失败!!"); } } }