Commit 17350865 by jianan

出账检核-增加币种21

parent 2bf113c8
...@@ -702,7 +702,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -702,7 +702,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
ExpectedFortune updateObj = new ExpectedFortune(); ExpectedFortune updateObj = new ExpectedFortune();
updateObj.setId(expectedFortune.getId()); updateObj.setId(expectedFortune.getId());
updateObj.setPayableNo(this.createPayableNo("R", currentSeq + i + 1)); updateObj.setPayableNo(this.createPayableNo("R",expectedFortune.getPayoutDate(), policyNo, expectedFortune.getFortunePeriod()));
updateObj.setFortuneType(GetDictItemListByDictTypeResponse.getItemValue(dictTypeResponses, updateObj.setFortuneType(GetDictItemListByDictTypeResponse.getItemValue(dictTypeResponses,
"csf_fortune_type", expectedFortune.getFortuneName())); "csf_fortune_type", expectedFortune.getFortuneName()));
...@@ -1048,7 +1048,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1048,7 +1048,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
} }
// 查询最新一条有 payableNo 记录 // 查询最新一条有 payableNo 记录
int currentSeq = iExpectedFortuneService.getPayableNoCurrentSeq(); // int currentSeq = iExpectedFortuneService.getPayableNoCurrentSeq();
List<ExpectedFortune> fortuneList = new ArrayList<>(); List<ExpectedFortune> fortuneList = new ArrayList<>();
for (ExpectedFortuneAddRequest expectedFortuneDto : fortuneAddRequestList) { for (ExpectedFortuneAddRequest expectedFortuneDto : fortuneAddRequestList) {
...@@ -1073,7 +1073,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1073,7 +1073,7 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
// 预计发佣类型名称 // 预计发佣类型名称
expectedFortune.setFortuneName(queryByDict(expectedFortuneDto.getFortuneType())); expectedFortune.setFortuneName(queryByDict(expectedFortuneDto.getFortuneType()));
// 应付款编号(序号递增) // 应付款编号(序号递增)
expectedFortune.setPayableNo(this.createPayableNo(expectedFortune.getFortuneBizType(), ++currentSeq)); expectedFortune.setPayableNo(this.createPayableNo(expectedFortune.getFortuneBizType(), expectedFortuneDto.getPayoutDate(), expectedFortuneDto.getPolicyNo(), expectedFortuneDto.getFortunePeriod()));
// 已出帐金额、待出帐金额、已出帐比例、待出帐比例 // 已出帐金额、待出帐金额、已出帐比例、待出帐比例
...@@ -1238,17 +1238,34 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService ...@@ -1238,17 +1238,34 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
} }
/** /**
* 创建应付款编号 应付款类型-CSF-年份后两位-6位数字(不重复) * 创建应付款编号 应付单类型(R/U)+预计年月+保单号后4位(如不够用0补齐)+出账期数(3位)
* *
* @param fortuneBizType 预计发佣业务类型 * @param fortuneBizType 预计发佣业务类型
* @param seq 序号 * @param payoutDate 预计出账日期
* @param policyNo 保单号
* @param fortunePeriod 预计出账期数
* @return * @return
*/ */
private String createPayableNo(String fortuneBizType, int seq) { public String createPayableNo(String fortuneBizType, LocalDate payoutDate, String policyNo, int fortunePeriod) {
return String.format("%s%s%s", // 1. 安全获取保单号后4位
fortuneBizType + "-CSF", String last4Chars = "";
LocalDate.now().getYear() % 100, if (policyNo != null && !policyNo.isEmpty()) {
String.format("%06d", seq)); int startIdx = Math.max(0, policyNo.length() - 4);
last4Chars = policyNo.substring(startIdx);
}
// 2. 字符串左补0至4位
// %4s 表示最小宽度为4,不足部分默认用空格填充在左侧
// replace(' ', '0') 将填充的空格替换为0,实现左补0效果
String formattedPolicySuffix = String.format("%4s", last4Chars).replace(' ', '0');
// 3. 组装最终字符串
return String.format("%s%04d%02d%s%03d",
fortuneBizType,
payoutDate.getYear(),
payoutDate.getMonthValue(),
formattedPolicySuffix,
fortunePeriod);
} }
/** /**
......
...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; ...@@ -5,6 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
@Data @Data
...@@ -98,7 +99,7 @@ public class ExpectedFortuneAddRequest { ...@@ -98,7 +99,7 @@ public class ExpectedFortuneAddRequest {
*/ */
@Schema(description = "出账日 (估)") @Schema(description = "出账日 (估)")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date payoutDate; private LocalDate payoutDate;
/** /**
* 出账日 (实) * 出账日 (实)
......
...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO; import com.yd.csf.service.vo.ExpectedFortuneStatisticsVO;
import com.yd.csf.service.vo.PayableReportVO; import com.yd.csf.service.vo.PayableReportVO;
import java.time.LocalDate;
import java.util.List; import java.util.List;
/** /**
...@@ -39,7 +40,8 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> { ...@@ -39,7 +40,8 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> {
/** /**
* 应付款报表 - 按保单号和期数维度统计(分页) * 应付款报表 - 按保单号和期数维度统计(分页)
* @param page 分页参数 *
* @param page 分页参数
* @param expectedFortuneIds 预计发佣ID列表 * @param expectedFortuneIds 预计发佣ID列表
* @return 应付款报表VO分页列表 * @return 应付款报表VO分页列表
*/ */
...@@ -53,15 +55,20 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> { ...@@ -53,15 +55,20 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> {
/** /**
* 生成应付款编号(序号递增) 格式:发佣类型-CSF+年份+序号 * 生成应付款编号(序号递增) 格式:发佣类型-CSF+年份+序号
* @param fortuneType 发佣类型 *
* @param fortuneBizType 应付款类型
* @param payoutDate 出账日期
* @param policyNo 保单号
* @param fortunePeriod 出账期数
* @return 应付款编号 * @return 应付款编号
*/ */
String getPayableNo(String fortuneType); String getPayableNo(String fortuneBizType, LocalDate payoutDate, String policyNo, Integer fortunePeriod);
/** /**
* 查询预计发佣和实际发佣的分页列表(手动分页) * 查询预计发佣和实际发佣的分页列表(手动分页)
* @param pageNo 页码(从 1 开始) *
* @param pageSize 每页大小 * @param pageNo 页码(从 1 开始)
* @param pageSize 每页大小
* @param queryWrapper 查询条件 * @param queryWrapper 查询条件
* @return 分页结果 * @return 分页结果
*/ */
...@@ -69,6 +76,7 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> { ...@@ -69,6 +76,7 @@ public interface IExpectedFortuneService extends IService<ExpectedFortune> {
/** /**
* 查询预计发佣和实际发佣的统计数据(使用 SQL 聚合) * 查询预计发佣和实际发佣的统计数据(使用 SQL 聚合)
*
* @param queryWrapper 查询条件 * @param queryWrapper 查询条件
* @return 统计信息 * @return 统计信息
*/ */
......
...@@ -232,12 +232,26 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe ...@@ -232,12 +232,26 @@ public class ExpectedFortuneServiceImpl extends ServiceImpl<ExpectedFortuneMappe
} }
@Override @Override
public String getPayableNo(String fortuneType) { public String getPayableNo(String fortuneBizType, LocalDate payoutDate, String policyNo, Integer fortunePeriod) {
Integer currentSeq = getPayableNoCurrentSeq(); // 1. 安全获取保单号后4位
return String.format("%s%s%s", String last4Chars = "";
fortuneType + "-CSF", if (policyNo != null && !policyNo.isEmpty()) {
LocalDate.now().getYear() % 100, int startIdx = Math.max(0, policyNo.length() - 4);
currentSeq + 1); last4Chars = policyNo.substring(startIdx);
}
// 2. 字符串左补0至4位
// %4s 表示最小宽度为4,不足部分默认用空格填充在左侧
// replace(' ', '0') 将填充的空格替换为0,实现左补0效果
String formattedPolicySuffix = String.format("%4s", last4Chars).replace(' ', '0');
// 3. 组装最终字符串
return String.format("%s%04d%02d%s%03d",
fortuneBizType,
payoutDate.getYear(),
payoutDate.getMonthValue(),
formattedPolicySuffix,
fortunePeriod);
} }
@Override @Override
......
...@@ -815,7 +815,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune> ...@@ -815,7 +815,7 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
private ExpectedFortune createExpectedFortune(FortuneAddRequest fortuneAddRequest, Policy policy, String fortuneName) { private ExpectedFortune createExpectedFortune(FortuneAddRequest fortuneAddRequest, Policy policy, String fortuneName) {
// 应付款编号(序号递增) // 应付款编号(序号递增)
String payableNo = expectedFortuneService.getPayableNo(fortuneAddRequest.getFortuneType()); String payableNo = expectedFortuneService.getPayableNo(fortuneAddRequest.getFortuneBizType(), fortuneAddRequest.getPayoutDate(), policy.getPolicyNo(), fortuneAddRequest.getFortunePeriod());
// 创建 expectedFortune // 创建 expectedFortune
ExpectedFortune expectedFortune = new ExpectedFortune(); ExpectedFortune expectedFortune = new ExpectedFortune();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment