Commit fe4bcc57 authored by zhaji's avatar zhaji

"feature-zhaJi:修改减员退费校验逻辑"

parent 4e065453
......@@ -409,7 +409,7 @@ public interface CommonConstants {
/**
* 工资最小不能小于零
*/
public static final String MONEY_MAX = "999999.99";
public static final String MONEY_MAX = "9999999.99";
/**
* 工资最小不能小于零
......@@ -417,9 +417,10 @@ public interface CommonConstants {
public static final String MONEY_MIN = "0";
public static final int TWENTY_INT = 20;
public static final BigDecimal MONEY_MAX = new BigDecimal("999999.99");
public static final String ERROR_MSG_PRFIX = "error=";
public static final String SUCCESS_MSG_PREFIX = "success=";
public static final int SIXTY_INT = 60;
}
......@@ -333,4 +333,15 @@ public class InsurancesConstants {
*/
public static final String EMP_NAME_MAX_LENGTH_ERROR = "姓名不能超过20个字符";
/**
* 员工减员记录不存在
*/
public static final String REFUND_IS_NULL = "员工减员记录不存在";
/**
* 已更新保单减员退费,不能再次更新
*/
public static final String REFUND_MONEY_IS_NOT_NULL = "已更新保单减员退费,不能再次更新";
}
......@@ -15,7 +15,6 @@ import java.util.Date;
* @date 2022-07-25 14:20:16
*/
@Data
@TableName("t_insurance_operate")
@Schema(description = "商险操作表")
public class TInsuranceOperate implements Serializable {
/**
......
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -17,18 +19,36 @@ public class TInsuranceRefund implements Serializable {
/**
* 主键id
*/
private Long id;
private String id;
/**
* 保单信息主键
*/
private Long insDetailId;
private String insDetailId;
/**
* 减员状态
*/
private Integer reduceHandleStatus;
/**
* 员工姓名
*/
@Schema(description = "员工姓名")
private String empName;
/**
* 员工身份证号
*/
@Schema(description = "员工身份证号")
private String empIdcardNo;
/**
* 保单编号
*/
@Schema(description = "保单编号")
private String policyNo;
/**
* 退费金额
*/
......@@ -42,7 +62,7 @@ public class TInsuranceRefund implements Serializable {
/**
* 减员创建时间
*/
private Date createTime;
private LocalDateTime createTime;
/**
* 减员创建人
......@@ -54,6 +74,13 @@ public class TInsuranceRefund implements Serializable {
*/
private String createName;
/**
* 是否删除 0未删除/1删除
*/
@Schema(description = "是否删除 0否/1是")
private Integer deleteFlag;
private static final long serialVersionUID = 1L;
......
package com.yifu.cloud.plus.v1.yifu.insurances.entity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author zhaji
* @description TODO
* @date 2022-07-26 15:28:49
*/
@Data
public class TInsuranceRefundDetail implements Serializable {
/**
* 主键id
*/
private String id;
/**
* 保单信息主键
*/
private String insDetailId;
/**
* 减员状态
*/
private Integer reduceHandleStatus;
/**
* 员工姓名
*/
@Schema(description = "员工姓名")
private String empName;
/**
* 员工身份证号
*/
@Schema(description = "员工身份证号")
private String empIdcardNo;
/**
* 保单编号
*/
@Schema(description = "保单编号")
private String policyNo;
/**
* 退费金额
*/
private BigDecimal refundMoney;
/**
* 备注
*/
private String remark;
/**
* 减员创建时间
*/
private LocalDateTime createTime;
/**
* 减员创建人
*/
private String createBy;
/**
* 减员创建人姓名
*/
private String createName;
/**
* 是否删除 0未删除/1删除
*/
@Schema(description = "是否删除 0否/1是")
private Integer deleteFlag;
private static final long serialVersionUID = 1L;
}
......@@ -17,6 +17,12 @@ public class InsuranceRefundCheck implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Schema(description = "主键")
private String id;
/**
* 员工姓名
*/
......@@ -26,7 +32,14 @@ public class InsuranceRefundCheck implements Serializable {
* 员工身份证号码
*/
@Schema(description = "员工身份证号码")
private String empIdCardNo;
private String empIdcardNo;
/**
* 保单编号
*/
@Schema(description = "保单编号")
private String policyNo;
/**
* 保险公司名称
*/
......@@ -48,12 +61,6 @@ public class InsuranceRefundCheck implements Serializable {
@Schema(description = "保单结束日期")
private String policyEnd;
/**
* 退款金额
*/
@Schema(description = "退款金额")
private String refundMoney;
/**
* 备注
*/
......
......@@ -60,6 +60,12 @@ public class InsuranceRefundListVo implements Serializable {
@Schema(description = "投保岗位")
private String post;
/**
* 保单编号
*/
@Schema(description = "保单编号")
private String policyNo;
/**
* 商险购买地省code
*/
......
......@@ -42,6 +42,12 @@ public class InsuredListVo implements Serializable {
@Schema(description = "员工身份证号")
private String empIdcardNo;
/**
* 减员状态 1待减员 2减员中3减员退回
*/
@Schema(description = "减员状态 1待减员 2减员中3减员退回")
private Integer reduceHandleStatus;
/**
* 投保类型, 1新增、3批增、4替换
*/
......
......@@ -102,9 +102,7 @@ public class InsuredParam implements Serializable {
/**
* 派单日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "派单日期")
@ExcelProperty("派单日期")
private LocalDateTime createTime;
private String createTime;
}
......@@ -16,6 +16,12 @@ import java.io.Serializable;
public class RefundMoneyParam implements Serializable {
private static final long serialVersionUID = -2689686777914935788L;
/**
* 主键
*/
@Schema(description = "主键")
private String id;
/**
* 员工姓名
*/
......
......@@ -201,9 +201,9 @@ public class TInsuranceDetailController {
* @date 2022-07-19
* @since v1.0
*/
@PostMapping("/checkInsuranceRefundList")
public R checkInsuranceRefundList(@RequestBody List<InsuranceRefundCheck> insuranceRefundCheckList){
return tInsuranceDetailService.checkInsuranceRefundList(insuranceRefundCheckList);
@PostMapping("/saveInsuranceRefund")
public R saveInsuranceRefund(@RequestBody @Valid @Size(min = 1,message = "导入减员列表不能为空") List<InsuranceRefundCheck> insuranceRefundCheckList){
return tInsuranceDetailService.saveInsuranceRefund(insuranceRefundCheckList);
}
/**
......@@ -215,7 +215,7 @@ public class TInsuranceDetailController {
*/
@PostMapping("/settleMonthChange")
@Operation(summary = "变更结算月", description = "变更结算月")
public R settleMonthChange(@RequestBody List<SettleMonthChangeCheckParam> settleMonthCheckList){
public R settleMonthChange(@RequestBody @Valid @Size(min = 1,message = "变更结算月不能为空") List<SettleMonthChangeCheckParam> settleMonthCheckList){
return tInsuranceDetailService.settleMonthChange(settleMonthCheckList);
}
......@@ -228,7 +228,7 @@ public class TInsuranceDetailController {
*/
@PostMapping("/deptChange")
@Operation(summary = "变更所属项目", description = "变更所属项目")
public R deptChange(@RequestBody List<DeptChangeCheckParam> deptChangeCheckList){
public R deptChange(@RequestBody @Valid @Size(min = 1,message = "变更所属项目不能为空")List<DeptChangeCheckParam> deptChangeCheckList){
return tInsuranceDetailService.deptChange(deptChangeCheckList);
}
......@@ -351,7 +351,6 @@ public class TInsuranceDetailController {
return tInsuranceDetailService.selectByTypeId(id);
}
/**
* 出险
*
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceRefundDetail;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -140,4 +141,13 @@ public interface TInsuranceDetailMapper extends BaseMapper<TInsuranceDetail> {
* @return {@link List< TInsuranceDetail>}
*/
List<TInsuranceDetail> selectDetailListByIds(@Param("idList") String [] idList);
/**
* 查询保单减员退费信息
*
* @author zhaji
* @param refundDetail
* @return {@link TInsuranceRefundDetail}
*/
TInsuranceRefundDetail selectRefundDetail(@Param("param") TInsuranceRefundDetail refundDetail);
}
......@@ -129,13 +129,13 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> {
/***********************减员办理********************************/
/**
* 减员导入校验
* 减员导入
*
* @author zhaji
* @param insuranceRefundCheckList 减员表
* @return {@link R}
*/
R checkInsuranceRefundList(List<InsuranceRefundCheck> insuranceRefundCheckList);
R saveInsuranceRefund(List<InsuranceRefundCheck> insuranceRefundCheckList);
/**
* 已投保列表分页查询
......
......@@ -9,7 +9,6 @@ import org.springframework.stereotype.Service;
* @description 针对表【t_insurance_refund(减员信息表)】的数据库操作Service
* @createDate 2022-07-25 21:06:36
*/
@Service
public interface TInsuranceRefundService extends IService<TInsuranceRefund> {
}
......@@ -53,6 +53,10 @@ public class TInsuranceCompanyServiceImpl extends ServiceImpl<TInsuranceCompanyM
if (!CommonConstants.ZERO_STRING.equals(billingType) && !CommonConstants.ONE_STRING.equals(billingType)){
return R.failed("计费方式格式不正确");
}
String companyName = insuranceCompany.getCompanyName();
if (companyName.length()>CommonConstants.SIXTY_INT){
return R.failed("保险公司名称过长");
}
boolean b = companyIsExists(insuranceCompany.getCompanyName());
if (!b){
insuranceCompany.setCreateBy(user.getId());
......@@ -90,6 +94,10 @@ public class TInsuranceCompanyServiceImpl extends ServiceImpl<TInsuranceCompanyM
return R.failed("要修改的保险公司不存在或已被删除");
}
String companyName = one.getCompanyName();
String newCompanyName = insuranceCompany.getCompanyName();
if (newCompanyName.length()>CommonConstants.SIXTY_INT){
return R.failed("要修改的保险公司名称过长");
}
//如果当前保险公司名称和修改后的名称不同
if (!companyName.equals(insuranceCompany.getCompanyName())){
//校验旧的保险公司名称是否已存在对应的商险信息
......
package com.yifu.cloud.plus.v1.yifu.insurances.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -36,9 +38,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.sql.Array;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
......@@ -73,6 +73,8 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
private TInsuranceOperateService tInsuranceOperateService;
@Resource
private CheckDaprUtil checkDaprUtil;
@Resource
private TInsuranceRefundService tInsuranceRefundService;
/***********************商险办理********************************/
......@@ -1423,6 +1425,8 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
}
/***********************减员办理********************************/
/**
* 减员导入校验
*
......@@ -1430,14 +1434,10 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
* @param insuranceRefundCheckList 减员表
* @return {@link R}
*/
@Override
public R checkInsuranceRefundList(List<InsuranceRefundCheck> insuranceRefundCheckList) {
YifuUser user = SecurityUtils.getUser();
if(!Common.isNotEmpty(insuranceRefundCheckList)){
return R.failed("当前导入的减员信息为空");
}
List<InsuranceRefundCheck> errorList = new ArrayList(128);
List<TInsuranceDetail> successList = new ArrayList<>();
public Map<String,List<InsuranceRefundCheck>> checkInsuranceRefundList(List<InsuranceRefundCheck> insuranceRefundCheckList){
List<InsuranceRefundCheck> errorList = new ArrayList<>(128);
List<InsuranceRefundCheck> successList = new ArrayList<>();
Map<String,List<InsuranceRefundCheck>> map = new HashMap<>();
for (InsuranceRefundCheck param : insuranceRefundCheckList) {
//员工姓名
String empName = param.getEmpName();
......@@ -1448,7 +1448,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
}
//员工身份证
String empIdCardNo = param.getEmpIdCardNo();
String empIdCardNo = param.getEmpIdcardNo();
if(StringUtils.isBlank(empIdCardNo)){
param.setErrorMessage(InsurancesConstants.EMP_IDCARD_NO_NOT_EMPTY);
errorList.add(param);
......@@ -1488,7 +1488,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
}
// 身份证号位数校验(18 位合法)
if (ValidityUtil.validateIDCard(param.getEmpIdCardNo())){
if (ValidityUtil.validateIDCard(param.getEmpIdcardNo())){
param.setErrorMessage(InsurancesConstants.EMP_IDCARD_NO_NOT_LEGITIMATE);
errorList.add(param);
continue;
......@@ -1515,6 +1515,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
errorList.add(param);
continue;
}
//当前保单信息的不是已投保状态不能导入
Integer buyHandleStatus = one.getBuyHandleStatus();
if (CommonConstants.THREE_INT != buyHandleStatus){
param.setErrorMessage(InsurancesConstants.REFUND_ERROR);
......@@ -1546,16 +1547,55 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
errorList.add(param);
continue;
}
one.setReduceHandleStatus(CommonConstants.ONE_INT);
one.setUpdateTime(LocalDateTime.now());
one.setUpdateBy(user.getId());
successList.add(one);
param.setId(one.getId());
successList.add(param);
}
map.put("successList",successList);
map.put("errorList",errorList);
return map;
};
/**
* 减员导入
*
* @author zhaji
* @param insuranceRefundCheckList 减员表
* @return {@link R}
*/
@Override
public R saveInsuranceRefund(List<InsuranceRefundCheck> insuranceRefundCheckList) {
YifuUser user = SecurityUtils.getUser();
if(!Common.isNotEmpty(insuranceRefundCheckList)){
return R.failed("当前导入的减员信息为空");
}
//批量更新减员状态
Map<String, List<InsuranceRefundCheck>> refundMap = checkInsuranceRefundList(insuranceRefundCheckList);
List<InsuranceRefundCheck> successList = refundMap.get("successList");
if (CollectionUtils.isNotEmpty(successList)){
this.updateBatchById(successList);
List<TInsuranceRefund> refundList= new ArrayList<>();
LambdaUpdateWrapper<TInsuranceDetail> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(TInsuranceDetail :: getUpdateBy,user.getId())
.set(TInsuranceDetail :: getUpdateTime,LocalDateTime.now())
.set(TInsuranceDetail :: getReduceHandleStatus,CommonConstants.ONE_INT);
for (InsuranceRefundCheck refund : successList) {
TInsuranceRefund insuranceRefund = new TInsuranceRefund();
insuranceRefund.setInsDetailId(refund.getId());
insuranceRefund.setEmpName(refund.getEmpName());
insuranceRefund.setEmpIdcardNo(refund.getEmpIdcardNo());
insuranceRefund.setEmpName(refund.getEmpName());
insuranceRefund.setPolicyNo(refund.getPolicyNo());
insuranceRefund.setReduceHandleStatus(CommonConstants.ONE_INT);
insuranceRefund.setCreateBy(user.getId());
insuranceRefund.setCreateName(user.getNickname());
insuranceRefund.setCreateTime(LocalDateTime.now());
insuranceRefund.setRemark(refund.getRemark());
refundList.add(insuranceRefund);
updateWrapper.eq(TInsuranceDetail :: getId,refund.getId());
update(updateWrapper);
}
return R.ok(errorList);
tInsuranceRefundService.saveBatch(refundList);
}
List<InsuranceRefundCheck> errorList = refundMap.get("errorList");
return R.ok(errorList,"校验完成,成功:"+successList.size()+"条,失败:"+errorList.size()+"条");
}
/**
......@@ -1573,7 +1613,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
//根据项目编码获取项目名称
List<String> collect = insuranceList.getRecords().stream().map(e -> e.getDeptNo()).distinct().collect(Collectors.toList());
R<SetInfoVo> setInfoByCodes = archivesDaprUtil.getSetInfoByCodes(collect);
if (null != setInfoByCodes && setInfoByCodes.getCode() != CommonConstants.SUCCESS && Common.isNotNull(setInfoByCodes.getData())) {
if (null != setInfoByCodes && setInfoByCodes.getCode() == CommonConstants.SUCCESS && Common.isNotNull(setInfoByCodes.getData())) {
Map<String, ProjectSetInfoVo> data = setInfoByCodes.getData().getProjectSetInfoVoMap();
for (InsuredListVo record : insuranceList.getRecords()) {
ProjectSetInfoVo jsonObject = data.get(record.getDeptNo());
......@@ -2077,8 +2117,7 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
insuranceDetail.setIsUse(CommonConstants.ONE_INT);
insuranceDetail.setUpdateBy(user.getId());
insuranceDetail.setUpdateTime(LocalDateTime.now());
updateById(insuranceDetail);
return null;
return R.ok(updateById(insuranceDetail),"出险成功");
}
/**
......@@ -2091,15 +2130,31 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
@Override
public R updateRefundMoney(List<RefundMoneyParam> paramList) {
YifuUser user = SecurityUtils.getUser();
List<TInsuranceRefund> insuranceRefundList = new ArrayList<>();
Map<String, List<RefundMoneyParam>> map = refundMoneyCheck(paramList);
map.get("errorList");
List<RefundMoneyParam> successList = map.get("successList");
if (CollectionUtils.isNotEmpty(successList)){
for (RefundMoneyParam param : successList) {
TInsuranceRefund insuranceRefund = new TInsuranceRefund();
insuranceRefund.setInsDetailId(param.getId());
insuranceRefund.setRefundMoney(new BigDecimal(param.getRefundMoney()));
insuranceRefund.setReduceHandleStatus(CommonConstants.FOUR_INT);
insuranceRefund.setCreateBy(user.getId());
insuranceRefund.setCreateName(user.getNickname());
insuranceRefund.setCreateTime(LocalDateTime.now());
insuranceRefundList.add(insuranceRefund);
}
tInsuranceRefundService.saveBatch(insuranceRefundList);
}
return R.ok(map.get("errorList"));
}
/**
* 校验保单退费
*
* @author zhaji
* @param paramList 变更列表
* @return {@link R}
*/
public Map<String,List<RefundMoneyParam>> refundMoneyCheck(List<RefundMoneyParam> paramList){
Map<String,List<RefundMoneyParam>> map = new HashMap<>(16);
......@@ -2162,10 +2217,25 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
errorList.add(param);
continue;
}
//必填格式校通过后查询对应的保单信息
TInsuranceRefundDetail refundDetail = new TInsuranceRefundDetail();
refundDetail.setEmpName(empName);
refundDetail.setEmpIdcardNo(empIdcardNo);
refundDetail.setPolicyNo(policyNo);
TInsuranceRefundDetail tInsuranceRefundDetail = this.baseMapper.selectRefundDetail(refundDetail);
if(Common.isEmpty(tInsuranceRefundDetail)){
param.setErrorMessage(InsurancesConstants.REFUND_IS_NULL);
errorList.add(param);
continue;
}
if ( null != tInsuranceRefundDetail.getRefundMoney()){
param.setErrorMessage(InsurancesConstants.REFUND_MONEY_IS_NOT_NULL);
errorList.add(param);
continue;
}
param.setId(tInsuranceRefundDetail.getInsDetailId());
successList.add(param);
}
map.put("errorList",errorList);
map.put("successList",successList);
return map;
......@@ -2339,4 +2409,5 @@ public class TInsuranceDetailServiceImpl extends ServiceImpl<TInsuranceDetailMap
map.put("successList",successList);
return map;
}
}
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceOperate">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.insurances.mapper.TInsuranceOperateMapper">
<resultMap id="BaseResultMap" type="com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceOperate">
<id property="id" column="ID" jdbcType="VARCHAR"/>
......
......@@ -8,6 +8,9 @@
<id property="id" column="ID" jdbcType="BIGINT"/>
<result property="insDetailId" column="INS_DETAIL_ID" jdbcType="BIGINT"/>
<result property="reduceHandleStatus" column="REDUCE_HANDLE_STATUS" jdbcType="TINYINT"/>
<result property="empName" column="EMP_NAME" jdbcType="VARCHAR"/>
<result property="empIdcardNo" column="EMP_IDCARD_NO" jdbcType="VARCHAR"/>
<result property="policyNo" column="POLICY_NO" jdbcType="VARCHAR"/>
<result property="refundMoney" column="REFUND_MONEY" jdbcType="DECIMAL"/>
<result property="remark" column="REMARK" jdbcType="VARCHAR"/>
<result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
......@@ -18,6 +21,6 @@
<sql id="Base_Column_List">
ID,INS_DETAIL_ID,REDUCE_HANDLE_STATUS,
REFUND_MONEY,REMARK,CREATE_TIME,
CREATE_BY,CREATE_NAME
CREATE_BY,CREATE_NAME,EMP_NAME,EMP_IDCARD_NO,POLICY_NO
</sql>
</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