|
|
@ -10,23 +10,28 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
import jnpf.base.UserInfo;
|
|
|
|
import jnpf.base.UserInfo;
|
|
|
|
import jnpf.base.model.ColumnDataModel;
|
|
|
|
import jnpf.base.model.ColumnDataModel;
|
|
|
|
import jnpf.database.model.superQuery.SuperJsonModel;
|
|
|
|
import jnpf.database.model.superQuery.SuperJsonModel;
|
|
|
|
import jnpf.entity.RecycleCleanOrderEntity;
|
|
|
|
import jnpf.entity.*;
|
|
|
|
import jnpf.entity.RecycleDeliveryOrderEntity;
|
|
|
|
import jnpf.mapper.*;
|
|
|
|
import jnpf.mapper.RecycleDeliveryOrderMapper;
|
|
|
|
|
|
|
|
import jnpf.model.QueryModel;
|
|
|
|
import jnpf.model.QueryModel;
|
|
|
|
import jnpf.model.recycledeliveryorder.*;
|
|
|
|
import jnpf.model.recycledeliveryorder.*;
|
|
|
|
import jnpf.permission.entity.UserEntity;
|
|
|
|
import jnpf.permission.entity.UserEntity;
|
|
|
|
import jnpf.service.RecycleDeliveryOrderService;
|
|
|
|
import jnpf.service.*;
|
|
|
|
import jnpf.util.*;
|
|
|
|
import jnpf.util.*;
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
|
|
|
import java.math.RoundingMode;
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
@ -39,6 +44,7 @@ import java.util.stream.Collectors;
|
|
|
|
* 日期: 2024-06-18
|
|
|
|
* 日期: 2024-06-18
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Service
|
|
|
|
@Service
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDeliveryOrderMapper, RecycleDeliveryOrderEntity> implements RecycleDeliveryOrderService {
|
|
|
|
public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDeliveryOrderMapper, RecycleDeliveryOrderEntity> implements RecycleDeliveryOrderService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private GeneraterSwapUtil generaterSwapUtil;
|
|
|
|
private GeneraterSwapUtil generaterSwapUtil;
|
|
|
@ -48,6 +54,16 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDelivery
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private RecycleDeliveryOrderMapper deliveryOrderMapper;
|
|
|
|
private RecycleDeliveryOrderMapper deliveryOrderMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private ClientService clientService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private ClientAccountDetailService clientAccountDetailService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private CompanyService companyService;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private EnterpriseAccountBillService enterpriseAccountBillService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public List<RecycleDeliveryOrderEntity> getList(RecycleDeliveryOrderPagination recycleDeliveryOrderPagination) {
|
|
|
|
public List<RecycleDeliveryOrderEntity> getList(RecycleDeliveryOrderPagination recycleDeliveryOrderPagination) {
|
|
|
|
return getTypeList(recycleDeliveryOrderPagination, recycleDeliveryOrderPagination.getDataType());
|
|
|
|
return getTypeList(recycleDeliveryOrderPagination, recycleDeliveryOrderPagination.getDataType());
|
|
|
@ -527,7 +543,16 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDelivery
|
|
|
|
.set(RecycleDeliveryOrderEntity::getLastModifyUserId, form.getLastModifyUserId())
|
|
|
|
.set(RecycleDeliveryOrderEntity::getLastModifyUserId, form.getLastModifyUserId())
|
|
|
|
.set(RecycleDeliveryOrderEntity::getLastModifyTime, form.getLastModifyTime())
|
|
|
|
.set(RecycleDeliveryOrderEntity::getLastModifyTime, form.getLastModifyTime())
|
|
|
|
.eq(RecycleDeliveryOrderEntity::getId, form.getId());
|
|
|
|
.eq(RecycleDeliveryOrderEntity::getId, form.getId());
|
|
|
|
return this.update(wrapper);
|
|
|
|
boolean update = this.update(wrapper);
|
|
|
|
|
|
|
|
if (update) {
|
|
|
|
|
|
|
|
RecycleDeliveryOrderEntity entity = this.getById(form.getId());
|
|
|
|
|
|
|
|
BigDecimal price = entity.getAdjustPrice();
|
|
|
|
|
|
|
|
String orderNo = entity.getOrderNo();
|
|
|
|
|
|
|
|
String companyId = entity.getCompanyId();
|
|
|
|
|
|
|
|
String clientId = entity.getDeliverId();
|
|
|
|
|
|
|
|
addBalance(clientId, orderNo, price, companyId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return update;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -539,4 +564,78 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDelivery
|
|
|
|
int update = deliveryOrderMapper.auditBatch(batch);
|
|
|
|
int update = deliveryOrderMapper.auditBatch(batch);
|
|
|
|
return update;
|
|
|
|
return update;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 投递单结算
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param clientId 散户id
|
|
|
|
|
|
|
|
* @param orderNo 订单
|
|
|
|
|
|
|
|
* @param amount 金额
|
|
|
|
|
|
|
|
* @param companyId 商户id
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private void addBalance(String clientId, String orderNo, BigDecimal amount, String companyId) {
|
|
|
|
|
|
|
|
if (amount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
|
|
|
|
log.error("结算金额为0,订单号:{},结算金额:{},结算商户:{},结算散户:{}", orderNo, amount, companyId, clientId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
|
|
|
CompanyEntity company = companyService.getById(companyId);
|
|
|
|
|
|
|
|
ClientEntity client = clientService.getById(clientId);
|
|
|
|
|
|
|
|
BigDecimal fund = company.getFund();
|
|
|
|
|
|
|
|
if (fund.compareTo(amount) < 0) {//商户金额不足
|
|
|
|
|
|
|
|
throw new RuntimeException("商户金额不足");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
amount = amount.setScale(2, RoundingMode.HALF_UP);
|
|
|
|
|
|
|
|
fund = fund.subtract(amount);
|
|
|
|
|
|
|
|
company.setFund(fund);
|
|
|
|
|
|
|
|
// 更新公司账户
|
|
|
|
|
|
|
|
companyService.updateById(company);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal balance = client.getBanlance();
|
|
|
|
|
|
|
|
balance = balance.add(amount);
|
|
|
|
|
|
|
|
client.setBanlance(balance);
|
|
|
|
|
|
|
|
// 更新散户账户
|
|
|
|
|
|
|
|
clientService.updateById(client);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 添加商户流水
|
|
|
|
|
|
|
|
EnterpriseAccountBillEntity billEntity = new EnterpriseAccountBillEntity();
|
|
|
|
|
|
|
|
billEntity.setCompanyId(companyId);
|
|
|
|
|
|
|
|
billEntity.setBillNumber(getIdNumber("BL"));
|
|
|
|
|
|
|
|
billEntity.setAccountBalance(fund);
|
|
|
|
|
|
|
|
billEntity.setPayoutAmount(amount);
|
|
|
|
|
|
|
|
billEntity.setOrderNumber(orderNo);
|
|
|
|
|
|
|
|
billEntity.setRemark("投递单结算,支付给客户:" + amount + "元");
|
|
|
|
|
|
|
|
billEntity.setCreatorTime(now);
|
|
|
|
|
|
|
|
enterpriseAccountBillService.save(billEntity);
|
|
|
|
|
|
|
|
// 添加散户流水
|
|
|
|
|
|
|
|
ClientAccountDetailEntity clientAccountDetail = new ClientAccountDetailEntity();
|
|
|
|
|
|
|
|
clientAccountDetail.setClientId(client.getId());
|
|
|
|
|
|
|
|
clientAccountDetail.setAmount(amount);
|
|
|
|
|
|
|
|
clientAccountDetail.setChangeType("1");
|
|
|
|
|
|
|
|
clientAccountDetail.setBanlance(balance);
|
|
|
|
|
|
|
|
clientAccountDetail.setRemark("投递单结算,收入:" + amount + "元");
|
|
|
|
|
|
|
|
clientAccountDetail.setCreatorTime(now);
|
|
|
|
|
|
|
|
clientAccountDetailService.save(clientAccountDetail);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public List<RecycleDeliveryOrderEntity> getByIds(List<String> ids) {
|
|
|
|
|
|
|
|
QueryWrapper<RecycleDeliveryOrderEntity> query = new QueryWrapper<>();
|
|
|
|
|
|
|
|
query.lambda().in(RecycleDeliveryOrderEntity::getId, ids);
|
|
|
|
|
|
|
|
return list(query);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 获取业务唯一编号
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param prefix 业务前缀
|
|
|
|
|
|
|
|
* @return String
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private String getIdNumber(String prefix) {
|
|
|
|
|
|
|
|
// 获取当前时间
|
|
|
|
|
|
|
|
String currentTimeStr = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
|
|
|
|
|
|
|
// 生成5位随机数
|
|
|
|
|
|
|
|
String randomNumberStr = String.format("%05d", cn.hutool.core.util.RandomUtil.randomInt(100000));
|
|
|
|
|
|
|
|
// 拼接订单编号
|
|
|
|
|
|
|
|
return new StringBuilder().append(prefix).append(currentTimeStr).append(randomNumberStr).toString();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|