Merge remote-tracking branch 'origin/dev' into test

# Conflicts:
#	bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java
#	bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml
This commit is contained in:
cabbage 2025-07-09 11:50:46 +08:00
commit b601cc4181
644 changed files with 5430 additions and 42582 deletions

View File

@ -7,7 +7,6 @@
bd-api-bonus -- 奖金服务接口以及RPC传输数据DTO实体
bd-api-member -- 会员服务接口以及RPC传输数据DTO实体
bd-api-report -- 报表服务接口以及RPC传输数据DTO实体
bd-api-sale -- 销售、供应链服务接口以及RPC传输数据DTO实体
bd-api-system -- 系统基础服务接口以及RPC传输数据DTO实体
bd-api-third -- 三方服务接口以及RPC传输数据DTO实体
@ -17,9 +16,7 @@
hzs-business-common -- 业务服务公共类(工具类)
hzs-business-member -- 会员服务(会员、账户、银行等) 8092
hzs-business-report -- 报表服务(统计分析、仪表盘等) 8097
hzs-business-sale -- 销售服务(订单、商品、邮费、仓库进销存等) 8093
hzs-business-system -- 系统基础服务(基础配置、自定义配置等) 8091
hzs-business-scm -- 进销存服务(进销存功能等) 8099
### hzs-common基础公用组件
hzs-common-core -- 核心公用组件、缓存操作等

View File

@ -1,26 +0,0 @@
package com.hzs.sale.deliver;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.sale.ext.SaDeliverExt;
import java.util.List;
/**
* @Description: 发货单相关dubbo接口
* @Author: jiang chao
* @Time: 2023/12/19 14:27
* @Classname: ISaDeliverServiceApi
* @PackageName: com.hzs.sale.deliver
*/
public interface ISaDeliverServiceApi {
/**
* 查询发货单+明细列表
*
* @param idList 发货单ID列表
* @param pkCountry 所属国家 -- 非必传
* @return
*/
R<List<SaDeliverExt>> queryDeliverList(List<Long> idList, Integer pkCountry);
}

View File

@ -146,4 +146,13 @@ public interface ISaOrderServiceApi {
*/
R<BigDecimal> getRetailPayOrder(Long pkMember, String orderCode);
/**
* 根据订单编号查询订单信息
*
* @param orderCode 订单编号
* @param pkMember 会员主键
* @return
*/
R<SaOrderExt> queryOrderByCode(String orderCode, Long pkMember);
}

View File

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.bd</groupId>
<artifactId>bd-api</artifactId>
<version>1.1.0-SNAPSHOT</version>
</parent>
<artifactId>bd-api-scm</artifactId>
<description>
bd-api-scm进销存服务
</description>
<dependencies>
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-api-system</artifactId>
</dependency>
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-common-domain</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -1,41 +0,0 @@
package com.hzs.scm.product;/**
* @Description:
* @Author: yuhui
* @Time: 2023/11/23 18:28
* @Classname: IBdProductBasSpecsServiceApi
* @PackageName: com.hzs.scm.product
*/
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.sale.product.BdProductBas;
import com.hzs.common.domain.sale.product.BdProductBasSpecs;
import java.util.List;
/**
*@BelongsProject: hzs_cloud
*@BelongsPackage: com.hzs.scm.product
*@Author: yh
*@CreateTime: 2023-11-23 18:28
*@Description: TODO
*@Version: 1.0
*/
public interface IBdProductBasSpecsServiceApi {
/**
* 新增
* @param productBasSpecsList
* @return
*/
R<Boolean> saveAll(List<BdProductBasSpecs> productBasSpecsList);
/**
* 删除 根据pkProductBas删除
* @param pkProductBasList
* @return
*/
R<Boolean> removeByPkProductBasList(List<Integer> pkProductBasList);
}

View File

@ -1,44 +0,0 @@
package com.hzs.scm.product;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.sale.product.BdProductBas;
import com.hzs.scm.product.dto.ProductBasDTO;
import java.util.List;
/**
* @Description:
* @Author: yuhui
* @Time: 2023/11/23 17:59
* @Classname: IProductBasServiceApi
* @PackageName: com.hzs.scm.product
*/
public interface IProductBasServiceApi {
/**
* 批量新增
* @param productBas
* @return
*/
R<BdProductBas> save(BdProductBas productBas);
/**
* 根据id 修改
*/
R<Boolean> updateById(BdProductBas productBas);
/**
* 根据id 查询
* @return
*/
R<ProductBasDTO> getProductBasById(Integer pkId);
/**
* 根据产品编号 查询
* @return
*/
R<ProductBasDTO> getProductBasByProductCode(String productCode);
}

View File

@ -1,90 +0,0 @@
package com.hzs.scm.product.dto;/**
* @Description:
* @Author: yuhui
* @Time: 2023/11/23 18:04
* @Classname: ProductDTO
* @PackageName: com.hzs.scm.product.provider.dto
*/
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
*@BelongsProject: hzs_cloud
*@BelongsPackage: com.hzs.scm.product.provider.dto
*@Author: yh
*@CreateTime: 2023-11-23 18:04
*@Description: TODO
*@Version: 1.0
*/
@Data
public class ProductBasDTO implements Serializable {
/**
* 主键
*/
private Integer pkId;
/**
* 产品编号
*/
private String productCode;
/**
* 产品名称
*/
private String productName;
/**
* 规格分类
*/
private Integer pkClassify;
/**
* 单位 来源于枚举单位
*/
private Integer unit;
/**
* 重量 以千克作为单位
*/
private BigDecimal weight;
/**
* 以厘米作为单位
*/
private BigDecimal length;
/**
* 以厘米作为单位
*/
private BigDecimal width;
/**
* 以厘米作为单位
*/
private BigDecimal height;
/**
* 封面图
*/
private String cover;
/**
* 保质期
*/
private Integer shelfLife;
}

View File

@ -1,51 +0,0 @@
package com.hzs.scm.pub;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EApprovalBusiness;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.scm.ic.IcAvailableNum;
import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt;
import com.hzs.scm.pub.dto.BillDTO;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import java.util.List;
/**
* 供应链单据对外接口发布
*/
public interface IScmBillServiceApi {
/**
* 活动服务信息处理回调
*
* @param approvalBusinessResultDTO 参数
* @return
*/
R<Boolean> approvalCallback(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/*
* 查询单据信息
**/
R<List<BillDTO>> queryBillDtoByCondition(EApprovalBusiness eApprovalBusiness, String businessCode);
/*
* 下单时验证可用量
**/
R<List<IcAvailableNumExt>> queryAvailableNumByProduct(List<IcAvailableNum> availableNumList);
/*
* 更新可用量
**/
R<Boolean> updateDeductIcAvailableNumByList(List<IcAvailableNumExt> availableNumList);
/*
* 更新单据号规则
**/
R<Boolean> updateScmBillNoNextValue();
/*
* 撤单退单回退可用量
**/
R<Boolean> backSaOrderAvailable(SaOrderExt saOrderExt);
}

View File

@ -1,108 +0,0 @@
package com.hzs.scm.pub.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @description: 单据主表表头
* @author: sui q
* @time: 2023/11/25 09:23
* @classname: BillDTO
* @package_name: com.hzs.scm.ic.dto
* version 1.0.0
*/
@Data
public class BillDTO implements Serializable {
/**
* 主键
*/
private Long pkId;
/**
* 采购部门
*/
private Integer pkDept;
/**
* 部门名称
*/
private String deptName;
/**
* 仓库管理员
*/
private Long pkWhsmanager;
/**
* 管理员名称
*/
private String managerName;
/**
* 供应商 取bd_cubasdoc 类型为1 2的
*/
private Integer pkCubasdoc;
/**
* 供应商名称
*/
private String cubasdocName;
/**
* 仓库
*/
private Integer pkStorehouse;
/**
* 仓库名称
*/
private String storehouseName;
/**
* 订单日期 2023-10
*/
private String orderDate;
/**
* 订单状态 EPoOrderStatus 1=已保存 2=已提交 3=已审核 4=已收货 5=已关闭
*/
private Integer orderStatus;
/**
* 退货状态 0= 1=
*/
private Integer returnStatus;
/**
* 采购组织
*/
private Integer pkCorp;
/**
* 采购组织名称
*/
private String corpName;
/**
* 总数量
*/
private BigDecimal totalNum;
/**
* 订单编号
*/
private String orderCode;
/**
* 退货理由
*/
private String returnReason;
private List<BillItemDTO> billDtoList;
}

View File

@ -1,158 +0,0 @@
package com.hzs.scm.pub.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @description: 单据明细表
* @author: sui q
* @time: 2023/11/25 09:23
* @classname: BillItemDTO
* @package_name: com.hzs.scm.ic.dto
* version 1.0.0
*/
@Data
public class BillItemDTO implements Serializable {
/**
* 主键
*/
private Long pkId;
/**
* 单位
*/
private Integer pkUnit;
/**
* 单位名称
*/
private String unitName;
/**
* 采购订单主键
*/
private Long pkPoOrder;
/**
* 采购订单明细主键
*/
private Long pkPoOrderItems;
/**
* 主表主键
*/
private Long pkPurchase;
/**
* 货位
*/
private Integer pkClocation;
/**
* 货位名称
*/
private String clocationName;
/**
* 产品基础信息主键
*/
private Integer pkProductBas;
/**
* 产品信息主键
*/
private Integer pkProduct;
/**
* 产品编号
*/
private String productCode;
/**
* 产品名称
*/
private String productName;
/**
* 规格名称
*/
private String specsName;
/**
* 入库日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date bizDate;
/**
* 出入口类型 1=入库 2=出库
*/
private Integer transType;
/**
* 仓库
*/
private Integer pkStorehouse;
/**
* 仓库名称
*/
private String storehouseName;
/**
* 汇率
*/
private Integer pkRate;
/**
* 数量
*/
private BigDecimal nnum;
/**
* 无税单价
*/
private BigDecimal norigprice;
/**
* 税率
*/
private BigDecimal ntaxrate;
/**
* 含税单价 = 无税单价*1+税率
*/
private BigDecimal norigtaxprice;
/**
* 无税金额 = 无税单价*数量
*/
private BigDecimal norigmny;
/**
* 税额 =无税单价*数量
*/
private BigDecimal ntax;
/**
* 价税合计 含税单价*数量
*/
private BigDecimal norigtaxmny;
/**
* 批次主键
*/
private Long pkBatchCode;
private String batchCode;
/**
* 是否赠品
*/
private Integer isGift;
}

View File

@ -1,35 +0,0 @@
package com.hzs.scm.pub.dto;
import com.hzs.system.sys.dto.LoginUser;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Description: 发货推送MQ数据
* @Author: jiang chao
* @Time: 2023/12/19 14:16
* @Classname: DeliverDTO
* @PackageName: com.hzs.scm.pub.dto
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class DeliverDTO implements Serializable {
/**
* 发货单ID列表
*/
private List<Long> deliverIdList;
/**
* 登录用户
*/
private LoginUser loginUser;
}

View File

@ -1,41 +0,0 @@
package com.hzs.third.cabin;
import com.hzs.common.core.domain.R;
import com.hzs.third.cabin.dto.CabinDeviceOpenDTO;
import com.hzs.third.cabin.dto.CabinInfoDTO;
import com.hzs.third.cabin.dto.CabinPackageDTO;
/**
* @Description: 能量仓dubbo服务
* @Author: jiang chao
* @Time: 2023/8/10 18:19
* @Classname: ICabinServiceApi
* @PackageName: com.hzs.third.cabin
*/
public interface ICabinThirdServiceApi {
/**
* 新增编辑套餐
*
* @param dto 套餐数据
* @return
*/
R<CabinPackageDTO> packageSave(CabinPackageDTO dto);
/**
* 设备详情
*
* @param dto 查询设备DTO
* @return
*/
R<CabinInfoDTO> deviceInfo(CabinInfoDTO dto);
/**
* 设备开机
*
* @param dto 开机数据
* @return
*/
R<CabinDeviceOpenDTO> deviceOpen(CabinDeviceOpenDTO dto);
}

View File

@ -1,35 +0,0 @@
package com.hzs.third.cabin.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Description: 能量仓开机
* @Author: jiang chao
* @Time: 2023/8/10 18:59
* @Classname: CabinDeviceOpen
* @PackageName: com.hzs.third.cabin.dto
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class CabinDeviceOpenDTO implements Serializable {
private static final long serialVersionUID = -5408924484380798929L;
/**
* 套餐ID必传
*/
private Long packageId;
/**
* 设备code必传
*/
private String serialNumber;
}

View File

@ -1,82 +0,0 @@
package com.hzs.third.cabin.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 能量仓详情DTO
* @Author: jiang chao
* @Time: 2023/8/11 9:54
* @Classname: CabinInfoDTO
* @PackageName: com.hzs.third.cabin.dto
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class CabinInfoDTO implements Serializable {
private static final long serialVersionUID = 3023891457338964400L;
/**
* 店铺ID必传
*/
private Long storeId;
/**
* 设备编号必传
*/
private String serialNumber;
//////////////////// 返回参数 ////////////////////
/**
* 设备ID
*/
private Long id;
/**
* 设备名称
*/
private String name;
/**
* 设备型号
*/
private String type;
/**
* 设备地址
*/
private String address;
/**
* 运行状态0=未使用1=运行中2=暂停老设备使用
*/
private Integer runState;
/**
* 最后开启时间直接是年月日时分秒2023-08-11 10:21:22
*/
private Date lastOpenTime;
/**
* 最后的套餐时
*/
private Integer lastOpenDuration;
/**
* 设备类型1=4G2=3=4G&4=mqtt
*/
private Integer deviceType;
/**
* mqtt 通信是否在线0=不是1=
*/
private Integer mqttType;
/**
* mqtt 最后一次通信信息100623010008,0,0,0,0,0,0,1,18,235,1691987769 -- 设备号剩余工作时长当前能量当前能将蜂鸣器工作状态错误码网络状态网络信号值校验位要秒级时间戳
*/
private String mqttInfo;
/**
* 备注
*/
private String memo;
}

View File

@ -1,46 +0,0 @@
package com.hzs.third.cabin.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description: 能量仓套餐DTO
* @Author: jiang chao
* @Time: 2023/8/10 18:20
* @Classname: CabinPackageDTO
* @PackageName: com.hzs.third.cabin.dto
*/
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class CabinPackageDTO implements Serializable {
private static final long serialVersionUID = 7406391624983226295L;
/**
* 三方套餐ID新增不传修改传
*/
private Long packageId;
/**
* 套餐名称必传
*/
private String packageName;
/**
* 套餐时长必传
*/
private Integer unitTime;
/**
* 套餐金额不需要传默认按0元处理
*/
private BigDecimal unitPrice;
}

View File

@ -1,33 +0,0 @@
package com.hzs.third.pay;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EApprovalBusiness;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
/**
* @Description: 在线支付等dubbo服务api
* @Author: jiang chao
* @Time: 2023/4/7 18:08
* @Classname: IOnlineAgentServiceApi
* @PackageName: com.hzs.third.pay
*/
public interface IOnlineServiceApi {
/**
* 三方服务信息处理回调
*
* @param approvalBusinessResultDTO
* @return
*/
R<Boolean> approvalCallback(ApprovalBusinessResultDTO approvalBusinessResultDTO);
/**
* 三方服务信息签呈查询
*
* @param eApprovalBusiness 业务类型
* @param businessCode 业务单号
* @return
*/
R queryApprovalData(EApprovalBusiness eApprovalBusiness, String businessCode);
}

View File

@ -0,0 +1,9 @@
package com.hzs.third.pay;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.third.pay.TOnlinePayment;
public interface ITOnlinePaymentServiceApi {
R<TOnlinePayment> getOnlinePayment(String orderNo);
R<String> refund(String orderNo, Long userId);
}

View File

@ -34,7 +34,6 @@
<module>bd-api-sale</module>
<module>bd-api-system</module>
<module>bd-api-third</module>
<module>bd-api-scm</module>
</modules>
</project>

View File

@ -44,7 +44,7 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
for (SaOrderExt saOrderExt : saOrderExtList) {
orderIdSet.add(saOrderExt.getPkMember());
}
List<List<?>> cutOrderList = cuMemberBonusSettle.handleCutList(orderIdSet, MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
List<List<?>> cutOrderList = cuMemberBonusSettle.handleCutList(orderIdSet, MagicNumberConstants.BATCH_QUERY_NUM);
cutOrderList.forEach(orderList -> {
List<CuMemberRetailRangeExt> rangeExtList = baseMapper.queryCuMemberRetailRangeParent(tableName, orderList);
if (rangeExtList.size() > 0) {

View File

@ -0,0 +1,11 @@
package com.hzs.bonus.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.vertex.BdVertexBonus;
/**
* 体系奖金配置记录哪个体系走特殊奖金 Mapper 接口
*/
public interface BdVertexBonusMapper extends BaseMapper<BdVertexBonus> {
}

View File

@ -5,6 +5,7 @@ import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.vertex.BdVertexBonus;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@ -44,8 +45,8 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
* @param cuMemberAwardsList 修改奖衔的会员
*/
int updateCuMemberRetailRangeByList(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList,
@Param("period") Integer period,
@Param("awardType") Integer awardType);
@Param("period") Integer period,
@Param("awardType") Integer awardType);
/**
* 更新会员奖衔根据临时表
@ -94,4 +95,12 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
*/
List<CuMember> queryCuMemberShareTotal(Integer pkCountry);
/**
* 查询体系奖项列表
*
* @param pkMember
* @return
*/
List<BdVertexBonus> listVertexBonus(@Param("pkMember") Long pkMember);
}

View File

@ -0,0 +1,21 @@
package com.hzs.bonus.base.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.vertex.BdVertexBonus;
import java.util.List;
import java.util.Map;
/**
* 体系奖金配置记录哪个体系走特殊奖金 服务类
*/
public interface IBdVertexBonusService extends IService<BdVertexBonus> {
/**
* 查询体系奖金map
*
* @return
*/
Map<Long, List<Integer>> queryVertexBonus();
}

View File

@ -5,6 +5,7 @@ import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.vertex.BdVertexBonus;
import java.util.Date;
import java.util.List;
@ -82,4 +83,13 @@ public interface ICuMemberService extends IService<CuMember> {
* 查询可以获得分红的会员人数
*/
List<CuMember> queryCuMemberShareTotal(Integer pkCountry);
/**
* 查询体系奖项列表
*
* @param pkMember
* @return
*/
List<BdVertexBonus> listVertexBonus(Long pkMember);
}

View File

@ -0,0 +1,41 @@
package com.hzs.bonus.base.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.base.mapper.BdVertexBonusMapper;
import com.hzs.bonus.base.service.IBdVertexBonusService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.domain.vertex.BdVertexBonus;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 体系奖金配置记录哪个体系走特殊奖金 服务实现类
*/
@Service
public class BdVertexBonusServiceImpl extends ServiceImpl<BdVertexBonusMapper, BdVertexBonus> implements IBdVertexBonusService {
@Override
public Map<Long, List<Integer>> queryVertexBonus() {
HashMap<Long, List<Integer>> resultMap = new HashMap<>();
List<BdVertexBonus> vertexBonusList = this.list();
if (CollectionUtil.isNotEmpty(vertexBonusList)) {
for (BdVertexBonus bdVertexBonus : vertexBonusList) {
if (resultMap.containsKey(bdVertexBonus.getPkVertex())) {
resultMap.get(bdVertexBonus.getPkVertex()).add(bdVertexBonus.getBonusItems());
} else {
List<Integer> tmpList = new ArrayList<>();
tmpList.add(bdVertexBonus.getBonusItems());
resultMap.put(bdVertexBonus.getPkVertex(), tmpList);
}
}
}
return resultMap;
}
}

View File

@ -9,6 +9,7 @@ import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.bonus.base.mapper.CuMemberMapper;
import com.hzs.common.domain.vertex.BdVertexBonus;
import org.springframework.stereotype.Service;
import java.util.*;
@ -87,4 +88,8 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
return baseMapper.queryCuMemberShareTotal(pkCountry);
}
@Override
public List<BdVertexBonus> listVertexBonus(Long pkMember) {
return baseMapper.listVertexBonus(pkMember);
}
}

View File

@ -2,15 +2,18 @@ package com.hzs.bonus.bonus.controller.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.base.service.ICuMemberService;
import com.hzs.bonus.bonus.param.BonusParam;
import com.hzs.bonus.bonus.service.ICuMemberBonusService;
import com.hzs.bonus.bonus.vo.*;
import com.hzs.common.core.enums.EBonusItems;
import com.hzs.common.core.enums.EGrantStatus;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.ext.CuMemberBonusExt;
import com.hzs.common.domain.vertex.BdVertexBonus;
import com.hzs.common.security.utils.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -21,10 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.*;
@RestController
@RequestMapping("/api/bonus")
@ -33,6 +33,8 @@ public class ApiCuMemberBonusController extends BaseController {
@Autowired
private ICuMemberBonusService iCuMemberBonusService;
@Autowired
private ICuMemberService iCuMemberService;
/**
* 新零售实时奖金查询会员实时奖金当日的奖金
@ -45,6 +47,9 @@ public class ApiCuMemberBonusController extends BaseController {
bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.currentDate()));
bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue());
// 控制复购级差收益的返回
final boolean rangeIncomeFlag = this.checkRangeIncome();
List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam);
List<MemberBonusVO> memberBonusVOList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
@ -52,10 +57,17 @@ public class ApiCuMemberBonusController extends BaseController {
MemberBonusVO memberBonusVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusVO.class, "settleDate");
memberBonusVO.setServiceSpend(BigDecimal.ZERO);
memberBonusVO.setSettleDate(DateUtils.currentDate());
BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(cuMemberBonus.getRetailRangeIncome(), cuMemberBonus.getRetailSameLevelIncome(),
cuMemberBonus.getRetailAreaIncome()),
cuMemberBonus.getRetailRealSubtotal());
BigDecimal serviceSpend = ComputeUtil.computeSubtract(
ComputeUtil.computeAddNum(cuMemberBonus.getRetailRangeIncome(), cuMemberBonus.getRetailSameLevelIncome(),
cuMemberBonus.getRetailAreaIncome()), cuMemberBonus.getRetailRealSubtotal()
);
memberBonusVO.setBackPoints(serviceSpend);
if (!rangeIncomeFlag) {
// 没有复购级差
memberBonusVO.setRepurRangeIncome(null);
}
memberBonusVOList.add(memberBonusVO);
}
});
@ -63,7 +75,7 @@ public class ApiCuMemberBonusController extends BaseController {
}
/**
* 新零售实时奖金查询会员奖金列表
* 新零售日结奖金查询会员奖金列表
*/
@PostMapping("/query-bonus-first")
public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) {
@ -71,17 +83,24 @@ public class ApiCuMemberBonusController extends BaseController {
List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
// 控制复购级差收益的返回
final boolean rangeIncomeFlag = this.checkRangeIncome();
List<MemberBonusFirstPurchaseVO> firstPurchaseVOList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusFirstPurchaseVO memberBonusFirstPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusFirstPurchaseVO.class, "settleDate");
packageSettleDate(cuMemberBonus, memberBonusFirstPurchaseVO);
if (!rangeIncomeFlag) {
// 没有复购级差
memberBonusFirstPurchaseVO.setRepurRangeIncome(null);
}
firstPurchaseVOList.add(memberBonusFirstPurchaseVO);
});
return getDataTable(firstPurchaseVOList);
}
/**
* 新零售实时奖金查询会员昨日奖金汇总
* 新零售日结奖金查询会员昨日奖金汇总
*/
@PostMapping("/query-bonus-total")
public TableDataInfo lisBonusTotal(@RequestBody BonusParam bonusParam) {
@ -158,8 +177,24 @@ public class ApiCuMemberBonusController extends BaseController {
public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam);
startPage();
TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam);
return tableDataInfo;
return iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam);
}
/**
* 校验是否有复购级差
*
* @return
*/
private boolean checkRangeIncome() {
List<BdVertexBonus> vertexBonusList = iCuMemberService.listVertexBonus(SecurityUtils.getUserId());
if (CollectionUtil.isNotEmpty(vertexBonusList)) {
for (BdVertexBonus bdVertexBonus : vertexBonusList) {
if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bdVertexBonus.getBonusItems()) {
return true;
}
}
}
return false;
}
}

