Browse Source

问题修改。

cangku
wangfukang 2 years ago
parent
commit
b47396dbda
  1. 2
      hiver-admin/src/main/resources/application.yml
  2. 16
      hiver-admin/test-output/test-report.html
  3. 40
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java
  4. 14
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java
  5. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java
  6. 4
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java
  7. 48
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalesRankingQueryCriteria.java
  8. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/CustomerSaleDetailVo.java
  9. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductAttributeValueVo.java
  10. 2
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java
  11. 5
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java
  12. 3
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java
  13. 29
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java
  14. 2
      hiver-modules/hiver-mall/src/main/resources/mapper/ProductAttributeValueMapper.xml
  15. 2
      hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml
  16. 9
      hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml

2
hiver-admin/src/main/resources/application.yml

@ -26,7 +26,7 @@ spring:
# 数据源
datasource:
url: jdbc:mysql://154.8.162.157:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true
# url: jdbc:mysql://8.140.198.243:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true
# url: jdbc:mysql://8.140.198.243:3306/hiver_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: reddoor
# Jasypt加密 可到common-utils中找到JasyptUtil加解密工具类生成加密结果 格式为ENC(加密结果) 以下解密结果为123456
password: ENC(Zla4U4+yRLPhicvuX2TmiEgxEpzP4dk8BHzFDEtiEhwLQIIaftZrrEUJZce6efoe)

16
hiver-admin/test-output/test-report.html

@ -35,7 +35,7 @@
<a href="#"><span class="badge badge-primary">Hiver</span></a>
</li>
<li class="m-r-10">
<a href="#"><span class="badge badge-primary">七月 09, 2024 10:22:46</span></a>
<a href="#"><span class="badge badge-primary">七月 12, 2024 11:22:46</span></a>
</li>
</ul>
</div>
@ -84,7 +84,7 @@
<div class="test-detail">
<span class="meta text-white badge badge-sm"></span>
<p class="name">passTest</p>
<p class="text-sm"><span>10:22:47 上午</span> / <span>0.018 secs</span></p>
<p class="text-sm"><span>11:22:47 上午</span> / <span>0.045 secs</span></p>
</div>
<div class="test-contents d-none">
<div class="detail-head">
@ -92,9 +92,9 @@
<div class="info">
<div class='float-right'><span class='badge badge-default'>#test-id=1</span></div>
<h5 class="test-status text-pass">passTest</h5>
<span class='badge badge-success'>07.09.2024 10:22:47</span>
<span class='badge badge-danger'>07.09.2024 10:22:47</span>
<span class='badge badge-default'>0.018 secs</span>
<span class='badge badge-success'>07.12.2024 11:22:47</span>
<span class='badge badge-danger'>07.12.2024 11:22:47</span>
<span class='badge badge-default'>0.045 secs</span>
</div>
<div class="m-t-10 m-l-5"></div>
</div>
@ -104,7 +104,7 @@
<tbody>
<tr class="event-row">
<td><span class="badge log pass-bg">Pass</span></td>
<td>10:22:47</td>
<td>11:22:47</td>
<td>
Test passed
</td>
@ -128,13 +128,13 @@
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Started</p>
<h3>七月 09, 2024 10:22:46</h3>
<h3>七月 12, 2024 11:22:46</h3>
</div></div>
</div>
<div class="col-md-3">
<div class="card"><div class="card-body">
<p class="m-b-0">Ended</p>
<h3>七月 09, 2024 10:22:47</h3>
<h3>七月 12, 2024 11:22:47</h3>
</div></div>
</div>
<div class="col-md-3">

40
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/bill/service/impl/BillServiceImpl.java

