Commit 2624262e by jianan

应收管理、应付管理3

parent 97f1f7f6
......@@ -179,14 +179,14 @@ public class ApiCommissionController {
}
/**
* 生成实际出账(发佣)记录
* 生成实际出账(发佣)记录,并设置检核日期
*
* @param generateFortuneRequest
* @param request
* @return
*/
@PostMapping("/generate/fortune")
@Operation(summary = "生成实际出账(发佣)记录")
@Operation(summary = "生成实际出账(发佣)记录,并设置检核日期")
public Result<Boolean> generateFortune(@RequestBody GenerateFortuneRequest generateFortuneRequest,
HttpServletRequest request) {
List<String> commissionBizIdList = generateFortuneRequest.getCommissionBizIdList();
......
......@@ -412,13 +412,13 @@ public class ApiFortuneController {
}
/**
* 修改发佣状态
* 修改出账状态
*
* @param fortuneStatusUpdateRequest
* @return
*/
@PostMapping("/update/status")
@Operation(summary = "修改保单发佣状态")
@Operation(summary = "修改出账状态")
public Result<Boolean> updateFortuneStatus(@RequestBody FortuneStatusUpdateRequest fortuneStatusUpdateRequest) {
if (fortuneStatusUpdateRequest == null || CollectionUtils.isEmpty(fortuneStatusUpdateRequest.getFortuneBizIdList())) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
......@@ -481,7 +481,6 @@ public class ApiFortuneController {
// 查询条件
Wrapper<Fortune> queryWrapper = fortuneService.getQueryWrapper(fortuneQueryRequest);
// todo 关联预计发佣查询列表
Page<Fortune> fortunePage = fortuneService.page(new Page<>(current, size),
queryWrapper);
......
......@@ -10,7 +10,6 @@ import java.util.List;
/**
* 查询fortune请求
*
*/
@EqualsAndHashCode(callSuper = true)
@Data
......@@ -27,5 +26,11 @@ public class FortuneQueryRequest extends PageDto implements Serializable {
@Schema(description = "保单号")
private String policyNo;
/**
* 检核日期
*/
@Schema(description = "检核日期")
private String reconciliationYearMonth;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -14,8 +14,8 @@ public class FortuneStatusUpdateRequest {
private List<String> fortuneBizIdList;
/**
* 发佣状态
* 出账状态
*/
@Schema(description = "发佣状态 '0'-'待出账','1'-'可出账','2'-'已出账'")
@Schema(description = "出账状态 0=待出账 1=可出帐,待检核 2=完成出账 3=部分出账 4=保留 5=已失效 6=可出帐,检核完成")
private String status;
}
......@@ -15,6 +15,6 @@ public class GenerateFortuneRequest {
@Schema(description = "expected fortune id 列表")
private List<Long> expectedFortuneIdList;
@Schema(description = "发佣检核日期")
private LocalDate payoutDate;
@Schema(description = "检核日期")
private String reconciliationYearMonth;
}
package com.yd.csf.service.enums;
/**
* 发佣状态枚举
* 出账状态枚举
*/
public enum FortuneStatusEnum {
//发佣状态枚举
//出账状态枚举
WAIT("待出账", "0"),
CAN_SEND("可出账", "1"),
CAN_SEND("可出账, 待检核", "1"),
CHECKED("可出账, 已检核", "4"),
SENT("已出账", "2"),
MATCH_FAIL("未找到当前预计发佣对应的来佣", "3"),
......
......@@ -27,6 +27,11 @@ public class Fortune implements Serializable {
private String expectedFortuneBizId;
/**
* 检核年月
*/
private String reconciliationYearMonth;
/**
* 保单发佣批次ID
*/
private String batchBizId;
......
......@@ -36,7 +36,9 @@ import org.springframework.transaction.support.TransactionTemplate;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -327,7 +329,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest) {
if (generateFortuneRequest.getPayoutDate() == null) {
if (StringUtils.isEmpty(generateFortuneRequest.getReconciliationYearMonth())) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "请选择发佣检核日期");
}
......@@ -340,7 +342,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
}
// 2. 根据本次发佣日期,查询本期待发佣记录
List<Fortune> fortuneList = fortuneService.list(new QueryWrapper<Fortune>().in("payout_date", generateFortuneRequest.getPayoutDate()));
List<Fortune> fortuneList = fortuneService.list(new QueryWrapper<Fortune>().in("reconciliation_year_month", generateFortuneRequest.getReconciliationYearMonth()));
// 3.根据本次发佣日期,删除旧的发佣记录,以便重新计算
fortuneService.removeByIds(fortuneList);
......@@ -353,7 +355,7 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
List<Commission> commissionList = this.list(new QueryWrapper<Commission>().in("policy_no", policyNoSet));
// 5. 构建实际的初始发佣记录
List<Fortune> newFortuneList = buildNewFortunes(expectedFortuneList, commissionList);
List<Fortune> newFortuneList = buildNewFortunes(expectedFortuneList, commissionList, generateFortuneRequest.getReconciliationYearMonth());
// List<Fortune> newFortuneList = new ArrayList<>();
// for (ExpectedFortune expectedFortune : filteredExpectedFortuneList) {
// Fortune fortune = new Fortune();
......@@ -396,7 +398,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
* 构建新的发佣记录
*/
private List<Fortune> buildNewFortunes(List<ExpectedFortune> expectedFortuneList,
List<Commission> commissionList) {
List<Commission> commissionList,
String reconciliationYearMonth) {
// 构建来佣记录映射,用于快速查找
Map<String, Commission> commissionByPolicyPeriod = commissionList.stream()
.collect(Collectors.toMap(
......@@ -414,6 +417,8 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
fortune.setAmount(expectedFortune.getCurrentPaymentAmount());
fortune.setExpectedFortuneBizId(expectedFortune.getExpectedFortuneBizId());
fortune.setStatus(FortuneStatusEnum.CAN_SEND.getItemValue());
// 检核日期
fortune.setReconciliationYearMonth(reconciliationYearMonth);
// 关联来佣业务ID
String key = buildPolicyPeriodKey(expectedFortune.getPolicyNo(), expectedFortune.getFortunePeriod());
......
......@@ -149,8 +149,8 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
// 校验发佣记录状态
StringBuilder validateMsg = new StringBuilder();
for (Fortune fortune : fortuneList) {
if (StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.WAIT.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("为待出账,不能生成出账记录; ");
if (!StringUtils.equals(fortune.getStatus(), FortuneStatusEnum.CHECKED.getItemValue())) {
validateMsg.append(fortune.getPolicyNo()).append("-").append(fortune.getBroker()).append("未检核,不能生成出账记录; ");
}
}
if (StringUtils.isNotBlank(validateMsg.toString())) {
......@@ -278,6 +278,12 @@ public class FortuneServiceImpl extends ServiceImpl<FortuneMapper, Fortune>
updateFortune.setStatus(fortuneStatusUpdateRequest.getStatus());
updateList.add(updateFortune);
}
// 更新预计发佣的状态
if (StringUtils.equals(fortuneStatusUpdateRequest.getStatus(), FortuneStatusEnum.CHECKED.getItemValue())) {
for (Fortune fortune : fortuneList) {
// fortune.setExpectedFortuneStatus(FortuneStatusEnum.CHECKED.getItemValue());
}
}
return this.updateBatchById(updateList);
}
......
......@@ -27,6 +27,12 @@ public class FortuneVO implements Serializable {
private String fortuneBizId;
/**
* 检核年月
*/
@Schema(description = "检核年月")
private String reconciliationYearMonth;
/**
* 保单号
*/
@Schema(description = "保单号")
......
......@@ -7,6 +7,9 @@
<resultMap id="BaseResultMap" type="com.yd.csf.service.model.Fortune">
<id property="id" column="id" />
<result property="fortuneBizId" column="fortune_biz_id" />
<result property="expectedFortuneBizId" column="expected_fortune_biz_id" />
<result property="reconciliationYearMonth" column="reconciliation_year_month" />
<result property="batchBizId" column="batch_biz_id" />
<result property="commissionBizId" column="commission_biz_id" />
<result property="policyNo" column="policy_no" />
<result property="fortunePeriod" column="fortune_period" />
......@@ -37,7 +40,7 @@
</resultMap>
<sql id="Base_Column_List">
id,fortune_biz_id,commission_biz_id,policy_no,fortune_period,fortune_total_period,broker_biz_id,
id,fortune_biz_id,expected_fortune_biz_id,reconciliation_year_month,batch_biz_id,commission_biz_id,policy_no,fortune_period,fortune_total_period,broker_biz_id,
team_biz_id,grade_commission_rate,share_rate,fortune_name,fortune_type,
amount,currency,status,payout_date,is_tax,
tax_amount,net_amount,salary_biz_id,base_rule_biz_id,settlement_biz_id,
......@@ -52,9 +55,12 @@
count(distinct f.policy_no) as totalPolicyCount
from fortune f
left join commission c on f.commission_biz_id = c.commission_biz_id
where f.id in
where
<if test="fortuneIdList != null and fortuneIdList.size() > 0">
f.id in
<foreach collection="fortuneIdList" item="fortuneId" open="(" close=")" separator=",">
#{fortuneId}
</foreach>
</if>
</select>
</mapper>
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