package com.ruoyi.web.controller.zhdd; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.Security; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.GatewayUser; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.QueryGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.zhdd.domain.Resource; import com.ruoyi.zhdd.domain.ResourceDetail; import com.ruoyi.zhdd.domain.bo.ResourceBo; import com.ruoyi.zhdd.domain.vo.ResourceVo; import com.ruoyi.zhdd.service.IResourceDetailService; import com.ruoyi.zhdd.service.IResourceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 应急资源Controller * * @author xintong * @date 2021-10-27 */ @Validated @Api(value = "应急资源控制器", tags = {"应急资源管理"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/zhdd/resource") public class ResourceController extends BaseController { private final IResourceService iResourceService; private final IResourceDetailService iResourceDetailService; /** * 查询应急资源列表 */ @ApiOperation("查询应急资源列表") // @PreAuthorize("@ss.hasPermi('zhdd:resource:list')") @GetMapping("/list") @Security public TableDataInfo list(@Validated(QueryGroup.class) ResourceBo bo) { if (bo.getResourceType() != null && bo.getResourceType() == 1 && StrUtil.isNotBlank(bo.getGoodsName())) { // 模糊查询有哪些仓库存在此物资 List objects = iResourceDetailService.listObjs(new QueryWrapper() .select("distinct resource_id") .like("name", bo.getGoodsName())); if (objects != null && objects.size() > 0) { bo.setResourceIds(objects); } else { TableDataInfo rspData = new TableDataInfo<>(); rspData.setCode(HttpStatus.HTTP_OK); rspData.setMsg("查询成功"); rspData.setRows(Collections.emptyList()); rspData.setTotal(0); return rspData; } } // 临时增加处理只能看到该部门的数据 GatewayUser user = getGateWayUser(); if (user != null && StrUtil.isNotBlank(user.getOrgId())) { List deptIds = new ArrayList<>(); deptIds.add(user.getOrgId()); bo.setDeptIds(deptIds); } return iResourceService.queryPageList(bo); } /** * 导出应急资源列表 */ @ApiOperation("导出应急资源列表") @Log(title = "应急资源", businessType = BusinessType.EXPORT) @GetMapping("/export") public void export(@Validated ResourceBo bo, HttpServletResponse response) { List list = iResourceService.queryList(bo); ExcelUtil.exportExcel(list, "应急资源", ResourceVo.class, response); } /** * 获取应急资源详细信息 */ @ApiOperation("获取应急资源详细信息") // @PreAuthorize("@ss.hasPermi('zhdd:resource:query')") @GetMapping("/{id}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") String id) { return AjaxResult.success(iResourceService.queryById(id)); } /** * 新增应急资源 */ @ApiOperation("新增应急资源") // @PreAuthorize("@ss.hasPermi('zhdd:resource:add')") @Log(title = "应急资源", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @Security public AjaxResult add(@Validated(AddGroup.class) @RequestBody ResourceBo bo) { // // 临时增加处理只能看到该部门的数据 // GatewayUser user = getGateWayUser(); // if (user != null) { // bo.setDeptId(user.getOrgId()); // } // 判断名称是否存在 ResourceVo voOne = iResourceService.getVoOne(Wrappers.lambdaQuery().eq(Resource::getName, bo.getName())); if (voOne != null) { return AjaxResult.error("名称已存在!"); } return toAjax(iResourceService.insertResource(bo) ? 1 : 0); } /** * 修改应急资源 */ @ApiOperation("修改应急资源") // @PreAuthorize("@ss.hasPermi('zhdd:resource:edit')") @Log(title = "应急资源", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() @Security public AjaxResult edit(@Validated(EditGroup.class) @RequestBody ResourceBo bo) { // 判断名称是否存在 ResourceVo resourceVo = iResourceService.queryById(bo.getId()); if (!resourceVo.getName().equals(bo.getName())) { ResourceVo voOne = iResourceService.getVoOne(Wrappers.lambdaQuery().eq(Resource::getName, bo.getName())); if (voOne != null) { return AjaxResult.error("名称已存在!"); } } return toAjax(iResourceService.updateResource(bo) ? 1 : 0); } /** * 删除应急资源 */ @ApiOperation("删除应急资源") // @PreAuthorize("@ss.hasPermi('zhdd:resource:remove')") @Log(title = "应急资源", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") @Security public AjaxResult remove(@NotEmpty(message = "主键不能为空") @PathVariable String[] ids) { return toAjax(iResourceService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); } @ApiOperation("查询所有应急资源信息") @GetMapping("/location") public AjaxResult>> queryResourceLocation(ResourceBo bo) { List list = iResourceService.queryList(bo); Map> collect = list.stream().collect(Collectors.groupingBy(ResourceVo::getResourceType, Collectors.mapping(a -> a, Collectors.toList()))); Map> result = new HashMap<>(); result.put("应急仓库", CollUtil.defaultIfEmpty(collect.get(1), new ArrayList<>())); result.put("应急队伍", CollUtil.defaultIfEmpty(collect.get(2), new ArrayList<>())); result.put("应急车队", CollUtil.defaultIfEmpty(collect.get(3), new ArrayList<>())); return AjaxResult.success(result); } }