package com.skua.modules.system.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.skua.common.constant.CacheConstant; import com.skua.core.api.vo.Result; import com.skua.core.query.QueryGenerator; import com.skua.modules.system.entity.SysDictItem; import com.skua.modules.system.service.ISysDictItemService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; /** * 前端控制器 */ @RestController @RequestMapping("/sys/dictItem") @Slf4j public class SysDictItemController { @Autowired private ISysDictItemService sysDictItemService; /** * @功能:查询字典数据 * @param sysDictItem * @param pageNo * @param pageSize * @param req * @return */ @RequestMapping(value = "/list", method = RequestMethod.GET) public Result<IPage<SysDictItem>> queryPageList(SysDictItem sysDictItem, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { Result<IPage<SysDictItem>> result = new Result<IPage<SysDictItem>>(); QueryWrapper<SysDictItem> queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap()); queryWrapper.orderByAsc("sort_order"); Page<SysDictItem> page = new Page<SysDictItem>(pageNo, pageSize); IPage<SysDictItem> pageList = sysDictItemService.page(page, queryWrapper); result.setSuccess(true); result.setResult(pageList); return result; } /** * @功能:新增 * @param * @return */ @RequestMapping(value = "/add", method = RequestMethod.POST) @CacheEvict(value= CacheConstant.DICT_CACHE, allEntries=true) public Result<SysDictItem> add(@RequestBody SysDictItem sysDictItem) { Result<SysDictItem> result = new Result<SysDictItem>(); try { //设备缺陷管理的需求 if ("fbfd617b12f35deae56346724d1c155b".equals(sysDictItem.getDictId())){ sysDictItem.setItemValue(sysDictItem.getItemText()); } QueryWrapper<SysDictItem> sysDictItemQueryWrapper = new QueryWrapper<>(); sysDictItemQueryWrapper.eq("dict_id",sysDictItem.getDictId()); sysDictItemQueryWrapper.orderByDesc("sort_order"); sysDictItemQueryWrapper.last("limit 1"); SysDictItem serviceOne = sysDictItemService.getOne(sysDictItemQueryWrapper); if (serviceOne!=null) { sysDictItem.setSortOrder(serviceOne.getSortOrder() + 1); }else{ sysDictItem.setSortOrder(1); } sysDictItem.setCreateTime(new Date()); sysDictItemService.save(sysDictItem); result.success("保存成功!"); } catch (Exception e) { log.error(e.getMessage(),e); result.error500("操作失败"); } return result; } /** * @功能:编辑 * @param sysDictItem * @return */ @RequestMapping(value = "/edit", method = RequestMethod.PUT) @CacheEvict(value=CacheConstant.DICT_CACHE, allEntries=true) public Result<SysDictItem> edit(@RequestBody SysDictItem sysDictItem) { Result<SysDictItem> result = new Result<SysDictItem>(); SysDictItem sysdict = sysDictItemService.getById(sysDictItem.getId()); if(sysdict==null) { result.error500("未找到对应实体"); }else { sysDictItem.setUpdateTime(new Date()); boolean ok = sysDictItemService.updateById(sysDictItem); //TODO 返回false说明什么? if(ok) { result.success("编辑成功!"); } } return result; } /** * @return void * @Description 交换排序 * @Date 2021-05-08 16:53 * @Param [sysDictItem2, sysDictItem1] **/ private void exchangeSort(SysDictItem sysDictItem2, SysDictItem sysDictItem1) { Integer tmp = sysDictItem2.getSortOrder(); sysDictItem2.setSortOrder(sysDictItem1.getSortOrder()); sysDictItem1.setSortOrder(tmp); // sysDictItemService.updateBatchById(Lists.newArrayList(sysDictItem1, sysDictItem2)); } /** * @return * @功能:新增 */ @RequestMapping(value = "/orderBy", method = RequestMethod.POST) public Result<SysDictItem> orderBy(@RequestBody SysDictItem sysDictItem) { Result<SysDictItem> result = new Result<SysDictItem>(); try { String id = sysDictItem.getId(); QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>(); queryWrapper.orderByAsc("sort_order"); queryWrapper.eq("dict_id", sysDictItem.getDictId()); List<SysDictItem> list = sysDictItemService.list(queryWrapper); AtomicInteger index = new AtomicInteger(1); list.forEach(item -> item.setSortOrder(index.getAndIncrement())); for (int i = 0; i < list.size(); i++) { SysDictItem sysDictItem1 = list.get(i); if (id.equals(sysDictItem1.getId())) { if (sysDictItem.getCreateBy().equals("up")) { exchangeSort(list.get(i - 1), sysDictItem1); } else if (sysDictItem.getCreateBy().equals("down")) { exchangeSort(list.get(i + 1), sysDictItem1); } } } sysDictItemService.updateBatchById(list); result.success("保存成功!"); } catch (Exception e) { log.error(e.getMessage(), e); result.error500("操作失败"); } return result; } /** * @功能:删除字典数据 * @param id * @return */ @RequestMapping(value = "/delete", method = RequestMethod.DELETE) @CacheEvict(value=CacheConstant.DICT_CACHE, allEntries=true) public Result<SysDictItem> delete(@RequestParam(name="id",required=true) String id) { Result<SysDictItem> result = new Result<SysDictItem>(); SysDictItem joinSystem = sysDictItemService.getById(id); if(joinSystem==null) { result.error500("未找到对应实体"); }else { boolean ok = sysDictItemService.removeById(id); if(ok) { result.success("删除成功!"); } } return result; } /** * @功能:批量删除字典数据 * @param ids * @return */ @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) @CacheEvict(value=CacheConstant.DICT_CACHE, allEntries=true) public Result<SysDictItem> deleteBatch(@RequestParam(name="ids",required=true) String ids) { Result<SysDictItem> result = new Result<SysDictItem>(); if(ids==null || "".equals(ids.trim())) { result.error500("参数不识别!"); }else { this.sysDictItemService.removeByIds(Arrays.asList(ids.split(","))); result.success("删除成功!"); } return result; } }