临时提交
This commit is contained in:
parent
45e1dca5be
commit
cb2503266d
|
@ -23,7 +23,7 @@ public interface ${ClassName}Mapper
|
||||||
* @param ${pkColumn.javaField} ${functionName}主键
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return ${functionName}
|
* @return ${functionName}
|
||||||
*/
|
*/
|
||||||
public ${ClassName}VO select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
${ClassName}VO select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询${functionName}列表
|
* 查询${functionName}列表
|
||||||
|
@ -31,7 +31,7 @@ public interface ${ClassName}Mapper
|
||||||
* @param query ${functionName}
|
* @param query ${functionName}
|
||||||
* @return ${functionName}集合
|
* @return ${functionName}集合
|
||||||
*/
|
*/
|
||||||
public List<${ClassName}VO> select${ClassName}List(@Param("query")${ClassName}Query query);
|
List<${ClassName}VO> select${ClassName}List(@Param("query")${ClassName}Query query);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增${functionName}
|
* 新增${functionName}
|
||||||
|
@ -39,7 +39,17 @@ public interface ${ClassName}Mapper
|
||||||
* @param ${className} ${functionName}
|
* @param ${className} ${functionName}
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int insert${ClassName}(${ClassName} ${className});
|
int insert${ClassName}(${ClassName} ${className});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增${functionName}
|
||||||
|
*/
|
||||||
|
int batchInsert(@Param("list") List<? extends ${ClassName}> list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量修改${functionName}
|
||||||
|
*/
|
||||||
|
int batchUpdate(@Param("list") List<? extends ${ClassName}> list);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改${functionName}
|
* 修改${functionName}
|
||||||
|
@ -55,7 +65,7 @@ public interface ${ClassName}Mapper
|
||||||
* @param ${pkColumn.javaField} ${functionName}主键
|
* @param ${pkColumn.javaField} ${functionName}主键
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除${functionName}
|
* 批量删除${functionName}
|
||||||
|
@ -72,7 +82,7 @@ public interface ${ClassName}Mapper
|
||||||
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
|
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
|
int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量新增${subTable.functionName}
|
* 批量新增${subTable.functionName}
|
||||||
|
@ -80,7 +90,7 @@ public interface ${ClassName}Mapper
|
||||||
* @param ${subclassName}List ${subTable.functionName}列表
|
* @param ${subclassName}List ${subTable.functionName}列表
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
|
int batch${subClassName}(List<${subClassName}> ${subclassName}List);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -89,6 +99,6 @@ public interface ${ClassName}Mapper
|
||||||
* @param ${pkColumn.javaField} ${functionName}ID
|
* @param ${pkColumn.javaField} ${functionName}ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
|
int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,6 +99,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<insert id="batchInsert" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
|
||||||
|
insert into ${tableName}
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
#foreach($column in $columns)
|
||||||
|
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
|
||||||
|
$column.columnName,
|
||||||
|
#end
|
||||||
|
#end
|
||||||
|
</trim>
|
||||||
|
values
|
||||||
|
<foreach collection="list" item="i" separator=",">
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
#foreach($column in $columns)
|
||||||
|
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
|
||||||
|
<if test="i.$column.javaField != null #if($column.javaType == 'String' && $column.required) and i.$column.javaField != ''#end">#{i.$column.javaField},</if>
|
||||||
|
<if test="i.$column.javaField == null #if($column.javaType == 'String' && $column.required) or i.$column.javaField == ''#end">default,</if>
|
||||||
|
#end
|
||||||
|
#end
|
||||||
|
</trim>
|
||||||
|
</foreach>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="batchUpdate">
|
||||||
|
update ${tableName}
|
||||||
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
#foreach($column in $columns)
|
||||||
|
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
|
||||||
|
<foreach open="$column.columnName = CASE $pkColumn.columnName" collection="list" item="item" close="END,">
|
||||||
|
<choose>
|
||||||
|
<when test="item.$column.javaField != null #if($column.javaType == 'String' && $column.required) and item.$column.javaField != ''#end">
|
||||||
|
WHEN #{item.$pkColumn.columnName} THEN #{item.$column.javaField}
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
WHEN #{item.$pkColumn.columnName} THEN `$column.columnName`
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</foreach>
|
||||||
|
#end
|
||||||
|
#end
|
||||||
|
</trim>
|
||||||
|
where $pkColumn.columnName in
|
||||||
|
<foreach item="item" collection="list" open="(" separator="," close=")">
|
||||||
|
#{item.$pkColumn.javaField}
|
||||||
|
</foreach>
|
||||||
|
</update>
|
||||||
|
|
||||||
<update id="update${ClassName}" parameterType="${ClassName}">
|
<update id="update${ClassName}" parameterType="${ClassName}">
|
||||||
update ${tableName}
|
update ${tableName}
|
||||||
<trim prefix="SET" suffixOverrides=",">
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.domain;
|
||||||
|
|
||||||
|
import com.ruoyi.common.annotation.Excel;
|
||||||
|
import com.ruoyi.common.core.domain.BaseEntity;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单电量记录对象 ss_bill_ele_record
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-01-04
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BillEleRecord extends BaseEntity
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Excel(name = "订单ID")
|
||||||
|
@ApiModelProperty("订单ID")
|
||||||
|
private Long billId;
|
||||||
|
|
||||||
|
@Excel(name = "记录时的总用电量(度)")
|
||||||
|
@ApiModelProperty("记录时的总用电量(度)")
|
||||||
|
private BigDecimal totalEle;
|
||||||
|
|
||||||
|
@Excel(name = "当前时间段用电量(度)")
|
||||||
|
@ApiModelProperty("当前时间段用电量(度)")
|
||||||
|
private BigDecimal usedEle;
|
||||||
|
|
||||||
|
@Excel(name = "当前时间段电价(元/度)")
|
||||||
|
@ApiModelProperty("当前时间段电价(元/度)")
|
||||||
|
private BigDecimal price;
|
||||||
|
|
||||||
|
@Excel(name = "当前时间段总电价(元)")
|
||||||
|
@ApiModelProperty("当前时间段总电价(元)")
|
||||||
|
private BigDecimal totalPrice;
|
||||||
|
|
||||||
|
@Excel(name = "记录时间段(起始)", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty("记录时间段(起始)")
|
||||||
|
private LocalDateTime timeStart;
|
||||||
|
|
||||||
|
@Excel(name = "记录时间段(结束)", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty("记录时间段(结束)")
|
||||||
|
private LocalDateTime timeEnd;
|
||||||
|
|
||||||
|
@Excel(name = "记录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@ApiModelProperty("记录时间")
|
||||||
|
private LocalDateTime recordTime;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2025/1/4
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BillEleRecordQuery extends BillEleRecordVO {
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.domain;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2025/1/4
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class BillEleRecordVO extends BillEleRecord{
|
||||||
|
|
||||||
|
@ApiModelProperty("订单编号")
|
||||||
|
private String billNo;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.mapper;
|
||||||
|
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecord;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordQuery;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordVO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单电量记录Mapper接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-01-04
|
||||||
|
*/
|
||||||
|
public interface BillEleRecordMapper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询订单电量记录
|
||||||
|
*
|
||||||
|
* @param id 订单电量记录主键
|
||||||
|
* @return 订单电量记录
|
||||||
|
*/
|
||||||
|
public BillEleRecordVO selectBillEleRecordById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单电量记录列表
|
||||||
|
*
|
||||||
|
* @param query 订单电量记录
|
||||||
|
* @return 订单电量记录集合
|
||||||
|
*/
|
||||||
|
public List<BillEleRecordVO> selectBillEleRecordList(@Param("query")BillEleRecordQuery query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增订单电量记录
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertBillEleRecord(BillEleRecord billEleRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改订单电量记录
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateBillEleRecord(@Param("data") BillEleRecord billEleRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除订单电量记录
|
||||||
|
*
|
||||||
|
* @param id 订单电量记录主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteBillEleRecordById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除订单电量记录
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的数据主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteBillEleRecordByIds(Long[] ids);
|
||||||
|
|
||||||
|
int batchInsert(@Param("list") List<BillEleRecord> list);
|
||||||
|
|
||||||
|
BigDecimal selectMaxEle(@Param("query") BillEleRecordQuery query);
|
||||||
|
|
||||||
|
BigDecimal selectSumOfTotalPrice(@Param("query") BillEleRecordQuery query);
|
||||||
|
}
|
|
@ -0,0 +1,156 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.ruoyi.ss.billEleRecord.mapper.BillEleRecordMapper">
|
||||||
|
|
||||||
|
<resultMap type="BillEleRecordVO" id="BillEleRecordResult" autoMapping="true"/>
|
||||||
|
|
||||||
|
<sql id="selectBillEleRecordVo">
|
||||||
|
select
|
||||||
|
sber.id,
|
||||||
|
sber.bill_id,
|
||||||
|
sber.total_ele,
|
||||||
|
sber.used_ele,
|
||||||
|
sber.price,
|
||||||
|
sber.total_price,
|
||||||
|
sber.create_time,
|
||||||
|
sber.time_start,
|
||||||
|
sber.time_end,
|
||||||
|
sber.record_time,
|
||||||
|
stb.bill_no as bill_no
|
||||||
|
from ss_bill_ele_record sber
|
||||||
|
left join sm_transaction_bill stb on stb.bill_id = sber.bill_id
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<sql id="searchCondition">
|
||||||
|
<if test="query.id != null "> and sber.id = #{query.id}</if>
|
||||||
|
<if test="query.billId != null "> and sber.bill_id = #{query.billId}</if>
|
||||||
|
<if test="query.billNo != null "> and stb.bill_no like concat('%',#{query.billNo},'%')</if>
|
||||||
|
${query.params.dataScope}
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectBillEleRecordList" parameterType="BillEleRecordQuery" resultMap="BillEleRecordResult">
|
||||||
|
<include refid="selectBillEleRecordVo"/>
|
||||||
|
<where>
|
||||||
|
<include refid="searchCondition"/>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectBillEleRecordById" parameterType="Long" resultMap="BillEleRecordResult">
|
||||||
|
<include refid="selectBillEleRecordVo"/>
|
||||||
|
where sber.id = #{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectMaxEle" resultType="java.math.BigDecimal">
|
||||||
|
select max(sber.total_ele)
|
||||||
|
from ss_bill_ele_record sber
|
||||||
|
<where>
|
||||||
|
<include refid="searchCondition"/>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectSumOfTotalPrice" resultType="java.math.BigDecimal">
|
||||||
|
select sum(sber.total_price)
|
||||||
|
from ss_bill_ele_record sber
|
||||||
|
<where>
|
||||||
|
<include refid="searchCondition"/>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertBillEleRecord" parameterType="BillEleRecord" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
insert into ss_bill_ele_record
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="billId != null">bill_id,</if>
|
||||||
|
<if test="totalEle != null">total_ele,</if>
|
||||||
|
<if test="usedEle != null">used_ele,</if>
|
||||||
|
<if test="price != null">price,</if>
|
||||||
|
<if test="totalPrice != null">total_price,</if>
|
||||||
|
<if test="createTime != null">create_time,</if>
|
||||||
|
<if test="timeStart != null">time_start,</if>
|
||||||
|
<if test="timeEnd != null">time_end,</if>
|
||||||
|
<if test="recordTime != null">record_time,</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="billId != null">#{billId},</if>
|
||||||
|
<if test="totalEle != null">#{totalEle},</if>
|
||||||
|
<if test="usedEle != null">#{usedEle},</if>
|
||||||
|
<if test="price != null">#{price},</if>
|
||||||
|
<if test="totalPrice != null">#{totalPrice},</if>
|
||||||
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
<if test="timeStart != null">#{timeStart},</if>
|
||||||
|
<if test="timeEnd != null">#{timeEnd},</if>
|
||||||
|
<if test="recordTime != null">#{recordTime},</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
|
||||||
|
<insert id="batchInsert" parameterType="BillEleRecord" useGeneratedKeys="true" keyProperty="id">
|
||||||
|
insert into ss_bill_ele_record
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
bill_id,
|
||||||
|
total_ele,
|
||||||
|
used_ele,
|
||||||
|
price,
|
||||||
|
total_price,
|
||||||
|
create_time,
|
||||||
|
time_start,
|
||||||
|
time_end,
|
||||||
|
record_time,
|
||||||
|
</trim>
|
||||||
|
values
|
||||||
|
<foreach collection="list" item="i" separator=",">
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="i.billId != null ">#{i.billId},</if>
|
||||||
|
<if test="i.billId == null ">default,</if>
|
||||||
|
<if test="i.totalEle != null ">#{i.totalEle},</if>
|
||||||
|
<if test="i.totalEle == null ">default,</if>
|
||||||
|
<if test="i.usedEle != null ">#{i.usedEle},</if>
|
||||||
|
<if test="i.usedEle == null ">default,</if>
|
||||||
|
<if test="i.price != null ">#{i.price},</if>
|
||||||
|
<if test="i.price == null ">default,</if>
|
||||||
|
<if test="i.totalPrice != null ">#{i.totalPrice},</if>
|
||||||
|
<if test="i.totalPrice == null ">default,</if>
|
||||||
|
<if test="i.createTime != null ">#{i.createTime},</if>
|
||||||
|
<if test="i.createTime == null ">default,</if>
|
||||||
|
<if test="i.timeStart != null ">#{i.timeStart},</if>
|
||||||
|
<if test="i.timeStart == null ">default,</if>
|
||||||
|
<if test="i.timeEnd != null ">#{i.timeEnd},</if>
|
||||||
|
<if test="i.timeEnd == null ">default,</if>
|
||||||
|
<if test="i.recordTime != null ">#{i.recordTime},</if>
|
||||||
|
<if test="i.recordTime == null ">default,</if>
|
||||||
|
</trim>
|
||||||
|
</foreach>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateBillEleRecord" parameterType="BillEleRecord">
|
||||||
|
update ss_bill_ele_record
|
||||||
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
<include refid="updateColumns"/>
|
||||||
|
</trim>
|
||||||
|
where id = #{data.id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<sql id="updateColumns">
|
||||||
|
<if test="data.billId != null">bill_id = #{data.billId},</if>
|
||||||
|
<if test="data.totalEle != null">total_ele = #{data.totalEle},</if>
|
||||||
|
<if test="data.usedEle != null">used_ele = #{data.usedEle},</if>
|
||||||
|
<if test="data.price != null">price = #{data.price},</if>
|
||||||
|
<if test="data.totalPrice != null">total_price = #{data.totalPrice},</if>
|
||||||
|
<if test="data.createTime != null">create_time = #{data.createTime},</if>
|
||||||
|
<if test="data.timeStart != null">time_start = #{data.timeStart},</if>
|
||||||
|
<if test="data.timeEnd != null">time_end = #{data.timeEnd},</if>
|
||||||
|
<if test="data.recordTime != null">record_time = #{data.recordTime},</if>
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<delete id="deleteBillEleRecordById" parameterType="Long">
|
||||||
|
delete from ss_bill_ele_record where id = #{id}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<delete id="deleteBillEleRecordByIds" parameterType="String">
|
||||||
|
delete from ss_bill_ele_record where id in
|
||||||
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
</mapper>
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.service;
|
||||||
|
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecord;
|
||||||
|
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2025/1/4
|
||||||
|
*/
|
||||||
|
public interface BillEleRecordConverter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转为PO
|
||||||
|
* @param bill 订单
|
||||||
|
* @param device 设备
|
||||||
|
* @param time 抄表时间
|
||||||
|
* @param chargeTime 计费时间
|
||||||
|
*/
|
||||||
|
BillEleRecord toPo(TransactionBillVO bill, DeviceVO device, LocalDateTime time, LocalDateTime chargeTime);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.service;
|
||||||
|
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecord;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordQuery;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordVO;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单电量记录Service接口
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-01-04
|
||||||
|
*/
|
||||||
|
public interface BillEleRecordService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询订单电量记录
|
||||||
|
*
|
||||||
|
* @param id 订单电量记录主键
|
||||||
|
* @return 订单电量记录
|
||||||
|
*/
|
||||||
|
public BillEleRecordVO selectBillEleRecordById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单电量记录列表
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 订单电量记录集合
|
||||||
|
*/
|
||||||
|
public List<BillEleRecordVO> selectBillEleRecordList(BillEleRecordQuery billEleRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增订单电量记录
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertBillEleRecord(BillEleRecord billEleRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改订单电量记录
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateBillEleRecord(BillEleRecord billEleRecord);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除订单电量记录
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的订单电量记录主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteBillEleRecordByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除订单电量记录信息
|
||||||
|
*
|
||||||
|
* @param id 订单电量记录主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteBillEleRecordById(Long id);
|
||||||
|
|
||||||
|
int batchInsert(List<BillEleRecord> list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单最大记录的用电量
|
||||||
|
*/
|
||||||
|
BigDecimal selectMaxEleByBillId(Long billId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单总金额
|
||||||
|
*/
|
||||||
|
BigDecimal selectSumOfTotalPrice(BillEleRecordQuery query);
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.service.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecord;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordConverter;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordService;
|
||||||
|
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
|
import com.ruoyi.ss.suit.domain.enums.SuitFeeType;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
||||||
|
import com.ruoyi.ss.transactionBill.utils.RechargeUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2025/1/4
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class BillEleRecordConverterImpl implements BillEleRecordConverter {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BillEleRecordService billEleRecordService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BillEleRecord toPo(TransactionBillVO bill, DeviceVO device, LocalDateTime time, LocalDateTime chargeTime) {
|
||||||
|
if (device == null || bill == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (!SuitFeeType.TIMING_COUNT.getType().equals(bill.getSuitFeeType())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计费时间
|
||||||
|
LocalDateTime timeStart = chargeTime.withMinute(0).withSecond(0);
|
||||||
|
LocalDateTime timeEnd = chargeTime.withMinute(59).withSecond(59);
|
||||||
|
if (bill.getSuitStartTime() != null && timeStart.isBefore(bill.getSuitStartTime())) {
|
||||||
|
timeStart = bill.getSuitStartTime();
|
||||||
|
}
|
||||||
|
if (bill.getSuitEndTime() != null && timeEnd.isAfter(bill.getSuitEndTime())) {
|
||||||
|
timeEnd = bill.getSuitEndTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当前时间段的单价(元/度)
|
||||||
|
BigDecimal price = RechargeUtils.getGearAmount(bill, chargeTime.getHour());
|
||||||
|
|
||||||
|
// 查询订单在最大记录的用电量
|
||||||
|
BigDecimal maxEle = billEleRecordService.selectMaxEleByBillId(bill.getBillId());
|
||||||
|
if (maxEle == null) {
|
||||||
|
maxEle = bill.getSuitStartEle();
|
||||||
|
}
|
||||||
|
|
||||||
|
BillEleRecord po = new BillEleRecord();
|
||||||
|
po.setBillId(bill.getBillId());
|
||||||
|
po.setTotalEle(device.getTotalElectriQuantity());
|
||||||
|
po.setUsedEle(device.getTotalElectriQuantity().subtract(maxEle));
|
||||||
|
po.setRecordTime(time);
|
||||||
|
po.setTimeStart(timeStart);
|
||||||
|
po.setTimeEnd(timeEnd);
|
||||||
|
po.setPrice(price);
|
||||||
|
po.setTotalPrice(po.getPrice().multiply(po.getUsedEle()));
|
||||||
|
|
||||||
|
return po;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,129 @@
|
||||||
|
package com.ruoyi.ss.billEleRecord.service.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
|
import com.ruoyi.common.utils.collection.CollectionUtils;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecord;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordQuery;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordVO;
|
||||||
|
import com.ruoyi.ss.billEleRecord.mapper.BillEleRecordMapper;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单电量记录Service业务层处理
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-01-04
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class BillEleRecordServiceImpl implements BillEleRecordService
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private BillEleRecordMapper billEleRecordMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单电量记录
|
||||||
|
*
|
||||||
|
* @param id 订单电量记录主键
|
||||||
|
* @return 订单电量记录
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public BillEleRecordVO selectBillEleRecordById(Long id)
|
||||||
|
{
|
||||||
|
return billEleRecordMapper.selectBillEleRecordById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单电量记录列表
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 订单电量记录
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<BillEleRecordVO> selectBillEleRecordList(BillEleRecordQuery billEleRecord)
|
||||||
|
{
|
||||||
|
return billEleRecordMapper.selectBillEleRecordList(billEleRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增订单电量记录
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int insertBillEleRecord(BillEleRecord billEleRecord)
|
||||||
|
{
|
||||||
|
billEleRecord.setCreateTime(DateUtils.getNowDate());
|
||||||
|
return billEleRecordMapper.insertBillEleRecord(billEleRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改订单电量记录
|
||||||
|
*
|
||||||
|
* @param billEleRecord 订单电量记录
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateBillEleRecord(BillEleRecord billEleRecord)
|
||||||
|
{
|
||||||
|
return billEleRecordMapper.updateBillEleRecord(billEleRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除订单电量记录
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的订单电量记录主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteBillEleRecordByIds(Long[] ids)
|
||||||
|
{
|
||||||
|
return billEleRecordMapper.deleteBillEleRecordByIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除订单电量记录信息
|
||||||
|
*
|
||||||
|
* @param id 订单电量记录主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteBillEleRecordById(Long id)
|
||||||
|
{
|
||||||
|
return billEleRecordMapper.deleteBillEleRecordById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int batchInsert(List<BillEleRecord> list) {
|
||||||
|
if (CollectionUtils.isEmptyElement(list)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Date now = DateUtils.getNowDate();
|
||||||
|
for (BillEleRecord record : list) {
|
||||||
|
record.setCreateTime(now);
|
||||||
|
}
|
||||||
|
return billEleRecordMapper.batchInsert(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BigDecimal selectMaxEleByBillId(Long billId) {
|
||||||
|
if (billId == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
BillEleRecordQuery query = new BillEleRecordQuery();
|
||||||
|
query.setBillId(billId);
|
||||||
|
return billEleRecordMapper.selectMaxEle(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BigDecimal selectSumOfTotalPrice(BillEleRecordQuery query) {
|
||||||
|
return billEleRecordMapper.selectSumOfTotalPrice(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -18,6 +18,9 @@ import com.ruoyi.dashboard.domain.vo.BillCountVo;
|
||||||
import com.ruoyi.iot.domain.response.CommandResponse;
|
import com.ruoyi.iot.domain.response.CommandResponse;
|
||||||
import com.ruoyi.iot.service.IotService;
|
import com.ruoyi.iot.service.IotService;
|
||||||
import com.ruoyi.ss.account.domain.AccountVO;
|
import com.ruoyi.ss.account.domain.AccountVO;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordQuery;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordConverter;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordService;
|
||||||
import com.ruoyi.ss.bonus.domain.Bonus;
|
import com.ruoyi.ss.bonus.domain.Bonus;
|
||||||
import com.ruoyi.ss.bonus.domain.BonusQuery;
|
import com.ruoyi.ss.bonus.domain.BonusQuery;
|
||||||
import com.ruoyi.ss.bonus.domain.BonusVO;
|
import com.ruoyi.ss.bonus.domain.BonusVO;
|
||||||
|
@ -176,6 +179,12 @@ public class TransactionBillServiceImpl implements TransactionBillService, After
|
||||||
@Autowired
|
@Autowired
|
||||||
private RiskService riskService;
|
private RiskService riskService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BillEleRecordService billEleRecordService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BillEleRecordConverter billEleRecordConverter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询充值记录
|
* 查询充值记录
|
||||||
*
|
*
|
||||||
|
@ -998,44 +1007,44 @@ public class TransactionBillServiceImpl implements TransactionBillService, After
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int endTimingUse(EndUseBO bo) {
|
// private int endTimingUse(EndUseBO bo) {
|
||||||
if (bo == null) {
|
// if (bo == null) {
|
||||||
return 0;
|
// return 0;
|
||||||
}
|
// }
|
||||||
TransactionBillVO order = bo.getOrder();
|
// TransactionBillVO order = bo.getOrder();
|
||||||
DeviceVO device = bo.getDevice();
|
// DeviceVO device = bo.getDevice();
|
||||||
ServiceUtil.assertion(order == null, "订单不存在");
|
// ServiceUtil.assertion(order == null, "订单不存在");
|
||||||
ServiceUtil.assertion(!TransactionBillStatus.SUCCESS_DEPOSIT.getStatus().equals(order.getStatus()), "当前订单状态不允许结束");
|
// ServiceUtil.assertion(!TransactionBillStatus.SUCCESS_DEPOSIT.getStatus().equals(order.getStatus()), "当前订单状态不允许结束");
|
||||||
ServiceUtil.assertion(order.getIsFinished() != null && order.getIsFinished(), "当前订单已结束,无法操作");
|
// ServiceUtil.assertion(order.getIsFinished() != null && order.getIsFinished(), "当前订单已结束,无法操作");
|
||||||
ServiceUtil.assertion(device == null, "设备不存在");
|
// ServiceUtil.assertion(device == null, "设备不存在");
|
||||||
|
//
|
||||||
LocalDateTime endTime = LocalDateTime.now(); // 结束使用的时间
|
// LocalDateTime endTime = LocalDateTime.now(); // 结束使用的时间
|
||||||
|
//
|
||||||
// 结束使用的电量:若蓝牙传过来的值为空或者小于当前电量,则使用当前电量,否则使用蓝牙传输的电量
|
// // 结束使用的电量:若蓝牙传过来的值为空或者小于当前电量,则使用当前电量,否则使用蓝牙传输的电量
|
||||||
BigDecimal totalEle = this.calcTotalEle(device, bo.getTotalEle());
|
// BigDecimal totalEle = this.calcTotalEle(device, bo.getTotalEle());
|
||||||
|
//
|
||||||
// 计算金额
|
// // 计算金额
|
||||||
BigDecimal money = this.calcTimingAmount(order, endTime, totalEle);
|
// BigDecimal money = this.calcTimingAmount(order, endTime, totalEle);
|
||||||
|
//
|
||||||
Integer result = transactionTemplate.execute(status -> {
|
// Integer result = transactionTemplate.execute(status -> {
|
||||||
// 修改订单信息
|
// // 修改订单信息
|
||||||
TransactionBill data = new TransactionBill();
|
// TransactionBill data = new TransactionBill();
|
||||||
data.setSuitEndEle(totalEle);
|
// data.setSuitEndEle(totalEle);
|
||||||
data.setSuitEndTime(endTime);
|
// data.setSuitEndTime(endTime);
|
||||||
data.setStatus(TransactionBillStatus.UNPAID.getStatus());
|
// data.setStatus(TransactionBillStatus.UNPAID.getStatus());
|
||||||
data.setMoney(money);
|
// data.setMoney(money);
|
||||||
TransactionBillQuery query = new TransactionBillQuery();
|
// TransactionBillQuery query = new TransactionBillQuery();
|
||||||
query.setStatus(TransactionBillStatus.SUCCESS_DEPOSIT.getStatus());
|
// query.setStatus(TransactionBillStatus.SUCCESS_DEPOSIT.getStatus());
|
||||||
query.setBillId(order.getBillId());
|
// query.setBillId(order.getBillId());
|
||||||
query.setIsFinished(false);
|
// query.setIsFinished(false);
|
||||||
int update = this.updateByQuery(data, query);
|
// int update = this.updateByQuery(data, query);
|
||||||
ServiceUtil.assertion(update != 1, "修改订单状态失败,请刷新后重试");
|
// ServiceUtil.assertion(update != 1, "修改订单状态失败,请刷新后重试");
|
||||||
|
//
|
||||||
return update;
|
// return update;
|
||||||
});
|
// });
|
||||||
|
//
|
||||||
return result == null ? 0 : result;
|
// return result == null ? 0 : result;
|
||||||
}
|
// }
|
||||||
|
|
||||||
private BigDecimal calcTotalEle(DeviceVO device, BigDecimal totalEle) {
|
private BigDecimal calcTotalEle(DeviceVO device, BigDecimal totalEle) {
|
||||||
if (totalEle == null || totalEle.compareTo(device.getTotalElectriQuantity()) < 0) {
|
if (totalEle == null || totalEle.compareTo(device.getTotalElectriQuantity()) < 0) {
|
||||||
|
@ -1051,14 +1060,14 @@ public class TransactionBillServiceImpl implements TransactionBillService, After
|
||||||
if (SuitFeeType.TIMING_TIME.getType().equals(order.getSuitFeeType())) {
|
if (SuitFeeType.TIMING_TIME.getType().equals(order.getSuitFeeType())) {
|
||||||
totalAmount = this.calcTimingTimeAmount(order, endTime);
|
totalAmount = this.calcTimingTimeAmount(order, endTime);
|
||||||
} else if (SuitFeeType.TIMING_COUNT.getType().equals(order.getSuitFeeType())) {
|
} else if (SuitFeeType.TIMING_COUNT.getType().equals(order.getSuitFeeType())) {
|
||||||
totalAmount = this.calcTimingCountAmount(order, endTime, totalEle);
|
totalAmount = this.calcTimingCountAmount(order);
|
||||||
} else {
|
} else {
|
||||||
throw new ServiceException("计算金额出错,套餐收费类型不支持");
|
throw new ServiceException("计算金额出错,套餐收费类型不支持");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最低金额不允许低于最低服务费
|
// 最低金额不允许低于最低服务费
|
||||||
BigDecimal minService = sysConfigService.getBigDecimal(ConfigKey.RECHARGE_MIN_SERVICE);
|
BigDecimal minService = sysConfigService.getBigDecimal(ConfigKey.RECHARGE_MIN_SERVICE);
|
||||||
if (totalAmount.compareTo(minService) < 0) {
|
if (totalAmount == null || totalAmount.compareTo(minService) < 0) {
|
||||||
totalAmount = minService;
|
totalAmount = minService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1289,10 +1298,45 @@ public class TransactionBillServiceImpl implements TransactionBillService, After
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算分时段计量金额
|
// 计算分时段计量金额
|
||||||
private BigDecimal calcTimingCountAmount(TransactionBillVO order, LocalDateTime endTime, BigDecimal totalEle) {
|
private BigDecimal calcTimingCountAmount(TransactionBillVO order) {
|
||||||
BigDecimal startEle = order.getSuitStartEle() == null ? BigDecimal.ZERO : order.getSuitStartEle(); // 起始电量
|
//---旧的
|
||||||
BigDecimal usedEle = totalEle == null ? BigDecimal.ZERO : totalEle.subtract(startEle); // 本次用电量
|
// BigDecimal startEle = order.getSuitStartEle() == null ? BigDecimal.ZERO : order.getSuitStartEle(); // 起始电量
|
||||||
return calcTimingCountAmount(order.getSuitGearAmount(), order.getSuitGearTime(), order.getSuitStartTime(), endTime, usedEle);
|
// BigDecimal usedEle = totalEle == null ? BigDecimal.ZERO : totalEle.subtract(startEle); // 本次用电量
|
||||||
|
// return calcTimingCountAmount(order.getSuitGearAmount(), order.getSuitGearTime(), order.getSuitStartTime(), endTime, usedEle);
|
||||||
|
// 旧的 ---
|
||||||
|
|
||||||
|
BillEleRecordQuery query = new BillEleRecordQuery();
|
||||||
|
query.setBillId(order.getBillId());
|
||||||
|
BigDecimal amount = billEleRecordService.selectSumOfTotalPrice(query);
|
||||||
|
if (amount == null) {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
return amount;
|
||||||
|
|
||||||
|
// 查询订单电量记录
|
||||||
|
// BillEleRecordQuery query = new BillEleRecordQuery();
|
||||||
|
// query.setBillId(order.getBillId());
|
||||||
|
// List<BillEleRecordVO> recordList = billEleRecordService.selectBillEleRecordList(query);
|
||||||
|
|
||||||
|
// // 拟创建新的记录
|
||||||
|
// LocalDateTime now = LocalDateTime.now();
|
||||||
|
// DeviceVO device = deviceService.selectById(order.getDeviceId());
|
||||||
|
// deviceService.pullDeviceInfo(device, null);
|
||||||
|
// BillEleRecord newRecord = billEleRecordConverter.toPo(order, device, now, now);
|
||||||
|
// recordList.add((BillEleRecordVO) newRecord);
|
||||||
|
//
|
||||||
|
// // 记录根据记录时间排序
|
||||||
|
// recordList.sort(Comparator.comparing(BillEleRecordVO::getRecordTime));
|
||||||
|
//
|
||||||
|
// // 计算每个记录的金额
|
||||||
|
// BigDecimal lastEle = order.getSuitStartEle();
|
||||||
|
// BigDecimal totalPrice = BigDecimal.ZERO;
|
||||||
|
// for (BillEleRecordVO record : recordList) {
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// totalPrice.add(record.getPrice() * )
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算分时段计量金额
|
// 计算分时段计量金额
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.ruoyi.ss.transactionBill.utils;
|
package com.ruoyi.ss.transactionBill.utils;
|
||||||
|
|
||||||
|
import com.ruoyi.common.utils.collection.CollectionUtils;
|
||||||
import com.ruoyi.ss.suit.domain.enums.SuitFeeMode;
|
import com.ruoyi.ss.suit.domain.enums.SuitFeeMode;
|
||||||
import com.ruoyi.ss.suit.domain.enums.SuitFeeType;
|
import com.ruoyi.ss.suit.domain.enums.SuitFeeType;
|
||||||
import com.ruoyi.ss.suit.domain.enums.SuitTimeUnit;
|
import com.ruoyi.ss.suit.domain.enums.SuitTimeUnit;
|
||||||
|
@ -148,4 +149,14 @@ public class RechargeUtils {
|
||||||
return round;
|
return round;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取分时段订单指定时段的金额
|
||||||
|
*/
|
||||||
|
public static BigDecimal getGearAmount(TransactionBillVO bill, int hour) {
|
||||||
|
if (bill == null || CollectionUtils.isEmptyElement(bill.getSuitGearAmount()) || CollectionUtils.isEmptyElement(bill.getSuitGearTime()) || hour < 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bill.getSuitGearAmount().get(bill.getSuitGearTime().get(hour));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
package com.ruoyi.task.billEleRecord;
|
||||||
|
|
||||||
|
import com.ruoyi.common.utils.collection.CollectionUtils;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecord;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordConverter;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordService;
|
||||||
|
import com.ruoyi.ss.device.domain.vo.DeviceVO;
|
||||||
|
import com.ruoyi.ss.device.service.DeviceService;
|
||||||
|
import com.ruoyi.ss.suit.domain.enums.SuitFeeMode;
|
||||||
|
import com.ruoyi.ss.suit.domain.enums.SuitFeeType;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.TransactionBillQuery;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.enums.TransactionBillType;
|
||||||
|
import com.ruoyi.ss.transactionBill.domain.vo.TransactionBillVO;
|
||||||
|
import com.ruoyi.ss.transactionBill.service.TransactionBillService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author wjh
|
||||||
|
* 2025/1/4
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class BillEleRecordTask {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TransactionBillService transactionBillService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BillEleRecordService billEleRecordService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BillEleRecordConverter billEleRecordConverter;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DeviceService deviceService;
|
||||||
|
|
||||||
|
// 记录分时段订单电量
|
||||||
|
public void record() {
|
||||||
|
|
||||||
|
// 查询未结束的分时段电量订单
|
||||||
|
TransactionBillQuery query = new TransactionBillQuery();
|
||||||
|
query.setType(TransactionBillType.RECHARGE.getType());
|
||||||
|
query.setIsFinished(false);
|
||||||
|
query.setSuitFeeMode(SuitFeeMode.SMART.getMode());
|
||||||
|
query.setSuitFeeType(SuitFeeType.TIMING_COUNT.getType());
|
||||||
|
List<TransactionBillVO> billList = transactionBillService.selectSmTransactionBillList(query);
|
||||||
|
if (CollectionUtils.isEmpty(billList)) {
|
||||||
|
log.info("记录分时段订单电量:暂无未结束的分时段电量订单");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 抄表时间
|
||||||
|
LocalDateTime time = LocalDateTime.now();
|
||||||
|
// 计费时间
|
||||||
|
LocalDateTime chargeTime = time.plusHours(-1);
|
||||||
|
|
||||||
|
// 查询设备列表
|
||||||
|
List<DeviceVO> deviceList = deviceService.selectByIds(CollectionUtils.map(billList, TransactionBillVO::getDeviceId));
|
||||||
|
deviceService.pullDeviceInfoList(deviceList, null);
|
||||||
|
|
||||||
|
// 待插入的记录列表
|
||||||
|
List<BillEleRecord> recordList = new ArrayList<>();
|
||||||
|
|
||||||
|
// 记录电量
|
||||||
|
for (TransactionBillVO bill : billList) {
|
||||||
|
try {
|
||||||
|
DeviceVO device = deviceList.stream().filter(item -> Objects.equals(bill.getDeviceId(), item.getDeviceId())).findFirst().orElse(null);
|
||||||
|
if (device == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
BillEleRecord record = billEleRecordConverter.toPo(bill, device, time, chargeTime);
|
||||||
|
if (record != null) {
|
||||||
|
recordList.add(record);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("记录分时段订单电量失败,billNo:{}, {}", bill.getBillNo(), e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int insert = billEleRecordService.batchInsert(recordList);
|
||||||
|
log.info("记录分时段订单电量:共{}条记录", insert);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
package com.ruoyi.web.controller.ss;
|
||||||
|
|
||||||
|
import com.ruoyi.common.annotation.Log;
|
||||||
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordQuery;
|
||||||
|
import com.ruoyi.ss.billEleRecord.domain.BillEleRecordVO;
|
||||||
|
import com.ruoyi.ss.billEleRecord.service.BillEleRecordService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单电量记录Controller
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
* @date 2025-01-04
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/ss/billEleRecord")
|
||||||
|
public class BillEleRecordController extends BaseController
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private BillEleRecordService billEleRecordService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单电量记录列表
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('ss:billEleRecord:list')")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo list(BillEleRecordQuery query)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
startOrderBy();
|
||||||
|
List<BillEleRecordVO> list = billEleRecordService.selectBillEleRecordList(query);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出订单电量记录列表
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('ss:billEleRecord:export')")
|
||||||
|
@Log(title = "订单电量记录", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, BillEleRecordQuery query)
|
||||||
|
{
|
||||||
|
List<BillEleRecordVO> list = billEleRecordService.selectBillEleRecordList(query);
|
||||||
|
ExcelUtil<BillEleRecordVO> util = new ExcelUtil<BillEleRecordVO>(BillEleRecordVO.class);
|
||||||
|
util.exportExcel(response, list, "订单电量记录数据");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取订单电量记录详细信息
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('ss:billEleRecord:query')")
|
||||||
|
@GetMapping(value = "/{id}")
|
||||||
|
public AjaxResult getInfo(@PathVariable("id") Long id)
|
||||||
|
{
|
||||||
|
return success(billEleRecordService.selectBillEleRecordById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增订单电量记录
|
||||||
|
*/
|
||||||
|
// @PreAuthorize("@ss.hasPermi('ss:billEleRecord:add')")
|
||||||
|
// @Log(title = "订单电量记录", businessType = BusinessType.INSERT)
|
||||||
|
// @PostMapping
|
||||||
|
// public AjaxResult add(@RequestBody BillEleRecord billEleRecord)
|
||||||
|
// {
|
||||||
|
// return toAjax(billEleRecordService.insertBillEleRecord(billEleRecord));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 修改订单电量记录
|
||||||
|
// */
|
||||||
|
// @PreAuthorize("@ss.hasPermi('ss:billEleRecord:edit')")
|
||||||
|
// @Log(title = "订单电量记录", businessType = BusinessType.UPDATE)
|
||||||
|
// @PutMapping
|
||||||
|
// public AjaxResult edit(@RequestBody BillEleRecord billEleRecord)
|
||||||
|
// {
|
||||||
|
// return toAjax(billEleRecordService.updateBillEleRecord(billEleRecord));
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 删除订单电量记录
|
||||||
|
// */
|
||||||
|
// @PreAuthorize("@ss.hasPermi('ss:billEleRecord:remove')")
|
||||||
|
// @Log(title = "订单电量记录", businessType = BusinessType.DELETE)
|
||||||
|
// @DeleteMapping("/{ids}")
|
||||||
|
// public AjaxResult remove(@PathVariable Long[] ids)
|
||||||
|
// {
|
||||||
|
// return toAjax(billEleRecordService.deleteBillEleRecordByIds(ids));
|
||||||
|
// }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user