重新生成账单
parent
da1d060a08
commit
e3967d44c3
|
|
@ -4,7 +4,6 @@ import com.njzscloud.common.core.utils.R;
|
|||
import com.njzscloud.common.mp.support.PageParam;
|
||||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.supervisory.money.pojo.entity.MoneyBillEntity;
|
||||
import com.njzscloud.supervisory.money.pojo.param.RebuildBillParam;
|
||||
import com.njzscloud.supervisory.money.service.MoneyBillService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -79,9 +78,9 @@ public class MoneyBillController {
|
|||
/**
|
||||
* 重新生成账单
|
||||
*/
|
||||
@PostMapping("/rebuildBill")
|
||||
public R<?> rebuildBill(@RequestBody RebuildBillParam param) {
|
||||
moneyBillService.rebuildBill(param);
|
||||
@GetMapping("/rebuildBill")
|
||||
public R<?> rebuildBill(@RequestParam Long id) {
|
||||
moneyBillService.rebuildBill(id);
|
||||
return R.success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ public class RebuildBillParam {
|
|||
private Long companyId;
|
||||
|
||||
/**
|
||||
* 源付费项id
|
||||
* 产品Id
|
||||
*/
|
||||
private Long originExpenseItemId;
|
||||
private Long goodsId;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,10 @@ import com.njzscloud.common.mp.support.PageParam;
|
|||
import com.njzscloud.common.mp.support.PageResult;
|
||||
import com.njzscloud.common.security.util.SecurityUtil;
|
||||
import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
||||
import com.njzscloud.supervisory.goods.contant.MoneyStrategy;
|
||||
import com.njzscloud.supervisory.money.mapper.MoneyBillMapper;
|
||||
import com.njzscloud.supervisory.money.pojo.entity.MoneyBillEntity;
|
||||
import com.njzscloud.supervisory.money.pojo.param.RebuildBillParam;
|
||||
import com.njzscloud.supervisory.money.pojo.result.MoneyBillResult;
|
||||
import com.njzscloud.supervisory.order.utils.FileUtil;
|
||||
import com.njzscloud.supervisory.sys.auth.mapper.AuthMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
@ -21,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
|
|
@ -93,8 +95,55 @@ public class MoneyBillService extends ServiceImpl<MoneyBillMapper, MoneyBillEnti
|
|||
/**
|
||||
* 重新生成账单
|
||||
*/
|
||||
public void rebuildBill(RebuildBillParam param) {
|
||||
return;
|
||||
public void rebuildBill(Long id) {
|
||||
MoneyBillEntity entity = this.getById(id);
|
||||
// 创建查询条件
|
||||
MoneyBillResult queryCondition = new MoneyBillResult();
|
||||
// 转换为当天0点0分0秒
|
||||
LocalDateTime startTime = entity.getStartTime().atStartOfDay();
|
||||
// 转换为当天23点59分59秒
|
||||
LocalDateTime endTime = entity.getEndTime().atTime(23, 59, 59);
|
||||
queryCondition.setStartTime(startTime);
|
||||
queryCondition.setEndTime(endTime);
|
||||
queryCondition.setOriginExpenseItemId(entity.getGoodsId());
|
||||
queryCondition.setTransCompanyId(entity.getStationId());
|
||||
// 执行查询
|
||||
List<MoneyBillResult> billResults = baseMapper.selectMoneyBillList(queryCondition);
|
||||
if (null != billResults && billResults.size() > 0) {
|
||||
// 1. 订单数量:通过orderId分组,条数就是订单数
|
||||
long orderCount = billResults.stream().
|
||||
map(MoneyBillResult::getOrderId)
|
||||
.distinct()
|
||||
.count();
|
||||
entity.setOrderCount((int) orderCount);
|
||||
|
||||
// 2. 总质量:quantity求和,条件是计费策略不等于"车"
|
||||
int totalWeight = billResults.stream()
|
||||
.filter(result -> !MoneyStrategy.Che.getVal().equals(result.getMoneyStrategy()))
|
||||
.mapToInt(MoneyBillResult::getQuantity)
|
||||
.sum();
|
||||
entity.setTotalWeight(totalWeight);
|
||||
|
||||
// 3. 车数:quantity求和,条件是计费策略等于"车"
|
||||
int totalCars = billResults.stream()
|
||||
.filter(result -> MoneyStrategy.Che.getVal().equals(result.getMoneyStrategy()))
|
||||
.mapToInt(MoneyBillResult::getQuantity)
|
||||
.sum();
|
||||
entity.setCarCount(totalCars);
|
||||
|
||||
// 4. 优惠金额:discountMoney求和,可能是负数
|
||||
BigDecimal totalDiscountMoney = billResults.stream()
|
||||
.map(MoneyBillResult::getDiscountMoney)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
entity.setDiscountMoney(totalDiscountMoney);
|
||||
|
||||
// 5. 账单金额:settleMoney求和,可能是负数
|
||||
BigDecimal totalSettleMoney = billResults.stream()
|
||||
.map(MoneyBillResult::getSettleMoney)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
entity.setTotalMoney(totalSettleMoney);
|
||||
}
|
||||
this.updateById(entity);
|
||||
}
|
||||
|
||||
public void export(HttpServletResponse response, MoneyBillEntity entity) throws IOException {
|
||||
|
|
|
|||
|
|
@ -89,6 +89,12 @@
|
|||
<if test="entity.endTime != null">
|
||||
AND oi.create_time <= #{entity.endTime}
|
||||
</if>
|
||||
<if test="entity.transCompanyId != null">
|
||||
AND oi.trans_company_id = #{entity.transCompanyId}
|
||||
</if>
|
||||
<if test="entity.originExpenseItemId != null">
|
||||
AND oei.origin_expense_item_id = #{entity.originExpenseItemId}
|
||||
</if>
|
||||
order by oei.create_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue