localizer
lzq 2025-10-05 00:16:02 +08:00
parent bdaaa40e32
commit 67bc5e6d3d
3 changed files with 88 additions and 24 deletions

View File

@ -26,8 +26,11 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
/** /**
* *
@ -177,6 +180,7 @@ public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoE
} */ } */
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> report1(JSONObject data) { public Map<String, Object> report1(JSONObject data) {
MapBuilder<String, Object> resBuilder = MapUtil.<String, Object>builder() MapBuilder<String, Object> resBuilder = MapUtil.<String, Object>builder()
.put("code", 0) .put("code", 0)
@ -202,15 +206,34 @@ public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoE
.put("data", dataBuilder.put("type", 0).build()) .put("data", dataBuilder.put("type", 0).build())
.build(); .build();
} }
Long deviceStationId = deviceInfoEntity.getStationId();
Long orderStationId = orderPagingResult.getStationId();
if (!Objects.equals(deviceStationId, orderStationId)) {
// 播语音
playVoice(sn, cid, "{}站点错误,请前往预约的站点", licensePlate);
return resBuilder
.put("data", dataBuilder.put("type", 0).build())
.build();
}
DeviceCode deviceCode = deviceInfoEntity.getDeviceCode(); DeviceCode deviceCode = deviceInfoEntity.getDeviceCode();
OrderStatus orderStatus = orderPagingResult.getOrderStatus(); OrderStatus orderStatus = orderPagingResult.getOrderStatus();
CheckStatus checkStatus = orderPagingResult.getCheckStatus(); CheckStatus checkStatus = orderPagingResult.getCheckStatus();
if (deviceCode == DeviceCode.JinQianZhi && orderStatus == OrderStatus.QingYunZhong) { if (deviceCode == DeviceCode.JinQianZhi && orderStatus == OrderStatus.QingYunZhong) {
PaymentStatus paymentStatus = orderPagingResult.getPaymentStatus(); PaymentStatus paymentStatus = orderPagingResult.getPaymentStatus();
/* if (paymentStatus == null) {
OrderInfoEntity orderInfoEntity = orderInfoService.getById(orderPagingResult.getId());
orderInfoService.settleForTransCompany(orderInfoEntity, 0);
orderPagingResult = orderInfoService.detail(orderPagingResult.getId());
paymentStatus = orderPagingResult.getPaymentStatus();
} */
if (paymentStatus == PaymentStatus.WeiZhiFu) { if (paymentStatus == PaymentStatus.WeiZhiFu) {
// 播语音 // 播语音
playVoice(sn, cid, "{}请先支付", licensePlate); playVoice(sn, cid, "{}请先支付", licensePlate);
return resBuilder
.put("data", dataBuilder.put("type", 0).build())
.build();
} }
// 开门 // 开门
@ -283,6 +306,7 @@ public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoE
.build(); .build();
} }
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> report2(JSONObject data) { public Map<String, Object> report2(JSONObject data) {
MapBuilder<String, Object> resBuilder = MapUtil.<String, Object>builder() MapBuilder<String, Object> resBuilder = MapUtil.<String, Object>builder()
.put("code", 0) .put("code", 0)
@ -301,8 +325,25 @@ public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoE
.put("data", dataBuilder.build()) .put("data", dataBuilder.build())
.build(); .build();
} }
String cid = deviceInfoEntity.getCid(); String cid = deviceInfoEntity.getCid();
OrderPagingResult orderPagingResult = orderInfoService.detail(orderId);
if (orderPagingResult == null) {
// 播语音
playVoice(sn, cid, "{}无订单", licensePlate);
return resBuilder
.put("data", dataBuilder.build())
.build();
}
Long deviceStationId = deviceInfoEntity.getStationId();
Long orderStationId = orderPagingResult.getStationId();
if (!Objects.equals(deviceStationId, orderStationId)) {
// 播语音
playVoice(sn, cid, "{}站点错误,请前往预约的站点", licensePlate);
return resBuilder
.put("data", dataBuilder.build())
.build();
}
DeviceCode deviceCode = deviceInfoEntity.getDeviceCode(); DeviceCode deviceCode = deviceInfoEntity.getDeviceCode();
OrderInfoEntity orderInfo = orderInfoService.getById(orderId); OrderInfoEntity orderInfo = orderInfoService.getById(orderId);
if (orderInfo == null) { if (orderInfo == null) {
@ -324,7 +365,9 @@ public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoE
} }
if (deviceCode == DeviceCode.Jin) { if (deviceCode == DeviceCode.Jin) {
// 播语音 // 播语音
playVoice(sn, cid, "{}称重完成,磅重{}吨", licensePlate, weight / 1000); BigDecimal weight_ = new BigDecimal(weight);
BigDecimal v = weight_.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP);
playVoice(sn, cid, "{}称重完成,磅重{}吨", licensePlate, v.toPlainString());
// 开门 // 开门
open(sn, cid); open(sn, cid);
orderInfoService.truckComing(new TruckComingOrderParam() orderInfoService.truckComing(new TruckComingOrderParam()
@ -336,6 +379,8 @@ public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoE
} }
if (deviceCode == DeviceCode.Chu) { if (deviceCode == DeviceCode.Chu) {
BigDecimal weight_ = new BigDecimal(weight);
BigDecimal v = weight_.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP);
try { try {
orderInfoService.truckLeaving(new TruckLeavingOrderParam() orderInfoService.truckLeaving(new TruckLeavingOrderParam()
.setOrderId(orderId) .setOrderId(orderId)
@ -344,11 +389,11 @@ public class DeviceInfoService extends ServiceImpl<DeviceInfoMapper, DeviceInfoE
.setBodyPhoto(bodyPhoto), .setBodyPhoto(bodyPhoto),
0); 0);
// 播语音 // 播语音
playVoice(sn, cid, "{}称重完成,磅重{}吨", licensePlate, weight / 1000); playVoice(sn, cid, "{}称重完成,磅重{}吨", licensePlate, v.toPlainString());
// 开门 // 开门
open(sn, cid); open(sn, cid);
} catch (Exception e) { } catch (Exception e) {
playVoice(sn, cid, "{}称重异常,磅重{}吨", licensePlate, weight / 1000); playVoice(sn, cid, "{}称重异常,磅重{}吨", licensePlate, v.toPlainString());
} }
} }

