‘linchangsheng’ 3 months ago
parent
commit
2cd69e77ec

+ 34 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/PolicyOrderLogic.java

@@ -353,6 +353,15 @@ public class PolicyOrderLogic {
 
             }
 
+            List<WorkerPolicy> workerPolicyList = workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId, websitUser.getId())
+                    .eq(WorkerPolicy::getPolicyType, "IN").list();
+
+            Boolean wp = this.hasOverlap(workerPolicyList);
+
+            if (wp)
+                throw new RemoteServiceException(user.getIdCard()+"工伤险有相同覆盖范围内的保险");
+
+
 
         }
     }
@@ -448,6 +457,8 @@ public class PolicyOrderLogic {
             policyOrder.insert();
 
 
+
+
             WorkerPolicy workerPolicy = new WorkerPolicy();
             workerPolicy.setWorkerId(websitUser.getWorkerNumber());
             workerPolicy.setType("LINE");
@@ -472,11 +483,34 @@ public class PolicyOrderLogic {
             }
             workerPolicy.insert();
 
+            List<WorkerPolicy> workerPolicyList = workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId, websitUser.getId())
+                    .eq(WorkerPolicy::getPolicyType, "EM").list();
+
+            Boolean wp = this.hasOverlap(workerPolicyList);
+
+            if (wp)
+                throw new RemoteServiceException(user.getIdCard()+"雇主险有相同覆盖范围内的保险");
 
 
 
+        }
+    }
+
+
+    public Boolean hasOverlap(List<WorkerPolicy> workerPolicies){
 
+        for (int i= 0; i<workerPolicies.size();i++){
+            WorkerPolicy workerPolicy = workerPolicies.get(i);
+            for (int j = i+1; j <workerPolicies.size() ; j++) {
+                WorkerPolicy workerPolicy2 = workerPolicies.get(j);
+                if (workerPolicy.getEndTime().after(workerPolicy2.getStartTime()) && workerPolicy2.getEndTime().after(workerPolicy.getStartTime())){
+                    return true;
+                }
+            }
         }
+
+        return false;
+
     }
 
     /**

+ 21 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/WorkerManagerLogic.java

@@ -74,6 +74,9 @@ public class WorkerManagerLogic {
     @Autowired
     WorkerNumberCheckService workerNumberCheckService;
 
+    @Autowired
+    PolicyService policyService;
+
 
 
     public void stop(String id) {
@@ -896,6 +899,24 @@ public class WorkerManagerLogic {
             throw new RemoteServiceException("意外险必须有生效的保险");
         }
 
+        PolicyOrder policyOrder = policyOrderService.lambdaQuery().eq(PolicyOrder::getWebsitUserId, websitUser.getId())
+                .eq(PolicyOrder::getType, "AC")
+                .isNull(PolicyOrder::getEndTime).last("limit 1").one();
+
+        if (policyOrder !=null){
+            Policy policy = policyService.getById(policyOrder.getPolicyId());
+            for (int i= 0; i<workerPolicies.size();i++){
+
+                WorkerPolicy workerPolicy2 = workerPolicies.get(i);
+                if (policy.getEndTime().after(workerPolicy2.getStartTime()) && workerPolicy2.getEndTime().after(policy.getStartTime())){
+                    throw new RemoteServiceException("意外险有已经购买相同覆盖范围内的保险");
+                }
+
+            }
+
+
+        }
+
 
         Boolean wp = this.hasOverlap(workerPolicies);