123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- package com.ruoyi.web.controller.zhdd;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.util.ObjectUtil;
- 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.model.LoginUser;
- 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.UserUtil;
- 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.ResourceDetailStatic;
- 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.Set;
- 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("查询应急资源列表")
- @GetMapping("/list")
- @Security
- public TableDataInfo<ResourceVo> list(@Validated(QueryGroup.class) ResourceBo bo) {
- if (StrUtil.equals(bo.getNotNullFlag(), "1")) {
- // 查询存在物资的仓库
- List<Object> resourceIdExist = iResourceDetailService.queryExistResourceId(bo.getResourceType());
- bo.setResourceIds(resourceIdExist);
- } else if (StrUtil.equals(bo.getNotNullFlag(), "2")) {
- // 查询存在物资的仓库
- List<Object> resourceIdExist = iResourceDetailService.queryExistResourceId(bo.getResourceType());
- bo.setResourceNotIds(resourceIdExist);
- }
- if (StrUtil.isNotBlank(bo.getGoodsName())) {
- // 模糊查询有哪些仓库存在此物资
- List<Object> objects = iResourceDetailService.listObjs(new QueryWrapper<ResourceDetail>()
- .select("distinct resource_id")
- .eq(bo.getResourceType() != null, "resource_type", bo.getResourceType())
- .like("name", bo.getGoodsName()));
- if (objects != null && objects.size() > 0) {
- if (ObjectUtil.isNotEmpty(bo.getResourceIds())) {
- bo.setResourceIds(CollUtil.list(false, CollUtil.intersection(bo.getResourceIds(), objects)));
- } else {
- bo.setResourceIds(objects);
- }
- } else {
- TableDataInfo<ResourceVo> rspData = new TableDataInfo<>();
- rspData.setCode(HttpStatus.HTTP_OK);
- rspData.setMsg("查询成功");
- rspData.setRows(Collections.emptyList());
- rspData.setTotal(0);
- rspData.setPageNum(bo.getPageNum());
- rspData.setPageSize(bo.getPageSize());
- return rspData;
- }
- }
- // 临时增加处理只能看到该部门的数据
- LoginUser cacheLoginUser = UserUtil.getCacheLoginUser();
- // 查询角色如果包含admin的,直接查询全部
- Set<String> userRole = cacheLoginUser.getUserRole();
- boolean admin = CollUtil.containsAny(userRole, CollUtil.newHashSet("admin"));
- if (!admin) {
- bo.setManageUnitId(cacheLoginUser.getUser().getOrgId());
- }
- return iResourceService.queryPageList(bo);
- }
- @ApiOperation("移动端-模糊搜索物资")
- @GetMapping("/goodsList")
- @Security
- public TableDataInfo<ResourceVo> goodsList(@Validated(QueryGroup.class) ResourceBo bo) {
- bo.setResourceType(1);
- // 模糊查询有哪些仓库存在此物资
- List<Object> objects = iResourceDetailService.listObjs(new QueryWrapper<ResourceDetail>()
- .select("distinct resource_id")
- .like(StrUtil.isNotBlank(bo.getGoodsName()), "name", bo.getGoodsName()));
- List<ResourceVo> resourceDetail = new ArrayList<>();
- if (objects != null && objects.size() > 0) {
- bo.setResourceIds(objects);
- resourceDetail = iResourceService.queryPageList(bo).getRows();
- }
- if (StrUtil.isNotBlank(bo.getGoodsName())) {
- List<ResourceVo> resourceList = iResourceService.listVo(Wrappers.<Resource>lambdaQuery()
- .eq(Resource::getResourceType, 1)
- .like(Resource::getName, bo.getGoodsName())
- .notIn(CollUtil.isNotEmpty(objects), Resource::getId, objects));
- resourceDetail = CollUtil.unionAll(resourceDetail, resourceList);
- }
- TableDataInfo<ResourceVo> rspData = new TableDataInfo<>();
- rspData.setCode(HttpStatus.HTTP_OK);
- rspData.setMsg("查询成功");
- rspData.setRows(resourceDetail);
- rspData.setTotal(resourceDetail.size());
- // rspData.setPageSize(bo.getPageSize());
- // rspData.setPageNum(bo.getPageNum());
- return rspData;
- }
- /**
- * 导出应急资源列表
- */
- @ApiOperation("导出应急资源列表")
- @Log(title = "应急资源", businessType = BusinessType.EXPORT)
- @GetMapping("/export")
- public void export(@Validated ResourceBo bo, HttpServletResponse response) {
- List<ResourceVo> list = iResourceService.queryList(bo);
- ExcelUtil.exportExcel(list, "应急资源", ResourceVo.class, response);
- }
- /**
- * 获取应急资源详细信息
- */
- @ApiOperation("获取应急资源详细信息")
- // @PreAuthorize("@ss.hasPermi('zhdd:resource:query')")
- @GetMapping("/{id}")
- public AjaxResult<ResourceVo> 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<Void> add(@Validated(AddGroup.class) @RequestBody ResourceBo bo) {
- // // 临时增加处理只能看到该部门的数据
- // GatewayUser user = getGateWayUser();
- // if (user != null) {
- // bo.setDeptId(user.getOrgId());
- // }
- // 判断名称是否存在
- ResourceVo voOne = iResourceService.getVoOne(Wrappers.<Resource>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<Void> edit(@Validated(EditGroup.class) @RequestBody ResourceBo bo) {
- // 判断名称是否存在
- ResourceVo resourceVo = iResourceService.queryById(bo.getId());
- if (bo.getResourceType() != 3 && !resourceVo.getName().equals(bo.getName())) {
- ResourceVo voOne = iResourceService.getVoOne(Wrappers.<Resource>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<Void> remove(@NotEmpty(message = "主键不能为空")
- @PathVariable String[] ids) {
- return toAjax(iResourceService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
- }
- @ApiOperation("查询所有应急资源信息")
- @GetMapping("/location")
- public AjaxResult<Map<String, List<ResourceVo>>> queryResourceLocation(ResourceBo bo) {
- List<ResourceVo> list = iResourceService.queryList(bo);
- // 查询物资数量
- List<ResourceDetailStatic> resourceDetailStatics = iResourceDetailService.queryResourceTotalNum();
- Map<String, Integer> collect = resourceDetailStatics.stream().collect(Collectors.toMap(ResourceDetailStatic::getResourceId, ResourceDetailStatic::getNum));
- for (ResourceVo resourceVo : list) {
- if (resourceVo.getResourceType() == 1 || resourceVo.getResourceType() == 2) {
- Integer integer = collect.get(resourceVo.getId());
- resourceVo.setNum(integer == null ? 0 : integer);
- } else if (resourceVo.getResourceType() == 3) {
- resourceVo.setNum(collect.get(resourceVo.getId() + "车辆") == null ? 0 : collect.get(resourceVo.getId() + "车辆"));
- resourceVo.setShipNum(collect.get(resourceVo.getId() + "船舶") == null ? 0 : collect.get(resourceVo.getId() + "船舶"));
- }
- }
- Map<Integer, List<ResourceVo>> collect2 = list.stream().collect(Collectors.groupingBy(ResourceVo::getResourceType, Collectors.mapping(a -> a, Collectors.toList())));
- Map<String, List<ResourceVo>> result = new HashMap<>();
- result.put("应急仓库", CollUtil.defaultIfEmpty(collect2.get(1), new ArrayList<>()));
- result.put("应急队伍", CollUtil.defaultIfEmpty(collect2.get(2), new ArrayList<>()));
- result.put("应急车队", CollUtil.defaultIfEmpty(collect2.get(3), new ArrayList<>()));
- return AjaxResult.success(result);
- }
- }
|