@ -3,6 +3,8 @@ package cc.hiver.mall.bill.service.impl;
import cc.hiver.core.common.utils.StringUtils;
import cc.hiver.mall.bill.service.BillService;
import cc.hiver.mall.bill.vo.*;
import cc.hiver.mall.debt.entity.Debt;
import cc.hiver.mall.debt.service.DebtService;
import cc.hiver.mall.entity.Customer;
import cc.hiver.mall.entity.ReturnDetail;
import cc.hiver.mall.entity.SaleDetail;
@ -13,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.*;
@Service
@ -36,6 +39,9 @@ public class BillServiceImpl implements BillService {
@Autowired
private DealingsRecordService dealingsRecordService;
@Autowired
private DebtService debtService;
/**
* 获取客户对账单
*
@ -64,20 +70,50 @@ public class BillServiceImpl implements BillService {
if (saleArrearsVo != null) {
customerBillDataVo.setArrears(saleArrearsVo.getArrears());
customerBillDataVo.setTotalSale(saleArrearsVo.getTotalSale());
}else{
customerBillDataVo.setArrears(BigDecimal.ZERO);
customerBillDataVo.setTotalSale(BigDecimal.ZERO);
}
// 获取退货总金额
final ArrearsVo returnSaleArrearsVo = returnSaleService.getTotalReturn(customerBillQueryVo);
if (returnSaleArrearsVo != null) {
customerBillDataVo.setTotalReturn(returnSaleArrearsVo.getTotalReturn());
}else{
customerBillDataVo.setTotalReturn(BigDecimal.ZERO);
}
// 根据客户id及日期范围对账单明细
final Page<CustomerBillSaleVo> dealingRecordPage = dealingsRecordService.getDealingsRecordPageByUserId(customerBillQueryVo);
final List<CustomerBillSaleVo> records = dealingRecordPage.getRecords();
// 获取saleId,去查询销售单的商品明细,及退货单的商品明细
final List<String> saleIdList = new ArrayList<>();
if(records.isEmpty()){
//未开单,查询客户欠款,作为初期欠款和期末欠款
final Debt debt = debtService.selectByUserId(customerBillQueryVo.getShopId(),customerBillQueryVo.getCustomerId());
// 要查新客户的创建时间,根据用户的创建时间来判断;
// 如果查询时间小于创建时间,那么初期欠款和期末欠款应该为0
// 如果查询的时间大于创建时间,那么初期欠款和期末欠款应该为客户欠款
if(debt != null){
final Date createTime = debt.getCreateTime();
final String endDate = customerBillQueryVo.getEndDate();
final Date enddate;
try {
enddate = DateUtil.COMMON.getTextDate(endDate);
} catch (ParseException e) {
throw new RuntimeException(e);
}
// 以为现在创建客户就创建了欠款信息,那么就按照欠款信息的创建时间作为标识
if(createTime.after(enddate)){
customerBillDataVo.setInitialArrears(BigDecimal.ZERO);
customerBillDataVo.setEndArrears(BigDecimal.ZERO);
}else{
customerBillDataVo.setInitialArrears(debt.getAmountOwed());
customerBillDataVo.setEndArrears(debt.getAmountOwed());
}
}
}else{
for (int i = 0; i < records.size(); i++) {
if(StringUtils.isNotEmpty(records.get(i).getSaleId())){
saleIdList.add(records.get(i).getSaleId());
@ -92,6 +128,8 @@ public class BillServiceImpl implements BillService {
customerBillDataVo.setEndArrears(records.get(i).getBalanceDue());
}
}
}
if (!saleIdList.isEmpty()) {
// 获取销售单明细
final List<SaleDetail> saleDetailList = saleDetailService.getSaleDetails(saleIdList);

14
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java

@ -147,7 +147,7 @@ public class SaleController {
saleQueryDTO.getSale().setShopName(shop.getShopName());
// 根据该客户的欠款信息
String userId = saleQueryDTO.getSale().getUserId();
Debt debt = debtService.selectByUserId(userId);
Debt debt = debtService.selectByUserId(shopId,userId);
BigDecimal amountOwed = debt.getAmountOwed();
// 20240616 开单可能值包含退货单
Sale sale = saleQueryDTO.getSale();
@ -433,17 +433,13 @@ public class SaleController {
@RequestMapping(value = "/listPages", method = RequestMethod.POST)
@ApiOperation("根据条件获得分页")
public Result queryPage(@RequestBody SaleVO saleVO) {
/*String shopId = "";
try {
// 获取请求token
shopId = securityUtil.getShopId();
} catch (Exception e) {
return ResultUtil.error(500, e.getMessage());
}*/
if (ObjectUtils.isEmpty(saleVO)) {
return new ResultUtil().setErrorMsg("请输入查询条件后再查询!");
}
// saleVO.setShopId(shopId);
if (StringUtils.isNotEmpty(saleVO.getEndTime())) {
final String newEnTime = DateUtil.addDay(saleVO.getEndTime(), 1);
saleVO.setEndTime(newEnTime);
}
final Page<Sale> saleList = saleService.queryPage(saleVO);
return new ResultUtil<Page<Sale>>().setData(saleList);
}

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/DebtService.java

@ -60,7 +60,7 @@ public interface DebtService extends IService<Debt> {
* @param userId
* @return Debt
*/
Debt selectByUserId(String userId);
Debt selectByUserId(String shopId,String userId);
Debt recharge(Debt debt);
}

4
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/debt/service/impl/DebtServiceImpl.java

