Newer
Older
casic-metering / casic-metering-api / src / main / java / com / casic / missiles / controller / MeterTraceSupplierController.java
wangpeng on 5 Dec 2022 5 KB flowable集成
package com.casic.missiles.controller;

import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.base.controller.ExportController;
import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.core.page.PageInfoBT;
import com.casic.missiles.dto.IdDTO;
import com.casic.missiles.dto.IdsDTO;
import com.casic.missiles.dto.ReturnDTO;
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.meter.TraceSupplierDetailResponse;
import com.casic.missiles.dto.meter.TraceSupplierListRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.enums.ExportEnum;
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.model.MeterTraceSupplier;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
import com.casic.missiles.service.IMeterTraceSupplierService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import java.util.Objects;

/**
 * @Description: 溯源供方管理
 * @Author: wangpeng
 * @Date: 2022/11/21 20:31
 */
@Api(tags = "溯源供方管理接口")
@Controller
@RequestMapping("/meter/supplier")
public class MeterTraceSupplierController extends ExportController {
    @Autowired
    private IMeterTraceSupplierService traceSupplierService;

    @ApiOperation("溯源供方列表(分页)")
    @PostMapping("/listPage")
    @ResponseBody
    public ReturnDTO<PageInfoBT<MeterTraceSupplier>> supplierListPage(@RequestBody TraceSupplierListRequest request) {
        Page<MeterTraceSupplier> page = PageFactory.defaultPage();
        return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request)));
    }

    @ApiOperation("溯源供方列表")
    @PostMapping("/list")
    @ResponseBody
    public ReturnDTO<List<MeterTraceSupplier>> supplierList(@RequestBody TraceSupplierListRequest request) {
        return ReturnUtil.success(traceSupplierService.list(request));
    }

    @ApiOperation("溯源供方导出")
    @PostMapping("/listExport")
    @ResponseBody
    public void export(@RequestBody TraceSupplierListRequest request) throws IOException {
        super.exportExcel(MeterTraceSupplier.class, traceSupplierService.list(request), ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName());
    }

    @ApiOperation("溯源供方新建")
    @PostMapping("/add")
    @ResponseBody
    public ReturnDTO supplierAdd(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
        if(bindingResult.hasErrors()){
            throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
        }
        return traceSupplierService.addTraceSupplier(traceSupplier);
    }

    @ApiOperation("溯源供方更新")
    @PostMapping("/update")
    @ResponseBody
    public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
        Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
            throw new BusinessException(BusinessExceptionEnum.ID_NULL);
        });
        Assert.isFalse(bindingResult.hasErrors(), () -> {
            throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
        });
        return traceSupplierService.updateTraceSupplier(traceSupplier);
    }

    @ApiOperation("溯源供方删除")
    @PostMapping("/delete")
    @ResponseBody
    public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) {
        Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
            throw new BusinessException(BusinessExceptionEnum.ID_NULL);
        });
        return traceSupplierService.deleteTraceSupplier(idDTO.getId());
    }

    @ApiOperation("溯源供方批量删除")
    @PostMapping("/batchDelete")
    @ResponseBody
    public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) {
        Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> {
            throw new BusinessException(BusinessExceptionEnum.ID_NULL);
        });
        return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds());
    }

    @ApiOperation("溯源供方详情")
    @PostMapping("/detail")
    @ResponseBody
    public ReturnDTO<TraceSupplierDetailResponse> supplierDetail(@RequestBody @Valid IdDTO idDTO) {
        Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
            throw new BusinessException(BusinessExceptionEnum.ID_NULL);
        });
        return traceSupplierService.traceSupplierDetail(idDTO.getId());
    }

    /**
     * 溯源供方审批
     */
    


}