houjie
2023-08-23 b41bcab1dfceb7d452cb0ffd1158f299ba736cd3
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/base/controller/UnitController.java
@@ -1,17 +1,29 @@
package org.jeecg.modules.base.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.base.entity.Unit;
import org.jeecg.modules.base.entity.UnitConversion;
import org.jeecg.modules.base.service.IUnitConversionService;
import org.jeecg.modules.base.service.IUnitService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@@ -24,98 +36,131 @@
@RestController
@RequestMapping("/base/unit")
@Slf4j
public class UnitController {
public class UnitController extends JeecgController<Unit, IUnitService> {
    @Resource
    private IUnitService momUnitService;
    @Resource
    private IUnitConversionService momUnitConversionService;
    @Autowired
    private IUnitService unitService;
    /**
     * 查询数据 根据单位分类id查询计量单位列表
     * @author cj
     * @param unitCategoryId
     * 分页列表查询
     *
     * @param
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @GetMapping(value="/getListByUnitCategoryId")
    public Result<List<Unit>> getListByUnitCategoryId(String unitCategoryId){
        Result<List<Unit>> resule = new Result<>();
        List<Unit> list = momUnitService.getListByUnitCategoryId(unitCategoryId);
        resule.setResult(list);
        return  resule;
    }
    /**
     * 增加数据 添加和编辑计量单位信息
     * @author cj
     * @param momUnit
     * @return
     */
    @PostMapping(value = "/addMomUnit")
    public Result<Unit> addMomUnit(@RequestBody Unit momUnit){
        Result<Unit> result = new Result<>();
        try{
            momUnit.setDelFlag("0");
            momUnitService.saveOrUpdate(momUnit);
            result.success("操作成功");
        }catch (Exception e){
            result.error500("操作失败");
        }
        return result;
    @ApiOperation(value = "计量单位-分页列表查询", notes = "计量单位-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<Unit>> queryPageList(Unit unit,
                                             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                             HttpServletRequest req) {
        QueryWrapper<Unit> queryWrapper = QueryGenerator.initQueryWrapper(unit, req.getParameterMap());
        Page<Unit> page = new Page<Unit>(pageNo, pageSize);
        IPage<Unit> pageList = unitService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * 删除数据 删除选中的计量单位信息
     * @author cj
     * 添加
     *
     * @param unit
     * @return
     */
    @AutoLog(value = "计量单位-添加")
    @ApiOperation(value = "计量单位-添加", notes = "计量单位-添加")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody Unit unit) {
        unitService.save(unit);
        return Result.OK("添加成功!");
    }
    /**
     * 编辑
     *
     * @param unit
     * @return
     */
    @AutoLog(value = "计量单位-编辑")
    @ApiOperation(value = "计量单位-编辑", notes = "计量单位-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    public Result<String> edit(@RequestBody Unit unit) {
        unitService.updateById(unit);
        return Result.OK("编辑成功!");
    }
    /**
     * 通过id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "计量单位-通过id删除")
    @ApiOperation(value = "计量单位-通过id删除", notes = "计量单位-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
        unitService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    @DeleteMapping(value = "/deleteMomUnit")
    public Result<Unit> deleteMomUnit(@RequestParam String ids){
        Result<Unit> result = new Result<>();
        if(oConvertUtils.isEmpty(ids)) {
            result.error500("未选中计量单位!");
        }else {
            String[] ls = ids.split(",");
            List<UnitConversion> list = new ArrayList<>();
            List<Long> idList = new ArrayList<>();
            List<String> nameList = new ArrayList<>();
            for (String id : ls) {
                //根据id查询是否有换算信息
                LambdaQueryWrapper<UnitConversion> queryWrapper = new LambdaQueryWrapper<>();
                queryWrapper.eq(UnitConversion::getUnitId,id);
                list = momUnitConversionService.list(queryWrapper);
                if(list.size()==0){
                    idList.add(Long.parseLong(id) );
                }else{
                    LambdaQueryWrapper<Unit> queryWrapper1 = new LambdaQueryWrapper<>();
                    queryWrapper1.eq(Unit::getId,id);
                    nameList.add(momUnitService.getOne(queryWrapper1).getName());
                }
            }
            if (idList.size() > 0) {
                momUnitService.removeByIds(idList);
                if (ls.length == idList.size()) {
                    result.success("删除成功!");
                } else {
                    result.error500("部分删除成功!("+nameList+"中含有计量单位换算信息无法删除!)");
                }
            }else  {
                result.error500("选择的计量单位都含有计量单位换算信息,无法删除!");
            }
        }
        return result;
    @AutoLog(value = "计量单位-批量删除")
    @ApiOperation(value = "计量单位-批量删除", notes = "计量单位-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        List<String> stringList = Arrays.asList(ids.split(","));
        unitService.removeBatchByIds(stringList);
        return Result.OK("批量删除成功!");
    }
    /**
     * 查询目标计量单位树结构
     * @author cj
     * 通过id查询
     *
     * @param id
     * @return
     */
    @GetMapping(value = "/getTreeList")
    public Result<List<Unit>> getTreeList(){
        Result<List<Unit>> result = new Result<>();
        List<Unit> list = momUnitService.getTreeList();
        result.setResult(list);
        return result;
    //@AutoLog(value = "精度参数-通过id查询")
    @ApiOperation(value = "计量单位-通过id查询", notes = "计量单位-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<Unit> queryById(@RequestParam(name = "id", required = true) String id) {
        Unit unit = unitService.getById(id);
        if (unit == null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(unit);
    }
    /**
     * 导出excel
     *
     * @param request
     * @param unit
     */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, Unit unit) {
        return super.exportXls(request, unit, Unit.class, "计量单位");
    }
    /**
     * 通过excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, Unit.class);
    }