|  |  | 
 |  |  | package com.dy.pmsPlatform.product; | 
 |  |  |  | 
 |  |  | import com.alibaba.excel.converters.Converter; | 
 |  |  | import com.alibaba.fastjson2.JSON; | 
 |  |  | import com.dy.common.aop.SsoPowerAop; | 
 |  |  | import com.dy.common.webUtil.BaseResponse; | 
 |  |  | import com.dy.common.webUtil.BaseResponseUtils; | 
 |  |  | 
 |  |  | import jakarta.validation.Valid; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.core.io.ByteArrayResource; | 
 |  |  | import org.springframework.core.io.FileSystemResource; | 
 |  |  | import org.springframework.core.io.Resource; | 
 |  |  | import org.springframework.http.ContentDisposition; | 
 |  |  | import org.springframework.http.HttpHeaders; | 
 |  |  | import org.springframework.http.MediaType; | 
 |  |  | import org.springframework.http.ResponseEntity; | 
 |  |  | import org.springframework.util.StreamUtils; | 
 |  |  | import org.springframework.validation.BindingResult; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.io.ByteArrayOutputStream; | 
 |  |  | import java.io.File; | 
 |  |  | import java.io.FileInputStream; | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Objects; | 
 |  |  | import java.util.zip.ZipEntry; | 
 |  |  | import java.util.zip.ZipOutputStream; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 产品管理 | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 保存产品信息 | 
 |  |  |      * @param pro | 
 |  |  |      * @param bindingResult | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @PostMapping(path="save") | 
 |  |  |     @SsoPowerAop(power = "10300001") | 
 |  |  |     @Log("保存产品信息") | 
 |  |  |     public BaseResponse<PltProduct> save(@RequestBody @Valid PltProduct pro, | 
 |  |  |                                          BindingResult bindingResult){ | 
 |  |  |     public BaseResponse<PltProduct> save(@RequestBody @Valid PltProduct pro){ | 
 |  |  |         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()); | 
 |  |  |         } | 
 |  |  |         pro.setDeleted(false); | 
 |  |  |         int count = proSv.save(pro); | 
 |  |  |         if (count <= 0) { | 
 |  |  |             return BaseResponseUtils.buildFail("数据库存储失败"); | 
 |  |  |         } else { | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 更新产品信息 | 
 |  |  |      * @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()); | 
 |  |  |         } | 
 |  |  |     public BaseResponse<PltProduct> update(@RequestBody @Valid PltProduct pro){ | 
 |  |  |         int count = proSv.update(pro); | 
 |  |  |         if (count <= 0) { | 
 |  |  |             return BaseResponseUtils.buildFail("数据库存储失败"); | 
 |  |  |         } else { | 
 |  |  | 
 |  |  |     @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()); | 
 |  |  |         } | 
 |  |  |         int count = proSv.delete(Long.parseLong(id)); | 
 |  |  |         if (count <= 0) { | 
 |  |  |             return BaseResponseUtils.buildFail("数据库存储失败"); | 
 |  |  |         } else { | 
 |  |  | 
 |  |  |     @SsoPowerAop(power = "10300000") //登录与权限同时验证 | 
 |  |  |     @Log("根据ID查询产品信息") | 
 |  |  |     public BaseResponse<PltProduct> one(String id){ | 
 |  |  |         try{ | 
 |  |  |             PltProduct pro=proSv.selectById(id); | 
 |  |  |         PltProduct pro=proSv.selectById(id); | 
 |  |  |  | 
 |  |  |             return BaseResponseUtils.buildSuccess(pro); | 
 |  |  |         }catch (Exception e){ | 
 |  |  |             log.error("根据ID查询产品异常", e); | 
 |  |  |             return BaseResponseUtils.buildException(e.getMessage()); | 
 |  |  |         } | 
 |  |  |         return BaseResponseUtils.buildSuccess(pro); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |     @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()); | 
 |  |  |         } | 
 |  |  |         QueryResultVo<List<PltProduct>> list = proSv.selectSome(vo); | 
 |  |  |         return BaseResponseUtils.buildSuccess(list); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |     @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()); | 
 |  |  |         } | 
 |  |  |         QueryVo vo = new QueryVo(); | 
 |  |  |         return BaseResponseUtils.buildSuccess(proSv.selectAll(vo)); | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 可根据orderId查询产品 | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @GetMapping(path="getProduct") | 
 |  |  |     @SsoPowerAop(power = "10300000") | 
 |  |  |     @Log("可根据orderId查询产品") | 
 |  |  |     public BaseResponse<List<PltProduct>> getProduct(Long orderId){ | 
 |  |  |         return BaseResponseUtils.buildSuccess(proSv.getProduct(orderId)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @PostMapping(path="export") | 
 |  |  |     @SsoPowerAop(power = "10300000") | 
 |  |  |     @SsoPowerAop(power = "10300001") | 
 |  |  |     @Log("导出产品信息") | 
 |  |  |     public void export(@RequestBody QueryVo queryVo, HttpServletResponse response){ | 
 |  |  |         try{ | 
 |  |  |             List<Converter> list = new ArrayList<>() ; | 
 |  |  |         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); | 
 |  |  |         } | 
 |  |  |         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); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  |