|
|
@@ -55,6 +55,7 @@ import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 轮胎保险注册表 服务实现类
|
|
|
@@ -107,7 +108,26 @@ public class ShopAppTireInsuranceRegisterServiceImpl extends ServiceImpl<ShopApp
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R submit(ShopAppTireInsuranceRegisterVO appTireInsuranceRegister) {
|
|
|
ShopAppTireInsuranceRegister tireInsuranceRegister = new ShopAppTireInsuranceRegister();
|
|
|
+ LocalDateTime currentDate = LocalDateTime.now();
|
|
|
+ Date date = Date.from(currentDate.plusYears(1).atZone(ZoneId.systemDefault()).toInstant());
|
|
|
BeanUtil.copyProperties(appTireInsuranceRegister, tireInsuranceRegister);
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
|
|
|
+ LambdaQueryWrapper<ShopAppTireInsuranceRegister> lambdaQueryWrapper = new LambdaQueryWrapper<ShopAppTireInsuranceRegister>()
|
|
|
+ .eq(ShopAppTireInsuranceRegister::getIsDeleted, 0)
|
|
|
+ .eq(ShopAppTireInsuranceRegister::getVehicleNumber, tireInsuranceRegister.getVehicleNumber())
|
|
|
+ .eq(ShopAppTireInsuranceRegister::getConsumerPhone, tireInsuranceRegister.getConsumerPhone())
|
|
|
+ .apply("DATE_FORMAT(insurance_time, '%Y') = " + sdf.format(date));
|
|
|
+ if (ObjectUtils.isNotNull(tireInsuranceRegister.getId())) {
|
|
|
+ lambdaQueryWrapper.ne(ShopAppTireInsuranceRegister::getId, tireInsuranceRegister.getId());
|
|
|
+ }
|
|
|
+ List<ShopAppTireInsuranceRegister> shopAppTireInsuranceRegisterList = baseMapper.selectList(lambdaQueryWrapper);
|
|
|
+ if (!shopAppTireInsuranceRegisterList.isEmpty()) {
|
|
|
+ Integer tireQuantity = shopAppTireInsuranceRegisterList.stream().map(ShopAppTireInsuranceRegister::getTireQuantity)
|
|
|
+ .mapToInt(Integer::intValue).sum();
|
|
|
+ if (tireQuantity + tireInsuranceRegister.getTireQuantity() > 8) {
|
|
|
+ throw new RuntimeException("本自然年注册轮胎数量大于8,请修改数量!");
|
|
|
+ }
|
|
|
+ }
|
|
|
//判断是否是第一次保存
|
|
|
if (tireInsuranceRegister.getId() == null) {
|
|
|
// 获取 流水号
|
|
|
@@ -115,20 +135,7 @@ public class ShopAppTireInsuranceRegisterServiceImpl extends ServiceImpl<ShopApp
|
|
|
if (!StringUtils.hasText(billNo) || billNo.length() < NumberEnum.FIFTEEN.number) {
|
|
|
return R.fail(HttpStatus.INTERNAL_SERVER_ERROR.value(), "生成系统编号失败");
|
|
|
}
|
|
|
- LocalDateTime currentDate = LocalDateTime.now();
|
|
|
tireInsuranceRegister.setInsuranceTime(Date.from(currentDate.plusYears(1).atZone(ZoneId.systemDefault()).toInstant()));
|
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
|
|
|
- List<ShopAppTireInsuranceRegister> shopAppTireInsuranceRegisterList = baseMapper.selectList(new LambdaQueryWrapper<ShopAppTireInsuranceRegister>()
|
|
|
- .eq(ShopAppTireInsuranceRegister::getIsDeleted, 0)
|
|
|
- .eq(ShopAppTireInsuranceRegister::getVehicleNumber, tireInsuranceRegister.getVehicleNumber())
|
|
|
- .apply("DATE_FORMAT(insurance_time, '%Y') = " + sdf.format(new Date())));
|
|
|
- if (!shopAppTireInsuranceRegisterList.isEmpty()) {
|
|
|
- Integer tireQuantity = shopAppTireInsuranceRegisterList.stream().map(ShopAppTireInsuranceRegister::getTireQuantity)
|
|
|
- .mapToInt(Integer::intValue).sum();
|
|
|
- if (tireQuantity + tireInsuranceRegister.getTireQuantity() > 8) {
|
|
|
- throw new RuntimeException("本自然年已注册轮胎数量:" + tireQuantity + ",本次注册轮胎数量:" + tireQuantity + ",合计大于8,请修改数量!");
|
|
|
- }
|
|
|
- }
|
|
|
tireInsuranceRegister.setInsuranceNo(billNo);
|
|
|
tireInsuranceRegister.setCreateTime(new Date());
|
|
|
tireInsuranceRegister.setCreateUser(AuthUtil.getUserId());
|
|
|
@@ -214,6 +221,18 @@ public class ShopAppTireInsuranceRegisterServiceImpl extends ServiceImpl<ShopApp
|
|
|
throw new RuntimeException("未查到理赔记录信息");
|
|
|
}
|
|
|
appTireInsuranceRecordService.removeById(id);
|
|
|
+ List<ShopAppTireInsuranceFiles> shopAppTireInsuranceFilesList = tireInsuranceFilesService.list(new LambdaQueryWrapper<ShopAppTireInsuranceFiles>()
|
|
|
+ .eq(ShopAppTireInsuranceFiles::getIsDeleted, 0)
|
|
|
+ .apply("find_in_set(id ,'" + record.getFileId() + "')")
|
|
|
+ .eq(ShopAppTireInsuranceFiles::getRegisterId, record.getInsuranceId()));
|
|
|
+ if (!shopAppTireInsuranceFilesList.isEmpty()) {
|
|
|
+ for (ShopAppTireInsuranceFiles item : shopAppTireInsuranceFilesList) {
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setClaimStatus("0");
|
|
|
+ }
|
|
|
+ tireInsuranceFilesService.saveOrUpdateBatch(shopAppTireInsuranceFilesList);
|
|
|
+ }
|
|
|
ShopAppClaim claim = bladeClaimService.getById(record.getClaimId());
|
|
|
if (claim != null) {
|
|
|
if (2 == claim.getStatus()) {
|
|
|
@@ -229,6 +248,9 @@ public class ShopAppTireInsuranceRegisterServiceImpl extends ServiceImpl<ShopApp
|
|
|
|
|
|
@Override
|
|
|
public R generateShopAppClaim(ShopAppTireInsuranceRegisterVO appTireInsuranceRegister) {
|
|
|
+ if (ObjectUtils.isNull(appTireInsuranceRegister.getFileId()) || ObjectUtils.isNull(appTireInsuranceRegister.getId())) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
// 1. 创建轮胎保险注册实体并复制属性
|
|
|
ShopAppTireInsuranceRegister tireInsuranceRegister = new ShopAppTireInsuranceRegister();
|
|
|
BeanUtil.copyProperties(appTireInsuranceRegister, tireInsuranceRegister);
|
|
|
@@ -263,7 +285,7 @@ public class ShopAppTireInsuranceRegisterServiceImpl extends ServiceImpl<ShopApp
|
|
|
claim.setCreateDept(Long.valueOf(AuthUtil.getDeptId())); // 创建部门ID
|
|
|
claim.setClaimSourceType(2); // 理赔来源类型
|
|
|
claim.setVehicleNumber(tireInsuranceRegister.getVehicleNumber()); // 车牌号
|
|
|
- claim.setTireQuantity(tireInsuranceRegister.getTireQuantity()); // 轮胎数量
|
|
|
+ claim.setTireQuantity(1); // 轮胎数量
|
|
|
claim.setTyreNo(tireInsuranceRegister.getInsuranceNo()); // 胎号/轮胎宝编号
|
|
|
claim.setTyreSpecs(tireInsuranceRegister.getTyreSpecs()); // 规格型号
|
|
|
claim.setAuditStatus(0); // 审核状态
|
|
|
@@ -314,12 +336,68 @@ public class ShopAppTireInsuranceRegisterServiceImpl extends ServiceImpl<ShopApp
|
|
|
tireInsuranceRecord.setClaimNo(claim.getClaimNo());
|
|
|
tireInsuranceRecord.setClaimReason(claim.getClaimReason());
|
|
|
tireInsuranceRecord.setClaimDate(new Date());
|
|
|
+ tireInsuranceRecord.setFileId(appTireInsuranceRegister.getFileId());
|
|
|
+ tireInsuranceRecord.setTireDescription(appTireInsuranceRegister.getTireDescription());
|
|
|
appTireInsuranceRecordService.save(tireInsuranceRecord);
|
|
|
+ List<ShopAppTireInsuranceFiles> shopAppTireInsuranceFilesList = tireInsuranceFilesService.list(new LambdaQueryWrapper<ShopAppTireInsuranceFiles>()
|
|
|
+ .eq(ShopAppTireInsuranceFiles::getIsDeleted, 0)
|
|
|
+ .apply("find_in_set(id ,'" + appTireInsuranceRegister.getFileId() + "')")
|
|
|
+ .eq(ShopAppTireInsuranceFiles::getRegisterId, tireInsuranceRegister.getId()));
|
|
|
+ if (!shopAppTireInsuranceFilesList.isEmpty()) {
|
|
|
+ for (ShopAppTireInsuranceFiles item : shopAppTireInsuranceFilesList) {
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ item.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ item.setClaimStatus("1");
|
|
|
+ }
|
|
|
+ tireInsuranceFilesService.saveOrUpdateBatch(shopAppTireInsuranceFilesList);
|
|
|
+ }
|
|
|
appTireInsuranceRegister.setClaimId(tireInsuranceRecord.getClaimId());
|
|
|
// 11. 返回处理结果
|
|
|
return R.data(appTireInsuranceRegister);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public ShopAppTireInsuranceRegisterVO listTotal() {
|
|
|
+ LambdaQueryWrapper<ShopAppTireInsuranceRegister> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(ShopAppTireInsuranceRegister::getCreateDept, AuthUtil.getDeptId());
|
|
|
+ if (AuthUtil.getUserRole().contains("store")) {
|
|
|
+ lambdaQueryWrapper.in(ShopAppTireInsuranceRegister::getCreateUser, AuthUtil.getUserId());
|
|
|
+ }
|
|
|
+ ShopAppTireInsuranceRegisterVO vo = new ShopAppTireInsuranceRegisterVO();
|
|
|
+ List<ShopAppTireInsuranceRegister> tireInsuranceRegisterList = baseMapper.selectList(lambdaQueryWrapper);
|
|
|
+ if (!tireInsuranceRegisterList.isEmpty()) {
|
|
|
+ Date date = new Date();
|
|
|
+ SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-MM");
|
|
|
+ Long totalDay = tireInsuranceRegisterList.stream().filter(e -> dayFormat.format(e.getInsuranceTime()).equals(dayFormat.format(date))).count();
|
|
|
+ vo.setTotalDay(totalDay);
|
|
|
+ Long totalMonth = tireInsuranceRegisterList.stream().filter(e -> monthFormat.format(e.getInsuranceTime()).equals(monthFormat.format(date))).count();
|
|
|
+ vo.setTotalMonth(totalMonth);
|
|
|
+ Long inInsurance = tireInsuranceRegisterList.stream().filter(e -> 1 == e.getStatus()).count();
|
|
|
+ vo.setInInsurance(inInsurance);
|
|
|
+ Long notInEffect = tireInsuranceRegisterList.stream().filter(e -> 0 == e.getStatus()).count();
|
|
|
+ vo.setNotInEffect(notInEffect);
|
|
|
+ String insuranceNo = tireInsuranceRegisterList.stream().map(ShopAppTireInsuranceRegister::getInsuranceNo)
|
|
|
+ .filter(Objects::nonNull).collect(Collectors.joining(","));
|
|
|
+ List<ShopAppClaim> shopAppClaimList = bladeClaimService.list(new LambdaQueryWrapper<ShopAppClaim>()
|
|
|
+ .eq(ShopAppClaim::getIsDeleted, 0)
|
|
|
+ .in(ShopAppClaim::getTyreNo, insuranceNo));
|
|
|
+ if (!shopAppClaimList.isEmpty()) {
|
|
|
+ Long claimDay = shopAppClaimList.stream().filter(e -> dayFormat.format(e.getSubmitTime()).equals(dayFormat.format(date))
|
|
|
+ && 2 == e.getAuditStatus()).count();
|
|
|
+ vo.setClaimDay(claimDay);
|
|
|
+ Long claimMonth = shopAppClaimList.stream().filter(e -> monthFormat.format(e.getSubmitTime()).equals(monthFormat.format(date))
|
|
|
+ && 2 == e.getAuditStatus()).count();
|
|
|
+ vo.setClaimMonth(claimMonth);
|
|
|
+ Long pendingReviewClaim = shopAppClaimList.stream().filter(e -> 0 == e.getAuditStatus()).count();
|
|
|
+ vo.setPendingReviewClaim(pendingReviewClaim);
|
|
|
+ Long waitReexaminationClaim = shopAppClaimList.stream().filter(e -> 1 == e.getAuditStatus()).count();
|
|
|
+ vo.setWaitReexaminationClaim(waitReexaminationClaim);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
private ShopAppClaimAttachment saveClaimAttachment(String url, Long claimId, int type) {
|
|
|
ShopAppClaimAttachment shopAppClaimAttachment = new ShopAppClaimAttachment();
|
|
|
shopAppClaimAttachment.setClaimId(claimId);
|