Browse Source

feat(all) : 增加报表

1 增加自提明细报表
2 增加库存品表
pull/1/head
zhaoqiaobo 12 months ago
parent
commit
831c224801
  1. 2
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataFreightClient.java
  2. 12
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataFreightClient.java
  3. 27
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataFreightServiceImpl.java
  4. 31
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportBillLoadingController.java
  5. 68
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportStockController.java
  6. 6
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/StockOutDetailController.java
  7. 8
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.java
  8. 112
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.xml
  9. 5
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java
  10. 21
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportStockMapeer.java
  11. 27
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportStockMapper.xml
  12. 35
      blade-service/logpm-report/src/main/java/com/logpm/report/reader/BillLoadingDetailsReader.java
  13. 36
      blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryStockReader.java
  14. 7
      blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportBillLoadingAsyncService.java
  15. 20
      blade-service/logpm-report/src/main/java/com/logpm/report/service/ReportStockService.java
  16. 63
      blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportBillLoadingAsyncService.java
  17. 6
      blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportDeliverServiceImpl.java
  18. 46
      blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportStockServiceImpl.java
  19. 104
      blade-service/logpm-report/src/main/java/com/logpm/report/vo/BillLoadingDetailsVO.java
  20. 72
      blade-service/logpm-report/src/main/java/com/logpm/report/vo/StockDetailsVO.java

2
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataFreightClient.java