@ -228,8 +228,8 @@ public class DebtServiceImpl extends ServiceImpl<DebtMapper, Debt> implements De
return debtMapper.getDebtByUserIds(userIds);
}
public Debt selectByUserId(String userId) {
return debtMapper.selectByUserId(securityUtil.getShopId(), userId);
public Debt selectByUserId(String shopId, String userId) {
return debtMapper.selectByUserId(shopId, userId);
}
@Override

48
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalesRankingQueryCriteria.java

@ -1,16 +1,12 @@
package cc.hiver.mall.pojo.query;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@ApiModel(value = "业绩管理返回实体")
@ApiModel(value = "业绩管理查询实体")
@Data
public class SalesRankingQueryCriteria implements Serializable {
@ -18,47 +14,9 @@ public class SalesRankingQueryCriteria implements Serializable {
private String shopId;
@ApiModelProperty(value = "开始时间")
private Date startTime;
private String startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
public Date getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
if (!StrUtil.isNotEmpty(startTime)) {
this.startTime = null;
return;
}
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
this.startTime = formatter.parse(startTime + " 00:00:00");
} catch (Exception e) {
e.printStackTrace();
}
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
if (!StrUtil.isNotEmpty(endTime)) {
this.endTime = null;
return;
}
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
this.endTime = formatter.parse(endTime + "23:59:59");
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean isAnyFieldEmpty() {
return ObjectUtils.isEmpty(this.startTime) && ObjectUtils.isEmpty(this.endTime);
}
private String endTime;
}

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/CustomerSaleDetailVo.java

@ -18,7 +18,7 @@ public class CustomerSaleDetailVo {
private String productCount;
@ApiModelProperty(value = " 拿货总金额")
private String realAmount;
private String totalAmount;
@ApiModelProperty(value = " 成本")
private String totalCost;

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductAttributeValueVo.java

@ -11,6 +11,9 @@ public class ProductAttributeValueVo extends HiverBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "属性值id")
private String id;
@ApiModelProperty(value = "商品属性ID")
private String attributeId;

2
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/SalesAndDetailsServiceImpl.java

@ -259,7 +259,7 @@ public class SalesAndDetailsServiceImpl implements SalesAndDetailsService {
}
}
// 获取销售员的手机号
User user = userService.get(sale.getCreateBy());
final User user = securityUtil.getCurrUser();
sale.setCreateByPhone(user.getMobile());
sale.setCreateTime(new Date());
sale.setDelFlag(CommonConstant.DEL_FLAG_FALSE);

5
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/DealingsRecordServiceImpl.java

@ -1,13 +1,11 @@
package cc.hiver.mall.serviceimpl.mybatis;
import cc.hiver.core.common.utils.SecurityUtil;
import cc.hiver.core.common.utils.StringUtils;
import cc.hiver.mall.bill.vo.CustomerBillQueryVo;
import cc.hiver.mall.bill.vo.CustomerBillSaleVo;
import cc.hiver.mall.dao.mapper.DealingsRecordMapper;
import cc.hiver.mall.entity.DealingsRecord;
import cc.hiver.mall.service.mybatis.DealingsRecordService;
import cc.hiver.mall.utils.DateUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
@ -32,9 +30,6 @@ public class DealingsRecordServiceImpl extends ServiceImpl<DealingsRecordMapper,
@Override
public BigDecimal queryTotalPayAmount(String shopId, String startTime, String endTime) {
if (StringUtils.isNotEmpty(endTime)) {
endTime = DateUtil.addDay(endTime, 1);
}
return dealingsRecordMapper.queryTotalPayAmount(shopId, startTime, endTime);
}

3
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/PurchaseServiceImpl.java

@ -313,9 +313,6 @@ public class PurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchase> i
@Override
public BigDecimal getPurchasingCost(String shopId, String startTime, String endTime) {
if (StringUtils.isNotEmpty(endTime)) {
endTime = DateUtil.addDay(endTime, 1);
}
return purchaseMapper.getPurchasingCost(shopId, startTime, endTime);
}

29
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java