View File

@ -104,11 +104,7 @@ public class CuMemberBonusController extends BaseController {
private List<BonusTotalVO> getBonusTotalVoS(List<CuMemberBonusExt> cuMemberBonusList) {
List<BonusTotalVO> totalVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
BonusTotalVO bonusTotalVO = BeanUtil.copyProperties(cuMemberBonus, BonusTotalVO.class);
for (String key : CuMemberBonusVO.INCOME_ARRAY) {
ReflectUtils.invokeSetter(bonusTotalVO, key + BonusFieldConstants.INCOME_SUFFIX, ComputeUtil.computeMultiply(ReflectUtils.invokeGetter(cuMemberBonus, key), cuMemberBonus.getOutExchangeRate()));
}
totalVoList.add(bonusTotalVO);
totalVoList.add(BeanUtil.copyProperties(cuMemberBonus, BonusTotalVO.class));
});
return totalVoList;
}

View File

@ -179,14 +179,9 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 奖金币首购+复购+云代+海粉+嗨粉+店铺
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate);
// 重销币商城重消+平台服务费
// BigDecimal repeat = ComputeUtil.computeAdd(cuMemberBonus.getBackPoints(), cuMemberBonus.getServiceSpend());
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPEAT.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getBackPoints(), currencyDTO.getOutExchangeRate()), settleDate);
// 复购券
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPURCHASE.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRepurCouponSubtotal(), currencyDTO.getOutExchangeRate()), settleDate);
// 环球积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.GLOBAL_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getGlobalPoints(), currencyDTO.getOutExchangeRate()), settleDate);
// 车奖积分
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate);
});
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
// 新增流水明细,记录奖金明细的发放状态消费明细
@ -241,7 +236,6 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 奖金币首购+复购+云代+海粉+嗨粉+店铺
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate);
// 重销币商城重消+平台服务费
// BigDecimal repeat = ComputeUtil.computeAdd(cuMemberBonus.getBackPoints(), cuMemberBonus.getServiceSpend());
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPEAT.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getBackPoints(), currencyDTO.getOutExchangeRate()), settleDate);
// 复购券
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPURCHASE.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRepurCouponSubtotal(), currencyDTO.getOutExchangeRate()), settleDate);

View File

@ -143,6 +143,23 @@ public abstract class BonusSettleHandle {
cuMemberBonusRange.setRemark(remark);
}
/**
* 获得 复购极差收益 备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人
*/
protected void rangeRepurchaseRetailRemark(SaOrder saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt,
CuMemberRetailRangeExt targetMemberRangeExt) {
String remark = String.format(BonusMsgConstants.RETAIL_REPURCHASE_INCOME, saOrderExt.getOrderCode(),
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getGradeName());
cuMemberBonusRange.setRemark(remark);
}
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) {
if (cuMemberBonusMap.containsKey(pkMember)) {

View File

@ -3,6 +3,7 @@ package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
import com.hzs.bonus.base.service.IBdVertexBonusService;
import com.hzs.bonus.base.service.ICuMemberService;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
@ -20,13 +21,12 @@ import com.hzs.common.domain.bonus.BdBonusDeduct;
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.bonus.*;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
import com.hzs.common.domain.member.detail.*;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.ext.SaOrderWaresExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.wares.ext.WaresRangeTmp;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
@ -59,6 +59,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
private ICuMemberService iCuMemberService;
@Autowired
private IBonusOrderService iBonusOrderService;
@Autowired
private IBdVertexBonusService iBdVertexBonusService;
@DubboReference
ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi;
@ -110,6 +112,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 当期的手动激活的记录列表
Map<Long, Date> activateMap = this.getActivateMap(saOrderExt.getPayTime());
// 查询体系奖项配置
Map<Long, List<Integer>> vertexBonusMap = iBdVertexBonusService.queryVertexBonus();
// 计算自消费奖衔
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
@ -176,8 +180,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberBonusDetailList.add(cuMemberBonusDetail);
}
// TODO 2025.07.04 部分体系单独奖项处理
if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
// 复购订单级差数据map(key:订单IDvalue:订单明细+级差)
Map<Long, List<SaOrderItemsExt>> rangeOrderMap = iBonusOrderService.getWaresRange(Collections.singletonList(saOrderExt));
// 复购订单
cuMemberBonusRangeList.addAll(this.calculateRepurchaseRangeBonus(saOrderExt, memberRangeExtMap, vertexBonusMap, rangeOrderMap,
bonusConfigDTO, currentPeriod, cuMemberBonusMap));
}
// 回退会员等级
iCuMemberGradeService.updateCuMemberGrade(secondRangeTableName, saOrderExt.getPkId());
if (cuMemberGradeList.size() > 0) {
// 插入会员等级升级记录
iCuMemberGradeService.insertCuMemberGrade(cuMemberGradeList);
@ -423,18 +437,25 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
* 计算新零售团队的奖金极差平级福利福利分红区域
*/
void calculateRetailBonusByDay(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO,
Integer period, Integer yesterdayPeriod, Boolean isSameMonth) {
Integer period, Integer yesterdayPeriod, Boolean isSameMonth, Map<Long, List<Integer>> vertexBonusMap) {
// 结算期间日期
Date settleStartDate = DateUtils.parseStringToDate(settleDate);
// 结算期间日期后一天
Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate);
// 所有有效订单列表
List<SaOrderExt> retailOrderList = new ArrayList<>();
// 复购订单列表
List<SaOrderExt> repurchaseOrderList = new ArrayList<>();
// 新零售订单
List<SaOrderExt> orderList = iBonusOrderService.queryRetailSaOrderByDay(settleStartDate, settleEndDate, null);
for (SaOrderExt saOrderExt : orderList) {
if (saOrderExt.getDelFlag() == EYesNo.YES.getIntValue()) {
retailOrderList.add(saOrderExt);
if (EOrderType.REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType()) {
// 复购订单
repurchaseOrderList.add(saOrderExt);
}
}
}
@ -458,6 +479,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
Map<Long, Date> activateMap = this.getActivateMap(settleStartDate);
if (retailOrderList.size() > 0) {
// 复购订单级差数据map(key:订单IDvalue:订单明细+级差)
Map<Long, List<SaOrderItemsExt>> rangeOrderMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(repurchaseOrderList)) {
rangeOrderMap = iBonusOrderService.getWaresRange(repurchaseOrderList);
}
Map<Long, CuMemberLevel> memberLevelMap = new HashMap<>();
List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName);
memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel));
@ -488,6 +515,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<BdAwards> awardsList = bonusConfigDTO.getAwardsList();
awardsList.forEach(bdAwards -> retailAwardsMap.put(bdAwards.getAwardsValue(), bdAwards));
// 会员转map
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
@ -505,7 +533,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<CuMemberGrade> cuMemberGradeList = new ArrayList<>();
// 会员奖衔升级记录
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
// 平级收益
// 平级收益 + 复购级差收益
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
// 会员奖金明细
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
@ -583,7 +611,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (cuMemberBonusDetail != null) {
cuMemberBonusDetailList.add(cuMemberBonusDetail);
}
// TODO 2025.07.04 部分体系单独奖项处理
if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
// 复购订单
cuMemberBonusRangeList.addAll(this.calculateRepurchaseRangeBonus(saOrderExt, memberRangeExtMap, vertexBonusMap, rangeOrderMap,
bonusConfigDTO, period, cuMemberBonusMap));
}
}
if (cuMemberBonusRangeList.size() > 0) {
if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) {
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
@ -1447,6 +1483,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
/**
* 团队福利福利分红等奖金 -- 月奖
*
* @param settleDateStr 结算日期
*/
void calculateRetailShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO,
@ -2039,4 +2077,111 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
)
));
}
/**
* 处理复购级差
*/
private List<CuMemberBonusRange> calculateRepurchaseRangeBonus(SaOrderExt saOrderExt, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
Map<Long, List<Integer>> vertexBonusMap, Map<Long, List<SaOrderItemsExt>> rangeOrderMap,
BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
// 直推级差返回数据
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
// 订单会员
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
List<Integer> vertexBonusList = vertexBonusMap.get(sourceMemberRangeExt.getPkVertex());
if (CollectionUtil.isNotEmpty(vertexBonusList)) {
// 存在体系奖项
for (Integer bonusItems : vertexBonusList) {
if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItems) {
// 复购级差收益key:会员IDvalue:复购级差收益
Map<Long, BigDecimal> bonusIncomeMap = new HashMap<>();
List<SaOrderItemsExt> saOrderItemsExtList = rangeOrderMap.get(saOrderExt.getPkId());
for (SaOrderItemsExt saOrderItemsExt : saOrderItemsExtList) {
// 级别值比当前等级高的级差数据列表
Map<Integer, BigDecimal> itemsRangePriceMap = saOrderItemsExt.getWaresRangeTmpList().stream()
.filter(tmpData -> tmpData.getRangeValue().compareTo(sourceMemberRangeExt.getGradeValue()) > 0)
.collect(Collectors.toMap(WaresRangeTmp::getRangeValue, WaresRangeTmp::getRangePrice));
// 临时价格跟着每一次变动
BigDecimal tmpPrice = saOrderItemsExt.getPrice();
// 推荐人
long pkParent = sourceMemberRangeExt.getPkParent();
// 计算级差
while (true) {
// 推荐人
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
if (null == targetMemberRangeExt) {
break;
}
// 上一级推荐人
pkParent = targetMemberRangeExt.getPkParent();
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
|| ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
|| targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()
|| targetMemberRangeExt.getGradeValue() == EGrade.START_UP.getValue()
|| EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
// 停算收益非正常会员未激活等级为顾客停止收益直接跳过
continue;
}
// 当前会员等级值
int calGradeValue = targetMemberRangeExt.getGradeValue();
// 当前会员的级差价格
BigDecimal targetRangePrice = itemsRangePriceMap.get(calGradeValue);
if (targetRangePrice.compareTo(tmpPrice) < 0) {
// 当前级差价格比上一次的低
// 差价就是级差收益
BigDecimal bonusIncome;
if (bonusIncomeMap.containsKey(targetMemberRangeExt.getPkMember())) {
bonusIncome = bonusIncomeMap.get(targetMemberRangeExt.getPkMember()).add(tmpPrice.subtract(targetRangePrice));
} else {
bonusIncome = tmpPrice.subtract(targetRangePrice);
}
bonusIncomeMap.put(targetMemberRangeExt.getPkMember(), bonusIncome);
// 临时价格更新
tmpPrice = targetRangePrice;
}
// 最高等级则退出
if (calGradeValue == EGrade.S_VIP.getValue()) {
break;
}
}
}
if (bonusIncomeMap.size() > 0) {
for (Long key : bonusIncomeMap.keySet()) {
// 复购级差收益
BigDecimal rangeBonusIncome = bonusIncomeMap.get(key);
if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) {
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(key);
// 处理复购级差收益
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue());
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount());
cuMemberBonusRange.setPretaxIncome(rangeBonusIncome);
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkOrder(saOrderExt.getPkId());
rangeRepurchaseRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
}
memberBonusRangeList.add(cuMemberBonusRange);
}
}
}
}
}
}
return memberBonusRangeList;
}
}

View File

@ -2,6 +2,7 @@ package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.base.service.IBdVertexBonusService;
import com.hzs.bonus.bonus.service.*;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.bonus.detail.service.ICuRegionAssessService;
@ -42,48 +43,21 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
private BonusSettleRangeHandle bonusSettleRangeHandle;
@Autowired
private ICuMemberBonusService cuMemberBonusService;
@Autowired
private ICuMemberBonusPushService cuMemberBonusPushService;
@Autowired
private ICuMemberBonusExpandService cuMemberBonusExpandService;
@Autowired
private ICuMemberBonusCoachService cuMemberBonusCoachService;
@Autowired
private ICuMemberBonusDetailService cuMemberBonusDetailService;
@Autowired
private ICuMemberBonusRangeService cuMemberBonusRangeService;
@Autowired
public void setCuMemberBonusPushService(ICuMemberBonusPushService cuMemberBonusPushService) {
this.cuMemberBonusPushService = cuMemberBonusPushService;
}
private IBdVertexBonusService iBdVertexBonusService;
@Autowired
public void setCuMemberBonusExpandService(ICuMemberBonusExpandService cuMemberBonusExpandService) {
this.cuMemberBonusExpandService = cuMemberBonusExpandService;
}
@Autowired
public void setCuMemberBonusCoachService(ICuMemberBonusCoachService cuMemberBonusCoachService) {
this.cuMemberBonusCoachService = cuMemberBonusCoachService;
}
@Autowired
public void setCuMemberBonusDetailService(ICuMemberBonusDetailService cuMemberBonusDetailService) {
this.cuMemberBonusDetailService = cuMemberBonusDetailService;
}
@Autowired
public void setCuMemberBonusRangeService(ICuMemberBonusRangeService cuMemberBonusRangeService) {
this.cuMemberBonusRangeService = cuMemberBonusRangeService;
}
@Autowired
public void setCuMemberBonusService(ICuMemberBonusService cuMemberBonusService) {
this.cuMemberBonusService = cuMemberBonusService;
}
/**
* 保存会员奖金
@ -121,10 +95,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
BonusRecordDetailVO recordDetailVO = new BonusRecordDetailVO();
// 今天和昨天是否同月
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
// 查询体系奖项配置
Map<Long, List<Integer>> vertexBonusMap = iBdVertexBonusService.queryVertexBonus();
// 计算新零售团队奖金
bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
period, yesterdayPeriod, isSameMonth);
period, yesterdayPeriod, isSameMonth, vertexBonusMap);
// new 每月1号需要计算4个月奖
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
@ -164,7 +140,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
if (CollectionUtil.isNotEmpty(retailOrderList)) {
// 会员奖金map
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.BATCH_UPDATE_NUM);
// 订单数据
SaOrderExt saOrderExt = retailOrderList.get(0);

View File

@ -162,7 +162,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setServiceSpend(BigDecimal.ZERO);
cuMemberBonusExt.setPurRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setRepurPushIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurExpandIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setRepurCoupon(BigDecimal.ZERO);
@ -173,6 +172,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO);
cuMemberBonusExt.setStoreIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailSameLevelIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailAreaIncome(BigDecimal.ZERO);
@ -213,7 +213,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setServiceSpend(ComputeUtil.computeMultiply(cuMemberBonusExt.getServiceSpend(), inExchangeRate));
cuMemberBonusExt.setPurRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getPurRealSubtotal(), inExchangeRate));
cuMemberBonusExt.setRepurPushIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurPushIncome(), inExchangeRate));
cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRangeIncome(), inExchangeRate));
cuMemberBonusExt.setRepurExpandIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurExpandIncome(), inExchangeRate));
cuMemberBonusExt.setRepurRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRealSubtotal(), inExchangeRate));
cuMemberBonusExt.setRepurCoupon(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCoupon(), inExchangeRate));
@ -223,6 +222,8 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setCarAwardPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getCarAwardPoints(), inExchangeRate));
cuMemberBonusExt.setRealIncomeTotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRealIncomeTotal(), inExchangeRate));
cuMemberBonusExt.setStoreIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getStoreIncome(), inExchangeRate));
cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRangeIncome(), inExchangeRate));
cuMemberBonusExt.setRetailRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailRangeIncome(), inExchangeRate));
cuMemberBonusExt.setRetailSameLevelIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailSameLevelIncome(), inExchangeRate));
cuMemberBonusExt.setRetailAreaIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailAreaIncome(), inExchangeRate));
@ -247,7 +248,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setServiceSpend(ComputeUtil.computeAdd(cuMemberBonusExt.getServiceSpend(), memberBonusExt.getServiceSpend()));
cuMemberBonusExt.setPurRealSubtotal(ComputeUtil.computeAdd(cuMemberBonusExt.getPurRealSubtotal(), memberBonusExt.getPurRealSubtotal()));
cuMemberBonusExt.setRepurPushIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRepurPushIncome(), memberBonusExt.getRepurPushIncome()));
cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRepurRangeIncome(), memberBonusExt.getRepurRangeIncome()));
cuMemberBonusExt.setRepurExpandIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRepurExpandIncome(), memberBonusExt.getRepurExpandIncome()));
cuMemberBonusExt.setRepurRealSubtotal(ComputeUtil.computeAdd(cuMemberBonusExt.getRepurRealSubtotal(), memberBonusExt.getRepurRealSubtotal()));
cuMemberBonusExt.setRepurCoupon(ComputeUtil.computeAdd(cuMemberBonusExt.getRepurCoupon(), memberBonusExt.getRepurCoupon()));
@ -258,6 +258,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusExt.getRealIncomeTotal(), memberBonusExt.getRealIncomeTotal()));
cuMemberBonusExt.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getStoreIncome(), memberBonusExt.getStoreIncome()));
cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRepurRangeIncome(), memberBonusExt.getRepurRangeIncome()));
cuMemberBonusExt.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRetailRangeIncome(), memberBonusExt.getRetailRangeIncome()));
cuMemberBonusExt.setRetailSameLevelIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRetailSameLevelIncome(), memberBonusExt.getRetailSameLevelIncome()));
cuMemberBonusExt.setRetailAreaIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRetailAreaIncome(), memberBonusExt.getRetailAreaIncome()));
@ -287,7 +288,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setServiceSpend(BigDecimal.ZERO);
cuMemberBonusExt.setPurRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setRepurPushIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurExpandIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setRepurCoupon(BigDecimal.ZERO);
@ -298,6 +298,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setCarAwardPoints(BigDecimal.ZERO);
cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailSameLevelIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailAreaIncome(BigDecimal.ZERO);
@ -346,9 +347,8 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
memberBonusDetailVO.setSourceMemberName(cuMemberBonusDetail.getSourceMemberName());
memberBonusDetailVOList.add(memberBonusDetailVO);
});
} else if (EBonusItems.BOOT_CARD.getValue() == bonusItemsValue || EBonusItems.DIRECT_INCOME.getValue() == bonusItemsValue ||
EBonusItems.HELP_EACH_INCOME.getValue() == bonusItemsValue) {
// 启动卡直推 推荐收益
} else if (EBonusItems.DIRECT_INCOME.getValue() == bonusItemsValue) {
// 直推收益
List<CuMemberBonusPushExt> cuMemberBonusPushList = cuMemberBonusPushMapper.queryMemberBonusPushByBonusItems(bonusParam);
dataTable = getDataTable(cuMemberBonusPushList);
cuMemberBonusPushList.forEach(cuMemberBonusPush -> {
@ -381,7 +381,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
});
} else if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItemsValue) {
// 复购极差
// 拓展收益复购拓展收益
List<CuMemberBonusRangeExt> cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItems(bonusParam);
dataTable = getDataTable(cuMemberBonusRangeList);
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
@ -446,9 +445,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusDetail, MemberBonusDetailSerVO.class);
memberBonusDetailSerVoS.add(memberBonusDetailVO);
});
} else if (EBonusItems.BOOT_CARD.getValue() == bonusItemsValue
|| EBonusItems.DIRECT_INCOME.getValue() == bonusItemsValue
|| EBonusItems.HELP_EACH_INCOME.getValue() == bonusItemsValue) {
} else if (EBonusItems.DIRECT_INCOME.getValue() == bonusItemsValue) {
// 启动卡直推 推荐收益
List<CuMemberBonusPushExt> cuMemberBonusPushList = cuMemberBonusPushMapper.queryMemberBonusPushByBonusItemsFoServer(bonusParam);
dataTable = getDataTable(cuMemberBonusPushList);
@ -619,6 +616,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_RANGE_INCOME.getValue());
baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_SAME_LEVEL_INCOME.getValue());
baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.RETAIL_AREA_INCOME.getValue());
baseMapper.mergeBackRangeBonusIncome(pkOrder, EBonusItems.REPURCHASE_RANGE_INCOME.getValue());
}
@Override

View File

@ -38,7 +38,7 @@ public class BonusRecordDetailVO implements Serializable {
private List<CuMemberBonusDetail> cuMemberBonusDetailList;
/**
* 新零售 - 直推收益平级收益福利级差复购级差
* 新零售 - 直推收益平级收益月度福利级差月度复购级差复购级差
*/
private List<CuMemberBonusRange> cuMemberBonusRangeList;
}

