✨ 完善核销用户记录和毛利报表导出日志

This commit is contained in:
caojia
2026-10-19 16:43:14 +08:00
parent a754e8dcc6
commit 383ef55e00
14 changed files with 103 additions and 24 deletions
@@ -65,6 +65,12 @@ public class ArBalanceWriteoff extends BaseEntity
/** 核销备注 */
private String remark;
/** 执行核销的用户主键 */
private Long createUserId;
/** 执行反核销的用户主键 */
private Long cancelUserId;
/** 反核销人 */
private String cancelBy;
@@ -27,6 +27,7 @@ public interface ArBalanceWriteoffMapper
int updateCancelled(@Param("writeoffId") Long writeoffId,
@Param("reverseFlowId") Long reverseFlowId,
@Param("cancelBy") String cancelBy,
@Param("cancelUserId") Long cancelUserId,
@Param("cancelRemark") String cancelRemark,
@Param("status") String status,
@Param("effectiveStatus") String effectiveStatus);
@@ -116,6 +116,7 @@ public class ArBalanceWriteoffServiceImpl implements IArBalanceWriteoffService {
}
String operator = SecurityUtils.getUsername();
Long operatorUserId = SecurityUtils.getUserId();
String requestId = IdUtils.fastSimpleUUID();
String currency = StringUtils.hasText(bill.getCurrency()) ? bill.getCurrency().trim().toUpperCase() : "CNY";
Date writeoffDate = cmd.getWriteoffDate() != null ? cmd.getWriteoffDate() : new Date();
@@ -133,6 +134,7 @@ public class ArBalanceWriteoffServiceImpl implements IArBalanceWriteoffService {
writeoff.setWriteoffDate(writeoffDate);
writeoff.setStatus(ArBalanceWriteoffStatus.EFFECTIVE.getCode());
writeoff.setRemark(StringUtils.hasText(cmd.getRemark()) ? cmd.getRemark().trim() : null);
writeoff.setCreateUserId(operatorUserId);
writeoff.setCreateBy(operator);
writeoffMapper.insertArBalanceWriteoff(writeoff);
@@ -177,6 +179,7 @@ public class ArBalanceWriteoffServiceImpl implements IArBalanceWriteoffService {
}
String operator = SecurityUtils.getUsername();
Long operatorUserId = SecurityUtils.getUserId();
String requestId = IdUtils.fastSimpleUUID();
String cancelRemark = StringUtils.hasText(remark) ? remark.trim() : "取消余额核销";
String fromStatus = bill.getStatus();
@@ -195,7 +198,7 @@ public class ArBalanceWriteoffServiceImpl implements IArBalanceWriteoffService {
}
// 3. 核销单置为CANCELLED(口径变更后无回补流水,reverse_flow_id 置空)
if (writeoffMapper.updateCancelled(writeoffId, null, operator, cancelRemark,
if (writeoffMapper.updateCancelled(writeoffId, null, operator, operatorUserId, cancelRemark,
ArBalanceWriteoffStatus.CANCELLED.getCode(), ArBalanceWriteoffStatus.EFFECTIVE.getCode()) != 1) {
throw new ServiceException("核销记录状态已变化,请刷新后重试");
}
@@ -22,6 +22,8 @@ public class PrcProfitReportExport implements Serializable
private Integer rowCount;
/** PROCESSING 生成中,SUCCESS 成功,FAILED 失败。 */
private String exportStatus;
/** 发起导出的用户主键。 */
private Long exportUserId;
private String exportBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date exportTime;
@@ -23,8 +23,7 @@ public interface PrcProfitReportMapper
int markExportFailed(@Param("exportId") Long exportId, @Param("remark") String remark);
List<PrcProfitReportExport> selectExportsByUser(String exportBy);
List<PrcProfitReportExport> selectExports();
PrcProfitReportExport selectExportByIdAndUser(@Param("exportId") Long exportId,
@Param("exportBy") String exportBy);
PrcProfitReportExport selectExportById(@Param("exportId") Long exportId);
}
@@ -23,9 +23,9 @@ public interface IPrcProfitReportService
int failExport(Long exportId, String remark);
List<PrcProfitReportExport> selectExports(String exportBy);
List<PrcProfitReportExport> selectExports();
PrcProfitReportExport selectExport(Long exportId, String exportBy);
PrcProfitReportExport selectExport(Long exportId);
/* 提成比例维护暂停使用。
List<PrcProfitCommissionRate> selectCommissionRates();
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
// 提成功能暂停使用:import org.springframework.transaction.annotation.Transactional;
import com.bms.common.annotation.DataScope;
import com.bms.common.exception.ServiceException;
// 提成功能暂停使用:import com.bms.common.utils.SecurityUtils;
import com.bms.common.utils.SecurityUtils;
// 提成功能暂停使用:import com.bms.price.domain.PrcProfitCommissionRate;
// 提成功能暂停使用:import com.bms.price.mapper.PrcProfitCommissionRateMapper;
import com.bms.price.domain.PrcProfitReportExport;
@@ -61,6 +61,7 @@ public class PrcProfitReportServiceImpl implements IPrcProfitReportService
@Override
public int createExport(PrcProfitReportExport export)
{
export.setExportUserId(SecurityUtils.getUserId());
return profitReportMapper.insertExport(export);
}
@@ -77,15 +78,15 @@ public class PrcProfitReportServiceImpl implements IPrcProfitReportService
}
@Override
public List<PrcProfitReportExport> selectExports(String exportBy)
public List<PrcProfitReportExport> selectExports()
{
return profitReportMapper.selectExportsByUser(exportBy);
return profitReportMapper.selectExports();
}
@Override
public PrcProfitReportExport selectExport(Long exportId, String exportBy)
public PrcProfitReportExport selectExport(Long exportId)
{
return profitReportMapper.selectExportByIdAndUser(exportId, exportBy);
return profitReportMapper.selectExportById(exportId);
}
/** 将报表的多行输入拆分为去重后的查询条件,支持换行、空格、逗号和分号分隔。 */
@@ -19,8 +19,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="writeoffDate" column="writeoff_date"/>
<result property="status" column="status"/>
<result property="remark" column="remark"/>
<result property="createUserId" column="create_user_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="cancelUserId" column="cancel_user_id"/>
<result property="cancelBy" column="cancel_by"/>
<result property="cancelTime" column="cancel_time"/>
<result property="cancelRemark" column="cancel_remark"/>
@@ -31,8 +33,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectColumns">
select w.writeoff_id, w.writeoff_no, w.ar_bill_id, w.bill_no, w.customer_id, w.receipt_id, w.account_id,
w.currency, w.writeoff_amount, w.balance_flow_id, w.reverse_flow_id,
w.writeoff_date, w.status, w.remark, w.create_by, w.create_time,
w.cancel_by, w.cancel_time, w.cancel_remark,
w.writeoff_date, w.status, w.remark, w.create_user_id, w.create_by, w.create_time,
w.cancel_user_id, w.cancel_by, w.cancel_time, w.cancel_remark,
b.bill_name, b.customer_name
from ar_balance_writeoff w
left join ar_bill b on b.ar_bill_id = w.ar_bill_id
@@ -43,11 +45,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into ar_balance_writeoff (
writeoff_no, ar_bill_id, bill_no, customer_id, receipt_id, account_id, currency,
writeoff_amount, balance_flow_id, reverse_flow_id, writeoff_date,
status, remark, create_by, create_time
status, remark, create_user_id, create_by, create_time
) values (
#{writeoffNo}, #{arBillId}, #{billNo}, #{customerId}, #{receiptId}, #{accountId}, #{currency},
#{writeoffAmount}, #{balanceFlowId}, #{reverseFlowId}, #{writeoffDate},
#{status}, #{remark}, #{createBy}, sysdate()
#{status}, #{remark}, #{createUserId}, #{createBy}, sysdate()
)
</insert>
@@ -68,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update ar_balance_writeoff
set status = #{status},
reverse_flow_id = #{reverseFlowId},
cancel_user_id = #{cancelUserId},
cancel_by = #{cancelBy},
cancel_time = sysdate(),
cancel_remark = #{cancelRemark}
@@ -11,6 +11,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="storageKey" column="storage_key"/>
<result property="rowCount" column="row_count"/>
<result property="exportStatus" column="export_status"/>
<result property="exportUserId" column="export_user_id"/>
<result property="exportBy" column="export_by"/>
<result property="exportTime" column="export_time"/>
<result property="remark" column="remark"/>
@@ -18,15 +19,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="profitReportExportColumns">
select export_id, dimension, file_name, storage_key, row_count,
export_status, export_by, export_time, remark
export_status, export_user_id, export_by, export_time, remark
from prc_profit_report_export
</sql>
<insert id="insertExport" parameterType="PrcProfitReportExport" useGeneratedKeys="true" keyProperty="exportId">
insert into prc_profit_report_export (
dimension, file_name, storage_key, row_count, export_status, export_by, export_time, remark
dimension, file_name, storage_key, row_count, export_status, export_user_id, export_by, export_time, remark
) values (
#{dimension}, #{fileName}, #{storageKey}, #{rowCount}, #{exportStatus}, #{exportBy}, sysdate(), #{remark}
#{dimension}, #{fileName}, #{storageKey}, #{rowCount}, #{exportStatus}, #{exportUserId}, #{exportBy}, sysdate(), #{remark}
)
</insert>
@@ -43,15 +44,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where export_id = #{exportId} and export_status = 'PROCESSING'
</update>
<select id="selectExportsByUser" resultMap="PrcProfitReportExportResult">
<select id="selectExports" resultMap="PrcProfitReportExportResult">
<include refid="profitReportExportColumns"/>
where export_by = #{exportBy}
order by export_time desc, export_id desc
</select>
<select id="selectExportByIdAndUser" resultMap="PrcProfitReportExportResult">
<select id="selectExportById" resultMap="PrcProfitReportExportResult">
<include refid="profitReportExportColumns"/>
where export_id = #{exportId} and export_by = #{exportBy}
where export_id = #{exportId}
</select>
<resultMap type="PrcProfitReportOrderRow" id="PrcProfitReportOrderResult">