Pārlūkot izejas kodu

1.经销商只看自己用户
2.轮胎保注册增加轮胎注册数量限制
3.轮胎保生成理赔单据流程修改
4.轮胎保理赔记录删除接口逻辑修改

纪新园 2 nedēļas atpakaļ
vecāks
revīzija
20f970ac56

+ 6 - 0
blade-service-api/gubersail-shop-app-api/src/main/java/com/gubersail/shop/app/api/insurance/entity/ShopAppTireInsuranceFiles.java

@@ -115,5 +115,11 @@ public class ShopAppTireInsuranceFiles implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 理赔状态  0=待理赔 1=已理赔
+	 */
+	@ApiModelProperty(value = "理赔状态")
+	private String claimStatus;
+
 
 }

+ 12 - 2
blade-service-api/gubersail-shop-app-api/src/main/java/com/gubersail/shop/app/api/insurance/entity/ShopAppTireInsuranceRecord.java

@@ -22,8 +22,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -106,5 +104,17 @@ public class ShopAppTireInsuranceRecord implements Serializable {
 	@ApiModelProperty(value = "理赔时间")
 	private Date claimDate;
 
+	/**
+	 * 轮胎保注册组别id
+	 */
+	@ApiModelProperty(value = "轮胎保注册组别id")
+	private String fileId;
+
+	/**
+	 * 轮胎描述
+	 */
+	@ApiModelProperty(value = "轮胎描述")
+	private String tireDescription;
+
 
 }

+ 51 - 0
blade-service-api/gubersail-shop-app-api/src/main/java/com/gubersail/shop/app/api/insurance/vo/ShopAppTireInsuranceRegisterVO.java

@@ -20,6 +20,7 @@ import com.gubersail.shop.app.api.insurance.entity.ShopAppTireInsuranceFiles;
 import com.gubersail.shop.app.api.insurance.entity.ShopAppTireInsuranceRecord;
 import com.gubersail.shop.app.api.insurance.entity.ShopAppTireInsuranceRegister;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -46,4 +47,54 @@ public class ShopAppTireInsuranceRegisterVO extends ShopAppTireInsuranceRegister
 	 */
 	private Long claimId;
 
+	/**
+	 * 轮胎保注册组别id
+	 */
+	private String fileId;
+
+	/**
+	 * 轮胎描述
+	 */
+	private String tireDescription;
+
+	/**
+	 * 轮胎保单量合计-今日
+	 */
+	private Long totalDay;
+
+	/**
+	 * 轮胎保单量合计-本月
+	 */
+	private Long totalMonth;
+
+	/**
+	 * 理赔-今日
+	 */
+	private Long claimDay;
+
+	/**
+	 * 理赔-本月
+	 */
+	private Long claimMonth;
+
+	/**
+	 * 理赔待审核
+	 */
+	private Long pendingReviewClaim;
+
+	/**
+	 * 理赔待复审
+	 */
+	private Long waitReexaminationClaim;
+
+	/**
+	 * 在保中
+	 */
+	private Long inInsurance;
+
+	/**
+	 * 未生效
+	 */
+	private Long notInEffect;
+
 }

+ 4 - 10
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -14,12 +14,10 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.BladeTenantProperties;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.jackson.JsonUtil;
-import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.*;
 import org.springblade.system.cache.DictCache;
 import org.springblade.system.cache.ParamCache;
@@ -142,13 +140,9 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 
 	@Override
 	public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) {
-		/*if (!AuthUtil.getUserRole().contains("admin")) {
-			if (ObjectUtils.isNull(deptId)) {
-				deptId = Long.parseLong(AuthUtil.getDeptId().split(",")[0]);
-			}
-		} else {
-			deptId = null;
-		}*/
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			deptId = Long.parseLong(AuthUtil.getDeptId().split(",")[0]);
+		}
 		List<Long> deptIdList = SysCache.getDeptChildIds(deptId);
 		R<String> res = sysClient.getRoleIds(AuthUtil.getTenantId(), user.getRoleId());
 		String roleId = "";
