|
@@ -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());
|
|
|
+
|
|
|
+}
|
|
|
}
|