vip日志表添加price字段,保存初始付款金额

This commit is contained in:
wuchunlei
2025-10-12 13:27:56 +08:00
parent dba68189ca
commit ef935c98d1
5 changed files with 60 additions and 44 deletions

View File

@@ -29,6 +29,7 @@ public class UserVipLog implements Serializable {
private Integer adminId; private Integer adminId;
private Date startTime; private Date startTime;
private Date endTime; private Date endTime;
private BigDecimal price;
private BigDecimal fee; private BigDecimal fee;
private BigDecimal dayAmount; private BigDecimal dayAmount;
private String payType; private String payType;

View File

@@ -34,6 +34,7 @@ public class UserVipLogServiceImpl extends ServiceImpl<UserVipLogDao, UserVipLog
userVipLog.setOrderSn(orderSn); userVipLog.setOrderSn(orderSn);
userVipLog.setStartTime(startTime); userVipLog.setStartTime(startTime);
userVipLog.setEndTime(endTime); userVipLog.setEndTime(endTime);
userVipLog.setPrice(fee);
userVipLog.setFee(fee); userVipLog.setFee(fee);
userVipLog.setJf(jf); userVipLog.setJf(jf);
userVipLog.setPayType(payType); userVipLog.setPayType(payType);
@@ -51,6 +52,7 @@ public class UserVipLogServiceImpl extends ServiceImpl<UserVipLogDao, UserVipLog
userVipLog.setAdminId(Integer.parseInt(params.get("adminId").toString())); userVipLog.setAdminId(Integer.parseInt(params.get("adminId").toString()));
userVipLog.setStartTime(userVip.getStartTime()); userVipLog.setStartTime(userVip.getStartTime());
userVipLog.setEndTime(userVip.getEndTime()); userVipLog.setEndTime(userVip.getEndTime());
userVipLog.setPrice(new BigDecimal(params.get("fee").toString()));
userVipLog.setFee(new BigDecimal(params.get("fee").toString())); userVipLog.setFee(new BigDecimal(params.get("fee").toString()));
userVipLog.setJf(new BigDecimal(StringUtils.isEmpty(params.get("jf").toString()) ? "0" : params.get("jf").toString())); userVipLog.setJf(new BigDecimal(StringUtils.isEmpty(params.get("jf").toString()) ? "0" : params.get("jf").toString()));
userVipLog.setPayType(params.get("payType").toString()); userVipLog.setPayType(params.get("payType").toString());

View File

@@ -281,15 +281,16 @@ public class StatisticsController {
titleRow.createCell(6).setCellValue("订单号"); titleRow.createCell(6).setCellValue("订单号");
titleRow.createCell(7).setCellValue("支付方式"); titleRow.createCell(7).setCellValue("支付方式");
titleRow.createCell(8).setCellValue("备注"); titleRow.createCell(8).setCellValue("备注");
titleRow.createCell(9).setCellValue("金额"); titleRow.createCell(9).setCellValue("缴费金额");
titleRow.createCell(10).setCellValue("总天数"); titleRow.createCell(10).setCellValue("摊销计算金额");
titleRow.createCell(11).setCellValue("每日摊销"); titleRow.createCell(11).setCellValue("总天数");
titleRow.createCell(12).setCellValue("已摊销天数"); titleRow.createCell(12).setCellValue("每日摊销");
titleRow.createCell(13).setCellValue("当月摊销天数"); titleRow.createCell(13).setCellValue("摊销天数");
titleRow.createCell(14).setCellValue("摊销天数"); titleRow.createCell(14).setCellValue("当月摊销天数");
titleRow.createCell(15).setCellValue("摊销金额"); titleRow.createCell(15).setCellValue("摊销天数");
titleRow.createCell(16).setCellValue("当月摊销金额"); titleRow.createCell(16).setCellValue("摊销金额");
titleRow.createCell(17).setCellValue("剩余摊销金额"); titleRow.createCell(17).setCellValue("当月摊销金额");
titleRow.createCell(18).setCellValue("剩余摊销金额");
//序号默认为1 //序号默认为1
int cell = 1; int cell = 1;
//遍历 //遍历
@@ -304,15 +305,16 @@ public class StatisticsController {
row.createCell(6).setCellValue(map.get("orderSn").toString()); row.createCell(6).setCellValue(map.get("orderSn").toString());
row.createCell(7).setCellValue(map.get("payType").toString()); row.createCell(7).setCellValue(map.get("payType").toString());
row.createCell(8).setCellValue(map.get("remark").toString()); row.createCell(8).setCellValue(map.get("remark").toString());
row.createCell(9).setCellValue(map.get("fee").toString()); row.createCell(9).setCellValue(map.get("price").toString());
row.createCell(10).setCellValue(map.get("totalDays").toString()); row.createCell(10).setCellValue(map.get("fee").toString());
row.createCell(11).setCellValue(map.get("dayAmount").toString()); row.createCell(11).setCellValue(map.get("totalDays").toString());
row.createCell(12).setCellValue(map.get("alreadyDays").toString()); row.createCell(12).setCellValue(map.get("dayAmount").toString());
row.createCell(13).setCellValue(map.get("currentDays").toString()); row.createCell(13).setCellValue(map.get("alreadyDays").toString());
row.createCell(14).setCellValue(map.get("notyetDays").toString()); row.createCell(14).setCellValue(map.get("currentDays").toString());
row.createCell(15).setCellValue(map.get("alreadyTanxiao").toString()); row.createCell(15).setCellValue(map.get("notyetDays").toString());
row.createCell(16).setCellValue(map.get("currentTanxiao").toString()); row.createCell(16).setCellValue(map.get("alreadyTanxiao").toString());
row.createCell(17).setCellValue(map.get("notyetTanxiao").toString()); row.createCell(17).setCellValue(map.get("currentTanxiao").toString());
row.createCell(18).setCellValue(map.get("notyetTanxiao").toString());
//序号自增 //序号自增
cell++; cell++;
} }

View File

@@ -218,6 +218,7 @@ public class UserVipController {
userVipLog.setEndTime(DateUtils.stringToDate(params.get("endTime").toString(), "yyyy-MM-dd HH:mm:ss")); userVipLog.setEndTime(DateUtils.stringToDate(params.get("endTime").toString(), "yyyy-MM-dd HH:mm:ss"));
BigDecimal fee = new BigDecimal(params.get("fee").toString()); BigDecimal fee = new BigDecimal(params.get("fee").toString());
BigDecimal jf = new BigDecimal(params.get("jf").toString()); BigDecimal jf = new BigDecimal(params.get("jf").toString());
userVipLog.setPrice(fee.divide(new BigDecimal(userVips.size()),2, BigDecimal.ROUND_HALF_UP));
userVipLog.setFee(fee.divide(new BigDecimal(userVips.size()),2, BigDecimal.ROUND_HALF_UP)); userVipLog.setFee(fee.divide(new BigDecimal(userVips.size()),2, BigDecimal.ROUND_HALF_UP));
userVipLog.setJf(jf.divide(new BigDecimal(userVips.size()),2, BigDecimal.ROUND_HALF_UP)); userVipLog.setJf(jf.divide(new BigDecimal(userVips.size()),2, BigDecimal.ROUND_HALF_UP));
userVipLog.setPayType(params.get("payType").toString()); userVipLog.setPayType(params.get("payType").toString());
@@ -239,6 +240,7 @@ public class UserVipController {
userVipLog.setAdminId(Integer.parseInt(params.get("adminId").toString())); userVipLog.setAdminId(Integer.parseInt(params.get("adminId").toString()));
userVipLog.setStartTime(DateUtils.stringToDate(params.get("startTime").toString(), "yyyy-MM-dd HH:mm:ss")); userVipLog.setStartTime(DateUtils.stringToDate(params.get("startTime").toString(), "yyyy-MM-dd HH:mm:ss"));
userVipLog.setEndTime(DateUtils.stringToDate(params.get("endTime").toString(), "yyyy-MM-dd HH:mm:ss")); userVipLog.setEndTime(DateUtils.stringToDate(params.get("endTime").toString(), "yyyy-MM-dd HH:mm:ss"));
userVipLog.setPrice(new BigDecimal(params.get("fee").toString()));
userVipLog.setFee(new BigDecimal(params.get("fee").toString())); userVipLog.setFee(new BigDecimal(params.get("fee").toString()));
userVipLog.setJf(new BigDecimal(params.get("jf").toString())); userVipLog.setJf(new BigDecimal(params.get("jf").toString()));
userVipLog.setPayType(params.get("payType").toString()); userVipLog.setPayType(params.get("payType").toString());

View File

@@ -4,17 +4,22 @@
<mapper namespace="com.peanut.modules.common.dao.UserVipLogDao"> <mapper namespace="com.peanut.modules.common.dao.UserVipLogDao">
<select id="getUserVipLogInfo" resultType="map"> <select id="getUserVipLogInfo" resultType="map">
select t.*,dayAmount*alreadyDays alreadyTanxiao, dayAmount*currentDays currentTanxiao, fee-(dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao select t.*,
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
dayAmount*currentDays currentTanxiao,
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
from ( from (
select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学','中西汇通学'))))) type, select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学','中西汇通学'))))) type,
uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,uvl.order_sn orderSn,uvl.pay_type payType,uvl.remark,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount, uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,uvl.order_sn orderSn,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays, IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays, IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt;= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt;= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
from user_vip_log uvl from user_vip_log uvl
left join user_vip uv on uv.id = uvl.user_vip_id left join user_vip uv on uv.id = uvl.user_vip_id
left join user u on u.id = uvl.user_id left join user u on u.id = uvl.user_id
where u.del_flag = 0 and uvl.del_flag = 0 and uv.del_flag = 0 and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') &lt;= SUBSTR(#{date},1,7) and u.id not in (select id from user where tel in ('18812616272','13110039505','18526084267','12222222222','13333333333','14444444444','15555555555','16666666666','17777777777','18888888888','1774455','15533','165965','164964','54321','111','13662001490','15505153873','18834844847','17602219785','19999999999','12299','166933','16855','17602634511','16161616161','17171717171','112112112','21212121211','222222','666666','123123','789789','96','25252525','3434343434','123789','124789','789789','163963','5656','19966','1664455','15151515151','256366','986986','18834844846','18834844849','15611027864','18047689535','18834844848','456456456')) where u.del_flag = 0 and uvl.del_flag = 0 and uv.del_flag = 0
and DATE_FORMAT(IF(uvl.pay_time is NULL,uvl.start_time,uvl.pay_time), '%Y-%m') &lt;= SUBSTR(#{date},1,7)
and u.id not in (select id from user where tel in ('18812616272','13110039505','18526084267','12222222222','13333333333','14444444444','15555555555','16666666666','17777777777','18888888888','1774455','15533','165965','164964','54321','111','13662001490','15505153873','18834844847','17602219785','19999999999','12299','166933','16855','17602634511','16161616161','17171717171','112112112','21212121211','222222','666666','123123','789789','96','25252525','3434343434','123789','124789','789789','163963','5656','19966','1664455','15151515151','256366','986986','18834844846','18834844849','15611027864','18047689535','18834844848','456456456'))
order by uvl.end_time asc order by uvl.end_time asc
) t order by currentDays desc ) t order by currentDays desc
</select> </select>
@@ -22,13 +27,17 @@
<select id="getUserVipLogInfoTotal" resultType="map"> <select id="getUserVipLogInfoTotal" resultType="map">
select SUM(countFee) fee,SUM(alreadyTanxiao) alreadyTanxiao,SUM(currentTanxiao) currentTanxiao,SUM(notyetTanxiao) notyetTanxiao select SUM(countFee) fee,SUM(alreadyTanxiao) alreadyTanxiao,SUM(currentTanxiao) currentTanxiao,SUM(notyetTanxiao) notyetTanxiao
from ( from (
select t.*,IF(payTime is NULL,IF(DATE_FORMAT(startTime, '%Y-%m') = SUBSTR(#{date},1,7),fee,0),IF(DATE_FORMAT(payTime, '%Y-%m') = SUBSTR(#{date},1,7),fee,0)) countFee,dayAmount*alreadyDays alreadyTanxiao, dayAmount*currentDays currentTanxiao, fee-(dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao select t.*,
IF(payTime is NULL,IF(DATE_FORMAT(startTime, '%Y-%m') = SUBSTR(#{date},1,7),fee,0),IF(DATE_FORMAT(payTime, '%Y-%m') = SUBSTR(#{date},1,7),fee,0)) countFee,
IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays) alreadyTanxiao,
dayAmount*currentDays currentTanxiao,
fee-IF(totalDays=alreadyDays,fee,dayAmount*alreadyDays)-(dayAmount*currentDays) notyetTanxiao
from ( from (
select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学','中西汇通学'))))) type, select u.name,if(u.tel is null,if(u.email is null,'',u.email),u.tel) tel,IF(uv.type=4,'中医学',IF(uv.type=5,'针灸学',IF(uv.type=6,'肿瘤学',IF(uv.type=7,'国学',IF(uv.type=8,'心理学','中西汇通学'))))) type,
uvl.start_time startTime,uvl.end_time endTime,uvl.order_sn orderSn,uvl.pay_type payType,uvl.pay_time payTime,uvl.remark,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount, uvl.start_time startTime,uvl.end_time endTime,if(uvl.pay_time is null,'',uvl.pay_time) payTime,uvl.order_sn orderSn,uvl.pay_type payType,uvl.remark,uvl.price,uvl.fee,DATEDIFF(uvl.end_time,uvl.start_time)+1 totalDays,ROUND(uvl.fee/(DATEDIFF(uvl.end_time,uvl.start_time)+1),2) dayAmount,
IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays, IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.start_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),DATEDIFF(concat(SUBSTR(#{date},1,7),'-01'),uvl.start_time),0))) alreadyDays,
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),DAY(#{date}),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays, IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),0,IF(DATE_FORMAT(uvl.end_time, '%Y-%m') > SUBSTR(#{date},1,7),if(DATE_FORMAT(uvl.start_time, '%Y-%m') = SUBSTR(#{date},1,7),DATEDIFF(#{date},uvl.start_time)+1,DAY(#{date})),DATEDIFF(uvl.end_time,concat(SUBSTR(#{date},1,7),'-01'))+1))) currentDays,
IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt; SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays IF(DATE_FORMAT(uvl.start_time, '%Y-%m') > SUBSTR(#{date},1,7),DATEDIFF(uvl.end_time,uvl.start_time)+1,(IF(DATE_FORMAT(uvl.end_time, '%Y-%m') &lt;= SUBSTR(#{date},1,7),0,DATEDIFF(uvl.end_time,#{date})))) notyetDays
from user_vip_log uvl from user_vip_log uvl
left join user_vip uv on uv.id = uvl.user_vip_id left join user_vip uv on uv.id = uvl.user_vip_id
left join user u on u.id = uvl.user_id left join user u on u.id = uvl.user_id