Browse Source

[feat] 售后管理

按照万材要求,售后管理售后维护设备出库新增导出功能,支持部分行和全部行导出,导出更多数据
新增导出所有和选择导出后端接口
新增 导出售后管理售后维护设备出库明细方法
新增根据出货设备查询售后维护设备出库单集合方法
新增导出售后维护设备出库明细
dev
liuxiaoxu 2 days ago
parent
commit
6896518944
  1. 23
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java
  2. 139
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ExportAftersalesOutOrderVo.java
  3. 5
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderDetailMapper.java
  4. 5
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderMapper.java
  5. 11
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java
  6. 71
      ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java
  7. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesShippingInformDetailMapper.java
  8. 8
      ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderDetailMapper.xml
  9. 10
      ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderMapper.xml
  10. 6
      ruoyi-admin/src/main/resources/mapper/system/SysSalesShippingInformDetailMapper.xml
  11. 31
      ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html

23
ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java

@ -6,8 +6,10 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.ruoyi.aftersales.domain.AfterSalesShippingDevice;
import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail;
import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo;
import com.ruoyi.aftersales.domain.vo.ExportAftersalesOutOrderVo;
import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO;
import com.ruoyi.aftersales.service.IAftersalesOutOrderDetailService;
import com.ruoyi.common.utils.StringUtils;
@ -82,11 +84,24 @@ public class AftersalesOutOrderController extends BaseController
@Log(title = "售后维护设备出库", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(AftersalesOutOrder aftersalesOutOrder)
public AjaxResult export(AftersalesOutOrder aftersalesOutOrder,String ids)
{
List<AftersalesOutOrder> list = aftersalesOutOrderService.selectAftersalesOutOrderList(aftersalesOutOrder);
ExcelUtil<AftersalesOutOrder> util = new ExcelUtil<AftersalesOutOrder>(AftersalesOutOrder.class);
return util.exportExcel(list, "售后维护设备出库数据");
if (org.springframework.util.StringUtils.isEmpty(ids)){
List<AftersalesOutOrder> list = aftersalesOutOrderService.selectAftersalesOutOrderList(aftersalesOutOrder);
List<ExportAftersalesOutOrderVo> exportAftersalesOutOrderVos = aftersalesOutOrderService.exportAftersalesOutOrderList(list);
ExcelUtil<ExportAftersalesOutOrderVo> util = new ExcelUtil<ExportAftersalesOutOrderVo>(ExportAftersalesOutOrderVo.class);
return util.exportExcel(exportAftersalesOutOrderVos, "售后维护设备出库数据");
}else {
String[] outOrderCodes = ids.split(",");
List<AftersalesOutOrder> list = aftersalesOutOrderService.selectAftersalesOutOrderListByCodes(outOrderCodes);
List<ExportAftersalesOutOrderVo> exportAftersalesOutOrderVos = aftersalesOutOrderService.exportAftersalesOutOrderList(list);
ExcelUtil<ExportAftersalesOutOrderVo> util = new ExcelUtil<ExportAftersalesOutOrderVo>(ExportAftersalesOutOrderVo.class);
return util.exportExcel(exportAftersalesOutOrderVos, "售后维护设备出库数据");
}
}
/**

139
ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ExportAftersalesOutOrderVo.java

@ -0,0 +1,139 @@
package com.ruoyi.aftersales.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
* 导出售后维护设备出库明细
* */
@Data
public class ExportAftersalesOutOrderVo {
/** 出库单号 */
@Excel(name = "出库单号")
private String outOrderCode;
/** 出库状态(0待仓库准备物料、1待售后维护设备1、2待业务确认发货、3待售后维护设备2、4待出库、5部分出库、6全部出库、7已出库、8已取消、9待收货、10待验收、11部分验收、12全部验收、13部分收货、14全部收货) */
@Excel(name = "出库状态",dictType = "warehouse_out_status")
private String warehouseOutStatus;
/** 关联订单号(多种订单类型) */
@Excel(name = "关联订单号")
private String relatedOrderCode;
/** 关联销售订单编号 */
private String salesOrderCode;
/** 出库订单类型(0销售出货单、1生产领料单、2员工领料单、3委外领料单、4退换货单、5开发领料单) */
@Excel(name = "出库订单类型",dictType = "warehouse_order_type")
private String warehouseOrderType;
/** 出库类型(0销售出库、1生产领料、2员工领料、3委外领料、4公司退货出库、5开发领料) */
@Excel(name = "出库类型",dictType = "warehouse_out_type")
private String warehouseOutType;
/** 业务人员 */
@Excel(name = "业务人员")
private String businessName;
/** 物料数合计 */
@Excel(name = "物料数合计")
private Integer materialSum;
/** 数量合计 */
@Excel(name = "数量合计")
private Integer enterpriseSum;
/** 出库时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "出库时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date outOrderTime;
/** 计划交付时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划交付时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date planDeliveryTime;
/** 交付条件 */
@Excel(name = "交付条件")
private String deliveryCondition;
/** 申请人 */
@Excel(name = "申请人")
private String applyName;
/** 收货地址 */
@Excel(name = "收货地址")
private String deliveryAddress;
/** 收货联系人 */
@Excel(name = "收货联系人")
private String deliveryName;
/** 收货电话 */
@Excel(name = "收货电话")
private String deliveryNumber;
/** 料号 */
@Excel(name = "料号")
private String materialNo;
/** 物料名称 */
@Excel(name = "物料名称")
private String materialName;
/** 物料品牌 */
@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 = "出库货设备Id")
// private String shippingDeviceId;
//
// @Excel(name = "SN号")
// private String snCode;
//
// @Excel(name = "本次出货数")
// private Integer thisShippingNum;
//
// @Excel(name = "已出库数")
// private Integer hasOutOrderNum;
//
// @Excel(name = "已收货数")
// private Integer hasReceivingNum;
//
// @Excel(name = "已验收数")
// private Integer hasCheckNum;
//
// @Excel(name = "本次验收数")
// private Integer thisCheckNum;
}

5
ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderDetailMapper.java

@ -90,4 +90,9 @@ public interface AftersalesOutOrderDetailMapper
* 根据出库单号和物料号更新出库单详情
* */
int updateAftersalesOutOrderDetailByCodeAndNo(AftersalesOutOrderDetail aftersalesOutOrderDetail);
/**
* 根据出库单号集合查询出库单详情集合
* */
List<AftersalesOutOrderDetail> selectAftersalesOutOrderDetailListByCodeList(List<String> collectOutOrderCodes);
}

5
ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesOutOrderMapper.java

@ -84,4 +84,9 @@ public interface AftersalesOutOrderMapper
* @return 结果
*/
public int restoreAftersalesOutOrderById(Long outOrderId);
/**
* 根据售后维护设备出库单号查询售后维护设备出库
* */
List<AftersalesOutOrder> selectAftersalesOutOrderListByCodes(String[] outOrderCodes);
}

11
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java

@ -4,6 +4,7 @@ import java.util.List;
import com.ruoyi.aftersales.domain.AftersalesOutOrder;
import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail;
import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo;
import com.ruoyi.aftersales.domain.vo.ExportAftersalesOutOrderVo;
import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO;
import com.ruoyi.system.domain.SysSalesShippingInform;
@ -158,4 +159,14 @@ public interface IAftersalesOutOrderService
* @return
*/
int updateDetailAftersalesOutOrder(AftersalesOutOrder aftersalesOutOrder);
/**
* 导出售后维护设备出库明细
* */
List<ExportAftersalesOutOrderVo> exportAftersalesOutOrderList(List<AftersalesOutOrder> list);
/**
* 根据售后维护设备出库单号查询售后维护设备出库
* */
List<AftersalesOutOrder> selectAftersalesOutOrderListByCodes(String[] outOrderCodes);
}

71
ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java

@ -7,6 +7,7 @@ import java.util.stream.Collectors;
import com.ruoyi.aftersales.domain.AfterSalesShippingDevice;
import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail;
import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo;
import com.ruoyi.aftersales.domain.vo.ExportAftersalesOutOrderVo;
import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO;
import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper;
import com.ruoyi.aftersales.mapper.AftersalesOutOrderDetailMapper;
@ -1032,4 +1033,74 @@ public class AftersalesOutOrderServiceImpl implements IAftersalesOutOrderService
public int updateDetailAftersalesOutOrder(AftersalesOutOrder aftersalesOutOrder) {
return 1;
}
/**
* 根据售后维护设备出库单号查询售后维护设备出库
* */
@Override
public List<AftersalesOutOrder> selectAftersalesOutOrderListByCodes(String[] outOrderCodes) {
List<AftersalesOutOrder> aftersalesOutOrders = aftersalesOutOrderMapper.selectAftersalesOutOrderListByCodes(outOrderCodes);
return aftersalesOutOrders;
}
/**
* 导出售后维护设备出库明细
* */
@Override
public List<ExportAftersalesOutOrderVo> exportAftersalesOutOrderList(List<AftersalesOutOrder> list) {
// 获取所有的出库单号
List<String> collectOutOrderCodes = list.stream()
.map(AftersalesOutOrder::getOutOrderCode)
.collect(Collectors.toList());
// 根据出库单号查询对应的物料详情列表
List<AftersalesOutOrderDetail> aftersalesOutOrderDetails = aftersalesOutOrderDetailMapper.selectAftersalesOutOrderDetailListByCodeList(collectOutOrderCodes);
// 创建一个 AftersalesOutOrder 的 Map,键为出库单号
Map<String, AftersalesOutOrder> aftersalesOutOrderMap = list.stream()
.collect(Collectors.toMap(AftersalesOutOrder::getOutOrderCode, Function.identity()));
// 初始化导出列表
List<ExportAftersalesOutOrderVo> exportAftersalesOutOrderVos = new ArrayList<>();
for (AftersalesOutOrderDetail detail : aftersalesOutOrderDetails) {
ExportAftersalesOutOrderVo exportVo = new ExportAftersalesOutOrderVo();
// 从 AftersalesOutOrderDetail 填充数据
exportVo.setMaterialNo(detail.getMaterialNo());
exportVo.setMaterialName(detail.getMaterialName());
exportVo.setMaterialBrand(detail.getMaterialBrand());
exportVo.setMaterialUnit(detail.getMaterialUnit());
exportVo.setMaterialDescribe(detail.getMaterialDescribe());
exportVo.setMaterialProcessMethod(detail.getMaterialProcessMethod());
exportVo.setMaterialModel(detail.getMaterialModel());
// 从 AftersalesOutOrder 填充数据,通过出库单号进行关联
AftersalesOutOrder order = aftersalesOutOrderMap.get(detail.getOutOrderCode());
if (order != null) {
exportVo.setOutOrderCode(order.getOutOrderCode());
exportVo.setWarehouseOutStatus(order.getWarehouseOutStatus());
exportVo.setRelatedOrderCode(order.getRelatedOrderCode());
exportVo.setSalesOrderCode(order.getSalesOrderCode());
exportVo.setWarehouseOrderType(order.getWarehouseOrderType());
exportVo.setWarehouseOutType(order.getWarehouseOutType());
exportVo.setBusinessName(order.getBusinessName());
exportVo.setMaterialSum(order.getMaterialSum());
exportVo.setEnterpriseSum(order.getEnterpriseSum());
exportVo.setOutOrderTime(order.getOutOrderTime());
exportVo.setPlanDeliveryTime(order.getPlanDeliveryTime());
exportVo.setDeliveryCondition(order.getDeliveryCondition());
exportVo.setApplyName(order.getApplyName());
exportVo.setDeliveryAddress(order.getDeliveryAddress());
exportVo.setDeliveryName(order.getDeliveryName());
exportVo.setDeliveryNumber(order.getDeliveryNumber());
}
// 添加到结果列表
exportAftersalesOutOrderVos.add(exportVo);
}
return exportAftersalesOutOrderVos;
}
}