View File

@ -1,5 +1,6 @@
package com.njzscloud.supervisory.order.controller; package com.njzscloud.supervisory.order.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.njzscloud.common.core.ex.ExceptionMsg; import com.njzscloud.common.core.ex.ExceptionMsg;
import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.core.ex.Exceptions;
@ -13,7 +14,6 @@ import com.njzscloud.supervisory.money.pojo.entity.MoneyAccountEntity;
import com.njzscloud.supervisory.money.pojo.entity.MoneyChangeDetailEntity; import com.njzscloud.supervisory.money.pojo.entity.MoneyChangeDetailEntity;
import com.njzscloud.supervisory.money.service.MoneyAccountService; import com.njzscloud.supervisory.money.service.MoneyAccountService;
import com.njzscloud.supervisory.money.service.MoneyChangeDetailService; import com.njzscloud.supervisory.money.service.MoneyChangeDetailService;
import com.njzscloud.supervisory.order.contant.OrderStatus;
import com.njzscloud.supervisory.order.contant.PaymentStatus; import com.njzscloud.supervisory.order.contant.PaymentStatus;
import com.njzscloud.supervisory.order.contant.PaymentWay; import com.njzscloud.supervisory.order.contant.PaymentWay;
import com.njzscloud.supervisory.order.contant.SettlementWay; import com.njzscloud.supervisory.order.contant.SettlementWay;
@ -23,13 +23,11 @@ import com.njzscloud.supervisory.order.pojo.entity.OrderInfoEntity;
import com.njzscloud.supervisory.order.pojo.param.PaymentItemParam; import com.njzscloud.supervisory.order.pojo.param.PaymentItemParam;
import com.njzscloud.supervisory.order.pojo.param.PaymentParam; import com.njzscloud.supervisory.order.pojo.param.PaymentParam;
import com.njzscloud.supervisory.order.pojo.result.PaymentContextResult; import com.njzscloud.supervisory.order.pojo.result.PaymentContextResult;
import com.njzscloud.supervisory.order.pojo.dto.RefundRequestDto;
import com.njzscloud.supervisory.order.service.OrderExpenseItemsService; import com.njzscloud.supervisory.order.service.OrderExpenseItemsService;
import com.njzscloud.supervisory.order.service.OrderInfoService; import com.njzscloud.supervisory.order.service.OrderInfoService;
import com.njzscloud.supervisory.order.service.WechatPayService; import com.njzscloud.supervisory.order.service.WechatPayService;
import com.njzscloud.supervisory.sys.user.pojo.entity.UserAccountEntity; import com.njzscloud.supervisory.sys.user.pojo.entity.UserAccountEntity;
import com.njzscloud.supervisory.sys.user.service.UserAccountService; import com.njzscloud.supervisory.sys.user.service.UserAccountService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@ -171,7 +169,7 @@ public class PaymentController {
orderInfoService.lambdaUpdate() orderInfoService.lambdaUpdate()
.eq(OrderInfoEntity::getId, paymentParam.getOrderId()) .eq(OrderInfoEntity::getId, paymentParam.getOrderId())
.set(OrderInfoEntity::getPaymentStatus, PaymentStatus.YiZhiFu) .set(OrderInfoEntity::getPaymentStatus, PaymentStatus.YiZhiFu)
.set(OrderInfoEntity::getOrderStatus, OrderStatus.YiWanCheng.getVal()) // .set(OrderInfoEntity::getOrderStatus, OrderStatus.YiWanCheng.getVal())
.set(OrderInfoEntity::getPaymentCategory, paymentParam.getPaymentCategory()) .set(OrderInfoEntity::getPaymentCategory, paymentParam.getPaymentCategory())
.set(OrderInfoEntity::getPayTime, LocalDateTime.now()) .set(OrderInfoEntity::getPayTime, LocalDateTime.now())
.update(); .update();
@ -247,7 +245,7 @@ public class PaymentController {
orderInfoService.lambdaUpdate() orderInfoService.lambdaUpdate()
.eq(OrderInfoEntity::getId, orderId) .eq(OrderInfoEntity::getId, orderId)
.set(OrderInfoEntity::getPaymentStatus, PaymentStatus.YiZhiFu) .set(OrderInfoEntity::getPaymentStatus, PaymentStatus.YiZhiFu)
.set(OrderInfoEntity::getOrderStatus, OrderStatus.YiWanCheng.getVal()) // .set(OrderInfoEntity::getOrderStatus, OrderStatus.YiWanCheng.getVal())
.set(OrderInfoEntity::getSn, callbackDto.getResource().getCiphertext()) // 需要解密获取 .set(OrderInfoEntity::getSn, callbackDto.getResource().getCiphertext()) // 需要解密获取
.set(OrderInfoEntity::getPayTime, LocalDateTime.now()) .set(OrderInfoEntity::getPayTime, LocalDateTime.now())
.update(); .update();

View File

@ -105,6 +105,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
Long transCompanyId = addOrderInfoParam.getTransCompanyId(); Long transCompanyId = addOrderInfoParam.getTransCompanyId();
OrderStatus orderStatus = transCompanyId == null ? OrderStatus.YiYuYue : OrderStatus.DaiPaiDan; OrderStatus orderStatus = transCompanyId == null ? OrderStatus.YiYuYue : OrderStatus.DaiPaiDan;
Long goodsId = addOrderInfoParam.getGoodsId(); Long goodsId = addOrderInfoParam.getGoodsId();
Long orderGoodsId = orderGoodsService.add(goodsId); Long orderGoodsId = orderGoodsService.add(goodsId);
@ -117,6 +118,10 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
.setGoodsId(orderGoodsId); .setGoodsId(orderGoodsId);
this.save(orderInfoEntity); this.save(orderInfoEntity);
if (transCompanyId != null) {
settleForTransCompany(this.getById(orderInfoEntity.getId()), 0);
}
Long orderId = orderInfoEntity.getId(); Long orderId = orderInfoEntity.getId();
OrderCategory orderCategory = addOrderInfoParam.getOrderCategory(); OrderCategory orderCategory = addOrderInfoParam.getOrderCategory();
if (orderCategory == OrderCategory.DuanBoChu) { if (orderCategory == OrderCategory.DuanBoChu) {
@ -576,11 +581,15 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
Assert.isNull(orderInfo.getTransCompanyId(), () -> Exceptions.clierr("当前订单已分配清运公司,无需重复分配")); Assert.isNull(orderInfo.getTransCompanyId(), () -> Exceptions.clierr("当前订单已分配清运公司,无需重复分配"));
Assert.isTrue(orderInfo.getOrderStatus() == OrderStatus.YiYuYue, () -> Exceptions.clierr("当前订单状态,无法分配清运公司")); Assert.isTrue(orderInfo.getOrderStatus() == OrderStatus.YiYuYue, () -> Exceptions.clierr("当前订单状态,无法分配清运公司"));
Long orderInfoId = orderInfo.getId();
this.updateById(new OrderInfoEntity() this.updateById(new OrderInfoEntity()
.setId(orderInfo.getId()) .setId(orderInfoId)
.setTransCompanyId(transCompanyId) .setTransCompanyId(transCompanyId)
.setOrderStatus(OrderStatus.DaiPaiDan) .setOrderStatus(OrderStatus.DaiPaiDan)
); );
OrderInfoEntity orderInfoEntity = this.getById(orderInfoId);
settleForTransCompany(orderInfoEntity, 0);
return true; return true;
} }
@ -712,7 +721,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
Assert.notNull(orderInfo, () -> Exceptions.clierr("订单不存在")); Assert.notNull(orderInfo, () -> Exceptions.clierr("订单不存在"));
OrderStatus orderStatus = orderInfo.getOrderStatus(); OrderStatus orderStatus = orderInfo.getOrderStatus();
Assert.isTrue(orderStatus == OrderStatus.YiYuYue Assert.isTrue(orderStatus == OrderStatus.YiYuYue
|| orderStatus == OrderStatus.DaiPaiDan || orderStatus == OrderStatus.DaiPaiDan
|| orderStatus == OrderStatus.DaiJieDan, () -> Exceptions.clierr("当前订单状态,无法取消")); || orderStatus == OrderStatus.DaiJieDan, () -> Exceptions.clierr("当前订单状态,无法取消"));
this.updateById(new OrderInfoEntity() this.updateById(new OrderInfoEntity()
.setId(orderInfo.getId()) .setId(orderInfo.getId())
@ -866,7 +875,8 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
* 2. scope all / customer_type=QiYe|GeTi / customer trans_company_id * 2. scope all / customer_type=QiYe|GeTi / customer trans_company_id
* 3. total_money=quantity*unit_pricesettle_money=total_money+discount_money+revise_money * 3. total_money=quantity*unit_pricesettle_money=total_money+discount_money+revise_money
*/ */
private void settleForTransCompany(OrderInfoEntity orderInfoEntity, Integer settleWeight) { @Transactional(rollbackFor = Exception.class)
public void settleForTransCompany(OrderInfoEntity orderInfoEntity, Integer settleWeight) {
Long orderId = orderInfoEntity.getId(); Long orderId = orderInfoEntity.getId();
OrderGoodsEntity orderGoods = orderGoodsService.getById(orderInfoEntity.getGoodsId()); OrderGoodsEntity orderGoods = orderGoodsService.getById(orderInfoEntity.getGoodsId());
Assert.notNull(orderGoods, () -> Exceptions.clierr("订单产品不存在")); Assert.notNull(orderGoods, () -> Exceptions.clierr("订单产品不存在"));
@ -875,17 +885,22 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
int quantityByStrategy = (orderGoods.getMoneyStrategy() == MoneyStrategy.Che) ? 1 : settleWeight; int quantityByStrategy = (orderGoods.getMoneyStrategy() == MoneyStrategy.Che) ? 1 : settleWeight;
// 第一步:复制产品信息为付费项记录 // 第一步:复制产品信息为付费项记录
OrderExpenseItemsEntity productItem = new OrderExpenseItemsEntity() BigDecimal unitPrice = orderGoods.getUnitPrice();
.setExpenseItemCategory(ExpenseItemCategory.ChanPin.getVal()) OrderExpenseItemsEntity productItem = null;
.setOrderId(orderId) if (unitPrice != null && unitPrice.compareTo(BigDecimal.ZERO) > 0) {
.setOriginExpenseItemId(orderGoods.getId()) productItem = new OrderExpenseItemsEntity()
.setExpenseItemName(orderGoods.getGoodsName()) .setExpenseItemCategory(ExpenseItemCategory.ChanPin.getVal())
.setUnitPrice(orderGoods.getUnitPrice()) .setOrderId(orderId)
.setUnit(orderGoods.getUnit()) .setOriginExpenseItemId(orderGoods.getId())
.setMoneyStrategy(orderGoods.getMoneyStrategy() == null ? null : orderGoods.getMoneyStrategy().getVal()) .setExpenseItemName(orderGoods.getGoodsName())
.setMoneyConfigId(orderGoods.getMoneyConfigId()) .setUnitPrice(unitPrice)
.setTaxRate(orderGoods.getTaxRate()) .setUnit(orderGoods.getUnit())
.setQuantity(quantityByStrategy); .setMoneyStrategy(orderGoods.getMoneyStrategy() == null ? null : orderGoods.getMoneyStrategy().getVal())
.setMoneyConfigId(orderGoods.getMoneyConfigId())
.setTaxRate(orderGoods.getTaxRate())
.setQuantity(quantityByStrategy);
}
// 第二步:读取启用的付费项配置,并按 scope 过滤 // 第二步:读取启用的付费项配置,并按 scope 过滤
List<ExpenseItemsConfigEntity> configs = expenseItemsConfigService.list(Wrappers.<ExpenseItemsConfigEntity>lambdaQuery() List<ExpenseItemsConfigEntity> configs = expenseItemsConfigService.list(Wrappers.<ExpenseItemsConfigEntity>lambdaQuery()
@ -925,7 +940,10 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
.collect(Collectors.toList()); .collect(Collectors.toList());
// 第三步:合并集合并计算金额,然后批量落库 // 第三步:合并集合并计算金额,然后批量落库
extraItems.add(0, productItem); if (productItem != null) extraItems.add(0, productItem);
if (extraItems.isEmpty()) {
return;
}
BigDecimal totalDiscountMoney = BigDecimal.ZERO; BigDecimal totalDiscountMoney = BigDecimal.ZERO;
BigDecimal totalReviseMoney = BigDecimal.ZERO; BigDecimal totalReviseMoney = BigDecimal.ZERO;
BigDecimal totalSettleMoney = BigDecimal.ZERO; BigDecimal totalSettleMoney = BigDecimal.ZERO;
@ -951,8 +969,10 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
totalTotalMoney = totalTotalMoney.add(totalMoney); totalTotalMoney = totalTotalMoney.add(totalMoney);
} }
orderExpenseItemsService.saveBatch(extraItems); orderExpenseItemsService.saveBatch(extraItems);
// 更新订单表的优惠金额; 手动修正金额;结算金额;总金额; // 更新订单表的优惠金额; 手动修正金额;结算金额;总金额;
this.lambdaUpdate() this.lambdaUpdate()
.eq(OrderInfoEntity::getId, orderId) .eq(OrderInfoEntity::getId, orderId)
@ -960,6 +980,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
.set(OrderInfoEntity::getReviseMoney, totalReviseMoney) .set(OrderInfoEntity::getReviseMoney, totalReviseMoney)
.set(OrderInfoEntity::getSettleMoney, totalSettleMoney) .set(OrderInfoEntity::getSettleMoney, totalSettleMoney)
.set(OrderInfoEntity::getTotalMoney, totalTotalMoney) .set(OrderInfoEntity::getTotalMoney, totalTotalMoney)
.set(OrderInfoEntity::getPaymentStatus, PaymentStatus.WeiZhiFu)
.update(); .update();
} }