Browse Source

[fix]销售管理

销售出货通知前端列表页面:列表隐藏从【不含税总价(RMB)】至【含税总价】的字段
新增 导出销售出货单主表和子表数据实体类
修改销售出货通知导出全部和导出选择的数据的接口:统一调用导出销售出货通知单明细方法
新增 导出销售出货通知单明细方法方法,用于给导出销售出货单主表和子表数据实体类进行赋值操作,实现一个销售出货通知主表对应一条子表的形式
修改 根据出库单号批量查询销售出库详情方法,传入的集合加上非空判断
dev
liuxiaoxu 2 months ago
parent
commit
521b35e8b7
  1. 57
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesShippingInformController.java
  2. 190
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportSalesShippingInformDetailVo.java
  3. 6
      ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java
  4. 65
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java
  5. 6
      ruoyi-admin/src/main/resources/mapper/system/SysSalesShippingInformDetailMapper.xml
  6. 72
      ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html

57
ruoyi-admin/src/main/java/com/ruoyi/system/controller/SysSalesShippingInformController.java

@ -12,6 +12,7 @@ import com.ruoyi.system.domain.SysSalesOrder;
import com.ruoyi.system.domain.SysSalesOrderVo;
import com.ruoyi.system.domain.SysSalesShippingInformDetail;
import com.ruoyi.system.domain.Vo.ConfirmReceivingDetailVo;
import com.ruoyi.system.domain.Vo.ExportSalesShippingInformDetailVo;
import com.ruoyi.system.service.ISysSalesOrderService;
import com.ruoyi.system.service.ISysSalesShippingInformDetailService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
@ -82,20 +83,21 @@ public class SysSalesShippingInformController extends BaseController
public AjaxResult export(SysSalesShippingInform sysSalesShippingInform)
{
List<SysSalesShippingInform> list = sysSalesShippingInformService.selectSysSalesShippingInformList(sysSalesShippingInform);
if (!CollectionUtils.isEmpty(list)){
//批量遍历
List<String> collectOutOrderCodes = list.stream().map(SysSalesShippingInform::getOutOrderCode).collect(Collectors.toList());
Map<String, List<SysSalesShippingInformDetail>> detailMap = shippingInformDetailService.selectShippingInformDetailListByCodes(collectOutOrderCodes);
list.forEach(salesShippingInform -> {
salesShippingInform.setShippingInformDetailList(
detailMap.getOrDefault(salesShippingInform.getOutOrderCode(), Collections.emptyList())
);
});
}
ExcelUtil<SysSalesShippingInform> util = new ExcelUtil<SysSalesShippingInform>(SysSalesShippingInform.class);
return util.exportExcel(list, "销售出货通知数据","销售出货通知数据");
// if (!CollectionUtils.isEmpty(list)){
// //批量遍历
// List<String> collectOutOrderCodes = list.stream().map(SysSalesShippingInform::getOutOrderCode).collect(Collectors.toList());
// Map<String, List<SysSalesShippingInformDetail>> detailMap = shippingInformDetailService.selectShippingInformDetailListByCodes(collectOutOrderCodes);
//
// list.forEach(salesShippingInform -> {
// salesShippingInform.setShippingInformDetailList(
// detailMap.getOrDefault(salesShippingInform.getOutOrderCode(), Collections.emptyList())
// );
// });
// }
List<ExportSalesShippingInformDetailVo> exportSalesShippingInformDetailVos = sysSalesShippingInformService.exportShippingInformOrderDetailList(list);
ExcelUtil<ExportSalesShippingInformDetailVo> util = new ExcelUtil<ExportSalesShippingInformDetailVo>(ExportSalesShippingInformDetailVo.class);
return util.exportExcel(exportSalesShippingInformDetailVos, "销售出货通知数据");
}
/**
* 导出销售出货通知列表
@ -107,19 +109,20 @@ public class SysSalesShippingInformController extends BaseController
public AjaxResult export(@RequestBody String[] outOrderCodes)
{
List<SysSalesShippingInform> list = sysSalesShippingInformService.getExportListByNos(outOrderCodes);
if (!CollectionUtils.isEmpty(list)){
//批量遍历
List<String> collectOutOrderCodes = list.stream().map(SysSalesShippingInform::getOutOrderCode).collect(Collectors.toList());
Map<String, List<SysSalesShippingInformDetail>> detailMap = shippingInformDetailService.selectShippingInformDetailListByCodes(collectOutOrderCodes);
list.forEach(salesShippingInform -> {
salesShippingInform.setShippingInformDetailList(
detailMap.getOrDefault(salesShippingInform.getOutOrderCode(), Collections.emptyList())
);
});
}
ExcelUtil<SysSalesShippingInform> util = new ExcelUtil<SysSalesShippingInform>(SysSalesShippingInform.class);
return util.exportExcel(list, "销售出货通知数据","销售出货通知数据");
// if (!CollectionUtils.isEmpty(list)){
// //批量遍历
// List<String> collectOutOrderCodes = list.stream().map(SysSalesShippingInform::getOutOrderCode).collect(Collectors.toList());
// Map<String, List<SysSalesShippingInformDetail>> detailMap = shippingInformDetailService.selectShippingInformDetailListByCodes(collectOutOrderCodes);
//
// list.forEach(salesShippingInform -> {
// salesShippingInform.setShippingInformDetailList(
// detailMap.getOrDefault(salesShippingInform.getOutOrderCode(), Collections.emptyList())
// );
// });
// }
List<ExportSalesShippingInformDetailVo> exportSalesShippingInformDetailVos = sysSalesShippingInformService.exportShippingInformOrderDetailList(list);
ExcelUtil<ExportSalesShippingInformDetailVo> util = new ExcelUtil<ExportSalesShippingInformDetailVo>(ExportSalesShippingInformDetailVo.class);
return util.exportExcel(exportSalesShippingInformDetailVos, "销售出货通知数据");
}
/**

190
ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportSalesShippingInformDetailVo.java

@ -0,0 +1,190 @@
package com.ruoyi.system.domain.Vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 导出销售出货单主表和子表数据
* */
@Data
public class ExportSalesShippingInformDetailVo {
/** 出库单号 */
@Excel(name = "出库单号")
private String outOrderCode;
@Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 出库状态(0待仓库准备物料、1待售后维护设备1、2待业务确认发货、3待售后维护设备2、4待出库、5部分出库、6全部出库、7已出库、8已取消) */
// @Excel(name = "出库状态", readConverterExp = "0=待仓库准备物料、1待售后维护设备1、2待业务确认发货、3待售后维护设备2、4待出库、5部分出库、6全部出库、7已出库、8已取消")
@Excel(name = "出库状态", dictType = "warehouse_out_status")
private String warehouseOutStatus;
/** 关联销售订单号 */
@Excel(name = "关联销售订单号")
private String salesOrderCode;
/** 出库类型(0销售出库、1生产领料、2员工领料、3委外领料、4公司退货出库、5开发领料) */
@Excel(name = "出库类型", dictType = "warehouse_out_type")
private String warehouseOutType;
/** 客户代码/id */
@Excel(name = "客户ID")
private String customerId;
/** 客户名称 */
@Excel(name = "客户名称")
private String customerName;
/** 业务员 */
@Excel(name = "业务员")
private String businessMembers;
/** 物料合计 */
@Excel(name = "物料合计")
private Integer materialSum;
/** 数量合计 */
@Excel(name = "数量合计")
private Integer enterpriseSum;
/** 收货联系人 */
@Excel(name = "收货联系人(Ship To)")
private String customerContact;
/** 联系电话 */
@Excel(name = "收货联系人电话(Ship To)")
private String contactNumber;
/** 收货地址 */
@Excel(name = "收货地址(Ship To)")
private String customerContactAddress;
/** 收货联系人 */
@Excel(name = "收货联系人(Bill To)")
private String customerContactBillto;
/** 联系电话 */
@Excel(name = "联系电话(Bill To)")
private String contactNumberBillto;
/** 收货地址 */
@Excel(name = "收货地址(Bill To)")
private String contactAddressBillto;
/** 不含税总价(RMB) */
@Excel(name = "不含税总价")
private BigDecimal allPriceExcludingTaxRmb;
/** 不含税总价(美元) */
@Excel(name = "不含税总价")
private BigDecimal allPriceExcludingTaxDollar;
/** 含税总价(RMB) */
@Excel(name = "含税总价")
private BigDecimal allPriceIncludesTax;
/** 计划交付时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划交付时间", dateFormat = "yyyy-MM-dd")
private Date plannedDeliveryTime;
/** 客户验收时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "客户验收时间", dateFormat = "yyyy-MM-dd")
private Date acceptanceTime;
/** 付款条件 */
@Excel(name = "付款条件")
private String paymentCondition;
/** 交付条件 */
@Excel(name = "交付条件")
private String deliveryCondition;
/** 送货日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "送货日期", dateFormat = "yyyy-MM-dd")
private Date deliverTime;
/** 料号 */
@Excel(name = "料号")
private String materialNo;
/** 物料名称 */
@Excel(name = "物料名称")
private String materialName;
/** 物料图片地址 */
@Excel(name = "物料图片地址")
private String materialPhotourl;
/** 物料品牌 */
@Excel(name = "物料品牌")
private String materialBrand;
/** 物料单位 */
@Excel(name = "物料单位")
private String materialUnit;
/** 物料描述 */
@Excel(name = "物料描述")
private String materialDescribe;
/** 物料加工方式 */
@Excel(name = "物料加工方式",dictType = "processMethod")
private String materialProcessMethod;
/** 物料型号 */
@Excel(name = "物料型号")
private String materialModel;
/** 订单数 */
@Excel(name = "订单数")
private Integer makeNum;
/** 本次出货数 */
@Excel(name = "本次出货数")
private Integer thisShippingNum;
/** 已出库数 */
@Excel(name = "已出库数")
private Integer hasOutOrderNum;
/** 本次验收数 */
@Excel(name = "本次验收数")
private Integer thisCheckNum;
/** 已验收数 */
@Excel(name = "已验收数")
private Integer hasCheckNum;
/** 已申请出货数 */
@Excel(name = "已申请出货数")
private Integer hasShippingNum;
/** 已完成数 */
@Excel(name = "已完成数")
private Integer hasCompleteNum;
/** 本次收货数 */
@Excel(name = "本次收货数")
private Integer thisReceivingNum;
/** 已收货数 */
@Excel(name = "已收货数")
private Integer hasReceivingNum;
}

