package com.dy.pmsPlatform.product; 
 | 
  
 | 
import com.alibaba.excel.converters.Converter; 
 | 
import com.dy.common.aop.SsoPowerAop; 
 | 
import com.dy.common.webUtil.BaseResponse; 
 | 
import com.dy.common.webUtil.BaseResponseUtils; 
 | 
import com.dy.common.webUtil.QueryResultVo; 
 | 
import com.dy.pmsGlobal.aop.Log; 
 | 
import com.dy.pmsGlobal.pojoPlt.PltProduct; 
 | 
import com.dy.pmsGlobal.util.QrCodeUtil; 
 | 
import com.google.zxing.WriterException; 
 | 
import jakarta.servlet.http.HttpServletResponse; 
 | 
import jakarta.validation.Valid; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import java.io.IOException; 
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 产品管理 
 | 
 */ 
 | 
@Slf4j 
 | 
@RestController 
 | 
@RequestMapping(path = "product") 
 | 
@SuppressWarnings("unchecked") 
 | 
public class ProductCtrl { 
 | 
  
 | 
  
 | 
    private ProductSv proSv; 
 | 
    @Autowired 
 | 
    public void setProSv(ProductSv proSv){ 
 | 
        this.proSv = proSv; 
 | 
    } 
 | 
  
 | 
    private static final String fileName = "产品信息" ; 
 | 
    private static final String sheetName = "产品信息" ; 
 | 
  
 | 
    /** 
 | 
     * 保存产品信息 
 | 
     * @param pro 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path="save") 
 | 
    @SsoPowerAop(power = "10300001") 
 | 
    @Log("保存产品信息") 
 | 
    public BaseResponse<PltProduct> save(@RequestBody @Valid PltProduct pro){ 
 | 
        pro.id = null; 
 | 
        pro.setDeleted(false); 
 | 
        int count = proSv.save(pro); 
 | 
        if (count <= 0) { 
 | 
            return BaseResponseUtils.buildFail("数据库存储失败"); 
 | 
        } else { 
 | 
            return BaseResponseUtils.buildSuccess(true); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 更新产品信息 
 | 
     * @param pro 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path="update") 
 | 
    @SsoPowerAop(power = "10300001") 
 | 
    @Log("更新产品信息") 
 | 
    public BaseResponse<PltProduct> update(@RequestBody @Valid PltProduct pro){ 
 | 
        int count = proSv.update(pro); 
 | 
        if (count <= 0) { 
 | 
            return BaseResponseUtils.buildFail("数据库存储失败"); 
 | 
        } else { 
 | 
            return BaseResponseUtils.buildSuccess(true); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除产品信息 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path="delete") 
 | 
    @SsoPowerAop(power = "10300001") 
 | 
    @Log("删除产品信息") 
 | 
    public BaseResponse<Boolean> delete(String id){ 
 | 
        int count = proSv.delete(Long.parseLong(id)); 
 | 
        if (count <= 0) { 
 | 
            return BaseResponseUtils.buildFail("数据库存储失败"); 
 | 
        } else { 
 | 
            return BaseResponseUtils.buildSuccess(true); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 根据ID查询产品信息 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path="one") 
 | 
    @SsoPowerAop(power = "10300000") //登录与权限同时验证 
 | 
    @Log("根据ID查询产品信息") 
 | 
    public BaseResponse<PltProduct> one(String id){ 
 | 
        PltProduct pro=proSv.selectById(id); 
 | 
  
 | 
        return BaseResponseUtils.buildSuccess(pro); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询产品信息 
 | 
     * @param vo 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path="some") 
 | 
    @SsoPowerAop(power = "10300000") 
 | 
    @Log("分页查询产品信息") 
 | 
    public BaseResponse<QueryResultVo<List<PltProduct>>> some(@RequestBody QueryVo vo){ 
 | 
        QueryResultVo<List<PltProduct>> list = proSv.selectSome(vo); 
 | 
        return BaseResponseUtils.buildSuccess(list); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询所有产品 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path="all") 
 | 
    @SsoPowerAop(power = "10300000") 
 | 
    @Log("查询所有产品") 
 | 
    public BaseResponse<List<PltProduct>> all(){ 
 | 
        QueryVo vo = new QueryVo(); 
 | 
        return BaseResponseUtils.buildSuccess(proSv.selectAll(vo)); 
 | 
    } 
 | 
  
 | 
    @PostMapping(path="export") 
 | 
    @SsoPowerAop(power = "10300000") 
 | 
    @Log("导出产品信息") 
 | 
    public void export(@RequestBody QueryVo queryVo, HttpServletResponse response){ 
 | 
        List<Converter> list = new ArrayList<>() ; 
 | 
  
 | 
        List<PltProduct> porList = proSv.selectAll(queryVo); 
 | 
        // 使用并行流提高性能 
 | 
        porList.parallelStream().forEach(pro -> { 
 | 
            ExcelVo vo = new ExcelVo(); 
 | 
            vo.name = pro.name; 
 | 
            vo.type = pro.type; 
 | 
            vo.code = pro.code; 
 | 
            try { 
 | 
                vo.qrCode = QrCodeUtil.genQrCode(pro.code); 
 | 
            } catch (IOException e) { 
 | 
                e.printStackTrace(); 
 | 
            } catch (WriterException e) { 
 | 
                e.printStackTrace(); 
 | 
            } 
 | 
            list.add(vo); 
 | 
        }); 
 | 
        QrCodeUtil.downloadExcel(response, fileName,sheetName,list); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |