Browse Source
- 新增售电云分销订单控制器SdyDealerOrderController - 实现Excel批量导入售电云分销订单功能 - 添加订单结算接口,支持更新结算状态和时间 - 创建售电云分销订单导入参数类SdyDealerOrderImportParam - 在ShopDealerOrder实体中添加用户昵称和分销商昵称字段- 扩展ShopDealerOrderMapper.xml关联查询用户信息- 增加订单备注字段comments及查询条件支持- 实现通过经销商名称获取申请信息的方法getByDealerNameRel- 在导入逻辑中检查重复数据并跳过已存在记录 - 添加佣金比例rate和单价price字段支持dev3
10 changed files with 292 additions and 2 deletions
@ -0,0 +1,136 @@ |
|||
package com.gxwebsoft.sdy.controller; |
|||
|
|||
import cn.afterturn.easypoi.excel.ExcelImportUtil; |
|||
import cn.afterturn.easypoi.excel.entity.ImportParams; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.gxwebsoft.common.core.annotation.OperationLog; |
|||
import com.gxwebsoft.common.core.web.ApiResult; |
|||
import com.gxwebsoft.common.core.web.BaseController; |
|||
import com.gxwebsoft.sdy.param.SdyDealerOrderImportParam; |
|||
import com.gxwebsoft.shop.entity.ShopDealerApply; |
|||
import com.gxwebsoft.shop.entity.ShopDealerOrder; |
|||
import com.gxwebsoft.shop.service.ShopDealerApplyService; |
|||
import com.gxwebsoft.shop.service.ShopDealerOrderService; |
|||
import io.swagger.v3.oas.annotations.Operation; |
|||
import io.swagger.v3.oas.annotations.tags.Tag; |
|||
import org.springframework.security.access.prepost.PreAuthorize; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
import org.springframework.web.bind.annotation.*; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.time.LocalDateTime; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 售电云分销订单控制器 |
|||
* |
|||
* @author 科技小王子 |
|||
* @since 2025-08-12 11:55:18 |
|||
*/ |
|||
@Tag(name = "售电云分销订单管理") |
|||
@RestController |
|||
@RequestMapping("/api/sdy/sdy-dealer-order") |
|||
public class SdyDealerOrderController extends BaseController { |
|||
@Resource |
|||
private ShopDealerOrderService shopDealerOrderService; |
|||
@Resource |
|||
private ShopDealerApplyService shopDealerApplyService; |
|||
|
|||
/** |
|||
* excel批量导入售电云分销订单 |
|||
*/ |
|||
@PreAuthorize("hasAuthority('shop:shopDealerOrder:save')") |
|||
@OperationLog |
|||
@Operation(summary = "批量导入售电云分销订单") |
|||
@Transactional(rollbackFor = {Exception.class}) |
|||
@PostMapping("/import") |
|||
public ApiResult<List<String>> importBatch(MultipartFile file) { |
|||
ImportParams importParams = new ImportParams(); |
|||
try { |
|||
System.out.println("开始导入数据..."); |
|||
System.out.println("文件大小: " + (file != null ? file.getSize() : "null")); |
|||
|
|||
// 导入XLS文件的内容
|
|||
List<SdyDealerOrderImportParam> list = ExcelImportUtil.importExcel(file.getInputStream(), SdyDealerOrderImportParam.class, importParams); |
|||
|
|||
// 打印导入的数据条数用于调试
|
|||
System.out.println("导入数据条数: " + (list != null ? list.size() : 0)); |
|||
|
|||
// 打印第一条数据用于调试
|
|||
if (list != null && !list.isEmpty()) { |
|||
SdyDealerOrderImportParam first = list.get(0); |
|||
System.out.println("第一条数据: " + first); |
|||
System.out.println("comments: " + first.getComments()); |
|||
System.out.println("userId: " + first.getUserId()); |
|||
System.out.println("orderId: " + first.getOrderId()); |
|||
} |
|||
|
|||
if (list == null || list.isEmpty()) { |
|||
return fail("未读取到任何数据,请检查Excel文件格式和数据行位置", null); |
|||
} |
|||
|
|||
int importedCount = 0; |
|||
|
|||
for (SdyDealerOrderImportParam d : list) { |
|||
// 检查是否已存在相同的记录(根据comments字段和未结算状态)
|
|||
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<ShopDealerOrder> queryWrapper = new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<>(); |
|||
queryWrapper.eq(ShopDealerOrder::getComments, d.getComments()); // 使用comments字段
|
|||
queryWrapper.eq(ShopDealerOrder::getIsSettled, 0); // 未结算状态
|
|||
|
|||
if (shopDealerOrderService.count(queryWrapper) == 0) { |
|||
// 不存在相同记录,可以导入
|
|||
ShopDealerOrder item = new ShopDealerOrder(); |
|||
|
|||
// 手动映射字段
|
|||
item.setOrderId(d.getOrderId()); |
|||
item.setOrderPrice(d.getOrderPrice()); |
|||
item.setFirstUserId(d.getFirstUserId()); |
|||
item.setSecondUserId(d.getSecondUserId()); |
|||
item.setThirdUserId(d.getThirdUserId()); |
|||
item.setFirstMoney(d.getFirstMoney()); |
|||
item.setSecondMoney(d.getSecondMoney()); |
|||
item.setThirdMoney(d.getThirdMoney()); |
|||
item.setTenantId(d.getTenantId()); |
|||
item.setComments(d.getComments()); |
|||
item.setIsInvalid(1); |
|||
item.setIsSettled(0); // 新导入的数据设为未结算
|
|||
|
|||
// 查询绑定关系
|
|||
ShopDealerApply dealerApply = shopDealerApplyService.getByDealerNameRel(d.getComments()); |
|||
|
|||
// 已签约客户
|
|||
if(dealerApply != null){ |
|||
item.setIsInvalid(0); |
|||
item.setUserId(dealerApply.getUserId()); |
|||
item.setFirstUserId(dealerApply.getRefereeId()); |
|||
} |
|||
|
|||
System.out.println("准备导入数据: " + item); |
|||
if (ObjectUtil.isNotEmpty(item)) { |
|||
shopDealerOrderService.save(item); |
|||
importedCount++; |
|||
} |
|||
} else { |
|||
System.out.println("跳过重复数据: " + d.getComments()); |
|||
} |
|||
} |
|||
return success("成功导入" + importedCount + "条,重复或已存在" + (list.size() - importedCount) + "条", null); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
return fail("导入失败: " + e.getMessage(), null); |
|||
} |
|||
} |
|||
|
|||
@PreAuthorize("hasAuthority('shop:shopDealerOrder:update')") |
|||
@OperationLog |
|||
@Operation(summary = "结算订单") |
|||
@PutMapping() |
|||
public ApiResult<?> saveSettled(@RequestBody ShopDealerOrder shopDealerOrder) { |
|||
shopDealerOrder.setSettleTime(LocalDateTime.now()); |
|||
if (shopDealerOrderService.updateById(shopDealerOrder)) { |
|||
return success("结算成功"); |
|||
} |
|||
return fail("结算失败"); |
|||
} |
|||
} |
@ -0,0 +1,52 @@ |
|||
package com.gxwebsoft.sdy.param; |
|||
|
|||
import cn.afterturn.easypoi.excel.annotation.Excel; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.math.BigDecimal; |
|||
import java.time.LocalDateTime; |
|||
|
|||
/** |
|||
* 售电云分销订单导入参数 |
|||
* |
|||
* @author 科技小王子 |
|||
* @since 2025-08-12 11:55:18 |
|||
*/ |
|||
@Data |
|||
public class SdyDealerOrderImportParam implements Serializable { |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@Excel(name = "用户ID") |
|||
private Integer userId; |
|||
|
|||
@Excel(name = "订单ID") |
|||
private Integer orderId; |
|||
|
|||
@Excel(name = "结算电量") |
|||
private BigDecimal orderPrice; |
|||
|
|||
@Excel(name = "一级分销商ID") |
|||
private Integer firstUserId; |
|||
|
|||
@Excel(name = "二级分销商ID") |
|||
private Integer secondUserId; |
|||
|
|||
@Excel(name = "三级分销商ID") |
|||
private Integer thirdUserId; |
|||
|
|||
@Excel(name = "一级佣金") |
|||
private BigDecimal firstMoney; |
|||
|
|||
@Excel(name = "二级佣金") |
|||
private BigDecimal secondMoney; |
|||
|
|||
@Excel(name = "三级佣金") |
|||
private BigDecimal thirdMoney; |
|||
|
|||
@Excel(name = "公司名称") |
|||
private String comments; |
|||
|
|||
@Excel(name = "租户ID") |
|||
private Integer tenantId; |
|||
} |
Loading…
Reference in new issue