6
ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java

@ -7,6 +7,7 @@ import com.ruoyi.system.domain.SysSalesOrderChild;
import com.ruoyi.system.domain.SysSalesShippingInform;
import com.ruoyi.system.domain.SysSalesShippingInformDetail;
import com.ruoyi.system.domain.Vo.ConfirmReceivingDetailVo;
import com.ruoyi.system.domain.Vo.ExportSalesShippingInformDetailVo;
import javax.servlet.http.HttpServletResponse;
@ -162,4 +163,9 @@ public interface ISysSalesShippingInformService
* 根据出库单号查询销售出货通知单
* */
SysSalesShippingInform selectSysSalesShippingInformByCode(String outOrderCode);
/**
* 导出销售出货通知单明细
* */
List<ExportSalesShippingInformDetailVo> exportShippingInformOrderDetailList(List<SysSalesShippingInform> list);
}

65
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java

@ -6,6 +6,7 @@ import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.alibaba.excel.EasyExcel;
@ -27,6 +28,7 @@ import com.ruoyi.sales.domain.SalesShippingInformation;
import com.ruoyi.sales.mapper.SalesShippingInformationMapper;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.Vo.ConfirmReceivingDetailVo;
import com.ruoyi.system.domain.Vo.ExportSalesShippingInformDetailVo;
import com.ruoyi.system.dto.ExportShippingInformOrderDto;
import com.ruoyi.system.dto.ExportShippingInvoiceDto;
import com.ruoyi.system.dto.ExportShippingOrderDto;
@ -125,6 +127,7 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
return sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode);
}
/**
* 新增销售出货通知
*
@ -222,7 +225,6 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
List<SysSalesOrder> sysSalesOrders = sysSalesOrderMapper.selectBatchSalesOrderById(salesOrderIdList);
String salesOrderCodes = getSalesOrderCodes(sysSalesOrders);
sysSalesShippingInform.setOutOrderCode(outOrderCode);
@ -1558,4 +1560,65 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor
throw new BusinessException("插入销售出货资料单失败");
}
}
/**
* 导出销售出货通知单明细
* */
@Override
public List<ExportSalesShippingInformDetailVo> exportShippingInformOrderDetailList(List<SysSalesShippingInform> list) {
List<String> collectOutOrderCodes = list.stream().map(SysSalesShippingInform::getOutOrderCode).collect(Collectors.toList());
List<SysSalesShippingInformDetail> sysSalesShippingInformDetails = shippingInformDetailMapper.selectSalesShippingInformDetailListByCodes(collectOutOrderCodes);
Map<String, SysSalesShippingInform> salesShippingInformMap = list.stream().collect(Collectors.toMap(SysSalesShippingInform::getOutOrderCode, Function.identity()));
List<ExportSalesShippingInformDetailVo> exportSalesShippingInformDetailVos = new ArrayList<>();
for (SysSalesShippingInformDetail sysSalesShippingInformDetail : sysSalesShippingInformDetails) {
ExportSalesShippingInformDetailVo exportSalesShippingInformDetailVo = new ExportSalesShippingInformDetailVo();
SysSalesShippingInform tempSalesShippingInform = salesShippingInformMap.get(sysSalesShippingInformDetail.getOutOrderCode());
exportSalesShippingInformDetailVo.setOutOrderCode(tempSalesShippingInform.getOutOrderCode());
exportSalesShippingInformDetailVo.setSalesOrderCode(tempSalesShippingInform.getSalesOrderCode());
exportSalesShippingInformDetailVo.setCustomerId(tempSalesShippingInform.getCustomerId());
exportSalesShippingInformDetailVo.setCustomerName(tempSalesShippingInform.getCustomerName());
exportSalesShippingInformDetailVo.setCustomerContact(tempSalesShippingInform.getCustomerContact());
exportSalesShippingInformDetailVo.setCustomerContactAddress(tempSalesShippingInform.getCustomerContactAddress());
exportSalesShippingInformDetailVo.setCustomerContactBillto(tempSalesShippingInform.getCustomerContactBillto());
exportSalesShippingInformDetailVo.setContactNumber(tempSalesShippingInform.getContactNumber());
exportSalesShippingInformDetailVo.setContactNumberBillto(tempSalesShippingInform.getContactNumberBillto());
exportSalesShippingInformDetailVo.setContactAddressBillto(tempSalesShippingInform.getContactAddressBillto());
exportSalesShippingInformDetailVo.setDeliveryCondition(tempSalesShippingInform.getDeliveryCondition());
exportSalesShippingInformDetailVo.setDeliverTime(tempSalesShippingInform.getDeliverTime());
exportSalesShippingInformDetailVo.setPaymentCondition(tempSalesShippingInform.getPaymentCondition());
exportSalesShippingInformDetailVo.setPlannedDeliveryTime(tempSalesShippingInform.getPlannedDeliveryTime());
exportSalesShippingInformDetailVo.setAllPriceIncludesTax(tempSalesShippingInform.getAllPriceIncludesTax());
exportSalesShippingInformDetailVo.setAllPriceExcludingTaxDollar(tempSalesShippingInform.getAllPriceExcludingTaxDollar());
exportSalesShippingInformDetailVo.setAllPriceExcludingTaxRmb(tempSalesShippingInform.getAllPriceExcludingTaxRmb());
exportSalesShippingInformDetailVo.setBusinessMembers(tempSalesShippingInform.getBusinessMembers());
exportSalesShippingInformDetailVo.setWarehouseOutType(tempSalesShippingInform.getWarehouseOutType());
exportSalesShippingInformDetailVo.setWarehouseOutStatus(tempSalesShippingInform.getWarehouseOutStatus());
exportSalesShippingInformDetailVo.setEnterpriseSum(tempSalesShippingInform.getEnterpriseSum());
exportSalesShippingInformDetailVo.setMaterialSum(tempSalesShippingInform.getMaterialSum());
exportSalesShippingInformDetailVo.setCreateTime(tempSalesShippingInform.getCreateTime());
exportSalesShippingInformDetailVo.setMaterialNo(sysSalesShippingInformDetail.getMaterialNo());
exportSalesShippingInformDetailVo.setMaterialName(sysSalesShippingInformDetail.getMaterialName());
exportSalesShippingInformDetailVo.setMaterialUnit(sysSalesShippingInformDetail.getMaterialUnit());
exportSalesShippingInformDetailVo.setMaterialDescribe(sysSalesShippingInformDetail.getMaterialDescribe());
exportSalesShippingInformDetailVo.setMaterialBrand(sysSalesShippingInformDetail.getMaterialBrand());
exportSalesShippingInformDetailVo.setMaterialProcessMethod(sysSalesShippingInformDetail.getMaterialProcessMethod());
exportSalesShippingInformDetailVo.setMaterialModel(sysSalesShippingInformDetail.getMaterialModel());
exportSalesShippingInformDetailVo.setMakeNum(sysSalesShippingInformDetail.getMakeNum());
exportSalesShippingInformDetailVo.setThisCheckNum(sysSalesShippingInformDetail.getThisCheckNum());
exportSalesShippingInformDetailVo.setHasCheckNum(sysSalesShippingInformDetail.getHasCheckNum());
exportSalesShippingInformDetailVo.setThisShippingNum(sysSalesShippingInformDetail.getThisShippingNum());
exportSalesShippingInformDetailVo.setHasShippingNum(sysSalesShippingInformDetail.getHasShippingNum());
exportSalesShippingInformDetailVo.setThisReceivingNum(sysSalesShippingInformDetail.getThisReceivingNum());
exportSalesShippingInformDetailVo.setHasReceivingNum(sysSalesShippingInformDetail.getHasReceivingNum());
exportSalesShippingInformDetailVos.add(exportSalesShippingInformDetailVo);
}
return exportSalesShippingInformDetailVos;
}
}

