Commit 2624262e by jianan

应收管理、应付管理3

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