5
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/SysSalesShippingInformDetailMapper.java

@ -95,4 +95,9 @@ public interface SysSalesShippingInformDetailMapper
* 根据出库单号批量查询销售出库详情
* */
List<SysSalesShippingInformDetail> selectSalesShippingInformDetailListByCodes(List<String> collectOutOrderCodes);
/**
* 根据出库单号和物料号查询销售出库详情
* */
SysSalesShippingInformDetail selectSysSalesShippingInformDetailByCodeAndNo(SysSalesShippingInformDetail tempShippingInformDetail);
}

8
ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderDetailMapper.xml

@ -77,6 +77,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where out_order_code = #{outOrderCode}
</select>
<select id="selectAftersalesOutOrderDetailListByCodeList" parameterType="String" resultMap="AftersalesOutOrderDetailResult">
<include refid="selectAftersalesOutOrderDetailVo"/>
where out_order_code in
<foreach collection="list" item="outOrderCode" index="index" open="(" separator="," close=")">
#{outOrderCode}
</foreach>
</select>
<insert id="insertAftersalesOutOrderDetail" parameterType="AftersalesOutOrderDetail" useGeneratedKeys="true" keyProperty="outOrderDetailId">
insert into aftersales_out_order_detail
<trim prefix="(" suffix=")" suffixOverrides=",">

10
ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesOutOrderMapper.xml

@ -67,7 +67,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectAftersalesOutOrderVo"/>
where out_order_id = #{outOrderId}
</select>
<select id="selectAftersalesOutOrderListByCodes" parameterType="String" resultMap="AftersalesOutOrderResult">
<include refid="selectAftersalesOutOrderVo"/>
where out_order_code in
<foreach item="outOrderCode" collection="array" open="(" separator="," close=")">
#{outOrderCode}
</foreach>
</select>
<insert id="insertAftersalesOutOrder" parameterType="AftersalesOutOrder" useGeneratedKeys="true" keyProperty="outOrderId">
insert into aftersales_out_order
<trim prefix="(" suffix=")" suffixOverrides=",">

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

@ -71,6 +71,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="selectSysSalesShippingInformDetailByCodeAndNo" parameterType="SysSalesShippingInformDetail" resultMap="SysSalesShippingInformDetailResult">
<include refid="selectSysSalesShippingInformDetailVo"/>
where out_order_code = #{outOrderCode}
and material_no = #{materialNo}
</select>
<insert id="insertSysSalesShippingInformDetail" parameterType="SysSalesShippingInformDetail" useGeneratedKeys="true" keyProperty="shippingInformDetailId">
insert into sys_sales_shipping_inform_detail

31
ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html

@ -54,6 +54,13 @@
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-success" onclick="exportExcel()" shiro:hasPermission="aftersales:aftersalesOutOrder:export">
<i class="fa fa-download"></i> 导出
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
@ -241,6 +248,30 @@
$.modal.open("售后出库单详情",url);
}
// 导出
function exportExcel() {
var ids = $.table.selectColumns("outOrderCode");
var dataParam = $("#formId").serializeArray();
let tipMsg = "确定导出当前所有数据吗?";
if ($.common.isNotEmpty(ids)) {
tipMsg = `确定导出 ${ids} 数据吗?`;
dataParam.push({ "name": "ids", "value": ids });
}
$.modal.confirm(tipMsg, function () {
$.modal.loading("正在导出数据,请稍后...");
$.post( prefix + "/export", dataParam, function (result) {
if (result.code === web_status.SUCCESS) {
window.location.href = ctx + "common/download?fileName="+ encodeURI(result.msg) + "&delete=" + true;
} else {
$.modal.alertError(result.msg);
}
$.modal.closeLoading();
});
});
}
</script>
</body>
</html>
Loading…
Cancel
Save