@@ -315,7 +309,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void importUser(List<UserExcel> data, Boolean isCovered) {
-		if (data.isEmpty()){
+		if (data.isEmpty()) {
 			throw new RuntimeException("导入用户数据不能为空");
 		}
 		data.forEach(userExcel -> {

+ 23 - 3
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/claim/service/impl/ShopAppClaimServiceImpl.java

@@ -22,10 +22,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gubersail.shop.app.api.claim.entity.ShopAppClaim;
 import com.gubersail.shop.app.api.claim.entity.ShopAppClaimAttachment;
 import com.gubersail.shop.app.api.claim.vo.ShopAppClaimVO;
+import com.gubersail.shop.app.api.insurance.entity.ShopAppTireInsuranceRegister;
 import com.gubersail.shop.app.claim.mapper.ShopAppClaimMapper;
 import com.gubersail.shop.app.claim.service.IShopAppClaimAttachmentService;
-import com.gubersail.shop.app.claim.service.IShopAppClaimAuditService;
 import com.gubersail.shop.app.claim.service.IShopAppClaimService;
+import com.gubersail.shop.app.insurance.mapper.ShopAppTireInsuranceRegisterMapper;
 import com.gubersail.shop.app.wrapper.ShopAppClaimWrapper;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -40,6 +41,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 理赔申请主表 服务实现类
@@ -53,10 +55,10 @@ public class ShopAppClaimServiceImpl extends ServiceImpl<ShopAppClaimMapper, Sho
 
 	private final IShopAppClaimAttachmentService bladeClaimAttachmentService;
 
-	private final IShopAppClaimAuditService bladeClaimAuditService;
-
 	private final IUserClient userClient;
 
+	private final ShopAppTireInsuranceRegisterMapper tireInsuranceRegisterMapper;
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public R submit(ShopAppClaimVO bladeClaim) {
@@ -122,6 +124,24 @@ public class ShopAppClaimServiceImpl extends ServiceImpl<ShopAppClaimMapper, Sho
 		if (claim.getAuditStatus() > 0) {
 			throw new RuntimeException("已提交审批,请勿重复审批");
 		}
+		if (2 == claim.getClaimSourceType() && ObjectUtils.isNotNull(claim.getTyreNo())) {
+			List<ShopAppClaim> shopAppClaimList = baseMapper.selectList(new LambdaQueryWrapper<ShopAppClaim>()
+				.eq(ShopAppClaim::getIsDeleted, 0)
+				.apply("find_in_set(audit_status,'1,2')")
+				.eq(ShopAppClaim::getTyreNo, claim.getTyreNo()));
+			ShopAppTireInsuranceRegister insuranceRegister = tireInsuranceRegisterMapper.selectOne(new LambdaQueryWrapper<ShopAppTireInsuranceRegister>()
+				.eq(ShopAppTireInsuranceRegister::getIsDeleted, 0)
+				.eq(ShopAppTireInsuranceRegister::getInsuranceNo, claim.getTyreNo())
+				.ne(ShopAppTireInsuranceRegister::getId, claim.getId())
+				.last("LIMIT 1"));
+			Integer tireQuantity = shopAppClaimList.stream().map(ShopAppClaim::getTireQuantity).filter(Objects::nonNull)
+				.mapToInt(Integer::intValue).sum();
+			if (ObjectUtils.isNotNull(claim.getTireQuantity())) {
+				if ((tireQuantity + claim.getTireQuantity()) > insuranceRegister.getTireQuantity()) {
+					throw new RuntimeException("已理赔数量:" + tireQuantity + "+本次理赔数量:" + claim.getTireQuantity() + "大于轮胎保数量!");
+				}
+			}
+		}
 		claim.setAuditStatus(1);
 		claim.setIsSubmitTime(1);
 		claim.setUpdateTime(new Date());

+ 9 - 0
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/insurance/controller/ShopAppTireInsuranceRegisterController.java

@@ -110,6 +110,15 @@ public class ShopAppTireInsuranceRegisterController extends BladeController {
 	}
 
 	/**
+	 * 轮胎保险注册合计
+	 */
+	@GetMapping("/listTotal")
+	public R<ShopAppTireInsuranceRegisterVO> listTotal() {
+		ShopAppTireInsuranceRegisterVO voPage = tireInsuranceRegisterService.listTotal();
+		return R.data(voPage);
+	}
+
+	/**
 	 * 自定义分页 轮胎保险注册表
 	 */
 	@GetMapping("/page")

+ 2 - 0
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/insurance/service/IShopAppTireInsuranceRegisterService.java

@@ -48,4 +48,6 @@ public interface IShopAppTireInsuranceRegisterService extends IService<ShopAppTi
 	R revokeTireInsurance(Long id);
 
 	R generateShopAppClaim(ShopAppTireInsuranceRegisterVO appTireInsuranceRegister);
+
+	ShopAppTireInsuranceRegisterVO listTotal();
 }

+ 92 - 14
blade-service/gubersail-shop-app/src/main/java/com/gubersail/shop/app/insurance/service/impl/ShopAppTireInsuranceRegisterServiceImpl.java

@@ -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);