@ -40,7 +40,7 @@ import java.util.List;
)
public interface IBasicdataFreightClient {
String API_PREFIX = "/client";
String API_PREFIX = "/basicdataFreight/client";
String TOP = API_PREFIX + "/top123";
String PRICE = API_PREFIX + "/pirce";

12
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataFreightClient.java

@ -16,7 +16,7 @@
*/
package com.logpm.basicdata.feign;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.basicdata.entity.BasicdataFreightDetailEntity;
import com.logpm.basicdata.entity.BasicdataFreightEntity;
@ -60,8 +60,9 @@ public class BasicdataFreightClient implements IBasicdataFreightClient {
@Override
public List<BasicdataFreightDetailEntity> pirce(BasicdataFreightApiVO param) {
QueryWrapper<BasicdataFreightEntity> queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("item_name", param.getItemName()).like("category", param.getCategory()).eq("is_deleted",0);
LambdaQueryWrapper<BasicdataFreightEntity> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(BasicdataFreightEntity::getItemName,param.getItemName())
.like(BasicdataFreightEntity::getCategory,param.getCategory()).eq(BasicdataFreightEntity::getIsDeleted,0);
BasicdataFreightEntity freightEntity = basicdataFreightService.getOne(queryWrapper1);
List<BasicdataFreightDetailEntity> objects = new ArrayList<>();
if (null != freightEntity) {
@ -77,8 +78,9 @@ public class BasicdataFreightClient implements IBasicdataFreightClient {
}
objects.add(detailEntity);
} else {
QueryWrapper<BasicdataFreightDetailEntity> queryWrapper = new QueryWrapper();
queryWrapper.eq("freight_id", freightEntity.getId()).eq("is_deleted", 0);
LambdaQueryWrapper<BasicdataFreightDetailEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BasicdataFreightDetailEntity::getFreightId,freightEntity.getId())
.eq(BasicdataFreightDetailEntity::getIsDeleted,0);
List<BasicdataFreightDetailEntity> list = basicdataFreightDetailService.list(queryWrapper);
objects.addAll(list);
}

27
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataFreightServiceImpl.java

@ -20,7 +20,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.logpm.basicdata.dto.BasicdataFreightDTO;
@ -82,17 +82,17 @@ public class BasicdataFreightServiceImpl extends BaseServiceImpl<BasicdataFreigh
public Boolean ownSaveOrUpdate(BasicdataFreightDTO basicdataFreight) {
log.info("接收的数据{}", basicdataFreight);
// 校验数据唯一性 名称+品类唯一
QueryWrapper<BasicdataFreightEntity> query = new QueryWrapper<>();
query.eq("item_name", basicdataFreight.getItemName())
.eq("is_deleted", 0);
if(0 == basicdataFreight.getFixedPrice()){
if(StrUtil.isBlank(basicdataFreight.getCategory())){
LambdaQueryWrapper<BasicdataFreightEntity> query = new LambdaQueryWrapper<>();
query.eq(BasicdataFreightEntity::getItemName, basicdataFreight.getItemName())
.eq(BasicdataFreightEntity::getIsDeleted, 0);
if (0 == basicdataFreight.getFixedPrice()) {
if (StrUtil.isBlank(basicdataFreight.getCategory())) {
throw new ServiceException("品类必填");
}
query.in("category", basicdataFreight.getCategory().split(","));
query.in(BasicdataFreightEntity::getCategory, basicdataFreight.getCategory().split(","));
}
if (ObjectUtils.isNotNull(basicdataFreight.getId())) {
query.ne("id", basicdataFreight.getId());
query.ne(BasicdataFreightEntity::getId, basicdataFreight.getId());
}
List<BasicdataFreightEntity> list = this.list(query);
if (CollectionUtil.isNotEmpty(list)) {
@ -101,7 +101,7 @@ public class BasicdataFreightServiceImpl extends BaseServiceImpl<BasicdataFreigh
BasicdataFreightEntity basicdataFreightEntity = new BasicdataFreightEntity();
Byte fixedPrice = basicdataFreight.getFixedPrice();
BeanUtil.copyProperties(basicdataFreight, basicdataFreightEntity);
if(CollectionUtil.isNotEmpty(basicdataFreight.getTypeService())){
if (CollectionUtil.isNotEmpty(basicdataFreight.getTypeService())) {
List<String> typeService = basicdataFreight.getTypeService();
basicdataFreightEntity.setType(String.join(",", typeService));
}
@ -115,8 +115,8 @@ public class BasicdataFreightServiceImpl extends BaseServiceImpl<BasicdataFreigh
// 修改主表单
this.updateById(basicdataFreightEntity);
// 删除明细
QueryWrapper<BasicdataFreightDetailEntity> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("freight_id", basicdataFreightEntity.getId());
LambdaQueryWrapper<BasicdataFreightDetailEntity> objectQueryWrapper = new LambdaQueryWrapper<>();
objectQueryWrapper.eq(BasicdataFreightDetailEntity::getFreightId, basicdataFreightEntity.getId());
detailService.remove(objectQueryWrapper);
} else {
this.save(basicdataFreightEntity);
@ -141,8 +141,9 @@ public class BasicdataFreightServiceImpl extends BaseServiceImpl<BasicdataFreigh
BasicdataFreightEntity detail = this.getOne(Condition.getQueryWrapper(basicdataFreight));
if (null != detail) {
BeanUtil.copyProperties(detail, basicdataFreightDTO);
QueryWrapper<BasicdataFreightDetailEntity> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("freight_id", detail.getId()).eq("is_deleted", 0);
LambdaQueryWrapper<BasicdataFreightDetailEntity> objectQueryWrapper = new LambdaQueryWrapper<>();
objectQueryWrapper.eq(BasicdataFreightDetailEntity::getFreightId, detail.getId())
.eq(BasicdataFreightDetailEntity::getIsDeleted, 0);
List<BasicdataFreightDetailEntity> list = detailService.list(objectQueryWrapper);
if (CollectionUtil.isNotEmpty(list)) {
List<BasicdataFreightDetailDTO> detailDTOS = new ArrayList<>();

31
blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportBillLoadingController.java

@ -1,16 +1,18 @@
package com.logpm.report.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.report.excel.BillLoadingReportExcel;
import com.logpm.report.service.IReportBillLoadingAsyncService;
import com.logpm.report.vo.BillLoadingDetailsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.feign.IUserClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@ -40,21 +42,34 @@ public class ReportBillLoadingController {
* 导出数据
*/
@GetMapping("/export-billLoading")
@ApiOperationSupport(order = 9)
@ApiOperationSupport(order = 2)
@ApiOperation(value = "导出数据", notes = "传入distributionDeliveryList")
public R exportBillLoading(@ApiIgnore @RequestParam Map<String, Object> param, HttpServletResponse response) {
public R exportBillLoading(@ApiIgnore @RequestParam Map<String, Object> param, HttpServletResponse response) {
List<BillLoadingReportExcel> list = reportBillLoadingAsyncService.exportBillLoading(param);
ExcelUtil.export(response, "配送管理数据" + DateUtil.time(), "配送管理数据表", list, BillLoadingReportExcel.class);
return R.status(true);
}
@GetMapping("/details")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "自提明细报表", notes = "自提明细报表")
public R<IPage<BillLoadingDetailsVO>> detailsPage(BillLoadingDetailsVO vo, Query query) {
IPage<BillLoadingDetailsVO> pages = reportBillLoadingAsyncService.detailsPage(vo, query);
return R.data(pages);
}
@GetMapping("/exportDetails")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "导出自提明细报表", notes = "导出自提明细报表")
public void exportDetails(HttpServletResponse response, BillLoadingDetailsVO vo) {
try {
reportBillLoadingAsyncService.exportDetails(response, vo);
} catch (Exception e) {
e.printStackTrace();
}
}
}

68
blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportStockController.java

@ -0,0 +1,68 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.logpm.report.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.report.service.ReportStockService;
import com.logpm.report.vo.StockDetailsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
/**
* 配送报表 控制器
*
* @author cyz
* @since 2023-06-08
*/
@RestController
@AllArgsConstructor
@RequestMapping("/stock")
@Api(value = "库存报表", tags = "库存报表")
public class ReportStockController extends BladeController {
private final ReportStockService stockService;
@GetMapping("/details")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "库存品表", notes = "库存品表")
public R<IPage<StockDetailsVO>> detailsPage(StockDetailsVO vo, Query query) {
IPage<StockDetailsVO> pages = stockService.detailsPage(vo, query);
return R.data(pages);
}
@GetMapping("/exportDetails")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "导出配送明细报表", notes = "导出配送明细报表")
public void exportDetails(HttpServletResponse response, StockDetailsVO vo) {
try {
stockService.exportDetails(response, vo);
} catch (Exception e) {
e.printStackTrace();
}
}
}

6
blade-service/logpm-report/src/main/java/com/logpm/report/controller/StockOutDetailController.java

@ -1,6 +1,8 @@
package com.logpm.report.controller;
import com.logpm.report.service.StockOutDetailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.api.R;
@ -9,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
@ -18,6 +19,7 @@ import java.util.Map;
@RestController
@AllArgsConstructor
@RequestMapping(path = "/stock-out-detail")
@Api(value = "库存品出库明细", tags = "库存品出库明细")
public class StockOutDetailController extends BladeController {
private StockOutDetailService test;
@ -29,6 +31,7 @@ public class StockOutDetailController extends BladeController {
* @param size 每页数据量
*/
@GetMapping("/report")
@ApiOperation(value = "库存品出库明细列表", notes = "库存品出库明细列表")
public R<Map<String, Object>> report(
@RequestParam Map<String, Object> query,
@RequestParam Integer current,
@ -42,6 +45,7 @@ public class StockOutDetailController extends BladeController {
* @param query 所有请求参数
*/
@GetMapping("/export")
@ApiOperation(value = "导出库存品出库明细列表", notes = "导出库存品出库明细列表")
public void export(@RequestParam Map<String, Object> query) {
test.reportExport(query);
}

8
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.java

@ -1,6 +1,10 @@
package com.logpm.report.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.excel.BillLoadingReportExcel;
import com.logpm.report.vo.BillLoadingDetailsVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -8,7 +12,7 @@ import java.util.List;
import java.util.Map;
@Mapper
public interface ReportBillLoadingMapper {
public interface ReportBillLoadingMapper extends BaseMapper {
/**
@ -17,4 +21,6 @@ public interface ReportBillLoadingMapper {
* @return
*/
List<BillLoadingReportExcel> exportBillLoading(@Param("param") Map<String, Object> param);
List<BillLoadingDetailsVO> getDetailsPage(IPage<BillLoadingDetailsVO> page,@Param("ew") QueryWrapper<BillLoadingDetailsVO> queryWrapper);
}

112
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportBillLoadingMapper.xml

@ -4,19 +4,103 @@
<select id="exportBillLoading" resultType="com.logpm.report.excel.BillLoadingReportExcel">
SELECT
ldbl.create_time AS createdTime,
IF(SUM(ldbll.quantity) is null,0,SUM(ldbll.quantity)) AS BillLoadingNum,
IF( (SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='1' AND is_deleted = 0) is null,0, (SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='1' AND is_deleted = 0)) AS collectPaymentFee,
IF((SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='2' AND is_deleted = 0) is null,0,(SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='2' AND is_deleted = 0)) AS transportFee,
IF((SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='3' AND is_deleted = 0) is null ,0,(SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='3' AND is_deleted = 0) )AS storageFee,
IF((SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='4' AND is_deleted = 0) is null,0,(SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='4' AND is_deleted = 0)) AS forkliftFee,
IF((SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='5' AND is_deleted = 0) is null,0,(SELECT money FROM logpm_distribution_delivery_charge WHERE bill_lading = ldbl.id AND cost ='5' AND is_deleted = 0)) AS addValueFee
FROM
logpm_distrilbution_bill_lading AS ldbl
LEFT JOIN logpm_distribution_delivery_charge AS lddc ON ldbl.id = lddc.bill_lading
LEFT JOIN logpm_distribution_bill_lading_scan AS ldbll ON ldbll.bill_lading_id = ldbl.id
GROUP BY
ldbl.id
SELECT ldbl.create_time AS createdTime,
IF(SUM(ldbll.quantity) is null, 0, SUM(ldbll.quantity)) AS BillLoadingNum,
IF((SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id AND cost = '1' AND is_deleted = 0) is null, 0, (SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id
AND cost = '1'
AND is_deleted = 0)) AS collectPaymentFee,
IF((SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id AND cost = '2' AND is_deleted = 0) is null, 0, (SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id
AND cost = '2'
AND is_deleted = 0)) AS transportFee,
IF((SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id AND cost = '3' AND is_deleted = 0) is null, 0, (SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id
AND cost = '3'
AND is_deleted = 0)) AS storageFee,
IF((SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id AND cost = '4' AND is_deleted = 0) is null, 0, (SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id
AND cost = '4'
AND is_deleted = 0)) AS forkliftFee,
IF((SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id AND cost = '5' AND is_deleted = 0) is null, 0, (SELECT money
FROM logpm_distribution_delivery_charge
WHERE bill_lading = ldbl.id
AND cost = '5'
AND is_deleted = 0)) AS addValueFee
FROM logpm_distrilbution_bill_lading AS ldbl
LEFT JOIN logpm_distribution_delivery_charge AS lddc ON ldbl.id = lddc.bill_lading
LEFT JOIN logpm_distribution_bill_lading_scan AS ldbll ON ldbll.bill_lading_id = ldbl.id
GROUP BY ldbl.id
</select>
<select id="getDetailsPage" resultType="com.logpm.report.vo.BillLoadingDetailsVO">
select *
from (select dbl.pickup_batch,
dsa.warehouse,
dsa.consignee_unit,
dsa.waybill_number,
dsa.order_code,
t.packet_bar_code,
dsa.train_number,
dpl.firsts,
dpl.second,
dpl.third_product,
dpl.material_code,
dpl.material_name,
'' start_ware_in_time,
'' start_ware_out_time,
dpl.warehouse_entry_time_end,
dbls.create_user scan_user,
dbls.create_time scan_time,
dbl.update_time examine_time,
dbl.create_user examine_user
from logpm_distrilbution_bill_package t
left join logpm_distrilbution_bill_lading dbl on dbl.id = t.bill_lading_id
left join logpm_distribution_parcel_list dpl on dpl.id = t.parce_list_id
left join logpm_distribution_stock_article dsa on dsa.id = t.stock_article_id
left join logpm_distribution_bill_lading_scan dbls on dbls.parcel_list_id = dpl.id
) t ${ew.customSqlSegment}
union all
select *
from (select dbl.pickup_batch,
dsa.warehouse,
dsa.consignee_unit,
dsa.waybill_number,
dsa.order_code,
'' packet_bar_code,
dsa.train_number,
'' firsts,
'' second,
'' third_product,
dpl.cargo_number material_code,
dpl.description_goods material_name,
'' start_ware_in_time,
'' start_ware_out_time,
dpl.warehousing_time,
dbls.create_user scan_user,
dbls.create_time scan_time,
dbl.update_time examine_time,
dbl.create_user examine_user
from logpm_distribution_delivery_details t
left join logpm_distrilbution_bill_lading dbl on dbl.id = t.bill_lading_id
left join logpm_distribution_stock_list dpl on dpl.id = t.stock_list_id
left join logpm_distribution_stock_article dsa on dsa.id = dbl.stock_article_id
left join logpm_distribution_bill_lading_scan dbls on dbls.stock_list_id = dpl.id
) t ${ew.customSqlSegment}
</select>
</mapper>

5
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java

@ -1,7 +1,6 @@
package com.logpm.report.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.vo.ReportCustomerVO;
@ -21,8 +20,8 @@ public interface ReportDeliverMapeer extends BaseMapper {
List<ReportDevilerVO> getDeliveryTrainPage(IPage<ReportDevilerVO> page, @Param("ew") Wrapper<ReportDevilerVO> query);
List<ReportCustomerVO> getCustomerPage(IPage<ReportCustomerVO> page, @Param("ew") Wrapper query);
List<ReportCustomerVO> getCustomerPage(IPage<ReportCustomerVO> page, @Param("ew") Wrapper<ReportCustomerVO> query);
List<ReportDetailVO> getDetailsPage(IPage<ReportDetailVO> page, @Param("ew") Wrapper query);
List<ReportDetailVO> getDetailsPage(IPage<ReportDetailVO> page, @Param("ew") Wrapper<ReportDetailVO> query);
}

21
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportStockMapeer.java

@ -0,0 +1,21 @@
package com.logpm.report.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.vo.StockDetailsVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author zhaoqiaobo
* @create 2024-03-06 15:54
*/
@Mapper
public interface ReportStockMapeer extends BaseMapper {
List<StockDetailsVO> getDetailPage(IPage<StockDetailsVO> page,@Param("ew") QueryWrapper<StockDetailsVO> queryWrapper);
}

27
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportStockMapper.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.report.mapper.ReportStockMapeer">
<select id="getDetailPage" resultType="com.logpm.report.vo.StockDetailsVO">
select *
from (select t.warehouse_name,
t.market_name,
case
when t.service_type = 2 then '市内库存品'
when t.service_type = 3 then '自提库存品' end service_type,
t.cargo_number,
t.description_goods,
t.quantity_stock,
t.outbound_quantity,
t.quantity_stock - t.outbound_quantity current_quantity,
t.quantity_occupied,
t.quantity_stock - t.outbound_quantity - t.quantity_occupied usable_quantity,
lwug.allocation_title
from logpm_distribution_stock_list t
left join (select group_concat(t.allocation_title) allocation_title, t.association_value
from logpm_warehouse_updown_goods t
where t.association_type = 4
group by t.association_value) lwug on lwug.association_value = t.cargo_number
) t ${ew.customSqlSegment}
</select>
</mapper>

35
blade-service/logpm-report/src/main/java/com/logpm/report/reader/BillLoadingDetailsReader.java

@ -0,0 +1,35 @@
package com.logpm.report.reader;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.report.mapper.ReportBillLoadingMapper;
import com.logpm.report.service.ExportReaderService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* @author zhaoqiaobo
* @create 2024-03-08 9:50
*/
@Component
public class BillLoadingDetailsReader implements ExportReaderService {
@Resource
private ReportBillLoadingMapper billLoadingMapper;
@Override
public Long getCount(QueryWrapper query) {
Page page = new Page(1, 1);
billLoadingMapper.getDetailsPage(page, query);
return page.getTotal();
}
@Override
public List<T> findList(Page page, QueryWrapper query) {
return billLoadingMapper.getDetailsPage(page, query);
}
}

36
blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryStockReader.java

@ -0,0 +1,36 @@
package com.logpm.report.reader;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.report.mapper.ReportStockMapeer;
import com.logpm.report.service.ExportReaderService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
*
* @author zhaoqiaobo
* @create 2024-03-08 9:50
*/
@Component
public class DeliveryStockReader implements ExportReaderService {
@Resource
private ReportStockMapeer reportStockMapeer;
@Override
public Long getCount(QueryWrapper query) {
Page page = new Page(1, 1);
reportStockMapeer.getDetailPage(page, query);
return page.getTotal();
}
@Override
public List<T> findList(Page page, QueryWrapper query) {
return reportStockMapeer.getDetailPage(page,query);
}
}

7
blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportBillLoadingAsyncService.java

@ -1,7 +1,11 @@
package com.logpm.report.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.excel.BillLoadingReportExcel;
import com.logpm.report.vo.BillLoadingDetailsVO;
import org.springblade.core.mp.support.Query;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
@ -15,4 +19,7 @@ public interface IReportBillLoadingAsyncService {
*/
List<BillLoadingReportExcel> exportBillLoading(Map<String, Object> param);
IPage<BillLoadingDetailsVO> detailsPage(BillLoadingDetailsVO vo, Query query);
void exportDetails(HttpServletResponse response, BillLoadingDetailsVO vo);
}

20
blade-service/logpm-report/src/main/java/com/logpm/report/service/ReportStockService.java

@ -0,0 +1,20 @@
package com.logpm.report.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.vo.StockDetailsVO;
import org.springblade.core.mp.support.Query;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author zhaoqiaobo
* @create 2024-03-06 15:51
*/
public interface ReportStockService {
IPage<StockDetailsVO> detailsPage(StockDetailsVO vo, Query query);
void exportDetails(HttpServletResponse response, StockDetailsVO vo) throws InterruptedException, IOException;
}

63
blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportBillLoadingAsyncService.java

@ -1,19 +1,34 @@
package com.logpm.report.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.excel.BillLoadingReportExcel;
import com.logpm.report.mapper.ReportBillLoadingMapper;
import com.logpm.report.reader.BillLoadingDetailsReader;
import com.logpm.report.service.IReportBillLoadingAsyncService;
import com.logpm.report.util.ReportExcelUtil;
import com.logpm.report.vo.BillLoadingDetailsVO;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.system.entity.User;
import org.springblade.system.feign.IUserClient;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Log4j2
@Service
@ -22,6 +37,8 @@ public class ReportBillLoadingAsyncService implements IReportBillLoadingAsyncSer
private ReportBillLoadingMapper reportBillLoadingMapper;
private final BillLoadingDetailsReader billLoadingDetailsReader;
private final IUserClient userClient;
/**
* @param param
@ -31,8 +48,46 @@ public class ReportBillLoadingAsyncService implements IReportBillLoadingAsyncSer
@Async
public List<BillLoadingReportExcel> exportBillLoading(Map<String, Object> param) {
List<BillLoadingReportExcel> list = reportBillLoadingMapper.exportBillLoading(param);
log.info("导出数据条数:{}",list.size());
list.stream().forEach(l->l.setAmountToFee(l.getForkliftFee()+l.getAddValueFee()+l.getStorageFee()+l.getCollectPaymentFee()+l.getTransportFee()));
log.info("导出数据条数:{}", list.size());
list.stream().forEach(l -> l.setAmountToFee(l.getForkliftFee() + l.getAddValueFee() + l.getStorageFee() + l.getCollectPaymentFee() + l.getTransportFee()));
return list;
}
@Override
public IPage<BillLoadingDetailsVO> detailsPage(BillLoadingDetailsVO vo, Query query) {
IPage<BillLoadingDetailsVO> page = Condition.getPage(query);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<BillLoadingDetailsVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, BillLoadingDetailsVO.class);
List<BillLoadingDetailsVO> detailsPage = reportBillLoadingMapper.getDetailsPage(page, queryWrapper);
if (CollUtil.isNotEmpty(detailsPage)) {
// 组装数据批量去查询用户名称
Set<String> userIds = new HashSet<>();
for (BillLoadingDetailsVO detailsVO : detailsPage) {
if (StrUtil.isNotBlank(detailsVO.getScanUser())) {
userIds.add(detailsVO.getScanUser());
}
if (StrUtil.isNotBlank(detailsVO.getExamineUser())) {
userIds.add(detailsVO.getExamineUser());
}
}
R<List<User>> listR = userClient.userInfoByIds(AuthUtil.getTenantId(), CollUtil.join(userIds, ","));
if(ObjectUtil.equal(200,listR.getCode())){
List<User> data = listR.getData();
Map<Long, String> collect = data.stream().collect(Collectors.toMap(User::getId, User::getName));
for (BillLoadingDetailsVO detailsVO : detailsPage) {
detailsVO.setScanUser(collect.get(detailsVO.getScanUser()));
detailsVO.setExamineUser(collect.get(detailsVO.getExamineUser()));
}
}
}
return page.setRecords(detailsPage);
}
@Override
public void exportDetails(HttpServletResponse response, BillLoadingDetailsVO vo) {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<BillLoadingDetailsVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, BillLoadingDetailsVO.class);
new ReportExcelUtil().export(response, billLoadingDetailsReader, BillLoadingDetailsVO.class, queryWrapper, "自提明细");
}
}

6
blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportDeliverServiceImpl.java

@ -53,7 +53,7 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
public IPage<ReportCustomerVO> customerPage(ReportCustomerVO vo, Query query) {
IPage<ReportCustomerVO> page = Condition.getPage(query);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
QueryWrapper<ReportCustomerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportCustomerVO.class);
return page.setRecords(reportDeliverMapeer.getCustomerPage(page, queryWrapper));
}
@ -68,14 +68,14 @@ public class ReportDeliverServiceImpl implements ReportDeliverService {
public IPage<ReportDetailVO> detailsPage(ReportDetailVO vo,Query query) {
IPage<ReportDetailVO> page = Condition.getPage(query);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
QueryWrapper<ReportDetailVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDetailVO.class);
return page.setRecords(reportDeliverMapeer.getDetailsPage(page, queryWrapper));
}
@Override
public void exportDetails(HttpServletResponse response, ReportDetailVO vo) throws InterruptedException, IOException {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
QueryWrapper<ReportDetailVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDetailVO.class);
new ReportExcelUtil().export(response, deliveryDetailReader, ReportDetailVO.class, queryWrapper, "配送明细报表");
}

46
blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportStockServiceImpl.java

@ -0,0 +1,46 @@
package com.logpm.report.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.mapper.ReportStockMapeer;
import com.logpm.report.reader.DeliveryStockReader;
import com.logpm.report.service.ReportStockService;
import com.logpm.report.util.ReportExcelUtil;
import com.logpm.report.vo.StockDetailsVO;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author zhaoqiaobo
* @create 2024-03-06 15:52
*/
@Service
@AllArgsConstructor
public class ReportStockServiceImpl implements ReportStockService {
private final ReportStockMapeer reportStockMapeer;
private final DeliveryStockReader deliveryStockReader;
@Override
public IPage<StockDetailsVO> detailsPage(StockDetailsVO vo, Query query) {
IPage<StockDetailsVO> page = Condition.getPage(query);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<StockDetailsVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, StockDetailsVO.class);
return page.setRecords(reportStockMapeer.getDetailPage(page, queryWrapper));
}
@Override
public void exportDetails(HttpServletResponse response,StockDetailsVO vo) throws InterruptedException, IOException {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<StockDetailsVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, StockDetailsVO.class);
new ReportExcelUtil().export(response, deliveryStockReader, StockDetailsVO.class, queryWrapper, "库存品表");
}
}

104
blade-service/logpm-report/src/main/java/com/logpm/report/vo/BillLoadingDetailsVO.java

@ -0,0 +1,104 @@
package com.logpm.report.vo;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 自提明细 报表 vo
*
* @author zhaoqiaobo
* @create 2024-03-06 16:02
*/
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
@ApiModel(value = "自提明细报表", description = "自提明细报表")
@Data
public class BillLoadingDetailsVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "自提批次号")
@ExcelProperty("自提批次号")
private String pickupBatch;
@ApiModelProperty(value = "仓库")
@ExcelProperty("仓库")
private String warehouse;
@ApiModelProperty(value = "收货单位")
@ExcelProperty("收货单位")
private String consigneeUnit;
@ApiModelProperty(value = "运单号")
@ExcelProperty("运单号")
private String waybillNumber;
@ApiModelProperty(value = "订单自编码")
@ExcelProperty("订单自编码")
private String orderCode;
@ApiModelProperty(value = "包条")
@ExcelProperty("包条")
private String packetBarCode;
@ApiModelProperty(value = "客户车次号")
@ExcelProperty("客户车次号")
private String trainNumber;
@ApiModelProperty(value = "一级品")
@ExcelProperty("一级品")
private String firsts;
@ApiModelProperty(value = "二级品")
@ExcelProperty("二级品")
private String second;
@ApiModelProperty(value = "三级品")
@ExcelProperty("三级品")
private String thirdProduct;
@ApiModelProperty(value = "物料编码")
@ExcelProperty("物料编码")
private String materialCode;
@ApiModelProperty(value = "物料名称")
@ExcelProperty("物料名称")
private String materialName;
@ApiModelProperty(value = "始发仓入库日期")
@ExcelProperty("始发仓入库日期")
private String startWareInTime;
@ApiModelProperty(value = "始发仓发货日期")
@ExcelProperty("始发仓发货日期")
private String startWareOutTime;
@ApiModelProperty(value = "入库时间")
@ExcelProperty("入库时间")
private String warehouseEntryTimeEnd;
@ApiModelProperty(value = "提货扫码人")
@ExcelProperty("提货扫码人")
private String scanUser;
@ApiModelProperty(value = "提货扫描时间")
@ExcelProperty("提货扫描时间")
private String scanTime;
@ApiModelProperty(value = "文员复核时间")
@ExcelProperty("文员复核时间")
private String examineTime;
@ApiModelProperty(value = "文员复核人")
@ExcelProperty("文员复核人")
private String examineUser;
}

72
blade-service/logpm-report/src/main/java/com/logpm/report/vo/StockDetailsVO.java

@ -0,0 +1,72 @@
package com.logpm.report.vo;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 库存品表 vo
*
* @author zhaoqiaobo
* @create 2024-03-06 16:02
*/
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
@ApiModel(value = "库存品表", description = "库存品表")
@Data
public class StockDetailsVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "仓库")
@ExcelProperty("仓库")
private String warehouseName;
@ApiModelProperty(value = "商场名称")
@ExcelProperty("商场名称")
private String marketName;
@ApiModelProperty(value = "类型")
@ExcelProperty("类型")
private String serviceType;
@ApiModelProperty(value = "物料编码")
@ExcelProperty("物料编码")
private String cargoNumber;
@ApiModelProperty(value = "物料名称")
@ExcelProperty("物料名称")
private String descriptionGoods;
@ApiModelProperty(value = "入库总数")
@ExcelProperty("入库总数")
private String quantityStock;
@ApiModelProperty(value = "出库总数")
@ExcelProperty("出库总数")
private String outboundQuantity;
@ApiModelProperty(value = "当前库存")
@ExcelProperty("当前库存")
private String currentQuantity;
@ApiModelProperty(value = "占用数")
@ExcelProperty("占用数")
private String quantityOccupied;
@ApiModelProperty(value = "可用数")
@ExcelProperty("可用数")
private String usableQuantity;
@ApiModelProperty(value = "货位信息")
@ExcelProperty("货位信息")
private String allocationTitle;
}
Loading…
Cancel
Save