View File

@ -60,13 +60,13 @@ public class BonusTotalVO implements Serializable {
/**
* 新零售福利级差收益
*/
@Excel(name = "福利级差收益", scale = 2)
@Excel(name = "月度福利级差收益", scale = 2)
private BigDecimal retailBenefitRangeIncome;
/**
* 新零售复购级差收益
*/
@Excel(name = "复购级差收益", scale = 2)
@Excel(name = "月度复购级差收益", scale = 2)
private BigDecimal retailMonthRepurchaseIncome;
/**
@ -87,18 +87,23 @@ public class BonusTotalVO implements Serializable {
@Excel(name = "福利分红加权收益", scale = 2)
private BigDecimal retailBenefitIncome;
/**
* 复购级差收益
*/
@Excel(name = "复购级差收益", scale = 2)
private BigDecimal repurRangeIncome;
/**
* 重消收益
*/
@Excel(name = "重消收益", scale = 2)
private BigDecimal backPointsOri;
private BigDecimal backPoints;
/**
* 实发收益总计
*/
@Excel(name = "实发收益总计", scale = 2)
private BigDecimal realIncomeTotalOri;
private BigDecimal realIncomeTotal;
/**
@ -154,11 +159,6 @@ public class BonusTotalVO implements Serializable {
private BigDecimal repurPushIncomeOri;
/**
* 复购级差收益
*/
private BigDecimal repurRangeIncomeOri;
/**
* 复购拓展收益
*/
@ -267,11 +267,6 @@ public class BonusTotalVO implements Serializable {
private BigDecimal repurPushIncome;
/**
* 复购级差收益
*/
private BigDecimal repurRangeIncome;
/**
* 复购拓展收益
*/
@ -287,11 +282,6 @@ public class BonusTotalVO implements Serializable {
*/
private BigDecimal repurCouponShare;
/**
* 商城重消
*/
private BigDecimal backPoints;
/**
* 平台服务费
*/
@ -337,10 +327,4 @@ public class BonusTotalVO implements Serializable {
*/
private BigDecimal repurCouponSubtotal;
/**
* 实发收益总计
*/
private BigDecimal realIncomeTotal;
}

View File

@ -92,7 +92,7 @@ public class CuMemberBonusVO implements Serializable {
public static final String[] INCOME_ARRAY = new String[]{
"backPoints", "retailRangeIncome", "retailSameLevelIncome", "retailAreaIncome",
"retailBenefitRangeIncome", "retailMonthRepurchaseIncome", "coachIncome", "retailBenefitAvgIncome",
"retailBenefitIncome", "retailRealSubtotal", "realIncomeTotal"};
"retailBenefitIncome", "retailRealSubtotal", "realIncomeTotal", "repurRangeIncome"};
private BigDecimal retailRangeIncome;
@ -120,14 +120,14 @@ public class CuMemberBonusVO implements Serializable {
* 新零售福利级差收益
*/
private BigDecimal retailBenefitRangeIncome;
@Excel(name = " 福利级差收益", scale = 2)
@Excel(name = "月度福利级差收益", scale = 2)
private BigDecimal retailBenefitRangeIncomeOri;
/**
* 新零售复购级差收益
*/
private BigDecimal retailMonthRepurchaseIncome;
@Excel(name = "复购级差收益", scale = 2)
@Excel(name = "月度复购级差收益", scale = 2)
private BigDecimal retailMonthRepurchaseIncomeOri;
/**
@ -151,6 +151,13 @@ public class CuMemberBonusVO implements Serializable {
@Excel(name = " 福利加权收益", scale = 2)
private BigDecimal retailBenefitIncomeOri;
/**
* 复购级差收益
*/
private BigDecimal repurRangeIncome;
@Excel(name = "复购级差收益", scale = 2)
private BigDecimal repurRangeIncomeOri;
/**
* 商城重消
*/

View File

@ -55,12 +55,12 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
// * 复购拓展收益
// */
// private BigDecimal repurExpandIncome;
//
// /**
// * 复购级差收益
// */
// private BigDecimal repurRangeIncome;
//
/**
* 复购级差收益
*/
private BigDecimal repurRangeIncome;
// /**
// * 复购实发小计
// */

View File

@ -160,6 +160,12 @@ public class MemberBonusVO implements Serializable {
*/
private BigDecimal retailBenefitIncome;
/**
* 复购级差收益
*/
@BigDecimalFormat("#0.0000")
private BigDecimal repurRangeIncome;
/**
* 新零售收益小计
*/

View File

@ -71,7 +71,7 @@ public class CuMemberAssessDetailServiceImpl extends ServiceImpl<CuMemberAssessD
@Override
public void deleteCuMemberAssessDetailByList(List<CuMemberAssessDetail> revokeDetailList) {
List<List<?>> handleCutList = cuMemberBonusSettle.handleCutList(revokeDetailList,
MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
MagicNumberConstants.BATCH_UPDATE_NUM);
handleCutList.forEach(list -> {
baseMapper.updateCuMemberAssessDetailByRevoke(list);
});

View File

@ -1,6 +1,7 @@
package com.hzs.bonus.order.mapper;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrder;
import org.apache.ibatis.annotations.Param;
@ -40,4 +41,12 @@ public interface BonusOrderMapper {
@Param("endDate") Date endDate,
@Param("orderType") List<Integer> orderType);
/**
* 查询订单商品级差数据
*
* @param orderList 订单列表
* @return
*/
List<SaOrderItemsExt> listOrderWaresRange(@Param("orderList") List<SaOrderExt> orderList);
}

View File

@ -1,10 +1,12 @@
package com.hzs.bonus.order.service;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrder;
import java.util.Date;
import java.util.List;
import java.util.Map;
public interface IBonusOrderService {
@ -30,4 +32,12 @@ public interface IBonusOrderService {
*/
List<SaOrder> listSaOrderByTime(Date startDate, Date endDate, List<Integer> orderType);
/**
* 查询商品级差数据
*
* @param orderList
* @return
*/
Map<Long, List<SaOrderItemsExt>> getWaresRange(List<SaOrderExt> orderList);
}

View File

@ -1,21 +1,26 @@
package com.hzs.bonus.order.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
import com.hzs.bonus.order.mapper.BonusOrderMapper;
import com.hzs.bonus.order.service.IBonusOrderService;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.*;
@Service
public class BonusOrderServiceImpl implements IBonusOrderService {
@Resource
private BonusOrderMapper bonusOrderMapper;
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Override
public List<SaOrderExt> queryRetailSaOrderByDay(Date startDate, Date endDate, String orderCode) {
@ -36,4 +41,26 @@ public class BonusOrderServiceImpl implements IBonusOrderService {
return bonusOrderMapper.listSaOrderByTime(startDate, endDate, orderType);
}
@Override
public Map<Long, List<SaOrderItemsExt>> getWaresRange(List<SaOrderExt> orderList) {
Map<Long, List<SaOrderItemsExt>> resultMap = new HashMap<>();
List<SaOrderItemsExt> resultList = new ArrayList<>();
List<List<?>> handleCutList = cuMemberBonusSettle.handleCutList(orderList, MagicNumberConstants.BATCH_UPDATE_NUM);
handleCutList.forEach(list -> {
resultList.addAll(bonusOrderMapper.listOrderWaresRange(orderList));
});
for (SaOrderItemsExt saOrderItemsExt : resultList) {
if (resultMap.containsKey(saOrderItemsExt.getPkOrder())) {
resultMap.get(saOrderItemsExt.getPkOrder()).add(saOrderItemsExt);
} else {
List<SaOrderItemsExt> tmpList = new ArrayList<>();
tmpList.add(saOrderItemsExt);
resultMap.put(saOrderItemsExt.getPkOrder(), tmpList);
}
}
return resultMap;
}
}

View File

@ -1,28 +1,11 @@
package com.hzs.bonus.swing.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt;
import com.hzs.common.domain.member.swing.CuMemberSwingNetLog;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 会员甩网业绩记录 Mapper 接口
* </p>
*
* @author hzs
* @since 2024-03-05
*/
public interface CuMemberSwingNetLogMapper extends BaseMapper<CuMemberSwingNetLog> {
/*
* @description: 更新或修改甩网业绩记录
* @author: sui q
* @date: 2024/3/5 11:23
* @param: null null
**/
void mergeCuMemberSwingNetLogByAchieve(@Param("cuMemberAchieveExtList") List<CuMemberAchieveExt> cuMemberAchieveExtList,
@Param("settleTableName") String settleTableName);
}

View File

@ -1,26 +1,11 @@
package com.hzs.bonus.swing.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt;
import com.hzs.common.domain.member.swing.CuMemberSwingNetLog;
import java.util.List;
/**
* <p>
* 会员甩网业绩记录 服务类
* </p>
*
* @author hzs
* @since 2024-03-05
*/
public interface ICuMemberSwingNetLogService extends IService<CuMemberSwingNetLog> {
/*
* @description: 更新或修改甩网业绩记录
* @author: sui q
* @date: 2024/3/5 11:23
* @param: null null
**/
void mergeCuMemberSwingNetLogByAchieve(List<CuMemberAchieveExt> cuMemberAchieveExtList, String settleTableName);
}

View File

@ -3,25 +3,13 @@ package com.hzs.bonus.swing.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.swing.mapper.CuMemberSwingNetLogMapper;
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt;
import com.hzs.common.domain.member.swing.CuMemberSwingNetLog;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 会员甩网业绩记录 服务实现类
* </p>
*
* @author hzs
* @since 2024-03-05
*/
@Service
public class CuMemberSwingNetLogServiceImpl extends ServiceImpl<CuMemberSwingNetLogMapper, CuMemberSwingNetLog> implements ICuMemberSwingNetLogService {
@Override
public void mergeCuMemberSwingNetLogByAchieve(List<CuMemberAchieveExt> cuMemberAchieveExtList, String settleTableName) {
baseMapper.mergeCuMemberSwingNetLogByAchieve(cuMemberAchieveExtList, settleTableName);
}
}

View File

@ -398,6 +398,7 @@
bw.benefit_avg_ratio,
bw.benefit_share_ratio,
br.name country_name,
a.pk_vertex,
bv.region_vertex_pk_id
from (
select * from ${tableName}
@ -694,6 +695,7 @@
a.pk_share_awards,
cm.income_status,
cm.pay_time,
cm.pk_vertex,
nvl(b.pk_rate, bt.pk_id) pk_rate,
nvl(cm.is_activate, a.enable_status) enable_status,
a.new_box_num,

View File

@ -1,5 +1,6 @@
<?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.hzs.ground.product.mapper.ThApprovalLogMapper">
<mapper namespace="com.hzs.bonus.base.mapper.BdVertexBonusMapper">
</mapper>

View File

@ -343,4 +343,14 @@
when matched then
update set a.pk_settle_grade = b.pk_grade, a.modified_time = sysdate
</update>
<!-- 查询体系奖项列表 -->
<select id="listVertexBonus" resultType="com.hzs.common.domain.vertex.BdVertexBonus">
select * from cu_member cm
left join bd_vertex_bonus bvb
on bvb.pk_vertex = cm.pk_vertex
where cm.pk_id = #{pkMember}
order by cm.pk_id desc
</select>
</mapper>

View File

@ -47,7 +47,6 @@
<result column="SETTLE_COUNTRY" property="settleCountry"/>
<result column="PERIOD" property="period"/>
<result column="pk_source_country" property="pkSourceCountry"/>
<result column="service_code" property="serviceCode"/>
<result column="pk_vertex" property="pkVertex"/>
<result column="nick_name" property="nickName"/>
@ -67,7 +66,7 @@
#{item.calType}, #{item.calAchieve, jdbcType=NUMERIC}, #{item.calValue, jdbcType=NUMERIC}, #{item.pretaxIncome, jdbcType=NUMERIC},
#{item.incomeTax, jdbcType=NUMERIC}, #{item.realIncome, jdbcType=NUMERIC}, #{item.remark},
#{item.incomeRatio, jdbcType=NUMERIC}, #{item.incomeDialRatio, jdbcType=NUMERIC}, #{item.orderDialRatio, jdbcType=NUMERIC},
#{item.pkCountry},#{item.pkCreator})
#{item.pkCountry}, #{item.pkCreator})
</foreach>
SELECT 1 FROM dual
</insert>

View File

@ -84,33 +84,42 @@
<update id="mergeBackRangeBonusIncome">
merge into cu_member_bonus a
using(
select b.* from bd_bonus_items bt
inner join(
select pk_bonus,pk_bonus_items, sum(pretax_income) pretax_income,
sum(income_tax) income_tax, sum(real_income) real_income from
<choose>
<when test="bonusValue == 27"> cu_member_bonus_detail </when>
<otherwise> cu_member_bonus_range </otherwise>
</choose>
where del_flag=0 and pk_order= #{pkOrder}
group by pk_bonus, pk_bonus_items) b
on bt.pk_id = b.pk_bonus_items
where bt.bonus_value = #{bonusValue}) b
on (a.pk_id = b.pk_bonus)
when matched then
update set a.retail_real_subtotal=a.retail_real_subtotal-b.real_income,
a.back_points=a.back_points-b.income_tax,
a.real_income_total=a.real_income_total-b.real_income
<if test="bonusValue == 25">
,a.retail_range_income = a.retail_range_income - b.pretax_income
</if>
<if test="bonusValue == 26">
,a.retail_same_level_income = a.retail_same_level_income - b.pretax_income
</if>
<if test="bonusValue == 27">
,a.retail_area_income = a.retail_area_income - b.pretax_income
</if>
using (
select b.* from bd_bonus_items bt
inner join (
select pk_bonus, pk_bonus_items,
sum(pretax_income) pretax_income,
sum(income_tax) income_tax,
sum(real_income) real_income
from
<choose>
<when test="bonusValue == 27">cu_member_bonus_detail</when>
<otherwise>cu_member_bonus_range</otherwise>
</choose>
where del_flag = 0
and pk_order= #{pkOrder}
group by pk_bonus, pk_bonus_items
) b
on bt.pk_id = b.pk_bonus_items
where bt.bonus_value = #{bonusValue}
) b
on (a.pk_id = b.pk_bonus)
when matched then
update set a.retail_real_subtotal = a.retail_real_subtotal - b.real_income,
a.back_points = a.back_points - b.income_tax,
a.real_income_total = a.real_income_total - b.real_income
<if test="bonusValue == 8">
,a.repur_range_income = a.repur_range_income - b.pretax_income
</if>
<if test="bonusValue == 25">
,a.retail_range_income = a.retail_range_income - b.pretax_income
</if>
<if test="bonusValue == 26">
,a.retail_same_level_income = a.retail_same_level_income - b.pretax_income
</if>
<if test="bonusValue == 27">
,a.retail_area_income = a.retail_area_income - b.pretax_income
</if>
</update>
<delete id="deleteCuMemberBonus">
@ -178,21 +187,25 @@
using(
select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
pur_real_subtotal,repur_push_income,
repur_range_income,
repur_expand_income,repur_real_subtotal,
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
repur_coupon,repur_coupon_subtotal,global_points,
car_award_points,hi_fun_income,hai_fun_income,retail_range_income,retail_same_level_income,retail_area_income,
retail_benefit_range_income,retail_benefit_avg_income,
retail_benefit_income,retail_real_subtotal,
maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total,
pk_country,pk_creator,grant_status,income_status from(
car_award_points,hi_fun_income,hai_fun_income,
retail_range_income, retail_same_level_income, retail_area_income,
retail_benefit_range_income, retail_benefit_avg_income, retail_benefit_income,
retail_real_subtotal, maker_direct_income,maker_share_income, maker_real_subtotal, real_income_total,
pk_country, pk_creator, grant_status, income_status
from (
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate} pk_rate,
#{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping,
#{item.expandCapping} expand_capping,#{item.coachIncome} coach_income,#{item.shareIncome} share_income,
#{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend,
#{item.purRealSubtotal} pur_real_subtotal,#{item.repurPushIncome} repur_push_income,
#{item.repurRangeIncome} repur_range_income,#{item.repurExpandIncome} repur_expand_income,
#{item.repurRangeIncome} repur_range_income,
#{item.repurExpandIncome} repur_expand_income,
#{item.repurRealSubtotal} repur_real_subtotal,#{item.cloudDirectIncome} cloud_direct_income,
#{item.cloudPurIncome} cloud_pur_income,#{item.cloudRepurIncome} cloud_repur_income,
#{item.cloudRealSubtotal} cloud_real_subtotal,#{item.repurCoupon} repur_coupon,
@ -201,11 +214,12 @@
#{item.haiFunIncome} hai_fun_income,#{item.makerDirectIncome} maker_direct_income,
#{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal} maker_real_subtotal,
#{item.realIncomeTotal} real_income_total,#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,
#{item.grantStatus} grant_status,#{item.incomeStatus} income_status,
#{item.retailRangeIncome} retail_range_income,#{item.retailSameLevelIncome} retail_same_level_income,
#{item.retailAreaIncome} retail_area_income,#{item.retailBenefitRangeIncome} retail_benefit_range_income,
#{item.retailBenefitAvgIncome} retail_benefit_avg_income,#{item.retailBenefitIncome} retail_benefit_income,
#{item.retailRealSubtotal} retail_real_subtotal from dual
#{item.grantStatus} grant_status, #{item.incomeStatus} income_status,
#{item.retailRangeIncome} retail_range_income, #{item.retailSameLevelIncome} retail_same_level_income,
#{item.retailAreaIncome} retail_area_income, #{item.retailBenefitRangeIncome} retail_benefit_range_income,
#{item.retailBenefitAvgIncome} retail_benefit_avg_income, #{item.retailBenefitIncome} retail_benefit_income,
#{item.retailRealSubtotal} retail_real_subtotal
from dual
</foreach>)
) b
on (a.pk_member = b.pk_member and a.period = b.period)
@ -216,31 +230,44 @@
a.coach_income=a.coach_income+b.coach_income,a.share_income=a.share_income+b.share_income,
a.service_income=a.service_income+b.service_income,a.back_points=a.back_points+b.back_points,a.service_spend=a.service_spend+b.service_spend,
a.pur_real_subtotal=a.pur_real_subtotal+b.pur_real_subtotal,a.repur_push_income=a.repur_push_income+b.repur_push_income,
a.repur_range_income=a.repur_range_income+b.repur_range_income,a.repur_expand_income=a.repur_expand_income+b.repur_expand_income,
a.repur_range_income = a.repur_range_income + b.repur_range_income,
a.repur_expand_income=a.repur_expand_income+b.repur_expand_income,
a.repur_real_subtotal=a.repur_real_subtotal+b.repur_real_subtotal,a.cloud_direct_income=a.cloud_direct_income+b.cloud_direct_income,
a.cloud_pur_income=a.cloud_pur_income+b.cloud_pur_income,a.cloud_repur_income=a.cloud_repur_income+b.cloud_repur_income,
a.cloud_real_subtotal=a.cloud_real_subtotal+b.cloud_real_subtotal,a.repur_coupon=a.repur_coupon+b.repur_coupon,
a.global_points=a.global_points+b.global_points,a.car_award_points=a.car_award_points+b.car_award_points,
a.hi_fun_income=a.hi_fun_income+b.hi_fun_income,a.real_income_total=a.real_income_total+b.real_income_total,
a.retail_range_income=a.retail_range_income+b.retail_range_income,a.retail_same_level_income=a.retail_same_level_income+b.retail_same_level_income,
a.retail_area_income=a.retail_area_income+b.retail_area_income,a.retail_benefit_range_income=a.retail_benefit_range_income+b.retail_benefit_range_income,
a.retail_benefit_avg_income=a.retail_benefit_avg_income+b.retail_benefit_avg_income,a.retail_benefit_income=a.retail_benefit_income+b.retail_benefit_income,
a.retail_real_subtotal=a.retail_real_subtotal+b.retail_real_subtotal
a.retail_range_income = a.retail_range_income + b.retail_range_income,
a.retail_same_level_income = a.retail_same_level_income + b.retail_same_level_income,
a.retail_area_income = a.retail_area_income + b.retail_area_income,
a.retail_benefit_range_income = a.retail_benefit_range_income + b.retail_benefit_range_income,
a.retail_benefit_avg_income = a.retail_benefit_avg_income + b.retail_benefit_avg_income,
a.retail_benefit_income = a.retail_benefit_income + b.retail_benefit_income,
a.retail_real_subtotal = a.retail_real_subtotal + b.retail_real_subtotal
when not matched then
insert (pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
insert (
pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
pur_real_subtotal,repur_push_income,
repur_range_income,
repur_expand_income,repur_real_subtotal,
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
repur_coupon,global_points,car_award_points,hi_fun_income,real_income_total,
pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income,
retail_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,retail_real_subtotal)
values(b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping,
pk_country,pk_creator,grant_status,income_status,
retail_range_income, retail_same_level_income, retail_area_income,
retail_benefit_range_income, retail_benefit_avg_income, retail_benefit_income,
retail_real_subtotal)
values (
b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping,
b.expand_capping,b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend,
b.pur_real_subtotal,b.repur_push_income,b.repur_range_income,b.repur_expand_income,b.repur_real_subtotal,
b.pur_real_subtotal,b.repur_push_income,
b.repur_range_income,
b.repur_expand_income,b.repur_real_subtotal,
b.cloud_direct_income,b.cloud_pur_income,b.cloud_repur_income,b.cloud_real_subtotal,
b.repur_coupon,b.global_points,b.car_award_points,b.hi_fun_income,b.real_income_total,
b.pk_country,b.pk_creator,b.grant_status,b.income_status,b.retail_range_income,b.retail_same_level_income,
b.retail_area_income,b.retail_benefit_range_income,b.retail_benefit_avg_income,b.retail_benefit_income,
b.pk_country,b.pk_creator,b.grant_status,b.income_status,
b.retail_range_income, b.retail_same_level_income, b.retail_area_income,
b.retail_benefit_range_income, b.retail_benefit_avg_income, b.retail_benefit_income,
b.retail_real_subtotal)
</insert>
@ -257,15 +284,14 @@
cb.service_spend,
cb.pur_real_subtotal,
cb.repur_push_income,
cb.repur_range_income,
cb.repur_expand_income,
cb.repur_real_subtotal,
cb.repur_coupon,
cb.repur_coupon_share,
cb.repur_coupon_subtotal,
cb.store_income,
cb.global_points,
cb.car_award_points,
cb.global_points, cb.car_award_points,
cb.repur_range_income,
cb.retail_range_income,
cb.retail_same_level_income,
cb.retail_area_income,
@ -298,10 +324,11 @@
bv.vertex_name, ct.team_name,
cb.period,cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping,
cb.expand_capping,cb.share_income,cb.service_income,cb.back_points,cb.service_spend,
cb.pur_real_subtotal,cb.repur_push_income,cb.repur_range_income,cb.repur_expand_income,cb.repur_real_subtotal,
cb.pur_real_subtotal,cb.repur_push_income,cb.repur_expand_income,cb.repur_real_subtotal,
cb.repur_coupon,cb.repur_coupon_share,cb.repur_coupon_subtotal,cb.store_income,
cb.global_points,cb.car_award_points,cb.pk_rate,bc.out_exchange_rate,
cb.coach_income,
cb.repur_range_income,
cb.retail_range_income, cb.retail_same_level_income, cb.retail_area_income,
cb.retail_benefit_range_income, cb.retail_month_repurchase_income,
cb.retail_benefit_avg_income, cb.retail_benefit_income,cb.retail_real_subtotal,
@ -392,7 +419,6 @@
nvl(sum(cb.service_spend),0) service_spend,
nvl(sum(cb.pur_real_subtotal),0) pur_real_subtotal,
nvl(sum(cb.repur_push_income),0) repur_push_income,
nvl(sum(cb.repur_range_income),0) repur_range_income,
nvl(sum(cb.repur_expand_income),0) repur_expand_income,
nvl(sum(cb.repur_real_subtotal),0) repur_real_subtotal,
nvl(sum(cb.repur_coupon),0) repur_coupon,
@ -402,6 +428,7 @@
nvl(sum(cb.global_points),0) global_points,
nvl(sum(cb.car_award_points),0) car_award_points,
bc.out_exchange_rate,
nvl(sum(cb.repur_range_income),0) repur_range_income,
nvl(sum(cb.retail_range_income),0) retail_range_income,
nvl(sum(cb.retail_same_level_income),0) retail_same_level_income,
nvl(sum(cb.retail_area_income),0) retail_area_income,
@ -487,11 +514,12 @@
sum(cb.share_income) share_income, sum(cb.service_spend) service_spend,
sum(cb.service_income) service_income, sum(cb.back_points) back_points,
sum(cb.pur_real_subtotal) pur_real_subtotal,
sum(cb.repur_push_income) repur_push_income, sum(cb.repur_range_income) repur_range_income,
sum(cb.repur_push_income) repur_push_income,
sum(cb.repur_expand_income) repur_expand_income, sum(cb.repur_real_subtotal) repur_real_subtotal,
sum(cb.repur_coupon) repur_coupon, sum(repur_coupon_share) repur_coupon_share,
sum(cb.repur_coupon_subtotal) repur_coupon_subtotal,
sum(cb.global_points) global_points, sum(cb.car_award_points) car_award_points,
sum(cb.repur_range_income) repur_range_income,
sum(cb.retail_range_income) retail_range_income,
sum(cb.retail_same_level_income) retail_same_level_income,
sum(cb.retail_area_income) retail_area_income,

View File

@ -85,7 +85,6 @@
</collection>
</resultMap>
<!-- 订单+详情返回映射 -->
<resultMap id="saOrderExtResultMap" type="com.hzs.common.domain.sale.ext.SaOrderExt" extends="SaOrder">
<result column="MEMBER_CODE" property="memberCode"/>
@ -329,4 +328,69 @@
and #{endDate} > so.pay_time
</select>
<!-- 通用查询映射结果 -->
<resultMap id="SaOrderItems" type="com.hzs.common.domain.sale.ext.SaOrderItemsExt">
<result column="PK_ORDER" property="pkOrder"/>
<result column="PK_ID" property="pkId"/>
<result column="PRICE" property="price"/>
<result column="PK_WARES" property="pkWares"/>
<result column="PK_PRODUCT" property="pkProduct"/>
<result column="PK_WARES_DETAIL" property="pkWaresDetail"/>
<result column="PK_WARES_SPECS_SKU" property="pkWaresSpecsSku"/>
<collection property="waresRangeTmpList" ofType="com.hzs.common.domain.sale.wares.ext.WaresRangeTmp">
<result column="RANGE_PRICE" property="rangePrice"/>
<result column="RANGE_VALUE" property="rangeValue"/>
</collection>
</resultMap>
<!-- 查询商品级差数据 -->
<select id="listOrderWaresRange" resultType="com.hzs.common.domain.sale.ext.SaOrderItemsExt">
select soi.pk_order,
soi.pk_id,
soi.price,
bwr.pk_wares,
bwr.pk_product,
bwr.pk_wares_detail,
bwr.pk_wares_specs_sku,
bwr.price range_price,
br.range_value
from (select so.pk_id pk_order,
soi.pk_id,
soi.pk_wares,
soi.pk_product,
soi.pk_wares_detail,
soi.pk_wares_specs_sku,
soi.price
from sa_order so
left join sa_order_items soi
on soi.pk_order = so.pk_id
where so.del_flag = 0
and soi.del_flag = 0
and soi.is_gift = 1
and so.order_code in
<foreach collection="orderList" item="items" open="(" separator="," close=")">
#{items.orderCode}
</foreach>
group by so.pk_id,
soi.pk_id,
soi.pk_wares,
soi.pk_product,
soi.pk_wares_detail,
soi.pk_wares_specs_sku,
soi.price) soi
left join bd_wares_range bwr
on bwr.pk_wares = soi.pk_wares
and bwr.pk_product = soi.pk_product
and bwr.pk_wares_detail = soi.pk_wares_detail
and bwr.pk_wares_specs_sku = soi.pk_wares_specs_sku
left join bd_range br
on br.pk_id = bwr.pk_range
and br.del_flag = 0
order by bwr.pk_wares,
bwr.pk_product,
bwr.pk_wares_detail,
bwr.pk_wares_specs_sku,
br.range_value
</select>
</mapper>

View File

@ -2,58 +2,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.bonus.swing.mapper.CuMemberSwingNetLogMapper">
<!-- 通用查询映射结果 -->
<resultMap id="CuMemberSwingNetLog" type="com.hzs.common.domain.member.swing.CuMemberSwingNetLog">
<id column="PK_ID" property="pkId" />
<result column="CREATION_TIME" property="creationTime" />
<result column="MODIFIED_TIME" property="modifiedTime" />
<result column="DEL_FLAG" property="delFlag" />
<result column="PK_CREATOR" property="pkCreator" />
<result column="PK_MODIFIED" property="pkModified" />
<result column="PK_COUNTRY" property="pkCountry" />
<result column="PK_MEMBER" property="pkMember" />
<result column="PERIOD" property="period" />
<result column="PLACE_DEPT" property="placeDept" />
<result column="NET_FIRST_ACHIEVE" property="netFirstAchieve" />
<result column="NET_REPURCHASE_ACHIEVE" property="netRepurchaseAchieve" />
<result column="NET_REAL_ACHIEVE" property="netRealAchieve" />
<result column="A_SUM_PV" property="aSumPv" />
<result column="B_SUM_PV" property="bSumPv" />
<result column="A_SUM_REAL_PV" property="aSumRealPv" />
<result column="B_SUM_REAL_PV" property="bSumRealPv" />
<result column="REP_A_SUM_PV" property="repASumPv" />
<result column="REP_B_SUM_PV" property="repBSumPv" />
</resultMap>
<update id="mergeCuMemberSwingNetLogByAchieve">
merge into cu_member_swing_net_log a
using (
select x.*,(x.net_first_achieve+x.net_repurchase_achieve) net_real_achieve,
y.a_sum_pv,y.b_sum_pv,y.a_sum_real_pv,y.b_sum_real_pv,y.rep_a_new_pv rep_a_sum_pv,y.rep_b_new_pv rep_b_sum_pv,'100000000' pk_creator from(
select pk_member,place_dept,period,pk_country,sum(net_first_achieve) net_first_achieve,
sum(net_repurchase_achieve) net_repurchase_achieve from(
<foreach collection="cuMemberAchieveExtList" item="item" separator=" union all">
select
#{item.pkMember} pk_member,#{item.placeDept} place_dept,#{item.period} period,
#{item.netFirstAchieve} net_first_achieve,#{item.netRepurchaseAchieve} net_repurchase_achieve,
#{item.pkCountry} pk_country from dual
</foreach>)
group by pk_member,place_dept,period,pk_country) x
inner join ${settleTableName} y
on x.pk_member=y.pk_member
) b
on (a.pk_member=b.pk_member and a.period=b.period and a.place_dept=b.place_dept)
when matched then
update set a.net_first_achieve=b.net_first_achieve,a.net_repurchase_achieve=b.net_repurchase_achieve,
a.net_real_achieve=b.net_real_achieve,a.a_sum_pv=b.a_sum_pv,a.b_sum_pv=b.b_sum_pv,
a.a_sum_real_pv=b.a_sum_real_pv,a.b_sum_real_pv=b.b_sum_real_pv,
a.rep_a_sum_pv=b.rep_a_sum_pv,a.rep_b_sum_pv=b.rep_b_sum_pv,modified_time=sysdate
when not matched then
insert
(PK_ID,pk_member,period,place_dept,net_first_achieve,net_repurchase_achieve,net_real_achieve,
a_sum_pv,b_sum_pv,a_sum_real_pv,b_sum_real_pv,rep_a_sum_pv,rep_b_sum_pv,pk_creator,pk_country)
values (CU_MEMBER_SWING_NET_LOG_SEQ.NEXTVAL,b.pk_member,b.period,b.place_dept,b.net_first_achieve,
b.net_repurchase_achieve,b.net_real_achieve,b.a_sum_pv,b.b_sum_pv,b.a_sum_real_pv,b.b_sum_real_pv,
b.rep_a_sum_pv,b.rep_b_sum_pv,b.pk_creator,b.pk_country)
</update>
</mapper>

View File

@ -2,6 +2,7 @@ package com.hzs.member.base.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.common.core.constant.*;
@ -31,6 +32,7 @@ import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.system.config.BdAccount;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.domain.third.pay.TOnlinePayment;
import com.hzs.common.util.TransactionUtils;
import com.hzs.member.account.dto.BusinessCommissionDTO;
import com.hzs.member.account.service.ICuMemberAccountService;
@ -51,6 +53,7 @@ import com.hzs.system.config.IAccountServiceApi;
import com.hzs.system.config.IAreaCurrencyServiceApi;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO;
import com.hzs.third.pay.ITOnlinePaymentServiceApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
@ -80,6 +83,9 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
ITOnlinePaymentServiceApi itOnlinePaymentServiceApi;
@Autowired
private MemberToolsHandler memberToolsHandler;
@Autowired
@ -92,6 +98,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
private ICuMemberService cuMemberService;
private ICuMemberRegisterService cuMemberRegisterService;
@Autowired
private ICuMemberAccountService iCuMemberAccountService;
private ICuMemberAccountService cuMemberAccountService;
@ -617,7 +625,14 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
cuMemberRegisterService.updateCuMemberRegister(cuMemberRegister);
}
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
// 默认回退给创建人
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
} else {
// 在线支付处理退款
this.handleOnlineRefund(saOrder);
}
return true;
}
@ -648,19 +663,16 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
updateWrapperRegister.eq(CuMemberRegister::getPkMember, member.getPkId());
cuMemberRegisterService.update(updateWrapperRegister);
}
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
} else {
// 在线支付处理退款
this.handleOnlineRefund(saOrder);
}
return true;
}
/**
* @description: 自助服务-生成订单
* @author: zhang jing
* @date: 2023/4/18 17:13
* @param: [pkApprove, saOrder, payMemberAccount]
* @return: void
**/
@Transactional(rollbackFor = Exception.class)
@Override
public void selfInsertMemberTrade(SaOrder saOrder, CuMemberAccount cuMemberAccount) {
@ -878,8 +890,20 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
cuMemberRegister.setPkCountry(saOrder.getPkCountry());
cuMemberRegister.setPkModified(saOrder.getPkCreator());
cuMemberRegisterService.updateCuMemberRegister(cuMemberRegister);
CuMemberAccount payMemberAccount = cuMemberAccountMap.get(saOrder.getPkCreator());
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
CuMemberAccount payMemberAccount = cuMemberAccountMap.get(saOrder.getPkCreator());
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
}
}
for (int i = memberList.size() - 1; i >= 0; i--) {
Long pkMember = memberList.get(i);
SaOrderExt saOrder = saOrderMap.get(pkMember);
if (saOrder.getPayType().equals(EOrderPayType.ONLINE.getValue())) {
// 在线支付处理退款
this.handleOnlineRefund(saOrder);
}
}
return Boolean.TRUE;
}
@ -941,12 +965,19 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
// 部分撤单 todo 发货后邮费不退未发货退邮费
if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) {
cancelPartOrderBackAmount(pkApprove, saOrder);
if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
// 部分撤单
if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) {
cancelPartOrderBackAmount(pkApprove, saOrder);
} else {
CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
// 回退账号余额
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
}
} else {
CuMemberAccount payMemberAccount = cuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
// 回退账号余额
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
// 在线支付处理退款
this.handleOnlineRefund(saOrder);
}
return Boolean.TRUE;
}
@ -1577,4 +1608,22 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
}
}
/**
* 在线支付退款
*
* @param saOrder
*/
private void handleOnlineRefund(SaOrderExt saOrder) {
R<TOnlinePayment> onlinePaymentR = itOnlinePaymentServiceApi.getOnlinePayment(saOrder.getOrderCode());
if (ObjectUtil.isNotEmpty(onlinePaymentR)) {
TOnlinePayment onlinePayment = onlinePaymentR.getData();
if (ObjectUtil.isNotEmpty(onlinePayment)) {
R<String> result = itOnlinePaymentServiceApi.refund(saOrder.getOrderCode(), saOrder.getPkCreator());
if (!result.isSuccess()) {
throw new ServiceException(result.getMsg());
}
}
}
}
}

