浏览代码

Merge remote-tracking branch 'origin/master'

tomatozq 5 年之前
父节点
当前提交
a7f701ae7a

+ 4 - 0
picc-admin-server/pom.xml

@@ -102,6 +102,10 @@
             <artifactId>druid-spring-boot-starter</artifactId>
             <version>1.1.10</version>
         </dependency>
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+        </dependency>
         <!-- 数据库相关 end-->
 
         <!--poi-->

+ 1 - 1
picc-admin-server/src/main/java/com/jpsoft/picc/modules/business/controller/InsuranceApplicationController.java

@@ -127,7 +127,7 @@ public class InsuranceApplicationController {
 
 
     @ApiOperation(value="获取投保信息")
-    @GetMapping("insureDetail")
+    @PostMapping("insureDetail")
     @ApiImplicitParams({
             @ApiImplicitParam(name="id",value = "投保信息ID",required = true,paramType = "query"),
             @ApiImplicitParam(name="no",value = "投保份数(比如:第几份)",required = true,paramType = "query"),

+ 91 - 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,9 @@ 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.joda.time.DateTime;
 
 import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
@@ -50,6 +47,9 @@ public class InsurancePolicyController {
     @Autowired
     private ApplicationPolicyService applicationPolicyService;
 
+    @Autowired
+    private InsurancePolicyMemberService insurancePolicyMemberService;
+
     @ApiOperation(value="创建空记录")
     @GetMapping("create")
     public MessageResult<InsurancePolicy> create(){
@@ -365,7 +365,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 +376,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 +518,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);
+        }
+    }
 }

+ 45 - 0
picc-common/src/main/java/com/jpsoft/picc/modules/business/entity/InsurancePolicy.java

@@ -4,6 +4,8 @@ import java.io.Serializable;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.math.BigDecimal;
+
+import com.jpsoft.picc.modules.common.constant.PolicyStatus;
 import org.springframework.format.annotation.DateTimeFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
@@ -22,6 +24,8 @@ public class InsurancePolicy {
     private String definitionId;
     @ApiModelProperty(value = "状态:待制单50/待出单60/已出单70")
     private String status;
+    @ApiModelProperty(value = "状态:草稿10/待初审20/待复审30/待缴费40/待制单50/待出单60/已出单70/已过期100(翻译)")
+    private String statusN;
     @ApiModelProperty(value = "流程审核状态:正常/回退等")
     private String processStatus;
     @ApiModelProperty(value = "保险费合计(总金额)")
@@ -345,4 +349,45 @@ public class InsurancePolicy {
     public void setDefinitionId(String definitionId) {
         this.definitionId = definitionId;
     }
+
+
+    /**
+     * 状态翻译
+     * @return
+     */
+    public String getStatusN() {
+        String statusN = "";
+        if(status.equals("10")){
+            statusN = PolicyStatus.Draft.getText();
+        }
+        else if(status.equals("15")){
+            statusN = PolicyStatus.Back.getText();
+        }
+        else if(status.equals("20")){
+            statusN = PolicyStatus.PendingTrial.getText();
+        }
+        else if(status.equals("30")){
+            statusN = PolicyStatus.PendingRetrial.getText();
+        }
+        else if(status.equals("40")){
+            statusN = PolicyStatus.PendingPay.getText();
+        }
+        else if(status.equals("50")){
+            statusN = PolicyStatus.PendingMakePolicy.getText();
+        }
+        else if(status.equals("60")){
+            statusN = PolicyStatus.PendingOutPolicy.getText();
+        }
+        else if(status.equals("70")){
+            statusN = PolicyStatus.SendOutPolicy.getText();
+        }
+        else{
+            statusN = PolicyStatus.Expired.getText();
+        }
+        return statusN;
+    }
+
+    public void setStatusN(String statusN){
+        this.statusN = statusN;
+    }
 }