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