View File

@ -197,23 +197,6 @@ public class CuBonusStatisServiceImpl extends ServiceImpl<CuBonusStatisMapper, C
case REPURCHASE_COUPONS:
oldBon.setRepurCouponSubtotal(addOrInitializeAmount(oldBon.getRepurCouponSubtotal(), newBon.getRealIncome(), 2));
break;
case HELP_EACH_INCOME:
oldBon.setRepurPushIncome(addOrInitializeAmount(oldBon.getRepurPushIncome(), newBon.getRealIncome(), 2));
break;
//云代
case CLOUD_AGENT_DIRECT_PUSH:
oldBon.setAgentIntroduceBonus(addOrInitializeAmount(oldBon.getAgentIntroduceBonus(), newBon.getRealIncome(), 2));
break;
case CLOUD_AGENT_FIRST_PURCHASE:
oldBon.setCloudAgentFirstPurchase(addOrInitializeAmount(oldBon.getCloudAgentFirstPurchase(), newBon.getRealIncome(), 2));
break;
case CLOUD_AGENT_REPURCHASE:
oldBon.setCloudAgentRepurchase(addOrInitializeAmount(oldBon.getCloudAgentRepurchase(), newBon.getRealIncome(), 2));
break;
//嗨粉直推收益
case HI_PINK:
oldBon.setHiFunIncome(addOrInitializeAmount(oldBon.getHiFunIncome(), newBon.getRealIncome(), 2));
break;
}
return oldBon;
}

