审核并结算

master
guochaojie 4 months ago
parent fef82dd348
commit 6da53f80f5

@ -40,4 +40,5 @@ public interface RecycleDeliveryOrderService extends IService<RecycleDeliveryOrd
//批量审核 //批量审核
int batchAudit(DeliveryAuditBatch batch); int batchAudit(DeliveryAuditBatch batch);
List<RecycleDeliveryOrderEntity> getByIds(List<String> ids);
} }

@ -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();
}
} }

@ -194,6 +194,10 @@ public class RecycleDeliveryOrderController {
@Operation(summary = "审核") @Operation(summary = "审核")
@PostMapping("/audit") @PostMapping("/audit")
public ActionResult audit(@RequestBody DeliveryAuditForm form) { public ActionResult audit(@RequestBody DeliveryAuditForm form) {
RecycleDeliveryOrderEntity info = recycleDeliveryOrderService.getInfo(form.getId());
if (0 != info.getAdjustStatus()) {
return ActionResult.fail("该单据已审核,请刷新页面!");
}
boolean audit = recycleDeliveryOrderService.audit(form); boolean audit = recycleDeliveryOrderService.audit(form);
if (audit) return ActionResult.success("审核成功"); if (audit) return ActionResult.success("审核成功");
else return ActionResult.fail("审核失败"); else return ActionResult.fail("审核失败");
@ -203,6 +207,11 @@ public class RecycleDeliveryOrderController {
@Operation(summary = "审核") @Operation(summary = "审核")
@PostMapping("/auditBatch") @PostMapping("/auditBatch")
public ActionResult auditBatch(@RequestBody DeliveryAuditBatch batch) { public ActionResult auditBatch(@RequestBody DeliveryAuditBatch batch) {
List<String> ids = batch.getIds();
List<RecycleDeliveryOrderEntity> list = recycleDeliveryOrderService.getByIds(ids);
if (list == null || list.size() == 0 || list.size() != ids.size()) {
return ActionResult.fail("未找到数据或有单据已审核,请刷新页面!");
}
int update = recycleDeliveryOrderService.batchAudit(batch); int update = recycleDeliveryOrderService.batchAudit(batch);
if (update <= 0) return ActionResult.fail("审核失败"); if (update <= 0) return ActionResult.fail("审核失败");
return ActionResult.success("审核成功"); return ActionResult.success("审核成功");

@ -15,7 +15,7 @@ import java.math.BigDecimal;
* @ V3.5 * @ V3.5
* @ https://www.jnpfsoft.com * @ https://www.jnpfsoft.com
* @ JNPF * @ JNPF
* @ 2024-06-18 * @ 2024-06-27
*/ */
@Data @Data
@TableName("nx_recycle_delivery_order") @TableName("nx_recycle_delivery_order")

@ -10,7 +10,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
* @ V3.5 * @ V3.5
* @ https://www.jnpfsoft.com * @ https://www.jnpfsoft.com
* @ JNPF * @ JNPF
* @ 2024-06-18 * @ 2024-06-27
*/ */
@Data @Data
public class RecycleDeliveryOrderForm { public class RecycleDeliveryOrderForm {

@ -11,7 +11,7 @@ import java.util.List;
* @ V3.5 * @ V3.5
* @ https://www.jnpfsoft.com * @ https://www.jnpfsoft.com
* @ JNPF * @ JNPF
* @ 2024-06-18 * @ 2024-06-27
*/ */
@Data @Data
public class RecycleDeliveryOrderPagination extends Pagination { public class RecycleDeliveryOrderPagination extends Pagination {

Loading…
Cancel
Save