From 901cf3d6947794cad70387bdf823fd7a69175bdf Mon Sep 17 00:00:00 2001 From: yangmaofu Date: Fri, 3 Apr 2026 16:26:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A7=E5=93=81=E6=B8=85=E5=8D=95=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E7=BB=9F=E8=AE=A1=E5=8F=8A=E8=B4=A7=E5=93=81=E6=B8=85?= =?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lims/capital/excel/GoodsDetailExcel.java | 59 +++++++++++++++++ .../goods/controller/GoodsController.java | 66 +++++++++++++++++-- .../lims/goods/mapper/GoodsMapper.java | 3 + .../lims/goods/mapper/GoodsMapper.xml | 35 ++++++++++ .../lims/goods/service/IGoodsService.java | 11 ++++ .../goods/service/impl/GoodsServiceImpl.java | 5 ++ .../lims/excel/ExamineExportExcel.java | 59 +++++++++++++++++ 7 files changed, 232 insertions(+), 6 deletions(-) create mode 100644 lab-service/lab-capital/src/main/java/org/springblade/lims/capital/excel/GoodsDetailExcel.java create mode 100644 lab-service/lab-lims/src/main/java/org/springblade/lims/excel/ExamineExportExcel.java diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/excel/GoodsDetailExcel.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/excel/GoodsDetailExcel.java new file mode 100644 index 0000000..e73fcae --- /dev/null +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/capital/excel/GoodsDetailExcel.java @@ -0,0 +1,59 @@ + +package org.springblade.lims.capital.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +import java.io.Serializable; + +/** + * UserExcel + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class GoodsDetailExcel implements Serializable { + + private static final long serialVersionUID = 1L; + + @ColumnWidth(20) + @ExcelProperty("物品名称") + private String goodsName; + + @ColumnWidth(20) + @ExcelProperty("供应商") + private String supplierName; + + @ColumnWidth(20) + @ExcelProperty("物品到货率") + private String goodsRate; + + @ColumnWidth(20) + @ExcelProperty("物品种类数量") + private String goodsClassNum; + + @ColumnWidth(20) + @ExcelProperty("物品数量") + private String goodsNum; + + @ColumnWidth(20) + @ExcelProperty("已到数量") + private String inNum; + + @ColumnWidth(20) + @ExcelProperty("未到货数量") + private String notNum; + + @ColumnWidth(20) + @ExcelProperty("订单状态") + private String statusText; + + @ColumnWidth(25) + @ExcelProperty("创建时间") + private String createTime; + +} diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java index 07fc174..e434585 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java @@ -15,6 +15,8 @@ import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.apache.commons.lang.math.RandomUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.base.BaseEntity; @@ -26,10 +28,7 @@ import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.lims.capital.entity.*; -import org.springblade.lims.capital.excel.ApplyDetailExcel; -import org.springblade.lims.capital.excel.DetailExcel; -import org.springblade.lims.capital.excel.GoodsExcel; -import org.springblade.lims.capital.excel.InAndOutExcel; +import org.springblade.lims.capital.excel.*; import org.springblade.lims.capital.service.IGoodsCheckLogService; import org.springblade.lims.capital.service.IProductClassService; import org.springblade.lims.capital.service.IProductStoreDetialService; @@ -62,6 +61,8 @@ import static java.util.stream.Collectors.toList; @Api(value = "物品列表接口", tags = "物品列表接口") public class GoodsController extends BladeController { + private static Logger logger = LoggerFactory.getLogger(GoodsController.class); + private final IGoodsService goodsService; private final IReportService reportService; @@ -98,18 +99,25 @@ public class GoodsController extends BladeController { .or().like(Goods::getYt, keyword)); } } + // 物品厂商模糊查询 + if (StringUtil.isNoneBlank(goods.getCompany())) { + queryWrapper.like(Goods::getCompany, goods.getCompany().trim()); + } // 根据物品类型大类查询 if (goods.getBigClassId() != null) { queryWrapper.eq(Goods::getBigClassId, goods.getBigClassId()); } if(StringUtils.isBlank(query.getDescs()) && StringUtils.isBlank(query.getAscs())){ - queryWrapper.orderByDesc(Goods::getCreateTime); + // 默认排序 按库存排序 时间排序 + queryWrapper.orderByDesc(Goods::getNum).orderByDesc(Goods::getCreateTime); } // 查看类型:1普通类 2课题类 if (goods.getGetType() != null) { queryWrapper.eq(Goods::getGetType, goods.getGetType()); } - queryWrapper.orderByDesc(Goods::getCreateTime); + // 默认排序 按库存排序 时间排序 + queryWrapper.orderByDesc(Goods::getNum) + .orderByDesc(Goods::getCreateTime); IPage page = goodsService.page(Condition.getPage(query), queryWrapper); List goodsList = page.getRecords(); for (Goods goods1 : goodsList) { @@ -121,6 +129,8 @@ public class GoodsController extends BladeController { List contractDetail = contractDetailService.list(Wrappers.lambdaQuery().eq(ContractDetail::getGoodsId, goods1.getId()).eq(BaseEntity::getIsDeleted, 0)); if (CollectionUtils.isNotEmpty(contractDetail)) { goods1.setNotNum(contractDetail.stream().mapToInt(ContractDetail::getNotNum).sum()); + goods1.setInNum(contractDetail.stream().mapToInt(ContractDetail::getInNum).sum()); + goods1.setGoodsNum(contractDetail.stream().mapToInt(ContractDetail::getGoodsNum).sum()); } LambdaQueryWrapper timeWrapper = new LambdaQueryWrapper<>(); timeWrapper.eq(ProductStoreDetial::getGoodsId, goods1.getId()) @@ -394,6 +404,8 @@ public class GoodsController extends BladeController { checkLog.setCheckUserId(AuthUtil.getUserId()); goodsCheckLogService.save(checkLog); detial.setStatus(checkLog.getStatus()); + detial.setQualityTest(AuthUtil.getUserId());//质检人 + detial.setQualityTestDate(new Date());//质检时间 productStoreDetialService.updateById(detial); } @@ -1008,4 +1020,46 @@ public class GoodsController extends BladeController { return map; } + + /** + * @MethodName: exportSumGoodsList + * @Annotation: 货品清单导出统计 + * @author: YangMaoFu + * @date: 2026/3/24 16:16 + * @Version: 1.0 + */ + @GetMapping("exportSumGoodsList") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "货品清单导出统计") + public void exportSumGoodsList( + @RequestParam(required = false) String goodsName, + @RequestParam(required = false) String supplierName, + HttpServletResponse response) { + Map map; + try{ + map = new HashMap<>(); + map.put("goodsName", goodsName); + map.put("supplierName", supplierName); + List> goods = goodsService.summaryOfGoodsList(map); + List list = goods.stream().map(m -> { + GoodsDetailExcel excel = new GoodsDetailExcel(); + excel.setGoodsName((String) m.get("goodsName")); + excel.setSupplierName((String) m.get("supplierName")); + excel.setGoodsRate(m.get("goodsRate") != null ? String.valueOf(m.get("goodsRate")) : null); + excel.setGoodsClassNum(m.get("goodsClassNum") != null ? String.valueOf(m.get("goodsClassNum")) : null); + excel.setGoodsNum(m.get("goodsNum") != null ? String.valueOf(m.get("goodsNum")) : null); + excel.setInNum(m.get("inNum") != null ? String.valueOf(m.get("inNum")) : null); + excel.setNotNum(m.get("notNum") != null ? String.valueOf(m.get("notNum")) : null); + excel.setStatusText((String) m.get("statusText")); + excel.setCreateTime((String) m.get("createTime")); + return excel; + }).collect(Collectors.toList()); + ExcelUtil.export(response, "货品清单统计", "货品清单", list, GoodsDetailExcel.class); + }catch (Exception e){ + if (logger.isErrorEnabled()) { + logger.error("货品清单导出统计失败:{}", e.getMessage()); + } + } + } + } diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.java index 08fe0da..d87ee40 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.java @@ -9,10 +9,13 @@ import org.springblade.lims.capital.vo.ProductVO; import org.springblade.lims.goods.entity.Goods; import java.util.List; +import java.util.Map; /** * 物品表 Mapper 接口 */ public interface GoodsMapper extends BaseMapper { IPage listByPnum(Goods goods,IPage page); + + List> summaryOfGoodsList(Map map); } diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml index 2e23b50..98890e8 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/mapper/GoodsMapper.xml @@ -43,4 +43,39 @@ ORDER BY A.name,B.p_num asc + + + \ No newline at end of file diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/IGoodsService.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/IGoodsService.java index 63634e1..ff6c91b 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/IGoodsService.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/IGoodsService.java @@ -10,4 +10,15 @@ import java.util.Map; public interface IGoodsService extends BaseService { IPage listByPnum(Goods goods,IPage page); + + + /** + * @MethodName: summaryOfGoodsList + * @Annotation: 货品清单导出统计 + * @author: YangMaoFu + * @date: 2026/3/24 16:15 + * @Version: 1.0 + */ + List> summaryOfGoodsList(Map map); + } diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/impl/GoodsServiceImpl.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/impl/GoodsServiceImpl.java index ba08fed..ad9c877 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/impl/GoodsServiceImpl.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/impl/GoodsServiceImpl.java @@ -35,4 +35,9 @@ public class GoodsServiceImpl extends BaseServiceImpl implem public IPage listByPnum(Goods goods, IPage page) { return goodsMapper.listByPnum(goods, page); } + + @Override + public List> summaryOfGoodsList(Map map) { + return goodsMapper.summaryOfGoodsList(map); + } } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/excel/ExamineExportExcel.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/excel/ExamineExportExcel.java new file mode 100644 index 0000000..051ae06 --- /dev/null +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/excel/ExamineExportExcel.java @@ -0,0 +1,59 @@ +package org.springblade.lims.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +@Data +public class ExamineExportExcel implements Serializable { + + private static final long serialVersionUID = 1L; + @ColumnWidth(20) + @ExcelProperty("检测项目") + private String examineItemName; + + @ColumnWidth(20) + @ExcelProperty("样品名称") + private String simpleName; + + @ColumnWidth(20) + @ExcelProperty("检测编号") + private String experieNum; + + @ColumnWidth(20) + @ExcelProperty("样品数量") + private String simpleCount; + + @ColumnWidth(20) + @ExcelProperty("检测方法") + private String examineWayName; + + @ColumnWidth(20) + @ExcelProperty("检测标准") + private String examineBasisName; + + @ColumnWidth(20) + @ExcelProperty("要求完成时间") + private String demandCompletionTime; + + @ColumnWidth(20) + @ExcelProperty("创建时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private String createTime; + + @ColumnWidth(20) + @ExcelProperty("领取人") + private String examineByName; + + @ColumnWidth(20) + @ExcelProperty("样品所在") + private String simpleCurrPlace; + + @ColumnWidth(20) + @ExcelProperty("状态") + private String status; + +}