View File

@ -46,11 +46,6 @@
<groupId>com.bd</groupId>
<artifactId>bd-api-bonus</artifactId>
</dependency>
<!-- scm 服务 -->
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-api-scm</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -776,7 +776,7 @@ public class ActivityServiceImpl implements IActivityService {
@Override
public List<BdWaresDetailExt> generateActivityGiftWaresAchieve(Integer specialArea, Integer pkCountry, List<BdWaresDetailExt> bdWaresDetailExtList,
String parentCode, CuMember cuMember) {
// 兼容进销存处理没有数据
// 兼容处理没有数据
bdWaresDetailExtList = bdWaresDetailExtList.stream().filter(bdWaresDetailExt -> null != bdWaresDetailExt.getPkWares()).collect(Collectors.toList());
// 商品赠送

View File

@ -120,6 +120,9 @@ public class ApiRetailWaresController extends BaseController {
param.setPkCountry(SecurityUtils.getPkCountry());
// 商品详情
RetailWaresDetailVO waresDetailVO = iBdWaresSpecsSkuService.queryWaresDetail(param, cuMemberExt.getPkSettleGrade());
if (null == waresDetailVO) {
return AjaxResult.error("商品数据不存在,请刷新后重试");
}
// 预计发货时间
if (waresDetailVO.getArrivalTime() != null && waresDetailVO.getCreationTime() != null) {

View File

@ -108,15 +108,6 @@ public interface SaDeliverMapper extends BaseMapper<SaDeliver> {
*/
List<SaDeliver> queryListById(@Param("idList") List<Long> idList, @Param("pkCountry") Integer pkCountry);
/**
* 查询发货单+明细列表
*
* @param idList 发货单ID列表
* @param pkCountry 所属国家
* @return
*/
List<SaDeliverExt> queryDeliverAndItemsList(@Param("idList") List<Long> idList, @Param("pkCountry") Integer pkCountry);
/**
* 获取指定日期最大批次
*
@ -146,12 +137,4 @@ public interface SaDeliverMapper extends BaseMapper<SaDeliver> {
@Param("userId") Long userId,
@Param("pkCountry") Integer pkCountry);
/**
* 批量查询发货单数据
*
* @param idList 发货单ID列表
* @return
*/
List<SaDeliver> listDataBatch(@Param("idList") List<Long> idList);
}

View File

@ -1,37 +0,0 @@
package com.hzs.sale.deliver.provider;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.sale.ext.SaDeliverExt;
import com.hzs.sale.deliver.ISaDeliverServiceApi;
import com.hzs.sale.deliver.service.ISaDeliverService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
* @Description: 发货单相关dubbo服务
* @Author: jiang chao
* @Time: 2023/12/19 14:28
* @Classname: SaDeliverServiceProvider
* @PackageName: com.hzs.sale.deliver.provider
*/
@Slf4j
@DubboService
public class SaDeliverServiceProvider implements ISaDeliverServiceApi {
@Autowired
private ISaDeliverService iSaDeliverService;
@Override
public R<List<SaDeliverExt>> queryDeliverList(List<Long> idList, Integer pkCountry) {
try {
return R.ok(iSaDeliverService.queryDeliverAndItemsList(idList, pkCountry));
} catch (Exception e) {
log.error("查询发货单及明细数据异常:{}", e.getMessage(), e);
return R.fail(e.getMessage());
}
}
}

View File

@ -150,15 +150,6 @@ public interface ISaDeliverService extends IService<SaDeliver> {
*/
List<SaDeliver> queryListById(List<Long> idList, Integer pkCountry);
/**
* 查询发货单+明细列表
*
* @param idList 发货单ID列表
* @param pkCountry 所属国家
* @return
*/
List<SaDeliverExt> queryDeliverAndItemsList(List<Long> idList, Integer pkCountry);
/**
* 获取批量最大数量
*
@ -167,12 +158,4 @@ public interface ISaDeliverService extends IService<SaDeliver> {
*/
int getBatchMaxNumber(Integer dayBatch);
/**
* 批量查询发货单数据
*
* @param idList 发货单ID列表
* @return
*/
List<SaDeliver> listDataBatch(List<Long> idList);
}

View File

@ -29,7 +29,6 @@ import com.hzs.sale.deliver.service.ISaDeliverItemsService;
import com.hzs.sale.deliver.service.ISaDeliverService;
import com.hzs.sale.order.param.SelfPickUpParam;
import com.hzs.sale.order.service.*;
import com.hzs.scm.pub.dto.DeliverDTO;
import com.hzs.system.base.IBarCodeServiceApi;
import com.hzs.system.sys.IApprovalServiceApi;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
@ -37,7 +36,6 @@ import com.hzs.system.sys.dto.ApprovalSubmitDTO;
import com.hzs.system.sys.dto.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -69,8 +67,6 @@ public class SaDeliverBusinessServiceImpl implements ISaDeliverBusinessService {
private ISaDeliverBarCodeService iSaDeliverBarCodeService;
@Autowired
private ISaOrderSelfLogService saOrderSelfLogService;
@Autowired
private RabbitTemplate rabbitTemplate;
@DubboReference
IApprovalServiceApi iApprovalServiceApi;
@ -333,22 +329,6 @@ public class SaDeliverBusinessServiceImpl implements ISaDeliverBusinessService {
throw new ServiceException(TransactionUtils.getContent(CommonMsgConstants.APPROVAL_ERROR) + "" + resultR.getMsg());
}
}
if (saDeliver.getPkId() != null && deliverItemsList.size() > 0) {
List<Long> deliverIdList = new ArrayList<>();
deliverIdList.add(saDeliver.getPkId());
// 推送进销存处理数据
rabbitTemplate.convertAndSend(RabbitMqConstants.SCM_DELIVER_EXCHANGE, RabbitMqConstants.SCM_DELIVER_KEY, DeliverDTO.builder()
.deliverIdList(deliverIdList)
.loginUser(approvalBusinessResultDTO.getLoginUser())
.build());
// 如果订单仓库跟提货仓库不一致回退可用量然后在扣减可用量
if (saOrder.getPkStorehouse() != null && !saOrder.getPkStorehouse().equals(pkStorehouse)) {
rabbitTemplate.convertAndSend(RabbitMqConstants.AVAILABLE_NMU_BACK_EXCHANGE, RabbitMqConstants.AVAILABLE_NMU_BACK_KEY, saOrder);
saOrder.setPkStorehouse(pkStorehouse);
saOrder.setDeductFlag(Boolean.TRUE);
rabbitTemplate.convertAndSend(RabbitMqConstants.AVAILABLE_NMU_BACK_EXCHANGE, RabbitMqConstants.AVAILABLE_NMU_BACK_KEY, saOrder);
}
}
return null;
}
log.error("订单自提同意处理失败: 更新数据失败");

View File

@ -8,7 +8,6 @@ import com.hzs.common.core.utils.CommonUtil;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.domain.sale.deliver.SaDeliver;
import com.hzs.common.domain.sale.deliver.SaDeliverItems;
import com.hzs.common.domain.sale.ext.SaDeliverExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.sale.deliver.mapper.SaDeliverItemsMapper;
@ -472,21 +471,11 @@ public class SaDeliverServiceImpl extends ServiceImpl<SaDeliverMapper, SaDeliver
return baseMapper.queryListById(idList, pkCountry);
}
@Override
public List<SaDeliverExt> queryDeliverAndItemsList(List<Long> idList, Integer pkCountry) {
return baseMapper.queryDeliverAndItemsList(idList, pkCountry);
}
@Override
public int getBatchMaxNumber(Integer dayBatch) {
return baseMapper.getBatchMaxNumber(dayBatch);
}
@Override
public List<SaDeliver> listDataBatch(List<Long> idList) {
return baseMapper.listDataBatch(idList);
}
/**
* 删除已合单发货单处理
*

View File

@ -1,46 +0,0 @@
package com.hzs.sale.deliver.vo;
import lombok.Data;
/**
* <p>
* 遥控器
* </p>
*
* @author hzs
* @since 2022-05-25
*/
@Data
public class RemoteControlVO {
private static final long serialVersionUID = 1L;
/**
* sn编码
*/
private String snCode;
/**
* 操作码 1:开机 2 关机 设备档位 11:一档,12:二档,13:三挡,14:四挡
*/
private String operateCode;
/**
* 设备状态 0 离线 1 待机状态 2 设备使用中 3 停用 6 未激活
*/
private Integer machineState;
/**
* 设备运行状态 0, "未启动",1, "运行",2, "加水",
* 3, "排水",4, "解锁",5, "缺水",6, "锁定",
*/
private Integer runState;
private Integer state;
}

View File

@ -1,13 +1,10 @@
package com.hzs.sale.order.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.config.BdConfig;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.CountryConstants;
import com.hzs.common.core.constant.HttpStatus;
import com.hzs.common.core.constant.msg.MemberMsgConstants;
import com.hzs.common.core.constant.msg.ScmMsgConstants;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.ComputeUtil;
@ -21,9 +18,6 @@ import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.ext.CuMemberAccountExt;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.scm.ic.IcAvailableNum;
import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt;
import com.hzs.common.domain.system.base.BdStorehouse;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
import com.hzs.sale.order.param.OrderItemsParam;
@ -36,8 +30,6 @@ import com.hzs.sale.shopping.service.IShoppingCartService;
import com.hzs.sale.shopping.vo.ProductGroup;
import com.hzs.sale.shopping.vo.ShoppingCartRedis;
import com.hzs.sale.shopping.vo.ShoppingCartVO;
import com.hzs.sale.wares.service.IBdWaresDetailService;
import com.hzs.scm.pub.IScmBillServiceApi;
import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
import lombok.extern.slf4j.Slf4j;
@ -55,8 +47,6 @@ public abstract class ParentOrderController extends BaseController {
IAreaServiceApi iAreaServiceApi;
@DubboReference
ICurrencyServiceApi currencyServiceApi;
@DubboReference
IScmBillServiceApi scmBillServiceApi;
private ISaOrderService orderService;
@ -64,13 +54,6 @@ public abstract class ParentOrderController extends BaseController {
protected RedisService redisService;
private IBdWaresDetailService bdWaresDetailService;
@Autowired
public void setBdWaresDetailService(IBdWaresDetailService bdWaresDetailService) {
this.bdWaresDetailService = bdWaresDetailService;
}
@Autowired
protected IShoppingCartService shoppingCartService;
@ -359,76 +342,6 @@ public abstract class ParentOrderController extends BaseController {
return AjaxResult.success(orderParam);
}
/*
* 验证可用量可用量不足不能下单
**/
protected String validateAvailableNum(OrderParam orderParam, String orderCode) {
// 验证是否控制进销存
if (EYesNo.NO.getIntValue() == BdConfig.getEnable()) {
return null;
}
BdStorehouse bdStorehouse;
if (CountryConstants.CHINA_COUNTRY.equals(orderParam.getPkSettleCountry()) || orderParam.getPkStorehouse() == null) {
if (orderParam.getRecProvince() != null) {
// 根据收货省获取仓库
bdStorehouse = currencyServiceApi.queryBdStorehouseByProvince(orderParam.getRecProvince()).getData();
} else {
return MemberMsgConstants.REQUIRED_NOT_EMPTY;
}
} else {
bdStorehouse = currencyServiceApi.queryBdStorehouseById(orderParam.getPkStorehouse()).getData();
}
if (bdStorehouse == null) {
return ScmMsgConstants.AVAILABLE_NUM_NOT_ENOUGH;
}
// 验证可用量根据参数获得产品规格
CuMember cuMember = orderService.getCuMemberByKey(orderParam.getCenterCodeId());
List<IcAvailableNum> availableNumList = bdWaresDetailService.queryWaresDetailSpecsByCondition(orderParam.getSpecialArea(), orderParam.getPkCountry(), bdStorehouse.getPkCorp(),
bdStorehouse.getPkId(), orderParam.getRecProvince(), orderParam.getParent(), cuMember, orderParam.getOrderItemsParams());
List<IcAvailableNumExt> returnAvailableNumList = new ArrayList<>();
List<IcAvailableNum> queryAvailableNumList = new ArrayList<>();
if (availableNumList != null && availableNumList.size() > 0) {
for (IcAvailableNum icAvailableNum : availableNumList) {
if (null != icAvailableNum && null != icAvailableNum.getPreSaleStatus()) {
if (EPresaleStatus.PRESALE.getValue() == icAvailableNum.getPreSaleStatus()) {
returnAvailableNumList.add(BeanUtil.copyProperties(icAvailableNum, IcAvailableNumExt.class));
} else {
queryAvailableNumList.add(icAvailableNum);
returnAvailableNumList.add(BeanUtil.copyProperties(icAvailableNum, IcAvailableNumExt.class));
}
}
}
}
if (queryAvailableNumList.size() > 0) {
List<IcAvailableNumExt> availableNumExtList = scmBillServiceApi.queryAvailableNumByProduct(queryAvailableNumList).getData();
if (CollectionUtil.isEmpty(availableNumExtList) || availableNumExtList.size() < queryAvailableNumList.size()) {
return ScmMsgConstants.AVAILABLE_NUM_NOT_ENOUGH;
}
boolean flag = Boolean.FALSE;
for (IcAvailableNumExt icAvailableNum : availableNumExtList) {
if (icAvailableNum.getPkUnit() != 0) {
flag = Boolean.TRUE;
break;
}
icAvailableNum.setOrderCode(orderCode);
icAvailableNum.setPkCountry(orderParam.getPkSettleCountry());
}
if (flag) {
return ScmMsgConstants.AVAILABLE_NUM_NOT_ENOUGH;
}
}
Date currentDateTime = DateUtils.currentDateTime();
for (IcAvailableNumExt icAvailableNum : returnAvailableNumList) {
icAvailableNum.setPkCountry(orderParam.getPkCountry());
icAvailableNum.setPkModified(orderParam.getCenterCodeId());
icAvailableNum.setModifiedTime(currentDateTime);
icAvailableNum.setOrderCode(orderCode);
}
orderParam.setAvailableNumList(returnAvailableNumList);
return null;
}
protected AjaxResult validateFun(OrderParam orderParam) {
// 报单中心
Long centerCodeId = orderParam.getCenterCodeId();

View File

@ -55,11 +55,6 @@ public class ApiFanSaOrderController extends ParentOrderController {
if ((Integer) result.get(AjaxResult.CODE_TAG) == HttpStatus.ERROR) {
return result;
}
// 验证可用量
String msg = validateAvailableNum(orderParam, null);
if (ObjectUtil.isNotEmpty(msg)) {
return AjaxResult.error(TransactionUtils.getContent(msg));
}
convertShoppingCarToSku(orderParam);
if (getOrderService().confirmRegSaOrderByOrderParam(orderParam)) {
//删除购物车下单的数据

View File

@ -18,6 +18,7 @@ import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.common.domain.third.pay.ext.TOnlineRefundExt;
import com.hzs.common.security.auth.AuthMemberUtil;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
@ -124,6 +125,16 @@ public class ApiOrderController extends BaseController {
return tableDataInfo;
}
@GetMapping("/refund-list")
public TableDataInfo refundList() {
// 返回结果
startPage();
List<TOnlineRefundExt> list = iSaOrderService.queryRefundList();
TableDataInfo tableDataInfo = getDataTable(list);
tableDataInfo.setRows(list);
return tableDataInfo;
}
/**
* 订单详情
*

View File

@ -1,7 +1,6 @@
package com.hzs.sale.order.controller.api;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.hzs.common.core.annotation.RepeatSubmit;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.HttpStatus;
@ -50,12 +49,6 @@ public class ApiOthSaOrderController extends ParentOrderController {
return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.REQUIRED_NOT_EMPTY));
}
// 验证可用量
String msg = validateAvailableNum(orderParam, null);
if (ObjectUtil.isNotEmpty(msg)) {
return AjaxResult.error(TransactionUtils.getContent(msg));
}
if (!orderService.checkPreSalesQuantity(orderParam)) {
// 商品预售数量不足
return AjaxResult.error(TransactionUtils.getContent(SaOrderMsgConstants.WARES_PRE_SALE_QUANTITY_LACK));
@ -152,11 +145,6 @@ public class ApiOthSaOrderController extends ParentOrderController {
oldOrderParam = orderParam;
oldOrderParam.setRecProvince(saOrderExt.getRecProvince());
}
// 验证可用量
String msg = validateAvailableNum(oldOrderParam, saOrderExt.getOrderCode());
if (ObjectUtil.isNotEmpty(msg)) {
return AjaxResult.error(TransactionUtils.getContent(msg));
}
// 验证会员账户余额是否足够支付
getOrderService().queryOrderSpendDetails(cuMemberAccountExt, saOrderExt, saOrderExt.getOrderItemsList());
saOrderExt.setSpecialArea(orderParam.getSpecialArea());
@ -165,7 +153,6 @@ public class ApiOthSaOrderController extends ParentOrderController {
// 升级订单
if (EOrderType.UPGRADE_ORDER.getValue() == orderParam.getSpecialArea()) {
if (getOrderService().payUpgradeSaOrder(saOrderExt, cuMemberAccountExt)) {
getOrderService().convertAvailableNumMsg(oldOrderParam.getAvailableNumList());
return AjaxResult.success(saOrderExt);
} else {
return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.LEVEL_NOT_ENOUGH));
@ -173,7 +160,6 @@ public class ApiOthSaOrderController extends ParentOrderController {
} else {
// 复购订单
if (getOrderService().payRepurchaseSaOrder(saOrderExt, cuMemberAccountExt)) {
getOrderService().convertAvailableNumMsg(oldOrderParam.getAvailableNumList());
return AjaxResult.success(saOrderExt);
}
}

View File

@ -2,7 +2,6 @@ package com.hzs.sale.order.controller.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.hzs.common.core.annotation.RepeatSubmit;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.HttpStatus;
@ -78,11 +77,6 @@ public class ApiRegSaOrderController extends ParentOrderController {
if ((Integer) result.get(AjaxResult.CODE_TAG) == HttpStatus.ERROR) {
return result;
}
// 验证可用量
String msg = validateAvailableNum(orderParam, null);
if (ObjectUtil.isNotEmpty(msg)) {
return AjaxResult.error(TransactionUtils.getContent(msg));
}
convertShoppingCarToSku(orderParam);
if (getOrderService().confirmRegSaOrderByOrderParam(orderParam)) {
//删除购物车下单的数据
@ -158,13 +152,7 @@ public class ApiRegSaOrderController extends ParentOrderController {
if ((Integer) result.get(AjaxResult.CODE_TAG) == HttpStatus.ERROR) {
return result;
}
// 验证可用量
OrderParam oldOrderParam = redisService.getCacheObject(CacheConstants.TEMP_PARAM + SecurityUtils.getUserId() + orderParam.getOrderCode());
// 验证可用量
String msg = validateAvailableNum(oldOrderParam, saOrderExt.getOrderCode());
if (ObjectUtil.isNotEmpty(msg)) {
return AjaxResult.error(TransactionUtils.getContent(msg));
}
CuMemberAccountExt cuMemberAccountExt = (CuMemberAccountExt) result.get(AjaxResult.DATA_TAG);
// 对安置位置加锁
if (validatePlacePosition(orderParam.getPlaceParentId(), orderParam.getPlaceDept())) {
@ -175,7 +163,6 @@ public class ApiRegSaOrderController extends ParentOrderController {
if (cuMemberAccountExt.getIsPayment()) {
// 开始支付 扣款
getOrderService().payRegSaOrder(saOrderExt, newCuMember, cuMemberAccountExt, isHaiFun);
getOrderService().convertAvailableNumMsg(oldOrderParam.getAvailableNumList());
} else {
if (StringUtils.isEmpty(cuMemberAccountExt.getErrorMsg())) {
return AjaxResult.error(TransactionUtils.getContent(MemberMsgConstants.MEMBER_BALANCE_NOT_PAY));

View File

@ -5,6 +5,7 @@ import com.hzs.common.domain.sale.ext.SaDeliverItemsExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.third.pay.ext.TOnlineRefundExt;
import com.hzs.sale.index.vo.CuMemberMyMarketDetailVO;
import com.hzs.sale.index.vo.CuMemberMyMarketVO;
import com.hzs.sale.order.param.*;
@ -111,6 +112,8 @@ public interface SaOrderMapper extends BaseMapper<SaOrder> {
@Param("memberId") Long memberId,
@Param("pkCountry") Integer pkCountry);
List<TOnlineRefundExt> queryRefundList(@Param("userId") Long userId);
/**
* 自助撤单列表
**/

View File

@ -2,7 +2,6 @@ package com.hzs.sale.order.param;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.constant.msg.MemberMsgConstants;
import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt;
import com.hzs.sale.shopping.vo.ShoppingCartRedis;
import com.hzs.sale.ticket.param.BuyTicketParam;
import jdk.nashorn.internal.ir.annotations.Ignore;
@ -295,11 +294,6 @@ public class OrderParam implements Serializable {
*/
private List<OrderItemsParam> orderItemsParams;
/**
* 用于下单时更新可用量
*/
private List<IcAvailableNumExt> availableNumList;
/**
* 是否首单
*/

View File

@ -166,4 +166,13 @@ public class SaOrderServiceProvider implements ISaOrderServiceApi {
return R.ok(ComputeUtil.computeAdd(saOrder.getOrderAmount(), saOrder.getPostage()));
}
@Override
public R<SaOrderExt> queryOrderByCode(String orderCode, Long pkMember) {
SaOrderExt saOrder = redisService.getCacheObject(CacheConstants.TEMP_ORDER + pkMember + orderCode);
if (null == saOrder) {
// 直销订单
saOrder = iSaOrderService.queryOrderByCode(orderCode, null);
}
return R.ok(saOrder);
}
}

View File

@ -8,8 +8,8 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.ext.*;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.domain.third.pay.ext.TOnlineRefundExt;
import com.hzs.sale.index.vo.CuMemberMyMarketVO;
import com.hzs.sale.order.param.*;
import com.hzs.sale.order.vo.*;
@ -188,11 +188,6 @@ public interface ISaOrderService extends IService<SaOrder> {
Boolean payRegSaOrder(SaOrderExt saOrderExt, CuMember newCuMember,
CuMemberAccountExt cuMemberAccountExt, Boolean isHaiFun);
/*
* 发送更新可用量的消息
**/
void convertAvailableNumMsg(List<IcAvailableNumExt> availableNumList);
/**
* 支付升级订单
*
@ -385,6 +380,8 @@ public interface ISaOrderService extends IService<SaOrder> {
*/
List<SaOrderExt> myOrderList(MyOrderParam param, Long memberId, Integer pkCountry);
List<TOnlineRefundExt> queryRefundList();
/**
* 自助撤单列表
**/

View File

@ -2647,15 +2647,6 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
// 新旧订单的订单明细全部插入新订单中并且变更为未删除
iSaOrderItemsService.copyDeductionItems(deductionDTO.getPkOrderOld(), deductionDTO.getPkOrderNew(), userId, nowDate);
// 推送MQ处理库存新订单明细回退
newOrder.setPkModified(userId);
rabbitTemplate.convertAndSend(RabbitMqConstants.AVAILABLE_NMU_BACK_EXCHANGE, RabbitMqConstants.AVAILABLE_NMU_BACK_KEY, newOrder);
// 推送MQ处理库存老订单明细扣减
oldOrder.setDeductFlag(true);
oldOrder.setPkModified(userId);
rabbitTemplate.convertAndSend(RabbitMqConstants.AVAILABLE_NMU_BACK_EXCHANGE, RabbitMqConstants.AVAILABLE_NMU_BACK_KEY, oldOrder);
return null;
}
return "订单金额、业绩、BV存在不相同不能进行抵扣";

View File

@ -32,11 +32,11 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.ext.*;
import com.hzs.common.domain.sale.order.*;
import com.hzs.common.domain.sale.wares.BdWares;
import com.hzs.common.domain.scm.ic.ext.IcAvailableNumExt;
import com.hzs.common.domain.system.base.BdCountry;
import com.hzs.common.domain.system.base.ext.BdProductStorehouseExt;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.domain.third.pay.ext.TOnlineRefundExt;
import com.hzs.common.security.service.UserTokenService;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
@ -60,7 +60,6 @@ import com.hzs.sale.order.service.*;
import com.hzs.sale.order.vo.*;
import com.hzs.sale.product.service.IBdProductExtendService;
import com.hzs.sale.wares.service.*;
import com.hzs.scm.pub.IScmBillServiceApi;
import com.hzs.system.base.IAreaServiceApi;
import com.hzs.system.base.ICountryServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
@ -799,21 +798,10 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return Boolean.TRUE;
}
@Override
public void convertAvailableNumMsg(List<IcAvailableNumExt> availableNumList) {
if (EYesNo.NO.getIntValue() == BdConfig.getEnable()) {
return;
}
log.info("生产活动消息activity.exchange{}", JSONUtil.toJsonStr(availableNumList));
rabbitTemplate.convertAndSend(RabbitMqConstants.AVAILABLE_NMU_EXCHANGE, RabbitMqConstants.AVAILABLE_NMU_KEY, availableNumList);
}
/**
* 尝试重新换位置
*
* @param newCuMember 修改的会员
* @Description: 尝试重新换位置
* @return: CuMember
* @Author: sui q
* @Date: 2022/10/26 9:00
*/
private synchronized CuMember repeatTry(CuMember newCuMember, Boolean isFirstAchieve) {
CuMember cuMember = obtainLastResettleByRecommend(newCuMember, isFirstAchieve, null);
@ -828,19 +816,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return cuMember;
}
private void insertSaOrder(SaOrderExt saOrderExt) {
redisService.lockKeyMany(CacheConstants.MEMBER_ORDER + saOrderExt.getOrderCode());
try {
this.save(saOrderExt);
for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) {
saOrderItems.setPkOrder(saOrderExt.getPkId());
}
saOrderItemsService.saveBatch(saOrderExt.getOrderItemsList());
} finally {
redisService.unlock(CacheConstants.MEMBER_ORDER + saOrderExt.getOrderCode());
}
}
private void updateSaOrder(SaOrderExt saOrderExt) {
redisService.lockKeyMany(CacheConstants.MEMBER_ORDER + saOrderExt.getOrderCode());
try {
@ -1637,6 +1612,11 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return baseMapper.myOrderList(param, memberId, pkCountry);
}
@Override
public List<TOnlineRefundExt> queryRefundList() {
return baseMapper.queryRefundList(SecurityUtils.getUserId());
}
@Override
public List<SaOrderExt> selfRevokeOrderList(MyOrderParam param, Long memberId, Integer pkCountry) {
return baseMapper.selfRevokeOrderList(param, memberId, pkCountry);
@ -2632,7 +2612,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
* @return
*/
private BigDecimal handleBaseBoxNum(CuMember cuMember, BdGrade memberGrade, List<BdGrade> gradeList, List<String> boxWaresList,
Integer systemType) {
Integer systemType) {
// 升级盒数基数
BigDecimal baseBoxNum = BigDecimal.ZERO;
// 会员所有升级记录

View File

@ -33,8 +33,6 @@ import com.hzs.sale.product.vo.ProductSpecsVo;
import com.hzs.sale.product.vo.ProductVo;
import com.hzs.sale.product.vo.SupplierProductCensusVo;
import com.hzs.sale.wares.service.IBdWaresDetailService;
import com.hzs.scm.product.IProductBasServiceApi;
import com.hzs.scm.product.dto.ProductBasDTO;
import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.BdCubasdocDTO;
import com.hzs.system.sys.dto.LoginUser;
@ -73,8 +71,6 @@ public class BdProductController extends BaseController {
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
@DubboReference
IProductBasServiceApi productBasServiceApi;
/**
* 查询产品列表
@ -526,43 +522,6 @@ public class BdProductController extends BaseController {
return AjaxResult.success(productParams);
}
/**
* 查询产品详情 根据产品基本信息主键
*
* @return
*/
@GetMapping("/product-bas-detail")
public AjaxResult productBasDetail(Integer pkProductBas) {
R<ProductBasDTO> productBas = productBasServiceApi.getProductBasById(pkProductBas);
BdProduct product = productService.getOne(new LambdaQueryWrapper<BdProduct>().eq(BdProduct::getPkProductBas, pkProductBas).eq(BdProduct::getPkCountry, SecurityUtils.getPkCountry()));
if (productBas.getData() == null) {
return AjaxResult.error(TransactionUtils.getContent(ProductMsgConstants.PRODUCT_NOT_REQUIRED));
}
ProductParams productParams = BeanUtil.copyProperties(productBas.getData(), ProductParams.class);
BdProductExtend productExtend = productExtendService.getProductExtend(product.getPkId());
productParams.setIsPickUp(productExtend.getIsPickUp());
productParams.setIsPrize(productExtend.getIsPrize());
productParams.setIsBarCode(productExtend.getIsBarCode());
productParams.setRepurchaseType(productExtend.getRepurchaseType());
productParams.setIsMerge(productExtend.getIsMerge());
productParams.setIsGift(productExtend.getIsGift());
productParams.setIsLandTrans(productExtend.getIsLandTrans());
productParams.setIsAirTrans(productExtend.getIsAirTrans());
productParams.setIsOceanTrans(productExtend.getIsOceanTrans());
productParams.setSort(productExtend.getSort());
LambdaQueryWrapper<BdProductSpecs> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdProductSpecs::getPkProduct, product.getPkId());
List<Integer> pkSpecsType = new ArrayList<>();
List<BdProductSpecs> productSpecList = productSpecsService.list(queryWrapper);
for (BdProductSpecs bdProductSpecs : productSpecList) {
pkSpecsType.add(bdProductSpecs.getPkSpecsType());
}
productParams.setPkSpecsType(pkSpecsType);
productParams.setPkProductBas(productBas.getData().getPkId());
return AjaxResult.success(productParams);
}
/**
* @return
*/

View File

@ -2,6 +2,7 @@ package com.hzs.sale.shopping.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.domain.R;
@ -133,7 +134,7 @@ public class ShoppingCartServiceImpl implements IShoppingCartService {
for (String innkey : innerShopMap.keySet()) {
String mapValue = innerShopMap.get(innkey);
ShoppingCartRedis scr = JSONUtil.toBean(mapValue, ShoppingCartRedis.class);
if (scr.getSpecialArea() == value.getValue()) {
if (ObjectUtil.isNotEmpty(scr.getSpecialArea()) && scr.getSpecialArea() == value.getValue()) {
scv.setSpecialArea(value.getValue());
scv.setSpecialAreaVal(value.getLabel());
if (pkCountry.equals(scr.getPkCountry())) {

View File

@ -1,10 +1,8 @@
package com.hzs.sale.wares.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.sale.ext.BdWaresDetailExt;
import com.hzs.common.domain.sale.wares.BdWaresDetail;
import com.hzs.common.domain.scm.ic.IcAvailableNum;
import com.hzs.sale.order.param.OrderItemsParam;
import com.hzs.sale.product.vo.WaresDetailVo;
import com.hzs.sale.wares.param.CuProductParams;
@ -25,15 +23,6 @@ public interface IBdWaresDetailService extends IService<BdWaresDetail> {
*/
List<BdWaresDetailExt> queryWaresDetailByCondition(Integer specialArea, Integer transType, List<OrderItemsParam> orderItemsParams, Integer systemTyype);
/**
* 根据条件查询商品信息
*
* @param specialArea 专区
* @param orderItemsParams 参数
*/
List<IcAvailableNum> queryWaresDetailSpecsByCondition(Integer specialArea, Integer pkCountry, Integer pkCorp, Integer pkStorehouse, Integer province,
String parentCode, CuMember cuMember, List<OrderItemsParam> orderItemsParams);
/**
* 查询商品编号
*

View File

@ -3,15 +3,8 @@ package com.hzs.sale.wares.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.activity.base.service.IActivityService;
import com.hzs.common.core.enums.EShippingChannel;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.sale.ext.BdWaresDetailExt;
import com.hzs.common.domain.sale.wares.BdWaresDetail;
import com.hzs.common.domain.scm.ic.IcAvailableNum;
import com.hzs.common.domain.scm.pub.ScmItemSpecs;
import com.hzs.common.domain.system.base.ext.BdProductStorehouseExt;
import com.hzs.sale.order.param.OrderItemsParam;
import com.hzs.sale.order.param.WaresItemsParam;
import com.hzs.sale.product.vo.WaresDetailVo;
@ -19,9 +12,6 @@ import com.hzs.sale.wares.mapper.BdWaresDetailMapper;
import com.hzs.sale.wares.param.CuProductParams;
import com.hzs.sale.wares.service.IBdWaresDetailService;
import com.hzs.sale.wares.vo.WaresProductDetailVo;
import com.hzs.system.base.IAreaServiceApi;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@ -36,18 +26,6 @@ import java.util.Map;
@Service
public class BdWaresDetailServiceImpl extends ServiceImpl<BdWaresDetailMapper, BdWaresDetail> implements IBdWaresDetailService {
@DubboReference
IAreaServiceApi iAreaServiceApi;
@Autowired
private IActivityService iActivityService;
/**
* 根据条件查询商品信息
*
* @param specialArea 专区
* @param transType 运输方式
*/
@Override
public List<BdWaresDetailExt> queryWaresDetailByCondition(Integer specialArea, Integer transType, List<OrderItemsParam> orderItemsParams, Integer systemType) {
List<BdWaresDetailExt> bdWaresDetailExtList = new ArrayList<>();
@ -82,137 +60,24 @@ public class BdWaresDetailServiceImpl extends ServiceImpl<BdWaresDetailMapper, B
return bdWaresDetailExtList;
}
@Override
public List<IcAvailableNum> queryWaresDetailSpecsByCondition(Integer specialArea, Integer pkCountry, Integer pkCorp, Integer pkStorehouse, Integer province,
String parentCode, CuMember cuMember, List<OrderItemsParam> orderItemsParams) {
List<BdWaresDetailExt> bdWaresDetailExtList = new ArrayList<>();
for (OrderItemsParam orderItemsParam : orderItemsParams) {
for (WaresItemsParam waresItemsParam : orderItemsParam.getWaresItemsParamList()) {
BdWaresDetailExt bdWaresDetailExt = BdWaresDetailExt.builder()
.waresCode(orderItemsParam.getWaresCode())
.pkWaresSpecsSku(waresItemsParam.getPkWaresSpecsSku())
.waresQuantity(orderItemsParam.getQuantity())
.build();
bdWaresDetailExt.setQuantity(waresItemsParam.getQuantity());
bdWaresDetailExtList.add(bdWaresDetailExt);
}
}
List<BdWaresDetailExt> waresDetailExtList = baseMapper.queryWaresDetailSpecsByCondition(specialArea, orderItemsParams);
if (CollectionUtil.isNotEmpty(waresDetailExtList)) {
Map<String, BdWaresDetailExt> bdWaresDetailExtMap = new HashMap<>();
waresDetailExtList.forEach(waresDetailExt -> {
bdWaresDetailExtMap.put(waresDetailExt.getWaresCode() + waresDetailExt.getPkWaresSpecsSku(), waresDetailExt);
});
bdWaresDetailExtList.forEach(waresDetailExt -> {
String key = waresDetailExt.getWaresCode() + waresDetailExt.getPkWaresSpecsSku();
if (bdWaresDetailExtMap.containsKey(key)) {
BeanUtil.copyProperties(bdWaresDetailExtMap.get(key), waresDetailExt, "waresQuantity", "quantity");
}
waresDetailExt.setQuantity(waresDetailExt.getWaresQuantity() * waresDetailExt.getQuantity());
});
}
// 活动赠品 赠送封装
List<BdWaresDetailExt> newWaresDetailExtList = iActivityService.generateActivityGiftWaresAchieve(specialArea, pkCountry, bdWaresDetailExtList,
parentCode, cuMember);
if (newWaresDetailExtList.size() > 0) {
bdWaresDetailExtList.addAll(newWaresDetailExtList);
}
Map<String, IcAvailableNum> availableNumHashMap = new HashMap<>();
// key为产品id
List<Integer> productIdList = new ArrayList<>();
for (BdWaresDetailExt bdWaresDetailExt : bdWaresDetailExtList) {
// 三方品目前不控制库存
if (EShippingChannel.A_PIECE.getValue().equals(bdWaresDetailExt.getShippingChannel())) {
continue;
}
if (null != bdWaresDetailExt.getPkProduct()) {
// 存在产品信息才进行后续处理
String key = bdWaresDetailExt.getWaresCode() + "_" + bdWaresDetailExt.getPkWaresSpecsSku() + "_" + bdWaresDetailExt.getPkProduct();
if (availableNumHashMap.containsKey(key)) {
IcAvailableNum availableNum = availableNumHashMap.get(key);
availableNum.setAvailableNum(ComputeUtil.computeAdd(availableNum.getAvailableNum(), BigDecimal.valueOf(bdWaresDetailExt.getQuantity())));
} else {
IcAvailableNum availableNum = IcAvailableNum.builder()
.availableNum(BigDecimal.valueOf(bdWaresDetailExt.getQuantity()))
.pkProduct(bdWaresDetailExt.getPkProduct())
.pkCorp(pkCorp)
.pkProductBas(bdWaresDetailExt.getPkProductBas())
.pkUnit(bdWaresDetailExt.getPkUnit())
.pkStorehouse(pkStorehouse)
.preSaleStatus(bdWaresDetailExt.getPreSaleStatus())
.build();
productIdList.add(bdWaresDetailExt.getPkProduct());
List<ScmItemSpecs> scmItemSpecs = BeanUtil.copyToList(bdWaresDetailExt.getWaresSpecsList(), ScmItemSpecs.class);
availableNum.setScmItemSpecsList(scmItemSpecs);
availableNumHashMap.put(key, availableNum);
}
}
}
if (productIdList.size() > 0 && province != null) {
// 根据产品省查看是否由仓库有仓库的话修改仓库
List<BdProductStorehouseExt> bdProductStorehouseList = iAreaServiceApi.queryBdProductStorehouseByCondition(productIdList, province).getData();
Map<Integer, BdProductStorehouseExt> bdProductStorehouseMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(bdProductStorehouseList)) {
bdProductStorehouseList.forEach(bdProductStorehouse -> bdProductStorehouseMap.put(bdProductStorehouse.getPkProduct(), bdProductStorehouse));
for (String key : availableNumHashMap.keySet()) {
IcAvailableNum icAvailableNum = availableNumHashMap.get(key);
if (bdProductStorehouseMap.containsKey(icAvailableNum.getPkProduct())) {
BdProductStorehouseExt bdProductStorehouseExt = bdProductStorehouseMap.get(icAvailableNum.getPkProduct());
icAvailableNum.setPkCorp(bdProductStorehouseExt.getPkCorp());
icAvailableNum.setPkStorehouse(bdProductStorehouseExt.getPkStorehouse().intValue());
}
}
}
}
return new ArrayList<>(availableNumHashMap.values());
}
/**
* 查询商品编号
*
* @param waresCode
* @return
*/
@Override
public List<CuProductParams> selectByWaresCode(String waresCode, Integer specialArea, Integer isGift) {
return baseMapper.selectByWaresCode(waresCode, specialArea, isGift);
}
/**
* 根据商品主键查询
*
* @param pkWares
* @return
*/
@Override
public List<BdWaresDetailExt> selectByPkWares(Integer pkWares) {
return baseMapper.selectByPkWares(pkWares);
}
/**
* 根据产品主键查询商品列表
*
* @param pkProduct
* @return
*/
@Override
public List<WaresDetailVo> listByPkProduct(List<Integer> pkProduct) {
return baseMapper.listByPkProduct(pkProduct);
}
/**
* 商品下产品查询
*
* @param pkWares
* @return
*/
@Override
public List<WaresProductDetailVo> selectByList(Integer pkWares) {
return baseMapper.selectByList(pkWares);
}
}

View File

@ -573,6 +573,7 @@ public class BdWaresSpecsSkuServiceImpl extends ServiceImpl<BdWaresSpecsSkuMappe
productList.addAll(productResultList);
waresDetailVO.setProductList(productList);
waresDetailVO.setSpecialArea(param.getSpecialArea());
return waresDetailVO;
}
return null;

View File

@ -70,7 +70,7 @@ dubbo:
payload: 10485760
cloud:
# 订阅服务
subscribed-services: bd-system, bd-member, bd-third, bd-bonus, bd-scm
subscribed-services: bd-system, bd-member, bd-third, bd-bonus
scan:
# dubbo 服务扫描包(开启之后才会对外提供服务)
base-packages: com.hzs

View File

@ -535,41 +535,6 @@
order by sd.pk_id desc
</select>
<!-- 查询发货单+明细列表 -->
<select id="queryDeliverAndItemsList" resultMap="deliverExtMap">
select sd.*,
sdi.pk_id ITEMS_ID,
sdi.pk_order,
sdi.pk_order_items,
sdi.pk_product,
sdi.quantity,
sdi.pk_wares_specs_sku,
sdi.pk_wares_detail,
sdi.exchange_Goods,
sdi.specs_name,
sdi.specs_name_id
from sa_deliver sd
left join sa_deliver_items sdi
on sdi.pk_deliver = sd.pk_id
and sdi.del_flag = 0
where sd.del_flag = 0
<if test="pkCountry != null">
and sd.pk_country = #{pkCountry}
</if>
and (sd.pk_id in
<foreach collection="idList" item="item" index="index" open="(" close=")">
<if test="index != 0">
<choose>
<when test="index % 500 == 0">) or sd.pk_id IN (</when>
<otherwise>,</otherwise>
</choose>
</if>
#{item}
</foreach>
)
order by sd.pk_id
</select>
<!-- 获取指定日期最大批次 -->
<select id="getMaxBatch" resultType="integer">
select nvl(max(sd.day_batch), 0) last_day_batch
@ -606,22 +571,4 @@
)
</update>
<!-- 批量查询发货单数据 -->
<select id="listDataBatch" resultType="com.hzs.common.domain.sale.deliver.SaDeliver">
select sd.pk_id, sd.deliver_code
from sa_deliver sd
where sd.del_flag = 0
and (sd.pk_id in
<foreach collection="idList" item="item" index="index" open="(" close=")">
<if test="index != 0">
<choose>
<when test="index % 500 == 0">) or sd.pk_id IN (</when>
<otherwise>,</otherwise>
</choose>
</if>
#{item}
</foreach>
)
</select>
</mapper>

View File

@ -1443,4 +1443,29 @@
and so.box_num != 0
</select>
<select id="queryRefundList" resultType="com.hzs.common.domain.third.pay.ext.TOnlineRefundExt">
select cm.member_code,
cm.member_name,
top.business_type pay_business_type,
top.business_code pay_business_code,
tor.business_code,
tor.refund_status,
tor.refund_money,
tor.finish_money,
tor.creation_time,
tor.finish_time,
tor.refund_channel,
tor.refund_code,
tor.error_msg
from T_ONLINE_REFUND tor
inner join T_ONLINE_PAYMENT top
on top.pk_id = tor.pk_online_payment
left join cu_member cm
on cm.pk_id = top.pk_creator
where tor.del_flag = 0
<if test="userId != null">
and tor.PK_CREATOR = #{userId}
</if>
order by creation_time desc
</select>
</mapper>

View File

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.bd</groupId>
<artifactId>bd-business</artifactId>
<version>1.1.0-SNAPSHOT</version>
</parent>
<artifactId>bd-business-scm</artifactId>
<description>
bd-business-scm进销存服务
</description>
<dependencies>
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-business-common</artifactId>
</dependency>
<!-- 订单服务接口 -->
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-api-sale</artifactId>
</dependency>
<!-- 进销存服务接口 -->
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-api-scm</artifactId>
</dependency>
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-common-aop</artifactId>
</dependency>
<dependency>
<groupId>com.bd</groupId>
<artifactId>bd-common-domain</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.12.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,25 +0,0 @@
package com.hzs;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.hzs.common.security.annotation.EnableCustomConfig;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* 进销存服务
*
* @author hzs
*/
@EnableDiscoveryClient
@EnableCustomConfig
@SpringBootApplication
@EnableScheduling
public class ScmApplication {
public static void main(String[] args) {
SpringApplication.run(ScmApplication.class, args);
System.out.println("ScmApplication 进销存服务启动成功");
}
}

View File

@ -1,117 +0,0 @@
package com.hzs.ground.margin.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.constant.msg.ScmMsgConstants;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.ground.margin.ThMargin;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.common.util.TransactionUtils;
import com.hzs.ground.margin.service.IThMarginService;
import com.hzs.ground.margin.vo.ThMarginVO;
import com.hzs.ground.supplier.service.IThSupplierApplyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
* 保证金缴纳 前端控制器
*/
@RestController
@RequestMapping("/manage/th-margin")
public class ThMarginController extends BaseController {
@Autowired
private IThMarginService iThMarginService;
@Autowired
private IThSupplierApplyService iThSupplierApplyService;
/**
* 保证金缴纳列表
**/
@GetMapping("/list")
@Log(module = EOperationModule.TH_SUPPLIER_APPLY, business = EOperationBusiness.TH_SUPPLIER_APPLY, method = EOperationMethod.SELECT)
public TableDataInfo listGeneralIn(ThMarginVO thMarginVO) {
Long userId = SecurityUtils.getUserId();
thMarginVO.setPkCountry(SecurityUtils.getPkCountry());
Integer checkUser = iThSupplierApplyService.queryThSupplierApplyUserList(userId);
if (checkUser > 0) {
thMarginVO.setPkCreator(userId);
}
startPage();
List<ThMarginVO> thSupplierApplyList = iThMarginService.queryThMarginList(thMarginVO);
return getDataTable(thSupplierApplyList);
}
/**
* 添加保证金缴纳
**/
@PostMapping("/save")
public AjaxResult save(@RequestBody ThMarginVO thMarginVO) {
int pkCountry = SecurityUtils.getPkCountry();
// 验证必填信息
if (StringUtils.isNull(thMarginVO.getMargin())) {
return AjaxResult.error(TransactionUtils.getContent(ScmMsgConstants.TH_MARGIN_MARGIN));
}
thMarginVO.setPkCountry(pkCountry);
thMarginVO.setPkCreator(SecurityUtils.getUserId());
thMarginVO.setCreationTime(new Date());
QueryWrapper<ThMargin> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("PK_SUPPLIER", thMarginVO.getPkSupplier());
List thList = iThMarginService.list(queryWrapper);
if (CollectionUtil.isNotEmpty(thList)) {
return AjaxResult.error(TransactionUtils.getContent(ScmMsgConstants.TH_MARGIN_REPEAT));
}
iThMarginService.saveThMargin(thMarginVO);
return AjaxResult.success();
}
/**
* 修改保证金缴纳
**/
@PostMapping("/update")
public AjaxResult update(@RequestBody ThMarginVO thMarginVO) {
int pkCountry = SecurityUtils.getPkCountry();
// 验证必填信息
if (StringUtils.isNull(thMarginVO.getMargin())) {
return AjaxResult.error(TransactionUtils.getContent(ScmMsgConstants.TH_MARGIN_MARGIN));
}
QueryWrapper<ThMargin> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("PK_SUPPLIER", thMarginVO.getPkSupplier());
queryWrapper.ne("PK_ID", thMarginVO.getPkId());
List thList = iThMarginService.list(queryWrapper);
if (CollectionUtil.isNotEmpty(thList)) {
return AjaxResult.error(TransactionUtils.getContent(ScmMsgConstants.TH_MARGIN_REPEAT));
}
thMarginVO.setPkCountry(pkCountry);
thMarginVO.setPkCreator(SecurityUtils.getUserId());
thMarginVO.setCreationTime(new Date());
iThMarginService.updateThMargin(thMarginVO);
return AjaxResult.success();
}
/**
* 查询保证金缴纳
**/
@GetMapping("/getOne/{pkId}")
public AjaxResult getOne(@PathVariable Long pkId) {
ThMargin tsa = iThMarginService.getById(pkId);
return AjaxResult.success(tsa);
}
/**
* 删除保证金缴纳
**/
@DeleteMapping("/{pkId}")
public AjaxResult delete(@PathVariable Long pkId) {
return AjaxResult.success(iThMarginService.delThMargin(pkId));
}
}

View File

@ -1,25 +0,0 @@
package com.hzs.ground.margin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.ground.margin.ThMargin;
import com.hzs.ground.margin.vo.ThMarginVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 保证金缴纳 Mapper 接口
*/
public interface ThMarginMapper extends BaseMapper<ThMargin> {
/**
* 保证金缴纳列表
**/
List<ThMarginVO> queryThMarginList(ThMarginVO thMarginVO);
/**
* 保证金缴纳审批查看
**/
List<ThMarginVO> queryThMarginByCode(@Param("businessCode") String businessCode,
@Param("pkCountry") Integer pkCountry);
}

View File

@ -1,34 +0,0 @@
package com.hzs.ground.margin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.ground.margin.ThMargin;
import com.hzs.ground.margin.vo.ThMarginVO;
import java.util.List;
/**
* 保证金缴纳 服务类
*/
public interface IThMarginService extends IService<ThMargin> {
/**
* 保证金缴纳列表
**/
List<ThMarginVO> queryThMarginList(ThMarginVO thMarginVO);
/**
* 添加保证金缴纳
**/
boolean saveThMargin(ThMarginVO thMarginVO);
/**
* 修改保证金缴纳
**/
boolean updateThMargin(ThMarginVO thMarginVO);
/**
* 删除保证金缴纳
**/
boolean delThMargin(Long pkId);
}

View File

@ -1,57 +0,0 @@
package com.hzs.ground.margin.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.enums.*;
import com.hzs.common.domain.ground.margin.ThMargin;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.ground.margin.mapper.ThMarginMapper;
import com.hzs.ground.margin.service.IThMarginService;
import com.hzs.ground.margin.vo.ThMarginVO;
import com.hzs.ground.product.service.IThApprovalLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* 保证金缴纳 服务实现类
*/
@Service
public class ThMarginServiceImpl extends ServiceImpl<ThMarginMapper, ThMargin> implements IThMarginService {
@Autowired
IThApprovalLogService iThApprovalLogService;
@Override
public List<ThMarginVO> queryThMarginList(ThMarginVO thMarginVO) {
return baseMapper.queryThMarginList(thMarginVO);
}
@Override
public boolean saveThMargin(ThMarginVO thMarginVO) {
ThMargin tm = BeanUtil.copyProperties(thMarginVO, ThMargin.class);
baseMapper.insert(tm);
return true;
}
@Override
public boolean updateThMargin(ThMarginVO thMarginVO) {
ThMargin tm = BeanUtil.copyProperties(thMarginVO, ThMargin.class);
baseMapper.updateById(tm);
return true;
}
@Override
public boolean delThMargin(Long pkId) {
UpdateWrapper<ThMargin> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("PK_ID", pkId);
updateWrapper.set("PK_MODIFIED", SecurityUtils.getUserId());
updateWrapper.set("MODIFIED_TIME", new Date());
updateWrapper.set("DEL_FLAG", EDelFlag.DELETE.getValue());
baseMapper.update(null, updateWrapper);
return true;
}
}

View File

@ -1,205 +0,0 @@
package com.hzs.ground.margin.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.web.domain.BaseApprovalEntity;
import com.hzs.system.sys.dto.LoginUser;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* <p>
* 保证金缴纳VO
* </p>
*
* @author hzs
* @since 2024-03-21
*/
@Data
public class ThMarginVO extends BaseApprovalEntity {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private Integer pkId;
private String pkIdListStr;
private List<Integer> pkIdList;
/**
* 会员编号
*/
private String memberCode;
/**
* 会员名称
*/
private String memberName;
/**
* 客商编号
*/
private String custCode;
/**
* 客商名称
*/
private String custName;
/**
* 供应商类型
*/
private Integer custType;
/**
* 供应商简称
*/
private String shortName;
/**
* 法人
*/
private String legalBody;
/**
* 联系人
*/
private String linkMan;
/**
* 纳税人登记号
*/
private String taxpayerid;
/**
*
*/
private Integer province;
/**
*
*/
private String provinceName;
/**
*
*/
private Integer city;
/**
*
*/
private String cityName;
/**
*
*/
private Integer county;
/**
*
*/
private String countyName;
/**
* 地址
*/
private String address;
/**
* 经营范围
*/
private String tradeScope;
/**
* 会员id
*/
private Long pkMember;
/**
* 缴纳供应商
*/
private Integer pkSupplier;
/**
* 缴纳日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date billDate;
/**
* 销售类型 引用现在销售大类 来源枚举 ESaleType
*/
@Transaction(transactionKey = EnumsPrefixConstants.E_SALE_TYPE)
private Integer saleType;
/**
* 销售类型 引用现在销售大类 来源枚举 ESaleType
*/
private String saleTypeVal;
/**
* 销售范围
*/
private Integer saleScope;
/**
* 联系电话
*/
private String phone;
/**
* 保证金金额
*/
private BigDecimal margin;
/**
* 创建人ID
*/
private Long pkCreator;
/**
* 创建时间
*/
@Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date creationTime;
/**
* 逻辑删除 (0=未删除1已删除)
*/
private Integer delFlag;
/**
* 国家
*/
private Integer pkCountry;
/**
* 登录用户信息
*/
private LoginUser loginUser;
/**
* 审批业务类型 来源枚举 EApprovalBusiness
*/
private Integer editType;
/**
* 审核状态 来源枚举 EApproveStatus
*/
@Transaction(transactionKey = EnumsPrefixConstants.APPROVE_STATUS)
private Integer approveStatus;
/**
* 审核状态 来源枚举 EApproveStatus
*/
private String approveStatusVal;
/**
* 修改记录单号
*/
private String thBusinessCode;
/**
* 保证金缴纳集合
*/
private List<ThMarginVO> thMarginVOList;
}

View File

@ -1,221 +0,0 @@
package com.hzs.ground.order.controller.manage;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.constant.msg.ScmMsgConstants;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.poi.ExcelUtil;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.ground.order.ext.SaOrderSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.ground.order.param.OrderItemsParam;
import com.hzs.ground.order.param.OrderQueryParam;
import com.hzs.ground.order.service.ISaOrderSettleService;
import com.hzs.ground.order.service.ISupplierOrderService;
import com.hzs.ground.order.vo.SaOrderSettleVo;
import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.BdCubasdocDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 订单控制类
*
* @author: sui q
* @time: 2022/8/27 16:20
* @description:
* @classname: OrderController
* @package_name: com.hzs.sale.order.controller
*/
@RestController
@RequestMapping("/manage/order")
@Slf4j
public class SupplierOrderController extends BaseController {
@DubboReference
private ISystemConfigServiceApi systemConfigServiceApi;
@Autowired
private ISupplierOrderService supplierOrderService;
@Autowired
private ISaOrderSettleService saOrderSettleService;
/**
* 查询列表
*
* @return cubasdocParam 入参
*/
@PostMapping("/list")
public TableDataInfo listSupplierOrder(@RequestBody OrderQueryParam orderQueryParam) {
// 根据登录人获取供应商根据登录账号查找绑定的供应商查询供应商表
R<BdCubasdocDTO> bdCubasdocDate = systemConfigServiceApi.queryBdCubasdocByUser(SecurityUtils.getUserId());
if (!bdCubasdocDate.isSuccess() || bdCubasdocDate.getData() == null) {
return getDataTable(Collections.emptyList());
}
orderQueryParam.setPkSupplier(bdCubasdocDate.getData().getPkSupplier());
// 根据供应商查询可以查询到的订单
startPage();
orderQueryParam.setPkCountry(SecurityUtils.getPkCountry());
List<SaOrderExt> orderList = supplierOrderService.querySaOrderByCondition(orderQueryParam);
for (SaOrderExt saOrderExt : orderList) {
for (EOrderStatus value : EOrderStatus.values()) {
if (value.getValue() == saOrderExt.getOrderStatus()) {
saOrderExt.setOrderStatusVal(value.getLabel());
break;
}
}
}
return getDataTable(orderList);
}
@PostMapping("/send")
public AjaxResult sendGood(@RequestBody List<OrderItemsParam> orderItemsParamList) {
// 验证是否有该产品的权限验证订单是否已经发货
R<BdCubasdocDTO> bdCubasdocDate = systemConfigServiceApi.queryBdCubasdocByUser(SecurityUtils.getUserId());
if (!bdCubasdocDate.isSuccess() || bdCubasdocDate.getData() == null) {
return AjaxResult.error("该账号没有绑定供应商");
}
for (OrderItemsParam orderItemsParam : orderItemsParamList) {
if (orderItemsParam.getLogisticsCode() == null || orderItemsParam.getLogisticsCompany() == null) {
return AjaxResult.error("请输入物流单号,物流公司");
}
}
OrderQueryParam orderQueryParam = new OrderQueryParam();
orderQueryParam.setPkSupplier(bdCubasdocDate.getData().getPkSupplier());
orderQueryParam.setOrderItemsParamList(orderItemsParamList);
orderQueryParam.setPkCountry(SecurityUtils.getPkCountry());
orderQueryParam.setPkCreator(SecurityUtils.getUserId());
List<SaOrderExt> orderList = supplierOrderService.querySaOrderByCondition(orderQueryParam);
if (orderList == null) {
return AjaxResult.error("存在不属于该用户的产品,不能发货");
}
int size = 0;
for (SaOrderExt saOrderExt : orderList) {
size += saOrderExt.getOrderItemsExtList().size();
}
if (size < orderItemsParamList.size()) {
return AjaxResult.error("存在不属于该用户的产品,不能发货");
}
supplierOrderService.sendGood(orderQueryParam, orderItemsParamList, orderList);
return AjaxResult.success();
}
/**
* 查询列表
*
* @return cubasdocParam 入参
*/
@PostMapping("/list-settle")
@Log(module = EOperationModule.SUPPLIER_SETTLE_ORDER, business = EOperationBusiness.SUPPLIER_SETTLE_ORDER, method = EOperationMethod.SELECT)
public TableDataInfo listSettleOrder(@RequestBody OrderQueryParam orderQueryParam) {
// 根据登录人获取供应商根据登录账号查找绑定的供应商查询供应商表
R<BdCubasdocDTO> bdCubasdocDate = systemConfigServiceApi.queryBdCubasdocByUser(SecurityUtils.getUserId());
if (bdCubasdocDate != null && bdCubasdocDate.getData() != null) {
orderQueryParam.setPkSupplier(bdCubasdocDate.getData().getPkSupplier());
}
// 根据供应商查询可以查询到的订单
startPage();
orderQueryParam.setPkCountry(SecurityUtils.getPkCountry());
List<SaOrderSettleExt> orderSettleExtList = saOrderSettleService.querySaOrderSettle(orderQueryParam);
return getDataTable(orderSettleExtList);
}
/**
* 分页查询会员某个时间段内的奖金汇总
*/
@PostMapping("/export-list")
@Log(module = EOperationModule.SUPPLIER_SETTLE_ORDER, business = EOperationBusiness.SUPPLIER_SETTLE_ORDER, method = EOperationMethod.EXPORT)
public void exportSettleOrder(HttpServletResponse response, OrderQueryParam orderQueryParam){
// 根据登录人获取供应商根据登录账号查找绑定的供应商查询供应商表
R<BdCubasdocDTO> bdCubasdocDate = systemConfigServiceApi.queryBdCubasdocByUser(SecurityUtils.getUserId());
if (bdCubasdocDate != null && bdCubasdocDate.getData() != null) {
orderQueryParam.setPkSupplier(bdCubasdocDate.getData().getPkSupplier());
}
// 根据供应商查询可以查询到的订单
orderQueryParam.setPkCountry(SecurityUtils.getPkCountry());
List<SaOrderSettleExt> orderSettleExtList = saOrderSettleService.querySaOrderSettle(orderQueryParam);
List<SaOrderSettleVo> saOrderSettleVoList = packageScmExportVo(orderSettleExtList);
ExcelUtil<SaOrderSettleVo> util = new ExcelUtil<>(SaOrderSettleVo.class);
util.exportExcel(response, saOrderSettleVoList, "订单结算导出");
}
private List<SaOrderSettleVo> packageScmExportVo(List<SaOrderSettleExt> orderSettleExtList) {
List<SaOrderSettleVo> saOrderSettleVoList = new ArrayList<>();
for (SaOrderSettleExt saOrderSettleExt : orderSettleExtList) {
SaOrderSettleVo saOrderSettleVo = BeanUtil.copyProperties(saOrderSettleExt, SaOrderSettleVo.class);
if(EDealerYesNo.YES.getValue() == saOrderSettleExt.getSettleStatus()){
saOrderSettleVo.setSettleStatusVal(EDealerYesNo.YES.getLabel());
}else{
saOrderSettleVo.setSettleStatusVal(EDealerYesNo.NO.getLabel());
}
saOrderSettleVoList.add(saOrderSettleVo);
}
return saOrderSettleVoList;
}
/**
* 结算订单
*
* @return cubasdocParam 入参
*/
@PostMapping("/settle-order")
@Log(module = EOperationModule.SUPPLIER_SETTLE_ORDER, business = EOperationBusiness.SUPPLIER_SETTLE_ORDER, method = EOperationMethod.SETTLE)
public AjaxResult settleOrder(@RequestBody OrderQueryParam orderQueryParam) {
orderQueryParam.setPkCountry(SecurityUtils.getPkCountry());
List<SaOrderSettleExt> orderSettleExtList = saOrderSettleService.querySaOrderSettle(orderQueryParam);
if (CollectionUtil.isEmpty(orderSettleExtList)) {
return AjaxResult.error(ScmMsgConstants.SETTLE_ORDER_NOT_EXISTS);
}
// 分为线上线下2部分
for (SaOrderSettleExt saOrderSettleExt : orderSettleExtList) {
// 验证状态
if (EYesNo.YES.getIntValue() == saOrderSettleExt.getSettleStatus()) {
return AjaxResult.error(ScmMsgConstants.SETTLE_ORDER_HAS_SETTLE);
}
}
saOrderSettleService.updateSaOrderSettle(orderSettleExtList);
return AjaxResult.success();
}
// /**
// * 撤销订单并入库走签呈签呈页面点击确定按钮
// *
// * @param scmApproveParam 参数
// */
// @PostMapping("/submit")
// @Log(module = EOperationModule.SUPPLIER_SETTLE_ORDER, business = EOperationBusiness.SUPPLIER_SETTLE_ORDER, method = EOperationMethod.UPDATE)
// public AjaxResult submitSettleOrder(@RequestBody ScmApproveParam scmApproveParam) {
// scmApproveParam.setPkCountry(SecurityUtils.getPkCountry());
// if(scmApproveParam.getPkId() == null){
// return AjaxResult.error(TransactionUtils.getContent(ScmMsgConstants.IC_GENERAL_IN_NOT_EXIST));
// }
// IcGeneralInHExt generalInhExt = generalInhService.queryGeneralInById(scmApproveParam.getPkId(), EScmOrderStatus.SAVE.getValue());
// if (generalInhExt == null) {
// return AjaxResult.error(TransactionUtils.getContent(ScmMsgConstants.IC_GENERAL_IN_NOT_EXIST));
// }
// // 验证该订单是否存在签呈存在待审核的签呈不能再次发起
// List<ScmOrderApproveLog> scmOrderApproveLogs = scmOrderApproveLogService.queryScmOrderApproveLogByCondition(scmApproveParam.getPkId(), EApprovalBusiness.IC_GENERAL_IN_APPROVE.getValue(), null);
// if(CollectionUtil.isNotEmpty(scmOrderApproveLogs)){
// return AjaxResult.error(TransactionUtils.getContent(ScmMsgConstants.PURCHASE_EXISTS_AGENT));
// }
// generalInhService.auditGeneralInByApproveParamSubmit(scmApproveParam, userTokenService.getLoginUser());
// return AjaxResult.success();
// }
}

View File

@ -1,36 +0,0 @@
package com.hzs.ground.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.ground.order.SaOrderSettle;
import com.hzs.common.domain.ground.order.ext.SaOrderSettleExt;
import com.hzs.ground.order.param.OrderQueryParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 销售订单-三方结算表 Mapper 接口
* </p>
*
* @author hzs
* @since 2024-04-15
*/
public interface SaOrderSettleMapper extends BaseMapper<SaOrderSettle> {
/*
* @description:
* @author: sui q
* @date: 2024/4/15 15:37
* @param: null null
**/
List<SaOrderSettleExt> querySaOrderSettle(@Param("queryParam") OrderQueryParam queryParam);
/*
* @description: 结算操作
* @author: sui q
* @date: 2024/4/16 10:23
* @param: null null
**/
void updateSaOrderSettle(@Param("orderSettleExtList") List<SaOrderSettleExt> orderSettleExtList);
}

View File

@ -1,28 +0,0 @@
package com.hzs.ground.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.ground.order.param.OrderQueryParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @description: 供应商查询顶顶那
* @author: sui q
* @time: 2024/3/23 14:01
* @classname: SupplierOrdeMapper
* @package_name: com.hzs.ground.order.mapper
* version 1.0.0
*/
public interface SupplierOrderMapper extends BaseMapper<SaOrderItems> {
/*
* @description: 供应商查询订单
* @author: sui q
* @date: 2024/3/23 14:32
* @param: null null
**/
List<SaOrderExt> querySaOrderByCondition(@Param("orderQueryParam") OrderQueryParam orderQueryParam);
}

View File

@ -1,35 +0,0 @@
package com.hzs.ground.order.param;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
/**
* @description: 发货信息
* @author: sui q
* @time: 2024/3/23 15:18
* @classname: OrderItemsParam
* @package_name: com.hzs.ground.order.param
* version 1.0.0
*/
@Data
public class OrderItemsParam implements Serializable {
/**
* 子表主键
*/
private Long pkId;
/**
* 物流单号
*/
private String logisticsCode;
/**
* 物流公司
*/
private String logisticsCompany;
}

View File

@ -1,87 +0,0 @@
package com.hzs.ground.order.param;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Description: 订单查询参数
* @Author: sui q
* @Time: 2022/10/19 16:49
* @Classname: OrderQueryParam
* @PackageName: com.hzs.sale.order.param
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderQueryParam implements Serializable {
/**
* 收货人
*/
private String recName;
/**
* 收货电话
*/
private String recPhone;
/**
* 开始支付时间
*/
private Date startTime;
/**
* 结束支付时间
*/
private Date endTime;
/**
* 订单编号
*/
private String orderCode;
/**
* 国家
*/
private Integer pkCountry;
private Long pkCreator;
/**
* 供应商
*/
private Integer pkSupplier;
/**
* 产品编号
*/
private String productCode;
/**
* 产品名称
*/
private String productName;
/**
* 发货渠道 1 总仓发货 2 一件代发
*/
private Integer shippingChannel;
/**
* 订单状态 (0=待支付,1=已支付)
*/
private Integer orderStatus;
private List<Long> idList;
private List<OrderItemsParam> orderItemsParamList;
}

View File

@ -1,44 +0,0 @@
package com.hzs.ground.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.ground.order.SaOrderSettle;
import com.hzs.common.domain.ground.order.ext.SaOrderSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.ground.order.param.OrderQueryParam;
import java.util.List;
/**
* <p>
* 销售订单-三方结算表 服务类
* </p>
*
* @author hzs
* @since 2024-04-15
*/
public interface ISaOrderSettleService extends IService<SaOrderSettle> {
/*
* @description: 保存结算单发货完成后生成订单结算单
* @author: sui q
* @date: 2024/4/15 14:12
* @param: null null
**/
void saveOrderSettleByOrder(OrderQueryParam orderQueryParam, List<SaOrderExt> orderList);
/*
* @description:
* @author: sui q
* @date: 2024/4/15 15:37
* @param: null null
**/
List<SaOrderSettleExt> querySaOrderSettle(OrderQueryParam queryParam);
/*
* @description: 结算操作
* @author: sui q
* @date: 2024/4/16 10:23
* @param: null null
**/
void updateSaOrderSettle(List<SaOrderSettleExt> orderSettleExtList);
}

View File

@ -1,37 +0,0 @@
package com.hzs.ground.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.ground.order.param.OrderItemsParam;
import com.hzs.ground.order.param.OrderQueryParam;
import java.util.List;
/**
* @description: 用于查询供应商订单发货
* @author: sui q
* @time: 2024/3/23 13:59
* @classname: SupplierOrderService
* @package_name: com.hzs.ground.order.service
* version 1.0.0
*/
public interface ISupplierOrderService extends IService<SaOrderItems> {
/*
* @description: 供应商查询订单
* @author: sui q
* @date: 2024/3/23 14:32
* @param: null null
**/
List<SaOrderExt> querySaOrderByCondition(OrderQueryParam orderQueryParam);
/*
* @description: 发货
* @author: sui q
* @date: 2024/3/23 15:36
* @param: null null
**/
void sendGood(OrderQueryParam orderQueryParam, List<OrderItemsParam> orderItemsParamList, List<SaOrderExt> orderList);
}

View File

@ -1,105 +0,0 @@
package com.hzs.ground.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.enums.ESettleType;
import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.ground.order.SaOrderSettle;
import com.hzs.common.domain.ground.order.ext.SaOrderSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.scm.postage.ext.ThSupplierPostageExt;
import com.hzs.ground.order.mapper.SaOrderSettleMapper;
import com.hzs.ground.order.param.OrderQueryParam;
import com.hzs.ground.order.service.ISaOrderSettleService;
import com.hzs.ground.postage.service.IThSupplierPostageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 销售订单-三方结算表 服务实现类
* </p>
*
* @author hzs
* @since 2024-04-15
*/
@Service
public class SaOrderSettleServiceImpl extends ServiceImpl<SaOrderSettleMapper, SaOrderSettle> implements ISaOrderSettleService {
@Autowired
private IThSupplierPostageService supplierPostageService;
@Override
@Transactional(rollbackFor = Exception.class)
public void saveOrderSettleByOrder(OrderQueryParam orderQueryParam, List<SaOrderExt> orderList) {
List<SaOrderSettle> saOrderSettleList = new ArrayList<>();
List<SaOrderItemsExt> orderItemsExtList = new ArrayList<>();
for (SaOrderExt saOrderExt : orderList) {
for (SaOrderItemsExt saOrderItems : saOrderExt.getOrderItemsExtList()) {
SaOrderSettle saOrderSettle = SaOrderSettle.builder()
.pkOrder(saOrderExt.getPkId())
.pkOrderItems(saOrderItems.getPkId())
.settleStatus(EYesNo.NO.getIntValue())
.price(saOrderItems.getSupplyPrice())
.quantity(saOrderItems.getQuantity())
.pkSupplier(orderQueryParam.getPkSupplier())
.postage(BigDecimal.ZERO)
.totalPrice(ComputeUtil.computeMultiply(saOrderItems.getSupplyPrice(), saOrderItems.getQuantity()))
.build();
saOrderSettle.setPkCountry(orderQueryParam.getPkCountry());
saOrderSettle.setPkCreator(orderQueryParam.getPkCreator());
saOrderSettleList.add(saOrderSettle);
saOrderItems.setPkSupplier(orderQueryParam.getPkSupplier());
orderItemsExtList.add(saOrderItems);
}
}
List<ThSupplierPostageExt> thSupplierPostageExtList = supplierPostageService.querySupplierPostageByOrder(orderItemsExtList);
if (saOrderSettleList.size() > 0) {
Map<Long, ThSupplierPostageExt> supplierPostageExtMap = new HashMap<>();
if(thSupplierPostageExtList.size()>0){
thSupplierPostageExtList.forEach(thSupplierPostageExt -> supplierPostageExtMap.put(thSupplierPostageExt.getPkOrder(), thSupplierPostageExt));
}
for (SaOrderSettle saOrderSettle : saOrderSettleList) {
if(supplierPostageExtMap.containsKey(saOrderSettle.getPkOrder())){
saOrderSettle.setPostage(supplierPostageExtMap.get(saOrderSettle.getPkOrder()).getPostage());
saOrderSettle.setTotalPrice(ComputeUtil.computeAdd(saOrderSettle.getTotalPrice(), saOrderSettle.getPostage()));
supplierPostageExtMap.remove(saOrderSettle.getPkOrder());
}
}
saveBatch(saOrderSettleList);
}
}
@Override
public List<SaOrderSettleExt> querySaOrderSettle(OrderQueryParam queryParam) {
if (queryParam.getEndTime() != null) {
queryParam.setEndTime(DateUtils.afterDate(1, ChronoUnit.DAYS, queryParam.getEndTime()));
}
return baseMapper.querySaOrderSettle(queryParam);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateSaOrderSettle(List<SaOrderSettleExt> orderSettleExtList) {
// 分为线上线下2部分
List<SaOrderSettleExt> onlineSaOrderSettleList = new ArrayList<>();
for (SaOrderSettleExt saOrderSettleExt : orderSettleExtList) {
if(ESettleType.ONLINE.getValue() == saOrderSettleExt.getSettleType()){
onlineSaOrderSettleList.add(saOrderSettleExt);
}
}
// 批量更新结算状态
baseMapper.updateSaOrderSettle(orderSettleExtList);
// 为账号发放结算金额这个可能会发2份待确认
}
}

View File

@ -1,61 +0,0 @@
package com.hzs.ground.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.SaOrderFieldConstants;
import com.hzs.common.core.constant.SystemFieldConstants;
import com.hzs.common.core.enums.EOrderStatus;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.ground.order.mapper.SupplierOrderMapper;
import com.hzs.ground.order.param.OrderItemsParam;
import com.hzs.ground.order.param.OrderQueryParam;
import com.hzs.ground.order.service.ISaOrderSettleService;
import com.hzs.ground.order.service.ISupplierOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.temporal.ChronoUnit;
import java.util.List;
/**
* @description: 供应商查询订单
* @author: sui q
* @time: 2024/3/23 13:59
* @classname: SupplierOrderServiceImpl
* @package_name: com.hzs.ground.order.service.impl
* version 1.0.0
*/
@Service
public class SupplierOrderServiceImpl extends ServiceImpl<SupplierOrderMapper, SaOrderItems> implements ISupplierOrderService {
@Autowired
private ISaOrderSettleService saOrderSettleService;
@Override
public List<SaOrderExt> querySaOrderByCondition(OrderQueryParam orderQueryParam) {
if (orderQueryParam.getEndTime() != null) {
orderQueryParam.setEndTime(DateUtils.afterDate(1, ChronoUnit.DAYS, orderQueryParam.getEndTime()));
}
return baseMapper.querySaOrderByCondition(orderQueryParam);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void sendGood(OrderQueryParam orderQueryParam , List<OrderItemsParam> orderItemsParamList, List<SaOrderExt> orderList) {
for (OrderItemsParam orderItemsParam : orderItemsParamList) {
UpdateWrapper<SaOrderItems> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(SystemFieldConstants.PK_ID, orderItemsParam.getPkId());
updateWrapper.eq(SaOrderFieldConstants.ORDER_STATUS, EOrderStatus.PAY.getValue());
updateWrapper.set("LOGISTICS_CODE", orderItemsParam.getLogisticsCode());
updateWrapper.set("LOGISTICS_COMPANY", orderItemsParam.getLogisticsCompany());
updateWrapper.set(SaOrderFieldConstants.ORDER_STATUS, EOrderStatus.DELIVERED.getValue());
update(updateWrapper);
}
// 发货完成自动生成待结算单据
saOrderSettleService.saveOrderSettleByOrder(orderQueryParam, orderList);
}
}

View File

@ -1,69 +0,0 @@
package com.hzs.ground.order.vo;
import com.hzs.common.core.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @description: 订单结算vo
* @author: sui q
* @time: 2024/5/8 11:04
* @classname: SaOrderSettleVo
* @package_name: com.hzs.ground.order.vo
* version 1.0.0
*/
@Data
public class SaOrderSettleVo implements Serializable {
@Excel(name = "订单编号")
private String orderCode;
/**
* 产品编号
*/
@Excel(name = "产品编号")
private String productCode;
/**
* 产品名称
*/
@Excel(name = "产品名称")
private String productName;
/**
* 数量
*/
@Excel(name = "数量")
private Integer quantity;
/**
* 价格
*/
@Excel(name = "结算单价",scale = 2)
private BigDecimal price;
@Excel(name = "结算状态")
private String settleStatusVal;
/**
* 供应商名称
*/
@Excel(name = "供应商")
private String supplyName;
/**
* 创建时间
*/
@Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date creationTime;
/**
* 支付时间
*/
@Excel(name = "支付时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date payTime;
}

View File

@ -1,124 +0,0 @@
package com.hzs.ground.postage.controller.manage;
import cn.hutool.core.bean.BeanUtil;
import com.hzs.common.core.constant.HttpStatus;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.poi.ExcelUtil;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.scm.postage.ThSupplierPostage;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.ground.postage.param.SupplierPostageParam;
import com.hzs.ground.postage.service.IThSupplierPostageService;
import com.hzs.ground.postage.vo.SupplierPostageVo;
import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.BdCubasdocDTO;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@RestController
@RequestMapping("/manage/supplier-postage")
public class SupplierPostageController extends BaseController {
@Autowired
private IThSupplierPostageService supplierPostageService;
@DubboReference
private ISystemConfigServiceApi systemConfigServiceApi;
/**
* 查询列表
* @return
*/
@GetMapping("list")
public TableDataInfo list(SupplierPostageParam supplierPostageParam){
startPage();
// 下面代码需要使用 坐等随工提交此方法 取消注释
R<BdCubasdocDTO> bdCubasdocDate = systemConfigServiceApi.queryBdCubasdocByUser(SecurityUtils.getUserId());
Integer pkSupplier = null;
if(bdCubasdocDate.getCode() == HttpStatus.SUCCESS){
BdCubasdocDTO bdCubasdoc = bdCubasdocDate.getData();
if(bdCubasdoc == null){
pkSupplier = 1;
}else {
pkSupplier = bdCubasdoc.getPkSupplier();
}
}
supplierPostageParam.setPkCubasdoc(pkSupplier);
List<SupplierPostageVo> list = supplierPostageService.selectByQueryList(supplierPostageParam);
return getDataTable(list);
}
/**
* 查询列表
* @return
*/
@PostMapping("export")
public void export(SupplierPostageParam supplierPostageParam,HttpServletResponse response){
// 下面代码需要使用 坐等随工提交此方法 取消注释
R<BdCubasdocDTO> bdCubasdocDate = systemConfigServiceApi.queryBdCubasdocByUser(SecurityUtils.getUserId());
Integer pkSupplier = null;
if(bdCubasdocDate.getCode() == HttpStatus.SUCCESS){
BdCubasdocDTO bdCubasdoc = bdCubasdocDate.getData();
if(bdCubasdoc == null){
pkSupplier = 1;
}else {
pkSupplier = bdCubasdoc.getPkSupplier();
}
}
supplierPostageParam.setPkCubasdoc(pkSupplier);
List<SupplierPostageVo> list = supplierPostageService.selectByQueryList(supplierPostageParam);
ExcelUtil<SupplierPostageVo> util = new ExcelUtil<>(SupplierPostageVo.class);
util.exportExcel(response, list, "商品信息导出");
}
/**
* 新增
* @return
*/
@PostMapping("save")
public AjaxResult save(@RequestBody ThSupplierPostage supplierPostage){
supplierPostage.setCreationTime(DateUtils.currentDateTime());
supplierPostage.setPkCreator(SecurityUtils.getUserId());
supplierPostage.setPkCountry(SecurityUtils.getPkCountry());
supplierPostageService.save(supplierPostage);
return AjaxResult.success();
}
/**
* 修改
*/
@PostMapping("update")
public AjaxResult update(@RequestBody ThSupplierPostage supplierPostage){
supplierPostageService.updateById(supplierPostage);
return AjaxResult.success();
}
/**
* 查询详情
*/
@GetMapping("detail")
public AjaxResult detail(Integer pkSupplierPostage){
SupplierPostageVo supplierPostageVo = supplierPostageService.selectByPkId(pkSupplierPostage);
return AjaxResult.success(supplierPostageVo);
}
/**
* 删除
* @param pkSupplierPostage
* @return
*/
@GetMapping("remove")
public AjaxResult remove(Integer pkSupplierPostage){
supplierPostageService.removeById(pkSupplierPostage);
return AjaxResult.success();
}
}

View File

@ -1,45 +0,0 @@
package com.hzs.ground.postage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.scm.postage.ThSupplierPostage;
import com.hzs.common.domain.scm.postage.ext.ThSupplierPostageExt;
import com.hzs.ground.postage.param.SupplierPostageParam;
import com.hzs.ground.postage.vo.SupplierPostageVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hzs
* @since 2024-04-19
*/
public interface ThSupplierPostageMapper extends BaseMapper<ThSupplierPostage> {
/*
* @description: 根据订单批量查询供应商邮费
* @author: sui q
* @date: 2024/4/19 16:29
* @param: null null
**/
List<ThSupplierPostageExt> querySupplierPostageByOrder(@Param("orderItemsExtList") List<SaOrderItemsExt> orderItemsExtList);
/**
* 查询列表
* @return
*/
List<SupplierPostageVo> selectByQueryList(SupplierPostageParam supplierPostageParam);
/**
* 根据id 查询
* @param pkSupplierPostage
* @return
*/
SupplierPostageVo selectByPkId(@Param("pkSupplierPostage") Integer pkSupplierPostage);
}

Some files were not shown because too many files have changed in this diff Show More