重新生成账单
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.PageParam;
|
||||||
import com.njzscloud.common.mp.support.PageResult;
|
import com.njzscloud.common.mp.support.PageResult;
|
||||||
import com.njzscloud.supervisory.money.pojo.entity.MoneyBillEntity;
|
import com.njzscloud.supervisory.money.pojo.entity.MoneyBillEntity;
|
||||||
import com.njzscloud.supervisory.money.pojo.param.RebuildBillParam;
|
|
||||||
import com.njzscloud.supervisory.money.service.MoneyBillService;
|
import com.njzscloud.supervisory.money.service.MoneyBillService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -79,9 +78,9 @@ public class MoneyBillController {
|
||||||
/**
|
/**
|
||||||
* 重新生成账单
|
* 重新生成账单
|
||||||
*/
|
*/
|
||||||
@PostMapping("/rebuildBill")
|
@GetMapping("/rebuildBill")
|
||||||
public R<?> rebuildBill(@RequestBody RebuildBillParam param) {
|
public R<?> rebuildBill(@RequestParam Long id) {
|
||||||
moneyBillService.rebuildBill(param);
|
moneyBillService.rebuildBill(id);
|
||||||
return R.success();
|
return R.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ public class RebuildBillParam {
|
||||||
private Long companyId;
|
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.mp.support.PageResult;
|
||||||
import com.njzscloud.common.security.util.SecurityUtil;
|
import com.njzscloud.common.security.util.SecurityUtil;
|
||||||
import com.njzscloud.supervisory.biz.pojo.result.SearchCompanyResult;
|
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.mapper.MoneyBillMapper;
|
||||||
import com.njzscloud.supervisory.money.pojo.entity.MoneyBillEntity;
|
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.order.utils.FileUtil;
|
||||||
import com.njzscloud.supervisory.sys.auth.mapper.AuthMapper;
|
import com.njzscloud.supervisory.sys.auth.mapper.AuthMapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
@ -21,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
@ -93,8 +95,55 @@ public class MoneyBillService extends ServiceImpl<MoneyBillMapper, MoneyBillEnti
|
||||||
/**
|
/**
|
||||||
* 重新生成账单
|
* 重新生成账单
|
||||||
*/
|
*/
|
||||||
public void rebuildBill(RebuildBillParam param) {
|
public void rebuildBill(Long id) {
|
||||||
return;
|
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 {
|
public void export(HttpServletResponse response, MoneyBillEntity entity) throws IOException {
|
||||||
|
|
|
||||||
|
|
@ -89,6 +89,12 @@
|
||||||
<if test="entity.endTime != null">
|
<if test="entity.endTime != null">
|
||||||
AND oi.create_time <= #{entity.endTime}
|
AND oi.create_time <= #{entity.endTime}
|
||||||
</if>
|
</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
|
order by oei.create_time desc
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue