Newer
Older
casic-metering / casic-metering-api / src / main / java / com / casic / missiles / controller / MeterPriceController.java
xiezhuangzhuang on 4 Dec 2022 4 KB 批量导入接口接口开发
package com.casic.missiles.controller;


import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.dto.IdDTO;
import com.casic.missiles.dto.ReturnDTO;
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.meter.MeterCertificateImport;
import com.casic.missiles.dto.meter.MeterPriceImport;
import com.casic.missiles.dto.meter.MeterPriceRequest;
import com.casic.missiles.listeners.CommonExcelListener;
import com.casic.missiles.model.MeterPrice;
import com.casic.missiles.service.MeterPriceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;


@Api(tags = "价格库相关接口")
@RestController
@RequestMapping("/price")
@Slf4j
public class MeterPriceController {

    @Resource
    private MeterPriceService meterPriceService;

    /**
     * 价格库列表查询
     * @param meterPriceRequest
     * @return
     */
    @ApiOperation("价格库列表查询")
    @PostMapping("/queryPriceList")
    @ResponseBody
    public ReturnDTO<MeterPrice> queryPriceList(@RequestBody MeterPriceRequest meterPriceRequest) {
        Page<MeterPrice> page = PageFactory.defaultPage();
        Page<MeterPrice> list = meterPriceService.queryPriceList(page,meterPriceRequest);
        return ReturnUtil.success(list);
    }

    /**
     * 价格库列表删除
     * @return
     */
    @ApiOperation("价格库列表删除")
    @PostMapping("/deletePrice")
    @ResponseBody
    public ReturnDTO deletePrice(@RequestBody IdDTO idDto) {
        return meterPriceService.deletePrice(idDto);
    }

    /**
     * 价格库新增
     * @return
     */
    @ApiOperation("价格库新增")
    @PostMapping("/addMeterPrice")
    @ResponseBody
    public ReturnDTO addMeterPrice(@RequestBody MeterPrice meterPrice) {
        return meterPriceService.addMeterPrice(meterPrice);
    }

    /**
     * 价格详细信息
     * @return
     */
    @ApiOperation("价格详细信息")
    @PostMapping("/queryPriceInfo")
    @ResponseBody
    public ReturnDTO<MeterPrice> selectStaffInfo(@RequestBody IdDTO idDto) {
        MeterPrice meterPrice = meterPriceService.selectStaffInfo(idDto);
        return ReturnUtil.success(meterPrice);
    }

    /**
     * 价格信息编辑
     * @return
     */
    @ApiOperation("价格信息编辑")
    @PostMapping("/updatePriceInfo")
    @ResponseBody
    public ReturnDTO updatePriceInfo(@RequestBody MeterPrice meterPrice) {
        return meterPriceService.updatePriceInfo(meterPrice);
    }

    /**
     * 价格信息列表导出
     */
    @ApiOperation("价格信息列表导出")
    @PostMapping("/exportPriceList")
    @ResponseBody
    public void exportPriceList(@RequestBody MeterPriceRequest meterPriceRequest, HttpServletResponse response) {
        try {
            meterPriceService.exportPriceList(meterPriceRequest,response);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     *
     * @param multipartFile
     * @return
     */
    @ApiOperation("批量导入价格库")
    @PostMapping(value = "/batchImportPrice", headers = "content-type=multipart/form-data")
    @ResponseBody
    public ReturnDTO batchImportPrice(@RequestParam MultipartFile[] multipartFile) {
        try {
            CommonExcelListener<MeterPriceImport> listener = new CommonExcelListener<>();
            final long start = System.currentTimeMillis();
            for (MultipartFile file : multipartFile) {
                EasyExcel.read(file.getInputStream(), MeterPriceImport.class, listener)
                        .headRowNumber(1).autoTrim(true).sheet(0).doRead();
            }
            log.info("耗时:秒" + (System.currentTimeMillis() - start) / 1000);
            //读取到的数据
            List<MeterPriceImport> list = listener.getList();
            return meterPriceService.dataCheck(list);
        } catch (IOException e) {
            e.printStackTrace();
            return ReturnUtil.failed("数据取失败");
        }
    }

}