6
ruoyi-admin/src/main/resources/mapper/system/SysSalesShippingInformDetailMapper.xml

@ -61,10 +61,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSalesShippingInformDetailListByCodes" parameterType="String" resultMap="SysSalesShippingInformDetailResult">
<include refid="selectSysSalesShippingInformDetailVo"/>
where out_order_code in
<where>
<if test="list != null and list.size > 0">
out_order_code in
<foreach collection="list" item="outOrderCode" open="(" separator="," close=")">
#{outOrderCode}
</foreach>
</if>
</where>
</select>

72
ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html

@ -213,42 +213,42 @@
}
},
{
title: '不含税总价(RMB)',
field: 'allPriceExcludingTaxRmb',
align: 'center',
footerFormatter: function (value) {
var sum = 0;
for (var i in value) {
sum += parseFloat(value[i].allPriceExcludingTaxRmb)|| 0;;
}
return "总不含税总价: " + sum.toFixed(2);
}
},
{
title: '不含税总价(美元)',
field: 'allPriceExcludingTaxDollar',
align: 'center',
footerFormatter: function (value) {
var sum = 0;
for (var i in value) {
sum += parseFloat(value[i].allPriceExcludingTaxDollar)|| 0;;
}
return "总不含税总价: " + sum.toFixed(2);
}
},
{
title: '含税总价',
field: 'allPriceIncludesTax',
align: 'center',
footerFormatter: function (value) {
var sum = 0;
for (var i in value) {
sum += parseFloat(value[i].allPriceIncludesTax)|| 0;;
}
return "总含税总价: " + sum.toFixed(2);
}
},
// {
// title: '不含税总价(RMB)',
// field: 'allPriceExcludingTaxRmb',
// align: 'center',
// footerFormatter: function (value) {
// var sum = 0;
// for (var i in value) {
// sum += parseFloat(value[i].allPriceExcludingTaxRmb)|| 0;;
// }
// return "总不含税总价: " + sum.toFixed(2);
// }
// },
// {
// title: '不含税总价(美元)',
// field: 'allPriceExcludingTaxDollar',
// align: 'center',
// footerFormatter: function (value) {
// var sum = 0;
// for (var i in value) {
// sum += parseFloat(value[i].allPriceExcludingTaxDollar)|| 0;;
// }
// return "总不含税总价: " + sum.toFixed(2);
// }
// },
// {
// title: '含税总价',
// field: 'allPriceIncludesTax',
// align: 'center',
// footerFormatter: function (value) {
// var sum = 0;
// for (var i in value) {
// sum += parseFloat(value[i].allPriceIncludesTax)|| 0;;
// }
// return "总含税总价: " + sum.toFixed(2);
// }
// },
// {
// title: '计划交付时间',
// field: 'plannedDeliveryTime',

Loading…
Cancel
Save