@ -13,6 +13,7 @@ import cc.hiver.core.service.LogiticsCompanyService;
import cc.hiver.mall.bill.vo.ArrearsVo;
import cc.hiver.mall.bill.vo.CustomerBillQueryVo;
import cc.hiver.mall.bill.vo.CustomerBillSaleVo;
import cc.hiver.mall.common.constant.OrderConstant;
import cc.hiver.mall.common.constant.StockConstant;
import cc.hiver.mall.common.constant.StockLogConstant;
import cc.hiver.mall.config.thread.AiSaleThread;
@ -30,6 +31,7 @@ import cc.hiver.mall.saleaimsg.constant.SaleAiMsgConstant;
import cc.hiver.mall.saleaimsg.entity.SaleAiMsg;
import cc.hiver.mall.saleaimsg.service.SaleAiMsgService;
import cc.hiver.mall.service.OrderService;
import cc.hiver.mall.service.SendMessageService;
import cc.hiver.mall.service.mybatis.*;
import cc.hiver.mall.utils.AliOcrUtil;
import cc.hiver.mall.utils.DateUtil;
@ -106,6 +108,9 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
@Autowired
private DebtService debtService;
@Autowired
private SendMessageService sendMessageService;
@Override
public void editPayPrice(String id, BigDecimal price, String dealingsWay) {
// 修改采购单、实付、未付金额
@ -157,11 +162,6 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
if (!ObjectUtils.isEmpty(saleVO.getPageVo())) {
page = new Page<>(saleVO.getPageVo().getPageNumber(), saleVO.getPageVo().getPageSize());
}
if (StringUtils.isNotEmpty(saleVO.getEndTime())) {
final String newEnTime = DateUtil.addDay(saleVO.getEndTime(), 1);
saleVO.setEndTime(newEnTime);
}
final Page<Sale> saleList = saleMapper.queryPage(page, saleVO);
// 获取订单详情信息
for (Sale sale : saleList.getRecords()) {
@ -351,6 +351,9 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
*/
@Override
public List<SalesRankingVo> getSalesRankingByShopId(SalesRankingQueryCriteria salesRankingQueryCriteria) {
if(StringUtils.isNotEmpty(salesRankingQueryCriteria.getEndTime())){
salesRankingQueryCriteria.setEndTime(DateUtil.addDay(salesRankingQueryCriteria.getEndTime(), 1));
}
return saleMapper.getSalesRankingByShopId(salesRankingQueryCriteria);
}
@ -915,7 +918,7 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
// 4. 订单款项记录作废
// 根据订单获取交易记录
final String userId = sale.getUserId();
final Debt oldDebt = debtService.selectByUserId(userId);
final Debt oldDebt = debtService.selectByUserId(sale.getShopId(),userId);
if (oldDebt != null) {
final BigDecimal newDebtAmount;
final BigDecimal lastDebtAmount = oldDebt.getAmountOwed();
@ -954,6 +957,20 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
}
// 作废当前订单的欠款记录
dealingsRecordService.cancelRecord(id);
// 如果有配送单,那么就取消配送,并给快递员发送消息
final OrderXd orderXd = orderService.findByOrderId(id);
if(orderXd != null && (orderXd.getOrderStatus().equals(OrderConstant.ORDER_STATUS[0]) || orderXd.getOrderStatus().equals(OrderConstant.ORDER_STATUS[1]))){
if (StringUtils.isNotEmpty(orderXd.getOrderByWorker())) {
// 如果订单被抢单了,那么需要给配送员发送消息
sendMessageService.handleSendAppMessageOfQuxiao(orderXd.getOrderByWorker());
}
orderXd.setOrderByWorker(null);
orderXd.setOrderByWorkertime(null);
orderXd.setWorker(null);
// 修改为作废
orderXd.setOrderStatus(OrderConstant.ORDER_STATUS[2]);
orderService.update(orderXd);
}
}
@Override

2
hiver-modules/hiver-mall/src/main/resources/mapper/ProductAttributeValueMapper.xml

@ -259,7 +259,7 @@
<select id="selectAttributeValueByAttributeId" parameterType="java.lang.String" resultType="cc.hiver.mall.pojo.vo.ProductAttributeValueVo">
select
attribute_id,value
id,attribute_id,value
from t_product_attribute_value
where attribute_id in
<foreach close=")" collection="attributeIds" item="listItem" open="(" separator=",">

2
hiver-modules/hiver-mall/src/main/resources/mapper/ReturnSaleMapper.xml

@ -571,7 +571,7 @@
and trs.shop_id = #{queryParams.shopId,jdbcType=VARCHAR}
<if test="queryParams != null">
<!--阶段日期-->
<if test="queryParams.startTime != null and queryPatams.endTime != null">
<if test="queryParams.startTime != null and queryParams.endTime != null">
and trs.create_time BETWEEN #{queryParams.startTime,jdbcType=VARCHAR} AND #{queryParams.endTime,jdbcType=VARCHAR}
</if>
<!--操作人-->

9
hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml

@ -1177,7 +1177,7 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
ts.user_id,
ts.user_name,
sum(ts.product_count) as product_count,
sum(ts.real_amount) as real_amount,
sum(ts.total_amount) as total_amount,
sum(cb.total_cost) as total_cost,
sum(ts.real_amount - cb.total_cost) as profit
FROM
@ -1187,6 +1187,13 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
on ts.id = cb.sale_id
WHERE
ts.del_flag ='0'
<!--开单仅退货的销售单,不记入查询-->
and ts.id in (select sale_id from t_sale_detail tsd
where tsd.shop_id = #{salePageQuery.shopId}
<if test='salePageQuery.startDate !=null and salePageQuery.endDate !=null'>
and tsd.create_time BETWEEN #{salePageQuery.startDate} AND #{salePageQuery.endDate}
</if>
)
<!--订单状态不为:2:已作废;分享页提交订单:6:待配货;挂单页提交订单:7:挂单-->
and ts.shop_id = #{salePageQuery.shopId}
and ts.status not in ( '2', '6', '7' )

Loading…
Cancel
Save