|
@@ -0,0 +1,177 @@
|
|
|
|
+package com.yr.warehouse.admin.web.controller;
|
|
|
|
+
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.yr.bluecat.common.entity.exception.MessageException;
|
|
|
|
+import com.yr.bluecat.common.entity.response.PageResult;
|
|
|
|
+import com.yr.bluecat.common.entity.response.Result;
|
|
|
|
+import com.yr.prism.auth.core.user.AdminUserInfo;
|
|
|
|
+import com.yr.warehouse.admin.component.auth.UserAccountComponent;
|
|
|
|
+import com.yr.warehouse.admin.component.auth.vo.OrgUserAccountVo;
|
|
|
|
+import com.yr.warehouse.admin.data.bo.WarehouseInfoPageBo;
|
|
|
|
+import com.yr.warehouse.admin.data.entity.WarehouseInfo;
|
|
|
|
+import com.yr.warehouse.admin.data.menu.WarehouseStatusEnum;
|
|
|
|
+import com.yr.warehouse.admin.data.vo.WarehouseInfoVo;
|
|
|
|
+import com.yr.warehouse.admin.server.WarehouseDeviceService;
|
|
|
|
+import com.yr.warehouse.admin.server.WarehouseInfoService;
|
|
|
|
+import com.yr.warehouse.admin.server.WarehouseProductService;
|
|
|
|
+import com.yr.warehouse.admin.web.common.BaseController;
|
|
|
|
+import com.yr.warehouse.admin.web.mapstruct.WarehouseMapStruct;
|
|
|
|
+import com.yr.warehouse.admin.web.request.*;
|
|
|
|
+import com.yr.warehouse.admin.web.response.WarehouseInfoSearchForPageResponse;
|
|
|
|
+import jakarta.annotation.Resource;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
+
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Objects;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 仓库管理
|
|
|
|
+ *
|
|
|
|
+ * @author miajio
|
|
|
|
+ * @since 2024-06-13
|
|
|
|
+ */
|
|
|
|
+@Slf4j
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/warehouse/manage")
|
|
|
|
+public class WarehouseController extends BaseController {
|
|
|
|
+ @Resource
|
|
|
|
+ private WarehouseInfoService warehouseInfoService;
|
|
|
|
+ @Resource
|
|
|
|
+ private WarehouseProductService warehouseProductService;
|
|
|
|
+ @Resource
|
|
|
|
+ private WarehouseDeviceService warehouseDeviceService;
|
|
|
|
+ @Resource
|
|
|
|
+ private UserAccountComponent userAccountComponent;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 仓库信息分页查询
|
|
|
|
+ * @param request 请求参数
|
|
|
|
+ * @param adminUserInfo 登录的用户信息
|
|
|
|
+ * @return 分页数据
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/page")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public PageResult<WarehouseInfoSearchForPageResponse> page(@RequestBody WarehouseSearchForPageRequest request, AdminUserInfo adminUserInfo) {
|
|
|
|
+ WarehouseInfoPageBo bo = WarehouseMapStruct.MAPSTRUCT.pageRequestToBo(request, adminUserInfo);
|
|
|
|
+ buildUserInfo(bo, adminUserInfo);
|
|
|
|
+
|
|
|
|
+ Page<WarehouseInfoVo> page = warehouseInfoService.warehouseInfoPage(bo);
|
|
|
|
+ PageResult<WarehouseInfoSearchForPageResponse> pageResult = PageResult.newPageResult(request.getPageNum(), request.getPageSize());
|
|
|
|
+ if (Objects.isNull(page) || Objects.isNull(page.getRecords()) || page.getRecords().isEmpty()) {
|
|
|
|
+ return pageResult.success(0, null);
|
|
|
|
+ }
|
|
|
|
+ List<WarehouseInfoSearchForPageResponse> warehouseInfoSearchForPageResponList = WarehouseMapStruct.MAPSTRUCT.toWarehouseInfoResponse(page.getRecords());
|
|
|
|
+ List<Long> userIds = warehouseInfoSearchForPageResponList.stream().map(WarehouseInfoSearchForPageResponse::getManagerId).toList();
|
|
|
|
+ if (userIds.isEmpty()) {
|
|
|
|
+ return pageResult.success(page.getTotal(), warehouseInfoSearchForPageResponList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Map<Long, OrgUserAccountVo> userInfoMap = userAccountComponent.getUserInfoByIds(userIds);
|
|
|
|
+ warehouseInfoSearchForPageResponList.forEach(warehouseInfoSearchForPageResponse -> {
|
|
|
|
+ OrgUserAccountVo orgUserAccountVo = userInfoMap.get(warehouseInfoSearchForPageResponse.getManagerId());
|
|
|
|
+ if (Objects.nonNull(orgUserAccountVo)) {
|
|
|
|
+ warehouseInfoSearchForPageResponse.setManagerName(orgUserAccountVo.getEmployeeName());
|
|
|
|
+ warehouseInfoSearchForPageResponse.setManagerPhone(orgUserAccountVo.getMobile());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return pageResult.success(page.getTotal(), warehouseInfoSearchForPageResponList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 当前用户所属运营商下的仓库列表-不分页
|
|
|
|
+ * @param adminUserInfo 登录用户信息
|
|
|
|
+ * @return 仓库列表
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/operatorList")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public Result<List<WarehouseInfoSearchForPageResponse>> operatorList(@RequestBody WarehouseOperatorListRequest request, AdminUserInfo adminUserInfo) {
|
|
|
|
+ WarehouseInfoPageBo bo = new WarehouseInfoPageBo();
|
|
|
|
+ bo.setPageNum(1);
|
|
|
|
+ bo.setPageSize(-1);
|
|
|
|
+ bo.setOperatorId(request.getOperatorId());
|
|
|
|
+ buildUserInfo(bo, adminUserInfo);
|
|
|
|
+
|
|
|
|
+ Page<WarehouseInfoVo> page = warehouseInfoService.warehouseInfoPage(bo);
|
|
|
|
+ return Result.success(WarehouseMapStruct.MAPSTRUCT.toWarehouseInfoResponse(page.getRecords()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 新增仓库
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/create")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public Result<Void> create(@Validated @RequestBody WarehouseAddRequest request, AdminUserInfo adminUserInfo) {
|
|
|
|
+ WarehouseInfo warehouseInfo = WarehouseMapStruct.MAPSTRUCT.addRequestToWarehouseInfo(request, adminUserInfo);
|
|
|
|
+ warehouseInfoService.create(warehouseInfo);
|
|
|
|
+ return Result.success(null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 修改仓库
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/update")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public Result<Void> update(@Validated @RequestBody WarehouseUpdateRequest request, AdminUserInfo adminUserInfo) {
|
|
|
|
+ // 获取原有的仓库信息
|
|
|
|
+ WarehouseInfo warehouseInfo = warehouseInfoService.getById(request.getId());
|
|
|
|
+ if (Objects.isNull(warehouseInfo)) {
|
|
|
|
+ throw new MessageException("仓库不存在");
|
|
|
|
+ }
|
|
|
|
+ warehouseInfo.setName(request.getName());
|
|
|
|
+ warehouseInfo.setManagerId(request.getManagerId());
|
|
|
|
+ warehouseInfo.setAddress(request.getAddress());
|
|
|
|
+ warehouseInfo = WarehouseMapStruct.MAPSTRUCT.setUpdateParams(warehouseInfo, adminUserInfo);
|
|
|
|
+ warehouseInfoService.update(warehouseInfo);
|
|
|
|
+ return Result.success(null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 删除仓库
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/delete")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public Result<Void> delete(@Validated @RequestBody WarehouseDeleteRequest request, AdminUserInfo adminUserInfo) {
|
|
|
|
+ WarehouseInfo warehouseInfo = warehouseInfoService.getById(request.getWarehouseInfoId());
|
|
|
|
+ if (null == warehouseInfo) {
|
|
|
|
+ return Result.fail("仓库不存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ boolean isEmptyWarehouse = warehouseProductService.warehouseIsEmpty(request.getWarehouseInfoId());
|
|
|
|
+ if (!isEmptyWarehouse) {
|
|
|
|
+ return Result.fail("当前仓库存在库存,无法删除");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int warehouseDeviceCount = warehouseDeviceService.countByWarehouseInfoId(request.getWarehouseInfoId());
|
|
|
|
+ if (warehouseDeviceCount > 0) {
|
|
|
|
+ return Result.fail("当前仓库存在设备,无法删除");
|
|
|
|
+ }
|
|
|
|
+ warehouseInfo = WarehouseMapStruct.MAPSTRUCT.setUpdateParams(warehouseInfo, adminUserInfo);
|
|
|
|
+ warehouseInfo.setStatus(WarehouseStatusEnum.DELETE.name());
|
|
|
|
+ warehouseInfoService.update(warehouseInfo);
|
|
|
|
+ return Result.success(null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 设置仓库状态
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/setting")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public Result<Void> setting(@Validated @RequestBody WarehouseStatusSettingRequest request, AdminUserInfo adminUserInfo) {
|
|
|
|
+ if (WarehouseStatusEnum.DELETE.equals(request.getStatus())) {
|
|
|
|
+ throw new MessageException("删除状态不可设置");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ WarehouseInfo warehouseInfo = warehouseInfoService.getById(request.getId());
|
|
|
|
+ if (Objects.isNull(warehouseInfo) || WarehouseStatusEnum.DELETE.name().equals(warehouseInfo.getStatus())) {
|
|
|
|
+ throw new MessageException("仓库不存在");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ warehouseInfo = WarehouseMapStruct.MAPSTRUCT.setUpdateParams(warehouseInfo, adminUserInfo);
|
|
|
|
+ warehouseInfo.setStatus(request.getStatus().name());
|
|
|
|
+ warehouseInfoService.update(warehouseInfo);
|
|
|
|
+ return Result.success(null);
|
|
|
|
+ }
|
|
|
|
+}
|