Преглед на файлове

出单后添加下月投保单

yanliming преди 5 години
родител
ревизия
e61d8ed698
променени са 1 файла, в които са добавени 92 реда и са изтрити 9 реда
  1. 92 9
      picc-admin-server/src/main/java/com/jpsoft/picc/modules/business/controller/InsurancePolicyController.java

+ 92 - 9
picc-admin-server/src/main/java/com/jpsoft/picc/modules/business/controller/InsurancePolicyController.java

@@ -3,17 +3,12 @@ package com.jpsoft.picc.modules.business.controller;
 import com.github.pagehelper.Page;
 import com.jpsoft.picc.modules.base.entity.InsuranceAgent;
 import com.jpsoft.picc.modules.base.service.InsuranceAgentService;
-import com.jpsoft.picc.modules.business.entity.InsuranceApplication;
-import com.jpsoft.picc.modules.business.service.ApplicationPolicyService;
-import com.jpsoft.picc.modules.business.service.InsuranceApplicationService;
-import com.jpsoft.picc.modules.business.service.InsurancePolicyRecordService;
+import com.jpsoft.picc.modules.business.entity.*;
+import com.jpsoft.picc.modules.business.service.*;
 import com.jpsoft.picc.modules.common.constant.PolicyStatus;
 import com.jpsoft.picc.modules.common.utils.PojoUtils;
 import com.jpsoft.picc.modules.common.dto.Sort;
 import com.jpsoft.picc.modules.common.dto.MessageResult;
-import com.jpsoft.picc.modules.business.entity.InsurancePolicy;
-import com.jpsoft.picc.modules.business.service.InsurancePolicyService;
-import com.jpsoft.picc.modules.business.entity.InsurancePolicyRecord;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -22,7 +17,10 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+import org.jasig.cas.client.authentication.AttributePrincipal;
+import org.joda.time.DateTime;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
@@ -50,6 +48,9 @@ public class InsurancePolicyController {
     @Autowired
     private ApplicationPolicyService applicationPolicyService;
 
+    @Autowired
+    private InsurancePolicyMemberService insurancePolicyMemberService;
+
     @ApiOperation(value="创建空记录")
     @GetMapping("create")
     public MessageResult<InsurancePolicy> create(){
@@ -365,7 +366,7 @@ public class InsurancePolicyController {
             @ApiImplicitParam(name="processStatus",value = "流程审核状态(正常/回退)",required = true,paramType = "query"),
             @ApiImplicitParam(name="opinion",value = "意见",required = true,paramType = "query")
     })
-    public MessageResult<Integer> issued(String applicationId,String policyId,String processStatus,String opinion, @RequestAttribute String subject){
+    public MessageResult<Integer> issued(String applicationId,String policyId,String processStatus,String opinion,@RequestAttribute String subject){
 
         //当前用户ID
         System.out.println(subject);
@@ -376,12 +377,31 @@ public class InsurancePolicyController {
 
         int affectCount = approval(applicationId,policyId,processStatus,opinion,status ,subject);
 
-        msgResult.setResult(true);
+        boolean flag = false;
+        String msg = "";
+
+        if(affectCount>0){
+            //生成下月投保单
+
+            try {
+                generatePolicyInTrans(applicationId, policyId, subject);
+                flag = true;
+            }
+            catch (Exception ex){
+                flag = false;
+                msg = ex.getMessage();
+            }
+        }
+
+        msgResult.setResult(flag);
         msgResult.setData(affectCount);
+        msgResult.setMessage(msg);
 
         return msgResult;
     }
 
+
+
     @ApiOperation(value="企业缴费")
     @RequestMapping(value = "pay",method = RequestMethod.POST)
     @ApiImplicitParams({
@@ -499,4 +519,67 @@ public class InsurancePolicyController {
 
 
 
+
+
+    @Transactional(rollbackFor = Exception.class)
+    private void generatePolicyInTrans(String applicationId, String policyId, String subject) throws Exception {
+        //添加下月投保单
+        InsurancePolicy srcPolicy = insurancePolicyService.get(policyId);
+        srcPolicy.setStatus(PolicyStatus.SendOutPolicy.getValue() + "");
+        srcPolicy.setUpdateTime(new Date());
+
+        insurancePolicyService.update(srcPolicy);
+
+        InsurancePolicy destPolicy = new InsurancePolicy();
+
+        PojoUtils.map(srcPolicy,destPolicy);
+
+        DateTime startTime = new DateTime(srcPolicy.getEndTime()).plusDays(1);
+
+        destPolicy.setStartTime(startTime.toDate());
+        destPolicy.setEndTime(startTime.plusMonths(1).toDate());
+
+        destPolicy.setEffectiveDate(startTime.toString("yyyyMM"));
+
+        boolean exist = insurancePolicyService.existByApplicationIdAndEffectiveDate(applicationId,destPolicy.getEffectiveDate());
+
+        if (exist){
+            throw new Exception(destPolicy.getEffectiveDate() + "投保单已存在!");
+        }
+
+        destPolicy.setNo(srcPolicy.getNo()+1);
+        destPolicy.setId(UUID.randomUUID().toString());
+        destPolicy.setStatus(PolicyStatus.Draft.getValue() + "");
+        destPolicy.setCreateBy(subject);
+        destPolicy.setCreateTime(new Date());
+        destPolicy.setUpdateBy(subject);
+        destPolicy.setUpdateTime(new Date());
+
+        insurancePolicyService.insert(destPolicy);
+
+        //关联投保单及每月投保单
+        ApplicationPolicy applicationPolicy = new ApplicationPolicy();
+        applicationPolicy.setId(UUID.randomUUID().toString());
+        applicationPolicy.setApplicationId(applicationId);
+        applicationPolicy.setPolicyId(destPolicy.getId());
+
+        applicationPolicyService.insert(applicationPolicy);
+
+        //关联参保人员
+        List<InsurancePolicyMember> memberList = insurancePolicyMemberService.findByPolicyId(policyId);
+
+        for (InsurancePolicyMember srcMember : memberList) {
+            InsurancePolicyMember destMember = new InsurancePolicyMember();
+
+            destMember.setId(UUID.randomUUID().toString());
+            destMember.setPolicyId(destPolicy.getId());
+            destMember.setMemberId(srcMember.getMemberId());
+            destMember.setDelFlag(false);
+            destMember.setCreateBy(subject);
+            destMember.setCreateTime(new Date());
+            destMember.setStatus(srcMember.getStatus());
+
+            insurancePolicyMemberService.insert(destMember);
+        }
+    }
 }