‘linchangsheng’ 5 ay önce
ebeveyn
işleme
8ce5fd7aa3

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

@@ -6,18 +6,19 @@ import com.gree.mall.manager.bean.policy.WorkerManagerBean;
 import com.gree.mall.manager.bean.policy.WorkerManagerDetail;
 import com.gree.mall.manager.enums.ExamineWorkerStatusEnum;
 import com.gree.mall.manager.enums.OrderStatusEnum;
+import com.gree.mall.manager.enums.WebsitAttrEnum;
 import com.gree.mall.manager.enums.workorder.OrderBaseStatusEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
-import com.gree.mall.manager.plus.entity.PgOrderBase;
-import com.gree.mall.manager.plus.entity.WebsitUser;
-import com.gree.mall.manager.plus.entity.WorkerImg;
-import com.gree.mall.manager.plus.entity.WorkerPolicy;
+import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
+import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class WorkerManagerLogic {
@@ -191,19 +192,125 @@ public class WorkerManagerLogic {
             return;
 
 
-        //todo 检测保险情况 自建,第三方网点
+        AdminWebsit adminWebsit = adminWebsitService.getById(workerManagerBean.getWebsitId());
+
+        for (WorkerPolicy workerPolicy : workerManagerBean.getWorkerPolicies()) {
+            if (workerPolicy.getEndTime().after(new Date()) && workerPolicy.getStartTime().before(new Date())) {
+                workerPolicy.setStatus("ON");
+            }else {
+                workerPolicy.setStatus("WAIT_ON");
+            }
+            if (workerPolicy.getEndTime().before(new Date())) {
+                workerPolicy.setStatus("OFF");
+            }
+        }
+
+        //非自建需要判断齐全保险
+        if (!adminWebsit.getAttr().equals(WebsitAttrEnum.SELF.getKey())) {
+
+            List<WorkerPolicy> workerPolicies = workerManagerBean.getWorkerPolicies().stream().filter(item -> item.getPolicyType().equals("AC")).collect(Collectors.toList());
+
+            if (CollectionUtils.isEmpty(workerPolicies))
+                throw new RemoteServiceException("请填工程师意外险");
+
+
+            if (workerPolicies.stream().filter(item -> item.getStatus().equals("ON")).count() > 0) {
+                throw new RemoteServiceException("意外险必须有生效的保险");
+            }
+
+            Boolean wp = this.hasOverlap(workerPolicies);
+
+            if (wp)
+                throw new RemoteServiceException("意外险有相同覆盖范围内的保险");
+
+
+            if (adminWebsit.getInsureType().equals("意外险,工伤险")) {
+                List<WorkerPolicy> workerPoliciesIn = workerManagerBean.getWorkerPolicies().stream()
+                        .filter(item -> item.getPolicyType().equals("IN")).collect(Collectors.toList());
+
+                Boolean in = this.hasOverlap(workerPoliciesIn);
+
+                if (in)
+                    throw new RemoteServiceException("工伤险有相同覆盖范围内的保险");
+
+
+                if (workerPoliciesIn.stream().filter(item -> item.getStatus().equals("ON")).count() > 0) {
+                    throw new RemoteServiceException("工伤险必须有生效的保险");
+                }
+
+            } else {
+                List<WorkerPolicy> workerPoliciesEm = workerManagerBean.getWorkerPolicies().stream()
+                        .filter(item -> item.getPolicyType().equals("EM")).collect(Collectors.toList());
+
+                Boolean em = this.hasOverlap(workerPoliciesEm);
+
+                if (em)
+                    throw new RemoteServiceException("雇主险有相同覆盖范围内的保险");
 
-        workerManagerBean.getWorkerPolicies();
 
+                if (workerPoliciesEm.stream().filter(item -> item.getStatus().equals("ON")).count() > 0) {
+                    throw new RemoteServiceException("雇主险必须有生效的保险");
+                }
+            }
+        }else {
+
+            List<WorkerPolicy> workerPolicies = workerManagerBean.getWorkerPolicies().stream().filter(item -> item.getPolicyType().equals("AC")).collect(Collectors.toList());
+
+            Boolean wp = this.hasOverlap(workerPolicies);
+
+            if (wp)
+                throw new RemoteServiceException("意外险有相同覆盖范围内的保险");
+
+            if (workerPolicies.stream().filter(item -> item.getStatus().equals("ON")).count() < 1)
+                workerManagerBean.setExamineStatus(ExamineWorkerStatusEnum.WAIT_WORKER.getKey());
 
 
+            if (adminWebsit.getInsureType().equals("意外险,工伤险")) {
+                List<WorkerPolicy> workerPoliciesIn = workerManagerBean.getWorkerPolicies().stream()
+                        .filter(item -> item.getPolicyType().equals("IN")).collect(Collectors.toList());
 
+                Boolean in = this.hasOverlap(workerPoliciesIn);
 
+                if (in)
+                    throw new RemoteServiceException("工伤险有相同覆盖范围内的保险");
 
-        //todo 生成工伤/雇主  自建
+                if (workerPoliciesIn.stream().filter(item -> item.getStatus().equals("ON")).count() < 1) {
+                    workerManagerBean.setExamineStatus(ExamineWorkerStatusEnum.WAIT_WORKER.getKey());
+                    this.scGongShang(workerManagerBean);
+                }
+
+
+            } else {
+                List<WorkerPolicy> workerPoliciesEm = workerManagerBean.getWorkerPolicies().stream()
+                        .filter(item -> item.getPolicyType().equals("EM")).collect(Collectors.toList());
 
+                Boolean em = this.hasOverlap(workerPoliciesEm);
+
+                if (em)
+                    throw new RemoteServiceException("雇主险有相同覆盖范围内的保险");
+
+                if (workerPoliciesEm.stream().filter(item -> item.getStatus().equals("ON")).count() < 1) {
+                    workerManagerBean.setExamineStatus(ExamineWorkerStatusEnum.WAIT_WORKER.getKey());
+                    this.scGuZhu(workerManagerBean);
+                }
 
 
+            }
+
+
+        }
+
+        workerManagerBean.updateById();
+
+        workerPolicyService.saveOrUpdateBatch(workerManagerBean.getWorkerPolicies());
+
+    }
+
+    private void scGuZhu(WorkerManagerBean workerManagerBean) {
+    }
+
+    private void scGongShang(WorkerManagerBean workerManagerBean) {
+
     }
 
     public Boolean hasOverlap(List<WorkerPolicy> workerPolicies){
@@ -226,7 +333,7 @@ public class WorkerManagerLogic {
     @Transactional(rollbackFor = Exception.class)
     public void examine(WorkerManagerBean workerManagerBean) {
 
-        //todo 检测保险情况 自建,第三方网点
+
 
         workerManagerBean.updateById();
 
@@ -254,7 +361,92 @@ public class WorkerManagerLogic {
 
         workerPolicyService.saveOrUpdateBatch(workerManagerBean.getWorkerPolicies());
 
+        if (workerManagerBean.getExamineStatus().equals(ExamineWorkerStatusEnum.FAIL.getKey()))
+            return;
+
 
-        //todo 生成工伤/雇主  自建
-    }
+        //检测保险情况 自建
+
+        AdminWebsit adminWebsit = adminWebsitService.getById(workerManagerBean.getWebsitId());
+
+        List<WorkerPolicy> workerPolicies = workerManagerBean.getWorkerPolicies().stream().filter(item -> item.getPolicyType().equals("AC")).collect(Collectors.toList());
+
+        if (CollectionUtils.isEmpty(workerPolicies))
+            throw new RemoteServiceException("请填工程师意外险");
+
+        for (WorkerPolicy workerPolicy : workerPolicies) {
+            if (workerPolicy.getEndTime().after(new Date()) && workerPolicy.getStartTime().before(new Date())) {
+                workerPolicy.setStatus("ON");
+            }else {
+                workerPolicy.setStatus("WAIT_ON");
+            }
+            if (workerPolicy.getEndTime().before(new Date())) {
+                workerPolicy.setStatus("OFF");
+            }
+        }
+        if (workerPolicies.stream().filter(item -> item.getStatus().equals("ON")).count() > 0) {
+            throw new RemoteServiceException("意外险必须有生效的保险");
+        }
+
+
+        Boolean wp = this.hasOverlap(workerPolicies);
+
+        if (wp)
+            throw new RemoteServiceException("意外险有相同覆盖范围内的保险");
+
+
+        if (adminWebsit.getInsureType().equals("意外险,工伤险")) {
+            List<WorkerPolicy> workerPoliciesIn = workerManagerBean.getWorkerPolicies().stream()
+                    .filter(item -> item.getPolicyType().equals("IN")).collect(Collectors.toList());
+
+            Boolean in = this.hasOverlap(workerPoliciesIn);
+
+            if (in)
+                throw new RemoteServiceException("工伤险有相同覆盖范围内的保险");
+
+            for (WorkerPolicy workerPolicy : workerPoliciesIn) {
+                if (workerPolicy.getEndTime().after(new Date()) && workerPolicy.getStartTime().before(new Date())) {
+                    workerPolicy.setStatus("ON");
+                }else {
+                    workerPolicy.setStatus("WAIT_ON");
+                }
+                if (workerPolicy.getEndTime().before(new Date())) {
+                    workerPolicy.setStatus("OFF");
+                }
+            }
+
+            if (workerPolicies.stream().filter(item -> item.getStatus().equals("ON")).count() > 0) {
+                throw new RemoteServiceException("工伤险必须有生效的保险");
+            }
+
+        } else {
+            List<WorkerPolicy> workerPoliciesEm = workerManagerBean.getWorkerPolicies().stream()
+                    .filter(item -> item.getPolicyType().equals("EM")).collect(Collectors.toList());
+
+            Boolean em = this.hasOverlap(workerPoliciesEm);
+
+            if (em)
+                throw new RemoteServiceException("雇主险有相同覆盖范围内的保险");
+
+
+            for (WorkerPolicy workerPolicy : workerPoliciesEm) {
+                if (workerPolicy.getEndTime().after(new Date()) && workerPolicy.getStartTime().before(new Date())) {
+                    workerPolicy.setStatus("ON");
+                }else {
+                    workerPolicy.setStatus("WAIT_ON");
+                }
+                if (workerPolicy.getEndTime().before(new Date())) {
+                    workerPolicy.setStatus("OFF");
+                }
+            }
+
+            if (workerPolicies.stream().filter(item -> item.getStatus().equals("ON")).count() > 0) {
+                throw new RemoteServiceException("雇主险必须有生效的保险");
+            }
+        }
+
+
+        workerPolicyService.saveOrUpdateBatch(workerManagerBean.getWorkerPolicies());
+
+}
 }

+ 8 - 6
mall-server-api/src/main/resources/bootstrap-prd.propertiesb

@@ -78,12 +78,14 @@ allIn.payment.notifyUrl=${sys.url}/zfdminiapp/pay/allinpay/callback
 #cmc bank request setting
 cmc.bank.url=https://cdc.cmbchina.com/cdcserver/api/v2
 
-#elasticsearch
-spring.elasticsearch.uris=http://116.62.158.92:9200
-spring.elasticsearch.username=elastic
-spring.elasticsearch.password=zfire2022@
-spring.elasticsearch.connection-timeout=5s
-spring.elasticsearch.socket-timeout=30s
+#elasticsearch,支持集群
+spring.elasticsearch.rest.uris=http://es-cn-i7m27kcyd002c3v8f.elasticsearch.aliyuncs.com:9200
+spring.elasticsearch.rest.username=elastic
+spring.elasticsearch.rest.password=zongjUzongjU2021_
+spring.elasticsearch.rest.connection-timeout=5s
+spring.elasticsearch.rest.read-timeout=30s
+
+
 management.health.elasticsearch.enabled=false
 
 #联通云呼配置