| 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.validation.BindingResult; | 
| 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 | 
|      * @param bindingResult | 
|      * @return | 
|      */ | 
|     @PostMapping(path="save") | 
|     @SsoPowerAop(power = "10300001") | 
|     @Log("保存产品信息") | 
|     public BaseResponse<PltProduct> save(@RequestBody @Valid PltProduct pro, | 
|                                          BindingResult bindingResult){ | 
|         pro.id = null; | 
|         int count; | 
|         try { | 
|             if (bindingResult != null && bindingResult.hasErrors()) { | 
|                 return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); | 
|             } | 
|             pro.setDeleted(false); | 
|             count = proSv.save(pro); | 
|         }catch (Exception e){ | 
|             log.error("保存产品异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()); | 
|         } | 
|         if (count <= 0) { | 
|             return BaseResponseUtils.buildFail("数据库存储失败"); | 
|         } else { | 
|             return BaseResponseUtils.buildSuccess(true); | 
|         } | 
|     } | 
|   | 
|   | 
|     /** | 
|      * 更新产品信息 | 
|      * @param pro | 
|      * @param bindingResult | 
|      * @return | 
|      */ | 
|     @PostMapping(path="update") | 
|     @SsoPowerAop(power = "10300001") | 
|     @Log("更新产品信息") | 
|     public BaseResponse<PltProduct> update(@RequestBody @Valid PltProduct pro,BindingResult bindingResult){ | 
|         int count; | 
|         try { | 
|             if (bindingResult != null && bindingResult.hasErrors()) { | 
|                 return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); | 
|             } | 
|             count = proSv.update(pro); | 
|         }catch (Exception e){ | 
|             log.error("更新产品异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()); | 
|         } | 
|         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; | 
|         try { | 
|             count = proSv.delete(Long.parseLong(id)); | 
|         }catch (Exception e){ | 
|             log.error("删除产品异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()); | 
|         } | 
|         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){ | 
|         try{ | 
|             PltProduct pro=proSv.selectById(id); | 
|   | 
|             return BaseResponseUtils.buildSuccess(pro); | 
|         }catch (Exception e){ | 
|             log.error("根据ID查询产品异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 查询产品信息 | 
|      * @param vo | 
|      * @return | 
|      */ | 
|     @PostMapping(path="some") | 
|     @SsoPowerAop(power = "10300000") | 
|     @Log("分页查询产品信息") | 
|     public BaseResponse<QueryResultVo<List<PltProduct>>> some(@RequestBody QueryVo vo){ | 
|         try { | 
|             QueryResultVo<List<PltProduct>> list = proSv.selectSome(vo); | 
|             return BaseResponseUtils.buildSuccess(list); | 
|         }catch (Exception e){ | 
|             log.error("分页查询产品异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 查询所有产品 | 
|      * @return | 
|      */ | 
|     @GetMapping(path="all") | 
|     @SsoPowerAop(power = "10300000") | 
|     @Log("查询所有产品") | 
|     public BaseResponse<List<PltProduct>> all(){ | 
|         try { | 
|             QueryVo vo = new QueryVo(); | 
|             return BaseResponseUtils.buildSuccess(proSv.selectAll(vo)); | 
|         }catch (Exception e){ | 
|             log.error("查询所有产品异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()); | 
|         } | 
|     } | 
|   | 
|     @PostMapping(path="export") | 
|     @SsoPowerAop(power = "10300000") | 
|     @Log("导出产品信息") | 
|     public void export(@RequestBody QueryVo queryVo, HttpServletResponse response){ | 
|         try{ | 
|             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); | 
|         }catch (Exception e){ | 
|             log.error("导出产品信息异常", e); | 
|         } | 
|     } | 
|   | 
|   | 
| } |